]> scripts.mit.edu Git - autoinstalls/wordpress.git/commitdiff
WordPress 4.4 wordpress-4.4
authorEdward Z. Yang <ezyang@cs.stanford.edu>
Sat, 9 Jan 2016 17:16:30 +0000 (09:16 -0800)
committerEdward Z. Yang <ezyang@cs.stanford.edu>
Sat, 9 Jan 2016 17:16:30 +0000 (09:16 -0800)
Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
711 files changed:
readme.html
wp-activate.php
wp-admin/about.php
wp-admin/admin-ajax.php
wp-admin/admin.php
wp-admin/async-upload.php
wp-admin/comment.php
wp-admin/credits.php
wp-admin/css/about-rtl.css
wp-admin/css/about.css
wp-admin/css/admin-menu-rtl.css
wp-admin/css/admin-menu.css
wp-admin/css/color-picker-rtl.css
wp-admin/css/color-picker-rtl.min.css
wp-admin/css/color-picker.css
wp-admin/css/color-picker.min.css
wp-admin/css/colors/_admin.scss
wp-admin/css/colors/_mixins.scss
wp-admin/css/colors/blue/colors-rtl.css
wp-admin/css/colors/blue/colors-rtl.min.css
wp-admin/css/colors/blue/colors.css
wp-admin/css/colors/blue/colors.min.css
wp-admin/css/colors/coffee/colors-rtl.css
wp-admin/css/colors/coffee/colors-rtl.min.css
wp-admin/css/colors/coffee/colors.css
wp-admin/css/colors/coffee/colors.min.css
wp-admin/css/colors/ectoplasm/colors-rtl.css
wp-admin/css/colors/ectoplasm/colors-rtl.min.css
wp-admin/css/colors/ectoplasm/colors.css
wp-admin/css/colors/ectoplasm/colors.min.css
wp-admin/css/colors/light/colors-rtl.css
wp-admin/css/colors/light/colors-rtl.min.css
wp-admin/css/colors/light/colors.css
wp-admin/css/colors/light/colors.min.css
wp-admin/css/colors/midnight/colors-rtl.css
wp-admin/css/colors/midnight/colors-rtl.min.css
wp-admin/css/colors/midnight/colors.css
wp-admin/css/colors/midnight/colors.min.css
wp-admin/css/colors/ocean/colors-rtl.css
wp-admin/css/colors/ocean/colors-rtl.min.css
wp-admin/css/colors/ocean/colors.css
wp-admin/css/colors/ocean/colors.min.css
wp-admin/css/colors/sunrise/colors-rtl.css
wp-admin/css/colors/sunrise/colors-rtl.min.css
wp-admin/css/colors/sunrise/colors.css
wp-admin/css/colors/sunrise/colors.min.css
wp-admin/css/common-rtl.css
wp-admin/css/common.css
wp-admin/css/customize-controls-rtl.css
wp-admin/css/customize-controls-rtl.min.css
wp-admin/css/customize-controls.css
wp-admin/css/customize-controls.min.css
wp-admin/css/customize-nav-menus-rtl.css
wp-admin/css/customize-nav-menus-rtl.min.css
wp-admin/css/customize-nav-menus.css
wp-admin/css/customize-nav-menus.min.css
wp-admin/css/customize-widgets-rtl.css
wp-admin/css/customize-widgets-rtl.min.css
wp-admin/css/customize-widgets.css
wp-admin/css/customize-widgets.min.css
wp-admin/css/dashboard-rtl.css
wp-admin/css/dashboard.css
wp-admin/css/edit-rtl.css
wp-admin/css/edit.css
wp-admin/css/forms-rtl.css
wp-admin/css/forms.css
wp-admin/css/ie-rtl.css
wp-admin/css/ie-rtl.min.css
wp-admin/css/ie.css
wp-admin/css/ie.min.css
wp-admin/css/install-rtl.css
wp-admin/css/install-rtl.min.css
wp-admin/css/install.css
wp-admin/css/install.min.css
wp-admin/css/l10n-rtl.css
wp-admin/css/l10n.css
wp-admin/css/list-tables-rtl.css
wp-admin/css/list-tables.css
wp-admin/css/login-rtl.css
wp-admin/css/login-rtl.min.css
wp-admin/css/login.css
wp-admin/css/login.min.css
wp-admin/css/media-rtl.css
wp-admin/css/media.css
wp-admin/css/nav-menus-rtl.css
wp-admin/css/nav-menus.css
wp-admin/css/press-this-rtl.css
wp-admin/css/press-this-rtl.min.css
wp-admin/css/press-this.css
wp-admin/css/press-this.min.css
wp-admin/css/revisions-rtl.css
wp-admin/css/revisions.css
wp-admin/css/themes-rtl.css
wp-admin/css/themes.css
wp-admin/css/widgets-rtl.css
wp-admin/css/widgets.css
wp-admin/css/wp-admin-rtl.min.css
wp-admin/css/wp-admin.min.css
wp-admin/custom-background.php
wp-admin/custom-header.php
wp-admin/customize.php
wp-admin/edit-comments.php
wp-admin/edit-form-advanced.php
wp-admin/edit-form-comment.php
wp-admin/edit-link-form.php
wp-admin/edit-tag-form.php
wp-admin/edit-tags.php
wp-admin/edit.php
wp-admin/export.php
wp-admin/freedoms.php
wp-admin/includes/admin-filters.php
wp-admin/includes/admin.php
wp-admin/includes/ajax-actions.php
wp-admin/includes/bookmark.php
wp-admin/includes/class-ftp-pure.php
wp-admin/includes/class-ftp-sockets.php
wp-admin/includes/class-ftp.php
wp-admin/includes/class-walker-category-checklist.php [new file with mode: 0644]
wp-admin/includes/class-walker-nav-menu-checklist.php [new file with mode: 0644]
wp-admin/includes/class-walker-nav-menu-edit.php [new file with mode: 0644]
wp-admin/includes/class-wp-comments-list-table.php
wp-admin/includes/class-wp-filesystem-base.php
wp-admin/includes/class-wp-filesystem-direct.php
wp-admin/includes/class-wp-filesystem-ftpext.php
wp-admin/includes/class-wp-filesystem-ftpsockets.php
wp-admin/includes/class-wp-filesystem-ssh2.php
wp-admin/includes/class-wp-importer.php
wp-admin/includes/class-wp-internal-pointers.php [new file with mode: 0644]
wp-admin/includes/class-wp-links-list-table.php
wp-admin/includes/class-wp-list-table.php
wp-admin/includes/class-wp-media-list-table.php
wp-admin/includes/class-wp-ms-sites-list-table.php
wp-admin/includes/class-wp-ms-themes-list-table.php
wp-admin/includes/class-wp-ms-users-list-table.php
wp-admin/includes/class-wp-plugin-install-list-table.php
wp-admin/includes/class-wp-plugins-list-table.php
wp-admin/includes/class-wp-post-comments-list-table.php [new file with mode: 0644]
wp-admin/includes/class-wp-posts-list-table.php
wp-admin/includes/class-wp-press-this.php
wp-admin/includes/class-wp-screen.php [new file with mode: 0644]
wp-admin/includes/class-wp-site-icon.php
wp-admin/includes/class-wp-terms-list-table.php
wp-admin/includes/class-wp-theme-install-list-table.php
wp-admin/includes/class-wp-themes-list-table.php
wp-admin/includes/class-wp-upgrader-skins.php
wp-admin/includes/class-wp-upgrader.php
wp-admin/includes/class-wp-users-list-table.php
wp-admin/includes/comment.php
wp-admin/includes/continents-cities.php
wp-admin/includes/credits.php [new file with mode: 0644]
wp-admin/includes/dashboard.php
wp-admin/includes/deprecated.php
wp-admin/includes/edit-tag-messages.php [new file with mode: 0644]
wp-admin/includes/export.php
wp-admin/includes/file.php
wp-admin/includes/image-edit.php
wp-admin/includes/image.php
wp-admin/includes/import.php
wp-admin/includes/list-table.php
wp-admin/includes/media.php
wp-admin/includes/menu.php
wp-admin/includes/meta-boxes.php
wp-admin/includes/misc.php
wp-admin/includes/ms-admin-filters.php
wp-admin/includes/ms-deprecated.php
wp-admin/includes/ms.php
wp-admin/includes/nav-menu.php
wp-admin/includes/network.php [new file with mode: 0644]
wp-admin/includes/noop.php [new file with mode: 0644]
wp-admin/includes/options.php [new file with mode: 0644]
wp-admin/includes/plugin-install.php
wp-admin/includes/plugin.php
wp-admin/includes/post.php
wp-admin/includes/revision.php
wp-admin/includes/schema.php
wp-admin/includes/screen.php
wp-admin/includes/taxonomy.php
wp-admin/includes/template.php
wp-admin/includes/theme.php
wp-admin/includes/translation-install.php
wp-admin/includes/update-core.php
wp-admin/includes/update.php
wp-admin/includes/upgrade.php
wp-admin/includes/user.php
wp-admin/includes/widgets.php
wp-admin/index.php
wp-admin/install-helper.php
wp-admin/install.php
wp-admin/js/color-picker.js
wp-admin/js/color-picker.min.js
wp-admin/js/common.js
wp-admin/js/common.min.js
wp-admin/js/customize-controls.js
wp-admin/js/customize-controls.min.js
wp-admin/js/customize-nav-menus.js
wp-admin/js/customize-nav-menus.min.js
wp-admin/js/customize-widgets.js
wp-admin/js/customize-widgets.min.js
wp-admin/js/dashboard.js
wp-admin/js/dashboard.min.js
wp-admin/js/edit-comments.js
wp-admin/js/edit-comments.min.js
wp-admin/js/editor-expand.js
wp-admin/js/editor.js
wp-admin/js/editor.min.js
wp-admin/js/gallery.js
wp-admin/js/gallery.min.js
wp-admin/js/image-edit.js
wp-admin/js/image-edit.min.js
wp-admin/js/inline-edit-post.js
wp-admin/js/inline-edit-post.min.js
wp-admin/js/inline-edit-tax.js
wp-admin/js/inline-edit-tax.min.js
wp-admin/js/plugin-install.js
wp-admin/js/plugin-install.min.js
wp-admin/js/post.js
wp-admin/js/post.min.js
wp-admin/js/postbox.js
wp-admin/js/postbox.min.js
wp-admin/js/press-this.js
wp-admin/js/press-this.min.js
wp-admin/js/revisions.js
wp-admin/js/tags-box.js
wp-admin/js/tags-box.min.js
wp-admin/js/theme.js
wp-admin/js/theme.min.js
wp-admin/js/updates.js
wp-admin/js/updates.min.js
wp-admin/js/user-profile.js
wp-admin/js/user-profile.min.js
wp-admin/js/widgets.js
wp-admin/js/widgets.min.js
wp-admin/link-manager.php
wp-admin/load-scripts.php
wp-admin/load-styles.php
wp-admin/maint/repair.php
wp-admin/media-new.php
wp-admin/media-upload.php
wp-admin/menu-header.php
wp-admin/menu.php
wp-admin/my-sites.php
wp-admin/nav-menus.php
wp-admin/network.php
wp-admin/network/settings.php
wp-admin/network/site-info.php
wp-admin/network/site-new.php
wp-admin/network/site-settings.php
wp-admin/network/site-themes.php
wp-admin/network/site-users.php
wp-admin/network/sites.php
wp-admin/network/themes.php
wp-admin/network/upgrade.php
wp-admin/network/user-new.php
wp-admin/network/users.php
wp-admin/options-discussion.php
wp-admin/options-general.php
wp-admin/options-media.php
wp-admin/options-permalink.php
wp-admin/options-reading.php
wp-admin/options-writing.php
wp-admin/options.php
wp-admin/plugin-editor.php
wp-admin/plugin-install.php
wp-admin/plugins.php
wp-admin/post-new.php
wp-admin/post.php
wp-admin/press-this.php
wp-admin/revision.php
wp-admin/setup-config.php
wp-admin/theme-editor.php
wp-admin/theme-install.php
wp-admin/themes.php
wp-admin/tools.php
wp-admin/update-core.php
wp-admin/update.php
wp-admin/upgrade.php
wp-admin/upload.php
wp-admin/user-edit.php
wp-admin/user-new.php
wp-admin/users.php
wp-admin/widgets.php
wp-comments-post.php
wp-content/plugins/akismet/LICENSE.txt [moved from wp-content/themes/twentythirteen/genericons/LICENSE.txt with 100% similarity]
wp-content/plugins/akismet/_inc/akismet.css
wp-content/plugins/akismet/_inc/akismet.js
wp-content/plugins/akismet/akismet.php
wp-content/plugins/akismet/class.akismet-admin.php
wp-content/plugins/akismet/class.akismet.php
wp-content/plugins/akismet/readme.txt
wp-content/plugins/akismet/views/get.php
wp-content/plugins/akismet/views/notice.php
wp-content/plugins/akismet/views/start.php
wp-content/plugins/akismet/views/strict.php
wp-content/themes/twentyfifteen/inc/customizer.php
wp-content/themes/twentyfifteen/languages/twentyfifteen.pot
wp-content/themes/twentyfifteen/readme.txt
wp-content/themes/twentyfifteen/rtl.css
wp-content/themes/twentyfifteen/style.css
wp-content/themes/twentyfourteen/languages/twentyfourteen.pot
wp-content/themes/twentyfourteen/readme.txt
wp-content/themes/twentyfourteen/style.css
wp-content/themes/twentysixteen/404.php [new file with mode: 0644]
wp-content/themes/twentysixteen/archive.php [new file with mode: 0644]
wp-content/themes/twentysixteen/comments.php [new file with mode: 0644]
wp-content/themes/twentysixteen/css/editor-style.css [new file with mode: 0644]
wp-content/themes/twentysixteen/css/ie.css [new file with mode: 0644]
wp-content/themes/twentysixteen/css/ie7.css [new file with mode: 0644]
wp-content/themes/twentysixteen/css/ie8.css [new file with mode: 0644]
wp-content/themes/twentysixteen/footer.php [new file with mode: 0644]
wp-content/themes/twentysixteen/functions.php [new file with mode: 0644]
wp-content/themes/twentysixteen/genericons/COPYING.txt [moved from wp-content/themes/twentythirteen/genericons/COPYING.txt with 100% similarity]
wp-content/themes/twentysixteen/genericons/Genericons.eot [new file with mode: 0644]
wp-content/themes/twentysixteen/genericons/Genericons.svg [new file with mode: 0644]
wp-content/themes/twentysixteen/genericons/Genericons.ttf [new file with mode: 0644]
wp-content/themes/twentysixteen/genericons/Genericons.woff [new file with mode: 0644]
wp-content/themes/twentysixteen/genericons/LICENSE.txt [new file with mode: 0644]
wp-content/themes/twentysixteen/genericons/README.md [new file with mode: 0644]
wp-content/themes/twentysixteen/genericons/genericons.css [new file with mode: 0644]
wp-content/themes/twentysixteen/header.php [new file with mode: 0644]
wp-content/themes/twentysixteen/image.php [new file with mode: 0644]
wp-content/themes/twentysixteen/inc/back-compat.php [new file with mode: 0644]
wp-content/themes/twentysixteen/inc/customizer.php [new file with mode: 0644]
wp-content/themes/twentysixteen/inc/template-tags.php [new file with mode: 0644]
wp-content/themes/twentysixteen/index.php [new file with mode: 0644]
wp-content/themes/twentysixteen/js/color-scheme-control.js [new file with mode: 0644]
wp-content/themes/twentysixteen/js/customize-preview.js [new file with mode: 0644]
wp-content/themes/twentysixteen/js/functions.js [new file with mode: 0644]
wp-content/themes/twentysixteen/js/html5.js [new file with mode: 0644]
wp-content/themes/twentysixteen/js/keyboard-image-navigation.js [new file with mode: 0644]
wp-content/themes/twentysixteen/js/skip-link-focus-fix.js [new file with mode: 0644]
wp-content/themes/twentysixteen/languages/twentysixteen.pot [new file with mode: 0644]
wp-content/themes/twentysixteen/page.php [new file with mode: 0644]
wp-content/themes/twentysixteen/readme.txt [new file with mode: 0644]
wp-content/themes/twentysixteen/rtl.css [new file with mode: 0644]
wp-content/themes/twentysixteen/screenshot.png [new file with mode: 0644]
wp-content/themes/twentysixteen/search.php [new file with mode: 0644]
wp-content/themes/twentysixteen/searchform.php [new file with mode: 0644]
wp-content/themes/twentysixteen/sidebar-content-bottom.php [new file with mode: 0644]
wp-content/themes/twentysixteen/sidebar.php [new file with mode: 0644]
wp-content/themes/twentysixteen/single.php [new file with mode: 0644]
wp-content/themes/twentysixteen/style.css [new file with mode: 0644]
wp-content/themes/twentysixteen/template-parts/biography.php [moved from wp-content/themes/twentythirteen/author-bio.php with 50% similarity]
wp-content/themes/twentysixteen/template-parts/content-none.php [new file with mode: 0644]
wp-content/themes/twentysixteen/template-parts/content-page.php [new file with mode: 0644]
wp-content/themes/twentysixteen/template-parts/content-search.php [new file with mode: 0644]
wp-content/themes/twentysixteen/template-parts/content-single.php [new file with mode: 0644]
wp-content/themes/twentysixteen/template-parts/content.php [new file with mode: 0644]
wp-content/themes/twentythirteen/404.php [deleted file]
wp-content/themes/twentythirteen/archive.php [deleted file]
wp-content/themes/twentythirteen/author.php [deleted file]
wp-content/themes/twentythirteen/category.php [deleted file]
wp-content/themes/twentythirteen/comments.php [deleted file]
wp-content/themes/twentythirteen/content-aside.php [deleted file]
wp-content/themes/twentythirteen/content-audio.php [deleted file]
wp-content/themes/twentythirteen/content-chat.php [deleted file]
wp-content/themes/twentythirteen/content-gallery.php [deleted file]
wp-content/themes/twentythirteen/content-image.php [deleted file]
wp-content/themes/twentythirteen/content-link.php [deleted file]
wp-content/themes/twentythirteen/content-none.php [deleted file]
wp-content/themes/twentythirteen/content-quote.php [deleted file]
wp-content/themes/twentythirteen/content-status.php [deleted file]
wp-content/themes/twentythirteen/content-video.php [deleted file]
wp-content/themes/twentythirteen/content.php [deleted file]
wp-content/themes/twentythirteen/css/editor-style.css [deleted file]
wp-content/themes/twentythirteen/css/ie.css [deleted file]
wp-content/themes/twentythirteen/footer.php [deleted file]
wp-content/themes/twentythirteen/functions.php [deleted file]
wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf [deleted file]
wp-content/themes/twentythirteen/genericons/README.txt [deleted file]
wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot [deleted file]
wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg [deleted file]
wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf [deleted file]
wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff [deleted file]
wp-content/themes/twentythirteen/genericons/genericons.css [deleted file]
wp-content/themes/twentythirteen/header.php [deleted file]
wp-content/themes/twentythirteen/image.php [deleted file]
wp-content/themes/twentythirteen/images/dotted-line-2x.png [deleted file]
wp-content/themes/twentythirteen/images/dotted-line-light-2x.png [deleted file]
wp-content/themes/twentythirteen/images/dotted-line-light.png [deleted file]
wp-content/themes/twentythirteen/images/dotted-line.png [deleted file]
wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png [deleted file]
wp-content/themes/twentythirteen/images/headers/circle.png [deleted file]
wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png [deleted file]
wp-content/themes/twentythirteen/images/headers/diamond.png [deleted file]
wp-content/themes/twentythirteen/images/headers/star-thumbnail.png [deleted file]
wp-content/themes/twentythirteen/images/headers/star.png [deleted file]
wp-content/themes/twentythirteen/images/search-icon-2x.png [deleted file]
wp-content/themes/twentythirteen/images/search-icon.png [deleted file]
wp-content/themes/twentythirteen/inc/back-compat.php [deleted file]
wp-content/themes/twentythirteen/inc/custom-header.php [deleted file]
wp-content/themes/twentythirteen/index.php [deleted file]
wp-content/themes/twentythirteen/js/functions.js [deleted file]
wp-content/themes/twentythirteen/js/html5.js [deleted file]
wp-content/themes/twentythirteen/js/theme-customizer.js [deleted file]
wp-content/themes/twentythirteen/languages/twentythirteen.pot [deleted file]
wp-content/themes/twentythirteen/page.php [deleted file]
wp-content/themes/twentythirteen/readme.txt [deleted file]
wp-content/themes/twentythirteen/rtl.css [deleted file]
wp-content/themes/twentythirteen/screenshot.png [deleted file]
wp-content/themes/twentythirteen/search.php [deleted file]
wp-content/themes/twentythirteen/sidebar-main.php [deleted file]
wp-content/themes/twentythirteen/sidebar.php [deleted file]
wp-content/themes/twentythirteen/single.php [deleted file]
wp-content/themes/twentythirteen/style.css [deleted file]
wp-content/themes/twentythirteen/tag.php [deleted file]
wp-content/themes/twentythirteen/taxonomy-post_format.php [deleted file]
wp-includes/SimplePie/Parse/Date.php
wp-includes/Text/Diff/Engine/string.php
wp-includes/admin-bar.php
wp-includes/author-template.php
wp-includes/cache.php
wp-includes/canonical.php
wp-includes/capabilities.php
wp-includes/category-template.php
wp-includes/category.php
wp-includes/certificates/ca-bundle.crt
wp-includes/class-IXR.php
wp-includes/class-feed.php
wp-includes/class-http.php
wp-includes/class-json.php
wp-includes/class-oembed.php
wp-includes/class-phpass.php
wp-includes/class-pop3.php
wp-includes/class-simplepie.php
wp-includes/class-snoopy.php
wp-includes/class-walker-category-dropdown.php [new file with mode: 0644]
wp-includes/class-walker-category.php [new file with mode: 0644]
wp-includes/class-walker-comment.php [new file with mode: 0644]
wp-includes/class-walker-page-dropdown.php [new file with mode: 0644]
wp-includes/class-walker-page.php [new file with mode: 0644]
wp-includes/class-wp-admin-bar.php
wp-includes/class-wp-comment-query.php [new file with mode: 0644]
wp-includes/class-wp-comment.php [new file with mode: 0644]
wp-includes/class-wp-customize-control.php
wp-includes/class-wp-customize-manager.php
wp-includes/class-wp-customize-nav-menus.php
wp-includes/class-wp-customize-panel.php
wp-includes/class-wp-customize-section.php
wp-includes/class-wp-customize-setting.php
wp-includes/class-wp-customize-widgets.php
wp-includes/class-wp-editor.php
wp-includes/class-wp-embed.php
wp-includes/class-wp-http-cookie.php [new file with mode: 0644]
wp-includes/class-wp-http-curl.php [new file with mode: 0644]
wp-includes/class-wp-http-encoding.php [new file with mode: 0644]
wp-includes/class-wp-http-ixr-client.php
wp-includes/class-wp-http-proxy.php [new file with mode: 0644]
wp-includes/class-wp-http-response.php [new file with mode: 0644]
wp-includes/class-wp-http-streams.php [new file with mode: 0644]
wp-includes/class-wp-image-editor-gd.php
wp-includes/class-wp-image-editor-imagick.php
wp-includes/class-wp-image-editor.php
wp-includes/class-wp-meta-query.php [new file with mode: 0644]
wp-includes/class-wp-network.php [new file with mode: 0644]
wp-includes/class-wp-oembed-controller.php [new file with mode: 0644]
wp-includes/class-wp-post.php [new file with mode: 0644]
wp-includes/class-wp-rewrite.php [new file with mode: 0644]
wp-includes/class-wp-role.php [new file with mode: 0644]
wp-includes/class-wp-roles.php [new file with mode: 0644]
wp-includes/class-wp-tax-query.php [new file with mode: 0644]
wp-includes/class-wp-term.php [new file with mode: 0644]
wp-includes/class-wp-theme.php
wp-includes/class-wp-user-query.php [new file with mode: 0644]
wp-includes/class-wp-user.php [new file with mode: 0644]
wp-includes/class-wp-walker.php
wp-includes/class-wp-widget-factory.php [new file with mode: 0644]
wp-includes/class-wp-widget.php [new file with mode: 0644]
wp-includes/class-wp-xmlrpc-server.php
wp-includes/class-wp.php
wp-includes/class.wp-dependencies.php
wp-includes/class.wp-scripts.php
wp-includes/comment-template.php
wp-includes/comment.php
wp-includes/compat.php
wp-includes/cron.php
wp-includes/css/admin-bar-rtl.css
wp-includes/css/admin-bar-rtl.min.css
wp-includes/css/admin-bar.css
wp-includes/css/admin-bar.min.css
wp-includes/css/buttons-rtl.css
wp-includes/css/buttons-rtl.min.css
wp-includes/css/buttons.css
wp-includes/css/buttons.min.css
wp-includes/css/dashicons.css
wp-includes/css/dashicons.min.css
wp-includes/css/editor-rtl.css
wp-includes/css/editor-rtl.min.css
wp-includes/css/editor.css
wp-includes/css/editor.min.css
wp-includes/css/jquery-ui-dialog-rtl.css
wp-includes/css/jquery-ui-dialog-rtl.min.css
wp-includes/css/jquery-ui-dialog.css
wp-includes/css/jquery-ui-dialog.min.css
wp-includes/css/media-views-rtl.css
wp-includes/css/media-views-rtl.min.css
wp-includes/css/media-views.css
wp-includes/css/media-views.min.css
wp-includes/css/wp-auth-check-rtl.css
wp-includes/css/wp-auth-check-rtl.min.css
wp-includes/css/wp-auth-check.css
wp-includes/css/wp-auth-check.min.css
wp-includes/css/wp-embed-template-ie.css [new file with mode: 0644]
wp-includes/css/wp-embed-template-ie.min.css [new file with mode: 0644]
wp-includes/css/wp-embed-template.css [new file with mode: 0644]
wp-includes/css/wp-embed-template.min.css [new file with mode: 0644]
wp-includes/css/wp-pointer-rtl.css
wp-includes/css/wp-pointer-rtl.min.css
wp-includes/css/wp-pointer.css
wp-includes/css/wp-pointer.min.css
wp-includes/customize/class-wp-customize-background-image-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-background-image-setting.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-color-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-cropped-image-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-filter-setting.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-header-image-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-header-image-setting.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-image-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-media-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-nav-menu-auto-add-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-nav-menu-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-nav-menu-item-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-nav-menu-item-setting.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-nav-menu-location-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-nav-menu-name-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-nav-menu-section.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-nav-menu-setting.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-nav-menus-panel.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-new-menu-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-new-menu-section.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-sidebar-section.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-site-icon-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-theme-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-themes-section.php [new file with mode: 0644]
wp-includes/customize/class-wp-customize-upload-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-widget-area-customize-control.php [new file with mode: 0644]
wp-includes/customize/class-wp-widget-form-customize-control.php [new file with mode: 0644]
wp-includes/date.php
wp-includes/default-constants.php
wp-includes/default-filters.php
wp-includes/default-widgets.php
wp-includes/deprecated.php
wp-includes/embed-template.php [new file with mode: 0644]
wp-includes/embed.php [new file with mode: 0644]
wp-includes/feed-atom-comments.php
wp-includes/feed-atom.php
wp-includes/feed-rdf.php
wp-includes/feed-rss.php
wp-includes/feed-rss2-comments.php
wp-includes/feed-rss2.php
wp-includes/feed.php
wp-includes/formatting.php
wp-includes/functions.php
wp-includes/general-template.php
wp-includes/http.php
wp-includes/js/autosave.js
wp-includes/js/autosave.min.js
wp-includes/js/comment-reply.js
wp-includes/js/comment-reply.min.js
wp-includes/js/customize-base.js
wp-includes/js/customize-loader.js
wp-includes/js/customize-preview.js
wp-includes/js/customize-preview.min.js
wp-includes/js/json2.js
wp-includes/js/json2.min.js
wp-includes/js/mce-view.js
wp-includes/js/mce-view.min.js
wp-includes/js/media-editor.js
wp-includes/js/media-editor.min.js
wp-includes/js/media-views.js
wp-includes/js/media-views.min.js
wp-includes/js/mediaelement/bigplay.svg
wp-includes/js/mediaelement/flashmediaelement.swf
wp-includes/js/mediaelement/jumpforward.png [new file with mode: 0644]
wp-includes/js/mediaelement/mediaelement-and-player.min.js
wp-includes/js/mediaelement/mediaelementplayer.min.css
wp-includes/js/mediaelement/wp-mediaelement.css
wp-includes/js/mediaelement/wp-mediaelement.js
wp-includes/js/plupload/plupload.flash.swf
wp-includes/js/plupload/plupload.full.min.js
wp-includes/js/plupload/plupload.silverlight.xap
wp-includes/js/shortcode.js
wp-includes/js/shortcode.min.js
wp-includes/js/thickbox/thickbox.css
wp-includes/js/thickbox/thickbox.js
wp-includes/js/tinymce/plugins/image/plugin.js
wp-includes/js/tinymce/plugins/image/plugin.min.js
wp-includes/js/tinymce/plugins/lists/plugin.js
wp-includes/js/tinymce/plugins/lists/plugin.min.js
wp-includes/js/tinymce/plugins/media/plugin.js
wp-includes/js/tinymce/plugins/media/plugin.min.js
wp-includes/js/tinymce/plugins/paste/plugin.js
wp-includes/js/tinymce/plugins/paste/plugin.min.js
wp-includes/js/tinymce/plugins/wordpress/plugin.js
wp-includes/js/tinymce/plugins/wordpress/plugin.min.js
wp-includes/js/tinymce/plugins/wpeditimage/plugin.js
wp-includes/js/tinymce/plugins/wpeditimage/plugin.min.js
wp-includes/js/tinymce/plugins/wpembed/plugin.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpembed/plugin.min.js [new file with mode: 0644]
wp-includes/js/tinymce/plugins/wpgallery/plugin.js
wp-includes/js/tinymce/plugins/wpgallery/plugin.min.js
wp-includes/js/tinymce/plugins/wplink/plugin.js
wp-includes/js/tinymce/plugins/wplink/plugin.min.js
wp-includes/js/tinymce/plugins/wpview/plugin.js
wp-includes/js/tinymce/plugins/wpview/plugin.min.js
wp-includes/js/tinymce/skins/wordpress/wp-content.css
wp-includes/js/tinymce/themes/modern/theme.js
wp-includes/js/tinymce/themes/modern/theme.min.js
wp-includes/js/tinymce/tinymce.min.js
wp-includes/js/tinymce/wp-tinymce.js.gz
wp-includes/js/twemoji.js
wp-includes/js/twemoji.min.js
wp-includes/js/utils.js
wp-includes/js/utils.min.js
wp-includes/js/wp-auth-check.js
wp-includes/js/wp-auth-check.min.js
wp-includes/js/wp-embed-template.js [new file with mode: 0644]
wp-includes/js/wp-embed-template.min.js [new file with mode: 0644]
wp-includes/js/wp-embed.js [new file with mode: 0644]
wp-includes/js/wp-embed.min.js [new file with mode: 0644]
wp-includes/js/wp-emoji-loader.js
wp-includes/js/wp-emoji-loader.min.js
wp-includes/js/wp-emoji-release.min.js
wp-includes/js/wp-emoji.js
wp-includes/js/wp-emoji.min.js
wp-includes/js/wplink.js
wp-includes/js/wplink.min.js
wp-includes/kses.php
wp-includes/l10n.php
wp-includes/link-template.php
wp-includes/load.php
wp-includes/locale.php
wp-includes/media-template.php
wp-includes/media.php
wp-includes/meta.php
wp-includes/ms-blogs.php
wp-includes/ms-default-constants.php
wp-includes/ms-default-filters.php
wp-includes/ms-deprecated.php
wp-includes/ms-functions.php
wp-includes/ms-load.php
wp-includes/ms-settings.php
wp-includes/nav-menu-template.php
wp-includes/nav-menu.php
wp-includes/option.php
wp-includes/pluggable-deprecated.php
wp-includes/pluggable.php
wp-includes/plugin.php
wp-includes/pomo/entry.php
wp-includes/pomo/mo.php
wp-includes/pomo/po.php
wp-includes/pomo/streams.php
wp-includes/pomo/translations.php
wp-includes/post-formats.php
wp-includes/post-template.php
wp-includes/post-thumbnail-template.php
wp-includes/post.php
wp-includes/query.php
wp-includes/random_compat/byte_safe_strings.php [new file with mode: 0644]
wp-includes/random_compat/cast_to_int.php [new file with mode: 0644]
wp-includes/random_compat/error_polyfill.php [new file with mode: 0644]
wp-includes/random_compat/random.php [new file with mode: 0644]
wp-includes/random_compat/random_bytes_com_dotnet.php [new file with mode: 0644]
wp-includes/random_compat/random_bytes_dev_urandom.php [new file with mode: 0644]
wp-includes/random_compat/random_bytes_libsodium.php [new file with mode: 0644]
wp-includes/random_compat/random_bytes_mcrypt.php [new file with mode: 0644]
wp-includes/random_compat/random_bytes_openssl.php [new file with mode: 0644]
wp-includes/random_compat/random_int.php [new file with mode: 0644]
wp-includes/rest-api.php [new file with mode: 0644]
wp-includes/rest-api/class-wp-rest-request.php [new file with mode: 0644]
wp-includes/rest-api/class-wp-rest-response.php [new file with mode: 0644]
wp-includes/rest-api/class-wp-rest-server.php [new file with mode: 0644]
wp-includes/revision.php
wp-includes/rewrite.php
wp-includes/rss.php
wp-includes/script-loader.php
wp-includes/shortcodes.php
wp-includes/taxonomy.php
wp-includes/template-loader.php
wp-includes/template.php
wp-includes/theme-compat/comments-popup.php
wp-includes/theme-compat/comments.php
wp-includes/theme-compat/footer.php
wp-includes/theme-compat/header.php
wp-includes/theme-compat/sidebar.php
wp-includes/theme.php
wp-includes/update.php
wp-includes/user.php
wp-includes/vars.php
wp-includes/version.php
wp-includes/widgets.php
wp-includes/widgets/class-wp-nav-menu-widget.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-archives.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-calendar.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-categories.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-links.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-meta.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-pages.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-recent-comments.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-recent-posts.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-rss.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-search.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-tag-cloud.php [new file with mode: 0644]
wp-includes/widgets/class-wp-widget-text.php [new file with mode: 0644]
wp-includes/wp-db.php
wp-includes/wp-diff.php
wp-load.php
wp-login.php
wp-mail.php
wp-settings.php
wp-signup.php
xmlrpc.php

index 7d27aa7cec6b168ebda416e10c82c49bf6f5973d..a9898575b200f31f508df69842b6dabe316a21d0 100644 (file)
@@ -9,15 +9,15 @@
 <body>
 <h1 id="logo">
        <a href="https://wordpress.org/"><img alt="WordPress" src="wp-admin/images/wordpress-logo.png" /></a>
-       <br /> Version 4.3.1
+       <br /> Version 4.4
 </h1>
 <p style="text-align: center">Semantic Personal Publishing Platform</p>
 
-<h1>First Things First</h1>
+<h2>First Things First</h2>
 <p>Welcome. WordPress is a very special project to me. Every developer and contributor adds something unique to the mix, and together we create something beautiful that I&#8217;m proud to be a part of. Thousands of hours have gone into WordPress, and we&#8217;re dedicated to making it better every day. Thank you for making it part of your world.</p>
 <p style="text-align: right">&#8212; Matt Mullenweg</p>
 
-<h1>Installation: Famous 5-minute install</h1>
+<h2>Installation: Famous 5-minute install</h2>
 <ol>
        <li>Unzip the package in an empty directory and upload everything.</li>
        <li>Open <span class="file"><a href="wp-admin/install.php">wp-admin/install.php</a></span> in your browser. It will take you through the process to set up a <code>wp-config.php</code> file with your database connection details.
        <li>The installer should then send you to the <a href="wp-login.php">login page</a>. Sign in with the username and password you chose during the installation. If a password was generated for you, you can then click on &#8220;Profile&#8221; to change the password.</li>
 </ol>
 
-<h1>Updating</h1>
-<h2>Using the Automatic Updater</h2>
+<h2>Updating</h2>
+<h3>Using the Automatic Updater</h3>
 <p>If you are updating from version 2.7 or higher, you can use the automatic updater:</p>
 <ol>
        <li>Open <span class="file"><a href="wp-admin/update-core.php">wp-admin/update-core.php</a></span> in your browser and follow the instructions.</li>
        <li>You wanted more, perhaps? That&#8217;s it!</li>
 </ol>
 
-<h2>Updating Manually</h2>
+<h3>Updating Manually</h3>
 <ol>
        <li>Before you update anything, make sure you have backup copies of any files you may have modified such as <code>index.php</code>.</li>
        <li>Delete your old WordPress files, saving ones you&#8217;ve modified.</li>
        <li>Point your browser to <span class="file"><a href="wp-admin/upgrade.php">/wp-admin/upgrade.php</a>.</span></li>
 </ol>
 
-<h1>Migrating from other systems</h1>
+<h2>Migrating from other systems</h2>
 <p>WordPress can <a href="https://codex.wordpress.org/Importing_Content">import from a number of systems</a>. First you need to get WordPress installed and working as described above, before using <a href="wp-admin/import.php" title="Import to WordPress">our import tools</a>.</p>
 
-<h1>System Requirements</h1>
+<h2>System Requirements</h2>
 <ul>
        <li><a href="http://php.net/">PHP</a> version <strong>5.2.4</strong> or higher.</li>
        <li><a href="http://www.mysql.com/">MySQL</a> version <strong>5.0</strong> or higher.</li>
 </ul>
 
-<h2>Recommendations</h2>
+<h3>Recommendations</h3>
 <ul>
-       <li><a href="http://php.net/">PHP</a> version <strong>5.4</strong> or higher.</li>
-       <li><a href="http://www.mysql.com/">MySQL</a> version <strong>5.5</strong> or higher.</li>
+       <li><a href="http://php.net/">PHP</a> version <strong>5.6</strong> or higher.</li>
+       <li><a href="http://www.mysql.com/">MySQL</a> version <strong>5.6</strong> or higher.</li>
        <li>The <a href="http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html">mod_rewrite</a> Apache module.</li>
        <li>A link to <a href="https://wordpress.org/">wordpress.org</a> on your site.</li>
 </ul>
 
-<h1>Online Resources</h1>
+<h2>Online Resources</h2>
 <p>If you have any questions that aren&#8217;t addressed in this document, please take advantage of WordPress&#8217; numerous online resources:</p>
 <dl>
        <dt><a href="https://codex.wordpress.org/">The WordPress Codex</a></dt>
                <dd>There is an online chat channel that is used for discussion among people who use WordPress and occasionally support topics. The above wiki page should point you in the right direction. (<a href="irc://irc.freenode.net/wordpress">irc.freenode.net #wordpress</a>)</dd>
 </dl>
 
-<h1>Final Notes</h1>
+<h2>Final Notes</h2>
 <ul>
        <li>If you have any suggestions, ideas, or comments, or if you (gasp!) found a bug, join us in the <a href="https://wordpress.org/support/">Support Forums</a>.</li>
        <li>WordPress has a robust plugin <abbr title="application programming interface">API</abbr> that makes extending the code easy. If you are a developer interested in utilizing this, see the <a href="https://codex.wordpress.org/Plugin_API" title="WordPress plugin API">plugin documentation in the Codex</a>. You shouldn&#8217;t modify any of the core code.</li>
 </ul>
 
-<h1>Share the Love</h1>
+<h2>Share the Love</h2>
 <p>WordPress has no multi-million dollar marketing campaign or celebrity sponsors, but we do have something even better&#8212;you. If you enjoy WordPress please consider telling a friend, setting it up for someone less knowledgable than yourself, or writing the author of a media article that overlooks us.</p>
 
 <p>WordPress is the official continuation of <a href="http://cafelog.com/">b2/caf&#233;log</a>, which came from Michel V. The work has been continued by the <a href="https://wordpress.org/about/">WordPress developers</a>. If you would like to support WordPress, please consider <a href="https://wordpress.org/donate/" title="Donate to WordPress">donating</a>.</p>
 
-<h1>License</h1>
+<h2>License</h2>
 <p>WordPress is free software, and is released under the terms of the <abbr title="GNU General Public License">GPL</abbr> version 2 or (at your option) any later version. See <a href="license.txt">license.txt</a>.</p>
 
 </body>
index a796cc5e48abf06a8602e39ad4656f4f2d2bfee2..ea6a1ad8ae3ba9c087b8919f3b2da5f94826cb2b 100644 (file)
@@ -14,7 +14,7 @@ require( dirname(__FILE__) . '/wp-load.php' );
 require( dirname( __FILE__ ) . '/wp-blog-header.php' );
 
 if ( !is_multisite() ) {
-       wp_redirect( site_url( '/wp-login.php?action=register' ) );
+       wp_redirect( wp_registration_url() );
        die();
 }
 
@@ -58,16 +58,17 @@ function wpmu_activate_stylesheet() {
                #submit, #key { width: 90%; font-size: 24px; }
                #language { margin-top: .5em; }
                .error { background: #f66; }
-               span.h3 { padding: 0 8px; font-size: 1.3em; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-weight: bold; color: #333; }
+               span.h3 { padding: 0 8px; font-size: 1.3em; font-weight: bold; }
        </style>
        <?php
 }
 add_action( 'wp_head', 'wpmu_activate_stylesheet' );
 
-get_header();
+get_header( 'wp-activate' );
 ?>
 
-<div id="content" class="widecolumn">
+<div id="signup-content" class="widecolumn">
+       <div class="wp-activate-container">
        <?php if ( empty($_GET['key']) && empty($_POST['key']) ) { ?>
 
                <h2><?php _e('Activation Key Required') ?></h2>
@@ -115,17 +116,22 @@ get_header();
                                <p><span class="h3"><?php _e('Password:'); ?></span> <?php echo $result['password']; ?></p>
                        </div>
 
-                       <?php if ( $url && $url != network_home_url( '', 'http' ) ) : ?>
-                               <p class="view"><?php printf( __('Your account is now activated. <a href="%1$s">View your site</a> or <a href="%2$s">Log in</a>'), $url, $url . 'wp-login.php' ); ?></p>
+                       <?php if ( $url && $url != network_home_url( '', 'http' ) ) :
+                               switch_to_blog( (int) $result['blog_id'] ); 
+                               $login_url = wp_login_url(); 
+                               restore_current_blog(); 
+                               ?>
+                               <p class="view"><?php printf( __( 'Your account is now activated. <a href="%1$s">View your site</a> or <a href="%2$s">Log in</a>' ), $url, esc_url( $login_url ) ); ?></p>
                        <?php else: ?>
                                <p class="view"><?php printf( __('Your account is now activated. <a href="%1$s">Log in</a> or go back to the <a href="%2$s">homepage</a>.' ), network_site_url('wp-login.php', 'login'), network_home_url() ); ?></p>
                        <?php endif;
                }
        }
        ?>
+       </div>
 </div>
 <script type="text/javascript">
        var key_input = document.getElementById('key');
        key_input && key_input.focus();
 </script>
-<?php get_footer();
+<?php get_footer( 'wp-activate' );
index 0afc31767762d2b9077d0e27f5d361e07c960de8..04a855669198729b080063e843845e9fe9399e99 100644 (file)
@@ -16,89 +16,30 @@ wp_localize_script( 'mediaelement', '_wpmejsSettings', array(
        'pauseOtherPlayers' => ''
 ) );
 
-$title = __( 'About' );
-
-list( $display_version ) = explode( '-', $wp_version );
-
-include( ABSPATH . 'wp-admin/admin-header.php' );
+if ( current_user_can( 'install_plugins' ) ) {
+       add_thickbox();
+       wp_enqueue_script( 'plugin-install' );
+}
 
-$video_url = 'https://videopress.com/embed/T54Iy7Tw';
+$video_url = 'https://videopress.com/embed/J44FHXvg?hd=true';
 $locale    = str_replace( '_', '-', get_locale() );
-if ( 'en-AU' !== $locale ) {
-       list( $locale ) = explode( '-', $locale );
-}
+list( $locale ) = explode( '-', $locale );
 if ( 'en' !== $locale ) {
        $video_url = add_query_arg( 'defaultLangCode', $locale, $video_url );
 }
 
-$major_features = array(
-       array(
-               'src'         => array(
-                       'mp4'  => '//s.w.org/images/core/4.3/formatting.mp4',
-                       'ogv'  => '//s.w.org/images/core/4.3/formatting.ogv',
-                       'webm' => '//s.w.org/images/core/4.3/formatting.webm',
-               ),
-               'heading'     => __( 'Formatting Shortcuts' ),
-               /* Translators: 1: asterisks; 2: number sign; */
-               'description' => sprintf( __( 'Your writing flow just got faster with new formatting shortcuts in WordPress 4.3. Use asterisks to create lists and number signs to make a heading. No more breaking your flow; your text looks great with a %1$s and a %2$s.' ), '<code>*</code>', '<code>#</code>' ),
-       ),
-       array(
-               'src'         => '//s.w.org/images/core/4.3/menu-customizer.png',
-               'heading'     => __( 'Menus in the Customizer' ),
-               'description' => __( 'Create your menu, update it, and assign it, all while live-previewing in the customizer. The streamlined customizer design provides a mobile-friendly and accessible interface. With every release, it becomes easier and faster to make your site just the way you want it.' ),
-       ),
-       array(
-               'src'         => '//s.w.org/images/core/4.3/better-passwords.png',
-               'heading'     => __( 'Better Passwords' ),
-               'description' => __( 'Keep your site more secure with WordPress&#8217; improved approach to passwords. Instead of receiving passwords via email, you&#8217;ll get a password reset link. When you add new users to your site or edit a user profile, WordPress will automatically generate a secure password.' ),
-       ),
-       array(
-               'src'         => '//s.w.org/images/core/4.3/site-icon-customizer.png',
-               'heading'     => __( 'Site Icons' ),
-               'description' => __( 'Site icons represent your site in browser tabs, bookmark menus, and on the home screen of mobile devices. Add your unique site icon in the customizer; it will even stay in place when you switch themes. Make your whole site reflect your brand.' ),
-       ),
-);
-shuffle( $major_features );
-
-$minor_features = array(
-       array(
-               'src'         => 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MDAgNDAwIj48cGF0aCBmaWxsPSIjMDBhMGQyIiBkPSJNNTAgMjE1aDI0MHYzMEg1MHpNNTAgMjc1aDI0MHYzMEg1MHpNNTAgMTU1aDI0MHYzMEg1MHpNNTAgOTVoMjQwdjMwSDUwek0zMTAuMSA5NWwxOS45IDMwIDIwLjEtMzAiLz48L3N2Zz4=',
-               'heading'     => __( 'A smoother admin experience' ),
-               'description' => __( 'Refinements to the list view across the admin make your WordPress more accessible and easier to work with on any device.' ),
-       ),
-       array(
-               'src'         => 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAyMCI+PHBhdGggZmlsbD0iIzAwYTBkMiIgZD0iTTUgMmgxMHEuODIgMCAxLjQxLjU5VDE3IDR2OHEwIC44Mi0uNTkgMS40MVQxNSAxNGgtMmwtNSA1di01SDVxLS44MiAwLTEuNDEtLjU5VDMgMTJWNHEwLS44Mi41OS0xLjQxVDUgMnptOC41IDguNUwxMSA4bDIuNS0yLjUtMS0xTDEwIDcgNy41IDQuNWwtMSAxTDkgOGwtMi41IDIuNSAxIDFMMTAgOWwyLjUgMi41eiIvPjwvc3ZnPg==',
-               'heading'     => __( 'Comments turned off on pages' ),
-               'description' => __( 'All new pages that you create will have comments turned off. Keep discussions to your blog, right where they&#8217;re supposed to happen.' ),
-       ),
-       array(
-               'src'         => 'data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZmlsbD0iIzAwYTBkMiIgZD0iTTI5LjMyOCA1LjcxMnEuMDQ4LS4xNDQuMDk2LS4zODR0LS4wNjQtLjgxNi0uNTI4LS45NzZxLS4zODQtLjM2OC0uODcyLS40NjR0LS43OTIgMGwtLjI4OC4wOHEtMS40NTYuNzItNS44OCAzLjczNnQtNi4zOTIgNS4xNzZxLS43MzYuODMyLTEuNDA4IDIuMzJ0LS44OCAzIC41NDQgMi4zOTJxLjgzMi43MzYgMi4zNDQuNTc2dDMuMDcyLS44MjQgMi4yNDgtMS4zNTJxMi4xNDQtMi4xNDQgNS4xNjgtNi42NTZ0My42MzItNS44MDh6TTIuMjQgMjguMjRxMS4wNTYtLjY4OCAxLjcxMi0xLjUyOHQuOTUyLTEuNjE2LjU0NC0xLjUyLjcyLTEuNDggMS4yNC0xLjI4cTEuMDg4LS44IDIuNTA0LS43MDR0Mi40MjQgMS4xNjhxLjgxNi44OC44MjQgMi42NHQtMS4wOCAyLjg5NnEtMS4yMTYgMS4xMi0yLjkwNCAxLjYyNHQtMy40MjQuNDI0LTMuNTEyLS42MjR6Ii8+PC9zdmc+',
-               'heading'     => __( 'Customize your site quickly' ),
-               'description' => __( 'Wherever you are on the front-end, you can click the customize link in the toolbar to swiftly make changes to your site.' ),
-       ),
-);
-
-$tech_features = array(
-       array(
-               'heading'     => __( 'Taxonomy Roadmap' ),
-               'description' => __( 'Terms shared across multiple taxonomies are now split into separate terms.' ),
-       ),
-       array(
-               'heading'     => __( 'Template Hierarchy' ),
-               /* Translators: 1: singular.php; 2: single.php; 3:page.php */
-               'description' => sprintf( __( 'Added %1$s as a fallback for %2$s and %3$s' ), '<code>singular.php</code>', '<code>single.php</code>', '<code>page.php</code>' ),
-       ),
-       array(
-               'heading'     => '<code>WP_List_Table</code>',
-               'description' => __( 'List tables can and should designate a primary column.' ),
-       ),
-);
+wp_oembed_add_host_js();
+
+$title = __( 'About' );
+
+list( $display_version ) = explode( '-', $wp_version );
 
+include( ABSPATH . 'wp-admin/admin-header.php' );
 ?>
        <div class="wrap about-wrap">
                <h1><?php printf( __( 'Welcome to WordPress&nbsp;%s' ), $display_version ); ?></h1>
 
-               <div class="about-text"><?php printf( __( 'Thank you for updating! WordPress %s makes it even easier to format your content and customize your site.' ), $display_version ); ?></div>
+               <div class="about-text"><?php printf( __( 'Thank you for updating! WordPress %s makes your site more connected and responsive.' ), $display_version ); ?></div>
                <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
                <h2 class="nav-tab-wrapper">
@@ -107,72 +48,139 @@ $tech_features = array(
                        <a href="freedoms.php" class="nav-tab"><?php _e( 'Freedoms' ); ?></a>
                </h2>
 
-               <div class="changelog point-releases">
-                       <h3><?php echo _n( 'Maintenance and Security Release', 'Maintenance and Security Releases', 1 ); ?></h3>
-                       <p><?php printf( _n( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
-                        '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.', 26 ), '4.3.1', number_format_i18n( 26 ) ); ?>
-                               <?php printf( __( 'For more information, see <a href="%s">the release notes</a>.' ), 'http://codex.wordpress.org/Version_4.3.1' ); ?>
-                       </p>
-               </div>
-
                <div class="headline-feature feature-video">
                        <iframe width="1050" height="591" src="<?php echo esc_url( $video_url ); ?>" frameborder="0" allowfullscreen></iframe>
                        <script src="https://videopress.com/videopress-iframe.js"></script>
                </div>
 
-               <hr/>
+               <hr>
+
+               <div class="headline-feature feature-section one-col">
+                       <h2><?php _e( 'Twenty Sixteen' ); ?></h2>
+                       <div class="media-container">
+                               <img src="https://s.w.org/images/core/4.4/twenty-sixteen-white-fullsize-2x.png" alt="" srcset="https://s.w.org/images/core/4.4/twenty-sixteen-white-smartphone-1x.png 268w, https://s.w.org/images/core/4.4/twenty-sixteen-white-smartphone-2x.png 536w, https://s.w.org/images/core/4.4/twenty-sixteen-white-tablet-1x.png 558w, https://s.w.org/images/core/4.4/twenty-sixteen-white-desktop-1x.png 840w, https://s.w.org/images/core/4.4/twenty-sixteen-white-fullsize-1x.png 1086w, https://s.w.org/images/core/4.4/twenty-sixteen-white-tablet-2x.png 1116w, https://s.w.org/images/core/4.4/twenty-sixteen-white-desktop-2x.png 1680w, https://s.w.org/images/core/4.4/twenty-sixteen-white-fullsize-2x.png 2172w" sizes="(max-width: 500px) calc((100vw - 40px) * .8), (max-width: 782px) calc((100vw - 70px) * .8), (max-width: 960px) calc((100vw - 116px) * .8), (max-width: 1290px) calc((100vw - 240px) * .8), 840px" />
+                       </div>
+                       <div class="two-col">
+                               <div class="col">
+                                       <h3><?php _e( 'Introducing Twenty Sixteen' ); ?></h3>
+                                       <p><?php _e( 'Our newest default theme, Twenty Sixteen, is a modern take on a classic blog design.' ); ?></p>
+                                       <p><?php _e( 'Twenty Sixteen was built to look great on any device. A fluid grid design, flexible header, fun color schemes, and more, will make your content shine.' ); ?></p>
+                                       <div class="horizontal-image">
+                                               <div class="content">
+                                                       <img class="feature-image horizontal-screen" src="https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-2x.png" alt=""  srcset="https://s.w.org/images/core/4.4/twenty-sixteen-dark-smartphone-1x.png 268w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-smartphone-2x.png 535w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-desktop-1x.png 558w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-1x.png 783w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-desktop-2x.png 1116w, https://s.w.org/images/core/4.4/twenty-sixteen-dark-fullsize-2x.png 1566w" sizes="(max-width: 500px) calc((100vw - 40px) * .8), (max-width: 782px) calc((100vw - 70px) * .8), (max-width: 960px) calc((100vw - 116px) * .5216), (max-width: 1290px) calc((100vw - 240px) * .5216), 548px" />
+                                               </div>
+                                       </div>
+                               </div>
+                               <div class="col feature-image">
+                                       <img class="vertical-screen" src="https://s.w.org/images/core/4.4/twenty-sixteen-red-fullsize-2x.png" alt="" srcset="https://s.w.org/images/core/4.4/twenty-sixteen-red-smartphone-1x.png 107w, https://s.w.org/images/core/4.4/twenty-sixteen-red-smartphone-2x.png 214w, https://s.w.org/images/core/4.4/twenty-sixteen-red-desktop-1x.png 252w, https://s.w.org/images/core/4.4/twenty-sixteen-red-fullsize-1x.png 410w, https://s.w.org/images/core/4.4/twenty-sixteen-red-desktop-2x.png 504w, https://s.w.org/images/core/4.4/twenty-sixteen-red-fullsize-2x.png 820w" sizes="(max-width: 500px) calc((100vw - 40px) * .32), (max-width: 782px) calc((100vw - 70px) * .32), (max-width: 960px) calc((100vw - 116px) * .24), (max-width: 1290px) calc((100vw - 240px) * .24), 252px" />
+                               </div>
+                       </div>
+               </div>
+
+               <hr />
 
                <div class="feature-section two-col">
-                       <?php foreach ( $major_features as $feature ) : ?>
                        <div class="col">
                                <div class="media-container">
-                                       <?php
-                                       // Video.
-                                       if ( is_array( $feature['src'] ) ) :
-                                               echo wp_video_shortcode( array(
-                                                       'mp4'      => $feature['src']['mp4'],
-                                                       'ogv'      => $feature['src']['ogv'],
-                                                       'webm'     => $feature['src']['webm'],
-                                                       'loop'     => true,
-                                                       'autoplay' => true,
-                                                       'width'    => 500,
-                                                       'height'   => 284
-                                               ) );
-
-                                       // Image.
-                                       else:
-                                       ?>
-                                       <img src="<?php echo esc_url( $feature['src'] ); ?>" />
-                                       <?php endif; ?>
+                                       <img src="https://s.w.org/images/core/4.4/responsive-devices-fullsize-2x.png" alt="" srcset="https://s.w.org/images/core/4.4/responsive-devices-smartphone-1x.png 335w, https://s.w.org/images/core/4.4/responsive-devices-desktop-1x.png 500w, https://s.w.org/images/core/4.4/responsive-devices-smartphone-2x.png 670w, https://s.w.org/images/core/4.4/responsive-devices-tablet-1x.png 698w, https://s.w.org/images/core/4.4/responsive-devices-desktop-2x.png 1000w, https://s.w.org/images/core/4.4/responsive-devices-fullsize-1x.png 1200w, https://s.w.org/images/core/4.4/responsive-devices-tablet-2x.png 1396w, https://s.w.org/images/core/4.4/responsive-devices-fullsize-2x.png 2400w" sizes="(max-width: 500px) calc(100vw - 40px), (max-width: 782px) calc(100vw - 70px), (max-width: 960px) calc((100vw - 116px) * .476), (max-width: 1290px) calc((100vw - 240px) * .476), 500px" />
+                               </div>
+                       </div>
+                       <div class="col">
+                               <h3><?php _e( 'Responsive images' ); ?></h3>
+                               <p><?php _e( 'WordPress now takes a smarter approach to displaying appropriate image sizes on any device, ensuring a perfect fit every time. You don&#8217;t need to do anything to your theme, it just works.' ); ?></p>
+                       </div>
+               </div>
+
+               <hr />
+
+               <div class="feature-section two-col">
+                       <div class="col">
+                               <div class="embed-container">
+                                       <blockquote data-secret="OcUe7B6Edh" class="wp-embedded-content"><a href="https://wordpress.org/news/2015/12/clifford/">WordPress 4.4 &ldquo;Clifford&rdquo;</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="display:none;" src="https://wordpress.org/news/2015/12/clifford/embed/#?secret=OcUe7B6Edh" data-secret="OcUe7B6Edh" width="600" height="338" title="<?php esc_attr_e( 'Embedded WordPress Post' ); ?>" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
                                </div>
-                               <h3><?php echo $feature['heading']; ?></h3>
-                               <p><?php echo $feature['description']; ?></p>
                        </div>
-                       <?php endforeach; ?>
+                       <div class="col">
+                               <h3><?php _e( 'Embed your WordPress content' ); ?></h3>
+                               <p><?php _e( 'Now you can embed your posts on other sites, even other WordPress sites. Simply drop a post URL into the editor and see an instant embed preview, complete with the title, excerpt, and featured image if you&#8217;ve set one. We&#8217;ll even include your site icon and links for comments and sharing.' ); ?></p>
+                       </div>
                </div>
 
-               <div class="feature-section three-col">
-                       <?php foreach ( $minor_features as $feature ) : ?>
+               <hr />
+
+               <div class="feature-section two-col">
                        <div class="col">
-                               <div class="svg-container">
-                                       <img src="<?php echo esc_attr( $feature['src'] ); ?>" />
+                               <div class="embed-container embed-reverbnation">
+                                       <iframe width="640" height="150" scrolling="no" frameborder="no" src="https://www.reverbnation.com/widget_code/html_widget/artist_607?widget_id=55&amp;pwc[song_ids]=3731874&amp;pwc[size]=small"></iframe>
                                </div>
-                               <h3><?php echo $feature['heading']; ?></h3>
-                               <p><?php echo $feature['description']; ?></p>
                        </div>
-                       <?php endforeach; ?>
+                       <div class="col">
+                               <h3><?php _e( 'Even more embed providers' ); ?></h3>
+                               <p><?php _e( 'In addition to post embeds, WordPress 4.4 also adds support for five new oEmbed providers: Cloudup, Reddit&nbsp;Comments, ReverbNation, Speaker&nbsp;Deck, and VideoPress.' ); ?></p>
+                       </div>
                </div>
 
+               <hr />
+
                <div class="changelog">
                        <h3><?php _e( 'Under the Hood' ); ?></h3>
 
+                       <div class="feature-section under-the-hood one-col">
+                               <div class="col">
+                                       <h4><?php _e( 'REST API infrastructure' ); ?></h4>
+                                       <div class="two-col-text">
+                                               <p><?php _e( 'Infrastructure for the REST API has been integrated into core, marking a new era in developing with WordPress. The REST API serves to provide developers with a path forward for building and extending RESTful APIs on top of WordPress.' ); ?></p>
+                                               <p><?php
+                                                       if ( current_user_can( 'install_plugins' ) ) {
+                                                               $url_args = array(
+                                                                       'tab'       => 'plugin-information',
+                                                                       'plugin'    => 'rest-api',
+                                                                       'TB_iframe' => true,
+                                                                       'width'     => 600,
+                                                                       'height'    => 550
+                                                               );
+
+                                                               $plugin_link = '<a href="' . esc_url( add_query_arg( $url_args, network_admin_url( 'plugin-install.php' ) ) ) . '" class="thickbox">WordPress REST API</a>';
+                                                       } else {
+                                                               $plugin_link = '<a href="https://wordpress.org/plugins/rest-api">WordPress REST API</a>';
+                                                       }
+
+                                                       /* translators: WordPress REST API plugin link */
+                                                       printf( __( 'Infrastructure is the first part of a multi-stage rollout for the REST API. Inclusion of core endpoints is targeted for an upcoming release. To get a sneak peek of the core endpoints, and for more information on extending the REST API, check out the official %s plugin.' ), $plugin_link );
+                                               ?></p>
+                                       </div>
+                               </div>
+                       </div>
+
                        <div class="feature-section under-the-hood three-col">
-                               <?php foreach ( $tech_features as $feature ) : ?>
                                <div class="col">
-                                       <h4><?php echo $feature['heading']; ?></h4>
-                                       <p><?php echo $feature['description']; ?></p>
+                                       <h4><?php _e( 'Term meta' ); ?></h4>
+                                       <p><?php
+                                               /* translators: 1: add_term_meta() docs link, 2: get_term_meta() docs link, 3: update_term_meta() docs link */
+                                               printf( __( 'Terms now support metadata, just like posts. See %1$s, %2$s, and %3$s for more information.' ),
+                                                       '<a href="https://developer.wordpress.org/reference/functions/add_term_meta"><code>add_term_meta()</code></a>',
+                                                       '<a href="https://developer.wordpress.org/reference/functions/get_term_meta"><code>get_term_meta()</code></a>',
+                                                       '<a href="https://developer.wordpress.org/reference/functions/update_term_meta"><code>update_term_meta()</code></a>'
+                                        );
+                                       ?></p>
+                               </div>
+                               <div class="col">
+                                       <h4><?php _e( 'Comment query improvements' ); ?></h4>
+                                       <p><?php
+                                               /* translators: WP_Comment_Query class name */
+                                               printf( __( 'Comment queries now have cache handling to improve performance. New arguments in %s make crafting robust comment queries simpler.' ), '<code>WP_Comment_Query</code>' );
+                                       ?></p>
+                               </div>
+                               <div class="col">
+                                       <h4><?php _e( 'Term, comment, and network objects' ); ?></h4>
+                                       <p><?php
+                                               /* translators: 1: WP_Term class name, WP_Comment class name, WP_Network class name */
+                                               printf( __( 'New %1$s, %2$s, and %3$s objects make interacting with terms, comments, and networks more predictable and intuitive in code.' ),
+                                                       '<code>WP_Term</code>',
+                                                       '<code>WP_Comment</code>',
+                                                       '<code>WP_Network</code>'
+                                               );
+                                       ?></p>
                                </div>
-                               <?php endforeach; ?>
                        </div>
 
                        <div class="return-to-dashboard">
@@ -193,13 +201,19 @@ include( ABSPATH . 'wp-admin/admin-footer.php' );
 // These are strings we may use to describe maintenance/security releases, where we aim for no new strings.
 return;
 
-_n_noop( 'Maintenance Release', 'Maintenance Releases' );
-_n_noop( 'Security Release', 'Security Releases' );
-_n_noop( 'Maintenance and Security Release', 'Maintenance and Security Releases' );
+__( 'Maintenance Release' );
+__( 'Maintenance Releases' );
+
+__( 'Security Release' );
+__( 'Security Releases' );
+
+__( 'Maintenance and Security Release' );
+__( 'Maintenance and Security Releases' );
 
-/* translators: 1: WordPress version number. */
-_n_noop( '<strong>Version %1$s</strong> addressed a security issue.',
-         '<strong>Version %1$s</strong> addressed some security issues.' );
+/* translators: %s: WordPress version number */
+__( '<strong>Version %s</strong> addressed one security issue.' );
+/* translators: %s: WordPress version number */
+__( '<strong>Version %s</strong> addressed some security issues.' );
 
 /* translators: 1: WordPress version number, 2: plural number of bugs. */
 _n_noop( '<strong>Version %1$s</strong> addressed %2$s bug.',
@@ -213,4 +227,5 @@ _n_noop( '<strong>Version %1$s</strong> addressed a security issue and fixed %2$
 _n_noop( '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bug.',
          '<strong>Version %1$s</strong> addressed some security issues and fixed %2$s bugs.' );
 
+/* translators: %s: Codex URL */
 __( 'For more information, see <a href="%s">the release notes</a>.' );
index 225272acbe04fc7acf5fa463160639b63b063dfc..5597aecef4ddd6a54444302a07cc53265046ac90 100644 (file)
@@ -56,13 +56,13 @@ $core_actions_post = array(
        'hidden-columns', 'update-welcome-panel', 'menu-get-metabox', 'wp-link-ajax',
        'menu-locations-save', 'menu-quick-search', 'meta-box-order', 'get-permalink',
        'sample-permalink', 'inline-save', 'inline-save-tax', 'find_posts', 'widgets-order',
-       'save-widget', 'set-post-thumbnail', 'date_format', 'time_format',
+       'save-widget', 'delete-inactive-widgets', 'set-post-thumbnail', 'date_format', 'time_format',
        'wp-remove-post-lock', 'dismiss-wp-pointer', 'upload-attachment', 'get-attachment',
        'query-attachments', 'save-attachment', 'save-attachment-compat', 'send-link-to-editor',
        'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'get-revision-diffs',
        'save-user-color-scheme', 'update-widget', 'query-themes', 'parse-embed', 'set-attachment-thumbnail',
        'parse-media-shortcode', 'destroy-sessions', 'install-plugin', 'update-plugin', 'press-this-save-post',
-       'press-this-add-category', 'crop-image',
+       'press-this-add-category', 'crop-image', 'generate-password', 'save-wporg-username',
 );
 
 // Deprecated
index d3e58d254997f592038b57f53e7f9633a9000872..184d5c27319f2c2cf625c2d21a14d401f2a5e30a 100644 (file)
@@ -84,7 +84,7 @@ require_once(ABSPATH . 'wp-admin/includes/admin.php');
 auth_redirect();
 
 // Schedule trash collection
-if ( !wp_next_scheduled('wp_scheduled_delete') && !defined('WP_INSTALLING') )
+if ( ! wp_next_scheduled( 'wp_scheduled_delete' ) && ! wp_installing() )
        wp_schedule_event(time(), 'daily', 'wp_scheduled_delete');
 
 set_screen_options();
index 4a18aa144905f55739067b5ca9de0ce81fd290dc..371a65d305591cb3c8ef3fe0d24ad306ab761533 100644 (file)
@@ -61,7 +61,10 @@ if ( isset($_REQUEST['attachment_id']) && ($id = intval($_REQUEST['attachment_id
                        if ( $thumb_url = wp_get_attachment_image_src( $id, 'thumbnail', true ) )
                                echo '<img class="pinkynail" src="' . esc_url( $thumb_url[0] ) . '" alt="" />';
                        echo '<a class="edit-attachment" href="' . esc_url( get_edit_post_link( $id ) ) . '" target="_blank">' . _x( 'Edit', 'media item' ) . '</a>';
-                       $title = $post->post_title ? $post->post_title : wp_basename( $post->guid ); // title shouldn't ever be empty, but use filename just in cas.e
+
+                       // Title shouldn't ever be empty, but use filename just in case.
+                       $file = get_attached_file( $post->ID );
+                       $title = $post->post_title ? $post->post_title : wp_basename( $file );
                        echo '<div class="filename new"><span class="title">' . esc_html( wp_html_excerpt( $title, 60, '&hellip;' ) ) . '</span></div>';
                        break;
                case 2 :
@@ -89,7 +92,7 @@ $id = media_handle_upload( 'async-upload', $post_id );
 if ( is_wp_error($id) ) {
        echo '<div class="error-div error">
        <a class="dismiss" href="#" onclick="jQuery(this).parents(\'div.media-item\').slideUp(200, function(){jQuery(this).remove();});">' . __('Dismiss') . '</a>
-       <strong>' . sprintf(__('&#8220;%s&#8221; has failed to upload due to an error'), esc_html($_FILES['async-upload']['name']) ) . '</strong><br />' .
+       <strong>' . sprintf(__('&#8220;%s&#8221; has failed to upload.'), esc_html($_FILES['async-upload']['name']) ) . '</strong><br />' .
        esc_html($id->get_error_message()) . '</div>';
        exit;
 }
index 7131a0c7f309edb47451b051781d004bc1559a3d..939f77ee1c4b71916f1b38a24fe1fb65a9d5fa9f 100644 (file)
@@ -33,17 +33,6 @@ if ( isset( $_GET['dt'] ) ) {
                $action = 'trash';
 }
 
-/**
- * Display error message at bottom of comments.
- *
- * @param string $msg Error Message. Assumed to contain HTML and be sanitized.
- */
-function comment_footer_die( $msg ) {
-       echo "<div class='wrap'><p>$msg</p></div>";
-       include( ABSPATH . 'wp-admin/admin-footer.php' );
-       die;
-}
-
 switch( $action ) {
 
 case 'editcomment' :
@@ -166,7 +155,7 @@ if ( $comment->comment_approved != '0' ) { // if not unapproved
 </tr>
 <?php if ( $comment->comment_author_email ) { ?>
 <tr>
-<th scope="row"><?php _e('E-mail'); ?></th>
+<th scope="row"><?php _e('Email'); ?></th>
 <td><?php echo $comment->comment_author_email; ?></td>
 </tr>
 <?php } ?>
@@ -191,9 +180,13 @@ if ( $comment->comment_approved != '0' ) { // if not unapproved
 
                if ( $comment->comment_parent ) {
                        $parent      = get_comment( $comment->comment_parent );
-                       $parent_link = esc_url( get_comment_link( $comment->comment_parent ) );
-                       $name        = get_comment_author( $parent->comment_ID );
-                       printf( ' | ' . __( 'In reply to <a href="%1$s">%2$s</a>.' ), $parent_link, $name );
+                       $parent_link = esc_url( get_comment_link( $parent ) );
+                       $name        = get_comment_author( $parent );
+                       printf(
+                               /* translators: %s: comment link */
+                               ' | ' . __( 'In reply to %s.' ),
+                               '<a href="' . $parent_link . '">' . $name . '</a>'
+                       );
                }
        ?>
        </td>
@@ -201,15 +194,14 @@ if ( $comment->comment_approved != '0' ) { // if not unapproved
 <tr>
        <th scope="row"><?php _e( 'Submitted on' ); ?></th>
        <td>
-       <?php
-               /* translators: 2: comment date, 3: comment time */
-               printf( __( '<a href="%1$s">%2$s at %3$s</a>' ),
-                       esc_url( get_comment_link( $comment->comment_ID ) ),
-                       /* translators: comment date format. See http://php.net/date */
-                       get_comment_date( __( 'Y/m/d' ) ),
-                       get_comment_date( get_option( 'time_format' ) )
-               );
-       ?>
+               <a href="<?php echo esc_url( get_comment_link( $comment ) ); ?>"><?php
+                       /* translators: 1: comment date, 2: comment time */
+                       printf( __( '%1$s at %2$s' ),
+                               /* translators: comment date format. See http://php.net/date */
+                               get_comment_date( __( 'Y/m/d' ), $comment ),
+                               get_comment_date( get_option( 'time_format' ), $comment )
+                       );
+               ?></a>
        </td>
 </tr>
 <tr>
@@ -269,31 +261,31 @@ case 'unapprovecomment' :
 
        switch ( $action ) {
                case 'deletecomment' :
-                       wp_delete_comment( $comment_id );
+                       wp_delete_comment( $comment );
                        $redir = add_query_arg( array('deleted' => '1'), $redir );
                        break;
                case 'trashcomment' :
-                       wp_trash_comment($comment_id);
+                       wp_trash_comment( $comment );
                        $redir = add_query_arg( array('trashed' => '1', 'ids' => $comment_id), $redir );
                        break;
                case 'untrashcomment' :
-                       wp_untrash_comment($comment_id);
+                       wp_untrash_comment( $comment );
                        $redir = add_query_arg( array('untrashed' => '1'), $redir );
                        break;
                case 'spamcomment' :
-                       wp_spam_comment($comment_id);
+                       wp_spam_comment( $comment );
                        $redir = add_query_arg( array('spammed' => '1', 'ids' => $comment_id), $redir );
                        break;
                case 'unspamcomment' :
-                       wp_unspam_comment($comment_id);
+                       wp_unspam_comment( $comment );
                        $redir = add_query_arg( array('unspammed' => '1'), $redir );
                        break;
                case 'approvecomment' :
-                       wp_set_comment_status( $comment_id, 'approve' );
+                       wp_set_comment_status( $comment, 'approve' );
                        $redir = add_query_arg( array( 'approved' => 1 ), $redir );
                        break;
                case 'unapprovecomment' :
-                       wp_set_comment_status( $comment_id, 'hold' );
+                       wp_set_comment_status( $comment, 'hold' );
                        $redir = add_query_arg( array( 'unapproved' => 1 ), $redir );
                        break;
        }
index 33ae70813f1d65ac437055487bacba68e4dff6aa..61d0a5cfbbfaabc58f97d211248f133a3f0b2a7f 100644 (file)
@@ -8,70 +8,10 @@
 
 /** WordPress Administration Bootstrap */
 require_once( dirname( __FILE__ ) . '/admin.php' );
+require_once( dirname( __FILE__ ) . '/includes/credits.php' );
 
 $title = __( 'Credits' );
 
-/**
- * Retrieve the contributor credits.
- *
- * @global string $wp_version The current WordPress version.
- *
- * @since 3.2.0
- *
- * @return array|false A list of all of the contributors, or false on error.
-*/
-function wp_credits() {
-       global $wp_version;
-       $locale = get_locale();
-
-       $results = get_site_transient( 'wordpress_credits_' . $locale );
-
-       if ( ! is_array( $results )
-               || false !== strpos( $wp_version, '-' )
-               || ( isset( $results['data']['version'] ) && strpos( $wp_version, $results['data']['version'] ) !== 0 )
-       ) {
-               $response = wp_remote_get( "http://api.wordpress.org/core/credits/1.1/?version=$wp_version&locale=$locale" );
-
-               if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) )
-                       return false;
-
-               $results = json_decode( wp_remote_retrieve_body( $response ), true );
-
-               if ( ! is_array( $results ) )
-                       return false;
-
-               set_site_transient( 'wordpress_credits_' . $locale, $results, DAY_IN_SECONDS );
-       }
-
-       return $results;
-}
-
-/**
- * Retrieve the link to a contributor's WordPress.org profile page.
- *
- * @access private
- * @since 3.2.0
- *
- * @param string &$display_name The contributor's display name, passed by reference.
- * @param string $username      The contributor's username.
- * @param string $profiles      URL to the contributor's WordPress.org profile page.
- */
-function _wp_credits_add_profile_link( &$display_name, $username, $profiles ) {
-       $display_name = '<a href="' . esc_url( sprintf( $profiles, $username ) ) . '">' . esc_html( $display_name ) . '</a>';
-}
-
-/**
- * Retrieve the link to an external library used in WordPress.
- *
- * @access private
- * @since 3.2.0
- *
- * @param string &$data External library data, passed by reference.
- */
-function _wp_credits_build_object_link( &$data ) {
-       $data = '<a href="' . esc_url( $data[1] ) . '">' . esc_html( $data[0] ) . '</a>';
-}
-
 list( $display_version ) = explode( '-', $wp_version );
 
 include( ABSPATH . 'wp-admin/admin-header.php' );
@@ -80,18 +20,14 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
-<div class="about-text"><?php printf( __( 'Thank you for updating! WordPress %s makes it even easier to format your content and customize your site.' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating! WordPress %s makes your site more connected and responsive.' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
 <h2 class="nav-tab-wrapper">
-       <a href="about.php" class="nav-tab">
-               <?php _e( 'What&#8217;s New' ); ?>
-       </a><a href="credits.php" class="nav-tab nav-tab-active">
-               <?php _e( 'Credits' ); ?>
-       </a><a href="freedoms.php" class="nav-tab">
-               <?php _e( 'Freedoms' ); ?>
-       </a>
+       <a href="about.php" class="nav-tab"><?php _e( 'What&#8217;s New' ); ?></a>
+       <a href="credits.php" class="nav-tab nav-tab-active"><?php _e( 'Credits' ); ?></a>
+       <a href="freedoms.php" class="nav-tab"><?php _e( 'Freedoms' ); ?></a>
 </h2>
 
 <?php
@@ -120,7 +56,7 @@ foreach ( $credits['groups'] as $group_slug => $group_data ) {
                        $title = translate( $group_data['name'] );
                }
 
-               echo '<h4 class="wp-people-group">' . esc_html( $title ) . "</h4>\n";
+               echo '<h3 class="wp-people-group">' . esc_html( $title ) . "</h3>\n";
        }
 
        if ( ! empty( $group_data['shuffle'] ) )
@@ -185,6 +121,7 @@ __( 'Core Committer' );
 __( 'Guest Committer' );
 __( 'Developer' );
 __( 'Designer' );
+__( 'Docs Committer' );
 __( 'XML-RPC' );
 __( 'Internationalization' );
 __( 'External Libraries' );
index d7ae1bcc463203a83904c300e9c5bb2dfb219069..be288e594846acc05f630e445408edc034177f2c 100644 (file)
 
 /* Tabs */
 
-.about-wrap h2.nav-tab-wrapper {
-       padding-right: 6px;
-}
-
-.about-wrap h2 .nav-tab {
-       padding: 4px 15px 6px;
-       margin: 0 0 -1px 3px;
+.about-wrap .nav-tab {
+       padding-left: 15px;
+       padding-right: 15px;
        font-size: 18px;
-       vertical-align: top;
-       border-width: 1px;
-       white-space: nowrap;
 }
 
 /* 1.1 - Typography */
        margin-left: 4.799999999%;
        width: 47.6%;
 }
+.about-wrap .feature-section.two-col .col {
+       display: inline-block;
+       float: none;
+       margin-left: 4.799999999%;
+       width: calc( 47.6% - 4px );
+       vertical-align: middle;
+}
 
 .about-wrap .three-col .col {
        margin-left: 4.999999999%;
 /* 2.1 - Typography */
 
 .about-wrap .headline-feature h2 {
-       margin: 50px 0 30px;
+       margin: 30px 0 30px;
        font-size: 2.2em;
        font-weight: 300;
        line-height: 1.3;
-       text-align: right;
+       text-align: center;
 }
 
 .about-wrap .headline-feature h3 {
-       margin-top: 30px;
-       text-align: center;
+       margin-top: 0;
+       text-align: right;
+}
+
+.about-wrap .feature-section.two-col h3 {
+       margin-top: 0;
 }
 
 .about-wrap .feature-list h2 {
        margin-top: 0.6em;
 }
 
+.about-wrap .two-col-text {
+       -webkit-column-count: 2;
+       -moz-column-count: 2;
+       column-count: 2;
+       -webkit-column-gap: 40px;
+       -moz-column-gap: 40px;
+       column-gap: 40px;
+}
+
+.about-wrap .two-col-text p:first-of-type {
+       margin-top: 0;
+}
+
 /* 2.2 - Structure */
 
-.about-wrap .feature-video {
+.about-wrap .headline-feature.feature-video {
        position: relative;
        margin: 40px 0;
-       padding-bottom: 56.25%; /* video is 1280 x 720 */
+       padding-bottom: 56.25%;
        width: 100%;
+       max-width: 100%;
        height: 0;
        text-align: center;
 }
 .about-wrap .feature-section {
        overflow: hidden;
        padding: 0 0 40px;
-       border-bottom: 1px solid rgba(0, 0, 0, 0.1);
 }
 
-.about-wrap .headline-feature .feature-section {
+.about-wrap .headline-feature {
        margin: 0 auto;
-       max-width: 95%;
+       max-width: 80%;
 }
 
 .about-wrap .feature-section .media-container {
-       border: 1px solid #ddd;
        overflow: hidden;
 }
 
-.about-wrap .feature-section .svg-container {
-       padding: 50px 0;
+.about-wrap .headline-feature .col {
+       width: 65.2%;
+}
+
+.about-wrap .headline-feature .col.feature-image {
+       width: 30%;
+}
+
+.about-wrap .headline-feature .vertical-screen {
+       float: left;
+       margin-right: 40px;
+       max-width: 100%;
+}
+
+.about-wrap .headline-feature .horizontal-screen {
+       margin-top: 20px;
+       max-width: 100%;
+}
+
+.about-wrap .embed-container {
        text-align: center;
-       background-color: #e1e1e3;
 }
 
-.about-wrap .feature-section .svg-container img {
-       max-width: 150px;
+.about-wrap .embed-container iframe {
+       max-width: 100%;
+}
+
+.about-wrap .wp-embedded-content {
+       max-width: 100%;
 }
 
 .about-wrap .feature-section:not(.under-the-hood) .col {
 
 /* Credits */
 
-.about-wrap h4.wp-people-group {
-       margin-top: 2.6em;
+.about-wrap h3.wp-people-group {
+       margin: 2.6em 0 1.33em;
        font-size: 16px;
+       line-height: inherit;
 }
 
 .about-wrap ul.wp-people-group {
                width: 100%;
                margin: 40px 0 0;
                padding: 0 0 40px;
-               border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+       }
+
+       .about-wrap .headline-feature {
+               position: relative;
+       }
+
+       .about-wrap .headline-feature .col.feature-image {
+               position: absolute;
+               bottom: 0;
+               left: 0;
+               width: 40%;
+       }
+
+       .about-wrap .headline-feature .horizontal-image {
+               position: relative;
+       }
+
+       .about-wrap .headline-feature .horizontal-image:before {
+               display: block;
+               content: "";
+               width: 100%;
+               padding-top: 80%;
+       }
+
+       .about-wrap .headline-feature .horizontal-image > .content {
+               position: absolute;
+               top: 0;
+               right: 0;
+               left: 0;
+               bottom: 0;
+       }
+
+       .about-wrap .headline-feature .horizontal-image img {
+               position: absolute;
+               bottom: 0;
+       }
+
+       .about-wrap .two-col-text {
+               -webkit-column-count: 1;
+               -moz-column-count: 1;
+               column-count: 1;
        }
 
        .about-wrap .three-col img {
                width: 100%;
        }
 
-       .about-wrap h2.nav-tab-wrapper {
-               padding-right: 0;
-               border-bottom: 0;
-       }
-
-       .about-wrap h2 .nav-tab {
-               margin-top: 10px;
-               margin-left: 10px;
-               border-bottom: 1px solid #ccc;
-       }
-
-       .about-wrap .feature-section .svg-container {
-               padding-top: 20px;
-               padding-bottom: 20px;
-       }
-
+       .about-wrap .feature-section.two-col .col,
        .about-wrap .three-col .col,
        .about-wrap .headline-feature .feature-section .col {
                width: 100% !important;
                float: none !important;
        }
+
+       .about-wrap .feature-section.two-col .col:last-of-type {
+               margin-top: 0;
+       }
+
+       .feature-section.under-the-hood.three-col .col,
+       .feature-section.under-the-hood.one-col .col {
+               padding-bottom: 0;
+       }
 }
 
 @media only screen and (max-width: 400px) {
index b13442d09e03a7619164bc74c08cef853063333a..f466fd2240c107ac50bc1035e3d066717067a351 100644 (file)
 
 /* Tabs */
 
-.about-wrap h2.nav-tab-wrapper {
-       padding-left: 6px;
-}
-
-.about-wrap h2 .nav-tab {
-       padding: 4px 15px 6px;
-       margin: 0 3px -1px 0;
+.about-wrap .nav-tab {
+       padding-right: 15px;
+       padding-left: 15px;
        font-size: 18px;
-       vertical-align: top;
-       border-width: 1px;
-       white-space: nowrap;
 }
 
 /* 1.1 - Typography */
        margin-right: 4.799999999%;
        width: 47.6%;
 }
+.about-wrap .feature-section.two-col .col {
+       display: inline-block;
+       float: none;
+       margin-right: 4.799999999%;
+       width: calc( 47.6% - 4px );
+       vertical-align: middle;
+}
 
 .about-wrap .three-col .col {
        margin-right: 4.999999999%;
 /* 2.1 - Typography */
 
 .about-wrap .headline-feature h2 {
-       margin: 50px 0 30px;
+       margin: 30px 0 30px;
        font-size: 2.2em;
        font-weight: 300;
        line-height: 1.3;
-       text-align: left;
+       text-align: center;
 }
 
 .about-wrap .headline-feature h3 {
-       margin-top: 30px;
-       text-align: center;
+       margin-top: 0;
+       text-align: left;
+}
+
+.about-wrap .feature-section.two-col h3 {
+       margin-top: 0;
 }
 
 .about-wrap .feature-list h2 {
        margin-top: 0.6em;
 }
 
+.about-wrap .two-col-text {
+       -webkit-column-count: 2;
+       -moz-column-count: 2;
+       column-count: 2;
+       -webkit-column-gap: 40px;
+       -moz-column-gap: 40px;
+       column-gap: 40px;
+}
+
+.about-wrap .two-col-text p:first-of-type {
+       margin-top: 0;
+}
+
 /* 2.2 - Structure */
 
-.about-wrap .feature-video {
+.about-wrap .headline-feature.feature-video {
        position: relative;
        margin: 40px 0;
-       padding-bottom: 56.25%; /* video is 1280 x 720 */
+       padding-bottom: 56.25%;
        width: 100%;
+       max-width: 100%;
        height: 0;
        text-align: center;
 }
 .about-wrap .feature-section {
        overflow: hidden;
        padding: 0 0 40px;
-       border-bottom: 1px solid rgba(0, 0, 0, 0.1);
 }
 
-.about-wrap .headline-feature .feature-section {
+.about-wrap .headline-feature {
        margin: 0 auto;
-       max-width: 95%;
+       max-width: 80%;
 }
 
 .about-wrap .feature-section .media-container {
-       border: 1px solid #ddd;
        overflow: hidden;
 }
 
-.about-wrap .feature-section .svg-container {
-       padding: 50px 0;
+.about-wrap .headline-feature .col {
+       width: 65.2%;
+}
+
+.about-wrap .headline-feature .col.feature-image {
+       width: 30%;
+}
+
+.about-wrap .headline-feature .vertical-screen {
+       float: right;
+       margin-left: 40px;
+       max-width: 100%;
+}
+
+.about-wrap .headline-feature .horizontal-screen {
+       margin-top: 20px;
+       max-width: 100%;
+}
+
+.about-wrap .embed-container {
        text-align: center;
-       background-color: #e1e1e3;
 }
 
-.about-wrap .feature-section .svg-container img {
-       max-width: 150px;
+.about-wrap .embed-container iframe {
+       max-width: 100%;
+}
+
+.about-wrap .wp-embedded-content {
+       max-width: 100%;
 }
 
 .about-wrap .feature-section:not(.under-the-hood) .col {
 
 /* Credits */
 
-.about-wrap h4.wp-people-group {
-       margin-top: 2.6em;
+.about-wrap h3.wp-people-group {
+       margin: 2.6em 0 1.33em;
        font-size: 16px;
+       line-height: inherit;
 }
 
 .about-wrap ul.wp-people-group {
                width: 100%;
                margin: 40px 0 0;
                padding: 0 0 40px;
-               border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+       }
+
+       .about-wrap .headline-feature {
+               position: relative;
+       }
+
+       .about-wrap .headline-feature .col.feature-image {
+               position: absolute;
+               bottom: 0;
+               right: 0;
+               width: 40%;
+       }
+
+       .about-wrap .headline-feature .horizontal-image {
+               position: relative;
+       }
+
+       .about-wrap .headline-feature .horizontal-image:before {
+               display: block;
+               content: "";
+               width: 100%;
+               padding-top: 80%;
+       }
+
+       .about-wrap .headline-feature .horizontal-image > .content {
+               position: absolute;
+               top: 0;
+               left: 0;
+               right: 0;
+               bottom: 0;
+       }
+
+       .about-wrap .headline-feature .horizontal-image img {
+               position: absolute;
+               bottom: 0;
+       }
+
+       .about-wrap .two-col-text {
+               -webkit-column-count: 1;
+               -moz-column-count: 1;
+               column-count: 1;
        }
 
        .about-wrap .three-col img {
                width: 100%;
        }
 
-       .about-wrap h2.nav-tab-wrapper {
-               padding-left: 0;
-               border-bottom: 0;
-       }
-
-       .about-wrap h2 .nav-tab {
-               margin-top: 10px;
-               margin-right: 10px;
-               border-bottom: 1px solid #ccc;
-       }
-
-       .about-wrap .feature-section .svg-container {
-               padding-top: 20px;
-               padding-bottom: 20px;
-       }
-
+       .about-wrap .feature-section.two-col .col,
        .about-wrap .three-col .col,
        .about-wrap .headline-feature .feature-section .col {
                width: 100% !important;
                float: none !important;
        }
+
+       .about-wrap .feature-section.two-col .col:last-of-type {
+               margin-top: 0;
+       }
+
+       .feature-section.under-the-hood.three-col .col,
+       .feature-section.under-the-hood.one-col .col {
+               padding-bottom: 0;
+       }
 }
 
 @media only screen and (max-width: 400px) {
index ea3d49f0a05c16d38a3895239ec8ef86e379cf46..02878f63e1b15bafd961f7b0e89afc73b1889fed 100644 (file)
@@ -39,7 +39,7 @@
 
 .icon16:before {
        color: #999;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        padding: 6px 0;
        height: 34px;
 }
 
 .icon16.icon-dashboard:before {
-       content: '\f226';
+       content: "\f226";
 }
 
 .icon16.icon-post:before {
-       content: '\f109';
+       content: "\f109";
 }
 
 .icon16.icon-media:before {
-       content: '\f104';
+       content: "\f104";
 }
 
 .icon16.icon-links:before {
-       content: '\f103';
+       content: "\f103";
 }
 
 .icon16.icon-page:before {
-       content: '\f105';
+       content: "\f105";
 }
 
 .icon16.icon-comments:before {
-       content: '\f101';
+       content: "\f101";
        margin-top: 1px;
 }
 
 .icon16.icon-appearance:before {
-       content: '\f100';
+       content: "\f100";
 }
 
 .icon16.icon-plugins:before {
-       content: '\f106';
+       content: "\f106";
 }
 
 .icon16.icon-users:before {
-       content: '\f110';
+       content: "\f110";
 }
 
 .icon16.icon-tools:before {
-       content: '\f107';
+       content: "\f107";
 }
 
 .icon16.icon-settings:before {
-       content: '\f108';
+       content: "\f108";
 }
 
 .icon16.icon-site:before {
-       content: '\f112'
+       content: "\f112";
 }
 
 .icon16.icon-generic:before {
-       content: '\f111';
+       content: "\f111";
 }
 
 /* hide background-image for icons above */
@@ -586,14 +586,14 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #collapse-button div:after {
-       content: '\f148';
+       content: "\f148";
        display: block;
        line-height: 15px;
        right: -3px;
        top: -3px;
        color: #a0a5aa;
        color: rgba(240,245,250,0.6);
-       font: normal 20px/1 'dashicons' !important;
+       font: normal 20px/1 dashicons !important;
        speak: none;
        margin: 0 auto;
        padding: 0 !important;
@@ -901,10 +901,10 @@ li#wp-admin-bar-menu-toggle {
        }
 
        #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before {
-               content: '\f228';
+               content: "\f228";
                display: inline-block;
                float: right;
-               font: normal 40px/45px 'Dashicons';
+               font: normal 40px/45px dashicons;
                vertical-align: middle;
                outline: none;
                margin: 0;
index 27ffc0996dc457e26a165b4dd8db162a6b915a0b..c6616a46863c02b368a114ea61b92195b4d0f6d8 100644 (file)
@@ -39,7 +39,7 @@
 
 .icon16:before {
        color: #999;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        padding: 6px 0;
        height: 34px;
 }
 
 .icon16.icon-dashboard:before {
-       content: '\f226';
+       content: "\f226";
 }
 
 .icon16.icon-post:before {
-       content: '\f109';
+       content: "\f109";
 }
 
 .icon16.icon-media:before {
-       content: '\f104';
+       content: "\f104";
 }
 
 .icon16.icon-links:before {
-       content: '\f103';
+       content: "\f103";
 }
 
 .icon16.icon-page:before {
-       content: '\f105';
+       content: "\f105";
 }
 
 .icon16.icon-comments:before {
-       content: '\f101';
+       content: "\f101";
        margin-top: 1px;
 }
 
 .icon16.icon-appearance:before {
-       content: '\f100';
+       content: "\f100";
 }
 
 .icon16.icon-plugins:before {
-       content: '\f106';
+       content: "\f106";
 }
 
 .icon16.icon-users:before {
-       content: '\f110';
+       content: "\f110";
 }
 
 .icon16.icon-tools:before {
-       content: '\f107';
+       content: "\f107";
 }
 
 .icon16.icon-settings:before {
-       content: '\f108';
+       content: "\f108";
 }
 
 .icon16.icon-site:before {
-       content: '\f112'
+       content: "\f112";
 }
 
 .icon16.icon-generic:before {
-       content: '\f111';
+       content: "\f111";
 }
 
 /* hide background-image for icons above */
@@ -586,14 +586,14 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #collapse-button div:after {
-       content: '\f148';
+       content: "\f148";
        display: block;
        line-height: 15px;
        left: -3px;
        top: -3px;
        color: #a0a5aa;
        color: rgba(240,245,250,0.6);
-       font: normal 20px/1 'dashicons' !important;
+       font: normal 20px/1 dashicons !important;
        speak: none;
        margin: 0 auto;
        padding: 0 !important;
@@ -901,10 +901,10 @@ li#wp-admin-bar-menu-toggle {
        }
 
        #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before {
-               content: '\f228';
+               content: "\f228";
                display: inline-block;
                float: left;
-               font: normal 40px/45px 'Dashicons';
+               font: normal 40px/45px dashicons;
                vertical-align: middle;
                outline: none;
                margin: 0;
index 954376ef5ee7786a61071a8ad79dbe19b933a9e7..f9bfbae91b52e191e51f9e42b0f229cc36d16d95 100644 (file)
@@ -24,8 +24,8 @@
        vertical-align: bottom;
        display: inline-block;
        padding-right: 30px;
-       -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.08);
-       box-shadow: 0 1px 0 rgba(0,0,0,.08);
+       -webkit-box-shadow: 0 1px 0 #ccc;
+       box-shadow: 0 1px 0 #ccc;
 }
 
 .wp-color-result:after {
@@ -43,8 +43,6 @@
        left: 0;
        text-align: center;
        top: 0;
-       -webkit-box-shadow: inset 0 1px 0 #fff;
-       box-shadow: inset 0 1px 0 #fff;
 }
 
 .wp-color-result:hover,
 }
 
 .wp-color-result:focus {
-       -webkit-box-shadow:
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba( 30, 140, 190, 0.8 );
-       box-shadow:
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba( 30, 140, 190, 0.8 );
+       border-color: #5b9dd9;
+       -webkit-box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
+       box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
 }
 
 .wp-picker-open + .wp-picker-input-wrap {
index a08ffc945f2e6c17ccec977dd8aef6714b26f3e5..41e91ec9bbf6c02cda4b5031c0b57b59e7a77869 100644 (file)
@@ -1 +1 @@
-.wp-color-picker{width:80px}.wp-picker-container .hidden{display:none}.wp-color-result{background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;cursor:pointer;height:22px;margin:0 0 6px 6px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;display:inline-block;padding-right:30px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.08);box-shadow:0 1px 0 rgba(0,0,0,.08);top:0}.wp-color-result:after{background:#f7f7f7;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px;border-right:1px solid #ccc;color:#555;content:attr(title);display:block;font-size:11px;line-height:22px;padding:0 6px;position:relative;left:0;text-align:center;top:0;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.wp-color-result:focus,.wp-color-result:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#23282d;border-color:#a0a5aa;border-right:1px solid #999}.wp-color-result.wp-picker-open:after{content:attr(data-current)}.wp-picker-container,.wp-picker-container:active{display:inline-block;outline:0}.wp-color-result:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-container .button{margin-right:6px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#555}.wp-picker-container .iris-picker{-webkit-border-radius:0;border-radius:0;border-color:#dfdfdf;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;text-align:center;line-height:16px;margin:0}.wp-picker-container input[type=text].wp-color-picker:focus::-webkit-input-placeholder{color:transparent}.wp-picker-container input[type=text].wp-color-picker:-moz-placeholder{color:#999}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000}
\ No newline at end of file
+.wp-color-picker{width:80px}.wp-picker-container .hidden{display:none}.wp-color-result{background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;cursor:pointer;height:22px;margin:0 0 6px 6px;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;display:inline-block;padding-right:30px;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc;top:0}.wp-color-result:after{background:#f7f7f7;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px;border-right:1px solid #ccc;color:#555;content:attr(title);display:block;font-size:11px;line-height:22px;padding:0 6px;position:relative;left:0;text-align:center;top:0}.wp-color-result:focus,.wp-color-result:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#23282d;border-color:#a0a5aa;border-right:1px solid #999}.wp-color-result.wp-picker-open:after{content:attr(data-current)}.wp-picker-container,.wp-picker-container:active{display:inline-block;outline:0}.wp-color-result:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-container .button{margin-right:6px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#555}.wp-picker-container .iris-picker{-webkit-border-radius:0;border-radius:0;border-color:#dfdfdf;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;text-align:center;line-height:16px;margin:0}.wp-picker-container input[type=text].wp-color-picker:focus::-webkit-input-placeholder{color:transparent}.wp-picker-container input[type=text].wp-color-picker:-moz-placeholder{color:#999}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000}
\ No newline at end of file
index 24873a035ca35947bd0a862852041c0d54ede75d..c8ddea7b6e248ee6affc616fb82b21617715d3aa 100644 (file)
@@ -24,8 +24,8 @@
        vertical-align: bottom;
        display: inline-block;
        padding-left: 30px;
-       -webkit-box-shadow: 0 1px 0 rgba(0,0,0,.08);
-       box-shadow: 0 1px 0 rgba(0,0,0,.08);
+       -webkit-box-shadow: 0 1px 0 #ccc;
+       box-shadow: 0 1px 0 #ccc;
 }
 
 .wp-color-result:after {
@@ -43,8 +43,6 @@
        right: 0;
        text-align: center;
        top: 0;
-       -webkit-box-shadow: inset 0 1px 0 #fff;
-       box-shadow: inset 0 1px 0 #fff;
 }
 
 .wp-color-result:hover,
 }
 
 .wp-color-result:focus {
-       -webkit-box-shadow:
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba( 30, 140, 190, 0.8 );
-       box-shadow:
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba( 30, 140, 190, 0.8 );
+       border-color: #5b9dd9;
+       -webkit-box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
+       box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
 }
 
 .wp-picker-open + .wp-picker-input-wrap {
index f3c178d38f0185b20395b598732d986ce739c460..1e5f2d16cab9bf1daab84c1b513bf44112868a46 100644 (file)
@@ -1 +1 @@
-.wp-color-picker{width:80px}.wp-picker-container .hidden{display:none}.wp-color-result{background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;cursor:pointer;height:22px;margin:0 6px 6px 0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;display:inline-block;padding-left:30px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.08);box-shadow:0 1px 0 rgba(0,0,0,.08);top:0}.wp-color-result:after{background:#f7f7f7;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;border-left:1px solid #ccc;color:#555;content:attr(title);display:block;font-size:11px;line-height:22px;padding:0 6px;position:relative;right:0;text-align:center;top:0;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.wp-color-result:focus,.wp-color-result:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#23282d;border-color:#a0a5aa;border-left:1px solid #999}.wp-color-result.wp-picker-open:after{content:attr(data-current)}.wp-picker-container,.wp-picker-container:active{display:inline-block;outline:0}.wp-color-result:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-container .button{margin-left:6px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#555}.wp-picker-container .iris-picker{-webkit-border-radius:0;border-radius:0;border-color:#dfdfdf;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;text-align:center;line-height:16px;margin:0}.wp-picker-container input[type=text].wp-color-picker:focus::-webkit-input-placeholder{color:transparent}.wp-picker-container input[type=text].wp-color-picker:-moz-placeholder{color:#999}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000}
\ No newline at end of file
+.wp-color-picker{width:80px}.wp-picker-container .hidden{display:none}.wp-color-result{background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;cursor:pointer;height:22px;margin:0 6px 6px 0;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:bottom;display:inline-block;padding-left:30px;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc;top:0}.wp-color-result:after{background:#f7f7f7;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;border-left:1px solid #ccc;color:#555;content:attr(title);display:block;font-size:11px;line-height:22px;padding:0 6px;position:relative;right:0;text-align:center;top:0}.wp-color-result:focus,.wp-color-result:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-color-result:focus:after,.wp-color-result:hover:after{color:#23282d;border-color:#a0a5aa;border-left:1px solid #999}.wp-color-result.wp-picker-open:after{content:attr(data-current)}.wp-picker-container,.wp-picker-container:active{display:inline-block;outline:0}.wp-color-result:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.wp-picker-open+.wp-picker-input-wrap{display:inline-block;vertical-align:top}.wp-picker-container .button{margin-left:6px}.wp-picker-container .iris-square-slider .ui-slider-handle:focus{background-color:#555}.wp-picker-container .iris-picker{-webkit-border-radius:0;border-radius:0;border-color:#dfdfdf;margin-top:6px}.wp-picker-container input[type=text].wp-color-picker{width:65px;font-size:12px;font-family:monospace;text-align:center;line-height:16px;margin:0}.wp-picker-container input[type=text].wp-color-picker:focus::-webkit-input-placeholder{color:transparent}.wp-picker-container input[type=text].wp-color-picker:-moz-placeholder{color:#999}.wp-picker-container input[type=text].iris-error{background-color:#ffebe8;border-color:#c00;color:#000}
\ No newline at end of file
index 6e396428f6c8e65c0341533be98111bb0e5de301..5953861985ca2c46b325695b8992d656a2bcef12 100644 (file)
@@ -315,6 +315,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -331,6 +332,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -484,16 +487,6 @@ body.more-filters-opened .more-filters:focus:before {
        color: $menu-highlight-text;
 }
 
-/* jQuery UI Slider */
-
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-       background: $button-color;
-       border-color: darken( $button-color, 10% );
-       box-shadow: inset 0 1px 0 lighten( $button-color, 15% ), 0 1px 0 rgba(0,0,0,.15);
-}
-
 /* Responsive Component */
 
 div#wp-responsive-toggle a:before {
index 9c196e0f3bc9654ebc3fd65dea72482b16b86bfb..c8213c18c6b37cfe973ddc73a386408d0bbe360c 100644 (file)
@@ -4,31 +4,31 @@
  */
 @mixin button( $button-color, $text-color: white ) {
        background: $button-color;
-       border-color: darken( $button-color, 10% );
+       border-color: darken( $button-color, 10% ) darken( $button-color, 15% ) darken( $button-color, 15% );
        color: $text-color;
-       box-shadow: inset 0 1px 0 lighten( $button-color, 15% ), 0 1px 0 rgba(0,0,0,.15);
+       box-shadow: 0 1px 0 darken( $button-color, 15% );
+       text-shadow: 0 -1px 1px darken( $button-color, 15% ),
+               1px 0 1px darken( $button-color, 15% ),
+               0 1px 1px darken( $button-color, 15% ),
+               -1px 0 1px darken( $button-color, 15% );
 
        &:hover,
        &:focus {
-               background: darken( $button-color, 5% );
+               background: lighten( $button-color, 3% );
                border-color: darken( $button-color, 15% );
                color: $text-color;
-               box-shadow: inset 0 1px 0 lighten( $button-color, 10% );
+               box-shadow: 0 1px 0 darken( $button-color, 15% );
        }
 
        &:focus {
-               box-shadow: inset 0 1px 0 lighten( $button-color, 10% ),
-                           0 0 0 1px #5b9dd9,
-                           0 0 2px 1px rgba( 30, 140, 190, .8 );
+               box-shadow: inset 0 1px 0 darken( $button-color, 10% ),
+                                       0 0 2px 1px #33b3db;
        }
 
        &:active {
                background: darken( $button-color, 10% );
                border-color: darken( $button-color, 15% );
-               color: $text-color;
-               box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ),
-                           0 0 0 1px #5b9dd9,
-                           0 0 2px 1px rgba( 30, 140, 190, .8 );
+               box-shadow: inset 0 2px 0 darken( $button-color, 15% );
        }
 
        &[disabled],
                border-color: darken( $button-color, 15% ) !important;
                text-shadow: none !important;
        }
+
+       &.button-hero {
+               box-shadow: 0 2px 0 darken( $button-color, 15% ) !important;
+               &:active {
+                       box-shadow: inset 0 3px 0 darken( $button-color, 15% ) !important;
+               }
+       }
+
 }
index 97a77a0ba40e8654116e3a19982b1ac6aca87d1b..737ba072b6f1c2ab3f55ef788fce0d5e829067d0 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #e1a948;
-  border-color: #d39323;
+  border-color: #d39323 #bd831f #bd831f;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #bd831f;
+  box-shadow: 0 1px 0 #bd831f;
+  text-shadow: 0 -1px 1px #bd831f, -1px 0 1px #bd831f, 0 1px 1px #bd831f, 1px 0 1px #bd831f;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #dd9f32;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #e3af55;
   border-color: #bd831f;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #e8be74;
-  box-shadow: inset 0 1px 0 #e8be74;
+  -webkit-box-shadow: 0 1px 0 #bd831f;
+  box-shadow: 0 1px 0 #bd831f;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #e8be74, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #e8be74, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #d39323, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #d39323, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #d39323;
   border-color: #bd831f;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #bd831f;
+  box-shadow: inset 0 2px 0 #bd831f;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #d1cdc7 !important;
   background: #db9925 !important;
   border-color: #bd831f !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #bd831f !important;
+  box-shadow: 0 2px 0 #bd831f !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #bd831f !important;
+  box-shadow: inset 0 3px 0 #bd831f !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #52accc;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #e2ecf1;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #fff;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #fff;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #e1a948;
-  border-color: #d39323;
-  -webkit-box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #e5f8ff;
index 56d9e32040db24bd1799a9f92c4631a586839da3..ff54a3a4f13149096a14efedc7b9d0a129b8a058 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#096484}input[type=radio]:checked:before{background:#096484}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e1a948;border-color:#d39323;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#dd9f32;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74;box-shadow:inset 0 1px 0 #e8be74}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e8be74,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e8be74,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cdc7!important;background:#db9925!important;border-color:#bd831f!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#52accc}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#4796b3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-button div:after,#collapse-menu{color:#e5f8ff}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before,#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #096484;box-shadow:0 0 0 1px #fff,0 0 0 3px #096484}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#e1a948;border-color:#d39323;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#096484}input[type=radio]:checked:before{background:#096484}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e1a948;border-color:#d39323 #bd831f #bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f;text-shadow:0 -1px 1px #bd831f,-1px 0 1px #bd831f,0 1px 1px #bd831f,1px 0 1px #bd831f}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;-webkit-box-shadow:inset 0 2px 0 #bd831f;box-shadow:inset 0 2px 0 #bd831f}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cdc7!important;background:#db9925!important;border-color:#bd831f!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #bd831f!important;box-shadow:0 2px 0 #bd831f!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #bd831f!important;box-shadow:inset 0 3px 0 #bd831f!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#52accc}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-menu{color:#e5f8ff}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#e5f8ff}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #096484;box-shadow:0 0 0 1px #fff,0 0 0 3px #096484}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#096484}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484}
\ No newline at end of file
index 8fb3d6104d66227ba94ac12f27f2f4fd689beb17..7b0819aa3300560948e3b145115cc76391f75690 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #e1a948;
-  border-color: #d39323;
+  border-color: #d39323 #bd831f #bd831f;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #bd831f;
+  box-shadow: 0 1px 0 #bd831f;
+  text-shadow: 0 -1px 1px #bd831f, 1px 0 1px #bd831f, 0 1px 1px #bd831f, -1px 0 1px #bd831f;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #dd9f32;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #e3af55;
   border-color: #bd831f;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #e8be74;
-  box-shadow: inset 0 1px 0 #e8be74;
+  -webkit-box-shadow: 0 1px 0 #bd831f;
+  box-shadow: 0 1px 0 #bd831f;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #e8be74, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #e8be74, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #d39323, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #d39323, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #d39323;
   border-color: #bd831f;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #bd831f;
+  box-shadow: inset 0 2px 0 #bd831f;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #d1cdc7 !important;
   background: #db9925 !important;
   border-color: #bd831f !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #bd831f !important;
+  box-shadow: 0 2px 0 #bd831f !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #bd831f !important;
+  box-shadow: inset 0 3px 0 #bd831f !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #52accc;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #e2ecf1;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #fff;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #fff;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #e1a948;
-  border-color: #d39323;
-  -webkit-box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #ecc88a, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #e5f8ff;
index c5d45e3fea81c269d5cde06cfd7acc24f4d8f10d..eb10c9d68f7a939acec6f39cb054d4bf74d5da68 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#096484}input[type=radio]:checked:before{background:#096484}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e1a948;border-color:#d39323;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#dd9f32;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8be74;box-shadow:inset 0 1px 0 #e8be74}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e8be74,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e8be74,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cdc7!important;background:#db9925!important;border-color:#bd831f!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#52accc}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#4796b3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-button div:after,#collapse-menu{color:#e5f8ff}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before,#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #096484;box-shadow:0 0 0 1px #fff,0 0 0 3px #096484}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#e1a948;border-color:#d39323;-webkit-box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ecc88a,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#096484}input[type=radio]:checked:before{background:#096484}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e1a948;border-color:#d39323 #bd831f #bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f;text-shadow:0 -1px 1px #bd831f,1px 0 1px #bd831f,0 1px 1px #bd831f,-1px 0 1px #bd831f}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e3af55;border-color:#bd831f;color:#fff;-webkit-box-shadow:0 1px 0 #bd831f;box-shadow:0 1px 0 #bd831f}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d39323,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d39323;border-color:#bd831f;-webkit-box-shadow:inset 0 2px 0 #bd831f;box-shadow:inset 0 2px 0 #bd831f}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cdc7!important;background:#db9925!important;border-color:#bd831f!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #bd831f!important;box-shadow:0 2px 0 #bd831f!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #bd831f!important;box-shadow:inset 0 3px 0 #bd831f!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#52accc}.wp-core-ui .wp-ui-text-primary{color:#52accc}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#096484}.wp-core-ui .wp-ui-text-highlight{color:#096484}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#e1a948}.wp-core-ui .wp-ui-text-notification{color:#e1a948}.wp-core-ui .wp-ui-text-icon{color:#e5f8ff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#52accc}.view-switch a.current:before{color:#52accc}.view-switch a:hover:before{color:#e1a948}#adminmenu,#adminmenuback,#adminmenuwrap{background:#52accc}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#e5f8ff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#096484}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#4796b3}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#4796b3}#adminmenu .wp-submenu .wp-submenu-head{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#e2ecf1}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#fff}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#096484}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#e1a948}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#4796b3}#collapse-menu{color:#e5f8ff}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#e5f8ff}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#52accc}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#e5f8ff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#fff;background:#4796b3}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#fff}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#4796b3}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#74b6ce}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#e2ecf1}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#e5f8ff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#fff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#fff}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#e5f8ff}#wpadminbar #adminbarsearch:before{color:#e5f8ff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6eb9d4}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6eb9d4;background-color:#6eb9d4}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info .username{color:#e2ecf1}.wp-pointer .wp-pointer-content h3{background-color:#096484;border-color:#07526c}.wp-pointer .wp-pointer-content h3:before{color:#096484}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#096484}.media-item .bar,.media-progress-bar div{background-color:#096484}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #096484}.attachment.details .check{background-color:#096484;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #096484;box-shadow:0 0 0 1px #fff,0 0 0 2px #096484}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #096484;box-shadow:0 0 0 1px #fff,0 0 0 3px #096484}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#096484}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#096484}.theme-filter.current,.theme-section.current{border-bottom-color:#52accc}body.more-filters-opened .more-filters{color:#fff;background-color:#52accc}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#096484;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#e5f8ff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#096484}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#4796b3}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#e5f8ff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#096484}
\ No newline at end of file
index 23866fc8cd34785eb66c2747e6986231e8a9fb91..5af52fddc627bebabc5d7961ecb64e9c1cb277f4 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #c7a589;
-  border-color: #b78b66;
+  border-color: #b78b66 #ae7d55 #ae7d55;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #ae7d55;
+  box-shadow: 0 1px 0 #ae7d55;
+  text-shadow: 0 -1px 1px #ae7d55, -1px 0 1px #ae7d55, 0 1px 1px #ae7d55, 1px 0 1px #ae7d55;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #bf9878;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #ccad93;
   border-color: #ae7d55;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #d7bfac;
-  box-shadow: inset 0 1px 0 #d7bfac;
+  -webkit-box-shadow: 0 1px 0 #ae7d55;
+  box-shadow: 0 1px 0 #ae7d55;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #b78b66, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #b78b66, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #b78b66;
   border-color: #ae7d55;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #ae7d55;
+  box-shadow: inset 0 2px 0 #ae7d55;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #d1ccc7 !important;
   background: #ba906d !important;
   border-color: #ae7d55 !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #ae7d55 !important;
+  box-shadow: 0 2px 0 #ae7d55 !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #ae7d55 !important;
+  box-shadow: inset 0 3px 0 #ae7d55 !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #59524c;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #cdcbc9;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #c7a589;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #c7a589;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #c7a589;
-  border-color: #b78b66;
-  -webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #f3f2f1;
index 39921d5b3af57a36ed1b14e00bc3e717777ef76e..930afef50c38868cb5593833f4185affbbaf796d 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#59524c}input[type=radio]:checked:before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#c7a589;border-color:#b78b66;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#bf9878;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac;box-shadow:inset 0 1px 0 #d7bfac}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #d7bfac,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1ccc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#46403c}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-button div:after,#collapse-menu{color:#f3f2f1}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589;box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#c7a589;border-color:#b78b66;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#59524c}input[type=radio]:checked:before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#c7a589;border-color:#b78b66 #ae7d55 #ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55;text-shadow:0 -1px 1px #ae7d55,-1px 0 1px #ae7d55,0 1px 1px #ae7d55,1px 0 1px #ae7d55}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;-webkit-box-shadow:inset 0 2px 0 #ae7d55;box-shadow:inset 0 2px 0 #ae7d55}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1ccc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ae7d55!important;box-shadow:0 2px 0 #ae7d55!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ae7d55!important;box-shadow:inset 0 3px 0 #ae7d55!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-menu{color:#f3f2f1}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f3f2f1}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar #adminbarsearch:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589;box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#c7a589}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f2f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589}
\ No newline at end of file
index 7d690f60c13dbdf376e7b8bad0716301cabf53eb..8050e39a4006698f2b7bf80d53687957b42213ae 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #c7a589;
-  border-color: #b78b66;
+  border-color: #b78b66 #ae7d55 #ae7d55;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #ae7d55;
+  box-shadow: 0 1px 0 #ae7d55;
+  text-shadow: 0 -1px 1px #ae7d55, 1px 0 1px #ae7d55, 0 1px 1px #ae7d55, -1px 0 1px #ae7d55;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #bf9878;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #ccad93;
   border-color: #ae7d55;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #d7bfac;
-  box-shadow: inset 0 1px 0 #d7bfac;
+  -webkit-box-shadow: 0 1px 0 #ae7d55;
+  box-shadow: 0 1px 0 #ae7d55;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #d7bfac, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #b78b66, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #b78b66, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #b78b66;
   border-color: #ae7d55;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #ae7d55;
+  box-shadow: inset 0 2px 0 #ae7d55;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #d1ccc7 !important;
   background: #ba906d !important;
   border-color: #ae7d55 !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #ae7d55 !important;
+  box-shadow: 0 2px 0 #ae7d55 !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #ae7d55 !important;
+  box-shadow: inset 0 3px 0 #ae7d55 !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #59524c;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #cdcbc9;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #c7a589;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #c7a589;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #c7a589;
-  border-color: #b78b66;
-  -webkit-box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #e0cdbd, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #f3f2f1;
index 6b4654110b39fb943bcf68c354b644b872c5d9be..9f00ed61641f92c59b9b8a723c725cdf17b69a3c 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#59524c}input[type=radio]:checked:before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#c7a589;border-color:#b78b66;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#bf9878;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 1px 0 #d7bfac;box-shadow:inset 0 1px 0 #d7bfac}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d7bfac,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #d7bfac,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1ccc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#46403c}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-button div:after,#collapse-menu{color:#f3f2f1}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589;box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#c7a589;border-color:#b78b66;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#59524c}input[type=radio]:checked:before{background:#59524c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#c7a589;border-color:#b78b66 #ae7d55 #ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55;text-shadow:0 -1px 1px #ae7d55,1px 0 1px #ae7d55,0 1px 1px #ae7d55,-1px 0 1px #ae7d55}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#ccad93;border-color:#ae7d55;color:#fff;-webkit-box-shadow:0 1px 0 #ae7d55;box-shadow:0 1px 0 #ae7d55}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #b78b66,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#b78b66;border-color:#ae7d55;-webkit-box-shadow:inset 0 2px 0 #ae7d55;box-shadow:inset 0 2px 0 #ae7d55}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1ccc7!important;background:#ba906d!important;border-color:#ae7d55!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ae7d55!important;box-shadow:0 2px 0 #ae7d55!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ae7d55!important;box-shadow:inset 0 3px 0 #ae7d55!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#59524c}.wp-core-ui .wp-ui-text-primary{color:#59524c}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#c7a589}.wp-core-ui .wp-ui-text-highlight{color:#c7a589}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#9ea476}.wp-core-ui .wp-ui-text-notification{color:#9ea476}.wp-core-ui .wp-ui-text-icon{color:#f3f2f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#59524c}.view-switch a.current:before{color:#59524c}.view-switch a:hover:before{color:#9ea476}#adminmenu,#adminmenuback,#adminmenuwrap{background:#59524c}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f2f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#c7a589}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#46403c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#46403c}#adminmenu .wp-submenu .wp-submenu-head{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cdcbc9}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#c7a589}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#c7a589}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#c7a589}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#9ea476}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#46403c}#collapse-menu{color:#f3f2f1}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f3f2f1}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#59524c}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f2f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#c7a589;background:#46403c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#c7a589}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#46403c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#656463}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cdcbc9}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f2f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#c7a589}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#c7a589}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f2f1}#wpadminbar #adminbarsearch:before{color:#f3f2f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#6c645c}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#6c645c;background-color:#6c645c}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#c7a589}#wpadminbar #wp-admin-bar-user-info .username{color:#cdcbc9}.wp-pointer .wp-pointer-content h3{background-color:#c7a589;border-color:#bf9878}.wp-pointer .wp-pointer-content h3:before{color:#c7a589}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#c7a589}.media-item .bar,.media-progress-bar div{background-color:#c7a589}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #c7a589}.attachment.details .check{background-color:#c7a589;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589;box-shadow:0 0 0 1px #fff,0 0 0 2px #c7a589}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589;box-shadow:0 0 0 1px #fff,0 0 0 3px #c7a589}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#c7a589}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#c7a589}.theme-filter.current,.theme-section.current{border-bottom-color:#59524c}body.more-filters-opened .more-filters{color:#fff;background-color:#59524c}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#c7a589;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f2f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#c7a589}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#46403c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f2f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#c7a589}
\ No newline at end of file
index 01f212f172fa0f2bed49c256d216b0ed89b14141..536365142c366fa28de7ffef80b0122e2d0cc09e 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #a3b745;
-  border-color: #829237;
+  border-color: #829237 #727f30 #727f30;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #727f30;
+  box-shadow: 0 1px 0 #727f30;
+  text-shadow: 0 -1px 1px #727f30, -1px 0 1px #727f30, 0 1px 1px #727f30, 1px 0 1px #727f30;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #93a43e;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #a9bd4f;
   border-color: #727f30;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #b6c669;
-  box-shadow: inset 0 1px 0 #b6c669;
+  -webkit-box-shadow: 0 1px 0 #727f30;
+  box-shadow: 0 1px 0 #727f30;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #829237, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #829237, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #829237;
   border-color: #727f30;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #727f30;
+  box-shadow: inset 0 2px 0 #727f30;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #cfd1c7 !important;
   background: #89993a !important;
   border-color: #727f30 !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #727f30 !important;
+  box-shadow: 0 2px 0 #727f30 !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #727f30 !important;
+  box-shadow: inset 0 3px 0 #727f30 !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #523f6d;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #cbc5d3;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #a3b745;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #a3b745;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #a3b745;
-  border-color: #829237;
-  -webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #ece6f6;
index eaaa3cdead8ab139da6988b466cc3ad60cf5a462..c4afe7604f06995eb4a9ad08b92d9e0c0cfc0404 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#523f6d}input[type=radio]:checked:before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#a3b745;border-color:#829237;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#93a43e;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b6c669;box-shadow:inset 0 1px 0 #b6c669}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #b6c669,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #b6c669,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#523f6d}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#413256}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-button div:after,#collapse-menu{color:#ece6f6}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745;box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#ece6f6}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#a3b745;border-color:#829237;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#523f6d}input[type=radio]:checked:before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#a3b745;border-color:#829237 #727f30 #727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30;text-shadow:0 -1px 1px #727f30,-1px 0 1px #727f30,0 1px 1px #727f30,1px 0 1px #727f30}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;-webkit-box-shadow:inset 0 2px 0 #727f30;box-shadow:inset 0 2px 0 #727f30}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #727f30!important;box-shadow:0 2px 0 #727f30!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #727f30!important;box-shadow:inset 0 3px 0 #727f30!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#523f6d}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-menu{color:#ece6f6}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#ece6f6}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745;box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#a3b745}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745}
\ No newline at end of file
index f98d460f91d8dfae6ae3b63e9caa075d768c027e..053d469c2d2d3ed6aa6bbe574b9baeaf34cc813b 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #a3b745;
-  border-color: #829237;
+  border-color: #829237 #727f30 #727f30;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #727f30;
+  box-shadow: 0 1px 0 #727f30;
+  text-shadow: 0 -1px 1px #727f30, 1px 0 1px #727f30, 0 1px 1px #727f30, -1px 0 1px #727f30;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #93a43e;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #a9bd4f;
   border-color: #727f30;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #b6c669;
-  box-shadow: inset 0 1px 0 #b6c669;
+  -webkit-box-shadow: 0 1px 0 #727f30;
+  box-shadow: 0 1px 0 #727f30;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #b6c669, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #829237, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #829237, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #829237;
   border-color: #727f30;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #727f30;
+  box-shadow: inset 0 2px 0 #727f30;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #cfd1c7 !important;
   background: #89993a !important;
   border-color: #727f30 !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #727f30 !important;
+  box-shadow: 0 2px 0 #727f30 !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #727f30 !important;
+  box-shadow: inset 0 3px 0 #727f30 !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #523f6d;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #cbc5d3;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #a3b745;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #a3b745;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #a3b745;
-  border-color: #829237;
-  -webkit-box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #bfcd7b, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #ece6f6;
index e98bf7bd9985c08e0ad2ebf86007c0e7779b13db..5f1f0c4d9030defe81e73cae7b3339d911fe4e65 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#523f6d}input[type=radio]:checked:before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#a3b745;border-color:#829237;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#93a43e;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 1px 0 #b6c669;box-shadow:inset 0 1px 0 #b6c669}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #b6c669,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #b6c669,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#523f6d}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#413256}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-button div:after,#collapse-menu{color:#ece6f6}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745;box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#ece6f6}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#a3b745;border-color:#829237;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#523f6d}input[type=radio]:checked:before{background:#523f6d}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#a3b745;border-color:#829237 #727f30 #727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30;text-shadow:0 -1px 1px #727f30,1px 0 1px #727f30,0 1px 1px #727f30,-1px 0 1px #727f30}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a9bd4f;border-color:#727f30;color:#fff;-webkit-box-shadow:0 1px 0 #727f30;box-shadow:0 1px 0 #727f30}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #829237,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#829237;border-color:#727f30;-webkit-box-shadow:inset 0 2px 0 #727f30;box-shadow:inset 0 2px 0 #727f30}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#cfd1c7!important;background:#89993a!important;border-color:#727f30!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #727f30!important;box-shadow:0 2px 0 #727f30!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #727f30!important;box-shadow:inset 0 3px 0 #727f30!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#523f6d}.wp-core-ui .wp-ui-text-primary{color:#523f6d}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#a3b745}.wp-core-ui .wp-ui-text-highlight{color:#a3b745}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d46f15}.wp-core-ui .wp-ui-text-notification{color:#d46f15}.wp-core-ui .wp-ui-text-icon{color:#ece6f6}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#523f6d}.view-switch a.current:before{color:#523f6d}.view-switch a:hover:before{color:#d46f15}#adminmenu,#adminmenuback,#adminmenuwrap{background:#523f6d}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#ece6f6}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#a3b745}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#413256}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#413256}#adminmenu .wp-submenu .wp-submenu-head{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#cbc5d3}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#a3b745}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#a3b745}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#a3b745}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d46f15}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#413256}#collapse-menu{color:#ece6f6}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#ece6f6}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#523f6d}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#ece6f6}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#a3b745;background:#413256}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#a3b745}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#413256}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#64537c}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#cbc5d3}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#ece6f6}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#a3b745}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#a3b745}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#ece6f6}#wpadminbar #adminbarsearch:before{color:#ece6f6}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#634c84}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#634c84;background-color:#634c84}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#a3b745}#wpadminbar #wp-admin-bar-user-info .username{color:#cbc5d3}.wp-pointer .wp-pointer-content h3{background-color:#a3b745;border-color:#93a43e}.wp-pointer .wp-pointer-content h3:before{color:#a3b745}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#a3b745}.media-item .bar,.media-progress-bar div{background-color:#a3b745}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #a3b745}.attachment.details .check{background-color:#a3b745;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745;box-shadow:0 0 0 1px #fff,0 0 0 2px #a3b745}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745;box-shadow:0 0 0 1px #fff,0 0 0 3px #a3b745}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#a3b745}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#a3b745}.theme-filter.current,.theme-section.current{border-bottom-color:#523f6d}body.more-filters-opened .more-filters{color:#fff;background-color:#523f6d}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#a3b745;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#ece6f6}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#a3b745}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#413256}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#ece6f6}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#a3b745}
\ No newline at end of file
index c1ab81a43650c7a0ad046eff820d65fafdd9a96e..02fb1ebdda965b480db9c47cadef1471691f9794 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #04a4cc;
-  border-color: #037c9a;
+  border-color: #037c9a #036881 #036881;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #036881;
+  box-shadow: 0 1px 0 #036881;
+  text-shadow: 0 -1px 1px #036881, -1px 0 1px #036881, 0 1px 1px #036881, 1px 0 1px #036881;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #0490b3;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #04b0db;
   border-color: #036881;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #09cafa;
-  box-shadow: inset 0 1px 0 #09cafa;
+  -webkit-box-shadow: 0 1px 0 #036881;
+  box-shadow: 0 1px 0 #036881;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #09cafa, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #09cafa, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #037c9a, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #037c9a, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #037c9a;
   border-color: #036881;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #036881;
+  box-shadow: inset 0 2px 0 #036881;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #c7cfd1 !important;
   background: #0384a4 !important;
   border-color: #036881 !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #036881 !important;
+  box-shadow: 0 2px 0 #036881 !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #036881 !important;
+  box-shadow: inset 0 3px 0 #036881 !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #333;
   background-color: #e5e5e5;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #333;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #686868;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #04a4cc;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #333;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #04a4cc;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #04a4cc;
-  border-color: #037c9a;
-  -webkit-box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #999;
index 8108994f23f60144d7457fd74ff41cea749e1430..a10da555b0ed94f74448452c1f282d1b83214194 100644 (file)
@@ -1 +1 @@
-html{background:#f5f5f5}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#04a4cc}input[type=radio]:checked:before{background:#04a4cc}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#04a4cc;border-color:#037c9a;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#0490b3;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa;box-shadow:inset 0 1px 0 #09cafa}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #09cafa,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #09cafa,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#333;background-color:#e5e5e5}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}.theme-filter.current,.theme-section.current,.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#fff}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-menu{color:#777}#collapse-menu:hover,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#collapse-button div:after{color:#999}#collapse-menu:hover #collapse-button div:after{color:#555}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#ccc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#333;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#04a4cc}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-theme-controls .widget-area-select .selected{background-color:#888;color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#999}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#04a4cc;border-color:#037c9a;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar .ab-top-menu>li:hover>.ab-item,#wpadminbar .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default li:hover span.ab-label,#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary li.hover span.ab-label{color:#333}
\ No newline at end of file
+html{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#04a4cc}input[type=radio]:checked:before{background:#04a4cc}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#04a4cc;border-color:#037c9a #036881 #036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881;text-shadow:0 -1px 1px #036881,-1px 0 1px #036881,0 1px 1px #036881,1px 0 1px #036881}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;-webkit-box-shadow:inset 0 2px 0 #036881;box-shadow:inset 0 2px 0 #036881}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #036881!important;box-shadow:0 2px 0 #036881!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #036881!important;box-shadow:inset 0 3px 0 #036881!important}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#333;background-color:#e5e5e5}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}.theme-filter.current,.theme-section.current,.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#fff}#adminmenu .wp-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-menu{color:#777}#collapse-menu:hover,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#collapse-button div:after{color:#999}#collapse-menu:hover #collapse-button div:after{color:#555}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#ccc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#333;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#04a4cc}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#04a4cc}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar .ab-top-menu>li:hover>.ab-item,#wpadminbar .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default li:hover span.ab-label,#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary li.hover span.ab-label{color:#333}
\ No newline at end of file
index 335e3f904ba9f32226d7b7c91461e1afd16abdfe..325a211c428ae0c43f92c6b50ae5a2fd2229e050 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #04a4cc;
-  border-color: #037c9a;
+  border-color: #037c9a #036881 #036881;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #036881;
+  box-shadow: 0 1px 0 #036881;
+  text-shadow: 0 -1px 1px #036881, 1px 0 1px #036881, 0 1px 1px #036881, -1px 0 1px #036881;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #0490b3;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #04b0db;
   border-color: #036881;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #09cafa;
-  box-shadow: inset 0 1px 0 #09cafa;
+  -webkit-box-shadow: 0 1px 0 #036881;
+  box-shadow: 0 1px 0 #036881;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #09cafa, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #09cafa, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #037c9a, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #037c9a, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #037c9a;
   border-color: #036881;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #036881;
+  box-shadow: inset 0 2px 0 #036881;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #c7cfd1 !important;
   background: #0384a4 !important;
   border-color: #036881 !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #036881 !important;
+  box-shadow: 0 2px 0 #036881 !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #036881 !important;
+  box-shadow: inset 0 3px 0 #036881 !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #333;
   background-color: #e5e5e5;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #333;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #686868;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #04a4cc;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #333;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #04a4cc;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #04a4cc;
-  border-color: #037c9a;
-  -webkit-box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #22cffb, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #999;
index 417b5b9716ea98e5513989e87e927554a8fde67d..c14995ca54f6b82db8c768abf2eda31962d38b3a 100644 (file)
@@ -1 +1 @@
-html{background:#f5f5f5}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#04a4cc}input[type=radio]:checked:before{background:#04a4cc}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#04a4cc;border-color:#037c9a;color:#fff;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#0490b3;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 1px 0 #09cafa;box-shadow:inset 0 1px 0 #09cafa}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #09cafa,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #09cafa,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#333;background-color:#e5e5e5}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}.theme-filter.current,.theme-section.current,.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#fff}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-menu{color:#777}#collapse-menu:hover,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#collapse-button div:after{color:#999}#collapse-menu:hover #collapse-button div:after{color:#555}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#ccc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#333;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#04a4cc}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}#customize-theme-controls .widget-area-select .selected{background-color:#888;color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#999}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#04a4cc;border-color:#037c9a;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar .ab-top-menu>li:hover>.ab-item,#wpadminbar .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default li:hover span.ab-label,#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary li.hover span.ab-label{color:#333}
\ No newline at end of file
+html{background:#f5f5f5}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#04a4cc}input[type=radio]:checked:before{background:#04a4cc}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#04a4cc;border-color:#037c9a #036881 #036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881;text-shadow:0 -1px 1px #036881,1px 0 1px #036881,0 1px 1px #036881,-1px 0 1px #036881}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#04b0db;border-color:#036881;color:#fff;-webkit-box-shadow:0 1px 0 #036881;box-shadow:0 1px 0 #036881}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #037c9a,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#037c9a;border-color:#036881;-webkit-box-shadow:inset 0 2px 0 #036881;box-shadow:inset 0 2px 0 #036881}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7cfd1!important;background:#0384a4!important;border-color:#036881!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #036881!important;box-shadow:0 2px 0 #036881!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #036881!important;box-shadow:inset 0 3px 0 #036881!important}.wp-core-ui .wp-ui-primary{color:#333;background-color:#e5e5e5}.wp-core-ui .wp-ui-text-primary{color:#e5e5e5}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#888}.wp-core-ui .wp-ui-text-highlight{color:#888}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#d64e07}.wp-core-ui .wp-ui-text-notification{color:#d64e07}.wp-core-ui .wp-ui-text-icon{color:#999}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#333;background-color:#e5e5e5}.view-switch a.current:before{color:#e5e5e5}.view-switch a:hover:before{color:#d64e07}#adminmenu,#adminmenuback,#adminmenuwrap{background:#e5e5e5}#adminmenu a{color:#333}#adminmenu div.wp-menu-image:before{color:#999}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#888}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#ccc}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f5f5f5;border-bottom-color:#f5f5f5}.theme-filter.current,.theme-section.current,.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#04a4cc}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#fff}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#fff}#adminmenu .wp-submenu .wp-submenu-head{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#686868}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#04a4cc}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#333}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#04a4cc}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f5f5f5}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#888}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#ccc}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#d64e07}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#333;background:#fff}#collapse-menu{color:#777}#collapse-menu:hover,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#333}#collapse-button div:after{color:#999}#collapse-menu:hover #collapse-button div:after{color:#555}#wpadminbar{color:#333;background:#e5e5e5}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#999}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#04a4cc;background:#fff}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#04a4cc}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#ccc}#wpadminbar .menupop .ab-sub-wrapper{background:#fff}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#f7f7f7}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#686868}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#999}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#04a4cc}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#04a4cc}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#999}#wpadminbar #adminbarsearch:before{color:#999}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#333;background:#f7f7f7}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#333;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#333;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#f7f7f7;background-color:#f7f7f7}#wpadminbar #wp-admin-bar-user-info .display-name{color:#333}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#04a4cc}#wpadminbar #wp-admin-bar-user-info .username{color:#686868}.wp-pointer .wp-pointer-content h3{background-color:#04a4cc;border-color:#0490b3}.wp-pointer .wp-pointer-content h3:before{color:#04a4cc}.media-item .bar,.media-progress-bar div{background-color:#04a4cc}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #04a4cc}.attachment.details .check{background-color:#04a4cc;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 2px #04a4cc}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc;box-shadow:0 0 0 1px #fff,0 0 0 3px #04a4cc}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#04a4cc}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#04a4cc}body.more-filters-opened .more-filters{color:#333;background-color:#e5e5e5}body.more-filters-opened .more-filters:before{color:#333}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#888;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#999}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#888}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#999}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#04a4cc}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar .ab-top-menu>li:hover>.ab-item,#wpadminbar .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default li:hover span.ab-label,#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary li.hover span.ab-label{color:#333}
\ No newline at end of file
index a54bf443283a74c39cb9ea7733bb6b4194412cc8..e7ce7f5ae83a71426037376b94f17df701a845bc 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #e14d43;
-  border-color: #d02c21;
+  border-color: #d02c21 #ba281e #ba281e;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #ba281e;
+  box-shadow: 0 1px 0 #ba281e;
+  text-shadow: 0 -1px 1px #ba281e, -1px 0 1px #ba281e, 0 1px 1px #ba281e, 1px 0 1px #ba281e;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #dd382d;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #e35950;
   border-color: #ba281e;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #e8776f;
-  box-shadow: inset 0 1px 0 #e8776f;
+  -webkit-box-shadow: 0 1px 0 #ba281e;
+  box-shadow: 0 1px 0 #ba281e;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #d02c21, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #d02c21, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #d02c21;
   border-color: #ba281e;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #ba281e;
+  box-shadow: inset 0 2px 0 #ba281e;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #d1c8c7 !important;
   background: #d92e23 !important;
   border-color: #ba281e !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #ba281e !important;
+  box-shadow: 0 2px 0 #ba281e !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #ba281e !important;
+  box-shadow: inset 0 3px 0 #ba281e !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #363b3f;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #c3c4c5;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #e14d43;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #e14d43;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #e14d43;
-  border-color: #d02c21;
-  -webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #f1f2f3;
index b5acc563a68fcf836f8e58489ec841a6979c1339..725729180555be2bb64c0217a568a32c088f43a5 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#e14d43}input[type=radio]:checked:before{background:#e14d43}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e14d43;border-color:#d02c21;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#dd382d;border-color:#ba281e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8776f;box-shadow:inset 0 1px 0 #e8776f}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e8776f,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e8776f,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1c8c7!important;background:#d92e23!important;border-color:#ba281e!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#363b3f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#26292c}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-button div:after,#collapse-menu{color:#f1f2f3}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43;box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#e14d43;border-color:#d02c21;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#e14d43}input[type=radio]:checked:before{background:#e14d43}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e14d43;border-color:#d02c21 #ba281e #ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e;text-shadow:0 -1px 1px #ba281e,-1px 0 1px #ba281e,0 1px 1px #ba281e,1px 0 1px #ba281e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;-webkit-box-shadow:inset 0 2px 0 #ba281e;box-shadow:inset 0 2px 0 #ba281e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1c8c7!important;background:#d92e23!important;border-color:#ba281e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ba281e!important;box-shadow:0 2px 0 #ba281e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ba281e!important;box-shadow:inset 0 3px 0 #ba281e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#363b3f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-menu{color:#f1f2f3}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f1f2f3}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar #adminbarsearch:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43;box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#e14d43}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f1f2f3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43}
\ No newline at end of file
index c9a0b8e375d097212b6c2f4f39d0f6b42db857c5..03ecb6e64e835dd3be1383d8643abe82d88841a1 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #e14d43;
-  border-color: #d02c21;
+  border-color: #d02c21 #ba281e #ba281e;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #ba281e;
+  box-shadow: 0 1px 0 #ba281e;
+  text-shadow: 0 -1px 1px #ba281e, 1px 0 1px #ba281e, 0 1px 1px #ba281e, -1px 0 1px #ba281e;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #dd382d;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #e35950;
   border-color: #ba281e;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #e8776f;
-  box-shadow: inset 0 1px 0 #e8776f;
+  -webkit-box-shadow: 0 1px 0 #ba281e;
+  box-shadow: 0 1px 0 #ba281e;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #e8776f, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #d02c21, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #d02c21, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #d02c21;
   border-color: #ba281e;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #ba281e;
+  box-shadow: inset 0 2px 0 #ba281e;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #d1c8c7 !important;
   background: #d92e23 !important;
   border-color: #ba281e !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #ba281e !important;
+  box-shadow: 0 2px 0 #ba281e !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #ba281e !important;
+  box-shadow: inset 0 3px 0 #ba281e !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #363b3f;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #c3c4c5;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #e14d43;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #e14d43;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #e14d43;
-  border-color: #d02c21;
-  -webkit-box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #ec8b85, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #f1f2f3;
index 23dac64c298c8c53510af26b11f7f31d93b8a28f..c91d200a6d0609399eb88a60245b5b5d31adc5e0 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#e14d43}input[type=radio]:checked:before{background:#e14d43}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e14d43;border-color:#d02c21;color:#fff;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#dd382d;border-color:#ba281e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8776f;box-shadow:inset 0 1px 0 #e8776f}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e8776f,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e8776f,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1c8c7!important;background:#d92e23!important;border-color:#ba281e!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#363b3f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#26292c}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-button div:after,#collapse-menu{color:#f1f2f3}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43;box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#e14d43;border-color:#d02c21;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#e14d43}input[type=radio]:checked:before{background:#e14d43}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#e14d43;border-color:#d02c21 #ba281e #ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e;text-shadow:0 -1px 1px #ba281e,1px 0 1px #ba281e,0 1px 1px #ba281e,-1px 0 1px #ba281e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#e35950;border-color:#ba281e;color:#fff;-webkit-box-shadow:0 1px 0 #ba281e;box-shadow:0 1px 0 #ba281e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #d02c21,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#d02c21;border-color:#ba281e;-webkit-box-shadow:inset 0 2px 0 #ba281e;box-shadow:inset 0 2px 0 #ba281e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1c8c7!important;background:#d92e23!important;border-color:#ba281e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ba281e!important;box-shadow:0 2px 0 #ba281e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ba281e!important;box-shadow:inset 0 3px 0 #ba281e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#363b3f}.wp-core-ui .wp-ui-text-primary{color:#363b3f}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#e14d43}.wp-core-ui .wp-ui-text-highlight{color:#e14d43}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#69a8bb}.wp-core-ui .wp-ui-text-notification{color:#69a8bb}.wp-core-ui .wp-ui-text-icon{color:#f1f2f3}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#363b3f}.view-switch a.current:before{color:#363b3f}.view-switch a:hover:before{color:#69a8bb}#adminmenu,#adminmenuback,#adminmenuwrap{background:#363b3f}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f1f2f3}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#e14d43}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#26292c}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#26292c}#adminmenu .wp-submenu .wp-submenu-head{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#c3c4c5}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#e14d43}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#e14d43}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#e14d43}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#69a8bb}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#26292c}#collapse-menu{color:#f1f2f3}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f1f2f3}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#363b3f}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f1f2f3}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#e14d43;background:#26292c}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#e14d43}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#26292c}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#4c4c4d}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#c3c4c5}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f1f2f3}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#e14d43}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#e14d43}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f1f2f3}#wpadminbar #adminbarsearch:before{color:#f1f2f3}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#464d52}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#464d52;background-color:#464d52}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#e14d43}#wpadminbar #wp-admin-bar-user-info .username{color:#c3c4c5}.wp-pointer .wp-pointer-content h3{background-color:#e14d43;border-color:#dd382d}.wp-pointer .wp-pointer-content h3:before{color:#e14d43}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#e14d43}.media-item .bar,.media-progress-bar div{background-color:#e14d43}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #e14d43}.attachment.details .check{background-color:#e14d43;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43;box-shadow:0 0 0 1px #fff,0 0 0 2px #e14d43}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43;box-shadow:0 0 0 1px #fff,0 0 0 3px #e14d43}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#e14d43}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#e14d43}.theme-filter.current,.theme-section.current{border-bottom-color:#363b3f}body.more-filters-opened .more-filters{color:#fff;background-color:#363b3f}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#e14d43;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f1f2f3}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#e14d43}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#26292c}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f1f2f3}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#e14d43}
\ No newline at end of file
index cd056da49460f9549bec7fc784f4a890679a879f..d791028d2ed412d0d2120c258426485e7a5d311d 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #9ebaa0;
-  border-color: #80a583;
+  border-color: #80a583 #719a74 #719a74;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #719a74;
+  box-shadow: 0 1px 0 #719a74;
+  text-shadow: 0 -1px 1px #719a74, -1px 0 1px #719a74, 0 1px 1px #719a74, 1px 0 1px #719a74;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #8faf91;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #a7c0a9;
   border-color: #719a74;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #bccfbd;
-  box-shadow: inset 0 1px 0 #bccfbd;
+  -webkit-box-shadow: 0 1px 0 #719a74;
+  box-shadow: 0 1px 0 #719a74;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #bccfbd, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #bccfbd, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #80a583, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #80a583, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #80a583;
   border-color: #719a74;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #719a74;
+  box-shadow: inset 0 2px 0 #719a74;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #c7d1c8 !important;
   background: #86a989 !important;
   border-color: #719a74 !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #719a74 !important;
+  box-shadow: 0 2px 0 #719a74 !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #719a74 !important;
+  box-shadow: inset 0 3px 0 #719a74 !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #738e96;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #d5dde0;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #9ebaa0;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #9ebaa0;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #9ebaa0;
-  border-color: #80a583;
-  -webkit-box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #f2fcff;
index 223f6a64db53db03ace073c4b625b34f9d232ff6..28aaaee2381ff4e7ca6c0195e7ae6c3869a673da 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#738e96}input[type=radio]:checked:before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#80a583;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#8faf91;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd;box-shadow:inset 0 1px 0 #bccfbd}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #bccfbd,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7d1c8!important;background:#86a989!important;border-color:#719a74!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#627c83}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-button div:after,#collapse-menu{color:#f2fcff}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f2fcff}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#9ebaa0;border-color:#80a583;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#738e96}input[type=radio]:checked:before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#80a583 #719a74 #719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74;text-shadow:0 -1px 1px #719a74,-1px 0 1px #719a74,0 1px 1px #719a74,1px 0 1px #719a74}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;-webkit-box-shadow:inset 0 2px 0 #719a74;box-shadow:inset 0 2px 0 #719a74}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7d1c8!important;background:#86a989!important;border-color:#719a74!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #719a74!important;box-shadow:0 2px 0 #719a74!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #719a74!important;box-shadow:inset 0 3px 0 #719a74!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-menu{color:#f2fcff}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f2fcff}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#9ebaa0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0}
\ No newline at end of file
index 0ab239dfdd0d05eb121636c2b6be13514d526ecf..30cf9ee2d382c1ddfd938885db03c80de0f8a1a8 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #9ebaa0;
-  border-color: #80a583;
+  border-color: #80a583 #719a74 #719a74;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #719a74;
+  box-shadow: 0 1px 0 #719a74;
+  text-shadow: 0 -1px 1px #719a74, 1px 0 1px #719a74, 0 1px 1px #719a74, -1px 0 1px #719a74;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #8faf91;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #a7c0a9;
   border-color: #719a74;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #bccfbd;
-  box-shadow: inset 0 1px 0 #bccfbd;
+  -webkit-box-shadow: 0 1px 0 #719a74;
+  box-shadow: 0 1px 0 #719a74;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #bccfbd, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #bccfbd, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #80a583, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #80a583, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #80a583;
   border-color: #719a74;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #719a74;
+  box-shadow: inset 0 2px 0 #719a74;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #c7d1c8 !important;
   background: #86a989 !important;
   border-color: #719a74 !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #719a74 !important;
+  box-shadow: 0 2px 0 #719a74 !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #719a74 !important;
+  box-shadow: inset 0 3px 0 #719a74 !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #738e96;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #d5dde0;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #9ebaa0;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #9ebaa0;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #9ebaa0;
-  border-color: #80a583;
-  -webkit-box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #cbdacc, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #f2fcff;
index c3d5eec01c951527e43ca1aab3a63db474fbe750..a280725052dd782acc1006f70a6c0c39316ebbf2 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#738e96}input[type=radio]:checked:before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#80a583;color:#fff;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#8faf91;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 1px 0 #bccfbd;box-shadow:inset 0 1px 0 #bccfbd}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #bccfbd,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #bccfbd,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7d1c8!important;background:#86a989!important;border-color:#719a74!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#627c83}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-button div:after,#collapse-menu{color:#f2fcff}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f2fcff}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#9ebaa0;border-color:#80a583;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#738e96}input[type=radio]:checked:before{background:#738e96}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#9ebaa0;border-color:#80a583 #719a74 #719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74;text-shadow:0 -1px 1px #719a74,1px 0 1px #719a74,0 1px 1px #719a74,-1px 0 1px #719a74}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#a7c0a9;border-color:#719a74;color:#fff;-webkit-box-shadow:0 1px 0 #719a74;box-shadow:0 1px 0 #719a74}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #80a583,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#80a583;border-color:#719a74;-webkit-box-shadow:inset 0 2px 0 #719a74;box-shadow:inset 0 2px 0 #719a74}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#c7d1c8!important;background:#86a989!important;border-color:#719a74!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #719a74!important;box-shadow:0 2px 0 #719a74!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #719a74!important;box-shadow:inset 0 3px 0 #719a74!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#738e96}.wp-core-ui .wp-ui-text-primary{color:#738e96}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#9ebaa0}.wp-core-ui .wp-ui-text-highlight{color:#9ebaa0}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#aa9d88}.wp-core-ui .wp-ui-text-notification{color:#aa9d88}.wp-core-ui .wp-ui-text-icon{color:#f2fcff}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#738e96}.view-switch a.current:before{color:#738e96}.view-switch a:hover:before{color:#aa9d88}#adminmenu,#adminmenuback,#adminmenuwrap{background:#738e96}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f2fcff}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#9ebaa0}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#627c83}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#627c83}#adminmenu .wp-submenu .wp-submenu-head{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#d5dde0}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#9ebaa0}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#9ebaa0}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#9ebaa0}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#aa9d88}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#627c83}#collapse-menu{color:#f2fcff}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f2fcff}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#738e96}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f2fcff}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#9ebaa0;background:#627c83}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#9ebaa0}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#627c83}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#8f9a9e}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#d5dde0}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f2fcff}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#9ebaa0}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#9ebaa0}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f2fcff}#wpadminbar #adminbarsearch:before{color:#f2fcff}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#879ea5}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#879ea5;background-color:#879ea5}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#9ebaa0}#wpadminbar #wp-admin-bar-user-info .username{color:#d5dde0}.wp-pointer .wp-pointer-content h3{background-color:#9ebaa0;border-color:#8faf91}.wp-pointer .wp-pointer-content h3:before{color:#9ebaa0}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#9ebaa0}.media-item .bar,.media-progress-bar div{background-color:#9ebaa0}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #9ebaa0}.attachment.details .check{background-color:#9ebaa0;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 2px #9ebaa0}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0;box-shadow:0 0 0 1px #fff,0 0 0 3px #9ebaa0}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#9ebaa0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#9ebaa0}.theme-filter.current,.theme-section.current{border-bottom-color:#738e96}body.more-filters-opened .more-filters{color:#fff;background-color:#738e96}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#9ebaa0;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f2fcff}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#9ebaa0}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#627c83}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f2fcff}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#9ebaa0}
\ No newline at end of file
index cd774e3d83fcd18362b9dc845e87f568e9755eb8..64855f598c8e7d804f93f08ccc10fe96055cf5e7 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #dd823b;
-  border-color: #c36922;
+  border-color: #c36922 #ad5d1e #ad5d1e;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #ad5d1e;
+  box-shadow: 0 1px 0 #ad5d1e;
+  text-shadow: 0 -1px 1px #ad5d1e, -1px 0 1px #ad5d1e, 0 1px 1px #ad5d1e, 1px 0 1px #ad5d1e;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #d97426;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #df8a48;
   border-color: #ad5d1e;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #e59e66;
-  box-shadow: inset 0 1px 0 #e59e66;
+  -webkit-box-shadow: 0 1px 0 #ad5d1e;
+  box-shadow: 0 1px 0 #ad5d1e;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #c36922, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #c36922, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #c36922;
   border-color: #ad5d1e;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #ad5d1e;
+  box-shadow: inset 0 2px 0 #ad5d1e;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #d1cbc7 !important;
   background: #cc6d23 !important;
   border-color: #ad5d1e !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #ad5d1e !important;
+  box-shadow: 0 2px 0 #ad5d1e !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #ad5d1e !important;
+  box-shadow: inset 0 3px 0 #ad5d1e !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #cf4944;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #f1c8c7;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #f7e3d3;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #f7e3d3;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #dd823b;
-  border-color: #c36922;
-  -webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #f3f1f1;
index ab5d2553b0128674871926ea689b91676b9f6f73..3096c919dc7a28fae109e2e650e48b308dce84f8 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#dd823b}input[type=radio]:checked:before{background:#dd823b}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#dd823b;border-color:#c36922;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#d97426;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59e66;box-shadow:inset 0 1px 0 #e59e66}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e59e66,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e59e66,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cbc7!important;background:#cc6d23!important;border-color:#ad5d1e!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#cf4944}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#be3631}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-button div:after,#collapse-menu{color:#f3f1f1}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b;box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#dd823b;border-color:#c36922;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#dd823b}input[type=radio]:checked:before{background:#dd823b}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#dd823b;border-color:#c36922 #ad5d1e #ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e;text-shadow:0 -1px 1px #ad5d1e,-1px 0 1px #ad5d1e,0 1px 1px #ad5d1e,1px 0 1px #ad5d1e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;-webkit-box-shadow:inset 0 2px 0 #ad5d1e;box-shadow:inset 0 2px 0 #ad5d1e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cbc7!important;background:#cc6d23!important;border-color:#ad5d1e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ad5d1e!important;box-shadow:0 2px 0 #ad5d1e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ad5d1e!important;box-shadow:inset 0 3px 0 #ad5d1e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#cf4944}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-left-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-menu{color:#f3f1f1}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f3f1f1}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b;box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#dd823b}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b}
\ No newline at end of file
index 6828a960211baa685c4a6166299421603af2283a..ad9661ef8b3d01eb674079efb5c1624e7e8683c0 100644 (file)
@@ -11,9 +11,7 @@ a {
   color: #0073aa;
 }
 
-a:hover,
-a:active,
-a:focus {
+a:hover, a:active, a:focus {
   color: #0096dd;
 }
 
@@ -41,44 +39,50 @@ input[type=radio]:checked:before {
 /* Core UI */
 .wp-core-ui .button-primary {
   background: #dd823b;
-  border-color: #c36922;
+  border-color: #c36922 #ad5d1e #ad5d1e;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
+  -webkit-box-shadow: 0 1px 0 #ad5d1e;
+  box-shadow: 0 1px 0 #ad5d1e;
+  text-shadow: 0 -1px 1px #ad5d1e, 1px 0 1px #ad5d1e, 0 1px 1px #ad5d1e, -1px 0 1px #ad5d1e;
 }
 
-.wp-core-ui .button-primary:hover,
-.wp-core-ui .button-primary:focus {
-  background: #d97426;
+.wp-core-ui .button-primary:hover, .wp-core-ui .button-primary:focus {
+  background: #df8a48;
   border-color: #ad5d1e;
   color: white;
-  -webkit-box-shadow: inset 0 1px 0 #e59e66;
-  box-shadow: inset 0 1px 0 #e59e66;
+  -webkit-box-shadow: 0 1px 0 #ad5d1e;
+  box-shadow: 0 1px 0 #ad5d1e;
 }
 
 .wp-core-ui .button-primary:focus {
-  -webkit-box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 1px 0 #e59e66, 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 1px 0 #c36922, 0 0 2px 1px #33b3db;
+  box-shadow: inset 0 1px 0 #c36922, 0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary:active {
   background: #c36922;
   border-color: #ad5d1e;
-  color: white;
-  -webkit-box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
-  box-shadow: inset 0 2px 5px -3px rgba(0, 0, 0, 0.5), 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, 0.8);
+  -webkit-box-shadow: inset 0 2px 0 #ad5d1e;
+  box-shadow: inset 0 2px 0 #ad5d1e;
 }
 
-.wp-core-ui .button-primary[disabled],
-.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary.button-primary-disabled,
-.wp-core-ui .button-primary.disabled {
+.wp-core-ui .button-primary[disabled], .wp-core-ui .button-primary:disabled, .wp-core-ui .button-primary.button-primary-disabled, .wp-core-ui .button-primary.disabled {
   color: #d1cbc7 !important;
   background: #cc6d23 !important;
   border-color: #ad5d1e !important;
   text-shadow: none !important;
 }
 
+.wp-core-ui .button-primary.button-hero {
+  -webkit-box-shadow: 0 2px 0 #ad5d1e !important;
+  box-shadow: 0 2px 0 #ad5d1e !important;
+}
+
+.wp-core-ui .button-primary.button-hero:active {
+  -webkit-box-shadow: inset 0 3px 0 #ad5d1e !important;
+  box-shadow: inset 0 3px 0 #ad5d1e !important;
+}
+
 .wp-core-ui .wp-ui-primary {
   color: #fff;
   background-color: #cf4944;
@@ -111,7 +115,8 @@ input[type=radio]:checked:before {
 }
 
 /* List tables */
-.wrap .add-new-h2:hover, .wrap .page-title-action:hover,
+.wrap .add-new-h2:hover,
+.wrap .page-title-action:hover,
 .tablenav .tablenav-pages a:hover,
 .tablenav .tablenav-pages a:focus {
   color: #fff;
@@ -187,15 +192,15 @@ input[type=radio]:checked:before {
   color: #f1c8c7;
 }
 
-#adminmenu .wp-submenu a:focus,
-#adminmenu .wp-submenu a:hover,
+#adminmenu .wp-submenu a:focus, #adminmenu .wp-submenu a:hover,
 #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,
 .folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu a:hover,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus, #adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover {
   color: #f7e3d3;
 }
 
@@ -206,11 +211,11 @@ input[type=radio]:checked:before {
   color: #fff;
 }
 
-#adminmenu .wp-submenu li.current a:hover,
-#adminmenu .wp-submenu li.current a:focus,
+#adminmenu .wp-submenu li.current a:hover, #adminmenu .wp-submenu li.current a:focus,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:hover,
 #adminmenu a.wp-has-current-submenu:focus + .wp-submenu li.current a:focus,
-#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover, #adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,
+#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus {
   color: #f7e3d3;
 }
 
@@ -338,6 +343,7 @@ ul#adminmenu > li.current > a.current:after {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -354,6 +360,8 @@ ul#adminmenu > li.current > a.current:after {
 }
 
 #wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar,
 #wpadminbar .menupop .menupop > .ab-item:hover:before,
 #wpadminbar.mobile .quicklinks .ab-icon:before,
 #wpadminbar.mobile .quicklinks .ab-item:before {
@@ -506,16 +514,6 @@ body.more-filters-opened .more-filters:focus:before {
   color: #fff;
 }
 
-/* jQuery UI Slider */
-.wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
-.wp-slider .ui-slider-handle.focus {
-  background: #dd823b;
-  border-color: #c36922;
-  -webkit-box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
-  box-shadow: inset 0 1px 0 #e8ac7c, 0 1px 0 rgba(0, 0, 0, 0.15);
-}
-
 /* Responsive Component */
 div#wp-responsive-toggle a:before {
   color: #f3f1f1;
index 7f60455bcc947caeac71a24110527f5a9a7dc089..3243756e0e50ec1da7ff7f5964f435961cefaa06 100644 (file)
@@ -1 +1 @@
-html{background:#f1f1f1}a{color:#0073aa}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,a:active,a:focus,a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#dd823b}input[type=radio]:checked:before{background:#dd823b}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#dd823b;border-color:#c36922;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#d97426;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:inset 0 1px 0 #e59e66;box-shadow:inset 0 1px 0 #e59e66}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #e59e66,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 #e59e66,0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cbc7!important;background:#cc6d23!important;border-color:#ad5d1e!important;text-shadow:none!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#cf4944}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#be3631}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu .wp-submenu-head,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-button div:after,#collapse-menu{color:#f3f1f1}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after,#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar #adminbarsearch:before,#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after,.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b;box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected,body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before,div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#dd823b;border-color:#c36922;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b}
\ No newline at end of file
+html{background:#f1f1f1}a{color:#0073aa}a:active,a:focus,a:hover{color:#0096dd}#media-upload a.del-link:hover,.subsubsub a.current:hover,.subsubsub a:hover,div.dashboard-widget-submit input:hover{color:#0096dd}input[type=checkbox]:checked:before{color:#dd823b}input[type=radio]:checked:before{background:#dd823b}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#0096dd}.wp-core-ui .button-primary{background:#dd823b;border-color:#c36922 #ad5d1e #ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e;text-shadow:0 -1px 1px #ad5d1e,1px 0 1px #ad5d1e,0 1px 1px #ad5d1e,-1px 0 1px #ad5d1e}.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#df8a48;border-color:#ad5d1e;color:#fff;-webkit-box-shadow:0 1px 0 #ad5d1e;box-shadow:0 1px 0 #ad5d1e}.wp-core-ui .button-primary:focus{-webkit-box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db;box-shadow:inset 0 1px 0 #c36922,0 0 2px 1px #33b3db}.wp-core-ui .button-primary:active{background:#c36922;border-color:#ad5d1e;-webkit-box-shadow:inset 0 2px 0 #ad5d1e;box-shadow:inset 0 2px 0 #ad5d1e}.wp-core-ui .button-primary.button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#d1cbc7!important;background:#cc6d23!important;border-color:#ad5d1e!important;text-shadow:none!important}.wp-core-ui .button-primary.button-hero{-webkit-box-shadow:0 2px 0 #ad5d1e!important;box-shadow:0 2px 0 #ad5d1e!important}.wp-core-ui .button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #ad5d1e!important;box-shadow:inset 0 3px 0 #ad5d1e!important}.wp-core-ui .wp-ui-primary{color:#fff;background-color:#cf4944}.wp-core-ui .wp-ui-text-primary{color:#cf4944}.wp-core-ui .wp-ui-highlight{color:#fff;background-color:#dd823b}.wp-core-ui .wp-ui-text-highlight{color:#dd823b}.wp-core-ui .wp-ui-notification{color:#fff;background-color:#ccaf0b}.wp-core-ui .wp-ui-text-notification{color:#ccaf0b}.wp-core-ui .wp-ui-text-icon{color:#f3f1f1}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover,.wrap .add-new-h2:hover,.wrap .page-title-action:hover{color:#fff;background-color:#cf4944}.view-switch a.current:before{color:#cf4944}.view-switch a:hover:before{color:#ccaf0b}#adminmenu,#adminmenuback,#adminmenuwrap{background:#cf4944}#adminmenu a{color:#fff}#adminmenu div.wp-menu-image:before{color:#f3f1f1}#adminmenu a:hover,#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{color:#fff;background-color:#dd823b}#adminmenu li.menu-top:hover div.wp-menu-image:before,#adminmenu li.opensub>a.menu-top div.wp-menu-image:before{color:#fff}.about-wrap h2 .nav-tab-active,.nav-tab-active,.nav-tab-active:hover{background-color:#f1f1f1;border-bottom-color:#f1f1f1}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{background:#be3631}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#be3631}#adminmenu .wp-submenu .wp-submenu-head{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a,#adminmenu .wp-submenu a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a,.folded #adminmenu .wp-has-current-submenu .wp-submenu a{color:#f1c8c7}#adminmenu .wp-has-current-submenu .wp-submenu a:focus,#adminmenu .wp-has-current-submenu .wp-submenu a:hover,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu a:hover,#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu a:hover,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:focus,.folded #adminmenu .wp-has-current-submenu .wp-submenu a:hover{color:#f7e3d3}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current a,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:focus,#adminmenu .wp-has-current-submenu.opensub .wp-submenu li.current a:hover,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:focus,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a:hover{color:#f7e3d3}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{border-right-color:#f1f1f1}#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top{color:#fff;background:#dd823b}#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before,.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#fff}#adminmenu .awaiting-mod,#adminmenu .update-plugins{color:#fff;background:#ccaf0b}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod,#adminmenu li.menu-top:hover>a .update-plugins,#adminmenu li:hover a .awaiting-mod{color:#fff;background:#be3631}#collapse-menu{color:#f3f1f1}#collapse-menu:hover{color:#fff}#collapse-button div:after{color:#f3f1f1}#collapse-menu:hover #collapse-button div:after{color:#fff}#wpadminbar{color:#fff;background:#cf4944}#wpadminbar .ab-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#fff}#wpadminbar .ab-icon,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:after,#wpadminbar .ab-item:before{color:#f3f1f1}#wpadminbar .ab-top-menu>li.menupop.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar.nojs .ab-top-menu>li.menupop:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{color:#f7e3d3;background:#be3631}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li.hover span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label{color:#f7e3d3}#wpadminbar:not(.mobile) li:hover #adminbarsearch:before,#wpadminbar:not(.mobile) li:hover .ab-icon:before,#wpadminbar:not(.mobile) li:hover .ab-item:after,#wpadminbar:not(.mobile) li:hover .ab-item:before{color:#fff}#wpadminbar .menupop .ab-sub-wrapper{background:#be3631}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#cf6b67}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#f1c8c7}#wpadminbar .menupop .menupop>.ab-item:before,#wpadminbar .quicklinks li .blavatar{color:#f3f1f1}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#f7e3d3}#wpadminbar .menupop .menupop>.ab-item:hover:before,#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar,#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#f7e3d3}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#f3f1f1}#wpadminbar #adminbarsearch:before{color:#f3f1f1}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{color:#fff;background:#d66560}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#fff;opacity:.7}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#fff;opacity:.7}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{border-color:#d66560;background-color:#d66560}#wpadminbar #wp-admin-bar-user-info .display-name{color:#fff}#wpadminbar #wp-admin-bar-user-info a:hover .display-name{color:#f7e3d3}#wpadminbar #wp-admin-bar-user-info .username{color:#f1c8c7}.wp-pointer .wp-pointer-content h3{background-color:#dd823b;border-color:#d97426}.wp-pointer .wp-pointer-content h3:before{color:#dd823b}.wp-pointer.wp-pointer-top .wp-pointer-arrow,.wp-pointer.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow,.wp-pointer.wp-pointer-undefined .wp-pointer-arrow-inner{border-bottom-color:#dd823b}.media-item .bar,.media-progress-bar div{background-color:#dd823b}.details.attachment{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #dd823b}.attachment.details .check{background-color:#dd823b;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b;box-shadow:0 0 0 1px #fff,0 0 0 2px #dd823b}.media-selection .attachment.selection.details .thumbnail{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b;box-shadow:0 0 0 1px #fff,0 0 0 3px #dd823b}.theme-browser .theme.active .theme-name,.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{background:#dd823b}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{color:#dd823b}.theme-filter.current,.theme-section.current{border-bottom-color:#cf4944}body.more-filters-opened .more-filters{color:#fff;background-color:#cf4944}#customize-theme-controls .widget-area-select .selected,.widgets-chooser li.widgets-chooser-selected{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:before{color:#fff}body.more-filters-opened .more-filters:focus,body.more-filters-opened .more-filters:hover{background-color:#dd823b;color:#fff}body.more-filters-opened .more-filters:focus:before,body.more-filters-opened .more-filters:hover:before{color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{color:#fff}div#wp-responsive-toggle a:before{color:#f3f1f1}.wp-responsive-open div#wp-responsive-toggle a{border-color:transparent;background:#dd823b}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#be3631}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#f3f1f1}.mce-container.mce-menu .mce-menu-item-normal.mce-active,.mce-container.mce-menu .mce-menu-item-preview.mce-active,.mce-container.mce-menu .mce-menu-item.mce-selected,.mce-container.mce-menu .mce-menu-item:focus,.mce-container.mce-menu .mce-menu-item:hover{background:#dd823b}
\ No newline at end of file
index b0098751068e90b00dd89031675ef7ab710c5524..8d5302d69d354e06bace60e0195e6f622cdd28b2 100644 (file)
        font-weight: 600;
        padding: 15px 23px 14px;
        background: #f1f1f1;
-       color: #21759b;
+       color: #0073aa;
        z-index: 100000;
        line-height: normal;
        -webkit-box-shadow: 0 0 2px 2px rgba(0,0,0,.6);
@@ -295,7 +295,7 @@ blockquote:before,
 blockquote:after,
 q:before,
 q:after {
-       content: '';
+       content: "";
        content: none;
 }
 
@@ -325,24 +325,20 @@ h6 {
 }
 
 h1 {
+       color: #23282d;
        font-size: 2em;
        margin: .67em 0;
 }
 
-.wrap > h1,
-h2 {
-       color: #23282d;
-       font-size: 1.5em;
-       margin: .83em 0;
-       font-weight: 400;
-}
-
+h2,
 h3 {
        color: #23282d;
        font-size: 1.3em;
        margin: 1em 0;
 }
 
+.update-php h2,
+.update-core-php h2,
 h4 {
        font-size: 1em;
        margin: 1.33em 0;
@@ -539,7 +535,8 @@ code {
 
 .widefat thead td.check-column,
 .widefat tfoot td.check-column {
-       padding-top: 10px;
+       padding-top: 4px;
+       vertical-align: middle;
 }
 
 .update-php div.updated,
@@ -567,25 +564,23 @@ code {
        margin: 10px 2px 0 20px;
 }
 
-.wrap h1,
-.wrap h2,
-.subtitle {
-       font-weight: normal;
-       margin: 0;
-}
-
-.wrap h1,
-.wrap h2 {
+.wrap > h2:first-child, /* Back-compat for pre-4.4 */
+.wrap [class$="icon32"] + h2, /* Back-compat for pre-4.4 */
+.postbox .inside h2, /* Back-compat for pre-4.4 */
+.wrap h1 {
        font-size: 23px;
        font-weight: 400;
+       margin: 0;
        padding: 9px 0 4px 15px;
        line-height: 29px;
 }
 
 .subtitle {
+       margin: 0;
+       padding-right: 25px;
        color: #777;
        font-size: 14px;
-       padding-right: 25px;
+       font-weight: normal;
 }
 
 .wrap .add-new-h2, /* deprecated */
@@ -755,9 +750,9 @@ img.emoji {
 .notice-dismiss:before {
        background: none;
        color: #b4b9be;
-       content: '\f153';
+       content: "\f153";
        display: block;
-       font: normal 16px/20px 'dashicons';
+       font: normal 16px/20px dashicons;
        speak: none;
        height: 20px;
        text-align: center;
@@ -884,6 +879,10 @@ abbr.required,
        padding: 6px 10px 8px;
 }
 
+.misc-pub-filename {
+       word-wrap: break-word;
+}
+
 #minor-publishing-actions {
        padding: 10px 10px 0 10px;
        text-align: left;
@@ -1067,7 +1066,7 @@ th.action-links {
        color: #777;
        -webkit-transition: color .1s ease-in 0;
        transition: color .1s ease-in 0;
-       font-family: "dashicons";
+       font-family: dashicons;
        font-size: 16px;
        line-height: 1;
        text-align: center;
@@ -1086,6 +1085,20 @@ th.action-links {
        color: #fff;
 }
 
+.wp-filter .favorites-form {
+       display: none;
+       margin: 0 -20px;
+       padding: 20px;
+       border-top: 1px solid #eee;
+       background: #fafafa;
+       overflow: hidden;
+       width: 100%;
+}
+
+.show-favorites-form .wp-filter .favorites-form {
+       display: block;
+}
+
 .filter-drawer {
        display: none;
        margin: 0 -20px;
@@ -1125,9 +1138,10 @@ th.action-links {
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
+       position: relative;
        float: right;
        margin: 0 0 0 1%;
-       padding: 10px;
+       padding: 20px 10px 10px;
        width: 24%;
        background: #fff;
        border: 1px solid #e5e5e5;
@@ -1135,24 +1149,27 @@ th.action-links {
        box-shadow: 0 1px 1px rgba(0,0,0,0.04);
 }
 
-.filter-group h4 {
-       position: relative;
+.filter-group legend {
+       position: absolute;
+       top: 10px;
+       display: block;
        margin: 0;
+       padding: 0;
+       font-size: 1em;
+       font-weight: 600;
 }
 
-.filter-drawer ol {
-       margin: 20px 0 0;
+.filter-drawer .filter-group-feature {
+       margin: 28px 0 0;
        list-style-type: none;
        font-size: 12px;
 }
 
-.filter-drawer li {
+.filter-drawer .filter-group-feature input,
+.filter-drawer .filter-group-feature label {
        display: inline-block;
-       vertical-align: top;
-       margin: 5px 0;
-       padding-left: 25px;
-       width: 160px;
-       list-style-type: none;
+       margin: 7px 0 7px 4px;
+       line-height: 16px;
 }
 
 .filter-drawer .buttons {
@@ -1297,6 +1314,7 @@ div.error {
 }
 
 .notice p,
+.notice-title,
 div.updated p,
 div.error p,
 .form-table td .notice p {
@@ -1304,6 +1322,30 @@ div.error p,
        padding: 2px;
 }
 
+.error a {
+       text-decoration: underline;
+}
+
+.updated a {
+       padding-bottom: 2px;
+       text-decoration: none;
+}
+
+.notice-alt {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+.notice-large {
+       padding: 10px 20px;
+}
+
+.notice-title {
+       display: inline-block;
+       color: #23282d;
+       font-size: 18px;
+}
+
 .wp-core-ui .notice.is-dismissible {
        padding-left: 38px;
        position: relative;
@@ -1339,20 +1381,36 @@ div.error p,
 
 .notice-success,
 div.updated {
-       border-color: #7ad03a;
+       border-right-color: #46b450;
+}
+
+.notice-success.notice-alt {
+       background-color: #ecf7ed;
 }
 
 .notice-warning {
-       border-color: #ffba00;
+       border-right-color: #ffb900;
+}
+
+.notice-warning.notice-alt {
+       background-color: #fff8e5;
 }
 
 .notice-error,
 div.error {
-       border-color: #dd3d36;
+       border-right-color: #dc3232;
+}
+
+.notice-error.notice-alt {
+       background-color: #fbeaea;
 }
 
 .notice-info {
-       border-color: #00a0d2;
+       border-right-color: #00a0d2;
+}
+
+.notice-info.notice-alt {
+       background-color: #e5f5fa;
 }
 
 .wrap .notice,
@@ -1491,10 +1549,18 @@ form.upgrade .hint {
        color: #32373c;
 }
 
+#screen-meta-links .show-settings:active {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       -webkit-transform: none;
+       -ms-transform: none;
+       transform: none;
+}
+
 #screen-meta-links .show-settings:after {
        left: 0;
-       content: '\f140';
-       font: normal 20px/1 'dashicons';
+       content: "\f140";
+       font: normal 20px/1 dashicons;
        speak: none;
        display: inline-block;
        padding: 0 0 0 5px;
@@ -1508,7 +1574,7 @@ form.upgrade .hint {
 }
 
 #screen-meta-links .screen-meta-active:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 /* end screen options and help tabs */
@@ -1526,10 +1592,17 @@ form.upgrade .hint {
        background-position: bottom left;
 }
 
-#screen-options-wrap h5,
+#screen-options-wrap h5, /* Back-compat for old plugins */
+#screen-options-wrap legend,
 #contextual-help-wrap h5 {
-       margin: 8px 0;
-       font-size: 13px;
+       margin: 0;
+       padding: 8px 0;
+       font-size: 13px;
+       font-weight: 600;
+}
+
+.ie8 #screen-options-wrap legend {
+       color: inherit;
 }
 
 .metabox-prefs label {
@@ -1538,27 +1611,30 @@ form.upgrade .hint {
        line-height: 30px;
 }
 
-.metabox-prefs label input[type=checkbox] {
-       margin-top: -4px;
+#number-of-columns {
+       display: inline-block;
+       vertical-align: middle;
+       line-height: 30px;
+}
+
+.metabox-prefs input[type=checkbox] {
+       margin-top: 0;
        margin-left: 6px;
 }
 
-.metabox-prefs label input {
-       margin: 0 2px 0 5px;
+.metabox-prefs label input,
+.metabox-prefs label input[type=checkbox] {
+       margin: -4px 0 0 5px;
 }
 
 .metabox-prefs .columns-prefs label input {
-       margin: 0 2px;
+       margin: -1px 0 0 2px;
 }
 
 .metabox-prefs label a {
        display: none;
 }
 
-.metabox-prefs .screen-options {
-       padding-top: 10px;
-}
-
 .metabox-prefs .screen-options input,
 .metabox-prefs .screen-options label {
        margin-top: 0;
@@ -1575,6 +1651,15 @@ form.upgrade .hint {
        padding-left: 0;
 }
 
+.screen-options + .screen-options {
+    margin-top: 10px;
+}
+
+.metabox-prefs .submit {
+       margin-top: 1em;
+       padding: 0;
+}
+
 /*------------------------------------------------------------------------------
   6.2 - Help Menu
 ------------------------------------------------------------------------------*/
@@ -1787,13 +1872,15 @@ html.wp-toolbar {
 }
 
 .postbox .handlediv {
+       display: none;
        float: left;
-       width: 27px;
-       height: 30px;
+       width: 36px;
+       height: 36px;
+       padding: 0;
 }
 
 .js .postbox .handlediv {
-       cursor: pointer;
+       display: block;
 }
 
 .sortable-placeholder {
@@ -1854,7 +1941,7 @@ html.wp-toolbar {
 }
 
 .columns-prefs label {
-       padding: 0 5px;
+       padding: 0 0 0 10px;
 }
 
 /* @todo: what is this doing here */
@@ -1910,51 +1997,69 @@ html.wp-toolbar {
 ------------------------------------------------------------------------------*/
 
 .nav-tab {
+       float: right;
        border: 1px solid #ccc;
        border-bottom: none;
+       margin-right: 0.5em; /* half the font size so set the font size properly */
+       padding: 5px 10px;
+       font-size: 14px;
+       line-height: 24px;
+       font-weight: 600;
        background: #e4e4e4;
        color: #555;
+       text-decoration: none;
+       white-space: nowrap;
+}
+
+h3 .nav-tab, /* Back-compat for pre-4.4 */
+.nav-tab-small .nav-tab {
+       padding: 5px 14px;
        font-size: 12px;
        line-height: 16px;
-       display: inline-block;
-       padding: 4px 14px 6px;
-       text-decoration: none;
-       margin: -4px 0 -1px 4px;
 }
 
-.nav-tab:hover {
+.nav-tab:hover,
+.nav-tab:focus {
        background-color: #fff;
        color: #464646;
 }
 
+.nav-tab-active,
+.nav-tab:focus:active {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
 .nav-tab-active {
+       margin-bottom: -1px;
        color: #464646;
 }
 
 .nav-tab-active,
-.nav-tab-active:hover {
+.nav-tab-active:hover,
+.nav-tab-active:focus,
+.nav-tab-active:focus:active {
        border-bottom: 1px solid #f1f1f1;
        background: #f1f1f1;
        color: #000;
 }
 
-h1.nav-tab-wrapper,
-h2.nav-tab-wrapper,
+h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */
+.wrap h2.nav-tab-wrapper, /* higher specificity to override .wrap > h2:first-child */
 h3.nav-tab-wrapper {
        border-bottom: 1px solid #ccc;
-       padding-bottom: 0;
-       padding-right: 10px;
+       margin: 0;
+       padding: 9px 0 0 15px;
+       line-height: inherit;
 }
 
-h1 .nav-tab,
-h2 .nav-tab {
-       padding: 6px 10px;
-       font-weight: bold;
-       font-size: 15px;
-       line-height: 24px;
+/* contain floats */
+.nav-tab-wrapper:after {
+       content: "";
+       display: table;
+       clear: both;
 }
 
-
 /*------------------------------------------------------------------------------
   26.0 - Misc
 ------------------------------------------------------------------------------*/
@@ -1982,13 +2087,22 @@ h2 .nav-tab {
        margin-left: 190px;
 }
 
-.metabox-holder h3 {
+.metabox-holder .stuffbox > h3, /* Back-compat for pre-4.4 */
+.metabox-holder .postbox > h3, /* Back-compat for pre-4.4 */
+.metabox-holder h3.hndle, /* Back-compat for pre-4.4 */
+.metabox-holder h2.hndle {
        font-size: 14px;
        padding: 8px 12px;
        margin: 0;
        line-height: 1.4;
 }
 
+/* Back-compat for nav-menus screen */
+.nav-menus-php .metabox-holder h3 {
+       padding: 10px 14px 11px 10px;
+       line-height: 21px;
+}
+
 #templateside ul li a {
        text-decoration: none;
 }
@@ -2051,7 +2165,8 @@ body.iframe {
        width: auto;
 }
 
-#post-body #post-body-content #namediv h3 {
+#post-body #post-body-content #namediv h3, /* Back-compat for pre-4.4 */
+#post-body #post-body-content #namediv h2 {
        margin-top: 0;
 }
 
@@ -2063,7 +2178,8 @@ body.iframe {
        margin: 2px 9px 0 0;
 }
 
-#namediv h3 label {
+#namediv h3 label, /* Back-compat for pre-4.4 */
+#namediv h2 label {
        vertical-align: baseline;
 }
 
@@ -2152,7 +2268,7 @@ div.star-holder .star-rating {
        -webkit-font-smoothing: antialiased;
        font-size: 20px;
        line-height: 1;
-       font-family: 'dashicons';
+       font-family: dashicons;
        text-decoration: inherit;
        font-weight: normal;
        font-style: normal;
@@ -2164,11 +2280,11 @@ div.star-holder .star-rating {
 }
 
 .star-rating .star-full:before {
-       content:'\f155';
+       content: "\f155";
 }
 
 .star-rating .star-half:before {
-       content:'\f459';
+       content: "\f459";
 }
 
 .rtl .star-rating .star-half {
@@ -2178,7 +2294,7 @@ div.star-holder .star-rating {
 }
 
 .star-rating .star-empty:before {
-       content:'\f154';
+       content: "\f154";
 }
 
 div.action-links {
@@ -2341,7 +2457,7 @@ div.action-links {
        right: 0;
        margin-left: 250px; /* FYI box */
        padding: 10px 26px;
-       margin-bottom: -99930px; /* a bit less than the padding below to accommodate footer */
+       margin-bottom: -99939px; /* 60px less than the padding below to accommodate footer */
        padding-bottom: 99999px; /* equal height column trick */
 }
 
@@ -2350,13 +2466,12 @@ div.action-links {
 }
 
 #plugin-information .fyi {
-       display: block;
        float: left;
        position: relative;
        top: 0;
        left: 0;
        padding: 16px;
-       margin-bottom: -99930px; /* slightly less than the padding below to accommodate footer */
+       margin-bottom: -99939px; /* 60px less than the padding below to accommodate footer */
        padding-bottom: 99999px; /* equal height column trick */
        width: 217px;
        border-right: 1px solid #ddd;
@@ -2441,12 +2556,12 @@ div.action-links {
 }
 
 #plugin-information-footer {
-       padding: 15px 16px;
+       padding: 13px 16px;
        position: absolute;
        left: 0;
        bottom: 0;
        right: 0;
-       height: 28px;
+       height: 33px; /* 33+13+13+1=60 */
        border-top: 1px solid #ddd;
        background: #f3f3f3;
 }
@@ -2605,29 +2720,63 @@ div.action-links {
 }
 
 /* Thickbox for Plugin Install screen */
+body.about-php #TB_window,
 body.plugin-install-php #TB_window,
 body.import-php #TB_window,
 body.plugins-php #TB_window,
 body.update-core-php #TB_window,
 body.index-php #TB_window {
-       background: #fcfcfc url( ../images/spinner.gif ) no-repeat center;
+       background: #fcfcfc;
+}
+
+/* IE 8 needs a change in the pseudo element content */
+.ie8 body.about-php #TB_window:before,
+.ie8 body.plugin-install-php #TB_window:before,
+.ie8 body.import-php #TB_window:before,
+.ie8 body.plugins-php #TB_window:before,
+.ie8 body.update-core-php #TB_window:before,
+.ie8 body.index-php #TB_window:before {
+       content: " ";
+       background: none;
+}
+
+body.about-php #TB_window.thickbox-loading:before,
+body.plugin-install-php #TB_window.thickbox-loading:before,
+body.import-php #TB_window.thickbox-loading:before,
+body.plugins-php #TB_window.thickbox-loading:before,
+body.update-core-php #TB_window.thickbox-loading:before,
+body.index-php #TB_window.thickbox-loading:before {
+       content: "";
+       display: block;
+       width: 20px;
+       height: 20px;
+       position: absolute;
+       right: 50%;
+       top: 50%;
+       z-index: -1;
+       margin: -10px -10px 0 0;
+       background: #fcfcfc url(../images/spinner.gif) no-repeat center;
+       -webkit-background-size: 20px 20px;
+       background-size: 20px 20px;
+       -webkit-transform: translateZ(0);
+       transform: translateZ(0);
 }
 
 @media print,
        (-webkit-min-device-pixel-ratio: 1.25),
        (min-resolution: 120dpi) {
 
-       body.plugin-install-php #TB_window,
-       body.import-php #TB_window,
-       body.plugins-php #TB_window,
-       body.update-core-php #TB_window,
-       body.index-php #TB_window {
-               background: #fcfcfc url( ../images/spinner-2x.gif ) no-repeat center;
-               -webkit-background-size: 20px 20px;
-               background-size: 20px 20px;
+       body.about-php #TB_window.thickbox-loading:before,
+       body.plugin-install-php #TB_window.thickbox-loading:before,
+       body.import-php #TB_window.thickbox-loading:before,
+       body.plugins-php #TB_window.thickbox-loading:before,
+       body.update-core-php #TB_window.thickbox-loading:before,
+       body.index-php #TB_window.thickbox-loading:before {
+               background-image: url(../images/spinner-2x.gif);
        }
 }
 
+body.about-php #TB_title,
 body.plugin-install-php #TB_title,
 body.import-php #TB_title,
 body.plugins-php #TB_title,
@@ -2637,6 +2786,7 @@ body.index-php #TB_title {
        height: 1px;
 }
 
+body.about-php #TB_ajaxWindowTitle,
 body.plugin-install-php #TB_ajaxWindowTitle,
 body.import-php #TB_ajaxWindowTitle,
 body.plugins-php #TB_ajaxWindowTitle,
@@ -2645,6 +2795,7 @@ body.index-php #TB_ajaxWindowTitle {
        display: none;
 }
 
+body.about-php .tb-close-icon,
 body.plugin-install-php .tb-close-icon,
 body.import-php .tb-close-icon,
 body.plugins-php .tb-close-icon,
@@ -2657,6 +2808,10 @@ body.index-php .tb-close-icon {
        transition: color .1s ease-in-out, background .1s ease-in-out;
 }
 
+body.about-php #TB_closeWindowButton:focus,
+body.about-php #TB_closeWindowButton:focus .tb-close-icon,
+body.about-php .tb-close-icon:focus,
+body.about-php .tb-close-icon:hover,
 body.plugin-install-php #TB_closeWindowButton:focus,
 body.plugin-install-php #TB_closeWindowButton:focus .tb-close-icon,
 body.plugin-install-php .tb-close-icon:focus,
@@ -2683,6 +2838,7 @@ body.index-php .tb-close-icon:hover {
        box-shadow: none;
 }
 
+body.about-php .tb-close-icon:before,
 body.plugin-install-php .tb-close-icon:before,
 body.import-php .tb-close-icon:before,
 body.plugins-php .tb-close-icon:before,
@@ -2694,6 +2850,7 @@ body.index-php .tb-close-icon:before {
 
 /* move plugin install close icon to top on narrow screens */
 @media screen and ( max-width: 830px ) {
+       body.about-php .tb-close-icon,
        body.plugin-install-php .tb-close-icon,
        body.import-php .tb-close-icon,
        body.plugins-php .tb-close-icon,
@@ -2719,26 +2876,28 @@ img {
        color: #464646;
 }
 
-/* @todo: these seem misplaced */
-.js .meta-box-sortables .postbox:hover .handlediv {
-       margin-left: 0 !important;
-}
-
 /* Metabox collapse arrow indicators */
 .js .sidebar-name .sidebar-name-arrow:before,
-.js .meta-box-sortables .postbox .handlediv:before {
-       left: 12px;
-       font: normal 20px/1 'dashicons';
-       speak: none;
+.js .meta-box-sortables .postbox .toggle-indicator:before {
+       content: "\f142";
        display: inline-block;
-       padding: 8px 10px;
-       top: 0;
-       position: relative;
+       font: normal 20px/1 dashicons;
+       speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        text-decoration: none !important;
 }
 
+.js .widgets-holder-wrap.closed .sidebar-name-arrow:before,
+.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before {
+       content: "\f140";
+}
+
+.js .sidebar-name .sidebar-name-arrow:before {
+       padding: 10px;
+       right: 0;
+}
+
 .js #widgets-left .sidebar-name .sidebar-name-arrow {
        display: none;
 }
@@ -2748,24 +2907,31 @@ img {
        display: block;
 }
 
-/* Show the arrow only on hover */
-.js .sidebar-name .sidebar-name-arrow:before,
-.js .meta-box-sortables .postbox .handlediv:before {
-       content: '\f142';
+.js .postbox .handlediv .toggle-indicator:before {
+       margin-top: 4px;
+       width: 20px;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
+       text-indent: -1px; /* account for the dashicon alignment */
 }
 
-.js .widgets-holder-wrap.closed .sidebar-name-arrow:before,
-.js .meta-box-sortables .postbox.closed .handlediv:before {
-       content: '\f140';
+.rtl.js .postbox .handlediv .toggle-indicator:before {
+       text-indent: 1px; /* account for the dashicon alignment */
 }
 
-.error a {
-       text-decoration: underline;
+.js .postbox .handlediv:focus {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       outline: none;
 }
 
-.updated a {
-       text-decoration: none;
-       padding-bottom: 2px;
+.js .postbox .handlediv:focus .toggle-indicator:before {
+       -webkit-box-shadow:
+       0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+    box-shadow:
+       0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
 }
 
 /* @todo: appears to be Press This only and overridden */
@@ -2774,7 +2940,7 @@ img {
 }
 
 /* Theme/Plugin Editor */
-.alignleft h3 {
+.alignleft h2 {
        margin: 0;
 }
 
@@ -2802,7 +2968,7 @@ img {
        word-wrap: break-word;
 }
 
-#templateside h3,
+#templateside h2,
 #postcustomstuff p.submit {
        margin: 0;
 }
@@ -2865,10 +3031,10 @@ img {
 .control-section .accordion-section-title:after,
 .accordion-section-title:after {
        left: 0;
-       content: '\f140';
+       content: "\f140";
        border: none;
        background: none;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        display: block;
        padding: 0;
@@ -2890,6 +3056,7 @@ img {
 
 .widget-action:hover,
 .handlediv:hover,
+.handlediv:focus,
 .item-edit:hover,
 .sidebar-name:hover .sidebar-name-arrow,
 .accordion-section-title:hover:after {
@@ -2897,16 +3064,20 @@ img {
 }
 
 .widget-top a.widget-action:after {
-       padding: 12px 12px 11px;
+       padding: 1px 0px 1px 2px;
+       margin-top: 10px;
+       margin-left: 10px;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
 }
 
 .widget-top a.widget-action:focus:after {
-       -webkit-box-shadow: 0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);
-       box-shadow: 0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);
-}
-
-.nav-menus-php .item-edit:before {
-       line-height: 2.1;
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30,140,190,.8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30,140,190,.8);
 }
 
 .control-section .accordion-section-title:after,
@@ -2920,7 +3091,7 @@ img {
 #customize-info.open .accordion-section-title:after,
 .nav-menus-php .menu-item-edit-active .item-edit:before,
 .widget.open .widget-top a.widget-action:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 /*!
@@ -3358,7 +3529,10 @@ img {
                font-size: 14px;
        }
 
-       .metabox-holder h3 {
+       .metabox-holder h3.hndle, /* Back-compat for pre-4.4 */
+       .metabox-holder .stuffbox > h3, /* Back-compat for pre-4.4 */
+       .metabox-holder .postbox > h3, /* Back-compat for pre-4.4 */
+       .metabox-holder h2 {
                padding: 12px;
        }
 
@@ -3419,6 +3593,11 @@ img {
        .edit-comment-author {
                margin: 2px 0 0;
        }
+
+       .filter-drawer .filter-group-feature input,
+       .filter-drawer .filter-group-feature label {
+               line-height: 25px;
+       }
 }
 
 /* Smartphone */
@@ -3441,6 +3620,21 @@ img {
        div#post-body.metabox-holder.columns-1 {
                overflow-x: hidden;
        }
+
+       h1.nav-tab-wrapper,
+       .wrap h2.nav-tab-wrapper,
+       h3.nav-tab-wrapper {
+               padding-right: 0;
+               border-bottom: 0;
+       }
+
+       h1 .nav-tab,
+       h2 .nav-tab,
+       h3 .nav-tab {
+               margin-top: 10px;
+               margin-left: 10px;
+               border-bottom: 1px solid #ccc;
+       }
 }
 
 @media screen and (max-width: 320px) {
index d3765d9d02f180b0cbb967f201eaee68222e7c69..e63b1629258163ba66ff10cf3436600b7710586a 100644 (file)
        font-weight: 600;
        padding: 15px 23px 14px;
        background: #f1f1f1;
-       color: #21759b;
+       color: #0073aa;
        z-index: 100000;
        line-height: normal;
        -webkit-box-shadow: 0 0 2px 2px rgba(0,0,0,.6);
@@ -295,7 +295,7 @@ blockquote:before,
 blockquote:after,
 q:before,
 q:after {
-       content: '';
+       content: "";
        content: none;
 }
 
@@ -325,24 +325,20 @@ h6 {
 }
 
 h1 {
+       color: #23282d;
        font-size: 2em;
        margin: .67em 0;
 }
 
-.wrap > h1,
-h2 {
-       color: #23282d;
-       font-size: 1.5em;
-       margin: .83em 0;
-       font-weight: 400;
-}
-
+h2,
 h3 {
        color: #23282d;
        font-size: 1.3em;
        margin: 1em 0;
 }
 
+.update-php h2,
+.update-core-php h2,
 h4 {
        font-size: 1em;
        margin: 1.33em 0;
@@ -539,7 +535,8 @@ code {
 
 .widefat thead td.check-column,
 .widefat tfoot td.check-column {
-       padding-top: 10px;
+       padding-top: 4px;
+       vertical-align: middle;
 }
 
 .update-php div.updated,
@@ -567,25 +564,23 @@ code {
        margin: 10px 20px 0 2px;
 }
 
-.wrap h1,
-.wrap h2,
-.subtitle {
-       font-weight: normal;
-       margin: 0;
-}
-
-.wrap h1,
-.wrap h2 {
+.wrap > h2:first-child, /* Back-compat for pre-4.4 */
+.wrap [class$="icon32"] + h2, /* Back-compat for pre-4.4 */
+.postbox .inside h2, /* Back-compat for pre-4.4 */
+.wrap h1 {
        font-size: 23px;
        font-weight: 400;
+       margin: 0;
        padding: 9px 15px 4px 0;
        line-height: 29px;
 }
 
 .subtitle {
+       margin: 0;
+       padding-left: 25px;
        color: #777;
        font-size: 14px;
-       padding-left: 25px;
+       font-weight: normal;
 }
 
 .wrap .add-new-h2, /* deprecated */
@@ -755,9 +750,9 @@ img.emoji {
 .notice-dismiss:before {
        background: none;
        color: #b4b9be;
-       content: '\f153';
+       content: "\f153";
        display: block;
-       font: normal 16px/20px 'dashicons';
+       font: normal 16px/20px dashicons;
        speak: none;
        height: 20px;
        text-align: center;
@@ -884,6 +879,10 @@ abbr.required,
        padding: 6px 10px 8px;
 }
 
+.misc-pub-filename {
+       word-wrap: break-word;
+}
+
 #minor-publishing-actions {
        padding: 10px 10px 0 10px;
        text-align: right;
@@ -1067,7 +1066,7 @@ th.action-links {
        color: #777;
        -webkit-transition: color .1s ease-in 0;
        transition: color .1s ease-in 0;
-       font-family: "dashicons";
+       font-family: dashicons;
        font-size: 16px;
        line-height: 1;
        text-align: center;
@@ -1086,6 +1085,20 @@ th.action-links {
        color: #fff;
 }
 
+.wp-filter .favorites-form {
+       display: none;
+       margin: 0 -20px;
+       padding: 20px;
+       border-top: 1px solid #eee;
+       background: #fafafa;
+       overflow: hidden;
+       width: 100%;
+}
+
+.show-favorites-form .wp-filter .favorites-form {
+       display: block;
+}
+
 .filter-drawer {
        display: none;
        margin: 0 -20px;
@@ -1125,9 +1138,10 @@ th.action-links {
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
+       position: relative;
        float: left;
        margin: 0 1% 0 0;
-       padding: 10px;
+       padding: 20px 10px 10px;
        width: 24%;
        background: #fff;
        border: 1px solid #e5e5e5;
@@ -1135,24 +1149,27 @@ th.action-links {
        box-shadow: 0 1px 1px rgba(0,0,0,0.04);
 }
 
-.filter-group h4 {
-       position: relative;
+.filter-group legend {
+       position: absolute;
+       top: 10px;
+       display: block;
        margin: 0;
+       padding: 0;
+       font-size: 1em;
+       font-weight: 600;
 }
 
-.filter-drawer ol {
-       margin: 20px 0 0;
+.filter-drawer .filter-group-feature {
+       margin: 28px 0 0;
        list-style-type: none;
        font-size: 12px;
 }
 
-.filter-drawer li {
+.filter-drawer .filter-group-feature input,
+.filter-drawer .filter-group-feature label {
        display: inline-block;
-       vertical-align: top;
-       margin: 5px 0;
-       padding-right: 25px;
-       width: 160px;
-       list-style-type: none;
+       margin: 7px 4px 7px 0;
+       line-height: 16px;
 }
 
 .filter-drawer .buttons {
@@ -1297,6 +1314,7 @@ div.error {
 }
 
 .notice p,
+.notice-title,
 div.updated p,
 div.error p,
 .form-table td .notice p {
@@ -1304,6 +1322,30 @@ div.error p,
        padding: 2px;
 }
 
+.error a {
+       text-decoration: underline;
+}
+
+.updated a {
+       padding-bottom: 2px;
+       text-decoration: none;
+}
+
+.notice-alt {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+.notice-large {
+       padding: 10px 20px;
+}
+
+.notice-title {
+       display: inline-block;
+       color: #23282d;
+       font-size: 18px;
+}
+
 .wp-core-ui .notice.is-dismissible {
        padding-right: 38px;
        position: relative;
@@ -1339,20 +1381,36 @@ div.error p,
 
 .notice-success,
 div.updated {
-       border-color: #7ad03a;
+       border-left-color: #46b450;
+}
+
+.notice-success.notice-alt {
+       background-color: #ecf7ed;
 }
 
 .notice-warning {
-       border-color: #ffba00;
+       border-left-color: #ffb900;
+}
+
+.notice-warning.notice-alt {
+       background-color: #fff8e5;
 }
 
 .notice-error,
 div.error {
-       border-color: #dd3d36;
+       border-left-color: #dc3232;
+}
+
+.notice-error.notice-alt {
+       background-color: #fbeaea;
 }
 
 .notice-info {
-       border-color: #00a0d2;
+       border-left-color: #00a0d2;
+}
+
+.notice-info.notice-alt {
+       background-color: #e5f5fa;
 }
 
 .wrap .notice,
@@ -1491,10 +1549,18 @@ form.upgrade .hint {
        color: #32373c;
 }
 
+#screen-meta-links .show-settings:active {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       -webkit-transform: none;
+       -ms-transform: none;
+       transform: none;
+}
+
 #screen-meta-links .show-settings:after {
        right: 0;
-       content: '\f140';
-       font: normal 20px/1 'dashicons';
+       content: "\f140";
+       font: normal 20px/1 dashicons;
        speak: none;
        display: inline-block;
        padding: 0 5px 0 0;
@@ -1508,7 +1574,7 @@ form.upgrade .hint {
 }
 
 #screen-meta-links .screen-meta-active:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 /* end screen options and help tabs */
@@ -1526,10 +1592,17 @@ form.upgrade .hint {
        background-position: bottom left;
 }
 
-#screen-options-wrap h5,
+#screen-options-wrap h5, /* Back-compat for old plugins */
+#screen-options-wrap legend,
 #contextual-help-wrap h5 {
-       margin: 8px 0;
-       font-size: 13px;
+       margin: 0;
+       padding: 8px 0;
+       font-size: 13px;
+       font-weight: 600;
+}
+
+.ie8 #screen-options-wrap legend {
+       color: inherit;
 }
 
 .metabox-prefs label {
@@ -1538,27 +1611,30 @@ form.upgrade .hint {
        line-height: 30px;
 }
 
-.metabox-prefs label input[type=checkbox] {
-       margin-top: -4px;
+#number-of-columns {
+       display: inline-block;
+       vertical-align: middle;
+       line-height: 30px;
+}
+
+.metabox-prefs input[type=checkbox] {
+       margin-top: 0;
        margin-right: 6px;
 }
 
-.metabox-prefs label input {
-       margin: 0 5px 0 2px;
+.metabox-prefs label input,
+.metabox-prefs label input[type=checkbox] {
+       margin: -4px 5px 0 0;
 }
 
 .metabox-prefs .columns-prefs label input {
-       margin: 0 2px;
+       margin: -1px 2px 0 0;
 }
 
 .metabox-prefs label a {
        display: none;
 }
 
-.metabox-prefs .screen-options {
-       padding-top: 10px;
-}
-
 .metabox-prefs .screen-options input,
 .metabox-prefs .screen-options label {
        margin-top: 0;
@@ -1575,6 +1651,15 @@ form.upgrade .hint {
        padding-right: 0;
 }
 
+.screen-options + .screen-options {
+    margin-top: 10px;
+}
+
+.metabox-prefs .submit {
+       margin-top: 1em;
+       padding: 0;
+}
+
 /*------------------------------------------------------------------------------
   6.2 - Help Menu
 ------------------------------------------------------------------------------*/
@@ -1787,13 +1872,15 @@ html.wp-toolbar {
 }
 
 .postbox .handlediv {
+       display: none;
        float: right;
-       width: 27px;
-       height: 30px;
+       width: 36px;
+       height: 36px;
+       padding: 0;
 }
 
 .js .postbox .handlediv {
-       cursor: pointer;
+       display: block;
 }
 
 .sortable-placeholder {
@@ -1854,7 +1941,7 @@ html.wp-toolbar {
 }
 
 .columns-prefs label {
-       padding: 0 5px;
+       padding: 0 10px 0 0;
 }
 
 /* @todo: what is this doing here */
@@ -1910,51 +1997,69 @@ html.wp-toolbar {
 ------------------------------------------------------------------------------*/
 
 .nav-tab {
+       float: left;
        border: 1px solid #ccc;
        border-bottom: none;
+       margin-left: 0.5em; /* half the font size so set the font size properly */
+       padding: 5px 10px;
+       font-size: 14px;
+       line-height: 24px;
+       font-weight: 600;
        background: #e4e4e4;
        color: #555;
+       text-decoration: none;
+       white-space: nowrap;
+}
+
+h3 .nav-tab, /* Back-compat for pre-4.4 */
+.nav-tab-small .nav-tab {
+       padding: 5px 14px;
        font-size: 12px;
        line-height: 16px;
-       display: inline-block;
-       padding: 4px 14px 6px;
-       text-decoration: none;
-       margin: -4px 4px -1px 0;
 }
 
-.nav-tab:hover {
+.nav-tab:hover,
+.nav-tab:focus {
        background-color: #fff;
        color: #464646;
 }
 
+.nav-tab-active,
+.nav-tab:focus:active {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
 .nav-tab-active {
+       margin-bottom: -1px;
        color: #464646;
 }
 
 .nav-tab-active,
-.nav-tab-active:hover {
+.nav-tab-active:hover,
+.nav-tab-active:focus,
+.nav-tab-active:focus:active {
        border-bottom: 1px solid #f1f1f1;
        background: #f1f1f1;
        color: #000;
 }
 
-h1.nav-tab-wrapper,
-h2.nav-tab-wrapper,
+h1.nav-tab-wrapper, /* Back-compat for pre-4.4 */
+.wrap h2.nav-tab-wrapper, /* higher specificity to override .wrap > h2:first-child */
 h3.nav-tab-wrapper {
        border-bottom: 1px solid #ccc;
-       padding-bottom: 0;
-       padding-left: 10px;
+       margin: 0;
+       padding: 9px 15px 0 0;
+       line-height: inherit;
 }
 
-h1 .nav-tab,
-h2 .nav-tab {
-       padding: 6px 10px;
-       font-weight: bold;
-       font-size: 15px;
-       line-height: 24px;
+/* contain floats */
+.nav-tab-wrapper:after {
+       content: "";
+       display: table;
+       clear: both;
 }
 
-
 /*------------------------------------------------------------------------------
   26.0 - Misc
 ------------------------------------------------------------------------------*/
@@ -1982,13 +2087,22 @@ h2 .nav-tab {
        margin-right: 190px;
 }
 
-.metabox-holder h3 {
+.metabox-holder .stuffbox > h3, /* Back-compat for pre-4.4 */
+.metabox-holder .postbox > h3, /* Back-compat for pre-4.4 */
+.metabox-holder h3.hndle, /* Back-compat for pre-4.4 */
+.metabox-holder h2.hndle {
        font-size: 14px;
        padding: 8px 12px;
        margin: 0;
        line-height: 1.4;
 }
 
+/* Back-compat for nav-menus screen */
+.nav-menus-php .metabox-holder h3 {
+       padding: 10px 10px 11px 14px;
+       line-height: 21px;
+}
+
 #templateside ul li a {
        text-decoration: none;
 }
@@ -2051,7 +2165,8 @@ body.iframe {
        width: auto;
 }
 
-#post-body #post-body-content #namediv h3 {
+#post-body #post-body-content #namediv h3, /* Back-compat for pre-4.4 */
+#post-body #post-body-content #namediv h2 {
        margin-top: 0;
 }
 
@@ -2063,7 +2178,8 @@ body.iframe {
        margin: 2px 0 0 9px;
 }
 
-#namediv h3 label {
+#namediv h3 label, /* Back-compat for pre-4.4 */
+#namediv h2 label {
        vertical-align: baseline;
 }
 
@@ -2152,7 +2268,7 @@ div.star-holder .star-rating {
        -webkit-font-smoothing: antialiased;
        font-size: 20px;
        line-height: 1;
-       font-family: 'dashicons';
+       font-family: dashicons;
        text-decoration: inherit;
        font-weight: normal;
        font-style: normal;
@@ -2164,11 +2280,11 @@ div.star-holder .star-rating {
 }
 
 .star-rating .star-full:before {
-       content:'\f155';
+       content: "\f155";
 }
 
 .star-rating .star-half:before {
-       content:'\f459';
+       content: "\f459";
 }
 
 .rtl .star-rating .star-half {
@@ -2178,7 +2294,7 @@ div.star-holder .star-rating {
 }
 
 .star-rating .star-empty:before {
-       content:'\f154';
+       content: "\f154";
 }
 
 div.action-links {
@@ -2341,7 +2457,7 @@ div.action-links {
        left: 0;
        margin-right: 250px; /* FYI box */
        padding: 10px 26px;
-       margin-bottom: -99930px; /* a bit less than the padding below to accommodate footer */
+       margin-bottom: -99939px; /* 60px less than the padding below to accommodate footer */
        padding-bottom: 99999px; /* equal height column trick */
 }
 
@@ -2350,13 +2466,12 @@ div.action-links {
 }
 
 #plugin-information .fyi {
-       display: block;
        float: right;
        position: relative;
        top: 0;
        right: 0;
        padding: 16px;
-       margin-bottom: -99930px; /* slightly less than the padding below to accommodate footer */
+       margin-bottom: -99939px; /* 60px less than the padding below to accommodate footer */
        padding-bottom: 99999px; /* equal height column trick */
        width: 217px;
        border-left: 1px solid #ddd;
@@ -2441,12 +2556,12 @@ div.action-links {
 }
 
 #plugin-information-footer {
-       padding: 15px 16px;
+       padding: 13px 16px;
        position: absolute;
        right: 0;
        bottom: 0;
        left: 0;
-       height: 28px;
+       height: 33px; /* 33+13+13+1=60 */
        border-top: 1px solid #ddd;
        background: #f3f3f3;
 }
@@ -2605,29 +2720,63 @@ div.action-links {
 }
 
 /* Thickbox for Plugin Install screen */
+body.about-php #TB_window,
 body.plugin-install-php #TB_window,
 body.import-php #TB_window,
 body.plugins-php #TB_window,
 body.update-core-php #TB_window,
 body.index-php #TB_window {
-       background: #fcfcfc url( ../images/spinner.gif ) no-repeat center;
+       background: #fcfcfc;
+}
+
+/* IE 8 needs a change in the pseudo element content */
+.ie8 body.about-php #TB_window:before,
+.ie8 body.plugin-install-php #TB_window:before,
+.ie8 body.import-php #TB_window:before,
+.ie8 body.plugins-php #TB_window:before,
+.ie8 body.update-core-php #TB_window:before,
+.ie8 body.index-php #TB_window:before {
+       content: " ";
+       background: none;
+}
+
+body.about-php #TB_window.thickbox-loading:before,
+body.plugin-install-php #TB_window.thickbox-loading:before,
+body.import-php #TB_window.thickbox-loading:before,
+body.plugins-php #TB_window.thickbox-loading:before,
+body.update-core-php #TB_window.thickbox-loading:before,
+body.index-php #TB_window.thickbox-loading:before {
+       content: "";
+       display: block;
+       width: 20px;
+       height: 20px;
+       position: absolute;
+       left: 50%;
+       top: 50%;
+       z-index: -1;
+       margin: -10px 0 0 -10px;
+       background: #fcfcfc url(../images/spinner.gif) no-repeat center;
+       -webkit-background-size: 20px 20px;
+       background-size: 20px 20px;
+       -webkit-transform: translateZ(0);
+       transform: translateZ(0);
 }
 
 @media print,
        (-webkit-min-device-pixel-ratio: 1.25),
        (min-resolution: 120dpi) {
 
-       body.plugin-install-php #TB_window,
-       body.import-php #TB_window,
-       body.plugins-php #TB_window,
-       body.update-core-php #TB_window,
-       body.index-php #TB_window {
-               background: #fcfcfc url( ../images/spinner-2x.gif ) no-repeat center;
-               -webkit-background-size: 20px 20px;
-               background-size: 20px 20px;
+       body.about-php #TB_window.thickbox-loading:before,
+       body.plugin-install-php #TB_window.thickbox-loading:before,
+       body.import-php #TB_window.thickbox-loading:before,
+       body.plugins-php #TB_window.thickbox-loading:before,
+       body.update-core-php #TB_window.thickbox-loading:before,
+       body.index-php #TB_window.thickbox-loading:before {
+               background-image: url(../images/spinner-2x.gif);
        }
 }
 
+body.about-php #TB_title,
 body.plugin-install-php #TB_title,
 body.import-php #TB_title,
 body.plugins-php #TB_title,
@@ -2637,6 +2786,7 @@ body.index-php #TB_title {
        height: 1px;
 }
 
+body.about-php #TB_ajaxWindowTitle,
 body.plugin-install-php #TB_ajaxWindowTitle,
 body.import-php #TB_ajaxWindowTitle,
 body.plugins-php #TB_ajaxWindowTitle,
@@ -2645,6 +2795,7 @@ body.index-php #TB_ajaxWindowTitle {
        display: none;
 }
 
+body.about-php .tb-close-icon,
 body.plugin-install-php .tb-close-icon,
 body.import-php .tb-close-icon,
 body.plugins-php .tb-close-icon,
@@ -2657,6 +2808,10 @@ body.index-php .tb-close-icon {
        transition: color .1s ease-in-out, background .1s ease-in-out;
 }
 
+body.about-php #TB_closeWindowButton:focus,
+body.about-php #TB_closeWindowButton:focus .tb-close-icon,
+body.about-php .tb-close-icon:focus,
+body.about-php .tb-close-icon:hover,
 body.plugin-install-php #TB_closeWindowButton:focus,
 body.plugin-install-php #TB_closeWindowButton:focus .tb-close-icon,
 body.plugin-install-php .tb-close-icon:focus,
@@ -2683,6 +2838,7 @@ body.index-php .tb-close-icon:hover {
        box-shadow: none;
 }
 
+body.about-php .tb-close-icon:before,
 body.plugin-install-php .tb-close-icon:before,
 body.import-php .tb-close-icon:before,
 body.plugins-php .tb-close-icon:before,
@@ -2694,6 +2850,7 @@ body.index-php .tb-close-icon:before {
 
 /* move plugin install close icon to top on narrow screens */
 @media screen and ( max-width: 830px ) {
+       body.about-php .tb-close-icon,
        body.plugin-install-php .tb-close-icon,
        body.import-php .tb-close-icon,
        body.plugins-php .tb-close-icon,
@@ -2719,26 +2876,28 @@ img {
        color: #464646;
 }
 
-/* @todo: these seem misplaced */
-.js .meta-box-sortables .postbox:hover .handlediv {
-       margin-right: 0 !important;
-}
-
 /* Metabox collapse arrow indicators */
 .js .sidebar-name .sidebar-name-arrow:before,
-.js .meta-box-sortables .postbox .handlediv:before {
-       right: 12px;
-       font: normal 20px/1 'dashicons';
-       speak: none;
+.js .meta-box-sortables .postbox .toggle-indicator:before {
+       content: "\f142";
        display: inline-block;
-       padding: 8px 10px;
-       top: 0;
-       position: relative;
+       font: normal 20px/1 dashicons;
+       speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        text-decoration: none !important;
 }
 
+.js .widgets-holder-wrap.closed .sidebar-name-arrow:before,
+.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before {
+       content: "\f140";
+}
+
+.js .sidebar-name .sidebar-name-arrow:before {
+       padding: 10px;
+       left: 0;
+}
+
 .js #widgets-left .sidebar-name .sidebar-name-arrow {
        display: none;
 }
@@ -2748,24 +2907,31 @@ img {
        display: block;
 }
 
-/* Show the arrow only on hover */
-.js .sidebar-name .sidebar-name-arrow:before,
-.js .meta-box-sortables .postbox .handlediv:before {
-       content: '\f142';
+.js .postbox .handlediv .toggle-indicator:before {
+       margin-top: 4px;
+       width: 20px;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
+       text-indent: -1px; /* account for the dashicon alignment */
 }
 
-.js .widgets-holder-wrap.closed .sidebar-name-arrow:before,
-.js .meta-box-sortables .postbox.closed .handlediv:before {
-       content: '\f140';
+.rtl.js .postbox .handlediv .toggle-indicator:before {
+       text-indent: 1px; /* account for the dashicon alignment */
 }
 
-.error a {
-       text-decoration: underline;
+.js .postbox .handlediv:focus {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       outline: none;
 }
 
-.updated a {
-       text-decoration: none;
-       padding-bottom: 2px;
+.js .postbox .handlediv:focus .toggle-indicator:before {
+       -webkit-box-shadow:
+       0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+    box-shadow:
+       0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
 }
 
 /* @todo: appears to be Press This only and overridden */
@@ -2774,7 +2940,7 @@ img {
 }
 
 /* Theme/Plugin Editor */
-.alignleft h3 {
+.alignleft h2 {
        margin: 0;
 }
 
@@ -2802,7 +2968,7 @@ img {
        word-wrap: break-word;
 }
 
-#templateside h3,
+#templateside h2,
 #postcustomstuff p.submit {
        margin: 0;
 }
@@ -2865,10 +3031,10 @@ img {
 .control-section .accordion-section-title:after,
 .accordion-section-title:after {
        right: 0;
-       content: '\f140';
+       content: "\f140";
        border: none;
        background: none;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        display: block;
        padding: 0;
@@ -2890,6 +3056,7 @@ img {
 
 .widget-action:hover,
 .handlediv:hover,
+.handlediv:focus,
 .item-edit:hover,
 .sidebar-name:hover .sidebar-name-arrow,
 .accordion-section-title:hover:after {
@@ -2897,16 +3064,20 @@ img {
 }
 
 .widget-top a.widget-action:after {
-       padding: 12px 12px 11px;
+       padding: 1px 2px 1px 0px;
+       margin-top: 10px;
+       margin-right: 10px;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
 }
 
 .widget-top a.widget-action:focus:after {
-       -webkit-box-shadow: 0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);
-       box-shadow: 0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);
-}
-
-.nav-menus-php .item-edit:before {
-       line-height: 2.1;
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30,140,190,.8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30,140,190,.8);
 }
 
 .control-section .accordion-section-title:after,
@@ -2920,7 +3091,7 @@ img {
 #customize-info.open .accordion-section-title:after,
 .nav-menus-php .menu-item-edit-active .item-edit:before,
 .widget.open .widget-top a.widget-action:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 /*!
@@ -3358,7 +3529,10 @@ img {
                font-size: 14px;
        }
 
-       .metabox-holder h3 {
+       .metabox-holder h3.hndle, /* Back-compat for pre-4.4 */
+       .metabox-holder .stuffbox > h3, /* Back-compat for pre-4.4 */
+       .metabox-holder .postbox > h3, /* Back-compat for pre-4.4 */
+       .metabox-holder h2 {
                padding: 12px;
        }
 
@@ -3419,6 +3593,11 @@ img {
        .edit-comment-author {
                margin: 2px 0 0;
        }
+
+       .filter-drawer .filter-group-feature input,
+       .filter-drawer .filter-group-feature label {
+               line-height: 25px;
+       }
 }
 
 /* Smartphone */
@@ -3441,6 +3620,21 @@ img {
        div#post-body.metabox-holder.columns-1 {
                overflow-x: hidden;
        }
+
+       h1.nav-tab-wrapper,
+       .wrap h2.nav-tab-wrapper,
+       h3.nav-tab-wrapper {
+               padding-left: 0;
+               border-bottom: 0;
+       }
+
+       h1 .nav-tab,
+       h2 .nav-tab,
+       h3 .nav-tab {
+               margin-top: 10px;
+               margin-right: 10px;
+               border-bottom: 1px solid #ccc;
+       }
 }
 
 @media screen and (max-width: 320px) {
index 4b67787045701845d82266f9d8ec3fcc87c02253..28b020be1a5d4a6201394ceee99b1193884f2fe3 100644 (file)
@@ -82,7 +82,7 @@ body {
 #customize-controls .customize-info .panel-title {
        font-size: 20px;
        font-weight: 200;
-       line-height: 24px;
+       line-height: 26px;
        display: block;
        overflow: hidden;
        white-space: nowrap;
@@ -123,13 +123,17 @@ body {
        color: #0073aa;
 }
 
-#customize-controls .customize-info .customize-panel-description {
+#customize-controls .customize-info .customize-panel-description,
+#customize-controls .no-widget-areas-rendered-notice {
        color: #555;
        display: none;
        background: #fff;
        padding: 12px 15px;
        border-top: 1px solid #ddd;
 }
+#customize-controls .customize-info .customize-panel-description.open + .no-widget-areas-rendered-notice {
+       border-top: none;
+}
 
 #customize-controls .customize-info .customize-panel-description p:first-child {
        margin-top: 0;
@@ -207,7 +211,7 @@ body {
        right: 100%;
        width: 100%;
        margin: 0;
-       padding: 12px;
+       padding: 12px;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
@@ -318,7 +322,7 @@ h3.customize-section-title {
        display: block;
        float: right;
        width: 48px;
-       height: 69px;
+       height: 71px;
        padding: 0 0 0 24px;
        margin: 0;
        background: #fff;
@@ -332,7 +336,7 @@ h3.customize-section-title {
 }
 
 .customize-section-back {
-       height: 70px;
+       height: 74px;
 }
 
 .ios .customize-panel-back,
@@ -391,7 +395,7 @@ h3.customize-section-title {
 
 .customize-panel-back:before,
 .customize-section-back:before {
-       font: normal 20px/69px dashicons;
+       font: normal 20px/72px dashicons;
        content: "\f345";
        position: relative;
        right: 13px;
@@ -530,13 +534,25 @@ p.customize-section-description {
 }
 
 .customize-control-color .color-picker,
-.customize-control-checkbox label,
 .customize-control-upload div {
        line-height: 28px;
 }
 
-.customize-control-checkbox input {
-       margin-left: 5px;
+.customize-control-radio label,
+.customize-control-checkbox label,
+.customize-control-nav_menu_auto_add label {
+       line-height: 20px;
+       display: block;
+       margin-right: 24px;
+       padding-top: 6px;
+       padding-bottom: 6px;
+}
+
+.customize-control-radio input,
+.customize-control-checkbox input,
+.customize-control-nav_menu_auto_add input {
+       margin-left: 4px;
+       margin-right: -24px;
 }
 
 .customize-control-radio {
@@ -552,14 +568,6 @@ p.customize-section-description {
        margin-top: 7px;
 }
 
-.customize-control-radio label {
-       line-height: 32px;
-}
-
-.customize-control-radio input {
-       margin-left: 5px;
-}
-
 .customize-control .attachment-thumb.type-icon {
        float: right;
        margin: 10px;
@@ -611,9 +619,10 @@ p.customize-section-description {
 
 /* Style for custom settings */
 
-/*
+/**
  * Dropdowns
  */
+
 .accordion-section .dropdown {
        float: right;
        display: block;
@@ -647,7 +656,7 @@ p.customize-section-description {
 
 .customize-control .dropdown-arrow:after {
        content: "\f140";
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        display: block;
        padding: 0;
@@ -694,6 +703,7 @@ p.customize-section-description {
  * iOS can't scroll iframes,
  * instead it expands the iframe size to match the size of the content
  */
+
 .ios .wp-full-overlay {
        position: relative;
 }
@@ -706,7 +716,7 @@ p.customize-section-description {
        -webkit-overflow-scrolling: touch;
 }
 
-/** Media controls **/
+/* Media controls */
 
 .customize-control-media .current,
 .customize-control-upload .current,
@@ -991,6 +1001,7 @@ p.customize-section-description {
 /**
  * Themes
  */
+
 @-webkit-keyframes customize-reload {
        0%   { opacity: 0; }
        100% { opacity: 1; }
@@ -1208,18 +1219,104 @@ body.cheatin {
        box-shadow: 0 1px 3px rgba(0,0,0,0.13);
 }
 
+body.cheatin h1 {
+       border-bottom: 1px solid #dadada;
+       clear: both;
+       color: #666;
+       font: 24px "Open Sans", sans-serif;
+       margin: 30px 0 0 0;
+       padding: 0;
+       padding-bottom: 7px;
+}
+
 body.cheatin p {
        font-size: 14px;
        line-height: 1.5;
        margin: 25px 0 20px;
 }
 
+/**
+ * Widgets and Menus common styles
+ */
+
+/* higher specificity than .wp-core-ui .button-secondary */
+#customize-theme-controls .add-new-widget,
+#customize-theme-controls .add-new-menu-item {
+       cursor: pointer;
+       float: left;
+       margin-right: 10px;
+       -webkit-transition: all 0.2s;
+       transition: all 0.2s;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+       outline: none;
+}
+
+.reordering .add-new-widget,
+.reordering .add-new-menu-item {
+       opacity: 0.2;
+       pointer-events: none;
+       cursor: not-allowed; /* doesn't work in conjunction with pointer-events */
+}
+
+.add-new-widget:before,
+.add-new-menu-item:before {
+       content: "\f132";
+       display: inline-block;
+       position: relative;
+       right: -2px;
+       top: -1px;
+       font: normal 20px/1 dashicons;
+       vertical-align: middle;
+       -webkit-transition: all 0.2s;
+       transition: all 0.2s;
+       -webkit-font-smoothing: antialiased;
+       -moz-osx-font-smoothing: grayscale;
+}
+
+/* Reordering */
+.reorder-toggle {
+       float: left;
+       padding: 5px 8px;
+       text-decoration: none;
+       cursor: pointer;
+       outline: none;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+.reorder-toggle:focus {
+       outline: 1px dotted;
+}
+
+.reorder,
+.reordering .reorder-done {
+       display: block;
+       padding: 5px 8px;
+}
+
+.reorder-done,
+.reordering .reorder {
+       display: none;
+       color: #0073aa;
+}
+
+.reorder-toggle:hover .reorder-done,
+.reorder-toggle:active .reorder-done,
+.reorder-toggle:focus .reorder-done {
+       color: #00a0d2;
+}
+
 /* Responsive */
 .customize-controls-preview-toggle {
        display: none;
 }
 
-@media only screen and (max-width: 780px) {
+@media only screen and (max-width: 782px) {
        .wp-customizer .theme:not(.active):hover .theme-actions,
        .wp-customizer .theme:not(.active):focus .theme-actions {
                display: block;
@@ -1228,6 +1325,23 @@ body.cheatin p {
        .wp-customizer .theme-browser .theme.active .theme-name span {
                display: inline;
        }
+
+       .customize-control-radio label,
+       .customize-control-checkbox label,
+       .customize-control-nav_menu_auto_add label {
+               margin-right: 32px;
+       }
+
+       .customize-control-radio input,
+       .customize-control-checkbox input,
+       .customize-control-nav_menu_auto_add input {
+               margin-right: -32px;
+       }
+
+       .customize-control input[type="radio"] + label,
+       .customize-control input[type="checkbox"] + label {
+               line-height: 32px;
+       }
 }
 
 @media screen and ( max-width: 640px ) {
index 5a935c39638fecacc8956b148cbbfeada69ee385..1ececa0ea3de679c4b72522ab5a17f4b7594cc83 100644 (file)
@@ -1 +1 @@
-body{overflow:hidden;-webkit-text-size-adjust:100%}#customize-controls a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls .description{color:#555}#customize-header-actions .button-primary{float:left;margin-top:9px}#customize-header-actions .spinner{margin-top:13px;margin-left:4px}.saving #customize-header-actions .spinner{visibility:visible}#customize-header-actions{border-bottom:1px solid #ddd}#customize-controls .wp-full-overlay-sidebar-content{overflow-y:auto;overflow-x:hidden}#customize-controls .customize-info{border:none;border-top:1px solid #ddd;border-bottom:1px solid #ddd;margin-bottom:15px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#555;border-right:none;border-left:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#333}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:24px}#customize-controls .control-section .customize-section-title h3,#customize-controls .control-section h3.customize-section-title,#customize-controls .customize-info .panel-title{font-size:20px;font-weight:200;line-height:24px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;left:1px;padding:20px 10px 10px 20px;width:20px;height:20px;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;background:0 0;color:#555;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;right:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}#customize-controls .customize-info .customize-panel-description{color:#555;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-left:30px}#customize-theme-controls .control-section{border:none}#customize-theme-controls .accordion-section-title{color:#555;background-color:#fff;border-bottom:1px solid #eee}#customize-theme-controls .accordion-section-title:after{content:"\f341"}#customize-theme-controls .accordion-section-content{color:#555;background:0 0;position:absolute;top:0;right:100%;width:100%;margin:0;padding:12px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#customize-controls .control-section .accordion-section-title:focus,#customize-controls .control-section .accordion-section-title:hover,#customize-controls .control-section.open .accordion-section-title,#customize-controls .control-section:hover>.accordion-section-title{color:#23282d;background:#f5f5f5}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f5f5f5}#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#23282d}#customize-theme-controls .control-section.open{border-bottom:1px solid #eee}#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#eee!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#ddd}#customize-theme-controls>ul{margin:0}.customize-section-description-container{margin-bottom:15px}.customize-section-title{margin:-12px -12px 0;border-bottom:1px solid #ddd;background:#fff}div.customize-section-description{margin-top:22px}div.customize-section-description p:first-child{margin-top:0}div.customize-section-description p:last-child{margin-bottom:0}#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{border-bottom:1px solid #ddd;padding:12px}.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{padding:12px 12px 13px}.customize-section-title h3,h3.customize-section-title{padding:10px 14px 12px 10px;margin:0;line-height:21px;color:#555}#customize-theme-controls{position:relative;right:0;-webkit-transition:.18s right ease-in-out;transition:.18s right ease-in-out}.ios #customize-theme-controls{-webkit-transition:right 0s;transition:right 0s}.section-open #customize-info,.section-open #customize-theme-controls{right:-100%}.accordion-sub-container.control-panel-content{display:none;position:absolute;right:300px;top:0;width:300px;-webkit-transition:right ease-in-out .18s;transition:right ease-in-out .18s}.ios .accordion-sub-container.control-panel-content{-webkit-transition:right 0s;transition:right 0s}.accordion-sub-container.control-panel-content.animating{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;right:0;width:45px;height:45px;padding:0 0 0 2px;background:#eee;border:none;border-left:1px solid #ddd;color:#444;text-align:right;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:right;width:48px;height:69px;padding:0 0 0 24px;margin:0;background:#fff;border:none;border-left:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-transition:right .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out;transition:right .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out}.customize-section-back{height:70px}.ios .customize-panel-back,.ios .customize-section-back{-webkit-transition:right 0s;transition:right 0s}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}.panel-meta.customize-info .accordion-section-title{margin-right:48px}#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#555}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#23282d;background:#f5f5f5;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-controls-close:before{font:400 22px/45px dashicons;content:"\f335";position:relative;top:1px;right:13px}.customize-panel-back:before,.customize-section-back:before{font:400 20px/69px dashicons;content:"\f345";position:relative;right:13px}.wp-full-overlay-sidebar .wp-full-overlay-header{-webkit-transition:padding ease-in-out .18s;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-right:62px}#customize-info,#customize-theme-controls>ul>.accordion-section{position:relative;right:0;-webkit-transition:right ease-in-out .18s;transition:right ease-in-out .18s}.ios #customize-info,.ios #customize-theme-controls>ul>.accordion-section{-webkit-transition:right 0s;transition:right 0s}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls>ul>.accordion-section{right:-300px;width:300px}.in-sub-panel #customize-theme-controls .accordion-section.current-panel{width:100%}#customize-theme-controls .control-section.current-panel{padding:0}#customize-theme-controls .control-section>h3.accordion-section-title{position:relative;right:0}#customize-theme-controls .control-section.current-panel>h3.accordion-section-title{right:-354px;-webkit-transition:right ease-in-out .18s;transition:right ease-in-out .18s}.ios #customize-theme-controls .control-section.current-panel>h3.accordion-section-title{-webkit-transition:right 0s;transition:right 0s}.wp-full-overlay.section-open #customize-controls .wp-full-overlay-sidebar-content{visibility:hidden;overflow-y:hidden}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open{visibility:visible}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open .accordion-section-content{overflow-y:auto}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-control{width:100%;float:right;clear:both;margin-bottom:12px}.customize-control input[type=radio],.customize-control input[type=checkbox],.customize-control select{line-height:28px}.customize-control input[type=tel],.customize-control input[type=url],.customize-control input[type=text],.customize-control input[type=password],.customize-control input[type=email],.customize-control input[type=number],.customize-control input[type=search]{width:98%;line-height:18px;margin:0}.customize-control-hidden{margin:0}.customize-control-checkbox input,.customize-control-radio input{margin-left:5px}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{min-width:50%;max-width:100%;height:28px;line-height:28px}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:24px;font-weight:600;margin-bottom:5px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-bottom:5px}.customize-control-checkbox label,.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control-radio label{line-height:32px}.customize-control .attachment-thumb.type-icon{float:right;margin:10px;width:auto}.customize-control .attachment-title{font-weight:700;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image{line-height:0}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:right}#customize-preview iframe{width:100%;height:100%}.wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}.accordion-section .dropdown{float:right;display:block;position:relative;cursor:pointer}.accordion-section .dropdown-content{overflow:hidden;float:right;min-width:30px;height:16px;line-height:16px;margin-left:16px;padding:4px 5px;border:2px solid #eee;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;left:0;width:20px;background:#eee}.customize-control .dropdown-arrow:after{content:"\f140";font:400 20px/1 dashicons;speak:none;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#32373c}.customize-control .dropdown-status{color:#32373c;background:#eee;display:none;max-width:112px}.customize-control-color .color-picker-hex{display:none}.customize-control-color.open .color-picker-hex,.customize-control-header button img{display:block}.customize-control-color .dropdown{margin-left:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#555;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios #customize-preview,.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control-background .current,.customize-control-cropped_image .current,.customize-control-header .current,.customize-control-image .current,.customize-control-media .current,.customize-control-site_icon .current,.customize-control-upload .current{margin-bottom:8px}.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control-background .default-button,.customize-control-background .remove-button,.customize-control-background .upload-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-cropped_image .upload-button,.customize-control-header button.new,.customize-control-header button.remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-image .upload-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-media .upload-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-site_icon .upload-button,.customize-control-upload .default-button,.customize-control-upload .remove-button,.customize-control-upload .upload-button{white-space:normal;width:48%;height:auto}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-header .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{overflow:hidden;border:1px solid #eee;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{min-height:40px}.customize-control-background .placeholder,.customize-control-cropped_image .placeholder,.customize-control-header .placeholder,.customize-control-image .placeholder,.customize-control-media .placeholder,.customize-control-site_icon .placeholder,.customize-control-upload .placeholder{width:100%;position:relative;text-align:center;cursor:default}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:none;position:absolute;width:100%;color:#555;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:block;min-height:40px}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-header .inner .dashicons,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{line-height:20px;top:10px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:5px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border:0}.customize-control-header .header-view.selected:after{content:'';position:absolute;height:auto;top:0;right:0;bottom:0;left:0;border:4px solid #00a0d2;-webkit-border-radius:2px;border-radius:2px}.customize-control-header .header-view.button.selected{border:0}.customize-control-header .uploaded .header-view .close{font-size:20px;color:#fff;background:#555;background:rgba(0,0,0,.5);position:absolute;top:10px;left:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{left:10px}.customize-control-header .random.placeholder{cursor:pointer;-webkit-border-radius:2px;border-radius:2px;height:40px}.customize-control-header button.random{width:100%;height:auto;min-height:40px;white-space:normal}.customize-control-header button.random .dice{margin-top:4px}.customize-control-header .header-view:hover>button.random .dice,.customize-control-header .placeholder:hover .dice{-webkit-animation:dice-color-change 3s infinite;animation:dice-color-change 3s infinite}@-webkit-keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}@keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}.customize-control-background .actions,.customize-control-cropped_image .actions,.customize-control-header .actions,.customize-control-image .actions,.customize-control-media .actions,.customize-control-site_icon .actions,.customize-control-upload .actions{margin-bottom:32px}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control-background img,.customize-control-cropped_image img,.customize-control-header img,.customize-control-image img,.customize-control-media img,.customize-control-site_icon img,.customize-control-upload img{width:100%;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .default-button,.customize-control-background .remove-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-header .remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-upload .default-button,.customize-control-upload .remove-button{float:right;margin-left:3px}.customize-control-background .upload-button,.customize-control-cropped_image .upload-button,.customize-control-header .new,.customize-control-image .upload-button,.customize-control-media .upload-button,.customize-control-site_icon .upload-button,.customize-control-upload .upload-button{float:left}@-webkit-keyframes customize-reload{0%{opacity:0}100%{opacity:1}}@keyframes customize-reload{0%{opacity:0}100%{opacity:1}}.wp-customizer .customize-loading #customize-container{display:block;-webkit-animation:customize-reload .75s;animation:customize-reload .75s}.control-section-themes .accordion-section-title{cursor:default;margin:15px 0;padding-left:100px}#customize-theme-controls .control-section-themes .accordion-section-title:focus,#customize-theme-controls .control-section-themes .accordion-section-title:hover{color:#555;background-color:#fff}.customize-themes-panel .accordion-section-title{margin:15px -8px}#customize-controls .customize-section-title span.customize-action,.control-section-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}.control-section-themes .accordion-section-title .change-theme,.control-section-themes .accordion-section-title .customize-theme{position:absolute;left:10px;top:50%;margin-top:-14px;font-weight:400}.control-section-themes .accordion-section-title:before{display:none}.customize-themes-panel{display:none;padding:0 8px;background:#f1f1f1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.customize-themes-panel .accordion-section-title:first-child{margin-top:0}#customize-controls .customize-themes-panel .accordion-section-title:nth-child(2){font-size:14px;font-weight:600}.customize-themes-panel>h2{padding:15px 8px 0}.control-section.open .customize-themes-panel{display:block}#customize-theme-controls .customize-themes-panel .accordion-section-content{background:0 0;display:block}#accordion-section-themes .accordion-section-title:after,.customize-controls-preview-toggle,.wp-customizer .theme-overlay{display:none}.customize-control.customize-control-theme{margin-bottom:8px}#customize-theme-controls .themes.accordion-section-content{position:relative;right:0;padding:0;width:100%}.wp-customizer .theme-browser .themes{padding-bottom:8px}.wp-customizer .theme-browser .theme{margin:0;width:100%}.wp-customizer .theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.wp-customizer #themes-filter{font-size:16px;font-weight:300;line-height:1.5;width:100%}#customize-theme-controls .control-section-themes.current-panel>h3.accordion-section-title{right:0}.customize-themes-panel.control-panel-content{position:absolute;right:-100%;top:0;width:100%;border-top:1px solid #ddd}.in-themes-panel #customize-info,.in-themes-panel #customize-theme-controls>ul>.accordion-section{right:100%}.wp-customizer.modal-open .theme-overlay{position:fixed;right:0;top:0;left:0;bottom:0;z-index:109}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(238,238,238,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .theme-wrap{right:90px;left:90px;top:45px;bottom:45px;z-index:120;max-width:1740px}.wp-customizer .theme-overlay .theme-actions{text-align:left}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.ie8 .wp-customizer .theme-overlay .theme-about,.ie8 .wp-customizer .theme-overlay .theme-actions,.ie8 .wp-customizer .theme-overlay .theme-header{position:static}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{right:0;left:0;top:0;bottom:0}}body.cheatin{font-size:medium;height:auto;background:#fff;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}@media only screen and (max-width:780px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}}@media screen and (max-width:640px){#customize-controls{width:100%}.wp-full-overlay.expanded{margin-right:0}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{bottom:0}.customize-controls-preview-toggle{display:block;position:absolute;top:0;right:48px;line-height:45px;font-size:14px;padding:0 12px;margin:0;height:45px;background:#eee;border-left:1px solid #ddd;color:#444;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,#customize-preview,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:400 20px/1 dashicons;content:"\f177";position:relative;top:4px;margin-left:6px}.customize-controls-preview-toggle .controls:before{content:"\f540"}.preview-only #customize-controls{height:45px}.preview-only #customize-preview,.preview-only .customize-controls-preview-toggle .controls{display:block}#customize-preview{top:45px;bottom:0;height:auto}.wp-core-ui.wp-customizer .button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#customize-header-actions .button-primary{margin-top:6px}}
\ No newline at end of file
+body{overflow:hidden;-webkit-text-size-adjust:100%}#customize-controls a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls .description{color:#555}#customize-header-actions .button-primary{float:left;margin-top:9px}#customize-header-actions .spinner{margin-top:13px;margin-left:4px}.saving #customize-header-actions .spinner{visibility:visible}#customize-header-actions{border-bottom:1px solid #ddd}#customize-controls .wp-full-overlay-sidebar-content{overflow-y:auto;overflow-x:hidden}#customize-controls .customize-info{border:none;border-top:1px solid #ddd;border-bottom:1px solid #ddd;margin-bottom:15px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#555;border-right:none;border-left:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#333}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:24px}#customize-controls .control-section .customize-section-title h3,#customize-controls .control-section h3.customize-section-title,#customize-controls .customize-info .panel-title{font-size:20px;font-weight:200;line-height:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;left:1px;padding:20px 10px 10px 20px;width:20px;height:20px;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;background:0 0;color:#555;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;right:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}#customize-controls .customize-info .customize-panel-description,#customize-controls .no-widget-areas-rendered-notice{color:#555;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}#customize-controls .customize-info .customize-panel-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-left:30px}#customize-theme-controls .control-section{border:none}#customize-theme-controls .accordion-section-title{color:#555;background-color:#fff;border-bottom:1px solid #eee}#customize-theme-controls .accordion-section-title:after{content:"\f341"}#customize-theme-controls .accordion-section-content{color:#555;background:0 0;position:absolute;top:0;right:100%;width:100%;margin:0;padding:12px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#customize-controls .control-section .accordion-section-title:focus,#customize-controls .control-section .accordion-section-title:hover,#customize-controls .control-section.open .accordion-section-title,#customize-controls .control-section:hover>.accordion-section-title{color:#23282d;background:#f5f5f5}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f5f5f5}#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#23282d}#customize-theme-controls .control-section.open{border-bottom:1px solid #eee}#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#eee!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#ddd}#customize-theme-controls>ul{margin:0}.customize-section-description-container{margin-bottom:15px}.customize-section-title{margin:-12px -12px 0;border-bottom:1px solid #ddd;background:#fff}div.customize-section-description{margin-top:22px}div.customize-section-description p:first-child{margin-top:0}div.customize-section-description p:last-child{margin-bottom:0}#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{border-bottom:1px solid #ddd;padding:12px}.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{padding:12px 12px 13px}.customize-section-title h3,h3.customize-section-title{padding:10px 14px 12px 10px;margin:0;line-height:21px;color:#555}#customize-theme-controls{position:relative;right:0;-webkit-transition:.18s right ease-in-out;transition:.18s right ease-in-out}.ios #customize-theme-controls{-webkit-transition:right 0s;transition:right 0s}.section-open #customize-info,.section-open #customize-theme-controls{right:-100%}.accordion-sub-container.control-panel-content{display:none;position:absolute;right:300px;top:0;width:300px;-webkit-transition:right ease-in-out .18s;transition:right ease-in-out .18s}.ios .accordion-sub-container.control-panel-content{-webkit-transition:right 0s;transition:right 0s}.accordion-sub-container.control-panel-content.animating{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;right:0;width:45px;height:45px;padding:0 0 0 2px;background:#eee;border:none;border-left:1px solid #ddd;color:#444;text-align:right;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:right;width:48px;height:71px;padding:0 0 0 24px;margin:0;background:#fff;border:none;border-left:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-transition:right .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out;transition:right .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out}.customize-section-back{height:74px}.ios .customize-panel-back,.ios .customize-section-back{-webkit-transition:right 0s;transition:right 0s}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}.panel-meta.customize-info .accordion-section-title{margin-right:48px}#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#555}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#23282d;background:#f5f5f5;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-controls-close:before{font:400 22px/45px dashicons;content:"\f335";position:relative;top:1px;right:13px}.customize-panel-back:before,.customize-section-back:before{font:400 20px/72px dashicons;content:"\f345";position:relative;right:13px}.wp-full-overlay-sidebar .wp-full-overlay-header{-webkit-transition:padding ease-in-out .18s;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-right:62px}#customize-info,#customize-theme-controls>ul>.accordion-section{position:relative;right:0;-webkit-transition:right ease-in-out .18s;transition:right ease-in-out .18s}.ios #customize-info,.ios #customize-theme-controls>ul>.accordion-section{-webkit-transition:right 0s;transition:right 0s}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls>ul>.accordion-section{right:-300px;width:300px}.in-sub-panel #customize-theme-controls .accordion-section.current-panel{width:100%}#customize-theme-controls .control-section.current-panel{padding:0}#customize-theme-controls .control-section>h3.accordion-section-title{position:relative;right:0}#customize-theme-controls .control-section.current-panel>h3.accordion-section-title{right:-354px;-webkit-transition:right ease-in-out .18s;transition:right ease-in-out .18s}.ios #customize-theme-controls .control-section.current-panel>h3.accordion-section-title{-webkit-transition:right 0s;transition:right 0s}.wp-full-overlay.section-open #customize-controls .wp-full-overlay-sidebar-content{visibility:hidden;overflow-y:hidden}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open{visibility:visible}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open .accordion-section-content{overflow-y:auto}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-control{width:100%;float:right;clear:both;margin-bottom:12px}.customize-control input[type=radio],.customize-control input[type=checkbox],.customize-control select{line-height:28px}.customize-control input[type=tel],.customize-control input[type=url],.customize-control input[type=text],.customize-control input[type=password],.customize-control input[type=email],.customize-control input[type=number],.customize-control input[type=search]{width:98%;line-height:18px;margin:0}.customize-control-hidden{margin:0}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{min-width:50%;max-width:100%;height:28px;line-height:28px}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:24px;font-weight:600;margin-bottom:5px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-bottom:5px}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{line-height:20px;display:block;margin-right:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:4px;margin-right:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control .attachment-thumb.type-icon{float:right;margin:10px;width:auto}.customize-control .attachment-title{font-weight:700;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image{line-height:0}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:right}#customize-preview iframe{width:100%;height:100%}.wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}.accordion-section .dropdown{float:right;display:block;position:relative;cursor:pointer}.accordion-section .dropdown-content{overflow:hidden;float:right;min-width:30px;height:16px;line-height:16px;margin-left:16px;padding:4px 5px;border:2px solid #eee;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;left:0;width:20px;background:#eee}.customize-control .dropdown-arrow:after{content:"\f140";font:400 20px/1 dashicons;speak:none;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#32373c}.customize-control .dropdown-status{color:#32373c;background:#eee;display:none;max-width:112px}.customize-control-color .color-picker-hex{display:none}.customize-control-color.open .color-picker-hex,.customize-control-header button img{display:block}.customize-control-color .dropdown{margin-left:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#555;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios #customize-preview,.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control-background .current,.customize-control-cropped_image .current,.customize-control-header .current,.customize-control-image .current,.customize-control-media .current,.customize-control-site_icon .current,.customize-control-upload .current{margin-bottom:8px}.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control-background .default-button,.customize-control-background .remove-button,.customize-control-background .upload-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-cropped_image .upload-button,.customize-control-header button.new,.customize-control-header button.remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-image .upload-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-media .upload-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-site_icon .upload-button,.customize-control-upload .default-button,.customize-control-upload .remove-button,.customize-control-upload .upload-button{white-space:normal;width:48%;height:auto}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-header .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{overflow:hidden;border:1px solid #eee;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{min-height:40px}.customize-control-background .placeholder,.customize-control-cropped_image .placeholder,.customize-control-header .placeholder,.customize-control-image .placeholder,.customize-control-media .placeholder,.customize-control-site_icon .placeholder,.customize-control-upload .placeholder{width:100%;position:relative;text-align:center;cursor:default}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:none;position:absolute;width:100%;color:#555;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:block;min-height:40px}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-header .inner .dashicons,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{line-height:20px;top:10px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:5px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border:0}.customize-control-header .header-view.selected:after{content:'';position:absolute;height:auto;top:0;right:0;bottom:0;left:0;border:4px solid #00a0d2;-webkit-border-radius:2px;border-radius:2px}.customize-control-header .header-view.button.selected{border:0}.customize-control-header .uploaded .header-view .close{font-size:20px;color:#fff;background:#555;background:rgba(0,0,0,.5);position:absolute;top:10px;left:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{left:10px}.customize-control-header .random.placeholder{cursor:pointer;-webkit-border-radius:2px;border-radius:2px;height:40px}.customize-control-header button.random{width:100%;height:auto;min-height:40px;white-space:normal}.customize-control-header button.random .dice{margin-top:4px}.customize-control-header .header-view:hover>button.random .dice,.customize-control-header .placeholder:hover .dice{-webkit-animation:dice-color-change 3s infinite;animation:dice-color-change 3s infinite}@-webkit-keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}@keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}.customize-control-background .actions,.customize-control-cropped_image .actions,.customize-control-header .actions,.customize-control-image .actions,.customize-control-media .actions,.customize-control-site_icon .actions,.customize-control-upload .actions{margin-bottom:32px}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control-background img,.customize-control-cropped_image img,.customize-control-header img,.customize-control-image img,.customize-control-media img,.customize-control-site_icon img,.customize-control-upload img{width:100%;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .default-button,.customize-control-background .remove-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-header .remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-upload .default-button,.customize-control-upload .remove-button{float:right;margin-left:3px}.customize-control-background .upload-button,.customize-control-cropped_image .upload-button,.customize-control-header .new,.customize-control-image .upload-button,.customize-control-media .upload-button,.customize-control-site_icon .upload-button,.customize-control-upload .upload-button{float:left}@-webkit-keyframes customize-reload{0%{opacity:0}100%{opacity:1}}@keyframes customize-reload{0%{opacity:0}100%{opacity:1}}.wp-customizer .customize-loading #customize-container{display:block;-webkit-animation:customize-reload .75s;animation:customize-reload .75s}.control-section-themes .accordion-section-title{cursor:default;margin:15px 0;padding-left:100px}#customize-theme-controls .control-section-themes .accordion-section-title:focus,#customize-theme-controls .control-section-themes .accordion-section-title:hover{color:#555;background-color:#fff}.customize-themes-panel .accordion-section-title{margin:15px -8px}#customize-controls .customize-section-title span.customize-action,.control-section-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}.control-section-themes .accordion-section-title .change-theme,.control-section-themes .accordion-section-title .customize-theme{position:absolute;left:10px;top:50%;margin-top:-14px;font-weight:400}.control-section-themes .accordion-section-title:before{display:none}.customize-themes-panel{display:none;padding:0 8px;background:#f1f1f1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.customize-themes-panel .accordion-section-title:first-child{margin-top:0}#customize-controls .customize-themes-panel .accordion-section-title:nth-child(2){font-size:14px;font-weight:600}.customize-themes-panel>h2{padding:15px 8px 0}.control-section.open .customize-themes-panel{display:block}#customize-theme-controls .customize-themes-panel .accordion-section-content{background:0 0;display:block}.customize-control.customize-control-theme{margin-bottom:8px}#customize-theme-controls .themes.accordion-section-content{position:relative;right:0;padding:0;width:100%}.wp-customizer .theme-browser .themes{padding-bottom:8px}.wp-customizer .theme-browser .theme{margin:0;width:100%}.wp-customizer .theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.wp-customizer #themes-filter{font-size:16px;font-weight:300;line-height:1.5;width:100%}#accordion-section-themes .accordion-section-title:after{display:none}#customize-theme-controls .control-section-themes.current-panel>h3.accordion-section-title{right:0}.customize-themes-panel.control-panel-content{position:absolute;right:-100%;top:0;width:100%;border-top:1px solid #ddd}.in-themes-panel #customize-info,.in-themes-panel #customize-theme-controls>ul>.accordion-section{right:100%}.wp-customizer .theme-overlay{display:none}.wp-customizer.modal-open .theme-overlay{position:fixed;right:0;top:0;left:0;bottom:0;z-index:109}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(238,238,238,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .theme-wrap{right:90px;left:90px;top:45px;bottom:45px;z-index:120;max-width:1740px}.wp-customizer .theme-overlay .theme-actions{text-align:left}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.ie8 .wp-customizer .theme-overlay .theme-about,.ie8 .wp-customizer .theme-overlay .theme-actions,.ie8 .wp-customizer .theme-overlay .theme-header{position:static}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{right:0;left:0;top:0;bottom:0}}body.cheatin{font-size:medium;height:auto;background:#fff;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}body.cheatin h1{border-bottom:1px solid #dadada;clear:both;color:#666;font:24px "Open Sans",sans-serif;margin:30px 0 0;padding:0 0 7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:left;margin-right:10px;-webkit-transition:all .2s;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}.add-new-menu-item:before,.add-new-widget:before{content:"\f132";display:inline-block;position:relative;right:-2px;top:-1px;font:400 20px/1 dashicons;vertical-align:middle;-webkit-transition:all .2s;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.reorder-toggle{float:left;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reorder-toggle:focus{outline:dotted 1px}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none;color:#0073aa}.reorder-toggle:active .reorder-done,.reorder-toggle:focus .reorder-done,.reorder-toggle:hover .reorder-done{color:#00a0d2}.customize-controls-preview-toggle{display:none}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{margin-right:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:-32px}.customize-control input[type=radio]+label,.customize-control input[type=checkbox]+label{line-height:32px}}@media screen and (max-width:640px){#customize-controls{width:100%}.wp-full-overlay.expanded{margin-right:0}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{bottom:0}.customize-controls-preview-toggle{display:block;position:absolute;top:0;right:48px;line-height:45px;font-size:14px;padding:0 12px;margin:0;height:45px;background:#eee;border-left:1px solid #ddd;color:#444;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,#customize-preview,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:400 20px/1 dashicons;content:"\f177";position:relative;top:4px;margin-left:6px}.customize-controls-preview-toggle .controls:before{content:"\f540"}.preview-only #customize-controls{height:45px}.preview-only #customize-preview,.preview-only .customize-controls-preview-toggle .controls{display:block}#customize-preview{top:45px;bottom:0;height:auto}.wp-core-ui.wp-customizer .button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#customize-header-actions .button-primary{margin-top:6px}}
\ No newline at end of file
index 46c4170bfff4e7cc038a059c191599ebe8ad05bb..ced973516810ed59b889a7f855c600146b3ce16b 100644 (file)
@@ -82,7 +82,7 @@ body {
 #customize-controls .customize-info .panel-title {
        font-size: 20px;
        font-weight: 200;
-       line-height: 24px;
+       line-height: 26px;
        display: block;
        overflow: hidden;
        white-space: nowrap;
@@ -123,13 +123,17 @@ body {
        color: #0073aa;
 }
 
-#customize-controls .customize-info .customize-panel-description {
+#customize-controls .customize-info .customize-panel-description,
+#customize-controls .no-widget-areas-rendered-notice {
        color: #555;
        display: none;
        background: #fff;
        padding: 12px 15px;
        border-top: 1px solid #ddd;
 }
+#customize-controls .customize-info .customize-panel-description.open + .no-widget-areas-rendered-notice {
+       border-top: none;
+}
 
 #customize-controls .customize-info .customize-panel-description p:first-child {
        margin-top: 0;
@@ -207,7 +211,7 @@ body {
        left: 100%;
        width: 100%;
        margin: 0;
-       padding: 12px;
+       padding: 12px;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
        box-sizing: border-box;
@@ -318,7 +322,7 @@ h3.customize-section-title {
        display: block;
        float: left;
        width: 48px;
-       height: 69px;
+       height: 71px;
        padding: 0 24px 0 0;
        margin: 0;
        background: #fff;
@@ -332,7 +336,7 @@ h3.customize-section-title {
 }
 
 .customize-section-back {
-       height: 70px;
+       height: 74px;
 }
 
 .ios .customize-panel-back,
@@ -391,7 +395,7 @@ h3.customize-section-title {
 
 .customize-panel-back:before,
 .customize-section-back:before {
-       font: normal 20px/69px dashicons;
+       font: normal 20px/72px dashicons;
        content: "\f341";
        position: relative;
        left: 13px;
@@ -530,13 +534,25 @@ p.customize-section-description {
 }
 
 .customize-control-color .color-picker,
-.customize-control-checkbox label,
 .customize-control-upload div {
        line-height: 28px;
 }
 
-.customize-control-checkbox input {
-       margin-right: 5px;
+.customize-control-radio label,
+.customize-control-checkbox label,
+.customize-control-nav_menu_auto_add label {
+       line-height: 20px;
+       display: block;
+       margin-left: 24px;
+       padding-top: 6px;
+       padding-bottom: 6px;
+}
+
+.customize-control-radio input,
+.customize-control-checkbox input,
+.customize-control-nav_menu_auto_add input {
+       margin-right: 4px;
+       margin-left: -24px;
 }
 
 .customize-control-radio {
@@ -552,14 +568,6 @@ p.customize-section-description {
        margin-top: 7px;
 }
 
-.customize-control-radio label {
-       line-height: 32px;
-}
-
-.customize-control-radio input {
-       margin-right: 5px;
-}
-
 .customize-control .attachment-thumb.type-icon {
        float: left;
        margin: 10px;
@@ -611,9 +619,10 @@ p.customize-section-description {
 
 /* Style for custom settings */
 
-/*
+/**
  * Dropdowns
  */
+
 .accordion-section .dropdown {
        float: left;
        display: block;
@@ -647,7 +656,7 @@ p.customize-section-description {
 
 .customize-control .dropdown-arrow:after {
        content: "\f140";
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        display: block;
        padding: 0;
@@ -694,6 +703,7 @@ p.customize-section-description {
  * iOS can't scroll iframes,
  * instead it expands the iframe size to match the size of the content
  */
+
 .ios .wp-full-overlay {
        position: relative;
 }
@@ -706,7 +716,7 @@ p.customize-section-description {
        -webkit-overflow-scrolling: touch;
 }
 
-/** Media controls **/
+/* Media controls */
 
 .customize-control-media .current,
 .customize-control-upload .current,
@@ -991,6 +1001,7 @@ p.customize-section-description {
 /**
  * Themes
  */
+
 @-webkit-keyframes customize-reload {
        0%   { opacity: 0; }
        100% { opacity: 1; }
@@ -1208,18 +1219,104 @@ body.cheatin {
        box-shadow: 0 1px 3px rgba(0,0,0,0.13);
 }
 
+body.cheatin h1 {
+       border-bottom: 1px solid #dadada;
+       clear: both;
+       color: #666;
+       font: 24px "Open Sans", sans-serif;
+       margin: 30px 0 0 0;
+       padding: 0;
+       padding-bottom: 7px;
+}
+
 body.cheatin p {
        font-size: 14px;
        line-height: 1.5;
        margin: 25px 0 20px;
 }
 
+/**
+ * Widgets and Menus common styles
+ */
+
+/* higher specificity than .wp-core-ui .button-secondary */
+#customize-theme-controls .add-new-widget,
+#customize-theme-controls .add-new-menu-item {
+       cursor: pointer;
+       float: right;
+       margin-left: 10px;
+       -webkit-transition: all 0.2s;
+       transition: all 0.2s;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+       outline: none;
+}
+
+.reordering .add-new-widget,
+.reordering .add-new-menu-item {
+       opacity: 0.2;
+       pointer-events: none;
+       cursor: not-allowed; /* doesn't work in conjunction with pointer-events */
+}
+
+.add-new-widget:before,
+.add-new-menu-item:before {
+       content: "\f132";
+       display: inline-block;
+       position: relative;
+       left: -2px;
+       top: -1px;
+       font: normal 20px/1 dashicons;
+       vertical-align: middle;
+       -webkit-transition: all 0.2s;
+       transition: all 0.2s;
+       -webkit-font-smoothing: antialiased;
+       -moz-osx-font-smoothing: grayscale;
+}
+
+/* Reordering */
+.reorder-toggle {
+       float: right;
+       padding: 5px 8px;
+       text-decoration: none;
+       cursor: pointer;
+       outline: none;
+       -webkit-user-select: none;
+       -moz-user-select: none;
+       -ms-user-select: none;
+       user-select: none;
+}
+
+.reorder-toggle:focus {
+       outline: 1px dotted;
+}
+
+.reorder,
+.reordering .reorder-done {
+       display: block;
+       padding: 5px 8px;
+}
+
+.reorder-done,
+.reordering .reorder {
+       display: none;
+       color: #0073aa;
+}
+
+.reorder-toggle:hover .reorder-done,
+.reorder-toggle:active .reorder-done,
+.reorder-toggle:focus .reorder-done {
+       color: #00a0d2;
+}
+
 /* Responsive */
 .customize-controls-preview-toggle {
        display: none;
 }
 
-@media only screen and (max-width: 780px) {
+@media only screen and (max-width: 782px) {
        .wp-customizer .theme:not(.active):hover .theme-actions,
        .wp-customizer .theme:not(.active):focus .theme-actions {
                display: block;
@@ -1228,6 +1325,23 @@ body.cheatin p {
        .wp-customizer .theme-browser .theme.active .theme-name span {
                display: inline;
        }
+
+       .customize-control-radio label,
+       .customize-control-checkbox label,
+       .customize-control-nav_menu_auto_add label {
+               margin-left: 32px;
+       }
+
+       .customize-control-radio input,
+       .customize-control-checkbox input,
+       .customize-control-nav_menu_auto_add input {
+               margin-left: -32px;
+       }
+
+       .customize-control input[type="radio"] + label,
+       .customize-control input[type="checkbox"] + label {
+               line-height: 32px;
+       }
 }
 
 @media screen and ( max-width: 640px ) {
index 159987bdca47c8ae94b4467af184e7fc4a1e68fc..7e58fd170ffda7c18f50b80c55da9abc4b0b7aea 100644 (file)
@@ -1 +1 @@
-body{overflow:hidden;-webkit-text-size-adjust:100%}#customize-controls a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls .description{color:#555}#customize-header-actions .button-primary{float:right;margin-top:9px}#customize-header-actions .spinner{margin-top:13px;margin-right:4px}.saving #customize-header-actions .spinner{visibility:visible}#customize-header-actions{border-bottom:1px solid #ddd}#customize-controls .wp-full-overlay-sidebar-content{overflow-y:auto;overflow-x:hidden}#customize-controls .customize-info{border:none;border-top:1px solid #ddd;border-bottom:1px solid #ddd;margin-bottom:15px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#555;border-left:none;border-right:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#333}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:24px}#customize-controls .control-section .customize-section-title h3,#customize-controls .control-section h3.customize-section-title,#customize-controls .customize-info .panel-title{font-size:20px;font-weight:200;line-height:24px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;right:1px;padding:20px 20px 10px 10px;width:20px;height:20px;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;background:0 0;color:#555;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;left:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}#customize-controls .customize-info .customize-panel-description{color:#555;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-right:30px}#customize-theme-controls .control-section{border:none}#customize-theme-controls .accordion-section-title{color:#555;background-color:#fff;border-bottom:1px solid #eee}#customize-theme-controls .accordion-section-title:after{content:"\f345"}#customize-theme-controls .accordion-section-content{color:#555;background:0 0;position:absolute;top:0;left:100%;width:100%;margin:0;padding:12px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#customize-controls .control-section .accordion-section-title:focus,#customize-controls .control-section .accordion-section-title:hover,#customize-controls .control-section.open .accordion-section-title,#customize-controls .control-section:hover>.accordion-section-title{color:#23282d;background:#f5f5f5}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f5f5f5}#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#23282d}#customize-theme-controls .control-section.open{border-bottom:1px solid #eee}#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#eee!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#ddd}#customize-theme-controls>ul{margin:0}.customize-section-description-container{margin-bottom:15px}.customize-section-title{margin:-12px -12px 0;border-bottom:1px solid #ddd;background:#fff}div.customize-section-description{margin-top:22px}div.customize-section-description p:first-child{margin-top:0}div.customize-section-description p:last-child{margin-bottom:0}#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{border-bottom:1px solid #ddd;padding:12px}.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{padding:12px 12px 13px}.customize-section-title h3,h3.customize-section-title{padding:10px 10px 12px 14px;margin:0;line-height:21px;color:#555}#customize-theme-controls{position:relative;left:0;-webkit-transition:.18s left ease-in-out;transition:.18s left ease-in-out}.ios #customize-theme-controls{-webkit-transition:left 0s;transition:left 0s}.section-open #customize-info,.section-open #customize-theme-controls{left:-100%}.accordion-sub-container.control-panel-content{display:none;position:absolute;left:300px;top:0;width:300px;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.ios .accordion-sub-container.control-panel-content{-webkit-transition:left 0s;transition:left 0s}.accordion-sub-container.control-panel-content.animating{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;left:0;width:45px;height:45px;padding:0 2px 0 0;background:#eee;border:none;border-right:1px solid #ddd;color:#444;text-align:left;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:left;width:48px;height:69px;padding:0 24px 0 0;margin:0;background:#fff;border:none;border-right:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-transition:left .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out;transition:left .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out}.customize-section-back{height:70px}.ios .customize-panel-back,.ios .customize-section-back{-webkit-transition:left 0s;transition:left 0s}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}.panel-meta.customize-info .accordion-section-title{margin-left:48px}#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#555}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#23282d;background:#f5f5f5;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-controls-close:before{font:400 22px/45px dashicons;content:"\f335";position:relative;top:1px;left:13px}.customize-panel-back:before,.customize-section-back:before{font:400 20px/69px dashicons;content:"\f341";position:relative;left:13px}.wp-full-overlay-sidebar .wp-full-overlay-header{-webkit-transition:padding ease-in-out .18s;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-left:62px}#customize-info,#customize-theme-controls>ul>.accordion-section{position:relative;left:0;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.ios #customize-info,.ios #customize-theme-controls>ul>.accordion-section{-webkit-transition:left 0s;transition:left 0s}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls>ul>.accordion-section{left:-300px;width:300px}.in-sub-panel #customize-theme-controls .accordion-section.current-panel{width:100%}#customize-theme-controls .control-section.current-panel{padding:0}#customize-theme-controls .control-section>h3.accordion-section-title{position:relative;left:0}#customize-theme-controls .control-section.current-panel>h3.accordion-section-title{left:-354px;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.ios #customize-theme-controls .control-section.current-panel>h3.accordion-section-title{-webkit-transition:left 0s;transition:left 0s}.wp-full-overlay.section-open #customize-controls .wp-full-overlay-sidebar-content{visibility:hidden;overflow-y:hidden}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open{visibility:visible}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open .accordion-section-content{overflow-y:auto}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-control{width:100%;float:left;clear:both;margin-bottom:12px}.customize-control input[type=radio],.customize-control input[type=checkbox],.customize-control select{line-height:28px}.customize-control input[type=tel],.customize-control input[type=url],.customize-control input[type=text],.customize-control input[type=password],.customize-control input[type=email],.customize-control input[type=number],.customize-control input[type=search]{width:98%;line-height:18px;margin:0}.customize-control-hidden{margin:0}.customize-control-checkbox input,.customize-control-radio input{margin-right:5px}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{min-width:50%;max-width:100%;height:28px;line-height:28px}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:24px;font-weight:600;margin-bottom:5px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-bottom:5px}.customize-control-checkbox label,.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control-radio label{line-height:32px}.customize-control .attachment-thumb.type-icon{float:left;margin:10px;width:auto}.customize-control .attachment-title{font-weight:700;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image{line-height:0}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:left}#customize-preview iframe{width:100%;height:100%}.wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}.accordion-section .dropdown{float:left;display:block;position:relative;cursor:pointer}.accordion-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;border:2px solid #eee;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:20px;background:#eee}.customize-control .dropdown-arrow:after{content:"\f140";font:400 20px/1 dashicons;speak:none;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#32373c}.customize-control .dropdown-status{color:#32373c;background:#eee;display:none;max-width:112px}.customize-control-color .color-picker-hex{display:none}.customize-control-color.open .color-picker-hex,.customize-control-header button img{display:block}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#555;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios #customize-preview,.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control-background .current,.customize-control-cropped_image .current,.customize-control-header .current,.customize-control-image .current,.customize-control-media .current,.customize-control-site_icon .current,.customize-control-upload .current{margin-bottom:8px}.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control-background .default-button,.customize-control-background .remove-button,.customize-control-background .upload-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-cropped_image .upload-button,.customize-control-header button.new,.customize-control-header button.remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-image .upload-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-media .upload-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-site_icon .upload-button,.customize-control-upload .default-button,.customize-control-upload .remove-button,.customize-control-upload .upload-button{white-space:normal;width:48%;height:auto}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-header .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{overflow:hidden;border:1px solid #eee;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{min-height:40px}.customize-control-background .placeholder,.customize-control-cropped_image .placeholder,.customize-control-header .placeholder,.customize-control-image .placeholder,.customize-control-media .placeholder,.customize-control-site_icon .placeholder,.customize-control-upload .placeholder{width:100%;position:relative;text-align:center;cursor:default}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:none;position:absolute;width:100%;color:#555;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:block;min-height:40px}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-header .inner .dashicons,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{line-height:20px;top:10px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:5px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border:0}.customize-control-header .header-view.selected:after{content:'';position:absolute;height:auto;top:0;left:0;bottom:0;right:0;border:4px solid #00a0d2;-webkit-border-radius:2px;border-radius:2px}.customize-control-header .header-view.button.selected{border:0}.customize-control-header .uploaded .header-view .close{font-size:20px;color:#fff;background:#555;background:rgba(0,0,0,.5);position:absolute;top:10px;right:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{right:10px}.customize-control-header .random.placeholder{cursor:pointer;-webkit-border-radius:2px;border-radius:2px;height:40px}.customize-control-header button.random{width:100%;height:auto;min-height:40px;white-space:normal}.customize-control-header button.random .dice{margin-top:4px}.customize-control-header .header-view:hover>button.random .dice,.customize-control-header .placeholder:hover .dice{-webkit-animation:dice-color-change 3s infinite;animation:dice-color-change 3s infinite}@-webkit-keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}@keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}.customize-control-background .actions,.customize-control-cropped_image .actions,.customize-control-header .actions,.customize-control-image .actions,.customize-control-media .actions,.customize-control-site_icon .actions,.customize-control-upload .actions{margin-bottom:32px}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control-background img,.customize-control-cropped_image img,.customize-control-header img,.customize-control-image img,.customize-control-media img,.customize-control-site_icon img,.customize-control-upload img{width:100%;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .default-button,.customize-control-background .remove-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-header .remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-upload .default-button,.customize-control-upload .remove-button{float:left;margin-right:3px}.customize-control-background .upload-button,.customize-control-cropped_image .upload-button,.customize-control-header .new,.customize-control-image .upload-button,.customize-control-media .upload-button,.customize-control-site_icon .upload-button,.customize-control-upload .upload-button{float:right}@-webkit-keyframes customize-reload{0%{opacity:0}100%{opacity:1}}@keyframes customize-reload{0%{opacity:0}100%{opacity:1}}.wp-customizer .customize-loading #customize-container{display:block;-webkit-animation:customize-reload .75s;animation:customize-reload .75s}.control-section-themes .accordion-section-title{cursor:default;margin:15px 0;padding-right:100px}#customize-theme-controls .control-section-themes .accordion-section-title:focus,#customize-theme-controls .control-section-themes .accordion-section-title:hover{color:#555;background-color:#fff}.customize-themes-panel .accordion-section-title{margin:15px -8px}#customize-controls .customize-section-title span.customize-action,.control-section-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}.control-section-themes .accordion-section-title .change-theme,.control-section-themes .accordion-section-title .customize-theme{position:absolute;right:10px;top:50%;margin-top:-14px;font-weight:400}.control-section-themes .accordion-section-title:before{display:none}.customize-themes-panel{display:none;padding:0 8px;background:#f1f1f1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.customize-themes-panel .accordion-section-title:first-child{margin-top:0}#customize-controls .customize-themes-panel .accordion-section-title:nth-child(2){font-size:14px;font-weight:600}.customize-themes-panel>h2{padding:15px 8px 0}.control-section.open .customize-themes-panel{display:block}#customize-theme-controls .customize-themes-panel .accordion-section-content{background:0 0;display:block}#accordion-section-themes .accordion-section-title:after,.customize-controls-preview-toggle,.wp-customizer .theme-overlay{display:none}.customize-control.customize-control-theme{margin-bottom:8px}#customize-theme-controls .themes.accordion-section-content{position:relative;left:0;padding:0;width:100%}.wp-customizer .theme-browser .themes{padding-bottom:8px}.wp-customizer .theme-browser .theme{margin:0;width:100%}.wp-customizer .theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.wp-customizer #themes-filter{font-size:16px;font-weight:300;line-height:1.5;width:100%}#customize-theme-controls .control-section-themes.current-panel>h3.accordion-section-title{left:0}.customize-themes-panel.control-panel-content{position:absolute;left:-100%;top:0;width:100%;border-top:1px solid #ddd}.in-themes-panel #customize-info,.in-themes-panel #customize-theme-controls>ul>.accordion-section{left:100%}.wp-customizer.modal-open .theme-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:109}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(238,238,238,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .theme-wrap{left:90px;right:90px;top:45px;bottom:45px;z-index:120;max-width:1740px}.wp-customizer .theme-overlay .theme-actions{text-align:right}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.ie8 .wp-customizer .theme-overlay .theme-about,.ie8 .wp-customizer .theme-overlay .theme-actions,.ie8 .wp-customizer .theme-overlay .theme-header{position:static}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{left:0;right:0;top:0;bottom:0}}body.cheatin{font-size:medium;height:auto;background:#fff;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}@media only screen and (max-width:780px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}}@media screen and (max-width:640px){#customize-controls{width:100%}.wp-full-overlay.expanded{margin-left:0}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{bottom:0}.customize-controls-preview-toggle{display:block;position:absolute;top:0;left:48px;line-height:45px;font-size:14px;padding:0 12px;margin:0;height:45px;background:#eee;border-right:1px solid #ddd;color:#444;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,#customize-preview,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:400 20px/1 dashicons;content:"\f177";position:relative;top:4px;margin-right:6px}.customize-controls-preview-toggle .controls:before{content:"\f540"}.preview-only #customize-controls{height:45px}.preview-only #customize-preview,.preview-only .customize-controls-preview-toggle .controls{display:block}#customize-preview{top:45px;bottom:0;height:auto}.wp-core-ui.wp-customizer .button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#customize-header-actions .button-primary{margin-top:6px}}
\ No newline at end of file
+body{overflow:hidden;-webkit-text-size-adjust:100%}#customize-controls a{text-decoration:none}#customize-controls h3{font-size:14px}#customize-controls img{max-width:100%}#customize-controls .submit{text-align:center}#customize-controls .description{color:#555}#customize-header-actions .button-primary{float:right;margin-top:9px}#customize-header-actions .spinner{margin-top:13px;margin-right:4px}.saving #customize-header-actions .spinner{visibility:visible}#customize-header-actions{border-bottom:1px solid #ddd}#customize-controls .wp-full-overlay-sidebar-content{overflow-y:auto;overflow-x:hidden}#customize-controls .customize-info{border:none;border-top:1px solid #ddd;border-bottom:1px solid #ddd;margin-bottom:15px}#customize-controls .customize-info .accordion-section-title{background:#fff;color:#555;border-left:none;border-right:none;border-bottom:none;cursor:default}#customize-controls .customize-info .accordion-section-title:focus:after,#customize-controls .customize-info .accordion-section-title:hover:after,#customize-controls .customize-info.open .accordion-section-title:after{color:#333}#customize-controls .customize-info .accordion-section-title:after{display:none}#customize-controls .customize-info .preview-notice{font-size:13px;line-height:24px}#customize-controls .control-section .customize-section-title h3,#customize-controls .control-section h3.customize-section-title,#customize-controls .customize-info .panel-title{font-size:20px;font-weight:200;line-height:26px;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-section-title span.customize-action{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#customize-controls .customize-info .customize-help-toggle{position:absolute;top:4px;right:1px;padding:20px 20px 10px 10px;width:20px;height:20px;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-appearance:none;background:0 0;color:#555;border:none}#customize-controls .customize-info .customize-help-toggle:before{position:absolute;top:5px;left:6px}#customize-controls .customize-info .customize-help-toggle:focus,#customize-controls .customize-info .customize-help-toggle:hover,#customize-controls .customize-info.open .customize-help-toggle{color:#0073aa}#customize-controls .customize-info .customize-panel-description,#customize-controls .no-widget-areas-rendered-notice{color:#555;display:none;background:#fff;padding:12px 15px;border-top:1px solid #ddd}#customize-controls .customize-info .customize-panel-description.open+.no-widget-areas-rendered-notice{border-top:none}#customize-controls .customize-info .customize-panel-description p:first-child{margin-top:0}#customize-controls .customize-info .customize-panel-description p:last-child{margin-bottom:0}#customize-controls .current-panel .control-section>h3.accordion-section-title{padding-right:30px}#customize-theme-controls .control-section{border:none}#customize-theme-controls .accordion-section-title{color:#555;background-color:#fff;border-bottom:1px solid #eee}#customize-theme-controls .accordion-section-title:after{content:"\f345"}#customize-theme-controls .accordion-section-content{color:#555;background:0 0;position:absolute;top:0;left:100%;width:100%;margin:0;padding:12px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#customize-controls .control-section .accordion-section-title:focus,#customize-controls .control-section .accordion-section-title:hover,#customize-controls .control-section.open .accordion-section-title,#customize-controls .control-section:hover>.accordion-section-title{color:#23282d;background:#f5f5f5}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{background:#f5f5f5}#customize-theme-controls .control-section .accordion-section-title:focus:after,#customize-theme-controls .control-section .accordion-section-title:hover:after,#customize-theme-controls .control-section.open .accordion-section-title:after,#customize-theme-controls .control-section:hover>.accordion-section-title:after{color:#23282d}#customize-theme-controls .control-section.open{border-bottom:1px solid #eee}#customize-theme-controls .control-section.open .accordion-section-title{border-bottom-color:#eee!important}#customize-theme-controls .control-section:last-of-type.open,#customize-theme-controls .control-section:last-of-type>.accordion-section-title{border-bottom-color:#ddd}#customize-theme-controls>ul{margin:0}.customize-section-description-container{margin-bottom:15px}.customize-section-title{margin:-12px -12px 0;border-bottom:1px solid #ddd;background:#fff}div.customize-section-description{margin-top:22px}div.customize-section-description p:first-child{margin-top:0}div.customize-section-description p:last-child{margin-bottom:0}#customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{border-bottom:1px solid #ddd;padding:12px}.ios #customize-theme-controls .customize-themes-panel h3.customize-section-title:first-child{padding:12px 12px 13px}.customize-section-title h3,h3.customize-section-title{padding:10px 10px 12px 14px;margin:0;line-height:21px;color:#555}#customize-theme-controls{position:relative;left:0;-webkit-transition:.18s left ease-in-out;transition:.18s left ease-in-out}.ios #customize-theme-controls{-webkit-transition:left 0s;transition:left 0s}.section-open #customize-info,.section-open #customize-theme-controls{left:-100%}.accordion-sub-container.control-panel-content{display:none;position:absolute;left:300px;top:0;width:300px;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.ios .accordion-sub-container.control-panel-content{-webkit-transition:left 0s;transition:left 0s}.accordion-sub-container.control-panel-content.animating{display:block}.current-panel .accordion-sub-container.control-panel-content{width:100%}.customize-controls-close{display:block;position:absolute;top:0;left:0;width:45px;height:45px;padding:0 2px 0 0;background:#eee;border:none;border-right:1px solid #ddd;color:#444;text-align:left;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.customize-panel-back,.customize-section-back{display:block;float:left;width:48px;height:71px;padding:0 24px 0 0;margin:0;background:#fff;border:none;border-right:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;cursor:pointer;-webkit-transition:left .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out;transition:left .18s ease-in-out,color .1s ease-in-out,background .1s ease-in-out}.customize-section-back{height:74px}.ios .customize-panel-back,.ios .customize-section-back{-webkit-transition:left 0s;transition:left 0s}.ios .customize-panel-back{display:none}.ios .expanded.in-sub-panel .customize-panel-back{display:block}.panel-meta.customize-info .accordion-section-title{margin-left:48px}#customize-controls .panel-meta.customize-info .accordion-section-title:hover{background:#fff;color:#555}.customize-controls-close:focus,.customize-controls-close:hover,.customize-controls-preview-toggle:focus,.customize-controls-preview-toggle:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-panel-back:focus,.customize-panel-back:hover,.customize-section-back:focus,.customize-section-back:hover{color:#23282d;background:#f5f5f5;outline:0;-webkit-box-shadow:none;box-shadow:none}.customize-controls-close:before{font:400 22px/45px dashicons;content:"\f335";position:relative;top:1px;left:13px}.customize-panel-back:before,.customize-section-back:before{font:400 20px/72px dashicons;content:"\f341";position:relative;left:13px}.wp-full-overlay-sidebar .wp-full-overlay-header{-webkit-transition:padding ease-in-out .18s;transition:padding ease-in-out .18s}.in-sub-panel .wp-full-overlay-sidebar .wp-full-overlay-header{padding-left:62px}#customize-info,#customize-theme-controls>ul>.accordion-section{position:relative;left:0;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.ios #customize-info,.ios #customize-theme-controls>ul>.accordion-section{-webkit-transition:left 0s;transition:left 0s}.in-sub-panel #customize-info,.in-sub-panel #customize-theme-controls>ul>.accordion-section{left:-300px;width:300px}.in-sub-panel #customize-theme-controls .accordion-section.current-panel{width:100%}#customize-theme-controls .control-section.current-panel{padding:0}#customize-theme-controls .control-section>h3.accordion-section-title{position:relative;left:0}#customize-theme-controls .control-section.current-panel>h3.accordion-section-title{left:-354px;-webkit-transition:left ease-in-out .18s;transition:left ease-in-out .18s}.ios #customize-theme-controls .control-section.current-panel>h3.accordion-section-title{-webkit-transition:left 0s;transition:left 0s}.wp-full-overlay.section-open #customize-controls .wp-full-overlay-sidebar-content{visibility:hidden;overflow-y:hidden}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open{visibility:visible}.wp-full-overlay.section-open .wp-full-overlay-sidebar-content .accordion-section.open .accordion-section-content{overflow-y:auto}p.customize-section-description{font-style:normal;margin-top:22px;margin-bottom:0}.customize-control{width:100%;float:left;clear:both;margin-bottom:12px}.customize-control input[type=radio],.customize-control input[type=checkbox],.customize-control select{line-height:28px}.customize-control input[type=tel],.customize-control input[type=url],.customize-control input[type=text],.customize-control input[type=password],.customize-control input[type=email],.customize-control input[type=number],.customize-control input[type=search]{width:98%;line-height:18px;margin:0}.customize-control-hidden{margin:0}.customize-control-textarea textarea{width:100%;resize:vertical}.customize-control select{min-width:50%;max-width:100%;height:28px;line-height:28px}.customize-control select[multiple]{height:auto}.customize-control-title{display:block;font-size:14px;line-height:24px;font-weight:600;margin-bottom:5px}.customize-control-description{display:block;font-style:italic;line-height:18px;margin-bottom:5px}.customize-control-color .color-picker,.customize-control-upload div{line-height:28px}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{line-height:20px;display:block;margin-left:24px;padding-top:6px;padding-bottom:6px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-right:4px;margin-left:-24px}.customize-control-radio{padding:5px 0 10px}.customize-control-radio .customize-control-title{margin-bottom:0;line-height:22px}.customize-control-radio .customize-control-title+.customize-control-description{margin-top:7px}.customize-control .attachment-thumb.type-icon{float:left;margin:10px;width:auto}.customize-control .attachment-title{font-weight:700;margin:0;padding:5px 10px}.customize-control .attachment-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0;padding:0 10px}.customize-control .attachment-meta-title{padding-top:7px}.customize-control .thumbnail-image{line-height:0}.customize-control .thumbnail-image img{cursor:pointer}#customize-controls .thumbnail-audio .thumbnail{max-width:64px;max-height:64px;margin:10px;float:left}#customize-preview iframe{width:100%;height:100%}.wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}.accordion-section .dropdown{float:left;display:block;position:relative;cursor:pointer}.accordion-section .dropdown-content{overflow:hidden;float:left;min-width:30px;height:16px;line-height:16px;margin-right:16px;padding:4px 5px;border:2px solid #eee;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.customize-control .dropdown-arrow{position:absolute;top:0;bottom:0;right:0;width:20px;background:#eee}.customize-control .dropdown-arrow:after{content:"\f140";font:400 20px/1 dashicons;speak:none;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#32373c}.customize-control .dropdown-status{color:#32373c;background:#eee;display:none;max-width:112px}.customize-control-color .color-picker-hex{display:none}.customize-control-color.open .color-picker-hex,.customize-control-header button img{display:block}.customize-control-color .dropdown{margin-right:5px;margin-bottom:5px}.customize-control-color .dropdown .dropdown-content{background-color:#555;border:1px solid rgba(0,0,0,.15)}.customize-control-color .dropdown:hover .dropdown-content{border-color:rgba(0,0,0,.25)}.ios #customize-preview,.ios .wp-full-overlay{position:relative}.ios #customize-controls .wp-full-overlay-sidebar-content{-webkit-overflow-scrolling:touch}.customize-control-background .current,.customize-control-cropped_image .current,.customize-control-header .current,.customize-control-image .current,.customize-control-media .current,.customize-control-site_icon .current,.customize-control-upload .current{margin-bottom:8px}.customize-control-header .uploaded{margin-bottom:18px}.customize-control-header .default button:not(.random),.customize-control-header .uploaded button:not(.random){width:100%;padding:0;margin:0;background:0 0;border:none;color:inherit;cursor:pointer}.customize-control-background .default-button,.customize-control-background .remove-button,.customize-control-background .upload-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-cropped_image .upload-button,.customize-control-header button.new,.customize-control-header button.remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-image .upload-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-media .upload-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-site_icon .upload-button,.customize-control-upload .default-button,.customize-control-upload .remove-button,.customize-control-upload .upload-button{white-space:normal;width:48%;height:auto}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-header .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{overflow:hidden;border:1px solid #eee;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .current .container,.customize-control-cropped_image .current .container,.customize-control-image .current .container,.customize-control-media .current .container,.customize-control-site_icon .current .container,.customize-control-upload .current .container{min-height:40px}.customize-control-background .placeholder,.customize-control-cropped_image .placeholder,.customize-control-header .placeholder,.customize-control-image .placeholder,.customize-control-media .placeholder,.customize-control-site_icon .placeholder,.customize-control-upload .placeholder{width:100%;position:relative;text-align:center;cursor:default}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:none;position:absolute;width:100%;color:#555;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{display:block;min-height:40px}.customize-control-background .inner,.customize-control-cropped_image .inner,.customize-control-header .inner,.customize-control-header .inner .dashicons,.customize-control-image .inner,.customize-control-media .inner,.customize-control-site_icon .inner,.customize-control-upload .inner{line-height:20px;top:10px}.customize-control-header .list .inner,.customize-control-header .list .inner .dashicons{top:9px}.customize-control-header .header-view{position:relative;width:100%;margin-bottom:5px}.customize-control-header .header-view:last-child{margin-bottom:0}.customize-control-header .header-view:after{border:0}.customize-control-header .header-view.selected:after{content:'';position:absolute;height:auto;top:0;left:0;bottom:0;right:0;border:4px solid #00a0d2;-webkit-border-radius:2px;border-radius:2px}.customize-control-header .header-view.button.selected{border:0}.customize-control-header .uploaded .header-view .close{font-size:20px;color:#fff;background:#555;background:rgba(0,0,0,.5);position:absolute;top:10px;right:-999px;z-index:1;width:26px;height:26px;cursor:pointer}.customize-control-header .header-view .close:focus,.customize-control-header .header-view:hover .close{right:10px}.customize-control-header .random.placeholder{cursor:pointer;-webkit-border-radius:2px;border-radius:2px;height:40px}.customize-control-header button.random{width:100%;height:auto;min-height:40px;white-space:normal}.customize-control-header button.random .dice{margin-top:4px}.customize-control-header .header-view:hover>button.random .dice,.customize-control-header .placeholder:hover .dice{-webkit-animation:dice-color-change 3s infinite;animation:dice-color-change 3s infinite}@-webkit-keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}@keyframes dice-color-change{0%,100%{color:#d4b146}50%{color:#ef54b0}75%{color:#7190d3}}.customize-control-background .actions,.customize-control-cropped_image .actions,.customize-control-header .actions,.customize-control-image .actions,.customize-control-media .actions,.customize-control-site_icon .actions,.customize-control-upload .actions{margin-bottom:32px}.customize-control-header .choice{position:relative;display:block;margin-bottom:9px}.customize-control-header .uploaded div:last-child>.choice{margin-bottom:0}.customize-control-background img,.customize-control-cropped_image img,.customize-control-header img,.customize-control-image img,.customize-control-media img,.customize-control-site_icon img,.customize-control-upload img{width:100%;-webkit-border-radius:2px;border-radius:2px}.customize-control-background .default-button,.customize-control-background .remove-button,.customize-control-cropped_image .default-button,.customize-control-cropped_image .remove-button,.customize-control-header .remove,.customize-control-image .default-button,.customize-control-image .remove-button,.customize-control-media .default-button,.customize-control-media .remove-button,.customize-control-site_icon .default-button,.customize-control-site_icon .remove-button,.customize-control-upload .default-button,.customize-control-upload .remove-button{float:left;margin-right:3px}.customize-control-background .upload-button,.customize-control-cropped_image .upload-button,.customize-control-header .new,.customize-control-image .upload-button,.customize-control-media .upload-button,.customize-control-site_icon .upload-button,.customize-control-upload .upload-button{float:right}@-webkit-keyframes customize-reload{0%{opacity:0}100%{opacity:1}}@keyframes customize-reload{0%{opacity:0}100%{opacity:1}}.wp-customizer .customize-loading #customize-container{display:block;-webkit-animation:customize-reload .75s;animation:customize-reload .75s}.control-section-themes .accordion-section-title{cursor:default;margin:15px 0;padding-right:100px}#customize-theme-controls .control-section-themes .accordion-section-title:focus,#customize-theme-controls .control-section-themes .accordion-section-title:hover{color:#555;background-color:#fff}.customize-themes-panel .accordion-section-title{margin:15px -8px}#customize-controls .customize-section-title span.customize-action,.control-section-themes .accordion-section-title span.customize-action{font-size:13px;display:block;font-weight:400}.control-section-themes .accordion-section-title .change-theme,.control-section-themes .accordion-section-title .customize-theme{position:absolute;right:10px;top:50%;margin-top:-14px;font-weight:400}.control-section-themes .accordion-section-title:before{display:none}.customize-themes-panel{display:none;padding:0 8px;background:#f1f1f1;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.customize-themes-panel .accordion-section-title:first-child{margin-top:0}#customize-controls .customize-themes-panel .accordion-section-title:nth-child(2){font-size:14px;font-weight:600}.customize-themes-panel>h2{padding:15px 8px 0}.control-section.open .customize-themes-panel{display:block}#customize-theme-controls .customize-themes-panel .accordion-section-content{background:0 0;display:block}.customize-control.customize-control-theme{margin-bottom:8px}#customize-theme-controls .themes.accordion-section-content{position:relative;left:0;padding:0;width:100%}.wp-customizer .theme-browser .themes{padding-bottom:8px}.wp-customizer .theme-browser .theme{margin:0;width:100%}.wp-customizer .theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}#customize-controls h3.theme-name{font-size:15px}#customize-controls .theme-overlay .theme-name{font-size:32px}.wp-customizer #themes-filter{font-size:16px;font-weight:300;line-height:1.5;width:100%}#accordion-section-themes .accordion-section-title:after{display:none}#customize-theme-controls .control-section-themes.current-panel>h3.accordion-section-title{left:0}.customize-themes-panel.control-panel-content{position:absolute;left:-100%;top:0;width:100%;border-top:1px solid #ddd}.in-themes-panel #customize-info,.in-themes-panel #customize-theme-controls>ul>.accordion-section{left:100%}.wp-customizer .theme-overlay{display:none}.wp-customizer.modal-open .theme-overlay{position:fixed;left:0;top:0;right:0;bottom:0;z-index:109}.wp-customizer .theme-overlay .theme-backdrop{background:rgba(238,238,238,.75);position:fixed;z-index:110}.wp-customizer .theme-overlay .theme-wrap{left:90px;right:90px;top:45px;bottom:45px;z-index:120;max-width:1740px}.wp-customizer .theme-overlay .theme-actions{text-align:right}.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content{overflow:visible}.ie8 .wp-customizer .theme-overlay .theme-about,.ie8 .wp-customizer .theme-overlay .theme-actions,.ie8 .wp-customizer .theme-overlay .theme-header{position:static}@media (max-width:850px),(max-height:472px){.wp-customizer .theme-overlay .theme-wrap{left:0;right:0;top:0;bottom:0}}body.cheatin{font-size:medium;height:auto;background:#fff;margin:50px auto 2em;padding:1em 2em;max-width:700px;min-width:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}body.cheatin h1{border-bottom:1px solid #dadada;clear:both;color:#666;font:24px "Open Sans",sans-serif;margin:30px 0 0;padding:0 0 7px}body.cheatin p{font-size:14px;line-height:1.5;margin:25px 0 20px}#customize-theme-controls .add-new-menu-item,#customize-theme-controls .add-new-widget{cursor:pointer;float:right;margin-left:10px;-webkit-transition:all .2s;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.reordering .add-new-menu-item,.reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}.add-new-menu-item:before,.add-new-widget:before{content:"\f132";display:inline-block;position:relative;left:-2px;top:-1px;font:400 20px/1 dashicons;vertical-align:middle;-webkit-transition:all .2s;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.reorder-toggle{float:right;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reorder-toggle:focus{outline:dotted 1px}.reorder,.reordering .reorder-done{display:block;padding:5px 8px}.reorder-done,.reordering .reorder{display:none;color:#0073aa}.reorder-toggle:active .reorder-done,.reorder-toggle:focus .reorder-done,.reorder-toggle:hover .reorder-done{color:#00a0d2}.customize-controls-preview-toggle{display:none}@media only screen and (max-width:782px){.wp-customizer .theme:not(.active):focus .theme-actions,.wp-customizer .theme:not(.active):hover .theme-actions{display:block}.wp-customizer .theme-browser .theme.active .theme-name span{display:inline}.customize-control-checkbox label,.customize-control-nav_menu_auto_add label,.customize-control-radio label{margin-left:32px}.customize-control-checkbox input,.customize-control-nav_menu_auto_add input,.customize-control-radio input{margin-left:-32px}.customize-control input[type=radio]+label,.customize-control input[type=checkbox]+label{line-height:32px}}@media screen and (max-width:640px){#customize-controls{width:100%}.wp-full-overlay.expanded{margin-left:0}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{bottom:0}.customize-controls-preview-toggle{display:block;position:absolute;top:0;left:48px;line-height:45px;font-size:14px;padding:0 12px;margin:0;height:45px;background:#eee;border-right:1px solid #ddd;color:#444;cursor:pointer;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}#customize-footer-actions,#customize-preview,.customize-controls-preview-toggle .controls,.preview-only .customize-controls-preview-toggle .preview,.preview-only .wp-full-overlay-sidebar-content{display:none}.customize-controls-preview-toggle .controls:before,.customize-controls-preview-toggle .preview:before{font:400 20px/1 dashicons;content:"\f177";position:relative;top:4px;margin-right:6px}.customize-controls-preview-toggle .controls:before{content:"\f540"}.preview-only #customize-controls{height:45px}.preview-only #customize-preview,.preview-only .customize-controls-preview-toggle .controls{display:block}#customize-preview{top:45px;bottom:0;height:auto}.wp-core-ui.wp-customizer .button{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#customize-header-actions .button-primary{margin-top:6px}}
\ No newline at end of file
index 726a1611a8c72f3416ead0294c87e79614efafd5..fe27a1bee68f91445aad97e6950af63d7693280d 100644 (file)
        box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
 }
 
-/* Menu-item reordering nav. */
-.customize-control-nav_menu .reordering .reorder,
-.customize-control-nav_menu .reorder-done {
-       display: none;
-}
-
-.customize-control-nav_menu .reorder,
-.customize-control-nav_menu .reordering .reorder-done {
-       display: inline-block;
-       padding: 5px 8px;
-}
+/**
+ * Menu items reordering styles
+ */
 
 .menu-item-reorder-nav {
        display: none;
        left: 0;
 }
 
-.customize-control-nav_menu .reordering .add-new-menu-item {
-       opacity: 0.2;
-       pointer-events: none;
-       cursor: not-allowed;
-}
-
 .menu-item-reorder-nav button {
        position: relative;
        overflow: hidden;
 }
 
 .menus-move-down:before {
-       content: '\f347';
+       content: "\f347";
 }
 
 .menus-move-up:before {
-       content: '\f343';
+       content: "\f343";
 }
 
 .menus-move-left:before {
-       content: '\f341';
+       content: "\f345";
 }
 
 .menus-move-right:before {
-       content: '\f345';
+       content: "\f341";
 }
 
 .move-up-disabled .menus-move-up,
        right: -10px;
        width: 10px;
        height: 40px;
-       background: -webkit-linear-gradient(right, rgba(250,250,250,0) 0%,rgba(250,250,250,1) 100%);
        background: -webkit-gradient(linear, right top, left top, from(rgba(250,250,250,0)), to(rgba(250,250,250,1)));
        background: -webkit-linear-gradient(right, rgba(250,250,250,0) 0%, rgba(250,250,250,1) 100%);
-       background: linear-gradient(to left, rgba(250,250,250,0) 0%,rgba(250,250,250,1) 100%);
+       background: linear-gradient(to left, rgba(250,250,250,0) 0%, rgba(250,250,250,1) 100%);
 }
 
 .reordering .menu-item .item-controls,
        width: 30px;
        height: 38px;
        margin-left: 0 !important;
+       -webkit-box-shadow: none;
+       box-shadow: none;
        outline: none;
        overflow: hidden;
        cursor: pointer;
 }
 
-.customize-control-nav_menu_item .item-edit:focus {
-       color: #0073aa;
-       -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-}
-
-/* rework the arrow indicator implementation for NVDA bug same as #32715 */
-.wp-customizer .menu-item .item-edit .toggle-indicator {
-       display: inline-block;
-       font-size: 20px;
-       line-height: 1;
-}
-
-.wp-customizer .menu-item .item-edit .toggle-indicator:after {
-       content: '\f140';
-       font: normal 20px/1 dashicons;
-       color: #a0a5aa;
-       vertical-align: top;
-       speak: none;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
-       text-decoration: none !important;
-}
-
 .wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 .wp-customizer .menu-item-settings p.description {
        border: none;
        content: "\f111";
        display: block;
-       font: 18px/1 "dashicons";
+       font: 18px/1 dashicons;
        padding: 5px;
        text-align: center;
        text-decoration: none !important;
        display: none;
        background: #fff;
        border-top: 1px solid #ddd;
-       padding: 4px 15px 0;
+       padding: 4px 15px 15px;
 }
 
 .wp-customizer .metabox-prefs label {
        line-height: 30px;
 }
 
+/* rework the arrow indicator implementation for NVDA bug same as #32715 */
+.wp-customizer .toggle-indicator {
+       display: inline-block;
+       font-size: 20px;
+       line-height: 1;
+       text-indent: -1px; /* account for the dashicon alignment */
+}
+
+.rtl .wp-customizer .toggle-indicator {
+       text-indent: 1px; /* account for the dashicon alignment */
+}
+
+.wp-customizer .toggle-indicator:after {
+       content: "\f140";
+       speak: none;
+       vertical-align: top;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
+       color: #a0a5aa;
+       font: normal 20px/1 dashicons;
+       -webkit-font-smoothing: antialiased;
+       -moz-osx-font-smoothing: grayscale;
+       text-decoration: none !important;
+}
+
+.wp-customizer button:focus .toggle-indicator:after {
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+}
+
 #accordion-panel-nav_menus .field-link-target,
 #accordion-panel-nav_menus .field-attr-title,
 #accordion-panel-nav_menus .field-css-classes,
        margin-top: 0;
 }
 
-/*
- * Add-menu-items mode.
+/**
+ * Add-menu-items mode
  */
+
 .wp-full-overlay-main {
        left: auto; /* This overrides a right: 0; which causes the preview to resize rather than slide off screen at the normal size. */
        width: 100%;
        opacity: 1;
 }
 
-/* Add-new button. */
-#customize-theme-controls .add-new-menu-item {
-       cursor: pointer;
-       float: left;
-       margin-right: 10px;
-       -webkit-transition: all 0.2s;
-       transition: all 0.2s;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
-       outline: none;
-}
-
-.add-new-menu-item:before {
-       content: "\f132";
-       display: inline-block;
-       position: relative;
-       right: -2px;
-       top: -1px;
-       font: normal 20px/1 'dashicons';
-       vertical-align: middle;
-       -webkit-transition: all 0.2s;
-       transition: all 0.2s;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
-}
-
 .adding-menu-items .add-new-menu-item,
 .adding-menu-items .add-new-menu-item:hover,
 .add-menu-toggle.open,
 
 .menu-item-bar .item-delete:before {
        content: "\f335";
-       font: normal 20px/1 dashicons;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
        position: absolute;
        top: 9px;
        right: 5px;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
+       font: normal 20px/1 dashicons;
+       -webkit-font-smoothing: antialiased;
+       -moz-osx-font-smoothing: grayscale;
 }
 
 .ie8 .menu-item-bar .item-delete:before {
 
 .menu-item-bar .item-delete:hover,
 .menu-item-bar .item-delete:focus {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       outline: none;
        color: #f00;
 }
 
-.menu-item-bar .item-delete:focus {
-       -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
+.menu-item-bar .item-delete:focus:before {
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
 }
 
 .adding-menu-items .menu-item-bar .item-edit {
        border-right: none;
        border-left: none;
        background: #fff;
+       -webkit-transition: background-color 0.15s;
+       transition: background-color 0.15s;
 }
 
 #available-menu-items .open .accordion-section-title,
        content: none !important;
 }
 
-#available-menu-items .accordion-section-title .toggle-indicator {
-       display: inline-block;
-       font-size: 20px;
-       line-height: 1;
-}
-
-#available-menu-items .accordion-section-title .toggle-indicator:after {
-       content: '\f140';
-       font: normal 20px/1 'dashicons';
-       color: #a0a5aa;
-       vertical-align: top;
-       speak: none;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
-       text-decoration: none !important;
-}
-
 #available-menu-items .accordion-section-title:hover .toggle-indicator:after {
        color: #777;
 }
 
 #available-menu-items .open .accordion-section-title .toggle-indicator:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 #available-menu-items .accordion-section-content {
        background: transparent;
 }
 
-button.not-a-button {
-       background: transparent;
-       border: none;
-       -webkit-box-shadow: none;
-       box-shadow: none;
-       -webkit-border-radius: 0;
-       border-radius: 0;
-       outline: 0;
-       padding: 0;
-       margin: 0;
-}
-
 #available-menu-items .accordion-section-title button {
        display: block;
        width: 28px;
@@ -671,14 +623,12 @@ button.not-a-button {
        position: absolute;
        top: 5px;
        left: 5px;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       outline: none;
        cursor: pointer;
 }
 
-#available-menu-items .accordion-section-title button:focus {
-       -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-}
-
 #available-menu-items .accordion-section-title .no-items,
 #available-menu-items .cannot-expand .accordion-section-title .spinner,
 #available-menu-items .cannot-expand .accordion-section-title > button {
@@ -700,7 +650,6 @@ button.not-a-button {
 #available-menu-items .accordion-section-content {
        padding: 1px 15px 15px 15px;
        margin: 0;
-       min-height: 120px;
        max-height: 290px;
 }
 
@@ -783,21 +732,35 @@ button.not-a-button {
        color: #82878c;
        width: 30px;
        height: 38px;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       outline: none;
        cursor: pointer;
 }
 
 #available-menu-items .menu-item-handle .item-add:focus {
        color: #23282d;
-       -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
 }
 
 #available-menu-items .item-add:before {
        content: "\f543";
-       font: normal 20px/1 dashicons;
        position: relative;
        right: 2px;
        top: 3px;
+       display: inline-block;
+       height: 20px;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
+       font: normal 20px/1.05 dashicons; /* line height is to account for the dashicon's vertical alignment */
+}
+
+#available-menu-items .item-add:focus:before {
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
 }
 
 #available-menu-items .menu-item-handle.item-added .item-type,
@@ -980,11 +943,11 @@ body.adding-menu-items #customize-preview {
 }
 
 li.assigned-to-menu-location .menu-delete-item {
-  display: none;
+       display: none;
 }
 
 li.assigned-to-menu-location .add-new-menu-item {
-  margin-bottom: 1em;
+       margin-bottom: 1em;
 }
 
 .menu-delete {
index 76bbb43b0dcd21f72a7c4694a3d49987c8848a15..c2b56e9221bf6644ced4ca9981fe9270d336ab44 100644 (file)
@@ -1 +1 @@
-#accordion-section-menu_locations{position:relative;margin-bottom:15px}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:focus .menu-in-locations,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-locations,#customize-controls .theme-location-set{color:#555}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-customizer .menu-item-bar{margin:0}.wp-customizer .menu-item-bar .menu-item-handle{width:100%;background:#fff}.wp-customizer .menu-item-handle .item-title{margin-left:0}.wp-customizer .menu-item-handle .item-type{padding:1px 5px 0 21px;float:left;text-align:left}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;padding:10px;background:#eee;border:1px solid #999;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{display:block;float:right;margin:6px 0 0;padding:0;cursor:pointer}.wp-customizer .menu-item .submitbox .submitdelete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.customize-control-nav_menu .reorder-done,.customize-control-nav_menu .reordering .reorder{display:none}.customize-control-nav_menu .reorder,.customize-control-nav_menu .reordering .reorder-done{display:inline-block;padding:5px 8px}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;left:0}.customize-control-nav_menu .reordering .add-new-menu-item{opacity:.2;pointer-events:none;cursor:not-allowed}.menu-item-reorder-nav button{position:relative;overflow:hidden;float:right;display:block;width:30px;height:40px;color:#82878c;text-indent:-9999px;cursor:pointer;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}.menu-item-reorder-nav button:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:400 20px/40px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover{color:#191e23;background:#eee}.menus-move-down:before{content:'\f347'}.menus-move-up:before{content:'\f343'}.menus-move-left:before{content:'\f341'}.menus-move-right:before{content:'\f345'}.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#d5d5d5!important;background-color:#fff!important;cursor:default;pointer-events:none}.menu-item-reorder-nav:before{content:"";display:block;position:absolute;right:-10px;width:10px;height:40px;background:-webkit-linear-gradient(right,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%);background:-webkit-gradient(linear,right top,left top,from(rgba(250,250,250,0)),to(rgba(250,250,250,1)));background:-webkit-linear-gradient(right,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%);background:linear-gradient(to left,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%)}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%;margin:12px 0}.wp-customizer .menu-item .item-edit{position:absolute;left:-19px;top:2px;display:block;width:30px;height:38px;margin-left:0!important;outline:0;overflow:hidden;cursor:pointer}.customize-control-nav_menu_item .item-edit:focus{color:#0073aa;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-customizer .menu-item .item-edit .toggle-indicator{display:inline-block;font-size:20px;line-height:1}.wp-customizer .menu-item .item-edit .toggle-indicator:after{content:'\f140';font:400 20px/1 dashicons;color:#a0a5aa;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:after{content:'\f142'}.wp-customizer .menu-item-settings p.description{font-style:normal}.wp-customizer .menu-settings dl{margin:12px 0 0;padding:0}.wp-customizer .menu-settings .checkbox-input{margin-top:8px}.wp-customizer .menu-settings .menu-theme-locations{border-top:1px solid #ccc}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.menu-settings .customize-control-checkbox label{line-height:1}.menu-settings .customize-control.customize-control-checkbox{margin-bottom:8px}.customize-control-menu{margin-top:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle{color:#555}.customize-screen-options-toggle{background:0 0;border:none;color:#555;cursor:pointer;margin:0;padding:20px;position:absolute;left:0;top:30px}#customize-controls .customize-info .customize-help-toggle{padding:20px}#customize-controls .customize-info .customize-help-toggle:before{padding:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.active-menu-screen-options .customize-screen-options-toggle,.customize-screen-options-toggle:active,.customize-screen-options-toggle:focus,.customize-screen-options-toggle:hover{color:#0073aa}#customize-controls .customize-info .customize-help-toggle:focus,.customize-screen-options-toggle:focus{outline:0}.customize-screen-options-toggle:before{-moz-osx-font-smoothing:grayscale;border:none;content:"\f111";display:block;font:18px/1 dashicons;padding:5px;text-align:center;text-decoration:none!important;text-indent:0;right:6px;position:absolute;top:6px}#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);-webkit-border-radius:100%;border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 0}.wp-customizer .metabox-prefs label{display:block;padding-left:0;line-height:30px}#accordion-panel-nav_menus .field-attr-title,#accordion-panel-nav_menus .field-css-classes,#accordion-panel-nav_menus .field-description,#accordion-panel-nav_menus .field-link-target,#accordion-panel-nav_menus .field-xfn{display:none}#accordion-panel-nav_menus.field-attr-title-active .field-attr-title,#accordion-panel-nav_menus.field-css-classes-active .field-css-classes,#accordion-panel-nav_menus.field-description-active .field-description,#accordion-panel-nav_menus.field-link-target-active .field-link-target,#accordion-panel-nav_menus.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:20px}.menu-item-depth-2{margin-right:40px}.menu-item-depth-3{margin-right:60px}.menu-item-depth-4{margin-right:80px}.menu-item-depth-5{margin-right:100px}.menu-item-depth-6{margin-right:120px}.menu-item-depth-7{margin-right:140px}.menu-item-depth-8{margin-right:160px}.menu-item-depth-9{margin-right:180px}.menu-item-depth-10{margin-right:200px}.menu-item-depth-11{margin-right:220px}.menu-item-depth-0>.menu-item-bar{margin-left:0}.menu-item-depth-1>.menu-item-bar{margin-left:20px}.menu-item-depth-2>.menu-item-bar{margin-left:40px}.menu-item-depth-3>.menu-item-bar{margin-left:60px}.menu-item-depth-4>.menu-item-bar{margin-left:80px}.menu-item-depth-5>.menu-item-bar{margin-left:100px}.menu-item-depth-6>.menu-item-bar{margin-left:120px}.menu-item-depth-7>.menu-item-bar{margin-left:140px}.menu-item-depth-8>.menu-item-bar{margin-left:160px}.menu-item-depth-9>.menu-item-bar{margin-left:180px}.menu-item-depth-10>.menu-item-bar{margin-left:200px}.menu-item-depth-11>.menu-item-bar{margin-left:220px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-20px}.menu-item-depth-3 .menu-item-transport{margin-right:-60px}.menu-item-depth-4 .menu-item-transport{margin-right:-80px}.menu-item-depth-2 .menu-item-transport{margin-right:-40px}.menu-item-depth-5 .menu-item-transport{margin-right:-100px}.menu-item-depth-6 .menu-item-transport{margin-right:-120px}.menu-item-depth-7 .menu-item-transport{margin-right:-140px}.menu-item-depth-8 .menu-item-transport{margin-right:-160px}.menu-item-depth-9 .menu-item-transport{margin-right:-180px}.menu-item-depth-10 .menu-item-transport{margin-right:-200px}.menu-item-depth-11 .menu-item-transport{margin-right:-220px}.reordering .menu-item-depth-0{margin-right:0}.reordering .menu-item-depth-1{margin-right:15px}.reordering .menu-item-depth-2{margin-right:30px}.reordering .menu-item-depth-3{margin-right:45px}.reordering .menu-item-depth-4{margin-right:60px}.reordering .menu-item-depth-5{margin-right:75px}.reordering .menu-item-depth-6{margin-right:90px}.reordering .menu-item-depth-7{margin-right:105px}.reordering .menu-item-depth-8{margin-right:120px}.reordering .menu-item-depth-9{margin-right:135px}.reordering .menu-item-depth-10{margin-right:150px}.reordering .menu-item-depth-11{margin-right:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-left:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-left:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-left:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-left:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-left:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-left:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-left:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-left:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-left:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-left:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-left:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-left:165px}.control-section-nav_menu .menu .menu-item-edit-active{margin-right:0}.control-section-nav_menu .menu .menu-item-edit-active .menu-item-bar{margin-left:0}.control-section-nav_menu .menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:-webkit-calc(100% - 2px);max-width:calc(100% - 2px);float:right;display:list-item;border-color:#a0a5aa}.menu-item-transport li.customize-control{float:none}.control-section-nav_menu .menu ul.menu-item-transport .menu-item-bar{margin-top:0}.wp-full-overlay-main{left:auto;width:100%}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}#customize-theme-controls .add-new-menu-item{cursor:pointer;float:left;margin-right:10px;-webkit-transition:all .2s;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.add-new-menu-item:before{content:"\f132";display:inline-block;position:relative;right:-2px;top:-1px;font:400 20px/1 dashicons;vertical-align:middle;-webkit-transition:all .2s;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover{background:#eee;border-color:#929793;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#accordion-section-add_menu .add-new-menu-item.open:before,.adding-menu-items .add-new-menu-item:before{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.menu-item-bar .item-delete{color:#a00;position:absolute;top:2px;left:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:9px;right:5px}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{color:red}.menu-item-bar .item-delete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items .item{position:static}#available-menu-items{position:absolute;top:0;bottom:0;right:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#eee;-webkit-transition:right .18s;transition:right .18s;border-left:1px solid #ddd}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-right:none;border-left:none;background:#fff}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#eee}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title .toggle-indicator{display:inline-block;font-size:20px;line-height:1}#available-menu-items .accordion-section-title .toggle-indicator:after{content:'\f140';font:400 20px/1 dashicons;color:#a0a5aa;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:after{color:#777}#available-menu-items .open .accordion-section-title .toggle-indicator:after{content:'\f142'}button.not-a-button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;-webkit-border-radius:0;border-radius:0;outline:0;padding:0;margin:0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;left:5px;cursor:pointer}#available-menu-items .accordion-section-title button:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{display:block;color:#777;font-weight:400;float:left;margin-right:5px}#available-menu-items .accordion-section-content{overflow-y:auto;background:0 0;padding:1px 15px 15px;margin:0;min-height:120px;max-height:290px}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;right:1px;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items .menu-item-tpl{margin:0}#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid red}#available-menu-items .item-tpl{position:relative;padding:20px 60px 20px 15px;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-menu-items .item-tpl.selected,#available-menu-items .item-tpl:hover{background:#eee}#available-menu-items .menu-item-handle .item-type{padding-left:0}#available-menu-items .menu-item-handle .item-title{padding-right:20px}#available-menu-items .item-top,#available-menu-items .item-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-menu-items .menu-item-handle{cursor:pointer;-webkit-box-shadow:none;box-shadow:none;margin-top:-1px}#available-menu-items .menu-item-handle:hover{z-index:1}#available-menu-items .item-title h4{padding:0 0 5px;font-size:14px}#available-menu-items .item-add{position:absolute;top:1px;right:1px;color:#82878c;width:30px;height:38px;cursor:pointer}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items .item-add:before{content:"\f543";font:400 20px/1 dashicons;position:relative;right:2px;top:3px}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#82878c}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .clear-results{position:absolute;top:20px;left:20px;width:20px;height:20px;cursor:pointer;color:#a00;text-decoration:none}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible{display:none}#available-menu-items-search .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before{content:"\f335";font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover{color:red}#available-menu-items-search .clear-results:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .clear-results:focus,.menu-delete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .spinner{position:absolute;top:20px;margin:0!important;left:20px}#available-menu-items-search input{padding:6px 10px;width:100%}#available-menu-items-search .accordion-section-title{padding:12px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{-webkit-transition:all .2s;transition:all .2s}body.adding-menu-items #available-menu-items{right:0;visibility:visible}body.adding-menu-items .wp-full-overlay-main{right:300px}body.adding-menu-items #customize-preview{opacity:.4}.menu-item-handle .spinner{display:none;float:right;margin:0 0 0 8px}.nav-menu-inserted-item-loading .spinner{display:block}.nav-menu-inserted-item-loading .menu-item-handle .item-type{padding:0 8px 0 0}.added-menu-item .menu-item-handle.loading,.nav-menu-inserted-item-loading .menu-item-handle{padding:10px 8px 10px 15px;cursor:default;opacity:.5;background:#fff;color:#727773}.added-menu-item .menu-item-handle{-webkit-transition-property:opacity,background,color;transition-property:opacity,background,color;-webkit-transition-duration:1.25s;transition-duration:1.25s;-webkit-transition-timing-function:cubic-bezier(.25,-2.5,.75,8);transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#accordion-section-add_menu{margin:15px 12px}.new-menu-section-content{display:none;padding:15px 0 0;clear:both}#accordion-section-add_menu .accordion-section-title{padding-right:45px}#accordion-section-add_menu .accordion-section-title:before{font:400 20px/1 dashicons;position:absolute;top:12px;right:14px;content:"\f132"}#create-new-menu-submit{float:left;margin:0 0 12px}.menu-delete-item{display:block;float:right;padding:1em 0;width:100%}#available-menu-items .customize-section-title,li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-delete{color:#a00;cursor:pointer;text-decoration:underline}.menu-delete:focus,.menu-delete:hover{color:red;text-decoration:none}.menu-delete:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.menu-item-handle{margin-top:-1px}.ui-sortable-disabled .menu-item-handle{cursor:default}.menu-item-handle:hover{position:relative;z-index:10;color:#0073aa}#available-menu-items .menu-item-handle:hover .item-add,.menu-item-handle:hover .item-edit,.menu-item-handle:hover .item-type{color:#0073aa}.menu-item-edit-active .menu-item-handle{border-color:#999;border-bottom:none}.customize-control-nav_menu_item{margin-bottom:0}.customize-control-nav_menu{margin-top:12px}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){body.adding-menu-items div#available-menu-items{top:46px;right:0;z-index:10;width:100%}#available-menu-items #available-menu-items-search .accordion-section-content{top:133px}#available-menu-items .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back{height:69px}#available-menu-items .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}
\ No newline at end of file
+#accordion-section-menu_locations{position:relative;margin-bottom:15px}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:focus .menu-in-locations,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-locations,#customize-controls .theme-location-set{color:#555}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-customizer .menu-item-bar{margin:0}.wp-customizer .menu-item-bar .menu-item-handle{width:100%;background:#fff}.wp-customizer .menu-item-handle .item-title{margin-left:0}.wp-customizer .menu-item-handle .item-type{padding:1px 5px 0 21px;float:left;text-align:left}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;padding:10px;background:#eee;border:1px solid #999;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{display:block;float:right;margin:6px 0 0;padding:0;cursor:pointer}.wp-customizer .menu-item .submitbox .submitdelete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;left:0}.menu-item-reorder-nav button{position:relative;overflow:hidden;float:right;display:block;width:30px;height:40px;color:#82878c;text-indent:-9999px;cursor:pointer;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}.menu-item-reorder-nav button:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:400 20px/40px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover{color:#191e23;background:#eee}.menus-move-down:before{content:"\f347"}.menus-move-up:before{content:"\f343"}.menus-move-left:before{content:"\f345"}.menus-move-right:before{content:"\f341"}.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#d5d5d5!important;background-color:#fff!important;cursor:default;pointer-events:none}.menu-item-reorder-nav:before{content:"";display:block;position:absolute;right:-10px;width:10px;height:40px;background:-webkit-gradient(linear,right top,left top,from(rgba(250,250,250,0)),to(rgba(250,250,250,1)));background:-webkit-linear-gradient(right,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%);background:linear-gradient(to left,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%)}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%;margin:12px 0}.wp-customizer .menu-item .item-edit{position:absolute;left:-19px;top:2px;display:block;width:30px;height:38px;margin-left:0!important;-webkit-box-shadow:none;box-shadow:none;outline:0;overflow:hidden;cursor:pointer}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:after{content:"\f142"}.wp-customizer .menu-item-settings p.description{font-style:normal}.wp-customizer .menu-settings dl{margin:12px 0 0;padding:0}.wp-customizer .menu-settings .checkbox-input{margin-top:8px}.wp-customizer .menu-settings .menu-theme-locations{border-top:1px solid #ccc}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.menu-settings .customize-control-checkbox label{line-height:1}.menu-settings .customize-control.customize-control-checkbox{margin-bottom:8px}.customize-control-menu{margin-top:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle{color:#555}.customize-screen-options-toggle{background:0 0;border:none;color:#555;cursor:pointer;margin:0;padding:20px;position:absolute;left:0;top:30px}#customize-controls .customize-info .customize-help-toggle{padding:20px}#customize-controls .customize-info .customize-help-toggle:before{padding:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.active-menu-screen-options .customize-screen-options-toggle,.customize-screen-options-toggle:active,.customize-screen-options-toggle:focus,.customize-screen-options-toggle:hover{color:#0073aa}#customize-controls .customize-info .customize-help-toggle:focus,.customize-screen-options-toggle:focus{outline:0}.customize-screen-options-toggle:before{-moz-osx-font-smoothing:grayscale;border:none;content:"\f111";display:block;font:18px/1 dashicons;padding:5px;text-align:center;text-decoration:none!important;text-indent:0;right:6px;position:absolute;top:6px}#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);-webkit-border-radius:100%;border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-left:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1;text-indent:-1px}.rtl .wp-customizer .toggle-indicator{text-indent:1px}.wp-customizer .toggle-indicator:after{content:"\f140";speak:none;vertical-align:top;-webkit-border-radius:50%;border-radius:50%;color:#a0a5aa;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wp-customizer button:focus .toggle-indicator:after{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#accordion-panel-nav_menus .field-attr-title,#accordion-panel-nav_menus .field-css-classes,#accordion-panel-nav_menus .field-description,#accordion-panel-nav_menus .field-link-target,#accordion-panel-nav_menus .field-xfn{display:none}#accordion-panel-nav_menus.field-attr-title-active .field-attr-title,#accordion-panel-nav_menus.field-css-classes-active .field-css-classes,#accordion-panel-nav_menus.field-description-active .field-description,#accordion-panel-nav_menus.field-link-target-active .field-link-target,#accordion-panel-nav_menus.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:20px}.menu-item-depth-2{margin-right:40px}.menu-item-depth-3{margin-right:60px}.menu-item-depth-4{margin-right:80px}.menu-item-depth-5{margin-right:100px}.menu-item-depth-6{margin-right:120px}.menu-item-depth-7{margin-right:140px}.menu-item-depth-8{margin-right:160px}.menu-item-depth-9{margin-right:180px}.menu-item-depth-10{margin-right:200px}.menu-item-depth-11{margin-right:220px}.menu-item-depth-0>.menu-item-bar{margin-left:0}.menu-item-depth-1>.menu-item-bar{margin-left:20px}.menu-item-depth-2>.menu-item-bar{margin-left:40px}.menu-item-depth-3>.menu-item-bar{margin-left:60px}.menu-item-depth-4>.menu-item-bar{margin-left:80px}.menu-item-depth-5>.menu-item-bar{margin-left:100px}.menu-item-depth-6>.menu-item-bar{margin-left:120px}.menu-item-depth-7>.menu-item-bar{margin-left:140px}.menu-item-depth-8>.menu-item-bar{margin-left:160px}.menu-item-depth-9>.menu-item-bar{margin-left:180px}.menu-item-depth-10>.menu-item-bar{margin-left:200px}.menu-item-depth-11>.menu-item-bar{margin-left:220px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-20px}.menu-item-depth-3 .menu-item-transport{margin-right:-60px}.menu-item-depth-4 .menu-item-transport{margin-right:-80px}.menu-item-depth-2 .menu-item-transport{margin-right:-40px}.menu-item-depth-5 .menu-item-transport{margin-right:-100px}.menu-item-depth-6 .menu-item-transport{margin-right:-120px}.menu-item-depth-7 .menu-item-transport{margin-right:-140px}.menu-item-depth-8 .menu-item-transport{margin-right:-160px}.menu-item-depth-9 .menu-item-transport{margin-right:-180px}.menu-item-depth-10 .menu-item-transport{margin-right:-200px}.menu-item-depth-11 .menu-item-transport{margin-right:-220px}.reordering .menu-item-depth-0{margin-right:0}.reordering .menu-item-depth-1{margin-right:15px}.reordering .menu-item-depth-2{margin-right:30px}.reordering .menu-item-depth-3{margin-right:45px}.reordering .menu-item-depth-4{margin-right:60px}.reordering .menu-item-depth-5{margin-right:75px}.reordering .menu-item-depth-6{margin-right:90px}.reordering .menu-item-depth-7{margin-right:105px}.reordering .menu-item-depth-8{margin-right:120px}.reordering .menu-item-depth-9{margin-right:135px}.reordering .menu-item-depth-10{margin-right:150px}.reordering .menu-item-depth-11{margin-right:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-left:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-left:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-left:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-left:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-left:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-left:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-left:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-left:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-left:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-left:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-left:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-left:165px}.control-section-nav_menu .menu .menu-item-edit-active{margin-right:0}.control-section-nav_menu .menu .menu-item-edit-active .menu-item-bar{margin-left:0}.control-section-nav_menu .menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:-webkit-calc(100% - 2px);max-width:calc(100% - 2px);float:right;display:list-item;border-color:#a0a5aa}.menu-item-transport li.customize-control{float:none}.control-section-nav_menu .menu ul.menu-item-transport .menu-item-bar{margin-top:0}.wp-full-overlay-main{left:auto;width:100%}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover{background:#eee;border-color:#929793;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#accordion-section-add_menu .add-new-menu-item.open:before,.adding-menu-items .add-new-menu-item:before{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.menu-item-bar .item-delete{color:#a00;position:absolute;top:2px;left:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;right:5px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;color:red}.menu-item-bar .item-delete:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items .item{position:static}#available-menu-items{position:absolute;top:0;bottom:0;right:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#eee;-webkit-transition:right .18s;transition:right .18s;border-left:1px solid #ddd}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-right:none;border-left:none;background:#fff;-webkit-transition:background-color .15s;transition:background-color .15s}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#eee}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:after{color:#777}#available-menu-items .open .accordion-section-title .toggle-indicator:after{content:"\f142"}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;left:5px;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{display:block;color:#777;font-weight:400;float:left;margin-right:5px}#available-menu-items .accordion-section-content{overflow-y:auto;background:0 0;padding:1px 15px 15px;margin:0;max-height:290px}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;right:1px;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items .menu-item-tpl{margin:0}#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid red}#available-menu-items .item-tpl{position:relative;padding:20px 60px 20px 15px;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-menu-items .item-tpl.selected,#available-menu-items .item-tpl:hover{background:#eee}#available-menu-items .menu-item-handle .item-type{padding-left:0}#available-menu-items .menu-item-handle .item-title{padding-right:20px}#available-menu-items .item-top,#available-menu-items .item-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-menu-items .menu-item-handle{cursor:pointer;-webkit-box-shadow:none;box-shadow:none;margin-top:-1px}#available-menu-items .menu-item-handle:hover{z-index:1}#available-menu-items .item-title h4{padding:0 0 5px;font-size:14px}#available-menu-items .item-add{position:absolute;top:1px;right:1px;color:#82878c;width:30px;height:38px;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d}#available-menu-items .item-add:before{content:"\f543";position:relative;right:2px;top:3px;display:inline-block;height:20px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1.05 dashicons}#available-menu-items .item-add:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#82878c}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .clear-results{position:absolute;top:20px;left:20px;width:20px;height:20px;cursor:pointer;color:#a00;text-decoration:none}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible{display:none}#available-menu-items-search .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before{content:"\f335";font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover{color:red}#available-menu-items-search .clear-results:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .spinner{position:absolute;top:20px;margin:0!important;left:20px}#available-menu-items-search input{padding:6px 10px;width:100%}#available-menu-items-search .accordion-section-title{padding:12px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{-webkit-transition:all .2s;transition:all .2s}body.adding-menu-items #available-menu-items{right:0;visibility:visible}body.adding-menu-items .wp-full-overlay-main{right:300px}body.adding-menu-items #customize-preview{opacity:.4}.menu-item-handle .spinner{display:none;float:right;margin:0 0 0 8px}.nav-menu-inserted-item-loading .spinner{display:block}.nav-menu-inserted-item-loading .menu-item-handle .item-type{padding:0 8px 0 0}.added-menu-item .menu-item-handle.loading,.nav-menu-inserted-item-loading .menu-item-handle{padding:10px 8px 10px 15px;cursor:default;opacity:.5;background:#fff;color:#727773}.added-menu-item .menu-item-handle{-webkit-transition-property:opacity,background,color;transition-property:opacity,background,color;-webkit-transition-duration:1.25s;transition-duration:1.25s;-webkit-transition-timing-function:cubic-bezier(.25,-2.5,.75,8);transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#accordion-section-add_menu{margin:15px 12px}.new-menu-section-content{display:none;padding:15px 0 0;clear:both}#accordion-section-add_menu .accordion-section-title{padding-right:45px}#accordion-section-add_menu .accordion-section-title:before{font:400 20px/1 dashicons;position:absolute;top:12px;right:14px;content:"\f132"}#create-new-menu-submit{float:left;margin:0 0 12px}.menu-delete-item{display:block;float:right;padding:1em 0;width:100%}#available-menu-items .customize-section-title,li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-delete{color:#a00;cursor:pointer;text-decoration:underline}.menu-delete:focus,.menu-delete:hover{color:red;text-decoration:none}.menu-delete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.menu-item-handle{margin-top:-1px}.ui-sortable-disabled .menu-item-handle{cursor:default}.menu-item-handle:hover{position:relative;z-index:10;color:#0073aa}#available-menu-items .menu-item-handle:hover .item-add,.menu-item-handle:hover .item-edit,.menu-item-handle:hover .item-type{color:#0073aa}.menu-item-edit-active .menu-item-handle{border-color:#999;border-bottom:none}.customize-control-nav_menu_item{margin-bottom:0}.customize-control-nav_menu{margin-top:12px}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){body.adding-menu-items div#available-menu-items{top:46px;right:0;z-index:10;width:100%}#available-menu-items #available-menu-items-search .accordion-section-content{top:133px}#available-menu-items .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back{height:69px}#available-menu-items .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}
\ No newline at end of file
index 7d25c7f58d220bb0a64fd81f7a2dae5eb117d3b4..2daa03ccb8a08de28b99ab39e3dd0dc204ae0b65 100644 (file)
        box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
 }
 
-/* Menu-item reordering nav. */
-.customize-control-nav_menu .reordering .reorder,
-.customize-control-nav_menu .reorder-done {
-       display: none;
-}
-
-.customize-control-nav_menu .reorder,
-.customize-control-nav_menu .reordering .reorder-done {
-       display: inline-block;
-       padding: 5px 8px;
-}
+/**
+ * Menu items reordering styles
+ */
 
 .menu-item-reorder-nav {
        display: none;
        right: 0;
 }
 
-.customize-control-nav_menu .reordering .add-new-menu-item {
-       opacity: 0.2;
-       pointer-events: none;
-       cursor: not-allowed;
-}
-
 .menu-item-reorder-nav button {
        position: relative;
        overflow: hidden;
 }
 
 .menus-move-down:before {
-       content: '\f347';
+       content: "\f347";
 }
 
 .menus-move-up:before {
-       content: '\f343';
+       content: "\f343";
 }
 
 .menus-move-left:before {
-       content: '\f341';
+       content: "\f341";
 }
 
 .menus-move-right:before {
-       content: '\f345';
+       content: "\f345";
 }
 
 .move-up-disabled .menus-move-up,
        left: -10px;
        width: 10px;
        height: 40px;
-       background: -webkit-linear-gradient(left, rgba(250,250,250,0) 0%,rgba(250,250,250,1) 100%);
        background: -webkit-gradient(linear, left top, right top, from(rgba(250,250,250,0)), to(rgba(250,250,250,1)));
        background: -webkit-linear-gradient(left, rgba(250,250,250,0) 0%, rgba(250,250,250,1) 100%);
-       background: linear-gradient(to right, rgba(250,250,250,0) 0%,rgba(250,250,250,1) 100%);
+       background: linear-gradient(to right, rgba(250,250,250,0) 0%, rgba(250,250,250,1) 100%);
 }
 
 .reordering .menu-item .item-controls,
        width: 30px;
        height: 38px;
        margin-right: 0 !important;
+       -webkit-box-shadow: none;
+       box-shadow: none;
        outline: none;
        overflow: hidden;
        cursor: pointer;
 }
 
-.customize-control-nav_menu_item .item-edit:focus {
-       color: #0073aa;
-       -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-}
-
-/* rework the arrow indicator implementation for NVDA bug same as #32715 */
-.wp-customizer .menu-item .item-edit .toggle-indicator {
-       display: inline-block;
-       font-size: 20px;
-       line-height: 1;
-}
-
-.wp-customizer .menu-item .item-edit .toggle-indicator:after {
-       content: '\f140';
-       font: normal 20px/1 dashicons;
-       color: #a0a5aa;
-       vertical-align: top;
-       speak: none;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
-       text-decoration: none !important;
-}
-
 .wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 .wp-customizer .menu-item-settings p.description {
        border: none;
        content: "\f111";
        display: block;
-       font: 18px/1 "dashicons";
+       font: 18px/1 dashicons;
        padding: 5px;
        text-align: center;
        text-decoration: none !important;
        display: none;
        background: #fff;
        border-top: 1px solid #ddd;
-       padding: 4px 15px 0;
+       padding: 4px 15px 15px;
 }
 
 .wp-customizer .metabox-prefs label {
        line-height: 30px;
 }
 
+/* rework the arrow indicator implementation for NVDA bug same as #32715 */
+.wp-customizer .toggle-indicator {
+       display: inline-block;
+       font-size: 20px;
+       line-height: 1;
+       text-indent: -1px; /* account for the dashicon alignment */
+}
+
+.rtl .wp-customizer .toggle-indicator {
+       text-indent: 1px; /* account for the dashicon alignment */
+}
+
+.wp-customizer .toggle-indicator:after {
+       content: "\f140";
+       speak: none;
+       vertical-align: top;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
+       color: #a0a5aa;
+       font: normal 20px/1 dashicons;
+       -webkit-font-smoothing: antialiased;
+       -moz-osx-font-smoothing: grayscale;
+       text-decoration: none !important;
+}
+
+.wp-customizer button:focus .toggle-indicator:after {
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+}
+
 #accordion-panel-nav_menus .field-link-target,
 #accordion-panel-nav_menus .field-attr-title,
 #accordion-panel-nav_menus .field-css-classes,
        margin-top: 0;
 }
 
-/*
- * Add-menu-items mode.
+/**
+ * Add-menu-items mode
  */
+
 .wp-full-overlay-main {
        right: auto; /* This overrides a right: 0; which causes the preview to resize rather than slide off screen at the normal size. */
        width: 100%;
        opacity: 1;
 }
 
-/* Add-new button. */
-#customize-theme-controls .add-new-menu-item {
-       cursor: pointer;
-       float: right;
-       margin-left: 10px;
-       -webkit-transition: all 0.2s;
-       transition: all 0.2s;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
-       outline: none;
-}
-
-.add-new-menu-item:before {
-       content: "\f132";
-       display: inline-block;
-       position: relative;
-       left: -2px;
-       top: -1px;
-       font: normal 20px/1 'dashicons';
-       vertical-align: middle;
-       -webkit-transition: all 0.2s;
-       transition: all 0.2s;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
-}
-
 .adding-menu-items .add-new-menu-item,
 .adding-menu-items .add-new-menu-item:hover,
 .add-menu-toggle.open,
 
 .menu-item-bar .item-delete:before {
        content: "\f335";
-       font: normal 20px/1 dashicons;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
        position: absolute;
        top: 9px;
        left: 5px;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
+       font: normal 20px/1 dashicons;
+       -webkit-font-smoothing: antialiased;
+       -moz-osx-font-smoothing: grayscale;
 }
 
 .ie8 .menu-item-bar .item-delete:before {
 
 .menu-item-bar .item-delete:hover,
 .menu-item-bar .item-delete:focus {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       outline: none;
        color: #f00;
 }
 
-.menu-item-bar .item-delete:focus {
-       -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
+.menu-item-bar .item-delete:focus:before {
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
 }
 
 .adding-menu-items .menu-item-bar .item-edit {
        border-left: none;
        border-right: none;
        background: #fff;
+       -webkit-transition: background-color 0.15s;
+       transition: background-color 0.15s;
 }
 
 #available-menu-items .open .accordion-section-title,
        content: none !important;
 }
 
-#available-menu-items .accordion-section-title .toggle-indicator {
-       display: inline-block;
-       font-size: 20px;
-       line-height: 1;
-}
-
-#available-menu-items .accordion-section-title .toggle-indicator:after {
-       content: '\f140';
-       font: normal 20px/1 'dashicons';
-       color: #a0a5aa;
-       vertical-align: top;
-       speak: none;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
-       text-decoration: none !important;
-}
-
 #available-menu-items .accordion-section-title:hover .toggle-indicator:after {
        color: #777;
 }
 
 #available-menu-items .open .accordion-section-title .toggle-indicator:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 #available-menu-items .accordion-section-content {
        background: transparent;
 }
 
-button.not-a-button {
-       background: transparent;
-       border: none;
-       -webkit-box-shadow: none;
-       box-shadow: none;
-       -webkit-border-radius: 0;
-       border-radius: 0;
-       outline: 0;
-       padding: 0;
-       margin: 0;
-}
-
 #available-menu-items .accordion-section-title button {
        display: block;
        width: 28px;
@@ -671,14 +623,12 @@ button.not-a-button {
        position: absolute;
        top: 5px;
        right: 5px;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       outline: none;
        cursor: pointer;
 }
 
-#available-menu-items .accordion-section-title button:focus {
-       -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-}
-
 #available-menu-items .accordion-section-title .no-items,
 #available-menu-items .cannot-expand .accordion-section-title .spinner,
 #available-menu-items .cannot-expand .accordion-section-title > button {
@@ -700,7 +650,6 @@ button.not-a-button {
 #available-menu-items .accordion-section-content {
        padding: 1px 15px 15px 15px;
        margin: 0;
-       min-height: 120px;
        max-height: 290px;
 }
 
@@ -783,21 +732,35 @@ button.not-a-button {
        color: #82878c;
        width: 30px;
        height: 38px;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       outline: none;
        cursor: pointer;
 }
 
 #available-menu-items .menu-item-handle .item-add:focus {
        color: #23282d;
-       -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
 }
 
 #available-menu-items .item-add:before {
        content: "\f543";
-       font: normal 20px/1 dashicons;
        position: relative;
        left: 2px;
        top: 3px;
+       display: inline-block;
+       height: 20px;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
+       font: normal 20px/1.05 dashicons; /* line height is to account for the dashicon's vertical alignment */
+}
+
+#available-menu-items .item-add:focus:before {
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
 }
 
 #available-menu-items .menu-item-handle.item-added .item-type,
@@ -980,11 +943,11 @@ body.adding-menu-items #customize-preview {
 }
 
 li.assigned-to-menu-location .menu-delete-item {
-  display: none;
+       display: none;
 }
 
 li.assigned-to-menu-location .add-new-menu-item {
-  margin-bottom: 1em;
+       margin-bottom: 1em;
 }
 
 .menu-delete {
index 1702fba1172b5f2148aa480e01af32fbc0c94a3a..f2158c4ccb6588de8b9bdf792a351e0c401ee82a 100644 (file)
@@ -1 +1 @@
-#accordion-section-menu_locations{position:relative;margin-bottom:15px}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:focus .menu-in-locations,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-locations,#customize-controls .theme-location-set{color:#555}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-customizer .menu-item-bar{margin:0}.wp-customizer .menu-item-bar .menu-item-handle{width:100%;background:#fff}.wp-customizer .menu-item-handle .item-title{margin-right:0}.wp-customizer .menu-item-handle .item-type{padding:1px 21px 0 5px;float:right;text-align:right}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;padding:10px;background:#eee;border:1px solid #999;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{display:block;float:left;margin:6px 0 0;padding:0;cursor:pointer}.wp-customizer .menu-item .submitbox .submitdelete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.customize-control-nav_menu .reorder-done,.customize-control-nav_menu .reordering .reorder{display:none}.customize-control-nav_menu .reorder,.customize-control-nav_menu .reordering .reorder-done{display:inline-block;padding:5px 8px}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;right:0}.customize-control-nav_menu .reordering .add-new-menu-item{opacity:.2;pointer-events:none;cursor:not-allowed}.menu-item-reorder-nav button{position:relative;overflow:hidden;float:left;display:block;width:30px;height:40px;color:#82878c;text-indent:-9999px;cursor:pointer;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}.menu-item-reorder-nav button:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:400 20px/40px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover{color:#191e23;background:#eee}.menus-move-down:before{content:'\f347'}.menus-move-up:before{content:'\f343'}.menus-move-left:before{content:'\f341'}.menus-move-right:before{content:'\f345'}.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#d5d5d5!important;background-color:#fff!important;cursor:default;pointer-events:none}.menu-item-reorder-nav:before{content:"";display:block;position:absolute;left:-10px;width:10px;height:40px;background:-webkit-linear-gradient(left,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%);background:-webkit-gradient(linear,left top,right top,from(rgba(250,250,250,0)),to(rgba(250,250,250,1)));background:-webkit-linear-gradient(left,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%);background:linear-gradient(to right,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%)}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%;margin:12px 0}.wp-customizer .menu-item .item-edit{position:absolute;right:-19px;top:2px;display:block;width:30px;height:38px;margin-right:0!important;outline:0;overflow:hidden;cursor:pointer}.customize-control-nav_menu_item .item-edit:focus{color:#0073aa;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-customizer .menu-item .item-edit .toggle-indicator{display:inline-block;font-size:20px;line-height:1}.wp-customizer .menu-item .item-edit .toggle-indicator:after{content:'\f140';font:400 20px/1 dashicons;color:#a0a5aa;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:after{content:'\f142'}.wp-customizer .menu-item-settings p.description{font-style:normal}.wp-customizer .menu-settings dl{margin:12px 0 0;padding:0}.wp-customizer .menu-settings .checkbox-input{margin-top:8px}.wp-customizer .menu-settings .menu-theme-locations{border-top:1px solid #ccc}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.menu-settings .customize-control-checkbox label{line-height:1}.menu-settings .customize-control.customize-control-checkbox{margin-bottom:8px}.customize-control-menu{margin-top:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle{color:#555}.customize-screen-options-toggle{background:0 0;border:none;color:#555;cursor:pointer;margin:0;padding:20px;position:absolute;right:0;top:30px}#customize-controls .customize-info .customize-help-toggle{padding:20px}#customize-controls .customize-info .customize-help-toggle:before{padding:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.active-menu-screen-options .customize-screen-options-toggle,.customize-screen-options-toggle:active,.customize-screen-options-toggle:focus,.customize-screen-options-toggle:hover{color:#0073aa}#customize-controls .customize-info .customize-help-toggle:focus,.customize-screen-options-toggle:focus{outline:0}.customize-screen-options-toggle:before{-moz-osx-font-smoothing:grayscale;border:none;content:"\f111";display:block;font:18px/1 dashicons;padding:5px;text-align:center;text-decoration:none!important;text-indent:0;left:6px;position:absolute;top:6px}#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);-webkit-border-radius:100%;border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 0}.wp-customizer .metabox-prefs label{display:block;padding-right:0;line-height:30px}#accordion-panel-nav_menus .field-attr-title,#accordion-panel-nav_menus .field-css-classes,#accordion-panel-nav_menus .field-description,#accordion-panel-nav_menus .field-link-target,#accordion-panel-nav_menus .field-xfn{display:none}#accordion-panel-nav_menus.field-attr-title-active .field-attr-title,#accordion-panel-nav_menus.field-css-classes-active .field-css-classes,#accordion-panel-nav_menus.field-description-active .field-description,#accordion-panel-nav_menus.field-link-target-active .field-link-target,#accordion-panel-nav_menus.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:20px}.menu-item-depth-2{margin-left:40px}.menu-item-depth-3{margin-left:60px}.menu-item-depth-4{margin-left:80px}.menu-item-depth-5{margin-left:100px}.menu-item-depth-6{margin-left:120px}.menu-item-depth-7{margin-left:140px}.menu-item-depth-8{margin-left:160px}.menu-item-depth-9{margin-left:180px}.menu-item-depth-10{margin-left:200px}.menu-item-depth-11{margin-left:220px}.menu-item-depth-0>.menu-item-bar{margin-right:0}.menu-item-depth-1>.menu-item-bar{margin-right:20px}.menu-item-depth-2>.menu-item-bar{margin-right:40px}.menu-item-depth-3>.menu-item-bar{margin-right:60px}.menu-item-depth-4>.menu-item-bar{margin-right:80px}.menu-item-depth-5>.menu-item-bar{margin-right:100px}.menu-item-depth-6>.menu-item-bar{margin-right:120px}.menu-item-depth-7>.menu-item-bar{margin-right:140px}.menu-item-depth-8>.menu-item-bar{margin-right:160px}.menu-item-depth-9>.menu-item-bar{margin-right:180px}.menu-item-depth-10>.menu-item-bar{margin-right:200px}.menu-item-depth-11>.menu-item-bar{margin-right:220px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-20px}.menu-item-depth-3 .menu-item-transport{margin-left:-60px}.menu-item-depth-4 .menu-item-transport{margin-left:-80px}.menu-item-depth-2 .menu-item-transport{margin-left:-40px}.menu-item-depth-5 .menu-item-transport{margin-left:-100px}.menu-item-depth-6 .menu-item-transport{margin-left:-120px}.menu-item-depth-7 .menu-item-transport{margin-left:-140px}.menu-item-depth-8 .menu-item-transport{margin-left:-160px}.menu-item-depth-9 .menu-item-transport{margin-left:-180px}.menu-item-depth-10 .menu-item-transport{margin-left:-200px}.menu-item-depth-11 .menu-item-transport{margin-left:-220px}.reordering .menu-item-depth-0{margin-left:0}.reordering .menu-item-depth-1{margin-left:15px}.reordering .menu-item-depth-2{margin-left:30px}.reordering .menu-item-depth-3{margin-left:45px}.reordering .menu-item-depth-4{margin-left:60px}.reordering .menu-item-depth-5{margin-left:75px}.reordering .menu-item-depth-6{margin-left:90px}.reordering .menu-item-depth-7{margin-left:105px}.reordering .menu-item-depth-8{margin-left:120px}.reordering .menu-item-depth-9{margin-left:135px}.reordering .menu-item-depth-10{margin-left:150px}.reordering .menu-item-depth-11{margin-left:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-right:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-right:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-right:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-right:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-right:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-right:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-right:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-right:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-right:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-right:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-right:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-right:165px}.control-section-nav_menu .menu .menu-item-edit-active{margin-left:0}.control-section-nav_menu .menu .menu-item-edit-active .menu-item-bar{margin-right:0}.control-section-nav_menu .menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:-webkit-calc(100% - 2px);max-width:calc(100% - 2px);float:left;display:list-item;border-color:#a0a5aa}.menu-item-transport li.customize-control{float:none}.control-section-nav_menu .menu ul.menu-item-transport .menu-item-bar{margin-top:0}.wp-full-overlay-main{right:auto;width:100%}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}#customize-theme-controls .add-new-menu-item{cursor:pointer;float:right;margin-left:10px;-webkit-transition:all .2s;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.add-new-menu-item:before{content:"\f132";display:inline-block;position:relative;left:-2px;top:-1px;font:400 20px/1 dashicons;vertical-align:middle;-webkit-transition:all .2s;transition:all .2s;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover{background:#eee;border-color:#929793;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#accordion-section-add_menu .add-new-menu-item.open:before,.adding-menu-items .add-new-menu-item:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.menu-item-bar .item-delete{color:#a00;position:absolute;top:2px;right:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;top:9px;left:5px}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{color:red}.menu-item-bar .item-delete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items .item{position:static}#available-menu-items{position:absolute;top:0;bottom:0;left:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#eee;-webkit-transition:left .18s;transition:left .18s;border-right:1px solid #ddd}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-left:none;border-right:none;background:#fff}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#eee}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title .toggle-indicator{display:inline-block;font-size:20px;line-height:1}#available-menu-items .accordion-section-title .toggle-indicator:after{content:'\f140';font:400 20px/1 dashicons;color:#a0a5aa;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:after{color:#777}#available-menu-items .open .accordion-section-title .toggle-indicator:after{content:'\f142'}button.not-a-button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;-webkit-border-radius:0;border-radius:0;outline:0;padding:0;margin:0}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;right:5px;cursor:pointer}#available-menu-items .accordion-section-title button:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{display:block;color:#777;font-weight:400;float:right;margin-left:5px}#available-menu-items .accordion-section-content{overflow-y:auto;background:0 0;padding:1px 15px 15px;margin:0;min-height:120px;max-height:290px}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;left:1px;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items .menu-item-tpl{margin:0}#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid red}#available-menu-items .item-tpl{position:relative;padding:20px 15px 20px 60px;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-menu-items .item-tpl.selected,#available-menu-items .item-tpl:hover{background:#eee}#available-menu-items .menu-item-handle .item-type{padding-right:0}#available-menu-items .menu-item-handle .item-title{padding-left:20px}#available-menu-items .item-top,#available-menu-items .item-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-menu-items .menu-item-handle{cursor:pointer;-webkit-box-shadow:none;box-shadow:none;margin-top:-1px}#available-menu-items .menu-item-handle:hover{z-index:1}#available-menu-items .item-title h4{padding:0 0 5px;font-size:14px}#available-menu-items .item-add{position:absolute;top:1px;left:1px;color:#82878c;width:30px;height:38px;cursor:pointer}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items .item-add:before{content:"\f543";font:400 20px/1 dashicons;position:relative;left:2px;top:3px}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#82878c}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .clear-results{position:absolute;top:20px;right:20px;width:20px;height:20px;cursor:pointer;color:#a00;text-decoration:none}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible{display:none}#available-menu-items-search .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before{content:"\f335";font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover{color:red}#available-menu-items-search .clear-results:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .clear-results:focus,.menu-delete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .spinner{position:absolute;top:20px;margin:0!important;right:20px}#available-menu-items-search input{padding:6px 10px;width:100%}#available-menu-items-search .accordion-section-title{padding:12px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{-webkit-transition:all .2s;transition:all .2s}body.adding-menu-items #available-menu-items{left:0;visibility:visible}body.adding-menu-items .wp-full-overlay-main{left:300px}body.adding-menu-items #customize-preview{opacity:.4}.menu-item-handle .spinner{display:none;float:left;margin:0 8px 0 0}.nav-menu-inserted-item-loading .spinner{display:block}.nav-menu-inserted-item-loading .menu-item-handle .item-type{padding:0 0 0 8px}.added-menu-item .menu-item-handle.loading,.nav-menu-inserted-item-loading .menu-item-handle{padding:10px 15px 10px 8px;cursor:default;opacity:.5;background:#fff;color:#727773}.added-menu-item .menu-item-handle{-webkit-transition-property:opacity,background,color;transition-property:opacity,background,color;-webkit-transition-duration:1.25s;transition-duration:1.25s;-webkit-transition-timing-function:cubic-bezier(.25,-2.5,.75,8);transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#accordion-section-add_menu{margin:15px 12px}.new-menu-section-content{display:none;padding:15px 0 0;clear:both}#accordion-section-add_menu .accordion-section-title{padding-left:45px}#accordion-section-add_menu .accordion-section-title:before{font:400 20px/1 dashicons;position:absolute;top:12px;left:14px;content:"\f132"}#create-new-menu-submit{float:right;margin:0 0 12px}.menu-delete-item{display:block;float:left;padding:1em 0;width:100%}#available-menu-items .customize-section-title,li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-delete{color:#a00;cursor:pointer;text-decoration:underline}.menu-delete:focus,.menu-delete:hover{color:red;text-decoration:none}.menu-delete:focus{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.menu-item-handle{margin-top:-1px}.ui-sortable-disabled .menu-item-handle{cursor:default}.menu-item-handle:hover{position:relative;z-index:10;color:#0073aa}#available-menu-items .menu-item-handle:hover .item-add,.menu-item-handle:hover .item-edit,.menu-item-handle:hover .item-type{color:#0073aa}.menu-item-edit-active .menu-item-handle{border-color:#999;border-bottom:none}.customize-control-nav_menu_item{margin-bottom:0}.customize-control-nav_menu{margin-top:12px}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){body.adding-menu-items div#available-menu-items{top:46px;left:0;z-index:10;width:100%}#available-menu-items #available-menu-items-search .accordion-section-content{top:133px}#available-menu-items .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back{height:69px}#available-menu-items .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}
\ No newline at end of file
+#accordion-section-menu_locations{position:relative;margin-bottom:15px}.menu-in-location,.menu-in-locations{display:block;font-weight:600;font-size:10px}#customize-controls .control-section .accordion-section-title:focus .menu-in-location,#customize-controls .control-section .accordion-section-title:focus .menu-in-locations,#customize-controls .control-section .accordion-section-title:hover .menu-in-location,#customize-controls .control-section .accordion-section-title:hover .menu-in-locations,#customize-controls .theme-location-set{color:#555}.wp-customizer .menu-item-bar .menu-item-handle,.wp-customizer .menu-item-settings,.wp-customizer .menu-item-settings .description-thin{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-customizer .menu-item-bar{margin:0}.wp-customizer .menu-item-bar .menu-item-handle{width:100%;background:#fff}.wp-customizer .menu-item-handle .item-title{margin-right:0}.wp-customizer .menu-item-handle .item-type{padding:1px 21px 0 5px;float:right;text-align:right}.wp-customizer .menu-item-settings{max-width:100%;overflow:hidden;padding:10px;background:#eee;border:1px solid #999;border-top:none}.wp-customizer .menu-item-settings .description-thin{width:100%;height:auto;margin:0 0 8px}.wp-customizer .menu-item-settings input[type=text]{width:100%}.wp-customizer .menu-item-settings .submitbox{margin:0;padding:0}.wp-customizer .menu-item-settings .link-to-original{padding:5px 0;border:none;font-style:normal;margin:0;width:100%}.wp-customizer .menu-item .submitbox .submitdelete{display:block;float:left;margin:6px 0 0;padding:0;cursor:pointer}.wp-customizer .menu-item .submitbox .submitdelete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.menu-item-reorder-nav{display:none;background-color:#fff;position:absolute;top:0;right:0}.menu-item-reorder-nav button{position:relative;overflow:hidden;float:left;display:block;width:30px;height:40px;color:#82878c;text-indent:-9999px;cursor:pointer;background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;outline:0}.menu-item-reorder-nav button:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:400 20px/40px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.menu-item-reorder-nav button:focus,.menu-item-reorder-nav button:hover{color:#191e23;background:#eee}.menus-move-down:before{content:"\f347"}.menus-move-up:before{content:"\f343"}.menus-move-left:before{content:"\f341"}.menus-move-right:before{content:"\f345"}.move-down-disabled .menus-move-down,.move-left-disabled .menus-move-left,.move-right-disabled .menus-move-right,.move-up-disabled .menus-move-up{color:#d5d5d5!important;background-color:#fff!important;cursor:default;pointer-events:none}.menu-item-reorder-nav:before{content:"";display:block;position:absolute;left:-10px;width:10px;height:40px;background:-webkit-gradient(linear,left top,right top,from(rgba(250,250,250,0)),to(rgba(250,250,250,1)));background:-webkit-linear-gradient(left,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%);background:linear-gradient(to right,rgba(250,250,250,0) 0,rgba(250,250,250,1) 100%)}.reordering .menu-item .item-controls,.reordering .menu-item .item-type{display:none}.reordering .menu-item-reorder-nav{display:block}.customize-control input.menu-name-field{width:100%;margin:12px 0}.wp-customizer .menu-item .item-edit{position:absolute;right:-19px;top:2px;display:block;width:30px;height:38px;margin-right:0!important;-webkit-box-shadow:none;box-shadow:none;outline:0;overflow:hidden;cursor:pointer}.wp-customizer .menu-item.menu-item-edit-active .item-edit .toggle-indicator:after{content:"\f142"}.wp-customizer .menu-item-settings p.description{font-style:normal}.wp-customizer .menu-settings dl{margin:12px 0 0;padding:0}.wp-customizer .menu-settings .checkbox-input{margin-top:8px}.wp-customizer .menu-settings .menu-theme-locations{border-top:1px solid #ccc}.wp-customizer .menu-settings{margin-top:36px;border-top:none}.menu-settings .customize-control-checkbox label{line-height:1}.menu-settings .customize-control.customize-control-checkbox{margin-bottom:8px}.customize-control-menu{margin-top:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle{color:#555}.customize-screen-options-toggle{background:0 0;border:none;color:#555;cursor:pointer;margin:0;padding:20px;position:absolute;right:0;top:30px}#customize-controls .customize-info .customize-help-toggle{padding:20px}#customize-controls .customize-info .customize-help-toggle:before{padding:4px}#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:active,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:focus,#customize-controls .customize-info.open.active-menu-screen-options .customize-help-toggle:hover,.active-menu-screen-options .customize-screen-options-toggle,.customize-screen-options-toggle:active,.customize-screen-options-toggle:focus,.customize-screen-options-toggle:hover{color:#0073aa}#customize-controls .customize-info .customize-help-toggle:focus,.customize-screen-options-toggle:focus{outline:0}.customize-screen-options-toggle:before{-moz-osx-font-smoothing:grayscale;border:none;content:"\f111";display:block;font:18px/1 dashicons;padding:5px;text-align:center;text-decoration:none!important;text-indent:0;left:6px;position:absolute;top:6px}#customize-controls .customize-info .customize-help-toggle:focus:before,.customize-screen-options-toggle:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);-webkit-border-radius:100%;border-radius:100%}.wp-customizer #screen-options-wrap{display:none;background:#fff;border-top:1px solid #ddd;padding:4px 15px 15px}.wp-customizer .metabox-prefs label{display:block;padding-right:0;line-height:30px}.wp-customizer .toggle-indicator{display:inline-block;font-size:20px;line-height:1;text-indent:-1px}.rtl .wp-customizer .toggle-indicator{text-indent:1px}.wp-customizer .toggle-indicator:after{content:"\f140";speak:none;vertical-align:top;-webkit-border-radius:50%;border-radius:50%;color:#a0a5aa;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.wp-customizer button:focus .toggle-indicator:after{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#accordion-panel-nav_menus .field-attr-title,#accordion-panel-nav_menus .field-css-classes,#accordion-panel-nav_menus .field-description,#accordion-panel-nav_menus .field-link-target,#accordion-panel-nav_menus .field-xfn{display:none}#accordion-panel-nav_menus.field-attr-title-active .field-attr-title,#accordion-panel-nav_menus.field-css-classes-active .field-css-classes,#accordion-panel-nav_menus.field-description-active .field-description,#accordion-panel-nav_menus.field-link-target-active .field-link-target,#accordion-panel-nav_menus.field-xfn-active .field-xfn{display:block}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:20px}.menu-item-depth-2{margin-left:40px}.menu-item-depth-3{margin-left:60px}.menu-item-depth-4{margin-left:80px}.menu-item-depth-5{margin-left:100px}.menu-item-depth-6{margin-left:120px}.menu-item-depth-7{margin-left:140px}.menu-item-depth-8{margin-left:160px}.menu-item-depth-9{margin-left:180px}.menu-item-depth-10{margin-left:200px}.menu-item-depth-11{margin-left:220px}.menu-item-depth-0>.menu-item-bar{margin-right:0}.menu-item-depth-1>.menu-item-bar{margin-right:20px}.menu-item-depth-2>.menu-item-bar{margin-right:40px}.menu-item-depth-3>.menu-item-bar{margin-right:60px}.menu-item-depth-4>.menu-item-bar{margin-right:80px}.menu-item-depth-5>.menu-item-bar{margin-right:100px}.menu-item-depth-6>.menu-item-bar{margin-right:120px}.menu-item-depth-7>.menu-item-bar{margin-right:140px}.menu-item-depth-8>.menu-item-bar{margin-right:160px}.menu-item-depth-9>.menu-item-bar{margin-right:180px}.menu-item-depth-10>.menu-item-bar{margin-right:200px}.menu-item-depth-11>.menu-item-bar{margin-right:220px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-20px}.menu-item-depth-3 .menu-item-transport{margin-left:-60px}.menu-item-depth-4 .menu-item-transport{margin-left:-80px}.menu-item-depth-2 .menu-item-transport{margin-left:-40px}.menu-item-depth-5 .menu-item-transport{margin-left:-100px}.menu-item-depth-6 .menu-item-transport{margin-left:-120px}.menu-item-depth-7 .menu-item-transport{margin-left:-140px}.menu-item-depth-8 .menu-item-transport{margin-left:-160px}.menu-item-depth-9 .menu-item-transport{margin-left:-180px}.menu-item-depth-10 .menu-item-transport{margin-left:-200px}.menu-item-depth-11 .menu-item-transport{margin-left:-220px}.reordering .menu-item-depth-0{margin-left:0}.reordering .menu-item-depth-1{margin-left:15px}.reordering .menu-item-depth-2{margin-left:30px}.reordering .menu-item-depth-3{margin-left:45px}.reordering .menu-item-depth-4{margin-left:60px}.reordering .menu-item-depth-5{margin-left:75px}.reordering .menu-item-depth-6{margin-left:90px}.reordering .menu-item-depth-7{margin-left:105px}.reordering .menu-item-depth-8{margin-left:120px}.reordering .menu-item-depth-9{margin-left:135px}.reordering .menu-item-depth-10{margin-left:150px}.reordering .menu-item-depth-11{margin-left:165px}.reordering .menu-item-depth-0>.menu-item-bar{margin-right:0}.reordering .menu-item-depth-1>.menu-item-bar{margin-right:15px}.reordering .menu-item-depth-2>.menu-item-bar{margin-right:30px}.reordering .menu-item-depth-3>.menu-item-bar{margin-right:45px}.reordering .menu-item-depth-4>.menu-item-bar{margin-right:60px}.reordering .menu-item-depth-5>.menu-item-bar{margin-right:75px}.reordering .menu-item-depth-6>.menu-item-bar{margin-right:90px}.reordering .menu-item-depth-7>.menu-item-bar{margin-right:105px}.reordering .menu-item-depth-8>.menu-item-bar{margin-right:120px}.reordering .menu-item-depth-9>.menu-item-bar{margin-right:135px}.reordering .menu-item-depth-10>.menu-item-bar{margin-right:150px}.reordering .menu-item-depth-11>.menu-item-bar{margin-right:165px}.control-section-nav_menu .menu .menu-item-edit-active{margin-left:0}.control-section-nav_menu .menu .menu-item-edit-active .menu-item-bar{margin-right:0}.control-section-nav_menu .menu .sortable-placeholder{margin-top:0;margin-bottom:1px;max-width:-webkit-calc(100% - 2px);max-width:calc(100% - 2px);float:left;display:list-item;border-color:#a0a5aa}.menu-item-transport li.customize-control{float:none}.control-section-nav_menu .menu ul.menu-item-transport .menu-item-bar{margin-top:0}.wp-full-overlay-main{right:auto;width:100%}.adding-menu-items .control-section{opacity:.4}.adding-menu-items .control-panel.control-section,.adding-menu-items .control-section.open{opacity:1}.add-menu-toggle.open,.add-menu-toggle.open:hover,.adding-menu-items .add-new-menu-item,.adding-menu-items .add-new-menu-item:hover{background:#eee;border-color:#929793;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}#accordion-section-add_menu .add-new-menu-item.open:before,.adding-menu-items .add-new-menu-item:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.menu-item-bar .item-delete{color:#a00;position:absolute;top:2px;right:-19px;width:30px;height:38px;cursor:pointer;display:none}.menu-item-bar .item-delete:before{content:"\f335";position:absolute;top:9px;left:5px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ie8 .menu-item-bar .item-delete:before{top:-10px}.menu-item-bar .item-delete:focus,.menu-item-bar .item-delete:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;color:red}.menu-item-bar .item-delete:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.adding-menu-items .menu-item-bar .item-edit{display:none}.adding-menu-items .menu-item-bar .item-delete{display:block}#available-menu-items .item{position:static}#available-menu-items{position:absolute;top:0;bottom:0;left:-301px;visibility:hidden;overflow-x:hidden;overflow-y:auto;width:300px;margin:0;z-index:4;background:#eee;-webkit-transition:left .18s;transition:left .18s;border-right:1px solid #ddd}#available-menu-items.opening{overflow-y:hidden}#available-menu-items #available-menu-items-search.open{height:100%;border-bottom:none}#available-menu-items .accordion-section-title{border-left:none;border-right:none;background:#fff;-webkit-transition:background-color .15s;transition:background-color .15s}#available-menu-items #available-menu-items-search .accordion-section-title,#available-menu-items .open .accordion-section-title{background:#eee}#available-menu-items .accordion-section-title:after{content:none!important}#available-menu-items .accordion-section-title:hover .toggle-indicator:after{color:#777}#available-menu-items .open .accordion-section-title .toggle-indicator:after{content:"\f142"}#available-menu-items .accordion-section-title button{display:block;width:28px;height:35px;position:absolute;top:5px;right:5px;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .accordion-section-title .no-items,#available-menu-items .cannot-expand .accordion-section-title .spinner,#available-menu-items .cannot-expand .accordion-section-title>button{display:none}#available-menu-items-search.cannot-expand .accordion-section-title .spinner{display:block}#available-menu-items .cannot-expand .accordion-section-title .no-items{display:block;color:#777;font-weight:400;float:right;margin-left:5px}#available-menu-items .accordion-section-content{overflow-y:auto;background:0 0;padding:1px 15px 15px;margin:0;max-height:290px}#available-menu-items #available-menu-items-search .accordion-section-content{position:absolute;left:1px;top:60px;bottom:0;max-height:none;width:100%;padding:1px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items .menu-item-tpl{margin:0}#custom-menu-item-name.invalid,#custom-menu-item-url.invalid,.menu-name-field.invalid,.menu-name-field.invalid:focus{border:1px solid red}#available-menu-items .item-tpl{position:relative;padding:20px 15px 20px 60px;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-menu-items .item-tpl.selected,#available-menu-items .item-tpl:hover{background:#eee}#available-menu-items .menu-item-handle .item-type{padding-right:0}#available-menu-items .menu-item-handle .item-title{padding-left:20px}#available-menu-items .item-top,#available-menu-items .item-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-menu-items .menu-item-handle{cursor:pointer;-webkit-box-shadow:none;box-shadow:none;margin-top:-1px}#available-menu-items .menu-item-handle:hover{z-index:1}#available-menu-items .item-title h4{padding:0 0 5px;font-size:14px}#available-menu-items .item-add{position:absolute;top:1px;left:1px;color:#82878c;width:30px;height:38px;-webkit-box-shadow:none;box-shadow:none;outline:0;cursor:pointer}#available-menu-items .menu-item-handle .item-add:focus{color:#23282d}#available-menu-items .item-add:before{content:"\f543";position:relative;left:2px;top:3px;display:inline-block;height:20px;-webkit-border-radius:50%;border-radius:50%;font:400 20px/1.05 dashicons}#available-menu-items .item-add:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items .menu-item-handle.item-added .item-add:focus,#available-menu-items .menu-item-handle.item-added .item-title,#available-menu-items .menu-item-handle.item-added .item-type,#available-menu-items .menu-item-handle.item-added:hover .item-add{color:#82878c}#available-menu-items .menu-item-handle.item-added .item-add:before{content:"\f147"}#available-menu-items .accordion-section-title.loading .spinner,#available-menu-items-search.loading .accordion-section-title .spinner{visibility:visible;margin:0 20px}#available-menu-items-search .clear-results{position:absolute;top:20px;right:20px;width:20px;height:20px;cursor:pointer;color:#a00;text-decoration:none}#available-menu-items-search .clear-results,#available-menu-items-search.loading .clear-results.is-visible{display:none}#available-menu-items-search .clear-results.is-visible{display:block}#available-menu-items-search .clear-results:before{content:"\f335";font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-menu-items-search .clear-results:focus,#available-menu-items-search .clear-results:hover{color:red}#available-menu-items-search .clear-results:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#available-menu-items-search .spinner{position:absolute;top:20px;margin:0!important;right:20px}#available-menu-items-search input{padding:6px 10px;width:100%}#available-menu-items-search .accordion-section-title{padding:12px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-menu-items-search .accordion-section-title:after{display:none}#available-menu-items-search .accordion-section-content:empty{min-height:0;padding:0}#available-menu-items-search.loading .accordion-section-content div{opacity:.5}#available-menu-items-search.loading.loading-more .accordion-section-content div{opacity:1}#customize-preview{-webkit-transition:all .2s;transition:all .2s}body.adding-menu-items #available-menu-items{left:0;visibility:visible}body.adding-menu-items .wp-full-overlay-main{left:300px}body.adding-menu-items #customize-preview{opacity:.4}.menu-item-handle .spinner{display:none;float:left;margin:0 8px 0 0}.nav-menu-inserted-item-loading .spinner{display:block}.nav-menu-inserted-item-loading .menu-item-handle .item-type{padding:0 0 0 8px}.added-menu-item .menu-item-handle.loading,.nav-menu-inserted-item-loading .menu-item-handle{padding:10px 15px 10px 8px;cursor:default;opacity:.5;background:#fff;color:#727773}.added-menu-item .menu-item-handle{-webkit-transition-property:opacity,background,color;transition-property:opacity,background,color;-webkit-transition-duration:1.25s;transition-duration:1.25s;-webkit-transition-timing-function:cubic-bezier(.25,-2.5,.75,8);transition-timing-function:cubic-bezier(.25,-2.5,.75,8)}#accordion-section-add_menu{margin:15px 12px}.new-menu-section-content{display:none;padding:15px 0 0;clear:both}#accordion-section-add_menu .accordion-section-title{padding-left:45px}#accordion-section-add_menu .accordion-section-title:before{font:400 20px/1 dashicons;position:absolute;top:12px;left:14px;content:"\f132"}#create-new-menu-submit{float:right;margin:0 0 12px}.menu-delete-item{display:block;float:left;padding:1em 0;width:100%}#available-menu-items .customize-section-title,li.assigned-to-menu-location .menu-delete-item{display:none}li.assigned-to-menu-location .add-new-menu-item{margin-bottom:1em}.menu-delete{color:#a00;cursor:pointer;text-decoration:underline}.menu-delete:focus,.menu-delete:hover{color:red;text-decoration:none}.menu-delete:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.menu-item-handle{margin-top:-1px}.ui-sortable-disabled .menu-item-handle{cursor:default}.menu-item-handle:hover{position:relative;z-index:10;color:#0073aa}#available-menu-items .menu-item-handle:hover .item-add,.menu-item-handle:hover .item-edit,.menu-item-handle:hover .item-type{color:#0073aa}.menu-item-edit-active .menu-item-handle{border-color:#999;border-bottom:none}.customize-control-nav_menu_item{margin-bottom:0}.customize-control-nav_menu{margin-top:12px}@media screen and (max-width:782px){#available-menu-items #available-menu-items-search .accordion-section-content{top:63px}}@media screen and (max-width:640px){body.adding-menu-items div#available-menu-items{top:46px;left:0;z-index:10;width:100%}#available-menu-items #available-menu-items-search .accordion-section-content{top:133px}#available-menu-items .customize-section-title{display:block;margin:0}#available-menu-items .customize-section-back{height:69px}#available-menu-items .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-menu-items .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}}
\ No newline at end of file
index 95c682d3d6ec2feb3c9509b6f0256434c0aacc55..bbe44c37bd078f099c3e0775dfa5b8dd2ea34b18 100644 (file)
 }
 
 /**
-* Widget reordering styles
-**/
-
-.reorder-toggle {
-       float: left;
-       padding: 5px 8px;
-       text-decoration: none;
-       cursor: pointer;
-       outline: none;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
-}
-.reorder-toggle:focus {
-       outline: 1px dotted;
-}
-
-.reorder-done,
-.reordering .reorder {
-       display: none;
-}
-
-.reordering .reorder-done {
-       display: block;
-       color: #0073aa;
-}
-
-.reordering .reorder-done:hover,
-.reordering .reorder-done:active {
-       color: #00a0d2;
-}
-
-#customize-theme-controls .reordering .add-new-widget {
-       opacity: 0.2;
-       pointer-events: none;
-       cursor: not-allowed;
-}
+ * Widget reordering styles
+ */
 
 #customize-theme-controls .widget-reorder-nav {
        display: none;
        left: 0;
        width: 100%;
        height: 100%;
-       font: normal 20px/43px 'dashicons';
+       font: normal 20px/43px dashicons;
        text-align: center;
        text-indent: 0;
        -webkit-font-smoothing: antialiased;
 }
 
 .move-widget:before {
-       content: '\f504';
+       content: "\f504";
 }
 
 .move-widget-down:before {
-       content: '\f347';
+       content: "\f347";
 }
 
 .move-widget-up:before {
-       content: '\f343';
+       content: "\f343";
 }
 
 #customize-theme-controls .first-widget .move-widget-up,
        cursor: default;
 }
 
-#customize-theme-controls  .move-widget-area {
+#customize-theme-controls .move-widget-area {
        display: none;
        background: #fff;
        border: 1px solid #dedede;
 
 #customize-theme-controls .widget-area-select li:before {
        display: none;
-       content: '\f147';
+       content: "\f147";
        position: absolute;
        top: 12px;
        right: 10px;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
 }
        display: block;
 }
 
-
 /**
  * Styles for new widget addition panel
  */
+
 .wp-full-overlay-main {
        left: auto; /* this overrides a right: 0; which causes the preview to resize, I'd rather have it go off screen at the normal size. */
        width: 100%;
 }
 
-#customize-theme-controls .add-new-widget {
-       cursor: pointer;
-       float: left;
-       margin-right: 10px;
-       -webkit-transition: all 0.2s;
-       transition: all 0.2s;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
-       outline: none;
-}
-
-.add-new-widget:before {
-       content: "\f132";
-       display: inline-block;
-       position: relative;
-       right: -2px;
-       top: -1px;
-       font: normal 20px/1 'dashicons';
-       vertical-align: middle;
-       -webkit-transition: all 0.2s;
-       transition: all 0.2s;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
-}
-
 body.adding-widget .add-new-widget,
 body.adding-widget .add-new-widget:hover {
        background: #eee;
@@ -419,7 +356,11 @@ body.adding-widget .add-new-widget:before {
        box-shadow: none;
 }
 
-#available-widgets .widget-title h4 {
+#customize-controls .widget-title h3 {
+       font-size: 1em;
+}
+
+#available-widgets .widget-title h3 {
        padding: 0 0 5px;
        font-size: 14px;
 }
@@ -452,7 +393,8 @@ body.adding-widget #customize-preview {
  * Widget Icon styling
  * No plurals in naming.
  * Ordered from lowest to highest specificity.
- **/
+ */
+
 #available-widgets .widget-title {
        position: relative;
 }
@@ -466,7 +408,7 @@ body.adding-widget #customize-preview {
        width: 20px;
        height: 20px;
        color: #32373c;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        text-align: center;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
@@ -621,12 +563,9 @@ body.adding-widget #customize-preview {
        .last-widget {
                margin-bottom: 15px;
        }
-       .widget-title h4 {
+       .widget-title h3 {
                padding: 13px 15px;
        }
-       .widget-top a.widget-action:after {
-               padding-top: 9px;
-       }
        .widget-reorder-nav span {
                height: 39px;
        }
index 9d9cc391ca61be958be332de1ecad99f2514d171..c85c2b44e6c1bc439a0e1f3cf58f034495714e00 100644 (file)
@@ -1 +1 @@
-.control-section.control-section-sidebar .accordion-section-content.ui-sortable,.wp-full-overlay-sidebar{overflow:visible}#widget-customizer-control-templates,.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label,.customize-control-widget_form .widget-control-save,.reorder-done,.reordering .reorder{display:none}.customize-control-widget_form .widget-top{-webkit-transition:opacity .5s;transition:opacity .5s}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.customize-control-widget_form .widget{margin-bottom:0}.customize-control-widget_form.wide-widget-control .widget-inside{position:fixed;right:299px;top:25%;border:1px solid #e5e5e5;overflow:auto}.customize-control-widget_form.wide-widget-control .widget-inside>.form{padding:20px}.customize-control-widget_form.wide-widget-control .widget-top{-webkit-transition:background-color .4s;transition:background-color .4s}.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top,.customize-control-widget_form.wide-widget-control.expanding .widget-top{background-color:#e3e3e3}.widget-inside{padding:1px 10px 10px;border-top:none;line-height:16px}.widget-top{cursor:move}.customize-control-widget_form.expanded a.widget-action:after{content:"\f142"}.customize-control-widget_form.wide-widget-control a.widget-action:after{content:"\f141"}.customize-control-widget_form.wide-widget-control.expanded a.widget-action:after{content:"\f139"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8);position:relative;z-index:1}.reorder-toggle{float:left;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reorder-toggle:focus{outline:dotted 1px}.reordering .reorder-done{display:block;color:#0073aa}.reordering .reorder-done:active,.reordering .reorder-done:hover{color:#00a0d2}#customize-theme-controls .reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#customize-theme-controls .widget-reorder-nav{display:none;float:left;background-color:#fafafa}.widget-reorder-nav span{position:relative;overflow:hidden;float:right;display:block;width:33px;height:43px;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:400 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#444;background:#eee}.move-widget:before{content:'\f504'}.move-widget-down:before{content:'\f347'}.move-widget-up:before{content:'\f343'}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down{color:#d5d5d5;cursor:default}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #dedede;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 42px 15px 15px;color:#555;border-top:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#customize-theme-controls .widget-area-select li:before{display:none;content:'\f147';position:absolute;top:12px;right:10px;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets .widget-title:before,.add-new-widget:before{content:"\f132";-moz-osx-font-smoothing:grayscale}#customize-theme-controls .widget-area-select li:last-child{border-bottom:1px solid #eee}#customize-theme-controls .widget-area-select .selected{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.4);background:#00a0d2}#customize-theme-controls .widget-area-select .selected:before{display:block}#customize-theme-controls .move-widget-actions{text-align:left;padding:12px}#customize-theme-controls .reordering .widget-title-action{display:none}#customize-theme-controls .reordering .widget-reorder-nav{display:block}.wp-full-overlay-main{left:auto;width:100%}#customize-theme-controls .add-new-widget{cursor:pointer;float:left;margin-right:10px;-webkit-transition:all .2s;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.add-new-widget:before{display:inline-block;position:relative;right:-2px;top:-1px;font:400 20px/1 dashicons;vertical-align:middle;-webkit-transition:all .2s;transition:all .2s;-webkit-font-smoothing:antialiased}body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}body.adding-widget .add-new-widget:before{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}#available-widgets .widget{position:static}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}#available-widgets{position:absolute;top:0;bottom:0;right:-301px;visibility:hidden;overflow:auto;width:300px;margin:0;z-index:1;background:#eee!important;-webkit-transition:right .18s;transition:right .18s;border-left:1px solid #ddd}.ios #available-widgets{-webkit-transition:right 0s;transition:right 0s}#available-widgets-list{top:46px;position:absolute;overflow:auto;bottom:0;width:100%}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;height:46px;padding:8px 13px 7px 17px;background:#eee;border-bottom:1px solid #e4e4e4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-widgets-filter input{padding:5px 10px 2px;width:100%}#available-widgets .widget-tpl{position:relative;padding:20px 60px 20px 15px;background:#fff;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#eee;border-bottom-color:#ccc}#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-widgets .widget-title h4{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#777}#customize-preview{-webkit-transition:all .2s;transition:all .2s}body.adding-widget #available-widgets{right:0;visibility:visible}body.adding-widget .wp-full-overlay-main{right:300px}body.adding-widget #customize-preview{opacity:.4}#available-widgets .widget-title{position:relative}#available-widgets .widget-title:before{position:absolute;top:-3px;left:100%;margin-left:20px;width:20px;height:20px;color:#32373c;font:400 20px/1 dashicons;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=super] .widget-title:before,#available-widgets [class*=like] .widget-title:before{content:"\f155";top:-4px}#available-widgets [class*=meta] .widget-title:before{content:"\f120"}#available-widgets [class*=archives] .widget-title:before{content:"\f480";top:-4px}#available-widgets [class*=categor] .widget-title:before{content:"\f318";top:-4px}#available-widgets [class*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before,#available-widgets [class*=chat] .widget-title:before{content:"\f101"}#available-widgets [class*=post] .widget-title:before{content:"\f109"}#available-widgets [class*=page] .widget-title:before{content:"\f105"}#available-widgets [class*=text] .widget-title:before{content:"\f478"}#available-widgets [class*=link] .widget-title:before{content:"\f103"}#available-widgets [class*=search] .widget-title:before{content:"\f179"}#available-widgets [class*=menu] .widget-title:before,#available-widgets [class*=nav] .widget-title:before{content:"\f333"}#available-widgets [class*=tag] .widget-title:before{content:"\f479"}#available-widgets [class*=rss] .widget-title:before{content:"\f303";top:-6px}#available-widgets [class*=event] .widget-title:before,#available-widgets [class*=calendar] .widget-title:before{content:"\f145";top:-4px}#available-widgets [class*=image] .widget-title:before,#available-widgets [class*=photo] .widget-title:before,#available-widgets [class*=slide] .widget-title:before,#available-widgets [class*=instagram] .widget-title:before{content:"\f128"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=video] .widget-title:before,#available-widgets [class*=tube] .widget-title:before{content:"\f126"}#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before,#available-widgets [class*=audio] .widget-title:before{content:"\f127"}#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=user] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before{content:"\f110"}#available-widgets [class*=commerce] .widget-title:before,#available-widgets [class*=shop] .widget-title:before,#available-widgets [class*=cart] .widget-title:before{content:"\f174";top:-4px}#available-widgets [class*=secur] .widget-title:before,#available-widgets [class*=firewall] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=stat] .widget-title:before,#available-widgets [class*=poll] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#available-widgets [class*=subscribe] .widget-title:before,#available-widgets [class*=news] .widget-title:before,#available-widgets [class*=contact] .widget-title:before,#available-widgets [class*=mail] .widget-title:before{content:"\f466"}#available-widgets [class*=share] .widget-title:before,#available-widgets [class*=socia] .widget-title:before{content:"\f237"}#available-widgets [class*=lang] .widget-title:before,#available-widgets [class*=translat] .widget-title:before{content:"\f326"}#available-widgets [class*=locat] .widget-title:before,#available-widgets [class*=map] .widget-title:before{content:"\f231"}#available-widgets [class*=download] .widget-title:before{content:"\f316"}#available-widgets [class*=weather] .widget-title:before{content:"\f176";top:-4px}#available-widgets [class*=facebook] .widget-title:before{content:"\f304"}#available-widgets [class*=tweet] .widget-title:before,#available-widgets [class*=twitter] .widget-title:before{content:"\f301"}#available-widgets .customize-section-title{display:none}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget{margin-bottom:0}.widget-top{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h4{padding:13px 15px}.widget-top a.widget-action:after{padding-top:9px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 42px 11px 15px}#customize-theme-controls .widget-area-select li:before{top:8px}}@media screen and (max-width:640px){body.adding-widget div#available-widgets{top:46px;right:0;z-index:10;width:100%}#available-widgets .customize-section-title{display:block;margin:0}#available-widgets .customize-section-back{height:69px}#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;background:#fff;height:auto;padding:10px 15px}#available-widgets-list{top:140px}}
\ No newline at end of file
+.control-section.control-section-sidebar .accordion-section-content.ui-sortable,.wp-full-overlay-sidebar{overflow:visible}#widget-customizer-control-templates,.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label,.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .widget-top{-webkit-transition:opacity .5s;transition:opacity .5s}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.customize-control-widget_form .widget{margin-bottom:0}.customize-control-widget_form.wide-widget-control .widget-inside{position:fixed;right:299px;top:25%;border:1px solid #e5e5e5;overflow:auto}.customize-control-widget_form.wide-widget-control .widget-inside>.form{padding:20px}.customize-control-widget_form.wide-widget-control .widget-top{-webkit-transition:background-color .4s;transition:background-color .4s}.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top,.customize-control-widget_form.wide-widget-control.expanding .widget-top{background-color:#e3e3e3}.widget-inside{padding:1px 10px 10px;border-top:none;line-height:16px}.widget-top{cursor:move}.customize-control-widget_form.expanded a.widget-action:after{content:"\f142"}.customize-control-widget_form.wide-widget-control a.widget-action:after{content:"\f141"}.customize-control-widget_form.wide-widget-control.expanded a.widget-action:after{content:"\f139"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8);position:relative;z-index:1}#customize-theme-controls .widget-reorder-nav{display:none;float:left;background-color:#fafafa}.widget-reorder-nav span{position:relative;overflow:hidden;float:right;display:block;width:33px;height:43px;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;left:0;width:100%;height:100%;font:400 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#444;background:#eee}.move-widget:before{content:"\f504"}.move-widget-down:before{content:"\f347"}.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down{color:#d5d5d5;cursor:default}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #dedede;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 42px 15px 15px;color:#555;border-top:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#customize-theme-controls .widget-area-select li:before{display:none;content:"\f147";position:absolute;top:12px;right:10px;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#customize-theme-controls .widget-area-select li:last-child{border-bottom:1px solid #eee}#customize-theme-controls .widget-area-select .selected{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.4);background:#00a0d2}#customize-theme-controls .widget-area-select .selected:before{display:block}#customize-theme-controls .move-widget-actions{text-align:left;padding:12px}#customize-theme-controls .reordering .widget-title-action{display:none}#customize-theme-controls .reordering .widget-reorder-nav{display:block}.wp-full-overlay-main{left:auto;width:100%}body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}body.adding-widget .add-new-widget:before{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}#available-widgets .widget{position:static}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}#available-widgets{position:absolute;top:0;bottom:0;right:-301px;visibility:hidden;overflow:auto;width:300px;margin:0;z-index:1;background:#eee!important;-webkit-transition:right .18s;transition:right .18s;border-left:1px solid #ddd}.ios #available-widgets{-webkit-transition:right 0s;transition:right 0s}#available-widgets-list{top:46px;position:absolute;overflow:auto;bottom:0;width:100%}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;height:46px;padding:8px 13px 7px 17px;background:#eee;border-bottom:1px solid #e4e4e4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-widgets-filter input{padding:5px 10px 2px;width:100%}#available-widgets .widget-tpl{position:relative;padding:20px 60px 20px 15px;background:#fff;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#eee;border-bottom-color:#ccc}#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#customize-controls .widget-title h3{font-size:1em}#available-widgets .widget-title h3{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#777}#customize-preview{-webkit-transition:all .2s;transition:all .2s}body.adding-widget #available-widgets{right:0;visibility:visible}body.adding-widget .wp-full-overlay-main{right:300px}body.adding-widget #customize-preview{opacity:.4}#available-widgets .widget-title{position:relative}#available-widgets .widget-title:before{content:"\f132";position:absolute;top:-3px;left:100%;margin-left:20px;width:20px;height:20px;color:#32373c;font:400 20px/1 dashicons;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=super] .widget-title:before,#available-widgets [class*=like] .widget-title:before{content:"\f155";top:-4px}#available-widgets [class*=meta] .widget-title:before{content:"\f120"}#available-widgets [class*=archives] .widget-title:before{content:"\f480";top:-4px}#available-widgets [class*=categor] .widget-title:before{content:"\f318";top:-4px}#available-widgets [class*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before,#available-widgets [class*=chat] .widget-title:before{content:"\f101"}#available-widgets [class*=post] .widget-title:before{content:"\f109"}#available-widgets [class*=page] .widget-title:before{content:"\f105"}#available-widgets [class*=text] .widget-title:before{content:"\f478"}#available-widgets [class*=link] .widget-title:before{content:"\f103"}#available-widgets [class*=search] .widget-title:before{content:"\f179"}#available-widgets [class*=menu] .widget-title:before,#available-widgets [class*=nav] .widget-title:before{content:"\f333"}#available-widgets [class*=tag] .widget-title:before{content:"\f479"}#available-widgets [class*=rss] .widget-title:before{content:"\f303";top:-6px}#available-widgets [class*=event] .widget-title:before,#available-widgets [class*=calendar] .widget-title:before{content:"\f145";top:-4px}#available-widgets [class*=image] .widget-title:before,#available-widgets [class*=photo] .widget-title:before,#available-widgets [class*=slide] .widget-title:before,#available-widgets [class*=instagram] .widget-title:before{content:"\f128"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=video] .widget-title:before,#available-widgets [class*=tube] .widget-title:before{content:"\f126"}#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before,#available-widgets [class*=audio] .widget-title:before{content:"\f127"}#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=user] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before{content:"\f110"}#available-widgets [class*=commerce] .widget-title:before,#available-widgets [class*=shop] .widget-title:before,#available-widgets [class*=cart] .widget-title:before{content:"\f174";top:-4px}#available-widgets [class*=secur] .widget-title:before,#available-widgets [class*=firewall] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=stat] .widget-title:before,#available-widgets [class*=poll] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#available-widgets [class*=subscribe] .widget-title:before,#available-widgets [class*=news] .widget-title:before,#available-widgets [class*=contact] .widget-title:before,#available-widgets [class*=mail] .widget-title:before{content:"\f466"}#available-widgets [class*=share] .widget-title:before,#available-widgets [class*=socia] .widget-title:before{content:"\f237"}#available-widgets [class*=lang] .widget-title:before,#available-widgets [class*=translat] .widget-title:before{content:"\f326"}#available-widgets [class*=locat] .widget-title:before,#available-widgets [class*=map] .widget-title:before{content:"\f231"}#available-widgets [class*=download] .widget-title:before{content:"\f316"}#available-widgets [class*=weather] .widget-title:before{content:"\f176";top:-4px}#available-widgets [class*=facebook] .widget-title:before{content:"\f304"}#available-widgets [class*=twitter] .widget-title:before,#available-widgets [class*=tweet] .widget-title:before{content:"\f301"}#available-widgets .customize-section-title{display:none}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget{margin-bottom:0}.widget-top{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h3{padding:13px 15px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 42px 11px 15px}#customize-theme-controls .widget-area-select li:before{top:8px}}@media screen and (max-width:640px){body.adding-widget div#available-widgets{top:46px;right:0;z-index:10;width:100%}#available-widgets .customize-section-title{display:block;margin:0}#available-widgets .customize-section-back{height:69px}#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 14px 12px 10px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;background:#fff;height:auto;padding:10px 15px}#available-widgets-list{top:140px}}
\ No newline at end of file
index 278c32fa21d34f35b49fc450972050db0f444483..3f839cbd86fa9acc464dcb7097a01c4ef7bee928 100644 (file)
 }
 
 /**
-* Widget reordering styles
-**/
-
-.reorder-toggle {
-       float: right;
-       padding: 5px 8px;
-       text-decoration: none;
-       cursor: pointer;
-       outline: none;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
-}
-.reorder-toggle:focus {
-       outline: 1px dotted;
-}
-
-.reorder-done,
-.reordering .reorder {
-       display: none;
-}
-
-.reordering .reorder-done {
-       display: block;
-       color: #0073aa;
-}
-
-.reordering .reorder-done:hover,
-.reordering .reorder-done:active {
-       color: #00a0d2;
-}
-
-#customize-theme-controls .reordering .add-new-widget {
-       opacity: 0.2;
-       pointer-events: none;
-       cursor: not-allowed;
-}
+ * Widget reordering styles
+ */
 
 #customize-theme-controls .widget-reorder-nav {
        display: none;
        right: 0;
        width: 100%;
        height: 100%;
-       font: normal 20px/43px 'dashicons';
+       font: normal 20px/43px dashicons;
        text-align: center;
        text-indent: 0;
        -webkit-font-smoothing: antialiased;
 }
 
 .move-widget:before {
-       content: '\f504';
+       content: "\f504";
 }
 
 .move-widget-down:before {
-       content: '\f347';
+       content: "\f347";
 }
 
 .move-widget-up:before {
-       content: '\f343';
+       content: "\f343";
 }
 
 #customize-theme-controls .first-widget .move-widget-up,
        cursor: default;
 }
 
-#customize-theme-controls  .move-widget-area {
+#customize-theme-controls .move-widget-area {
        display: none;
        background: #fff;
        border: 1px solid #dedede;
 
 #customize-theme-controls .widget-area-select li:before {
        display: none;
-       content: '\f147';
+       content: "\f147";
        position: absolute;
        top: 12px;
        left: 10px;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
 }
        display: block;
 }
 
-
 /**
  * Styles for new widget addition panel
  */
+
 .wp-full-overlay-main {
        right: auto; /* this overrides a right: 0; which causes the preview to resize, I'd rather have it go off screen at the normal size. */
        width: 100%;
 }
 
-#customize-theme-controls .add-new-widget {
-       cursor: pointer;
-       float: right;
-       margin-left: 10px;
-       -webkit-transition: all 0.2s;
-       transition: all 0.2s;
-       -webkit-user-select: none;
-       -moz-user-select: none;
-       -ms-user-select: none;
-       user-select: none;
-       outline: none;
-}
-
-.add-new-widget:before {
-       content: "\f132";
-       display: inline-block;
-       position: relative;
-       left: -2px;
-       top: -1px;
-       font: normal 20px/1 'dashicons';
-       vertical-align: middle;
-       -webkit-transition: all 0.2s;
-       transition: all 0.2s;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
-}
-
 body.adding-widget .add-new-widget,
 body.adding-widget .add-new-widget:hover {
        background: #eee;
@@ -419,7 +356,11 @@ body.adding-widget .add-new-widget:before {
        box-shadow: none;
 }
 
-#available-widgets .widget-title h4 {
+#customize-controls .widget-title h3 {
+       font-size: 1em;
+}
+
+#available-widgets .widget-title h3 {
        padding: 0 0 5px;
        font-size: 14px;
 }
@@ -452,7 +393,8 @@ body.adding-widget #customize-preview {
  * Widget Icon styling
  * No plurals in naming.
  * Ordered from lowest to highest specificity.
- **/
+ */
+
 #available-widgets .widget-title {
        position: relative;
 }
@@ -466,7 +408,7 @@ body.adding-widget #customize-preview {
        width: 20px;
        height: 20px;
        color: #32373c;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        text-align: center;
        -webkit-box-sizing: border-box;
        -moz-box-sizing: border-box;
@@ -621,12 +563,9 @@ body.adding-widget #customize-preview {
        .last-widget {
                margin-bottom: 15px;
        }
-       .widget-title h4 {
+       .widget-title h3 {
                padding: 13px 15px;
        }
-       .widget-top a.widget-action:after {
-               padding-top: 9px;
-       }
        .widget-reorder-nav span {
                height: 39px;
        }
index 40bfd22e425771a8f3ac234c89ade6cc220766a9..5bfe305b6fc285c1ba46f7d58ef46d3232c571d1 100644 (file)
@@ -1 +1 @@
-.control-section.control-section-sidebar .accordion-section-content.ui-sortable,.wp-full-overlay-sidebar{overflow:visible}#widget-customizer-control-templates,.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label,.customize-control-widget_form .widget-control-save,.reorder-done,.reordering .reorder{display:none}.customize-control-widget_form .widget-top{-webkit-transition:opacity .5s;transition:opacity .5s}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.customize-control-widget_form .widget{margin-bottom:0}.customize-control-widget_form.wide-widget-control .widget-inside{position:fixed;left:299px;top:25%;border:1px solid #e5e5e5;overflow:auto}.customize-control-widget_form.wide-widget-control .widget-inside>.form{padding:20px}.customize-control-widget_form.wide-widget-control .widget-top{-webkit-transition:background-color .4s;transition:background-color .4s}.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top,.customize-control-widget_form.wide-widget-control.expanding .widget-top{background-color:#e3e3e3}.widget-inside{padding:1px 10px 10px;border-top:none;line-height:16px}.widget-top{cursor:move}.customize-control-widget_form.expanded a.widget-action:after{content:"\f142"}.customize-control-widget_form.wide-widget-control a.widget-action:after{content:"\f139"}.customize-control-widget_form.wide-widget-control.expanded a.widget-action:after{content:"\f141"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8);position:relative;z-index:1}.reorder-toggle{float:right;padding:5px 8px;text-decoration:none;cursor:pointer;outline:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reorder-toggle:focus{outline:dotted 1px}.reordering .reorder-done{display:block;color:#0073aa}.reordering .reorder-done:active,.reordering .reorder-done:hover{color:#00a0d2}#customize-theme-controls .reordering .add-new-widget{opacity:.2;pointer-events:none;cursor:not-allowed}#customize-theme-controls .widget-reorder-nav{display:none;float:right;background-color:#fafafa}.widget-reorder-nav span{position:relative;overflow:hidden;float:left;display:block;width:33px;height:43px;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:400 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#444;background:#eee}.move-widget:before{content:'\f504'}.move-widget-down:before{content:'\f347'}.move-widget-up:before{content:'\f343'}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down{color:#d5d5d5;cursor:default}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #dedede;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 15px 15px 42px;color:#555;border-top:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#customize-theme-controls .widget-area-select li:before{display:none;content:'\f147';position:absolute;top:12px;left:10px;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets .widget-title:before,.add-new-widget:before{content:"\f132";-moz-osx-font-smoothing:grayscale}#customize-theme-controls .widget-area-select li:last-child{border-bottom:1px solid #eee}#customize-theme-controls .widget-area-select .selected{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.4);background:#00a0d2}#customize-theme-controls .widget-area-select .selected:before{display:block}#customize-theme-controls .move-widget-actions{text-align:right;padding:12px}#customize-theme-controls .reordering .widget-title-action{display:none}#customize-theme-controls .reordering .widget-reorder-nav{display:block}.wp-full-overlay-main{right:auto;width:100%}#customize-theme-controls .add-new-widget{cursor:pointer;float:right;margin-left:10px;-webkit-transition:all .2s;transition:all .2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;outline:0}.add-new-widget:before{display:inline-block;position:relative;left:-2px;top:-1px;font:400 20px/1 dashicons;vertical-align:middle;-webkit-transition:all .2s;transition:all .2s;-webkit-font-smoothing:antialiased}body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}body.adding-widget .add-new-widget:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#available-widgets .widget{position:static}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}#available-widgets{position:absolute;top:0;bottom:0;left:-301px;visibility:hidden;overflow:auto;width:300px;margin:0;z-index:1;background:#eee!important;-webkit-transition:left .18s;transition:left .18s;border-right:1px solid #ddd}.ios #available-widgets{-webkit-transition:left 0s;transition:left 0s}#available-widgets-list{top:46px;position:absolute;overflow:auto;bottom:0;width:100%}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;height:46px;padding:8px 17px 7px 13px;background:#eee;border-bottom:1px solid #e4e4e4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-widgets-filter input{padding:5px 10px 2px;width:100%}#available-widgets .widget-tpl{position:relative;padding:20px 15px 20px 60px;background:#fff;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#eee;border-bottom-color:#ccc}#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#available-widgets .widget-title h4{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#777}#customize-preview{-webkit-transition:all .2s;transition:all .2s}body.adding-widget #available-widgets{left:0;visibility:visible}body.adding-widget .wp-full-overlay-main{left:300px}body.adding-widget #customize-preview{opacity:.4}#available-widgets .widget-title{position:relative}#available-widgets .widget-title:before{position:absolute;top:-3px;right:100%;margin-right:20px;width:20px;height:20px;color:#32373c;font:400 20px/1 dashicons;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=super] .widget-title:before,#available-widgets [class*=like] .widget-title:before{content:"\f155";top:-4px}#available-widgets [class*=meta] .widget-title:before{content:"\f120"}#available-widgets [class*=archives] .widget-title:before{content:"\f480";top:-4px}#available-widgets [class*=categor] .widget-title:before{content:"\f318";top:-4px}#available-widgets [class*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before,#available-widgets [class*=chat] .widget-title:before{content:"\f101"}#available-widgets [class*=post] .widget-title:before{content:"\f109"}#available-widgets [class*=page] .widget-title:before{content:"\f105"}#available-widgets [class*=text] .widget-title:before{content:"\f478"}#available-widgets [class*=link] .widget-title:before{content:"\f103"}#available-widgets [class*=search] .widget-title:before{content:"\f179"}#available-widgets [class*=menu] .widget-title:before,#available-widgets [class*=nav] .widget-title:before{content:"\f333"}#available-widgets [class*=tag] .widget-title:before{content:"\f479"}#available-widgets [class*=rss] .widget-title:before{content:"\f303";top:-6px}#available-widgets [class*=event] .widget-title:before,#available-widgets [class*=calendar] .widget-title:before{content:"\f145";top:-4px}#available-widgets [class*=image] .widget-title:before,#available-widgets [class*=photo] .widget-title:before,#available-widgets [class*=slide] .widget-title:before,#available-widgets [class*=instagram] .widget-title:before{content:"\f128"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=video] .widget-title:before,#available-widgets [class*=tube] .widget-title:before{content:"\f126"}#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before,#available-widgets [class*=audio] .widget-title:before{content:"\f127"}#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=user] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before{content:"\f110"}#available-widgets [class*=commerce] .widget-title:before,#available-widgets [class*=shop] .widget-title:before,#available-widgets [class*=cart] .widget-title:before{content:"\f174";top:-4px}#available-widgets [class*=secur] .widget-title:before,#available-widgets [class*=firewall] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=stat] .widget-title:before,#available-widgets [class*=poll] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#available-widgets [class*=subscribe] .widget-title:before,#available-widgets [class*=news] .widget-title:before,#available-widgets [class*=contact] .widget-title:before,#available-widgets [class*=mail] .widget-title:before{content:"\f466"}#available-widgets [class*=share] .widget-title:before,#available-widgets [class*=socia] .widget-title:before{content:"\f237"}#available-widgets [class*=lang] .widget-title:before,#available-widgets [class*=translat] .widget-title:before{content:"\f326"}#available-widgets [class*=locat] .widget-title:before,#available-widgets [class*=map] .widget-title:before{content:"\f231"}#available-widgets [class*=download] .widget-title:before{content:"\f316"}#available-widgets [class*=weather] .widget-title:before{content:"\f176";top:-4px}#available-widgets [class*=facebook] .widget-title:before{content:"\f304"}#available-widgets [class*=tweet] .widget-title:before,#available-widgets [class*=twitter] .widget-title:before{content:"\f301"}#available-widgets .customize-section-title{display:none}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget{margin-bottom:0}.widget-top{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h4{padding:13px 15px}.widget-top a.widget-action:after{padding-top:9px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 15px 11px 42px}#customize-theme-controls .widget-area-select li:before{top:8px}}@media screen and (max-width:640px){body.adding-widget div#available-widgets{top:46px;left:0;z-index:10;width:100%}#available-widgets .customize-section-title{display:block;margin:0}#available-widgets .customize-section-back{height:69px}#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;background:#fff;height:auto;padding:10px 15px}#available-widgets-list{top:140px}}
\ No newline at end of file
+.control-section.control-section-sidebar .accordion-section-content.ui-sortable,.wp-full-overlay-sidebar{overflow:visible}#widget-customizer-control-templates,.control-section.control-section-sidebar,.customize-control-sidebar_widgets .hide-if-js,.customize-control-sidebar_widgets label,.customize-control-widget_form .widget-control-save{display:none}.customize-control-widget_form .widget-top{-webkit-transition:opacity .5s;transition:opacity .5s}.customize-control-widget_form:not(.widget-rendered) .widget-top{opacity:.5}.customize-control-widget_form .spinner{visibility:hidden;margin-top:0}.customize-control-widget_form.previewer-loading .spinner{visibility:visible}.customize-control-widget_form.widget-form-disabled .widget-content{opacity:.7;pointer-events:none;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.customize-control-widget_form .widget{margin-bottom:0}.customize-control-widget_form.wide-widget-control .widget-inside{position:fixed;left:299px;top:25%;border:1px solid #e5e5e5;overflow:auto}.customize-control-widget_form.wide-widget-control .widget-inside>.form{padding:20px}.customize-control-widget_form.wide-widget-control .widget-top{-webkit-transition:background-color .4s;transition:background-color .4s}.customize-control-widget_form.wide-widget-control.expanded:not(.collapsing) .widget-top,.customize-control-widget_form.wide-widget-control.expanding .widget-top{background-color:#e3e3e3}.widget-inside{padding:1px 10px 10px;border-top:none;line-height:16px}.widget-top{cursor:move}.customize-control-widget_form.expanded a.widget-action:after{content:"\f142"}.customize-control-widget_form.wide-widget-control a.widget-action:after{content:"\f139"}.customize-control-widget_form.wide-widget-control.expanded a.widget-action:after{content:"\f141"}.widget-title-action{cursor:pointer}.customize-control-widget_form .widget .customize-control-title{cursor:move}.control-section.accordion-section.highlighted>.accordion-section-title,.customize-control-widget_form.highlighted{outline:0;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8);position:relative;z-index:1}#customize-theme-controls .widget-reorder-nav{display:none;float:right;background-color:#fafafa}.widget-reorder-nav span{position:relative;overflow:hidden;float:left;display:block;width:33px;height:43px;color:#82878c;text-indent:-9999px;cursor:pointer;outline:0}.widget-reorder-nav span:before{display:inline-block;position:absolute;top:0;right:0;width:100%;height:100%;font:400 20px/43px dashicons;text-align:center;text-indent:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.widget-reorder-nav span:focus,.widget-reorder-nav span:hover{color:#444;background:#eee}.move-widget:before{content:"\f504"}.move-widget-down:before{content:"\f347"}.move-widget-up:before{content:"\f343"}#customize-theme-controls .first-widget .move-widget-up,#customize-theme-controls .last-widget .move-widget-down{color:#d5d5d5;cursor:default}#customize-theme-controls .move-widget-area{display:none;background:#fff;border:1px solid #dedede;border-top:none;cursor:auto}#customize-theme-controls .reordering .move-widget-area.active{display:block}#customize-theme-controls .move-widget-area .description{margin:0;padding:15px 20px;font-weight:400}#customize-theme-controls .widget-area-select{margin:0;padding:0;list-style:none}#customize-theme-controls .widget-area-select li{position:relative;margin:0;padding:13px 15px 15px 42px;color:#555;border-top:1px solid #eee;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#customize-theme-controls .widget-area-select li:before{display:none;content:"\f147";position:absolute;top:12px;left:10px;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#customize-theme-controls .widget-area-select li:last-child{border-bottom:1px solid #eee}#customize-theme-controls .widget-area-select .selected{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.4);background:#00a0d2}#customize-theme-controls .widget-area-select .selected:before{display:block}#customize-theme-controls .move-widget-actions{text-align:right;padding:12px}#customize-theme-controls .reordering .widget-title-action{display:none}#customize-theme-controls .reordering .widget-reorder-nav{display:block}.wp-full-overlay-main{right:auto;width:100%}body.adding-widget .add-new-widget,body.adding-widget .add-new-widget:hover{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}body.adding-widget .add-new-widget:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}#available-widgets .widget{position:static}#widgets-left #available-widgets .widget{float:none!important;width:auto!important}#available-widgets{position:absolute;top:0;bottom:0;left:-301px;visibility:hidden;overflow:auto;width:300px;margin:0;z-index:1;background:#eee!important;-webkit-transition:left .18s;transition:left .18s;border-right:1px solid #ddd}.ios #available-widgets{-webkit-transition:left 0s;transition:left 0s}#available-widgets-list{top:46px;position:absolute;overflow:auto;bottom:0;width:100%}#available-widgets-filter{position:fixed;top:0;z-index:1;width:300px;height:46px;padding:8px 17px 7px 13px;background:#eee;border-bottom:1px solid #e4e4e4;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#available-widgets-filter input{padding:5px 10px 2px;width:100%}#available-widgets .widget-tpl{position:relative;padding:20px 15px 20px 60px;background:#fff;border-bottom:1px solid #e4e4e4;cursor:pointer;display:none}#available-widgets .widget-tpl.selected,#available-widgets .widget-tpl:hover{background:#eee;border-bottom-color:#ccc}#available-widgets .widget-top,#available-widgets .widget-top:hover{border:none;background:0 0;-webkit-box-shadow:none;box-shadow:none}#customize-controls .widget-title h3{font-size:1em}#available-widgets .widget-title h3{padding:0 0 5px;font-size:14px}#available-widgets .widget .widget-description{padding:0;color:#777}#customize-preview{-webkit-transition:all .2s;transition:all .2s}body.adding-widget #available-widgets{left:0;visibility:visible}body.adding-widget .wp-full-overlay-main{left:300px}body.adding-widget #customize-preview{opacity:.4}#available-widgets .widget-title{position:relative}#available-widgets .widget-title:before{content:"\f132";position:absolute;top:-3px;right:100%;margin-right:20px;width:20px;height:20px;color:#32373c;font:400 20px/1 dashicons;text-align:center;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#available-widgets [class*=easy] .widget-title:before{content:"\f328";top:-4px}#available-widgets [class*=super] .widget-title:before,#available-widgets [class*=like] .widget-title:before{content:"\f155";top:-4px}#available-widgets [class*=meta] .widget-title:before{content:"\f120"}#available-widgets [class*=archives] .widget-title:before{content:"\f480";top:-4px}#available-widgets [class*=categor] .widget-title:before{content:"\f318";top:-4px}#available-widgets [class*=comment] .widget-title:before,#available-widgets [class*=testimonial] .widget-title:before,#available-widgets [class*=chat] .widget-title:before{content:"\f101"}#available-widgets [class*=post] .widget-title:before{content:"\f109"}#available-widgets [class*=page] .widget-title:before{content:"\f105"}#available-widgets [class*=text] .widget-title:before{content:"\f478"}#available-widgets [class*=link] .widget-title:before{content:"\f103"}#available-widgets [class*=search] .widget-title:before{content:"\f179"}#available-widgets [class*=menu] .widget-title:before,#available-widgets [class*=nav] .widget-title:before{content:"\f333"}#available-widgets [class*=tag] .widget-title:before{content:"\f479"}#available-widgets [class*=rss] .widget-title:before{content:"\f303";top:-6px}#available-widgets [class*=event] .widget-title:before,#available-widgets [class*=calendar] .widget-title:before{content:"\f145";top:-4px}#available-widgets [class*=image] .widget-title:before,#available-widgets [class*=photo] .widget-title:before,#available-widgets [class*=slide] .widget-title:before,#available-widgets [class*=instagram] .widget-title:before{content:"\f128"}#available-widgets [class*=album] .widget-title:before,#available-widgets [class*=galler] .widget-title:before{content:"\f161"}#available-widgets [class*=video] .widget-title:before,#available-widgets [class*=tube] .widget-title:before{content:"\f126"}#available-widgets [class*=music] .widget-title:before,#available-widgets [class*=radio] .widget-title:before,#available-widgets [class*=audio] .widget-title:before{content:"\f127"}#available-widgets [class*=login] .widget-title:before,#available-widgets [class*=user] .widget-title:before,#available-widgets [class*=member] .widget-title:before,#available-widgets [class*=avatar] .widget-title:before,#available-widgets [class*=subscriber] .widget-title:before,#available-widgets [class*=profile] .widget-title:before,#available-widgets [class*=grofile] .widget-title:before{content:"\f110"}#available-widgets [class*=commerce] .widget-title:before,#available-widgets [class*=shop] .widget-title:before,#available-widgets [class*=cart] .widget-title:before{content:"\f174";top:-4px}#available-widgets [class*=secur] .widget-title:before,#available-widgets [class*=firewall] .widget-title:before{content:"\f332"}#available-widgets [class*=analytic] .widget-title:before,#available-widgets [class*=stat] .widget-title:before,#available-widgets [class*=poll] .widget-title:before{content:"\f185"}#available-widgets [class*=form] .widget-title:before{content:"\f175"}#available-widgets [class*=subscribe] .widget-title:before,#available-widgets [class*=news] .widget-title:before,#available-widgets [class*=contact] .widget-title:before,#available-widgets [class*=mail] .widget-title:before{content:"\f466"}#available-widgets [class*=share] .widget-title:before,#available-widgets [class*=socia] .widget-title:before{content:"\f237"}#available-widgets [class*=lang] .widget-title:before,#available-widgets [class*=translat] .widget-title:before{content:"\f326"}#available-widgets [class*=locat] .widget-title:before,#available-widgets [class*=map] .widget-title:before{content:"\f231"}#available-widgets [class*=download] .widget-title:before{content:"\f316"}#available-widgets [class*=weather] .widget-title:before{content:"\f176";top:-4px}#available-widgets [class*=facebook] .widget-title:before{content:"\f304"}#available-widgets [class*=twitter] .widget-title:before,#available-widgets [class*=tweet] .widget-title:before{content:"\f301"}#available-widgets .customize-section-title{display:none}@media screen and (max-height:700px) and (min-width:981px){.customize-control-widget{margin-bottom:0}.widget-top{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px}.widget-top:hover{position:relative;z-index:1}.last-widget{margin-bottom:15px}.widget-title h3{padding:13px 15px}.widget-reorder-nav span{height:39px}.widget-reorder-nav span:before{line-height:39px}#customize-theme-controls .widget-area-select li{padding:9px 15px 11px 42px}#customize-theme-controls .widget-area-select li:before{top:8px}}@media screen and (max-width:640px){body.adding-widget div#available-widgets{top:46px;left:0;z-index:10;width:100%}#available-widgets .customize-section-title{display:block;margin:0}#available-widgets .customize-section-back{height:69px}#available-widgets .customize-section-title h3{font-size:20px;font-weight:200;padding:9px 10px 12px 14px;margin:0;line-height:24px;color:#555;display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets .customize-section-title .customize-action{font-size:13px;display:block;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}#available-widgets-filter{position:relative;width:100%;background:#fff;height:auto;padding:10px 15px}#available-widgets-list{top:140px}}
\ No newline at end of file
index d04ae1ce97053ba1a496496b8b970784ced080f5..b9365d4497390cca3201f8b2de8848156f8a1bc9 100644 (file)
        line-height: 2.1em;
 }
 
-.welcome-panel h3 {
+.welcome-panel h2 {
        margin: 0;
        font-size: 21px;
        font-weight: normal;
        line-height: 1.2;
 }
 
-.welcome-panel h4 {
+.welcome-panel h3 {
        margin: 1.33em 0 0;
        font-size: 16px;
 }
 
 .welcome-panel .welcome-icon:before {
        color: #82878c;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        display: inline-block;
        padding: 0 0 0 10px;
 
 .welcome-panel .welcome-write-blog:before,
 .welcome-panel .welcome-edit-page:before {
-       content:'\f119';
+       content: "\f119";
        top: -3px;
 }
 
 .welcome-panel .welcome-add-page:before {
-       content:'\f132';
+       content: "\f132";
 }
 
 .welcome-panel .welcome-view-site:before {
-       content:'\f115';
+       content: "\f115";
        top: -2px;
 }
 
 .welcome-panel .welcome-widgets-menus:before {
-       content:'\f116';
+       content: "\f116";
        top: -2px;
 }
 
 .welcome-panel .welcome-comments:before {
-       content:'\f117';
+       content: "\f117";
        top: -1px;
 }
 
 .welcome-panel .welcome-learn-more:before {
-       content:'\f118';
+       content: "\f118";
        top: -1px;
 }
 
@@ -360,8 +360,11 @@ body #dashboard-widgets .postbox form .submit {
        overflow: hidden;
 }
 
-#dashboard-widgets h4.mu-storage {
-       margin-bottom: 10px;
+#dashboard-widgets h3.mu-storage {
+       margin: 0 0 10px;
+       padding: 0;
+       font-size: 14px;
+       font-weight: normal;
 }
 
 /* Dashboard right now - Colors */
@@ -378,7 +381,7 @@ body #dashboard-widgets .postbox form .submit {
        padding: 10px 12px 6px 12px;
 }
 
-#dashboard_right_now .sub h4 {
+#dashboard_right_now .sub h3 {
        color: #555;
 }
 
@@ -394,8 +397,8 @@ body #dashboard-widgets .postbox form .submit {
 /* Dashboard right now - Icons */
 #dashboard_right_now li a:before,
 #dashboard_right_now li span:before {
-       content: '\f159';
-       font: normal 20px/1 'dashicons';
+       content: "\f159";
+       font: normal 20px/1 dashicons;
        speak: none;
        display: block;
        float: right;
@@ -410,28 +413,28 @@ body #dashboard-widgets .postbox form .submit {
 
 #dashboard_right_now .page-count a:before,
 #dashboard_right_now .page-count span:before {
-       content: '\f105';
+       content: "\f105";
 }
 
 #dashboard_right_now .post-count a:before,
 #dashboard_right_now .post-count span:before {
-       content: '\f109';
+       content: "\f109";
 }
 
 #dashboard_right_now .comment-count a:before {
-       content: '\f101';
+       content: "\f101";
 }
 
 #dashboard_right_now .comment-mod-count a:before {
-       content: '\f125';
+       content: "\f125";
 }
 
 #dashboard_right_now .storage-count a:before {
-       content: '\f104';
+       content: "\f104";
 }
 
 #dashboard_right_now .storage-count.warning a:before {
-       content: '\f153';
+       content: "\f153";
 }
 
 /* Dashboard Quick Draft */
@@ -537,11 +540,6 @@ form.initial-form.quickpress-open input#title {
        border: none;
 }
 
-#dashboard_quick_press .drafts h4 {
-       margin: 0 12px 8px;
-       font-weight: normal;
-}
-
 #dashboard_quick_press .drafts .view-all {
        float: left;
        margin: 0 0 0 12px;
@@ -576,28 +574,33 @@ form.initial-form.quickpress-open input#title {
        margin: 0 0 0 5px;
 }
 
-/* Dashboard activity widget */
+/* Dashboard common styles */
 
-#dashboard-widgets #dashboard_activity h4 {
-       margin: 0 12px 8px 0;
+#dashboard-widgets h4, /* Back-compat for pre-4.4 */
+#dashboard-widgets h3,
+#dashboard_quick_press .drafts h2 {
+       margin: 0 12px 8px;
+       padding: 0;
+       font-size: 14px;
        font-weight: normal;
+       color: #23282d;
 }
 
-#dashboard-widgets #dashboard_activity h4.comment-meta {
-       margin: 0;
+#dashboard_quick_press .drafts h2 {
+       line-height: inherit;
 }
 
-#dashboard_activity h4.comment-meta {
-       margin-bottom: 4px;
+#dashboard-widgets .inside h4, /* Back-compat for pre-4.4 */
+#dashboard-widgets .inside h3 {
+       margin-right: 0;
+       margin-left: 0;
 }
 
-#dashboard_activity ul {
-       padding: 0 12px;
-}
+/* Dashboard activity widget */
 
 #dashboard_activity .comment-meta span.approve:before {
-       content: '\f227';
-       font: 20px/.5 "dashicons";
+       content: "\f227";
+       font: 20px/.5 dashicons;
        margin-right: 12px;
        vertical-align: middle;
        position: relative;
@@ -606,13 +609,13 @@ form.initial-form.quickpress-open input#title {
 }
 
 #dashboard_activity .inside {
-       padding: 0;
        margin: 0;
+       padding-bottom: 0;
 }
 
 #dashboard_activity .no-activity {
        overflow: hidden;
-       padding: 0 12px 12px;
+       padding: 0 0 12px;
        text-align: center;
 }
 
@@ -626,8 +629,8 @@ form.initial-form.quickpress-open input#title {
 }
 
 #dashboard_activity .no-activity .smiley:before {
-       content: '\f328';
-       font: normal 120px/1 'dashicons';
+       content: "\f328";
+       font: normal 120px/1 dashicons;
        speak: none;
        display: block;
        margin: 0 0 0 5px;
@@ -641,8 +644,8 @@ form.initial-form.quickpress-open input#title {
 
 #dashboard_activity .subsubsub {
        float: none;
-       border-top: 1px solid #eeeeee;
-       margin-top: 0;
+       border-top: 1px solid #eee;
+       margin: 0 -12px;
        padding: 8px 12px 4px;
 }
 
@@ -667,8 +670,8 @@ form.initial-form.quickpress-open input#title {
 
 .activity-block {
        border-bottom: 1px solid #eee;
-       overflow: hidden;
-       padding: 8px 0 4px;
+       margin: 0 -12px;
+       padding: 8px 12px 4px;
 }
 
 .activity-block:last-child {
@@ -708,11 +711,6 @@ form.initial-form.quickpress-open input#title {
        margin: 1em 0;
 }
 
-#activity-widget #the-comment-list .comment-item h4 {
-       font-size: 13px;
-       color: #999;
-}
-
 #activity-widget #the-comment-list .comment-item p.row-actions {
        margin: 4px 0 0 0;
 }
@@ -794,14 +792,6 @@ h3:hover .edit-box {
        left: 33px;
 }
 
-#dashboard-widgets h4 {
-       color: #23282d;
-       font-weight: normal;
-       font-size: 14px;
-       margin: 0 0 .2em;
-       padding: 0;
-}
-
 #dashboard_plugins h5 {
        font-size: 14px;
 }
@@ -810,6 +800,7 @@ h3:hover .edit-box {
 
 #latest-comments #the-comment-list {
        position: relative;
+       margin: 0 -12px;
 }
 
 #activity-widget #the-comment-list .comment,
@@ -834,13 +825,13 @@ h3:hover .edit-box {
        border-top: none;
 }
 
-#latest-comments #the-comment-list .comment-item h4 {
+#latest-comments #the-comment-list .comment-meta {
        line-height: 1.5em;
-       margin-top: 0;
+       margin: 0;
        color: #666;
 }
 
-#latest-comments #the-comment-list .comment-item h4 cite {
+#latest-comments #the-comment-list .comment-meta cite {
        font-style: normal;
        font-weight: normal;
 }
@@ -908,7 +899,7 @@ a.rsswidget {
 }
 
 .rss-widget cite:before {
-       content: '\2014';
+       content: "\2014";
 }
 
 .dashboard-comment-wrap {
@@ -947,12 +938,12 @@ a.rsswidget {
        box-shadow: none;
 }
 
-#dashboard_browser_nag.postbox.browser-insecure h3 {
+#dashboard_browser_nag.postbox.browser-insecure h2 {
        border-bottom-color: #cd5a5a;
        color: #fff;
 }
 
-#dashboard_browser_nag.postbox h3 {
+#dashboard_browser_nag.postbox h2 {
        border-bottom-color: #f6e2ac;
        background: transparent none;
        color: #fff;
@@ -966,7 +957,7 @@ a.rsswidget {
 
 /* Make the browser nags easier to read with Open Sans */
 
-#dashboard_browser_nag h3.hndle {
+#dashboard_browser_nag h2.hndle {
        border: none;
        font-weight: 600;
        font-size: 20px;
index 2fb891a46c1e7e9963f9ca8a2334e829ac219dc9..43e9b3eb1e0ac9b555f989b1ac179cb9e6b11b8c 100644 (file)
        line-height: 2.1em;
 }
 
-.welcome-panel h3 {
+.welcome-panel h2 {
        margin: 0;
        font-size: 21px;
        font-weight: normal;
        line-height: 1.2;
 }
 
-.welcome-panel h4 {
+.welcome-panel h3 {
        margin: 1.33em 0 0;
        font-size: 16px;
 }
 
 .welcome-panel .welcome-icon:before {
        color: #82878c;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        display: inline-block;
        padding: 0 10px 0 0;
 
 .welcome-panel .welcome-write-blog:before,
 .welcome-panel .welcome-edit-page:before {
-       content:'\f119';
+       content: "\f119";
        top: -3px;
 }
 
 .welcome-panel .welcome-add-page:before {
-       content:'\f132';
+       content: "\f132";
 }
 
 .welcome-panel .welcome-view-site:before {
-       content:'\f115';
+       content: "\f115";
        top: -2px;
 }
 
 .welcome-panel .welcome-widgets-menus:before {
-       content:'\f116';
+       content: "\f116";
        top: -2px;
 }
 
 .welcome-panel .welcome-comments:before {
-       content:'\f117';
+       content: "\f117";
        top: -1px;
 }
 
 .welcome-panel .welcome-learn-more:before {
-       content:'\f118';
+       content: "\f118";
        top: -1px;
 }
 
@@ -360,8 +360,11 @@ body #dashboard-widgets .postbox form .submit {
        overflow: hidden;
 }
 
-#dashboard-widgets h4.mu-storage {
-       margin-bottom: 10px;
+#dashboard-widgets h3.mu-storage {
+       margin: 0 0 10px;
+       padding: 0;
+       font-size: 14px;
+       font-weight: normal;
 }
 
 /* Dashboard right now - Colors */
@@ -378,7 +381,7 @@ body #dashboard-widgets .postbox form .submit {
        padding: 10px 12px 6px 12px;
 }
 
-#dashboard_right_now .sub h4 {
+#dashboard_right_now .sub h3 {
        color: #555;
 }
 
@@ -394,8 +397,8 @@ body #dashboard-widgets .postbox form .submit {
 /* Dashboard right now - Icons */
 #dashboard_right_now li a:before,
 #dashboard_right_now li span:before {
-       content: '\f159';
-       font: normal 20px/1 'dashicons';
+       content: "\f159";
+       font: normal 20px/1 dashicons;
        speak: none;
        display: block;
        float: left;
@@ -410,28 +413,28 @@ body #dashboard-widgets .postbox form .submit {
 
 #dashboard_right_now .page-count a:before,
 #dashboard_right_now .page-count span:before {
-       content: '\f105';
+       content: "\f105";
 }
 
 #dashboard_right_now .post-count a:before,
 #dashboard_right_now .post-count span:before {
-       content: '\f109';
+       content: "\f109";
 }
 
 #dashboard_right_now .comment-count a:before {
-       content: '\f101';
+       content: "\f101";
 }
 
 #dashboard_right_now .comment-mod-count a:before {
-       content: '\f125';
+       content: "\f125";
 }
 
 #dashboard_right_now .storage-count a:before {
-       content: '\f104';
+       content: "\f104";
 }
 
 #dashboard_right_now .storage-count.warning a:before {
-       content: '\f153';
+       content: "\f153";
 }
 
 /* Dashboard Quick Draft */
@@ -537,11 +540,6 @@ form.initial-form.quickpress-open input#title {
        border: none;
 }
 
-#dashboard_quick_press .drafts h4 {
-       margin: 0 12px 8px;
-       font-weight: normal;
-}
-
 #dashboard_quick_press .drafts .view-all {
        float: right;
        margin: 0 12px 0 0;
@@ -576,28 +574,33 @@ form.initial-form.quickpress-open input#title {
        margin: 0 5px 0 0;
 }
 
-/* Dashboard activity widget */
+/* Dashboard common styles */
 
-#dashboard-widgets #dashboard_activity h4 {
-       margin: 0 0 8px 12px;
+#dashboard-widgets h4, /* Back-compat for pre-4.4 */
+#dashboard-widgets h3,
+#dashboard_quick_press .drafts h2 {
+       margin: 0 12px 8px;
+       padding: 0;
+       font-size: 14px;
        font-weight: normal;
+       color: #23282d;
 }
 
-#dashboard-widgets #dashboard_activity h4.comment-meta {
-       margin: 0;
+#dashboard_quick_press .drafts h2 {
+       line-height: inherit;
 }
 
-#dashboard_activity h4.comment-meta {
-       margin-bottom: 4px;
+#dashboard-widgets .inside h4, /* Back-compat for pre-4.4 */
+#dashboard-widgets .inside h3 {
+       margin-left: 0;
+       margin-right: 0;
 }
 
-#dashboard_activity ul {
-       padding: 0 12px;
-}
+/* Dashboard activity widget */
 
 #dashboard_activity .comment-meta span.approve:before {
-       content: '\f227';
-       font: 20px/.5 "dashicons";
+       content: "\f227";
+       font: 20px/.5 dashicons;
        margin-left: 12px;
        vertical-align: middle;
        position: relative;
@@ -606,13 +609,13 @@ form.initial-form.quickpress-open input#title {
 }
 
 #dashboard_activity .inside {
-       padding: 0;
        margin: 0;
+       padding-bottom: 0;
 }
 
 #dashboard_activity .no-activity {
        overflow: hidden;
-       padding: 0 12px 12px;
+       padding: 0 0 12px;
        text-align: center;
 }
 
@@ -626,8 +629,8 @@ form.initial-form.quickpress-open input#title {
 }
 
 #dashboard_activity .no-activity .smiley:before {
-       content: '\f328';
-       font: normal 120px/1 'dashicons';
+       content: "\f328";
+       font: normal 120px/1 dashicons;
        speak: none;
        display: block;
        margin: 0 5px 0 0;
@@ -641,8 +644,8 @@ form.initial-form.quickpress-open input#title {
 
 #dashboard_activity .subsubsub {
        float: none;
-       border-top: 1px solid #eeeeee;
-       margin-top: 0;
+       border-top: 1px solid #eee;
+       margin: 0 -12px;
        padding: 8px 12px 4px;
 }
 
@@ -667,8 +670,8 @@ form.initial-form.quickpress-open input#title {
 
 .activity-block {
        border-bottom: 1px solid #eee;
-       overflow: hidden;
-       padding: 8px 0 4px;
+       margin: 0 -12px;
+       padding: 8px 12px 4px;
 }
 
 .activity-block:last-child {
@@ -708,11 +711,6 @@ form.initial-form.quickpress-open input#title {
        margin: 1em 0;
 }
 
-#activity-widget #the-comment-list .comment-item h4 {
-       font-size: 13px;
-       color: #999;
-}
-
 #activity-widget #the-comment-list .comment-item p.row-actions {
        margin: 4px 0 0 0;
 }
@@ -794,14 +792,6 @@ h3:hover .edit-box {
        right: 33px;
 }
 
-#dashboard-widgets h4 {
-       color: #23282d;
-       font-weight: normal;
-       font-size: 14px;
-       margin: 0 0 .2em;
-       padding: 0;
-}
-
 #dashboard_plugins h5 {
        font-size: 14px;
 }
@@ -810,6 +800,7 @@ h3:hover .edit-box {
 
 #latest-comments #the-comment-list {
        position: relative;
+       margin: 0 -12px;
 }
 
 #activity-widget #the-comment-list .comment,
@@ -834,13 +825,13 @@ h3:hover .edit-box {
        border-top: none;
 }
 
-#latest-comments #the-comment-list .comment-item h4 {
+#latest-comments #the-comment-list .comment-meta {
        line-height: 1.5em;
-       margin-top: 0;
+       margin: 0;
        color: #666;
 }
 
-#latest-comments #the-comment-list .comment-item h4 cite {
+#latest-comments #the-comment-list .comment-meta cite {
        font-style: normal;
        font-weight: normal;
 }
@@ -908,7 +899,7 @@ a.rsswidget {
 }
 
 .rss-widget cite:before {
-       content: '\2014';
+       content: "\2014";
 }
 
 .dashboard-comment-wrap {
@@ -947,12 +938,12 @@ a.rsswidget {
        box-shadow: none;
 }
 
-#dashboard_browser_nag.postbox.browser-insecure h3 {
+#dashboard_browser_nag.postbox.browser-insecure h2 {
        border-bottom-color: #cd5a5a;
        color: #fff;
 }
 
-#dashboard_browser_nag.postbox h3 {
+#dashboard_browser_nag.postbox h2 {
        border-bottom-color: #f6e2ac;
        background: transparent none;
        color: #fff;
@@ -966,7 +957,7 @@ a.rsswidget {
 
 /* Make the browser nags easier to read with Open Sans */
 
-#dashboard_browser_nag h3.hndle {
+#dashboard_browser_nag h2.hndle {
        border: none;
        font-weight: 600;
        font-size: 20px;
index 8ab7388fcc3417f4d6813dcc852ab7fc8dca625e..6259524645a0d112b4bbf4592504c2aba10c443d 100644 (file)
 }
 
 #save-action .spinner,
-#show-comments a,
-#show-comments .spinner {
+#show-comments a {
        float: right;
 }
 
+#show-comments .spinner {
+       float: none;
+       margin-top: 0;
+}
+
 #lost-connection-notice .spinner {
        visibility: visible;
        float: right;
@@ -89,7 +93,8 @@ input#link_url {
        margin-top: -1px;
 }
 
-#edit-slug-box {
+#edit-slug-box,
+#comment-link-box {
        line-height: 24px;
        min-height: 25px; /* Yes, line-height + 1 */
        margin-top: 5px;
@@ -99,7 +104,15 @@ input#link_url {
 
 #edit-slug-box .cancel {
        margin-left: 10px;
+       padding: 0;
        font-size: 11px;
+       text-decoration: underline;
+       color: #0073aa;
+}
+
+#comment-link-box {
+       margin: 5px 0;
+       padding: 0 5px;
 }
 
 #editable-post-name-full {
@@ -107,11 +120,12 @@ input#link_url {
 }
 
 #editable-post-name {
-       background-color: #fffbcc;
+       font-weight: bold;
 }
 
 #editable-post-name input {
        font-size: 13px;
+       font-weight: normal;
        height: 22px;
        margin: 0;
        width: 16em;
@@ -228,8 +242,15 @@ ul.category-tabs li,
        margin: 8px 0 5px;
 }
 
+/* Back-compat for pre-4.4 */
 #category-adder h4 {
+    margin: 0;
+}
+
+.taxonomy-add-new {
+       display: inline-block;
        margin: 10px 0;
+       font-weight: 600;
 }
 
 #side-sortables .add-menu-item-tabs,
@@ -240,7 +261,8 @@ ul.category-tabs li,
 #normal-sortables .postbox #replyrow .submit {
        float: none;
        margin: 0;
-       padding: 0 7px 5px;
+       padding: 5px 7px 10px;
+       overflow: hidden;
 }
 
 #side-sortables .submitbox .submit input,
@@ -285,6 +307,11 @@ ul.wp-tab-bar li {
        max-width: 100%;
        height: auto;
        width: auto;
+       background-image: -webkit-linear-gradient(-45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4), -webkit-linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4);
+       background-image: linear-gradient(-45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4), linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4);
+       background-position: 100% 0, 10px 10px;
+       -webkit-background-size: 20px 20px;
+       background-size: 20px 20px;
 }
 
 form#tags-filter {
@@ -469,7 +496,7 @@ span.wp-media-buttons-icon:before {
 #post-body #visibility:before,
 .curtime #timestamp:before,
 #post-body .misc-pub-revisions:before {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        display: inline-block;
        padding: 0 0 0 2px;
@@ -483,16 +510,16 @@ span.wp-media-buttons-icon:before {
 }
 
 #post-body #visibility:before {
-       content: '\f177';
+       content: "\f177";
 }
 
 .curtime #timestamp:before {
-       content: '\f145';
+       content: "\f145";
        top: -1px;
 }
 
 #post-body .misc-pub-revisions:before {
-       content: '\f321';
+       content: "\f321";
 }
 
 #timestampdiv {
@@ -610,15 +637,9 @@ span.wp-media-buttons-icon:before {
        position: absolute;
 }
 
+#poststuff h3.hndle, /* Back-compat for pre-4.4 */
+#poststuff .stuffbox > h3, /* Back-compat for pre-4.4 */
 #poststuff h2 {
-       margin-top: 20px;
-       font-size: 1.5em;
-       margin-bottom: 15px;
-       padding: 0 0 3px;
-       clear: right;
-}
-
-#poststuff h3 {
        font-size: 14px;
        padding: 8px 12px;
        margin: 0;
@@ -802,7 +823,7 @@ span.wp-media-buttons-icon:before {
        display: block;
        height: 20px;
        width: 20px;
-       font: normal 20px/1 'dashicons' !important;
+       font: normal 20px/1 dashicons !important;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -841,7 +862,7 @@ label.post-format-icon {
        position: relative;
        display: inline-block;
        margin-left: 7px;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -850,61 +871,61 @@ label.post-format-icon {
 .post-state-format.post-format-standard:before,
 .post-format-icon.post-format-standard:before,
 a.post-state-format.format-standard:before {
-       content: '\f109';
+       content: "\f109";
 }
 
 .post-state-format.post-format-image:before,
 .post-format-icon.post-format-image:before,
 a.post-state-format.format-image:before {
-       content: '\f128';
+       content: "\f128";
 }
 
 .post-state-format.post-format-gallery:before,
 .post-format-icon.post-format-gallery:before,
 a.post-state-format.format-gallery:before {
-       content: '\f161';
+       content: "\f161";
 }
 
 .post-state-format.post-format-audio:before,
 .post-format-icon.post-format-audio:before,
 a.post-state-format.format-audio:before {
-       content: '\f127';
+       content: "\f127";
 }
 
 .post-state-format.post-format-video:before,
 .post-format-icon.post-format-video:before,
 a.post-state-format.format-video:before {
-       content: '\f126';
+       content: "\f126";
 }
 
 .post-state-format.post-format-chat:before,
 .post-format-icon.post-format-chat:before,
 a.post-state-format.format-chat:before {
-       content: '\f125';
+       content: "\f125";
 }
 
 .post-state-format.post-format-status:before,
 .post-format-icon.post-format-status:before,
 a.post-state-format.format-status:before {
-       content: '\f130';
+       content: "\f130";
 }
 
 .post-state-format.post-format-aside:before,
 .post-format-icon.post-format-aside:before,
 a.post-state-format.format-aside:before {
-       content: '\f123';
+       content: "\f123";
 }
 
 .post-state-format.post-format-quote:before,
 .post-format-icon.post-format-quote:before,
 a.post-state-format.format-quote:before {
-       content: '\f122';
+       content: "\f122";
 }
 
 .post-state-format.post-format-link:before,
 .post-format-icon.post-format-link:before,
 a.post-state-format.format-link:before {
-       content: '\f103';
+       content: "\f103";
 }
 
 /*------------------------------------------------------------------------------
@@ -1018,7 +1039,7 @@ span.description,
        max-width: 100%;
 }
 
-.col-wrap h3 {
+.col-wrap h2 {
        margin: 12px 0;
        font-size: 1.1em;
 }
@@ -1073,7 +1094,7 @@ p.popular-tags a {
        text-align: justify;
 }
 
-.tagcloud h3 {
+.tagcloud h2 {
        margin: 2px 0 12px;
 }
 
@@ -1251,7 +1272,9 @@ table.links-table {
        -webkit-transition-duration: 0.6s;
        transition-duration: 0.6s;
        -webkit-transition-property: -webkit-transform;
+       transition-property: -webkit-transform;
        transition-property: transform;
+       transition-property: transform, -webkit-transform;
        -webkit-transition-timing-function: ease-in-out;
        transition-timing-function: ease-in-out;
 }
@@ -1271,7 +1294,9 @@ table.links-table {
        -webkit-transition-duration: 0.2s;
        transition-duration: 0.2s;
        -webkit-transition-property: -webkit-transform;
+       transition-property: -webkit-transform;
        transition-property: transform;
+       transition-property: transform, -webkit-transform;
        -webkit-transition-timing-function: ease-in-out;
        transition-timing-function: ease-in-out;
 }
@@ -1341,7 +1366,9 @@ table.links-table {
                padding: 10px 10px;
        }
 
-       #poststuff h3 {
+       #poststuff h3.hndle, /* Back-compat for pre-4.4 */
+       #poststuff .stuffbox > h3, /* Back-compat for pre-4.4 */
+       #poststuff h2 {
                padding: 12px;
        }
 
index b2f57ef451d87f7c0f2e3f788a1c194e806230d6..2dca35b986e6cb12186ad23d517b94f691b6ef85 100644 (file)
 }
 
 #save-action .spinner,
-#show-comments a,
-#show-comments .spinner {
+#show-comments a {
        float: left;
 }
 
+#show-comments .spinner {
+       float: none;
+       margin-top: 0;
+}
+
 #lost-connection-notice .spinner {
        visibility: visible;
        float: left;
@@ -89,7 +93,8 @@ input#link_url {
        margin-top: -1px;
 }
 
-#edit-slug-box {
+#edit-slug-box,
+#comment-link-box {
        line-height: 24px;
        min-height: 25px; /* Yes, line-height + 1 */
        margin-top: 5px;
@@ -99,7 +104,15 @@ input#link_url {
 
 #edit-slug-box .cancel {
        margin-right: 10px;
+       padding: 0;
        font-size: 11px;
+       text-decoration: underline;
+       color: #0073aa;
+}
+
+#comment-link-box {
+       margin: 5px 0;
+       padding: 0 5px;
 }
 
 #editable-post-name-full {
@@ -107,11 +120,12 @@ input#link_url {
 }
 
 #editable-post-name {
-       background-color: #fffbcc;
+       font-weight: bold;
 }
 
 #editable-post-name input {
        font-size: 13px;
+       font-weight: normal;
        height: 22px;
        margin: 0;
        width: 16em;
@@ -228,8 +242,15 @@ ul.category-tabs li,
        margin: 8px 0 5px;
 }
 
+/* Back-compat for pre-4.4 */
 #category-adder h4 {
+    margin: 0;
+}
+
+.taxonomy-add-new {
+       display: inline-block;
        margin: 10px 0;
+       font-weight: 600;
 }
 
 #side-sortables .add-menu-item-tabs,
@@ -240,7 +261,8 @@ ul.category-tabs li,
 #normal-sortables .postbox #replyrow .submit {
        float: none;
        margin: 0;
-       padding: 0 7px 5px;
+       padding: 5px 7px 10px;
+       overflow: hidden;
 }
 
 #side-sortables .submitbox .submit input,
@@ -285,6 +307,11 @@ ul.wp-tab-bar li {
        max-width: 100%;
        height: auto;
        width: auto;
+       background-image: -webkit-linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4), -webkit-linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4);
+       background-image: linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4), linear-gradient(45deg, #c4c4c4 25%, transparent 25%, transparent 75%, #c4c4c4 75%, #c4c4c4);
+       background-position: 0 0, 10px 10px;
+       -webkit-background-size: 20px 20px;
+       background-size: 20px 20px;
 }
 
 form#tags-filter {
@@ -469,7 +496,7 @@ span.wp-media-buttons-icon:before {
 #post-body #visibility:before,
 .curtime #timestamp:before,
 #post-body .misc-pub-revisions:before {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        display: inline-block;
        padding: 0 2px 0 0;
@@ -483,16 +510,16 @@ span.wp-media-buttons-icon:before {
 }
 
 #post-body #visibility:before {
-       content: '\f177';
+       content: "\f177";
 }
 
 .curtime #timestamp:before {
-       content: '\f145';
+       content: "\f145";
        top: -1px;
 }
 
 #post-body .misc-pub-revisions:before {
-       content: '\f321';
+       content: "\f321";
 }
 
 #timestampdiv {
@@ -610,15 +637,9 @@ span.wp-media-buttons-icon:before {
        position: absolute;
 }
 
+#poststuff h3.hndle, /* Back-compat for pre-4.4 */
+#poststuff .stuffbox > h3, /* Back-compat for pre-4.4 */
 #poststuff h2 {
-       margin-top: 20px;
-       font-size: 1.5em;
-       margin-bottom: 15px;
-       padding: 0 0 3px;
-       clear: left;
-}
-
-#poststuff h3 {
        font-size: 14px;
        padding: 8px 12px;
        margin: 0;
@@ -802,7 +823,7 @@ span.wp-media-buttons-icon:before {
        display: block;
        height: 20px;
        width: 20px;
-       font: normal 20px/1 'dashicons' !important;
+       font: normal 20px/1 dashicons !important;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -841,7 +862,7 @@ label.post-format-icon {
        position: relative;
        display: inline-block;
        margin-right: 7px;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -850,61 +871,61 @@ label.post-format-icon {
 .post-state-format.post-format-standard:before,
 .post-format-icon.post-format-standard:before,
 a.post-state-format.format-standard:before {
-       content: '\f109';
+       content: "\f109";
 }
 
 .post-state-format.post-format-image:before,
 .post-format-icon.post-format-image:before,
 a.post-state-format.format-image:before {
-       content: '\f128';
+       content: "\f128";
 }
 
 .post-state-format.post-format-gallery:before,
 .post-format-icon.post-format-gallery:before,
 a.post-state-format.format-gallery:before {
-       content: '\f161';
+       content: "\f161";
 }
 
 .post-state-format.post-format-audio:before,
 .post-format-icon.post-format-audio:before,
 a.post-state-format.format-audio:before {
-       content: '\f127';
+       content: "\f127";
 }
 
 .post-state-format.post-format-video:before,
 .post-format-icon.post-format-video:before,
 a.post-state-format.format-video:before {
-       content: '\f126';
+       content: "\f126";
 }
 
 .post-state-format.post-format-chat:before,
 .post-format-icon.post-format-chat:before,
 a.post-state-format.format-chat:before {
-       content: '\f125';
+       content: "\f125";
 }
 
 .post-state-format.post-format-status:before,
 .post-format-icon.post-format-status:before,
 a.post-state-format.format-status:before {
-       content: '\f130';
+       content: "\f130";
 }
 
 .post-state-format.post-format-aside:before,
 .post-format-icon.post-format-aside:before,
 a.post-state-format.format-aside:before {
-       content: '\f123';
+       content: "\f123";
 }
 
 .post-state-format.post-format-quote:before,
 .post-format-icon.post-format-quote:before,
 a.post-state-format.format-quote:before {
-       content: '\f122';
+       content: "\f122";
 }
 
 .post-state-format.post-format-link:before,
 .post-format-icon.post-format-link:before,
 a.post-state-format.format-link:before {
-       content: '\f103';
+       content: "\f103";
 }
 
 /*------------------------------------------------------------------------------
@@ -1018,7 +1039,7 @@ span.description,
        max-width: 100%;
 }
 
-.col-wrap h3 {
+.col-wrap h2 {
        margin: 12px 0;
        font-size: 1.1em;
 }
@@ -1073,7 +1094,7 @@ p.popular-tags a {
        text-align: justify;
 }
 
-.tagcloud h3 {
+.tagcloud h2 {
        margin: 2px 0 12px;
 }
 
@@ -1251,7 +1272,9 @@ table.links-table {
        -webkit-transition-duration: 0.6s;
        transition-duration: 0.6s;
        -webkit-transition-property: -webkit-transform;
+       transition-property: -webkit-transform;
        transition-property: transform;
+       transition-property: transform, -webkit-transform;
        -webkit-transition-timing-function: ease-in-out;
        transition-timing-function: ease-in-out;
 }
@@ -1271,7 +1294,9 @@ table.links-table {
        -webkit-transition-duration: 0.2s;
        transition-duration: 0.2s;
        -webkit-transition-property: -webkit-transform;
+       transition-property: -webkit-transform;
        transition-property: transform;
+       transition-property: transform, -webkit-transform;
        -webkit-transition-timing-function: ease-in-out;
        transition-timing-function: ease-in-out;
 }
@@ -1341,7 +1366,9 @@ table.links-table {
                padding: 10px 10px;
        }
 
-       #poststuff h3 {
+       #poststuff h3.hndle, /* Back-compat for pre-4.4 */
+       #poststuff .stuffbox > h3, /* Back-compat for pre-4.4 */
+       #poststuff h2 {
                padding: 12px;
        }
 
index 1b56f049e78713979ff91840566df76bb44d7e86..07a3d39473cdc8ebad1d059b1b3062dfb54d6225 100644 (file)
@@ -67,6 +67,11 @@ input[type="url"] {
        direction: ltr;
 }
 
+/* Vertically align the number selector with the input. */
+input[type="number"] {
+       line-height: inherit;
+}
+
 input[type="checkbox"],
 input[type="radio"] {
        border: 1px solid #b4b9be;
@@ -127,20 +132,20 @@ input[type="radio"]:checked:before {
        display: inline-block;
        vertical-align: middle;
        width: 16px;
-       font: normal 21px/1 'dashicons';
+       font: normal 21px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
 }
 
 input[type="checkbox"]:checked:before {
-       content: '\f147';
+       content: "\f147";
        margin: -3px -4px 0 0;
        color: #1e8cbe;
 }
 
 input[type="radio"]:checked:before {
-       content: '\2022';
+       content: "\2022";
        text-indent: -9999px;
        -webkit-border-radius: 50px;
        border-radius: 50px;
@@ -195,6 +200,7 @@ textarea {
        overflow: auto;
        padding: 2px 6px;
        line-height: 1.4;
+       resize: vertical;
 }
 
 .wp-admin input[type="file"] {
@@ -240,7 +246,7 @@ textarea[readonly] {
 }
 
 .form-table .form-required.form-invalid td:after {
-       content: '\f534';
+       content: "\f534";
        font: normal 20px/1 dashicons;
        color: #dc3232;
        margin-right: -25px;
@@ -384,6 +390,14 @@ input[type="number"].small-text {
        width: 65px;
 }
 
+input.tiny-text {
+       width: 35px;
+}
+
+input[type="number"].tiny-text {
+       width: 45px;
+}
+
 #doaction,
 #doaction2,
 #post-query-submit {
@@ -440,9 +454,9 @@ fieldset label,
 }
 
 #misc-publishing-actions label[for="post_status"]:before {
-       content: '\f173';
+       content: "\f173";
        display: inline-block;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        right: -1px;
        padding: 0 0 0 5px;
@@ -739,6 +753,18 @@ table.form-table td .updated p {
        line-height: 24px;
 }
 
+.label-responsive {
+       vertical-align: middle;
+}
+
+#export-filters p {
+       margin: 0 0 1em;
+}
+
+#export-filters p.submit {
+       margin: 7px 0 5px;
+}
+
 /* Card styles */
 
 .card {
@@ -798,7 +824,7 @@ table.form-table td .updated p {
 }
 
 .pressthis-bookmarklet:after {
-       content: '';
+       content: "";
        width: 70%;
        height: 55%;
        z-index: -1;
@@ -829,8 +855,8 @@ table.form-table td .updated p {
 
 .pressthis-bookmarklet span:before {
        color: #777;
-       font: normal 20px/1 'dashicons';
-       content:'\f157';
+       font: normal 20px/1 dashicons;
+       content: "\f157";
        position: relative;
        display: inline-block;
        top: 4px;
@@ -943,6 +969,17 @@ table.form-table td .updated p {
        margin: 25px;
 }
 
+#request-filesystem-credentials-title {
+    font-size: 1.3em;
+    margin: 1em 0;
+}
+
+.request-filesystem-credentials-form legend {
+       font-size: 1em;
+       padding: 1.33em 0;
+       font-weight: 600;
+}
+
 .request-filesystem-credentials-form input[type="text"],
 .request-filesystem-credentials-form input[type="password"] {
        display: block;
@@ -1036,7 +1073,7 @@ table.form-table td .updated p {
        .widefat th input[type="checkbox"]:before,
        .widefat thead td input[type="checkbox"]:before,
        .widefat tfoot td input[type="checkbox"]:before {
-               font: normal 30px/1 'Dashicons';
+               font: normal 30px/1 dashicons;
                margin: -3px -5px;
        }
 
@@ -1085,12 +1122,21 @@ table.form-table td .updated p {
        }
 
        .form-table th,
-       .form-table td {
+       .form-table td,
+       .label-responsive {
                display: block;
                width: auto;
                vertical-align: middle;
        }
 
+       .label-responsive {
+               margin: 0.5em 0;
+       }
+
+       .export-filters li {
+               margin-bottom: 0;
+       }
+
        .form-table .color-palette td {
                display: table-cell;
                width: 15px;
index 74d894429bc28e6a043d84249d2aca48e3e7ff2d..d1ec601b12f573687dc3afc9c0ee7f7137f7bed3 100644 (file)
@@ -67,6 +67,11 @@ input[type="url"] {
        direction: ltr;
 }
 
+/* Vertically align the number selector with the input. */
+input[type="number"] {
+       line-height: inherit;
+}
+
 input[type="checkbox"],
 input[type="radio"] {
        border: 1px solid #b4b9be;
@@ -127,20 +132,20 @@ input[type="radio"]:checked:before {
        display: inline-block;
        vertical-align: middle;
        width: 16px;
-       font: normal 21px/1 'dashicons';
+       font: normal 21px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
 }
 
 input[type="checkbox"]:checked:before {
-       content: '\f147';
+       content: "\f147";
        margin: -3px 0 0 -4px;
        color: #1e8cbe;
 }
 
 input[type="radio"]:checked:before {
-       content: '\2022';
+       content: "\2022";
        text-indent: -9999px;
        -webkit-border-radius: 50px;
        border-radius: 50px;
@@ -195,6 +200,7 @@ textarea {
        overflow: auto;
        padding: 2px 6px;
        line-height: 1.4;
+       resize: vertical;
 }
 
 .wp-admin input[type="file"] {
@@ -240,7 +246,7 @@ textarea[readonly] {
 }
 
 .form-table .form-required.form-invalid td:after {
-       content: '\f534';
+       content: "\f534";
        font: normal 20px/1 dashicons;
        color: #dc3232;
        margin-left: -25px;
@@ -384,6 +390,14 @@ input[type="number"].small-text {
        width: 65px;
 }
 
+input.tiny-text {
+       width: 35px;
+}
+
+input[type="number"].tiny-text {
+       width: 45px;
+}
+
 #doaction,
 #doaction2,
 #post-query-submit {
@@ -440,9 +454,9 @@ fieldset label,
 }
 
 #misc-publishing-actions label[for="post_status"]:before {
-       content: '\f173';
+       content: "\f173";
        display: inline-block;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        left: -1px;
        padding: 0 5px 0 0;
@@ -739,6 +753,18 @@ table.form-table td .updated p {
        line-height: 24px;
 }
 
+.label-responsive {
+       vertical-align: middle;
+}
+
+#export-filters p {
+       margin: 0 0 1em;
+}
+
+#export-filters p.submit {
+       margin: 7px 0 5px;
+}
+
 /* Card styles */
 
 .card {
@@ -798,7 +824,7 @@ table.form-table td .updated p {
 }
 
 .pressthis-bookmarklet:after {
-       content: '';
+       content: "";
        width: 70%;
        height: 55%;
        z-index: -1;
@@ -829,8 +855,8 @@ table.form-table td .updated p {
 
 .pressthis-bookmarklet span:before {
        color: #777;
-       font: normal 20px/1 'dashicons';
-       content:'\f157';
+       font: normal 20px/1 dashicons;
+       content: "\f157";
        position: relative;
        display: inline-block;
        top: 4px;
@@ -943,6 +969,17 @@ table.form-table td .updated p {
        margin: 25px;
 }
 
+#request-filesystem-credentials-title {
+    font-size: 1.3em;
+    margin: 1em 0;
+}
+
+.request-filesystem-credentials-form legend {
+       font-size: 1em;
+       padding: 1.33em 0;
+       font-weight: 600;
+}
+
 .request-filesystem-credentials-form input[type="text"],
 .request-filesystem-credentials-form input[type="password"] {
        display: block;
@@ -1036,7 +1073,7 @@ table.form-table td .updated p {
        .widefat th input[type="checkbox"]:before,
        .widefat thead td input[type="checkbox"]:before,
        .widefat tfoot td input[type="checkbox"]:before {
-               font: normal 30px/1 'Dashicons';
+               font: normal 30px/1 dashicons;
                margin: -3px -5px;
        }
 
@@ -1085,12 +1122,21 @@ table.form-table td .updated p {
        }
 
        .form-table th,
-       .form-table td {
+       .form-table td,
+       .label-responsive {
                display: block;
                width: auto;
                vertical-align: middle;
        }
 
+       .label-responsive {
+               margin: 0.5em 0;
+       }
+
+       .export-filters li {
+               margin-bottom: 0;
+       }
+
        .form-table .color-palette td {
                display: table-cell;
                width: 15px;
index d3705d0f8ac0a690bc88f6f2cedd90fed6d83f74..12be6ab599ad874d662c993e5204ffdf91e99dcc 100644 (file)
@@ -396,15 +396,10 @@ p.search-box {
        margin: -3px 0 4px;
 }
 
-#widget-list .widget,
-.feature-filter .feature-group li {
+#widget-list .widget {
        display: inline;
 }
 
-.feature-filter .feature-group li input {
-       vertical-align: middle;
-}
-
 #editorcontainer #content {
        overflow: auto;
        margin: auto;
@@ -695,10 +690,6 @@ input[type="password"],
        border: 1px solid #DFDFDF;
 }
 
-* html .feature-filter .feature-group li {
-       width: 145px;
-}
-
 * html div.widget-liquid-left {
        width: 99%;
 }
index 66af3bd5bd5098981faee3bf18e6b2c366836dfc..bdc14ee8d854670f8bd78a5b48923a53b5178d81 100644 (file)
@@ -1 +1 @@
-.feature-filter .feature-group li input,.tablenav-pages .current-page{vertical-align:middle}#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:99%}#dashboard-widgets form #title{width:98%}#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:left;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}.wp-editor-wrap .wp-editor-container,.wp-editor-wrap .wp-editor-tabs,.wp-editor-wrap .wp-editor-tools,.wp-editor-wrap .wp-switch-editor{zoom:100%}.wp-editor-wrap .wp-editor-container textarea.wp-editor-area{width:97%}#post-body.columns-2 #postbox-container-1{padding-right:19px}.welcome-panel .wp-badge{position:absolute}.welcome-panel .welcome-panel-column:first-child{width:35%}#adminmenuback{right:0;background-image:none}#adminmenu .wp-submenu,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open{right:110px}#adminmenuwrap{position:static}#adminmenu{position:relative}#adminmenu,#adminmenu a{cursor:pointer}#adminmenu li.wp-menu-separator,#adminmenu li.wp-menu-separator-last{font-size:1px;line-height:1}#adminmenu a.menu-top{border-bottom:0 none;border-top:1px solid #ddd}#adminmenu .separator{font-size:1px;line-height:1px}#adminmenu .wp-submenu ul{margin:0}.folded #wpcontent,.folded #wpfooter{margin-right:170px}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:150px}.folded #adminmenu .wp-submenu{border-top-color:transparent}.folded #adminmenu .wp-menu-name{display:block}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{top:-1px;position:relative}.folded #adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:transparent}#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#ddd}.folded #adminmenu .wp-submenu ul{margin-right:5px}#adminmenu li.menu-top{margin-bottom:-2px}#adminmenu .wp-menu-arrow{display:none!important}.js.folded #adminmenu li.menu-top{display:block;zoom:100%}ul#adminmenu{z-index:99}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal}#wpcontent #adminmenu .wp-submenu li{padding:0}#adminmenu li.wp-has-current-submenu .wp-submenu{right:-40px}#adminmenu .wp-menu-image{display:none!important}#adminmenu a.menu-top .wp-menu-name{padding-right:8px}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}.theme-browser .theme{width:30%;margin:0 0 4% 3%;cursor:auto}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:auto}.theme-browser .theme .theme-screenshot{height:180px}.theme-browser .theme .theme-actions{position:static;background-color:#e8e8e8}.theme-browser .theme .more-details{display:none}.plugins td,.plugins th,table.fixed td,table.fixed th{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary{overflow:visible}#dashboard-widgets h3 a{height:14px;line-height:14px}#dashboard_browser_nag{color:#fff}#dashboard_browser_nag .browser-icon{position:relative}#wpbody-content .postbox{border:1px solid #dfdfdf}#wpbody-content .postbox .hndle{margin-bottom:-1px}#addcat,#editcat,#template,#template div,.major-publishing-actions,.wp-submenu,.wp-submenu li{zoom:100%}.wp-menu-arrow{height:28px}.submitbox{margin-top:10px}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%}.inline-edit-row p.submit{zoom:100%}.inline-edit-row fieldset label span.title{display:block;float:right;width:5em}.inline-edit-row fieldset label span.input-text-wrap{margin-right:0;zoom:100%}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em}#titlediv #title{width:98%}.button,input[type=reset],input[type=button],input[type=submit]{padding:0 8px;line-height:20px;height:auto}.button.button-large,input[type=reset].button-large,input[type=button].button-large,input[type=submit].button-large{padding:0 10px;line-height:24px;height:auto}.button.button-small,input[type=reset].button-small,input[type=button].button-small,input[type=submit].button-small{padding:0 6px;line-height:16px;height:auto}a.button{margin:1px;padding:1px 9px 2px}a.button.button-large{padding:1px 11px 2px}a.button.button-small{padding:1px 7px 2px}#screen-options-wrap{overflow:hidden}#col-container,#col-left,#col-right,#dragHelper,#editorcontainer,#post-body,#post-status-info,#postdiv,#postdivrich,#poststuff,#the-comment-list .comment-item,#titlediv,#widgets-left,#wpwrap,#wrap,.fileedit-sub,.metabox-holder,.tablenav,.tagchecklist,.widget .widget-top,.widget-control-actions,.widget-liquid-left,.widget-liquid-right,.widgets-sortables{display:block;zoom:100%}p.search-box{position:static;float:left;margin:-3px 0 4px}#submitdiv a.button,#submitdiv input,#submitdiv select,.inactive-sidebar .widget,.revisions.pinned .revisions-controls,.widget-liquid-right .widget{position:relative}#widget-list .widget,.feature-filter .feature-group li{display:inline}#editorcontainer #content{overflow:auto;margin:auto;width:98%}form#template div{width:100%}.wp-editor-container .quicktags-toolbar input{overflow:visible;padding:0 4px}#poststuff h2{font-size:1.6em}#poststuff .inside #page_template,#poststuff .inside #parent_id,.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{width:250px}#bh{margin:7px 0 0 10px;float:left}div#dashboard-widgets{padding-left:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.nav .button-secondary,.tablenav .button-secondary{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}.subsubsub li{display:inline}a.post-state-format{text-indent:0;line-height:0;font-size:0}table.ie-fixed{table-layout:fixed}.widefat tfoot td,.widefat th,.widefat thead td,.widefat tr{margin-bottom:0;border-spacing:0}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 5px 0 0}.widefat tfoot .check-column,.widefat thead .check-column{padding-top:6px}.media.widefat tbody th.check-column,.widefat tbody th.check-column{padding:4px 0 0}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button-secondary{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.inactive-sidebar .widget{display:block;float:right}#wpcontent .button-primary-disabled{color:#9FD0D5;background:#298CBA}#the-comment-list .unapproved td,#the-comment-list .unapproved tr{background-color:#ffffe0}.imgedit-submit{width:300px}#nav-menus-frame,#wpbody,.menu li{zoom:100%}#update-nav-menu #post-body{overflow:hidden}.menu li{min-width:100%}.menu li.sortable-placeholder{min-width:400px}.available-theme{display:inline}.available-theme ul{margin:0}.available-theme .action-links li{padding-left:7px;margin-left:7px}.about-wrap .three-col.about-updates .col-2{width:15%}.about-wrap .about-password-meter input{width:98%}.revisions-tickmarks,.revisions-tooltip{display:none!important}.login form .input,input[type=password]{font-family:sans-serif}.mce-btn i.mce-i-aligncenter,.mce-btn i.mce-i-alignjustify,.mce-btn i.mce-i-alignleft,.mce-btn i.mce-i-alignright,.mce-btn i.mce-i-blockquote,.mce-btn i.mce-i-bold,.mce-btn i.mce-i-bullist,.mce-btn i.mce-i-charmap,.mce-btn i.mce-i-forecolor,.mce-btn i.mce-i-fullscreen,.mce-btn i.mce-i-help,.mce-btn i.mce-i-hr,.mce-btn i.mce-i-indent,.mce-btn i.mce-i-italic,.mce-btn i.mce-i-link,.mce-btn i.mce-i-ltr,.mce-btn i.mce-i-numlist,.mce-btn i.mce-i-outdent,.mce-btn i.mce-i-pastetext,.mce-btn i.mce-i-pasteword,.mce-btn i.mce-i-redo,.mce-btn i.mce-i-removeformat,.mce-btn i.mce-i-spellchecker,.mce-btn i.mce-i-strikethrough,.mce-btn i.mce-i-underline,.mce-btn i.mce-i-undo,.mce-btn i.mce-i-unlink,.mce-btn i.mce-i-wp-media-library,.mce-btn i.mce-i-wp_adv,.mce-btn i.mce-i-wp_fullscreen,.mce-btn i.mce-i-wp_help,.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page,.mce-close{font-family:tinymce,Arial;font-style:normal;font-weight:400;font-variant:normal;font-size:16px;margin-right:0;padding-left:0}.mce-btn i.mce-i-wp_fullscreen,.qt-fullscreen{-ie7-icon:'\e023'}.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page{-ie7-icon:'\e027'}.mce-btn i.mce-i-wp_adv{background-color:#a0a5aa}.mce-btn i.mce-i-help,.mce-btn i.mce-i-wp_help{-ie7-icon:'\e016'}* html .row-actions{visibility:visible}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative}* html #editorcontainer{padding:0}* html #poststuff h2{margin-right:0}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #DFDFDF}* html .feature-filter .feature-group li{width:145px}* html div.widget-liquid-left{width:99%}* html .widgets-sortables{height:50px}* html a#content_resize{left:-2px}* html .widget-title h4{width:205px}* html #removing-widget .in-widget-title{display:none}* html .media-item .pinkynail{height:32px;width:40px}* html .describe .field input.text,* html .describe .field textarea{width:440px}* html input{border:1px solid #dfdfdf}* html .edit-box{display:inline}* html .postbox-container .meta-box-sortables{height:300px}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center}* html #adminmenu{margin-right:-80px}* html .folded #adminmenu{margin-right:-22px}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0}* html #wpfooter{margin:0}* html #adminmenu div.wp-menu-image{height:29px}
\ No newline at end of file
+#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:99%}#dashboard-widgets form #title{width:98%}#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:left;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}.wp-editor-wrap .wp-editor-container,.wp-editor-wrap .wp-editor-tabs,.wp-editor-wrap .wp-editor-tools,.wp-editor-wrap .wp-switch-editor{zoom:100%}.wp-editor-wrap .wp-editor-container textarea.wp-editor-area{width:97%}#post-body.columns-2 #postbox-container-1{padding-right:19px}.welcome-panel .wp-badge{position:absolute}.welcome-panel .welcome-panel-column:first-child{width:35%}#adminmenuback{right:0;background-image:none}#adminmenu .wp-submenu,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open{right:110px}#adminmenuwrap{position:static}#adminmenu{position:relative}#adminmenu,#adminmenu a{cursor:pointer}#adminmenu li.wp-menu-separator,#adminmenu li.wp-menu-separator-last{font-size:1px;line-height:1}#adminmenu a.menu-top{border-bottom:0 none;border-top:1px solid #ddd}#adminmenu .separator{font-size:1px;line-height:1px}#adminmenu .wp-submenu ul{margin:0}.folded #wpcontent,.folded #wpfooter{margin-right:170px}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:150px}.folded #adminmenu .wp-submenu{border-top-color:transparent}.folded #adminmenu .wp-menu-name{display:block}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{top:-1px;position:relative}.folded #adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:transparent}#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#ddd}.folded #adminmenu .wp-submenu ul{margin-right:5px}#adminmenu li.menu-top{margin-bottom:-2px}#adminmenu .wp-menu-arrow{display:none!important}.js.folded #adminmenu li.menu-top{display:block;zoom:100%}ul#adminmenu{z-index:99}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal}#wpcontent #adminmenu .wp-submenu li{padding:0}#adminmenu li.wp-has-current-submenu .wp-submenu{right:-40px}#adminmenu .wp-menu-image{display:none!important}#adminmenu a.menu-top .wp-menu-name{padding-right:8px}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}.theme-browser .theme{width:30%;margin:0 0 4% 3%;cursor:auto}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:auto}.theme-browser .theme .theme-screenshot{height:180px}.theme-browser .theme .theme-actions{position:static;background-color:#e8e8e8}.theme-browser .theme .more-details{display:none}.plugins td,.plugins th,table.fixed td,table.fixed th{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary{overflow:visible}#dashboard-widgets h3 a{height:14px;line-height:14px}#dashboard_browser_nag{color:#fff}#dashboard_browser_nag .browser-icon{position:relative}.tablenav-pages .current-page{vertical-align:middle}#wpbody-content .postbox{border:1px solid #dfdfdf}#wpbody-content .postbox .hndle{margin-bottom:-1px}#addcat,#editcat,#template,#template div,.major-publishing-actions,.wp-submenu,.wp-submenu li{zoom:100%}.wp-menu-arrow{height:28px}.submitbox{margin-top:10px}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%}.inline-edit-row p.submit{zoom:100%}.inline-edit-row fieldset label span.title{display:block;float:right;width:5em}.inline-edit-row fieldset label span.input-text-wrap{margin-right:0;zoom:100%}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em}#titlediv #title{width:98%}.button,input[type=reset],input[type=button],input[type=submit]{padding:0 8px;line-height:20px;height:auto}.button.button-large,input[type=reset].button-large,input[type=button].button-large,input[type=submit].button-large{padding:0 10px;line-height:24px;height:auto}.button.button-small,input[type=reset].button-small,input[type=button].button-small,input[type=submit].button-small{padding:0 6px;line-height:16px;height:auto}a.button{margin:1px;padding:1px 9px 2px}a.button.button-large{padding:1px 11px 2px}a.button.button-small{padding:1px 7px 2px}#screen-options-wrap{overflow:hidden}#col-container,#col-left,#col-right,#dragHelper,#editorcontainer,#post-body,#post-status-info,#postdiv,#postdivrich,#poststuff,#the-comment-list .comment-item,#titlediv,#widgets-left,#wpwrap,#wrap,.fileedit-sub,.metabox-holder,.tablenav,.tagchecklist,.widget .widget-top,.widget-control-actions,.widget-liquid-left,.widget-liquid-right,.widgets-sortables{display:block;zoom:100%}p.search-box{position:static;float:left;margin:-3px 0 4px}#submitdiv a.button,#submitdiv input,#submitdiv select,.inactive-sidebar .widget,.revisions.pinned .revisions-controls,.widget-liquid-right .widget{position:relative}#widget-list .widget{display:inline}#editorcontainer #content{overflow:auto;margin:auto;width:98%}form#template div{width:100%}.wp-editor-container .quicktags-toolbar input{overflow:visible;padding:0 4px}#poststuff h2{font-size:1.6em}#poststuff .inside #page_template,#poststuff .inside #parent_id,.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{width:250px}#bh{margin:7px 0 0 10px;float:left}div#dashboard-widgets{padding-left:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.nav .button-secondary,.tablenav .button-secondary{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}.subsubsub li{display:inline}a.post-state-format{text-indent:0;line-height:0;font-size:0}table.ie-fixed{table-layout:fixed}.widefat tfoot td,.widefat th,.widefat thead td,.widefat tr{margin-bottom:0;border-spacing:0}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 5px 0 0}.widefat tfoot .check-column,.widefat thead .check-column{padding-top:6px}.media.widefat tbody th.check-column,.widefat tbody th.check-column{padding:4px 0 0}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button-secondary{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.inactive-sidebar .widget{display:block;float:right}#wpcontent .button-primary-disabled{color:#9FD0D5;background:#298CBA}#the-comment-list .unapproved td,#the-comment-list .unapproved tr{background-color:#ffffe0}.imgedit-submit{width:300px}#nav-menus-frame,#wpbody,.menu li{zoom:100%}#update-nav-menu #post-body{overflow:hidden}.menu li{min-width:100%}.menu li.sortable-placeholder{min-width:400px}.available-theme{display:inline}.available-theme ul{margin:0}.available-theme .action-links li{padding-left:7px;margin-left:7px}.about-wrap .three-col.about-updates .col-2{width:15%}.about-wrap .about-password-meter input{width:98%}.revisions-tickmarks,.revisions-tooltip{display:none!important}.login form .input,input[type=password]{font-family:sans-serif}.mce-btn i.mce-i-aligncenter,.mce-btn i.mce-i-alignjustify,.mce-btn i.mce-i-alignleft,.mce-btn i.mce-i-alignright,.mce-btn i.mce-i-blockquote,.mce-btn i.mce-i-bold,.mce-btn i.mce-i-bullist,.mce-btn i.mce-i-charmap,.mce-btn i.mce-i-forecolor,.mce-btn i.mce-i-fullscreen,.mce-btn i.mce-i-help,.mce-btn i.mce-i-hr,.mce-btn i.mce-i-indent,.mce-btn i.mce-i-italic,.mce-btn i.mce-i-link,.mce-btn i.mce-i-ltr,.mce-btn i.mce-i-numlist,.mce-btn i.mce-i-outdent,.mce-btn i.mce-i-pastetext,.mce-btn i.mce-i-pasteword,.mce-btn i.mce-i-redo,.mce-btn i.mce-i-removeformat,.mce-btn i.mce-i-spellchecker,.mce-btn i.mce-i-strikethrough,.mce-btn i.mce-i-underline,.mce-btn i.mce-i-undo,.mce-btn i.mce-i-unlink,.mce-btn i.mce-i-wp-media-library,.mce-btn i.mce-i-wp_adv,.mce-btn i.mce-i-wp_fullscreen,.mce-btn i.mce-i-wp_help,.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page,.mce-close{font-family:tinymce,Arial;font-style:normal;font-weight:400;font-variant:normal;font-size:16px;margin-right:0;padding-left:0}.mce-btn i.mce-i-wp_fullscreen,.qt-fullscreen{-ie7-icon:'\e023'}.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page{-ie7-icon:'\e027'}.mce-btn i.mce-i-wp_adv{background-color:#a0a5aa}.mce-btn i.mce-i-help,.mce-btn i.mce-i-wp_help{-ie7-icon:'\e016'}* html .row-actions{visibility:visible}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative}* html #editorcontainer{padding:0}* html #poststuff h2{margin-right:0}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #DFDFDF}* html div.widget-liquid-left{width:99%}* html .widgets-sortables{height:50px}* html a#content_resize{left:-2px}* html .widget-title h4{width:205px}* html #removing-widget .in-widget-title{display:none}* html .media-item .pinkynail{height:32px;width:40px}* html .describe .field input.text,* html .describe .field textarea{width:440px}* html input{border:1px solid #dfdfdf}* html .edit-box{display:inline}* html .postbox-container .meta-box-sortables{height:300px}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center}* html #adminmenu{margin-right:-80px}* html .folded #adminmenu{margin-right:-22px}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0}* html #wpfooter{margin:0}* html #adminmenu div.wp-menu-image{height:29px}
\ No newline at end of file
index 1fa160f8e4406de960bec702f293788066b3a93b..78f84e0c111f6aaa3a7c4ff6e7ab87e401dc5b6b 100644 (file)
@@ -396,15 +396,10 @@ p.search-box {
        margin: -3px 0 4px;
 }
 
-#widget-list .widget,
-.feature-filter .feature-group li {
+#widget-list .widget {
        display: inline;
 }
 
-.feature-filter .feature-group li input {
-       vertical-align: middle;
-}
-
 #editorcontainer #content {
        overflow: auto;
        margin: auto;
@@ -695,10 +690,6 @@ input[type="password"],
        border: 1px solid #DFDFDF;
 }
 
-* html .feature-filter .feature-group li {
-       width: 145px;
-}
-
 * html div.widget-liquid-left {
        width: 99%;
 }
index 3b5059b57c7c9f562f380f443f75ce90663713d3..182abce212d517b4447705bfb962c0fe30be1371 100644 (file)
@@ -1 +1 @@
-.feature-filter .feature-group li input,.tablenav-pages .current-page{vertical-align:middle}#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:99%}#dashboard-widgets form #title{width:98%}#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}.wp-editor-wrap .wp-editor-container,.wp-editor-wrap .wp-editor-tabs,.wp-editor-wrap .wp-editor-tools,.wp-editor-wrap .wp-switch-editor{zoom:100%}.wp-editor-wrap .wp-editor-container textarea.wp-editor-area{width:97%}#post-body.columns-2 #postbox-container-1{padding-left:19px}.welcome-panel .wp-badge{position:absolute}.welcome-panel .welcome-panel-column:first-child{width:35%}#adminmenuback{left:0;background-image:none}#adminmenu .wp-submenu,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open{left:110px}#adminmenuwrap{position:static}#adminmenu{position:relative}#adminmenu,#adminmenu a{cursor:pointer}#adminmenu li.wp-menu-separator,#adminmenu li.wp-menu-separator-last{font-size:1px;line-height:1}#adminmenu a.menu-top{border-bottom:0 none;border-top:1px solid #ddd}#adminmenu .separator{font-size:1px;line-height:1px}#adminmenu .wp-submenu ul{margin:0}.folded #wpcontent,.folded #wpfooter{margin-left:170px}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:150px}.folded #adminmenu .wp-submenu{border-top-color:transparent}.folded #adminmenu .wp-menu-name{display:block}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{top:-1px;position:relative}.folded #adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:transparent}#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#ddd}.folded #adminmenu .wp-submenu ul{margin-left:5px}#adminmenu li.menu-top{margin-bottom:-2px}#adminmenu .wp-menu-arrow{display:none!important}.js.folded #adminmenu li.menu-top{display:block;zoom:100%}ul#adminmenu{z-index:99}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal}#wpcontent #adminmenu .wp-submenu li{padding:0}#adminmenu li.wp-has-current-submenu .wp-submenu{left:-40px}#adminmenu .wp-menu-image{display:none!important}#adminmenu a.menu-top .wp-menu-name{padding-left:8px}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}.theme-browser .theme{width:30%;margin:0 3% 4% 0;cursor:auto}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:auto}.theme-browser .theme .theme-screenshot{height:180px}.theme-browser .theme .theme-actions{position:static;background-color:#e8e8e8}.theme-browser .theme .more-details{display:none}.plugins td,.plugins th,table.fixed td,table.fixed th{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary{overflow:visible}#dashboard-widgets h3 a{height:14px;line-height:14px}#dashboard_browser_nag{color:#fff}#dashboard_browser_nag .browser-icon{position:relative}#wpbody-content .postbox{border:1px solid #dfdfdf}#wpbody-content .postbox .hndle{margin-bottom:-1px}#addcat,#editcat,#template,#template div,.major-publishing-actions,.wp-submenu,.wp-submenu li{zoom:100%}.wp-menu-arrow{height:28px}.submitbox{margin-top:10px}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%}.inline-edit-row p.submit{zoom:100%}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;zoom:100%}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em}#titlediv #title{width:98%}.button,input[type=reset],input[type=button],input[type=submit]{padding:0 8px;line-height:20px;height:auto}.button.button-large,input[type=reset].button-large,input[type=button].button-large,input[type=submit].button-large{padding:0 10px;line-height:24px;height:auto}.button.button-small,input[type=reset].button-small,input[type=button].button-small,input[type=submit].button-small{padding:0 6px;line-height:16px;height:auto}a.button{margin:1px;padding:1px 9px 2px}a.button.button-large{padding:1px 11px 2px}a.button.button-small{padding:1px 7px 2px}#screen-options-wrap{overflow:hidden}#col-container,#col-left,#col-right,#dragHelper,#editorcontainer,#post-body,#post-status-info,#postdiv,#postdivrich,#poststuff,#the-comment-list .comment-item,#titlediv,#widgets-left,#wpwrap,#wrap,.fileedit-sub,.metabox-holder,.tablenav,.tagchecklist,.widget .widget-top,.widget-control-actions,.widget-liquid-left,.widget-liquid-right,.widgets-sortables{display:block;zoom:100%}p.search-box{position:static;float:right;margin:-3px 0 4px}#submitdiv a.button,#submitdiv input,#submitdiv select,.inactive-sidebar .widget,.revisions.pinned .revisions-controls,.widget-liquid-right .widget{position:relative}#widget-list .widget,.feature-filter .feature-group li{display:inline}#editorcontainer #content{overflow:auto;margin:auto;width:98%}form#template div{width:100%}.wp-editor-container .quicktags-toolbar input{overflow:visible;padding:0 4px}#poststuff h2{font-size:1.6em}#poststuff .inside #page_template,#poststuff .inside #parent_id,.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{width:250px}#bh{margin:7px 10px 0 0;float:right}div#dashboard-widgets{padding-right:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.nav .button-secondary,.tablenav .button-secondary{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}.subsubsub li{display:inline}a.post-state-format{text-indent:0;line-height:0;font-size:0}table.ie-fixed{table-layout:fixed}.widefat tfoot td,.widefat th,.widefat thead td,.widefat tr{margin-bottom:0;border-spacing:0}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 5px}.widefat tfoot .check-column,.widefat thead .check-column{padding-top:6px}.media.widefat tbody th.check-column,.widefat tbody th.check-column{padding:4px 0 0}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button-secondary{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.inactive-sidebar .widget{display:block;float:left}#wpcontent .button-primary-disabled{color:#9FD0D5;background:#298CBA}#the-comment-list .unapproved td,#the-comment-list .unapproved tr{background-color:#ffffe0}.imgedit-submit{width:300px}#nav-menus-frame,#wpbody,.menu li{zoom:100%}#update-nav-menu #post-body{overflow:hidden}.menu li{min-width:100%}.menu li.sortable-placeholder{min-width:400px}.available-theme{display:inline}.available-theme ul{margin:0}.available-theme .action-links li{padding-right:7px;margin-right:7px}.about-wrap .three-col.about-updates .col-2{width:15%}.about-wrap .about-password-meter input{width:98%}.revisions-tickmarks,.revisions-tooltip{display:none!important}.login form .input,input[type=password]{font-family:sans-serif}.mce-btn i.mce-i-aligncenter,.mce-btn i.mce-i-alignjustify,.mce-btn i.mce-i-alignleft,.mce-btn i.mce-i-alignright,.mce-btn i.mce-i-blockquote,.mce-btn i.mce-i-bold,.mce-btn i.mce-i-bullist,.mce-btn i.mce-i-charmap,.mce-btn i.mce-i-forecolor,.mce-btn i.mce-i-fullscreen,.mce-btn i.mce-i-help,.mce-btn i.mce-i-hr,.mce-btn i.mce-i-indent,.mce-btn i.mce-i-italic,.mce-btn i.mce-i-link,.mce-btn i.mce-i-ltr,.mce-btn i.mce-i-numlist,.mce-btn i.mce-i-outdent,.mce-btn i.mce-i-pastetext,.mce-btn i.mce-i-pasteword,.mce-btn i.mce-i-redo,.mce-btn i.mce-i-removeformat,.mce-btn i.mce-i-spellchecker,.mce-btn i.mce-i-strikethrough,.mce-btn i.mce-i-underline,.mce-btn i.mce-i-undo,.mce-btn i.mce-i-unlink,.mce-btn i.mce-i-wp-media-library,.mce-btn i.mce-i-wp_adv,.mce-btn i.mce-i-wp_fullscreen,.mce-btn i.mce-i-wp_help,.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page,.mce-close{font-family:tinymce,Arial;font-style:normal;font-weight:400;font-variant:normal;font-size:16px;margin-left:0;padding-right:0}.mce-btn i.mce-i-wp_fullscreen,.qt-fullscreen{-ie7-icon:'\e023'}.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page{-ie7-icon:'\e027'}.mce-btn i.mce-i-wp_adv{background-color:#a0a5aa}.mce-btn i.mce-i-help,.mce-btn i.mce-i-wp_help{-ie7-icon:'\e016'}* html .row-actions{visibility:visible}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative}* html #editorcontainer{padding:0}* html #poststuff h2{margin-left:0}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #DFDFDF}* html .feature-filter .feature-group li{width:145px}* html div.widget-liquid-left{width:99%}* html .widgets-sortables{height:50px}* html a#content_resize{right:-2px}* html .widget-title h4{width:205px}* html #removing-widget .in-widget-title{display:none}* html .media-item .pinkynail{height:32px;width:40px}* html .describe .field input.text,* html .describe .field textarea{width:440px}* html input{border:1px solid #dfdfdf}* html .edit-box{display:inline}* html .postbox-container .meta-box-sortables{height:300px}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center}* html #adminmenu{margin-left:-80px}* html .folded #adminmenu{margin-left:-22px}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0}* html #wpfooter{margin:0}* html #adminmenu div.wp-menu-image{height:29px}
\ No newline at end of file
+#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:99%}#dashboard-widgets form #title{width:98%}#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}.wp-editor-wrap .wp-editor-container,.wp-editor-wrap .wp-editor-tabs,.wp-editor-wrap .wp-editor-tools,.wp-editor-wrap .wp-switch-editor{zoom:100%}.wp-editor-wrap .wp-editor-container textarea.wp-editor-area{width:97%}#post-body.columns-2 #postbox-container-1{padding-left:19px}.welcome-panel .wp-badge{position:absolute}.welcome-panel .welcome-panel-column:first-child{width:35%}#adminmenuback{left:0;background-image:none}#adminmenu .wp-submenu,.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open{left:110px}#adminmenuwrap{position:static}#adminmenu{position:relative}#adminmenu,#adminmenu a{cursor:pointer}#adminmenu li.wp-menu-separator,#adminmenu li.wp-menu-separator-last{font-size:1px;line-height:1}#adminmenu a.menu-top{border-bottom:0 none;border-top:1px solid #ddd}#adminmenu .separator{font-size:1px;line-height:1px}#adminmenu .wp-submenu ul{margin:0}.folded #wpcontent,.folded #wpfooter{margin-left:170px}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:150px}.folded #adminmenu .wp-submenu{border-top-color:transparent}.folded #adminmenu .wp-menu-name{display:block}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{top:-1px;position:relative}.folded #adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head{background-color:transparent}#adminmenu .wp-submenu .wp-submenu-head{border-top-color:#ddd}.folded #adminmenu .wp-submenu ul{margin-left:5px}#adminmenu li.menu-top{margin-bottom:-2px}#adminmenu .wp-menu-arrow{display:none!important}.js.folded #adminmenu li.menu-top{display:block;zoom:100%}ul#adminmenu{z-index:99}#adminmenu li.menu-top a.menu-top{min-width:auto;width:auto}#wpcontent #adminmenu li.wp-has-current-submenu a.wp-has-submenu{font-style:normal}#wpcontent #adminmenu .wp-submenu li{padding:0}#adminmenu li.wp-has-current-submenu .wp-submenu{left:-40px}#adminmenu .wp-menu-image{display:none!important}#adminmenu a.menu-top .wp-menu-name{padding-left:8px}#collapse-menu{line-height:23px}#wpadminbar .ab-comments-icon{padding-top:7px}.theme-browser .theme{width:30%;margin:0 3% 4% 0;cursor:auto}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:auto}.theme-browser .theme .theme-screenshot{height:180px}.theme-browser .theme .theme-actions{position:static;background-color:#e8e8e8}.theme-browser .theme .more-details{display:none}.plugins td,.plugins th,table.fixed td,table.fixed th{border-top:1px solid #ddd}#wpbody-content input.button,#wpbody-content input.button-primary,#wpbody-content input.button-secondary{overflow:visible}#dashboard-widgets h3 a{height:14px;line-height:14px}#dashboard_browser_nag{color:#fff}#dashboard_browser_nag .browser-icon{position:relative}.tablenav-pages .current-page{vertical-align:middle}#wpbody-content .postbox{border:1px solid #dfdfdf}#wpbody-content .postbox .hndle{margin-bottom:-1px}#addcat,#editcat,#template,#template div,.major-publishing-actions,.wp-submenu,.wp-submenu li{zoom:100%}.wp-menu-arrow{height:28px}.submitbox{margin-top:10px}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:19%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:29%}.inline-edit-row p.submit{zoom:100%}.inline-edit-row fieldset label span.title{display:block;float:left;width:5em}.inline-edit-row fieldset label span.input-text-wrap{margin-left:0;zoom:100%}#wpbody-content .inline-edit-row fieldset label span.input-text-wrap input{line-height:130%}#wpbody-content .inline-edit-row .input-text-wrap input{width:95%}#wpbody-content .inline-edit-row .input-text-wrap input.inline-edit-password-input{width:8em}#titlediv #title{width:98%}.button,input[type=reset],input[type=button],input[type=submit]{padding:0 8px;line-height:20px;height:auto}.button.button-large,input[type=reset].button-large,input[type=button].button-large,input[type=submit].button-large{padding:0 10px;line-height:24px;height:auto}.button.button-small,input[type=reset].button-small,input[type=button].button-small,input[type=submit].button-small{padding:0 6px;line-height:16px;height:auto}a.button{margin:1px;padding:1px 9px 2px}a.button.button-large{padding:1px 11px 2px}a.button.button-small{padding:1px 7px 2px}#screen-options-wrap{overflow:hidden}#col-container,#col-left,#col-right,#dragHelper,#editorcontainer,#post-body,#post-status-info,#postdiv,#postdivrich,#poststuff,#the-comment-list .comment-item,#titlediv,#widgets-left,#wpwrap,#wrap,.fileedit-sub,.metabox-holder,.tablenav,.tagchecklist,.widget .widget-top,.widget-control-actions,.widget-liquid-left,.widget-liquid-right,.widgets-sortables{display:block;zoom:100%}p.search-box{position:static;float:right;margin:-3px 0 4px}#submitdiv a.button,#submitdiv input,#submitdiv select,.inactive-sidebar .widget,.revisions.pinned .revisions-controls,.widget-liquid-right .widget{position:relative}#widget-list .widget{display:inline}#editorcontainer #content{overflow:auto;margin:auto;width:98%}form#template div{width:100%}.wp-editor-container .quicktags-toolbar input{overflow:visible;padding:0 4px}#poststuff h2{font-size:1.6em}#poststuff .inside #page_template,#poststuff .inside #parent_id,.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{width:250px}#bh{margin:7px 10px 0 0;float:right}div#dashboard-widgets{padding-right:1px}.tagchecklist span,.tagchecklist span a{display:inline-block;display:block}.nav .button-secondary,.tablenav .button-secondary{padding-top:2px;padding-bottom:2px}.tablenav select{font-size:13px;display:inline-block;vertical-align:top;margin-top:2px}.tablenav .actions select{width:155px}.subsubsub li{display:inline}a.post-state-format{text-indent:0;line-height:0;font-size:0}table.ie-fixed{table-layout:fixed}.widefat tfoot td,.widefat th,.widefat thead td,.widefat tr{margin-bottom:0;border-spacing:0}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 5px}.widefat tfoot .check-column,.widefat thead .check-column{padding-top:6px}.media.widefat tbody th.check-column,.widefat tbody th.check-column{padding:4px 0 0}.widefat{empty-cells:show;border-collapse:collapse}.tablenav a.button-secondary{display:inline-block;padding:2px 5px}.inactive-sidebar .widgets-sortables{padding-bottom:8px}#available-widgets .widget-holder{padding-bottom:65px}#widgets-left .inactive{padding-bottom:10px}.inactive-sidebar .widget{display:block;float:left}#wpcontent .button-primary-disabled{color:#9FD0D5;background:#298CBA}#the-comment-list .unapproved td,#the-comment-list .unapproved tr{background-color:#ffffe0}.imgedit-submit{width:300px}#nav-menus-frame,#wpbody,.menu li{zoom:100%}#update-nav-menu #post-body{overflow:hidden}.menu li{min-width:100%}.menu li.sortable-placeholder{min-width:400px}.available-theme{display:inline}.available-theme ul{margin:0}.available-theme .action-links li{padding-right:7px;margin-right:7px}.about-wrap .three-col.about-updates .col-2{width:15%}.about-wrap .about-password-meter input{width:98%}.revisions-tickmarks,.revisions-tooltip{display:none!important}.login form .input,input[type=password]{font-family:sans-serif}.mce-btn i.mce-i-aligncenter,.mce-btn i.mce-i-alignjustify,.mce-btn i.mce-i-alignleft,.mce-btn i.mce-i-alignright,.mce-btn i.mce-i-blockquote,.mce-btn i.mce-i-bold,.mce-btn i.mce-i-bullist,.mce-btn i.mce-i-charmap,.mce-btn i.mce-i-forecolor,.mce-btn i.mce-i-fullscreen,.mce-btn i.mce-i-help,.mce-btn i.mce-i-hr,.mce-btn i.mce-i-indent,.mce-btn i.mce-i-italic,.mce-btn i.mce-i-link,.mce-btn i.mce-i-ltr,.mce-btn i.mce-i-numlist,.mce-btn i.mce-i-outdent,.mce-btn i.mce-i-pastetext,.mce-btn i.mce-i-pasteword,.mce-btn i.mce-i-redo,.mce-btn i.mce-i-removeformat,.mce-btn i.mce-i-spellchecker,.mce-btn i.mce-i-strikethrough,.mce-btn i.mce-i-underline,.mce-btn i.mce-i-undo,.mce-btn i.mce-i-unlink,.mce-btn i.mce-i-wp-media-library,.mce-btn i.mce-i-wp_adv,.mce-btn i.mce-i-wp_fullscreen,.mce-btn i.mce-i-wp_help,.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page,.mce-close{font-family:tinymce,Arial;font-style:normal;font-weight:400;font-variant:normal;font-size:16px;margin-left:0;padding-right:0}.mce-btn i.mce-i-wp_fullscreen,.qt-fullscreen{-ie7-icon:'\e023'}.mce-btn i.mce-i-wp_more,.mce-btn i.mce-i-wp_page{-ie7-icon:'\e027'}.mce-btn i.mce-i-wp_adv{background-color:#a0a5aa}.mce-btn i.mce-i-help,.mce-btn i.mce-i-wp_help{-ie7-icon:'\e016'}* html .row-actions{visibility:visible}* html div.widget-liquid-left,* html div.widget-liquid-right{display:block;position:relative}* html #editorcontainer{padding:0}* html #poststuff h2{margin-left:0}* html .stuffbox,* html .stuffbox input,* html .stuffbox textarea{border:1px solid #DFDFDF}* html div.widget-liquid-left{width:99%}* html .widgets-sortables{height:50px}* html a#content_resize{right:-2px}* html .widget-title h4{width:205px}* html #removing-widget .in-widget-title{display:none}* html .media-item .pinkynail{height:32px;width:40px}* html .describe .field input.text,* html .describe .field textarea{width:440px}* html input{border:1px solid #dfdfdf}* html .edit-box{display:inline}* html .postbox-container .meta-box-sortables{height:300px}* html #wpbody-content #screen-options-link-wrap{display:inline-block;width:150px;text-align:center}* html #wpbody-content #contextual-help-link-wrap{display:inline-block;width:100px;text-align:center}* html #adminmenu{margin-left:-80px}* html .folded #adminmenu{margin-left:-22px}* html #wpcontent #adminmenu li.menu-top{display:inline;padding:0;margin:0}* html #wpfooter{margin:0}* html #adminmenu div.wp-menu-image{height:29px}
\ No newline at end of file
index 8211e82a81d16f731f3809c2d5c21a0939a32828..551121552fe7f88d1cd7ae2334fedd4fec8ff9ae 100644 (file)
@@ -17,25 +17,38 @@ body {
 
 a {
        color: #0073aa;
-       text-decoration: none;
 }
 
-a:hover {
+a:hover,
+a:active {
        color: #00a0d2;
 }
 
-h1 {
+a:focus {
+       color: #124964;
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+}
+
+.ie8 a:focus {
+       outline: #5b9dd9 solid 1px;
+}
+
+h1, h2 {
        border-bottom: 1px solid #dedede;
        clear: both;
        color: #666;
        font-size: 24px;
-       margin: 30px 0;
        padding: 0;
        padding-bottom: 7px;
        font-weight: normal;
 }
 
-h2 {
+h3 {
        font-size: 16px;
 }
 
@@ -61,12 +74,19 @@ abbr {
        font-variant: normal;
 }
 
+fieldset {
+       border: 0;
+       padding: 0;
+       margin: 0;
+}
+
 label {
        cursor: pointer;
 }
 
 #logo {
        margin: 6px 0 14px 0;
+       padding: 0 0 7px 0;
        border-bottom: none;
        text-align:center
 }
@@ -91,6 +111,12 @@ label {
        overflow: hidden;
        display: block;
 }
+
+#logo a:focus {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
 .step {
        margin: 20px 0 15px;
 }
@@ -168,6 +194,7 @@ submit {
        font-weight: normal;
 }
 
+.form-table.install-success th,
 .form-table.install-success td {
        vertical-align: middle;
        padding: 16px 0 16px 20px;
index 9b4383f7d28fc17ffbf6e8b84dd7fdfb3c9334c7..13f770208693498bf9d6857b20e31fe53d7ce0cc 100644 (file)
@@ -1 +1 @@
-a img,abbr{border:0}#logo a,a{text-decoration:none}#logo a,.form-table th p,h1{font-weight:400}html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:"Open Sans",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;max-width:700px;-webkit-font-smoothing:subpixel-antialiased;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}a{color:#0073aa}a:hover{color:#00a0d2}h1{border-bottom:1px solid #dedede;clear:both;color:#666;font-size:24px;margin:30px 0;padding:0 0 7px}h2{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}input,submit,textarea{font-family:"Open Sans",sans-serif}dl,ol,ul{padding:5px 22px 5px 5px}abbr{font-variant:normal}label{cursor:pointer}#logo{margin:6px 0 14px;border-bottom:none;text-align:center}#logo a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;color:#999;height:84px;font-size:20px;line-height:1.3em;margin:-130px auto 25px;padding:0;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#pass1-text,.pw-weak,.show-password #pass1{display:none}.step{margin:20px 0 15px}.step,th{text-align:right;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;vertical-align:middle;font-size:14px}.form-table td,.form-table th{font-size:14px;padding:10px 0 10px 20px;vertical-align:top}textarea{border:1px solid #dfdfdf;width:100%;box-sizing:border-box}#pass-strength-result,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px}.form-table th{text-align:right;width:140px}.form-table code{line-height:18px;font-size:14px}.form-table p{margin:4px 0 0;font-size:11px}.form-table input{line-height:20px;font-size:15px;padding:3px 5px;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07)}.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:206px}.form-table.install-success td{vertical-align:middle;padding:16px 0 16px 20px}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.wp-hide-pw>.dashicons{line-height:inherit}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 0 5px 5px;padding:3px 5px;text-align:center;width:218px;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.message{border:1px solid #c00;padding:.5em .7em;margin:5px 0 15px;background-color:#ffebe8}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}.rtl input,.rtl submit,.rtl textarea,body.rtl{font-family:Tahoma,sans-serif}.language-chooser select,:lang(he-il) .rtl input,:lang(he-il) .rtl submit,:lang(he-il) .rtl textarea,:lang(he-il) body.rtl{font-family:Arial,sans-serif}@media only screen and (max-width:799px){body{margin-top:115px}#logo a{margin:-125px auto 30px}}@media screen and (max-width:782px){.form-table{margin-top:0}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table th{padding:20px 0 0}.form-table td{padding:5px 0;border:0;margin:0}input,textarea{font-size:16px}.form-table span.description,.form-table td input[type=text],.form-table td input[type=email],.form-table td input[type=url],.form-table td input[type=password],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}}body.language-chooser{max-width:300px}.language-chooser select{padding:8px;width:100%;display:block;border:1px solid #ddd;background-color:#fff;color:#32373c;font-size:16px;font-weight:400}.language-chooser p{text-align:left}.screen-reader-input,.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:2px 5px 0}.step .spinner{display:inline-block;margin-top:8px;margin-left:15px;vertical-align:top}.button-secondary.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}}
\ No newline at end of file
+a img,abbr,fieldset{border:0}#logo,h1,h2{padding:0 0 7px}#logo a,.form-table th p,h1,h2{font-weight:400}html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:"Open Sans",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;max-width:700px;-webkit-font-smoothing:subpixel-antialiased;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}a{color:#0073aa}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}h1,h2{border-bottom:1px solid #dedede;clear:both;color:#666;font-size:24px}h3{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}input,submit,textarea{font-family:"Open Sans",sans-serif}dl,ol,ul{padding:5px 22px 5px 5px}abbr{font-variant:normal}fieldset{padding:0;margin:0}label{cursor:pointer}#logo{margin:6px 0 14px;border-bottom:none;text-align:center}#logo a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;color:#999;height:84px;font-size:20px;line-height:1.3em;margin:-130px auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#pass1-text,.pw-weak,.show-password #pass1{display:none}#logo a:focus{-webkit-box-shadow:none;box-shadow:none}.step{margin:20px 0 15px}.step,th{text-align:right;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;vertical-align:middle;font-size:14px}.form-table td,.form-table th{padding:10px 0 10px 20px;vertical-align:top;font-size:14px}textarea{border:1px solid #dfdfdf;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px}.form-table th{text-align:right;width:140px}.form-table code{line-height:18px;font-size:14px}.form-table p{margin:4px 0 0;font-size:11px}.form-table input{line-height:20px;font-size:15px;padding:3px 5px;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07)}.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:206px}.form-table.install-success td,.form-table.install-success th{vertical-align:middle;padding:16px 0 16px 20px}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.wp-hide-pw>.dashicons{line-height:inherit}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 0 5px 5px;padding:3px 5px;text-align:center;width:218px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.message{border:1px solid #c00;padding:.5em .7em;margin:5px 0 15px;background-color:#ffebe8}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}.rtl input,.rtl submit,.rtl textarea,body.rtl{font-family:Tahoma,sans-serif}.language-chooser select,:lang(he-il) .rtl input,:lang(he-il) .rtl submit,:lang(he-il) .rtl textarea,:lang(he-il) body.rtl{font-family:Arial,sans-serif}@media only screen and (max-width:799px){body{margin-top:115px}#logo a{margin:-125px auto 30px}}@media screen and (max-width:782px){.form-table{margin-top:0}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table th{padding:20px 0 0}.form-table td{padding:5px 0;border:0;margin:0}input,textarea{font-size:16px}.form-table span.description,.form-table td input[type=text],.form-table td input[type=email],.form-table td input[type=url],.form-table td input[type=password],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}}body.language-chooser{max-width:300px}.language-chooser select{padding:8px;width:100%;display:block;border:1px solid #ddd;background-color:#fff;color:#32373c;font-size:16px;font-weight:400}.language-chooser p{text-align:left}.screen-reader-input,.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:2px 5px 0}.step .spinner{display:inline-block;margin-top:8px;margin-left:15px;vertical-align:top}.button-secondary.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}}
\ No newline at end of file
index 76793ab77b5d65fec085ae64bcf9a374652246f1..2f355f6f017b60579a1ce9459276da4b989cfcb4 100644 (file)
@@ -17,25 +17,38 @@ body {
 
 a {
        color: #0073aa;
-       text-decoration: none;
 }
 
-a:hover {
+a:hover,
+a:active {
        color: #00a0d2;
 }
 
-h1 {
+a:focus {
+       color: #124964;
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+}
+
+.ie8 a:focus {
+       outline: #5b9dd9 solid 1px;
+}
+
+h1, h2 {
        border-bottom: 1px solid #dedede;
        clear: both;
        color: #666;
        font-size: 24px;
-       margin: 30px 0;
        padding: 0;
        padding-bottom: 7px;
        font-weight: normal;
 }
 
-h2 {
+h3 {
        font-size: 16px;
 }
 
@@ -61,12 +74,19 @@ abbr {
        font-variant: normal;
 }
 
+fieldset {
+       border: 0;
+       padding: 0;
+       margin: 0;
+}
+
 label {
        cursor: pointer;
 }
 
 #logo {
        margin: 6px 0 14px 0;
+       padding: 0 0 7px 0;
        border-bottom: none;
        text-align:center
 }
@@ -91,6 +111,12 @@ label {
        overflow: hidden;
        display: block;
 }
+
+#logo a:focus {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
 .step {
        margin: 20px 0 15px;
 }
@@ -168,6 +194,7 @@ submit {
        font-weight: normal;
 }
 
+.form-table.install-success th,
 .form-table.install-success td {
        vertical-align: middle;
        padding: 16px 20px 16px 0;
index 13cbe9d5cbc000a3b2d3a02c5b20fee7ac570885..7a3be0fc0e34e141337ace117613e38cba18441d 100644 (file)
@@ -1 +1 @@
-a img,abbr{border:0}#logo a,a{text-decoration:none}#logo a,.form-table th p,h1{font-weight:400}html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:"Open Sans",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;max-width:700px;-webkit-font-smoothing:subpixel-antialiased;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}a{color:#0073aa}a:hover{color:#00a0d2}h1{border-bottom:1px solid #dedede;clear:both;color:#666;font-size:24px;margin:30px 0;padding:0 0 7px}h2{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}input,submit,textarea{font-family:"Open Sans",sans-serif}dl,ol,ul{padding:5px 5px 5px 22px}abbr{font-variant:normal}label{cursor:pointer}#logo{margin:6px 0 14px;border-bottom:none;text-align:center}#logo a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;color:#999;height:84px;font-size:20px;line-height:1.3em;margin:-130px auto 25px;padding:0;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#pass1-text,.pw-weak,.show-password #pass1{display:none}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;vertical-align:middle;font-size:14px}.form-table td,.form-table th{font-size:14px;padding:10px 20px 10px 0;vertical-align:top}textarea{border:1px solid #dfdfdf;width:100%;box-sizing:border-box}#pass-strength-result,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px}.form-table th{text-align:left;width:140px}.form-table code{line-height:18px;font-size:14px}.form-table p{margin:4px 0 0;font-size:11px}.form-table input{line-height:20px;font-size:15px;padding:3px 5px;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07)}.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:206px}.form-table.install-success td{vertical-align:middle;padding:16px 20px 16px 0}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.wp-hide-pw>.dashicons{line-height:inherit}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 0;padding:3px 5px;text-align:center;width:218px;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.message{border:1px solid #c00;padding:.5em .7em;margin:5px 0 15px;background-color:#ffebe8}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}.rtl input,.rtl submit,.rtl textarea,body.rtl{font-family:Tahoma,sans-serif}.language-chooser select,:lang(he-il) .rtl input,:lang(he-il) .rtl submit,:lang(he-il) .rtl textarea,:lang(he-il) body.rtl{font-family:Arial,sans-serif}@media only screen and (max-width:799px){body{margin-top:115px}#logo a{margin:-125px auto 30px}}@media screen and (max-width:782px){.form-table{margin-top:0}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table th{padding:20px 0 0}.form-table td{padding:5px 0;border:0;margin:0}input,textarea{font-size:16px}.form-table span.description,.form-table td input[type=text],.form-table td input[type=email],.form-table td input[type=url],.form-table td input[type=password],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}}body.language-chooser{max-width:300px}.language-chooser select{padding:8px;width:100%;display:block;border:1px solid #ddd;background-color:#fff;color:#32373c;font-size:16px;font-weight:400}.language-chooser p{text-align:right}.screen-reader-input,.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:2px 5px 0}.step .spinner{display:inline-block;margin-top:8px;margin-right:15px;vertical-align:top}.button-secondary.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}}
\ No newline at end of file
+a img,abbr,fieldset{border:0}#logo,h1,h2{padding:0 0 7px}#logo a,.form-table th p,h1,h2{font-weight:400}html{background:#f1f1f1;margin:0 20px}body{background:#fff;color:#444;font-family:"Open Sans",sans-serif;margin:140px auto 25px;padding:20px 20px 10px;max-width:700px;-webkit-font-smoothing:subpixel-antialiased;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}a{color:#0073aa}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}h1,h2{border-bottom:1px solid #dedede;clear:both;color:#666;font-size:24px}h3{font-size:16px}dd,dt,li,p{padding-bottom:2px;font-size:14px;line-height:1.5}.code,code{font-family:Consolas,Monaco,monospace}input,submit,textarea{font-family:"Open Sans",sans-serif}dl,ol,ul{padding:5px 5px 5px 22px}abbr{font-variant:normal}fieldset{padding:0;margin:0}label{cursor:pointer}#logo{margin:6px 0 14px;border-bottom:none;text-align:center}#logo a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;color:#999;height:84px;font-size:20px;line-height:1.3em;margin:-130px auto 25px;padding:0;text-decoration:none;width:84px;text-indent:-9999px;outline:0;overflow:hidden;display:block}#pass1-text,.pw-weak,.show-password #pass1{display:none}#logo a:focus{-webkit-box-shadow:none;box-shadow:none}.step{margin:20px 0 15px}.step,th{text-align:left;padding:0}.language-chooser.wp-core-ui .step .button.button-large{height:36px;vertical-align:middle;font-size:14px}.form-table td,.form-table th{padding:10px 20px 10px 0;vertical-align:top;font-size:14px}textarea{border:1px solid #dfdfdf;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table{border-collapse:collapse;margin-top:1em;width:100%}.form-table td{margin-bottom:9px}.form-table th{text-align:left;width:140px}.form-table code{line-height:18px;font-size:14px}.form-table p{margin:4px 0 0;font-size:11px}.form-table input{line-height:20px;font-size:15px;padding:3px 5px;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07)}.form-table input[type=email],.form-table input[type=password],.form-table input[type=text],.form-table input[type=url]{width:206px}.form-table.install-success td,.form-table.install-success th{vertical-align:middle;padding:16px 20px 16px 0}.form-table.install-success td p{margin:0;font-size:14px}.form-table.install-success td code{margin:0;font-size:18px}#error-page{margin-top:50px}#error-page p{font-size:14px;line-height:18px;margin:25px 0 20px}#error-page code,.code{font-family:Consolas,Monaco,monospace}.wp-hide-pw>.dashicons{line-height:inherit}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 0;padding:3px 5px;text-align:center;width:218px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.message{border:1px solid #c00;padding:.5em .7em;margin:5px 0 15px;background-color:#ffebe8}#admin_email,#dbhost,#dbname,#pass1,#pass2,#prefix,#pwd,#uname,#user_login{direction:ltr}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}.rtl input,.rtl submit,.rtl textarea,body.rtl{font-family:Tahoma,sans-serif}.language-chooser select,:lang(he-il) .rtl input,:lang(he-il) .rtl submit,:lang(he-il) .rtl textarea,:lang(he-il) body.rtl{font-family:Arial,sans-serif}@media only screen and (max-width:799px){body{margin-top:115px}#logo a{margin:-125px auto 30px}}@media screen and (max-width:782px){.form-table{margin-top:0}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table th{padding:20px 0 0}.form-table td{padding:5px 0;border:0;margin:0}input,textarea{font-size:16px}.form-table span.description,.form-table td input[type=text],.form-table td input[type=email],.form-table td input[type=url],.form-table td input[type=password],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}}body.language-chooser{max-width:300px}.language-chooser select{padding:8px;width:100%;display:block;border:1px solid #ddd;background-color:#fff;color:#32373c;font-size:16px;font-weight:400}.language-chooser p{text-align:right}.screen-reader-input,.screen-reader-text{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:2px 5px 0}.step .spinner{display:inline-block;margin-top:8px;margin-right:15px;vertical-align:top}.button-secondary.hide-if-no-js,.hide-if-no-js{display:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}}
\ No newline at end of file
index 6ede0d3f4dded51609a2f200459aec335e704cb8..0da51c400118b2d223e34b48d38df66ac47a959e 100644 (file)
@@ -68,6 +68,13 @@ body.locale-he-il .press-this a.wp-switch-editor {
 }
 
 /* ru_RU: Text needs more room to breathe. */
+.locale-ru-ru #adminmenu {
+       width: inherit; /* back-compat for pre-3.2 */
+}
+.locale-ru-ru #adminmenu,
+.locale-ru-ru #wpbody {
+       margin-right: 0; /* back-compat for pre-3.2 */
+}
 .locale-ru-ru .inline-edit-row fieldset label span.title,
 .locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend {
        width: 8em; /* default 6em */
index 8b81ebab177d09a306ff2317966d287a6f757714..6c603bffbf7487861296e57f9451c9fd594f0fa9 100644 (file)
@@ -68,6 +68,13 @@ body.locale-he-il .press-this a.wp-switch-editor {
 }
 
 /* ru_RU: Text needs more room to breathe. */
+.locale-ru-ru #adminmenu {
+       width: inherit; /* back-compat for pre-3.2 */
+}
+.locale-ru-ru #adminmenu,
+.locale-ru-ru #wpbody {
+       margin-left: 0; /* back-compat for pre-3.2 */
+}
 .locale-ru-ru .inline-edit-row fieldset label span.title,
 .locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend {
        width: 8em; /* default 6em */
index ae0cb3c468b9f2416761f048d35b2e5bc156e71f..fb9ab97363c5539f4be32b571d741ee353800490 100644 (file)
        text-align: center;
 }
 
+.column-response .post-com-count-no-pending,
+.column-comments .post-com-count-no-pending {
+       display: none;
+}
+
 /* comments */
 
 .commentlist li {
 
 #replysubmit {
        margin: 0;
-       padding: 0 5px 3px;
+       padding: 5px 7px 10px;
+       overflow: hidden;
        text-align: center;
 }
 
        text-align: center;
 }
 
-#replyrow h5 {
-       margin: .2em 0 0;
-       padding: 0 5px;
-       line-height: 1.4em;
-       font-size: 1em;
+#replyrow.inline-edit-row fieldset.comment-reply {
+       font-size: inherit;
+       line-height: inherit;
+}
+
+#replyrow legend {
+       margin: 0;
+       padding: .2em 5px 0;
+       font-size: 13px;
+       line-height: 1.4;
+       font-weight: 600;
+}
+
+#replyrow.inline-edit-row label {
+       display: inline;
+       vertical-align: baseline;
+       line-height: inherit;
 }
 
 #edithead .inside,
@@ -260,8 +278,8 @@ th .comment-grey-bubble {
 }
 
 th .comment-grey-bubble:before {
-       content: '\f101';
-       font: normal 20px/.5 'dashicons';
+       content: "\f101";
+       font: normal 20px/.5 dashicons;
        speak: none;
        display: inline-block;
        padding: 0;
@@ -381,6 +399,10 @@ table.media .column-title .filename {
        width: 20%;
 }
 
+#comments-form .fixed .column-date {
+       width: 14%;
+}
+
 #commentsdiv.postbox .inside {
        margin: 0;
        padding: 0;
@@ -424,12 +446,12 @@ table.media .column-title .filename {
 }
 
 #commentsdiv #edithead .inside input {
-       vertical-align: middle;
        width: 160px;
 }
 
 .sorting-indicator {
-       display: none;
+       display: block;
+       visibility: hidden;
        width: 10px;
        height: 4px;
        margin-top: 8px;
@@ -437,8 +459,8 @@ table.media .column-title .filename {
 }
 
 .sorting-indicator:before {
-       content: '\f142';
-       font: normal 20px/1 'dashicons';
+       content: "\f142";
+       font: normal 20px/1 dashicons;
        speak: none;
        display: inline-block;
        padding: 0;
@@ -462,13 +484,13 @@ table.media .column-title .filename {
 th.sorted.asc .sorting-indicator:before,
 th.desc:hover span.sorting-indicator:before,
 th.desc a:focus span.sorting-indicator:before {
-       content: '\f142';
+       content: "\f142";
 }
 
 th.sorted.desc .sorting-indicator:before,
 th.asc:hover span.sorting-indicator:before,
 th.asc a:focus span.sorting-indicator:before {
-       content: '\f140';
+       content: "\f140";
 }
 
 .wp-list-table .toggle-row {
@@ -515,8 +537,8 @@ th.asc a:focus span.sorting-indicator:before {
        display: block;
        padding: 1px 0 1px 2px;
        color: #666;
-       content: '\f140';
-       font: normal 20px/1 'dashicons';
+       content: "\f140";
+       font: normal 20px/1 dashicons;
        line-height: 1;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -524,7 +546,7 @@ th.asc a:focus span.sorting-indicator:before {
 }
 
 .wp-list-table .is-expanded .toggle-row:before {
-       content: '\f142';
+       content: "\f142";
 }
 
 tr.wp-locked .locked-indicator {
@@ -535,10 +557,10 @@ tr.wp-locked .locked-indicator {
 
 tr.wp-locked .locked-indicator:before {
        color: #82878c;
-       content: '\f160';
+       content: "\f160";
        display: inline-block;
        float: right;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        vertical-align: middle;
        margin-right: 0;
@@ -590,7 +612,7 @@ th.sortable a,
 th.sorted a {
        display: block;
        overflow: hidden;
-       padding: 7px 10px 8px 7px;
+       padding: 8px;
 }
 
 .fixed .column-comments.sortable a,
@@ -609,7 +631,7 @@ th.desc:hover span.sorting-indicator,
 th.desc a:focus span.sorting-indicator,
 th.asc:hover span.sorting-indicator,
 th.asc a:focus span.sorting-indicator {
-       display: block;
+       visibility: visible;
 }
 
 /* Bulk Actions */
@@ -770,7 +792,7 @@ classes exist in paginate_links() but not seen in list table output. */
 .view-switch a:before {
        color: #b4b9be;
        display: inline-block;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        vertical-align: middle;
        -webkit-font-smoothing: antialiased;
@@ -787,15 +809,15 @@ classes exist in paginate_links() but not seen in list table output. */
 }
 
 .view-switch .view-list:before {
-       content: '\f163';
+       content: "\f163";
 }
 
 .view-switch .view-excerpt:before {
-       content: '\f164';
+       content: "\f164";
 }
 
 .view-switch .view-grid:before {
-       content: '\f509';
+       content: "\f509";
 }
 
 .filter {
@@ -855,15 +877,27 @@ p.pagenav {
 .row-actions {
        color: #ddd;
        font-size: 13px;
-       visibility: hidden;
        padding: 2px 0 0;
+       position: relative;
+       right: -9999em;
 }
 
+/* ticket #34150 */
+.rtl .row-actions a {
+       display: inline-block;
+}
+
+.row-actions .network_only,
+.row-actions .network_active {
+       color: #000;
+}
+
+.no-js .row-actions,
 tr:hover .row-actions,
 .mobile .row-actions,
 .row-actions.visible,
 div.comment-item:hover .row-actions {
-       visibility: visible;
+       position: static;
 }
 
 /* deprecated */
@@ -961,11 +995,19 @@ tr.inline-edit-row td,
 }
 
 /*     Positioning */
-.inline-edit-row h4 {
-       margin: .2em 0;
-       padding: 0;
+
+/* Needs higher specificity for the padding */
+#the-list .inline-edit-row .inline-edit-legend {
+       margin: 0;
+       padding: 0.2em 0.5em 0;
        line-height: 2.5;
+       font-weight: 600;
 }
+
+#the-list #bulk-edit.inline-edit-row .inline-edit-legend {
+       padding: 0.2em 0.5em;
+}
+
 .inline-edit-row fieldset span.title,
 .inline-edit-row fieldset span.checkbox-title {
        margin: 0;
@@ -1055,7 +1097,7 @@ tr.inline-edit-row td,
 }
 
 /*     Styling */
-.inline-edit-row h4 {
+.inline-edit-row .inline-edit-legend {
        text-transform: uppercase;
 }
 
@@ -1342,7 +1384,7 @@ tr.active.update + tr.plugin-update-tr .plugin-update {
 .plugin-card .install-now:before {
        color: #d54e21;
        display: inline-block;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -1351,7 +1393,7 @@ tr.active.update + tr.plugin-update-tr .plugin-update {
 
 .plugin-update-tr .update-message:before,
 .plugin-card .update-now:before {
-       content: '\f463';
+       content: "\f463";
 }
 
 .plugin-update-tr .update-message:before {
@@ -1365,7 +1407,7 @@ tr.active.update + tr.plugin-update-tr .plugin-update {
 
 .plugin-update-tr .updating-message:before,
 .plugin-card .updating-message:before {
-       content: '\f463';
+       content: "\f463";
        -webkit-animation: rotation 2s infinite linear;
        animation: rotation 2s infinite linear;
 }
@@ -1395,7 +1437,7 @@ tr.active.update + tr.plugin-update-tr .plugin-update {
 .plugin-update-tr .updated-message:before,
 .plugin-card .updated-message:before {
        color: #79ba49;
-       content: '\f147';
+       content: "\f147";
 }
 
 .wp-list-table.plugins tbody tr.plugin-update-tr td.plugin-update {
@@ -1414,11 +1456,11 @@ tr.active + tr.plugin-update-tr:not(.updated) .plugin-update .update-message {
        background-color: #fcf3ef;
 }
 
-.plugin-install-php h3 {
+.plugin-install-php h2 {
        clear: both;
 }
 
-.plugin-install-php h4 {
+.plugin-install-php h3 {
        margin: 2.5em 0 8px;
 }
 
@@ -1495,7 +1537,7 @@ div.action-links,
        margin: 0; /* Override existing margins */
 }
 
-.plugin-card h4 {
+.plugin-card h3 {
        margin: 0 0 12px;
        font-size: 18px;
        line-height: 1.3;
@@ -1538,6 +1580,21 @@ div.action-links,
        display: inline;
 }
 
+.plugin-card-update-failed .update-now {
+       font-weight: 600;
+}
+
+.plugin-card-update-failed .notice-error {
+       margin: 0;
+       padding-right: 16px;
+       -webkit-box-shadow: 0 -1px 0 #dedede;
+       box-shadow: 0 -1px 0 #dedede;
+}
+
+.plugin-card-update-failed .plugin-card-bottom {
+       display: none;
+}
+
 .plugin-card .column-rating {
        line-height: 23px;
 }
@@ -1565,7 +1622,7 @@ div.action-links,
 }
 
 .plugin-card .column-compatibility span:before {
-       font: normal 20px/.5 'dashicons';
+       font: normal 20px/.5 dashicons;
        speak: none;
        display: inline-block;
        padding: 0;
@@ -1580,11 +1637,11 @@ div.action-links,
 }
 
 .plugin-card .compatibility-incompatible:before {
-       content: '\f158';
+       content: "\f158";
 }
 
 .plugin-card .compatibility-compatible:before {
-       content: '\f147';
+       content: "\f147";
 }
 
 .plugin-icon {
@@ -1596,11 +1653,6 @@ div.action-links,
        margin: 0 0 20px 20px;
 }
 
-.plugin-icon img {
-       width: 128px;
-       height: 128px;
-}
-
 .no-plugin-results {
        color: #999;
        font-size: 18px;
@@ -1612,15 +1664,19 @@ div.action-links,
 
 /* ms */
 /* Background Color for Site Status */
+.wp-list-table .site-deleted,
 .wp-list-table tr.site-deleted {
        background: #ff8573;
 }
+.wp-list-table .site-spammed,
 .wp-list-table tr.site-spammed {
        background: #faafaa;
 }
+.wp-list-table .site-archived,
 .wp-list-table tr.site-archived {
        background: #ffebe8;
 }
+.wp-list-table .site-mature,
 .wp-list-table tr.site-mature {
        background: #fecac2;
 }
@@ -1667,6 +1723,10 @@ div.action-links,
        .plugin-card .desc p:first-of-type {
                margin-top: 0;
        }
+
+       .fixed .column-date {
+               width: 14%;
+       }
 }
 
 @media screen and ( max-width: 782px ) {
@@ -1742,7 +1802,7 @@ div.action-links,
 
        .tablenav-pages .pagination-links a,
        .tablenav-pages-navspan {
-               padding: 9px 16px 12px;
+               padding: 9px 11px 12px;
                font-size: 18px;
        }
 
@@ -1898,8 +1958,9 @@ div.action-links,
                color: #dc3232;
        }
 
-       .widefat thead .check-column, .widefat tfoot .check-column {
-               padding: 10px 0 10px;
+       .widefat thead td.check-column,
+       .widefat tfoot td.check-column {
+               padding-top: 10px;
        }
 
        .widefat * {
@@ -2002,6 +2063,7 @@ div.action-links,
        /* Updates */
        #wpbody-content #update-themes-table .plugin-title {
                width: auto;
+               white-space: normal;
        }
 
        /* Links */
@@ -2067,7 +2129,7 @@ div.action-links,
 
        /* mimic the checkbox th */
        .plugins .plugin-update-tr:before {
-               content: '';
+               content: "";
                display: table-cell;
        }
 
index f6fdfcefe601cec006e33ed8f1d1adc38a795c95..f13d9599f50902aabe024397291dc9483bc6d774 100644 (file)
        text-align: center;
 }
 
+.column-response .post-com-count-no-pending,
+.column-comments .post-com-count-no-pending {
+       display: none;
+}
+
 /* comments */
 
 .commentlist li {
 
 #replysubmit {
        margin: 0;
-       padding: 0 5px 3px;
+       padding: 5px 7px 10px;
+       overflow: hidden;
        text-align: center;
 }
 
        text-align: center;
 }
 
-#replyrow h5 {
-       margin: .2em 0 0;
-       padding: 0 5px;
-       line-height: 1.4em;
-       font-size: 1em;
+#replyrow.inline-edit-row fieldset.comment-reply {
+       font-size: inherit;
+       line-height: inherit;
+}
+
+#replyrow legend {
+       margin: 0;
+       padding: .2em 5px 0;
+       font-size: 13px;
+       line-height: 1.4;
+       font-weight: 600;
+}
+
+#replyrow.inline-edit-row label {
+       display: inline;
+       vertical-align: baseline;
+       line-height: inherit;
 }
 
 #edithead .inside,
@@ -260,8 +278,8 @@ th .comment-grey-bubble {
 }
 
 th .comment-grey-bubble:before {
-       content: '\f101';
-       font: normal 20px/.5 'dashicons';
+       content: "\f101";
+       font: normal 20px/.5 dashicons;
        speak: none;
        display: inline-block;
        padding: 0;
@@ -381,6 +399,10 @@ table.media .column-title .filename {
        width: 20%;
 }
 
+#comments-form .fixed .column-date {
+       width: 14%;
+}
+
 #commentsdiv.postbox .inside {
        margin: 0;
        padding: 0;
@@ -424,12 +446,12 @@ table.media .column-title .filename {
 }
 
 #commentsdiv #edithead .inside input {
-       vertical-align: middle;
        width: 160px;
 }
 
 .sorting-indicator {
-       display: none;
+       display: block;
+       visibility: hidden;
        width: 10px;
        height: 4px;
        margin-top: 8px;
@@ -437,8 +459,8 @@ table.media .column-title .filename {
 }
 
 .sorting-indicator:before {
-       content: '\f142';
-       font: normal 20px/1 'dashicons';
+       content: "\f142";
+       font: normal 20px/1 dashicons;
        speak: none;
        display: inline-block;
        padding: 0;
@@ -462,13 +484,13 @@ table.media .column-title .filename {
 th.sorted.asc .sorting-indicator:before,
 th.desc:hover span.sorting-indicator:before,
 th.desc a:focus span.sorting-indicator:before {
-       content: '\f142';
+       content: "\f142";
 }
 
 th.sorted.desc .sorting-indicator:before,
 th.asc:hover span.sorting-indicator:before,
 th.asc a:focus span.sorting-indicator:before {
-       content: '\f140';
+       content: "\f140";
 }
 
 .wp-list-table .toggle-row {
@@ -515,8 +537,8 @@ th.asc a:focus span.sorting-indicator:before {
        display: block;
        padding: 1px 2px 1px 0;
        color: #666;
-       content: '\f140';
-       font: normal 20px/1 'dashicons';
+       content: "\f140";
+       font: normal 20px/1 dashicons;
        line-height: 1;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -524,7 +546,7 @@ th.asc a:focus span.sorting-indicator:before {
 }
 
 .wp-list-table .is-expanded .toggle-row:before {
-       content: '\f142';
+       content: "\f142";
 }
 
 tr.wp-locked .locked-indicator {
@@ -535,10 +557,10 @@ tr.wp-locked .locked-indicator {
 
 tr.wp-locked .locked-indicator:before {
        color: #82878c;
-       content: '\f160';
+       content: "\f160";
        display: inline-block;
        float: left;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        vertical-align: middle;
        margin-left: 0;
@@ -590,7 +612,7 @@ th.sortable a,
 th.sorted a {
        display: block;
        overflow: hidden;
-       padding: 7px 7px 8px 10px;
+       padding: 8px;
 }
 
 .fixed .column-comments.sortable a,
@@ -609,7 +631,7 @@ th.desc:hover span.sorting-indicator,
 th.desc a:focus span.sorting-indicator,
 th.asc:hover span.sorting-indicator,
 th.asc a:focus span.sorting-indicator {
-       display: block;
+       visibility: visible;
 }
 
 /* Bulk Actions */
@@ -770,7 +792,7 @@ classes exist in paginate_links() but not seen in list table output. */
 .view-switch a:before {
        color: #b4b9be;
        display: inline-block;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        vertical-align: middle;
        -webkit-font-smoothing: antialiased;
@@ -787,15 +809,15 @@ classes exist in paginate_links() but not seen in list table output. */
 }
 
 .view-switch .view-list:before {
-       content: '\f163';
+       content: "\f163";
 }
 
 .view-switch .view-excerpt:before {
-       content: '\f164';
+       content: "\f164";
 }
 
 .view-switch .view-grid:before {
-       content: '\f509';
+       content: "\f509";
 }
 
 .filter {
@@ -855,15 +877,27 @@ p.pagenav {
 .row-actions {
        color: #ddd;
        font-size: 13px;
-       visibility: hidden;
        padding: 2px 0 0;
+       position: relative;
+       left: -9999em;
 }
 
+/* ticket #34150 */
+.rtl .row-actions a {
+       display: inline-block;
+}
+
+.row-actions .network_only,
+.row-actions .network_active {
+       color: #000;
+}
+
+.no-js .row-actions,
 tr:hover .row-actions,
 .mobile .row-actions,
 .row-actions.visible,
 div.comment-item:hover .row-actions {
-       visibility: visible;
+       position: static;
 }
 
 /* deprecated */
@@ -961,11 +995,19 @@ tr.inline-edit-row td,
 }
 
 /*     Positioning */
-.inline-edit-row h4 {
-       margin: .2em 0;
-       padding: 0;
+
+/* Needs higher specificity for the padding */
+#the-list .inline-edit-row .inline-edit-legend {
+       margin: 0;
+       padding: 0.2em 0.5em 0;
        line-height: 2.5;
+       font-weight: 600;
 }
+
+#the-list #bulk-edit.inline-edit-row .inline-edit-legend {
+       padding: 0.2em 0.5em;
+}
+
 .inline-edit-row fieldset span.title,
 .inline-edit-row fieldset span.checkbox-title {
        margin: 0;
@@ -1055,7 +1097,7 @@ tr.inline-edit-row td,
 }
 
 /*     Styling */
-.inline-edit-row h4 {
+.inline-edit-row .inline-edit-legend {
        text-transform: uppercase;
 }
 
@@ -1342,7 +1384,7 @@ tr.active.update + tr.plugin-update-tr .plugin-update {
 .plugin-card .install-now:before {
        color: #d54e21;
        display: inline-block;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -1351,7 +1393,7 @@ tr.active.update + tr.plugin-update-tr .plugin-update {
 
 .plugin-update-tr .update-message:before,
 .plugin-card .update-now:before {
-       content: '\f463';
+       content: "\f463";
 }
 
 .plugin-update-tr .update-message:before {
@@ -1365,7 +1407,7 @@ tr.active.update + tr.plugin-update-tr .plugin-update {
 
 .plugin-update-tr .updating-message:before,
 .plugin-card .updating-message:before {
-       content: '\f463';
+       content: "\f463";
        -webkit-animation: rotation 2s infinite linear;
        animation: rotation 2s infinite linear;
 }
@@ -1395,7 +1437,7 @@ tr.active.update + tr.plugin-update-tr .plugin-update {
 .plugin-update-tr .updated-message:before,
 .plugin-card .updated-message:before {
        color: #79ba49;
-       content: '\f147';
+       content: "\f147";
 }
 
 .wp-list-table.plugins tbody tr.plugin-update-tr td.plugin-update {
@@ -1414,11 +1456,11 @@ tr.active + tr.plugin-update-tr:not(.updated) .plugin-update .update-message {
        background-color: #fcf3ef;
 }
 
-.plugin-install-php h3 {
+.plugin-install-php h2 {
        clear: both;
 }
 
-.plugin-install-php h4 {
+.plugin-install-php h3 {
        margin: 2.5em 0 8px;
 }
 
@@ -1495,7 +1537,7 @@ div.action-links,
        margin: 0; /* Override existing margins */
 }
 
-.plugin-card h4 {
+.plugin-card h3 {
        margin: 0 0 12px;
        font-size: 18px;
        line-height: 1.3;
@@ -1538,6 +1580,21 @@ div.action-links,
        display: inline;
 }
 
+.plugin-card-update-failed .update-now {
+       font-weight: 600;
+}
+
+.plugin-card-update-failed .notice-error {
+       margin: 0;
+       padding-left: 16px;
+       -webkit-box-shadow: 0 -1px 0 #dedede;
+       box-shadow: 0 -1px 0 #dedede;
+}
+
+.plugin-card-update-failed .plugin-card-bottom {
+       display: none;
+}
+
 .plugin-card .column-rating {
        line-height: 23px;
 }
@@ -1565,7 +1622,7 @@ div.action-links,
 }
 
 .plugin-card .column-compatibility span:before {
-       font: normal 20px/.5 'dashicons';
+       font: normal 20px/.5 dashicons;
        speak: none;
        display: inline-block;
        padding: 0;
@@ -1580,11 +1637,11 @@ div.action-links,
 }
 
 .plugin-card .compatibility-incompatible:before {
-       content: '\f158';
+       content: "\f158";
 }
 
 .plugin-card .compatibility-compatible:before {
-       content: '\f147';
+       content: "\f147";
 }
 
 .plugin-icon {
@@ -1596,11 +1653,6 @@ div.action-links,
        margin: 0 20px 20px 0;
 }
 
-.plugin-icon img {
-       width: 128px;
-       height: 128px;
-}
-
 .no-plugin-results {
        color: #999;
        font-size: 18px;
@@ -1612,15 +1664,19 @@ div.action-links,
 
 /* ms */
 /* Background Color for Site Status */
+.wp-list-table .site-deleted,
 .wp-list-table tr.site-deleted {
        background: #ff8573;
 }
+.wp-list-table .site-spammed,
 .wp-list-table tr.site-spammed {
        background: #faafaa;
 }
+.wp-list-table .site-archived,
 .wp-list-table tr.site-archived {
        background: #ffebe8;
 }
+.wp-list-table .site-mature,
 .wp-list-table tr.site-mature {
        background: #fecac2;
 }
@@ -1667,6 +1723,10 @@ div.action-links,
        .plugin-card .desc p:first-of-type {
                margin-top: 0;
        }
+
+       .fixed .column-date {
+               width: 14%;
+       }
 }
 
 @media screen and ( max-width: 782px ) {
@@ -1742,7 +1802,7 @@ div.action-links,
 
        .tablenav-pages .pagination-links a,
        .tablenav-pages-navspan {
-               padding: 9px 16px 12px;
+               padding: 9px 11px 12px;
                font-size: 18px;
        }
 
@@ -1898,8 +1958,9 @@ div.action-links,
                color: #dc3232;
        }
 
-       .widefat thead .check-column, .widefat tfoot .check-column {
-               padding: 10px 0 10px;
+       .widefat thead td.check-column,
+       .widefat tfoot td.check-column {
+               padding-top: 10px;
        }
 
        .widefat * {
@@ -2002,6 +2063,7 @@ div.action-links,
        /* Updates */
        #wpbody-content #update-themes-table .plugin-title {
                width: auto;
+               white-space: normal;
        }
 
        /* Links */
@@ -2067,7 +2129,7 @@ div.action-links,
 
        /* mimic the checkbox th */
        .plugins .plugin-update-tr:before {
-               content: '';
+               content: "";
                display: table-cell;
        }
 
index 7bb3692535d7a2faf7687d328f476050c0d7a666..4e4a507234edb251b42b76f97cbd4ecfaf8a639f 100644 (file)
@@ -58,19 +58,18 @@ p {
        line-height: 1.5;
 }
 
-.login .message {
+.login .message,
+.login #login_error {
        border-right: 4px solid #00a0d2;
-       padding: 1px 12px;
+       padding: 12px;
+       margin-right: 0;
        background-color: #fff;
        -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
        box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
 }
 
 .login #login_error {
-       border-right: 4px solid #dd3d36;
-       background: #fff;
-       -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
-       box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
+       border-right-color: #dc3232;
 }
 
 #loginform p.submit,
@@ -156,12 +155,6 @@ p {
        margin: auto;
 }
 
-#login_error,
-.login .message {
-       margin-right: 0;
-       padding: 12px;
-}
-
 .login #nav,
 .login #backtoblog {
        font-size: 13px;
@@ -173,7 +166,7 @@ p {
 }
 
 #backtoblog {
-       margin: 16px 0 0 0;
+       margin: 16px 0;
 }
 
 .login #nav a,
@@ -231,9 +224,7 @@ p {
        padding: 20px 0;
 }
 
-.mobile #login form,
-.mobile #login .message,
-.mobile #login_error {
+.mobile #login form {
        margin-right: 0;
 }
 
@@ -276,7 +267,7 @@ body.interim-login {
 
        .interim-login input[type=checkbox]:checked:before {
                width: 16px;
-               font: normal 21px/1 'dashicons';
+               font: normal 21px/1 dashicons;
                margin: -3px -4px 0 0;
        }
 }
index eca3b416d510cfe91de7ff7fbbea6fa6a0fd3a20..6a9f8f91a89630253c281469371aa3d54522f13f 100644 (file)
@@ -1 +1 @@
-.meta-box-sortables select,p.submit{max-width:100%}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=text],input[type=search],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=text]:focus,input[type=search]:focus,input[type=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=password]:focus,input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=url],input[type=email]{direction:ltr}input[type=radio],input[type=checkbox]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 0 0 4px;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=radio],.wp-admin p input[type=checkbox],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-left:4px;line-height:10px}input[type=radio]:checked:before,input[type=checkbox]:checked:before{float:right;display:inline-block;vertical-align:middle;width:16px;font:400 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:'\f147';margin:-3px -4px 0 0;color:#1e8cbe}input[type=radio]:checked:before{content:'\2022';text-indent:-9999px;-webkit-border-radius:50px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=radio],input[type=checkbox]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4}.wp-admin input[type=file]{padding:3px 0}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin-right:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;-webkit-box-shadow:none;box-shadow:none}input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before,input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before{opacity:.7}.wp-admin select{padding:2px;line-height:28px;height:28px;vertical-align:middle}.wp-admin .button-cancel{padding:0 5px;line-height:2}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:right;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:left}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}#doaction,#doaction2,#post-query-submit{margin:1px 0 0 8px}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:right;margin-left:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-right:1em}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,fieldset label,label{vertical-align:middle}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:'\f173';display:inline-block;font:400 20px/1 dashicons;speak:none;right:-1px;padding:0 0 0 5px;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 1px 5px 5px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result,.color-option{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.indicator-hint{padding-top:8px}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:left;margin:0}.network-admin.themes-php p.search-box{clear:right}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:right;height:28px;margin:0 0 0 4px}input[type=text].ui-autocomplete-loading,input[type=email].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:left center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:right}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:right;padding:20px 0 20px 10px;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px;cursor:pointer}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}.login form,.login h1 a{font-weight:400;overflow:hidden}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;-webkit-transform:skew(-20deg) rotate(-6deg);-ms-transform:skew(-20deg) rotate(-6deg);transform:skew(-20deg) rotate(-6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(-20deg) rotate(-9deg);-ms-transform:skew(-20deg) rotate(-9deg);transform:skew(-20deg) rotate(-9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 9px 8px 12px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:'\f157';position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#777}#local-time,#utc-time{padding-right:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:100%}.request-filesystem-credentials-dialog{display:none}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:right;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-right:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:left}#request-filesystem-credentials-dialog .button:not(:last-child),.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=search],input[type=password],input[type=email],input[type=number]{-webkit-appearance:none;padding:6px 10px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:400 30px/1 Dashicons;margin:-3px -5px}input[type=radio],input[type=checkbox]{height:25px;width:25px}.wp-admin p input[type=radio],.wp-admin p input[type=checkbox]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=text],.form-table td input[type=password],.form-table td input[type=email],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:left;margin:-30px 0 0 3px}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=text].small-text,input[type=search].small-text,input[type=password].small-text,input[type=number].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-right:0}.form-table.permalink-structure td code{margin-right:32px}.form-table.permalink-structure td input[type=text]{margin-right:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-left:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;left:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}}body,html{background:#f1f1f1}.locale-he-il em,.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{font-style:normal}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@media only screen and (max-height:480px){.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;right:0}}@media screen and (max-width:600px){.color-option{width:49%}}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-left:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:0}}body,html{height:100%;margin:0;padding:0}body{min-width:0;color:#444;font-family:"Open Sans",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;outline:0}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}p{line-height:1.5}.login .message{border-right:4px solid #00a0d2;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error,.login .message{-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error{border-right:4px solid #dd3d36;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login form{margin-top:20px;margin-right:0;padding:26px 24px 46px;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}.login form .forgetmenot{font-weight:400;float:right;margin-bottom:0}.login .button-primary{float:left}#login form p{margin-bottom:0}#login form p.submit{margin:0;padding:0}.login label{color:#777;font-size:14px}.login #backtoblog a,.login #nav a,.login h1 a{text-decoration:none;color:#999}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1{text-align:center}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;height:84px;font-size:20px;line-height:1.3em;margin:0 auto 25px;padding:0;width:84px;text-indent:-9999px;outline:0;display:block}#login{width:320px;padding:8% 0 0;margin:auto}#login_error,.login .message{margin-right:0;padding:12px}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0 0}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#00a0d2}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#124964}.login form .input,.login input[type=text]{font-size:24px;width:100%;padding:3px;margin:2px 0 16px 6px}.login form .input,.login form input[type=checkbox],.login input[type=text]{background:#fbfbfb}.ie7 .login form .input,.ie8 .login form .input{font-family:sans-serif}.login-action-rp input[type=text]{-webkit-box-shadow:none;box-shadow:none;margin:0}.login #pass-strength-result{font-weight:600;margin:-1px 0 16px 5px;padding:6px 5px;text-align:center;width:100%}.mobile #login{padding:20px 0}.mobile #login .message,.mobile #login form,.mobile #login_error{margin-right:0}.mobile #login #backtoblog,.mobile #login #nav{margin-right:8px}body.interim-login{height:auto}.interim-login #login{padding:0;margin:5px auto 20px}.interim-login.login h1 a{width:auto}.interim-login #login_error,.interim-login.login .message{margin:0 0 16px}.interim-login.login form{margin:0}@-ms-viewport{width:device-width}@media screen and (max-width:782px){.interim-login input[type=checkbox]{height:16px;width:16px}.interim-login input[type=checkbox]:checked:before{width:16px;font:400 21px/1 dashicons;margin:-3px -4px 0 0}}
\ No newline at end of file
+#pass-strength-result,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.meta-box-sortables select,p.submit{max-width:100%}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{box-sizing:border-box}input[type=text],input[type=search],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:50ms border-color ease-in-out;transition:50ms border-color ease-in-out}input[type=text]:focus,input[type=search]:focus,input[type=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=password]:focus,input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=url],input[type=email]{direction:ltr}input[type=number]{line-height:inherit}input[type=radio],input[type=checkbox]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 0 0 4px;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=radio],.wp-admin p input[type=checkbox],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-left:4px;line-height:10px}input[type=radio]:checked:before,input[type=checkbox]:checked:before{float:right;display:inline-block;vertical-align:middle;width:16px;font:400 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:"\f147";margin:-3px -4px 0 0;color:#1e8cbe}input[type=radio]:checked:before{content:"\2022";text-indent:-9999px;-webkit-border-radius:50px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=radio],input[type=checkbox]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4;resize:vertical}.wp-admin input[type=file]{padding:3px 0}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:400 20px/1 dashicons;color:#dc3232;margin-right:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;-webkit-box-shadow:none;box-shadow:none}input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before,input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before{opacity:.7}.wp-admin select{padding:2px;line-height:28px;height:28px}.wp-admin .button-cancel{padding:0 5px;line-height:2}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:right;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:left}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input,#pass-strength-result,.login h1{text-align:center}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 0 0 8px}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:right;margin-left:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-right:1em}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:"\f173";display:inline-block;font:400 20px/1 dashicons;speak:none;right:-1px;padding:0 0 0 5px;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 1px 5px 5px;padding:3px 5px;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.indicator-hint{padding-top:8px}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:left;margin:0}.network-admin.themes-php p.search-box{clear:right}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:right;height:28px;margin:0 0 0 4px}input[type=text].ui-autocomplete-loading,input[type=email].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:left center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:right}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:right;padding:20px 0 20px 10px;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:3px;cursor:pointer}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}.login form,.login h1 a{overflow:hidden;font-weight:400}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;-webkit-transform:skew(-20deg) rotate(-6deg);-ms-transform:skew(-20deg) rotate(-6deg);transform:skew(-20deg) rotate(-6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(-20deg) rotate(-9deg);-ms-transform:skew(-20deg) rotate(-9deg);transform:skew(-20deg) rotate(-9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 9px 8px 12px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#777}#local-time,#utc-time{padding-right:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:100%}.request-filesystem-credentials-dialog{display:none}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:right;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-right:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:left}.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}#request-filesystem-credentials-dialog .button:not(:last-child){margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=search],input[type=password],input[type=email],input[type=number]{-webkit-appearance:none;padding:6px 10px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:400 30px/1 dashicons;margin:-3px -5px}input[type=radio],input[type=checkbox]{height:25px;width:25px}.wp-admin p input[type=radio],.wp-admin p input[type=checkbox]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=text],.form-table td input[type=password],.form-table td input[type=email],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:left;margin:-30px 0 0 3px}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=text].small-text,input[type=search].small-text,input[type=password].small-text,input[type=number].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-right:0}.form-table.permalink-structure td code{margin-right:32px}.form-table.permalink-structure td input[type=text]{margin-right:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-left:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;left:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}}.locale-he-il em,.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{font-style:normal}body,html{background:#f1f1f1}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@media only screen and (max-height:480px){.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;right:0}}@media screen and (max-width:600px){.color-option{width:49%}}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-right:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-left:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:0}}body,html{height:100%;margin:0;padding:0}body{min-width:0;color:#444;font-family:"Open Sans",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;outline:0}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}p{line-height:1.5}.login #login_error,.login .message{border-right:4px solid #00a0d2;padding:12px;margin-right:0;background-color:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error{border-right-color:#dc3232}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login form{margin-top:20px;margin-right:0;padding:26px 24px 46px;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}.login form .forgetmenot{font-weight:400;float:right;margin-bottom:0}.login .button-primary{float:left}#login form p{margin-bottom:0}#login form p.submit{margin:0;padding:0}.login label{color:#777;font-size:14px}.login #backtoblog a,.login #nav a,.login h1 a{text-decoration:none;color:#999}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;height:84px;font-size:20px;line-height:1.3em;margin:0 auto 25px;padding:0;width:84px;text-indent:-9999px;outline:0;display:block}#login{width:320px;padding:8% 0 0;margin:auto}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#00a0d2}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#124964}.login form .input,.login input[type=text]{font-size:24px;width:100%;padding:3px;margin:2px 0 16px 6px}.login form .input,.login form input[type=checkbox],.login input[type=text]{background:#fbfbfb}.ie7 .login form .input,.ie8 .login form .input{font-family:sans-serif}.login-action-rp input[type=text]{-webkit-box-shadow:none;box-shadow:none;margin:0}.login #pass-strength-result{font-weight:600;margin:-1px 0 16px 5px;padding:6px 5px;text-align:center;width:100%}.mobile #login{padding:20px 0}.mobile #login form{margin-right:0}.mobile #login #backtoblog,.mobile #login #nav{margin-right:8px}body.interim-login{height:auto}.interim-login #login{padding:0;margin:5px auto 20px}.interim-login.login h1 a{width:auto}.interim-login #login_error,.interim-login.login .message{margin:0 0 16px}.interim-login.login form{margin:0}@-ms-viewport{width:device-width}@media screen and (max-width:782px){.interim-login input[type=checkbox]{height:16px;width:16px}.interim-login input[type=checkbox]:checked:before{width:16px;font:400 21px/1 dashicons;margin:-3px -4px 0 0}}
\ No newline at end of file
index 6c4d7024fbc88b8b782342d39f6d5dcc3f1f0b4e..750921bb4ec00d51d2183f3b38d3be9fe6be7474 100644 (file)
@@ -58,19 +58,18 @@ p {
        line-height: 1.5;
 }
 
-.login .message {
+.login .message,
+.login #login_error {
        border-left: 4px solid #00a0d2;
-       padding: 1px 12px;
+       padding: 12px;
+       margin-left: 0;
        background-color: #fff;
        -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
        box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
 }
 
 .login #login_error {
-       border-left: 4px solid #dd3d36;
-       background: #fff;
-       -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
-       box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
+       border-left-color: #dc3232;
 }
 
 #loginform p.submit,
@@ -156,12 +155,6 @@ p {
        margin: auto;
 }
 
-#login_error,
-.login .message {
-       margin-left: 0;
-       padding: 12px;
-}
-
 .login #nav,
 .login #backtoblog {
        font-size: 13px;
@@ -173,7 +166,7 @@ p {
 }
 
 #backtoblog {
-       margin: 16px 0 0 0;
+       margin: 16px 0;
 }
 
 .login #nav a,
@@ -231,9 +224,7 @@ p {
        padding: 20px 0;
 }
 
-.mobile #login form,
-.mobile #login .message,
-.mobile #login_error {
+.mobile #login form {
        margin-left: 0;
 }
 
@@ -276,7 +267,7 @@ body.interim-login {
 
        .interim-login input[type=checkbox]:checked:before {
                width: 16px;
-               font: normal 21px/1 'dashicons';
+               font: normal 21px/1 dashicons;
                margin: -3px 0 0 -4px;
        }
 }
index 55c1097963000b469db67dc7313cbb7aaa28b477..1a7c591002664f25524ba154d4505a33717e0648 100644 (file)
@@ -1 +1 @@
-.meta-box-sortables select,p.submit{max-width:100%}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=text],input[type=search],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=text]:focus,input[type=search]:focus,input[type=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=password]:focus,input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=url],input[type=email]{direction:ltr}input[type=radio],input[type=checkbox]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=radio],.wp-admin p input[type=checkbox],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-right:4px;line-height:10px}input[type=radio]:checked:before,input[type=checkbox]:checked:before{float:left;display:inline-block;vertical-align:middle;width:16px;font:400 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:'\f147';margin:-3px 0 0 -4px;color:#1e8cbe}input[type=radio]:checked:before{content:'\2022';text-indent:-9999px;-webkit-border-radius:50px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=radio],input[type=checkbox]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4}.wp-admin input[type=file]{padding:3px 0}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin-left:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;-webkit-box-shadow:none;box-shadow:none}input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before,input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before{opacity:.7}.wp-admin select{padding:2px;line-height:28px;height:28px;vertical-align:middle}.wp-admin .button-cancel{padding:0 5px;line-height:2}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:left;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:right}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,fieldset label,label{vertical-align:middle}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:'\f173';display:inline-block;font:400 20px/1 dashicons;speak:none;left:-1px;padding:0 5px 0 0;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 1px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result,.color-option{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.indicator-hint{padding-top:8px}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:right;margin:0}.network-admin.themes-php p.search-box{clear:left}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:left;height:28px;margin:0 4px 0 0}input[type=text].ui-autocomplete-loading,input[type=email].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:right center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:left}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px;cursor:pointer}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}.login form,.login h1 a{font-weight:400;overflow:hidden}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;-webkit-transform:skew(20deg) rotate(6deg);-ms-transform:skew(20deg) rotate(6deg);transform:skew(20deg) rotate(6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(20deg) rotate(9deg);-ms-transform:skew(20deg) rotate(9deg);transform:skew(20deg) rotate(9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 12px 8px 9px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:'\f157';position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#777}#local-time,#utc-time{padding-left:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:100%}.request-filesystem-credentials-dialog{display:none}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:left;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-left:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:right}#request-filesystem-credentials-dialog .button:not(:last-child),.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=search],input[type=password],input[type=email],input[type=number]{-webkit-appearance:none;padding:6px 10px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:400 30px/1 Dashicons;margin:-3px -5px}input[type=radio],input[type=checkbox]{height:25px;width:25px}.wp-admin p input[type=radio],.wp-admin p input[type=checkbox]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=text],.form-table td input[type=password],.form-table td input[type=email],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:right;margin:-30px 3px 0 0}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=text].small-text,input[type=search].small-text,input[type=password].small-text,input[type=number].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-left:0}.form-table.permalink-structure td code{margin-left:32px}.form-table.permalink-structure td input[type=text]{margin-left:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-right:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;right:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}}body,html{background:#f1f1f1}.locale-he-il em,.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{font-style:normal}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@media only screen and (max-height:480px){.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;left:0}}@media screen and (max-width:600px){.color-option{width:49%}}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-right:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:0}}body,html{height:100%;margin:0;padding:0}body{min-width:0;color:#444;font-family:"Open Sans",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;outline:0}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}p{line-height:1.5}.login .message{border-left:4px solid #00a0d2;background-color:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error,.login .message{-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error{border-left:4px solid #dd3d36;background:#fff;box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login form{margin-top:20px;margin-left:0;padding:26px 24px 46px;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}.login form .forgetmenot{font-weight:400;float:left;margin-bottom:0}.login .button-primary{float:right}#login form p{margin-bottom:0}#login form p.submit{margin:0;padding:0}.login label{color:#777;font-size:14px}.login #backtoblog a,.login #nav a,.login h1 a{text-decoration:none;color:#999}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1{text-align:center}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;height:84px;font-size:20px;line-height:1.3em;margin:0 auto 25px;padding:0;width:84px;text-indent:-9999px;outline:0;display:block}#login{width:320px;padding:8% 0 0;margin:auto}#login_error,.login .message{margin-left:0;padding:12px}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0 0}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#00a0d2}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#124964}.login form .input,.login input[type=text]{font-size:24px;width:100%;padding:3px;margin:2px 6px 16px 0}.login form .input,.login form input[type=checkbox],.login input[type=text]{background:#fbfbfb}.ie7 .login form .input,.ie8 .login form .input{font-family:sans-serif}.login-action-rp input[type=text]{-webkit-box-shadow:none;box-shadow:none;margin:0}.login #pass-strength-result{font-weight:600;margin:-1px 5px 16px 0;padding:6px 5px;text-align:center;width:100%}.mobile #login{padding:20px 0}.mobile #login .message,.mobile #login form,.mobile #login_error{margin-left:0}.mobile #login #backtoblog,.mobile #login #nav{margin-left:8px}body.interim-login{height:auto}.interim-login #login{padding:0;margin:5px auto 20px}.interim-login.login h1 a{width:auto}.interim-login #login_error,.interim-login.login .message{margin:0 0 16px}.interim-login.login form{margin:0}@-ms-viewport{width:device-width}@media screen and (max-width:782px){.interim-login input[type=checkbox]{height:16px;width:16px}.interim-login input[type=checkbox]:checked:before{width:16px;font:400 21px/1 dashicons;margin:-3px 0 0 -4px}}
\ No newline at end of file
+#pass-strength-result,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.meta-box-sortables select,p.submit{max-width:100%}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}#pressthis-code-wrap,textarea{overflow:auto}input,textarea{box-sizing:border-box}input[type=text],input[type=search],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:50ms border-color ease-in-out;transition:50ms border-color ease-in-out}input[type=text]:focus,input[type=search]:focus,input[type=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=password]:focus,input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=url],input[type=email]{direction:ltr}input[type=number]{line-height:inherit}input[type=radio],input[type=checkbox]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=radio],.wp-admin p input[type=checkbox],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-right:4px;line-height:10px}input[type=radio]:checked:before,input[type=checkbox]:checked:before{float:left;display:inline-block;vertical-align:middle;width:16px;font:400 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:"\f147";margin:-3px 0 0 -4px;color:#1e8cbe}input[type=radio]:checked:before{content:"\2022";text-indent:-9999px;-webkit-border-radius:50px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=radio],input[type=checkbox]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4;resize:vertical}.wp-admin input[type=file]{padding:3px 0}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:400 20px/1 dashicons;color:#dc3232;margin-left:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;-webkit-box-shadow:none;box-shadow:none}input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before,input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before{opacity:.7}.wp-admin select{padding:2px;line-height:28px;height:28px}.wp-admin .button-cancel{padding:0 5px;line-height:2}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border:none}form p.submit a.cancel:hover{text-decoration:none}p.submit{text-align:left;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:right}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input,#pass-strength-result,.login h1{text-align:center}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:"\f173";display:inline-block;font:400 20px/1 dashicons;speak:none;left:-1px;padding:0 5px 0 0;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 1px;padding:3px 5px;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.indicator-hint{padding-top:8px}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:right;margin:0}.network-admin.themes-php p.search-box{clear:left}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:left;height:28px;margin:0 4px 0 0}input[type=text].ui-autocomplete-loading,input[type=email].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:right center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;white-space:nowrap;text-align:left}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{border-collapse:collapse;margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:3px;cursor:pointer}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0;border-collapse:collapse}.color-palette td{height:20px;padding:0;border:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}.login form,.login h1 a{overflow:hidden;font-weight:400}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;-webkit-transform:skew(20deg) rotate(6deg);-ms-transform:skew(20deg) rotate(6deg);transform:skew(20deg) rotate(6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(20deg) rotate(9deg);-ms-transform:skew(20deg) rotate(9deg);transform:skew(20deg) rotate(9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 12px 8px 9px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#777}#local-time,#utc-time{padding-left:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:100%}.request-filesystem-credentials-dialog{display:none}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:left;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-left:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:right}.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}#request-filesystem-credentials-dialog .button:not(:last-child){margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=search],input[type=password],input[type=email],input[type=number]{-webkit-appearance:none;padding:6px 10px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:400 30px/1 dashicons;margin:-3px -5px}input[type=radio],input[type=checkbox]{height:25px;width:25px}.wp-admin p input[type=radio],.wp-admin p input[type=checkbox]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=text],.form-table td input[type=password],.form-table td input[type=email],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:right;margin:-30px 3px 0 0}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=text].small-text,input[type=search].small-text,input[type=password].small-text,input[type=number].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-left:0}.form-table.permalink-structure td code{margin-left:32px}.form-table.permalink-structure td input[type=text]{margin-left:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-right:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;right:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}}.locale-he-il em,.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{font-style:normal}body,html{background:#f1f1f1}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@media only screen and (max-height:480px){.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;left:0}}@media screen and (max-width:600px){.color-option{width:49%}}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-left:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-right:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:0}}body,html{height:100%;margin:0;padding:0}body{min-width:0;color:#444;font-family:"Open Sans",sans-serif;font-size:13px;line-height:1.4em}a{color:#0073aa;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;outline:0}a:active,a:hover{color:#00a0d2}a:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}p{line-height:1.5}.login #login_error,.login .message{border-left:4px solid #00a0d2;padding:12px;margin-left:0;background-color:#fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.login #login_error{border-left-color:#dc3232}#loginform p.submit,.login-action-lostpassword p.submit{border:none;margin:-10px 0 20px}.login *{margin:0;padding:0}.login form{margin-top:20px;margin-left:0;padding:26px 24px 46px;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.13);box-shadow:0 1px 3px rgba(0,0,0,.13)}.login form .forgetmenot{font-weight:400;float:left;margin-bottom:0}.login .button-primary{float:right}#login form p{margin-bottom:0}#login form p.submit{margin:0;padding:0}.login label{color:#777;font-size:14px}.login #backtoblog a,.login #nav a,.login h1 a{text-decoration:none;color:#999}.login form .forgetmenot label{font-size:12px;line-height:19px}.login h1 a{background-image:url(../images/w-logo-blue.png?ver=20131202);background-image:none,url(../images/wordpress-logo.svg?ver=20131107);-webkit-background-size:84px;background-size:84px;background-position:center top;background-repeat:no-repeat;height:84px;font-size:20px;line-height:1.3em;margin:0 auto 25px;padding:0;width:84px;text-indent:-9999px;outline:0;display:block}#login{width:320px;padding:8% 0 0;margin:auto}.login #backtoblog,.login #nav{font-size:13px;padding:0 24px}.login #nav{margin:24px 0 0}#backtoblog{margin:16px 0}.login #backtoblog a:hover,.login #nav a:hover,.login h1 a:hover{color:#00a0d2}.login #backtoblog a:focus,.login #nav a:focus,.login h1 a:focus{color:#124964}.login form .input,.login input[type=text]{font-size:24px;width:100%;padding:3px;margin:2px 6px 16px 0}.login form .input,.login form input[type=checkbox],.login input[type=text]{background:#fbfbfb}.ie7 .login form .input,.ie8 .login form .input{font-family:sans-serif}.login-action-rp input[type=text]{-webkit-box-shadow:none;box-shadow:none;margin:0}.login #pass-strength-result{font-weight:600;margin:-1px 5px 16px 0;padding:6px 5px;text-align:center;width:100%}.mobile #login{padding:20px 0}.mobile #login form{margin-left:0}.mobile #login #backtoblog,.mobile #login #nav{margin-left:8px}body.interim-login{height:auto}.interim-login #login{padding:0;margin:5px auto 20px}.interim-login.login h1 a{width:auto}.interim-login #login_error,.interim-login.login .message{margin:0 0 16px}.interim-login.login form{margin:0}@-ms-viewport{width:device-width}@media screen and (max-width:782px){.interim-login input[type=checkbox]{height:16px;width:16px}.interim-login input[type=checkbox]:checked:before{width:16px;font:400 21px/1 dashicons;margin:-3px 0 0 -4px}}
\ No newline at end of file
index 20c69fc904ce2df574a3541a522918fa812be82a..18217dd0e94ee42851710166a4eb036d38ba5609 100644 (file)
 }
 
 #find-posts-close:before {
-       font: normal 20px/36px 'dashicons';
+       font: normal 20px/36px dashicons;
        vertical-align: top;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
-       content: '\f158';
+       content: "\f158";
 }
 
 .find-box-buttons {
@@ -384,8 +384,6 @@ form.upgrade .hint {
        border: 1px solid #ddd;
        line-height: 1.8em;
        word-spacing: 3px;
-       -webkit-border-radius: 6px;
-       border-radius: 6px;
 }
 
 .drag-drop #drag-drop-area {
@@ -502,7 +500,8 @@ border color while dragging a file over the uploader drop area */
        color: #c00;
 }
 
-.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3 {
+.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3, /* Back-compat for pre-4.4 */
+.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2 {
        display: none;
 }
 
@@ -633,7 +632,7 @@ border color while dragging a file over the uploader drop area */
 }
 
 .upload-php .media-modal-close .media-modal-icon:before {
-       content: '\f335';
+       content: "\f335";
        font-size: 22px;
 }
 
@@ -674,7 +673,7 @@ border color while dragging a file over the uploader drop area */
 
 .edit-attachment-frame .edit-media-header .right:before,
 .edit-attachment-frame .edit-media-header .left:before {
-       font: normal 20px/50px 'dashicons' !important;
+       font: normal 20px/50px dashicons !important;
        display: inline;
        font-weight: 300;
 }
@@ -700,12 +699,12 @@ border color while dragging a file over the uploader drop area */
 
 .edit-attachment-frame .edit-media-header .left:before,
 .rtl .edit-attachment-frame .edit-media-header .right:before {
-       content: '\f341';
+       content: "\f345";
 }
 
 .edit-attachment-frame .edit-media-header .right:before,
 .rtl .edit-attachment-frame .edit-media-header .left:before {
-       content: '\f345';
+       content: "\f341";
 }
 
 .edit-attachment-frame .edit-media-header .left.disabled,
@@ -935,7 +934,7 @@ border color while dragging a file over the uploader drop area */
 }
 
 .imgedit-menu div:before {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        vertical-align: middle;
 }
@@ -956,31 +955,31 @@ border color while dragging a file over the uploader drop area */
 }
 
 .imgedit-crop:before {
-       content:'\f165';
+       content: "\f165";
 }
 
 .imgedit-rleft:before {
-       content:'\f166';
+       content: "\f166";
 }
 
 .imgedit-rright:before {
-       content:'\f167';
+       content: "\f167";
 }
 
 .imgedit-flipv:before {
-       content:'\f168';
+       content: "\f168";
 }
 
 .imgedit-fliph:before {
-       content:'\f169';
+       content: "\f169";
 }
 
 .imgedit-undo:before {
-       content:'\f171';
+       content: "\f171";
 }
 
 .imgedit-redo:before {
-       content:'\f172';
+       content: "\f172";
 }
 
 .imgedit-crop-wrap {
@@ -1019,11 +1018,16 @@ border color while dragging a file over the uploader drop area */
        margin: 0 0 0 8px;
 }
 
-#poststuff .imgedit-group-top h3 {
+#poststuff .imgedit-group-top h3, /* Back-compat for pre-4.4 */
+#poststuff .imgedit-group-top h2 {
+       margin: 0;
        padding: 0;
+       font-size: 14px;
+       line-height: 1.4;
 }
 
-.imgedit-group-top h3 a {
+.imgedit-group-top h3 a, /* Back-compat for pre-4.4 */
+.imgedit-group-top h2 a {
        text-decoration: none;
 }
 
index 27916542a6cdd482579820536ff36a8cd5ce211c..48937571facd55052e017a43b86abb174973ac9e 100644 (file)
 }
 
 #find-posts-close:before {
-       font: normal 20px/36px 'dashicons';
+       font: normal 20px/36px dashicons;
        vertical-align: top;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
-       content: '\f158';
+       content: "\f158";
 }
 
 .find-box-buttons {
@@ -384,8 +384,6 @@ form.upgrade .hint {
        border: 1px solid #ddd;
        line-height: 1.8em;
        word-spacing: 3px;
-       -webkit-border-radius: 6px;
-       border-radius: 6px;
 }
 
 .drag-drop #drag-drop-area {
@@ -502,7 +500,8 @@ border color while dragging a file over the uploader drop area */
        color: #c00;
 }
 
-.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3 {
+.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3, /* Back-compat for pre-4.4 */
+.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2 {
        display: none;
 }
 
@@ -633,7 +632,7 @@ border color while dragging a file over the uploader drop area */
 }
 
 .upload-php .media-modal-close .media-modal-icon:before {
-       content: '\f335';
+       content: "\f335";
        font-size: 22px;
 }
 
@@ -674,7 +673,7 @@ border color while dragging a file over the uploader drop area */
 
 .edit-attachment-frame .edit-media-header .right:before,
 .edit-attachment-frame .edit-media-header .left:before {
-       font: normal 20px/50px 'dashicons' !important;
+       font: normal 20px/50px dashicons !important;
        display: inline;
        font-weight: 300;
 }
@@ -700,12 +699,12 @@ border color while dragging a file over the uploader drop area */
 
 .edit-attachment-frame .edit-media-header .left:before,
 .rtl .edit-attachment-frame .edit-media-header .right:before {
-       content: '\f341';
+       content: "\f341";
 }
 
 .edit-attachment-frame .edit-media-header .right:before,
 .rtl .edit-attachment-frame .edit-media-header .left:before {
-       content: '\f345';
+       content: "\f345";
 }
 
 .edit-attachment-frame .edit-media-header .left.disabled,
@@ -935,7 +934,7 @@ border color while dragging a file over the uploader drop area */
 }
 
 .imgedit-menu div:before {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        vertical-align: middle;
 }
@@ -956,31 +955,31 @@ border color while dragging a file over the uploader drop area */
 }
 
 .imgedit-crop:before {
-       content:'\f165';
+       content: "\f165";
 }
 
 .imgedit-rleft:before {
-       content:'\f166';
+       content: "\f166";
 }
 
 .imgedit-rright:before {
-       content:'\f167';
+       content: "\f167";
 }
 
 .imgedit-flipv:before {
-       content:'\f168';
+       content: "\f168";
 }
 
 .imgedit-fliph:before {
-       content:'\f169';
+       content: "\f169";
 }
 
 .imgedit-undo:before {
-       content:'\f171';
+       content: "\f171";
 }
 
 .imgedit-redo:before {
-       content:'\f172';
+       content: "\f172";
 }
 
 .imgedit-crop-wrap {
@@ -1019,11 +1018,16 @@ border color while dragging a file over the uploader drop area */
        margin: 0 8px 0 0;
 }
 
-#poststuff .imgedit-group-top h3 {
+#poststuff .imgedit-group-top h3, /* Back-compat for pre-4.4 */
+#poststuff .imgedit-group-top h2 {
+       margin: 0;
        padding: 0;
+       font-size: 14px;
+       line-height: 1.4;
 }
 
-.imgedit-group-top h3 a {
+.imgedit-group-top h3 a, /* Back-compat for pre-4.4 */
+.imgedit-group-top h2 a {
        text-decoration: none;
 }
 
index a9b0133bf6433389a1c3eaf4800b9884064fa1ab..1696e80ae51740cbe8235a3c2f39fa7103753081 100644 (file)
@@ -405,7 +405,7 @@ ul.add-menu-item-tabs li {
 
 .quick-search-wrap .spinner {
        float: none;
-       margin: 0 5px;
+       margin: -3px 0 0 -10px;
 }
 
 .nav-menus-php .list-wrap {
@@ -579,7 +579,7 @@ body.menu-max-depth-11 { min-width: 1280px !important; }
 /* Menu item controls */
 .item-type {
        display: inline-block;
-       padding: 12px 10px;
+       padding: 12px 16px;
        color: #666;
        font-size: 12px;
        line-height: 18px;
@@ -618,6 +618,33 @@ body.menu-max-depth-11 { min-width: 1280px !important; }
        white-space: nowrap;
 }
 
+.nav-menus-php .item-edit:before {
+       margin-top: 10px;
+       margin-right: 4px;
+       width: 20px;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
+       text-indent: -1px; /* account for the dashicon alignment */
+}
+
+.rtl .nav-menus-php .item-edit:before {
+       text-indent: 1px; /* account for the dashicon alignment */
+}
+
+.nav-menus-php .item-edit:focus {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+.nav-menus-php .item-edit:focus:before {
+       -webkit-box-shadow:
+       0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+    box-shadow:
+       0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+}
+
 /* Menu editing */
 .menu-instructions-inactive {
        display: none;
@@ -760,6 +787,24 @@ body.menu-max-depth-11 { min-width: 1280px !important; }
 /* =Media Queries
 -------------------------------------------------------------- */
 
+@media only screen and (min-width: 769px) and (max-width: 1000px){
+       body.menu-max-depth-0 {
+               min-width: 0 !important;
+       }
+
+       #menu-management-liquid{
+               width: 100%;
+       }
+
+       .nav-menus-php #post-body-content{
+               min-width: 0;
+       }
+
+       .menu-item-bar .menu-item-handle{
+               width: 90%;
+       }
+}
+
 @media screen and ( max-width: 782px ) {
        body.nav-menus-php {
                min-width: 0 !important;
index 24831136974c61fd430ebc75869483bc3b4cd257..9084875604d9fedf32840c0377b77be7917b0bc5 100644 (file)
@@ -405,7 +405,7 @@ ul.add-menu-item-tabs li {
 
 .quick-search-wrap .spinner {
        float: none;
-       margin: 0 5px;
+       margin: -3px -10px 0 0;
 }
 
 .nav-menus-php .list-wrap {
@@ -579,7 +579,7 @@ body.menu-max-depth-11 { min-width: 1280px !important; }
 /* Menu item controls */
 .item-type {
        display: inline-block;
-       padding: 12px 10px;
+       padding: 12px 16px;
        color: #666;
        font-size: 12px;
        line-height: 18px;
@@ -618,6 +618,33 @@ body.menu-max-depth-11 { min-width: 1280px !important; }
        white-space: nowrap;
 }
 
+.nav-menus-php .item-edit:before {
+       margin-top: 10px;
+       margin-left: 4px;
+       width: 20px;
+       -webkit-border-radius: 50%;
+       border-radius: 50%;
+       text-indent: -1px; /* account for the dashicon alignment */
+}
+
+.rtl .nav-menus-php .item-edit:before {
+       text-indent: 1px; /* account for the dashicon alignment */
+}
+
+.nav-menus-php .item-edit:focus {
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
+.nav-menus-php .item-edit:focus:before {
+       -webkit-box-shadow:
+       0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+    box-shadow:
+       0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+}
+
 /* Menu editing */
 .menu-instructions-inactive {
        display: none;
@@ -760,6 +787,24 @@ body.menu-max-depth-11 { min-width: 1280px !important; }
 /* =Media Queries
 -------------------------------------------------------------- */
 
+@media only screen and (min-width: 769px) and (max-width: 1000px){
+       body.menu-max-depth-0 {
+               min-width: 0 !important;
+       }
+
+       #menu-management-liquid{
+               width: 100%;
+       }
+
+       .nav-menus-php #post-body-content{
+               min-width: 0;
+       }
+
+       .menu-item-bar .menu-item-handle{
+               width: 90%;
+       }
+}
+
 @media screen and ( max-width: 782px ) {
        body.nav-menus-php {
                min-width: 0 !important;
index 17c688ceb930a7359da19dbdba8403626e84055c..53d95c7354ea593ee2152a43eb50c6982f94da75 100644 (file)
@@ -312,7 +312,6 @@ strong {
 * Pushing buttons is what I do.
 */
 
-.button-subtle,
 .scan-submit {
        display: inline-block;
        margin: 0;
@@ -329,67 +328,6 @@ strong {
        -webkit-appearance: none;
 }
 
-.button-subtle {
-       background: none;
-       border: 0;
-       color: #0073aa;
-}
-
-.button-subtle:visited {
-       color: #0073aa;
-}
-
-.button-subtle:focus,
-.button-subtle:hover,
-.button-subtle:active,
-.edit-post-link:focus,
-.edit-post-link:hover,
-.edit-post-link:active {
-       color: #00a0d2;
-}
-
-.button-subtle:focus,
-.button-subtle:active,
-.edit-post-link:focus,
-.edit-post-link:active {
-       outline: 0;
-       text-decoration: underline;
-}
-
-.preview-button {
-       margin-left: 5px;
-}
-
-.button-reset {
-       margin: 0;
-       padding: 0;
-       border: 0;
-       background: none;
-       cursor: pointer;
-       -webkit-appearance: none;
-}
-
-.button-reset:focus {
-       outline: 0;
-}
-
-.button-link {
-       margin: 0;
-       padding: 0;
-       border: 0;
-       background: none;
-       color: #0073aa;
-       cursor: pointer;
-       -webkit-appearance: none;
-}
-
-.button-link:hover,
-.button-link:active,
-.button-link:focus {
-       color: #00a0d2;
-       text-decoration: underline;
-}
-
 .split-button {
        position: relative;
        display: inline-block;
@@ -421,7 +359,7 @@ strong {
        height: 0;
        border-style: solid;
        border-color: transparent;
-       content: '';
+       content: "";
 }
 
 .split-button-body:before {
@@ -443,6 +381,7 @@ strong {
        margin: 0;
        width: 100%;
        text-align: right;
+       line-height: 2;
 }
 
 .is-open .split-button-body {
@@ -462,13 +401,17 @@ strong {
        -webkit-appearance: none;
        line-height: 2;
        padding: 0 10px 1px;
-       background: #00a0d2;
-       border-color: #0073aa;
+       background: #0085ba;
+       border-color: #0073aa #006799 #006799;
        border-width: 1px;
        border-style: solid;
-       -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5), 0 1px 0 rgba( 0, 0, 0, 0.15 );
-       box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5 ), 0 1px 0 rgba( 0, 0, 0, 0.15 );
+       -webkit-box-shadow: 0 1px 0 #006799;
+       box-shadow: 0 1px 0 #006799;
        color: #fff;
+       text-shadow: 0 -1px 1px #006799,
+               -1px 0 1px #006799,
+               0 1px 1px #006799,
+               1px 0 1px #006799;
 }
 
 .split-button-primary {
@@ -486,42 +429,37 @@ strong {
        border-top-left-radius: 3px;
        -webkit-border-bottom-left-radius: 3px;
        border-bottom-left-radius: 3px;
-       border-right: 0 none;
+       border-right: 1px solid #006799;
        float: left;
 }
 
 .split-button-toggle i {
        margin: 4px 0 3px 20px;
        padding: 0 10px;
-       border-right: 1px solid #fff;
 }
 
 .split-button-primary:hover,
 .split-button-toggle:hover {
        outline: none;
-       background: #0091cd;
-       border-color: #0073aa;
+       background: #008ec2;
+       border-color: #006799;
 }
 
 .split-button-primary:focus,
 .split-button-toggle:focus {
        outline: none;
-       border-color: #0e3950;
-       -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
+       -webkit-box-shadow: 0 1px 0 #0073aa,
+               0 0 2px 1px #33b3db;
+       box-shadow: 0 1px 0 #0073aa,
+               0 0 2px 1px #33b3db;
 }
 
 .split-button-primary:active,
 .split-button-toggle:active {
        background: #0073aa;
-       border-color: #005082;
-       color: rgba( 255, 255, 255, 0.95 );
-       -webkit-box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 );
-       box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 );
+       border-color: #006799;
+       -webkit-box-shadow: inset 0 2px 10px #006799, 0 1px 0 #0073aa;
+       box-shadow: inset 0 2px 10px #006799, 0 1px 0 #0073aa;
 }
 
 /**
@@ -899,7 +837,7 @@ dd {
 }
 
 .tagchecklist .ntdelbutton:before {
-       content: '\f153';
+       content: "\f153";
        display: block;
        margin: 2px 0;
        height: 20px;
@@ -922,9 +860,10 @@ dd {
        margin: 0;
 }
 
-.tagcloud-link {
+.press-this .tagcloud-link {
        display: block;
-       padding: 0 16px;
+       margin: 0 16px 5px;
+       padding: 0;
        text-decoration: none;
        outline: 0;
 }
@@ -991,23 +930,24 @@ input[type="search"].categories-search,
        }
 }
 
-.add-cat-toggle {
+.press-this .add-cat-toggle {
        float: left;
        margin-top: -45px;
        line-height: 20px;
        padding: 12px 10px 8px;
+       color: #0073aa;
 }
 
-.add-cat-toggle:focus {
+.press-this .add-cat-toggle:focus {
        text-decoration: none;
        color: #00a0d2;
 }
 
-.add-cat-toggle.is-toggled {
+.press-this .add-cat-toggle.is-toggled {
        padding: 10px;
 }
 
-.add-cat-toggle.is-toggled .dashicons:before {
+.press-this .add-cat-toggle.is-toggled .dashicons:before {
        content: "\f179";
 }
 
@@ -1261,11 +1201,13 @@ html {
        color: #999;
 }
 
-.adminbar button {
+.press-this .adminbar button {
        position: absolute;
        top: 50%;
        left: 6px;
        margin-top: -13px;
+       padding: 0 10px 1px;
+       font-size: 13px;
 }
 
 @media (max-width: 320px) {
@@ -1364,7 +1306,7 @@ html {
 }
 
 .alert:before {
-       content: '';
+       content: "";
        position: absolute;
        top: 50%;
        right: 30px;
@@ -1438,15 +1380,15 @@ html {
 
 .scan-submit:hover,
 .scan-submit:focus {
-       background: #2991b7;
-       border-color: #20708e;
+       background: #008ec2;
+       border-color: #006799;
        color: #fff;
        outline: 0;
 }
 
 .scan-submit:active {
-       background: #2581a2;
-       border-color: #20708e;
+       background: #0073aa;
+       border-color: #006799;
        color: #fff;
 }
 
@@ -1596,7 +1538,7 @@ html {
 
 .post-title:before {
        /* Keeps empty container from collapsing */
-       content: '\a0';
+       content: "\a0";
        display: inline-block;
        width: 0;
        speak: none;
@@ -1799,7 +1741,9 @@ html {
                -ms-transform: translateY(0);
                transform: translateY(0);
                -webkit-transition: -webkit-transform .3s ease-in-out;
+               transition: -webkit-transform .3s ease-in-out;
                transition: transform .3s ease-in-out;
+               transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out;
        }
        .press-this-actions.is-hidden {
                -webkit-transform: translateY(100%);
@@ -1879,13 +1823,6 @@ html {
        }
 }
 
-.edit-post-link {
-       font-size: 13px;
-       display: inline-block;
-       text-decoration: none;
-       padding: 0 10px;
-}
-
 .publish-button .saving-draft,
 .publish-button.is-saving .publish {
        display: none;
@@ -2010,7 +1947,9 @@ html {
                -ms-transform: translateX(100%);
                transform: translateX(100%);
                -webkit-transition: -webkit-transform .3s ease-in-out;
+               transition: -webkit-transform .3s ease-in-out;
                transition: transform .3s ease-in-out;
+               transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out;
        }
 
        .options-panel.is-hidden {
@@ -2088,13 +2027,16 @@ html {
        white-space: nowrap;
        overflow: hidden;
        -webkit-transition: -webkit-transform .3s ease-in-out;
+       transition: -webkit-transform .3s ease-in-out;
        transition: transform .3s ease-in-out;
+       transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out;
 }
 
 .post-options .post-option:focus {
        outline: 0;
        -webkit-box-shadow: inset -5px 0 0 #00a0d2;
        box-shadow: inset -5px 0 0 #00a0d2;
+       border-color: #e5e5e5;
 }
 
 .is-off-screen > .post-option {
@@ -2128,7 +2070,9 @@ html {
        width: 100%;
        overflow: hidden;
        -webkit-transition: -webkit-transform .3s ease-in-out;
+       transition: -webkit-transform .3s ease-in-out;
        transition: transform .3s ease-in-out;
+       transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out;
 }
 
 .setting-modal.is-hidden {
@@ -2149,7 +2093,7 @@ html {
        }
 }
 
-.modal-close {
+.press-this .modal-close {
        display: block;
        width: 100%;
        padding: 13px 14px;
@@ -2159,10 +2103,11 @@ html {
        text-align: right;
 }
 
-.modal-close:focus {
+.press-this .modal-close:focus {
        outline: 0;
        -webkit-box-shadow: inset -5px 0 0 #00a0d2;
        box-shadow: inset -5px 0 0 #00a0d2;
+       border-color: #e5e5e5;
 }
 
 .setting-title {
index a051a719333d3c04db2b4f9ae45a8ed00b1f23b9..0e8f107b34b0b75098912507570a2cb28d0fd83c 100644 (file)
@@ -1 +1 @@
-pre,textarea{overflow:auto}body,fieldset{margin:0}.screen-reader-text,fieldset,legend,td,th{padding:0}.adminbar:after,.clearfix:after,.editor-wrapper:after,.mce-stack-layout:after,.media-list-inner-container:after,.tagchecklist:after,.wrapper:after,h1,h2,h3,h4,h5,h6{clear:both}b,dt,optgroup,strong{font-weight:700}.current-site,.post-options .post-option,.postform{text-overflow:ellipsis;white-space:nowrap}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){*,:after,:before{-webkit-font-smoothing:antialiased}}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}fieldset,img,legend{border:0}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}.clearfix:after,.clearfix:before{content:"";display:table}.hide-if-js{display:none}.screen-reader-text{position:absolute;margin:-1px;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}body,button,input,select,textarea{color:#404040;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:20px;font-weight:400;line-height:1.6}p{margin-bottom:1.5em}.button-subtle,.scan-submit{display:inline-block;margin:0;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px;font-size:13px;line-height:2;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none}.button-link,.button-reset{cursor:pointer;-webkit-appearance:none;padding:0;border:0;background:0 0}.button-subtle{background:0 0;border:0;color:#0073aa}.button-subtle:visited{color:#0073aa}.button-subtle:active,.button-subtle:focus,.button-subtle:hover,.edit-post-link:active,.edit-post-link:focus,.edit-post-link:hover{color:#00a0d2}.button-subtle:active,.button-subtle:focus,.edit-post-link:active,.edit-post-link:focus{outline:0;text-decoration:underline}.preview-button{margin-left:5px}.button-reset{margin:0}.button-reset:focus{outline:0}.button-link{margin:0;color:#0073aa}.button-link:active,.button-link:focus,.button-link:hover{color:#00a0d2;text-decoration:underline}.split-button{position:relative;display:inline-block;vertical-align:middle}.split-button-body{display:none;position:absolute;bottom:39px;left:0;border:1px solid #ddd;background-color:#fff;min-width:180px;max-width:100%;margin:0;padding:8px;list-style:none;-webkit-box-shadow:-1px 0 4px rgba(0,0,0,.15);box-shadow:-1px 0 4px rgba(0,0,0,.15)}.split-button-body:after,.split-button-body:before{position:absolute;left:12px;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:''}.split-button-body:before{bottom:-18px;border-top-color:#ccc;border-width:9px;left:11px}.split-button-body:after{bottom:-16px;border-top-color:#fff;border-width:8px}.split-button-body .split-button-option{display:block;padding:5px 15px;margin:0;width:100%;text-align:right}.is-open .split-button-body{display:block}.split-button-primary,.split-button-toggle{-webkit-border-radius:0;border-radius:0;display:block;margin:0;font-size:13px;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none;line-height:2;padding:0 10px 1px;background:#00a0d2;border-color:#0073aa;border-width:1px;border-style:solid;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff}.split-button-primary{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border-left:0 none;float:right}.split-button-toggle{padding:0;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-right:0 none;float:left}.split-button-toggle i{margin:4px 0 3px 20px;padding:0 10px;border-right:1px solid #fff}.split-button-primary:hover,.split-button-toggle:hover{outline:0;background:#0091cd;border-color:#0073aa}.split-button-primary:focus,.split-button-toggle:focus{outline:0;border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.split-button-primary:active,.split-button-toggle:active{background:#0073aa;border-color:#005082;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline}[type=checkbox],[type=radio]{padding:0}[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}[type=text],[type=email],[type=url],[type=password],[type=search],textarea{padding:.4em .75em;color:#32373c;border:1px solid #ccc}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=search]:focus,textarea:focus{color:#32373c;outline:0}textarea{padding-right:3px;vertical-align:top}a,a:visited{color:#0073aa}a:active,a:focus,a:hover{color:#00a0d2}ol,ul{margin:0 3em 1.5em 0}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-right:1.5em}dd{margin:0 1.5em 1.5em}#post-formats-select br{display:none}.post-format{width:1px;height:1px;position:absolute;top:-9999px}.lt-ie9 .post-format{margin:17px 13px 0 12px;position:static;top:auto;float:right;width:16px;height:16px}.add-category,.post-format-icon,.tagsdiv .ajaxtag,.tagsdiv .newtag{position:relative}.post-format-icon{display:block;padding:13px 13px 14px 2px;cursor:pointer}.post-format-icon:after,.post-format-icon:before{content:"";display:inline-block;width:20px;height:20px;margin-left:10px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;color:#9ea7af;font-style:normal;text-align:center;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.category.selected:after,.post-format-icon:after,.post-format-icon:before{font-weight:400;vertical-align:top;-webkit-transition:color .1s ease-in 0}.post-format-icon:before{content:"\f109"}.post-format-icon:after{display:none;content:"\f147";float:left}.post-format:checked+.post-format-icon{-webkit-box-shadow:inset -6px 0 0 #00a0d2;box-shadow:inset -6px 0 0 #00a0d2;background:rgba(46,162,204,.1)}.post-format:checked+.post-format-icon:after,.post-format:checked+.post-format-icon:before{color:#32373c}.post-format:focus+.post-format-icon{background:#00a0d2;color:#fff}.post-format:focus+.post-format-icon:after,.post-format:focus+.post-format-icon:before{color:#fff}.post-format:checked+.post-format-icon:after{display:block}.lt-ie9 .post-format-icon{margin-right:16px}.post-format-aside:before{content:"\f123"}.post-format-image:before{content:"\f128"}.post-format-video:before{content:"\f126"}.post-format-audio:before{content:"\f127"}.post-format-quote:before{content:"\f122"}.post-format-link:before{content:"\f103"}.post-format-gallery:before{content:"\f161"}.tagsdiv p{margin:0}.tagsdiv .newtag{display:block;padding:11px 16px 11px 58px;width:100%;border:0;border-bottom:1px solid #e5e5e5;font-size:16px}.tagsdiv .tagadd{position:absolute;top:0;left:0;bottom:1px;border:0;-webkit-border-radius:0;border-radius:0;margin:0;padding:0 16px;background:#f7f7f7;border-right:1px solid #f1f1f1;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .tagadd:active,.tagsdiv .tagadd:focus,.tagsdiv .tagadd:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .howto{color:#727272;font-style:italic;margin:10px 16px 6px 0}.ac_results{padding:0;margin:-1px -1px 0 0;list-style:none;position:absolute;z-index:10000;display:none;border:1px solid #d8d8d8;background-color:#fff;font-size:14px}.ac_results li{padding:6px 16px;white-space:nowrap;color:#101010;text-align:right}.ac_results .ac_over{background-color:#00a0d2;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}.tagchecklist{padding:16px 28px 5px}.tagchecklist:after,.tagchecklist:before{content:"";display:table}.tagchecklist span{display:block;margin-left:25px;float:right;font-size:13px;line-height:1.8;white-space:nowrap;cursor:default}@media (max-width:600px){.tagchecklist span{margin-bottom:15px;font-size:16px;line-height:1.3}}.tagchecklist .ntdelbutton{margin:1px -17px 0 0;cursor:pointer;width:20px;height:20px;display:block;float:right;text-indent:0;overflow:hidden;position:absolute;outline:0}.tagchecklist .ntdelbutton:before{content:'\f153';display:block;margin:2px 0;height:20px;width:20px;background:100% 0;color:#9ea7af;font:400 16px/1 dashicons;text-align:center;speak:none;-webkit-font-smoothing:antialiased}.category.selected:after,.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{font-family:dashicons;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tagchecklist .ntdelbutton:focus:before{color:#00a0d2}.tagsdiv+p{margin:0}.tagcloud-link{display:block;padding:0 16px;text-decoration:none;outline:0}.tagcloud-link:focus{text-decoration:underline}.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}.popular-tags a{padding:0 3px}.the-tagcloud{margin:0;padding:16px}.the-tagcloud a{text-decoration:none;outline:0}.the-tagcloud a:focus{text-decoration:underline}.tagcloud h3{margin:2px 0 12px}.add-category-name,input[type=search].categories-search{display:block;width:100%;padding:.85714em 1.07143em;border:0;-webkit-border-radius:0;border-radius:0;border-bottom:1px solid #e5e5e5;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (max-width:600px){.add-category-name,input[type=search].categories-search{font-size:16px}}.add-cat-toggle{float:left;margin-top:-45px;line-height:20px;padding:12px 10px 8px}.add-cat-toggle:focus{text-decoration:none;color:#00a0d2}.add-cat-toggle.is-toggled{padding:10px}.add-cat-toggle.is-toggled .dashicons:before{content:"\f179"}.add-category{border-bottom:1px solid #e5e5e5}.add-category.is-hidden{display:none}.add-category .add-cat-submit{position:absolute;top:0;left:0;border:0;-webkit-border-radius:0;border-radius:0;padding:12px 16px;background:#f7f7f7;border-right:1px solid #f1f1f1}.alert,.scan{border-bottom:1px solid #e5e5e5}.add-category .add-cat-submit:active,.add-category .add-cat-submit:focus,.add-category .add-cat-submit:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff}.postform-wrapper{padding:12px}.postform{display:block;margin:0;width:100%;height:34px;-webkit-border-radius:0;border-radius:0;border:1px solid #e5e5e5;background:#fff;-webkit-background-size:20px 20px;background-size:20px 20px;overflow:hidden;line-height:21px;text-decoration:none;vertical-align:top;cursor:pointer;outline:0}.postform:focus{border-color:#0073aa;-webkit-box-shadow:0 0 0 3px #00a0d2;box-shadow:0 0 0 3px #00a0d2;outline:0;-moz-outline:none;-moz-user-focus:ignore}.postform::-ms-expand{display:none}.postform::-ms-value{background:0 0;color:#727272}.postform:-moz-focusring{color:transparent;text-shadow:0 0 0 #727272}.categories-select,.categories-select ul{margin:0;padding:0;list-style:none}.category{position:relative;display:block;padding:13px 16px 14px;cursor:pointer;background:#fff}.category.selected:focus,.category:focus{outline:0;background:#00a0d2;color:#fff}.category.selected{-webkit-box-shadow:inset -6px 0 0 #00a0d2;box-shadow:inset -6px 0 0 #00a0d2;background:#E9F5F9}.category.selected:after{display:inline-block;content:"\f147";position:absolute;top:13px;left:0;width:20px;height:20px;margin-left:10px;font-size:20px;line-height:1;text-decoration:inherit;color:#23282d;text-align:center;transition:color .1s ease-in 0}.category.selected:focus:after{color:#fff}.categories-select ul .category{padding-right:24px}.categories-select ul ul .category{padding-right:32px}.categories-select ul ul ul .category{padding-right:40px}.categories-select ul ul ul ul .category{padding-right:48px}.categories-select ul ul ul ul ul .category{padding-right:56px}.categories-select ul ul ul ul ul ul .category{padding-right:64px}.categories-select .is-hidden{display:none}.categories-select .is-hidden.searched-parent{display:block}.categories-search-wrapper{position:relative}.categories-search-wrapper.is-hidden{display:none}.categories-search-wrapper label{position:absolute;top:50%;left:10px;margin-top:-10px;color:#9ea7af}html{overflow:auto;background:#fff;-webkit-box-shadow:10px 0 0 rgba(0,0,0,.3);box-shadow:10px 0 0 rgba(0,0,0,.3)}body{overflow-x:hidden;height:100%}@media (max-width:900px){body{font-size:16px}}.lt-ie9{overflow:visible}.adminbar{position:relative;width:100%;padding:0 .8em;min-height:3.2em;background:#23282d;color:#fff;z-index:9999}.adminbar:after,.adminbar:before{content:"";display:table}.adminbar .dashicons{color:#999}.adminbar button{position:absolute;top:50%;left:6px;margin-top:-13px}@media (max-width:320px){body{font-size:14px}.adminbar{min-height:45px}}.current-site{margin-top:.5625em;font-size:16px;line-height:44px;font-weight:400;overflow:hidden}@media (max-width:600px){.current-site{margin:3px 0 0}}.current-site-link{text-decoration:none}.current-site-link:focus{outline:0}.current-site-link:focus .current-site-name{text-decoration:underline}.current-site-name{color:#ededed}@media (max-width:320px){.current-site{margin:0;font-size:14px}.current-site-name{font-weight:600}}.current-site .dashicons-wordpress{position:relative;top:-1px;margin-left:10px;vertical-align:middle}.options,.options.closed .on-open,.options.open .on-closed{display:none}@media (max-width:900px){.options{display:block}}.options-panel-back.is-hidden{display:none}.options:focus .dashicons{color:#fff;text-decoration:none}.options .dashicons{margin-top:3px}.options{color:#00a0d2}.alert{position:relative;margin:0;padding:16px 50px;font-size:14px}.alert:before{content:'';position:absolute;top:50%;right:30px;width:8px;height:8px;margin-top:-4px;-webkit-border-radius:50%;border-radius:50%;background:#00a0d2}@media (max-width:600px){.alert{padding:16px 35px}.alert:before{right:15px}}.alert.is-error:before{background:red}.scan{position:relative}.scan-url{display:block;border:0;padding:.85714em 1.07143em;font-size:14px;width:100%}.editor-wrapper:after,.editor-wrapper:before,.wrapper:after,.wrapper:before{content:"";display:table}@media (max-width:600px){.scan-url{font-size:16px}}.scan-submit{position:absolute;top:0;left:0;bottom:0;padding:0 1.07143em;background:#f7f7f7;border:0;border-right:1px solid #f1f1f1;-webkit-border-radius:0;border-radius:0;color:#555;font-size:14px;line-height:1.6}.scan-submit:focus,.scan-submit:hover{background:#2991b7;border-color:#20708e;color:#fff;outline:0}.scan-submit:active{background:#2581a2;border-color:#20708e;color:#fff}.scan-submit:visited{color:#555}.wrapper{position:relative;margin-bottom:60px;margin-left:320px}@media (max-width:900px){.scan form{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.scan.is-hidden form{opacity:.2;pointer-events:none}.wrapper{margin:0;width:100%}}.editor-wrapper{overflow:auto;float:right;width:100%}.editor{padding:0 1.5em 4.75em;max-width:700px;margin:0 auto}.spinner{height:20px;width:20px;display:inline-block;visibility:hidden;background:url(../images/spinner.gif) center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);line-height:1;vertical-align:middle}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}}.spinner.is-active{visibility:visible}@media (min-width:901px){.editor{max-width:760px}}@media (max-width:320px){.editor{padding:0}}.post-title,.post-title-placeholder{margin:0;padding:.83em 0;width:100%;border-bottom:1px solid #e5e5e5;font-size:32px;line-height:1.4;font-weight:700}.post-title-placeholder:active,.post-title-placeholder:focus,.post-title:active,.post-title:focus{outline:0;-webkit-box-shadow:inset 0 -3px 0 #00a0d2;box-shadow:inset 0 -3px 0 #00a0d2;border-color:#00a0d2}@media (max-width:900px){.post-title,.post-title-placeholder{font-size:24px}}@media (max-height:400px){.post-title,.post-title-placeholder{padding:15px 0;font-size:16px}}@media (max-width:320px){.post-title,.post-title-placeholder{font-size:16px;font-weight:600;padding:1.14286em 1.42857em}}.post-title{background:url(data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==);background:0 0,none}.post-title:before{content:'\a0';display:inline-block;width:0;speak:none}.post-title-placeholder{position:absolute;border:0;color:#9ea7af;z-index:-1}.is-embed.is-audio:active:before,.is-embed.is-audio:focus:before,.is-embed.is-audio:hover:before,.is-embed.is-tweet:active:before,.is-embed.is-tweet:focus:before,.is-embed.is-tweet:hover:before,.is-embed:before,.suggested-media-thumbnail:active,.suggested-media-thumbnail:focus,.suggested-media-thumbnail:hover{color:#fff}.post-title-placeholder.is-hidden{display:none}.media-list-container{position:relative;padding:2px 0;border-bottom:1px solid #e5e5e5;display:none}.media-list-inner-container{overflow:auto;max-height:150px;max-height:40vw}.media-list-container.has-media{display:block}.media-list-inner-container:after,.media-list-inner-container:before{content:"";display:table}.media-list{margin:0;padding:0}@media (min-width:321px){.media-list-inner-container{max-height:250px;max-height:40vw}}.wppt-all-media-list{list-style:none;margin:0;padding:0}.is-embed:focus,.suggested-media-thumbnail:focus{outline:0;-webkit-box-shadow:inset 0 0 0 3px #00a0d2;box-shadow:inset 0 0 0 3px #00a0d2}.suggested-media-thumbnail{position:relative;display:block;float:right;width:16.66%;padding:16.66% 16.66% 0 0;background-position:center;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;background-color:#d8d8d8;color:#fff;color:rgba(255,255,255,.6);cursor:pointer}.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{display:inline-block;position:absolute;font-size:20px;line-height:1;text-decoration:inherit;font-weight:400;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0}.suggested-media-thumbnail:before{right:50%;top:50%;margin:-20px -20px 0 0;font-size:40px}.suggested-media-thumbnail:after{content:"\f132";left:3%;bottom:2%}@media (min-width:601px){.media-list-inner-container{max-height:200px;max-height:18.75vw}.suggested-media-thumbnail{width:12.5%;padding:12.5% 12.5% 0 0}}.is-embed:before{content:"\f104";color:rgba(255,255,255,.9)}.is-embed.is-video{background-color:#23282d}.is-embed.is-video:active:before,.is-embed.is-video:focus:before,.is-embed.is-video:hover:before{color:rgba(255,255,255,.2)}.is-embed.is-video:before{content:"\f236"}.is-embed.is-audio{background-color:#ff7d44}.is-embed.is-audio:before{content:"\f127"}.is-embed.is-tweet{background-color:#55acee}.is-embed.is-tweet:before{content:"\f301"}.no-media{margin:0;padding:0;border:0}.press-this-actions{position:fixed;bottom:0;right:0;width:100%;background:#f1f1f1;background:rgba(241,241,241,.9);border-top:1px solid #e5e5e5}.add-media{float:right;margin:14px 30px 14px 0;font-size:0}@media (max-width:320px){.add-media{margin:10px 10px 10px 0}}.insert-media{color:#9ea7af;float:right;margin:0;padding:0;border:0;border-left:1px solid #e5e5e5;-webkit-border-radius:0;border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.insert-media:active,.insert-media:focus,.insert-media:hover{margin:0;background:0 0;border-color:#e5e5e5;color:#23282d}.insert-media:active,.insert-media:focus{outline:0;color:#00a0d2;text-decoration:none}.insert-media .dashicons{padding:11px;width:63px;height:58px;font-size:40px}@media (max-width:320px){.insert-media .dashicons{width:55px;height:49px;padding:14px;font-size:20px}}#wp-link-wrap,.post-actions{font-size:13px}.post-actions{float:left;margin:14px 0 14px 30px}@media (max-width:320px){.post-actions{margin:10px 0 10px 10px}}.edit-post-link{font-size:13px;display:inline-block;text-decoration:none;padding:0 10px}.publish-button .saving-draft,.publish-button.is-saving .publish{display:none}.publish-button.is-saving .saving-draft{display:inline}.editor .wp-media-buttons{float:none}.editor div.mce-toolbar-grp{padding:.71429em 0;background:0 0;border:0}@media (max-height:400px),(max-width:320px){.editor div.mce-toolbar-grp{padding:0}}.mce-stack-layout:after,.mce-stack-layout:before{content:"";display:table}.mce-container.mce-toolbar{float:right}.mce-container.mce-toolbar:nth-child(2){float:left}@media (max-width:600px){.mce-first .mce-btn:nth-child(3),.mce-first .mce-btn:nth-child(4){position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.mce-first .mce-btn:nth-child(3):focus,.mce-first .mce-btn:nth-child(4):focus{position:static;margin:1px;padding:inherit;height:auto;width:auto;overflow:visible;clip:auto;border:1px solid #999}}#wp-link-wrap input[type=text]{padding:3px 5px;margin:1px}@media screen and (max-width:782px){#wp-link-wrap{font-size:14px}#wp-link-wrap input[type=text]{padding:6px 10px}}#wp-link-wrap .howto{color:#666;font-style:italic}.options-panel{position:relative;float:left;margin-left:-320px;width:320px;border-right:1px solid #e5e5e5;font-size:14px;-webkit-box-shadow:-5001px 5000px 0 5000px #fff,-5000px 5000px 0 5000px #e5e5e5;box-shadow:-5001px 5000px 0 5000px #fff,-5000px 5000px 0 5000px #e5e5e5;outline:0}.options-panel-back{position:absolute;top:0;left:0;bottom:0;width:320px;outline:0}@media (max-width:900px){.press-this-actions{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out}.press-this-actions.is-hidden{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.options-panel{background:#fff;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out}.options-panel.is-hidden{visibility:hidden}.options-panel.is-off-screen{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@media (max-width:320px){.options-panel{margin-left:-100%;width:100%;border:0;-webkit-box-shadow:-5001px 5000px 0 5000px #fff;box-shadow:-5001px 5000px 0 5000px #fff}.options-panel-back{width:100%}}.post-options{background:#fff;position:absolute;left:0;width:100%;overflow-x:hidden}.post-options .post-option-contents{margin-right:3px;color:#32373c}.post-option-forward:before{position:absolute;top:50%;left:8px;margin-top:-10px;content:"\f341"}.post-option,.setting-modal,.setting-title{position:relative}.post-option-back:before{content:"\f345"}.lt-ie9 .options-panel,.lt-ie9 .post-options{border-right:1px solid #e5e5e5}.lt-ie9 .post-options.is-off-screen{border:0}.modal-close,.post-options .post-option{border-bottom:1px solid #e5e5e5;text-decoration:none;text-align:right}.post-options .post-option{display:block;padding:13px 14px 13px 37px;color:#9ea7af;transition:transform .3s ease-in-out}.post-options .post-option,.setting-modal{width:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out}.post-options .post-option:focus{box-shadow:inset -5px 0 0 #00a0d2}.modal-close:focus,.post-options .post-option:focus{outline:0;-webkit-box-shadow:inset -5px 0 0 #00a0d2}.is-off-screen>.post-option{left:100%}.is-hidden>.post-option{visibility:hidden}.post-option-title{display:inline-block;margin:0 8px 0 0;font-size:14px;font-weight:400}.setting-modal{top:0;right:0;transition:transform .3s ease-in-out}.setting-modal.is-hidden{visibility:hidden;height:0}.setting-modal.is-off-screen{right:100%}@media (min-width:1px){.is-off-screen>.post-option{left:auto;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.setting-modal.is-off-screen{right:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}}.modal-close{display:block;width:100%;padding:13px 14px;color:#00a0d2}.modal-close:focus{box-shadow:inset -5px 0 0 #00a0d2}.setting-title{top:-1px;margin-right:11px}#pressthis{color:#404040;resize:none;padding-top:30px;font-size:16px}.wp-editor-wrap .quicktags-toolbar{background:0 0;border:none}.wp-editor-wrap .wp-editor-tools{z-index:0}.wp-editor-wrap .wp-editor-tabs{padding:2px}.wp-editor-wrap .wp-switch-editor{top:0;margin:3px 5px 0 0;padding:3px 8px;background:#f5f5f5;color:#555;border-color:#ccc}.wp-editor-wrap .wp-switch-editor:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-editor-wrap.html-active .switch-html,.wp-editor-wrap.tmce-active .switch-tmce{background:#fff;border-color:#d8d8d8}
\ No newline at end of file
+body,fieldset{margin:0}.screen-reader-text,fieldset,legend,td,th{padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){*,:after,:before{-webkit-font-smoothing:antialiased}}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}fieldset,img,legend{border:0}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.scan-submit,.split-button-primary,.split-button-toggle{-webkit-appearance:none;cursor:pointer;text-decoration:none;white-space:nowrap}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}.hide-if-js{display:none}.screen-reader-text{position:absolute;margin:-1px;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}body,button,input,select,textarea{color:#404040;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:20px;font-weight:400;line-height:1.6}b,dt,strong{font-weight:700}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}.scan-submit{display:inline-block;margin:0}.split-button{position:relative;display:inline-block;vertical-align:middle}.split-button-body{display:none;position:absolute;bottom:39px;left:0;border:1px solid #ddd;background-color:#fff;min-width:180px;max-width:100%;margin:0;padding:8px;list-style:none;-webkit-box-shadow:-1px 0 4px rgba(0,0,0,.15);box-shadow:-1px 0 4px rgba(0,0,0,.15)}.split-button-body:after,.split-button-body:before{position:absolute;left:12px;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.split-button-body:before{bottom:-18px;border-top-color:#ccc;border-width:9px;left:11px}.split-button-body:after{bottom:-16px;border-top-color:#fff;border-width:8px}.split-button-body .split-button-option{display:block;padding:5px 15px;margin:0;width:100%;text-align:right;line-height:2}.is-open .split-button-body{display:block}.split-button-primary,.split-button-toggle{-webkit-border-radius:0;border-radius:0;display:block;margin:0;font-size:13px;line-height:2;padding:0 10px 1px;background:#0085ba;border-color:#0073aa #006799 #006799;border-width:1px;border-style:solid;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.split-button-primary{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border-left:0 none;float:right}.split-button-toggle{padding:0;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-right:1px solid #006799;float:left}.split-button-toggle i{margin:4px 0 3px 20px;padding:0 10px}.split-button-primary:hover,.split-button-toggle:hover{outline:0;background:#008ec2;border-color:#006799}.split-button-primary:focus,.split-button-toggle:focus{outline:0;-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.split-button-primary:active,.split-button-toggle:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa;box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.postform,textarea{vertical-align:top}[type=checkbox],[type=radio]{padding:0}[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}[type=email],[type=url],[type=password],[type=search],[type=text],textarea{padding:.4em .75em;color:#32373c;border:1px solid #ccc}[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=search]:focus,[type=text]:focus,textarea:focus{color:#32373c;outline:0}textarea{overflow:auto;padding-right:3px}a,a:visited{color:#0073aa}a:active,a:focus,a:hover{color:#00a0d2}ol,ul{margin:0 3em 1.5em 0}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-right:1.5em}dd{margin:0 1.5em 1.5em}#post-formats-select br{display:none}.post-format{width:1px;height:1px;position:absolute;top:-9999px}.lt-ie9 .post-format{margin:17px 13px 0 12px;position:static;top:auto;float:right;width:16px;height:16px}.add-category,.post-format-icon,.tagsdiv .ajaxtag,.tagsdiv .newtag{position:relative}.post-format-icon{display:block;padding:13px 13px 14px 2px;cursor:pointer}.post-format-icon:after,.post-format-icon:before{content:"";display:inline-block;width:20px;height:20px;margin-left:10px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;color:#9ea7af;font-weight:400;font-style:normal;vertical-align:top;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon:before{content:"\f109"}.post-format-icon:after{display:none;content:"\f147";float:left}.post-format:checked+.post-format-icon{-webkit-box-shadow:inset -6px 0 0 #00a0d2;box-shadow:inset -6px 0 0 #00a0d2;background:rgba(46,162,204,.1)}.post-format:checked+.post-format-icon:after,.post-format:checked+.post-format-icon:before{color:#32373c}.post-format:focus+.post-format-icon{background:#00a0d2;color:#fff}.post-format:focus+.post-format-icon:after,.post-format:focus+.post-format-icon:before{color:#fff}.post-format:checked+.post-format-icon:after{display:block}.lt-ie9 .post-format-icon{margin-right:16px}.post-format-aside:before{content:"\f123"}.post-format-image:before{content:"\f128"}.post-format-video:before{content:"\f126"}.post-format-audio:before{content:"\f127"}.post-format-quote:before{content:"\f122"}.post-format-link:before{content:"\f103"}.post-format-gallery:before{content:"\f161"}.tagsdiv p{margin:0}.tagsdiv .newtag{display:block;padding:11px 16px 11px 58px;width:100%;border:0;border-bottom:1px solid #e5e5e5;font-size:16px}.tagsdiv .tagadd{position:absolute;top:0;left:0;bottom:1px;border:0;-webkit-border-radius:0;border-radius:0;margin:0;padding:0 16px;background:#f7f7f7;border-right:1px solid #f1f1f1;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .tagadd:active,.tagsdiv .tagadd:focus,.tagsdiv .tagadd:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .howto{color:#727272;font-style:italic;margin:10px 16px 6px 0}.ac_results{padding:0;margin:-1px -1px 0 0;list-style:none;position:absolute;z-index:10000;display:none;border:1px solid #d8d8d8;background-color:#fff;font-size:14px}.ac_results li{padding:6px 16px;white-space:nowrap;color:#101010;text-align:right}.ac_results .ac_over{background-color:#00a0d2;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}.tagchecklist{padding:16px 28px 5px}.tagchecklist:after,.tagchecklist:before{content:"";display:table}.tagchecklist:after{clear:both}.tagchecklist span{display:block;margin-left:25px;float:right;font-size:13px;line-height:1.8;white-space:nowrap;cursor:default}@media (max-width:600px){.tagchecklist span{margin-bottom:15px;font-size:16px;line-height:1.3}}.tagchecklist .ntdelbutton{margin:1px -17px 0 0;cursor:pointer;width:20px;height:20px;display:block;float:right;text-indent:0;overflow:hidden;position:absolute;outline:0}.tagchecklist .ntdelbutton:before{content:"\f153";display:block;margin:2px 0;height:20px;width:20px;background:100% 0;color:#9ea7af;font:400 16px/1 dashicons;text-align:center;speak:none;-webkit-font-smoothing:antialiased}.tagchecklist .ntdelbutton:focus:before{color:#00a0d2}.tagsdiv+p{margin:0}.press-this .tagcloud-link{display:block;margin:0 16px 5px;padding:0;text-decoration:none;outline:0}.tagcloud-link:focus{text-decoration:underline}.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}.popular-tags a{padding:0 3px}.the-tagcloud{margin:0;padding:16px}.the-tagcloud a{text-decoration:none;outline:0}.the-tagcloud a:focus{text-decoration:underline}.tagcloud h3{margin:2px 0 12px}.add-category-name,input[type=search].categories-search{display:block;width:100%;padding:.85714em 1.07143em;border:0;-webkit-border-radius:0;border-radius:0;border-bottom:1px solid #e5e5e5;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (max-width:600px){.add-category-name,input[type=search].categories-search{font-size:16px}}.press-this .add-cat-toggle{float:left;margin-top:-45px;line-height:20px;padding:12px 10px 8px;color:#0073aa}.press-this .add-cat-toggle:focus{text-decoration:none;color:#00a0d2}.press-this .add-cat-toggle.is-toggled{padding:10px}.press-this .add-cat-toggle.is-toggled .dashicons:before{content:"\f179"}.add-category{border-bottom:1px solid #e5e5e5}.add-category.is-hidden{display:none}.add-category .add-cat-submit{position:absolute;top:0;left:0;border:0;-webkit-border-radius:0;border-radius:0;padding:12px 16px;background:#f7f7f7;border-right:1px solid #f1f1f1}.add-category .add-cat-submit:active,.add-category .add-cat-submit:focus,.add-category .add-cat-submit:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff}.postform-wrapper{padding:12px}.postform{display:block;margin:0;width:100%;height:34px;-webkit-border-radius:0;border-radius:0;border:1px solid #e5e5e5;background:#fff;-webkit-background-size:20px 20px;background-size:20px 20px;overflow:hidden;line-height:21px;text-overflow:ellipsis;text-decoration:none;white-space:nowrap;cursor:pointer;outline:0}.postform:focus{border-color:#0073aa;-webkit-box-shadow:0 0 0 3px #00a0d2;box-shadow:0 0 0 3px #00a0d2;outline:0;-moz-outline:none;-moz-user-focus:ignore}.alert,.scan{border-bottom:1px solid #e5e5e5}.postform::-ms-expand{display:none}.postform::-ms-value{background:0 0;color:#727272}.postform:-moz-focusring{color:transparent;text-shadow:0 0 0 #727272}.categories-select,.categories-select ul{margin:0;padding:0;list-style:none}.category{position:relative;display:block;padding:13px 16px 14px;cursor:pointer;background:#fff}.category.selected:focus,.category:focus{outline:0;background:#00a0d2;color:#fff}.category.selected{-webkit-box-shadow:inset -6px 0 0 #00a0d2;box-shadow:inset -6px 0 0 #00a0d2;background:#E9F5F9}.category.selected:after{display:inline-block;content:"\f147";position:absolute;top:13px;left:0;width:20px;height:20px;margin-left:10px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;color:#23282d;font-weight:400;font-style:normal;vertical-align:top;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.category.selected:focus:after{color:#fff}.categories-select ul .category{padding-right:24px}.categories-select ul ul .category{padding-right:32px}.categories-select ul ul ul .category{padding-right:40px}.categories-select ul ul ul ul .category{padding-right:48px}.categories-select ul ul ul ul ul .category{padding-right:56px}.categories-select ul ul ul ul ul ul .category{padding-right:64px}.categories-select .is-hidden{display:none}.categories-select .is-hidden.searched-parent{display:block}.categories-search-wrapper{position:relative}.categories-search-wrapper.is-hidden{display:none}.categories-search-wrapper label{position:absolute;top:50%;left:10px;margin-top:-10px;color:#9ea7af}html{overflow:auto;background:#fff;-webkit-box-shadow:10px 0 0 rgba(0,0,0,.3);box-shadow:10px 0 0 rgba(0,0,0,.3)}body{overflow-x:hidden;height:100%}@media (max-width:900px){body{font-size:16px}}@media (max-width:320px){body{font-size:14px}}.lt-ie9{overflow:visible}.adminbar{position:relative;width:100%;padding:0 .8em;min-height:3.2em;background:#23282d;color:#fff;z-index:9999}.adminbar:after,.adminbar:before{content:"";display:table}.adminbar:after{clear:both}.adminbar .dashicons{color:#999}.press-this .adminbar button{position:absolute;top:50%;left:6px;margin-top:-13px;padding:0 10px 1px;font-size:13px}.current-site{margin-top:.5625em;font-size:16px;line-height:44px;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media (max-width:600px){.current-site{margin:3px 0 0}}.current-site-link{text-decoration:none}.current-site-link:focus{outline:0}.current-site-link:focus .current-site-name{text-decoration:underline}.current-site-name{color:#ededed}@media (max-width:320px){.adminbar{min-height:45px}.current-site{margin:0;font-size:14px}.current-site-name{font-weight:600}}.current-site .dashicons-wordpress{position:relative;top:-1px;margin-left:10px;vertical-align:middle}.options,.options.closed .on-open,.options.open .on-closed{display:none}@media (max-width:900px){.options{display:block}.scan form{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.scan.is-hidden form{opacity:.2;pointer-events:none}}.options-panel-back.is-hidden{display:none}.options:focus .dashicons{color:#fff;text-decoration:none}.options .dashicons{margin-top:3px}.options{color:#00a0d2}.alert{position:relative;margin:0;padding:16px 50px;font-size:14px}.alert:before{content:"";position:absolute;top:50%;right:30px;width:8px;height:8px;margin-top:-4px;-webkit-border-radius:50%;border-radius:50%;background:#00a0d2}@media (max-width:600px){.alert{padding:16px 35px}.alert:before{right:15px}}.alert.is-error:before{background:red}.scan{position:relative}.scan-url{display:block;border:0;padding:.85714em 1.07143em;font-size:14px;width:100%}@media (max-width:600px){.scan-url{font-size:16px}}.scan-submit{position:absolute;top:0;left:0;bottom:0;padding:0 1.07143em;background:#f7f7f7;border:0;border-right:1px solid #f1f1f1;-webkit-border-radius:0;border-radius:0;color:#555;font-size:14px;line-height:1.6}.scan-submit:focus,.scan-submit:hover{background:#008ec2;border-color:#006799;color:#fff;outline:0}.scan-submit:active{background:#0073aa;border-color:#006799;color:#fff}.scan-submit:visited{color:#555}.wrapper{position:relative;margin-bottom:60px;margin-left:320px}.wrapper:after,.wrapper:before{content:"";display:table}.wrapper:after{clear:both}@media (max-width:900px){.wrapper{margin:0;width:100%}}.editor-wrapper{overflow:auto;float:right;width:100%}.editor-wrapper:after,.editor-wrapper:before{content:"";display:table}.editor-wrapper:after{clear:both}.editor{padding:0 1.5em 4.75em;max-width:700px;margin:0 auto}.spinner{height:20px;width:20px;display:inline-block;visibility:hidden;background:url(../images/spinner.gif) center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);line-height:1;vertical-align:middle}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}}.spinner.is-active{visibility:visible}@media (min-width:901px){.editor{max-width:760px}}@media (max-width:320px){.editor{padding:0}}.post-title,.post-title-placeholder{margin:0;padding:.83em 0;width:100%;border-bottom:1px solid #e5e5e5;font-size:32px;line-height:1.4;font-weight:700}.post-title-placeholder:active,.post-title-placeholder:focus,.post-title:active,.post-title:focus{outline:0;-webkit-box-shadow:inset 0 -3px 0 #00a0d2;box-shadow:inset 0 -3px 0 #00a0d2;border-color:#00a0d2}@media (max-width:900px){.post-title,.post-title-placeholder{font-size:24px}}@media (max-height:400px){.post-title,.post-title-placeholder{padding:15px 0;font-size:16px}}@media (max-width:320px){.post-title,.post-title-placeholder{font-size:16px;font-weight:600;padding:1.14286em 1.42857em}}.post-title{background:url(data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==);background:0 0,none}.post-title:before{content:"\a0";display:inline-block;width:0;speak:none}.post-title-placeholder{position:absolute;border:0;color:#9ea7af;z-index:-1}.post-title-placeholder.is-hidden{display:none}.media-list-container{position:relative;padding:2px 0;border-bottom:1px solid #e5e5e5;display:none}.media-list-inner-container{overflow:auto;max-height:150px;max-height:40vw}.media-list-container.has-media{display:block}.media-list-inner-container:after,.media-list-inner-container:before{content:"";display:table}.media-list-inner-container:after{clear:both}.media-list{margin:0;padding:0}@media (min-width:321px){.media-list-inner-container{max-height:250px;max-height:40vw}}.wppt-all-media-list{list-style:none;margin:0;padding:0}.is-embed:focus,.suggested-media-thumbnail:focus{outline:0;-webkit-box-shadow:inset 0 0 0 3px #00a0d2;box-shadow:inset 0 0 0 3px #00a0d2}.suggested-media-thumbnail{position:relative;display:block;float:right;width:16.66%;padding:16.66% 16.66% 0 0;background-position:center;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;background-color:#d8d8d8;color:#fff;color:rgba(255,255,255,.6);cursor:pointer}.suggested-media-thumbnail:active,.suggested-media-thumbnail:focus,.suggested-media-thumbnail:hover{color:#fff}.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{display:inline-block;position:absolute;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.suggested-media-thumbnail:before{right:50%;top:50%;margin:-20px -20px 0 0;font-size:40px}.suggested-media-thumbnail:after{content:"\f132";left:3%;bottom:2%}@media (min-width:601px){.media-list-inner-container{max-height:200px;max-height:18.75vw}.suggested-media-thumbnail{width:12.5%;padding:12.5% 12.5% 0 0}}.is-embed:before{content:"\f104";color:#fff;color:rgba(255,255,255,.9)}.is-embed.is-audio:active:before,.is-embed.is-audio:focus:before,.is-embed.is-audio:hover:before,.is-embed.is-tweet:active:before,.is-embed.is-tweet:focus:before,.is-embed.is-tweet:hover:before{color:#fff}.is-embed.is-video{background-color:#23282d}.is-embed.is-video:active:before,.is-embed.is-video:focus:before,.is-embed.is-video:hover:before{color:rgba(255,255,255,.2)}.is-embed.is-video:before{content:"\f236"}.is-embed.is-audio{background-color:#ff7d44}.is-embed.is-audio:before{content:"\f127"}.is-embed.is-tweet{background-color:#55acee}.is-embed.is-tweet:before{content:"\f301"}.no-media{margin:0;padding:0;border:0}.press-this-actions{position:fixed;bottom:0;right:0;width:100%;background:#f1f1f1;background:rgba(241,241,241,.9);border-top:1px solid #e5e5e5}.add-media{float:right;margin:14px 30px 14px 0;font-size:0}@media (max-width:320px){.add-media{margin:10px 10px 10px 0}}.insert-media{color:#9ea7af;float:right;margin:0;padding:0;border:0;border-left:1px solid #e5e5e5;-webkit-border-radius:0;border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.insert-media:active,.insert-media:focus,.insert-media:hover{margin:0;background:0 0;border-color:#e5e5e5;color:#23282d}.insert-media:active,.insert-media:focus{outline:0;color:#00a0d2;text-decoration:none}.insert-media .dashicons{padding:11px;width:63px;height:58px;font-size:40px}@media (max-width:320px){.insert-media .dashicons{width:55px;height:49px;padding:14px;font-size:20px}}#wp-link-wrap,.post-actions{font-size:13px}.post-actions{float:left;margin:14px 0 14px 30px}@media (max-width:320px){.post-actions{margin:10px 0 10px 10px}}.publish-button .saving-draft,.publish-button.is-saving .publish{display:none}.publish-button.is-saving .saving-draft{display:inline}.editor .wp-media-buttons{float:none}.editor div.mce-toolbar-grp{padding:.71429em 0;background:0 0;border:0}@media (max-height:400px),(max-width:320px){.editor div.mce-toolbar-grp{padding:0}}.mce-stack-layout:after,.mce-stack-layout:before{content:"";display:table}.mce-stack-layout:after{clear:both}.mce-container.mce-toolbar{float:right}.mce-container.mce-toolbar:nth-child(2){float:left}@media (max-width:600px){.mce-first .mce-btn:nth-child(3),.mce-first .mce-btn:nth-child(4){position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.mce-first .mce-btn:nth-child(3):focus,.mce-first .mce-btn:nth-child(4):focus{position:static;margin:1px;padding:inherit;height:auto;width:auto;overflow:visible;clip:auto;border:1px solid #999}}#wp-link-wrap input[type=text]{padding:3px 5px;margin:1px}@media screen and (max-width:782px){#wp-link-wrap{font-size:14px}#wp-link-wrap input[type=text]{padding:6px 10px}}#wp-link-wrap .howto{color:#666;font-style:italic}.options-panel{position:relative;float:left;margin-left:-320px;width:320px;border-right:1px solid #e5e5e5;font-size:14px;-webkit-box-shadow:-5001px 5000px 0 5000px #fff,-5000px 5000px 0 5000px #e5e5e5;box-shadow:-5001px 5000px 0 5000px #fff,-5000px 5000px 0 5000px #e5e5e5;outline:0}.options-panel-back{position:absolute;top:0;left:0;bottom:0;width:320px;outline:0}@media (max-width:900px){.press-this-actions{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.press-this-actions.is-hidden{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.options-panel{background:#fff;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.options-panel.is-hidden{visibility:hidden}.options-panel.is-off-screen{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@media (max-width:320px){.options-panel{margin-left:-100%;width:100%;border:0;-webkit-box-shadow:-5001px 5000px 0 5000px #fff;box-shadow:-5001px 5000px 0 5000px #fff}.options-panel-back{width:100%}}.post-options{background:#fff;position:absolute;left:0;width:100%;overflow-x:hidden}.post-options .post-option-contents{margin-right:3px;color:#32373c}.post-option-forward:before{position:absolute;top:50%;left:8px;margin-top:-10px;content:"\f341"}.post-option,.setting-modal,.setting-title{position:relative}.post-option-back:before{content:"\f345"}.lt-ie9 .options-panel,.lt-ie9 .post-options{border-right:1px solid #e5e5e5}.lt-ie9 .post-options.is-off-screen{border:0}.post-options .post-option{display:block;width:100%;padding:13px 14px 13px 37px;border-bottom:1px solid #e5e5e5;text-decoration:none;text-align:right;color:#9ea7af;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.post-options .post-option:focus{outline:0;-webkit-box-shadow:inset -5px 0 0 #00a0d2;box-shadow:inset -5px 0 0 #00a0d2;border-color:#e5e5e5}.is-off-screen>.post-option{left:100%}.is-hidden>.post-option{visibility:hidden}.post-option-title{display:inline-block;margin:0 8px 0 0;font-size:14px;font-weight:400}.setting-modal{top:0;right:0;width:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.setting-modal.is-hidden{visibility:hidden;height:0}.setting-modal.is-off-screen{right:100%}@media (min-width:1px){.is-off-screen>.post-option{left:auto;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.setting-modal.is-off-screen{right:0;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}}.press-this .modal-close{display:block;width:100%;padding:13px 14px;border-bottom:1px solid #e5e5e5;color:#00a0d2;text-decoration:none;text-align:right}.press-this .modal-close:focus{outline:0;-webkit-box-shadow:inset -5px 0 0 #00a0d2;box-shadow:inset -5px 0 0 #00a0d2;border-color:#e5e5e5}.setting-title{top:-1px;margin-right:11px}#pressthis{color:#404040;resize:none;padding-top:30px;font-size:16px}.wp-editor-wrap .quicktags-toolbar{background:0 0;border:none}.wp-editor-wrap .wp-editor-tools{z-index:0}.wp-editor-wrap .wp-editor-tabs{padding:2px}.wp-editor-wrap .wp-switch-editor{top:0;margin:3px 5px 0 0;padding:3px 8px;background:#f5f5f5;color:#555;border-color:#ccc}.wp-editor-wrap .wp-switch-editor:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-editor-wrap.html-active .switch-html,.wp-editor-wrap.tmce-active .switch-tmce{background:#fff;border-color:#d8d8d8}
\ No newline at end of file
index b99ba1a7e088b2727a49a2dd970b79043910ed34..3374a061fa5d1a2212cb52b408edf52614a0b24a 100644 (file)
@@ -312,7 +312,6 @@ strong {
 * Pushing buttons is what I do.
 */
 
-.button-subtle,
 .scan-submit {
        display: inline-block;
        margin: 0;
@@ -329,67 +328,6 @@ strong {
        -webkit-appearance: none;
 }
 
-.button-subtle {
-       background: none;
-       border: 0;
-       color: #0073aa;
-}
-
-.button-subtle:visited {
-       color: #0073aa;
-}
-
-.button-subtle:focus,
-.button-subtle:hover,
-.button-subtle:active,
-.edit-post-link:focus,
-.edit-post-link:hover,
-.edit-post-link:active {
-       color: #00a0d2;
-}
-
-.button-subtle:focus,
-.button-subtle:active,
-.edit-post-link:focus,
-.edit-post-link:active {
-       outline: 0;
-       text-decoration: underline;
-}
-
-.preview-button {
-       margin-right: 5px;
-}
-
-.button-reset {
-       margin: 0;
-       padding: 0;
-       border: 0;
-       background: none;
-       cursor: pointer;
-       -webkit-appearance: none;
-}
-
-.button-reset:focus {
-       outline: 0;
-}
-
-.button-link {
-       margin: 0;
-       padding: 0;
-       border: 0;
-       background: none;
-       color: #0073aa;
-       cursor: pointer;
-       -webkit-appearance: none;
-}
-
-.button-link:hover,
-.button-link:active,
-.button-link:focus {
-       color: #00a0d2;
-       text-decoration: underline;
-}
-
 .split-button {
        position: relative;
        display: inline-block;
@@ -421,7 +359,7 @@ strong {
        height: 0;
        border-style: solid;
        border-color: transparent;
-       content: '';
+       content: "";
 }
 
 .split-button-body:before {
@@ -443,6 +381,7 @@ strong {
        margin: 0;
        width: 100%;
        text-align: left;
+       line-height: 2;
 }
 
 .is-open .split-button-body {
@@ -462,13 +401,17 @@ strong {
        -webkit-appearance: none;
        line-height: 2;
        padding: 0 10px 1px;
-       background: #00a0d2;
-       border-color: #0073aa;
+       background: #0085ba;
+       border-color: #0073aa #006799 #006799;
        border-width: 1px;
        border-style: solid;
-       -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5), 0 1px 0 rgba( 0, 0, 0, 0.15 );
-       box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5 ), 0 1px 0 rgba( 0, 0, 0, 0.15 );
+       -webkit-box-shadow: 0 1px 0 #006799;
+       box-shadow: 0 1px 0 #006799;
        color: #fff;
+       text-shadow: 0 -1px 1px #006799,
+               1px 0 1px #006799,
+               0 1px 1px #006799,
+               -1px 0 1px #006799;
 }
 
 .split-button-primary {
@@ -486,42 +429,37 @@ strong {
        border-top-right-radius: 3px;
        -webkit-border-bottom-right-radius: 3px;
        border-bottom-right-radius: 3px;
-       border-left: 0 none;
+       border-left: 1px solid #006799;
        float: right;
 }
 
 .split-button-toggle i {
        margin: 4px 20px 3px 0;
        padding: 0 10px;
-       border-left: 1px solid #fff;
 }
 
 .split-button-primary:hover,
 .split-button-toggle:hover {
        outline: none;
-       background: #0091cd;
-       border-color: #0073aa;
+       background: #008ec2;
+       border-color: #006799;
 }
 
 .split-button-primary:focus,
 .split-button-toggle:focus {
        outline: none;
-       border-color: #0e3950;
-       -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
+       -webkit-box-shadow: 0 1px 0 #0073aa,
+               0 0 2px 1px #33b3db;
+       box-shadow: 0 1px 0 #0073aa,
+               0 0 2px 1px #33b3db;
 }
 
 .split-button-primary:active,
 .split-button-toggle:active {
        background: #0073aa;
-       border-color: #005082;
-       color: rgba( 255, 255, 255, 0.95 );
-       -webkit-box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 );
-       box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 );
+       border-color: #006799;
+       -webkit-box-shadow: inset 0 2px 10px #006799, 0 1px 0 #0073aa;
+       box-shadow: inset 0 2px 10px #006799, 0 1px 0 #0073aa;
 }
 
 /**
@@ -899,7 +837,7 @@ dd {
 }
 
 .tagchecklist .ntdelbutton:before {
-       content: '\f153';
+       content: "\f153";
        display: block;
        margin: 2px 0;
        height: 20px;
@@ -922,9 +860,10 @@ dd {
        margin: 0;
 }
 
-.tagcloud-link {
+.press-this .tagcloud-link {
        display: block;
-       padding: 0 16px;
+       margin: 0 16px 5px;
+       padding: 0;
        text-decoration: none;
        outline: 0;
 }
@@ -991,23 +930,24 @@ input[type="search"].categories-search,
        }
 }
 
-.add-cat-toggle {
+.press-this .add-cat-toggle {
        float: right;
        margin-top: -45px;
        line-height: 20px;
        padding: 12px 10px 8px;
+       color: #0073aa;
 }
 
-.add-cat-toggle:focus {
+.press-this .add-cat-toggle:focus {
        text-decoration: none;
        color: #00a0d2;
 }
 
-.add-cat-toggle.is-toggled {
+.press-this .add-cat-toggle.is-toggled {
        padding: 10px;
 }
 
-.add-cat-toggle.is-toggled .dashicons:before {
+.press-this .add-cat-toggle.is-toggled .dashicons:before {
        content: "\f179";
 }
 
@@ -1261,11 +1201,13 @@ html {
        color: #999;
 }
 
-.adminbar button {
+.press-this .adminbar button {
        position: absolute;
        top: 50%;
        right: 6px;
        margin-top: -13px;
+       padding: 0 10px 1px;
+       font-size: 13px;
 }
 
 @media (max-width: 320px) {
@@ -1364,7 +1306,7 @@ html {
 }
 
 .alert:before {
-       content: '';
+       content: "";
        position: absolute;
        top: 50%;
        left: 30px;
@@ -1438,15 +1380,15 @@ html {
 
 .scan-submit:hover,
 .scan-submit:focus {
-       background: #2991b7;
-       border-color: #20708e;
+       background: #008ec2;
+       border-color: #006799;
        color: #fff;
        outline: 0;
 }
 
 .scan-submit:active {
-       background: #2581a2;
-       border-color: #20708e;
+       background: #0073aa;
+       border-color: #006799;
        color: #fff;
 }
 
@@ -1596,7 +1538,7 @@ html {
 
 .post-title:before {
        /* Keeps empty container from collapsing */
-       content: '\a0';
+       content: "\a0";
        display: inline-block;
        width: 0;
        speak: none;
@@ -1799,7 +1741,9 @@ html {
                -ms-transform: translateY(0);
                transform: translateY(0);
                -webkit-transition: -webkit-transform .3s ease-in-out;
+               transition: -webkit-transform .3s ease-in-out;
                transition: transform .3s ease-in-out;
+               transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out;
        }
        .press-this-actions.is-hidden {
                -webkit-transform: translateY(100%);
@@ -1879,13 +1823,6 @@ html {
        }
 }
 
-.edit-post-link {
-       font-size: 13px;
-       display: inline-block;
-       text-decoration: none;
-       padding: 0 10px;
-}
-
 .publish-button .saving-draft,
 .publish-button.is-saving .publish {
        display: none;
@@ -2010,7 +1947,9 @@ html {
                -ms-transform: translateX(-100%);
                transform: translateX(-100%);
                -webkit-transition: -webkit-transform .3s ease-in-out;
+               transition: -webkit-transform .3s ease-in-out;
                transition: transform .3s ease-in-out;
+               transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out;
        }
 
        .options-panel.is-hidden {
@@ -2088,13 +2027,16 @@ html {
        white-space: nowrap;
        overflow: hidden;
        -webkit-transition: -webkit-transform .3s ease-in-out;
+       transition: -webkit-transform .3s ease-in-out;
        transition: transform .3s ease-in-out;
+       transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out;
 }
 
 .post-options .post-option:focus {
        outline: 0;
        -webkit-box-shadow: inset 5px 0 0 #00a0d2;
        box-shadow: inset 5px 0 0 #00a0d2;
+       border-color: #e5e5e5;
 }
 
 .is-off-screen > .post-option {
@@ -2128,7 +2070,9 @@ html {
        width: 100%;
        overflow: hidden;
        -webkit-transition: -webkit-transform .3s ease-in-out;
+       transition: -webkit-transform .3s ease-in-out;
        transition: transform .3s ease-in-out;
+       transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out;
 }
 
 .setting-modal.is-hidden {
@@ -2149,7 +2093,7 @@ html {
        }
 }
 
-.modal-close {
+.press-this .modal-close {
        display: block;
        width: 100%;
        padding: 13px 14px;
@@ -2159,10 +2103,11 @@ html {
        text-align: left;
 }
 
-.modal-close:focus {
+.press-this .modal-close:focus {
        outline: 0;
        -webkit-box-shadow: inset 5px 0 0 #00a0d2;
        box-shadow: inset 5px 0 0 #00a0d2;
+       border-color: #e5e5e5;
 }
 
 .setting-title {
index 67e59e134178e4dc53fb87e3a50937d73f95bc1c..4ce6fa596582a8e802517dcf225cf33c5bdbadc7 100644 (file)
@@ -1 +1 @@
-pre,textarea{overflow:auto}body,fieldset{margin:0}.screen-reader-text,fieldset,legend,td,th{padding:0}.adminbar:after,.clearfix:after,.editor-wrapper:after,.mce-stack-layout:after,.media-list-inner-container:after,.tagchecklist:after,.wrapper:after,h1,h2,h3,h4,h5,h6{clear:both}b,dt,optgroup,strong{font-weight:700}.current-site,.post-options .post-option,.postform{text-overflow:ellipsis;white-space:nowrap}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){*,:after,:before{-webkit-font-smoothing:antialiased}}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}fieldset,img,legend{border:0}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}table{border-collapse:collapse;border-spacing:0}.clearfix:after,.clearfix:before{content:"";display:table}.hide-if-js{display:none}.screen-reader-text{position:absolute;margin:-1px;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}body,button,input,select,textarea{color:#404040;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:20px;font-weight:400;line-height:1.6}p{margin-bottom:1.5em}.button-subtle,.scan-submit{display:inline-block;margin:0;padding:0 10px 1px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px;font-size:13px;line-height:2;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none}.button-link,.button-reset{cursor:pointer;-webkit-appearance:none;padding:0;border:0;background:0 0}.button-subtle{background:0 0;border:0;color:#0073aa}.button-subtle:visited{color:#0073aa}.button-subtle:active,.button-subtle:focus,.button-subtle:hover,.edit-post-link:active,.edit-post-link:focus,.edit-post-link:hover{color:#00a0d2}.button-subtle:active,.button-subtle:focus,.edit-post-link:active,.edit-post-link:focus{outline:0;text-decoration:underline}.preview-button{margin-right:5px}.button-reset{margin:0}.button-reset:focus{outline:0}.button-link{margin:0;color:#0073aa}.button-link:active,.button-link:focus,.button-link:hover{color:#00a0d2;text-decoration:underline}.split-button{position:relative;display:inline-block;vertical-align:middle}.split-button-body{display:none;position:absolute;bottom:39px;right:0;border:1px solid #ddd;background-color:#fff;min-width:180px;max-width:100%;margin:0;padding:8px;list-style:none;-webkit-box-shadow:1px 0 4px rgba(0,0,0,.15);box-shadow:1px 0 4px rgba(0,0,0,.15)}.split-button-body:after,.split-button-body:before{position:absolute;right:12px;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:''}.split-button-body:before{bottom:-18px;border-top-color:#ccc;border-width:9px;right:11px}.split-button-body:after{bottom:-16px;border-top-color:#fff;border-width:8px}.split-button-body .split-button-option{display:block;padding:5px 15px;margin:0;width:100%;text-align:left}.is-open .split-button-body{display:block}.split-button-primary,.split-button-toggle{-webkit-border-radius:0;border-radius:0;display:block;margin:0;font-size:13px;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-appearance:none;line-height:2;padding:0 10px 1px;background:#00a0d2;border-color:#0073aa;border-width:1px;border-style:solid;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff}.split-button-primary{-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-right:0 none;float:left}.split-button-toggle{padding:0;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border-left:0 none;float:right}.split-button-toggle i{margin:4px 20px 3px 0;padding:0 10px;border-left:1px solid #fff}.split-button-primary:hover,.split-button-toggle:hover{outline:0;background:#0091cd;border-color:#0073aa}.split-button-primary:focus,.split-button-toggle:focus{outline:0;border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.split-button-primary:active,.split-button-toggle:active{background:#0073aa;border-color:#005082;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1)}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline}[type=checkbox],[type=radio]{padding:0}[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}[type=text],[type=email],[type=url],[type=password],[type=search],textarea{padding:.4em .75em;color:#32373c;border:1px solid #ccc}[type=text]:focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=search]:focus,textarea:focus{color:#32373c;outline:0}textarea{padding-left:3px;vertical-align:top}a,a:visited{color:#0073aa}a:active,a:focus,a:hover{color:#00a0d2}ol,ul{margin:0 0 1.5em 3em}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-left:1.5em}dd{margin:0 1.5em 1.5em}#post-formats-select br{display:none}.post-format{width:1px;height:1px;position:absolute;top:-9999px}.lt-ie9 .post-format{margin:17px 12px 0 13px;position:static;top:auto;float:left;width:16px;height:16px}.add-category,.post-format-icon,.tagsdiv .ajaxtag,.tagsdiv .newtag{position:relative}.post-format-icon{display:block;padding:13px 2px 14px 13px;cursor:pointer}.post-format-icon:after,.post-format-icon:before{content:"";display:inline-block;width:20px;height:20px;margin-right:10px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;color:#9ea7af;font-style:normal;text-align:center;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.category.selected:after,.post-format-icon:after,.post-format-icon:before{font-weight:400;vertical-align:top;-webkit-transition:color .1s ease-in 0}.post-format-icon:before{content:"\f109"}.post-format-icon:after{display:none;content:"\f147";float:right}.post-format:checked+.post-format-icon{-webkit-box-shadow:inset 6px 0 0 #00a0d2;box-shadow:inset 6px 0 0 #00a0d2;background:rgba(46,162,204,.1)}.post-format:checked+.post-format-icon:after,.post-format:checked+.post-format-icon:before{color:#32373c}.post-format:focus+.post-format-icon{background:#00a0d2;color:#fff}.post-format:focus+.post-format-icon:after,.post-format:focus+.post-format-icon:before{color:#fff}.post-format:checked+.post-format-icon:after{display:block}.lt-ie9 .post-format-icon{margin-left:16px}.post-format-aside:before{content:"\f123"}.post-format-image:before{content:"\f128"}.post-format-video:before{content:"\f126"}.post-format-audio:before{content:"\f127"}.post-format-quote:before{content:"\f122"}.post-format-link:before{content:"\f103"}.post-format-gallery:before{content:"\f161"}.tagsdiv p{margin:0}.tagsdiv .newtag{display:block;padding:11px 58px 11px 16px;width:100%;border:0;border-bottom:1px solid #e5e5e5;font-size:16px}.tagsdiv .tagadd{position:absolute;top:0;right:0;bottom:1px;border:0;-webkit-border-radius:0;border-radius:0;margin:0;padding:0 16px;background:#f7f7f7;border-left:1px solid #f1f1f1;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .tagadd:active,.tagsdiv .tagadd:focus,.tagsdiv .tagadd:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .howto{color:#727272;font-style:italic;margin:10px 0 6px 16px}.ac_results{padding:0;margin:-1px 0 0 -1px;list-style:none;position:absolute;z-index:10000;display:none;border:1px solid #d8d8d8;background-color:#fff;font-size:14px}.ac_results li{padding:6px 16px;white-space:nowrap;color:#101010;text-align:left}.ac_results .ac_over{background-color:#00a0d2;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}.tagchecklist{padding:16px 28px 5px}.tagchecklist:after,.tagchecklist:before{content:"";display:table}.tagchecklist span{display:block;margin-right:25px;float:left;font-size:13px;line-height:1.8;white-space:nowrap;cursor:default}@media (max-width:600px){.tagchecklist span{margin-bottom:15px;font-size:16px;line-height:1.3}}.tagchecklist .ntdelbutton{margin:1px 0 0 -17px;cursor:pointer;width:20px;height:20px;display:block;float:left;text-indent:0;overflow:hidden;position:absolute;outline:0}.tagchecklist .ntdelbutton:before{content:'\f153';display:block;margin:2px 0;height:20px;width:20px;background:0 0;color:#9ea7af;font:400 16px/1 dashicons;text-align:center;speak:none;-webkit-font-smoothing:antialiased}.category.selected:after,.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{font-family:dashicons;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tagchecklist .ntdelbutton:focus:before{color:#00a0d2}.tagsdiv+p{margin:0}.tagcloud-link{display:block;padding:0 16px;text-decoration:none;outline:0}.tagcloud-link:focus{text-decoration:underline}.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}.popular-tags a{padding:0 3px}.the-tagcloud{margin:0;padding:16px}.the-tagcloud a{text-decoration:none;outline:0}.the-tagcloud a:focus{text-decoration:underline}.tagcloud h3{margin:2px 0 12px}.add-category-name,input[type=search].categories-search{display:block;width:100%;padding:.85714em 1.07143em;border:0;-webkit-border-radius:0;border-radius:0;border-bottom:1px solid #e5e5e5;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (max-width:600px){.add-category-name,input[type=search].categories-search{font-size:16px}}.add-cat-toggle{float:right;margin-top:-45px;line-height:20px;padding:12px 10px 8px}.add-cat-toggle:focus{text-decoration:none;color:#00a0d2}.add-cat-toggle.is-toggled{padding:10px}.add-cat-toggle.is-toggled .dashicons:before{content:"\f179"}.add-category{border-bottom:1px solid #e5e5e5}.add-category.is-hidden{display:none}.add-category .add-cat-submit{position:absolute;top:0;right:0;border:0;-webkit-border-radius:0;border-radius:0;padding:12px 16px;background:#f7f7f7;border-left:1px solid #f1f1f1}.alert,.scan{border-bottom:1px solid #e5e5e5}.add-category .add-cat-submit:active,.add-category .add-cat-submit:focus,.add-category .add-cat-submit:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff}.postform-wrapper{padding:12px}.postform{display:block;margin:0;width:100%;height:34px;-webkit-border-radius:0;border-radius:0;border:1px solid #e5e5e5;background:#fff;-webkit-background-size:20px 20px;background-size:20px 20px;overflow:hidden;line-height:21px;text-decoration:none;vertical-align:top;cursor:pointer;outline:0}.postform:focus{border-color:#0073aa;-webkit-box-shadow:0 0 0 3px #00a0d2;box-shadow:0 0 0 3px #00a0d2;outline:0;-moz-outline:none;-moz-user-focus:ignore}.postform::-ms-expand{display:none}.postform::-ms-value{background:0 0;color:#727272}.postform:-moz-focusring{color:transparent;text-shadow:0 0 0 #727272}.categories-select,.categories-select ul{margin:0;padding:0;list-style:none}.category{position:relative;display:block;padding:13px 16px 14px;cursor:pointer;background:#fff}.category.selected:focus,.category:focus{outline:0;background:#00a0d2;color:#fff}.category.selected{-webkit-box-shadow:inset 6px 0 0 #00a0d2;box-shadow:inset 6px 0 0 #00a0d2;background:#E9F5F9}.category.selected:after{display:inline-block;content:"\f147";position:absolute;top:13px;right:0;width:20px;height:20px;margin-right:10px;font-size:20px;line-height:1;text-decoration:inherit;color:#23282d;text-align:center;transition:color .1s ease-in 0}.category.selected:focus:after{color:#fff}.categories-select ul .category{padding-left:24px}.categories-select ul ul .category{padding-left:32px}.categories-select ul ul ul .category{padding-left:40px}.categories-select ul ul ul ul .category{padding-left:48px}.categories-select ul ul ul ul ul .category{padding-left:56px}.categories-select ul ul ul ul ul ul .category{padding-left:64px}.categories-select .is-hidden{display:none}.categories-select .is-hidden.searched-parent{display:block}.categories-search-wrapper{position:relative}.categories-search-wrapper.is-hidden{display:none}.categories-search-wrapper label{position:absolute;top:50%;right:10px;margin-top:-10px;color:#9ea7af}html{overflow:auto;background:#fff;-webkit-box-shadow:-10px 0 0 rgba(0,0,0,.3);box-shadow:-10px 0 0 rgba(0,0,0,.3)}body{overflow-x:hidden;height:100%}@media (max-width:900px){body{font-size:16px}}.lt-ie9{overflow:visible}.adminbar{position:relative;width:100%;padding:0 .8em;min-height:3.2em;background:#23282d;color:#fff;z-index:9999}.adminbar:after,.adminbar:before{content:"";display:table}.adminbar .dashicons{color:#999}.adminbar button{position:absolute;top:50%;right:6px;margin-top:-13px}@media (max-width:320px){body{font-size:14px}.adminbar{min-height:45px}}.current-site{margin-top:.5625em;font-size:16px;line-height:44px;font-weight:400;overflow:hidden}@media (max-width:600px){.current-site{margin:3px 0 0}}.current-site-link{text-decoration:none}.current-site-link:focus{outline:0}.current-site-link:focus .current-site-name{text-decoration:underline}.current-site-name{color:#ededed}@media (max-width:320px){.current-site{margin:0;font-size:14px}.current-site-name{font-weight:600}}.current-site .dashicons-wordpress{position:relative;top:-1px;margin-right:10px;vertical-align:middle}.options,.options.closed .on-open,.options.open .on-closed{display:none}@media (max-width:900px){.options{display:block}}.options-panel-back.is-hidden{display:none}.options:focus .dashicons{color:#fff;text-decoration:none}.options .dashicons{margin-top:3px}.options{color:#00a0d2}.alert{position:relative;margin:0;padding:16px 50px;font-size:14px}.alert:before{content:'';position:absolute;top:50%;left:30px;width:8px;height:8px;margin-top:-4px;-webkit-border-radius:50%;border-radius:50%;background:#00a0d2}@media (max-width:600px){.alert{padding:16px 35px}.alert:before{left:15px}}.alert.is-error:before{background:red}.scan{position:relative}.scan-url{display:block;border:0;padding:.85714em 1.07143em;font-size:14px;width:100%}.editor-wrapper:after,.editor-wrapper:before,.wrapper:after,.wrapper:before{content:"";display:table}@media (max-width:600px){.scan-url{font-size:16px}}.scan-submit{position:absolute;top:0;right:0;bottom:0;padding:0 1.07143em;background:#f7f7f7;border:0;border-left:1px solid #f1f1f1;-webkit-border-radius:0;border-radius:0;color:#555;font-size:14px;line-height:1.6}.scan-submit:focus,.scan-submit:hover{background:#2991b7;border-color:#20708e;color:#fff;outline:0}.scan-submit:active{background:#2581a2;border-color:#20708e;color:#fff}.scan-submit:visited{color:#555}.wrapper{position:relative;margin-bottom:60px;margin-right:320px}@media (max-width:900px){.scan form{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.scan.is-hidden form{opacity:.2;pointer-events:none}.wrapper{margin:0;width:100%}}.editor-wrapper{overflow:auto;float:left;width:100%}.editor{padding:0 1.5em 4.75em;max-width:700px;margin:0 auto}.spinner{height:20px;width:20px;display:inline-block;visibility:hidden;background:url(../images/spinner.gif) center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);line-height:1;vertical-align:middle}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}}.spinner.is-active{visibility:visible}@media (min-width:901px){.editor{max-width:760px}}@media (max-width:320px){.editor{padding:0}}.post-title,.post-title-placeholder{margin:0;padding:.83em 0;width:100%;border-bottom:1px solid #e5e5e5;font-size:32px;line-height:1.4;font-weight:700}.post-title-placeholder:active,.post-title-placeholder:focus,.post-title:active,.post-title:focus{outline:0;-webkit-box-shadow:inset 0 -3px 0 #00a0d2;box-shadow:inset 0 -3px 0 #00a0d2;border-color:#00a0d2}@media (max-width:900px){.post-title,.post-title-placeholder{font-size:24px}}@media (max-height:400px){.post-title,.post-title-placeholder{padding:15px 0;font-size:16px}}@media (max-width:320px){.post-title,.post-title-placeholder{font-size:16px;font-weight:600;padding:1.14286em 1.42857em}}.post-title{background:url(data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==);background:0 0,none}.post-title:before{content:'\a0';display:inline-block;width:0;speak:none}.post-title-placeholder{position:absolute;border:0;color:#9ea7af;z-index:-1}.is-embed.is-audio:active:before,.is-embed.is-audio:focus:before,.is-embed.is-audio:hover:before,.is-embed.is-tweet:active:before,.is-embed.is-tweet:focus:before,.is-embed.is-tweet:hover:before,.is-embed:before,.suggested-media-thumbnail:active,.suggested-media-thumbnail:focus,.suggested-media-thumbnail:hover{color:#fff}.post-title-placeholder.is-hidden{display:none}.media-list-container{position:relative;padding:2px 0;border-bottom:1px solid #e5e5e5;display:none}.media-list-inner-container{overflow:auto;max-height:150px;max-height:40vw}.media-list-container.has-media{display:block}.media-list-inner-container:after,.media-list-inner-container:before{content:"";display:table}.media-list{margin:0;padding:0}@media (min-width:321px){.media-list-inner-container{max-height:250px;max-height:40vw}}.wppt-all-media-list{list-style:none;margin:0;padding:0}.is-embed:focus,.suggested-media-thumbnail:focus{outline:0;-webkit-box-shadow:inset 0 0 0 3px #00a0d2;box-shadow:inset 0 0 0 3px #00a0d2}.suggested-media-thumbnail{position:relative;display:block;float:left;width:16.66%;padding:16.66% 0 0 16.66%;background-position:center;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;background-color:#d8d8d8;color:#fff;color:rgba(255,255,255,.6);cursor:pointer}.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{display:inline-block;position:absolute;font-size:20px;line-height:1;text-decoration:inherit;font-weight:400;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0}.suggested-media-thumbnail:before{left:50%;top:50%;margin:-20px 0 0 -20px;font-size:40px}.suggested-media-thumbnail:after{content:"\f132";right:3%;bottom:2%}@media (min-width:601px){.media-list-inner-container{max-height:200px;max-height:18.75vw}.suggested-media-thumbnail{width:12.5%;padding:12.5% 0 0 12.5%}}.is-embed:before{content:"\f104";color:rgba(255,255,255,.9)}.is-embed.is-video{background-color:#23282d}.is-embed.is-video:active:before,.is-embed.is-video:focus:before,.is-embed.is-video:hover:before{color:rgba(255,255,255,.2)}.is-embed.is-video:before{content:"\f236"}.is-embed.is-audio{background-color:#ff7d44}.is-embed.is-audio:before{content:"\f127"}.is-embed.is-tweet{background-color:#55acee}.is-embed.is-tweet:before{content:"\f301"}.no-media{margin:0;padding:0;border:0}.press-this-actions{position:fixed;bottom:0;left:0;width:100%;background:#f1f1f1;background:rgba(241,241,241,.9);border-top:1px solid #e5e5e5}.add-media{float:left;margin:14px 0 14px 30px;font-size:0}@media (max-width:320px){.add-media{margin:10px 0 10px 10px}}.insert-media{color:#9ea7af;float:left;margin:0;padding:0;border:0;border-right:1px solid #e5e5e5;-webkit-border-radius:0;border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.insert-media:active,.insert-media:focus,.insert-media:hover{margin:0;background:0 0;border-color:#e5e5e5;color:#23282d}.insert-media:active,.insert-media:focus{outline:0;color:#00a0d2;text-decoration:none}.insert-media .dashicons{padding:11px;width:63px;height:58px;font-size:40px}@media (max-width:320px){.insert-media .dashicons{width:55px;height:49px;padding:14px;font-size:20px}}#wp-link-wrap,.post-actions{font-size:13px}.post-actions{float:right;margin:14px 30px 14px 0}@media (max-width:320px){.post-actions{margin:10px 10px 10px 0}}.edit-post-link{font-size:13px;display:inline-block;text-decoration:none;padding:0 10px}.publish-button .saving-draft,.publish-button.is-saving .publish{display:none}.publish-button.is-saving .saving-draft{display:inline}.editor .wp-media-buttons{float:none}.editor div.mce-toolbar-grp{padding:.71429em 0;background:0 0;border:0}@media (max-height:400px),(max-width:320px){.editor div.mce-toolbar-grp{padding:0}}.mce-stack-layout:after,.mce-stack-layout:before{content:"";display:table}.mce-container.mce-toolbar{float:left}.mce-container.mce-toolbar:nth-child(2){float:right}@media (max-width:600px){.mce-first .mce-btn:nth-child(3),.mce-first .mce-btn:nth-child(4){position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.mce-first .mce-btn:nth-child(3):focus,.mce-first .mce-btn:nth-child(4):focus{position:static;margin:1px;padding:inherit;height:auto;width:auto;overflow:visible;clip:auto;border:1px solid #999}}#wp-link-wrap input[type=text]{padding:3px 5px;margin:1px}@media screen and (max-width:782px){#wp-link-wrap{font-size:14px}#wp-link-wrap input[type=text]{padding:6px 10px}}#wp-link-wrap .howto{color:#666;font-style:italic}.options-panel{position:relative;float:right;margin-right:-320px;width:320px;border-left:1px solid #e5e5e5;font-size:14px;-webkit-box-shadow:5001px 5000px 0 5000px #fff,5000px 5000px 0 5000px #e5e5e5;box-shadow:5001px 5000px 0 5000px #fff,5000px 5000px 0 5000px #e5e5e5;outline:0}.options-panel-back{position:absolute;top:0;right:0;bottom:0;width:320px;outline:0}@media (max-width:900px){.press-this-actions{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out}.press-this-actions.is-hidden{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.options-panel{background:#fff;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);-webkit-transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out}.options-panel.is-hidden{visibility:hidden}.options-panel.is-off-screen{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@media (max-width:320px){.options-panel{margin-right:-100%;width:100%;border:0;-webkit-box-shadow:5001px 5000px 0 5000px #fff;box-shadow:5001px 5000px 0 5000px #fff}.options-panel-back{width:100%}}.post-options{background:#fff;position:absolute;right:0;width:100%;overflow-x:hidden}.post-options .post-option-contents{margin-left:3px;color:#32373c}.post-option-forward:before{position:absolute;top:50%;right:8px;margin-top:-10px;content:"\f345"}.post-option,.setting-modal,.setting-title{position:relative}.post-option-back:before{content:"\f341"}.lt-ie9 .options-panel,.lt-ie9 .post-options{border-left:1px solid #e5e5e5}.lt-ie9 .post-options.is-off-screen{border:0}.modal-close,.post-options .post-option{border-bottom:1px solid #e5e5e5;text-decoration:none;text-align:left}.post-options .post-option{display:block;padding:13px 37px 13px 14px;color:#9ea7af;transition:transform .3s ease-in-out}.post-options .post-option,.setting-modal{width:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out}.post-options .post-option:focus{outline:0;-webkit-box-shadow:inset 5px 0 0 #00a0d2;box-shadow:inset 5px 0 0 #00a0d2}.is-off-screen>.post-option{right:100%}.is-hidden>.post-option{visibility:hidden}.post-option-title{display:inline-block;margin:0 0 0 8px;font-size:14px;font-weight:400}.setting-modal{top:0;left:0;transition:transform .3s ease-in-out}.setting-modal.is-hidden{visibility:hidden;height:0}.setting-modal.is-off-screen{left:100%}@media (min-width:1px){.is-off-screen>.post-option{right:auto;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.setting-modal.is-off-screen{left:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}}.modal-close{display:block;width:100%;padding:13px 14px;color:#00a0d2}.modal-close:focus{outline:0;-webkit-box-shadow:inset 5px 0 0 #00a0d2;box-shadow:inset 5px 0 0 #00a0d2}.setting-title{top:-1px;margin-left:11px}#pressthis{color:#404040;resize:none;padding-top:30px;font-size:16px}.wp-editor-wrap .quicktags-toolbar{background:0 0;border:none}.wp-editor-wrap .wp-editor-tools{z-index:0}.wp-editor-wrap .wp-editor-tabs{padding:2px}.wp-editor-wrap .wp-switch-editor{top:0;margin:3px 0 0 5px;padding:3px 8px;background:#f5f5f5;color:#555;border-color:#ccc}.wp-editor-wrap .wp-switch-editor:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-editor-wrap.html-active .switch-html,.wp-editor-wrap.tmce-active .switch-tmce{background:#fff;border-color:#d8d8d8}
\ No newline at end of file
+body,fieldset{margin:0}.screen-reader-text,fieldset,legend,td,th{padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-resolution:144dpi){*,:after,:before{-webkit-font-smoothing:antialiased}}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}fieldset,img,legend{border:0}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.scan-submit,.split-button-primary,.split-button-toggle{-webkit-appearance:none;cursor:pointer;text-decoration:none;white-space:nowrap}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}.hide-if-js{display:none}.screen-reader-text{position:absolute;margin:-1px;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}body,button,input,select,textarea{color:#404040;font-family:"Open Sans",Helvetica,Arial,sans-serif;font-size:20px;font-weight:400;line-height:1.6}b,dt,strong{font-weight:700}h1,h2,h3,h4,h5,h6{clear:both}p{margin-bottom:1.5em}.scan-submit{display:inline-block;margin:0}.split-button{position:relative;display:inline-block;vertical-align:middle}.split-button-body{display:none;position:absolute;bottom:39px;right:0;border:1px solid #ddd;background-color:#fff;min-width:180px;max-width:100%;margin:0;padding:8px;list-style:none;-webkit-box-shadow:1px 0 4px rgba(0,0,0,.15);box-shadow:1px 0 4px rgba(0,0,0,.15)}.split-button-body:after,.split-button-body:before{position:absolute;right:12px;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.split-button-body:before{bottom:-18px;border-top-color:#ccc;border-width:9px;right:11px}.split-button-body:after{bottom:-16px;border-top-color:#fff;border-width:8px}.split-button-body .split-button-option{display:block;padding:5px 15px;margin:0;width:100%;text-align:left;line-height:2}.is-open .split-button-body{display:block}.split-button-primary,.split-button-toggle{-webkit-border-radius:0;border-radius:0;display:block;margin:0;font-size:13px;line-height:2;padding:0 10px 1px;background:#0085ba;border-color:#0073aa #006799 #006799;border-width:1px;border-style:solid;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.split-button-primary{-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border-right:0 none;float:left}.split-button-toggle{padding:0;-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border-left:1px solid #006799;float:right}.split-button-toggle i{margin:4px 20px 3px 0;padding:0 10px}.split-button-primary:hover,.split-button-toggle:hover{outline:0;background:#008ec2;border-color:#006799}.split-button-primary:focus,.split-button-toggle:focus{outline:0;-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.split-button-primary:active,.split-button-toggle:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa;box-shadow:inset 0 2px 10px #006799,0 1px 0 #0073aa}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}.postform,textarea{vertical-align:top}[type=checkbox],[type=radio]{padding:0}[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}[type=email],[type=url],[type=password],[type=search],[type=text],textarea{padding:.4em .75em;color:#32373c;border:1px solid #ccc}[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=search]:focus,[type=text]:focus,textarea:focus{color:#32373c;outline:0}textarea{overflow:auto;padding-left:3px}a,a:visited{color:#0073aa}a:active,a:focus,a:hover{color:#00a0d2}ol,ul{margin:0 0 1.5em 3em}ul{list-style:disc}ol{list-style:decimal}li>ol,li>ul{margin-bottom:0;margin-left:1.5em}dd{margin:0 1.5em 1.5em}#post-formats-select br{display:none}.post-format{width:1px;height:1px;position:absolute;top:-9999px}.lt-ie9 .post-format{margin:17px 12px 0 13px;position:static;top:auto;float:left;width:16px;height:16px}.add-category,.post-format-icon,.tagsdiv .ajaxtag,.tagsdiv .newtag{position:relative}.post-format-icon{display:block;padding:13px 2px 14px 13px;cursor:pointer}.post-format-icon:after,.post-format-icon:before{content:"";display:inline-block;width:20px;height:20px;margin-right:10px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;color:#9ea7af;font-weight:400;font-style:normal;vertical-align:top;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon:before{content:"\f109"}.post-format-icon:after{display:none;content:"\f147";float:right}.post-format:checked+.post-format-icon{-webkit-box-shadow:inset 6px 0 0 #00a0d2;box-shadow:inset 6px 0 0 #00a0d2;background:rgba(46,162,204,.1)}.post-format:checked+.post-format-icon:after,.post-format:checked+.post-format-icon:before{color:#32373c}.post-format:focus+.post-format-icon{background:#00a0d2;color:#fff}.post-format:focus+.post-format-icon:after,.post-format:focus+.post-format-icon:before{color:#fff}.post-format:checked+.post-format-icon:after{display:block}.lt-ie9 .post-format-icon{margin-left:16px}.post-format-aside:before{content:"\f123"}.post-format-image:before{content:"\f128"}.post-format-video:before{content:"\f126"}.post-format-audio:before{content:"\f127"}.post-format-quote:before{content:"\f122"}.post-format-link:before{content:"\f103"}.post-format-gallery:before{content:"\f161"}.tagsdiv p{margin:0}.tagsdiv .newtag{display:block;padding:11px 58px 11px 16px;width:100%;border:0;border-bottom:1px solid #e5e5e5;font-size:16px}.tagsdiv .tagadd{position:absolute;top:0;right:0;bottom:1px;border:0;-webkit-border-radius:0;border-radius:0;margin:0;padding:0 16px;background:#f7f7f7;border-left:1px solid #f1f1f1;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .tagadd:active,.tagsdiv .tagadd:focus,.tagsdiv .tagadd:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff;-webkit-box-shadow:none;box-shadow:none}.tagsdiv .howto{color:#727272;font-style:italic;margin:10px 0 6px 16px}.ac_results{padding:0;margin:-1px 0 0 -1px;list-style:none;position:absolute;z-index:10000;display:none;border:1px solid #d8d8d8;background-color:#fff;font-size:14px}.ac_results li{padding:6px 16px;white-space:nowrap;color:#101010;text-align:left}.ac_results .ac_over{background-color:#00a0d2;color:#fff;cursor:pointer}.ac_match{text-decoration:underline}.tagchecklist{padding:16px 28px 5px}.tagchecklist:after,.tagchecklist:before{content:"";display:table}.tagchecklist:after{clear:both}.tagchecklist span{display:block;margin-right:25px;float:left;font-size:13px;line-height:1.8;white-space:nowrap;cursor:default}@media (max-width:600px){.tagchecklist span{margin-bottom:15px;font-size:16px;line-height:1.3}}.tagchecklist .ntdelbutton{margin:1px 0 0 -17px;cursor:pointer;width:20px;height:20px;display:block;float:left;text-indent:0;overflow:hidden;position:absolute;outline:0}.tagchecklist .ntdelbutton:before{content:"\f153";display:block;margin:2px 0;height:20px;width:20px;background:0 0;color:#9ea7af;font:400 16px/1 dashicons;text-align:center;speak:none;-webkit-font-smoothing:antialiased}.tagchecklist .ntdelbutton:focus:before{color:#00a0d2}.tagsdiv+p{margin:0}.press-this .tagcloud-link{display:block;margin:0 16px 5px;padding:0;text-decoration:none;outline:0}.tagcloud-link:focus{text-decoration:underline}.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}.popular-tags a{padding:0 3px}.the-tagcloud{margin:0;padding:16px}.the-tagcloud a{text-decoration:none;outline:0}.the-tagcloud a:focus{text-decoration:underline}.tagcloud h3{margin:2px 0 12px}.add-category-name,input[type=search].categories-search{display:block;width:100%;padding:.85714em 1.07143em;border:0;-webkit-border-radius:0;border-radius:0;border-bottom:1px solid #e5e5e5;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none}@media (max-width:600px){.add-category-name,input[type=search].categories-search{font-size:16px}}.press-this .add-cat-toggle{float:right;margin-top:-45px;line-height:20px;padding:12px 10px 8px;color:#0073aa}.press-this .add-cat-toggle:focus{text-decoration:none;color:#00a0d2}.press-this .add-cat-toggle.is-toggled{padding:10px}.press-this .add-cat-toggle.is-toggled .dashicons:before{content:"\f179"}.add-category{border-bottom:1px solid #e5e5e5}.add-category.is-hidden{display:none}.add-category .add-cat-submit{position:absolute;top:0;right:0;border:0;-webkit-border-radius:0;border-radius:0;padding:12px 16px;background:#f7f7f7;border-left:1px solid #f1f1f1}.add-category .add-cat-submit:active,.add-category .add-cat-submit:focus,.add-category .add-cat-submit:hover{outline:0;background:#2991b7;border-color:#20708e;color:#fff}.postform-wrapper{padding:12px}.postform{display:block;margin:0;width:100%;height:34px;-webkit-border-radius:0;border-radius:0;border:1px solid #e5e5e5;background:#fff;-webkit-background-size:20px 20px;background-size:20px 20px;overflow:hidden;line-height:21px;text-overflow:ellipsis;text-decoration:none;white-space:nowrap;cursor:pointer;outline:0}.postform:focus{border-color:#0073aa;-webkit-box-shadow:0 0 0 3px #00a0d2;box-shadow:0 0 0 3px #00a0d2;outline:0;-moz-outline:none;-moz-user-focus:ignore}.alert,.scan{border-bottom:1px solid #e5e5e5}.postform::-ms-expand{display:none}.postform::-ms-value{background:0 0;color:#727272}.postform:-moz-focusring{color:transparent;text-shadow:0 0 0 #727272}.categories-select,.categories-select ul{margin:0;padding:0;list-style:none}.category{position:relative;display:block;padding:13px 16px 14px;cursor:pointer;background:#fff}.category.selected:focus,.category:focus{outline:0;background:#00a0d2;color:#fff}.category.selected{-webkit-box-shadow:inset 6px 0 0 #00a0d2;box-shadow:inset 6px 0 0 #00a0d2;background:#E9F5F9}.category.selected:after{display:inline-block;content:"\f147";position:absolute;top:13px;right:0;width:20px;height:20px;margin-right:10px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;color:#23282d;font-weight:400;font-style:normal;vertical-align:top;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.category.selected:focus:after{color:#fff}.categories-select ul .category{padding-left:24px}.categories-select ul ul .category{padding-left:32px}.categories-select ul ul ul .category{padding-left:40px}.categories-select ul ul ul ul .category{padding-left:48px}.categories-select ul ul ul ul ul .category{padding-left:56px}.categories-select ul ul ul ul ul ul .category{padding-left:64px}.categories-select .is-hidden{display:none}.categories-select .is-hidden.searched-parent{display:block}.categories-search-wrapper{position:relative}.categories-search-wrapper.is-hidden{display:none}.categories-search-wrapper label{position:absolute;top:50%;right:10px;margin-top:-10px;color:#9ea7af}html{overflow:auto;background:#fff;-webkit-box-shadow:-10px 0 0 rgba(0,0,0,.3);box-shadow:-10px 0 0 rgba(0,0,0,.3)}body{overflow-x:hidden;height:100%}@media (max-width:900px){body{font-size:16px}}@media (max-width:320px){body{font-size:14px}}.lt-ie9{overflow:visible}.adminbar{position:relative;width:100%;padding:0 .8em;min-height:3.2em;background:#23282d;color:#fff;z-index:9999}.adminbar:after,.adminbar:before{content:"";display:table}.adminbar:after{clear:both}.adminbar .dashicons{color:#999}.press-this .adminbar button{position:absolute;top:50%;right:6px;margin-top:-13px;padding:0 10px 1px;font-size:13px}.current-site{margin-top:.5625em;font-size:16px;line-height:44px;font-weight:400;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media (max-width:600px){.current-site{margin:3px 0 0}}.current-site-link{text-decoration:none}.current-site-link:focus{outline:0}.current-site-link:focus .current-site-name{text-decoration:underline}.current-site-name{color:#ededed}@media (max-width:320px){.adminbar{min-height:45px}.current-site{margin:0;font-size:14px}.current-site-name{font-weight:600}}.current-site .dashicons-wordpress{position:relative;top:-1px;margin-right:10px;vertical-align:middle}.options,.options.closed .on-open,.options.open .on-closed{display:none}@media (max-width:900px){.options{display:block}.scan form{-webkit-transition:opacity .3s ease-in-out;transition:opacity .3s ease-in-out}.scan.is-hidden form{opacity:.2;pointer-events:none}}.options-panel-back.is-hidden{display:none}.options:focus .dashicons{color:#fff;text-decoration:none}.options .dashicons{margin-top:3px}.options{color:#00a0d2}.alert{position:relative;margin:0;padding:16px 50px;font-size:14px}.alert:before{content:"";position:absolute;top:50%;left:30px;width:8px;height:8px;margin-top:-4px;-webkit-border-radius:50%;border-radius:50%;background:#00a0d2}@media (max-width:600px){.alert{padding:16px 35px}.alert:before{left:15px}}.alert.is-error:before{background:red}.scan{position:relative}.scan-url{display:block;border:0;padding:.85714em 1.07143em;font-size:14px;width:100%}@media (max-width:600px){.scan-url{font-size:16px}}.scan-submit{position:absolute;top:0;right:0;bottom:0;padding:0 1.07143em;background:#f7f7f7;border:0;border-left:1px solid #f1f1f1;-webkit-border-radius:0;border-radius:0;color:#555;font-size:14px;line-height:1.6}.scan-submit:focus,.scan-submit:hover{background:#008ec2;border-color:#006799;color:#fff;outline:0}.scan-submit:active{background:#0073aa;border-color:#006799;color:#fff}.scan-submit:visited{color:#555}.wrapper{position:relative;margin-bottom:60px;margin-right:320px}.wrapper:after,.wrapper:before{content:"";display:table}.wrapper:after{clear:both}@media (max-width:900px){.wrapper{margin:0;width:100%}}.editor-wrapper{overflow:auto;float:left;width:100%}.editor-wrapper:after,.editor-wrapper:before{content:"";display:table}.editor-wrapper:after{clear:both}.editor{padding:0 1.5em 4.75em;max-width:700px;margin:0 auto}.spinner{height:20px;width:20px;display:inline-block;visibility:hidden;background:url(../images/spinner.gif) center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);line-height:1;vertical-align:middle}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.spinner{background-image:url(../images/spinner-2x.gif)}}.spinner.is-active{visibility:visible}@media (min-width:901px){.editor{max-width:760px}}@media (max-width:320px){.editor{padding:0}}.post-title,.post-title-placeholder{margin:0;padding:.83em 0;width:100%;border-bottom:1px solid #e5e5e5;font-size:32px;line-height:1.4;font-weight:700}.post-title-placeholder:active,.post-title-placeholder:focus,.post-title:active,.post-title:focus{outline:0;-webkit-box-shadow:inset 0 -3px 0 #00a0d2;box-shadow:inset 0 -3px 0 #00a0d2;border-color:#00a0d2}@media (max-width:900px){.post-title,.post-title-placeholder{font-size:24px}}@media (max-height:400px){.post-title,.post-title-placeholder{padding:15px 0;font-size:16px}}@media (max-width:320px){.post-title,.post-title-placeholder{font-size:16px;font-weight:600;padding:1.14286em 1.42857em}}.post-title{background:url(data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==);background:0 0,none}.post-title:before{content:"\a0";display:inline-block;width:0;speak:none}.post-title-placeholder{position:absolute;border:0;color:#9ea7af;z-index:-1}.post-title-placeholder.is-hidden{display:none}.media-list-container{position:relative;padding:2px 0;border-bottom:1px solid #e5e5e5;display:none}.media-list-inner-container{overflow:auto;max-height:150px;max-height:40vw}.media-list-container.has-media{display:block}.media-list-inner-container:after,.media-list-inner-container:before{content:"";display:table}.media-list-inner-container:after{clear:both}.media-list{margin:0;padding:0}@media (min-width:321px){.media-list-inner-container{max-height:250px;max-height:40vw}}.wppt-all-media-list{list-style:none;margin:0;padding:0}.is-embed:focus,.suggested-media-thumbnail:focus{outline:0;-webkit-box-shadow:inset 0 0 0 3px #00a0d2;box-shadow:inset 0 0 0 3px #00a0d2}.suggested-media-thumbnail{position:relative;display:block;float:left;width:16.66%;padding:16.66% 0 0 16.66%;background-position:center;background-repeat:no-repeat;-webkit-background-size:cover;background-size:cover;background-color:#d8d8d8;color:#fff;color:rgba(255,255,255,.6);cursor:pointer}.suggested-media-thumbnail:active,.suggested-media-thumbnail:focus,.suggested-media-thumbnail:hover{color:#fff}.suggested-media-thumbnail:after,.suggested-media-thumbnail:before{display:inline-block;position:absolute;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.suggested-media-thumbnail:before{left:50%;top:50%;margin:-20px 0 0 -20px;font-size:40px}.suggested-media-thumbnail:after{content:"\f132";right:3%;bottom:2%}@media (min-width:601px){.media-list-inner-container{max-height:200px;max-height:18.75vw}.suggested-media-thumbnail{width:12.5%;padding:12.5% 0 0 12.5%}}.is-embed:before{content:"\f104";color:#fff;color:rgba(255,255,255,.9)}.is-embed.is-audio:active:before,.is-embed.is-audio:focus:before,.is-embed.is-audio:hover:before,.is-embed.is-tweet:active:before,.is-embed.is-tweet:focus:before,.is-embed.is-tweet:hover:before{color:#fff}.is-embed.is-video{background-color:#23282d}.is-embed.is-video:active:before,.is-embed.is-video:focus:before,.is-embed.is-video:hover:before{color:rgba(255,255,255,.2)}.is-embed.is-video:before{content:"\f236"}.is-embed.is-audio{background-color:#ff7d44}.is-embed.is-audio:before{content:"\f127"}.is-embed.is-tweet{background-color:#55acee}.is-embed.is-tweet:before{content:"\f301"}.no-media{margin:0;padding:0;border:0}.press-this-actions{position:fixed;bottom:0;left:0;width:100%;background:#f1f1f1;background:rgba(241,241,241,.9);border-top:1px solid #e5e5e5}.add-media{float:left;margin:14px 0 14px 30px;font-size:0}@media (max-width:320px){.add-media{margin:10px 0 10px 10px}}.insert-media{color:#9ea7af;float:left;margin:0;padding:0;border:0;border-right:1px solid #e5e5e5;-webkit-border-radius:0;border-radius:0;background:0 0;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.insert-media:active,.insert-media:focus,.insert-media:hover{margin:0;background:0 0;border-color:#e5e5e5;color:#23282d}.insert-media:active,.insert-media:focus{outline:0;color:#00a0d2;text-decoration:none}.insert-media .dashicons{padding:11px;width:63px;height:58px;font-size:40px}@media (max-width:320px){.insert-media .dashicons{width:55px;height:49px;padding:14px;font-size:20px}}#wp-link-wrap,.post-actions{font-size:13px}.post-actions{float:right;margin:14px 30px 14px 0}@media (max-width:320px){.post-actions{margin:10px 10px 10px 0}}.publish-button .saving-draft,.publish-button.is-saving .publish{display:none}.publish-button.is-saving .saving-draft{display:inline}.editor .wp-media-buttons{float:none}.editor div.mce-toolbar-grp{padding:.71429em 0;background:0 0;border:0}@media (max-height:400px),(max-width:320px){.editor div.mce-toolbar-grp{padding:0}}.mce-stack-layout:after,.mce-stack-layout:before{content:"";display:table}.mce-stack-layout:after{clear:both}.mce-container.mce-toolbar{float:left}.mce-container.mce-toolbar:nth-child(2){float:right}@media (max-width:600px){.mce-first .mce-btn:nth-child(3),.mce-first .mce-btn:nth-child(4){position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.mce-first .mce-btn:nth-child(3):focus,.mce-first .mce-btn:nth-child(4):focus{position:static;margin:1px;padding:inherit;height:auto;width:auto;overflow:visible;clip:auto;border:1px solid #999}}#wp-link-wrap input[type=text]{padding:3px 5px;margin:1px}@media screen and (max-width:782px){#wp-link-wrap{font-size:14px}#wp-link-wrap input[type=text]{padding:6px 10px}}#wp-link-wrap .howto{color:#666;font-style:italic}.options-panel{position:relative;float:right;margin-right:-320px;width:320px;border-left:1px solid #e5e5e5;font-size:14px;-webkit-box-shadow:5001px 5000px 0 5000px #fff,5000px 5000px 0 5000px #e5e5e5;box-shadow:5001px 5000px 0 5000px #fff,5000px 5000px 0 5000px #e5e5e5;outline:0}.options-panel-back{position:absolute;top:0;right:0;bottom:0;width:320px;outline:0}@media (max-width:900px){.press-this-actions{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.press-this-actions.is-hidden{-webkit-transform:translateY(100%);-ms-transform:translateY(100%);transform:translateY(100%)}.options-panel{background:#fff;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.options-panel.is-hidden{visibility:hidden}.options-panel.is-off-screen{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}}@media (max-width:320px){.options-panel{margin-right:-100%;width:100%;border:0;-webkit-box-shadow:5001px 5000px 0 5000px #fff;box-shadow:5001px 5000px 0 5000px #fff}.options-panel-back{width:100%}}.post-options{background:#fff;position:absolute;right:0;width:100%;overflow-x:hidden}.post-options .post-option-contents{margin-left:3px;color:#32373c}.post-option-forward:before{position:absolute;top:50%;right:8px;margin-top:-10px;content:"\f345"}.post-option,.setting-modal,.setting-title{position:relative}.post-option-back:before{content:"\f341"}.lt-ie9 .options-panel,.lt-ie9 .post-options{border-left:1px solid #e5e5e5}.lt-ie9 .post-options.is-off-screen{border:0}.post-options .post-option{display:block;width:100%;padding:13px 37px 13px 14px;border-bottom:1px solid #e5e5e5;text-decoration:none;text-align:left;color:#9ea7af;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.post-options .post-option:focus{outline:0;-webkit-box-shadow:inset 5px 0 0 #00a0d2;box-shadow:inset 5px 0 0 #00a0d2;border-color:#e5e5e5}.is-off-screen>.post-option{right:100%}.is-hidden>.post-option{visibility:hidden}.post-option-title{display:inline-block;margin:0 0 0 8px;font-size:14px;font-weight:400}.setting-modal{top:0;left:0;width:100%;overflow:hidden;-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.setting-modal.is-hidden{visibility:hidden;height:0}.setting-modal.is-off-screen{left:100%}@media (min-width:1px){.is-off-screen>.post-option{right:auto;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.setting-modal.is-off-screen{left:0;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}}.press-this .modal-close{display:block;width:100%;padding:13px 14px;border-bottom:1px solid #e5e5e5;color:#00a0d2;text-decoration:none;text-align:left}.press-this .modal-close:focus{outline:0;-webkit-box-shadow:inset 5px 0 0 #00a0d2;box-shadow:inset 5px 0 0 #00a0d2;border-color:#e5e5e5}.setting-title{top:-1px;margin-left:11px}#pressthis{color:#404040;resize:none;padding-top:30px;font-size:16px}.wp-editor-wrap .quicktags-toolbar{background:0 0;border:none}.wp-editor-wrap .wp-editor-tools{z-index:0}.wp-editor-wrap .wp-editor-tabs{padding:2px}.wp-editor-wrap .wp-switch-editor{top:0;margin:3px 0 0 5px;padding:3px 8px;background:#f5f5f5;color:#555;border-color:#ccc}.wp-editor-wrap .wp-switch-editor:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-editor-wrap.html-active .switch-html,.wp-editor-wrap.tmce-active .switch-tmce{background:#fff;border-color:#d8d8d8}
\ No newline at end of file
index 829044af673ade01763fb5b390ccbe0b666185ca..c4882b08cb697772ee129060fc5e7612b5856ecb 100644 (file)
@@ -462,8 +462,9 @@ div.revisions-controls > .wp-slider > .ui-slider-handle {
        -webkit-border-radius: 50%;
        border-radius: 50%;
        height: 18px;
-       margin-top: -3px;
+       margin-top: -5px;
        outline: none;
+       padding: 2px;
        position: absolute;
        width: 18px;
        z-index: 2;
@@ -472,27 +473,49 @@ div.revisions-controls > .wp-slider > .ui-slider-handle {
 }
 
 .wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
 .wp-slider .ui-slider-handle.focus {
-       background: #00a0d2;
-       border: 1px solid #0073aa;
-       -webkit-box-shadow: inset 0 1px 0 #78c8e6, 0 1px 0 rgba(0,0,0,.15);
-       box-shadow: inset 0 1px 0 #78c8e6, 0 1px 0 rgba(0,0,0,.15);
+       background: #f7f7f7;
+       border: 1px solid #ccc;
+       -webkit-box-shadow: 0 1px 0 #cccccc;
+       box-shadow: 0 1px 0 #cccccc;
 }
 
+.wp-slider .ui-slider-handle:hover,
+.wp-slider .ui-slider-handle.ui-state-hover {
+       background: #fafafa;
+       border-color: #999;
+}
+
+.wp-slider .ui-slider-handle:active,
+.wp-slider .ui-slider-handle.ui-state-active {
+       background: #eee;
+       border-color: #999;
+       -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+       box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+       -webkit-transform: translateY(1px);
+       -ms-transform: translateY(1px);
+       transform: translateY(1px);
+}
+
+
 .wp-slider .ui-slider-handle:before {
        background: none;
        position: absolute;
-       top: 0;
-       right: 0;
-       color: #fff;
+       top: 2px;
+       right: 2px;
+       color: #555;
        content: "\f229";
-       font: normal 18px/1 'dashicons';
+       font: normal 18px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
 }
 
+.wp-slider .ui-slider-handle:hover:before,
+.wp-slider .ui-slider-handle.ui-state-hover:before {
+       color: #23282d;
+}
+
 .wp-slider .ui-slider-handle.from-handle:before,
 .wp-slider .ui-slider-handle.to-handle:before {
        font-size: 20px !important;
@@ -500,19 +523,19 @@ div.revisions-controls > .wp-slider > .ui-slider-handle {
 }
 
 .wp-slider .ui-slider-handle.from-handle:before {
-       content: '\f139';
+       content: "\f141";
 }
 
 .wp-slider .ui-slider-handle.to-handle:before {
-       content: '\f141';
+       content: "\f139";
 }
 
 .rtl .wp-slider .ui-slider-handle.from-handle:before {
-       content: '\f141';
+       content: "\f139";
 }
 
 .rtl .wp-slider .ui-slider-handle.to-handle:before {
-       content: '\f139';
+       content: "\f141";
        left: -1px;
 }
 
index d2652e38d20ba21cd6ea5ed313b5dc21376e369d..d3ebecc3ffc3ed4a95d5c06ebaed0cda92dcb715 100644 (file)
@@ -462,8 +462,9 @@ div.revisions-controls > .wp-slider > .ui-slider-handle {
        -webkit-border-radius: 50%;
        border-radius: 50%;
        height: 18px;
-       margin-top: -3px;
+       margin-top: -5px;
        outline: none;
+       padding: 2px;
        position: absolute;
        width: 18px;
        z-index: 2;
@@ -472,27 +473,49 @@ div.revisions-controls > .wp-slider > .ui-slider-handle {
 }
 
 .wp-slider .ui-slider-handle,
-.wp-slider .ui-slider-handle.ui-state-hover,
 .wp-slider .ui-slider-handle.focus {
-       background: #00a0d2;
-       border: 1px solid #0073aa;
-       -webkit-box-shadow: inset 0 1px 0 #78c8e6, 0 1px 0 rgba(0,0,0,.15);
-       box-shadow: inset 0 1px 0 #78c8e6, 0 1px 0 rgba(0,0,0,.15);
+       background: #f7f7f7;
+       border: 1px solid #ccc;
+       -webkit-box-shadow: 0 1px 0 #cccccc;
+       box-shadow: 0 1px 0 #cccccc;
 }
 
+.wp-slider .ui-slider-handle:hover,
+.wp-slider .ui-slider-handle.ui-state-hover {
+       background: #fafafa;
+       border-color: #999;
+}
+
+.wp-slider .ui-slider-handle:active,
+.wp-slider .ui-slider-handle.ui-state-active {
+       background: #eee;
+       border-color: #999;
+       -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+       box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+       -webkit-transform: translateY(1px);
+       -ms-transform: translateY(1px);
+       transform: translateY(1px);
+}
+
+
 .wp-slider .ui-slider-handle:before {
        background: none;
        position: absolute;
-       top: 0;
-       left: 0;
-       color: #fff;
+       top: 2px;
+       left: 2px;
+       color: #555;
        content: "\f229";
-       font: normal 18px/1 'dashicons';
+       font: normal 18px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
 }
 
+.wp-slider .ui-slider-handle:hover:before,
+.wp-slider .ui-slider-handle.ui-state-hover:before {
+       color: #23282d;
+}
+
 .wp-slider .ui-slider-handle.from-handle:before,
 .wp-slider .ui-slider-handle.to-handle:before {
        font-size: 20px !important;
@@ -500,19 +523,19 @@ div.revisions-controls > .wp-slider > .ui-slider-handle {
 }
 
 .wp-slider .ui-slider-handle.from-handle:before {
-       content: '\f139';
+       content: "\f139";
 }
 
 .wp-slider .ui-slider-handle.to-handle:before {
-       content: '\f141';
+       content: "\f141";
 }
 
 .rtl .wp-slider .ui-slider-handle.from-handle:before {
-       content: '\f141';
+       content: "\f141";
 }
 
 .rtl .wp-slider .ui-slider-handle.to-handle:before {
-       content: '\f139';
+       content: "\f139";
        right: -1px;
 }
 
index ba7003c518fac0e418a2fc430ad389c427d531ee..ce7db35eeb2adc63824a1540c8d98a98bebfc99c 100644 (file)
 }
 
 .theme-browser .theme .theme-screenshot:after {
-       content: '';
+       content: "";
        display: block;
        padding-top: 66.66666%; /* using a 3/2 aspect ratio */
 }
 
 .theme-browser .theme .theme-update:before,
 .theme-browser .theme .theme-installed:before {
-       content: '\f463';
+       content: "\f463";
        display: inline-block;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        margin: 0 0 0 6px;
        opacity: 0.8;
        position: relative;
 
 .theme-browser .theme.add-new-theme a:after {
        display: block;
-       content: '';
+       content: "";
        background: transparent;
        background: rgba(0, 0, 0, 0);
        position: absolute;
        -webkit-border-radius: 50%;
        border-radius: 50%;
        display: inline-block;
-       content: '\f132';
+       content: "\f132";
        -webkit-font-smoothing: antialiased;
-       font: normal 74px/115px 'dashicons';
+       font: normal 74px/115px dashicons;
        width: 100px;
        height: 100px;
        vertical-align: middle;
        border-color: transparent;
        color: #fff;
        background: #0073aa;
-       content: '';
+       content: "";
 }
 
 .theme-browser .theme.add-new-theme .theme-name {
 }
 
 .theme-overlay .theme-header .close:before {
-       font: normal 22px/50px 'dashicons' !important;
+       font: normal 22px/50px dashicons !important;
        color: #777;
        display: inline-block;
-       content: '\f335';
+       content: "\f335";
        font-weight: 300;
 }
 
 
 .theme-overlay .theme-header .right:before,
 .theme-overlay .theme-header .left:before {
-       font: normal 20px/50px 'dashicons' !important;
+       font: normal 20px/50px dashicons !important;
        display: inline;
        font-weight: 300;
 }
@@ -647,7 +647,7 @@ body.folded .theme-overlay .theme-wrap {
 }
 
 .theme-overlay .screenshot:after {
-       content: '';
+       content: "";
        display: block;
        padding-top: 75%; /* using a 4/3 aspect ratio */
 }
@@ -682,7 +682,7 @@ body.folded .theme-overlay .theme-wrap {
 }
 
 .theme-overlay .screenshot.thumb:after {
-       content: '';
+       content: "";
        display: block;
        padding-top: 100%; /* using a 1/1 aspect ratio */
 }
@@ -753,10 +753,11 @@ body.folded .theme-overlay .theme-wrap {
 }
 
 .theme-overlay .theme-author {
+       margin: 15px 0 25px;
        color: #686868;
        font-size: 16px;
        font-weight: 400;
-       margin: 15px 0 25px;
+       line-height: inherit;
 }
 
 .theme-overlay .theme-author a {
@@ -786,24 +787,6 @@ body.folded .theme-overlay .theme-wrap {
        margin-left: 5px;
 }
 
-/* Theme Updates info */
-.theme-overlay .theme-update-message {
-       background: #fef7f1;
-       border: 1px solid #eee;
-       border-right: 4px solid #d54e21;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-       padding: 5px 20px 10px;
-}
-
-.theme-overlay .theme-update {
-       color: #23282d;
-       font-size: 18px;
-       display: inline-block;
-       line-height: 40px;
-       margin: 0;
-}
-
 .theme-overlay .parent-theme {
        background: #f7fcfe;
        border: 1px solid #eee;
@@ -1033,7 +1016,7 @@ body.folded .theme-overlay .theme-wrap {
        }
 
        .theme-browser .theme.add-new-theme span:after {
-               font: normal 60px/90px 'dashicons';
+               font: normal 60px/90px dashicons;
                width: 80px;
                height: 80px;
                top: 30%;
@@ -1079,7 +1062,7 @@ body.folded .theme-overlay .theme-wrap {
        background: #0073aa;
 }
 .theme-browser .theme .theme-installed:before {
-       content: '\f147';
+       content: "\f147";
 }
 .theme-browser .theme.is-installed .theme-actions .button-primary {
        display: none !important;
@@ -1172,57 +1155,23 @@ body.show-upload-theme p.no-themes {
        }
 }
 
+.theme-details .theme-rating {
+       line-height: 23px;
+}
+
 .theme-details .star-rating {
-       margin: 15px 0 0;
+       display: inline;
 }
 
-.theme-details .star-rating span:before {
-       color: #ffb900;
-       content: "\f154";
-       display: inline-block;
-       -webkit-font-smoothing: antialiased;
-       font: normal 20px/1 'dashicons';
-       vertical-align: top;
-}
-
-/* Half stars */
-.star-rating.rating-10 span.one:before,
-.star-rating.rating-30 span.two:before,
-.star-rating.rating-50 span.three:before,
-.star-rating.rating-70 span.four:before,
-.star-rating.rating-90 span.five:before {
-       content: "\f459";
-}
-
-/* Full stars */
-.star-rating.rating-20 span.one:before,
-.star-rating.rating-30 span.one:before,
-.star-rating.rating-40 span.one:before,
-.star-rating.rating-40 span.two:before,
-.star-rating.rating-50 span.one:before,
-.star-rating.rating-50 span.two:before,
-.star-rating.rating-60 span.one:before,
-.star-rating.rating-60 span.two:before,
-.star-rating.rating-60 span.three:before,
-.star-rating.rating-70 span.one:before,
-.star-rating.rating-70 span.two:before,
-.star-rating.rating-70 span.three:before,
-.star-rating.rating-80 span.one:before,
-.star-rating.rating-80 span.two:before,
-.star-rating.rating-80 span.three:before,
-.star-rating.rating-80 span.four:before,
-.star-rating.rating-90 span.one:before,
-.star-rating.rating-90 span.two:before,
-.star-rating.rating-90 span.three:before,
-.star-rating.rating-90 span.four:before,
-.star-rating.rating-100 > span:before {
-       content: "\f155";
-}
-
-.theme-details .star-rating .ratings {
+.theme-details .num-ratings,
+.theme-details .no-rating {
+       font-size: 11px;
+       color: #999;
+}
+
+.theme-details .no-rating {
        display: block;
        line-height: 20px;
-       color: #999;
 }
 
 /*------------------------------------------------------------------------------
@@ -1330,7 +1279,7 @@ body.full-overlay-active {
 }
 
 .wp-full-overlay-sidebar:after {
-       content: '';
+       content: "";
        display: block;
        position: absolute;
        top: 0;
@@ -1527,7 +1476,7 @@ body.full-overlay-active {
        display: block;
        content: "\f148";
        background: #eee;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        padding: 0;
        -webkit-font-smoothing: antialiased;
@@ -1646,7 +1595,7 @@ body.full-overlay-active {
 }
 
 .install-theme-info .theme-screenshot {
-       margin-top: 15px;
+       margin: 15px 0;
        width: 258px;
        border: 1px solid #ccc;
 }
@@ -1657,7 +1606,6 @@ body.full-overlay-active {
 
 .theme-details .theme-version {
        margin: 15px 0;
-       float: right;
 }
 
 .theme-details .theme-description {
@@ -1686,11 +1634,32 @@ body.full-overlay-active {
 }
 
 .theme-install-overlay .wp-full-overlay-main {
+       position: relative;
+       z-index: 0;
+       background-color: #fff;
+}
+
+.theme-install-overlay .wp-full-overlay-main:before {
+       content: '';
+       display: block;
+       width: 20px;
+       height: 20px;
+       position: absolute;
+       right: 50%;
+       top: 50%;
+       z-index: -1;
+       margin: -10px -10px 0 0;
+       -webkit-transform: translateZ(0);
+       transform: translateZ(0);
        background: #fff url(../images/spinner.gif) no-repeat center center;
        -webkit-background-size: 20px 20px;
        background-size: 20px 20px;
 }
 
+.theme-install-overlay.iframe-ready .wp-full-overlay-main:before {
+       background-image: none;
+}
+
 /* =Media Queries
 -------------------------------------------------------------- */
 
@@ -1708,13 +1677,9 @@ body.full-overlay-active {
 
        #customize-preview.wp-full-overlay-main,
        .customize-loading #customize-container,
-       .theme-install-overlay .wp-full-overlay-main {
+       .theme-install-overlay .wp-full-overlay-main:before {
                background-image: url(../images/spinner-2x.gif);
        }
-
-       .theme-install-overlay .wp-full-overlay-header .theme-install {
-               margin-top: 2px;
-       }
 }
 
 @media screen and ( max-width: 782px ) {
index 3121a1e4084cf94326159184bb2f96c2f93804ea..3b9cc46e31021e16d9332a980f1c40577929e027 100644 (file)
 }
 
 .theme-browser .theme .theme-screenshot:after {
-       content: '';
+       content: "";
        display: block;
        padding-top: 66.66666%; /* using a 3/2 aspect ratio */
 }
 
 .theme-browser .theme .theme-update:before,
 .theme-browser .theme .theme-installed:before {
-       content: '\f463';
+       content: "\f463";
        display: inline-block;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        margin: 0 6px 0 0;
        opacity: 0.8;
        position: relative;
 
 .theme-browser .theme.add-new-theme a:after {
        display: block;
-       content: '';
+       content: "";
        background: transparent;
        background: rgba(0, 0, 0, 0);
        position: absolute;
        -webkit-border-radius: 50%;
        border-radius: 50%;
        display: inline-block;
-       content: '\f132';
+       content: "\f132";
        -webkit-font-smoothing: antialiased;
-       font: normal 74px/115px 'dashicons';
+       font: normal 74px/115px dashicons;
        width: 100px;
        height: 100px;
        vertical-align: middle;
        border-color: transparent;
        color: #fff;
        background: #0073aa;
-       content: '';
+       content: "";
 }
 
 .theme-browser .theme.add-new-theme .theme-name {
 }
 
 .theme-overlay .theme-header .close:before {
-       font: normal 22px/50px 'dashicons' !important;
+       font: normal 22px/50px dashicons !important;
        color: #777;
        display: inline-block;
-       content: '\f335';
+       content: "\f335";
        font-weight: 300;
 }
 
 
 .theme-overlay .theme-header .right:before,
 .theme-overlay .theme-header .left:before {
-       font: normal 20px/50px 'dashicons' !important;
+       font: normal 20px/50px dashicons !important;
        display: inline;
        font-weight: 300;
 }
@@ -647,7 +647,7 @@ body.folded .theme-overlay .theme-wrap {
 }
 
 .theme-overlay .screenshot:after {
-       content: '';
+       content: "";
        display: block;
        padding-top: 75%; /* using a 4/3 aspect ratio */
 }
@@ -682,7 +682,7 @@ body.folded .theme-overlay .theme-wrap {
 }
 
 .theme-overlay .screenshot.thumb:after {
-       content: '';
+       content: "";
        display: block;
        padding-top: 100%; /* using a 1/1 aspect ratio */
 }
@@ -753,10 +753,11 @@ body.folded .theme-overlay .theme-wrap {
 }
 
 .theme-overlay .theme-author {
+       margin: 15px 0 25px;
        color: #686868;
        font-size: 16px;
        font-weight: 400;
-       margin: 15px 0 25px;
+       line-height: inherit;
 }
 
 .theme-overlay .theme-author a {
@@ -786,24 +787,6 @@ body.folded .theme-overlay .theme-wrap {
        margin-right: 5px;
 }
 
-/* Theme Updates info */
-.theme-overlay .theme-update-message {
-       background: #fef7f1;
-       border: 1px solid #eee;
-       border-left: 4px solid #d54e21;
-       -webkit-border-radius: 3px;
-       border-radius: 3px;
-       padding: 5px 20px 10px;
-}
-
-.theme-overlay .theme-update {
-       color: #23282d;
-       font-size: 18px;
-       display: inline-block;
-       line-height: 40px;
-       margin: 0;
-}
-
 .theme-overlay .parent-theme {
        background: #f7fcfe;
        border: 1px solid #eee;
@@ -1033,7 +1016,7 @@ body.folded .theme-overlay .theme-wrap {
        }
 
        .theme-browser .theme.add-new-theme span:after {
-               font: normal 60px/90px 'dashicons';
+               font: normal 60px/90px dashicons;
                width: 80px;
                height: 80px;
                top: 30%;
@@ -1079,7 +1062,7 @@ body.folded .theme-overlay .theme-wrap {
        background: #0073aa;
 }
 .theme-browser .theme .theme-installed:before {
-       content: '\f147';
+       content: "\f147";
 }
 .theme-browser .theme.is-installed .theme-actions .button-primary {
        display: none !important;
@@ -1172,57 +1155,23 @@ body.show-upload-theme p.no-themes {
        }
 }
 
+.theme-details .theme-rating {
+       line-height: 23px;
+}
+
 .theme-details .star-rating {
-       margin: 15px 0 0;
+       display: inline;
 }
 
-.theme-details .star-rating span:before {
-       color: #ffb900;
-       content: "\f154";
-       display: inline-block;
-       -webkit-font-smoothing: antialiased;
-       font: normal 20px/1 'dashicons';
-       vertical-align: top;
-}
-
-/* Half stars */
-.star-rating.rating-10 span.one:before,
-.star-rating.rating-30 span.two:before,
-.star-rating.rating-50 span.three:before,
-.star-rating.rating-70 span.four:before,
-.star-rating.rating-90 span.five:before {
-       content: "\f459";
-}
-
-/* Full stars */
-.star-rating.rating-20 span.one:before,
-.star-rating.rating-30 span.one:before,
-.star-rating.rating-40 span.one:before,
-.star-rating.rating-40 span.two:before,
-.star-rating.rating-50 span.one:before,
-.star-rating.rating-50 span.two:before,
-.star-rating.rating-60 span.one:before,
-.star-rating.rating-60 span.two:before,
-.star-rating.rating-60 span.three:before,
-.star-rating.rating-70 span.one:before,
-.star-rating.rating-70 span.two:before,
-.star-rating.rating-70 span.three:before,
-.star-rating.rating-80 span.one:before,
-.star-rating.rating-80 span.two:before,
-.star-rating.rating-80 span.three:before,
-.star-rating.rating-80 span.four:before,
-.star-rating.rating-90 span.one:before,
-.star-rating.rating-90 span.two:before,
-.star-rating.rating-90 span.three:before,
-.star-rating.rating-90 span.four:before,
-.star-rating.rating-100 > span:before {
-       content: "\f155";
-}
-
-.theme-details .star-rating .ratings {
+.theme-details .num-ratings,
+.theme-details .no-rating {
+       font-size: 11px;
+       color: #999;
+}
+
+.theme-details .no-rating {
        display: block;
        line-height: 20px;
-       color: #999;
 }
 
 /*------------------------------------------------------------------------------
@@ -1330,7 +1279,7 @@ body.full-overlay-active {
 }
 
 .wp-full-overlay-sidebar:after {
-       content: '';
+       content: "";
        display: block;
        position: absolute;
        top: 0;
@@ -1527,7 +1476,7 @@ body.full-overlay-active {
        display: block;
        content: "\f148";
        background: #eee;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        padding: 0;
        -webkit-font-smoothing: antialiased;
@@ -1646,7 +1595,7 @@ body.full-overlay-active {
 }
 
 .install-theme-info .theme-screenshot {
-       margin-top: 15px;
+       margin: 15px 0;
        width: 258px;
        border: 1px solid #ccc;
 }
@@ -1657,7 +1606,6 @@ body.full-overlay-active {
 
 .theme-details .theme-version {
        margin: 15px 0;
-       float: left;
 }
 
 .theme-details .theme-description {
@@ -1686,11 +1634,32 @@ body.full-overlay-active {
 }
 
 .theme-install-overlay .wp-full-overlay-main {
+       position: relative;
+       z-index: 0;
+       background-color: #fff;
+}
+
+.theme-install-overlay .wp-full-overlay-main:before {
+       content: '';
+       display: block;
+       width: 20px;
+       height: 20px;
+       position: absolute;
+       left: 50%;
+       top: 50%;
+       z-index: -1;
+       margin: -10px 0 0 -10px;
+       -webkit-transform: translateZ(0);
+       transform: translateZ(0);
        background: #fff url(../images/spinner.gif) no-repeat center center;
        -webkit-background-size: 20px 20px;
        background-size: 20px 20px;
 }
 
+.theme-install-overlay.iframe-ready .wp-full-overlay-main:before {
+       background-image: none;
+}
+
 /* =Media Queries
 -------------------------------------------------------------- */
 
@@ -1708,13 +1677,9 @@ body.full-overlay-active {
 
        #customize-preview.wp-full-overlay-main,
        .customize-loading #customize-container,
-       .theme-install-overlay .wp-full-overlay-main {
+       .theme-install-overlay .wp-full-overlay-main:before {
                background-image: url(../images/spinner-2x.gif);
        }
-
-       .theme-install-overlay .wp-full-overlay-header .theme-install {
-               margin-top: 2px;
-       }
 }
 
 @media screen and ( max-width: 782px ) {
index 149c11717d0133c746b531b5bbdecbddf4f4f022..4060cb710dc0f74f54915b73196cb8c07f1cdd4b 100644 (file)
        text-decoration: none;
 }
 
+.widget-title h3,
 .widget-title h4 {
        margin: 0;
        padding: 15px;
+       font-size: 1em;
        line-height: 1;
        overflow: hidden;
        white-space: nowrap;
        cursor: pointer;
 }
 
+.sidebar-name h2,
 .sidebar-name h3 {
        margin: 0;
        padding: 8px 10px;
@@ -142,15 +145,14 @@ div#widgets-left .inactive-sidebar.closed .sidebar-name {
        margin-bottom: 10px;
 }
 
+div#widgets-left .sidebar-name h2,
 div#widgets-left .sidebar-name h3 {
        padding: 10px 0;
        margin: 0 0 0 10px;
 }
 
-div#widgets-left .sidebar-name .sidebar-name-arrow:before {
-       left: 0;
-       top: 4px;
-       padding: 4px 4px 4px 6px;
+#widgets-left .sidebar-name .sidebar-name-arrow:before {
+       padding: 9px;
 }
 
 #widgets-left #available-widgets,
@@ -245,13 +247,13 @@ div#widgets-right .sidebar-description {
        margin-top: -5px;
 }
 
+div#widgets-right .sidebar-name h2,
 div#widgets-right .sidebar-name h3 {
        padding: 15px 7px;
 }
 
 div#widgets-right .sidebar-name .sidebar-name-arrow:before {
-       left: 0;
-       top: 4px;
+       top: 2px;
 }
 
 div#widgets-right .widget-top {
@@ -270,7 +272,8 @@ div#widgets-right .closed .widgets-sortables {
        margin-bottom: 0;
 }
 
-.sidebar-name .spinner {
+.sidebar-name .spinner,
+.remove-inactive-widgets .spinner {
        float: none;
        position: relative;
        top: -2px;
@@ -346,6 +349,7 @@ div#widgets-right .closed .widgets-sortables {
 
 .js .widgets-holder-wrap.closed .widget,
 .js .widgets-holder-wrap.closed .sidebar-description,
+.js .widgets-holder-wrap.closed .remove-inactive-widgets,
 .js .closed br.clear {
        display: none;
 }
@@ -466,10 +470,10 @@ div#widgets-right .widget-top:hover,
 }
 
 .widgets-chooser li:focus:before {
-       content: '\f147';
+       content: "\f147";
        display: block;
        -webkit-font-smoothing: antialiased;
-       font: normal 26px/1 'dashicons';
+       font: normal 26px/1 dashicons;
        color: #999;
        position: absolute;
        top: 7px;
@@ -487,10 +491,10 @@ div#widgets-right .widget-top:hover,
 
 .widgets-chooser li.widgets-chooser-selected:before,
 .widgets-chooser li.widgets-chooser-selected:focus:before {
-       content: '\f147';
+       content: "\f147";
        display: block;
        -webkit-font-smoothing: antialiased;
-       font: normal 26px/1 'dashicons';
+       font: normal 26px/1 dashicons;
        color: #fff;
        position: absolute;
        top: 7px;
index 3befaf29a83c4548fd55f318a3b647096149f2c9..85cdf4ce6c98eafa26abcde218057cc1d927c4a5 100644 (file)
        text-decoration: none;
 }
 
+.widget-title h3,
 .widget-title h4 {
        margin: 0;
        padding: 15px;
+       font-size: 1em;
        line-height: 1;
        overflow: hidden;
        white-space: nowrap;
        cursor: pointer;
 }
 
+.sidebar-name h2,
 .sidebar-name h3 {
        margin: 0;
        padding: 8px 10px;
@@ -142,15 +145,14 @@ div#widgets-left .inactive-sidebar.closed .sidebar-name {
        margin-bottom: 10px;
 }
 
+div#widgets-left .sidebar-name h2,
 div#widgets-left .sidebar-name h3 {
        padding: 10px 0;
        margin: 0 10px 0 0;
 }
 
-div#widgets-left .sidebar-name .sidebar-name-arrow:before {
-       right: 0;
-       top: 4px;
-       padding: 4px 6px 4px 4px;
+#widgets-left .sidebar-name .sidebar-name-arrow:before {
+       padding: 9px;
 }
 
 #widgets-left #available-widgets,
@@ -245,13 +247,13 @@ div#widgets-right .sidebar-description {
        margin-top: -5px;
 }
 
+div#widgets-right .sidebar-name h2,
 div#widgets-right .sidebar-name h3 {
        padding: 15px 7px;
 }
 
 div#widgets-right .sidebar-name .sidebar-name-arrow:before {
-       right: 0;
-       top: 4px;
+       top: 2px;
 }
 
 div#widgets-right .widget-top {
@@ -270,7 +272,8 @@ div#widgets-right .closed .widgets-sortables {
        margin-bottom: 0;
 }
 
-.sidebar-name .spinner {
+.sidebar-name .spinner,
+.remove-inactive-widgets .spinner {
        float: none;
        position: relative;
        top: -2px;
@@ -346,6 +349,7 @@ div#widgets-right .closed .widgets-sortables {
 
 .js .widgets-holder-wrap.closed .widget,
 .js .widgets-holder-wrap.closed .sidebar-description,
+.js .widgets-holder-wrap.closed .remove-inactive-widgets,
 .js .closed br.clear {
        display: none;
 }
@@ -466,10 +470,10 @@ div#widgets-right .widget-top:hover,
 }
 
 .widgets-chooser li:focus:before {
-       content: '\f147';
+       content: "\f147";
        display: block;
        -webkit-font-smoothing: antialiased;
-       font: normal 26px/1 'dashicons';
+       font: normal 26px/1 dashicons;
        color: #999;
        position: absolute;
        top: 7px;
@@ -487,10 +491,10 @@ div#widgets-right .widget-top:hover,
 
 .widgets-chooser li.widgets-chooser-selected:before,
 .widgets-chooser li.widgets-chooser-selected:focus:before {
-       content: '\f147';
+       content: "\f147";
        display: block;
        -webkit-font-smoothing: antialiased;
-       font: normal 26px/1 'dashicons';
+       font: normal 26px/1 dashicons;
        color: #fff;
        position: absolute;
        top: 7px;
index 1f6cdee9fbd12dccc67955b1018087346bcab03a..80270f8f573a8b46f8b058449e05ff4c6225f3b2 100644 (file)
@@ -1,8 +1,8 @@
-#ajax-loading,#screen-meta .screen-reader-text,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading,.row-actions,.spinner{visibility:hidden}.color-palette,.form-table,.media-item .describe{border-collapse:collapse}#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-right:20px}#wpcontent,#wpfooter{margin-right:160px}.folded #wpcontent,.folded #wpfooter{margin-right:36px}#wpbody-content{padding-bottom:65px;float:right;width:100%;overflow:visible!important}.inner-sidebar{float:left;clear:left;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-left:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:right;clear:right;width:100%;margin-left:-2000px}.has-right-sidebar #post-body-content{margin-left:300px;float:none;width:auto}#col-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0}#col-left{width:35%}#col-right{float:left;clear:left;width:65%}.alignleft,.subsubsub{float:right}.col-wrap{padding:0 7px}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}.clear{clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}#adminmenu .wp-submenu,#dashboard_quick_press .draft-title,#templateside,#the-comment-list td.comment,.dashboard-comment-wrap,.pre,.widefat *{word-wrap:break-word}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{right:6px;top:-25px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;z-index:100000;line-height:normal;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:0}body,p{font-size:13px}.hidden,.js .closed .inside,.js .hide-if-js,.js .wp-core-ui .hide-if-js,.js.wp-core-ui .hide-if-js,.no-js .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js,.no-js.wp-core-ui .hide-if-no-js{display:none}#menu-management .menu-edit,#menu-settings-column .accordion-container,.comment-ays,.feature-filter,.imgedit-group,.manage-menus,.menu-item-handle,.popular-tags,.stuffbox,.widget-inside,.widget-top,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.comment-ays,.feature-filter,.imgedit-group,.popular-tags,.stuffbox,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{background:#fff}body,html{height:100%;margin:0;padding:0}html{background:#f1f1f1}body{color:#444;font-family:"Open Sans",sans-serif;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#0073aa;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#00a0d2}a:focus,a:focus .media-icon img{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}#adminmenu a:focus,.screen-reader-text:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}p{line-height:1.5;margin:1em 0}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{font-size:2em;margin:.67em 0}.wrap>h1,h2{color:#23282d;font-size:1.5em;margin:.83em 0;font-weight:400}h3{color:#23282d;font-size:1.3em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-right:2em}ul.ul-disc{list-style:disc}.side-info ul,ul.ul-square{list-style:square}ol.ol-decimal{list-style:decimal}ol.ol-decimal,ul.ul-disc,ul.ul-square{margin-right:1.8em}ol.ol-decimal>li,ul.ul-disc>li,ul.ul-square>li{margin:0 0 .5em}.ltr{direction:ltr}.code,code{font-family:Consolas,Monaco,monospace;direction:ltr;unicode-bidi:embed}code,kbd{padding:3px 5px 2px;margin:0 1px;background:#eaeaea;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;color:#666}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat a{text-decoration:none}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #e1e1e1}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #e1e1e1;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:right;line-height:1.3em;font-size:14px}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 8px 0 0;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-top:-1px}.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 3px 0 0}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:10px}.update-php div.error,.update-php div.updated{margin-right:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 2px 0 20px}.subtitle,.wrap h1,.wrap h2{font-weight:400;margin:0}.wrap h1,.wrap h2{font-size:23px;font-weight:400;padding:9px 0 4px 15px;line-height:29px}.subtitle{color:#777;font-size:14px;padding-right:25px}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-right:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:none;-webkit-border-radius:2px;border-radius:2px;background:#e0e0e0;text-shadow:none;font-weight:600;font-size:13px}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{background:#00a0d2;color:#fff}.wrap h1.long-header{padding-left:0}.wp-dialog{background-color:#fff}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f9f9f9}.bar{background-color:#e8e8e8;border-left-color:#99d}.media-upload-form label.form-help,td.help{color:#9a9a9a}.highlight{background-color:#e4f2fd;color:#000}.wp-ui-primary{color:#fff;background-color:#32373c}.wp-ui-text-primary{color:#32373c}.wp-ui-highlight{color:#fff;background-color:#1e8cbe}.wp-ui-text-highlight{color:#1e8cbe}.wp-ui-notification{color:#fff;background-color:#d54e21}.wp-ui-text-notification{color:#d54e21}.wp-ui-text-icon{color:#999}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}#nav-menu-footer,#nav-menu-header,#your-profile #rich_editing,.checkbox,.control-section .accordion-section-title,.menu-item-handle,.postbox .hndle,.side-info,.sidebar-name,.stuffbox .hndle,.widefat tfoot td,.widefat tfoot th,.widefat thead td,.widefat thead th,.widget .widget-top{line-height:1.4em}.menu-item-handle,.widget .widget-top{background:#fafafa;color:#23282d}.postbox .hndle,.stuffbox .hndle{border-bottom:1px solid #eee;user-select:none}.accordion-section-title,.postbox .hndle,.stuffbox .hndle{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.quicktags,.search{background-color:#ccc;color:#000;font-size:12px}.icon32{display:none}#bulk-titles div a:before,.notice-dismiss:before,.tagchecklist span a:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#b4b9be;content:'\f153';display:block;font:400 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.welcome-panel .welcome-panel-close:before{margin:0}#bulk-titles div a:before,.tagchecklist span a:before{margin:1px 0}#bulk-titles div a:hover:before,.tagchecklist span a:hover:before,.welcome-panel .welcome-panel-close:focus:before,.welcome-panel .welcome-panel-close:hover:before{color:#c00}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap}#namediv td.first,#plugin-information-title,.no-break,.star-rating,.ui-autocomplete li{white-space:nowrap}.howto{color:#666;font-style:italic;display:block}p.install-help{margin:8px 0;font-style:italic}hr{border:0;border-top:1px solid #ddd;border-bottom:1px solid #fafafa}#all-plugins-table .plugins a.delete,#media-items a.delete,#media-items a.delete-permanently,#nav-menu-footer .menu-delete,#search-plugins-table .plugins a.delete,.plugins a.delete,.row-actions span.delete a,.row-actions span.spam a,.row-actions span.trash a,.submitbox .submitdelete{color:#a00}#all-plugins-table .plugins a.delete:hover,#media-items a.delete-permanently:hover,#media-items a.delete:hover,#nav-menu-footer .menu-delete:hover,#search-plugins-table .plugins a.delete:hover,.file-error,.plugins a.delete:hover,.row-actions .delete a:hover,.row-actions .spam a:hover,.row-actions .trash a:hover,.submitbox .submitdelete:hover,.widget-control-remove:hover,abbr.required{color:red;text-decoration:none;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #ddd;background:#f5f5f5}#delete-action{line-height:28px;vertical-align:middle;text-align:right;float:right}#publishing-action{text-align:left;float:left;line-height:23px}#publishing-action .spinner,#save-post{float:right}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}#minor-publishing-actions{padding:10px 10px 0;text-align:left}.preview{float:left}#sticky-span{margin-right:18px}.side-info{margin:0;padding:4px;font-size:11px}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom:1px solid #dadada}.side-info ul{margin:0;padding-right:18px;color:#666}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:left}.wp-filter{display:inline-block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;background:#fff;color:#555;font-size:13px}.wp-filter a{text-decoration:none}.filter-count{display:inline-block;vertical-align:middle;min-width:4em}.filter-count .count,.title-count{display:inline-block;position:relative;top:-1px;padding:4px 10px;-webkit-border-radius:30px;border-radius:30px;background:#777;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-right:5px;margin-left:20px}.filter-items{float:right}.filter-links,.filter-links li{display:inline-block;margin:0}.filter-links li>a{display:inline-block;margin:0 10px;padding:15px 0;border-bottom:4px solid #fff;color:#666;cursor:pointer}.filter-links .current{-webkit-box-shadow:none;box-shadow:none;border-bottom:4px solid #666;color:#23282d}.filter-links li>a:focus,.filter-links li>a:hover,.show-filters .filter-links a.current:focus,.show-filters .filter-links a.current:hover{color:#00a0d2}.wp-filter .search-form{float:left;margin:10px 0}.wp-filter .search-form input[type=search]{margin:0;padding:3px 5px;width:280px;max-width:100%;font-size:16px;font-weight:300;line-height:1.5}.wp-filter .search-form select{margin:0;height:32px;vertical-align:top}.wp-filter .search-form.search-plugins{display:inline-block}.wp-filter .drawer-toggle{display:inline-block;margin:0 10px;padding:4px 6px;color:#666;cursor:pointer}.wp-filter .drawer-toggle:before{display:inline-block;vertical-align:top;content:"\f111";margin:0 0 0 5px;width:16px;height:16px;color:#777;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;font-family:dashicons;font-size:16px;line-height:1;text-align:center;text-decoration:inherit;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased}.wp-filter .drawer-toggle:hover,.wp-filter .drawer-toggle:hover:before{color:#00a0d2}.show-filters .wp-filter .drawer-toggle:before,.wp-filter .drawer-toggle.current:before{color:#fff}.filter-drawer{display:none;margin:0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa}.show-filters .filter-drawer{display:block;overflow:hidden;width:100%}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2ea2cc}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .drawer-toggle{-webkit-border-radius:2px;border-radius:2px;border:none;background:#777;color:#fff}.filter-group{box-sizing:border-box;float:right;margin:0 0 0 1%;padding:10px;width:24%;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group,.filtered-by .tag{background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group,html.wp-toolbar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.filter-group h4{position:relative;margin:0}.filter-drawer ol{margin:20px 0 0;list-style-type:none;font-size:12px}.filter-drawer li{display:inline-block;vertical-align:top;margin:5px 0;padding-left:25px;width:160px;list-style-type:none}.filter-drawer .buttons{margin-bottom:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.spinner,input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-filter .button.clear-filters{display:none;margin-right:10px}.filtered-by{display:none;margin:0}.filtered-by>span{font-weight:600}.filtered-by a{margin-right:10px}.filtered-by .tags{display:inline}.filtered-by .tag{margin:0 5px;padding:4px 8px;box-shadow:0 1px 1px rgba(0,0,0,.04);font-size:11px}.filters-applied .filter-drawer .buttons,.filters-applied .filter-drawer br,.filters-applied .filter-group{display:none!important}.filters-applied .filtered-by{display:block}.filters-applied .filter-drawer{padding:20px}.error .content-filterable,.loading-content .content-filterable,.show-filters .content-filterable,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #eee}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.notice,div.error,div.updated{background:#fff;border-right:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 15px 2px;padding:1px 12px}.notice-dismiss:focus,.widget-top a.widget-action:focus:after{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.form-table td .notice p,.notice p,div.error p,div.updated p{margin:.5em 0;padding:2px}.wp-core-ui .notice.is-dismissible{padding-left:38px;position:relative}.notice-dismiss{position:absolute;top:0;left:1px;border:none;margin:0;padding:9px;background:0 0;color:#b4b9be;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#c00}.notice-dismiss:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .notice-dismiss:focus{outline:#5b9dd9 solid 1px}.notice-success,div.updated{border-color:#7ad03a}.notice-warning{border-color:#ffba00}.notice-error,div.error{border-color:#dd3d36}.notice-info{border-color:#00a0d2}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}#update-nag,.update-nag{display:inline-block;line-height:19px;padding:11px 15px;font-size:14px;text-align:right;margin:25px 2px 0 20px;background-color:#fff;border-right:4px solid #ffba00;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.update-message{color:#000}.update-php .spinner{float:none;margin:-4px 0}#ajax-response.alignleft{margin-right:2em}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-right:0!important}#screen-meta-links{margin:0 0 0 20px}#screen-meta{display:none;margin:0 0 -1px 20px;position:relative;background-color:#fff;border:1px solid #ddd;border-top:none;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.025);box-shadow:0 1px 0 rgba(0,0,0,.025)}#contextual-help-link-wrap,#screen-options-link-wrap{float:left;height:28px;margin:0 6px 0 0;border:1px solid #ddd;border-top:none;background:#fff;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-shadow:0 1px 1px -1px rgba(0,0,0,.1)}#screen-meta-links .screen-meta-toggle{position:relative;top:0}#screen-meta-links .show-settings{border:0;background:0 0;-webkit-border-radius:0;border-radius:0;color:#777;line-height:1.7;padding:3px 16px 3px 6px}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#32373c}#screen-meta-links .show-settings:after{left:0;content:'\f140';font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 5px;bottom:2px;position:relative;vertical-align:bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#b4b9be}.hndle a,.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}#screen-meta-links .screen-meta-active:after{content:'\f142'}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#contextual-help-wrap h5,#screen-options-wrap h5{margin:8px 0;font-size:13px}.metabox-prefs label{display:inline-block;padding-left:15px;line-height:30px}.metabox-prefs label input[type=checkbox]{margin-top:-4px;margin-left:6px}.metabox-prefs label input{margin:0 2px 0 5px}.metabox-prefs .columns-prefs label input{margin:0 2px}.metabox-prefs label a{display:none}.metabox-prefs .screen-options{padding-top:10px}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-left:15px}.metabox-prefs .screen-options label{line-height:28px;padding-left:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;right:150px;left:170px;border:1px solid #e1e1e1;border-top:none;border-bottom:none;background:#f6fbfd}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;border-left-width:0;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px}.contextual-help-tabs{float:right;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:0 2px 0 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 12px 5px 5px;line-height:18px;text-decoration:none;border:1px solid transparent;border-left:none;border-right:none}.contextual-help-tabs a:hover{color:#32373c}.contextual-help-tabs .active{padding:0;margin:0 0 0 -1px;border-right:2px solid #00a0d2;background:#f6fbfd;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02);box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02)}.contextual-help-tabs .active a{border-color:#e1e1e1;color:#32373c}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 0 12px 22px;line-height:1.6em}.help-tab-content.active{display:block}.nav-tab,.spinner{display:inline-block}.help-tab-content ul li{list-style-type:disc;margin-right:18px}.contextual-help-sidebar{width:150px;float:left;padding:0 12px 0 8px;overflow:auto}html.wp-toolbar{padding-top:32px;box-sizing:border-box}.widefat td,.widefat th{color:#555}.widefat ol,.widefat p,.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th,.widefat ul{color:#32373c}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:right}.postbox-container .meta-box-sortables{box-sizing:border-box}.postbox-container .meta-box-sortables,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .empty-container{border:3px dashed #b4b9be;height:250px}.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container,.metabox-holder.columns-1 .postbox-container .empty-container{border:0;height:0;min-height:0}#post-body-content{width:100%;min-width:463px;float:right}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content .metabox-holder .postbox-container .empty-container{border:0;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.js .accordion-section-title,.js .postbox .handlediv{cursor:pointer}.hndle a{font-size:11px}.postbox .handlediv{float:left;width:27px;height:30px}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox .inside,.stuffbox .inside{padding:0 12px 12px;line-height:1.4em;font-size:13px}.postbox .inside{margin:11px 0;position:relative}.postbox .inside>p:last-child,.rss-widget ul li:last-child{margin-bottom:1px!important}.postbox.closed h3{border:none;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{-webkit-box-shadow:none;box-shadow:none}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 5px}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,#dashboard_right_now .versions .b,#ed_reply_toolbar #ed_reply_strong,#pass-strength-result.short,#pass-strength-result.strong,#post-status-display,#post-visibility-display,.feature-filter .feature-name,.item-controls .item-order a,.media-item .percent,.plugins .name{font-weight:600}#wpfooter{position:absolute;bottom:0;right:0;left:0;padding:10px 20px;color:#777}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}#wpfooter a{text-decoration:none}#wpfooter a:hover{text-decoration:underline}#templateside ul li a,.nav-tab{text-decoration:none}.nav-tab{border:1px solid #ccc;border-bottom:none;background:#e4e4e4;color:#555;font-size:12px;line-height:16px;padding:4px 14px 6px;margin:-4px 0 -1px 4px}.nav-tab:hover{background-color:#fff;color:#464646}.nav-tab-active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}h1.nav-tab-wrapper,h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0;padding-right:10px}h1 .nav-tab,h2 .nav-tab{padding:6px 10px;font-weight:700;font-size:15px;line-height:24px}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;float:left;vertical-align:middle;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.spinner.is-active{visibility:visible}#template div{margin-left:190px}.metabox-holder h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:right}.attention,.error-message{color:red;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}#howto,.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #e7e7e7;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px}.post-categories,.post-categories li{display:inline}.importers td{padding-left:14px}.checkbox,.post-categories,.zerosize,fieldset{margin:0;padding:0}.importers{font-size:16px;width:auto}#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{font-size:14px;line-height:1.4;font-weight:600;color:#222;margin:2px 9px 0 0}#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;border:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:none}fieldset{border:0}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) bottom left repeat-x}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) top left repeat-x;height:17px;float:right}.star-rating .star{display:inline-block;width:20px;height:20px;-webkit-font-smoothing:antialiased;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;text-align:center;color:#ffb900}.star-rating .star-full:before{content:'\f155'}.star-rating .star-half:before{content:'\f459'}.rtl .star-rating .star-half{-webkit-transform:rotateY(180deg);-ms-transform:rotateY(180deg);transform:rotateY(180deg)}.star-rating .star-empty:before{content:'\f154'}div.action-links{font-weight:400}#plugin-information{background:#fff;position:fixed;top:0;left:0;bottom:0;right:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 20px;background:#f5f5f5;font-size:22px;font-weight:600;line-height:56px;position:relative;top:0;left:0;right:0;height:56px;overflow:hidden;text-overflow:ellipsis}#plugin-information-title.with-banner{margin-left:0;height:250px;bottom:250px;-webkit-background-size:cover;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:700;padding:0;margin:0;max-width:680px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta-box-sortables select,p.submit{max-width:100%}#plugin-information-title.with-banner h2{font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:50px;padding:0 15px;margin:174px 10px 0 0;color:#fff;background:rgba(30,30,30,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);-webkit-box-shadow:0 0 30px rgba(255,255,255,.1);box-shadow:0 0 30px rgba(255,255,255,.1);-webkit-border-radius:8px;border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{display:block;float:left;top:0;height:250px;width:772px;margin:0 -20px;background:0 0;-webkit-box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1)}#plugin-information-tabs{padding:0 16px;position:relative;left:0;right:0;height:36px;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;float:right;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;-webkit-transition:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff;padding-top:8px;color:#32373c}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;left:0;right:0;min-height:100%;min-height:-webkit-calc(100% - 152px);min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:-webkit-calc(100% - 346px);min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;left:250px;bottom:0;right:0;margin-left:250px;padding:10px 26px 99999px;margin-bottom:-99930px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{display:block;float:left;position:relative;top:0;left:0;padding:16px 16px 99999px;margin-bottom:-99930px;width:217px;border-right:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#464646}#plugin-information .fyi h3{font-weight:700;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-left:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:right;margin-left:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#ececec;float:right}#plugin-information .counter-bar{height:17px;background-color:#ffc733;float:right}#plugin-information .counter-count{margin-right:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-left:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-left:4px}#plugin-information-footer{padding:15px 16px;position:absolute;left:0;bottom:0;right:0;height:28px;border-top:1px solid #ddd;background:#f3f3f3}#plugin-information .section{direction:ltr}#plugin-information .section ol,#plugin-information .section ul{list-style-type:disc;margin-left:24px}#plugin-information .section,#plugin-information .section p{font-size:14px;line-height:1.7}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;margin-top:16px;max-width:100%;width:auto;height:auto;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px}#plugin-information pre{padding:7px;overflow:auto;border:1px solid #ccc}#plugin-information .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #e6e6e6}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#postcustomstuff p.submit,#templateside h3,.alignleft h3{margin:0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px;bottom:100px}#plugin-information-title.with-banner h2{margin-top:30px;font-size:20px;line-height:40px;max-width:85%}#plugin-information-title.with-banner div.vignette{height:100px;bottom:100px;width:800%}#plugin-information-tabs{overflow:hidden;padding:0;height:auto}#plugin-information-tabs a.current{margin-bottom:0;border-bottom:none}#plugin-information .fyi{float:none;border:1px solid #ddd;position:static;width:auto;margin:26px 26px 0;padding-bottom:0}#section-holder{position:static;margin:0;padding-bottom:70px}#plugin-information .fyi h3,#plugin-information .fyi small{display:none}#plugin-information-footer{padding:12px 16px 0;height:46px}}body.import-php #TB_window,body.index-php #TB_window,body.plugin-install-php #TB_window,body.plugins-php #TB_window,body.update-core-php #TB_window{background:url(../images/spinner.gif) center no-repeat #fcfcfc}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){body.import-php #TB_window,body.index-php #TB_window,body.plugin-install-php #TB_window,body.plugins-php #TB_window,body.update-core-php #TB_window{background:url(../images/spinner-2x.gif) center no-repeat #fcfcfc;-webkit-background-size:20px 20px;background-size:20px 20px}}body.import-php #TB_title,body.index-php #TB_title,body.plugin-install-php #TB_title,body.plugins-php #TB_title,body.update-core-php #TB_title{float:right;height:1px}body.import-php #TB_ajaxWindowTitle,body.index-php #TB_ajaxWindowTitle,body.plugin-install-php #TB_ajaxWindowTitle,body.plugins-php #TB_ajaxWindowTitle,body.update-core-php #TB_ajaxWindowTitle{display:none}body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{right:auto;left:-30px;color:#eee;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}body.import-php #TB_closeWindowButton:focus,body.import-php #TB_closeWindowButton:focus .tb-close-icon,body.import-php .tb-close-icon:focus,body.import-php .tb-close-icon:hover,body.index-php #TB_closeWindowButton:focus,body.index-php #TB_closeWindowButton:focus .tb-close-icon,body.index-php .tb-close-icon:focus,body.index-php .tb-close-icon:hover,body.plugin-install-php #TB_closeWindowButton:focus,body.plugin-install-php #TB_closeWindowButton:focus .tb-close-icon,body.plugin-install-php .tb-close-icon:focus,body.plugin-install-php .tb-close-icon:hover,body.plugins-php #TB_closeWindowButton:focus,body.plugins-php #TB_closeWindowButton:focus .tb-close-icon,body.plugins-php .tb-close-icon:focus,body.plugins-php .tb-close-icon:hover,body.update-core-php #TB_closeWindowButton:focus,body.update-core-php #TB_closeWindowButton:focus .tb-close-icon,body.update-core-php .tb-close-icon:focus,body.update-core-php .tb-close-icon:hover{color:#00a0d2;outline:0;-webkit-box-shadow:none;box-shadow:none}body.import-php .tb-close-icon:before,body.index-php .tb-close-icon:before,body.plugin-install-php .tb-close-icon:before,body.plugins-php .tb-close-icon:before,body.update-core-php .tb-close-icon:before{content:"\f335";font-size:32px}@media screen and (max-width:830px){body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{left:0;top:-30px}}img{border:none}#wphead{border-bottom:1px solid #dfdfdf}#wphead h1 a{color:#464646}.js .meta-box-sortables .postbox:hover .handlediv{margin-left:0!important}.js .meta-box-sortables .postbox .handlediv:before,.js .sidebar-name .sidebar-name-arrow:before{left:12px;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:8px 10px;top:0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;content:'\f142'}.js #widgets-left .sidebar-name .sidebar-name-arrow{display:none}.js #widgets-left .sidebar-name:hover .sidebar-name-arrow,.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow{display:block}.js .meta-box-sortables .postbox.closed .handlediv:before,.js .widgets-holder-wrap.closed .sidebar-name-arrow:before{content:'\f140'}.error a{text-decoration:underline}.updated a{text-decoration:none;padding-bottom:2px}#photo-add-url-div input[type=text]{width:300px}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;width:97%;background:#f9f9f9;outline:0}#docs-list,#template textarea{direction:ltr}#template p{width:97%}#templateside{float:left;width:190px}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em 0;padding:0}#templateside li{margin:4px 0}#templateside li a,.theme-editor-php .highlight{display:block;padding:3px 12px 3px 3px;text-decoration:none}.theme-editor-php .highlight{margin:-3px -12px -3px 3px}#templateside .highlight{border:none;font-weight:700}.nonessential{color:#666;font-size:11px;font-style:italic;padding-right:12px}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:baseline;font-weight:600}.fileedit-sub{padding:10px 0 8px;line-height:180%}.accordion-section-title:after,.control-section .accordion-section-title:after,.nav-menus-php .item-edit:before,.widget-top a.widget-action:after{left:0;content:'\f140';border:none;background:0 0;font:400 20px/1 dashicons;speak:none;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.my-sites li a,form p.submit a.cancel:hover{text-decoration:none}.accordion-section-title:after,.handlediv,.item-edit,.sidebar-name-arrow,.widget-action{color:#a0a5aa}.accordion-section-title:hover:after,.handlediv:hover,.item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.widget-action:hover{color:#777}.widget-top a.widget-action:after{padding:12px 12px 11px}.widget-top a.widget-action:focus:after{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.nav-menus-php .item-edit:before{line-height:2.1}.accordion-section-title:after,.control-section .accordion-section-title:after{float:left;left:20px;top:-2px}#customize-info.open .accordion-section-title:after,.control-section.open .accordion-section-title:after,.nav-menus-php .menu-item-edit-active .item-edit:before,.widget.open .widget-top a.widget-action:after{content:'\f142'}/*!
+.filter-group,.wp-filter{-moz-box-sizing:border-box}#docs-list,#plugin-information .section,#template textarea,.code,.ltr,code,input[type=email],input[type=url]{direction:ltr}#dashboard_quick_press textarea,textarea{resize:vertical}table.diff,table.fixed{table-layout:fixed}.color-palette,.form-table,.media-item .describe{border-collapse:collapse}#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-right:20px}#wpcontent,#wpfooter{margin-right:160px}.folded #wpcontent,.folded #wpfooter{margin-right:36px}#wpbody-content{padding-bottom:65px;float:right;width:100%;overflow:visible!important}.inner-sidebar{float:left;clear:left;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-left:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:right;clear:right;width:100%;margin-left:-2000px}.has-right-sidebar #post-body-content{margin-left:300px;float:none;width:auto}#col-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0}#col-left{width:35%}#col-right{float:left;clear:left;width:65%}#publishing-action .spinner,#save-post,.alignleft,.subsubsub{float:right}.col-wrap{padding:0 7px}.alignright{float:left}.textleft{text-align:right}.textright{text-align:left}.clear{clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}h2,h3,p{margin:1em 0}#adminmenu .wp-submenu,#dashboard_quick_press .draft-title,#templateside,#the-comment-list td.comment,.dashboard-comment-wrap,.misc-pub-filename,.pre,.widefat *{word-wrap:break-word}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{right:6px;top:-25px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;z-index:100000;line-height:normal;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:0}.filter-group,.wp-filter{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}.hidden,.js .closed .inside,.js .hide-if-js,.js .wp-core-ui .hide-if-js,.js.wp-core-ui .hide-if-js,.no-js .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js,.no-js.wp-core-ui .hide-if-no-js{display:none}#menu-management .menu-edit,#menu-settings-column .accordion-container,.comment-ays,.feature-filter,.imgedit-group,.manage-menus,.menu-item-handle,.popular-tags,.stuffbox,.widget-inside,.widget-top,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.comment-ays,.feature-filter,.imgedit-group,.popular-tags,.stuffbox,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{background:#fff}body,html{height:100%;margin:0;padding:0}html{background:#f1f1f1}body{color:#444;font-family:"Open Sans",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#0073aa;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#00a0d2}a:focus,a:focus .media-icon img{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}h1,h2,h3{color:#23282d}.ie8 a:focus{outline:#5b9dd9 solid 1px}#adminmenu a:focus,.screen-reader-text:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}p{font-size:13px;line-height:1.5}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{font-size:2em;margin:.67em 0}h2,h3{font-size:1.3em}.update-core-php h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-right:2em}ul.ul-disc{list-style:disc}ul.ul-square{list-style:square}ol.ol-decimal{list-style:decimal}ol.ol-decimal,ul.ul-disc,ul.ul-square{margin-right:1.8em}ol.ol-decimal>li,ul.ul-disc>li,ul.ul-square>li{margin:0 0 .5em}.code,code{font-family:Consolas,Monaco,monospace;unicode-bidi:embed}code,kbd{padding:3px 5px 2px;margin:0 1px;background:#eaeaea;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;color:#666}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat a{text-decoration:none}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #e1e1e1}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #e1e1e1;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:right;line-height:1.3em;font-size:14px}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 8px 0 0;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-top:-1px}.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 3px 0 0}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-right:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 2px 0 20px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 0 4px 15px;line-height:29px}.subtitle{margin:0;padding-right:25px;color:#777;font-size:14px;font-weight:400}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-right:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:none;-webkit-border-radius:2px;border-radius:2px;background:#e0e0e0;text-shadow:none;font-weight:600;font-size:13px}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{background:#00a0d2;color:#fff}.wrap h1.long-header{padding-left:0}.wp-dialog{background-color:#fff}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f9f9f9}.bar{background-color:#e8e8e8;border-left-color:#99d}.media-upload-form label.form-help,td.help{color:#9a9a9a}.highlight{background-color:#e4f2fd;color:#000}.wp-ui-primary{color:#fff;background-color:#32373c}.wp-ui-text-primary{color:#32373c}.wp-ui-highlight{color:#fff;background-color:#1e8cbe}.wp-ui-text-highlight{color:#1e8cbe}.wp-ui-notification{color:#fff;background-color:#d54e21}.wp-ui-text-notification{color:#d54e21}.wp-ui-text-icon{color:#999}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}#nav-menu-footer,#nav-menu-header,#your-profile #rich_editing,.checkbox,.control-section .accordion-section-title,.menu-item-handle,.postbox .hndle,.side-info,.sidebar-name,.stuffbox .hndle,.widefat tfoot td,.widefat tfoot th,.widefat thead td,.widefat thead th,.widget .widget-top{line-height:1.4em}.menu-item-handle,.widget .widget-top{background:#fafafa;color:#23282d}.postbox .hndle,.stuffbox .hndle{border-bottom:1px solid #eee;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#adminmenu *,.accordion-section-title{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.quicktags,.search{background-color:#ccc;color:#000;font-size:12px}.icon32{display:none}#bulk-titles div a:before,.notice-dismiss:before,.tagchecklist span a:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#b4b9be;content:"\f153";display:block;font:400 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.welcome-panel .welcome-panel-close:before{margin:0}#bulk-titles div a:before,.tagchecklist span a:before{margin:1px 0}#bulk-titles div a:hover:before,.tagchecklist span a:hover:before,.welcome-panel .welcome-panel-close:focus:before,.welcome-panel .welcome-panel-close:hover:before{color:#c00}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap}#namediv td.first,#plugin-information-title,.nav-tab,.no-break,.star-rating,.ui-autocomplete li{white-space:nowrap}.howto{color:#666;font-style:italic;display:block}p.install-help{margin:8px 0;font-style:italic}hr{border:0;border-top:1px solid #ddd;border-bottom:1px solid #fafafa}#all-plugins-table .plugins a.delete,#media-items a.delete,#media-items a.delete-permanently,#nav-menu-footer .menu-delete,#search-plugins-table .plugins a.delete,.plugins a.delete,.row-actions span.delete a,.row-actions span.spam a,.row-actions span.trash a,.submitbox .submitdelete{color:#a00}#all-plugins-table .plugins a.delete:hover,#media-items a.delete-permanently:hover,#media-items a.delete:hover,#nav-menu-footer .menu-delete:hover,#search-plugins-table .plugins a.delete:hover,.file-error,.plugins a.delete:hover,.row-actions .delete a:hover,.row-actions .spam a:hover,.row-actions .trash a:hover,.submitbox .submitdelete:hover,.widget-control-remove:hover,abbr.required{color:red;text-decoration:none;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #ddd;background:#f5f5f5}#delete-action{line-height:28px;vertical-align:middle;text-align:right;float:right}#publishing-action{text-align:left;float:left;line-height:23px}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}#minor-publishing-actions{padding:10px 10px 0;text-align:left}.preview{float:left}#sticky-span{margin-right:18px}.side-info{margin:0;padding:4px;font-size:11px}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom:1px solid #dadada}.side-info ul{margin:0;padding-right:18px;list-style:square;color:#666}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:left}.wp-filter{display:inline-block;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;background:#fff;color:#555;font-size:13px}.filter-group,html.wp-toolbar{-webkit-box-sizing:border-box}.wp-filter a{text-decoration:none}.filter-count{display:inline-block;vertical-align:middle;min-width:4em}.filter-count .count,.title-count{display:inline-block;position:relative;top:-1px;padding:4px 10px;-webkit-border-radius:30px;border-radius:30px;background:#777;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-right:5px;margin-left:20px}.filter-items{float:right}.filter-links,.filter-links li{display:inline-block;margin:0}.filter-links li>a{display:inline-block;margin:0 10px;padding:15px 0;border-bottom:4px solid #fff;color:#666;cursor:pointer}.filter-links .current{-webkit-box-shadow:none;box-shadow:none;border-bottom:4px solid #666;color:#23282d}.filter-links li>a:focus,.filter-links li>a:hover,.show-filters .filter-links a.current:focus,.show-filters .filter-links a.current:hover{color:#00a0d2}.wp-filter .search-form{float:left;margin:10px 0}.wp-filter .search-form input[type=search]{margin:0;padding:3px 5px;width:280px;max-width:100%;font-size:16px;font-weight:300;line-height:1.5}.wp-filter .search-form select{margin:0;height:32px;vertical-align:top}.wp-filter .search-form.search-plugins{display:inline-block}.wp-filter .drawer-toggle{display:inline-block;margin:0 10px;padding:4px 6px;color:#666;cursor:pointer}.wp-filter .drawer-toggle:before{display:inline-block;vertical-align:top;content:"\f111";margin:0 0 0 5px;width:16px;height:16px;color:#777;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;font-family:dashicons;font-size:16px;line-height:1;text-align:center;text-decoration:inherit;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased}.filter-drawer,.wp-filter .favorites-form{margin:0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa}.wp-filter .drawer-toggle:hover,.wp-filter .drawer-toggle:hover:before{color:#00a0d2}.wp-filter .drawer-toggle.current:before{color:#fff}.wp-filter .favorites-form{display:none;overflow:hidden;width:100%}.show-favorites-form .wp-filter .favorites-form{display:block}.filter-drawer{display:none}.show-filters .filter-drawer{display:block;overflow:hidden;width:100%}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2ea2cc}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .drawer-toggle{-webkit-border-radius:2px;border-radius:2px;border:none;background:#777;color:#fff}.filter-group,.filtered-by .tag{border:1px solid #e5e5e5;background:#fff}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;position:relative;float:right;margin:0 0 0 1%;padding:20px 10px 10px;width:24%;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{display:inline-block;margin:7px 0 7px 4px;line-height:16px}.filter-drawer .buttons{margin-bottom:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-right:10px}.filtered-by{display:none;margin:0}.filtered-by>span{font-weight:600}.filtered-by a{margin-right:10px}.filtered-by .tags{display:inline}.filtered-by .tag{margin:0 5px;padding:4px 8px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);font-size:11px}.filters-applied .filter-drawer .buttons,.filters-applied .filter-drawer br,.filters-applied .filter-group{display:none!important}.filters-applied .filtered-by{display:block}.filters-applied .filter-drawer{padding:20px}.error .content-filterable,.loading-content .content-filterable,.show-filters .content-filterable,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #eee}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.notice,div.error,div.updated{background:#fff;border-right:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 15px 2px;padding:1px 12px}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}#adminmenu a,#catlist a,#taglist a,.updated a{text-decoration:none}.updated a{padding-bottom:2px}.notice-alt{-webkit-box-shadow:none;box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#23282d;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-left:38px;position:relative}.notice-dismiss{position:absolute;top:0;left:1px;border:none;margin:0;padding:9px;background:0 0;color:#b4b9be;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#c00}.notice-dismiss:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .notice-dismiss:focus{outline:#5b9dd9 solid 1px}.notice-success,div.updated{border-right-color:#46b450}.notice-success.notice-alt{background-color:#ecf7ed}.notice-warning{border-right-color:#ffb900}.notice-warning.notice-alt{background-color:#fff8e5}.notice-error,div.error{border-right-color:#dc3232}.notice-error.notice-alt{background-color:#fbeaea}.notice-info{border-right-color:#00a0d2}.notice-info.notice-alt{background-color:#e5f5fa}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}#update-nag,.update-nag{display:inline-block;line-height:19px;padding:11px 15px;font-size:14px;text-align:right;margin:25px 2px 0 20px;background-color:#fff;border-right:4px solid #ffba00;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.update-message{color:#000}.update-php .spinner{float:none;margin:-4px 0}#ajax-loading,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-right:2em}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-right:0!important}#screen-meta .screen-reader-text{visibility:hidden}#screen-meta-links{margin:0 0 0 20px}#screen-meta{display:none;margin:0 0 -1px 20px;position:relative;background-color:#fff;border:1px solid #ddd;border-top:none;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.025);box-shadow:0 1px 0 rgba(0,0,0,.025)}#contextual-help-link-wrap,#screen-options-link-wrap{float:left;height:28px;margin:0 6px 0 0;border:1px solid #ddd;border-top:none;background:#fff;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-shadow:0 1px 1px -1px rgba(0,0,0,.1)}#screen-meta-links .screen-meta-toggle{position:relative;top:0}#screen-meta-links .show-settings{border:0;background:0 0;-webkit-border-radius:0;border-radius:0;color:#777;line-height:1.7;padding:3px 16px 3px 6px}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#32373c}#screen-meta-links .show-settings:active{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}#screen-meta-links .show-settings:after{left:0;content:"\f140";font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 5px;bottom:2px;position:relative;vertical-align:bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#b4b9be}#templateside ul li a,#wpfooter a,.contextual-help-tabs a,.nav-tab{text-decoration:none}#screen-meta-links .screen-meta-active:after{content:"\f142"}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.hndle a,.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.ie8 #screen-options-wrap legend{color:inherit}.metabox-prefs label{display:inline-block;padding-left:15px;line-height:30px}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-left:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 0 0 5px}.metabox-prefs .columns-prefs label input{margin:-1px 0 0 2px}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-left:15px}.metabox-prefs .screen-options label{line-height:28px;padding-left:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;right:150px;left:170px;border:1px solid #e1e1e1;border-top:none;border-bottom:none;background:#f6fbfd}#contextual-help-wrap.no-sidebar #contextual-help-back{left:0;border-left-width:0;-webkit-border-bottom-left-radius:2px;border-bottom-left-radius:2px}.contextual-help-tabs{float:right;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:0 2px 0 0;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 12px 5px 5px;line-height:18px;border:1px solid transparent;border-left:none;border-right:none}.contextual-help-tabs a:hover{color:#32373c}.contextual-help-tabs .active{padding:0;margin:0 0 0 -1px;border-right:2px solid #00a0d2;background:#f6fbfd;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02);box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02)}.contextual-help-tabs .active a{border-color:#e1e1e1;color:#32373c}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 0 12px 22px;line-height:1.6em}.help-tab-content.active{display:block}.help-tab-content ul li{list-style-type:disc;margin-right:18px}.contextual-help-sidebar{width:150px;float:left;padding:0 12px 0 8px;overflow:auto}html.wp-toolbar{padding-top:32px;-moz-box-sizing:border-box;box-sizing:border-box}.widefat td,.widefat th{color:#555}.widefat ol,.widefat p,.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th,.widefat ul{color:#32373c}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:right}.postbox-container .meta-box-sortables{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .empty-container{border:3px dashed #b4b9be;height:250px}.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container,.metabox-holder.columns-1 .postbox-container .empty-container{border:0;height:0;min-height:0}#post-body-content{width:100%;min-width:463px;float:right}#post-body.columns-2 #postbox-container-1{float:left;margin-left:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content .metabox-holder .postbox-container .empty-container{border:0;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.hndle a{font-size:11px}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,#dashboard_right_now .versions .b,#ed_reply_toolbar #ed_reply_strong,#pass-strength-result.short,#pass-strength-result.strong,#post-status-display,#post-visibility-display,.edit-comment-author,.feature-filter .feature-name,.item-controls .item-order a,.media-item .percent,.nav-tab,.plugins .name{font-weight:600}.postbox .handlediv{display:none;float:left;width:36px;height:36px;padding:0}.js .postbox .handlediv{display:block}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox .inside,.stuffbox .inside{padding:0 12px 12px;line-height:1.4em;font-size:13px}.postbox .inside{margin:11px 0;position:relative}.postbox .inside>p:last-child,.rss-widget ul li:last-child{margin-bottom:1px!important}.postbox.closed h3{border:none;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{-webkit-box-shadow:none;box-shadow:none}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 0 0 10px}#wpfooter{position:absolute;bottom:0;right:0;left:0;padding:10px 20px;color:#777}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}#wpfooter a:hover{text-decoration:underline}.nav-tab{float:right;border:1px solid #ccc;border-bottom:none;margin-right:.5em;padding:5px 10px;font-size:14px;line-height:24px;background:#e4e4e4;color:#555}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:16px}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#464646}.nav-tab-active,.nav-tab:focus:active{-webkit-box-shadow:none;box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#464646}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;margin:0;padding:9px 0 0 15px;line-height:inherit}.nav-tab-wrapper:after{content:"";display:table;clear:both}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;display:inline-block;visibility:hidden;float:left;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.spinner.is-active{visibility:visible}#template div{margin-left:190px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder h3{padding:10px 14px 11px 10px;line-height:21px}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:right}.attention,.error-message{color:red;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #e7e7e7;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px;display:block}.post-categories,.post-categories li{display:inline}.importers td{padding-left:14px}.importers{font-size:16px;width:auto}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{font-size:14px;line-height:1.4;color:#222;margin:2px 9px 0 0}.checkbox,.post-categories,.zerosize,fieldset{padding:0;margin:0}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;border:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:none}fieldset{border:0}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) bottom left repeat-x}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) top left repeat-x;height:17px;float:right}.star-rating .star{display:inline-block;width:20px;height:20px;-webkit-font-smoothing:antialiased;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;text-align:center;color:#ffb900}.star-rating .star-full:before{content:"\f155"}.star-rating .star-half:before{content:"\f459"}.rtl .star-rating .star-half{-webkit-transform:rotateY(180deg);-ms-transform:rotateY(180deg);transform:rotateY(180deg)}.star-rating .star-empty:before{content:"\f154"}div.action-links{font-weight:400}#plugin-information{background:#fff;position:fixed;top:0;left:0;bottom:0;right:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 20px;background:#f5f5f5;font-size:22px;font-weight:600;line-height:56px;position:relative;top:0;left:0;right:0;height:56px;overflow:hidden;text-overflow:ellipsis}#plugin-information-title.with-banner{margin-left:0;height:250px;bottom:250px;-webkit-background-size:cover;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:700;padding:0;margin:0;max-width:680px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#plugin-information-title.with-banner h2{font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:50px;padding:0 15px;margin:174px 10px 0 0;color:#fff;background:rgba(30,30,30,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);-webkit-box-shadow:0 0 30px rgba(255,255,255,.1);box-shadow:0 0 30px rgba(255,255,255,.1);-webkit-border-radius:8px;border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{display:block;float:left;top:0;height:250px;width:772px;margin:0 -20px;background:0 0;-webkit-box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1)}#plugin-information-tabs{padding:0 16px;position:relative;left:0;right:0;height:36px;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;float:right;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;-webkit-transition:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff;padding-top:8px;color:#32373c}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;left:0;right:0;min-height:100%;min-height:-webkit-calc(100% - 152px);min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:-webkit-calc(100% - 346px);min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;left:250px;bottom:0;right:0;margin-left:250px;padding:10px 26px 99999px;margin-bottom:-99939px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:left;position:relative;top:0;left:0;padding:16px 16px 99999px;margin-bottom:-99939px;width:217px;border-right:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#464646}#plugin-information .fyi h3{font-weight:700;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-left:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:right;margin-left:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#ececec;float:right}#plugin-information .counter-bar{height:17px;background-color:#ffc733;float:right}#plugin-information .counter-count{margin-right:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-left:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-left:4px}#plugin-information-footer{padding:13px 16px;position:absolute;left:0;bottom:0;right:0;height:33px;border-top:1px solid #ddd;background:#f3f3f3}#plugin-information .section ol,#plugin-information .section ul{list-style-type:disc;margin-left:24px}#plugin-information .section,#plugin-information .section p{font-size:14px;line-height:1.7}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;margin-top:16px;max-width:100%;width:auto;height:auto;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px}#plugin-information pre{padding:7px;overflow:auto;border:1px solid #ccc}#plugin-information .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #e6e6e6}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px;bottom:100px}#plugin-information-title.with-banner h2{margin-top:30px;font-size:20px;line-height:40px;max-width:85%}#plugin-information-title.with-banner div.vignette{height:100px;bottom:100px;width:800%}#plugin-information-tabs{overflow:hidden;padding:0;height:auto}#plugin-information-tabs a.current{margin-bottom:0;border-bottom:none}#plugin-information .fyi{float:none;border:1px solid #ddd;position:static;width:auto;margin:26px 26px 0;padding-bottom:0}#section-holder{position:static;margin:0;padding-bottom:70px}#plugin-information .fyi h3,#plugin-information .fyi small{display:none}#plugin-information-footer{padding:12px 16px 0;height:46px}}body.about-php #TB_window,body.import-php #TB_window,body.index-php #TB_window,body.plugin-install-php #TB_window,body.plugins-php #TB_window,body.update-core-php #TB_window{background:#fcfcfc}.ie8 body.about-php #TB_window:before,.ie8 body.import-php #TB_window:before,.ie8 body.index-php #TB_window:before,.ie8 body.plugin-install-php #TB_window:before,.ie8 body.plugins-php #TB_window:before,.ie8 body.update-core-php #TB_window:before{content:" ";background:0 0}body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;background:url(../images/spinner.gif) center no-repeat #fcfcfc;-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transform:translateZ(0);transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}body.about-php #TB_title,body.import-php #TB_title,body.index-php #TB_title,body.plugin-install-php #TB_title,body.plugins-php #TB_title,body.update-core-php #TB_title{float:right;height:1px}body.about-php #TB_ajaxWindowTitle,body.import-php #TB_ajaxWindowTitle,body.index-php #TB_ajaxWindowTitle,body.plugin-install-php #TB_ajaxWindowTitle,body.plugins-php #TB_ajaxWindowTitle,body.update-core-php #TB_ajaxWindowTitle{display:none}body.about-php .tb-close-icon,body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{right:auto;left:-30px;color:#eee;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}body.about-php #TB_closeWindowButton:focus,body.about-php #TB_closeWindowButton:focus .tb-close-icon,body.about-php .tb-close-icon:focus,body.about-php .tb-close-icon:hover,body.import-php #TB_closeWindowButton:focus,body.import-php #TB_closeWindowButton:focus .tb-close-icon,body.import-php .tb-close-icon:focus,body.import-php .tb-close-icon:hover,body.index-php #TB_closeWindowButton:focus,body.index-php #TB_closeWindowButton:focus .tb-close-icon,body.index-php .tb-close-icon:focus,body.index-php .tb-close-icon:hover,body.plugin-install-php #TB_closeWindowButton:focus,body.plugin-install-php #TB_closeWindowButton:focus .tb-close-icon,body.plugin-install-php .tb-close-icon:focus,body.plugin-install-php .tb-close-icon:hover,body.plugins-php #TB_closeWindowButton:focus,body.plugins-php #TB_closeWindowButton:focus .tb-close-icon,body.plugins-php .tb-close-icon:focus,body.plugins-php .tb-close-icon:hover,body.update-core-php #TB_closeWindowButton:focus,body.update-core-php #TB_closeWindowButton:focus .tb-close-icon,body.update-core-php .tb-close-icon:focus,body.update-core-php .tb-close-icon:hover{color:#00a0d2;outline:0;-webkit-box-shadow:none;box-shadow:none}body.about-php .tb-close-icon:before,body.import-php .tb-close-icon:before,body.index-php .tb-close-icon:before,body.plugin-install-php .tb-close-icon:before,body.plugins-php .tb-close-icon:before,body.update-core-php .tb-close-icon:before{content:"\f335";font-size:32px}@media screen and (max-width:830px){body.about-php .tb-close-icon,body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{left:0;top:-30px}}img{border:none}#wphead{border-bottom:1px solid #dfdfdf}#wphead h1 a{color:#464646}.js .meta-box-sortables .postbox .toggle-indicator:before,.js .sidebar-name .sidebar-name-arrow:before{content:"\f142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before,.js .widgets-holder-wrap.closed .sidebar-name-arrow:before{content:"\f140"}.js .sidebar-name .sidebar-name-arrow:before{padding:10px;right:0}.js #widgets-left .sidebar-name .sidebar-name-arrow{display:none}.accordion-section.open .accordion-section-content,.js #widgets-left .sidebar-name:hover .sidebar-name-arrow,.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow,.no-js .accordion-section .accordion-section-content{display:block}.js .postbox .handlediv .toggle-indicator:before{margin-top:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}#postcustomstuff p.submit,#templateside h2,.alignleft h2{margin:0}.rtl.js .postbox .handlediv .toggle-indicator:before{text-indent:1px}.js .postbox .handlediv:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.js .postbox .handlediv:focus .toggle-indicator:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#photo-add-url-div input[type=text]{width:300px}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;width:97%;background:#f9f9f9;outline:0}#template p{width:97%}#templateside{float:left;width:190px}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em 0;padding:0}#templateside li{margin:4px 0}#templateside li a,.theme-editor-php .highlight{display:block;padding:3px 12px 3px 3px;text-decoration:none}.theme-editor-php .highlight{margin:-3px -12px -3px 3px}#templateside .highlight{border:none;font-weight:700}.nonessential{color:#666;font-size:11px;font-style:italic;padding-right:12px}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:baseline;font-weight:600}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}.fileedit-sub{padding:10px 0 8px;line-height:180%}.accordion-section-title:after,.control-section .accordion-section-title:after,.nav-menus-php .item-edit:before,.widget-top a.widget-action:after{left:0;content:"\f140";border:none;background:0 0;font:400 20px/1 dashicons;speak:none;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.my-sites li a,form p.submit a.cancel:hover{text-decoration:none}.accordion-section-title:after,.handlediv,.item-edit,.sidebar-name-arrow,.widget-action{color:#a0a5aa}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.widget-action:hover{color:#777}.widget-top a.widget-action:after{padding:1px 0 1px 2px;margin-top:10px;margin-left:10px;-webkit-border-radius:50%;border-radius:50%}.widget-top a.widget-action:focus:after{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.accordion-section-title:after,.control-section .accordion-section-title:after{float:left;left:20px;top:-2px}#customize-info.open .accordion-section-title:after,.control-section.open .accordion-section-title:after,.nav-menus-php .menu-item-edit-active .item-edit:before,.widget.open .widget-top a.widget-action:after{content:"\f142"}/*!
  * jQuery UI Draggable/Sortable 1.11.4
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
- */.ui-draggable-handle,.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.accordion-section{border-bottom:1px solid #dfdfdf;margin:0}.accordion-section.open .accordion-section-content,.no-js .accordion-section .accordion-section-content{display:block}.accordion-section.open:hover{border-bottom-color:#dfdfdf}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-right:1px solid #dfdfdf;border-left:1px solid #dfdfdf;user-select:none}.js .accordion-section-title:after{position:absolute;top:12px;left:10px;z-index:1}.accordion-section-title:focus{outline:0}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a0a5aa transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title{border-right:none;border-left:none;padding:10px 14px 11px 10px;line-height:21px;background:#fff}.control-section .accordion-section-title:after{top:11px}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{color:#23282d;background:#f5f5f5}.control-section.open .accordion-section-title{border-bottom:1px solid #dfdfdf}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;left:0;background:#ccc}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:right;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:right}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f9f9f9}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:right;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f9f9f9}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:right;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:right}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f9f9f9}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:right;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:right}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f9f9f9}}@media only screen and (min-width:1600px){.my-sites li{float:right;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:right}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f9f9f9}}@media only screen and (min-width:769px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:860px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (min-width:980px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:768px){#col-left,#col-right{width:100%}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) bottom left repeat-x;-webkit-background-size:21px 37px;background-size:21px 37px}.spinner{background-image:url(../images/spinner-2x.gif)}#bulk-titles div a,#bulk-titles div a:hover,#screen-meta-links a.show-settings,.curtime #timestamp,.meta-box-sortables .postbox:hover .handlediv,.sidebar-name-arrow,.sidebar-name:hover .sidebar-name-arrow,.tagchecklist span a,.tagchecklist span a:hover,.widget-top a.widget-action,.widget-top a.widget-action:hover{background:0 0!important}}@-ms-viewport{width:device-width}@media screen and (max-width:782px){#template div,#templateside{float:none;width:auto}html.wp-toolbar{padding-top:46px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:transparent!important}#wpcontent{position:relative;margin-right:0;padding-right:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-left:12px;margin-right:0}.col-wrap{padding:0}#collapse-menu,#screen-meta,#screen-meta-links,.post-format-select{display:none!important}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.wp-color-result{height:auto;padding-right:45px}.wp-color-result:after{font-size:14px;height:auto;padding:6px 14px}.media-upload-form div.error,.notice,.wrap div.error,.wrap div.updated{margin:20px 0 10px;padding:5px 10px;font-size:14px;line-height:175%}.wp-core-ui .notice.is-dismissible{padding-left:46px}.notice-dismiss{padding:13px}.wrap .icon32+h2{margin-top:-2px}.wp-responsive-open #wpbody{left:-190px}code{word-wrap:break-word}.postbox{font-size:14px}.metabox-holder h3{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#templateside li{margin:0}#templateside li a{display:block;padding:5px}#templateside .highlight{padding:5px;margin-right:-5px;margin-top:-5px}#template div{margin:0}#template textarea{width:100%}.fileedit-sub .alignright{margin-top:15px}#comments-form .checkforspam,#wpfooter{display:none}.edit-comment-author{margin:2px 0 0}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open,div#post-body.metabox-holder.columns-1{overflow-x:hidden}html.wp-toolbar{padding-top:0}#wpbody{padding-top:46px}}#pressthis-code-wrap,textarea{overflow:auto}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:right}}input,textarea{box-sizing:border-box}input[type=text],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=search],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=text]:focus,input[type=password]:focus,input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=search]:focus,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}input[type=checkbox],input[type=radio]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 0 0 4px;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}#adminmenu,.network-admin.themes-php p.search-box{clear:right}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-left:4px;line-height:10px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{float:right;display:inline-block;vertical-align:middle;width:16px;font:400 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:'\f147';margin:-3px -4px 0 0;color:#1e8cbe}input[type=radio]:checked:before{content:'\2022';text-indent:-9999px;-webkit-border-radius:50px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4}.wp-admin input[type=file]{padding:3px 0}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin-right:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;-webkit-box-shadow:none;box-shadow:none}.wp-admin select{padding:2px;line-height:28px;height:28px;vertical-align:middle}.wp-admin .button-cancel{padding:0 5px;line-height:2}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border:none}p.submit{text-align:right;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:left}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}#doaction,#doaction2,#post-query-submit{margin:1px 0 0 8px}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:right;margin-left:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-right:1em}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,fieldset label,label{vertical-align:middle}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:'\f173';display:inline-block;font:400 20px/1 dashicons;speak:none;right:-1px;padding:0 0 0 5px;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 1px 5px 5px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result,.color-option{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.indicator-hint{padding-top:8px}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:left;margin:0}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:right;height:28px;margin:0 0 0 4px}input[type=text].ui-autocomplete-loading,input[type=email].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:left center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;text-align:right}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:right;padding:20px 0 20px 10px;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px;cursor:pointer}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0}.color-palette td{height:20px;padding:0;border:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;-webkit-transform:skew(-20deg) rotate(-6deg);-ms-transform:skew(-20deg) rotate(-6deg);transform:skew(-20deg) rotate(-6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(-20deg) rotate(-9deg);-ms-transform:skew(-20deg) rotate(-9deg);transform:skew(-20deg) rotate(-9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 9px 8px 12px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:'\f157';position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#777}#local-time,#utc-time{padding-right:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:100%}.request-filesystem-credentials-dialog{display:none}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:right;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-right:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:left}#request-filesystem-credentials-dialog .button:not(:last-child),.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=password],input[type=email],input[type=number],input[type=search]{-webkit-appearance:none;padding:6px 10px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:400 30px/1 Dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=text],.form-table td input[type=password],.form-table td input[type=email],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:left;margin:-30px 0 0 3px}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=text].small-text,input[type=password].small-text,input[type=number].small-text,input[type=search].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-right:0}.form-table.permalink-structure td code{margin-right:32px}.form-table.permalink-structure td input[type=text]{margin-right:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-left:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;left:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media only screen and (max-height:480px){.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;right:0}}@media screen and (max-width:600px){.color-option{width:49%}}#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px;margin:-6px -8px 0 0;float:right}.icon16:before{color:#999;font:400 20px/1 dashicons;speak:none;padding:6px 0;height:34px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.icon16.icon-dashboard:before{content:'\f226'}.icon16.icon-post:before{content:'\f109'}.icon16.icon-media:before{content:'\f104'}.icon16.icon-links:before{content:'\f103'}.icon16.icon-page:before{content:'\f105'}.icon16.icon-comments:before{content:'\f101';margin-top:1px}.icon16.icon-appearance:before{content:'\f100'}.icon16.icon-plugins:before{content:'\f106'}.icon16.icon-users:before{content:'\f110'}.icon16.icon-tools:before{content:'\f107'}.icon16.icon-settings:before{content:'\f108'}.icon16.icon-site:before{content:'\f112'}.icon16.icon-generic:before{content:'\f111'}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:right;z-index:9990}#adminmenu *{user-select:none}#adminmenu *,.theme-overlay .current-label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px;color:#eee}#adminmenu .wp-submenu a{color:#b4b9be;color:rgba(240,245,250,.7)}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#00b9eb}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;right:160px;overflow:visible}#adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{padding:7px 0 8px;z-index:9999;background-color:#32373c;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu a.menu-top:focus+.wp-submenu,.js #adminmenu .opensub .wp-submenu,.js #adminmenu .sub-open,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu{position:relative;z-index:3;top:auto;right:auto;left:auto;bottom:auto;border:0;margin-top:0;-webkit-box-shadow:none;box-shadow:none;background-color:#32373c}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{position:relative;background-color:#191e23;color:#00b9eb}.folded #adminmenu li.menu-top:hover,.folded #adminmenu li.opensub>a.menu-top,.folded #adminmenu li>a.menu-top:focus{z-index:10000}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu .wp-menu-arrow,#adminmenu .wp-menu-arrow div,#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,.folded #adminmenu li.wp-has-current-submenu{background:#0073aa;color:#fff}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:0;right:36px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{min-width:160px;width:auto}#adminmenu .wp-submenu a{font-size:13px;line-height:1.2;margin:0;padding:6px 0}#adminmenu .opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-not-current-submenu li>a,.folded #adminmenu .wp-has-current-submenu li>a{padding-left:16px;padding-right:14px;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:6px 12px}#adminmenu .wp-submenu-head,#adminmenu a.menu-top{font-size:14px;font-weight:400;line-height:18px;padding:0}#adminmenu .wp-submenu-head{display:none}.folded #adminmenu .wp-menu-name{position:absolute;right:-999px}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0;overflow:hidden}#adminmenu .wp-menu-image img{padding:9px 0 0;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:8px 0}#adminmenu div.wp-menu-image{float:right;width:36px;height:34px;margin:0;text-align:center}#adminmenu div.wp-menu-image.svg{background-repeat:no-repeat;background-position:center;-webkit-background-size:20px auto;background-size:20px auto}div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6);padding:7px 0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6)}#adminmenu .current div.wp-menu-image:before,#adminmenu .wp-has-current-submenu div.wp-menu-image:before,#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before{color:#fff}#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#00b9eb}.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#a0a5aa}.folded #adminmenu div.wp-menu-image{width:35px;height:30px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:34px}.no-font-face #adminmenu .wp-menu-image{display:none}.no-font-face #adminmenu div.wp-menu-name{padding:8px 12px}.no-font-face.auto-fold #adminmenu .wp-menu-name{margin-right:0}.sticky-menu #adminmenuwrap{position:fixed}.wp-menu-arrow{display:none!important}ul#adminmenu a.wp-has-current-submenu{position:relative}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{left:0;border:8px solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-left-color:#f1f1f1;top:50%;margin-top:-8px}.folded ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.folded ul#adminmenu a.wp-has-current-submenu:after,.folded ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{left:0;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-width:8px;top:10px;z-index:10000}.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:18px}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#32373c}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100)}#adminmenu li.wp-menu-separator{height:5px;padding:0;margin:0 0 6px;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#collapse-button,#collapse-button div{height:15px;width:15px}#adminmenu .wp-submenu .wp-submenu-head{color:#fff;font-weight:400;font-size:14px;padding:8px 11px 8px 4px;margin:-7px 0 4px}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0}#adminmenu .awaiting-mod,#adminmenu .update-plugins{display:inline-block;background-color:#d54e21;color:#fff;font-size:9px;line-height:17px;font-weight:600;margin:1px 2px 0 0;vertical-align:top;-webkit-border-radius:10px;border-radius:10px;z-index:26}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,.folded #collapse-menu span{display:none}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#00b9eb;color:#fff}#collapse-menu{font-size:13px;line-height:34px;margin-top:10px;color:#a0a5aa;color:rgba(240,245,250,.6);-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after{color:#00b9eb}#collapse-button{float:right;margin:10px 11px 10px 8px;-webkit-border-radius:10px;border-radius:10px}#wpwrap #collapse-button div{padding:0}#collapse-button div:after{content:'\f148';display:block;line-height:15px;right:-3px;top:-3px;color:#a0a5aa;color:rgba(240,245,250,.6);font:400 20px/1 dashicons!important;speak:none;margin:0 auto;padding:0!important;position:relative;text-align:center;width:20px;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button div:after,.rtl #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.folded #collapse-button div:after{-webkit-transform:none;-ms-transform:none;transform:none}.customize-support #menu-appearance a[href="themes.php?page=custom-header"],.customize-support #menu-appearance a[href="themes.php?page=custom-background"],li#wp-admin-bar-menu-toggle{display:none}@media only screen and (max-width:960px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-right:36px}.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{width:36px}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{top:0;right:36px}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu,.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em;margin-left:-1px;padding:7px 0 8px;z-index:9999}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{min-width:150px;width:auto}.auto-fold #adminmenu .wp-has-current-submenu li>a{padding-left:16px;padding-right:14px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-right:12px}.auto-fold #adminmenu .wp-menu-name{position:absolute;right:-999px}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #collapse-menu span,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.auto-fold #adminmenu div.wp-menu-image{height:30px;width:34px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{height:34px}.auto-fold #adminmenu li.wp-menu-open{border:0}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-button div{background:0 0}.auto-fold #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.auto-fold #collapse-button div:after{-webkit-transform:none;-ms-transform:none;transform:none}}@media screen and (max-width:782px){.auto-fold #wpcontent{position:relative;margin-right:0;padding-right:10px}.sticky-menu #adminmenuwrap{position:relative;z-index:auto;top:0}.auto-fold #adminmenu,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{position:absolute;width:190px;z-index:100}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{display:none}.auto-fold .wp-responsive-open #adminmenuback,.auto-fold .wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu li.menu-top{width:100%}.auto-fold #adminmenu li a{font-size:16px;padding:5px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding:10px 20px 10px 10px}.auto-fold #adminmenu .wp-menu-name{position:static;margin-right:35px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li.current>a.current:after{border-width:8px;margin-top:-8px}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{display:none}#adminmenu .wp-submenu{position:relative;display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold #adminmenu .wp-menu-open .wp-submenu{position:relative;display:block;top:0;right:-1px;-webkit-box-shadow:none;box-shadow:none}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;right:-1px;left:0;top:0}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;right:4px;padding-left:10px;z-index:99999;border:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpadminbar #wp-admin-bar-menu-toggle a{display:block;padding:0;overflow:hidden;outline:0;text-decoration:none;border:1px solid transparent;background:0 0;height:44px;margin-right:-1px}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#32373c}li#wp-admin-bar-menu-toggle{display:block}#wpadminbar #wp-admin-bar-menu-toggle a:hover{border:1px solid transparent}#wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{content:'\f228';display:inline-block;float:right;font:400 40px/45px Dashicons;vertical-align:middle;outline:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:44px;width:50px;padding:0;border:none;text-align:center;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#00b9eb}}@media screen and (max-width:600px){#adminmenuback,#adminmenuwrap{display:none}.wp-responsive-open #adminmenuback,.wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu{top:46px}}#wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody-content #dashboard-widgets.columns-2 .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4{float:left;width:50.5%}#wpbody-content #dashboard-widgets.columns-3 .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4{float:left}#dashboard-widgets .postbox-container,#wpbody-content #dashboard-widgets.columns-4 .postbox-container{width:25%}#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container{border:none!important}.ie8 #wpbody-content #dashboard-widgets .postbox-container{width:49.5%}.ie8 #wpbody-content #dashboard-widgets #postbox-container-2,.ie8 #wpbody-content #dashboard-widgets #postbox-container-3,.ie8 #wpbody-content #dashboard-widgets #postbox-container-4{float:left;width:50.5%}.ie8 #dashboard-widgets #postbox-container-3 .empty-container,.ie8 #dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}#dashboard-widgets-wrap{overflow:hidden;margin:0 -8px}#dashboard-widgets .postbox .inside{margin-bottom:0}#dashboard-widgets .meta-box-sortables{margin:0 8px;min-height:100px}#the-comment-list td.comment p.comment-author{margin-top:0;margin-right:0}#the-comment-list p.comment-author img{float:right;margin-left:8px}#the-comment-list p.comment-author strong a{border:none}#the-comment-list td{vertical-align:top}#the-comment-list td.comment img{max-width:100%}.welcome-panel{position:relative;overflow:auto;margin:16px 0;padding:23px 10px 0;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:13px;line-height:2.1em}#activity-widget #the-comment-list .comment-item:first-child,#dashboard_right_now .sub,.js #dashboard_quick_press .drafts{border-top:1px solid #eee}.activity-block,.dashboard-widget-control-form,.mu-storage,.tablenav .actions,th.sortable a,th.sorted a{overflow:hidden}.welcome-panel h3{margin:0;font-size:21px;font-weight:400;line-height:1.2}.welcome-panel h4{margin:1.33em 0 0;font-size:16px}.welcome-panel li{font-size:14px}.welcome-panel p{color:#777}.welcome-panel a{text-decoration:none}.welcome-panel .about-description{font-size:16px;margin:0}.welcome-panel .welcome-panel-close{position:absolute;top:10px;left:10px;padding:10px 21px 10px 15px;font-size:13px;line-height:1.23076923;text-decoration:none}.welcome-panel .welcome-panel-close:before{position:absolute;top:8px;right:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 0 3px 13px;padding:12px 36px;height:auto;line-height:1.4285714;white-space:normal}.welcome-panel-content{margin-right:13px;max-width:1500px}.welcome-panel .welcome-panel-column-container{clear:both;position:relative}.welcome-panel .welcome-panel-column{width:32%;min-width:200px;float:right}.ie8 .welcome-panel .welcome-panel-column{min-width:230px}.welcome-panel .welcome-panel-column:first-child{width:36%}.welcome-panel-column p.hide-if-no-customize{margin-top:10px}.welcome-panel-column p{margin-top:7px;color:#464646}.welcome-panel .welcome-icon{background:0 0!important}.welcome-panel .welcome-icon:before{color:#82878c;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 10px;top:-1px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.welcome-panel .welcome-edit-page:before,.welcome-panel .welcome-write-blog:before{content:'\f119';top:-3px}.welcome-panel .welcome-add-page:before{content:'\f132'}.welcome-panel .welcome-view-site:before{content:'\f115';top:-2px}.welcome-panel .welcome-widgets-menus:before{content:'\f116';top:-2px}.welcome-panel .welcome-comments:before{content:'\f117';top:-1px}.welcome-panel .welcome-learn-more:before{content:'\f118';top:-1px}.welcome-panel .welcome-widgets-menus{line-height:16px}.welcome-panel .welcome-panel-column ul{margin:.8em 0 1em 1em}.welcome-panel .welcome-panel-column li{line-height:16px;list-style-type:none;padding:0 0 8px}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .dashboard-widget-control-form,#dashboard_primary .widget-loading{padding:12px 12px 0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#777;margin-top:4px}#dashboard_primary .rss-widget{border-bottom:1px solid #eee;font-size:13px;padding:8px 12px 10px}#dashboard_primary .rss-widget:last-child{border-bottom:none;padding-bottom:8px}#dashboard_primary .rss-widget a{font-weight:400}#dashboard_primary .rss-widget span,#dashboard_primary .rss-widget span.rss-date{color:#777}#dashboard_primary .rss-widget span.rss-date{margin-right:12px}#dashboard_primary .rss-widget ul li{margin-bottom:8px}#dashboard_right_now ul{margin:0;display:inline-block;width:100%}#dashboard_right_now li{width:50%;float:right;margin-bottom:10px}#dashboard_right_now .inside{padding:0}#dashboard_right_now .main{padding:0 12px 11px}#dashboard_right_now .main p{margin:0}#dashboard_right_now #wp-version-message .button{float:left;position:relative;top:-5px;margin-right:5px}#dashboard-widgets h4.mu-storage{margin-bottom:10px}#dashboard_right_now li a:before,#dashboard_right_now li span:before{color:#82878c}#dashboard_right_now .sub{color:#777;background:#f5f5f5;padding:10px 12px 6px}#dashboard_right_now .sub h4{color:#555}#dashboard_right_now .sub p{margin:0 0 1em}#dashboard_right_now .warning a:before,#dashboard_right_now .warning span:before{color:#d54e21}#dashboard_quick_press .drafts li time,#title-wrap #title-prompt-text,.textarea-wrap #content-prompt-text{color:#777}#dashboard_right_now li a:before,#dashboard_right_now li span:before{content:'\f159';font:400 20px/1 dashicons;speak:none;display:block;float:right;margin:0 0 0 5px;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#dashboard_right_now .page-count a:before,#dashboard_right_now .page-count span:before{content:'\f105'}#dashboard_right_now .post-count a:before,#dashboard_right_now .post-count span:before{content:'\f109'}#dashboard_right_now .comment-count a:before{content:'\f101'}#dashboard_right_now .comment-mod-count a:before{content:'\f125'}#dashboard_right_now .storage-count a:before{content:'\f104'}#dashboard_right_now .storage-count.warning a:before{content:'\f153'}#dashboard_quick_press .inside{margin:0;padding:0}#dashboard_quick_press div.updated{margin-bottom:10px;border:1px solid #eee;border-width:1px 0 1px 1px}#dashboard_quick_press form{margin:12px}#dashboard_quick_press .drafts,#dashboard_quick_press .easy-blogging{padding:10px 0 0}input#save-post{float:right}form.initial-form.quickpress-open label.prompt{font-style:normal}form.initial-form.quickpress-open input#title{height:auto}#dashboard_quick_press input,#dashboard_quick_press textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0}#dashboard_quick_press textarea{resize:vertical}#description-wrap{margin-top:12px}.input-text-wrap,.textarea-wrap{position:relative}.input-text-wrap .prompt,.textarea-wrap .prompt{position:absolute}.textarea-wrap #content-prompt-text{font-size:1.1em;padding:7px 8px}.textarea-wrap textarea#content{margin:0 0 8px;padding:6px 7px}#quick-press textarea#content{min-height:90px;max-height:1300px;resize:none}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts h4{margin:0 12px 8px;font-weight:400}#dashboard_quick_press .drafts .view-all{float:left;margin:0 0 0 12px}#dashboard_primary a.rsswidget{font-weight:400}#dashboard_quick_press .drafts ul{margin:0 12px}#dashboard_quick_press .drafts li{margin-bottom:1em}#dashboard_quick_press .drafts p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 0 0 5px}#dashboard-widgets #dashboard_activity h4{margin:0 12px 8px 0;font-weight:400}#dashboard-widgets #dashboard_activity h4.comment-meta{margin:0}#dashboard_activity h4.comment-meta{margin-bottom:4px}#dashboard_activity ul{padding:0 12px}#dashboard_activity .comment-meta span.approve:before{content:'\f227';font:20px/.5 dashicons;margin-right:12px;vertical-align:middle;position:relative;top:-1px;margin-left:2px}#dashboard_activity .inside{padding:0;margin:0}#dashboard_activity .no-activity{overflow:hidden;padding:0 12px 12px;text-align:center}#dashboard_activity .no-activity p{color:#999;font-size:16px}#dashboard_activity .no-activity .smiley{margin-top:0}#dashboard_activity .no-activity .smiley:before{content:'\f328';font:400 120px/1 dashicons;speak:none;display:block;margin:0 0 0 5px;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#dashboard_activity .subsubsub{float:none;border-top:1px solid #eee;margin-top:0;padding:8px 12px 4px}#future-posts ul,#published-posts ul{clear:both;margin-bottom:0}#future-posts li,#published-posts li{margin-bottom:8px}#future-posts ul span,#published-posts ul span{display:inline-block;margin-left:5px;min-width:150px;color:#777}.activity-block{border-bottom:1px solid #eee;padding:8px 0 4px}.activity-block:last-child{border-bottom:none}.activity-block .subsubsub li{color:#ddd}#activity-widget #the-comment-list div.undo,#activity-widget #the-comment-list tr.undo{background:0 0;padding:6px 0;margin-right:12px}#activity-widget #the-comment-list .comment-item{background:#fafafa;padding:12px;position:relative}#activity-widget #the-comment-list .avatar{position:absolute;top:13px}#activity-widget #the-comment-list .dashboard-comment-wrap{padding-right:63px}#activity-widget #the-comment-list .dashboard-comment-wrap blockquote{margin:1em 0}#activity-widget #the-comment-list .comment-item h4{font-size:13px;color:#999}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0}#activity-widget #the-comment-list .unapproved{background-color:#fef7f1}#activity-widget #the-comment-list .unapproved:before{content:"";display:block;position:absolute;right:0;top:0;bottom:0;background:#d54e21;width:4px}#activity-widget #the-comment-list .spam-undo-inside .avatar,#activity-widget #the-comment-list .trash-undo-inside .avatar{position:relative;top:0}#dashboard-widgets #dashboard_browser_nag.postbox .inside{margin:10px}.edit-box{display:none}h3:hover .edit-box{display:inline}#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets a{text-decoration:none}#dashboard-widgets h3 a,#dashboard_browser_nag a{text-decoration:underline}#dashboard-widgets h3 .postbox-title-action{position:absolute;left:10px;padding:0;top:5px}.js #dashboard-widgets h3 .postbox-title-action{left:33px}#dashboard-widgets h4{color:#23282d;font-weight:400;font-size:14px;margin:0 0 .2em;padding:0}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.06);box-shadow:inset 0 1px 0 rgba(0,0,0,.06)}#activity-widget .comments #the-comment-list .alt{background-color:transparent}#activity-widget #latest-comments #the-comment-list .comment-item{padding:1em 12px}#latest-comments #the-comment-list .pingback{padding-right:12px!important}#latest-comments #the-comment-list .comment-item:first-child{border-top:none}#latest-comments #the-comment-list .comment-item h4{line-height:1.5em;margin-top:0;color:#666}#latest-comments #the-comment-list .comment-item h4 cite{font-style:normal;font-weight:400}#latest-comments #the-comment-list .comment-item blockquote,#latest-comments #the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#latest-comments #the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:13px}#description-wrap label,#title-wrap label{cursor:text}#title-wrap #title{padding:2px 6px;font-size:1.3em;outline:0}#title-wrap #title-prompt-text{font-size:1.1em;padding:5px 8px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:14px;font-weight:600;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;font-size:13px;margin-right:3px}.rss-widget cite{display:block;text-align:left;margin:0 0 1em;padding:0}.rss-widget cite:before{content:'\2014'}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-left:125px}#dashboard_browser_nag .browser-icon{margin-top:-35px}#dashboard_browser_nag.postbox.browser-insecure{background-color:#ac1b1b;border-color:#ac1b1b}#dashboard_browser_nag.postbox{background-color:#e29808;background-image:none;border-color:#edc048;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag.postbox.browser-insecure h3{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h3{border-bottom-color:#f6e2ac;background:0 0;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag h3.hndle{border:none;font-weight:600;font-size:20px;padding-top:10px}.postbox#dashboard_browser_nag p a.dismiss{font-size:14px}.postbox#dashboard_browser_nag a,.postbox#dashboard_browser_nag p,.postbox#dashboard_browser_nag p.browser-update-nag{font-size:16px}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}}@media only screen and (min-width:800px) and (max-width:1499px){#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container,#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0;height:0;min-height:0}#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:left;width:50.5%}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}.index-php .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@media only screen and (min-width:1500px) and (max-width:1800px){#wpbody-content #dashboard-widgets .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:left}#dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column,.welcome-panel .welcome-panel-column:first-child{display:block;float:none;width:100%}.welcome-panel .welcome-panel-column li{display:inline-block;margin-left:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}}@media screen and (max-width:782px){#dashboard_recent_comments #the-comment-list .comment-item .avatar{height:30px;width:30px;margin:4px 0 5px 10px}}@media screen and (max-width:600px){.welcome-panel .welcome-panel-close{overflow:hidden;text-indent:40px;white-space:nowrap;width:20px;height:20px;padding:5px;top:5px;left:5px}.welcome-panel .welcome-panel-close:before{font-size:20px;top:5px;right:-35px}}.response-links{display:block;margin-bottom:1em}.response-links a{display:block}.response-links a.comments-edit-item-link{font-weight:600}.response-links a.comments-view-item-link{font-size:12px}.post-com-count-wrapper strong{font-weight:400}.comments-view-item-link{display:inline-block;clear:both}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:nowrap;word-wrap:normal}.column-comments .post-com-count,.column-response .post-com-count{display:inline-block;vertical-align:top}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:5px}.column-comments .comment-count-approved,.column-comments .comment-count-no-comments,.column-response .comment-count-approved,.column-response .comment-count-no-comments{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;-webkit-border-radius:5px;border-radius:5px;background-color:#72777c;color:#fff;font-size:11px;line-height:21px;text-align:center}.ie8 .column-comments .comment-count-approved,.ie8 .column-comments .comment-count-no-comments,.ie8 .column-response .comment-count-approved,.ie8 .column-response .comment-count-no-comments{min-width:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:"";display:block;margin-right:8px;width:0;height:0;border-top:5px solid #72777c;border-left:5px solid transparent}.column-comments .post-com-count-approved:focus .comment-count-approved,.column-comments .post-com-count-approved:hover .comment-count-approved,.column-response .post-com-count-approved:focus .comment-count-approved,.column-response .post-com-count-approved:hover .comment-count-approved{background:#0073aa}.column-comments .post-com-count-approved:focus:after,.column-comments .post-com-count-approved:hover:after,.column-response .post-com-count-approved:focus:after,.column-response .post-com-count-approved:hover:after{border-top-color:#0073aa}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:relative;right:-3px;padding:0 5px;min-width:7px;height:17px;border:2px solid #fff;-webkit-border-radius:11px;border-radius:11px;background:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #ccc}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#777}#replyrow td{padding:2px}#replysubmit{margin:0;padding:0 5px 3px;text-align:center}#replysubmit .button{margin-left:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow h5{margin:.2em 0 0;padding:0 5px;line-height:1.4em;font-size:1em}#commentsdiv #edithead .inside,#edithead .inside{float:right;padding:3px 5px 2px 0;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;-webkit-box-shadow:none;box-shadow:none}#replyerror{border-color:#ddd;background-color:#f9f9f9}.commentlist .avatar{vertical-align:text-top}#the-comment-list div.undo,#the-comment-list tr.undo{background-color:#f4f4f4}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fef7f1}#the-comment-list .unapproved th.check-column{border-right:4px solid #d54e21}#the-comment-list .unapproved th.check-column input{margin-right:4px}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}.sorting-indicator:before,th .comment-grey-bubble:before{speak:none;-moz-osx-font-smoothing:grayscale;position:relative;text-decoration:none!important;color:#444}#the-comment-list td,#the-comment-list th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}#the-comment-list tr:last-child td,#the-comment-list tr:last-child th{-webkit-box-shadow:none;box-shadow:none}#the-comment-list tr.unapproved+tr.approved td,#the-comment-list tr.unapproved+tr.approved th{border-top:1px solid rgba(0,0,0,.03)}.vim-current,.vim-current td,.vim-current th{background-color:#e4f2fd!important}th .comment-grey-bubble{height:16px;width:16px}th .comment-grey-bubble:before{content:'\f101';font:400 20px/.5 dashicons;display:inline-block;padding:0;top:4px;right:-4px;vertical-align:top;-webkit-font-smoothing:antialiased}.sorting-indicator:before,th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:'\f142'}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-date,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-posts{width:74px}.fixed .column-comment .comment-author{display:none}.fixed .column-categories,.fixed .column-rel,.fixed .column-response,.fixed .column-role,.fixed .column-tags{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:5.5em;padding:8px 0;text-align:right}.fixed .column-comments .vers{padding-right:3px}td.column-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;font-size:14px}td.column-title p,td.plugin-title p{margin:6px 0}table.media .column-title .media-icon{float:right;min-height:60px;margin:0 0 0 9px}table.media .column-title .media-icon img{max-width:60px;height:auto;vertical-align:top}table.media .column-title .has-media-icon~.row-actions{margin-right:70px}table.media .column-title .filename{margin-bottom:.2em}.wp-list-table a{-webkit-transition:none;transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;-webkit-box-shadow:none;box-shadow:none}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{vertical-align:middle;width:160px}.sorting-indicator{display:none;width:10px;height:4px;margin-top:8px;margin-right:7px}.sorting-indicator:before{font:400 20px/1 dashicons;display:inline-block;padding:0;top:-4px;right:-8px;line-height:10px;vertical-align:top;-webkit-font-smoothing:antialiased}.column-comments .sorting-indicator:before{top:0;right:-10px}.wp-list-table .toggle-row:before,th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:'\f140'}.wp-list-table .toggle-row{position:absolute;left:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .wp-list-table .toggle-row:focus:before{outline:#5b9dd9 solid 1px}.wp-list-table .toggle-row:active{-webkit-box-shadow:none;box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;right:10px;-webkit-border-radius:50%;border-radius:50%;display:block;padding:1px 0 1px 2px;color:#666;font:400 20px/1 dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none}.wp-list-table .is-expanded .toggle-row:before{content:'\f142'}tr.wp-locked .locked-indicator{margin-right:6px;height:20px;width:16px}tr.wp-locked .locked-indicator:before{color:#82878c;content:'\f160';display:inline-block;float:right;font:400 20px/1 dashicons;speak:none;vertical-align:middle;margin-right:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}tr .locked-info{height:0;opacity:0}tr.wp-locked .locked-info{margin-top:8px;height:auto;opacity:1}.locked-text{vertical-align:top}tr.locked-info,tr.wp-locked .locked-info{-webkit-transition:height 1s,opacity .5s;transition:height 1s,opacity .5s}.fixed .column-comments .sorting-indicator{margin-top:3px}#menu-locations-wrap .widefat{width:60%}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;padding:7px 10px 8px 7px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:right;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{display:block}.tablenav-pages a,.tablenav-pages-navspan{font-weight:600;padding:0 2px}.tablenav-pages .current-page{margin:0 0 0 2px;padding-bottom:5px;font-size:13px;text-align:center}.tablenav .total-pages{margin-left:2px}.tablenav #table-paging{margin-right:2px}.tablenav a.button-secondary{display:block;margin:3px 0 0 8px}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:left;height:28px;margin-top:3px;cursor:default;color:#555}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a,.tablenav-pages-navspan{display:inline-block;min-width:17px;border:1px solid #d2d2d2;padding:3px 5px 7px;background:#e4e4e4;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#e8e8e8;background:#ebebeb;color:#b4b4b4}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;-webkit-box-shadow:none;box-shadow:none;outline:0}.tablenav .displaying-num{margin-left:7px}.tablenav .one-page .displaying-num{display:inline-block;margin-top:5px;margin-left:0}.tablenav .actions{padding:2px 0 0 8px}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-left:20px}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#0073aa}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#00a0d2}.tablenav .view-switch{float:left;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 2px 0 8px}.media-toolbar.wp-filter .view-switch{margin:0 2px 0 12px}.view-switch a{float:right;width:28px;height:28px;text-align:center;line-height:24px;text-decoration:none}.view-switch a:before{color:#b4b9be;display:inline-block;font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.view-switch a:focus:before,.view-switch a:hover:before{color:#727272}.view-switch a.current:before{color:#0073aa}.view-switch .view-list:before{content:'\f163'}.view-switch .view-excerpt:before{content:'\f164'}.view-switch .view-grid:before{content:'\f509'}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-right:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter .wp-filter{margin-bottom:0}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex;padding:0}#posts-filter fieldset legend{padding:0 1px .2em 0}.row-actions,.row-actions-visible{padding:2px 0 0}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:600;margin:0 6px}.row-title{font-size:14px!important;font-weight:600}.column-comment .comment-author{margin-bottom:.6em}.column-author img,.column-comment .comment-author img,.column-username img{float:right;margin-left:10px;margin-top:1px}.row-actions{color:#ddd;font-size:13px}.mobile .row-actions,.row-actions.visible,div.comment-item:hover .row-actions,tr:hover .row-actions{visibility:visible}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:right;margin:0;padding:0;width:100%}#wpbody-content .inline-edit-row fieldset .inline-edit-col,tr.inline-edit-row td{padding:0 .5em}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left;width:69%}#bulk-titles div a,.inline-edit-row fieldset .inline-edit-date,.plugin-card,.quick-edit-row-post fieldset label.inline-edit-status{float:right}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:2.5;text-transform:uppercase}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0;font-style:italic}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;line-height:2.5}.inline-edit-row fieldset.inline-edit-date label{display:inline-block;margin:0;line-height:1.5;vertical-align:baseline}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;width:auto}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{display:block;float:right;width:6em;line-height:2.5}#posts-filter fieldset.inline-edit-date legend{padding:0}.inline-edit-row fieldset.inline-edit-date select{margin:1px;line-height:28px}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-right:6em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-left:.5em}.inline-edit-row .inline-edit-or{margin:.2em 0 .2em 6px;line-height:2.5}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:middle}.inline-edit-row fieldset label textarea{width:100%;height:4em;vertical-align:top}#bulk-titles,ul.cat-checklist{height:12em;border:1px solid #ddd;overflow-y:scroll;padding:0 5px}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-left:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.3em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}ul.cat-checklist{margin:0;background-color:#fff}#bulk-titles{display:block;margin:0 0 5px;line-height:140%}.inline-edit-row fieldset ul.cat-checklist input,.inline-edit-row fieldset ul.cat-checklist li{margin:0;position:relative}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-style:normal;font-size:11px}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%}.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{max-width:80%}.ie8 .inline-edit-row #post_parent,.ie8 .inline-edit-row select[name=page_template]{width:250px}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;height:18px;margin:0 -2px 0 3px;overflow:hidden;position:relative;width:20px}#bulk-titles div a:before{position:relative;top:-3px}.plugins tbody,.plugins tbody th.check-column{padding:8px 2px 0 0}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}#update-plugins-table tbody td p{margin-top:0}#update-plugins-table tbody td p strong{font-size:14px}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-right:6px}#update-plugins-table tfoot td.check-column,#update-plugins-table thead td.check-column{padding-top:11px}.plugins,.plugins td,.plugins th{color:#000}.plugins tr{background:#fff}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ol,.plugins .desc ul{margin:0 2em 0 0}.plugins .desc ul{list-style-type:disc}.plugins .row-actions{font-size:13px}.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th{padding:10px 9px}.plugins .active td,.plugins .active th{background-color:#f7fcfe}.plugins .update td,.plugins .update th{border-bottom:0}.plugin-update-tr td{border-top:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th,.plugins tr.active.plugin-update-tr+tr.inactive td,.plugins tr.active.plugin-update-tr+tr.inactive th{border-top:1px solid rgba(0,0,0,.03);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1;box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1}.plugins .update td,.plugins .update th,.plugins .updated td,.plugins .updated th,.plugins tr.active+tr.inactive.update td,.plugins tr.active+tr.inactive.update th,.plugins tr.active+tr.inactive.updated td,.plugins tr.active+tr.inactive.updated th,.upgrade .plugins tr:last-of-type td,.upgrade .plugins tr:last-of-type th{-webkit-box-shadow:none;box-shadow:none}.plugins .active.update td,.plugins .active.update th,tr.active.update+tr.plugin-update-tr .plugin-update{background-color:#fef7f1}.plugin-update-tr.active td,.plugins .active th.check-column{border-right:4px solid #00a0d2}.plugins .active.update th.check-column,.plugins .active.update+.plugin-update-tr .plugin-update{border-right:4px solid #d54e21}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-left:12px;white-space:nowrap}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugin-update-tr .update-message{font-size:13px;font-weight:400;margin:0 31px 8px 10px;padding:6px 40px 8px 12px;background-color:#f7f7f7;background-color:rgba(0,0,0,.03)}.plugin-card .install-now:before,.plugin-card .update-now:before,.plugin-update-tr .update-message:before{color:#d54e21;display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .update-now:before,.plugin-update-tr .update-message:before{content:'\f463'}.plugin-update-tr .update-message:before{margin:0 -30px 0 10px}.plugin-card .install-now:before,.plugin-card .update-now:before{margin:3px -2px 0 5px}.plugin-card .updating-message:before,.plugin-update-tr .updating-message:before{content:'\f463';-webkit-animation:rotation 2s infinite linear;animation:rotation 2s infinite linear}@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(-359deg);transform:rotate(-359deg)}}@keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(-359deg);transform:rotate(-359deg)}}.plugin-card .updated-message:before,.plugin-update-tr .updated-message:before{color:#79ba49;content:'\f147'}.wp-list-table.plugins tbody tr.plugin-update-tr td.plugin-update{overflow:hidden;padding:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}tr.active+tr.plugin-update-tr .plugin-update{background-color:#f7fcfe}tr.active+tr.plugin-update-tr:not(.updated) .plugin-update .update-message{background-color:#fcf3ef}.plugin-install-php h3{clear:both}.plugin-install-php h4{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{margin:0 8px 16px;width:48.5%;width:-webkit-calc(50% - 8px);width:calc(50% - 8px);background-color:#fff;border:1px solid #dedede;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.plugin-card:nth-child(odd){clear:both;margin-right:0}.plugin-card:nth-child(even){margin-left:0}@media screen and (min-width:1600px){.plugin-card{width:30%;width:-webkit-calc(33.1% - 8px);width:calc(33.1% - 8px)}.plugin-card:nth-child(odd){clear:none;margin-right:8px}.plugin-card:nth-child(even){margin-left:8px}.plugin-card:nth-child(3n+1){clear:both;margin-right:0}.plugin-card:nth-child(3n){margin-left:0}}.plugin-card-top{position:relative;padding:20px 20px 10px;min-height:135px}.plugin-action-buttons,div.action-links{margin:0}.plugin-card h4{margin:0 0 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-right:148px;margin-left:120px}.plugin-card .action-links{position:absolute;top:20px;left:20px;width:120px}.plugin-action-buttons{clear:left;float:left;margin-right:2em;margin-bottom:1em;text-align:left}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #dedede;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card .column-rating{line-height:23px}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:right;clear:right;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:left;float:left;clear:left;width:65%;width:-webkit-calc(100% - 180px);width:calc(100% - 180px)}.plugin-icon,.plugin-icon img{width:128px;height:128px}.plugin-card .column-compatibility span:before{font:400 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;right:-2px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.plugin-card .compatibility-incompatible:before{content:'\f158'}.plugin-card .compatibility-compatible:before{content:'\f147'}.plugin-icon{position:absolute;top:20px;right:20px;margin:0 0 20px 20px}.no-plugin-results{color:#999;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table tr.site-archived{background:#ffebe8}.wp-list-table tr.site-mature{background:#fecac2}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-right:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:right}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-left:20px}.plugin-card .desc,.plugin-card .name{margin-left:0}.plugin-card .desc p:first-of-type{margin-top:0}}@media screen and (max-width:782px){.plugins #the-list tr td,.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.tablenav{height:auto}.tablenav.top{margin:20px 0 5px}.tablenav.bottom{position:relative;margin-top:15px}.tablenav br{display:none}.tablenav br.clear{display:block}.form-wrap>p,.tablenav .view-switch,.tablenav.top .actions,.tablenav.top .displaying-num,.tablenav.top .tablenav-pages.one-page,.wp-list-table th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.view-switch a{width:36px;height:36px;line-height:33px}.tablenav.bottom .displaying-num{position:absolute;left:0;top:11px;margin:0;font-size:14px}.tablenav .tablenav-pages{width:100%;height:auto;text-align:center;margin:0 0 25px}.tablenav.bottom .tablenav-pages{margin-top:25px}.tablenav.bottom .tablenav-pages.one-page{margin:15px 0 0;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav-pages .pagination-links a,.tablenav-pages-navspan{padding:9px 16px 12px;font-size:18px}.tablenav-pages-navspan{height:18px}.tablenav-pages .pagination-links .current-page{padding:8px 9px 9px;font-size:16px}.comment-count{font-size:14px}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell;width:35px}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;display:block;width:auto!important}.wp-list-table td.column-primary{padding-left:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 35% 3px 8px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;right:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:right}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{-webkit-box-shadow:none;box-shadow:none}#the-comment-list .is-expanded td:last-child{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;width:auto;height:auto;margin:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:none}.column-comments .post-com-count [aria-hidden=true],.column-response .post-com-count [aria-hidden=true]{display:none}#edithead label,.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:0;margin-left:.5em}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:static;height:auto;min-width:0;padding:0;border:none;-webkit-border-radius:0;border-radius:0;background:0 0;color:#bb2a2a;font-size:inherit;line-height:inherit;text-align:right}.column-comments .post-com-count-pending:hover,.column-response .post-com-count-pending:hover{color:#dc3232}.widefat tfoot .check-column,.widefat thead .check-column{padding:10px 0}.widefat *{word-wrap:normal}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-size:16px}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong,table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset label.inline-edit-tags{padding:0 .5em}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{width:3em}.inline-edit-row fieldset input[name=aa]{width:4.5em}.inline-edit-row .inline-edit-or{margin:0 0 0 6px}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:right;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#bulk-titles div{margin:.8em .3em}.plugin-card,.plugin-update-tr .update-message{margin-right:0}#bulk-titles div a{height:22px}#wpbody-content #update-themes-table .plugin-title{width:auto}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{-webkit-box-shadow:none;box-shadow:none;border-top:none}.plugins tbody{padding:1px 0 0}.plugins .plugin-update-tr:before,.plugins tr.active+tr.inactive td.column-description,.plugins tr.active+tr.inactive th.check-column{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins .plugin-update-tr:before{content:'';display:table-cell}.plugins .active.update+.plugin-update-tr:before{border-right:4px solid #d54e21;background-color:#fef7f1}.plugins #the-list .plugin-update-tr .plugin-update{border-right:none}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install #the-list td{-webkit-box-shadow:none;box-shadow:none}table.plugin-install #the-list tr{display:block;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-left:0;width:100%}}#save-action .spinner,#show-comments .spinner,#show-comments a,.postarea h3 label{float:right}#poststuff{padding-top:10px;min-width:763px}#poststuff #post-body{padding:0}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-left:300px}#show-comments{overflow:hidden}#lost-connection-notice .spinner{visibility:visible;float:right;margin:0 0 0 5px}#titlediv{position:relative}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#poststuff #titlewrap{border:0;padding:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#777;position:absolute;font-size:1.7em;padding:11px 10px}#wp-content-editor-container,.postbox,form#tags-filter{position:relative}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px}input#link_description,input#link_url{width:98%}#pending{background:100% none;border:0;padding:0;font-size:11px;margin-top:-1px}#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-left:10px;font-size:11px}#editable-post-name-full{display:none}#editable-post-name{background-color:#fffbcc}#editable-post-name input{font-size:13px;height:22px;margin:0;width:16em}.submitbox .submit{text-align:right;padding:12px 10px 10px;font-size:11px;background-color:#464646;color:#ccc}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:red;border-bottom-color:red}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-left:4px;padding:6px}.inside-submitbox #post_status{margin:2px -2px 2px 0}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{min-width:255px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#post-status-info,.postbox{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:0 0;border:0;float:left;padding:0 12px;margin:0}.category-add input[type=text],.category-add select{width:100%;max-width:260px;vertical-align:baseline}#side-sortables .category-add input[type=text],#side-sortables .category-add select{margin:0 0 1em}#side-sortables .add-menu-item-tabs li,.wp-tab-bar li,ul.category-tabs li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js,.ui-tabs-hide,.wp-editor-expand #content-resize-handle,.wp-hidden-children .wp-hidden-child{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#32373c}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:10px 0}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:0 7px 5px}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}ul.add-menu-item-tabs,ul.category-tabs,ul.wp-tab-bar{margin-top:12px}ul.add-menu-item-tabs li,ul.category-tabs li{border:1px solid transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #dfdfdf;border-bottom-color:#fdfdfd;background-color:#fdfdfd}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px}#postimagediv .inside img{max-width:100%;height:auto;width:auto}#post-body .tagsdiv #newtag{margin-left:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{width:100%;border-spacing:0;border:1px solid #e5e5e5;border-top:none;background-color:#f7f7f7;box-shadow:0 1px 1px rgba(0,0,0,.04);z-index:999}#post-status-info td{font-size:12px}.autosave-info{padding:2px 10px;text-align:left}#editorcontent #post-status-info{border:none}#content-resize-handle{background:url(../images/resize.gif) left bottom no-repeat;width:12px;cursor:row-resize}.rtl #content-resize-handle{background:url(../images/resize-rtl.gif) right bottom no-repeat}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}#content-textarea-clone{z-index:-1;position:absolute;top:0;visibility:hidden;overflow:hidden;max-width:100%;border:1px solid transparent}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #e5e5e5}.wp-editor-expand #wp-content-editor-container{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px;border-bottom:0 none}.wp-editor-expand div.mce-statusbar{z-index:1}.wp-editor-expand #post-status-info{border-top:1px solid #e5e5e5}.wp-editor-expand div.mce-toolbar-grp{z-index:999}.mce-fullscreen #wp-content-wrap .mce-edit-area,.mce-fullscreen #wp-content-wrap .mce-menubar,.mce-fullscreen #wp-content-wrap .mce-statusbar,.mce-fullscreen #wp-content-wrap .mce-toolbar-grp{position:static!important;width:auto!important;padding:0!important}.mce-fullscreen #wp-content-wrap .mce-statusbar{visibility:visible!important}.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw,.mce-fullscreen #wp-content-wrap .mce-wp-dfw,.post-php.mce-fullscreen #wpadminbar{display:none}#wp-content-editor-tools{background-color:#f1f1f1;padding-top:20px}#poststuff #post-body.columns-2 #side-sortables{width:280px}#timestampdiv select{height:21px;line-height:14px;padding:0;vertical-align:top;font-size:12px}#aa,#hh,#jj,#mn{padding:1px;font-size:12px}#hh,#jj,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{padding:2px 0 1px;display:inline!important;height:auto!important}#misc-publishing-actions label[for=post_status]:before,#post-body #visibility:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:#82878c}#post-body #visibility:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 2px;top:0;right:-1px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#post-body #visibility:before{content:'\f177'}.curtime #timestamp:before{content:'\f145';top:-1px}#post-body .misc-pub-revisions:before{content:'\f321'}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}.notification-dialog{position:fixed;top:30%;max-height:70%;right:50%;width:450px;margin-right:-225px;background:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;z-index:1000005;overflow-y:auto}.notification-dialog-background{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000000}#post-lock-dialog .post-locked-message,#post-lock-dialog .post-taken-over{margin:25px}#post-lock-dialog .post-locked-message a.button{margin-left:10px}#post-lock-dialog .post-locked-avatar{float:right;margin:0 0 20px 20px}#post-lock-dialog .wp-tab-first{outline:0}#post-lock-dialog .locked-saving img{float:right;margin-left:3px}#post-lock-dialog.saved .locked-saved,#post-lock-dialog.saving .locked-saving{display:inline}#excerpt{display:block;margin:12px 0 0;height:4em;width:100%}.tagchecklist{margin-right:14px;font-size:12px;overflow:auto}.tagchecklist br{display:none}.tagchecklist span,.tagchecklist span a{overflow:hidden;display:block;float:right}.tagchecklist strong{margin-right:-8px;position:absolute}.tagchecklist span{margin-left:25px;font-size:13px;line-height:1.8em;cursor:default;max-width:100%;text-overflow:ellipsis}.tagchecklist span a{margin:1px -17px 0 0;cursor:pointer;width:20px;height:20px;text-indent:0;position:absolute}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:right}#poststuff h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}#poststuff .inside label.deleted,#poststuff .inside label.spam{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}.ie8 #poststuff .inside #page_template,.ie8 #poststuff .inside #parent_id{width:250px}#post-visibility-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f1f1f1}#postcustom #postcustomstuff .submit{border:0;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border:1px solid #dfdfdf;border-spacing:0;background-color:#f9f9f9}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-left:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:right;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:20px;width:20px;margin-left:5px;margin-top:-4px}.post-state-format:before{display:block;height:20px;width:20px;font:400 20px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon:before,.post-state-format:before{color:#ddd;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}a.post-format-icon:hover:before,a.post-state-format:hover:before{color:#00a0d2}#post-formats-select{line-height:2em}#post-formats-select .post-format-icon:before{top:5px}input.post-format{margin-top:1px}label.post-format-icon{margin-right:0;padding:2px 0}.post-format-icon:before{position:relative;display:inline-block;margin-left:7px;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon.post-format-standard:before,.post-state-format.post-format-standard:before,a.post-state-format.format-standard:before{content:'\f109'}.post-format-icon.post-format-image:before,.post-state-format.post-format-image:before,a.post-state-format.format-image:before{content:'\f128'}.post-format-icon.post-format-gallery:before,.post-state-format.post-format-gallery:before,a.post-state-format.format-gallery:before{content:'\f161'}.post-format-icon.post-format-audio:before,.post-state-format.post-format-audio:before,a.post-state-format.format-audio:before{content:'\f127'}.post-format-icon.post-format-video:before,.post-state-format.post-format-video:before,a.post-state-format.format-video:before{content:'\f126'}.post-format-icon.post-format-chat:before,.post-state-format.post-format-chat:before,a.post-state-format.format-chat:before{content:'\f125'}.post-format-icon.post-format-status:before,.post-state-format.post-format-status:before,a.post-state-format.format-status:before{content:'\f130'}.post-format-icon.post-format-aside:before,.post-state-format.post-format-aside:before,a.post-state-format.format-aside:before{content:'\f123'}.post-format-icon.post-format-quote:before,.post-state-format.post-format-quote:before,a.post-state-format.format-quote:before{content:'\f122'}.post-format-icon.post-format-link:before,.post-state-format.post-format-link:before,a.post-state-format.format-link:before{content:'\f103'}.category-adder{margin-right:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,.wp-tab-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border:1px solid #dfdfdf;background-color:#fdfdfd}.ac_results,.revisions-diff,.revisions-meta,.revisions-tickmarks{background-color:#fff}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}#front-page-warning,#front-static-pages ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.inline-editor ul.cat-checklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,ul.export-filters{margin-right:18px}ul.categorychecklist li{margin:0;padding:0;line-height:22px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap label{display:block;padding:2px;font-size:12px}.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field input[type=number],.form-field input[type=tel],.form-field input[type=url],.form-field input[type=search],.form-field textarea{border-style:solid;border-width:1px;width:95%}.form-wrap p,p.description{margin:2px 0 5px;color:#666}.form-wrap p,p.description,p.help,span.description{font-size:13px;font-style:italic}.form-wrap .form-field{margin:0 0 10px;padding:8px 0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h3{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .tagsdiv .howto{margin:0 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw,.ac_results{display:none}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h3{margin:2px 0 12px}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid grey}.wp-customizer .ac_results{z-index:500000}.ac_results li{padding:2px 5px;white-space:nowrap;color:#101010;text-align:right}.ac_over{background-color:#f0f0b8;cursor:pointer}.ac_match{text-decoration:underline}.imgedit-group-top h3 a,a.imgedit-help-toggle,table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}#comment-status-radio label,.links-table td,.links-table th{padding:5px 0}.comment-ays-submit .button-cancel{margin-right:1em}.spam-undo-inside,.trash-undo-inside{margin:1px 0 1px 8px;line-height:16px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-left:8px;vertical-align:middle}.stuffbox .editcomment{clear:none}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 0 5px 3px;vertical-align:middle}table.links-table{width:100%;border-spacing:0}.links-table th{font-weight:400;text-align:right;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table td label{margin-left:8px}.links-table td input[type=text],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}.wp-editor-expand #qt_content_dfw,.wp-editor-expand #wp-content-wrap .mce-wp-dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.focus-on #wp-toolbar{opacity:.3}.focus-off #screen-meta,.focus-off #screen-meta-links,.focus-off #wp-toolbar,.focus-off #wpfooter,.focus-off .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:url(../images/resize-2x.gif) left bottom no-repeat;-webkit-background-size:11px 11px;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background:url(../images/resize-rtl-2x.gif) left bottom no-repeat}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{border:0;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.columns-prefs,.screen-layout{display:none}}@media screen and (max-width:782px){#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px}#poststuff h3{padding:12px}.post-format-options{padding-left:0}.post-format-options a{margin-left:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-left:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}.tagsdiv .newtag,ul.categorychecklist li{margin-bottom:15px}ul.category-tabs li.tabs{padding:15px}ul.categorychecklist ul{margin-top:15px}.category-add input[type=text],.category-add select{max-width:none;margin-bottom:15px}.tagsdiv .newtag{width:100%;height:auto}.tagchecklist{margin:25px 10px}.tagchecklist span{font-size:16px;line-height:1.4}#commentstatusdiv p{line-height:2.8}.mceToolbar *{white-space:normal!important}.mceToolbar td,.mceToolbar tr{float:right!important}.wp_themeSkin a.mceButton{width:30px;height:30px}.wp_themeSkin .mceButton .mceIcon{margin-top:5px;margin-right:5px}.wp_themeSkin .mceSplitButton{margin-top:1px}.wp_themeSkin .mceSplitButton td a.mceAction{padding:6px 6px 6px 3px}.wp_themeSkin .mceSplitButton td a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen{padding-top:6px;padding-bottom:6px;background-position:1px 6px}.wp_themeSkin table.mceListBox{margin:5px}div.quicktags-toolbar input{padding:10px 20px}button.wp-switch-editor{font-size:16px;line-height:1em;margin:7px 7px 0 0;padding:8px 12px}#wp-content-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 15px 0 20px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-top:-3px!important;margin-right:-5px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}.misc-pub-section>a{float:left;font-size:16px}#delete-action,#publishing-action{line-height:47px}#publishing-action .spinner{float:none;margin-top:-2px}.comment-ays td,.comment-ays th{padding-bottom:0}.comment-ays td{padding-top:6px}.links-table #link_rel{max-width:none}.links-table td,.links-table th{padding:10px 0}}@media only screen and (max-width:500px){#wp-content-media-buttons a{font-size:14px;padding:0 10px}}.revisions-control-frame,.revisions-diff-frame{position:relative}.revisions-controls{padding-top:40px;height:100px;z-index:1}.revisions-controls input[type=checkbox]{position:relative;top:-1px;vertical-align:text-bottom}.revisions.pinned .revisions-controls{position:fixed;top:0;height:82px;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.revisions-tickmarks>div{position:absolute;height:100%;border-right:1px solid #a0a5aa;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.comparing-two-revisions.pinned .revisions-controls{height:124px}.revisions .diff-error{position:absolute;text-align:center;margin:0 auto;width:100%;display:none}.revisions.diff-error .diff-error{display:block}.revisions .loading-indicator{position:absolute;vertical-align:middle;opacity:0;width:100%;width:-webkit-calc(100% - 30px);width:calc(100% - 30px);top:50%;top:-webkit-calc(50% - 10px);top:calc(50% - 10px);-webkit-transition:opacity .5s;transition:opacity .5s;filter:alpha(opacity=0)}body.folded .revisions .loading-indicator{margin-right:-32px}.revisions .loading-indicator span.spinner{display:block;margin:0 auto;float:none}.revisions.loading .loading-indicator{opacity:1;filter:alpha(opacity=100)}.revisions .diff{-webkit-transition:opacity .5s;transition:opacity .5s}.revisions.loading .diff{opacity:.5;filter:alpha(opacity=50)}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions.pinned .revisions-meta{-webkit-box-shadow:none;box-shadow:none}.revision-toggle-compare-mode{position:absolute;top:0;left:0}.comparing-two-revisions .revisions-next,.comparing-two-revisions .revisions-previous,.revisions-meta .diff-meta-to strong{display:none}.revisions-controls .author-card .date{color:#777}.revisions-controls .author-card.autosave{color:#d54e21}.revisions-controls .author-card .author-name{font-weight:700}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions.pinned .revisions-buttons{padding:0 11px}.revisions-next,.revisions-previous{position:relative;z-index:1}.revisions-previous{float:right}.revisions-next{float:left}.revisions-controls .wp-slider{max-width:70%;margin:0 auto;top:-3px}.revisions-diff{padding:15px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.arrow:after,.revisions-diff{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff h3:first-child{margin-top:0}#revisions-meta-restored img,.post-revisions li img{vertical-align:middle}table.diff tbody tr td:nth-child(2){width:4%}table.diff{table-layout:fixed;width:100%;white-space:pre-wrap}.about-wrap h2 .nav-tab,.about-wrap p.wp-credits-list a,.imgedit-wrap .nowrap,.nav-menus-php .item-edit,.sidebar-name h3,.widget-title h4{white-space:nowrap}table.diff col.content{width:auto}table.diff col.content.diffsplit{width:48%}table.diff col.diffsplit.middle{width:auto}table.diff col.ltype{width:30px}table.diff tr{background-color:transparent}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.618;padding:.5em;vertical-align:top;word-wrap:break-word}table.diff td h1,table.diff td h2,table.diff td h3,table.diff td h4,table.diff td h5,table.diff td h6{margin:0}table.diff .diff-deletedline{background-color:#ffe9e9}table.diff .diff-deletedline del{background-color:#faa}table.diff .diff-addedline{background-color:#e9ffe9}table.diff .diff-addedline ins{background-color:#afa}.diff-meta{padding:5px;clear:both;min-height:32px}.diff-title strong{line-height:32px;min-width:60px;text-align:left;float:right;margin-left:5px}.revisions-controls .author-card .author-info{font-size:12px;line-height:16px}.revisions-controls .author-card .author-info,.revisions-controls .author-card .avatar{float:right;margin-right:6px;margin-left:6px}.revisions-controls .author-card .byline{display:block;font-size:12px}.revisions-controls .author-card .avatar{vertical-align:middle}.diff-meta input.restore-revision{float:left;margin-right:6px;margin-left:6px;margin-top:4px}.diff-meta-from{display:none}.comparing-two-revisions .diff-meta-from{display:block}.revisions-tooltip{position:absolute;bottom:105px;margin-left:0;margin-right:-69px;z-index:0;max-width:350px;min-width:130px;padding:8px 4px;opacity:0}.revisions-tooltip.flipped{margin-right:0;margin-left:-70px}.revisions.pinned .revisions-tooltip{display:none!important}.comparing-two-revisions .revisions-tooltip{bottom:145px}.revisions-tooltip-arrow{width:70px;height:15px;overflow:hidden;position:absolute;right:0;margin-right:35px;bottom:-15px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-right:0;margin-left:35px;right:auto;left:0}.revisions-tooltip-arrow>span{right:20px;top:-20px;width:25px;height:25px;transform:rotate(-45deg)}.arrow:after,.revisions-tooltip-arrow>span{content:"";position:absolute;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg)}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{right:auto;left:20px}.ie8 .revisions-tooltip-arrow>span{right:15px;top:-25px;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476)"}.ie8 .revisions-tooltip.flipped .revisions-tooltip-arrow>span{left:25px}.revisions-tooltip,.revisions-tooltip-arrow>span{border:1px solid #d7d7d7;background-color:#fff}.revisions-tooltip{display:none}.arrow{width:70px;height:16px;overflow:hidden;position:absolute;right:0;margin-right:-35px;bottom:90px;z-index:10000}.arrow.top{top:-16px;bottom:auto}.arrow.left{right:20%}.arrow:after{z-index:9999;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1);right:20px;top:-20px;width:25px;height:25px;transform:rotate(-45deg)}.revisions-tooltip,.revisions-tooltip-arrow:after{border-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-right:-10px}.rtl div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.wp-slider.ui-slider{position:relative;border:1px solid #d7d7d7;text-align:right;cursor:pointer}.wp-slider .ui-slider-handle{-webkit-border-radius:50%;border-radius:50%;height:18px;margin-top:-3px;outline:0;position:absolute;width:18px;z-index:2;-ms-touch-action:none;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#00a0d2;border:1px solid #0073aa;-webkit-box-shadow:inset 0 1px 0 #78c8e6,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #78c8e6,0 1px 0 rgba(0,0,0,.15)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:0;right:0;color:#fff;content:"\f229";font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.media-item .media-item-info tr,.wp-slider .ui-slider-range{background-color:transparent}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{font-size:20px!important;margin:-1px -1px 0 0}.wp-slider .ui-slider-handle.from-handle:before{content:'\f139'}.rtl .wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{content:'\f141'}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:'\f139';left:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-image:none}.wp-slider.ui-slider-horizontal{height:.7em}.wp-slider.ui-slider-horizontal .ui-slider-handle{top:-.25em;margin-right:-.6em}.wp-slider.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.wp-slider.ui-slider-horizontal .ui-slider-range-min{right:0}.wp-slider.ui-slider-horizontal .ui-slider-range-max{left:0}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.revision-tick.completed-false{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){#diff-next-revision,#diff-previous-revision{margin-top:-1em}table.diff{-ms-word-break:break-all;word-break:break-all;word-wrap:break-word}}.media-item .describe{width:100%;border-top:1px solid #dfdfdf;clear:both;cursor:default}#media-items:empty,.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:right;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .describe td{padding:0 0 8px 8px;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 10px 0 0}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{display:inline;padding:0 23px 0 0;margin:0 3px 0 1em;font-weight:600}.media-upload-form tr.image-size label{margin:0 5px 0 0;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 5px 0 0}.describe-toggle-off,.describe-toggle-on,.media-item .edit-attachment{display:block;line-height:36px;float:left;margin-left:10px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.js .html-uploader #plupload-upload-ui,.media-item .startclosed,.media-item .startopen{display:none}.media-upload-form .media-item{min-height:36px;margin-bottom:1px;position:relative;width:100%;background:#fff}.media-upload-form .media-item,.media-upload-form .media-item .error{-webkit-box-shadow:0 1px 0 #dfdfdf;box-shadow:0 1px 0 #dfdfdf}.media-item .filename{line-height:36px;overflow:hidden;margin-right:6px}.media-item .pinkynail{float:right;margin:2px 3px 0 10px;max-width:40px;max-height:32px}.media-item .original{position:relative;height:34px}.media-item .progress{float:left;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;-webkit-border-radius:22px;border-radius:22px;background:#ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;-webkit-border-radius:22px;border-radius:22px;background-color:#0073aa;-webkit-box-shadow:inset 0 0 2px rgba(0,0,0,.3);box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0;color:#fff;text-align:center;line-height:22px;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item .error,.media-upload-form .media-item.error{width:auto;margin:0 0 1px}.media-upload-form .media-item .error{padding:10px 14px 10px 0}.media-item .error-div a.dismiss{display:block;float:left;margin:0 15px 0 10px}.find-box{background-color:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);width:600px;overflow:hidden;margin-right:-300px;position:fixed;top:30px;bottom:30px;right:50%;z-index:100105}.find-box-head{background:#fcfcfc;border-bottom:1px solid #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 16px 0 36px;position:absolute;top:0;right:0;left:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.find-box-search{padding-bottom:16px}.find-box-search .spinner{float:none;right:105px;position:absolute}#find-posts-response,.find-box-search{position:relative}#find-posts-input,#find-posts-search{float:right}#find-posts-input{width:140px;height:28px;margin:0 0 0 4px}.widefat .found-radio{padding-left:0;width:16px}#find-posts-close{width:36px;height:36px;position:absolute;top:0;left:0;cursor:pointer;text-align:center;color:#666}#find-posts-close:hover{color:#00a0d2}#find-posts-close:before{font:400 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:'\f158'}.find-box-buttons{padding:8px 16px;background:#fcfcfc;border-top:1px solid #dfdfdf;position:absolute;bottom:0;right:0;left:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;right:0;left:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #ddd;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px}.drag-drop #drag-drop-area{border:4px dashed #b4b9be;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#a0a5aa;font-size:14px;margin:5px 0;display:none}.drag-drop .drag-drop-inside p{text-align:center}.drag-drop-inside p.drag-drop-info{font-size:20px}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title,.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}#plupload-upload-ui{position:relative}.media-frame.mode-grid,.media-frame.mode-grid .attachments-browser .attachments,.media-frame.mode-grid .media-frame-content,.media-frame.mode-grid .uploader-inline-content{position:static}.media-frame.mode-grid .media-frame-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-bottom:16px;padding:0 16px;border-right:4px solid #dd3d36;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.upload-php .mode-grid .media-sidebar .media-uploader-status{border-bottom:none;padding-bottom:0;max-width:100%}.upload-php .mode-grid .media-sidebar .upload-error{margin:12px 0;padding:4px 0 0;border:none;-webkit-box-shadow:none;box-shadow:none;background:0 0}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors{top:-10px;left:-14px;padding:10px}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:before{content:"\f153";display:block;font:400 16px/1 dashicons;color:#bbb}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;left:auto;right:auto;bottom:auto;padding-top:0;margin-top:0;border:4px dashed #b4b9be}.media-frame.mode-select .attachments-browser.fixed .attachments{position:relative;top:94px;padding-bottom:94px}.media-frame.mode-grid .attachment.details:focus,.media-frame.mode-grid .attachment:focus,.media-frame.mode-grid .selected.attachment:focus{-webkit-box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;outline:0}.media-frame.mode-grid .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc}.media-frame.mode-grid .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe;box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe}.media-frame.mode-grid.mode-select .attachment .thumbnail{opacity:.65}.media-frame.mode-select .attachment.selected .thumbnail{opacity:1}.media-frame.mode-grid .media-toolbar{margin-bottom:15px;height:auto}.media-frame.mode-grid .media-toolbar select{margin:0 0 0 10px;font-size:14px}.media-frame.mode-grid.mode-edit .media-toolbar-secondary>.select-mode-toggle-button{margin:0 0 0 8px;vertical-align:middle}.media-frame.mode-grid .attachments-browser .bulk-select{display:inline-block;margin:0 0 0 10px}.media-frame.mode-grid .search{margin-top:0}.media-frame.mode-grid .spinner{margin-top:16px}.attachments-browser .media-toolbar-secondary>.media-button{margin-left:10px}.media-frame.mode-select .attachments-browser.fixed .media-toolbar{position:fixed;top:32px;right:auto;left:20px;margin-top:0}.media-frame.mode-grid .attachments-browser{padding:0}.media-frame.mode-grid .attachments-browser .attachments{padding:2px}.media-frame.mode-grid .attachments-browser .no-media{color:#999;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:'\f335';font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#777;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-right:1px solid #ddd;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.upload-php .media-modal-close{top:0;left:0}.edit-attachment-frame .edit-media-header .left{left:102px}.edit-attachment-frame .edit-media-header .right{left:51px}.edit-attachment-frame .media-frame-title{right:0;left:150px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{font:400 20px/50px dashicons!important;display:inline;font-weight:300}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .left:hover,.edit-attachment-frame .edit-media-header .right:focus,.edit-attachment-frame .edit-media-header .right:hover,.upload-php .media-modal-close:focus,.upload-php .media-modal-close:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.upload-php .media-modal-close:focus .media-modal-icon:before,.upload-php .media-modal-close:hover .media-modal-icon:before{color:#000}.edit-attachment-frame .edit-media-header .left:before,.rtl .edit-attachment-frame .edit-media-header .right:before{content:'\f341'}.edit-attachment-frame .edit-media-header .right:before,.rtl .edit-attachment-frame .edit-media-header .left:before{content:'\f345'}.edit-attachment-frame .edit-media-header .left.disabled,.edit-attachment-frame .edit-media-header .left.disabled:hover,.edit-attachment-frame .edit-media-header .right.disabled,.edit-attachment-frame .edit-media-header .right.disabled:hover{color:#ccc;background:inherit;cursor:default;pointer-events:none}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{right:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;left:0;right:0;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1)}.edit-attachment-frame .attachment-media-view{float:right;width:65%;height:100%}.edit-attachment-frame .attachment-media-view .thumbnail{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin-bottom:16px;max-width:100%;max-height:90%;max-height:-webkit-calc(100% - 42px);max-height:calc(100% - 42px)}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:6px 8px;line-height:16px}.edit-attachment-frame .attachment-info{overflow:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);border-bottom:0;border-right:1px solid #ddd;background:#f3f3f3}.edit-attachment-frame .attachment-info .details,.edit-attachment-frame .attachment-info .settings{position:relative;overflow:hidden;float:none;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #ddd}.edit-attachment-frame .attachment-info .filename{font-weight:400;color:#666}.edit-attachment-frame .attachment-info .thumbnail{margin-bottom:12px}.attachment-info .actions{margin-bottom:16px}.attachment-info .actions a{display:inline;text-decoration:none}.wp_attachment_details label[for=content]{font-size:13px;line-height:1.5;margin:1em 0}.wp_attachment_details #attachment_caption{height:4em}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative}.imgedit-settings p{margin:8px 0 0}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto;overflow:hidden}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding-left:16px;width:auto;overflow:hidden}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:left;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;background:url(../images/spinner.gif) center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:right}.imgedit-settings .disabled,.media-disabled{color:grey}.A1B1,.wp_attachment_image{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:right;width:32px;border:1px solid #d5d5d5;background:#f1f1f1;margin:0 0 0 8px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;line-height:28px;color:#777;cursor:pointer}.imgedit-menu div:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;color:#32373c}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;color:#777;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:'\f165'}.imgedit-rleft:before{content:'\f166'}.imgedit-rright:before{content:'\f167'}.imgedit-flipv:before{content:'\f168'}.imgedit-fliph:before{content:'\f169'}.imgedit-undo:before{content:'\f171'}.imgedit-redo:before{content:'\f172'}.imgedit-crop-wrap{position:relative}.imgedit-crop{margin:0 0 0 8px}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 3px 0 8px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 3px 0 8px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 3px 0 8px}.imgedit-applyto img{margin:0 0 0 8px}#poststuff .imgedit-group-top h3{padding:0}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-right:20px}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{margin-bottom:8px;padding:10px}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 12px 10px 0}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;left:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{left:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.upload-php .media-modal-close .media-modal-icon{margin:9px 10px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{left:82px}.edit-attachment-frame .edit-media-header .right{left:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}}.theme-browser .themes{clear:both;padding:0 0 100px}.themes-php .wrap h1{float:right;margin-bottom:15px}.network-admin.themes-php .wrap h1{margin-bottom:0}.themes-php .wrap h1 .button{margin-right:20px}.themes-php .wp-filter-search{position:relative;top:-2px;right:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.themes-php div.error,.themes-php div.notice,.themes-php div.updated{margin:0 0 20px;clear:both}.themes-php div.updated a{text-decoration:underline}.theme-browser .theme{cursor:pointer;float:right;margin:0 0 4% 4%;position:relative;width:30.6%;border:1px solid #dedede;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-shadow:0 1px 1px -1px rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ie8 .theme-browser .theme{width:30%;margin:0 0 4% 3%}.theme-browser .theme:nth-child(3n){margin-left:0}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:pointer}.theme-browser .theme .theme-name{font-size:15px;font-weight:600;height:18px;margin:0;padding:15px;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65)}.theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;position:absolute;bottom:0;left:0;height:38px;padding:9px 10px 0;background:rgba(244,244,244,.7);border-right:1px solid rgba(0,0,0,.05)}.theme-browser .theme.focus .theme-actions,.theme-browser .theme:focus .theme-actions,.theme-browser .theme:hover .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-actions .button-primary{margin-left:3px}.theme-browser .theme .theme-actions .button-secondary{float:none;margin-right:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.theme-browser .theme .theme-screenshot:after{content:'';display:block;padding-top:66.66666%}.theme-browser .theme .theme-screenshot img{height:auto;position:absolute;right:0;top:0;width:100%;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.theme-browser .theme:focus .theme-screenshot,.theme-browser .theme:hover .theme-screenshot{background:#fff}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:.4}.theme-browser .theme .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;position:absolute;top:35%;left:25%;right:25%;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.theme-browser .theme:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}.theme-browser .theme:focus .more-details{opacity:1}.theme-browser .theme.active:focus .theme-actions{display:block}.theme-browser.rendered .theme:focus .more-details,.theme-browser.rendered .theme:hover .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-installed,.theme-browser .theme .theme-update{background:#d54e21;background:rgba(213,78,33,.95);color:#fff;display:block;font-size:13px;font-weight:400;height:48px;line-height:48px;padding:0 10px;position:absolute;top:0;left:0;right:0;border-bottom:1px solid rgba(0,0,0,.25);overflow:hidden}.theme-browser .theme .theme-installed:before,.theme-browser .theme .theme-update:before{content:'\f463';display:inline-block;font:400 20px/1 dashicons;margin:0 0 0 6px;opacity:.8;position:relative;top:5px;speak:none;-webkit-font-smoothing:antialiased}.theme-browser .theme.active .theme-name{background:#2f2f2f;color:#fff;padding-left:110px;font-weight:300;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.5);box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}.theme-browser .customize-control .theme.active .theme-name{padding-left:15px}.theme-browser .theme.active .theme-name span{font-weight:600}.theme-browser .theme.active .theme-actions{background:rgba(49,49,49,.7);border-right:none;opacity:1}.theme-browser .theme.active .theme-actions .button-primary{margin-left:0}.theme-browser .theme .theme-author{background:#23282d;color:#eee;display:none;font-size:14px;margin:0 10px;padding:5px 10px;position:absolute;bottom:56px}.theme-browser .theme.display-author .theme-author{display:block}.theme-browser .theme.display-author .theme-author a{color:inherit;text-decoration:none}.theme-browser .theme.add-new-theme{border:none;-webkit-box-shadow:none;box-shadow:none}.theme-browser .theme.add-new-theme a{color:#999;text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:'';background:0 0;position:absolute;top:0;right:0;left:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #d5d2ca;border:5px dashed rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#e5e5e5;background:rgba(153,153,153,.1);-webkit-border-radius:50%;border-radius:50%;display:inline-block;content:'\f132';-webkit-font-smoothing:antialiased;font:400 74px/115px dashicons;width:100px;height:100px;vertical-align:middle;text-align:center;color:#999;position:absolute;top:30%;right:50%;margin-right:-50px;text-indent:-4px;padding:0;text-shadow:none;z-index:4}.rtl .theme-browser .theme.add-new-theme span:after{text-indent:4px}.theme-browser .theme.add-new-theme a:focus .theme-screenshot,.theme-browser .theme.add-new-theme a:hover .theme-screenshot{background:0 0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{background:#fff;color:#0073aa}.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{border-color:transparent;color:#fff;background:#0073aa;content:''}.theme-browser .theme.add-new-theme .theme-name{background:0 0;text-align:center;-webkit-box-shadow:none;box-shadow:none;font-weight:400;position:relative;top:0;margin-top:-18px;padding-top:0;padding-bottom:48px}.theme-browser .theme.add-new-theme a:focus .theme-name,.theme-browser .theme.add-new-theme a:hover .theme-name{color:#fff;z-index:2}.theme-overlay .theme-backdrop{position:absolute;right:-20px;left:0;top:0;bottom:0;background:#f1f1f1;background:rgba(238,238,238,.9);z-index:10000}.theme-overlay .theme-header{position:absolute;top:0;right:0;left:0;height:48px;border-bottom:1px solid #ddd}.theme-overlay .theme-header button{padding:0}.theme-overlay .theme-header .close{cursor:pointer;height:48px;width:50px;text-align:center;float:left;border:0;border-right:1px solid #ddd;background-color:transparent;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:400 22px/50px dashicons!important;color:#777;display:inline-block;content:'\f335';font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#777;background-color:transparent;height:48px;width:54px;float:right;text-align:center;border:0;border-left:1px solid #ddd;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#ddd;border-color:#ccc;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.theme-overlay .theme-header .left.disabled,.theme-overlay .theme-header .left.disabled:hover,.theme-overlay .theme-header .right.disabled,.theme-overlay .theme-header .right.disabled:hover{color:#ccc;background:inherit;cursor:inherit}.theme-overlay .theme-header .left:before,.theme-overlay .theme-header .right:before{font:400 20px/50px dashicons!important;display:inline;font-weight:300}.theme-overlay .theme-header .left:before{content:"\f345"}.theme-overlay .theme-header .right:before{content:"\f341"}.theme-overlay .theme-about:after,.theme-overlay .theme-wrap:after{clear:both;visibility:hidden;content:".";display:block;height:0}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;right:190px;left:30px;bottom:3%;background:#fff;-webkit-box-shadow:0 1px 20px 5px rgba(0,0,0,.1);box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}.theme-overlay .theme-actions,.theme-overlay .theme-wrap{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}body.folded .theme-overlay .theme-wrap{right:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;right:0;left:0;overflow:auto;padding:2% 4%}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;right:0;left:0;padding:10px 25px 5px;background:#f3f3f3;z-index:30;box-sizing:border-box;border-top:1px solid #eee}.ie8 .theme-overlay .theme-actions{border:1px solid #eee}.theme-overlay .theme-actions a{margin-left:5px;margin-bottom:5px}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#a00;text-decoration:none;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;background:0 0}.theme-overlay .theme-actions .delete-theme{position:absolute;left:10px;bottom:5px}.broken-themes a.delete-theme:focus,.broken-themes a.delete-theme:hover,.theme-overlay .theme-actions .delete-theme:focus,.theme-overlay .theme-actions .delete-theme:hover{background:#d54e21;color:#fff;border-color:#d54e21}.theme-overlay .theme-actions .inactive-theme,.theme-overlay.active .theme-actions .active-theme{display:block}.theme-overlay .theme-screenshots{float:right;margin:0 0 0 30px;width:55%;max-width:880px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;box-sizing:border-box;overflow:hidden;position:relative;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot,.upload-plugin,.upload-theme{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.theme-overlay .screenshot:after{content:'';display:block;padding-top:75%}.theme-overlay .screenshot img{height:auto;position:absolute;right:0;top:0;width:100%}.theme-overlay.small-screenshot .theme-screenshots{position:absolute;width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:350px;width:auto}.theme-overlay .screenshot.thumb{background:#ccc;border:1px solid #eee;float:none;display:inline-block;margin:10px 5px 0;width:140px;height:80px;cursor:pointer}.theme-overlay .screenshot.thumb:after{content:'';display:block;padding-top:100%}.theme-overlay .screenshot.thumb img{cursor:pointer;position:absolute;right:0;top:0;width:100%;height:auto}.theme-overlay .screenshot.selected{background:0 0;border:2px solid #00a0d2}.theme-overlay .screenshot.selected img{opacity:.8}.theme-browser .theme .theme-screenshot.blank,.theme-overlay .screenshot.blank{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.theme-overlay .theme-info{width:40%;float:right}.theme-overlay .current-label{background:#32373c;color:#fff;font-size:11px;display:inline-block;padding:2px 8px;-webkit-border-radius:2px;border-radius:2px;margin:0 0 -10px;user-select:none}.theme-overlay .theme-name{color:#23282d;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3}.theme-overlay .theme-version{color:#999;font-size:13px;font-weight:400;float:none;display:inline-block;margin-right:10px}.theme-overlay .theme-author{color:#686868;font-size:16px;font-weight:400;margin:15px 0 25px}.theme-overlay .theme-author a{text-decoration:none}.theme-overlay .theme-description{color:#555;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.theme-overlay .theme-tags{border-top:3px solid #eee;color:#82878c;font-size:13px;font-weight:400;margin:30px 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#444;font-weight:700;margin-left:5px}.theme-overlay .theme-update-message{background:#fef7f1;border:1px solid #eee;border-right:4px solid #d54e21;-webkit-border-radius:3px;border-radius:3px;padding:5px 20px 10px}.theme-overlay .theme-update{color:#23282d;font-size:18px;display:inline-block;line-height:40px;margin:0}.theme-overlay .parent-theme{background:#f7fcfe;border:1px solid #eee;border-right:4px solid #00a0d2;font-size:14px;font-weight:400;margin-top:30px;padding:10px 20px 10px 10px}.theme-overlay .parent-theme strong{font-weight:700}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;right:auto;left:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 0 3% 3%}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-left:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-left:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 0 3% 3%}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-left:3%}.theme-browser .theme:nth-child(4n){margin-left:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-left:0}.theme-browser .theme:nth-child(even){margin-left:0}.theme-browser .theme:nth-child(odd){margin-left:5%}}@media only screen and (max-width:900px){.theme-overlay .theme-wrap{right:65px}}@media only screen and (max-width:780px){.theme-browser .theme.active .theme-name span,.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;left:0;bottom:0;right:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:0;width:auto}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-left:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-left:0}}@media only screen and (max-width:650px){.theme-overlay .theme-description,.theme-overlay .theme-update{margin-right:0}.theme-overlay .theme-actions .delete-theme{position:relative;left:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;right:0;top:0;left:0;margin:10px 0;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:400 60px/90px dashicons;width:80px;height:80px;top:30%;right:50%;text-indent:0;margin-right:-40px}.single-theme .theme-wrap{margin:0 -10px 0 -12px;padding:10px}.single-theme .theme-overlay .theme-about{padding:10px;overflow:visible}.single-theme .current-label{display:none}.single-theme .theme-overlay .theme-actions{position:static}}.broken-themes{clear:both}.broken-themes table{text-align:right;width:50%;border-spacing:3px;padding:3px}.theme-browser .theme .theme-installed{background:#0073aa}.theme-browser .theme .theme-installed:before{content:'\f147'}.theme-browser .theme.is-installed .theme-actions .button-primary{display:none!important}.theme-install-php .wp-filter{padding:0 20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.theme-install-php a.browse-themes,.theme-install-php.show-upload-theme a.upload{display:none}.theme-install-php.show-upload-theme a.browse-themes{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:0;width:100%;overflow:hidden;position:relative;top:10px}.wp-full-overlay,.wp-full-overlay-sidebar{right:0;bottom:0;top:0;height:100%;position:fixed}.upload-plugin,body.show-upload-theme .upload-theme{display:block}body.show-upload-theme .upload-theme+.wp-filter,body.show-upload-theme .upload-theme+.wp-filter+.theme-browser,p.no-themes{display:none}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;max-width:380px}.upload-plugin .install-help,.upload-theme .install-help{color:#999;font-size:18px;font-style:normal;margin:0;padding:40px 0 0;text-align:center}p.no-themes{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}body.no-results p.no-themes{display:block}.theme-install-php .add-new-theme,body.show-upload-theme p.no-themes{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0;text-align:right}}.theme-details .star-rating{margin:15px 0 0}.theme-details .star-rating span:before{color:#ffb900;content:"\f154";display:inline-block;-webkit-font-smoothing:antialiased;font:400 20px/1 dashicons;vertical-align:top}.star-rating.rating-10 span.one:before,.star-rating.rating-30 span.two:before,.star-rating.rating-50 span.three:before,.star-rating.rating-70 span.four:before,.star-rating.rating-90 span.five:before{content:"\f459"}.star-rating.rating-100>span:before,.star-rating.rating-20 span.one:before,.star-rating.rating-30 span.one:before,.star-rating.rating-40 span.one:before,.star-rating.rating-40 span.two:before,.star-rating.rating-50 span.one:before,.star-rating.rating-50 span.two:before,.star-rating.rating-60 span.one:before,.star-rating.rating-60 span.three:before,.star-rating.rating-60 span.two:before,.star-rating.rating-70 span.one:before,.star-rating.rating-70 span.three:before,.star-rating.rating-70 span.two:before,.star-rating.rating-80 span.four:before,.star-rating.rating-80 span.one:before,.star-rating.rating-80 span.three:before,.star-rating.rating-80 span.two:before,.star-rating.rating-90 span.four:before,.star-rating.rating-90 span.one:before,.star-rating.rating-90 span.three:before,.star-rating.rating-90 span.two:before{content:"\f155"}.theme-details .star-rating .ratings{display:block;line-height:20px;color:#999}.appearance_page_custom-header #headimg{border:1px solid #DFDFDF;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{clear:both;margin:0 0 20px 20px;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-left:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf}div#custom-background-image img{max-width:400px;max-height:300px}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:0 0;z-index:500000;overflow:visible;left:0;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;width:300px;padding:0;margin:0;z-index:10;background:#eee;border-left:none}.widget,.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible;margin-right:-300px}.wp-full-overlay-sidebar:after{content:'';display:block;position:absolute;top:0;bottom:0;left:0;width:3px;z-index:1000}.wp-full-overlay-main{position:absolute;right:0;left:0;top:0;bottom:0;height:100%}#customize-preview.wp-full-overlay-main{background:url(../images/spinner.gif) center center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready{background:0 0}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;right:0;left:0;height:45px;padding:0 15px;line-height:45px;z-index:10;margin:0;border-top:none;-webkit-box-shadow:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-header a.back{margin-top:9px}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:none;border-top:none;-webkit-box-shadow:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;right:0;left:0;overflow:auto}.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header{padding:0}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{display:block;position:relative;float:right;width:45px;height:45px;padding-left:2px;background:#eee;border-left:1px solid #ddd;color:#444;cursor:pointer;text-decoration:none;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-install-overlay .close-full-overlay:focus,.theme-install-overlay .close-full-overlay:hover,.theme-install-overlay .next-theme:focus,.theme-install-overlay .next-theme:hover,.theme-install-overlay .previous-theme:focus,.theme-install-overlay .previous-theme:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:400 22px/1 dashicons;content:"\f335";position:relative;top:7px;right:13px}.theme-install-overlay .previous-theme:before{font:400 20px/1 dashicons;content:"\f345";position:relative;top:6px;right:14px}.theme-install-overlay .next-theme:before{font:400 20px/1 dashicons;content:"\f341";position:relative;top:6px;right:13px}.theme-install-overlay .next-theme.disabled,.theme-install-overlay .next-theme.disabled:focus,.theme-install-overlay .next-theme.disabled:hover,.theme-install-overlay .previous-theme.disabled,.theme-install-overlay .previous-theme.disabled:focus,.theme-install-overlay .previous-theme.disabled:hover{color:#b4b9be;background:#eee;cursor:default;pointer-events:none}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:8px;right:10px;padding:0;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:0!important;border-radius:0!important}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#0073aa}.wp-full-overlay .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar-label{display:inline-block;vertical-align:middle;line-height:20px}.wp-full-overlay .collapse-sidebar-arrow{width:20px;height:20px;margin:0 2px;-webkit-border-radius:50%;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-full-overlay .collapse-sidebar-label{margin-right:3px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar-arrow:before{display:block;content:"\f148";background:#eee;font:400 20px/1 dashicons;speak:none;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:rotate(180.001deg);-ms-transform:rotate(180.001deg);transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:none;-ms-transform:none;transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{-webkit-transition-property:right,left,top,bottom,width,margin;transition-property:right,left,top,bottom,width,margin;-webkit-transition-duration:.2s;transition-duration:.2s}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;right:0;left:0;height:100%}.customize-active #customize-container{display:block}.customize-loading #customize-container iframe{opacity:0}.customize-loading #customize-container{background:url(../images/spinner.gif) center center no-repeat fixed #fff;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay{display:none}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .install-theme-info{display:block}.install-theme-info .theme-install{float:left;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin-top:15px;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0;float:right}.theme-details .theme-description{float:right;color:#777;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{float:left;margin:8px 0 0 10px;line-height:26px}.theme-install-overlay .wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.theme-install-overlay .wp-full-overlay-main{background:url(../images/spinner.gif) center center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);-webkit-background-size:15px 123px;background-size:15px 123px}#customize-preview.wp-full-overlay-main,.customize-loading #customize-container,.theme-install-overlay .wp-full-overlay-main{background-image:url(../images/spinner-2x.gif)}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:2px}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:6px;line-height:normal}}.about-wrap{position:relative;margin:25px 20px 0 40px;max-width:1050px;font-size:15px}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.about-wrap hr{border:0;height:0;margin:0;border-top:1px solid rgba(0,0,0,.1)}.about-wrap img{margin:0;max-width:100%;height:auto;vertical-align:middle}.about-wrap .jetpack-video-wrapper{margin-bottom:0}.wp-badge{background:url(../images/w-logo-white.png?ver=20131202) center 24px no-repeat #0073aa;-webkit-background-size:85px 85px;background-size:85px 85px;color:#78c8e6;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:150px;text-rendering:optimizeLegibility;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.svg .wp-badge{background-image:url(../images/wordpress-logo-white.svg?ver=20131110)}.about-wrap .wp-badge{position:absolute;top:0;left:0}.about-wrap h2.nav-tab-wrapper{padding-right:6px}.about-wrap h2 .nav-tab{padding:4px 15px 6px;margin:0 0 -1px 3px;font-size:18px;vertical-align:top;border-width:1px}.about-wrap p{line-height:1.6em;font-size:14px}.about-wrap h1{margin:.2em 0 0 200px;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.25em;line-height:1.5em}.about-wrap h4{color:#23282d}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap .about-description,.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6em;font-size:19px}.about-wrap .about-text{margin:1em 0 1em 200px;min-height:60px;color:#777}.about-wrap [class$=col] .col{float:right;position:relative}.about-wrap .two-col .col{margin-left:4.799999999%;width:47.6%}.about-wrap .three-col .col{margin-left:4.999999999%;width:29.95%}.about-wrap .three-col .col:nth-of-type(3n),.about-wrap .two-col .col:nth-of-type(2n){margin-left:0}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #dfdfdf}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .headline-feature h2{margin:50px 0 30px;font-size:2.2em;font-weight:300;line-height:1.3;text-align:right}.about-wrap .headline-feature h3{margin-top:30px;text-align:center}.about-wrap .feature-list h2{margin:30px 0 15px;text-align:center}.about-wrap .feature-section h4{margin:1.4em 0 .6em;font-size:1em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .feature-video{position:relative;margin:40px 0;padding-bottom:56.25%;width:100%;height:0;text-align:center}.about-wrap .feature-video embed{position:absolute;top:0;right:0;width:100%;height:100%}.about-wrap .featured-image{text-align:center}.about-wrap .feature-section{overflow:hidden;padding:0 0 40px;border-bottom:1px solid rgba(0,0,0,.1)}.about-wrap .headline-feature .feature-section{margin:0 auto;max-width:95%}.about-wrap .changelog.feature-section .col,.about-wrap .feature-section:not(.under-the-hood) .col{margin-top:40px}.about-wrap .feature-section .media-container{border:1px solid #ddd;overflow:hidden}.about-wrap .feature-section .svg-container{padding:50px 0;text-align:center;background-color:#e1e1e3}.about-wrap .feature-section .svg-container img{max-width:150px}.about-wrap .changelog{margin-bottom:40px}.about-wrap .return-to-dashboard{margin:30px -5px 0 0;font-size:14px;font-weight:700}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-right:115px}.about-wrap h4.wp-people-group{margin-top:2.6em;font-size:16px}.about-wrap ul.wp-people-group{overflow:hidden;padding:0 5px;margin:0 -5px 0 -15px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{display:inline-block;vertical-align:top;margin-left:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap li.wp-person img.gravatar{float:right;margin:0 0 10px 10px;padding:2px;width:60px;height:60px}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;font-weight:400;line-height:1.6em;text-decoration:none}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:700}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}@media screen and (max-width:782px){.about-wrap .feature-section{padding:0;border-bottom:none}.about-wrap [class$=col] .col{float:none;width:100%;margin:40px 0 0;padding:0 0 40px;border-bottom:1px solid rgba(0,0,0,.1)}.about-wrap .three-col img{display:block;margin:0 auto}.about-wrap .feature-list .col{margin:0;padding:0;border-bottom:none}.about-wrap .headline-feature .feature-section{max-width:100%}.about-wrap .feature-list .feature-section{padding:0 0 40px}}@media only screen and (max-width:500px){.about-wrap{margin-left:20px;margin-right:10px}.about-wrap .about-text,.about-wrap h1{margin-left:0}.about-wrap .about-text{margin-bottom:.25em}.about-wrap .wp-badge{position:relative;margin-bottom:1.5em;width:100%}.about-wrap h2.nav-tab-wrapper{padding-right:0;border-bottom:0}.about-wrap h2 .nav-tab{margin-top:10px;margin-left:10px;border-bottom:1px solid #ccc}.about-wrap .feature-section .svg-container{padding-top:20px;padding-bottom:20px}.about-wrap .headline-feature .feature-section .col,.about-wrap .three-col .col{width:100%!important;float:none!important}}@media only screen and (max-width:400px){.about-wrap .feature-list svg{margin-top:15px;height:65px;width:65px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-right:80px}}.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 8px 3px 5px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}#nav-menus-frame{margin-right:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-right:-300px;clear:both;float:right;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.blank-slate .menu-name{height:2em}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#999;font-style:italic;font-weight:400;margin-right:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus select{float:right;margin-left:6px}.manage-menus .selected-menu{float:right;margin:5px 0 0 6px}.manage-menus .submit-btn{float:right;margin-top:1px}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings dl{margin:0 0 10px;overflow:hidden;padding-right:18%}.menu-settings dd{float:right;margin:0;width:100%}.menu-settings dt{float:right;clear:both;width:21.951%;padding:3px 0 0;margin-right:-21.951%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#999;font-size:11px}#add-custom-link .howto,#cancel-save{font-size:12px}#menu-management-liquid{float:right;min-width:100%;margin-top:3px}#menu-management{position:relative;margin-left:20px;margin-top:-3px;width:100%;background:#f5f5f5}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:0 10px 10px;border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #dfdfdf;margin-bottom:0}#nav-menu-header .menu-name-label{margin-top:4px}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:600}#select-nav-menu-container{text-align:left;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations tr+tr td{padding-top:0}.widefat .menu-locations td{vertical-align:middle}.menu-location-title label{font-weight:700}.menu-location-menus select{float:right}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:right;width:160px;margin-left:5px}.locations-row-links{float:right;margin:6px 6px 0 0}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-left:3px;border-left:1px solid #ccc}#wpbody .open-label{display:block;float:right}#wpbody .open-label span{padding-left:10px}.js .input-with-default-title{color:#a0a5aa;font-style:italic}#menu-management .inside{padding:0 10px}.accordion-container .howto input,.postbox .howto input{width:180px;float:left}.accordion-container .outer-border{margin:0}.customlinkdiv .howto input{width:180px}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:left}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}.nav-menus-php .add-new-menu-action{float:right;margin:6px 6px 0 0;line-height:15px}.nav-menus-php .meta-sep,.nav-menus-php .submitcancel,.nav-menus-php .submitdelete{display:block;float:right;margin:6px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;margin-right:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:left}.list-controls{float:right;margin-top:5px}.add-to-menu{float:left}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link label span{display:block;float:right;margin-top:5px;padding-left:5px}.menu-item-textbox{width:180px}.nav-menus-php .howto span{margin-top:6px;display:block;float:right}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:0 5px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-left:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #dfdfdf;position:relative;padding:10px 15px;height:auto;min-height:20px;width:382px;line-height:30px;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#999}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;border-color:#f1acb1}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}#cancel-save,.item-controls a:hover,.js .sidebar-name{cursor:pointer}.menu li.deleting .menu-item-handle{background-image:none;background-color:#f66}.menu-item-handle .item-title{font-size:13px;font-weight:600;line-height:20px;display:block;margin-left:13em}.menu-item-handle .menu-item-title.no-title{color:#999}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:30px}.menu-item-depth-2{margin-right:60px}.menu-item-depth-3{margin-right:90px}.menu-item-depth-4{margin-right:120px}.menu-item-depth-5{margin-right:150px}.menu-item-depth-6{margin-right:180px}.menu-item-depth-7{margin-right:210px}.menu-item-depth-8{margin-right:240px}.menu-item-depth-9{margin-right:270px}.menu-item-depth-10{margin-right:300px}.menu-item-depth-11{margin-right:330px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px}.menu-item-depth-2 .menu-item-transport{margin-right:-60px}.menu-item-depth-3 .menu-item-transport{margin-right:-90px}.menu-item-depth-4 .menu-item-transport{margin-right:-120px}.menu-item-depth-5 .menu-item-transport{margin-right:-150px}.menu-item-depth-6 .menu-item-transport{margin-right:-180px}.menu-item-depth-7 .menu-item-transport{margin-right:-210px}.menu-item-depth-8 .menu-item-transport{margin-right:-240px}.menu-item-depth-9 .menu-item-transport{margin-right:-270px}.menu-item-depth-10 .menu-item-transport{margin-right:-300px}.menu-item-depth-11 .menu-item-transport{margin-right:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{display:inline-block;padding:12px 10px;color:#666;font-size:12px;line-height:18px}.item-controls{font-size:12px;position:absolute;left:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls .item-order{padding-left:10px}.nav-menus-php .item-edit{position:absolute;left:-20px;top:0;display:block;width:30px;height:40px;margin-left:0!important;text-indent:100%;outline:0;overflow:hidden}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:402px;padding:10px 10px 10px 0;position:relative;z-index:10;border:1px solid #e5e5e5;border-top:none;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move a{display:none;margin:0 2px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em auto;text-align:center}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;border:1px solid #dfdfdf;color:#777;font-size:12px;font-style:italic}.hidden-field,.nav-menus-php .blank-slate .menu-settings{display:none}.link-to-original a{padding-right:4px;font-style:normal}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;float:right}.description-thin{width:190px}.description-wide{width:390px}.menu-item-actions{padding-top:15px}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 6px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:left;float:left;line-height:23px;margin:4px 0 1px}.nav-menus-php .delete-action{float:right;margin-top:2px}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid #0073aa;padding:1px 2px;color:#0073aa;text-decoration:none}.nav-menus-php .submitbox .submitcancel:hover{background:#0073aa;color:#fff}.nav-menus-php .major-publishing-actions .form-invalid{padding-right:4px;margin-right:-4px}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media screen and (max-width:782px){body.nav-menus-php{min-width:0!important}#nav-menus-frame{margin-right:0;float:none;width:100%}#wpbody-content #menu-settings-column{display:block;width:100%;float:none;margin-right:0}#side-sortables .add-menu-item-tabs{margin:15px 0 14px}ul.add-menu-item-tabs li.tabs{padding:13px 15px 14px}.nav-menus-php .item-controls .item-type{margin-top:2px}.nav-menus-php .customlinkdiv .howto input{width:65%}.nav-menus-php .quick-search{width:85%}#menu-management-liquid{margin-top:25px}.nav-menus-php .menu-name-label.howto span{margin-top:13px}.menu-name-label #menu-name{margin-top:4px}.nav-menus-php .major-publishing-actions .publishing-action{margin-top:6px}.nav-menus-php .delete-action{font-size:14px;line-height:50px;margin-top:12px}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide,.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings dl{padding-right:0}.menu-settings dd{float:none;width:100%;margin-bottom:15px}.menu-settings dt{float:none;width:auto;margin-right:0;margin-bottom:15px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}}.widget{margin:0 auto 10px;position:relative;box-sizing:border-box}.widget-top{font-size:13px;font-weight:600;background:#f7f7f7}.widget-top a.widget-action,.widget-top a.widget-action:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;text-decoration:none}.widget-title h4{margin:0;padding:15px;line-height:1;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.widgets-holder-wrap .widget-inside{border-top:none;padding:1px 15px 15px;line-height:16px}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#666}.deleting .widget-title,.deleting .widget-top a.widget-action:after{color:#a0a5aa}.widget.ui-draggable-dragging{min-width:100%}.widget.ui-sortable-helper{opacity:.8}.widget-placeholder{border:1px dashed #b4b9be;margin:0 auto 10px;height:45px;width:100%;box-sizing:border-box}.sidebar-name,.widget-placeholder{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#widgets-right .widget-placeholder{margin-top:0}#widgets-right .closed .widget-placeholder{height:0;border:0;margin-top:-10px}.sidebar-name{position:relative;box-sizing:border-box}.sidebar-name-arrow{position:absolute;top:0;left:0;bottom:0}.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#777}#widgets-right .widgets-holder-wrap .description{padding-right:7px;padding-left:7px}div.widget-liquid-left{margin:0;width:38%;float:right}div.widget-liquid-right{float:left;width:58%}div#widgets-left{padding-top:12px}div#widgets-left .closed .sidebar-name,div#widgets-left .inactive-sidebar.closed .sidebar-name{margin-bottom:10px}div#widgets-left .sidebar-name h3{padding:10px 0;margin:0 0 0 10px}div#widgets-left .sidebar-name .sidebar-name-arrow:before{left:0;top:4px;padding:4px 4px 4px 6px}#widgets-left #available-widgets,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;-webkit-box-shadow:none;box-shadow:none}#available-widgets .widget-action{display:none}#available-widgets .widget{margin:0}#available-widgets .widget:nth-child(odd){clear:both}#available-widgets .widget .widget-description{display:block;padding:10px 15px;font-size:12px}#available-widgets #widget-list{position:relative}#widgets-left .inactive-sidebar{clear:both;width:100%;background:0 0;padding:0;margin:0 0 20px;border:none;-webkit-box-shadow:none;box-shadow:none}#widgets-left .inactive-sidebar.first{margin-top:40px}div#widgets-left .inactive-sidebar .widget.expanded{right:auto}.widget-title-action{float:left;position:relative}div#widgets-left .inactive-sidebar .widgets-sortables{min-height:42px;padding:0;background:0 0;margin:0;position:relative}div#widgets-right:after{content:".";display:block;height:0;clear:both;visibility:hidden}div#widgets-right .sidebars-column-1,div#widgets-right .sidebars-column-2{max-width:450px}div#widgets-right .widgets-holder-wrap{margin:10px 0 0}div#widgets-right .sidebar-description{min-height:20px;margin-top:-5px}div#widgets-right .sidebar-name h3{padding:15px 7px}div#widgets-right .sidebar-name .sidebar-name-arrow:before{left:0;top:4px}div#widgets-right .widget-top{padding:0}div#widgets-right .widgets-sortables{padding:0 8px;margin-bottom:9px;position:relative;min-height:123px}div#widgets-right .closed .widgets-sortables{min-height:0;margin-bottom:0}.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#777;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.widgets_access #widgets-left .widget .widget-top{cursor:auto}.widgets_access #wpwrap .widget-control-edit,.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description,.widgets_access #wpwrap .widgets-holder-wrap.closed .widget{display:block}.widgets_access #widgets-left .widget .widget-top:hover,.widgets_access #widgets-right .widget .widget-top:hover{border-color:#ddd}#available-widgets .widget-control-edit .edit,#widgets-left .inactive-sidebar .widget-control-edit .add,#widgets-right .widget-control-edit .add{display:none}.editwidget .widget-inside,.widget-control-edit{display:block;padding:0 15px}.widget-control-edit{color:#666;background:#EEE;line-height:43px;border-right:1px solid #DDD}#widgets-left .widget-control-edit:hover,#widgets-right .widget-control-edit:hover{color:#fff;background:#444;border-right:0;outline:#444 solid 1px}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-control-actions{margin-top:20px}.js .closed br.clear,.js .widgets-holder-wrap.closed .sidebar-description,.js .widgets-holder-wrap.closed .widget{display:none}.js .widgets-holder-wrap.closed .widget.ui-sortable-helper{display:block}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widget-description,.widget-inside,.widgets_access #access-on,.widgets_access .sidebar-name-arrow,.widgets_access .widget-action,.widgets_access .widget-holder .description{display:none}.widget-inside{background:#fff}#removing-widget{display:none;font-weight:400;padding-right:15px;font-size:12px;line-height:1;color:#000}.js #removing-widget{color:#00a0d2}.widgets_access #widget-list,.widgets_access .widget-holder{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;opacity:.2;pointer-events:none}.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question{opacity:1;pointer-events:auto}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.widgets-chooser ul.widgets-chooser-sidebars{margin:0;list-style-type:none;max-height:300px;overflow:auto}.widgets-chooser{display:none}.widgets-chooser ul{border:1px solid #ccc}.widgets-chooser li{padding:10px 35px 10px 15px;border-bottom:1px solid #ccc;background:#fff;margin:0;cursor:pointer;outline:0;position:relative;-webkit-transition:background .2s ease-in-out;transition:background .2s ease-in-out}.widgets-chooser li:focus,.widgets-chooser li:hover{background:rgba(255,255,255,.7)}.widgets-chooser li:focus:before{content:'\f147';display:block;-webkit-font-smoothing:antialiased;font:400 26px/1 dashicons;color:#999;position:absolute;top:7px;right:5px}.widgets-chooser li:last-child{border:none}.widgets-chooser li.widgets-chooser-selected{background:#00a0d2;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{content:'\f147';display:block;-webkit-font-smoothing:antialiased;font:400 26px/1 dashicons;color:#fff;position:absolute;top:7px;right:5px}.locale-he-il em,.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{font-style:normal}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px;text-align:center}.widgets-chooser button{margin-left:5px}#available-widgets .widget .widget-top{cursor:pointer}#available-widgets .widget.ui-draggable-dragging .widget-top{cursor:move}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-left:none;padding-left:0}#widgets-left #available-widgets .widget-top,#widgets-left .inactive-sidebar .widgets-sortables,#widgets-left .sidebar-name{margin-left:0}div.widget-liquid-right{width:100%;float:none}div.widget{margin:0 auto 10px!important;max-width:480px}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@media screen and (max-width:320px){div.widget{max-width:320px}}@media only screen and (min-width:1250px){#widgets-left #available-widgets .widget{width:49%;float:right}.widget.ui-draggable-dragging{min-width:49%}#widgets-left #available-widgets .widget:nth-child(even){float:left}#widgets-right .sidebars-column-1,#widgets-right .sidebars-column-2{float:right;width:49%}#widgets-right .sidebars-column-1{margin-left:2%}#widgets-right.single-sidebar .sidebars-column-1,#widgets-right.single-sidebar .sidebars-column-2{float:none;width:100%;margin:0}}.site-icon-preview .favicon-preview{margin:5px 0 20px;overflow:hidden;position:relative;max-width:180px}.site-icon-preview .browser-title,.site-icon-preview .favicon{height:16px;right:88px;overflow:hidden;position:absolute;top:16px}.site-icon-preview .favicon{width:16px}.site-icon-preview .browser-title{right:109px}.site-icon-preview .app-icon-preview{background-color:#000;-webkit-border-radius:16px;border-radius:16px;height:64px;overflow:hidden;width:64px;margin-top:5px}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-left:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:0}}
\ No newline at end of file
+ */.ui-draggable-handle,.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.accordion-section{border-bottom:1px solid #dfdfdf;margin:0}.accordion-section.open:hover{border-bottom-color:#dfdfdf}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-right:1px solid #dfdfdf;border-left:1px solid #dfdfdf;user-select:none}.js .accordion-section-title{cursor:pointer}.js .accordion-section-title:after{position:absolute;top:12px;left:10px;z-index:1}.accordion-section-title:focus{outline:0}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a0a5aa transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title{border-right:none;border-left:none;padding:10px 14px 11px 10px;line-height:21px;background:#fff}.control-section .accordion-section-title:after{top:11px}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{color:#23282d;background:#f5f5f5}.control-section.open .accordion-section-title{border-bottom:1px solid #dfdfdf}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;left:0;background:#ccc}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:right;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:right}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f9f9f9}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:right;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f9f9f9}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:right;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:right}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f9f9f9}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:right;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:right}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f9f9f9}}@media only screen and (min-width:1600px){.my-sites li{float:right;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:right}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f9f9f9}}@media only screen and (min-width:769px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:860px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (min-width:980px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:768px){#col-left,#col-right{width:100%}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) bottom left repeat-x;-webkit-background-size:21px 37px;background-size:21px 37px}.spinner{background-image:url(../images/spinner-2x.gif)}#bulk-titles div a,#bulk-titles div a:hover,#screen-meta-links a.show-settings,.curtime #timestamp,.meta-box-sortables .postbox:hover .handlediv,.sidebar-name-arrow,.sidebar-name:hover .sidebar-name-arrow,.tagchecklist span a,.tagchecklist span a:hover,.widget-top a.widget-action,.widget-top a.widget-action:hover{background:0 0!important}}@-ms-viewport{width:device-width}@media screen and (max-width:782px){#template div,#templateside{float:none;width:auto}html.wp-toolbar{padding-top:46px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:rgba(0,0,0,0)!important}#wpcontent{position:relative;margin-right:0;padding-right:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-left:12px;margin-right:0}.col-wrap{padding:0}#collapse-menu,#screen-meta,#screen-meta-links,.post-format-select{display:none!important}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.wp-color-result{height:auto;padding-right:45px}.wp-color-result:after{font-size:14px;height:auto;padding:6px 14px}.media-upload-form div.error,.notice,.wrap div.error,.wrap div.updated{margin:20px 0 10px;padding:5px 10px;font-size:14px;line-height:175%}.wp-core-ui .notice.is-dismissible{padding-left:46px}.notice-dismiss{padding:13px}.wrap .icon32+h2{margin-top:-2px}.wp-responsive-open #wpbody{left:-190px}code{word-wrap:break-word}.postbox{font-size:14px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#templateside li{margin:0}#templateside li a{display:block;padding:5px}#templateside .highlight{padding:5px;margin-right:-5px;margin-top:-5px}#template div{margin:0}#template textarea{width:100%}.fileedit-sub .alignright{margin-top:15px}#comments-form .checkforspam,#wpfooter{display:none}.edit-comment-author{margin:2px 0 0}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:25px}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open,div#post-body.metabox-holder.columns-1{overflow-x:hidden}html.wp-toolbar{padding-top:0}#wpbody{padding-top:46px}.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper,h3.nav-tab-wrapper{padding-right:0;border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab{margin-top:10px;margin-left:10px;border-bottom:1px solid #ccc}}#pressthis-code-wrap,textarea{overflow:auto}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:right}}input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=text],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=search],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:50ms border-color ease-in-out;transition:50ms border-color ease-in-out}input[type=text]:focus,input[type=password]:focus,input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=search]:focus,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=number]{line-height:inherit}input[type=checkbox],input[type=radio]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 0 0 4px;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-left:4px;line-height:10px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{float:right;display:inline-block;vertical-align:middle;width:16px;font:400 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:"\f147";margin:-3px -4px 0 0;color:#1e8cbe}input[type=radio]:checked:before{content:"\2022";text-indent:-9999px;-webkit-border-radius:50px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4}.wp-admin input[type=file]{padding:3px 0}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:400 20px/1 dashicons;color:#dc3232;margin-right:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 -29px 0 6px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;-webkit-box-shadow:none;box-shadow:none}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-admin select{padding:2px;line-height:28px;height:28px}.wp-admin .button-cancel{padding:0 5px;line-height:2}.meta-box-sortables select{max-width:100%}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;border:none}p.submit{text-align:right;max-width:100%;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:left}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 0 0 8px}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:right;margin-left:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-right:1em}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:"\f173";display:inline-block;font:400 20px/1 dashicons;speak:none;right:-1px;padding:0 0 0 5px;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 1px 5px 5px;padding:3px 5px;text-align:center;width:25em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.indicator-hint{padding-top:8px}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:left;margin:0}.network-admin.themes-php p.search-box{clear:right}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:right;height:28px;margin:0 0 0 4px}input[type=text].ui-autocomplete-loading,input[type=email].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:left center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 14px 0 0}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;text-align:right}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:right;padding:20px 0 20px 10px;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-left:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-left:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:3px;cursor:pointer}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0}.color-palette td{height:20px;padding:0;border:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;left:10px;bottom:9px;background:0 0;-webkit-transform:skew(-20deg) rotate(-6deg);-ms-transform:skew(-20deg) rotate(-6deg);transform:skew(-20deg) rotate(-6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(-20deg) rotate(-9deg);-ms-transform:skew(-20deg) rotate(-9deg);transform:skew(-20deg) rotate(-9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 9px 8px 12px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-right:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-left:4px}.pressthis-js-toggle .dashicons{margin:5px 7px 6px 8px;color:#777}#local-time,#utc-time{padding-right:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}#search-sites,#search-users,#the-comment-list td.comment img{max-width:100%}.form-field #path{margin-bottom:5px}.request-filesystem-credentials-dialog{display:none}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:right;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-right:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:left}.request-filesystem-credentials-dialog label[for=ftp]{margin-left:10px}#request-filesystem-credentials-dialog .button:not(:last-child){margin-left:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=password],input[type=email],input[type=number],input[type=search]{-webkit-appearance:none;padding:6px 10px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:400 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-left:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=text],.form-table td input[type=password],.form-table td input[type=email],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:left;margin:-30px 0 0 3px}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=text].small-text,input[type=password].small-text,input[type=number].small-text,input[type=search].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-right:0}.form-table.permalink-structure td code{margin-right:32px}.form-table.permalink-structure td input[type=text]{margin-right:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-left:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;left:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media only screen and (max-height:480px){.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;right:0}}@media screen and (max-width:600px){.color-option{width:49%}}#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{clear:right;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px;margin:-6px -8px 0 0;float:right}.icon16:before{color:#999;font:400 20px/1 dashicons;speak:none;padding:6px 0;height:34px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.icon16.icon-dashboard:before{content:"\f226"}.icon16.icon-post:before{content:"\f109"}.icon16.icon-media:before{content:"\f104"}.icon16.icon-links:before{content:"\f103"}.icon16.icon-page:before{content:"\f105"}.icon16.icon-comments:before{content:"\f101";margin-top:1px}.icon16.icon-appearance:before{content:"\f100"}.icon16.icon-plugins:before{content:"\f106"}.icon16.icon-users:before{content:"\f110"}.icon16.icon-tools:before{content:"\f107"}.icon16.icon-settings:before{content:"\f108"}.icon16.icon-site:before{content:"\f112"}.icon16.icon-generic:before{content:"\f111"}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:right;z-index:9990}#adminmenu *{user-select:none}.theme-overlay .current-label,.widget-title h3,.widget-title h4{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px;color:#eee}#adminmenu .wp-submenu a{color:#b4b9be;color:rgba(240,245,250,.7)}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#00b9eb}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;right:160px;overflow:visible}#adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{padding:7px 0 8px;z-index:9999;background-color:#32373c;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu a.menu-top:focus+.wp-submenu,.js #adminmenu .opensub .wp-submenu,.js #adminmenu .sub-open,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu{position:relative;z-index:3;top:auto;right:auto;left:auto;bottom:auto;border:0;margin-top:0;-webkit-box-shadow:none;box-shadow:none;background-color:#32373c}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{position:relative;background-color:#191e23;color:#00b9eb}.folded #adminmenu li.menu-top:hover,.folded #adminmenu li.opensub>a.menu-top,.folded #adminmenu li>a.menu-top:focus{z-index:10000}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu .wp-menu-arrow,#adminmenu .wp-menu-arrow div,#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,.folded #adminmenu li.wp-has-current-submenu{background:#0073aa;color:#fff}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:0;right:36px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{min-width:160px;width:auto}#adminmenu .wp-submenu a{font-size:13px;line-height:1.2;margin:0;padding:6px 0}#adminmenu .opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-not-current-submenu li>a,.folded #adminmenu .wp-has-current-submenu li>a{padding-left:16px;padding-right:14px;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:6px 12px}#adminmenu .wp-submenu-head,#adminmenu a.menu-top{font-size:14px;font-weight:400;line-height:18px;padding:0}#adminmenu .wp-submenu-head{display:none}.folded #adminmenu .wp-menu-name{position:absolute;right:-999px}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0;overflow:hidden}#adminmenu .wp-menu-image img{padding:9px 0 0;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:8px 0}#adminmenu div.wp-menu-image{float:right;width:36px;height:34px;margin:0;text-align:center}#adminmenu div.wp-menu-image.svg{background-repeat:no-repeat;background-position:center;-webkit-background-size:20px auto;background-size:20px auto}div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6);padding:7px 0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6)}#adminmenu .current div.wp-menu-image:before,#adminmenu .wp-has-current-submenu div.wp-menu-image:before,#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before{color:#fff}#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#00b9eb}.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#a0a5aa}.folded #adminmenu div.wp-menu-image{width:35px;height:30px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:34px}.no-font-face #adminmenu .wp-menu-image{display:none}.no-font-face #adminmenu div.wp-menu-name{padding:8px 12px}.no-font-face.auto-fold #adminmenu .wp-menu-name{margin-right:0}.sticky-menu #adminmenuwrap{position:fixed}.wp-menu-arrow{display:none!important}ul#adminmenu a.wp-has-current-submenu{position:relative}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{left:0;border:8px solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-left-color:#f1f1f1;top:50%;margin-top:-8px}.folded ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.folded ul#adminmenu a.wp-has-current-submenu:after,.folded ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{left:0;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-width:8px;top:10px;z-index:10000}.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:18px}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-left-color:#32373c}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100)}#adminmenu li.wp-menu-separator{height:5px;padding:0;margin:0 0 6px;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#collapse-button,#collapse-button div{height:15px;width:15px}#adminmenu .wp-submenu .wp-submenu-head{color:#fff;font-weight:400;font-size:14px;padding:8px 11px 8px 4px;margin:-7px 0 4px}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0}#adminmenu .awaiting-mod,#adminmenu .update-plugins{display:inline-block;background-color:#d54e21;color:#fff;font-size:9px;line-height:17px;font-weight:600;margin:1px 2px 0 0;vertical-align:top;-webkit-border-radius:10px;border-radius:10px;z-index:26}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,.folded #collapse-menu span{display:none}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#00b9eb;color:#fff}#collapse-menu{font-size:13px;line-height:34px;margin-top:10px;color:#a0a5aa;color:rgba(240,245,250,.6);-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after{color:#00b9eb}#collapse-button{float:right;margin:10px 11px 10px 8px;-webkit-border-radius:10px;border-radius:10px}#wpwrap #collapse-button div{padding:0}#collapse-button div:after{content:"\f148";display:block;line-height:15px;right:-3px;top:-3px;color:#a0a5aa;color:rgba(240,245,250,.6);font:400 20px/1 dashicons!important;speak:none;margin:0 auto;padding:0!important;position:relative;text-align:center;width:20px;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button div:after,.rtl #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.folded #collapse-button div:after{-webkit-transform:none;-ms-transform:none;transform:none}.customize-support #menu-appearance a[href="themes.php?page=custom-header"],.customize-support #menu-appearance a[href="themes.php?page=custom-background"],li#wp-admin-bar-menu-toggle{display:none}@media only screen and (max-width:960px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-right:36px}.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{width:36px}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{top:0;right:36px}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu,.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em;margin-left:-1px;padding:7px 0 8px;z-index:9999}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{min-width:150px;width:auto}.auto-fold #adminmenu .wp-has-current-submenu li>a{padding-left:16px;padding-right:14px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-right:12px}.auto-fold #adminmenu .wp-menu-name{position:absolute;right:-999px}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{height:30px;width:34px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{height:34px}.auto-fold #adminmenu li.wp-menu-open{border:0}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-menu span{display:none}.auto-fold #collapse-button div{background:0 0}.auto-fold #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.auto-fold #collapse-button div:after{-webkit-transform:none;-ms-transform:none;transform:none}}@media screen and (max-width:782px){.auto-fold #wpcontent{position:relative;margin-right:0;padding-right:10px}.sticky-menu #adminmenuwrap{position:relative;z-index:auto;top:0}.auto-fold #adminmenu,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{position:absolute;width:190px;z-index:100}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{display:none}.auto-fold .wp-responsive-open #adminmenuback,.auto-fold .wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu li.menu-top{width:100%}.auto-fold #adminmenu li a{font-size:16px;padding:5px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding:10px 20px 10px 10px}.auto-fold #adminmenu .wp-menu-name{position:static;margin-right:35px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li.current>a.current:after{border-width:8px;margin-top:-8px}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{display:none}#adminmenu .wp-submenu{position:relative;display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold #adminmenu .wp-menu-open .wp-submenu{position:relative;display:block;top:0;right:-1px;-webkit-box-shadow:none;box-shadow:none}.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;right:-1px;left:0;top:0}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;right:4px;padding-left:10px;z-index:99999;border:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpadminbar #wp-admin-bar-menu-toggle a{display:block;padding:0;overflow:hidden;outline:0;text-decoration:none;border:1px solid transparent;background:0 0;height:44px;margin-right:-1px}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#32373c}li#wp-admin-bar-menu-toggle{display:block}#wpadminbar #wp-admin-bar-menu-toggle a:hover{border:1px solid transparent}#wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{content:"\f228";display:inline-block;float:right;font:400 40px/45px dashicons;vertical-align:middle;outline:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:44px;width:50px;padding:0;border:none;text-align:center;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#00b9eb}}.postbox,.welcome-panel{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}@media screen and (max-width:600px){#adminmenuback,#adminmenuwrap{display:none}.wp-responsive-open #adminmenuback,.wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu{top:46px}}#wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody-content #dashboard-widgets.columns-2 .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4{float:left;width:50.5%}#wpbody-content #dashboard-widgets.columns-3 .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4{float:left}#dashboard-widgets .postbox-container,#wpbody-content #dashboard-widgets.columns-4 .postbox-container{width:25%}#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container{border:none!important}.ie8 #wpbody-content #dashboard-widgets .postbox-container{width:49.5%}.ie8 #wpbody-content #dashboard-widgets #postbox-container-2,.ie8 #wpbody-content #dashboard-widgets #postbox-container-3,.ie8 #wpbody-content #dashboard-widgets #postbox-container-4{float:left;width:50.5%}.ie8 #dashboard-widgets #postbox-container-3 .empty-container,.ie8 #dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}#dashboard-widgets-wrap{overflow:hidden;margin:0 -8px}#dashboard-widgets .postbox .inside{margin-bottom:0}#dashboard-widgets .meta-box-sortables{margin:0 8px;min-height:100px}#the-comment-list td.comment p.comment-author{margin-top:0;margin-right:0}#the-comment-list p.comment-author img{float:right;margin-left:8px}#the-comment-list p.comment-author strong a{border:none}#the-comment-list td{vertical-align:top}.welcome-panel{position:relative;overflow:auto;margin:16px 0;padding:23px 10px 0;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:13px;line-height:2.1em}#replysubmit,.dashboard-widget-control-form,.mu-storage,.tablenav .actions,th.sortable a,th.sorted a{overflow:hidden}.welcome-panel h2{margin:0;font-size:21px;font-weight:400;line-height:1.2}.welcome-panel h3{margin:1.33em 0 0;font-size:16px}.welcome-panel li{font-size:14px}.welcome-panel p{color:#777}.welcome-panel a{text-decoration:none}.welcome-panel .about-description{font-size:16px;margin:0}.welcome-panel .welcome-panel-close{position:absolute;top:10px;left:10px;padding:10px 21px 10px 15px;font-size:13px;line-height:1.23076923;text-decoration:none}.welcome-panel .welcome-panel-close:before{position:absolute;top:8px;right:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 0 3px 13px;padding:12px 36px;height:auto;line-height:1.4285714;white-space:normal}.welcome-panel-content{margin-right:13px;max-width:1500px}.welcome-panel .welcome-panel-column-container{clear:both;position:relative}.welcome-panel .welcome-panel-column{width:32%;min-width:200px;float:right}.ie8 .welcome-panel .welcome-panel-column{min-width:230px}.welcome-panel .welcome-panel-column:first-child{width:36%}.welcome-panel-column p.hide-if-no-customize{margin-top:10px}.welcome-panel-column p{margin-top:7px;color:#464646}.welcome-panel .welcome-icon{background:0 0!important}.welcome-panel .welcome-icon:before{color:#82878c;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 10px;top:-1px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.welcome-panel .welcome-edit-page:before,.welcome-panel .welcome-write-blog:before{content:"\f119";top:-3px}.welcome-panel .welcome-add-page:before{content:"\f132"}.welcome-panel .welcome-view-site:before{content:"\f115";top:-2px}.welcome-panel .welcome-widgets-menus:before{content:"\f116";top:-2px}.welcome-panel .welcome-comments:before{content:"\f117";top:-1px}.welcome-panel .welcome-learn-more:before{content:"\f118";top:-1px}.welcome-panel .welcome-widgets-menus{line-height:16px}.welcome-panel .welcome-panel-column ul{margin:.8em 0 1em 1em}.welcome-panel .welcome-panel-column li{line-height:16px;list-style-type:none;padding:0 0 8px}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .dashboard-widget-control-form,#dashboard_primary .widget-loading{padding:12px 12px 0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#777;margin-top:4px}#dashboard_primary .rss-widget{border-bottom:1px solid #eee;font-size:13px;padding:8px 12px 10px}#dashboard_primary .rss-widget:last-child{border-bottom:none;padding-bottom:8px}#dashboard_primary .rss-widget a{font-weight:400}#dashboard_primary .rss-widget span,#dashboard_primary .rss-widget span.rss-date{color:#777}#dashboard_primary .rss-widget span.rss-date{margin-right:12px}#dashboard_primary .rss-widget ul li{margin-bottom:8px}#dashboard_right_now ul{margin:0;display:inline-block;width:100%}#dashboard_right_now li{width:50%;float:right;margin-bottom:10px}#dashboard_right_now .inside{padding:0}#dashboard_right_now .main{padding:0 12px 11px}#dashboard_right_now .main p{margin:0}#dashboard_right_now #wp-version-message .button{float:left;position:relative;top:-5px;margin-right:5px}#dashboard-widgets h3.mu-storage{margin:0 0 10px;padding:0;font-size:14px;font-weight:400}#dashboard_right_now li a:before,#dashboard_right_now li span:before{color:#82878c}#dashboard_right_now .sub{color:#777;background:#f5f5f5;border-top:1px solid #eee;padding:10px 12px 6px}#dashboard_right_now .sub h3{color:#555}#dashboard_right_now .sub p{margin:0 0 1em}#dashboard_right_now .warning a:before,#dashboard_right_now .warning span:before{color:#d54e21}#dashboard_quick_press .drafts li time,#title-wrap #title-prompt-text,.textarea-wrap #content-prompt-text{color:#777}#dashboard_right_now li a:before,#dashboard_right_now li span:before{content:"\f159";font:400 20px/1 dashicons;speak:none;display:block;float:right;margin:0 0 0 5px;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#dashboard_right_now .page-count a:before,#dashboard_right_now .page-count span:before{content:"\f105"}#dashboard_right_now .post-count a:before,#dashboard_right_now .post-count span:before{content:"\f109"}#dashboard_right_now .comment-count a:before{content:"\f101"}#dashboard_right_now .comment-mod-count a:before{content:"\f125"}#dashboard_right_now .storage-count a:before{content:"\f104"}#dashboard_right_now .storage-count.warning a:before{content:"\f153"}#dashboard_quick_press .inside{margin:0;padding:0}#dashboard_quick_press div.updated{margin-bottom:10px;border:1px solid #eee;border-width:1px 0 1px 1px}#dashboard_quick_press form{margin:12px}#dashboard_quick_press .drafts,#dashboard_quick_press .easy-blogging{padding:10px 0 0}input#save-post{float:right}form.initial-form.quickpress-open label.prompt{font-style:normal}form.initial-form.quickpress-open input#title{height:auto}#dashboard_quick_press input,#dashboard_quick_press textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0}#description-wrap{margin-top:12px}.input-text-wrap,.textarea-wrap{position:relative}.input-text-wrap .prompt,.textarea-wrap .prompt{position:absolute}.textarea-wrap #content-prompt-text{font-size:1.1em;padding:7px 8px}.textarea-wrap textarea#content{margin:0 0 8px;padding:6px 7px}#quick-press textarea#content{min-height:90px;max-height:1300px;resize:none}.js #dashboard_quick_press .drafts{border-top:1px solid #eee}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts .view-all{float:left;margin:0 0 0 12px}#dashboard_primary a.rsswidget{font-weight:400}#dashboard_quick_press .drafts ul{margin:0 12px}#dashboard_quick_press .drafts li{margin-bottom:1em}#dashboard_quick_press .drafts p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 0 0 5px}#dashboard-widgets h3,#dashboard-widgets h4,#dashboard_quick_press .drafts h2{margin:0 12px 8px;padding:0;font-size:14px;font-weight:400;color:#23282d}#dashboard_quick_press .drafts h2{line-height:inherit}#dashboard-widgets .inside h3,#dashboard-widgets .inside h4{margin-right:0;margin-left:0}#dashboard_activity .comment-meta span.approve:before{content:"\f227";font:20px/.5 dashicons;margin-right:12px;vertical-align:middle;position:relative;top:-1px;margin-left:2px}#dashboard_activity .inside{margin:0;padding-bottom:0}#dashboard_activity .no-activity{overflow:hidden;padding:0 0 12px;text-align:center}#dashboard_activity .no-activity p{color:#999;font-size:16px}#dashboard_activity .no-activity .smiley{margin-top:0}#dashboard_activity .no-activity .smiley:before{content:"\f328";font:400 120px/1 dashicons;speak:none;display:block;margin:0 0 0 5px;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#dashboard-widgets h3 a,#dashboard_browser_nag a{text-decoration:underline}#dashboard_activity .subsubsub{float:none;border-top:1px solid #eee;margin:0 -12px;padding:8px 12px 4px}#future-posts ul,#published-posts ul{clear:both;margin-bottom:0}#future-posts li,#published-posts li{margin-bottom:8px}#future-posts ul span,#published-posts ul span{display:inline-block;margin-left:5px;min-width:150px;color:#777}.activity-block{border-bottom:1px solid #eee;margin:0 -12px;padding:8px 12px 4px}.activity-block:last-child{border-bottom:none}.activity-block .subsubsub li{color:#ddd}#activity-widget #the-comment-list div.undo,#activity-widget #the-comment-list tr.undo{background:0 0;padding:6px 0;margin-right:12px}#activity-widget #the-comment-list .comment-item{background:#fafafa;padding:12px;position:relative}#activity-widget #the-comment-list .avatar{position:absolute;top:13px}#activity-widget #the-comment-list .dashboard-comment-wrap{padding-right:63px}#activity-widget #the-comment-list .dashboard-comment-wrap blockquote{margin:1em 0}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0}#activity-widget #the-comment-list .comment-item:first-child{border-top:1px solid #eee}#activity-widget #the-comment-list .unapproved{background-color:#fef7f1}#activity-widget #the-comment-list .unapproved:before{content:"";display:block;position:absolute;right:0;top:0;bottom:0;background:#d54e21;width:4px}#activity-widget #the-comment-list .spam-undo-inside .avatar,#activity-widget #the-comment-list .trash-undo-inside .avatar{position:relative;top:0}#dashboard-widgets #dashboard_browser_nag.postbox .inside{margin:10px}.edit-box{display:none}h3:hover .edit-box{display:inline}#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets a{text-decoration:none}#dashboard-widgets h3 .postbox-title-action{position:absolute;left:10px;padding:0;top:5px}.js #dashboard-widgets h3 .postbox-title-action{left:33px}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative;margin:0 -12px}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.06);box-shadow:inset 0 1px 0 rgba(0,0,0,.06)}#activity-widget .comments #the-comment-list .alt{background-color:transparent}#activity-widget #latest-comments #the-comment-list .comment-item{padding:1em 12px}#latest-comments #the-comment-list .pingback{padding-right:12px!important}#latest-comments #the-comment-list .comment-item:first-child{border-top:none}#latest-comments #the-comment-list .comment-meta{line-height:1.5em;margin:0;color:#666}#latest-comments #the-comment-list .comment-meta cite{font-style:normal;font-weight:400}#latest-comments #the-comment-list .comment-item blockquote,#latest-comments #the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#latest-comments #the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:13px}#description-wrap label,#title-wrap label{cursor:text}#title-wrap #title{padding:2px 6px;font-size:1.3em;outline:0}#title-wrap #title-prompt-text{font-size:1.1em;padding:5px 8px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:14px;font-weight:600;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;font-size:13px;margin-right:3px}.rss-widget cite{display:block;text-align:left;margin:0 0 1em;padding:0}.rss-widget cite:before{content:"\2014"}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-left:125px}#dashboard_browser_nag .browser-icon{margin-top:-35px}#dashboard_browser_nag.postbox.browser-insecure{background-color:#ac1b1b;border-color:#ac1b1b}#dashboard_browser_nag.postbox{background-color:#e29808;background-image:none;border-color:#edc048;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag.postbox.browser-insecure h2{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h2{border-bottom-color:#f6e2ac;background:0 0;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag h2.hndle{border:none;font-weight:600;font-size:20px;padding-top:10px}.postbox#dashboard_browser_nag p a.dismiss{font-size:14px}.postbox#dashboard_browser_nag a,.postbox#dashboard_browser_nag p,.postbox#dashboard_browser_nag p.browser-update-nag{font-size:16px}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}}@media only screen and (min-width:800px) and (max-width:1499px){#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container,#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0;height:0;min-height:0}#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:left;width:50.5%}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}.index-php .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@media only screen and (min-width:1500px) and (max-width:1800px){#wpbody-content #dashboard-widgets .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:left}#dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column,.welcome-panel .welcome-panel-column:first-child{display:block;float:none;width:100%}.welcome-panel .welcome-panel-column li{display:inline-block;margin-left:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}}@media screen and (max-width:782px){#dashboard_recent_comments #the-comment-list .comment-item .avatar{height:30px;width:30px;margin:4px 0 5px 10px}}@media screen and (max-width:600px){.welcome-panel .welcome-panel-close{overflow:hidden;text-indent:40px;white-space:nowrap;width:20px;height:20px;padding:5px;top:5px;left:5px}.welcome-panel .welcome-panel-close:before{font-size:20px;top:5px;right:-35px}}.response-links{display:block;margin-bottom:1em}.response-links a{display:block}.response-links a.comments-edit-item-link{font-weight:600}.response-links a.comments-view-item-link{font-size:12px}.post-com-count-wrapper strong{font-weight:400}.comments-view-item-link{display:inline-block;clear:both}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:nowrap;word-wrap:normal}.column-comments .post-com-count,.column-response .post-com-count{display:inline-block;vertical-align:top}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:5px}.column-comments .comment-count-approved,.column-comments .comment-count-no-comments,.column-response .comment-count-approved,.column-response .comment-count-no-comments{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;-webkit-border-radius:5px;border-radius:5px;background-color:#72777c;color:#fff;font-size:11px;line-height:21px;text-align:center}.plugin-card,.revisions-tickmarks{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.ie8 .column-comments .comment-count-approved,.ie8 .column-comments .comment-count-no-comments,.ie8 .column-response .comment-count-approved,.ie8 .column-response .comment-count-no-comments{min-width:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:"";display:block;margin-right:8px;width:0;height:0;border-top:5px solid #72777c;border-left:5px solid transparent}.column-comments .post-com-count-approved:focus .comment-count-approved,.column-comments .post-com-count-approved:hover .comment-count-approved,.column-response .post-com-count-approved:focus .comment-count-approved,.column-response .post-com-count-approved:hover .comment-count-approved{background:#0073aa}.column-comments .post-com-count-approved:focus:after,.column-comments .post-com-count-approved:hover:after,.column-response .post-com-count-approved:focus:after,.column-response .post-com-count-approved:hover:after{border-top-color:#0073aa}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:relative;right:-3px;padding:0 5px;min-width:7px;height:17px;border:2px solid #fff;-webkit-border-radius:11px;border-radius:11px;background:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #ccc}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#777}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;text-align:center}#replysubmit .button{margin-left:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#edithead .inside{float:right;padding:3px 5px 2px 0;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;-webkit-box-shadow:none;box-shadow:none}#replyerror{border-color:#ddd;background-color:#f9f9f9}.commentlist .avatar{vertical-align:text-top}#the-comment-list div.undo,#the-comment-list tr.undo{background-color:#f4f4f4}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fef7f1}#the-comment-list .unapproved th.check-column{border-right:4px solid #d54e21}#the-comment-list .unapproved th.check-column input{margin-right:4px}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}#the-comment-list td,#the-comment-list th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}#the-comment-list tr:last-child td,#the-comment-list tr:last-child th{-webkit-box-shadow:none;box-shadow:none}#the-comment-list tr.unapproved+tr.approved td,#the-comment-list tr.unapproved+tr.approved th{border-top:1px solid rgba(0,0,0,.03)}.vim-current,.vim-current td,.vim-current th{background-color:#e4f2fd!important}th .comment-grey-bubble{height:16px;width:16px}th .comment-grey-bubble:before{content:"\f101";font:400 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;right:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-date,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-posts{width:74px}.fixed .column-comment .comment-author{display:none}.fixed .column-categories,.fixed .column-rel,.fixed .column-response,.fixed .column-role,.fixed .column-tags{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:5.5em;padding:8px 0;text-align:right}.fixed .column-comments .vers{padding-right:3px}td.column-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;font-size:14px}td.column-title p,td.plugin-title p{margin:6px 0}table.media .column-title .media-icon{float:right;min-height:60px;margin:0 0 0 9px}table.media .column-title .media-icon img{max-width:60px;height:auto;vertical-align:top}table.media .column-title .has-media-icon~.row-actions{margin-right:70px}table.media .column-title .filename{margin-bottom:.2em}.wp-list-table a{-webkit-transition:none;transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;-webkit-box-shadow:none;box-shadow:none}#comments-form .fixed .column-author{width:20%}#comments-form .fixed .column-date{width:14%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-right:7px}.sorting-indicator:before{content:"\f142";font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0;top:-4px;right:-8px;line-height:10px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.column-comments .sorting-indicator:before{top:0;right:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;left:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .wp-list-table .toggle-row:focus:before{outline:#5b9dd9 solid 1px}.wp-list-table .toggle-row:active{-webkit-box-shadow:none;box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;right:10px;-webkit-border-radius:50%;border-radius:50%;display:block;padding:1px 0 1px 2px;color:#666;content:"\f140";font:400 20px/1 dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none}.wp-list-table .is-expanded .toggle-row:before{content:"\f142"}tr.wp-locked .locked-indicator{margin-right:6px;height:20px;width:16px}tr.wp-locked .locked-indicator:before{color:#82878c;content:"\f160";display:inline-block;float:right;font:400 20px/1 dashicons;speak:none;vertical-align:middle;margin-right:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}tr .locked-info{height:0;opacity:0}tr.wp-locked .locked-info{margin-top:8px;height:auto;opacity:1}.locked-text{vertical-align:top}tr.locked-info,tr.wp-locked .locked-info{-webkit-transition:height 1s,opacity .5s;transition:height 1s,opacity .5s}.fixed .column-comments .sorting-indicator{margin-top:3px}#menu-locations-wrap .widefat{width:60%}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;padding:8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:right;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages a,.tablenav-pages-navspan{font-weight:600;padding:0 2px}.tablenav-pages .current-page{margin:0 0 0 2px;padding-bottom:5px;font-size:13px;text-align:center}.tablenav .total-pages{margin-left:2px}.tablenav #table-paging{margin-right:2px}.tablenav a.button-secondary{display:block;margin:3px 0 0 8px}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:left;height:28px;margin-top:3px;cursor:default;color:#555}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a,.tablenav-pages-navspan{display:inline-block;min-width:17px;border:1px solid #d2d2d2;padding:3px 5px 7px;background:#e4e4e4;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#e8e8e8;background:#ebebeb;color:#b4b4b4}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;-webkit-box-shadow:none;box-shadow:none;outline:0}.tablenav .displaying-num{margin-left:7px}.tablenav .one-page .displaying-num{display:inline-block;margin-top:5px;margin-left:0}.tablenav .actions{padding:2px 0 0 8px}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-left:20px}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#0073aa}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#00a0d2}.tablenav .view-switch{float:left;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 2px 0 8px}.media-toolbar.wp-filter .view-switch{margin:0 2px 0 12px}.view-switch a{float:right;width:28px;height:28px;text-align:center;line-height:24px;text-decoration:none}.view-switch a:before{color:#b4b9be;display:inline-block;font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.view-switch a:focus:before,.view-switch a:hover:before{color:#727272}.view-switch a.current:before{color:#0073aa}.view-switch .view-list:before{content:"\f163"}.view-switch .view-excerpt:before{content:"\f164"}.view-switch .view-grid:before{content:"\f509"}.filter{float:right;margin:-5px 10px 0 0}.filter .subsubsub{margin-right:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter .wp-filter{margin-bottom:0}#posts-filter fieldset{float:right;margin:0 0 1em 1.5ex;padding:0}#posts-filter fieldset legend{padding:0 1px .2em 0}.row-actions,.row-actions-visible{padding:2px 0 0}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:600;margin:0 6px}.row-title{font-size:14px!important;font-weight:600}.column-comment .comment-author{margin-bottom:.6em}.column-author img,.column-comment .comment-author img,.column-username img{float:right;margin-left:10px;margin-top:1px}.row-actions{color:#ddd;font-size:13px;position:relative;right:-9999em}.plugins,.plugins td,.plugins th,.row-actions .network_active,.row-actions .network_only{color:#000}.rtl .row-actions a{display:inline-block}.mobile .row-actions,.no-js .row-actions,.row-actions.visible,div.comment-item:hover .row-actions,tr:hover .row-actions{position:static}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:right;margin:0;padding:0;width:100%}#wpbody-content .inline-edit-row fieldset .inline-edit-col,tr.inline-edit-row td{padding:0 .5em}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:left;width:69%}#bulk-titles div a,.inline-edit-row fieldset .inline-edit-date,.plugin-card,.quick-edit-row-post fieldset label.inline-edit-status{float:right}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em .5em 0;line-height:2.5;font-weight:600}#the-list #bulk-edit.inline-edit-row .inline-edit-legend{padding:.2em .5em}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0;font-style:italic}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;line-height:2.5}.inline-edit-row fieldset.inline-edit-date label{display:inline-block;margin:0;line-height:1.5;vertical-align:baseline}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;width:auto}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{display:block;float:right;width:6em;line-height:2.5}#posts-filter fieldset.inline-edit-date legend{padding:0}.inline-edit-row fieldset.inline-edit-date select{margin:1px;line-height:28px}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-right:6em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-left:.5em}.inline-edit-row .inline-edit-or{margin:.2em 0 .2em 6px;line-height:2.5}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:middle}.inline-edit-row fieldset label textarea{width:100%;height:4em;vertical-align:top}#bulk-titles,ul.cat-checklist{height:12em;border:1px solid #ddd;overflow-y:scroll;padding:0 5px}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-left:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.3em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}ul.cat-checklist{margin:0;background-color:#fff}#bulk-titles{display:block;margin:0 0 5px;line-height:140%}.inline-edit-row fieldset ul.cat-checklist input,.inline-edit-row fieldset ul.cat-checklist li{margin:0;position:relative}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-style:normal;font-size:11px}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%}.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{max-width:80%}.ie8 .inline-edit-row #post_parent,.ie8 .inline-edit-row select[name=page_template]{width:250px}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;height:18px;margin:0 -2px 0 3px;overflow:hidden;position:relative;width:20px}#bulk-titles div a:before{position:relative;top:-3px}.plugins tbody,.plugins tbody th.check-column{padding:8px 2px 0 0}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}#update-plugins-table tbody td p{margin-top:0}#update-plugins-table tbody td p strong{font-size:14px}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-right:6px}#update-plugins-table tfoot td.check-column,#update-plugins-table thead td.check-column{padding-top:11px}.plugins tr{background:#fff}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ol,.plugins .desc ul{margin:0 2em 0 0}.plugins .desc ul{list-style-type:disc}.plugins .row-actions{font-size:13px}.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th{padding:10px 9px}.plugins .active td,.plugins .active th{background-color:#f7fcfe}.plugins .update td,.plugins .update th{border-bottom:0}.plugin-update-tr td{border-top:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th,.plugins tr.active.plugin-update-tr+tr.inactive td,.plugins tr.active.plugin-update-tr+tr.inactive th{border-top:1px solid rgba(0,0,0,.03);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1;box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1}.plugins .update td,.plugins .update th,.plugins .updated td,.plugins .updated th,.plugins tr.active+tr.inactive.update td,.plugins tr.active+tr.inactive.update th,.plugins tr.active+tr.inactive.updated td,.plugins tr.active+tr.inactive.updated th,.upgrade .plugins tr:last-of-type td,.upgrade .plugins tr:last-of-type th{-webkit-box-shadow:none;box-shadow:none}.plugins .active.update td,.plugins .active.update th,tr.active.update+tr.plugin-update-tr .plugin-update{background-color:#fef7f1}.plugin-update-tr.active td,.plugins .active th.check-column{border-right:4px solid #00a0d2}.plugins .active.update th.check-column,.plugins .active.update+.plugin-update-tr .plugin-update{border-right:4px solid #d54e21}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-left:12px;white-space:nowrap}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugin-update-tr .update-message{font-size:13px;font-weight:400;margin:0 31px 8px 10px;padding:6px 40px 8px 12px;background-color:#f7f7f7;background-color:rgba(0,0,0,.03)}.plugin-card .install-now:before,.plugin-card .update-now:before,.plugin-update-tr .update-message:before{color:#d54e21;display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .update-now:before,.plugin-update-tr .update-message:before{content:"\f463"}.plugin-update-tr .update-message:before{margin:0 -30px 0 10px}.plugin-card .install-now:before,.plugin-card .update-now:before{margin:3px -2px 0 5px}.plugin-card .updating-message:before,.plugin-update-tr .updating-message:before{content:"\f463";-webkit-animation:rotation 2s infinite linear;animation:rotation 2s infinite linear}@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(-359deg);transform:rotate(-359deg)}}@keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(-359deg);transform:rotate(-359deg)}}.plugin-card .updated-message:before,.plugin-update-tr .updated-message:before{color:#79ba49;content:"\f147"}.wp-list-table.plugins tbody tr.plugin-update-tr td.plugin-update{overflow:hidden;padding:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}tr.active+tr.plugin-update-tr .plugin-update{background-color:#f7fcfe}tr.active+tr.plugin-update-tr:not(.updated) .plugin-update .update-message{background-color:#fcf3ef}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{margin:0 8px 16px;width:48.5%;width:-webkit-calc(50% - 8px);width:calc(50% - 8px);background-color:#fff;border:1px solid #dedede;box-sizing:border-box}.plugin-card:nth-child(odd){clear:both;margin-right:0}.plugin-card:nth-child(even){margin-left:0}@media screen and (min-width:1600px){.plugin-card{width:30%;width:-webkit-calc(33.1% - 8px);width:calc(33.1% - 8px)}.plugin-card:nth-child(odd){clear:none;margin-right:8px}.plugin-card:nth-child(even){margin-left:8px}.plugin-card:nth-child(3n+1){clear:both;margin-right:0}.plugin-card:nth-child(3n){margin-left:0}}.plugin-card-top{position:relative;padding:20px 20px 10px;min-height:135px}.plugin-action-buttons,div.action-links{margin:0}.plugin-card h3{margin:0 0 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-right:148px;margin-left:120px}.plugin-card .action-links{position:absolute;top:20px;left:20px;width:120px}.plugin-action-buttons{clear:left;float:left;margin-right:2em;margin-bottom:1em;text-align:left}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #dedede;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-right:16px;-webkit-box-shadow:0 -1px 0 #dedede;box-shadow:0 -1px 0 #dedede}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:23px}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:right;clear:right;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:left;float:left;clear:left;width:65%;width:-webkit-calc(100% - 180px);width:calc(100% - 180px)}.plugin-card .column-compatibility span:before{font:400 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;right:-2px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.plugin-card .compatibility-incompatible:before{content:"\f158"}.plugin-card .compatibility-compatible:before{content:"\f147"}.plugin-icon{position:absolute;top:20px;right:20px;width:128px;height:128px;margin:0 0 20px 20px}.no-plugin-results{color:#999;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table .site-deleted,.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table .site-spammed,.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table .site-archived,.wp-list-table tr.site-archived{background:#ffebe8}.wp-list-table .site-mature,.wp-list-table tr.site-mature{background:#fecac2}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-right:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:right}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-left:20px}.plugin-card .desc,.plugin-card .name{margin-left:0}.plugin-card .desc p:first-of-type{margin-top:0}.fixed .column-date{width:14%}}@media screen and (max-width:782px){.plugins #the-list tr td,.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.tablenav{height:auto}.tablenav.top{margin:20px 0 5px}.tablenav.bottom{position:relative;margin-top:15px}.tablenav br{display:none}.tablenav br.clear{display:block}.form-wrap>p,.tablenav .view-switch,.tablenav.top .actions,.tablenav.top .displaying-num,.tablenav.top .tablenav-pages.one-page{display:none}.view-switch a{width:36px;height:36px;line-height:33px}.tablenav.bottom .displaying-num{position:absolute;left:0;top:11px;margin:0;font-size:14px}.tablenav .tablenav-pages{width:100%;height:auto;text-align:center;margin:0 0 25px}.tablenav.bottom .tablenav-pages{margin-top:25px}.tablenav.bottom .tablenav-pages.one-page{margin:15px 0 0;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav-pages .pagination-links a,.tablenav-pages-navspan{padding:9px 11px 12px;font-size:18px}.tablenav-pages-navspan{height:18px}.tablenav-pages .pagination-links .current-page{padding:8px 9px 9px;font-size:16px}.comment-count{font-size:14px}.wp-list-table th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell;width:35px}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;display:block;width:auto!important}.wp-list-table td.column-primary{padding-left:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 35% 3px 8px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;right:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:right}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{-webkit-box-shadow:none;box-shadow:none}#the-comment-list .is-expanded td:last-child{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;width:auto;height:auto;margin:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:none}.column-comments .post-com-count [aria-hidden=true],.column-response .post-com-count [aria-hidden=true]{display:none}#edithead label,.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:0;margin-left:.5em}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:static;height:auto;min-width:0;padding:0;border:none;-webkit-border-radius:0;border-radius:0;background:0 0;color:#bb2a2a;font-size:inherit;line-height:inherit;text-align:right}.column-comments .post-com-count-pending:hover,.column-response .post-com-count-pending:hover{color:#dc3232}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:10px}.widefat *{word-wrap:normal}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-size:16px}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong,table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset label.inline-edit-tags{padding:0 .5em}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-right:0}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{width:3em}.inline-edit-row fieldset input[name=aa]{width:4.5em}.inline-edit-row .inline-edit-or{margin:0 0 0 6px}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:right;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#bulk-titles div{margin:.8em .3em}.plugin-card,.plugin-update-tr .update-message{margin-right:0}#bulk-titles div a{height:22px}#wpbody-content #update-themes-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{-webkit-box-shadow:none;box-shadow:none;border-top:none}.plugins tbody{padding:1px 0 0}.plugins .plugin-update-tr:before,.plugins tr.active+tr.inactive td.column-description,.plugins tr.active+tr.inactive th.check-column{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins .plugin-update-tr:before{content:"";display:table-cell}.plugins .active.update+.plugin-update-tr:before{border-right:4px solid #d54e21;background-color:#fef7f1}.plugins #the-list .plugin-update-tr .plugin-update{border-right:none}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install #the-list td{-webkit-box-shadow:none;box-shadow:none}table.plugin-install #the-list tr{display:block;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-left:0;width:100%}}#titlediv,#wp-content-editor-container,.postbox,form#tags-filter{position:relative}#pending,#poststuff #titlewrap{border:0;padding:0}#poststuff{padding-top:10px;min-width:763px}#poststuff #post-body{padding:0}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-left:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:right}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:right;margin:0 0 0 5px}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#777;position:absolute;font-size:1.7em;padding:11px 10px}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px}input#link_description,input#link_url{width:98%}#pending{background:100% none;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-left:10px;padding:0;font-size:11px;text-decoration:underline;color:#0073aa}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name-full{display:none}#editable-post-name{font-weight:700}#editable-post-name input{font-size:13px;font-weight:400;height:22px;margin:0;width:16em}.postarea h3 label{float:right}.submitbox .submit{text-align:right;padding:12px 10px 10px;font-size:11px;background-color:#464646;color:#ccc}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:red;border-bottom-color:red}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-left:4px;padding:6px}.inside-submitbox #post_status{margin:2px -2px 2px 0}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{min-width:255px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:0 0;border:0;float:left;padding:0 12px;margin:0}.category-add input[type=text],.category-add select{width:100%;max-width:260px;vertical-align:baseline}#side-sortables .category-add input[type=text],#side-sortables .category-add select{margin:0 0 1em}#side-sortables .add-menu-item-tabs li,.wp-tab-bar li,ul.category-tabs li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#32373c}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}.ui-tabs-hide,.wp-editor-expand #content-resize-handle,.wp-hidden-children .wp-hidden-child{display:none}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}ul.add-menu-item-tabs,ul.category-tabs,ul.wp-tab-bar{margin-top:12px}ul.add-menu-item-tabs li,ul.category-tabs li{border:1px solid transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #dfdfdf;border-bottom-color:#fdfdfd;background-color:#fdfdfd}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px}#postimagediv .inside img{max-width:100%;height:auto;width:auto;background-image:-webkit-linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),-webkit-linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-image:linear-gradient(-45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:100% 0,10px 10px;-webkit-background-size:20px 20px;background-size:20px 20px}#post-body .tagsdiv #newtag{margin-left:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{width:100%;border-spacing:0;border:1px solid #e5e5e5;border-top:none;background-color:#f7f7f7;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);z-index:999}#post-status-info td{font-size:12px}.autosave-info{padding:2px 10px;text-align:left}#editorcontent #post-status-info{border:none}#content-resize-handle{background:url(../images/resize.gif) left bottom no-repeat;width:12px;cursor:row-resize}.rtl #content-resize-handle{background:url(../images/resize-rtl.gif) right bottom no-repeat}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}#content-textarea-clone{z-index:-1;position:absolute;top:0;visibility:hidden;overflow:hidden;max-width:100%;border:1px solid transparent}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #e5e5e5}.wp-editor-expand #wp-content-editor-container{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px;border-bottom:0 none}.wp-editor-expand div.mce-statusbar{z-index:1}.wp-editor-expand #post-status-info{border-top:1px solid #e5e5e5}.wp-editor-expand div.mce-toolbar-grp{z-index:999}.mce-fullscreen #wp-content-wrap .mce-edit-area,.mce-fullscreen #wp-content-wrap .mce-menubar,.mce-fullscreen #wp-content-wrap .mce-statusbar,.mce-fullscreen #wp-content-wrap .mce-toolbar-grp{position:static!important;width:auto!important;padding:0!important}.mce-fullscreen #wp-content-wrap .mce-statusbar{visibility:visible!important}.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw,.mce-fullscreen #wp-content-wrap .mce-wp-dfw,.post-php.mce-fullscreen #wpadminbar{display:none}#wp-content-editor-tools{background-color:#f1f1f1;padding-top:20px}#poststuff #post-body.columns-2 #side-sortables{width:280px}#timestampdiv select{height:21px;line-height:14px;padding:0;vertical-align:top;font-size:12px}#aa,#hh,#jj,#mn{padding:1px;font-size:12px}#hh,#jj,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{padding:2px 0 1px;display:inline!important;height:auto!important}#misc-publishing-actions label[for=post_status]:before,#post-body #visibility:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:#82878c}#post-body #visibility:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 0 0 2px;top:0;right:-1px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#post-body #visibility:before{content:"\f177"}.curtime #timestamp:before{content:"\f145";top:-1px}#post-body .misc-pub-revisions:before{content:"\f321"}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}.notification-dialog{position:fixed;top:30%;max-height:70%;right:50%;width:450px;margin-right:-225px;background:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;z-index:1000005;overflow-y:auto}.notification-dialog-background{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000000}#post-lock-dialog .post-locked-message,#post-lock-dialog .post-taken-over{margin:25px}#post-lock-dialog .post-locked-message a.button{margin-left:10px}#post-lock-dialog .post-locked-avatar{float:right;margin:0 0 20px 20px}#post-lock-dialog .wp-tab-first{outline:0}#post-lock-dialog .locked-saving img{float:right;margin-left:3px}#post-lock-dialog.saved .locked-saved,#post-lock-dialog.saving .locked-saving{display:inline}#excerpt{display:block;margin:12px 0 0;height:4em;width:100%}.tagchecklist{margin-right:14px;font-size:12px;overflow:auto}.tagchecklist br{display:none}.tagchecklist span,.tagchecklist span a{display:block;float:right;overflow:hidden}.tagchecklist strong{margin-right:-8px;position:absolute}.tagchecklist span{margin-left:25px;font-size:13px;line-height:1.8em;cursor:default;max-width:100%;text-overflow:ellipsis}.tagchecklist span a{margin:1px -17px 0 0;cursor:pointer;width:20px;height:20px;text-indent:0;position:absolute}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}#poststuff .inside label.deleted,#poststuff .inside label.spam{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}.ie8 #poststuff .inside #page_template,.ie8 #poststuff .inside #parent_id{width:250px}#post-visibility-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f1f1f1}#postcustom #postcustomstuff .submit{border:0;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border:1px solid #dfdfdf;border-spacing:0;background-color:#f9f9f9}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-left:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:right;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:20px;width:20px;margin-left:5px;margin-top:-4px}.post-state-format:before{display:block;height:20px;width:20px;font:400 20px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon:before,.post-state-format:before{color:#ddd;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}a.post-format-icon:hover:before,a.post-state-format:hover:before{color:#00a0d2}#post-formats-select{line-height:2em}#post-formats-select .post-format-icon:before{top:5px}input.post-format{margin-top:1px}label.post-format-icon{margin-right:0;padding:2px 0}.post-format-icon:before{position:relative;display:inline-block;margin-left:7px;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon.post-format-standard:before,.post-state-format.post-format-standard:before,a.post-state-format.format-standard:before{content:"\f109"}.post-format-icon.post-format-image:before,.post-state-format.post-format-image:before,a.post-state-format.format-image:before{content:"\f128"}.post-format-icon.post-format-gallery:before,.post-state-format.post-format-gallery:before,a.post-state-format.format-gallery:before{content:"\f161"}.post-format-icon.post-format-audio:before,.post-state-format.post-format-audio:before,a.post-state-format.format-audio:before{content:"\f127"}.post-format-icon.post-format-video:before,.post-state-format.post-format-video:before,a.post-state-format.format-video:before{content:"\f126"}.post-format-icon.post-format-chat:before,.post-state-format.post-format-chat:before,a.post-state-format.format-chat:before{content:"\f125"}.post-format-icon.post-format-status:before,.post-state-format.post-format-status:before,a.post-state-format.format-status:before{content:"\f130"}.post-format-icon.post-format-aside:before,.post-state-format.post-format-aside:before,a.post-state-format.format-aside:before{content:"\f123"}.post-format-icon.post-format-quote:before,.post-state-format.post-format-quote:before,a.post-state-format.format-quote:before{content:"\f122"}.post-format-icon.post-format-link:before,.post-state-format.post-format-link:before,a.post-state-format.format-link:before{content:"\f103"}.category-adder{margin-right:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,.wp-tab-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border:1px solid #dfdfdf;background-color:#fdfdfd}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}#front-page-warning,#front-static-pages ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.inline-editor ul.cat-checklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,ul.export-filters{margin-right:18px}ul.categorychecklist li{margin:0;padding:0;line-height:22px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap label{display:block;padding:2px;font-size:12px}.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field input[type=number],.form-field input[type=tel],.form-field input[type=url],.form-field input[type=search],.form-field textarea{border-style:solid;border-width:1px;width:95%}.form-wrap p,p.description{margin:2px 0 5px;color:#666}.form-wrap p,p.description,p.help,span.description{font-size:13px;font-style:italic}.form-wrap .form-field{margin:0 0 10px;padding:8px 0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .tagsdiv .howto{margin:0 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw,.ac_results{display:none}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h2{margin:2px 0 12px}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid grey;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{padding:2px 5px;white-space:nowrap;color:#101010;text-align:right}.ac_over{background-color:#f0f0b8;cursor:pointer}.ac_match{text-decoration:underline}.imgedit-group-top h2 a,.imgedit-group-top h3 a,a.imgedit-help-toggle,table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}#comment-status-radio label,.links-table td,.links-table th{padding:5px 0}.comment-ays-submit .button-cancel{margin-right:1em}.spam-undo-inside,.trash-undo-inside{margin:1px 0 1px 8px;line-height:16px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-left:8px;vertical-align:middle}.stuffbox .editcomment{clear:none}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 0 5px 3px;vertical-align:middle}table.links-table{width:100%;border-spacing:0}.links-table th{font-weight:400;text-align:right;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table td label{margin-left:8px}.links-table td input[type=text],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}.wp-editor-expand #qt_content_dfw,.wp-editor-expand #wp-content-wrap .mce-wp-dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.focus-on #wp-toolbar{opacity:.3}.focus-off #screen-meta,.focus-off #screen-meta-links,.focus-off #wp-toolbar,.focus-off #wpfooter,.focus-off .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform:translateX(100%);-ms-transform:translateX(100%);transform:translateX(100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:url(../images/resize-2x.gif) left bottom no-repeat;-webkit-background-size:11px 11px;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background:url(../images/resize-rtl-2x.gif) left bottom no-repeat}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-left:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{border:0;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.columns-prefs,.screen-layout{display:none}}@media screen and (max-width:782px){#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}.post-format-options{padding-left:0}.post-format-options a{margin-left:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-left:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}.tagsdiv .newtag,ul.categorychecklist li{margin-bottom:15px}ul.category-tabs li.tabs{padding:15px}ul.categorychecklist ul{margin-top:15px}.category-add input[type=text],.category-add select{max-width:none;margin-bottom:15px}.tagsdiv .newtag{width:100%;height:auto}.tagchecklist{margin:25px 10px}.tagchecklist span{font-size:16px;line-height:1.4}#commentstatusdiv p{line-height:2.8}.mceToolbar *{white-space:normal!important}.mceToolbar td,.mceToolbar tr{float:right!important}.wp_themeSkin a.mceButton{width:30px;height:30px}.wp_themeSkin .mceButton .mceIcon{margin-top:5px;margin-right:5px}.wp_themeSkin .mceSplitButton{margin-top:1px}.wp_themeSkin .mceSplitButton td a.mceAction{padding:6px 6px 6px 3px}.wp_themeSkin .mceSplitButton td a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen{padding-top:6px;padding-bottom:6px;background-position:1px 6px}.wp_themeSkin table.mceListBox{margin:5px}div.quicktags-toolbar input{padding:10px 20px}button.wp-switch-editor{font-size:16px;line-height:1em;margin:7px 7px 0 0;padding:8px 12px}#wp-content-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 15px 0 20px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-top:-3px!important;margin-right:-5px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}.misc-pub-section>a{float:left;font-size:16px}#delete-action,#publishing-action{line-height:47px}#publishing-action .spinner{float:none;margin-top:-2px}.comment-ays td,.comment-ays th{padding-bottom:0}.comment-ays td{padding-top:6px}.links-table #link_rel{max-width:none}.links-table td,.links-table th{padding:10px 0}}@media only screen and (max-width:500px){#wp-content-media-buttons a{font-size:14px;padding:0 10px}}.revisions-control-frame,.revisions-diff-frame{position:relative}.revisions-controls{padding-top:40px;height:100px;z-index:1}.revisions-controls input[type=checkbox]{position:relative;top:-1px;vertical-align:text-bottom}.revisions.pinned .revisions-controls{position:fixed;top:0;height:82px;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff,.revisions-meta{background-color:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;box-sizing:border-box;background-color:#fff}.revisions-tickmarks>div{position:absolute;height:100%;border-right:1px solid #a0a5aa;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.comparing-two-revisions.pinned .revisions-controls{height:124px}.revisions .diff-error{position:absolute;text-align:center;margin:0 auto;width:100%;display:none}.revisions.diff-error .diff-error{display:block}.revisions .loading-indicator{position:absolute;vertical-align:middle;opacity:0;width:100%;width:-webkit-calc(100% - 30px);width:calc(100% - 30px);top:50%;top:-webkit-calc(50% - 10px);top:calc(50% - 10px);-webkit-transition:opacity .5s;transition:opacity .5s;filter:alpha(opacity=0)}body.folded .revisions .loading-indicator{margin-right:-32px}.revisions .loading-indicator span.spinner{display:block;margin:0 auto;float:none}.revisions.loading .loading-indicator{opacity:1;filter:alpha(opacity=100)}.revisions .diff{-webkit-transition:opacity .5s;transition:opacity .5s}.revisions.loading .diff{opacity:.5;filter:alpha(opacity=50)}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions.pinned .revisions-meta{-webkit-box-shadow:none;box-shadow:none}.revision-toggle-compare-mode{position:absolute;top:0;left:0}.comparing-two-revisions .revisions-next,.comparing-two-revisions .revisions-previous,.revisions-meta .diff-meta-to strong{display:none}.revisions-controls .author-card .date{color:#777}.revisions-controls .author-card.autosave{color:#d54e21}.revisions-controls .author-card .author-name{font-weight:700}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions.pinned .revisions-buttons{padding:0 11px}.revisions-next,.revisions-previous{position:relative;z-index:1}.revisions-previous{float:right}.revisions-next{float:left}.revisions-controls .wp-slider{max-width:70%;margin:0 auto;top:-3px}.revisions-diff{padding:15px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff h3:first-child{margin-top:0}#revisions-meta-restored img,.post-revisions li img{vertical-align:middle}table.diff tbody tr td:nth-child(2){width:4%}table.diff{width:100%;white-space:pre-wrap}table.diff col.content{width:auto}table.diff col.content.diffsplit{width:48%}table.diff col.diffsplit.middle{width:auto}table.diff col.ltype{width:30px}table.diff tr{background-color:transparent}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.618;padding:.5em;vertical-align:top;word-wrap:break-word}table.diff td h1,table.diff td h2,table.diff td h3,table.diff td h4,table.diff td h5,table.diff td h6{margin:0}table.diff .diff-deletedline{background-color:#ffe9e9}table.diff .diff-deletedline del{background-color:#faa}table.diff .diff-addedline{background-color:#e9ffe9}table.diff .diff-addedline ins{background-color:#afa}.diff-meta{padding:5px;clear:both;min-height:32px}.diff-title strong{line-height:32px;min-width:60px;text-align:left;float:right;margin-left:5px}.revisions-controls .author-card .author-info{font-size:12px;line-height:16px}.revisions-controls .author-card .author-info,.revisions-controls .author-card .avatar{float:right;margin-right:6px;margin-left:6px}.revisions-controls .author-card .byline{display:block;font-size:12px}.revisions-controls .author-card .avatar{vertical-align:middle}.diff-meta input.restore-revision{float:left;margin-right:6px;margin-left:6px;margin-top:4px}.diff-meta-from{display:none}.comparing-two-revisions .diff-meta-from{display:block}.revisions-tooltip{position:absolute;bottom:105px;margin-left:0;margin-right:-69px;z-index:0;max-width:350px;min-width:130px;padding:8px 4px;opacity:0}.revisions-tooltip.flipped{margin-right:0;margin-left:-70px}.revisions.pinned .revisions-tooltip{display:none!important}.comparing-two-revisions .revisions-tooltip{bottom:145px}.revisions-tooltip-arrow{width:70px;height:15px;overflow:hidden;position:absolute;right:0;margin-right:35px;bottom:-15px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-right:0;margin-left:35px;right:auto;left:0}.revisions-tooltip-arrow>span{content:"";position:absolute;right:20px;top:-20px;width:25px;height:25px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{right:auto;left:20px}.ie8 .revisions-tooltip-arrow>span{right:15px;top:-25px;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476)"}.ie8 .revisions-tooltip.flipped .revisions-tooltip-arrow>span{left:25px}.revisions-tooltip,.revisions-tooltip-arrow>span{border:1px solid #d7d7d7;background-color:#fff}.revisions-tooltip{display:none}.arrow{width:70px;height:16px;overflow:hidden;position:absolute;right:0;margin-right:-35px;bottom:90px;z-index:10000}.arrow.top{top:-16px;bottom:auto}.arrow.left{right:20%}.arrow:after{z-index:9999;background-color:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1);content:"";position:absolute;right:20px;top:-20px;width:25px;height:25px;-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.revisions-tooltip,.revisions-tooltip-arrow:after{border-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-right:-10px}.rtl div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.wp-slider.ui-slider{position:relative;border:1px solid #d7d7d7;text-align:right;cursor:pointer}.wp-slider .ui-slider-handle{-webkit-border-radius:50%;border-radius:50%;height:18px;margin-top:-5px;outline:0;padding:2px;position:absolute;width:18px;z-index:2;-ms-touch-action:none;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus{background:#f7f7f7;border:1px solid #ccc;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc}.wp-slider .ui-slider-handle.ui-state-hover,.wp-slider .ui-slider-handle:hover{background:#fafafa;border-color:#999}.wp-slider .ui-slider-handle.ui-state-active,.wp-slider .ui-slider-handle:active{background:#eee;border-color:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:2px;right:2px;color:#555;content:"\f229";font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.media-item .media-item-info tr,.wp-slider .ui-slider-range{background-color:transparent}.wp-slider .ui-slider-handle.ui-state-hover:before,.wp-slider .ui-slider-handle:hover:before{color:#23282d}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{font-size:20px!important;margin:-1px -1px 0 0}.wp-slider .ui-slider-handle.from-handle:before{content:"\f141"}.wp-slider .ui-slider-handle.to-handle:before{content:"\f139"}.rtl .wp-slider .ui-slider-handle.from-handle:before{content:"\f139"}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:"\f141";left:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-image:none}.wp-slider.ui-slider-horizontal{height:.7em}.wp-slider.ui-slider-horizontal .ui-slider-handle{top:-.25em;margin-right:-.6em}.wp-slider.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.wp-slider.ui-slider-horizontal .ui-slider-range-min{right:0}.wp-slider.ui-slider-horizontal .ui-slider-range-max{left:0}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.revision-tick.completed-false{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){#diff-next-revision,#diff-previous-revision{margin-top:-1em}table.diff{-ms-word-break:break-all;word-break:break-all;word-wrap:break-word}}.media-item .describe{width:100%;border-top:1px solid #dfdfdf;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:right;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .describe td{padding:0 0 8px 8px;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 10px 0 0}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-left:6px;margin-right:2px}.media-upload-form .align .field label{display:inline;padding:0 23px 0 0;margin:0 3px 0 1em;font-weight:600}.media-upload-form tr.image-size label{margin:0 5px 0 0;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 5px 0 0}.describe-toggle-off,.describe-toggle-on,.media-item .edit-attachment{display:block;line-height:36px;float:left;margin-left:10px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.js .html-uploader #plupload-upload-ui,.media-item .startclosed,.media-item .startopen{display:none}.media-upload-form .media-item{min-height:36px;margin-bottom:1px;position:relative;width:100%;background:#fff}.media-upload-form .media-item,.media-upload-form .media-item .error{-webkit-box-shadow:0 1px 0 #dfdfdf;box-shadow:0 1px 0 #dfdfdf}#media-items:empty{border:0}.media-item .filename{line-height:36px;overflow:hidden;margin-right:6px}.media-item .pinkynail{float:right;margin:2px 3px 0 10px;max-width:40px;max-height:32px}.media-item .original{position:relative;height:34px}.media-item .progress{float:left;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;-webkit-border-radius:22px;border-radius:22px;background:#ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;-webkit-border-radius:22px;border-radius:22px;background-color:#0073aa;-webkit-box-shadow:inset 0 0 2px rgba(0,0,0,.3);box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0;color:#fff;text-align:center;line-height:22px;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item .error,.media-upload-form .media-item.error{width:auto;margin:0 0 1px}.media-upload-form .media-item .error{padding:10px 14px 10px 0}.media-item .error-div a.dismiss{display:block;float:left;margin:0 15px 0 10px}.find-box{background-color:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);width:600px;overflow:hidden;margin-right:-300px;position:fixed;top:30px;bottom:30px;right:50%;z-index:100105}.find-box-head{background:#fcfcfc;border-bottom:1px solid #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 16px 0 36px;position:absolute;top:0;right:0;left:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.find-box-search{padding-bottom:16px}.find-box-search .spinner{float:none;right:105px;position:absolute}#find-posts-response,.find-box-search{position:relative}#find-posts-input,#find-posts-search{float:right}#find-posts-input{width:140px;height:28px;margin:0 0 0 4px}.widefat .found-radio{padding-left:0;width:16px}#find-posts-close{width:36px;height:36px;position:absolute;top:0;left:0;cursor:pointer;text-align:center;color:#666}#find-posts-close:hover{color:#00a0d2}#find-posts-close:before{font:400 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f158"}.find-box-buttons{padding:8px 16px;background:#fcfcfc;border-top:1px solid #dfdfdf;position:absolute;bottom:0;right:0;left:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;right:0;left:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;right:0;left:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #ddd;line-height:1.8em;word-spacing:3px}.drag-drop #drag-drop-area{border:4px dashed #b4b9be;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#a0a5aa;font-size:14px;margin:5px 0;display:none}.drag-drop .drag-drop-inside p{text-align:center}.drag-drop-inside p.drag-drop-info{font-size:20px}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title,.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}#plupload-upload-ui{position:relative}.media-frame.mode-grid,.media-frame.mode-grid .attachments-browser .attachments,.media-frame.mode-grid .media-frame-content,.media-frame.mode-grid .uploader-inline-content{position:static}.media-frame.mode-grid .media-frame-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-bottom:16px;padding:0 16px;border-right:4px solid #dd3d36;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.upload-php .mode-grid .media-sidebar .media-uploader-status{border-bottom:none;padding-bottom:0;max-width:100%}.upload-php .mode-grid .media-sidebar .upload-error{margin:12px 0;padding:4px 0 0;border:none;-webkit-box-shadow:none;box-shadow:none;background:0 0}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors{top:-10px;left:-14px;padding:10px}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:before{content:"\f153";display:block;font:400 16px/1 dashicons;color:#bbb}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2,.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;left:auto;right:auto;bottom:auto;padding-top:0;margin-top:0;border:4px dashed #b4b9be}.media-frame.mode-select .attachments-browser.fixed .attachments{position:relative;top:94px;padding-bottom:94px}.media-frame.mode-grid .attachment.details:focus,.media-frame.mode-grid .attachment:focus,.media-frame.mode-grid .selected.attachment:focus{-webkit-box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;outline:0}.media-frame.mode-grid .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc}.media-frame.mode-grid .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe;box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe}.media-frame.mode-grid.mode-select .attachment .thumbnail{opacity:.65}.media-frame.mode-select .attachment.selected .thumbnail{opacity:1}.media-frame.mode-grid .media-toolbar{margin-bottom:15px;height:auto}.media-frame.mode-grid .media-toolbar select{margin:0 0 0 10px;font-size:14px}.media-frame.mode-grid.mode-edit .media-toolbar-secondary>.select-mode-toggle-button{margin:0 0 0 8px;vertical-align:middle}.media-frame.mode-grid .attachments-browser .bulk-select{display:inline-block;margin:0 0 0 10px}.media-frame.mode-grid .search{margin-top:0}.media-frame.mode-grid .spinner{margin-top:16px}.attachments-browser .media-toolbar-secondary>.media-button{margin-left:10px}.media-frame.mode-select .attachments-browser.fixed .media-toolbar{position:fixed;top:32px;right:auto;left:20px;margin-top:0}.media-frame.mode-grid .attachments-browser{padding:0}.media-frame.mode-grid .attachments-browser .attachments{padding:2px}.media-frame.mode-grid .attachments-browser .no-media{color:#999;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#777;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-right:1px solid #ddd;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.upload-php .media-modal-close{top:0;left:0}.edit-attachment-frame .edit-media-header .left{left:102px}.edit-attachment-frame .edit-media-header .right{left:51px}.edit-attachment-frame .media-frame-title{right:0;left:150px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{font:400 20px/50px dashicons!important;display:inline;font-weight:300}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .left:hover,.edit-attachment-frame .edit-media-header .right:focus,.edit-attachment-frame .edit-media-header .right:hover,.upload-php .media-modal-close:focus,.upload-php .media-modal-close:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.upload-php .media-modal-close:focus .media-modal-icon:before,.upload-php .media-modal-close:hover .media-modal-icon:before{color:#000}.edit-attachment-frame .edit-media-header .left:before,.rtl .edit-attachment-frame .edit-media-header .right:before{content:"\f345"}.edit-attachment-frame .edit-media-header .right:before,.rtl .edit-attachment-frame .edit-media-header .left:before{content:"\f341"}.edit-attachment-frame .edit-media-header .left.disabled,.edit-attachment-frame .edit-media-header .left.disabled:hover,.edit-attachment-frame .edit-media-header .right.disabled,.edit-attachment-frame .edit-media-header .right.disabled:hover{color:#ccc;background:inherit;cursor:default;pointer-events:none}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{right:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;left:0;right:0;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1)}.edit-attachment-frame .attachment-media-view{float:right;width:65%;height:100%}.edit-attachment-frame .attachment-media-view .thumbnail{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin-bottom:16px;max-width:100%;max-height:90%;max-height:-webkit-calc(100% - 42px);max-height:calc(100% - 42px)}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:6px 8px;line-height:16px}.edit-attachment-frame .attachment-info{overflow:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);border-bottom:0;border-right:1px solid #ddd;background:#f3f3f3}.edit-attachment-frame .attachment-info .details,.edit-attachment-frame .attachment-info .settings{position:relative;overflow:hidden;float:none;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #ddd}.edit-attachment-frame .attachment-info .filename{font-weight:400;color:#666}.edit-attachment-frame .attachment-info .thumbnail{margin-bottom:12px}.attachment-info .actions{margin-bottom:16px}.attachment-info .actions a{display:inline;text-decoration:none}.wp_attachment_details label[for=content]{font-size:13px;line-height:1.5;margin:1em 0}.wp_attachment_details #attachment_caption{height:4em}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative}.imgedit-settings p{margin:8px 0 0}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto;overflow:hidden}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding-left:16px;width:auto;overflow:hidden}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:left;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;background:url(../images/spinner.gif) center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:right}.imgedit-settings .disabled,.media-disabled{color:grey}.A1B1,.wp_attachment_image{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:right;width:32px;border:1px solid #d5d5d5;background:#f1f1f1;margin:0 0 0 8px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;line-height:28px;color:#777;cursor:pointer}.imgedit-menu div:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;color:#32373c}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;color:#777;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop{margin:0 0 0 8px}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 3px 0 8px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 3px 0 8px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 3px 0 8px}.imgedit-applyto img{margin:0 0 0 8px}#poststuff .imgedit-group-top h2,#poststuff .imgedit-group-top h3{margin:0;padding:0;font-size:14px;line-height:1.4}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-right:20px}.imgedit-wrap .nowrap{white-space:nowrap}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{margin-bottom:8px;padding:10px}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 12px 10px 0}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;left:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{left:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.upload-php .media-modal-close .media-modal-icon{margin:9px 10px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{left:82px}.edit-attachment-frame .edit-media-header .right{left:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}}.theme-browser .themes{clear:both;padding:0 0 100px}.themes-php .wrap h1{float:right;margin-bottom:15px}.network-admin.themes-php .wrap h1{margin-bottom:0}.themes-php .wrap h1 .button{margin-right:20px}.themes-php .wp-filter-search{position:relative;top:-2px;right:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.themes-php div.error,.themes-php div.notice,.themes-php div.updated{margin:0 0 20px;clear:both}.themes-php div.updated a{text-decoration:underline}.theme-browser .theme{cursor:pointer;float:right;margin:0 0 4% 4%;position:relative;width:30.6%;border:1px solid #dedede;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-shadow:0 1px 1px -1px rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ie8 .theme-browser .theme{width:30%;margin:0 0 4% 3%}.theme-browser .theme:nth-child(3n){margin-left:0}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:pointer}.theme-browser .theme .theme-name{font-size:15px;font-weight:600;height:18px;margin:0;padding:15px;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65)}.theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;position:absolute;bottom:0;left:0;height:38px;padding:9px 10px 0;background:rgba(244,244,244,.7);border-right:1px solid rgba(0,0,0,.05)}.theme-browser .theme.focus .theme-actions,.theme-browser .theme:focus .theme-actions,.theme-browser .theme:hover .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-actions .button-primary{margin-left:3px}.theme-browser .theme .theme-actions .button-secondary{float:none;margin-right:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.theme-browser .theme .theme-screenshot:after{content:"";display:block;padding-top:66.66666%}.theme-browser .theme .theme-screenshot img{height:auto;position:absolute;right:0;top:0;width:100%;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.theme-browser .theme:focus .theme-screenshot,.theme-browser .theme:hover .theme-screenshot{background:#fff}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:.4}.theme-browser .theme .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;position:absolute;top:35%;left:25%;right:25%;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.theme-browser .theme:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}.theme-browser .theme:focus .more-details{opacity:1}.theme-browser .theme.active:focus .theme-actions{display:block}.theme-browser.rendered .theme:focus .more-details,.theme-browser.rendered .theme:hover .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-installed,.theme-browser .theme .theme-update{background:#d54e21;background:rgba(213,78,33,.95);color:#fff;display:block;font-size:13px;font-weight:400;height:48px;line-height:48px;padding:0 10px;position:absolute;top:0;left:0;right:0;border-bottom:1px solid rgba(0,0,0,.25);overflow:hidden}.theme-browser .theme .theme-installed:before,.theme-browser .theme .theme-update:before{content:"\f463";display:inline-block;font:400 20px/1 dashicons;margin:0 0 0 6px;opacity:.8;position:relative;top:5px;speak:none;-webkit-font-smoothing:antialiased}.theme-browser .theme.active .theme-name{background:#2f2f2f;color:#fff;padding-left:110px;font-weight:300;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.5);box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}.theme-browser .customize-control .theme.active .theme-name{padding-left:15px}.theme-browser .theme.active .theme-name span{font-weight:600}.theme-browser .theme.active .theme-actions{background:rgba(49,49,49,.7);border-right:none;opacity:1}.theme-browser .theme.active .theme-actions .button-primary{margin-left:0}.theme-browser .theme .theme-author{background:#23282d;color:#eee;display:none;font-size:14px;margin:0 10px;padding:5px 10px;position:absolute;bottom:56px}.theme-browser .theme.display-author .theme-author{display:block}.theme-browser .theme.display-author .theme-author a{color:inherit;text-decoration:none}.theme-browser .theme.add-new-theme{border:none;-webkit-box-shadow:none;box-shadow:none}.theme-browser .theme.add-new-theme a{color:#999;text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;right:0;left:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #d5d2ca;border:5px dashed rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#e5e5e5;background:rgba(153,153,153,.1);-webkit-border-radius:50%;border-radius:50%;display:inline-block;content:"\f132";-webkit-font-smoothing:antialiased;font:400 74px/115px dashicons;width:100px;height:100px;vertical-align:middle;text-align:center;color:#999;position:absolute;top:30%;right:50%;margin-right:-50px;text-indent:-4px;padding:0;text-shadow:none;z-index:4}.rtl .theme-browser .theme.add-new-theme span:after{text-indent:4px}.theme-browser .theme.add-new-theme a:focus .theme-screenshot,.theme-browser .theme.add-new-theme a:hover .theme-screenshot{background:0 0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{background:#fff;color:#0073aa}.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{border-color:transparent;color:#fff;background:#0073aa;content:""}.theme-browser .theme.add-new-theme .theme-name{background:0 0;text-align:center;-webkit-box-shadow:none;box-shadow:none;font-weight:400;position:relative;top:0;margin-top:-18px;padding-top:0;padding-bottom:48px}.theme-browser .theme.add-new-theme a:focus .theme-name,.theme-browser .theme.add-new-theme a:hover .theme-name{color:#fff;z-index:2}.theme-overlay .theme-backdrop{position:absolute;right:-20px;left:0;top:0;bottom:0;background:#f1f1f1;background:rgba(238,238,238,.9);z-index:10000}.theme-overlay .theme-header .close,.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;background-color:transparent;height:48px;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;text-align:center}.theme-overlay .theme-header{position:absolute;top:0;right:0;left:0;height:48px;border-bottom:1px solid #ddd}.theme-overlay .theme-header button{padding:0}.theme-overlay .theme-header .close{width:50px;float:left;border:0;border-right:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:400 22px/50px dashicons!important;color:#777;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{color:#777;width:54px;float:right;border:0;border-left:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#ddd;border-color:#ccc;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.theme-overlay .theme-header .left.disabled,.theme-overlay .theme-header .left.disabled:hover,.theme-overlay .theme-header .right.disabled,.theme-overlay .theme-header .right.disabled:hover{color:#ccc;background:inherit;cursor:inherit}.theme-overlay .theme-header .left:before,.theme-overlay .theme-header .right:before{font:400 20px/50px dashicons!important;display:inline;font-weight:300}.theme-overlay .theme-header .left:before{content:"\f345"}.theme-overlay .theme-header .right:before{content:"\f341"}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;right:190px;left:30px;bottom:3%;background:#fff;-webkit-box-shadow:0 1px 20px 5px rgba(0,0,0,.1);box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.theme-overlay .theme-wrap:after{content:".";display:block;height:0;clear:both;visibility:hidden}body.folded .theme-overlay .theme-wrap{right:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;right:0;left:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-about:after{content:".";display:block;height:0;clear:both;visibility:hidden}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;right:0;left:0;padding:10px 25px 5px;background:#f3f3f3;z-index:30;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-top:1px solid #eee}.upload-plugin,.upload-theme,.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.ie8 .theme-overlay .theme-actions{border:1px solid #eee}.theme-overlay .theme-actions a{margin-left:5px;margin-bottom:5px}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#a00;text-decoration:none;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;background:0 0}.theme-overlay .theme-actions .delete-theme{position:absolute;left:10px;bottom:5px}.broken-themes a.delete-theme:focus,.broken-themes a.delete-theme:hover,.theme-overlay .theme-actions .delete-theme:focus,.theme-overlay .theme-actions .delete-theme:hover{background:#d54e21;color:#fff;border-color:#d54e21}.theme-overlay .theme-actions .inactive-theme,.theme-overlay.active .theme-actions .active-theme{display:block}.theme-overlay .theme-screenshots{float:right;margin:0 0 0 30px;width:55%;max-width:880px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden;position:relative;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot:after{content:"";display:block;padding-top:75%}.theme-overlay .screenshot img{height:auto;position:absolute;right:0;top:0;width:100%}.theme-overlay.small-screenshot .theme-screenshots{position:absolute;width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:350px;width:auto}.theme-overlay .screenshot.thumb{background:#ccc;border:1px solid #eee;float:none;display:inline-block;margin:10px 5px 0;width:140px;height:80px;cursor:pointer}.theme-overlay .screenshot.thumb:after{content:"";display:block;padding-top:100%}.theme-overlay .screenshot.thumb img{cursor:pointer;position:absolute;right:0;top:0;width:100%;height:auto}.theme-overlay .screenshot.selected{background:0 0;border:2px solid #00a0d2}.theme-overlay .screenshot.selected img{opacity:.8}.theme-browser .theme .theme-screenshot.blank,.theme-overlay .screenshot.blank{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.theme-overlay .theme-info{width:40%;float:right}.theme-overlay .current-label{background:#32373c;color:#fff;font-size:11px;display:inline-block;padding:2px 8px;-webkit-border-radius:2px;border-radius:2px;margin:0 0 -10px;user-select:none}.theme-overlay .theme-name{color:#23282d;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3}.theme-overlay .theme-version{color:#999;font-size:13px;font-weight:400;float:none;display:inline-block;margin-right:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#686868;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .theme-author a{text-decoration:none}.theme-overlay .theme-description{color:#555;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.theme-overlay .theme-tags{border-top:3px solid #eee;color:#82878c;font-size:13px;font-weight:400;margin:30px 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#444;font-weight:700;margin-left:5px}.theme-overlay .parent-theme{background:#f7fcfe;border:1px solid #eee;border-right:4px solid #00a0d2;font-size:14px;font-weight:400;margin-top:30px;padding:10px 20px 10px 10px}.theme-overlay .parent-theme strong{font-weight:700}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;right:auto;left:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 0 3% 3%}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-left:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-left:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 0 3% 3%}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-left:3%}.theme-browser .theme:nth-child(4n){margin-left:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-left:0}.theme-browser .theme:nth-child(even){margin-left:0}.theme-browser .theme:nth-child(odd){margin-left:5%}}@media only screen and (max-width:900px){.theme-overlay .theme-wrap{right:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;left:0;bottom:0;right:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-right:0;width:auto}.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-left:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-left:0}}@media only screen and (max-width:650px){.theme-overlay .theme-description,.theme-overlay .theme-update{margin-right:0}.theme-overlay .theme-actions .delete-theme{position:relative;left:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;right:0;top:0;left:0;margin:10px 0;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:400 60px/90px dashicons;width:80px;height:80px;top:30%;right:50%;text-indent:0;margin-right:-40px}.single-theme .theme-wrap{margin:0 -10px 0 -12px;padding:10px}.single-theme .theme-overlay .theme-about{padding:10px;overflow:visible}.single-theme .current-label{display:none}.single-theme .theme-overlay .theme-actions{position:static}}.broken-themes{clear:both}.broken-themes table{text-align:right;width:50%;border-spacing:3px;padding:3px}.theme-browser .theme .theme-installed{background:#0073aa}.theme-browser .theme .theme-installed:before{content:"\f147"}.theme-browser .theme.is-installed .theme-actions .button-primary{display:none!important}.theme-install-php .wp-filter{padding:0 20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.theme-install-php a.browse-themes,.theme-install-php.show-upload-theme a.upload{display:none}.theme-install-php.show-upload-theme a.browse-themes{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:0;width:100%;overflow:hidden;position:relative;top:10px}.wp-full-overlay,.wp-full-overlay-main,.wp-full-overlay-sidebar{top:0;height:100%;bottom:0;right:0}.upload-plugin,body.show-upload-theme .upload-theme{display:block}body.show-upload-theme .upload-theme+.wp-filter,body.show-upload-theme .upload-theme+.wp-filter+.theme-browser,p.no-themes{display:none}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;max-width:380px}.upload-plugin .install-help,.upload-theme .install-help{color:#999;font-size:18px;font-style:normal;margin:0;padding:40px 0 0;text-align:center}p.no-themes{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}body.no-results p.no-themes{display:block}.theme-install-php .add-new-theme,body.show-upload-theme p.no-themes{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0;text-align:right}}.theme-details .theme-rating{line-height:23px}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#999}.theme-details .no-rating{display:block;line-height:20px}.appearance_page_custom-header #headimg{border:1px solid #DFDFDF;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:right;margin:0 0 20px 20px}.appearance_page_custom-header .random-header{clear:both;margin:0 0 20px 20px;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-left:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf}div#custom-background-image img{max-width:400px;max-height:300px}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:0 0;z-index:500000;position:fixed;overflow:visible;left:0;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;position:fixed;width:300px;padding:0;margin:0;z-index:10;background:#eee;border-left:none}.widget,.widget-placeholder{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-right:0!important}.wp-full-overlay.expanded{margin-right:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible;margin-right:-300px}.wp-full-overlay-sidebar:after{content:"";display:block;position:absolute;top:0;bottom:0;left:0;width:3px;z-index:1000}.wp-full-overlay-main{position:absolute;left:0}#customize-preview.wp-full-overlay-main{background:url(../images/spinner.gif) center center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready{background:0 0}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;right:0;left:0;height:45px;padding:0 15px;line-height:45px;z-index:10;margin:0;border-top:none;-webkit-box-shadow:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-header a.back{margin-top:9px}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:none;border-top:none;-webkit-box-shadow:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;right:0;left:0;overflow:auto}.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header{padding:0}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{display:block;position:relative;float:right;width:45px;height:45px;padding-left:2px;background:#eee;border-left:1px solid #ddd;color:#444;cursor:pointer;text-decoration:none;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-install-overlay .close-full-overlay:focus,.theme-install-overlay .close-full-overlay:hover,.theme-install-overlay .next-theme:focus,.theme-install-overlay .next-theme:hover,.theme-install-overlay .previous-theme:focus,.theme-install-overlay .previous-theme:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:400 22px/1 dashicons;content:"\f335";position:relative;top:7px;right:13px}.theme-install-overlay .previous-theme:before{font:400 20px/1 dashicons;content:"\f345";position:relative;top:6px;right:14px}.theme-install-overlay .next-theme:before{font:400 20px/1 dashicons;content:"\f341";position:relative;top:6px;right:13px}.theme-install-overlay .next-theme.disabled,.theme-install-overlay .next-theme.disabled:focus,.theme-install-overlay .next-theme.disabled:hover,.theme-install-overlay .previous-theme.disabled,.theme-install-overlay .previous-theme.disabled:focus,.theme-install-overlay .previous-theme.disabled:hover{color:#b4b9be;background:#eee;cursor:default;pointer-events:none}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:8px;right:10px;padding:0;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:0!important;border-radius:0!important}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#0073aa}.wp-full-overlay .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar-label{display:inline-block;vertical-align:middle;line-height:20px}.wp-full-overlay .collapse-sidebar-arrow{width:20px;height:20px;margin:0 2px;-webkit-border-radius:50%;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-full-overlay .collapse-sidebar-label{margin-right:3px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar-arrow:before{display:block;content:"\f148";background:#eee;font:400 20px/1 dashicons;speak:none;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:rotate(180.001deg);-ms-transform:rotate(180.001deg);transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:none;-ms-transform:none;transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{-webkit-transition-property:right,left,top,bottom,width,margin;transition-property:right,left,top,bottom,width,margin;-webkit-transition-duration:.2s;transition-duration:.2s}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;right:0;left:0;height:100%}.customize-active #customize-container{display:block}.customize-loading #customize-container iframe{opacity:0}.customize-loading #customize-container{background:url(../images/spinner.gif) center center no-repeat fixed #fff;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay{display:none}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .install-theme-info{display:block}.install-theme-info .theme-install{float:left;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin:15px 0;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:right;color:#777;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{float:left;margin:8px 0 0 10px;line-height:26px}.theme-install-overlay .wp-full-overlay-sidebar{background:#eee;border-left:1px solid #ddd}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.theme-install-overlay .wp-full-overlay-main{position:relative;z-index:0;background-color:#fff}.theme-install-overlay .wp-full-overlay-main:before{content:'';display:block;width:20px;height:20px;position:absolute;right:50%;top:50%;z-index:-1;margin:-10px -10px 0 0;-webkit-transform:translateZ(0);transform:translateZ(0);background:url(../images/spinner.gif) center center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px}.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);-webkit-background-size:15px 123px;background-size:15px 123px}#customize-preview.wp-full-overlay-main,.customize-loading #customize-container,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:6px;line-height:normal}}.about-wrap{position:relative;margin:25px 20px 0 40px;max-width:1050px;font-size:15px}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.about-wrap hr{border:0;height:0;margin:0;border-top:1px solid rgba(0,0,0,.1)}.about-wrap img{margin:0;max-width:100%;height:auto;vertical-align:middle}.about-wrap .jetpack-video-wrapper{margin-bottom:0}.wp-badge{background:url(../images/w-logo-white.png?ver=20131202) center 24px no-repeat #0073aa;-webkit-background-size:85px 85px;background-size:85px 85px;color:#78c8e6;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:150px;text-rendering:optimizeLegibility;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.svg .wp-badge{background-image:url(../images/wordpress-logo-white.svg?ver=20131110)}.about-wrap .wp-badge{position:absolute;top:0;left:0}.about-wrap .nav-tab{padding-left:15px;padding-right:15px;font-size:18px}.about-wrap p{line-height:1.6em;font-size:14px}.about-wrap h1{margin:.2em 0 0 200px;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.25em;line-height:1.5em}.about-wrap h4{color:#23282d}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap .about-description,.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6em;font-size:19px}.about-wrap .about-text{margin:1em 0 1em 200px;min-height:60px;color:#777}.about-wrap [class$=col] .col{float:right;position:relative}.about-wrap .two-col .col{margin-left:4.799999999%;width:47.6%}.about-wrap .feature-section.two-col .col{display:inline-block;float:none;margin-left:4.799999999%;width:calc(47.6% - 4px);vertical-align:middle}.about-wrap .three-col .col{margin-left:4.999999999%;width:29.95%}.about-wrap .three-col .col:nth-of-type(3n),.about-wrap .two-col .col:nth-of-type(2n){margin-left:0}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #dfdfdf}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .headline-feature h2{margin:30px 0;font-size:2.2em;font-weight:300;line-height:1.3;text-align:center}.about-wrap .headline-feature h3{margin-top:0;text-align:right}.about-wrap .embed-container,.about-wrap .feature-list h2,.about-wrap .featured-image{text-align:center}.about-wrap .feature-section.two-col h3{margin-top:0}.about-wrap .feature-list h2{margin:30px 0 15px}.about-wrap .feature-section h4{margin:1.4em 0 .6em;font-size:1em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .two-col-text{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:40px;-moz-column-gap:40px;column-gap:40px}.about-wrap .two-col-text p:first-of-type{margin-top:0}.about-wrap .headline-feature.feature-video{position:relative;margin:40px 0;padding-bottom:56.25%;width:100%;max-width:100%;height:0;text-align:center}.about-wrap .feature-video embed{position:absolute;top:0;right:0;width:100%;height:100%}.about-wrap .feature-section{overflow:hidden;padding:0 0 40px}.about-wrap .headline-feature{margin:0 auto;max-width:80%}.about-wrap .feature-section .media-container{overflow:hidden}.about-wrap .headline-feature .col{width:65.2%}.about-wrap .headline-feature .col.feature-image{width:30%}.about-wrap .headline-feature .vertical-screen{float:left;margin-right:40px;max-width:100%}.about-wrap .headline-feature .horizontal-screen{margin-top:20px;max-width:100%}.about-wrap .embed-container iframe,.about-wrap .wp-embedded-content{max-width:100%}.about-wrap .feature-section:not(.under-the-hood) .col{margin-top:40px}.about-wrap .changelog{margin-bottom:40px}.about-wrap .changelog.feature-section .col{margin-top:40px}.about-wrap .return-to-dashboard{margin:30px -5px 0 0;font-size:14px;font-weight:700}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-right:115px}.about-wrap h3.wp-people-group{margin:2.6em 0 1.33em;font-size:16px;line-height:inherit}.about-wrap ul.wp-people-group{overflow:hidden;padding:0 5px;margin:0 -5px 0 -15px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{display:inline-block;vertical-align:top;margin-left:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap li.wp-person img.gravatar{float:right;margin:0 0 10px 10px;padding:2px;width:60px;height:60px}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;font-weight:400;line-height:1.6em;text-decoration:none}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:700}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}@media screen and (max-width:782px){.about-wrap .feature-section{padding:0;border-bottom:none}.about-wrap [class$=col] .col{float:none;width:100%;margin:40px 0 0;padding:0 0 40px}.about-wrap .headline-feature{position:relative}.about-wrap .headline-feature .col.feature-image{position:absolute;bottom:0;left:0;width:40%}.about-wrap .headline-feature .horizontal-image{position:relative}.about-wrap .headline-feature .horizontal-image:before{display:block;content:"";width:100%;padding-top:80%}.about-wrap .headline-feature .horizontal-image>.content{position:absolute;top:0;right:0;left:0;bottom:0}.about-wrap .headline-feature .horizontal-image img{position:absolute;bottom:0}.about-wrap .two-col-text{-webkit-column-count:1;-moz-column-count:1;column-count:1}.about-wrap .three-col img{display:block;margin:0 auto}.about-wrap .feature-list .col{margin:0;padding:0;border-bottom:none}.about-wrap .headline-feature .feature-section{max-width:100%}.about-wrap .feature-list .feature-section{padding:0 0 40px}}@media only screen and (max-width:500px){.about-wrap{margin-left:20px;margin-right:10px}.about-wrap .about-text,.about-wrap h1{margin-left:0}.about-wrap .about-text{margin-bottom:.25em}.about-wrap .wp-badge{position:relative;margin-bottom:1.5em;width:100%}.about-wrap .feature-section.two-col .col,.about-wrap .headline-feature .feature-section .col,.about-wrap .three-col .col{width:100%!important;float:none!important}.about-wrap .feature-section.two-col .col:last-of-type{margin-top:0}.feature-section.under-the-hood.one-col .col,.feature-section.under-the-hood.three-col .col{padding-bottom:0}}@media only screen and (max-width:400px){.about-wrap .feature-list svg{margin-top:15px;height:65px;width:65px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-right:80px}}.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 8px 3px 5px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}#nav-menus-frame{margin-right:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-right:-300px;clear:both;float:right;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.blank-slate .menu-name{height:2em}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#999;font-style:italic;font-weight:400;margin-right:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus select{float:right;margin-left:6px}.manage-menus .selected-menu{float:right;margin:5px 0 0 6px}.manage-menus .submit-btn{float:right;margin-top:1px}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings dl{margin:0 0 10px;overflow:hidden;padding-right:18%}.menu-settings dd{float:right;margin:0;width:100%}.menu-settings dt{float:right;clear:both;width:21.951%;padding:3px 0 0;margin-right:-21.951%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#999;font-size:11px}#add-custom-link .howto,#cancel-save{font-size:12px}#menu-management-liquid{float:right;min-width:100%;margin-top:3px}#menu-management{position:relative;margin-left:20px;margin-top:-3px;width:100%;background:#f5f5f5}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:0 10px 10px;border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #dfdfdf;margin-bottom:0}#nav-menu-header .menu-name-label{margin-top:4px}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:600}#select-nav-menu-container{text-align:left;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations tr+tr td{padding-top:0}.widefat .menu-locations td{vertical-align:middle}.menu-location-title label{font-weight:700}.menu-location-menus select{float:right}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:right;width:160px;margin-left:5px}.locations-row-links{float:right;margin:6px 6px 0 0}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-left:3px;border-left:1px solid #ccc}#wpbody .open-label{display:block;float:right}#wpbody .open-label span{padding-left:10px}.js .input-with-default-title{color:#a0a5aa;font-style:italic}#menu-management .inside{padding:0 10px}.accordion-container .howto input,.postbox .howto input{width:180px;float:left}.accordion-container .outer-border{margin:0}.customlinkdiv .howto input{width:180px}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:left}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}.nav-menus-php .add-new-menu-action{float:right;margin:6px 6px 0 0;line-height:15px}.nav-menus-php .meta-sep,.nav-menus-php .submitcancel,.nav-menus-php .submitdelete{display:block;float:right;margin:6px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;margin-right:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:left}.list-controls{float:right;margin-top:5px}.add-to-menu{float:left}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link label span{display:block;float:right;margin-top:5px;padding-left:5px}.menu-item-textbox{width:180px}.nav-menus-php .howto span{margin-top:6px;display:block;float:right}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px 0 0 -10px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-left:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #dfdfdf;position:relative;padding:10px 15px;height:auto;min-height:20px;width:382px;line-height:30px;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#999}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;border-color:#f1acb1}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}#cancel-save,.item-controls a:hover,.js .sidebar-name{cursor:pointer}.menu li.deleting .menu-item-handle{background-image:none;background-color:#f66}.menu-item-handle .item-title{font-size:13px;font-weight:600;line-height:20px;display:block;margin-left:13em}.menu-item-handle .menu-item-title.no-title{color:#999}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-right:0}.menu-item-depth-1{margin-right:30px}.menu-item-depth-2{margin-right:60px}.menu-item-depth-3{margin-right:90px}.menu-item-depth-4{margin-right:120px}.menu-item-depth-5{margin-right:150px}.menu-item-depth-6{margin-right:180px}.menu-item-depth-7{margin-right:210px}.menu-item-depth-8{margin-right:240px}.menu-item-depth-9{margin-right:270px}.menu-item-depth-10{margin-right:300px}.menu-item-depth-11{margin-right:330px}.menu-item-depth-0 .menu-item-transport{margin-right:0}.menu-item-depth-1 .menu-item-transport{margin-right:-30px}.menu-item-depth-2 .menu-item-transport{margin-right:-60px}.menu-item-depth-3 .menu-item-transport{margin-right:-90px}.menu-item-depth-4 .menu-item-transport{margin-right:-120px}.menu-item-depth-5 .menu-item-transport{margin-right:-150px}.menu-item-depth-6 .menu-item-transport{margin-right:-180px}.menu-item-depth-7 .menu-item-transport{margin-right:-210px}.menu-item-depth-8 .menu-item-transport{margin-right:-240px}.menu-item-depth-9 .menu-item-transport{margin-right:-270px}.menu-item-depth-10 .menu-item-transport{margin-right:-300px}.menu-item-depth-11 .menu-item-transport{margin-right:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{display:inline-block;padding:12px 16px;color:#666;font-size:12px;line-height:18px}.item-controls{font-size:12px;position:absolute;left:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls .item-order{padding-left:10px}.nav-menus-php .item-edit{position:absolute;left:-20px;top:0;display:block;width:30px;height:40px;margin-left:0!important;text-indent:100%;outline:0;overflow:hidden;white-space:nowrap}.nav-menus-php .item-edit:before{margin-top:10px;margin-right:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.nav-menus-php .item-edit:focus{-webkit-box-shadow:none;box-shadow:none}.nav-menus-php .item-edit:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:402px;padding:10px 10px 10px 0;position:relative;z-index:10;border:1px solid #e5e5e5;border-top:none;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move a{display:none;margin:0 2px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em auto;text-align:center}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;border:1px solid #dfdfdf;color:#777;font-size:12px;font-style:italic}.hidden-field,.nav-menus-php .blank-slate .menu-settings{display:none}.link-to-original a{padding-right:4px;font-style:normal}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-left:10px;float:right}.description-thin{width:190px}.description-wide{width:390px}.menu-item-actions{padding-top:15px}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 6px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:left;float:left;line-height:23px;margin:4px 0 1px}.nav-menus-php .delete-action{float:right;margin-top:2px}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid #0073aa;padding:1px 2px;color:#0073aa;text-decoration:none}.nav-menus-php .submitbox .submitcancel:hover{background:#0073aa;color:#fff}.nav-menus-php .major-publishing-actions .form-invalid{padding-right:4px;margin-right:-4px}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}.menu-item-bar .menu-item-handle{width:90%}}@media screen and (max-width:782px){body.nav-menus-php{min-width:0!important}#nav-menus-frame{margin-right:0;float:none;width:100%}#wpbody-content #menu-settings-column{display:block;width:100%;float:none;margin-right:0}#side-sortables .add-menu-item-tabs{margin:15px 0 14px}ul.add-menu-item-tabs li.tabs{padding:13px 15px 14px}.nav-menus-php .item-controls .item-type{margin-top:2px}.nav-menus-php .customlinkdiv .howto input{width:65%}.nav-menus-php .quick-search{width:85%}#menu-management-liquid{margin-top:25px}.nav-menus-php .menu-name-label.howto span{margin-top:13px}.menu-name-label #menu-name{margin-top:4px}.nav-menus-php .major-publishing-actions .publishing-action{margin-top:6px}.nav-menus-php .delete-action{font-size:14px;line-height:50px;margin-top:12px}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide,.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings dl{padding-right:0}.menu-settings dd{float:none;width:100%;margin-bottom:15px}.menu-settings dt{float:none;width:auto;margin-right:0;margin-bottom:15px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}}.widget{margin:0 auto 10px;position:relative;box-sizing:border-box}.widget-top{font-size:13px;font-weight:600;background:#f7f7f7}.widget-top a.widget-action,.widget-top a.widget-action:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;text-decoration:none}.widget-title h3,.widget-title h4{margin:0;padding:15px;font-size:1em;line-height:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;user-select:none}.widgets-holder-wrap .widget-inside{border-top:none;padding:1px 15px 15px;line-height:16px}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#666}.deleting .widget-title,.deleting .widget-top a.widget-action:after{color:#a0a5aa}.widget.ui-draggable-dragging{min-width:100%}.widget.ui-sortable-helper{opacity:.8}.widget-placeholder{border:1px dashed #b4b9be;margin:0 auto 10px;height:45px;width:100%;box-sizing:border-box}#widgets-right .widget-placeholder{margin-top:0}#widgets-right .closed .widget-placeholder{height:0;border:0;margin-top:-10px}.sidebar-name{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sidebar-name-arrow{position:absolute;top:0;left:0;bottom:0}.sidebar-name h2,.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#777}#widgets-right .widgets-holder-wrap .description{padding-right:7px;padding-left:7px}div.widget-liquid-left{margin:0;width:38%;float:right}div.widget-liquid-right{float:left;width:58%}div#widgets-left{padding-top:12px}div#widgets-left .closed .sidebar-name,div#widgets-left .inactive-sidebar.closed .sidebar-name{margin-bottom:10px}div#widgets-left .sidebar-name h2,div#widgets-left .sidebar-name h3{padding:10px 0;margin:0 0 0 10px}#widgets-left .sidebar-name .sidebar-name-arrow:before{padding:9px}#widgets-left #available-widgets,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;-webkit-box-shadow:none;box-shadow:none}#available-widgets .widget-action{display:none}#available-widgets .widget{margin:0}#available-widgets .widget:nth-child(odd){clear:both}#available-widgets .widget .widget-description{display:block;padding:10px 15px;font-size:12px}#available-widgets #widget-list{position:relative}#widgets-left .inactive-sidebar{clear:both;width:100%;background:0 0;padding:0;margin:0 0 20px;border:none;-webkit-box-shadow:none;box-shadow:none}#widgets-left .inactive-sidebar.first{margin-top:40px}div#widgets-left .inactive-sidebar .widget.expanded{right:auto}.widget-title-action{float:left;position:relative}div#widgets-left .inactive-sidebar .widgets-sortables{min-height:42px;padding:0;background:0 0;margin:0;position:relative}div#widgets-right:after{content:".";display:block;height:0;clear:both;visibility:hidden}div#widgets-right .sidebars-column-1,div#widgets-right .sidebars-column-2{max-width:450px}div#widgets-right .widgets-holder-wrap{margin:10px 0 0}div#widgets-right .sidebar-description{min-height:20px;margin-top:-5px}div#widgets-right .sidebar-name h2,div#widgets-right .sidebar-name h3{padding:15px 7px}div#widgets-right .sidebar-name .sidebar-name-arrow:before{top:2px}div#widgets-right .widget-top{padding:0}div#widgets-right .widgets-sortables{padding:0 8px;margin-bottom:9px;position:relative;min-height:123px}div#widgets-right .closed .widgets-sortables{min-height:0;margin-bottom:0}.remove-inactive-widgets .spinner,.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#777;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.widgets_access #widgets-left .widget .widget-top{cursor:auto}.widgets_access #wpwrap .widget-control-edit,.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description,.widgets_access #wpwrap .widgets-holder-wrap.closed .widget{display:block}.widgets_access #widgets-left .widget .widget-top:hover,.widgets_access #widgets-right .widget .widget-top:hover{border-color:#ddd}#available-widgets .widget-control-edit .edit,#widgets-left .inactive-sidebar .widget-control-edit .add,#widgets-right .widget-control-edit .add{display:none}.editwidget .widget-inside,.widget-control-edit{display:block;padding:0 15px}.widget-control-edit{color:#666;background:#EEE;line-height:43px;border-right:1px solid #DDD}#widgets-left .widget-control-edit:hover,#widgets-right .widget-control-edit:hover{color:#fff;background:#444;border-right:0;outline:#444 solid 1px}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-control-actions{margin-top:20px}.js .closed br.clear,.js .widgets-holder-wrap.closed .remove-inactive-widgets,.js .widgets-holder-wrap.closed .sidebar-description,.js .widgets-holder-wrap.closed .widget{display:none}.js .widgets-holder-wrap.closed .widget.ui-sortable-helper{display:block}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widget-description,.widget-inside,.widgets_access #access-on,.widgets_access .sidebar-name-arrow,.widgets_access .widget-action,.widgets_access .widget-holder .description{display:none}.widget-inside{background:#fff}#removing-widget{display:none;font-weight:400;padding-right:15px;font-size:12px;line-height:1;color:#000}.js #removing-widget{color:#00a0d2}.widgets_access #widget-list,.widgets_access .widget-holder{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;opacity:.2;pointer-events:none}.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question{opacity:1;pointer-events:auto}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.widgets-chooser ul.widgets-chooser-sidebars{margin:0;list-style-type:none;max-height:300px;overflow:auto}.widgets-chooser{display:none}.widgets-chooser ul{border:1px solid #ccc}.widgets-chooser li{padding:10px 35px 10px 15px;border-bottom:1px solid #ccc;background:#fff;margin:0;cursor:pointer;outline:0;position:relative;-webkit-transition:background .2s ease-in-out;transition:background .2s ease-in-out}.widgets-chooser li:focus,.widgets-chooser li:hover{background:rgba(255,255,255,.7)}.widgets-chooser li:focus:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:400 26px/1 dashicons;color:#999;position:absolute;top:7px;right:5px}.widgets-chooser li:last-child{border:none}.widgets-chooser li.widgets-chooser-selected{background:#00a0d2;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:400 26px/1 dashicons;color:#fff;position:absolute;top:7px;right:5px}.locale-he-il em,.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{font-style:normal}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px;text-align:center}.widgets-chooser button{margin-left:5px}#available-widgets .widget .widget-top{cursor:pointer}#available-widgets .widget.ui-draggable-dragging .widget-top{cursor:move}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-left:none;padding-left:0}#widgets-left #available-widgets .widget-top,#widgets-left .inactive-sidebar .widgets-sortables,#widgets-left .sidebar-name{margin-left:0}div.widget-liquid-right{width:100%;float:none}div.widget{margin:0 auto 10px!important;max-width:480px}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@media screen and (max-width:320px){div.widget{max-width:320px}}@media only screen and (min-width:1250px){#widgets-left #available-widgets .widget{width:49%;float:right}.widget.ui-draggable-dragging{min-width:49%}#widgets-left #available-widgets .widget:nth-child(even){float:left}#widgets-right .sidebars-column-1,#widgets-right .sidebars-column-2{float:right;width:49%}#widgets-right .sidebars-column-1{margin-left:2%}#widgets-right.single-sidebar .sidebars-column-1,#widgets-right.single-sidebar .sidebars-column-2{float:none;width:100%;margin:0}}.site-icon-preview .favicon-preview{margin:5px 0 20px;overflow:hidden;position:relative;max-width:180px}.site-icon-preview .browser-title,.site-icon-preview .favicon{height:16px;right:88px;overflow:hidden;position:absolute;top:16px}.site-icon-preview .favicon{width:16px}.site-icon-preview .browser-title{right:109px}.site-icon-preview .app-icon-preview{background-color:#000;-webkit-border-radius:16px;border-radius:16px;height:64px;overflow:hidden;width:64px;margin-top:5px}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-right:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-left:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-right:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-right:0}}
\ No newline at end of file
index a8cd7eb19cbc37a8057fb2fb58aa287bfe26d6d1..a0189a4f61d031339ae98457fe0388dfb1fc85e9 100644 (file)
@@ -1,8 +1,8 @@
-#ajax-loading,#screen-meta .screen-reader-text,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading,.row-actions,.spinner{visibility:hidden}.color-palette,.form-table,.media-item .describe{border-collapse:collapse}#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-left:20px}#wpcontent,#wpfooter{margin-left:160px}.folded #wpcontent,.folded #wpfooter{margin-left:36px}#wpbody-content{padding-bottom:65px;float:left;width:100%;overflow:visible!important}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-2000px}.has-right-sidebar #post-body-content{margin-right:300px;float:none;width:auto}#col-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0}#col-left{width:35%}#col-right{float:right;clear:right;width:65%}.alignleft,.subsubsub{float:left}.col-wrap{padding:0 7px}.alignright{float:right}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}#adminmenu .wp-submenu,#dashboard_quick_press .draft-title,#templateside,#the-comment-list td.comment,.dashboard-comment-wrap,.pre,.widefat *{word-wrap:break-word}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{left:6px;top:-25px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;z-index:100000;line-height:normal;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:0}body,p{font-size:13px}.hidden,.js .closed .inside,.js .hide-if-js,.js .wp-core-ui .hide-if-js,.js.wp-core-ui .hide-if-js,.no-js .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js,.no-js.wp-core-ui .hide-if-no-js{display:none}#menu-management .menu-edit,#menu-settings-column .accordion-container,.comment-ays,.feature-filter,.imgedit-group,.manage-menus,.menu-item-handle,.popular-tags,.stuffbox,.widget-inside,.widget-top,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.comment-ays,.feature-filter,.imgedit-group,.popular-tags,.stuffbox,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{background:#fff}body,html{height:100%;margin:0;padding:0}html{background:#f1f1f1}body{color:#444;font-family:"Open Sans",sans-serif;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#0073aa;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#00a0d2}a:focus,a:focus .media-icon img{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 a:focus{outline:#5b9dd9 solid 1px}#adminmenu a:focus,.screen-reader-text:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:'';content:none}p{line-height:1.5;margin:1em 0}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{font-size:2em;margin:.67em 0}.wrap>h1,h2{color:#23282d;font-size:1.5em;margin:.83em 0;font-weight:400}h3{color:#23282d;font-size:1.3em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc}.side-info ul,ul.ul-square{list-style:square}ol.ol-decimal{list-style:decimal}ol.ol-decimal,ul.ul-disc,ul.ul-square{margin-left:1.8em}ol.ol-decimal>li,ul.ul-disc>li,ul.ul-square>li{margin:0 0 .5em}.ltr{direction:ltr}.code,code{font-family:Consolas,Monaco,monospace;direction:ltr;unicode-bidi:embed}code,kbd{padding:3px 5px 2px;margin:0 1px;background:#eaeaea;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;color:#666}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat a{text-decoration:none}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #e1e1e1}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #e1e1e1;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:left;line-height:1.3em;font-size:14px}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-top:-1px}.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 0 0 3px}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:10px}.update-php div.error,.update-php div.updated{margin-left:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 20px 0 2px}.subtitle,.wrap h1,.wrap h2{font-weight:400;margin:0}.wrap h1,.wrap h2{font-size:23px;font-weight:400;padding:9px 15px 4px 0;line-height:29px}.subtitle{color:#777;font-size:14px;padding-left:25px}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-left:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:none;-webkit-border-radius:2px;border-radius:2px;background:#e0e0e0;text-shadow:none;font-weight:600;font-size:13px}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{background:#00a0d2;color:#fff}.wrap h1.long-header{padding-right:0}.wp-dialog{background-color:#fff}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f9f9f9}.bar{background-color:#e8e8e8;border-right-color:#99d}.media-upload-form label.form-help,td.help{color:#9a9a9a}.highlight{background-color:#e4f2fd;color:#000}.wp-ui-primary{color:#fff;background-color:#32373c}.wp-ui-text-primary{color:#32373c}.wp-ui-highlight{color:#fff;background-color:#1e8cbe}.wp-ui-text-highlight{color:#1e8cbe}.wp-ui-notification{color:#fff;background-color:#d54e21}.wp-ui-text-notification{color:#d54e21}.wp-ui-text-icon{color:#999}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}#nav-menu-footer,#nav-menu-header,#your-profile #rich_editing,.checkbox,.control-section .accordion-section-title,.menu-item-handle,.postbox .hndle,.side-info,.sidebar-name,.stuffbox .hndle,.widefat tfoot td,.widefat tfoot th,.widefat thead td,.widefat thead th,.widget .widget-top{line-height:1.4em}.menu-item-handle,.widget .widget-top{background:#fafafa;color:#23282d}.postbox .hndle,.stuffbox .hndle{border-bottom:1px solid #eee;user-select:none}.accordion-section-title,.postbox .hndle,.stuffbox .hndle{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.quicktags,.search{background-color:#ccc;color:#000;font-size:12px}.icon32{display:none}#bulk-titles div a:before,.notice-dismiss:before,.tagchecklist span a:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#b4b9be;content:'\f153';display:block;font:400 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.welcome-panel .welcome-panel-close:before{margin:0}#bulk-titles div a:before,.tagchecklist span a:before{margin:1px 0}#bulk-titles div a:hover:before,.tagchecklist span a:hover:before,.welcome-panel .welcome-panel-close:focus:before,.welcome-panel .welcome-panel-close:hover:before{color:#c00}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap}#namediv td.first,#plugin-information-title,.no-break,.star-rating,.ui-autocomplete li{white-space:nowrap}.howto{color:#666;font-style:italic;display:block}p.install-help{margin:8px 0;font-style:italic}hr{border:0;border-top:1px solid #ddd;border-bottom:1px solid #fafafa}#all-plugins-table .plugins a.delete,#media-items a.delete,#media-items a.delete-permanently,#nav-menu-footer .menu-delete,#search-plugins-table .plugins a.delete,.plugins a.delete,.row-actions span.delete a,.row-actions span.spam a,.row-actions span.trash a,.submitbox .submitdelete{color:#a00}#all-plugins-table .plugins a.delete:hover,#media-items a.delete-permanently:hover,#media-items a.delete:hover,#nav-menu-footer .menu-delete:hover,#search-plugins-table .plugins a.delete:hover,.file-error,.plugins a.delete:hover,.row-actions .delete a:hover,.row-actions .spam a:hover,.row-actions .trash a:hover,.submitbox .submitdelete:hover,.widget-control-remove:hover,abbr.required{color:red;text-decoration:none;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #ddd;background:#f5f5f5}#delete-action{line-height:28px;vertical-align:middle;text-align:left;float:left}#publishing-action{text-align:right;float:right;line-height:23px}#publishing-action .spinner,#save-post{float:left}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}#minor-publishing-actions{padding:10px 10px 0;text-align:right}.preview{float:right}#sticky-span{margin-left:18px}.side-info{margin:0;padding:4px;font-size:11px}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom:1px solid #dadada}.side-info ul{margin:0;padding-left:18px;color:#666}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:right}.wp-filter{display:inline-block;position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;background:#fff;color:#555;font-size:13px}.wp-filter a{text-decoration:none}.filter-count{display:inline-block;vertical-align:middle;min-width:4em}.filter-count .count,.title-count{display:inline-block;position:relative;top:-1px;padding:4px 10px;-webkit-border-radius:30px;border-radius:30px;background:#777;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-left:5px;margin-right:20px}.filter-items{float:left}.filter-links,.filter-links li{display:inline-block;margin:0}.filter-links li>a{display:inline-block;margin:0 10px;padding:15px 0;border-bottom:4px solid #fff;color:#666;cursor:pointer}.filter-links .current{-webkit-box-shadow:none;box-shadow:none;border-bottom:4px solid #666;color:#23282d}.filter-links li>a:focus,.filter-links li>a:hover,.show-filters .filter-links a.current:focus,.show-filters .filter-links a.current:hover{color:#00a0d2}.wp-filter .search-form{float:right;margin:10px 0}.wp-filter .search-form input[type=search]{margin:0;padding:3px 5px;width:280px;max-width:100%;font-size:16px;font-weight:300;line-height:1.5}.wp-filter .search-form select{margin:0;height:32px;vertical-align:top}.wp-filter .search-form.search-plugins{display:inline-block}.wp-filter .drawer-toggle{display:inline-block;margin:0 10px;padding:4px 6px;color:#666;cursor:pointer}.wp-filter .drawer-toggle:before{display:inline-block;vertical-align:top;content:"\f111";margin:0 5px 0 0;width:16px;height:16px;color:#777;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;font-family:dashicons;font-size:16px;line-height:1;text-align:center;text-decoration:inherit;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased}.wp-filter .drawer-toggle:hover,.wp-filter .drawer-toggle:hover:before{color:#00a0d2}.show-filters .wp-filter .drawer-toggle:before,.wp-filter .drawer-toggle.current:before{color:#fff}.filter-drawer{display:none;margin:0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa}.show-filters .filter-drawer{display:block;overflow:hidden;width:100%}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2ea2cc}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .drawer-toggle{-webkit-border-radius:2px;border-radius:2px;border:none;background:#777;color:#fff}.filter-group{box-sizing:border-box;float:left;margin:0 1% 0 0;padding:10px;width:24%;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group,.filtered-by .tag{background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group,html.wp-toolbar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.filter-group h4{position:relative;margin:0}.filter-drawer ol{margin:20px 0 0;list-style-type:none;font-size:12px}.filter-drawer li{display:inline-block;vertical-align:top;margin:5px 0;padding-right:25px;width:160px;list-style-type:none}.filter-drawer .buttons{margin-bottom:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.spinner,input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-filter .button.clear-filters{display:none;margin-left:10px}.filtered-by{display:none;margin:0}.filtered-by>span{font-weight:600}.filtered-by a{margin-left:10px}.filtered-by .tags{display:inline}.filtered-by .tag{margin:0 5px;padding:4px 8px;box-shadow:0 1px 1px rgba(0,0,0,.04);font-size:11px}.filters-applied .filter-drawer .buttons,.filters-applied .filter-drawer br,.filters-applied .filter-group{display:none!important}.filters-applied .filtered-by{display:block}.filters-applied .filter-drawer{padding:20px}.error .content-filterable,.loading-content .content-filterable,.show-filters .content-filterable,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #eee}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.notice,div.error,div.updated{background:#fff;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 15px 2px;padding:1px 12px}.notice-dismiss:focus,.widget-top a.widget-action:focus:after{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.form-table td .notice p,.notice p,div.error p,div.updated p{margin:.5em 0;padding:2px}.wp-core-ui .notice.is-dismissible{padding-right:38px;position:relative}.notice-dismiss{position:absolute;top:0;right:1px;border:none;margin:0;padding:9px;background:0 0;color:#b4b9be;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#c00}.notice-dismiss:focus{outline:0;box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .notice-dismiss:focus{outline:#5b9dd9 solid 1px}.notice-success,div.updated{border-color:#7ad03a}.notice-warning{border-color:#ffba00}.notice-error,div.error{border-color:#dd3d36}.notice-info{border-color:#00a0d2}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}#update-nag,.update-nag{display:inline-block;line-height:19px;padding:11px 15px;font-size:14px;text-align:left;margin:25px 20px 0 2px;background-color:#fff;border-left:4px solid #ffba00;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.update-message{color:#000}.update-php .spinner{float:none;margin:-4px 0}#ajax-response.alignleft{margin-left:2em}#adminmenu a,#catlist a,#taglist a{text-decoration:none}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-left:0!important}#screen-meta-links{margin:0 20px 0 0}#screen-meta{display:none;margin:0 20px -1px 0;position:relative;background-color:#fff;border:1px solid #ddd;border-top:none;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.025);box-shadow:0 1px 0 rgba(0,0,0,.025)}#contextual-help-link-wrap,#screen-options-link-wrap{float:right;height:28px;margin:0 0 0 6px;border:1px solid #ddd;border-top:none;background:#fff;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-shadow:0 1px 1px -1px rgba(0,0,0,.1)}#screen-meta-links .screen-meta-toggle{position:relative;top:0}#screen-meta-links .show-settings{border:0;background:0 0;-webkit-border-radius:0;border-radius:0;color:#777;line-height:1.7;padding:3px 6px 3px 16px}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#32373c}#screen-meta-links .show-settings:after{right:0;content:'\f140';font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 5px 0 0;bottom:2px;position:relative;vertical-align:bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#b4b9be}.hndle a,.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}#screen-meta-links .screen-meta-active:after{content:'\f142'}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#contextual-help-wrap h5,#screen-options-wrap h5{margin:8px 0;font-size:13px}.metabox-prefs label{display:inline-block;padding-right:15px;line-height:30px}.metabox-prefs label input[type=checkbox]{margin-top:-4px;margin-right:6px}.metabox-prefs label input{margin:0 5px 0 2px}.metabox-prefs .columns-prefs label input{margin:0 2px}.metabox-prefs label a{display:none}.metabox-prefs .screen-options{padding-top:10px}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-right:15px}.metabox-prefs .screen-options label{line-height:28px;padding-right:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border:1px solid #e1e1e1;border-top:none;border-bottom:none;background:#f6fbfd}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}.contextual-help-tabs{float:left;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:0 0 0 2px;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:18px;text-decoration:none;border:1px solid transparent;border-right:none;border-left:none}.contextual-help-tabs a:hover{color:#32373c}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-left:2px solid #00a0d2;background:#f6fbfd;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02);box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02)}.contextual-help-tabs .active a{border-color:#e1e1e1;color:#32373c}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 22px 12px 0;line-height:1.6em}.help-tab-content.active{display:block}.nav-tab,.spinner{display:inline-block}.help-tab-content ul li{list-style-type:disc;margin-left:18px}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto}html.wp-toolbar{padding-top:32px;box-sizing:border-box}.widefat td,.widefat th{color:#555}.widefat ol,.widefat p,.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th,.widefat ul{color:#32373c}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:left}.postbox-container .meta-box-sortables{box-sizing:border-box}.postbox-container .meta-box-sortables,input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .empty-container{border:3px dashed #b4b9be;height:250px}.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container,.metabox-holder.columns-1 .postbox-container .empty-container{border:0;height:0;min-height:0}#post-body-content{width:100%;min-width:463px;float:left}#post-body.columns-2 #postbox-container-1{float:right;margin-right:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content .metabox-holder .postbox-container .empty-container{border:0;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.js .accordion-section-title,.js .postbox .handlediv{cursor:pointer}.hndle a{font-size:11px}.postbox .handlediv{float:right;width:27px;height:30px}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox .inside,.stuffbox .inside{padding:0 12px 12px;line-height:1.4em;font-size:13px}.postbox .inside{margin:11px 0;position:relative}.postbox .inside>p:last-child,.rss-widget ul li:last-child{margin-bottom:1px!important}.postbox.closed h3{border:none;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{-webkit-box-shadow:none;box-shadow:none}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 5px}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,#dashboard_right_now .versions .b,#ed_reply_toolbar #ed_reply_strong,#pass-strength-result.short,#pass-strength-result.strong,#post-status-display,#post-visibility-display,.feature-filter .feature-name,.item-controls .item-order a,.media-item .percent,.plugins .name{font-weight:600}#wpfooter{position:absolute;bottom:0;left:0;right:0;padding:10px 20px;color:#777}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}#wpfooter a{text-decoration:none}#wpfooter a:hover{text-decoration:underline}#templateside ul li a,.nav-tab{text-decoration:none}.nav-tab{border:1px solid #ccc;border-bottom:none;background:#e4e4e4;color:#555;font-size:12px;line-height:16px;padding:4px 14px 6px;margin:-4px 4px -1px 0}.nav-tab:hover{background-color:#fff;color:#464646}.nav-tab-active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}h1.nav-tab-wrapper,h2.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;padding-bottom:0;padding-left:10px}h1 .nav-tab,h2 .nav-tab{padding:6px 10px;font-weight:700;font-size:15px;line-height:24px}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;float:right;vertical-align:middle;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.spinner.is-active{visibility:visible}#template div{margin-right:190px}.metabox-holder h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:left}.attention,.error-message{color:red;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}#howto,.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #e7e7e7;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px}.post-categories,.post-categories li{display:inline}.importers td{padding-right:14px}.checkbox,.post-categories,.zerosize,fieldset{margin:0;padding:0}.importers{font-size:16px;width:auto}#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{font-size:14px;line-height:1.4;font-weight:600;color:#222;margin:2px 0 0 9px}#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;border:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:none}fieldset{border:0}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) bottom left repeat-x}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) top left repeat-x;height:17px;float:left}.star-rating .star{display:inline-block;width:20px;height:20px;-webkit-font-smoothing:antialiased;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;text-align:center;color:#ffb900}.star-rating .star-full:before{content:'\f155'}.star-rating .star-half:before{content:'\f459'}.rtl .star-rating .star-half{-webkit-transform:rotateY(180deg);-ms-transform:rotateY(180deg);transform:rotateY(180deg)}.star-rating .star-empty:before{content:'\f154'}div.action-links{font-weight:400}#plugin-information{background:#fff;position:fixed;top:0;right:0;bottom:0;left:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 20px;background:#f5f5f5;font-size:22px;font-weight:600;line-height:56px;position:relative;top:0;right:0;left:0;height:56px;overflow:hidden;text-overflow:ellipsis}#plugin-information-title.with-banner{margin-right:0;height:250px;bottom:250px;-webkit-background-size:cover;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:700;padding:0;margin:0;max-width:680px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta-box-sortables select,p.submit{max-width:100%}#plugin-information-title.with-banner h2{font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:50px;padding:0 15px;margin:174px 0 0 10px;color:#fff;background:rgba(30,30,30,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);-webkit-box-shadow:0 0 30px rgba(255,255,255,.1);box-shadow:0 0 30px rgba(255,255,255,.1);-webkit-border-radius:8px;border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{display:block;float:right;top:0;height:250px;width:772px;margin:0 -20px;background:0 0;-webkit-box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1)}#plugin-information-tabs{padding:0 16px;position:relative;right:0;left:0;height:36px;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;float:left;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;-webkit-transition:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff;padding-top:8px;color:#32373c}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;right:0;left:0;min-height:100%;min-height:-webkit-calc(100% - 152px);min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:-webkit-calc(100% - 346px);min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;right:250px;bottom:0;left:0;margin-right:250px;padding:10px 26px 99999px;margin-bottom:-99930px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{display:block;float:right;position:relative;top:0;right:0;padding:16px 16px 99999px;margin-bottom:-99930px;width:217px;border-left:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#464646}#plugin-information .fyi h3{font-weight:700;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:left;margin-right:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#ececec;float:left}#plugin-information .counter-bar{height:17px;background-color:#ffc733;float:left}#plugin-information .counter-count{margin-left:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-right:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-right:4px}#plugin-information-footer{padding:15px 16px;position:absolute;right:0;bottom:0;left:0;height:28px;border-top:1px solid #ddd;background:#f3f3f3}#plugin-information .section{direction:ltr}#plugin-information .section ol,#plugin-information .section ul{list-style-type:disc;margin-left:24px}#plugin-information .section,#plugin-information .section p{font-size:14px;line-height:1.7}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;margin-top:16px;max-width:100%;width:auto;height:auto;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px}#plugin-information pre{padding:7px;overflow:auto;border:1px solid #ccc}#plugin-information .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #e6e6e6}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#postcustomstuff p.submit,#templateside h3,.alignleft h3{margin:0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px;bottom:100px}#plugin-information-title.with-banner h2{margin-top:30px;font-size:20px;line-height:40px;max-width:85%}#plugin-information-title.with-banner div.vignette{height:100px;bottom:100px;width:800%}#plugin-information-tabs{overflow:hidden;padding:0;height:auto}#plugin-information-tabs a.current{margin-bottom:0;border-bottom:none}#plugin-information .fyi{float:none;border:1px solid #ddd;position:static;width:auto;margin:26px 26px 0;padding-bottom:0}#section-holder{position:static;margin:0;padding-bottom:70px}#plugin-information .fyi h3,#plugin-information .fyi small{display:none}#plugin-information-footer{padding:12px 16px 0;height:46px}}body.import-php #TB_window,body.index-php #TB_window,body.plugin-install-php #TB_window,body.plugins-php #TB_window,body.update-core-php #TB_window{background:url(../images/spinner.gif) center no-repeat #fcfcfc}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){body.import-php #TB_window,body.index-php #TB_window,body.plugin-install-php #TB_window,body.plugins-php #TB_window,body.update-core-php #TB_window{background:url(../images/spinner-2x.gif) center no-repeat #fcfcfc;-webkit-background-size:20px 20px;background-size:20px 20px}}body.import-php #TB_title,body.index-php #TB_title,body.plugin-install-php #TB_title,body.plugins-php #TB_title,body.update-core-php #TB_title{float:left;height:1px}body.import-php #TB_ajaxWindowTitle,body.index-php #TB_ajaxWindowTitle,body.plugin-install-php #TB_ajaxWindowTitle,body.plugins-php #TB_ajaxWindowTitle,body.update-core-php #TB_ajaxWindowTitle{display:none}body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{left:auto;right:-30px;color:#eee;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}body.import-php #TB_closeWindowButton:focus,body.import-php #TB_closeWindowButton:focus .tb-close-icon,body.import-php .tb-close-icon:focus,body.import-php .tb-close-icon:hover,body.index-php #TB_closeWindowButton:focus,body.index-php #TB_closeWindowButton:focus .tb-close-icon,body.index-php .tb-close-icon:focus,body.index-php .tb-close-icon:hover,body.plugin-install-php #TB_closeWindowButton:focus,body.plugin-install-php #TB_closeWindowButton:focus .tb-close-icon,body.plugin-install-php .tb-close-icon:focus,body.plugin-install-php .tb-close-icon:hover,body.plugins-php #TB_closeWindowButton:focus,body.plugins-php #TB_closeWindowButton:focus .tb-close-icon,body.plugins-php .tb-close-icon:focus,body.plugins-php .tb-close-icon:hover,body.update-core-php #TB_closeWindowButton:focus,body.update-core-php #TB_closeWindowButton:focus .tb-close-icon,body.update-core-php .tb-close-icon:focus,body.update-core-php .tb-close-icon:hover{color:#00a0d2;outline:0;-webkit-box-shadow:none;box-shadow:none}body.import-php .tb-close-icon:before,body.index-php .tb-close-icon:before,body.plugin-install-php .tb-close-icon:before,body.plugins-php .tb-close-icon:before,body.update-core-php .tb-close-icon:before{content:"\f335";font-size:32px}@media screen and (max-width:830px){body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{right:0;top:-30px}}img{border:none}#wphead{border-bottom:1px solid #dfdfdf}#wphead h1 a{color:#464646}.js .meta-box-sortables .postbox:hover .handlediv{margin-right:0!important}.js .meta-box-sortables .postbox .handlediv:before,.js .sidebar-name .sidebar-name-arrow:before{right:12px;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:8px 10px;top:0;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;content:'\f142'}.js #widgets-left .sidebar-name .sidebar-name-arrow{display:none}.js #widgets-left .sidebar-name:hover .sidebar-name-arrow,.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow{display:block}.js .meta-box-sortables .postbox.closed .handlediv:before,.js .widgets-holder-wrap.closed .sidebar-name-arrow:before{content:'\f140'}.error a{text-decoration:underline}.updated a{text-decoration:none;padding-bottom:2px}#photo-add-url-div input[type=text]{width:300px}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;width:97%;background:#f9f9f9;outline:0}#docs-list,#template textarea{direction:ltr}#template p{width:97%}#templateside{float:right;width:190px}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em 0;padding:0}#templateside li{margin:4px 0}#templateside li a,.theme-editor-php .highlight{display:block;padding:3px 3px 3px 12px;text-decoration:none}.theme-editor-php .highlight{margin:-3px 3px -3px -12px}#templateside .highlight{border:none;font-weight:700}.nonessential{color:#666;font-size:11px;font-style:italic;padding-left:12px}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:baseline;font-weight:600}.fileedit-sub{padding:10px 0 8px;line-height:180%}.accordion-section-title:after,.control-section .accordion-section-title:after,.nav-menus-php .item-edit:before,.widget-top a.widget-action:after{right:0;content:'\f140';border:none;background:0 0;font:400 20px/1 dashicons;speak:none;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.my-sites li a,form p.submit a.cancel:hover{text-decoration:none}.accordion-section-title:after,.handlediv,.item-edit,.sidebar-name-arrow,.widget-action{color:#a0a5aa}.accordion-section-title:hover:after,.handlediv:hover,.item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.widget-action:hover{color:#777}.widget-top a.widget-action:after{padding:12px 12px 11px}.widget-top a.widget-action:focus:after{box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.nav-menus-php .item-edit:before{line-height:2.1}.accordion-section-title:after,.control-section .accordion-section-title:after{float:right;right:20px;top:-2px}#customize-info.open .accordion-section-title:after,.control-section.open .accordion-section-title:after,.nav-menus-php .menu-item-edit-active .item-edit:before,.widget.open .widget-top a.widget-action:after{content:'\f142'}/*!
+.filter-group,.wp-filter{-moz-box-sizing:border-box}#docs-list,#plugin-information .section,#template textarea,.code,.ltr,code,input[type=email],input[type=url]{direction:ltr}#dashboard_quick_press textarea,textarea{resize:vertical}table.diff,table.fixed{table-layout:fixed}.color-palette,.form-table,.media-item .describe{border-collapse:collapse}#wpwrap{height:auto;min-height:100%;width:100%;position:relative;-webkit-font-smoothing:subpixel-antialiased}#wpcontent{height:100%;padding-left:20px}#wpcontent,#wpfooter{margin-left:160px}.folded #wpcontent,.folded #wpfooter{margin-left:36px}#wpbody-content{padding-bottom:65px;float:left;width:100%;overflow:visible!important}.inner-sidebar{float:right;clear:right;display:none;width:281px;position:relative}.columns-2 .inner-sidebar{margin-right:auto;width:286px;display:block}.columns-2 .inner-sidebar #side-sortables,.inner-sidebar #side-sortables{min-height:300px;width:280px;padding:0}.has-right-sidebar .inner-sidebar{display:block}.has-right-sidebar #post-body{float:left;clear:left;width:100%;margin-right:-2000px}.has-right-sidebar #post-body-content{margin-right:300px;float:none;width:auto}#col-container,#col-left,#col-right{overflow:hidden;padding:0;margin:0}#col-left{width:35%}#col-right{float:right;clear:right;width:65%}#publishing-action .spinner,#save-post,.alignleft,.subsubsub{float:left}.col-wrap{padding:0 7px}.alignright{float:right}.textleft{text-align:left}.textright{text-align:right}.clear{clear:both}.screen-reader-text,.screen-reader-text span,.ui-helper-hidden-accessible{position:absolute;margin:-1px;padding:0;height:1px;width:1px;overflow:hidden;clip:rect(0 0 0 0);border:0;word-wrap:normal!important}h2,h3,p{margin:1em 0}#adminmenu .wp-submenu,#dashboard_quick_press .draft-title,#templateside,#the-comment-list td.comment,.dashboard-comment-wrap,.misc-pub-filename,.pre,.widefat *{word-wrap:break-word}.screen-reader-shortcut{position:absolute;top:-1000em}.screen-reader-shortcut:focus{left:6px;top:-25px;height:auto;width:auto;display:block;font-size:14px;font-weight:600;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;z-index:100000;line-height:normal;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6);text-decoration:none;outline:0}.filter-group,.wp-filter{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}.hidden,.js .closed .inside,.js .hide-if-js,.js .wp-core-ui .hide-if-js,.js.wp-core-ui .hide-if-js,.no-js .hide-if-no-js,.no-js .wp-core-ui .hide-if-no-js,.no-js.wp-core-ui .hide-if-no-js{display:none}#menu-management .menu-edit,#menu-settings-column .accordion-container,.comment-ays,.feature-filter,.imgedit-group,.manage-menus,.menu-item-handle,.popular-tags,.stuffbox,.widget-inside,.widget-top,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.comment-ays,.feature-filter,.imgedit-group,.popular-tags,.stuffbox,.widgets-holder-wrap,.wp-editor-container,p.popular-tags,table.widefat{background:#fff}body,html{height:100%;margin:0;padding:0}html{background:#f1f1f1}body{color:#444;font-family:"Open Sans",sans-serif;font-size:13px;line-height:1.4em;min-width:600px}body.iframe{min-width:0;padding-top:1px}body.modal-open{overflow:hidden}body.mobile.modal-open #wpwrap{overflow:hidden;position:fixed;height:100%}iframe,img{border:0}td{font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit}a{color:#0073aa;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}a,div{outline:0}a:active,a:hover{color:#00a0d2}a:focus,a:focus .media-icon img{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}h1,h2,h3{color:#23282d}.ie8 a:focus{outline:#5b9dd9 solid 1px}#adminmenu a:focus,.screen-reader-text:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}p{font-size:13px;line-height:1.5}blockquote{margin:1em}dd,li{margin-bottom:6px}h1,h2,h3,h4,h5,h6{display:block;font-weight:600}h1{font-size:2em;margin:.67em 0}h2,h3{font-size:1.3em}.update-core-php h2,.update-php h2,h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}ol,ul{padding:0}ul{list-style:none}ol{list-style-type:decimal;margin-left:2em}ul.ul-disc{list-style:disc}ul.ul-square{list-style:square}ol.ol-decimal{list-style:decimal}ol.ol-decimal,ul.ul-disc,ul.ul-square{margin-left:1.8em}ol.ol-decimal>li,ul.ul-disc>li,ul.ul-square>li{margin:0 0 .5em}.code,code{font-family:Consolas,Monaco,monospace;unicode-bidi:embed}code,kbd{padding:3px 5px 2px;margin:0 1px;background:#eaeaea;background:rgba(0,0,0,.07);font-size:13px}.subsubsub{list-style:none;margin:8px 0 0;padding:0;font-size:13px;color:#666}.subsubsub a{line-height:2;padding:.2em;text-decoration:none}.subsubsub a .count,.subsubsub a.current .count{color:#999;font-weight:400}.subsubsub a.current{font-weight:600;border:none}.subsubsub li{display:inline-block;margin:0;padding:0;white-space:nowrap}.widefat{border-spacing:0;width:100%;clear:both;margin:0}.widefat a{text-decoration:none}.widefat td,.widefat th{padding:8px 10px}.widefat thead td,.widefat thead th{border-bottom:1px solid #e1e1e1}.widefat tfoot td,.widefat tfoot th{border-top:1px solid #e1e1e1;border-bottom:none}.widefat .no-items td{border-bottom-width:0}.widefat td{vertical-align:top}.widefat td,.widefat td ol,.widefat td p,.widefat td ul{font-size:13px;line-height:1.5em}.widefat tfoot td,.widefat th,.widefat thead td{text-align:left;line-height:1.3em;font-size:14px}.widefat tfoot td input,.widefat th input,.widefat thead td input{margin:0 0 0 8px;padding:0;vertical-align:text-top}.widefat .check-column{width:2.2em;padding:6px 0 25px;vertical-align:top}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-top:-1px}.widefat tbody th.check-column,.widefat tfoot td.check-column,.widefat thead td.check-column{padding:11px 0 0 3px}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:4px;vertical-align:middle}.update-php div.error,.update-php div.updated{margin-left:0}.no-js .widefat tfoot .check-column input,.no-js .widefat thead .check-column input{display:none}.column-comments,.column-links,.column-posts,.widefat .num{text-align:center}.widefat th#comments{vertical-align:middle}.wrap{margin:10px 20px 0 2px}.postbox .inside h2,.wrap [class$=icon32]+h2,.wrap h1,.wrap>h2:first-child{font-size:23px;font-weight:400;margin:0;padding:9px 15px 4px 0;line-height:29px}.subtitle{margin:0;padding-left:25px;color:#777;font-size:14px;font-weight:400}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{margin-left:4px;padding:4px 8px;position:relative;top:-3px;text-decoration:none;border:none;-webkit-border-radius:2px;border-radius:2px;background:#e0e0e0;text-shadow:none;font-weight:600;font-size:13px}.wrap .add-new-h2:hover,.wrap .page-title-action:hover{background:#00a0d2;color:#fff}.wrap h1.long-header{padding-right:0}.wp-dialog{background-color:#fff}.sorthelper{background-color:#ccf3fa}.ac_match,.subsubsub a.current{color:#000}.alternate,.striped>tbody>:nth-child(odd),ul.striped>:nth-child(odd){background-color:#f9f9f9}.bar{background-color:#e8e8e8;border-right-color:#99d}.media-upload-form label.form-help,td.help{color:#9a9a9a}.highlight{background-color:#e4f2fd;color:#000}.wp-ui-primary{color:#fff;background-color:#32373c}.wp-ui-text-primary{color:#32373c}.wp-ui-highlight{color:#fff;background-color:#1e8cbe}.wp-ui-text-highlight{color:#1e8cbe}.wp-ui-notification{color:#fff;background-color:#d54e21}.wp-ui-text-notification{color:#d54e21}.wp-ui-text-icon{color:#999}img.emoji{display:inline!important;border:none!important;height:1em!important;width:1em!important;margin:0 .07em!important;vertical-align:-.1em!important;background:0 0!important;padding:0!important;-webkit-box-shadow:none!important;box-shadow:none!important}#nav-menu-footer,#nav-menu-header,#your-profile #rich_editing,.checkbox,.control-section .accordion-section-title,.menu-item-handle,.postbox .hndle,.side-info,.sidebar-name,.stuffbox .hndle,.widefat tfoot td,.widefat tfoot th,.widefat thead td,.widefat thead th,.widget .widget-top{line-height:1.4em}.menu-item-handle,.widget .widget-top{background:#fafafa;color:#23282d}.postbox .hndle,.stuffbox .hndle{border-bottom:1px solid #eee;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#adminmenu *,.accordion-section-title{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.quicktags,.search{background-color:#ccc;color:#000;font-size:12px}.icon32{display:none}#bulk-titles div a:before,.notice-dismiss:before,.tagchecklist span a:before,.welcome-panel .welcome-panel-close:before{background:0 0;color:#b4b9be;content:"\f153";display:block;font:400 16px/20px dashicons;speak:none;height:20px;text-align:center;width:20px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.welcome-panel .welcome-panel-close:before{margin:0}#bulk-titles div a:before,.tagchecklist span a:before{margin:1px 0}#bulk-titles div a:hover:before,.tagchecklist span a:hover:before,.welcome-panel .welcome-panel-close:focus:before,.welcome-panel .welcome-panel-close:hover:before{color:#c00}.key-labels label{line-height:24px}b,strong{font-weight:600}.pre{white-space:pre-wrap}#namediv td.first,#plugin-information-title,.nav-tab,.no-break,.star-rating,.ui-autocomplete li{white-space:nowrap}.howto{color:#666;font-style:italic;display:block}p.install-help{margin:8px 0;font-style:italic}hr{border:0;border-top:1px solid #ddd;border-bottom:1px solid #fafafa}#all-plugins-table .plugins a.delete,#media-items a.delete,#media-items a.delete-permanently,#nav-menu-footer .menu-delete,#search-plugins-table .plugins a.delete,.plugins a.delete,.row-actions span.delete a,.row-actions span.spam a,.row-actions span.trash a,.submitbox .submitdelete{color:#a00}#all-plugins-table .plugins a.delete:hover,#media-items a.delete-permanently:hover,#media-items a.delete:hover,#nav-menu-footer .menu-delete:hover,#search-plugins-table .plugins a.delete:hover,.file-error,.plugins a.delete:hover,.row-actions .delete a:hover,.row-actions .spam a:hover,.row-actions .trash a:hover,.submitbox .submitdelete:hover,.widget-control-remove:hover,abbr.required{color:red;text-decoration:none;border:none}#major-publishing-actions{padding:10px;clear:both;border-top:1px solid #ddd;background:#f5f5f5}#delete-action{line-height:28px;vertical-align:middle;text-align:left;float:left}#publishing-action{text-align:right;float:right;line-height:23px}#misc-publishing-actions{padding:6px 0 0}.misc-pub-section{padding:6px 10px 8px}#minor-publishing-actions{padding:10px 10px 0;text-align:right}.preview{float:right}#sticky-span{margin-left:18px}.side-info{margin:0;padding:4px;font-size:11px}.side-info h5{padding-bottom:7px;font-size:14px;margin:12px 2px 5px;border-bottom:1px solid #dadada}.side-info ul{margin:0;padding-left:18px;list-style:square;color:#666}.approve,.unapproved .unapprove{display:none}.spam .approve,.trash .approve,.unapproved .approve{display:inline}td.action-links,th.action-links{text-align:right}.wp-filter{display:inline-block;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;margin:12px 0 25px;padding:0 10px;width:100%;box-shadow:0 1px 1px rgba(0,0,0,.04);border:1px solid #e5e5e5;background:#fff;color:#555;font-size:13px}.filter-group,html.wp-toolbar{-webkit-box-sizing:border-box}.wp-filter a{text-decoration:none}.filter-count{display:inline-block;vertical-align:middle;min-width:4em}.filter-count .count,.title-count{display:inline-block;position:relative;top:-1px;padding:4px 10px;-webkit-border-radius:30px;border-radius:30px;background:#777;color:#fff;font-size:14px;font-weight:600}.title-count{display:inline;top:-3px;margin-left:5px;margin-right:20px}.filter-items{float:left}.filter-links,.filter-links li{display:inline-block;margin:0}.filter-links li>a{display:inline-block;margin:0 10px;padding:15px 0;border-bottom:4px solid #fff;color:#666;cursor:pointer}.filter-links .current{-webkit-box-shadow:none;box-shadow:none;border-bottom:4px solid #666;color:#23282d}.filter-links li>a:focus,.filter-links li>a:hover,.show-filters .filter-links a.current:focus,.show-filters .filter-links a.current:hover{color:#00a0d2}.wp-filter .search-form{float:right;margin:10px 0}.wp-filter .search-form input[type=search]{margin:0;padding:3px 5px;width:280px;max-width:100%;font-size:16px;font-weight:300;line-height:1.5}.wp-filter .search-form select{margin:0;height:32px;vertical-align:top}.wp-filter .search-form.search-plugins{display:inline-block}.wp-filter .drawer-toggle{display:inline-block;margin:0 10px;padding:4px 6px;color:#666;cursor:pointer}.wp-filter .drawer-toggle:before{display:inline-block;vertical-align:top;content:"\f111";margin:0 5px 0 0;width:16px;height:16px;color:#777;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;font-family:dashicons;font-size:16px;line-height:1;text-align:center;text-decoration:inherit;font-weight:400;font-style:normal;-webkit-font-smoothing:antialiased}.filter-drawer,.wp-filter .favorites-form{margin:0 -20px;padding:20px;border-top:1px solid #eee;background:#fafafa}.wp-filter .drawer-toggle:hover,.wp-filter .drawer-toggle:hover:before{color:#00a0d2}.wp-filter .drawer-toggle.current:before{color:#fff}.wp-filter .favorites-form{display:none;overflow:hidden;width:100%}.show-favorites-form .wp-filter .favorites-form{display:block}.filter-drawer{display:none}.show-filters .filter-drawer{display:block;overflow:hidden;width:100%}.show-filters .wp-filter .drawer-toggle:focus,.show-filters .wp-filter .drawer-toggle:hover{background:#2ea2cc}.show-filters .filter-links a.current{border-bottom:none}.show-filters .wp-filter .drawer-toggle{-webkit-border-radius:2px;border-radius:2px;border:none;background:#777;color:#fff}.filter-group,.filtered-by .tag{border:1px solid #e5e5e5;background:#fff}.show-filters .wp-filter .drawer-toggle:before{color:#fff}.filter-group{box-sizing:border-box;position:relative;float:left;margin:0 1% 0 0;padding:20px 10px 10px;width:24%;box-shadow:0 1px 1px rgba(0,0,0,.04)}.filter-group legend{position:absolute;top:10px;display:block;margin:0;padding:0;font-size:1em;font-weight:600}.filter-drawer .filter-group-feature{margin:28px 0 0;list-style-type:none;font-size:12px}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{display:inline-block;margin:7px 4px 7px 0;line-height:16px}.filter-drawer .buttons{margin-bottom:20px}.filter-drawer .buttons .button span{display:inline-block;opacity:.8;font-size:12px;text-indent:10px}.wp-filter .button.clear-filters{display:none;margin-left:10px}.filtered-by{display:none;margin:0}.filtered-by>span{font-weight:600}.filtered-by a{margin-left:10px}.filtered-by .tags{display:inline}.filtered-by .tag{margin:0 5px;padding:4px 8px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);font-size:11px}.filters-applied .filter-drawer .buttons,.filters-applied .filter-drawer br,.filters-applied .filter-group{display:none!important}.filters-applied .filtered-by{display:block}.filters-applied .filter-drawer{padding:20px}.error .content-filterable,.loading-content .content-filterable,.show-filters .content-filterable,.show-filters.filters-applied.loading-content .content-filterable{display:none}.show-filters.filters-applied .content-filterable{display:block}.loading-content .spinner{display:block;margin:40px auto 0;float:none}@media only screen and (max-width:1120px){.filter-drawer{border-bottom:1px solid #eee}.filter-group{margin-bottom:0;margin-top:5px;width:100%}.filter-group li{margin:10px 0}}@media only screen and (max-width:1000px){.filter-items{float:none}.wp-filter .media-toolbar-primary,.wp-filter .media-toolbar-secondary,.wp-filter .search-form{float:none;position:relative;max-width:100%}}@media only screen and (max-width:782px){.filter-group li{padding:0;width:50%}}@media only screen and (max-width:320px){.filter-count{display:none}.wp-filter .drawer-toggle{margin:10px 0}.filter-group li,.wp-filter .search-form input[type=search]{width:100%}}.notice,div.error,div.updated{background:#fff;border-left:4px solid #fff;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);margin:5px 15px 2px;padding:1px 12px}.form-table td .notice p,.notice p,.notice-title,div.error p,div.updated p{margin:.5em 0;padding:2px}.error a{text-decoration:underline}#adminmenu a,#catlist a,#taglist a,.updated a{text-decoration:none}.updated a{padding-bottom:2px}.notice-alt{-webkit-box-shadow:none;box-shadow:none}.notice-large{padding:10px 20px}.notice-title{display:inline-block;color:#23282d;font-size:18px}.wp-core-ui .notice.is-dismissible{padding-right:38px;position:relative}.notice-dismiss{position:absolute;top:0;right:1px;border:none;margin:0;padding:9px;background:0 0;color:#b4b9be;cursor:pointer}.notice-dismiss:active:before,.notice-dismiss:focus:before,.notice-dismiss:hover:before{color:#c00}.notice-dismiss:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .notice-dismiss:focus{outline:#5b9dd9 solid 1px}.notice-success,div.updated{border-left-color:#46b450}.notice-success.notice-alt{background-color:#ecf7ed}.notice-warning{border-left-color:#ffb900}.notice-warning.notice-alt{background-color:#fff8e5}.notice-error,div.error{border-left-color:#dc3232}.notice-error.notice-alt{background-color:#fbeaea}.notice-info{border-left-color:#00a0d2}.notice-info.notice-alt{background-color:#e5f5fa}.media-upload-form .notice,.media-upload-form div.error,.wrap .notice,.wrap div.error,.wrap div.updated{margin:5px 0 15px}#update-nag,.update-nag{display:inline-block;line-height:19px;padding:11px 15px;font-size:14px;text-align:left;margin:25px 20px 0 2px;background-color:#fff;border-left:4px solid #ffba00;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.update-message{color:#000}.update-php .spinner{float:none;margin:-4px 0}#ajax-loading,.ajax-feedback,.ajax-loading,.imgedit-wait-spin,.list-ajax-loading{visibility:hidden}#ajax-response.alignleft{margin-left:2em}#contextual-help-wrap,#screen-options-wrap{margin:0;padding:8px 20px 12px;position:relative}#contextual-help-wrap{overflow:auto;margin-left:0!important}#screen-meta .screen-reader-text{visibility:hidden}#screen-meta-links{margin:0 20px 0 0}#screen-meta{display:none;margin:0 20px -1px 0;position:relative;background-color:#fff;border:1px solid #ddd;border-top:none;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.025);box-shadow:0 1px 0 rgba(0,0,0,.025)}#contextual-help-link-wrap,#screen-options-link-wrap{float:right;height:28px;margin:0 0 0 6px;border:1px solid #ddd;border-top:none;background:#fff;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-shadow:0 1px 1px -1px rgba(0,0,0,.1)}#screen-meta-links .screen-meta-toggle{position:relative;top:0}#screen-meta-links .show-settings{border:0;background:0 0;-webkit-border-radius:0;border-radius:0;color:#777;line-height:1.7;padding:3px 6px 3px 16px}#screen-meta-links .show-settings:active,#screen-meta-links .show-settings:focus,#screen-meta-links .show-settings:hover{color:#32373c}#screen-meta-links .show-settings:active{-webkit-box-shadow:none;box-shadow:none;-webkit-transform:none;-ms-transform:none;transform:none}#screen-meta-links .show-settings:after{right:0;content:"\f140";font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 5px 0 0;bottom:2px;position:relative;vertical-align:bottom;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#b4b9be}#templateside ul li a,#wpfooter a,.contextual-help-tabs a,.nav-tab{text-decoration:none}#screen-meta-links .screen-meta-active:after{content:"\f142"}.toggle-arrow{background-repeat:no-repeat;background-position:top left;background-color:transparent;height:22px;line-height:22px;display:block}.toggle-arrow-active{background-position:bottom left}#contextual-help-wrap h5,#screen-options-wrap h5,#screen-options-wrap legend{margin:0;padding:8px 0;font-size:13px;font-weight:600}.hndle a,.widefat tfoot td,.widefat th,.widefat thead td{font-weight:400}.ie8 #screen-options-wrap legend{color:inherit}.metabox-prefs label{display:inline-block;padding-right:15px;line-height:30px}#number-of-columns{display:inline-block;vertical-align:middle;line-height:30px}.metabox-prefs input[type=checkbox]{margin-top:0;margin-right:6px}.metabox-prefs label input,.metabox-prefs label input[type=checkbox]{margin:-4px 5px 0 0}.metabox-prefs .columns-prefs label input{margin:-1px 2px 0 0}.metabox-prefs label a{display:none}.metabox-prefs .screen-options input,.metabox-prefs .screen-options label{margin-top:0;margin-bottom:0;vertical-align:middle}.metabox-prefs .screen-options .screen-per-page{margin-right:15px}.metabox-prefs .screen-options label{line-height:28px;padding-right:0}.screen-options+.screen-options{margin-top:10px}.metabox-prefs .submit{margin-top:1em;padding:0}#contextual-help-wrap{padding:0}#contextual-help-columns{position:relative}#contextual-help-back{position:absolute;top:0;bottom:0;left:150px;right:170px;border:1px solid #e1e1e1;border-top:none;border-bottom:none;background:#f6fbfd}#contextual-help-wrap.no-sidebar #contextual-help-back{right:0;border-right-width:0;-webkit-border-bottom-right-radius:2px;border-bottom-right-radius:2px}.contextual-help-tabs{float:left;width:150px;margin:0}.contextual-help-tabs ul{margin:1em 0}.contextual-help-tabs li{margin-bottom:0;list-style-type:none;border-style:solid;border-width:0 0 0 2px;border-color:transparent}.contextual-help-tabs a{display:block;padding:5px 5px 5px 12px;line-height:18px;border:1px solid transparent;border-right:none;border-left:none}.contextual-help-tabs a:hover{color:#32373c}.contextual-help-tabs .active{padding:0;margin:0 -1px 0 0;border-left:2px solid #00a0d2;background:#f6fbfd;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02);box-shadow:0 2px 0 rgba(0,0,0,.02),0 1px 0 rgba(0,0,0,.02)}.contextual-help-tabs .active a{border-color:#e1e1e1;color:#32373c}.contextual-help-tabs-wrap{padding:0 20px;overflow:auto}.help-tab-content{display:none;margin:0 22px 12px 0;line-height:1.6em}.help-tab-content.active{display:block}.help-tab-content ul li{list-style-type:disc;margin-left:18px}.contextual-help-sidebar{width:150px;float:right;padding:0 8px 0 12px;overflow:auto}html.wp-toolbar{padding-top:32px;-moz-box-sizing:border-box;box-sizing:border-box}.widefat td,.widefat th{color:#555}.widefat ol,.widefat p,.widefat tfoot tr td,.widefat tfoot tr th,.widefat thead tr td,.widefat thead tr th,.widefat ul{color:#32373c}.widefat td p{margin:2px 0 .8em}.widefat .column-comment p{margin:.6em 0}.postbox-container{float:left}.postbox-container .meta-box-sortables{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpbody-content .metabox-holder{padding-top:10px}.metabox-holder .postbox-container .empty-container{border:3px dashed #b4b9be;height:250px}.columns-2 #postbox-container-3 .empty-container,.columns-2 #postbox-container-4 .empty-container,.columns-3 #postbox-container-4 .empty-container,.metabox-holder.columns-1 .postbox-container .empty-container{border:0;height:0;min-height:0}#post-body-content{width:100%;min-width:463px;float:left}#post-body.columns-2 #postbox-container-1{float:right;margin-right:-300px;width:280px}#post-body.columns-2 #side-sortables{min-height:250px}@media only screen and (max-width:799px){#wpbody-content .metabox-holder .postbox-container .empty-container{border:0;height:0;min-height:0}}.js .postbox .hndle,.js .widget .widget-top{cursor:move}.hndle a{font-size:11px}#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:hover,#dashboard_right_now .versions .b,#ed_reply_toolbar #ed_reply_strong,#pass-strength-result.short,#pass-strength-result.strong,#post-status-display,#post-visibility-display,.edit-comment-author,.feature-filter .feature-name,.item-controls .item-order a,.media-item .percent,.nav-tab,.plugins .name{font-weight:600}.postbox .handlediv{display:none;float:right;width:36px;height:36px;padding:0}.js .postbox .handlediv{display:block}.sortable-placeholder{border:1px dashed #b4b9be;margin-bottom:20px}.postbox,.stuffbox{margin-bottom:20px;padding:0;line-height:1}.postbox .inside,.stuffbox .inside{padding:0 12px 12px;line-height:1.4em;font-size:13px}.postbox .inside{margin:11px 0;position:relative}.postbox .inside>p:last-child,.rss-widget ul li:last-child{margin-bottom:1px!important}.postbox.closed h3{border:none;-webkit-box-shadow:none;box-shadow:none}.postbox table.form-table{margin-bottom:0}.postbox table.widefat{-webkit-box-shadow:none;box-shadow:none}.temp-border{border:1px dotted #ccc}.columns-prefs label{padding:0 10px 0 0}#wpfooter{position:absolute;bottom:0;left:0;right:0;padding:10px 20px;color:#777}#wpfooter p{font-size:13px;margin:0;line-height:20px}#footer-thankyou{font-style:italic}#wpfooter a:hover{text-decoration:underline}.nav-tab{float:left;border:1px solid #ccc;border-bottom:none;margin-left:.5em;padding:5px 10px;font-size:14px;line-height:24px;background:#e4e4e4;color:#555}.nav-tab-small .nav-tab,h3 .nav-tab{padding:5px 14px;font-size:12px;line-height:16px}.nav-tab:focus,.nav-tab:hover{background-color:#fff;color:#464646}.nav-tab-active,.nav-tab:focus:active{-webkit-box-shadow:none;box-shadow:none}.nav-tab-active{margin-bottom:-1px;color:#464646}.nav-tab-active,.nav-tab-active:focus,.nav-tab-active:focus:active,.nav-tab-active:hover{border-bottom:1px solid #f1f1f1;background:#f1f1f1;color:#000}.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper,h3.nav-tab-wrapper{border-bottom:1px solid #ccc;margin:0;padding:9px 15px 0 0;line-height:inherit}.nav-tab-wrapper:after{content:"";display:table;clear:both}.spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;display:inline-block;visibility:hidden;float:right;vertical-align:middle;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:4px 10px 0}.spinner.is-active{visibility:visible}#template div{margin-right:190px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2.hndle,.metabox-holder h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}.nav-menus-php .metabox-holder h3{padding:10px 10px 11px 14px;line-height:21px}.plugin-install #description,.plugin-install-network #description{width:60%}table .column-rating,table .column-visible,table .vers{text-align:left}.attention,.error-message{color:red;font-weight:600}body.iframe{height:98%}.lp-show-latest p{display:none}.lp-show-latest .lp-error p,.lp-show-latest p:last-child{display:block}.media-icon{width:62px;text-align:center}.media-icon img{border:1px solid #e7e7e7;border:1px solid rgba(0,0,0,.07)}#howto{font-size:11px;margin:0 5px;display:block}.post-categories,.post-categories li{display:inline}.importers td{padding-right:14px}.importers{font-size:16px;width:auto}#post-body #post-body-content #namediv h2,#post-body #post-body-content #namediv h3{margin-top:0}.edit-comment-author{font-size:14px;line-height:1.4;color:#222;margin:2px 0 0 9px}.checkbox,.post-categories,.zerosize,fieldset{padding:0;margin:0}#namediv h2 label,#namediv h3 label{vertical-align:baseline}#namediv table{width:100%}#namediv td.first{width:10px}#namediv input{width:98%}#namediv p{margin:10px 0}#submitdiv h3{margin-bottom:0!important}.zerosize{height:0;width:0;border:0;overflow:hidden;position:absolute}br.clear{height:2px;line-height:2px}.checkbox{border:none}fieldset{border:0}div.star-holder{position:relative;height:17px;width:100px;background:url(../images/stars.png?ver=20121108) bottom left repeat-x}div.star-holder .star-rating{background:url(../images/stars.png?ver=20121108) top left repeat-x;height:17px;float:left}.star-rating .star{display:inline-block;width:20px;height:20px;-webkit-font-smoothing:antialiased;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;text-align:center;color:#ffb900}.star-rating .star-full:before{content:"\f155"}.star-rating .star-half:before{content:"\f459"}.rtl .star-rating .star-half{-webkit-transform:rotateY(180deg);-ms-transform:rotateY(180deg);transform:rotateY(180deg)}.star-rating .star-empty:before{content:"\f154"}div.action-links{font-weight:400}#plugin-information{background:#fff;position:fixed;top:0;right:0;bottom:0;left:0;height:100%;padding:0}#plugin-information-scrollable{overflow:auto;-webkit-overflow-scrolling:touch;height:100%}#plugin-information-title{padding:0 20px;background:#f5f5f5;font-size:22px;font-weight:600;line-height:56px;position:relative;top:0;right:0;left:0;height:56px;overflow:hidden;text-overflow:ellipsis}#plugin-information-title.with-banner{margin-right:0;height:250px;bottom:250px;-webkit-background-size:cover;background-size:cover}#plugin-information-title h2{font-size:1em;font-weight:700;padding:0;margin:0;max-width:680px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#plugin-information-title.with-banner h2{font-family:"Helvetica Neue",sans-serif;display:inline-block;font-size:30px;line-height:50px;padding:0 15px;margin:174px 0 0 10px;color:#fff;background:rgba(30,30,30,.9);text-shadow:0 1px 3px rgba(0,0,0,.4);-webkit-box-shadow:0 0 30px rgba(255,255,255,.1);box-shadow:0 0 30px rgba(255,255,255,.1);-webkit-border-radius:8px;border-radius:8px}#plugin-information-title div.vignette{display:none}#plugin-information-title.with-banner div.vignette{display:block;float:right;top:0;height:250px;width:772px;margin:0 -20px;background:0 0;-webkit-box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 0 50px 4px rgba(0,0,0,.2),inset 0 -1px 0 rgba(0,0,0,.1)}#plugin-information-tabs{padding:0 16px;position:relative;right:0;left:0;height:36px;z-index:1;border-bottom:1px solid #ddd;background:#f3f3f3}#plugin-information-tabs a{position:relative;float:left;padding:9px 10px;margin:0;height:18px;line-height:18px;font-size:14px;text-decoration:none;-webkit-transition:none;transition:none}#plugin-information-tabs a.current{margin:0 -1px;background:#fff;border:1px solid #ddd;border-bottom-color:#fff;padding-top:8px;color:#32373c}#plugin-information-tabs.with-banner a.current{border-top:none;padding-top:9px}#plugin-information-tabs a:active,#plugin-information-tabs a:focus{outline:0}#plugin-information-content{overflow:hidden;background:#fff;position:relative;top:0;right:0;left:0;min-height:100%;min-height:-webkit-calc(100% - 152px);min-height:calc(100% - 152px)}#plugin-information-content.with-banner{min-height:-webkit-calc(100% - 346px);min-height:calc(100% - 346px)}#section-holder{position:relative;top:0;right:250px;bottom:0;left:0;margin-right:250px;padding:10px 26px 99999px;margin-bottom:-99939px}#section-holder .updated{margin:16px 0}#plugin-information .fyi{float:right;position:relative;top:0;right:0;padding:16px 16px 99999px;margin-bottom:-99939px;width:217px;border-left:1px solid #ddd;background:#f3f3f3;color:#666}#plugin-information .fyi strong{color:#464646}#plugin-information .fyi h3{font-weight:700;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}#plugin-information .fyi h2{font-size:.9em;margin-bottom:0;margin-right:0}#plugin-information .fyi ul{padding:0;margin:0;list-style:none}#plugin-information .fyi li{margin:0 0 10px}#plugin-information .counter-container{margin:3px 0}#plugin-information .counter-label{float:left;margin-right:5px;min-width:55px}#plugin-information .counter-back{height:17px;width:92px;background-color:#ececec;float:left}#plugin-information .counter-bar{height:17px;background-color:#ffc733;float:left}#plugin-information .counter-count{margin-left:5px}#plugin-information .fyi ul.contributors{margin-top:10px}#plugin-information .fyi ul.contributors li{display:inline-block;margin-right:8px;vertical-align:middle}#plugin-information .fyi ul.contributors li img{vertical-align:middle;margin-right:4px}#plugin-information-footer{padding:13px 16px;position:absolute;right:0;bottom:0;left:0;height:33px;border-top:1px solid #ddd;background:#f3f3f3}#plugin-information .section ol,#plugin-information .section ul{list-style-type:disc;margin-left:24px}#plugin-information .section,#plugin-information .section p{font-size:14px;line-height:1.7}#plugin-information #section-screenshots ol{list-style:none;margin:0}#plugin-information #section-screenshots li img{vertical-align:text-top;margin-top:16px;max-width:100%;width:auto;height:auto;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}#plugin-information #section-screenshots li p{font-style:italic;padding-left:20px}#plugin-information pre{padding:7px;overflow:auto;border:1px solid #ccc}#plugin-information .review{overflow:hidden;width:100%;margin-bottom:20px;border-bottom:1px solid #e6e6e6}#plugin-information .review-title-section{overflow:hidden}#plugin-information .review-title-section h4{display:inline-block;float:left;margin:0 6px 0 0}#plugin-information .reviewer-info p{clear:both;margin:0;padding-top:2px}#plugin-information .reviewer-info .avatar{float:left;margin:4px 6px 0 0}#plugin-information .reviewer-info .star-rating{float:left}#plugin-information .review-meta{float:left;margin-left:.75em}#plugin-information .review-body{float:left;width:100%}.plugin-version-author-uri{font-size:13px}@media screen and (max-width:771px){#plugin-information-title.with-banner{height:100px;bottom:100px}#plugin-information-title.with-banner h2{margin-top:30px;font-size:20px;line-height:40px;max-width:85%}#plugin-information-title.with-banner div.vignette{height:100px;bottom:100px;width:800%}#plugin-information-tabs{overflow:hidden;padding:0;height:auto}#plugin-information-tabs a.current{margin-bottom:0;border-bottom:none}#plugin-information .fyi{float:none;border:1px solid #ddd;position:static;width:auto;margin:26px 26px 0;padding-bottom:0}#section-holder{position:static;margin:0;padding-bottom:70px}#plugin-information .fyi h3,#plugin-information .fyi small{display:none}#plugin-information-footer{padding:12px 16px 0;height:46px}}body.about-php #TB_window,body.import-php #TB_window,body.index-php #TB_window,body.plugin-install-php #TB_window,body.plugins-php #TB_window,body.update-core-php #TB_window{background:#fcfcfc}.ie8 body.about-php #TB_window:before,.ie8 body.import-php #TB_window:before,.ie8 body.index-php #TB_window:before,.ie8 body.plugin-install-php #TB_window:before,.ie8 body.plugins-php #TB_window:before,.ie8 body.update-core-php #TB_window:before{content:" ";background:0 0}body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{content:"";display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;background:url(../images/spinner.gif) center no-repeat #fcfcfc;-webkit-background-size:20px 20px;background-size:20px 20px;-webkit-transform:translateZ(0);transform:translateZ(0)}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){body.about-php #TB_window.thickbox-loading:before,body.import-php #TB_window.thickbox-loading:before,body.index-php #TB_window.thickbox-loading:before,body.plugin-install-php #TB_window.thickbox-loading:before,body.plugins-php #TB_window.thickbox-loading:before,body.update-core-php #TB_window.thickbox-loading:before{background-image:url(../images/spinner-2x.gif)}}body.about-php #TB_title,body.import-php #TB_title,body.index-php #TB_title,body.plugin-install-php #TB_title,body.plugins-php #TB_title,body.update-core-php #TB_title{float:left;height:1px}body.about-php #TB_ajaxWindowTitle,body.import-php #TB_ajaxWindowTitle,body.index-php #TB_ajaxWindowTitle,body.plugin-install-php #TB_ajaxWindowTitle,body.plugins-php #TB_ajaxWindowTitle,body.update-core-php #TB_ajaxWindowTitle{display:none}body.about-php .tb-close-icon,body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{left:auto;right:-30px;color:#eee;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}body.about-php #TB_closeWindowButton:focus,body.about-php #TB_closeWindowButton:focus .tb-close-icon,body.about-php .tb-close-icon:focus,body.about-php .tb-close-icon:hover,body.import-php #TB_closeWindowButton:focus,body.import-php #TB_closeWindowButton:focus .tb-close-icon,body.import-php .tb-close-icon:focus,body.import-php .tb-close-icon:hover,body.index-php #TB_closeWindowButton:focus,body.index-php #TB_closeWindowButton:focus .tb-close-icon,body.index-php .tb-close-icon:focus,body.index-php .tb-close-icon:hover,body.plugin-install-php #TB_closeWindowButton:focus,body.plugin-install-php #TB_closeWindowButton:focus .tb-close-icon,body.plugin-install-php .tb-close-icon:focus,body.plugin-install-php .tb-close-icon:hover,body.plugins-php #TB_closeWindowButton:focus,body.plugins-php #TB_closeWindowButton:focus .tb-close-icon,body.plugins-php .tb-close-icon:focus,body.plugins-php .tb-close-icon:hover,body.update-core-php #TB_closeWindowButton:focus,body.update-core-php #TB_closeWindowButton:focus .tb-close-icon,body.update-core-php .tb-close-icon:focus,body.update-core-php .tb-close-icon:hover{color:#00a0d2;outline:0;-webkit-box-shadow:none;box-shadow:none}body.about-php .tb-close-icon:before,body.import-php .tb-close-icon:before,body.index-php .tb-close-icon:before,body.plugin-install-php .tb-close-icon:before,body.plugins-php .tb-close-icon:before,body.update-core-php .tb-close-icon:before{content:"\f335";font-size:32px}@media screen and (max-width:830px){body.about-php .tb-close-icon,body.import-php .tb-close-icon,body.index-php .tb-close-icon,body.plugin-install-php .tb-close-icon,body.plugins-php .tb-close-icon,body.update-core-php .tb-close-icon{right:0;top:-30px}}img{border:none}#wphead{border-bottom:1px solid #dfdfdf}#wphead h1 a{color:#464646}.js .meta-box-sortables .postbox .toggle-indicator:before,.js .sidebar-name .sidebar-name-arrow:before{content:"\f142";display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.js .meta-box-sortables .postbox.closed .handlediv .toggle-indicator:before,.js .widgets-holder-wrap.closed .sidebar-name-arrow:before{content:"\f140"}.js .sidebar-name .sidebar-name-arrow:before{padding:10px;left:0}.js #widgets-left .sidebar-name .sidebar-name-arrow{display:none}.accordion-section.open .accordion-section-content,.js #widgets-left .sidebar-name:hover .sidebar-name-arrow,.js #widgets-left .widgets-holder-wrap.closed .sidebar-name .sidebar-name-arrow,.no-js .accordion-section .accordion-section-content{display:block}.js .postbox .handlediv .toggle-indicator:before{margin-top:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}#postcustomstuff p.submit,#templateside h2,.alignleft h2{margin:0}.rtl.js .postbox .handlediv .toggle-indicator:before{text-indent:1px}.js .postbox .handlediv:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.js .postbox .handlediv:focus .toggle-indicator:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#photo-add-url-div input[type=text]{width:300px}#template textarea{font-family:Consolas,Monaco,monospace;font-size:13px;width:97%;background:#f9f9f9;outline:0}#template p{width:97%}#templateside{float:right;width:190px}#templateside h4{margin:1em 0 0}#templateside ol,#templateside ul{margin:.5em 0;padding:0}#templateside li{margin:4px 0}#templateside li a,.theme-editor-php .highlight{display:block;padding:3px 3px 3px 12px;text-decoration:none}.theme-editor-php .highlight{margin:-3px 3px -3px -12px}#templateside .highlight{border:none;font-weight:700}.nonessential{color:#666;font-size:11px;font-style:italic;padding-left:12px}#documentation{margin-top:10px}#documentation label{line-height:22px;vertical-align:baseline;font-weight:600}#your-profile label+a,.wp-admin select,fieldset label,label{vertical-align:middle}.fileedit-sub{padding:10px 0 8px;line-height:180%}.accordion-section-title:after,.control-section .accordion-section-title:after,.nav-menus-php .item-edit:before,.widget-top a.widget-action:after{right:0;content:"\f140";border:none;background:0 0;font:400 20px/1 dashicons;speak:none;display:block;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}.my-sites li a,form p.submit a.cancel:hover{text-decoration:none}.accordion-section-title:after,.handlediv,.item-edit,.sidebar-name-arrow,.widget-action{color:#a0a5aa}.accordion-section-title:hover:after,.handlediv:focus,.handlediv:hover,.item-edit:hover,.sidebar-name:hover .sidebar-name-arrow,.widget-action:hover{color:#777}.widget-top a.widget-action:after{padding:1px 2px 1px 0;margin-top:10px;margin-right:10px;-webkit-border-radius:50%;border-radius:50%}.widget-top a.widget-action:focus:after{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.accordion-section-title:after,.control-section .accordion-section-title:after{float:right;right:20px;top:-2px}#customize-info.open .accordion-section-title:after,.control-section.open .accordion-section-title:after,.nav-menus-php .menu-item-edit-active .item-edit:before,.widget.open .widget-top a.widget-action:after{content:"\f142"}/*!
  * jQuery UI Draggable/Sortable 1.11.4
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
- */.ui-draggable-handle,.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.accordion-section{border-bottom:1px solid #dfdfdf;margin:0}.accordion-section.open .accordion-section-content,.no-js .accordion-section .accordion-section-content{display:block}.accordion-section.open:hover{border-bottom-color:#dfdfdf}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-left:1px solid #dfdfdf;border-right:1px solid #dfdfdf;user-select:none}.js .accordion-section-title:after{position:absolute;top:12px;right:10px;z-index:1}.accordion-section-title:focus{outline:0}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a0a5aa transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title{border-left:none;border-right:none;padding:10px 10px 11px 14px;line-height:21px;background:#fff}.control-section .accordion-section-title:after{top:11px}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{color:#23282d;background:#f5f5f5}.control-section.open .accordion-section-title{border-bottom:1px solid #dfdfdf}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;right:0;background:#ccc}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:left;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:left}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f9f9f9}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:left;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f9f9f9}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:left;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:left}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f9f9f9}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:left;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:left}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f9f9f9}}@media only screen and (min-width:1600px){.my-sites li{float:left;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:left}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f9f9f9}}@media only screen and (min-width:769px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:860px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (min-width:980px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:768px){#col-left,#col-right{width:100%}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) bottom left repeat-x;-webkit-background-size:21px 37px;background-size:21px 37px}.spinner{background-image:url(../images/spinner-2x.gif)}#bulk-titles div a,#bulk-titles div a:hover,#screen-meta-links a.show-settings,.curtime #timestamp,.meta-box-sortables .postbox:hover .handlediv,.sidebar-name-arrow,.sidebar-name:hover .sidebar-name-arrow,.tagchecklist span a,.tagchecklist span a:hover,.widget-top a.widget-action,.widget-top a.widget-action:hover{background:0 0!important}}@-ms-viewport{width:device-width}@media screen and (max-width:782px){#template div,#templateside{float:none;width:auto}html.wp-toolbar{padding-top:46px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:transparent!important}#wpcontent{position:relative;margin-left:0;padding-left:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-right:12px;margin-left:0}.col-wrap{padding:0}#collapse-menu,#screen-meta,#screen-meta-links,.post-format-select{display:none!important}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.wp-color-result{height:auto;padding-left:45px}.wp-color-result:after{font-size:14px;height:auto;padding:6px 14px}.media-upload-form div.error,.notice,.wrap div.error,.wrap div.updated{margin:20px 0 10px;padding:5px 10px;font-size:14px;line-height:175%}.wp-core-ui .notice.is-dismissible{padding-right:46px}.notice-dismiss{padding:13px}.wrap .icon32+h2{margin-top:-2px}.wp-responsive-open #wpbody{right:-190px}code{word-wrap:break-word}.postbox{font-size:14px}.metabox-holder h3{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#templateside li{margin:0}#templateside li a{display:block;padding:5px}#templateside .highlight{padding:5px;margin-left:-5px;margin-top:-5px}#template div{margin:0}#template textarea{width:100%}.fileedit-sub .alignright{margin-top:15px}#comments-form .checkforspam,#wpfooter{display:none}.edit-comment-author{margin:2px 0 0}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open,div#post-body.metabox-holder.columns-1{overflow-x:hidden}html.wp-toolbar{padding-top:0}#wpbody{padding-top:46px}}#pressthis-code-wrap,textarea{overflow:auto}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:left}}input,textarea{box-sizing:border-box}input[type=text],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=search],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=text]:focus,input[type=password]:focus,input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=search]:focus,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=email],input[type=url]{direction:ltr}input[type=checkbox],input[type=radio]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}#adminmenu,.network-admin.themes-php p.search-box{clear:left}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-right:4px;line-height:10px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{float:left;display:inline-block;vertical-align:middle;width:16px;font:400 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:'\f147';margin:-3px 0 0 -4px;color:#1e8cbe}input[type=radio]:checked:before{content:'\2022';text-indent:-9999px;-webkit-border-radius:50px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4}.wp-admin input[type=file]{padding:3px 0}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin-left:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;-webkit-box-shadow:none;box-shadow:none}.wp-admin select{padding:2px;line-height:28px;height:28px;vertical-align:middle}.wp-admin .button-cancel{padding:0 5px;line-height:2}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border:none}p.submit{text-align:left;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:right}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#your-profile label+a,fieldset label,label{vertical-align:middle}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:'\f173';display:inline-block;font:400 20px/1 dashicons;speak:none;left:-1px;padding:0 5px 0 0;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 1px;padding:3px 5px;text-align:center;width:25em;box-sizing:border-box;opacity:0}#pass-strength-result,.color-option{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.indicator-hint{padding-top:8px}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:right;margin:0}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:left;height:28px;margin:0 4px 0 0}input[type=text].ui-autocomplete-loading,input[type=email].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:right center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;text-align:left}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;box-sizing:border-box;margin-bottom:3px;cursor:pointer}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0}.color-palette td{height:20px;padding:0;border:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:'';width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;-webkit-transform:skew(20deg) rotate(6deg);-ms-transform:skew(20deg) rotate(6deg);transform:skew(20deg) rotate(6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(20deg) rotate(9deg);-ms-transform:skew(20deg) rotate(9deg);transform:skew(20deg) rotate(9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 12px 8px 9px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:'\f157';position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#777}#local-time,#utc-time{padding-left:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}.form-field #path{margin-bottom:5px}#search-sites,#search-users{max-width:100%}.request-filesystem-credentials-dialog{display:none}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:left;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-left:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:right}#request-filesystem-credentials-dialog .button:not(:last-child),.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=password],input[type=email],input[type=number],input[type=search]{-webkit-appearance:none;padding:6px 10px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:400 30px/1 Dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th{display:block;width:auto;vertical-align:middle}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=text],.form-table td input[type=password],.form-table td input[type=email],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:right;margin:-30px 3px 0 0}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=text].small-text,input[type=password].small-text,input[type=number].small-text,input[type=search].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-left:0}.form-table.permalink-structure td code{margin-left:32px}.form-table.permalink-structure td input[type=text]{margin-left:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-right:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;right:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media only screen and (max-height:480px){.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;left:0}}@media screen and (max-width:600px){.color-option{width:49%}}#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px;margin:-6px 0 0 -8px;float:left}.icon16:before{color:#999;font:400 20px/1 dashicons;speak:none;padding:6px 0;height:34px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.icon16.icon-dashboard:before{content:'\f226'}.icon16.icon-post:before{content:'\f109'}.icon16.icon-media:before{content:'\f104'}.icon16.icon-links:before{content:'\f103'}.icon16.icon-page:before{content:'\f105'}.icon16.icon-comments:before{content:'\f101';margin-top:1px}.icon16.icon-appearance:before{content:'\f100'}.icon16.icon-plugins:before{content:'\f106'}.icon16.icon-users:before{content:'\f110'}.icon16.icon-tools:before{content:'\f107'}.icon16.icon-settings:before{content:'\f108'}.icon16.icon-site:before{content:'\f112'}.icon16.icon-generic:before{content:'\f111'}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:left;z-index:9990}#adminmenu *{user-select:none}#adminmenu *,.theme-overlay .current-label{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px;color:#eee}#adminmenu .wp-submenu a{color:#b4b9be;color:rgba(240,245,250,.7)}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#00b9eb}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;left:160px;overflow:visible}#adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{padding:7px 0 8px;z-index:9999;background-color:#32373c;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu a.menu-top:focus+.wp-submenu,.js #adminmenu .opensub .wp-submenu,.js #adminmenu .sub-open,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu{position:relative;z-index:3;top:auto;left:auto;right:auto;bottom:auto;border:0;margin-top:0;-webkit-box-shadow:none;box-shadow:none;background-color:#32373c}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{position:relative;background-color:#191e23;color:#00b9eb}.folded #adminmenu li.menu-top:hover,.folded #adminmenu li.opensub>a.menu-top,.folded #adminmenu li>a.menu-top:focus{z-index:10000}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu .wp-menu-arrow,#adminmenu .wp-menu-arrow div,#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,.folded #adminmenu li.wp-has-current-submenu{background:#0073aa;color:#fff}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:0;left:36px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{min-width:160px;width:auto}#adminmenu .wp-submenu a{font-size:13px;line-height:1.2;margin:0;padding:6px 0}#adminmenu .opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-not-current-submenu li>a,.folded #adminmenu .wp-has-current-submenu li>a{padding-right:16px;padding-left:14px;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:6px 12px}#adminmenu .wp-submenu-head,#adminmenu a.menu-top{font-size:14px;font-weight:400;line-height:18px;padding:0}#adminmenu .wp-submenu-head{display:none}.folded #adminmenu .wp-menu-name{position:absolute;left:-999px}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0;overflow:hidden}#adminmenu .wp-menu-image img{padding:9px 0 0;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:8px 0}#adminmenu div.wp-menu-image{float:left;width:36px;height:34px;margin:0;text-align:center}#adminmenu div.wp-menu-image.svg{background-repeat:no-repeat;background-position:center;-webkit-background-size:20px auto;background-size:20px auto}div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6);padding:7px 0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6)}#adminmenu .current div.wp-menu-image:before,#adminmenu .wp-has-current-submenu div.wp-menu-image:before,#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before{color:#fff}#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#00b9eb}.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#a0a5aa}.folded #adminmenu div.wp-menu-image{width:35px;height:30px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:34px}.no-font-face #adminmenu .wp-menu-image{display:none}.no-font-face #adminmenu div.wp-menu-name{padding:8px 12px}.no-font-face.auto-fold #adminmenu .wp-menu-name{margin-left:0}.sticky-menu #adminmenuwrap{position:fixed}.wp-menu-arrow{display:none!important}ul#adminmenu a.wp-has-current-submenu{position:relative}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{right:0;border:8px solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#f1f1f1;top:50%;margin-top:-8px}.folded ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.folded ul#adminmenu a.wp-has-current-submenu:after,.folded ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{right:0;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-width:8px;top:10px;z-index:10000}.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:18px}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#32373c}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100)}#adminmenu li.wp-menu-separator{height:5px;padding:0;margin:0 0 6px;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#collapse-button,#collapse-button div{height:15px;width:15px}#adminmenu .wp-submenu .wp-submenu-head{color:#fff;font-weight:400;font-size:14px;padding:8px 4px 8px 11px;margin:-7px 0 4px}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0}#adminmenu .awaiting-mod,#adminmenu .update-plugins{display:inline-block;background-color:#d54e21;color:#fff;font-size:9px;line-height:17px;font-weight:600;margin:1px 0 0 2px;vertical-align:top;-webkit-border-radius:10px;border-radius:10px;z-index:26}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,.folded #collapse-menu span{display:none}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#00b9eb;color:#fff}#collapse-menu{font-size:13px;line-height:34px;margin-top:10px;color:#a0a5aa;color:rgba(240,245,250,.6);-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after{color:#00b9eb}#collapse-button{float:left;margin:10px 8px 10px 11px;-webkit-border-radius:10px;border-radius:10px}#wpwrap #collapse-button div{padding:0}#collapse-button div:after{content:'\f148';display:block;line-height:15px;left:-3px;top:-3px;color:#a0a5aa;color:rgba(240,245,250,.6);font:400 20px/1 dashicons!important;speak:none;margin:0 auto;padding:0!important;position:relative;text-align:center;width:20px;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button div:after,.rtl #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.folded #collapse-button div:after{-webkit-transform:none;-ms-transform:none;transform:none}.customize-support #menu-appearance a[href="themes.php?page=custom-header"],.customize-support #menu-appearance a[href="themes.php?page=custom-background"],li#wp-admin-bar-menu-toggle{display:none}@media only screen and (max-width:960px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-left:36px}.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{width:36px}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{top:0;left:36px}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu,.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em;margin-right:-1px;padding:7px 0 8px;z-index:9999}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{min-width:150px;width:auto}.auto-fold #adminmenu .wp-has-current-submenu li>a{padding-right:16px;padding-left:14px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}.auto-fold #adminmenu .wp-menu-name{position:absolute;left:-999px}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #collapse-menu span,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.auto-fold #adminmenu div.wp-menu-image{height:30px;width:34px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{height:34px}.auto-fold #adminmenu li.wp-menu-open{border:0}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-button div{background:0 0}.auto-fold #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.auto-fold #collapse-button div:after{-webkit-transform:none;-ms-transform:none;transform:none}}@media screen and (max-width:782px){.auto-fold #wpcontent{position:relative;margin-left:0;padding-left:10px}.sticky-menu #adminmenuwrap{position:relative;z-index:auto;top:0}.auto-fold #adminmenu,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{position:absolute;width:190px;z-index:100}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{display:none}.auto-fold .wp-responsive-open #adminmenuback,.auto-fold .wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu li.menu-top{width:100%}.auto-fold #adminmenu li a{font-size:16px;padding:5px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding:10px 10px 10px 20px}.auto-fold #adminmenu .wp-menu-name{position:static;margin-left:35px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li.current>a.current:after{border-width:8px;margin-top:-8px}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{display:none}#adminmenu .wp-submenu{position:relative;display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold #adminmenu .wp-menu-open .wp-submenu{position:relative;display:block;top:0;left:-1px;-webkit-box-shadow:none;box-shadow:none}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;left:-1px;right:0;top:0}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;left:4px;padding-right:10px;z-index:99999;border:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpadminbar #wp-admin-bar-menu-toggle a{display:block;padding:0;overflow:hidden;outline:0;text-decoration:none;border:1px solid transparent;background:0 0;height:44px;margin-left:-1px}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#32373c}li#wp-admin-bar-menu-toggle{display:block}#wpadminbar #wp-admin-bar-menu-toggle a:hover{border:1px solid transparent}#wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{content:'\f228';display:inline-block;float:left;font:400 40px/45px Dashicons;vertical-align:middle;outline:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:44px;width:50px;padding:0;border:none;text-align:center;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#00b9eb}}@media screen and (max-width:600px){#adminmenuback,#adminmenuwrap{display:none}.wp-responsive-open #adminmenuback,.wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu{top:46px}}#wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody-content #dashboard-widgets.columns-2 .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#wpbody-content #dashboard-widgets.columns-3 .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4{float:right}#dashboard-widgets .postbox-container,#wpbody-content #dashboard-widgets.columns-4 .postbox-container{width:25%}#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container{border:none!important}.ie8 #wpbody-content #dashboard-widgets .postbox-container{width:49.5%}.ie8 #wpbody-content #dashboard-widgets #postbox-container-2,.ie8 #wpbody-content #dashboard-widgets #postbox-container-3,.ie8 #wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}.ie8 #dashboard-widgets #postbox-container-3 .empty-container,.ie8 #dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}#dashboard-widgets-wrap{overflow:hidden;margin:0 -8px}#dashboard-widgets .postbox .inside{margin-bottom:0}#dashboard-widgets .meta-box-sortables{margin:0 8px;min-height:100px}#the-comment-list td.comment p.comment-author{margin-top:0;margin-left:0}#the-comment-list p.comment-author img{float:left;margin-right:8px}#the-comment-list p.comment-author strong a{border:none}#the-comment-list td{vertical-align:top}#the-comment-list td.comment img{max-width:100%}.welcome-panel{position:relative;overflow:auto;margin:16px 0;padding:23px 10px 0;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:13px;line-height:2.1em}#activity-widget #the-comment-list .comment-item:first-child,#dashboard_right_now .sub,.js #dashboard_quick_press .drafts{border-top:1px solid #eee}.activity-block,.dashboard-widget-control-form,.mu-storage,.tablenav .actions,th.sortable a,th.sorted a{overflow:hidden}.welcome-panel h3{margin:0;font-size:21px;font-weight:400;line-height:1.2}.welcome-panel h4{margin:1.33em 0 0;font-size:16px}.welcome-panel li{font-size:14px}.welcome-panel p{color:#777}.welcome-panel a{text-decoration:none}.welcome-panel .about-description{font-size:16px;margin:0}.welcome-panel .welcome-panel-close{position:absolute;top:10px;right:10px;padding:10px 15px 10px 21px;font-size:13px;line-height:1.23076923;text-decoration:none}.welcome-panel .welcome-panel-close:before{position:absolute;top:8px;left:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 13px 3px 0;padding:12px 36px;height:auto;line-height:1.4285714;white-space:normal}.welcome-panel-content{margin-left:13px;max-width:1500px}.welcome-panel .welcome-panel-column-container{clear:both;position:relative}.welcome-panel .welcome-panel-column{width:32%;min-width:200px;float:left}.ie8 .welcome-panel .welcome-panel-column{min-width:230px}.welcome-panel .welcome-panel-column:first-child{width:36%}.welcome-panel-column p.hide-if-no-customize{margin-top:10px}.welcome-panel-column p{margin-top:7px;color:#464646}.welcome-panel .welcome-icon{background:0 0!important}.welcome-panel .welcome-icon:before{color:#82878c;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 10px 0 0;top:-1px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.welcome-panel .welcome-edit-page:before,.welcome-panel .welcome-write-blog:before{content:'\f119';top:-3px}.welcome-panel .welcome-add-page:before{content:'\f132'}.welcome-panel .welcome-view-site:before{content:'\f115';top:-2px}.welcome-panel .welcome-widgets-menus:before{content:'\f116';top:-2px}.welcome-panel .welcome-comments:before{content:'\f117';top:-1px}.welcome-panel .welcome-learn-more:before{content:'\f118';top:-1px}.welcome-panel .welcome-widgets-menus{line-height:16px}.welcome-panel .welcome-panel-column ul{margin:.8em 1em 1em 0}.welcome-panel .welcome-panel-column li{line-height:16px;list-style-type:none;padding:0 0 8px}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .dashboard-widget-control-form,#dashboard_primary .widget-loading{padding:12px 12px 0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#777;margin-top:4px}#dashboard_primary .rss-widget{border-bottom:1px solid #eee;font-size:13px;padding:8px 12px 10px}#dashboard_primary .rss-widget:last-child{border-bottom:none;padding-bottom:8px}#dashboard_primary .rss-widget a{font-weight:400}#dashboard_primary .rss-widget span,#dashboard_primary .rss-widget span.rss-date{color:#777}#dashboard_primary .rss-widget span.rss-date{margin-left:12px}#dashboard_primary .rss-widget ul li{margin-bottom:8px}#dashboard_right_now ul{margin:0;display:inline-block;width:100%}#dashboard_right_now li{width:50%;float:left;margin-bottom:10px}#dashboard_right_now .inside{padding:0}#dashboard_right_now .main{padding:0 12px 11px}#dashboard_right_now .main p{margin:0}#dashboard_right_now #wp-version-message .button{float:right;position:relative;top:-5px;margin-left:5px}#dashboard-widgets h4.mu-storage{margin-bottom:10px}#dashboard_right_now li a:before,#dashboard_right_now li span:before{color:#82878c}#dashboard_right_now .sub{color:#777;background:#f5f5f5;padding:10px 12px 6px}#dashboard_right_now .sub h4{color:#555}#dashboard_right_now .sub p{margin:0 0 1em}#dashboard_right_now .warning a:before,#dashboard_right_now .warning span:before{color:#d54e21}#dashboard_quick_press .drafts li time,#title-wrap #title-prompt-text,.textarea-wrap #content-prompt-text{color:#777}#dashboard_right_now li a:before,#dashboard_right_now li span:before{content:'\f159';font:400 20px/1 dashicons;speak:none;display:block;float:left;margin:0 5px 0 0;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#dashboard_right_now .page-count a:before,#dashboard_right_now .page-count span:before{content:'\f105'}#dashboard_right_now .post-count a:before,#dashboard_right_now .post-count span:before{content:'\f109'}#dashboard_right_now .comment-count a:before{content:'\f101'}#dashboard_right_now .comment-mod-count a:before{content:'\f125'}#dashboard_right_now .storage-count a:before{content:'\f104'}#dashboard_right_now .storage-count.warning a:before{content:'\f153'}#dashboard_quick_press .inside{margin:0;padding:0}#dashboard_quick_press div.updated{margin-bottom:10px;border:1px solid #eee;border-width:1px 1px 1px 0}#dashboard_quick_press form{margin:12px}#dashboard_quick_press .drafts,#dashboard_quick_press .easy-blogging{padding:10px 0 0}input#save-post{float:left}form.initial-form.quickpress-open label.prompt{font-style:normal}form.initial-form.quickpress-open input#title{height:auto}#dashboard_quick_press input,#dashboard_quick_press textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0}#dashboard_quick_press textarea{resize:vertical}#description-wrap{margin-top:12px}.input-text-wrap,.textarea-wrap{position:relative}.input-text-wrap .prompt,.textarea-wrap .prompt{position:absolute}.textarea-wrap #content-prompt-text{font-size:1.1em;padding:7px 8px}.textarea-wrap textarea#content{margin:0 0 8px;padding:6px 7px}#quick-press textarea#content{min-height:90px;max-height:1300px;resize:none}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts h4{margin:0 12px 8px;font-weight:400}#dashboard_quick_press .drafts .view-all{float:right;margin:0 12px 0 0}#dashboard_primary a.rsswidget{font-weight:400}#dashboard_quick_press .drafts ul{margin:0 12px}#dashboard_quick_press .drafts li{margin-bottom:1em}#dashboard_quick_press .drafts p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 5px 0 0}#dashboard-widgets #dashboard_activity h4{margin:0 0 8px 12px;font-weight:400}#dashboard-widgets #dashboard_activity h4.comment-meta{margin:0}#dashboard_activity h4.comment-meta{margin-bottom:4px}#dashboard_activity ul{padding:0 12px}#dashboard_activity .comment-meta span.approve:before{content:'\f227';font:20px/.5 dashicons;margin-left:12px;vertical-align:middle;position:relative;top:-1px;margin-right:2px}#dashboard_activity .inside{padding:0;margin:0}#dashboard_activity .no-activity{overflow:hidden;padding:0 12px 12px;text-align:center}#dashboard_activity .no-activity p{color:#999;font-size:16px}#dashboard_activity .no-activity .smiley{margin-top:0}#dashboard_activity .no-activity .smiley:before{content:'\f328';font:400 120px/1 dashicons;speak:none;display:block;margin:0 5px 0 0;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#dashboard_activity .subsubsub{float:none;border-top:1px solid #eee;margin-top:0;padding:8px 12px 4px}#future-posts ul,#published-posts ul{clear:both;margin-bottom:0}#future-posts li,#published-posts li{margin-bottom:8px}#future-posts ul span,#published-posts ul span{display:inline-block;margin-right:5px;min-width:150px;color:#777}.activity-block{border-bottom:1px solid #eee;padding:8px 0 4px}.activity-block:last-child{border-bottom:none}.activity-block .subsubsub li{color:#ddd}#activity-widget #the-comment-list div.undo,#activity-widget #the-comment-list tr.undo{background:0 0;padding:6px 0;margin-left:12px}#activity-widget #the-comment-list .comment-item{background:#fafafa;padding:12px;position:relative}#activity-widget #the-comment-list .avatar{position:absolute;top:13px}#activity-widget #the-comment-list .dashboard-comment-wrap{padding-left:63px}#activity-widget #the-comment-list .dashboard-comment-wrap blockquote{margin:1em 0}#activity-widget #the-comment-list .comment-item h4{font-size:13px;color:#999}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0}#activity-widget #the-comment-list .unapproved{background-color:#fef7f1}#activity-widget #the-comment-list .unapproved:before{content:"";display:block;position:absolute;left:0;top:0;bottom:0;background:#d54e21;width:4px}#activity-widget #the-comment-list .spam-undo-inside .avatar,#activity-widget #the-comment-list .trash-undo-inside .avatar{position:relative;top:0}#dashboard-widgets #dashboard_browser_nag.postbox .inside{margin:10px}.edit-box{display:none}h3:hover .edit-box{display:inline}#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets a{text-decoration:none}#dashboard-widgets h3 a,#dashboard_browser_nag a{text-decoration:underline}#dashboard-widgets h3 .postbox-title-action{position:absolute;right:10px;padding:0;top:5px}.js #dashboard-widgets h3 .postbox-title-action{right:33px}#dashboard-widgets h4{color:#23282d;font-weight:400;font-size:14px;margin:0 0 .2em;padding:0}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.06);box-shadow:inset 0 1px 0 rgba(0,0,0,.06)}#activity-widget .comments #the-comment-list .alt{background-color:transparent}#activity-widget #latest-comments #the-comment-list .comment-item{padding:1em 12px}#latest-comments #the-comment-list .pingback{padding-left:12px!important}#latest-comments #the-comment-list .comment-item:first-child{border-top:none}#latest-comments #the-comment-list .comment-item h4{line-height:1.5em;margin-top:0;color:#666}#latest-comments #the-comment-list .comment-item h4 cite{font-style:normal;font-weight:400}#latest-comments #the-comment-list .comment-item blockquote,#latest-comments #the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#latest-comments #the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:13px}#description-wrap label,#title-wrap label{cursor:text}#title-wrap #title{padding:2px 6px;font-size:1.3em;outline:0}#title-wrap #title-prompt-text{font-size:1.1em;padding:5px 8px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:14px;font-weight:600;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;font-size:13px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:'\2014'}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:125px}#dashboard_browser_nag .browser-icon{margin-top:-35px}#dashboard_browser_nag.postbox.browser-insecure{background-color:#ac1b1b;border-color:#ac1b1b}#dashboard_browser_nag.postbox{background-color:#e29808;background-image:none;border-color:#edc048;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag.postbox.browser-insecure h3{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h3{border-bottom-color:#f6e2ac;background:0 0;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag h3.hndle{border:none;font-weight:600;font-size:20px;padding-top:10px}.postbox#dashboard_browser_nag p a.dismiss{font-size:14px}.postbox#dashboard_browser_nag a,.postbox#dashboard_browser_nag p,.postbox#dashboard_browser_nag p.browser-update-nag{font-size:16px}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}}@media only screen and (min-width:800px) and (max-width:1499px){#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container,#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0;height:0;min-height:0}#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}.index-php .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@media only screen and (min-width:1500px) and (max-width:1800px){#wpbody-content #dashboard-widgets .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right}#dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column,.welcome-panel .welcome-panel-column:first-child{display:block;float:none;width:100%}.welcome-panel .welcome-panel-column li{display:inline-block;margin-right:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}}@media screen and (max-width:782px){#dashboard_recent_comments #the-comment-list .comment-item .avatar{height:30px;width:30px;margin:4px 10px 5px 0}}@media screen and (max-width:600px){.welcome-panel .welcome-panel-close{overflow:hidden;text-indent:40px;white-space:nowrap;width:20px;height:20px;padding:5px;top:5px;right:5px}.welcome-panel .welcome-panel-close:before{font-size:20px;top:5px;left:-35px}}.response-links{display:block;margin-bottom:1em}.response-links a{display:block}.response-links a.comments-edit-item-link{font-weight:600}.response-links a.comments-view-item-link{font-size:12px}.post-com-count-wrapper strong{font-weight:400}.comments-view-item-link{display:inline-block;clear:both}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:nowrap;word-wrap:normal}.column-comments .post-com-count,.column-response .post-com-count{display:inline-block;vertical-align:top}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:5px}.column-comments .comment-count-approved,.column-comments .comment-count-no-comments,.column-response .comment-count-approved,.column-response .comment-count-no-comments{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;-webkit-border-radius:5px;border-radius:5px;background-color:#72777c;color:#fff;font-size:11px;line-height:21px;text-align:center}.ie8 .column-comments .comment-count-approved,.ie8 .column-comments .comment-count-no-comments,.ie8 .column-response .comment-count-approved,.ie8 .column-response .comment-count-no-comments{min-width:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:"";display:block;margin-left:8px;width:0;height:0;border-top:5px solid #72777c;border-right:5px solid transparent}.column-comments .post-com-count-approved:focus .comment-count-approved,.column-comments .post-com-count-approved:hover .comment-count-approved,.column-response .post-com-count-approved:focus .comment-count-approved,.column-response .post-com-count-approved:hover .comment-count-approved{background:#0073aa}.column-comments .post-com-count-approved:focus:after,.column-comments .post-com-count-approved:hover:after,.column-response .post-com-count-approved:focus:after,.column-response .post-com-count-approved:hover:after{border-top-color:#0073aa}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:relative;left:-3px;padding:0 5px;min-width:7px;height:17px;border:2px solid #fff;-webkit-border-radius:11px;border-radius:11px;background:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #ccc}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#777}#replyrow td{padding:2px}#replysubmit{margin:0;padding:0 5px 3px;text-align:center}#replysubmit .button{margin-right:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow h5{margin:.2em 0 0;padding:0 5px;line-height:1.4em;font-size:1em}#commentsdiv #edithead .inside,#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;-webkit-box-shadow:none;box-shadow:none}#replyerror{border-color:#ddd;background-color:#f9f9f9}.commentlist .avatar{vertical-align:text-top}#the-comment-list div.undo,#the-comment-list tr.undo{background-color:#f4f4f4}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fef7f1}#the-comment-list .unapproved th.check-column{border-left:4px solid #d54e21}#the-comment-list .unapproved th.check-column input{margin-left:4px}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}.sorting-indicator:before,th .comment-grey-bubble:before{speak:none;-moz-osx-font-smoothing:grayscale;position:relative;text-decoration:none!important;color:#444}#the-comment-list td,#the-comment-list th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}#the-comment-list tr:last-child td,#the-comment-list tr:last-child th{-webkit-box-shadow:none;box-shadow:none}#the-comment-list tr.unapproved+tr.approved td,#the-comment-list tr.unapproved+tr.approved th{border-top:1px solid rgba(0,0,0,.03)}.vim-current,.vim-current td,.vim-current th{background-color:#e4f2fd!important}th .comment-grey-bubble{height:16px;width:16px}th .comment-grey-bubble:before{content:'\f101';font:400 20px/.5 dashicons;display:inline-block;padding:0;top:4px;left:-4px;vertical-align:top;-webkit-font-smoothing:antialiased}.sorting-indicator:before,th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:'\f142'}table.fixed{table-layout:fixed}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-date,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-posts{width:74px}.fixed .column-comment .comment-author{display:none}.fixed .column-categories,.fixed .column-rel,.fixed .column-response,.fixed .column-role,.fixed .column-tags{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:5.5em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}td.column-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;font-size:14px}td.column-title p,td.plugin-title p{margin:6px 0}table.media .column-title .media-icon{float:left;min-height:60px;margin:0 9px 0 0}table.media .column-title .media-icon img{max-width:60px;height:auto;vertical-align:top}table.media .column-title .has-media-icon~.row-actions{margin-left:70px}table.media .column-title .filename{margin-bottom:.2em}.wp-list-table a{-webkit-transition:none;transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;-webkit-box-shadow:none;box-shadow:none}#comments-form .fixed .column-author{width:20%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{vertical-align:middle;width:160px}.sorting-indicator{display:none;width:10px;height:4px;margin-top:8px;margin-left:7px}.sorting-indicator:before{font:400 20px/1 dashicons;display:inline-block;padding:0;top:-4px;left:-8px;line-height:10px;vertical-align:top;-webkit-font-smoothing:antialiased}.column-comments .sorting-indicator:before{top:0;left:-10px}.wp-list-table .toggle-row:before,th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:'\f140'}.wp-list-table .toggle-row{position:absolute;right:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .wp-list-table .toggle-row:focus:before{outline:#5b9dd9 solid 1px}.wp-list-table .toggle-row:active{-webkit-box-shadow:none;box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;left:10px;-webkit-border-radius:50%;border-radius:50%;display:block;padding:1px 2px 1px 0;color:#666;font:400 20px/1 dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none}.wp-list-table .is-expanded .toggle-row:before{content:'\f142'}tr.wp-locked .locked-indicator{margin-left:6px;height:20px;width:16px}tr.wp-locked .locked-indicator:before{color:#82878c;content:'\f160';display:inline-block;float:left;font:400 20px/1 dashicons;speak:none;vertical-align:middle;margin-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}tr .locked-info{height:0;opacity:0}tr.wp-locked .locked-info{margin-top:8px;height:auto;opacity:1}.locked-text{vertical-align:top}tr.locked-info,tr.wp-locked .locked-info{-webkit-transition:height 1s,opacity .5s;transition:height 1s,opacity .5s}.fixed .column-comments .sorting-indicator{margin-top:3px}#menu-locations-wrap .widefat{width:60%}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;padding:7px 7px 8px 10px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:left;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{display:block}.tablenav-pages a,.tablenav-pages-navspan{font-weight:600;padding:0 2px}.tablenav-pages .current-page{margin:0 2px 0 0;padding-bottom:5px;font-size:13px;text-align:center}.tablenav .total-pages{margin-right:2px}.tablenav #table-paging{margin-left:2px}.tablenav a.button-secondary{display:block;margin:3px 8px 0 0}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:right;height:28px;margin-top:3px;cursor:default;color:#555}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a,.tablenav-pages-navspan{display:inline-block;min-width:17px;border:1px solid #d2d2d2;padding:3px 5px 7px;background:#e4e4e4;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#e8e8e8;background:#ebebeb;color:#b4b4b4}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;-webkit-box-shadow:none;box-shadow:none;outline:0}.tablenav .displaying-num{margin-right:7px}.tablenav .one-page .displaying-num{display:inline-block;margin-top:5px;margin-right:0}.tablenav .actions{padding:2px 8px 0 0}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-right:20px}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#0073aa}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#00a0d2}.tablenav .view-switch{float:right;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 8px 0 2px}.media-toolbar.wp-filter .view-switch{margin:0 12px 0 2px}.view-switch a{float:left;width:28px;height:28px;text-align:center;line-height:24px;text-decoration:none}.view-switch a:before{color:#b4b9be;display:inline-block;font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.view-switch a:focus:before,.view-switch a:hover:before{color:#727272}.view-switch a.current:before{color:#0073aa}.view-switch .view-list:before{content:'\f163'}.view-switch .view-excerpt:before{content:'\f164'}.view-switch .view-grid:before{content:'\f509'}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter .wp-filter{margin-bottom:0}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}.row-actions,.row-actions-visible{padding:2px 0 0}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:600;margin:0 6px}.row-title{font-size:14px!important;font-weight:600}.column-comment .comment-author{margin-bottom:.6em}.column-author img,.column-comment .comment-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{color:#ddd;font-size:13px}.mobile .row-actions,.row-actions.visible,div.comment-item:hover .row-actions,tr:hover .row-actions{visibility:visible}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}#wpbody-content .inline-edit-row fieldset .inline-edit-col,tr.inline-edit-row td{padding:0 .5em}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%}#bulk-titles div a,.inline-edit-row fieldset .inline-edit-date,.plugin-card,.quick-edit-row-post fieldset label.inline-edit-status{float:left}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}.inline-edit-row h4{margin:.2em 0;padding:0;line-height:2.5;text-transform:uppercase}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0;font-style:italic}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;line-height:2.5}.inline-edit-row fieldset.inline-edit-date label{display:inline-block;margin:0;line-height:1.5;vertical-align:baseline}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;width:auto}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{display:block;float:left;width:6em;line-height:2.5}#posts-filter fieldset.inline-edit-date legend{padding:0}.inline-edit-row fieldset.inline-edit-date select{margin:1px;line-height:28px}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:6em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .inline-edit-or{margin:.2em 6px .2em 0;line-height:2.5}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:middle}.inline-edit-row fieldset label textarea{width:100%;height:4em;vertical-align:top}#bulk-titles,ul.cat-checklist{height:12em;border:1px solid #ddd;overflow-y:scroll;padding:0 5px}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.3em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}ul.cat-checklist{margin:0;background-color:#fff}#bulk-titles{display:block;margin:0 0 5px;line-height:140%}.inline-edit-row fieldset ul.cat-checklist input,.inline-edit-row fieldset ul.cat-checklist li{margin:0;position:relative}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-style:normal;font-size:11px}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%}.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{max-width:80%}.ie8 .inline-edit-row #post_parent,.ie8 .inline-edit-row select[name=page_template]{width:250px}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;height:18px;margin:0 3px 0 -2px;overflow:hidden;position:relative;width:20px}#bulk-titles div a:before{position:relative;top:-3px}.plugins tbody,.plugins tbody th.check-column{padding:8px 0 0 2px}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}#update-plugins-table tbody td p{margin-top:0}#update-plugins-table tbody td p strong{font-size:14px}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-left:6px}#update-plugins-table tfoot td.check-column,#update-plugins-table thead td.check-column{padding-top:11px}.plugins,.plugins td,.plugins th{color:#000}.plugins tr{background:#fff}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ol,.plugins .desc ul{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions{font-size:13px}.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th{padding:10px 9px}.plugins .active td,.plugins .active th{background-color:#f7fcfe}.plugins .update td,.plugins .update th{border-bottom:0}.plugin-update-tr td{border-top:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th,.plugins tr.active.plugin-update-tr+tr.inactive td,.plugins tr.active.plugin-update-tr+tr.inactive th{border-top:1px solid rgba(0,0,0,.03);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1;box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1}.plugins .update td,.plugins .update th,.plugins .updated td,.plugins .updated th,.plugins tr.active+tr.inactive.update td,.plugins tr.active+tr.inactive.update th,.plugins tr.active+tr.inactive.updated td,.plugins tr.active+tr.inactive.updated th,.upgrade .plugins tr:last-of-type td,.upgrade .plugins tr:last-of-type th{-webkit-box-shadow:none;box-shadow:none}.plugins .active.update td,.plugins .active.update th,tr.active.update+tr.plugin-update-tr .plugin-update{background-color:#fef7f1}.plugin-update-tr.active td,.plugins .active th.check-column{border-left:4px solid #00a0d2}.plugins .active.update th.check-column,.plugins .active.update+.plugin-update-tr .plugin-update{border-left:4px solid #d54e21}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugin-update-tr .update-message{font-size:13px;font-weight:400;margin:0 10px 8px 31px;padding:6px 12px 8px 40px;background-color:#f7f7f7;background-color:rgba(0,0,0,.03)}.plugin-card .install-now:before,.plugin-card .update-now:before,.plugin-update-tr .update-message:before{color:#d54e21;display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .update-now:before,.plugin-update-tr .update-message:before{content:'\f463'}.plugin-update-tr .update-message:before{margin:0 10px 0 -30px}.plugin-card .install-now:before,.plugin-card .update-now:before{margin:3px 5px 0 -2px}.plugin-card .updating-message:before,.plugin-update-tr .updating-message:before{content:'\f463';-webkit-animation:rotation 2s infinite linear;animation:rotation 2s infinite linear}@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.plugin-card .updated-message:before,.plugin-update-tr .updated-message:before{color:#79ba49;content:'\f147'}.wp-list-table.plugins tbody tr.plugin-update-tr td.plugin-update{overflow:hidden;padding:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}tr.active+tr.plugin-update-tr .plugin-update{background-color:#f7fcfe}tr.active+tr.plugin-update-tr:not(.updated) .plugin-update .update-message{background-color:#fcf3ef}.plugin-install-php h3{clear:both}.plugin-install-php h4{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{margin:0 8px 16px;width:48.5%;width:-webkit-calc(50% - 8px);width:calc(50% - 8px);background-color:#fff;border:1px solid #dedede;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.plugin-card:nth-child(odd){clear:both;margin-left:0}.plugin-card:nth-child(even){margin-right:0}@media screen and (min-width:1600px){.plugin-card{width:30%;width:-webkit-calc(33.1% - 8px);width:calc(33.1% - 8px)}.plugin-card:nth-child(odd){clear:none;margin-left:8px}.plugin-card:nth-child(even){margin-right:8px}.plugin-card:nth-child(3n+1){clear:both;margin-left:0}.plugin-card:nth-child(3n){margin-right:0}}.plugin-card-top{position:relative;padding:20px 20px 10px;min-height:135px}.plugin-action-buttons,div.action-links{margin:0}.plugin-card h4{margin:0 0 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-left:148px;margin-right:120px}.plugin-card .action-links{position:absolute;top:20px;right:20px;width:120px}.plugin-action-buttons{clear:right;float:right;margin-left:2em;margin-bottom:1em;text-align:right}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #dedede;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card .column-rating{line-height:23px}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:left;clear:left;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:right;float:right;clear:right;width:65%;width:-webkit-calc(100% - 180px);width:calc(100% - 180px)}.plugin-icon,.plugin-icon img{width:128px;height:128px}.plugin-card .column-compatibility span:before{font:400 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;left:-2px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.plugin-card .compatibility-incompatible:before{content:'\f158'}.plugin-card .compatibility-compatible:before{content:'\f147'}.plugin-icon{position:absolute;top:20px;left:20px;margin:0 20px 20px 0}.no-plugin-results{color:#999;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table tr.site-archived{background:#ffebe8}.wp-list-table tr.site-mature{background:#fecac2}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-left:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:left}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-right:20px}.plugin-card .desc,.plugin-card .name{margin-right:0}.plugin-card .desc p:first-of-type{margin-top:0}}@media screen and (max-width:782px){.plugins #the-list tr td,.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.tablenav{height:auto}.tablenav.top{margin:20px 0 5px}.tablenav.bottom{position:relative;margin-top:15px}.tablenav br{display:none}.tablenav br.clear{display:block}.form-wrap>p,.tablenav .view-switch,.tablenav.top .actions,.tablenav.top .displaying-num,.tablenav.top .tablenav-pages.one-page,.wp-list-table th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.view-switch a{width:36px;height:36px;line-height:33px}.tablenav.bottom .displaying-num{position:absolute;right:0;top:11px;margin:0;font-size:14px}.tablenav .tablenav-pages{width:100%;height:auto;text-align:center;margin:0 0 25px}.tablenav.bottom .tablenav-pages{margin-top:25px}.tablenav.bottom .tablenav-pages.one-page{margin:15px 0 0;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav-pages .pagination-links a,.tablenav-pages-navspan{padding:9px 16px 12px;font-size:18px}.tablenav-pages-navspan{height:18px}.tablenav-pages .pagination-links .current-page{padding:8px 9px 9px;font-size:16px}.comment-count{font-size:14px}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell;width:35px}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;display:block;width:auto!important}.wp-list-table td.column-primary{padding-right:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 8px 3px 35%}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;left:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:left}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{-webkit-box-shadow:none;box-shadow:none}#the-comment-list .is-expanded td:last-child{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;width:auto;height:auto;margin:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:none}.column-comments .post-com-count [aria-hidden=true],.column-response .post-com-count [aria-hidden=true]{display:none}#edithead label,.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:0;margin-right:.5em}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:static;height:auto;min-width:0;padding:0;border:none;-webkit-border-radius:0;border-radius:0;background:0 0;color:#bb2a2a;font-size:inherit;line-height:inherit;text-align:left}.column-comments .post-com-count-pending:hover,.column-response .post-com-count-pending:hover{color:#dc3232}.widefat tfoot .check-column,.widefat thead .check-column{padding:10px 0}.widefat *{word-wrap:normal}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-size:16px}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong,table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset label.inline-edit-tags{padding:0 .5em}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-left:0}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{width:3em}.inline-edit-row fieldset input[name=aa]{width:4.5em}.inline-edit-row .inline-edit-or{margin:0 6px 0 0}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:left;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#bulk-titles div{margin:.8em .3em}.plugin-card,.plugin-update-tr .update-message{margin-left:0}#bulk-titles div a{height:22px}#wpbody-content #update-themes-table .plugin-title{width:auto}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{-webkit-box-shadow:none;box-shadow:none;border-top:none}.plugins tbody{padding:1px 0 0}.plugins .plugin-update-tr:before,.plugins tr.active+tr.inactive td.column-description,.plugins tr.active+tr.inactive th.check-column{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins .plugin-update-tr:before{content:'';display:table-cell}.plugins .active.update+.plugin-update-tr:before{border-left:4px solid #d54e21;background-color:#fef7f1}.plugins #the-list .plugin-update-tr .plugin-update{border-left:none}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install #the-list td{-webkit-box-shadow:none;box-shadow:none}table.plugin-install #the-list tr{display:block;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-right:0;width:100%}}#save-action .spinner,#show-comments .spinner,#show-comments a,.postarea h3 label{float:left}#poststuff{padding-top:10px;min-width:763px}#poststuff #post-body{padding:0}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#show-comments{overflow:hidden}#lost-connection-notice .spinner{visibility:visible;float:left;margin:0 5px 0 0}#titlediv{position:relative}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#poststuff #titlewrap{border:0;padding:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#777;position:absolute;font-size:1.7em;padding:11px 10px}#wp-content-editor-container,.postbox,form#tags-filter{position:relative}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px}input#link_description,input#link_url{width:98%}#pending{background:0 none;border:0;padding:0;font-size:11px;margin-top:-1px}#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-right:10px;font-size:11px}#editable-post-name-full{display:none}#editable-post-name{background-color:#fffbcc}#editable-post-name input{font-size:13px;height:22px;margin:0;width:16em}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px;background-color:#464646;color:#ccc}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:red;border-bottom-color:red}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}.inside-submitbox #post_status{margin:2px 0 2px -2px}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{min-width:255px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#post-status-info,.postbox{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:0 0;border:0;float:right;padding:0 12px;margin:0}.category-add input[type=text],.category-add select{width:100%;max-width:260px;vertical-align:baseline}#side-sortables .category-add input[type=text],#side-sortables .category-add select{margin:0 0 1em}#side-sortables .add-menu-item-tabs li,.wp-tab-bar li,ul.category-tabs li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js,.ui-tabs-hide,.wp-editor-expand #content-resize-handle,.wp-hidden-children .wp-hidden-child{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#32373c}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:10px 0}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:0 7px 5px}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}ul.add-menu-item-tabs,ul.category-tabs,ul.wp-tab-bar{margin-top:12px}ul.add-menu-item-tabs li,ul.category-tabs li{border:1px solid transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #dfdfdf;border-bottom-color:#fdfdfd;background-color:#fdfdfd}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px}#postimagediv .inside img{max-width:100%;height:auto;width:auto}#post-body .tagsdiv #newtag{margin-right:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{width:100%;border-spacing:0;border:1px solid #e5e5e5;border-top:none;background-color:#f7f7f7;box-shadow:0 1px 1px rgba(0,0,0,.04);z-index:999}#post-status-info td{font-size:12px}.autosave-info{padding:2px 10px;text-align:right}#editorcontent #post-status-info{border:none}#content-resize-handle{background:url(../images/resize.gif) right bottom no-repeat;width:12px;cursor:row-resize}.rtl #content-resize-handle{background:url(../images/resize-rtl.gif) left bottom no-repeat}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}#content-textarea-clone{z-index:-1;position:absolute;top:0;visibility:hidden;overflow:hidden;max-width:100%;border:1px solid transparent}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #e5e5e5}.wp-editor-expand #wp-content-editor-container{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px;border-bottom:0 none}.wp-editor-expand div.mce-statusbar{z-index:1}.wp-editor-expand #post-status-info{border-top:1px solid #e5e5e5}.wp-editor-expand div.mce-toolbar-grp{z-index:999}.mce-fullscreen #wp-content-wrap .mce-edit-area,.mce-fullscreen #wp-content-wrap .mce-menubar,.mce-fullscreen #wp-content-wrap .mce-statusbar,.mce-fullscreen #wp-content-wrap .mce-toolbar-grp{position:static!important;width:auto!important;padding:0!important}.mce-fullscreen #wp-content-wrap .mce-statusbar{visibility:visible!important}.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw,.mce-fullscreen #wp-content-wrap .mce-wp-dfw,.post-php.mce-fullscreen #wpadminbar{display:none}#wp-content-editor-tools{background-color:#f1f1f1;padding-top:20px}#poststuff #post-body.columns-2 #side-sortables{width:280px}#timestampdiv select{height:21px;line-height:14px;padding:0;vertical-align:top;font-size:12px}#aa,#hh,#jj,#mn{padding:1px;font-size:12px}#hh,#jj,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{padding:2px 0 1px;display:inline!important;height:auto!important}#misc-publishing-actions label[for=post_status]:before,#post-body #visibility:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:#82878c}#post-body #visibility:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 2px 0 0;top:0;left:-1px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#post-body #visibility:before{content:'\f177'}.curtime #timestamp:before{content:'\f145';top:-1px}#post-body .misc-pub-revisions:before{content:'\f321'}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}.notification-dialog{position:fixed;top:30%;max-height:70%;left:50%;width:450px;margin-left:-225px;background:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;z-index:1000005;overflow-y:auto}.notification-dialog-background{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000000}#post-lock-dialog .post-locked-message,#post-lock-dialog .post-taken-over{margin:25px}#post-lock-dialog .post-locked-message a.button{margin-right:10px}#post-lock-dialog .post-locked-avatar{float:left;margin:0 20px 20px 0}#post-lock-dialog .wp-tab-first{outline:0}#post-lock-dialog .locked-saving img{float:left;margin-right:3px}#post-lock-dialog.saved .locked-saved,#post-lock-dialog.saving .locked-saving{display:inline}#excerpt{display:block;margin:12px 0 0;height:4em;width:100%}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist br{display:none}.tagchecklist span,.tagchecklist span a{overflow:hidden;display:block;float:left}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist span{margin-right:25px;font-size:13px;line-height:1.8em;cursor:default;max-width:100%;text-overflow:ellipsis}.tagchecklist span a{margin:1px 0 0 -17px;cursor:pointer;width:20px;height:20px;text-indent:0;position:absolute}#poststuff h2{margin-top:20px;font-size:1.5em;margin-bottom:15px;padding:0 0 3px;clear:left}#poststuff h3{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}#poststuff .inside label.deleted,#poststuff .inside label.spam{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}.ie8 #poststuff .inside #page_template,.ie8 #poststuff .inside #parent_id{width:250px}#post-visibility-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f1f1f1}#postcustom #postcustomstuff .submit{border:0;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border:1px solid #dfdfdf;border-spacing:0;background-color:#f9f9f9}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-right:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:left;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:20px;width:20px;margin-right:5px;margin-top:-4px}.post-state-format:before{display:block;height:20px;width:20px;font:400 20px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon:before,.post-state-format:before{color:#ddd;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}a.post-format-icon:hover:before,a.post-state-format:hover:before{color:#00a0d2}#post-formats-select{line-height:2em}#post-formats-select .post-format-icon:before{top:5px}input.post-format{margin-top:1px}label.post-format-icon{margin-left:0;padding:2px 0}.post-format-icon:before{position:relative;display:inline-block;margin-right:7px;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon.post-format-standard:before,.post-state-format.post-format-standard:before,a.post-state-format.format-standard:before{content:'\f109'}.post-format-icon.post-format-image:before,.post-state-format.post-format-image:before,a.post-state-format.format-image:before{content:'\f128'}.post-format-icon.post-format-gallery:before,.post-state-format.post-format-gallery:before,a.post-state-format.format-gallery:before{content:'\f161'}.post-format-icon.post-format-audio:before,.post-state-format.post-format-audio:before,a.post-state-format.format-audio:before{content:'\f127'}.post-format-icon.post-format-video:before,.post-state-format.post-format-video:before,a.post-state-format.format-video:before{content:'\f126'}.post-format-icon.post-format-chat:before,.post-state-format.post-format-chat:before,a.post-state-format.format-chat:before{content:'\f125'}.post-format-icon.post-format-status:before,.post-state-format.post-format-status:before,a.post-state-format.format-status:before{content:'\f130'}.post-format-icon.post-format-aside:before,.post-state-format.post-format-aside:before,a.post-state-format.format-aside:before{content:'\f123'}.post-format-icon.post-format-quote:before,.post-state-format.post-format-quote:before,a.post-state-format.format-quote:before{content:'\f122'}.post-format-icon.post-format-link:before,.post-state-format.post-format-link:before,a.post-state-format.format-link:before{content:'\f103'}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,.wp-tab-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border:1px solid #dfdfdf;background-color:#fdfdfd}.ac_results,.revisions-diff,.revisions-meta,.revisions-tickmarks{background-color:#fff}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}#front-page-warning,#front-static-pages ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.inline-editor ul.cat-checklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,ul.export-filters{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:22px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap label{display:block;padding:2px;font-size:12px}.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field input[type=number],.form-field input[type=tel],.form-field input[type=url],.form-field input[type=search],.form-field textarea{border-style:solid;border-width:1px;width:95%}.form-wrap p,p.description{margin:2px 0 5px;color:#666}.form-wrap p,p.description,p.help,span.description{font-size:13px;font-style:italic}.form-wrap .form-field{margin:0 0 10px;padding:8px 0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h3{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .tagsdiv .howto{margin:0 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw,.ac_results{display:none}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h3{margin:2px 0 12px}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid grey}.wp-customizer .ac_results{z-index:500000}.ac_results li{padding:2px 5px;white-space:nowrap;color:#101010;text-align:left}.ac_over{background-color:#f0f0b8;cursor:pointer}.ac_match{text-decoration:underline}.imgedit-group-top h3 a,a.imgedit-help-toggle,table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}#comment-status-radio label,.links-table td,.links-table th{padding:5px 0}.comment-ays-submit .button-cancel{margin-left:1em}.spam-undo-inside,.trash-undo-inside{margin:1px 8px 1px 0;line-height:16px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle}.stuffbox .editcomment{clear:none}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 3px 5px 0;vertical-align:middle}table.links-table{width:100%;border-spacing:0}.links-table th{font-weight:400;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table td label{margin-right:8px}.links-table td input[type=text],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}.wp-editor-expand #qt_content_dfw,.wp-editor-expand #wp-content-wrap .mce-wp-dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.focus-on #wp-toolbar{opacity:.3}.focus-off #screen-meta,.focus-off #screen-meta-links,.focus-off #wp-toolbar,.focus-off #wpfooter,.focus-off .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:-webkit-transform;transition-property:transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:url(../images/resize-2x.gif) right bottom no-repeat;-webkit-background-size:11px 11px;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background:url(../images/resize-rtl-2x.gif) right bottom no-repeat}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{border:0;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.columns-prefs,.screen-layout{display:none}}@media screen and (max-width:782px){#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px}#poststuff h3{padding:12px}.post-format-options{padding-right:0}.post-format-options a{margin-right:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-right:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}.tagsdiv .newtag,ul.categorychecklist li{margin-bottom:15px}ul.category-tabs li.tabs{padding:15px}ul.categorychecklist ul{margin-top:15px}.category-add input[type=text],.category-add select{max-width:none;margin-bottom:15px}.tagsdiv .newtag{width:100%;height:auto}.tagchecklist{margin:25px 10px}.tagchecklist span{font-size:16px;line-height:1.4}#commentstatusdiv p{line-height:2.8}.mceToolbar *{white-space:normal!important}.mceToolbar td,.mceToolbar tr{float:left!important}.wp_themeSkin a.mceButton{width:30px;height:30px}.wp_themeSkin .mceButton .mceIcon{margin-top:5px;margin-left:5px}.wp_themeSkin .mceSplitButton{margin-top:1px}.wp_themeSkin .mceSplitButton td a.mceAction{padding:6px 3px 6px 6px}.wp_themeSkin .mceSplitButton td a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen{padding-top:6px;padding-bottom:6px;background-position:1px 6px}.wp_themeSkin table.mceListBox{margin:5px}div.quicktags-toolbar input{padding:10px 20px}button.wp-switch-editor{font-size:16px;line-height:1em;margin:7px 0 0 7px;padding:8px 12px}#wp-content-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 20px 0 15px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-top:-3px!important;margin-left:-5px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}.misc-pub-section>a{float:right;font-size:16px}#delete-action,#publishing-action{line-height:47px}#publishing-action .spinner{float:none;margin-top:-2px}.comment-ays td,.comment-ays th{padding-bottom:0}.comment-ays td{padding-top:6px}.links-table #link_rel{max-width:none}.links-table td,.links-table th{padding:10px 0}}@media only screen and (max-width:500px){#wp-content-media-buttons a{font-size:14px;padding:0 10px}}.revisions-control-frame,.revisions-diff-frame{position:relative}.revisions-controls{padding-top:40px;height:100px;z-index:1}.revisions-controls input[type=checkbox]{position:relative;top:-1px;vertical-align:text-bottom}.revisions.pinned .revisions-controls{position:fixed;top:0;height:82px;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.revisions-tickmarks>div{position:absolute;height:100%;border-left:1px solid #a0a5aa;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.comparing-two-revisions.pinned .revisions-controls{height:124px}.revisions .diff-error{position:absolute;text-align:center;margin:0 auto;width:100%;display:none}.revisions.diff-error .diff-error{display:block}.revisions .loading-indicator{position:absolute;vertical-align:middle;opacity:0;width:100%;width:-webkit-calc(100% - 30px);width:calc(100% - 30px);top:50%;top:-webkit-calc(50% - 10px);top:calc(50% - 10px);-webkit-transition:opacity .5s;transition:opacity .5s;filter:alpha(opacity=0)}body.folded .revisions .loading-indicator{margin-left:-32px}.revisions .loading-indicator span.spinner{display:block;margin:0 auto;float:none}.revisions.loading .loading-indicator{opacity:1;filter:alpha(opacity=100)}.revisions .diff{-webkit-transition:opacity .5s;transition:opacity .5s}.revisions.loading .diff{opacity:.5;filter:alpha(opacity=50)}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions.pinned .revisions-meta{-webkit-box-shadow:none;box-shadow:none}.revision-toggle-compare-mode{position:absolute;top:0;right:0}.comparing-two-revisions .revisions-next,.comparing-two-revisions .revisions-previous,.revisions-meta .diff-meta-to strong{display:none}.revisions-controls .author-card .date{color:#777}.revisions-controls .author-card.autosave{color:#d54e21}.revisions-controls .author-card .author-name{font-weight:700}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions.pinned .revisions-buttons{padding:0 11px}.revisions-next,.revisions-previous{position:relative;z-index:1}.revisions-previous{float:left}.revisions-next{float:right}.revisions-controls .wp-slider{max-width:70%;margin:0 auto;top:-3px}.revisions-diff{padding:15px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.arrow:after,.revisions-diff{-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff h3:first-child{margin-top:0}#revisions-meta-restored img,.post-revisions li img{vertical-align:middle}table.diff tbody tr td:nth-child(2){width:4%}table.diff{table-layout:fixed;width:100%;white-space:pre-wrap}.about-wrap h2 .nav-tab,.about-wrap p.wp-credits-list a,.imgedit-wrap .nowrap,.nav-menus-php .item-edit,.sidebar-name h3,.widget-title h4{white-space:nowrap}table.diff col.content{width:auto}table.diff col.content.diffsplit{width:48%}table.diff col.diffsplit.middle{width:auto}table.diff col.ltype{width:30px}table.diff tr{background-color:transparent}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.618;padding:.5em;vertical-align:top;word-wrap:break-word}table.diff td h1,table.diff td h2,table.diff td h3,table.diff td h4,table.diff td h5,table.diff td h6{margin:0}table.diff .diff-deletedline{background-color:#ffe9e9}table.diff .diff-deletedline del{background-color:#faa}table.diff .diff-addedline{background-color:#e9ffe9}table.diff .diff-addedline ins{background-color:#afa}.diff-meta{padding:5px;clear:both;min-height:32px}.diff-title strong{line-height:32px;min-width:60px;text-align:right;float:left;margin-right:5px}.revisions-controls .author-card .author-info{font-size:12px;line-height:16px}.revisions-controls .author-card .author-info,.revisions-controls .author-card .avatar{float:left;margin-left:6px;margin-right:6px}.revisions-controls .author-card .byline{display:block;font-size:12px}.revisions-controls .author-card .avatar{vertical-align:middle}.diff-meta input.restore-revision{float:right;margin-left:6px;margin-right:6px;margin-top:4px}.diff-meta-from{display:none}.comparing-two-revisions .diff-meta-from{display:block}.revisions-tooltip{position:absolute;bottom:105px;margin-right:0;margin-left:-69px;z-index:0;max-width:350px;min-width:130px;padding:8px 4px;opacity:0}.revisions-tooltip.flipped{margin-left:0;margin-right:-70px}.revisions.pinned .revisions-tooltip{display:none!important}.comparing-two-revisions .revisions-tooltip{bottom:145px}.revisions-tooltip-arrow{width:70px;height:15px;overflow:hidden;position:absolute;left:0;margin-left:35px;bottom:-15px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-left:0;margin-right:35px;left:auto;right:0}.revisions-tooltip-arrow>span{left:20px;top:-20px;width:25px;height:25px;transform:rotate(45deg)}.arrow:after,.revisions-tooltip-arrow>span{content:"";position:absolute;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg)}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{left:auto;right:20px}.ie8 .revisions-tooltip-arrow>span{left:15px;top:-25px;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476)"}.ie8 .revisions-tooltip.flipped .revisions-tooltip-arrow>span{right:25px}.revisions-tooltip,.revisions-tooltip-arrow>span{border:1px solid #d7d7d7;background-color:#fff}.revisions-tooltip{display:none}.arrow{width:70px;height:16px;overflow:hidden;position:absolute;left:0;margin-left:-35px;bottom:90px;z-index:10000}.arrow.top{top:-16px;bottom:auto}.arrow.left{left:20%}.arrow:after{z-index:9999;background-color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1);left:20px;top:-20px;width:25px;height:25px;transform:rotate(45deg)}.revisions-tooltip,.revisions-tooltip-arrow:after{border-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.rtl div.revisions-controls>.wp-slider>.ui-slider-handle{margin-right:-10px}.wp-slider.ui-slider{position:relative;border:1px solid #d7d7d7;text-align:left;cursor:pointer}.wp-slider .ui-slider-handle{-webkit-border-radius:50%;border-radius:50%;height:18px;margin-top:-3px;outline:0;position:absolute;width:18px;z-index:2;-ms-touch-action:none;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus,.wp-slider .ui-slider-handle.ui-state-hover{background:#00a0d2;border:1px solid #0073aa;-webkit-box-shadow:inset 0 1px 0 #78c8e6,0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 #78c8e6,0 1px 0 rgba(0,0,0,.15)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:0;left:0;color:#fff;content:"\f229";font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.media-item .media-item-info tr,.wp-slider .ui-slider-range{background-color:transparent}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{font-size:20px!important;margin:-1px 0 0 -1px}.wp-slider .ui-slider-handle.from-handle:before{content:'\f139'}.rtl .wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{content:'\f141'}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:'\f139';right:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-image:none}.wp-slider.ui-slider-horizontal{height:.7em}.wp-slider.ui-slider-horizontal .ui-slider-handle{top:-.25em;margin-left:-.6em}.wp-slider.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.wp-slider.ui-slider-horizontal .ui-slider-range-min{left:0}.wp-slider.ui-slider-horizontal .ui-slider-range-max{right:0}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.revision-tick.completed-false{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){#diff-next-revision,#diff-previous-revision{margin-top:-1em}table.diff{-ms-word-break:break-all;word-break:break-all;word-wrap:break-word}}.media-item .describe{width:100%;border-top:1px solid #dfdfdf;clear:both;cursor:default}#media-items:empty,.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:left;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .describe td{padding:0 8px 8px 0;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 0 0 10px}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-right:6px;margin-left:2px}.media-upload-form .align .field label{display:inline;padding:0 0 0 23px;margin:0 1em 0 3px;font-weight:600}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.describe-toggle-off,.describe-toggle-on,.media-item .edit-attachment{display:block;line-height:36px;float:right;margin-right:10px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.js .html-uploader #plupload-upload-ui,.media-item .startclosed,.media-item .startopen{display:none}.media-upload-form .media-item{min-height:36px;margin-bottom:1px;position:relative;width:100%;background:#fff}.media-upload-form .media-item,.media-upload-form .media-item .error{-webkit-box-shadow:0 1px 0 #dfdfdf;box-shadow:0 1px 0 #dfdfdf}.media-item .filename{line-height:36px;overflow:hidden;margin-left:6px}.media-item .pinkynail{float:left;margin:2px 10px 0 3px;max-width:40px;max-height:32px}.media-item .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;-webkit-border-radius:22px;border-radius:22px;background:#ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;-webkit-border-radius:22px;border-radius:22px;background-color:#0073aa;-webkit-box-shadow:inset 0 0 2px rgba(0,0,0,.3);box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0;color:#fff;text-align:center;line-height:22px;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item .error,.media-upload-form .media-item.error{width:auto;margin:0 0 1px}.media-upload-form .media-item .error{padding:10px 0 10px 14px}.media-item .error-div a.dismiss{display:block;float:right;margin:0 10px 0 15px}.find-box{background-color:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);width:600px;overflow:hidden;margin-left:-300px;position:fixed;top:30px;bottom:30px;left:50%;z-index:100105}.find-box-head{background:#fcfcfc;border-bottom:1px solid #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 36px 0 16px;position:absolute;top:0;left:0;right:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.find-box-search{padding-bottom:16px}.find-box-search .spinner{float:none;left:105px;position:absolute}#find-posts-response,.find-box-search{position:relative}#find-posts-input,#find-posts-search{float:left}#find-posts-input{width:140px;height:28px;margin:0 4px 0 0}.widefat .found-radio{padding-right:0;width:16px}#find-posts-close{width:36px;height:36px;position:absolute;top:0;right:0;cursor:pointer;text-align:center;color:#666}#find-posts-close:hover{color:#00a0d2}#find-posts-close:before{font:400 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:'\f158'}.find-box-buttons{padding:8px 16px;background:#fcfcfc;border-top:1px solid #dfdfdf;position:absolute;bottom:0;left:0;right:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;left:0;right:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #ddd;line-height:1.8em;word-spacing:3px;-webkit-border-radius:6px;border-radius:6px}.drag-drop #drag-drop-area{border:4px dashed #b4b9be;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#a0a5aa;font-size:14px;margin:5px 0;display:none}.drag-drop .drag-drop-inside p{text-align:center}.drag-drop-inside p.drag-drop-info{font-size:20px}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title,.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}#plupload-upload-ui{position:relative}.media-frame.mode-grid,.media-frame.mode-grid .attachments-browser .attachments,.media-frame.mode-grid .media-frame-content,.media-frame.mode-grid .uploader-inline-content{position:static}.media-frame.mode-grid .media-frame-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-bottom:16px;padding:0 16px;border-left:4px solid #dd3d36;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.upload-php .mode-grid .media-sidebar .media-uploader-status{border-bottom:none;padding-bottom:0;max-width:100%}.upload-php .mode-grid .media-sidebar .upload-error{margin:12px 0;padding:4px 0 0;border:none;-webkit-box-shadow:none;box-shadow:none;background:0 0}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors{top:-10px;right:-14px;padding:10px}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:before{content:"\f153";display:block;font:400 16px/1 dashicons;color:#bbb}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;right:auto;left:auto;bottom:auto;padding-top:0;margin-top:0;border:4px dashed #b4b9be}.media-frame.mode-select .attachments-browser.fixed .attachments{position:relative;top:94px;padding-bottom:94px}.media-frame.mode-grid .attachment.details:focus,.media-frame.mode-grid .attachment:focus,.media-frame.mode-grid .selected.attachment:focus{-webkit-box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;outline:0}.media-frame.mode-grid .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc}.media-frame.mode-grid .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe;box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe}.media-frame.mode-grid.mode-select .attachment .thumbnail{opacity:.65}.media-frame.mode-select .attachment.selected .thumbnail{opacity:1}.media-frame.mode-grid .media-toolbar{margin-bottom:15px;height:auto}.media-frame.mode-grid .media-toolbar select{margin:0 10px 0 0;font-size:14px}.media-frame.mode-grid.mode-edit .media-toolbar-secondary>.select-mode-toggle-button{margin:0 8px 0 0;vertical-align:middle}.media-frame.mode-grid .attachments-browser .bulk-select{display:inline-block;margin:0 10px 0 0}.media-frame.mode-grid .search{margin-top:0}.media-frame.mode-grid .spinner{margin-top:16px}.attachments-browser .media-toolbar-secondary>.media-button{margin-right:10px}.media-frame.mode-select .attachments-browser.fixed .media-toolbar{position:fixed;top:32px;left:auto;right:20px;margin-top:0}.media-frame.mode-grid .attachments-browser{padding:0}.media-frame.mode-grid .attachments-browser .attachments{padding:2px}.media-frame.mode-grid .attachments-browser .no-media{color:#999;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:'\f335';font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#777;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-left:1px solid #ddd;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.upload-php .media-modal-close{top:0;right:0}.edit-attachment-frame .edit-media-header .left{right:102px}.edit-attachment-frame .edit-media-header .right{right:51px}.edit-attachment-frame .media-frame-title{left:0;right:150px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{font:400 20px/50px dashicons!important;display:inline;font-weight:300}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .left:hover,.edit-attachment-frame .edit-media-header .right:focus,.edit-attachment-frame .edit-media-header .right:hover,.upload-php .media-modal-close:focus,.upload-php .media-modal-close:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.upload-php .media-modal-close:focus .media-modal-icon:before,.upload-php .media-modal-close:hover .media-modal-icon:before{color:#000}.edit-attachment-frame .edit-media-header .left:before,.rtl .edit-attachment-frame .edit-media-header .right:before{content:'\f341'}.edit-attachment-frame .edit-media-header .right:before,.rtl .edit-attachment-frame .edit-media-header .left:before{content:'\f345'}.edit-attachment-frame .edit-media-header .left.disabled,.edit-attachment-frame .edit-media-header .left.disabled:hover,.edit-attachment-frame .edit-media-header .right.disabled,.edit-attachment-frame .edit-media-header .right.disabled:hover{color:#ccc;background:inherit;cursor:default;pointer-events:none}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{left:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;right:0;left:0;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1)}.edit-attachment-frame .attachment-media-view{float:left;width:65%;height:100%}.edit-attachment-frame .attachment-media-view .thumbnail{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin-bottom:16px;max-width:100%;max-height:90%;max-height:-webkit-calc(100% - 42px);max-height:calc(100% - 42px)}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:6px 8px;line-height:16px}.edit-attachment-frame .attachment-info{overflow:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);border-bottom:0;border-left:1px solid #ddd;background:#f3f3f3}.edit-attachment-frame .attachment-info .details,.edit-attachment-frame .attachment-info .settings{position:relative;overflow:hidden;float:none;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #ddd}.edit-attachment-frame .attachment-info .filename{font-weight:400;color:#666}.edit-attachment-frame .attachment-info .thumbnail{margin-bottom:12px}.attachment-info .actions{margin-bottom:16px}.attachment-info .actions a{display:inline;text-decoration:none}.wp_attachment_details label[for=content]{font-size:13px;line-height:1.5;margin:1em 0}.wp_attachment_details #attachment_caption{height:4em}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative}.imgedit-settings p{margin:8px 0 0}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto;overflow:hidden}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding-right:16px;width:auto;overflow:hidden}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:right;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;background:url(../images/spinner.gif) center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:left}.imgedit-settings .disabled,.media-disabled{color:grey}.A1B1,.wp_attachment_image{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:left;width:32px;border:1px solid #d5d5d5;background:#f1f1f1;margin:0 8px 0 0;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;line-height:28px;color:#777;cursor:pointer}.imgedit-menu div:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;color:#32373c}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;color:#777;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:'\f165'}.imgedit-rleft:before{content:'\f166'}.imgedit-rright:before{content:'\f167'}.imgedit-flipv:before{content:'\f168'}.imgedit-fliph:before{content:'\f169'}.imgedit-undo:before{content:'\f171'}.imgedit-redo:before{content:'\f172'}.imgedit-crop-wrap{position:relative}.imgedit-crop{margin:0 8px 0 0}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 8px 0 3px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 8px 0 3px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 8px 0 3px}.imgedit-applyto img{margin:0 8px 0 0}#poststuff .imgedit-group-top h3{padding:0}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-left:20px}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{margin-bottom:8px;padding:10px}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 0 10px 12px}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;right:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{right:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.upload-php .media-modal-close .media-modal-icon{margin:9px 10px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{right:82px}.edit-attachment-frame .edit-media-header .right{right:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}}.theme-browser .themes{clear:both;padding:0 0 100px}.themes-php .wrap h1{float:left;margin-bottom:15px}.network-admin.themes-php .wrap h1{margin-bottom:0}.themes-php .wrap h1 .button{margin-left:20px}.themes-php .wp-filter-search{position:relative;top:-2px;left:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.themes-php div.error,.themes-php div.notice,.themes-php div.updated{margin:0 0 20px;clear:both}.themes-php div.updated a{text-decoration:underline}.theme-browser .theme{cursor:pointer;float:left;margin:0 4% 4% 0;position:relative;width:30.6%;border:1px solid #dedede;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-shadow:0 1px 1px -1px rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ie8 .theme-browser .theme{width:30%;margin:0 3% 4% 0}.theme-browser .theme:nth-child(3n){margin-right:0}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:pointer}.theme-browser .theme .theme-name{font-size:15px;font-weight:600;height:18px;margin:0;padding:15px;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65)}.theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;position:absolute;bottom:0;right:0;height:38px;padding:9px 10px 0;background:rgba(244,244,244,.7);border-left:1px solid rgba(0,0,0,.05)}.theme-browser .theme.focus .theme-actions,.theme-browser .theme:focus .theme-actions,.theme-browser .theme:hover .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-actions .button-primary{margin-right:3px}.theme-browser .theme .theme-actions .button-secondary{float:none;margin-left:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.theme-browser .theme .theme-screenshot:after{content:'';display:block;padding-top:66.66666%}.theme-browser .theme .theme-screenshot img{height:auto;position:absolute;left:0;top:0;width:100%;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.theme-browser .theme:focus .theme-screenshot,.theme-browser .theme:hover .theme-screenshot{background:#fff}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:.4}.theme-browser .theme .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;position:absolute;top:35%;right:25%;left:25%;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.theme-browser .theme:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}.theme-browser .theme:focus .more-details{opacity:1}.theme-browser .theme.active:focus .theme-actions{display:block}.theme-browser.rendered .theme:focus .more-details,.theme-browser.rendered .theme:hover .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-installed,.theme-browser .theme .theme-update{background:#d54e21;background:rgba(213,78,33,.95);color:#fff;display:block;font-size:13px;font-weight:400;height:48px;line-height:48px;padding:0 10px;position:absolute;top:0;right:0;left:0;border-bottom:1px solid rgba(0,0,0,.25);overflow:hidden}.theme-browser .theme .theme-installed:before,.theme-browser .theme .theme-update:before{content:'\f463';display:inline-block;font:400 20px/1 dashicons;margin:0 6px 0 0;opacity:.8;position:relative;top:5px;speak:none;-webkit-font-smoothing:antialiased}.theme-browser .theme.active .theme-name{background:#2f2f2f;color:#fff;padding-right:110px;font-weight:300;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.5);box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}.theme-browser .customize-control .theme.active .theme-name{padding-right:15px}.theme-browser .theme.active .theme-name span{font-weight:600}.theme-browser .theme.active .theme-actions{background:rgba(49,49,49,.7);border-left:none;opacity:1}.theme-browser .theme.active .theme-actions .button-primary{margin-right:0}.theme-browser .theme .theme-author{background:#23282d;color:#eee;display:none;font-size:14px;margin:0 10px;padding:5px 10px;position:absolute;bottom:56px}.theme-browser .theme.display-author .theme-author{display:block}.theme-browser .theme.display-author .theme-author a{color:inherit;text-decoration:none}.theme-browser .theme.add-new-theme{border:none;-webkit-box-shadow:none;box-shadow:none}.theme-browser .theme.add-new-theme a{color:#999;text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:'';background:0 0;position:absolute;top:0;left:0;right:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #d5d2ca;border:5px dashed rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#e5e5e5;background:rgba(153,153,153,.1);-webkit-border-radius:50%;border-radius:50%;display:inline-block;content:'\f132';-webkit-font-smoothing:antialiased;font:400 74px/115px dashicons;width:100px;height:100px;vertical-align:middle;text-align:center;color:#999;position:absolute;top:30%;left:50%;margin-left:-50px;text-indent:-4px;padding:0;text-shadow:none;z-index:4}.rtl .theme-browser .theme.add-new-theme span:after{text-indent:4px}.theme-browser .theme.add-new-theme a:focus .theme-screenshot,.theme-browser .theme.add-new-theme a:hover .theme-screenshot{background:0 0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{background:#fff;color:#0073aa}.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{border-color:transparent;color:#fff;background:#0073aa;content:''}.theme-browser .theme.add-new-theme .theme-name{background:0 0;text-align:center;-webkit-box-shadow:none;box-shadow:none;font-weight:400;position:relative;top:0;margin-top:-18px;padding-top:0;padding-bottom:48px}.theme-browser .theme.add-new-theme a:focus .theme-name,.theme-browser .theme.add-new-theme a:hover .theme-name{color:#fff;z-index:2}.theme-overlay .theme-backdrop{position:absolute;left:-20px;right:0;top:0;bottom:0;background:#f1f1f1;background:rgba(238,238,238,.9);z-index:10000}.theme-overlay .theme-header{position:absolute;top:0;left:0;right:0;height:48px;border-bottom:1px solid #ddd}.theme-overlay .theme-header button{padding:0}.theme-overlay .theme-header .close{cursor:pointer;height:48px;width:50px;text-align:center;float:right;border:0;border-left:1px solid #ddd;background-color:transparent;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:400 22px/50px dashicons!important;color:#777;display:inline-block;content:'\f335';font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;color:#777;background-color:transparent;height:48px;width:54px;float:left;text-align:center;border:0;border-right:1px solid #ddd;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#ddd;border-color:#ccc;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.theme-overlay .theme-header .left.disabled,.theme-overlay .theme-header .left.disabled:hover,.theme-overlay .theme-header .right.disabled,.theme-overlay .theme-header .right.disabled:hover{color:#ccc;background:inherit;cursor:inherit}.theme-overlay .theme-header .left:before,.theme-overlay .theme-header .right:before{font:400 20px/50px dashicons!important;display:inline;font-weight:300}.theme-overlay .theme-header .left:before{content:"\f341"}.theme-overlay .theme-header .right:before{content:"\f345"}.theme-overlay .theme-about:after,.theme-overlay .theme-wrap:after{clear:both;visibility:hidden;content:".";display:block;height:0}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;left:190px;right:30px;bottom:3%;background:#fff;-webkit-box-shadow:0 1px 20px 5px rgba(0,0,0,.1);box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;box-sizing:border-box;-webkit-overflow-scrolling:touch}.theme-overlay .theme-actions,.theme-overlay .theme-wrap{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}body.folded .theme-overlay .theme-wrap{left:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;left:0;right:0;overflow:auto;padding:2% 4%}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;left:0;right:0;padding:10px 25px 5px;background:#f3f3f3;z-index:30;box-sizing:border-box;border-top:1px solid #eee}.ie8 .theme-overlay .theme-actions{border:1px solid #eee}.theme-overlay .theme-actions a{margin-right:5px;margin-bottom:5px}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#a00;text-decoration:none;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;background:0 0}.theme-overlay .theme-actions .delete-theme{position:absolute;right:10px;bottom:5px}.broken-themes a.delete-theme:focus,.broken-themes a.delete-theme:hover,.theme-overlay .theme-actions .delete-theme:focus,.theme-overlay .theme-actions .delete-theme:hover{background:#d54e21;color:#fff;border-color:#d54e21}.theme-overlay .theme-actions .inactive-theme,.theme-overlay.active .theme-actions .active-theme{display:block}.theme-overlay .theme-screenshots{float:left;margin:0 30px 0 0;width:55%;max-width:880px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;box-sizing:border-box;overflow:hidden;position:relative;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot,.upload-plugin,.upload-theme{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.theme-overlay .screenshot:after{content:'';display:block;padding-top:75%}.theme-overlay .screenshot img{height:auto;position:absolute;left:0;top:0;width:100%}.theme-overlay.small-screenshot .theme-screenshots{position:absolute;width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:350px;width:auto}.theme-overlay .screenshot.thumb{background:#ccc;border:1px solid #eee;float:none;display:inline-block;margin:10px 5px 0;width:140px;height:80px;cursor:pointer}.theme-overlay .screenshot.thumb:after{content:'';display:block;padding-top:100%}.theme-overlay .screenshot.thumb img{cursor:pointer;position:absolute;left:0;top:0;width:100%;height:auto}.theme-overlay .screenshot.selected{background:0 0;border:2px solid #00a0d2}.theme-overlay .screenshot.selected img{opacity:.8}.theme-browser .theme .theme-screenshot.blank,.theme-overlay .screenshot.blank{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.theme-overlay .theme-info{width:40%;float:left}.theme-overlay .current-label{background:#32373c;color:#fff;font-size:11px;display:inline-block;padding:2px 8px;-webkit-border-radius:2px;border-radius:2px;margin:0 0 -10px;user-select:none}.theme-overlay .theme-name{color:#23282d;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3}.theme-overlay .theme-version{color:#999;font-size:13px;font-weight:400;float:none;display:inline-block;margin-left:10px}.theme-overlay .theme-author{color:#686868;font-size:16px;font-weight:400;margin:15px 0 25px}.theme-overlay .theme-author a{text-decoration:none}.theme-overlay .theme-description{color:#555;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.theme-overlay .theme-tags{border-top:3px solid #eee;color:#82878c;font-size:13px;font-weight:400;margin:30px 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#444;font-weight:700;margin-right:5px}.theme-overlay .theme-update-message{background:#fef7f1;border:1px solid #eee;border-left:4px solid #d54e21;-webkit-border-radius:3px;border-radius:3px;padding:5px 20px 10px}.theme-overlay .theme-update{color:#23282d;font-size:18px;display:inline-block;line-height:40px;margin:0}.theme-overlay .parent-theme{background:#f7fcfe;border:1px solid #eee;border-left:4px solid #00a0d2;font-size:14px;font-weight:400;margin-top:30px;padding:10px 10px 10px 20px}.theme-overlay .parent-theme strong{font-weight:700}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;left:auto;right:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 3% 3% 0}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-right:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-right:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 3% 3% 0}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-right:3%}.theme-browser .theme:nth-child(4n){margin-right:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-right:0}.theme-browser .theme:nth-child(even){margin-right:0}.theme-browser .theme:nth-child(odd){margin-right:5%}}@media only screen and (max-width:900px){.theme-overlay .theme-wrap{left:65px}}@media only screen and (max-width:780px){.theme-browser .theme.active .theme-name span,.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;right:0;bottom:0;left:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:0;width:auto}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-right:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-right:0}}@media only screen and (max-width:650px){.theme-overlay .theme-description,.theme-overlay .theme-update{margin-left:0}.theme-overlay .theme-actions .delete-theme{position:relative;right:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;left:0;top:0;right:0;margin:10px 0;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:400 60px/90px dashicons;width:80px;height:80px;top:30%;left:50%;text-indent:0;margin-left:-40px}.single-theme .theme-wrap{margin:0 -12px 0 -10px;padding:10px}.single-theme .theme-overlay .theme-about{padding:10px;overflow:visible}.single-theme .current-label{display:none}.single-theme .theme-overlay .theme-actions{position:static}}.broken-themes{clear:both}.broken-themes table{text-align:left;width:50%;border-spacing:3px;padding:3px}.theme-browser .theme .theme-installed{background:#0073aa}.theme-browser .theme .theme-installed:before{content:'\f147'}.theme-browser .theme.is-installed .theme-actions .button-primary{display:none!important}.theme-install-php .wp-filter{padding:0 20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.theme-install-php a.browse-themes,.theme-install-php.show-upload-theme a.upload{display:none}.theme-install-php.show-upload-theme a.browse-themes{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:0;width:100%;overflow:hidden;position:relative;top:10px}.wp-full-overlay,.wp-full-overlay-sidebar{left:0;bottom:0;top:0;height:100%;position:fixed}.upload-plugin,body.show-upload-theme .upload-theme{display:block}body.show-upload-theme .upload-theme+.wp-filter,body.show-upload-theme .upload-theme+.wp-filter+.theme-browser,p.no-themes{display:none}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;max-width:380px}.upload-plugin .install-help,.upload-theme .install-help{color:#999;font-size:18px;font-style:normal;margin:0;padding:40px 0 0;text-align:center}p.no-themes{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}body.no-results p.no-themes{display:block}.theme-install-php .add-new-theme,body.show-upload-theme p.no-themes{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0;text-align:left}}.theme-details .star-rating{margin:15px 0 0}.theme-details .star-rating span:before{color:#ffb900;content:"\f154";display:inline-block;-webkit-font-smoothing:antialiased;font:400 20px/1 dashicons;vertical-align:top}.star-rating.rating-10 span.one:before,.star-rating.rating-30 span.two:before,.star-rating.rating-50 span.three:before,.star-rating.rating-70 span.four:before,.star-rating.rating-90 span.five:before{content:"\f459"}.star-rating.rating-100>span:before,.star-rating.rating-20 span.one:before,.star-rating.rating-30 span.one:before,.star-rating.rating-40 span.one:before,.star-rating.rating-40 span.two:before,.star-rating.rating-50 span.one:before,.star-rating.rating-50 span.two:before,.star-rating.rating-60 span.one:before,.star-rating.rating-60 span.three:before,.star-rating.rating-60 span.two:before,.star-rating.rating-70 span.one:before,.star-rating.rating-70 span.three:before,.star-rating.rating-70 span.two:before,.star-rating.rating-80 span.four:before,.star-rating.rating-80 span.one:before,.star-rating.rating-80 span.three:before,.star-rating.rating-80 span.two:before,.star-rating.rating-90 span.four:before,.star-rating.rating-90 span.one:before,.star-rating.rating-90 span.three:before,.star-rating.rating-90 span.two:before{content:"\f155"}.theme-details .star-rating .ratings{display:block;line-height:20px;color:#999}.appearance_page_custom-header #headimg{border:1px solid #DFDFDF;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf}div#custom-background-image img{max-width:400px;max-height:300px}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:0 0;z-index:500000;overflow:visible;right:0;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;width:300px;padding:0;margin:0;z-index:10;background:#eee;border-right:none}.widget,.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-left:0!important}.wp-full-overlay.expanded{margin-left:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible;margin-left:-300px}.wp-full-overlay-sidebar:after{content:'';display:block;position:absolute;top:0;bottom:0;right:0;width:3px;z-index:1000}.wp-full-overlay-main{position:absolute;left:0;right:0;top:0;bottom:0;height:100%}#customize-preview.wp-full-overlay-main{background:url(../images/spinner.gif) center center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready{background:0 0}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;left:0;right:0;height:45px;padding:0 15px;line-height:45px;z-index:10;margin:0;border-top:none;-webkit-box-shadow:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-header a.back{margin-top:9px}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:none;border-top:none;-webkit-box-shadow:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header{padding:0}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{display:block;position:relative;float:left;width:45px;height:45px;padding-right:2px;background:#eee;border-right:1px solid #ddd;color:#444;cursor:pointer;text-decoration:none;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-install-overlay .close-full-overlay:focus,.theme-install-overlay .close-full-overlay:hover,.theme-install-overlay .next-theme:focus,.theme-install-overlay .next-theme:hover,.theme-install-overlay .previous-theme:focus,.theme-install-overlay .previous-theme:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:400 22px/1 dashicons;content:"\f335";position:relative;top:7px;left:13px}.theme-install-overlay .previous-theme:before{font:400 20px/1 dashicons;content:"\f341";position:relative;top:6px;left:14px}.theme-install-overlay .next-theme:before{font:400 20px/1 dashicons;content:"\f345";position:relative;top:6px;left:13px}.theme-install-overlay .next-theme.disabled,.theme-install-overlay .next-theme.disabled:focus,.theme-install-overlay .next-theme.disabled:hover,.theme-install-overlay .previous-theme.disabled,.theme-install-overlay .previous-theme.disabled:focus,.theme-install-overlay .previous-theme.disabled:hover{color:#b4b9be;background:#eee;cursor:default;pointer-events:none}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:8px;left:10px;padding:0;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:0!important;border-radius:0!important}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#0073aa}.wp-full-overlay .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar-label{display:inline-block;vertical-align:middle;line-height:20px}.wp-full-overlay .collapse-sidebar-arrow{width:20px;height:20px;margin:0 2px;-webkit-border-radius:50%;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-full-overlay .collapse-sidebar-label{margin-left:3px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar-arrow:before{display:block;content:"\f148";background:#eee;font:400 20px/1 dashicons;speak:none;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:rotate(180.001deg);-ms-transform:rotate(180.001deg);transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:none;-ms-transform:none;transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{-webkit-transition-property:left,right,top,bottom,width,margin;transition-property:left,right,top,bottom,width,margin;-webkit-transition-duration:.2s;transition-duration:.2s}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}.customize-active #customize-container{display:block}.customize-loading #customize-container iframe{opacity:0}.customize-loading #customize-container{background:url(../images/spinner.gif) center center no-repeat fixed #fff;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay{display:none}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .install-theme-info{display:block}.install-theme-info .theme-install{float:right;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin-top:15px;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0;float:left}.theme-details .theme-description{float:left;color:#777;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{float:right;margin:8px 10px 0 0;line-height:26px}.theme-install-overlay .wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.theme-install-overlay .wp-full-overlay-main{background:url(../images/spinner.gif) center center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);-webkit-background-size:15px 123px;background-size:15px 123px}#customize-preview.wp-full-overlay-main,.customize-loading #customize-container,.theme-install-overlay .wp-full-overlay-main{background-image:url(../images/spinner-2x.gif)}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:2px}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:6px;line-height:normal}}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.about-wrap hr{border:0;height:0;margin:0;border-top:1px solid rgba(0,0,0,.1)}.about-wrap img{margin:0;max-width:100%;height:auto;vertical-align:middle}.about-wrap .jetpack-video-wrapper{margin-bottom:0}.wp-badge{background:url(../images/w-logo-white.png?ver=20131202) center 24px no-repeat #0073aa;-webkit-background-size:85px 85px;background-size:85px 85px;color:#78c8e6;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:150px;text-rendering:optimizeLegibility;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.svg .wp-badge{background-image:url(../images/wordpress-logo-white.svg?ver=20131110)}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap h2.nav-tab-wrapper{padding-left:6px}.about-wrap h2 .nav-tab{padding:4px 15px 6px;margin:0 3px -1px 0;font-size:18px;vertical-align:top;border-width:1px}.about-wrap p{line-height:1.6em;font-size:14px}.about-wrap h1{margin:.2em 200px 0 0;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.25em;line-height:1.5em}.about-wrap h4{color:#23282d}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap .about-description,.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6em;font-size:19px}.about-wrap .about-text{margin:1em 200px 1em 0;min-height:60px;color:#777}.about-wrap [class$=col] .col{float:left;position:relative}.about-wrap .two-col .col{margin-right:4.799999999%;width:47.6%}.about-wrap .three-col .col{margin-right:4.999999999%;width:29.95%}.about-wrap .three-col .col:nth-of-type(3n),.about-wrap .two-col .col:nth-of-type(2n){margin-right:0}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #dfdfdf}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .headline-feature h2{margin:50px 0 30px;font-size:2.2em;font-weight:300;line-height:1.3;text-align:left}.about-wrap .headline-feature h3{margin-top:30px;text-align:center}.about-wrap .feature-list h2{margin:30px 0 15px;text-align:center}.about-wrap .feature-section h4{margin:1.4em 0 .6em;font-size:1em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .feature-video{position:relative;margin:40px 0;padding-bottom:56.25%;width:100%;height:0;text-align:center}.about-wrap .feature-video embed{position:absolute;top:0;left:0;width:100%;height:100%}.about-wrap .featured-image{text-align:center}.about-wrap .feature-section{overflow:hidden;padding:0 0 40px;border-bottom:1px solid rgba(0,0,0,.1)}.about-wrap .headline-feature .feature-section{margin:0 auto;max-width:95%}.about-wrap .changelog.feature-section .col,.about-wrap .feature-section:not(.under-the-hood) .col{margin-top:40px}.about-wrap .feature-section .media-container{border:1px solid #ddd;overflow:hidden}.about-wrap .feature-section .svg-container{padding:50px 0;text-align:center;background-color:#e1e1e3}.about-wrap .feature-section .svg-container img{max-width:150px}.about-wrap .changelog{margin-bottom:40px}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:700}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-left:115px}.about-wrap h4.wp-people-group{margin-top:2.6em;font-size:16px}.about-wrap ul.wp-people-group{overflow:hidden;padding:0 5px;margin:0 -15px 0 -5px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{display:inline-block;vertical-align:top;margin-right:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap li.wp-person img.gravatar{float:left;margin:0 10px 10px 0;padding:2px;width:60px;height:60px}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;font-weight:400;line-height:1.6em;text-decoration:none}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:700}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}@media screen and (max-width:782px){.about-wrap .feature-section{padding:0;border-bottom:none}.about-wrap [class$=col] .col{float:none;width:100%;margin:40px 0 0;padding:0 0 40px;border-bottom:1px solid rgba(0,0,0,.1)}.about-wrap .three-col img{display:block;margin:0 auto}.about-wrap .feature-list .col{margin:0;padding:0;border-bottom:none}.about-wrap .headline-feature .feature-section{max-width:100%}.about-wrap .feature-list .feature-section{padding:0 0 40px}}@media only screen and (max-width:500px){.about-wrap{margin-right:20px;margin-left:10px}.about-wrap .about-text,.about-wrap h1{margin-right:0}.about-wrap .about-text{margin-bottom:.25em}.about-wrap .wp-badge{position:relative;margin-bottom:1.5em;width:100%}.about-wrap h2.nav-tab-wrapper{padding-left:0;border-bottom:0}.about-wrap h2 .nav-tab{margin-top:10px;margin-right:10px;border-bottom:1px solid #ccc}.about-wrap .feature-section .svg-container{padding-top:20px;padding-bottom:20px}.about-wrap .headline-feature .feature-section .col,.about-wrap .three-col .col{width:100%!important;float:none!important}}@media only screen and (max-width:400px){.about-wrap .feature-list svg{margin-top:15px;height:65px;width:65px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-left:80px}}.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 5px 3px 8px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}#nav-menus-frame{margin-left:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.blank-slate .menu-name{height:2em}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#999;font-style:italic;font-weight:400;margin-left:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus select{float:left;margin-right:6px}.manage-menus .selected-menu{float:left;margin:5px 6px 0 0}.manage-menus .submit-btn{float:left;margin-top:1px}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings dl{margin:0 0 10px;overflow:hidden;padding-left:18%}.menu-settings dd{float:left;margin:0;width:100%}.menu-settings dt{float:left;clear:both;width:21.951%;padding:3px 0 0;margin-left:-21.951%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#999;font-size:11px}#add-custom-link .howto,#cancel-save{font-size:12px}#menu-management-liquid{float:left;min-width:100%;margin-top:3px}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%;background:#f5f5f5}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:0 10px 10px;border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #dfdfdf;margin-bottom:0}#nav-menu-header .menu-name-label{margin-top:4px}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:600}#select-nav-menu-container{text-align:right;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations tr+tr td{padding-top:0}.widefat .menu-locations td{vertical-align:middle}.menu-location-title label{font-weight:700}.menu-location-menus select{float:left}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:left;width:160px;margin-right:5px}.locations-row-links{float:left;margin:6px 0 0 6px}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-right:3px;border-right:1px solid #ccc}#wpbody .open-label{display:block;float:left}#wpbody .open-label span{padding-right:10px}.js .input-with-default-title{color:#a0a5aa;font-style:italic}#menu-management .inside{padding:0 10px}.accordion-container .howto input,.postbox .howto input{width:180px;float:right}.accordion-container .outer-border{margin:0}.customlinkdiv .howto input{width:180px}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:right}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}.nav-menus-php .add-new-menu-action{float:left;margin:6px 0 0 6px;line-height:15px}.nav-menus-php .meta-sep,.nav-menus-php .submitcancel,.nav-menus-php .submitdelete{display:block;float:left;margin:6px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;margin-left:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:right}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px}.menu-item-textbox{width:180px}.nav-menus-php .howto span{margin-top:6px;display:block;float:left}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:0 5px}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-right:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #dfdfdf;position:relative;padding:10px 15px;height:auto;min-height:20px;width:382px;line-height:30px;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#999}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;border-color:#f1acb1}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}#cancel-save,.item-controls a:hover,.js .sidebar-name{cursor:pointer}.menu li.deleting .menu-item-handle{background-image:none;background-color:#f66}.menu-item-handle .item-title{font-size:13px;font-weight:600;line-height:20px;display:block;margin-right:13em}.menu-item-handle .menu-item-title.no-title{color:#999}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:30px}.menu-item-depth-2{margin-left:60px}.menu-item-depth-3{margin-left:90px}.menu-item-depth-4{margin-left:120px}.menu-item-depth-5{margin-left:150px}.menu-item-depth-6{margin-left:180px}.menu-item-depth-7{margin-left:210px}.menu-item-depth-8{margin-left:240px}.menu-item-depth-9{margin-left:270px}.menu-item-depth-10{margin-left:300px}.menu-item-depth-11{margin-left:330px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-30px}.menu-item-depth-2 .menu-item-transport{margin-left:-60px}.menu-item-depth-3 .menu-item-transport{margin-left:-90px}.menu-item-depth-4 .menu-item-transport{margin-left:-120px}.menu-item-depth-5 .menu-item-transport{margin-left:-150px}.menu-item-depth-6 .menu-item-transport{margin-left:-180px}.menu-item-depth-7 .menu-item-transport{margin-left:-210px}.menu-item-depth-8 .menu-item-transport{margin-left:-240px}.menu-item-depth-9 .menu-item-transport{margin-left:-270px}.menu-item-depth-10 .menu-item-transport{margin-left:-300px}.menu-item-depth-11 .menu-item-transport{margin-left:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{display:inline-block;padding:12px 10px;color:#666;font-size:12px;line-height:18px}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls .item-order{padding-right:10px}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:40px;margin-right:0!important;text-indent:100%;outline:0;overflow:hidden}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:402px;padding:10px 0 10px 10px;position:relative;z-index:10;border:1px solid #e5e5e5;border-top:none;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move a{display:none;margin:0 2px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em auto;text-align:center}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;border:1px solid #dfdfdf;color:#777;font-size:12px;font-style:italic}.hidden-field,.nav-menus-php .blank-slate .menu-settings{display:none}.link-to-original a{padding-left:4px;font-style:normal}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left}.description-thin{width:190px}.description-wide{width:390px}.menu-item-actions{padding-top:15px}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 6px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:4px 0 1px}.nav-menus-php .delete-action{float:left;margin-top:2px}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid #0073aa;padding:1px 2px;color:#0073aa;text-decoration:none}.nav-menus-php .submitbox .submitcancel:hover{background:#0073aa;color:#fff}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media screen and (max-width:782px){body.nav-menus-php{min-width:0!important}#nav-menus-frame{margin-left:0;float:none;width:100%}#wpbody-content #menu-settings-column{display:block;width:100%;float:none;margin-left:0}#side-sortables .add-menu-item-tabs{margin:15px 0 14px}ul.add-menu-item-tabs li.tabs{padding:13px 15px 14px}.nav-menus-php .item-controls .item-type{margin-top:2px}.nav-menus-php .customlinkdiv .howto input{width:65%}.nav-menus-php .quick-search{width:85%}#menu-management-liquid{margin-top:25px}.nav-menus-php .menu-name-label.howto span{margin-top:13px}.menu-name-label #menu-name{margin-top:4px}.nav-menus-php .major-publishing-actions .publishing-action{margin-top:6px}.nav-menus-php .delete-action{font-size:14px;line-height:50px;margin-top:12px}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide,.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings dl{padding-left:0}.menu-settings dd{float:none;width:100%;margin-bottom:15px}.menu-settings dt{float:none;width:auto;margin-left:0;margin-bottom:15px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}}.widget{margin:0 auto 10px;position:relative;box-sizing:border-box}.widget-top{font-size:13px;font-weight:600;background:#f7f7f7}.widget-top a.widget-action,.widget-top a.widget-action:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;text-decoration:none}.widget-title h4{margin:0;padding:15px;line-height:1;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.widgets-holder-wrap .widget-inside{border-top:none;padding:1px 15px 15px;line-height:16px}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#666}.deleting .widget-title,.deleting .widget-top a.widget-action:after{color:#a0a5aa}.widget.ui-draggable-dragging{min-width:100%}.widget.ui-sortable-helper{opacity:.8}.widget-placeholder{border:1px dashed #b4b9be;margin:0 auto 10px;height:45px;width:100%;box-sizing:border-box}.sidebar-name,.widget-placeholder{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}#widgets-right .widget-placeholder{margin-top:0}#widgets-right .closed .widget-placeholder{height:0;border:0;margin-top:-10px}.sidebar-name{position:relative;box-sizing:border-box}.sidebar-name-arrow{position:absolute;top:0;right:0;bottom:0}.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#777}#widgets-right .widgets-holder-wrap .description{padding-left:7px;padding-right:7px}div.widget-liquid-left{margin:0;width:38%;float:left}div.widget-liquid-right{float:right;width:58%}div#widgets-left{padding-top:12px}div#widgets-left .closed .sidebar-name,div#widgets-left .inactive-sidebar.closed .sidebar-name{margin-bottom:10px}div#widgets-left .sidebar-name h3{padding:10px 0;margin:0 10px 0 0}div#widgets-left .sidebar-name .sidebar-name-arrow:before{right:0;top:4px;padding:4px 6px 4px 4px}#widgets-left #available-widgets,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;-webkit-box-shadow:none;box-shadow:none}#available-widgets .widget-action{display:none}#available-widgets .widget{margin:0}#available-widgets .widget:nth-child(odd){clear:both}#available-widgets .widget .widget-description{display:block;padding:10px 15px;font-size:12px}#available-widgets #widget-list{position:relative}#widgets-left .inactive-sidebar{clear:both;width:100%;background:0 0;padding:0;margin:0 0 20px;border:none;-webkit-box-shadow:none;box-shadow:none}#widgets-left .inactive-sidebar.first{margin-top:40px}div#widgets-left .inactive-sidebar .widget.expanded{left:auto}.widget-title-action{float:right;position:relative}div#widgets-left .inactive-sidebar .widgets-sortables{min-height:42px;padding:0;background:0 0;margin:0;position:relative}div#widgets-right:after{content:".";display:block;height:0;clear:both;visibility:hidden}div#widgets-right .sidebars-column-1,div#widgets-right .sidebars-column-2{max-width:450px}div#widgets-right .widgets-holder-wrap{margin:10px 0 0}div#widgets-right .sidebar-description{min-height:20px;margin-top:-5px}div#widgets-right .sidebar-name h3{padding:15px 7px}div#widgets-right .sidebar-name .sidebar-name-arrow:before{right:0;top:4px}div#widgets-right .widget-top{padding:0}div#widgets-right .widgets-sortables{padding:0 8px;margin-bottom:9px;position:relative;min-height:123px}div#widgets-right .closed .widgets-sortables{min-height:0;margin-bottom:0}.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#777;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.widgets_access #widgets-left .widget .widget-top{cursor:auto}.widgets_access #wpwrap .widget-control-edit,.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description,.widgets_access #wpwrap .widgets-holder-wrap.closed .widget{display:block}.widgets_access #widgets-left .widget .widget-top:hover,.widgets_access #widgets-right .widget .widget-top:hover{border-color:#ddd}#available-widgets .widget-control-edit .edit,#widgets-left .inactive-sidebar .widget-control-edit .add,#widgets-right .widget-control-edit .add{display:none}.editwidget .widget-inside,.widget-control-edit{display:block;padding:0 15px}.widget-control-edit{color:#666;background:#EEE;line-height:43px;border-left:1px solid #DDD}#widgets-left .widget-control-edit:hover,#widgets-right .widget-control-edit:hover{color:#fff;background:#444;border-left:0;outline:#444 solid 1px}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-control-actions{margin-top:20px}.js .closed br.clear,.js .widgets-holder-wrap.closed .sidebar-description,.js .widgets-holder-wrap.closed .widget{display:none}.js .widgets-holder-wrap.closed .widget.ui-sortable-helper{display:block}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widget-description,.widget-inside,.widgets_access #access-on,.widgets_access .sidebar-name-arrow,.widgets_access .widget-action,.widgets_access .widget-holder .description{display:none}.widget-inside{background:#fff}#removing-widget{display:none;font-weight:400;padding-left:15px;font-size:12px;line-height:1;color:#000}.js #removing-widget{color:#00a0d2}.widgets_access #widget-list,.widgets_access .widget-holder{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;opacity:.2;pointer-events:none}.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question{opacity:1;pointer-events:auto}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.widgets-chooser ul.widgets-chooser-sidebars{margin:0;list-style-type:none;max-height:300px;overflow:auto}.widgets-chooser{display:none}.widgets-chooser ul{border:1px solid #ccc}.widgets-chooser li{padding:10px 15px 10px 35px;border-bottom:1px solid #ccc;background:#fff;margin:0;cursor:pointer;outline:0;position:relative;-webkit-transition:background .2s ease-in-out;transition:background .2s ease-in-out}.widgets-chooser li:focus,.widgets-chooser li:hover{background:rgba(255,255,255,.7)}.widgets-chooser li:focus:before{content:'\f147';display:block;-webkit-font-smoothing:antialiased;font:400 26px/1 dashicons;color:#999;position:absolute;top:7px;left:5px}.widgets-chooser li:last-child{border:none}.widgets-chooser li.widgets-chooser-selected{background:#00a0d2;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{content:'\f147';display:block;-webkit-font-smoothing:antialiased;font:400 26px/1 dashicons;color:#fff;position:absolute;top:7px;left:5px}.locale-he-il em,.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{font-style:normal}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px;text-align:center}.widgets-chooser button{margin-right:5px}#available-widgets .widget .widget-top{cursor:pointer}#available-widgets .widget.ui-draggable-dragging .widget-top{cursor:move}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-right:none;padding-right:0}#widgets-left #available-widgets .widget-top,#widgets-left .inactive-sidebar .widgets-sortables,#widgets-left .sidebar-name{margin-right:0}div.widget-liquid-right{width:100%;float:none}div.widget{margin:0 auto 10px!important;max-width:480px}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@media screen and (max-width:320px){div.widget{max-width:320px}}@media only screen and (min-width:1250px){#widgets-left #available-widgets .widget{width:49%;float:left}.widget.ui-draggable-dragging{min-width:49%}#widgets-left #available-widgets .widget:nth-child(even){float:right}#widgets-right .sidebars-column-1,#widgets-right .sidebars-column-2{float:left;width:49%}#widgets-right .sidebars-column-1{margin-right:2%}#widgets-right.single-sidebar .sidebars-column-1,#widgets-right.single-sidebar .sidebars-column-2{float:none;width:100%;margin:0}}.site-icon-preview .favicon-preview{margin:5px 0 20px;overflow:hidden;position:relative;max-width:180px}.site-icon-preview .browser-title,.site-icon-preview .favicon{height:16px;left:88px;overflow:hidden;position:absolute;top:16px}.site-icon-preview .favicon{width:16px}.site-icon-preview .browser-title{left:109px}.site-icon-preview .app-icon-preview{background-color:#000;-webkit-border-radius:16px;border-radius:16px;height:64px;overflow:hidden;width:64px;margin-top:5px}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-right:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:0}}
\ No newline at end of file
+ */.ui-draggable-handle,.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.accordion-section{border-bottom:1px solid #dfdfdf;margin:0}.accordion-section.open:hover{border-bottom-color:#dfdfdf}.accordion-section-content{display:none;padding:10px 20px 15px;overflow:hidden;background:#fff}.accordion-section-title{margin:0;padding:12px 15px 15px;position:relative;border-left:1px solid #dfdfdf;border-right:1px solid #dfdfdf;user-select:none}.js .accordion-section-title{cursor:pointer}.js .accordion-section-title:after{position:absolute;top:12px;right:10px;z-index:1}.accordion-section-title:focus{outline:0}.accordion-section-title:focus:after,.accordion-section-title:hover:after{border-color:#a0a5aa transparent}.cannot-expand .accordion-section-title{cursor:auto}.cannot-expand .accordion-section-title:after{display:none}.control-section .accordion-section-title{border-left:none;border-right:none;padding:10px 10px 11px 14px;line-height:21px;background:#fff}.control-section .accordion-section-title:after{top:11px}.js .control-section .accordion-section-title:focus,.js .control-section .accordion-section-title:hover,.js .control-section.open .accordion-section-title,.js .control-section:hover .accordion-section-title{color:#23282d;background:#f5f5f5}.control-section.open .accordion-section-title{border-bottom:1px solid #dfdfdf}.network-admin .edit-site-actions{margin-top:0}.my-sites{display:block;overflow:auto;zoom:1}.my-sites li{display:block;padding:8px 3%;min-height:130px;margin:0}@media only screen and (max-width:599px){.my-sites li{min-height:0}}@media only screen and (min-width:600px){.my-sites.striped li{background-color:#fff;position:relative}.my-sites.striped li:after{content:"";width:1px;height:100%;position:absolute;top:0;right:0;background:#ccc}}@media only screen and (min-width:600px) and (max-width:699px){.my-sites li{float:left;width:44%}.my-sites.striped li{background-color:#fff}.my-sites.striped li:nth-of-type(2n+1){clear:left}.my-sites.striped li:nth-of-type(2n+2):after{content:none}.my-sites li:nth-of-type(4n+1),.my-sites li:nth-of-type(4n+2){background-color:#f9f9f9}}@media only screen and (min-width:700px) and (max-width:1199px){.my-sites li{float:left;width:27.333333%;background-color:#fff}.my-sites.striped li:nth-of-type(3n+3):after{content:none}.my-sites li:nth-of-type(6n+1),.my-sites li:nth-of-type(6n+2),.my-sites li:nth-of-type(6n+3){background-color:#f9f9f9}}@media only screen and (min-width:1200px) and (max-width:1399px){.my-sites li{float:left;width:21%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(4n+1){clear:left}.my-sites.striped li:nth-of-type(4n+4):after{content:none}.my-sites li:nth-of-type(8n+1),.my-sites li:nth-of-type(8n+2),.my-sites li:nth-of-type(8n+3),.my-sites li:nth-of-type(8n+4){background-color:#f9f9f9}}@media only screen and (min-width:1400px) and (max-width:1599px){.my-sites li{float:left;width:16%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(5n+1){clear:left}.my-sites.striped li:nth-of-type(5n+5):after{content:none}.my-sites li:nth-of-type(10n+1),.my-sites li:nth-of-type(10n+2),.my-sites li:nth-of-type(10n+3),.my-sites li:nth-of-type(10n+4),.my-sites li:nth-of-type(10n+5){background-color:#f9f9f9}}@media only screen and (min-width:1600px){.my-sites li{float:left;width:12.666666%;padding:8px 2%;background-color:#fff}.my-sites.striped li:nth-of-type(6n+1){clear:left}.my-sites.striped li:nth-of-type(6n+6):after{content:none}.my-sites li:nth-of-type(12n+1),.my-sites li:nth-of-type(12n+2),.my-sites li:nth-of-type(12n+3),.my-sites li:nth-of-type(12n+4),.my-sites li:nth-of-type(12n+5),.my-sites li:nth-of-type(12n+6){background-color:#f9f9f9}}@media only screen and (min-width:769px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:860px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (min-width:980px){#col-left{width:35%}#col-right{width:65%}}@media only screen and (max-width:768px){#col-left,#col-right{width:100%}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){div.star-holder,div.star-holder .star-rating{background:url(../images/stars-2x.png?ver=20121108) bottom left repeat-x;-webkit-background-size:21px 37px;background-size:21px 37px}.spinner{background-image:url(../images/spinner-2x.gif)}#bulk-titles div a,#bulk-titles div a:hover,#screen-meta-links a.show-settings,.curtime #timestamp,.meta-box-sortables .postbox:hover .handlediv,.sidebar-name-arrow,.sidebar-name:hover .sidebar-name-arrow,.tagchecklist span a,.tagchecklist span a:hover,.widget-top a.widget-action,.widget-top a.widget-action:hover{background:0 0!important}}@-ms-viewport{width:device-width}@media screen and (max-width:782px){#template div,#templateside{float:none;width:auto}html.wp-toolbar{padding-top:46px}body{min-width:240px;overflow-x:hidden}body *{-webkit-tap-highlight-color:rgba(0,0,0,0)!important}#wpcontent{position:relative;margin-left:0;padding-left:10px}#wpbody-content{padding-bottom:100px}.wrap{margin-right:12px;margin-left:0}.col-wrap{padding:0}#collapse-menu,#screen-meta,#screen-meta-links,.post-format-select{display:none!important}.wrap .add-new-h2,.wrap .add-new-h2:active,.wrap .page-title-action,.wrap .page-title-action:active{padding:10px 15px;font-size:14px;white-space:nowrap}.wp-color-result{height:auto;padding-left:45px}.wp-color-result:after{font-size:14px;height:auto;padding:6px 14px}.media-upload-form div.error,.notice,.wrap div.error,.wrap div.updated{margin:20px 0 10px;padding:5px 10px;font-size:14px;line-height:175%}.wp-core-ui .notice.is-dismissible{padding-right:46px}.notice-dismiss{padding:13px}.wrap .icon32+h2{margin-top:-2px}.wp-responsive-open #wpbody{right:-190px}code{word-wrap:break-word}.postbox{font-size:14px}.metabox-holder .postbox>h3,.metabox-holder .stuffbox>h3,.metabox-holder h2,.metabox-holder h3.hndle{padding:12px}.postbox .handlediv{margin-top:3px}.subsubsub{font-size:16px;text-align:center;margin-bottom:15px}#templateside li{margin:0}#templateside li a{display:block;padding:5px}#templateside .highlight{padding:5px;margin-left:-5px;margin-top:-5px}#template div{margin:0}#template textarea{width:100%}.fileedit-sub .alignright{margin-top:15px}#comments-form .checkforspam,#wpfooter{display:none}.edit-comment-author{margin:2px 0 0}.filter-drawer .filter-group-feature input,.filter-drawer .filter-group-feature label{line-height:25px}}@media screen and (max-width:600px){#wpwrap.wp-responsive-open,div#post-body.metabox-holder.columns-1{overflow-x:hidden}html.wp-toolbar{padding-top:0}#wpbody{padding-top:46px}.wrap h2.nav-tab-wrapper,h1.nav-tab-wrapper,h3.nav-tab-wrapper{padding-left:0;border-bottom:0}h1 .nav-tab,h2 .nav-tab,h3 .nav-tab{margin-top:10px;margin-right:10px;border-bottom:1px solid #ccc}}#pressthis-code-wrap,textarea{overflow:auto}@media screen and (max-width:320px){#network_dashboard_right_now .subsubsub{font-size:14px;text-align:left}}input,textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=text],input[type=password],input[type=checkbox],input[type=color],input[type=date],input[type=datetime],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=radio],input[type=tel],input[type=time],input[type=url],input[type=week],input[type=search],select,textarea{border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);background-color:#fff;color:#32373c;outline:0;-webkit-transition:50ms border-color ease-in-out;transition:50ms border-color ease-in-out}input[type=text]:focus,input[type=password]:focus,input[type=checkbox]:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=radio]:focus,input[type=tel]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,input[type=search]:focus,select:focus,textarea:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}input[type=number]{line-height:inherit}input[type=checkbox],input[type=radio]{border:1px solid #b4b9be;background:#fff;color:#555;clear:none;cursor:pointer;display:inline-block;line-height:0;height:16px;margin:-4px 4px 0 0;outline:0;padding:0!important;text-align:center;vertical-align:middle;width:16px;min-width:16px;-webkit-appearance:none;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-webkit-transition:.05s border-color ease-in-out;transition:.05s border-color ease-in-out}input[type=radio]:checked+label:before{color:#82878c}.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:hover{color:#00a0d2}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio],td>input[type=checkbox]{margin-top:0}.wp-admin p label input[type=checkbox]{margin-top:-4px}.wp-admin p label input[type=radio]{margin-top:-2px}input[type=radio]{-webkit-border-radius:50%;border-radius:50%;margin-right:4px;line-height:10px}input[type=checkbox]:checked:before,input[type=radio]:checked:before{float:left;display:inline-block;vertical-align:middle;width:16px;font:400 21px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}input[type=checkbox]:checked:before{content:"\f147";margin:-3px 0 0 -4px;color:#1e8cbe}input[type=radio]:checked:before{content:"\2022";text-indent:-9999px;-webkit-border-radius:50px;border-radius:50px;font-size:24px;width:6px;height:6px;margin:4px;line-height:16px;background-color:#1e8cbe}@-moz-document url-prefix(){.form-table input.tog,input[type=checkbox],input[type=radio]{margin-bottom:-1px}}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration{display:none}.ie8 input[type=password]{font-family:sans-serif}button,input,select,textarea{font-family:inherit;font-size:inherit;font-weight:inherit}input,select,textarea{font-size:14px;-webkit-border-radius:0;border-radius:0}textarea{padding:2px 6px;line-height:1.4}.wp-admin input[type=file]{padding:3px 0}label{cursor:pointer}input,select{margin:1px;padding:3px 5px}input.code{padding-top:6px}textarea.code{line-height:1.4;padding:4px 6px 1px}input.readonly,input[readonly],textarea.readonly,textarea[readonly]{background-color:#eee}.wp-core-ui :-moz-placeholder,:-moz-placeholder{color:#a9a9a9}.form-invalid input,.form-invalid input:focus,.form-invalid select,.form-invalid select:focus{border-color:#dc3232!important;-webkit-box-shadow:0 0 2px rgba(204,0,0,.8);box-shadow:0 0 2px rgba(204,0,0,.8)}.form-table .form-required.form-invalid td:after{content:"\f534";font:400 20px/1 dashicons;color:#dc3232;margin-left:-25px;vertical-align:middle}.form-table .form-required.user-pass1-wrap.form-invalid td:after{content:''}.form-table .form-required.user-pass1-wrap.form-invalid .password-input-wrapper:after{content:'\f534';font:400 20px/1 dashicons;color:#dc3232;margin:0 6px 0 -29px;vertical-align:middle}.form-input-tip{color:#666}input.disabled,input:disabled,select.disabled,select:disabled,textarea.disabled,textarea:disabled{background:rgba(255,255,255,.5);border-color:rgba(222,222,222,.75);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.04);box-shadow:inset 0 1px 2px rgba(0,0,0,.04);color:rgba(51,51,51,.5)}input[type=file].disabled,input[type=file]:disabled,input[type=range].disabled,input[type=range]:disabled{background:0 0;-webkit-box-shadow:none;box-shadow:none}input[type=checkbox].disabled,input[type=checkbox].disabled:checked:before,input[type=checkbox]:disabled,input[type=checkbox]:disabled:checked:before,input[type=radio].disabled,input[type=radio].disabled:checked:before,input[type=radio]:disabled,input[type=radio]:disabled:checked:before{opacity:.7}.wp-admin select{padding:2px;line-height:28px;height:28px}.wp-admin .button-cancel{padding:0 5px;line-height:2}.meta-box-sortables select{max-width:100%}.wp-admin select[multiple]{height:auto}.submit{padding:1.5em 0;margin:5px 0;-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;border:none}p.submit{text-align:left;max-width:100%;margin-top:20px;padding-top:10px}.textright p.submit{border:none;text-align:right}table.form-table+input+input+p.submit,table.form-table+input+p.submit,table.form-table+p.submit{border-top:none;padding-top:0}#major-publishing-actions input,#minor-publishing-actions .preview,#minor-publishing-actions input{text-align:center}input.all-options,textarea.all-options{width:250px}input.large-text,textarea.large-text{width:99%}input.regular-text{width:25em}input.small-text{width:50px;padding:1px 6px}input[type=number].small-text{width:65px}input.tiny-text{width:35px}input[type=number].tiny-text{width:45px}#doaction,#doaction2,#post-query-submit{margin:1px 8px 0 0}.tablenav #changeit,.tablenav #clear-recent-list,.tablenav #delete_all,.wp-filter #delete_all{margin-top:1px}.tablenav .actions select{float:left;margin-right:6px;max-width:200px}.ie8 .tablenav .actions select{width:155px}.ie8 .tablenav .actions select#cat{width:200px}#timezone_string option{margin-left:1em}#upload-form label{color:#777}button.wp-hide-pw>.dashicons{position:relative;top:3px}#misc-publishing-actions label,.options-media-php label[for*="_size_"]{vertical-align:baseline}#misc-publishing-actions label[for=post_status]:before{content:"\f173";display:inline-block;font:400 20px/1 dashicons;speak:none;left:-1px;padding:0 5px 0 0;position:relative;top:0;text-decoration:none!important;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#pass1-text,.pw-weak,.show-password #pass1{display:none}#pass-strength-result{background-color:#eee;border:1px solid #ddd;color:#23282d;margin:-2px 5px 5px 1px;padding:3px 5px;text-align:center;width:25em;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;opacity:0}#pass-strength-result.short{background-color:#f1adad;border-color:#e35b5b;opacity:1}#pass-strength-result.bad{background-color:#fbc5a9;border-color:#f78b53;opacity:1}#pass-strength-result.good{background-color:#ffe399;border-color:#ffc733;opacity:1}#pass-strength-result.strong{background-color:#c1e1b9;border-color:#83c373;opacity:1}#pass1-text.short,#pass1.short{border-color:#e35b5b}#pass1-text.bad,#pass1.bad{border-color:#f78b53}#pass1-text.good,#pass1.good{border-color:#ffc733}#pass1-text.strong,#pass1.strong{border-color:#83c373}.indicator-hint{padding-top:8px}.show-password #pass1-text{display:inline-block}.form-table span.description.important{font-size:12px}p.search-box{float:right;margin:0}.network-admin.themes-php p.search-box{clear:left}.search-box input[name="s"],.tablenav .search-plugins input[name="s"],.tagsdiv .newtag{float:left;height:28px;margin:0 4px 0 0}input[type=text].ui-autocomplete-loading,input[type=email].ui-autocomplete-loading{background-image:url(../images/loading.gif);background-repeat:no-repeat;background-position:right center;visibility:visible}input.ui-autocomplete-input.open{border-bottom-color:transparent}ul#add-to-blog-users{margin:0 0 0 14px}.ui-autocomplete{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid #5b9dd9;-webkit-box-shadow:0 1px 2px rgba(30,140,190,.8);box-shadow:0 1px 2px rgba(30,140,190,.8);background-color:#fff}.ui-autocomplete li{margin-bottom:0;padding:4px 10px;text-align:left}.ui-autocomplete li.ui-state-focus{background-color:#ddd;cursor:pointer}.form-table{margin-top:.5em;width:100%;clear:both}.form-table,.form-table td,.form-table td p,.form-table th,.form-wrap label{font-size:14px}.form-table td{margin-bottom:9px;padding:15px 10px;line-height:1.3;vertical-align:middle}.form-table th,.form-wrap label{color:#23282d;font-weight:400;text-shadow:none;vertical-align:baseline}.form-table th{vertical-align:top;text-align:left;padding:20px 10px 20px 0;width:200px;line-height:1.3;font-weight:600}.form-table th.th-full{width:auto;font-weight:400}.form-table td p{margin-top:4px;margin-bottom:0}.form-table td fieldset label{margin:.25em 0 .5em!important;display:inline-block}.form-table td fieldset label,.form-table td fieldset li,.form-table td fieldset p{line-height:1.4em}.form-table input.tog,.form-table input[type=radio]{margin-top:-4px;margin-right:4px;float:none}.form-table .pre{padding:8px;margin:0}table.form-table td .updated{font-size:13px}table.form-table td .updated p{font-size:13px;margin:.3em 0}#profile-page .form-table textarea{width:500px;margin-bottom:6px}#profile-page .form-table #rich_editing{margin-right:5px}#your-profile legend{font-size:22px}#display_name{width:15em}#adduser .form-field input,#createuser .form-field input{width:25em}.color-option{display:inline-block;width:24%;padding:5px 15px 15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:3px;cursor:pointer}.color-option.selected,.color-option:hover{background:#ddd}.color-palette{width:100%;border-spacing:0}.color-palette td{height:20px;padding:0;border:none}.tool-box .title{margin:8px 0;font-size:18px;font-weight:400;line-height:24px}.label-responsive{vertical-align:middle}#export-filters p{margin:0 0 1em}#export-filters p.submit{margin:7px 0 5px}.card{position:relative;margin-top:20px;padding:.7em 2em 1em;min-width:255px;max-width:520px;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}.pressthis h4{margin:2em 0 1em}.pressthis textarea{width:100%;font-size:1em}.pressthis-bookmarklet-wrapper{margin:20px 0 8px;vertical-align:top;position:relative;z-index:1}.pressthis-bookmarklet,.pressthis-bookmarklet:active,.pressthis-bookmarklet:focus,.pressthis-bookmarklet:hover{display:inline-block;position:relative;cursor:move;color:#32373c;background:#e6e6e6;-webkit-border-radius:5px;border-radius:5px;border:1px solid #b4b4b4;font-style:normal;line-height:16px;font-size:14px;text-decoration:none}.pressthis-bookmarklet:active{outline:0}.pressthis-bookmarklet:after{content:"";width:70%;height:55%;z-index:-1;position:absolute;right:10px;bottom:9px;background:0 0;-webkit-transform:skew(20deg) rotate(6deg);-ms-transform:skew(20deg) rotate(6deg);transform:skew(20deg) rotate(6deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.6);box-shadow:0 10px 8px rgba(0,0,0,.6)}.pressthis-bookmarklet:hover:after{-webkit-transform:skew(20deg) rotate(9deg);-ms-transform:skew(20deg) rotate(9deg);transform:skew(20deg) rotate(9deg);-webkit-box-shadow:0 10px 8px rgba(0,0,0,.7);box-shadow:0 10px 8px rgba(0,0,0,.7)}.pressthis-bookmarklet span{display:inline-block;margin:0;padding:0 12px 8px 9px}.pressthis-js-toggle,.pressthis-js-toggle.button.button{margin-left:10px;padding:0;height:auto;vertical-align:top}.pressthis-bookmarklet span:before{color:#777;font:400 20px/1 dashicons;content:"\f157";position:relative;display:inline-block;top:4px;margin-right:4px}.pressthis-js-toggle .dashicons{margin:5px 8px 6px 7px;color:#777}#local-time,#utc-time{padding-left:25px;font-style:italic}.defaultavatarpicker .avatar{margin:2px 0;vertical-align:middle}.options-general-php input.small-text{width:56px}.options-general-php .spinner{float:none;margin:0 3px}.options-general-php .language-install-spinner,.settings-php .language-install-spinner{display:inline-block;float:none;margin:-3px 5px 0;vertical-align:middle}.setup-php textarea{max-width:100%}.form-field #site-address{max-width:25em}.form-field #domain{max-width:22em}.form-field #admin-email,.form-field #blog_last_updated,.form-field #blog_registered,.form-field #path,.form-field #site-title{max-width:25em}#search-sites,#search-users,#the-comment-list td.comment img{max-width:100%}.form-field #path{margin-bottom:5px}.request-filesystem-credentials-dialog{display:none}.request-filesystem-credentials-dialog .notification-dialog{top:15%;max-height:85%}.request-filesystem-credentials-dialog-content{margin:25px}#request-filesystem-credentials-title{font-size:1.3em;margin:1em 0}.request-filesystem-credentials-form legend{font-size:1em;padding:1.33em 0;font-weight:600}.request-filesystem-credentials-form input[type=text],.request-filesystem-credentials-form input[type=password]{display:block}.request-filesystem-credentials-dialog input[type=text],.request-filesystem-credentials-dialog input[type=password]{width:100%}.request-filesystem-credentials-form .field-title{font-weight:600}.request-filesystem-credentials-dialog label[for=hostname],.request-filesystem-credentials-dialog label[for=public_key],.request-filesystem-credentials-dialog label[for=private_key]{display:block;margin-bottom:1em}.request-filesystem-credentials-dialog .ftp-password,.request-filesystem-credentials-dialog .ftp-username{float:left;width:48%}.request-filesystem-credentials-dialog .ftp-password{margin-left:4%}.request-filesystem-credentials-dialog .request-filesystem-credentials-action-buttons{text-align:right}.request-filesystem-credentials-dialog label[for=ftp]{margin-right:10px}#request-filesystem-credentials-dialog .button:not(:last-child){margin-right:10px}#request-filesystem-credentials-form .cancel-button{display:none}#request-filesystem-credentials-dialog .cancel-button{display:inline}@media screen and (max-width:782px){textarea{-webkit-appearance:none}input[type=text],input[type=password],input[type=email],input[type=number],input[type=search]{-webkit-appearance:none;padding:6px 10px}input.code{padding-bottom:5px;padding-top:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox],input[type=checkbox]{-webkit-appearance:none;padding:10px}.widefat tfoot td input[type=checkbox],.widefat th input[type=checkbox],.widefat thead td input[type=checkbox]{margin-bottom:8px}.widefat tfoot td input[type=checkbox]:before,.widefat th input[type=checkbox]:before,.widefat thead td input[type=checkbox]:before,input[type=checkbox]:checked:before{font:400 30px/1 dashicons;margin:-3px -5px}input[type=checkbox],input[type=radio]{height:25px;width:25px}.wp-admin p input[type=checkbox],.wp-admin p input[type=radio]{margin-top:-3px}input[type=radio]:checked:before{vertical-align:middle;width:9px;height:9px;margin:7px;line-height:16px}.wp-upload-form input[type=submit]{margin-top:10px}#wpbody select{height:36px;font-size:16px}.wp-admin .button-cancel{padding:0;font-size:14px}#adduser .form-field input,#createuser .form-field input{width:100%}.form-table{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table td,.form-table th,.label-responsive{display:block;width:auto;vertical-align:middle}.label-responsive{margin:.5em 0}.export-filters li{margin-bottom:0}.form-table .color-palette td{display:table-cell;width:15px}.form-table table.color-palette{margin-right:10px}input,textarea{font-size:16px}#profile-page .form-table textarea,.form-table span.description,.form-table td input[type=text],.form-table td input[type=password],.form-table td input[type=email],.form-table td select,.form-table td textarea{width:100%;font-size:16px;line-height:1.5;padding:7px 10px;display:block;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.form-table .form-required.form-invalid td:after{float:right;margin:-30px 3px 0 0}#wpbody .form-table td select{height:40px}.form-table input[type=text].small-text,input[type=text].small-text,input[type=password].small-text,input[type=number].small-text,input[type=search].small-text{width:auto;max-width:55px;display:inline;padding:3px 6px;margin:0 3px}#pass-strength-result{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:8px}p.search-box{float:none;position:absolute;bottom:0;width:98%;height:90px;margin-bottom:20px}p.search-box input[name="s"]{height:auto;float:none;width:100%;margin-bottom:10px;vertical-align:middle;-webkit-appearance:none}p.search-box input[type=submit]{margin-bottom:10px}.form-table span.description{display:inline;padding:4px 0 0;line-height:1.4em;font-size:14px}.form-table th{padding-top:10px;padding-bottom:0;border-bottom:0}.form-table td{margin-bottom:0;padding-bottom:6px;padding-top:4px;padding-left:0}.form-table.permalink-structure td code{margin-left:32px}.form-table.permalink-structure td input[type=text]{margin-left:32px;margin-top:4px;width:96%}.form-table input.regular-text{width:100%}.form-table label{font-size:14px}.form-table fieldset label{display:block}#utc-time{margin-top:10px}#local-time,#utc-time{display:block;float:none;padding:0;line-height:2}.form-field #domain{max-width:none}.wp-pwd{position:relative}.wp-pwd [type=text],.wp-pwd [type=password]{padding-right:40px}.wp-pwd button.button{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;line-height:2;margin:0;padding:5px 10px;position:absolute;right:0;top:0}.wp-pwd button.button:active,.wp-pwd button.button:focus,.wp-pwd button.button:hover{background:0 0}.wp-pwd .button .text{display:none}}@media only screen and (max-width:768px){.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field select,.form-field textarea{width:99%}.form-wrap .form-field{padding:0}#profile-page .form-table textarea{max-width:400px;width:auto}}@media only screen and (max-height:480px){.request-filesystem-credentials-dialog .notification-dialog{width:100%;height:100%;max-height:100%;position:fixed;top:0;margin:0;left:0}}@media screen and (max-width:600px){.color-option{width:49%}}#adminmenu,#adminmenu .wp-submenu,#adminmenuback,#adminmenuwrap{width:160px;background-color:#23282d}#adminmenuback{position:fixed;top:0;bottom:-120px;z-index:1}#adminmenu{clear:left;margin:12px 0;padding:0;list-style:none}.folded #adminmenu,.folded #adminmenu li.menu-top,.folded #adminmenuback,.folded #adminmenuwrap{width:36px}.icon16{height:18px;width:18px;padding:6px;margin:-6px 0 0 -8px;float:left}.icon16:before{color:#999;font:400 20px/1 dashicons;speak:none;padding:6px 0;height:34px;width:20px;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.icon16.icon-dashboard:before{content:"\f226"}.icon16.icon-post:before{content:"\f109"}.icon16.icon-media:before{content:"\f104"}.icon16.icon-links:before{content:"\f103"}.icon16.icon-page:before{content:"\f105"}.icon16.icon-comments:before{content:"\f101";margin-top:1px}.icon16.icon-appearance:before{content:"\f100"}.icon16.icon-plugins:before{content:"\f106"}.icon16.icon-users:before{content:"\f110"}.icon16.icon-tools:before{content:"\f107"}.icon16.icon-settings:before{content:"\f108"}.icon16.icon-site:before{content:"\f112"}.icon16.icon-generic:before{content:"\f111"}.icon16.icon-appearance,.icon16.icon-comments,.icon16.icon-dashboard,.icon16.icon-generic,.icon16.icon-links,.icon16.icon-media,.icon16.icon-page,.icon16.icon-plugins,.icon16.icon-post,.icon16.icon-settings,.icon16.icon-site,.icon16.icon-tools,.icon16.icon-users,.menu-icon-appearance div.wp-menu-image,.menu-icon-comments div.wp-menu-image,.menu-icon-dashboard div.wp-menu-image,.menu-icon-generic div.wp-menu-image,.menu-icon-links div.wp-menu-image,.menu-icon-media div.wp-menu-image,.menu-icon-page div.wp-menu-image,.menu-icon-plugins div.wp-menu-image,.menu-icon-post div.wp-menu-image,.menu-icon-settings div.wp-menu-image,.menu-icon-site div.wp-menu-image,.menu-icon-tools div.wp-menu-image,.menu-icon-users div.wp-menu-image{background-image:none!important}#adminmenuwrap{position:relative;float:left;z-index:9990}#adminmenu *{user-select:none}.theme-overlay .current-label,.widget-title h3,.widget-title h4{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}#adminmenu li{margin:0;padding:0;cursor:pointer}#adminmenu a{display:block;line-height:18px;padding:2px 5px;color:#eee}#adminmenu .wp-submenu a{color:#b4b9be;color:rgba(240,245,250,.7)}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover{background:0 0}#adminmenu .wp-submenu a:focus,#adminmenu .wp-submenu a:hover,#adminmenu a:hover,#adminmenu li.menu-top>a:focus{color:#00b9eb}#adminmenu li.menu-top{border:none;min-height:34px;position:relative}#adminmenu .wp-submenu{list-style:none;position:absolute;top:-1000em;left:160px;overflow:visible}#adminmenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{padding:7px 0 8px;z-index:9999;background-color:#32373c;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}#adminmenu a.menu-top:focus+.wp-submenu,.js #adminmenu .opensub .wp-submenu,.js #adminmenu .sub-open,.no-js li.wp-has-submenu:hover .wp-submenu{top:-1px}#adminmenu .wp-has-current-submenu .wp-submenu,#adminmenu .wp-has-current-submenu .wp-submenu.sub-open,#adminmenu .wp-has-current-submenu.opensub .wp-submenu,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu,.no-js li.wp-has-current-submenu:hover .wp-submenu{position:relative;z-index:3;top:auto;left:auto;right:auto;bottom:auto;border:0;margin-top:0;-webkit-box-shadow:none;box-shadow:none;background-color:#32373c}#adminmenu li.menu-top:hover,#adminmenu li.opensub>a.menu-top,#adminmenu li>a.menu-top:focus{position:relative;background-color:#191e23;color:#00b9eb}.folded #adminmenu li.menu-top:hover,.folded #adminmenu li.opensub>a.menu-top,.folded #adminmenu li>a.menu-top:focus{z-index:10000}#adminmenu .wp-has-current-submenu .wp-submenu .wp-submenu-head,#adminmenu .wp-menu-arrow,#adminmenu .wp-menu-arrow div,#adminmenu li.current a.menu-top,#adminmenu li.wp-has-current-submenu a.wp-has-current-submenu,.folded #adminmenu li.current.menu-top,.folded #adminmenu li.wp-has-current-submenu{background:#0073aa;color:#fff}.folded #adminmenu .opensub .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.folded #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.folded #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.folded #adminmenu .wp-submenu.sub-open,.folded #adminmenu a.menu-top:focus+.wp-submenu,.no-js.folded #adminmenu .wp-has-submenu:hover .wp-submenu{top:0;left:36px}.folded #adminmenu .wp-has-current-submenu .wp-submenu,.folded #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em}#adminmenu .wp-not-current-submenu .wp-submenu,.folded #adminmenu .wp-has-current-submenu .wp-submenu{min-width:160px;width:auto}#adminmenu .wp-submenu a{font-size:13px;line-height:1.2;margin:0;padding:6px 0}#adminmenu .opensub .wp-submenu li.current a,#adminmenu .wp-submenu li.current,#adminmenu .wp-submenu li.current a,#adminmenu .wp-submenu li.current a:focus,#adminmenu .wp-submenu li.current a:hover,#adminmenu a.wp-has-current-submenu:focus+.wp-submenu li.current a{color:#fff}#adminmenu .wp-not-current-submenu li>a,.folded #adminmenu .wp-has-current-submenu li>a{padding-right:16px;padding-left:14px;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu .wp-has-current-submenu ul>li>a,.folded #adminmenu li.menu-top .wp-submenu>li>a{padding:6px 12px}#adminmenu .wp-submenu-head,#adminmenu a.menu-top{font-size:14px;font-weight:400;line-height:18px;padding:0}#adminmenu .wp-submenu-head{display:none}.folded #adminmenu .wp-menu-name{position:absolute;left:-999px}.folded #adminmenu .wp-submenu-head{display:block}#adminmenu .wp-submenu li{padding:0;margin:0;overflow:hidden}#adminmenu .wp-menu-image img{padding:9px 0 0;opacity:.6;filter:alpha(opacity=60)}#adminmenu div.wp-menu-name{padding:8px 0}#adminmenu div.wp-menu-image{float:left;width:36px;height:34px;margin:0;text-align:center}#adminmenu div.wp-menu-image.svg{background-repeat:no-repeat;background-position:center;-webkit-background-size:20px auto;background-size:20px auto}div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6);padding:7px 0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#adminmenu div.wp-menu-image:before{color:#a0a5aa;color:rgba(240,245,250,.6)}#adminmenu .current div.wp-menu-image:before,#adminmenu .wp-has-current-submenu div.wp-menu-image:before,#adminmenu a.current:hover div.wp-menu-image:before,#adminmenu a.wp-has-current-submenu:hover div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu a:focus div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu.opensub div.wp-menu-image:before,#adminmenu li.wp-has-current-submenu:hover div.wp-menu-image:before{color:#fff}#adminmenu li a:focus div.wp-menu-image:before,#adminmenu li.opensub div.wp-menu-image:before,#adminmenu li:hover div.wp-menu-image:before{color:#00b9eb}.ie8 #adminmenu li.opensub div.wp-menu-image:before{color:#a0a5aa}.folded #adminmenu div.wp-menu-image{width:35px;height:30px;position:absolute;z-index:25}.folded #adminmenu a.menu-top{height:34px}.no-font-face #adminmenu .wp-menu-image{display:none}.no-font-face #adminmenu div.wp-menu-name{padding:8px 12px}.no-font-face.auto-fold #adminmenu .wp-menu-name{margin-left:0}.sticky-menu #adminmenuwrap{position:fixed}.wp-menu-arrow{display:none!important}ul#adminmenu a.wp-has-current-submenu{position:relative}ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after{right:0;border:8px solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#f1f1f1;top:50%;margin-top:-8px}.folded ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.folded ul#adminmenu a.wp-has-current-submenu:after,.folded ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{right:0;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none;border-width:8px;top:10px;z-index:10000}.folded ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:18px}#adminmenu li.wp-has-submenu.wp-not-current-submenu.opensub:hover:after{border-right-color:#32373c}#adminmenu li.menu-top:hover .wp-menu-image img,#adminmenu li.wp-has-current-submenu .wp-menu-image img{opacity:1;filter:alpha(opacity=100)}#adminmenu li.wp-menu-separator{height:5px;padding:0;margin:0 0 6px;cursor:inherit}#adminmenu div.separator{height:2px;padding:0}#collapse-button,#collapse-button div{height:15px;width:15px}#adminmenu .wp-submenu .wp-submenu-head{color:#fff;font-weight:400;font-size:14px;padding:8px 4px 8px 11px;margin:-7px 0 4px}#adminmenu li.current,.folded #adminmenu li.wp-menu-open{border:0}#adminmenu .awaiting-mod,#adminmenu .update-plugins{display:inline-block;background-color:#d54e21;color:#fff;font-size:9px;line-height:17px;font-weight:600;margin:1px 0 0 2px;vertical-align:top;-webkit-border-radius:10px;border-radius:10px;z-index:26}#adminmenu li .awaiting-mod span,#adminmenu li span.update-plugins span{display:block;padding:0 6px}#adminmenu li span.count-0,.folded #collapse-menu span{display:none}#adminmenu li a.wp-has-current-submenu .update-plugins,#adminmenu li.current a .awaiting-mod{background-color:#00b9eb;color:#fff}#collapse-menu{font-size:13px;line-height:34px;margin-top:10px;color:#a0a5aa;color:rgba(240,245,250,.6);-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#collapse-menu:hover,#collapse-menu:hover #collapse-button div:after{color:#00b9eb}#collapse-button{float:left;margin:10px 8px 10px 11px;-webkit-border-radius:10px;border-radius:10px}#wpwrap #collapse-button div{padding:0}#collapse-button div:after{content:"\f148";display:block;line-height:15px;left:-3px;top:-3px;color:#a0a5aa;color:rgba(240,245,250,.6);font:400 20px/1 dashicons!important;speak:none;margin:0 auto;padding:0!important;position:relative;text-align:center;width:20px;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.folded #collapse-button div:after,.rtl #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.folded #collapse-button div:after{-webkit-transform:none;-ms-transform:none;transform:none}.customize-support #menu-appearance a[href="themes.php?page=custom-header"],.customize-support #menu-appearance a[href="themes.php?page=custom-background"],li#wp-admin-bar-menu-toggle{display:none}@media only screen and (max-width:960px){.auto-fold #wpcontent,.auto-fold #wpfooter{margin-left:36px}.auto-fold #adminmenu,.auto-fold #adminmenu li.menu-top,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{width:36px}.auto-fold #adminmenu .opensub .wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu.sub-open,.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu .wp-has-current-submenu.opensub .wp-submenu,.auto-fold #adminmenu .wp-submenu.sub-open,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{top:0;left:36px}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu,.auto-fold #adminmenu a.wp-has-current-submenu:focus+.wp-submenu{position:absolute;top:-1000em;margin-right:-1px;padding:7px 0 8px;z-index:9999}.auto-fold #adminmenu .wp-has-current-submenu .wp-submenu{min-width:150px;width:auto}.auto-fold #adminmenu .wp-has-current-submenu li>a{padding-right:16px;padding-left:14px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding-left:12px}.auto-fold #adminmenu .wp-menu-name{position:absolute;left:-999px}.auto-fold #adminmenu .wp-submenu-head{display:block}.auto-fold #adminmenu div.wp-menu-image{height:30px;width:34px;position:absolute;z-index:25}.auto-fold #adminmenu a.menu-top{height:34px}.auto-fold #adminmenu li.wp-menu-open{border:0}.auto-fold #adminmenu .wp-has-current-submenu.menu-top-last{margin-bottom:0}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:none}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{border-width:4px;margin-top:-4px;top:16px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li a.current:after{border-width:4px;margin-top:-4px}.auto-fold #adminmenu li.menu-top:hover,.auto-fold #adminmenu li.opensub>a.menu-top,.auto-fold #adminmenu li>a.menu-top:focus{z-index:10000}.auto-fold #collapse-menu span{display:none}.auto-fold #collapse-button div{background:0 0}.auto-fold #collapse-button div:after{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.rtl.auto-fold #collapse-button div:after{-webkit-transform:none;-ms-transform:none;transform:none}}@media screen and (max-width:782px){.auto-fold #wpcontent{position:relative;margin-left:0;padding-left:10px}.sticky-menu #adminmenuwrap{position:relative;z-index:auto;top:0}.auto-fold #adminmenu,.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{position:absolute;width:190px;z-index:100}.auto-fold #adminmenuback,.auto-fold #adminmenuwrap{display:none}.auto-fold .wp-responsive-open #adminmenuback,.auto-fold .wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu li.menu-top{width:100%}.auto-fold #adminmenu li a{font-size:16px;padding:5px}.auto-fold #adminmenu li.menu-top .wp-submenu>li>a{padding:10px 10px 10px 20px}.auto-fold #adminmenu .wp-menu-name{position:static;margin-left:35px}.auto-fold ul#adminmenu a.wp-has-current-submenu:after,.auto-fold ul#adminmenu>li.current>a.current:after{border-width:8px;margin-top:-8px}.auto-fold ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{display:none}#adminmenu .wp-submenu{position:relative;display:none}.auto-fold #adminmenu .selected .wp-submenu,.auto-fold #adminmenu .wp-menu-open .wp-submenu{position:relative;display:block;top:0;left:-1px;-webkit-box-shadow:none;box-shadow:none}.auto-fold #adminmenu .selected .wp-submenu:after,.auto-fold #adminmenu .wp-menu-open .wp-submenu:after{display:none}.auto-fold #adminmenu .opensub .wp-submenu{display:none}.auto-fold #adminmenu .selected .wp-submenu{display:block}.auto-fold ul#adminmenu li:hover a.wp-has-current-submenu:after{display:block}.auto-fold #adminmenu .wp-has-current-submenu a.menu-top:focus+.wp-submenu,.auto-fold #adminmenu a.menu-top:focus+.wp-submenu{position:relative;left:-1px;right:0;top:0}#adminmenu .wp-submenu .wp-submenu-head{display:none}#wp-responsive-toggle{position:fixed;top:5px;left:4px;padding-right:10px;z-index:99999;border:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wpadminbar #wp-admin-bar-menu-toggle a{display:block;padding:0;overflow:hidden;outline:0;text-decoration:none;border:1px solid transparent;background:0 0;height:44px;margin-left:-1px}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle a{background:#32373c}li#wp-admin-bar-menu-toggle{display:block}#wpadminbar #wp-admin-bar-menu-toggle a:hover{border:1px solid transparent}#wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{content:"\f228";display:inline-block;float:left;font:400 40px/45px dashicons;vertical-align:middle;outline:0;margin:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:44px;width:50px;padding:0;border:none;text-align:center;text-decoration:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-responsive-open #wpadminbar #wp-admin-bar-menu-toggle .ab-icon:before{color:#00b9eb}}.postbox,.welcome-panel{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04)}@media screen and (max-width:600px){#adminmenuback,#adminmenuwrap{display:none}.wp-responsive-open #adminmenuback,.wp-responsive-open #adminmenuwrap{display:block}.auto-fold #adminmenu{top:46px}}#wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}#wpbody-content #dashboard-widgets.columns-2 .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets.columns-2 #postbox-container-2,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-2 #postbox-container-4{float:right;width:50.5%}#wpbody-content #dashboard-widgets.columns-3 .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets.columns-3 #postbox-container-3,#wpbody-content #dashboard-widgets.columns-3 #postbox-container-4{float:right}#dashboard-widgets .postbox-container,#wpbody-content #dashboard-widgets.columns-4 .postbox-container{width:25%}#dashboard-widgets-wrap .columns-3 #postbox-container-4 .empty-container{border:none!important}.ie8 #wpbody-content #dashboard-widgets .postbox-container{width:49.5%}.ie8 #wpbody-content #dashboard-widgets #postbox-container-2,.ie8 #wpbody-content #dashboard-widgets #postbox-container-3,.ie8 #wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}.ie8 #dashboard-widgets #postbox-container-3 .empty-container,.ie8 #dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}#dashboard-widgets-wrap{overflow:hidden;margin:0 -8px}#dashboard-widgets .postbox .inside{margin-bottom:0}#dashboard-widgets .meta-box-sortables{margin:0 8px;min-height:100px}#the-comment-list td.comment p.comment-author{margin-top:0;margin-left:0}#the-comment-list p.comment-author img{float:left;margin-right:8px}#the-comment-list p.comment-author strong a{border:none}#the-comment-list td{vertical-align:top}.welcome-panel{position:relative;overflow:auto;margin:16px 0;padding:23px 10px 0;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff;font-size:13px;line-height:2.1em}#replysubmit,.dashboard-widget-control-form,.mu-storage,.tablenav .actions,th.sortable a,th.sorted a{overflow:hidden}.welcome-panel h2{margin:0;font-size:21px;font-weight:400;line-height:1.2}.welcome-panel h3{margin:1.33em 0 0;font-size:16px}.welcome-panel li{font-size:14px}.welcome-panel p{color:#777}.welcome-panel a{text-decoration:none}.welcome-panel .about-description{font-size:16px;margin:0}.welcome-panel .welcome-panel-close{position:absolute;top:10px;right:10px;padding:10px 15px 10px 21px;font-size:13px;line-height:1.23076923;text-decoration:none}.welcome-panel .welcome-panel-close:before{position:absolute;top:8px;left:0;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.wp-core-ui .welcome-panel .button.button-hero{margin:15px 13px 3px 0;padding:12px 36px;height:auto;line-height:1.4285714;white-space:normal}.welcome-panel-content{margin-left:13px;max-width:1500px}.welcome-panel .welcome-panel-column-container{clear:both;position:relative}.welcome-panel .welcome-panel-column{width:32%;min-width:200px;float:left}.ie8 .welcome-panel .welcome-panel-column{min-width:230px}.welcome-panel .welcome-panel-column:first-child{width:36%}.welcome-panel-column p.hide-if-no-customize{margin-top:10px}.welcome-panel-column p{margin-top:7px;color:#464646}.welcome-panel .welcome-icon{background:0 0!important}.welcome-panel .welcome-icon:before{color:#82878c;font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 10px 0 0;top:-1px;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;vertical-align:top}.welcome-panel .welcome-edit-page:before,.welcome-panel .welcome-write-blog:before{content:"\f119";top:-3px}.welcome-panel .welcome-add-page:before{content:"\f132"}.welcome-panel .welcome-view-site:before{content:"\f115";top:-2px}.welcome-panel .welcome-widgets-menus:before{content:"\f116";top:-2px}.welcome-panel .welcome-comments:before{content:"\f117";top:-1px}.welcome-panel .welcome-learn-more:before{content:"\f118";top:-1px}.welcome-panel .welcome-widgets-menus{line-height:16px}.welcome-panel .welcome-panel-column ul{margin:.8em 1em 1em 0}.welcome-panel .welcome-panel-column li{line-height:16px;list-style-type:none;padding:0 0 8px}#dashboard_primary .inside{margin:0;padding:0}#dashboard_primary .dashboard-widget-control-form,#dashboard_primary .widget-loading{padding:12px 12px 0}body #dashboard-widgets .postbox form .submit{margin:0}.dashboard-widget-control-form p{margin-top:0}.rssSummary{color:#777;margin-top:4px}#dashboard_primary .rss-widget{border-bottom:1px solid #eee;font-size:13px;padding:8px 12px 10px}#dashboard_primary .rss-widget:last-child{border-bottom:none;padding-bottom:8px}#dashboard_primary .rss-widget a{font-weight:400}#dashboard_primary .rss-widget span,#dashboard_primary .rss-widget span.rss-date{color:#777}#dashboard_primary .rss-widget span.rss-date{margin-left:12px}#dashboard_primary .rss-widget ul li{margin-bottom:8px}#dashboard_right_now ul{margin:0;display:inline-block;width:100%}#dashboard_right_now li{width:50%;float:left;margin-bottom:10px}#dashboard_right_now .inside{padding:0}#dashboard_right_now .main{padding:0 12px 11px}#dashboard_right_now .main p{margin:0}#dashboard_right_now #wp-version-message .button{float:right;position:relative;top:-5px;margin-left:5px}#dashboard-widgets h3.mu-storage{margin:0 0 10px;padding:0;font-size:14px;font-weight:400}#dashboard_right_now li a:before,#dashboard_right_now li span:before{color:#82878c}#dashboard_right_now .sub{color:#777;background:#f5f5f5;border-top:1px solid #eee;padding:10px 12px 6px}#dashboard_right_now .sub h3{color:#555}#dashboard_right_now .sub p{margin:0 0 1em}#dashboard_right_now .warning a:before,#dashboard_right_now .warning span:before{color:#d54e21}#dashboard_quick_press .drafts li time,#title-wrap #title-prompt-text,.textarea-wrap #content-prompt-text{color:#777}#dashboard_right_now li a:before,#dashboard_right_now li span:before{content:"\f159";font:400 20px/1 dashicons;speak:none;display:block;float:left;margin:0 5px 0 0;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#dashboard_right_now .page-count a:before,#dashboard_right_now .page-count span:before{content:"\f105"}#dashboard_right_now .post-count a:before,#dashboard_right_now .post-count span:before{content:"\f109"}#dashboard_right_now .comment-count a:before{content:"\f101"}#dashboard_right_now .comment-mod-count a:before{content:"\f125"}#dashboard_right_now .storage-count a:before{content:"\f104"}#dashboard_right_now .storage-count.warning a:before{content:"\f153"}#dashboard_quick_press .inside{margin:0;padding:0}#dashboard_quick_press div.updated{margin-bottom:10px;border:1px solid #eee;border-width:1px 1px 1px 0}#dashboard_quick_press form{margin:12px}#dashboard_quick_press .drafts,#dashboard_quick_press .easy-blogging{padding:10px 0 0}input#save-post{float:left}form.initial-form.quickpress-open label.prompt{font-style:normal}form.initial-form.quickpress-open input#title{height:auto}#dashboard_quick_press input,#dashboard_quick_press textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0}#description-wrap{margin-top:12px}.input-text-wrap,.textarea-wrap{position:relative}.input-text-wrap .prompt,.textarea-wrap .prompt{position:absolute}.textarea-wrap #content-prompt-text{font-size:1.1em;padding:7px 8px}.textarea-wrap textarea#content{margin:0 0 8px;padding:6px 7px}#quick-press textarea#content{min-height:90px;max-height:1300px;resize:none}.js #dashboard_quick_press .drafts{border-top:1px solid #eee}#dashboard_quick_press .drafts abbr{border:none}#dashboard_quick_press .drafts .view-all{float:right;margin:0 12px 0 0}#dashboard_primary a.rsswidget{font-weight:400}#dashboard_quick_press .drafts ul{margin:0 12px}#dashboard_quick_press .drafts li{margin-bottom:1em}#dashboard_quick_press .drafts p{margin:0;word-wrap:break-word}#dashboard_quick_press .draft-title a,#dashboard_quick_press .draft-title time{margin:0 5px 0 0}#dashboard-widgets h3,#dashboard-widgets h4,#dashboard_quick_press .drafts h2{margin:0 12px 8px;padding:0;font-size:14px;font-weight:400;color:#23282d}#dashboard_quick_press .drafts h2{line-height:inherit}#dashboard-widgets .inside h3,#dashboard-widgets .inside h4{margin-left:0;margin-right:0}#dashboard_activity .comment-meta span.approve:before{content:"\f227";font:20px/.5 dashicons;margin-left:12px;vertical-align:middle;position:relative;top:-1px;margin-right:2px}#dashboard_activity .inside{margin:0;padding-bottom:0}#dashboard_activity .no-activity{overflow:hidden;padding:0 0 12px;text-align:center}#dashboard_activity .no-activity p{color:#999;font-size:16px}#dashboard_activity .no-activity .smiley{margin-top:0}#dashboard_activity .no-activity .smiley:before{content:"\f328";font:400 120px/1 dashicons;speak:none;display:block;margin:0 5px 0 0;padding:0;text-indent:0;text-align:center;position:relative;-webkit-font-smoothing:antialiased;text-decoration:none!important}#dashboard-widgets h3 a,#dashboard_browser_nag a{text-decoration:underline}#dashboard_activity .subsubsub{float:none;border-top:1px solid #eee;margin:0 -12px;padding:8px 12px 4px}#future-posts ul,#published-posts ul{clear:both;margin-bottom:0}#future-posts li,#published-posts li{margin-bottom:8px}#future-posts ul span,#published-posts ul span{display:inline-block;margin-right:5px;min-width:150px;color:#777}.activity-block{border-bottom:1px solid #eee;margin:0 -12px;padding:8px 12px 4px}.activity-block:last-child{border-bottom:none}.activity-block .subsubsub li{color:#ddd}#activity-widget #the-comment-list div.undo,#activity-widget #the-comment-list tr.undo{background:0 0;padding:6px 0;margin-left:12px}#activity-widget #the-comment-list .comment-item{background:#fafafa;padding:12px;position:relative}#activity-widget #the-comment-list .avatar{position:absolute;top:13px}#activity-widget #the-comment-list .dashboard-comment-wrap{padding-left:63px}#activity-widget #the-comment-list .dashboard-comment-wrap blockquote{margin:1em 0}#activity-widget #the-comment-list .comment-item p.row-actions{margin:4px 0 0}#activity-widget #the-comment-list .comment-item:first-child{border-top:1px solid #eee}#activity-widget #the-comment-list .unapproved{background-color:#fef7f1}#activity-widget #the-comment-list .unapproved:before{content:"";display:block;position:absolute;left:0;top:0;bottom:0;background:#d54e21;width:4px}#activity-widget #the-comment-list .spam-undo-inside .avatar,#activity-widget #the-comment-list .trash-undo-inside .avatar{position:relative;top:0}#dashboard-widgets #dashboard_browser_nag.postbox .inside{margin:10px}.edit-box{display:none}h3:hover .edit-box{display:inline}#dashboard-widgets form .input-text-wrap input,#dashboard-widgets form .textarea-wrap textarea{width:100%}#dashboard-widgets .postbox form .submit{float:none;margin:.5em 0 0;padding:0;border:none}#dashboard-widgets-wrap #dashboard-widgets .postbox form .submit #publish{min-width:0}#dashboard-widgets a{text-decoration:none}#dashboard-widgets h3 .postbox-title-action{position:absolute;right:10px;padding:0;top:5px}.js #dashboard-widgets h3 .postbox-title-action{right:33px}#dashboard_plugins h5{font-size:14px}#latest-comments #the-comment-list{position:relative;margin:0 -12px}#activity-widget #the-comment-list .comment,#activity-widget #the-comment-list .pingback{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.06);box-shadow:inset 0 1px 0 rgba(0,0,0,.06)}#activity-widget .comments #the-comment-list .alt{background-color:transparent}#activity-widget #latest-comments #the-comment-list .comment-item{padding:1em 12px}#latest-comments #the-comment-list .pingback{padding-left:12px!important}#latest-comments #the-comment-list .comment-item:first-child{border-top:none}#latest-comments #the-comment-list .comment-meta{line-height:1.5em;margin:0;color:#666}#latest-comments #the-comment-list .comment-meta cite{font-style:normal;font-weight:400}#latest-comments #the-comment-list .comment-item blockquote,#latest-comments #the-comment-list .comment-item blockquote p{margin:0;padding:0;display:inline}#latest-comments #the-comment-list .comment-item p.row-actions{margin:3px 0 0;padding:0;font-size:13px}#description-wrap label,#title-wrap label{cursor:text}#title-wrap #title{padding:2px 6px;font-size:1.3em;outline:0}#title-wrap #title-prompt-text{font-size:1.1em;padding:5px 8px}.rss-widget ul{margin:0;padding:0;list-style:none}a.rsswidget{font-size:14px;font-weight:600;line-height:1.7em}.rss-widget ul li{line-height:1.5em;margin-bottom:12px}.rss-widget span.rss-date{color:#999;font-size:13px;margin-left:3px}.rss-widget cite{display:block;text-align:right;margin:0 0 1em;padding:0}.rss-widget cite:before{content:"\2014"}#dashboard_browser_nag a.update-browser-link{font-size:1.2em;font-weight:600}#dashboard_browser_nag a{color:#fff}#dashboard_browser_nag p.browser-update-nag.has-browser-icon{padding-right:125px}#dashboard_browser_nag .browser-icon{margin-top:-35px}#dashboard_browser_nag.postbox.browser-insecure{background-color:#ac1b1b;border-color:#ac1b1b}#dashboard_browser_nag.postbox{background-color:#e29808;background-image:none;border-color:#edc048;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag.postbox.browser-insecure h2{border-bottom-color:#cd5a5a;color:#fff}#dashboard_browser_nag.postbox h2{border-bottom-color:#f6e2ac;background:0 0;color:#fff;-webkit-box-shadow:none;box-shadow:none}#dashboard_browser_nag h2.hndle{border:none;font-weight:600;font-size:20px;padding-top:10px}.postbox#dashboard_browser_nag p a.dismiss{font-size:14px}.postbox#dashboard_browser_nag a,.postbox#dashboard_browser_nag p,.postbox#dashboard_browser_nag p.browser-update-nag{font-size:16px}@media only screen and (max-width:799px){#wpbody-content #dashboard-widgets .postbox-container{width:100%}}@media only screen and (min-width:800px) and (max-width:1499px){#dashboard-widgets #postbox-container-3 .empty-container,#dashboard-widgets #postbox-container-4 .empty-container,#wpbody #wpbody-content .metabox-holder.columns-1 .postbox-container .empty-container{border:0;height:0;min-height:0}#wpbody-content #dashboard-widgets .postbox-container{width:49.5%}#wpbody-content #dashboard-widgets #postbox-container-2,#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right;width:50.5%}#wpbody #wpbody-content #dashboard-widgets.columns-1 .postbox-container{width:100%}.index-php .columns-prefs,.index-php .screen-layout{display:block}.columns-prefs .columns-prefs-3,.columns-prefs .columns-prefs-4{display:none}}@media only screen and (min-width:1500px) and (max-width:1800px){#wpbody-content #dashboard-widgets .postbox-container{width:33.5%}#wpbody-content #dashboard-widgets #postbox-container-1{width:33%}#wpbody-content #dashboard-widgets #postbox-container-3,#wpbody-content #dashboard-widgets #postbox-container-4{float:right}#dashboard-widgets #postbox-container-4 .empty-container{border:0;height:0;min-height:0}}@media screen and (max-width:870px){.welcome-panel .welcome-panel-column,.welcome-panel .welcome-panel-column:first-child{display:block;float:none;width:100%}.welcome-panel .welcome-panel-column li{display:inline-block;margin-right:13px}.welcome-panel .welcome-panel-column ul{margin:.4em 0 0}}@media screen and (max-width:782px){#dashboard_recent_comments #the-comment-list .comment-item .avatar{height:30px;width:30px;margin:4px 10px 5px 0}}@media screen and (max-width:600px){.welcome-panel .welcome-panel-close{overflow:hidden;text-indent:40px;white-space:nowrap;width:20px;height:20px;padding:5px;top:5px;right:5px}.welcome-panel .welcome-panel-close:before{font-size:20px;top:5px;left:-35px}}.response-links{display:block;margin-bottom:1em}.response-links a{display:block}.response-links a.comments-edit-item-link{font-weight:600}.response-links a.comments-view-item-link{font-size:12px}.post-com-count-wrapper strong{font-weight:400}.comments-view-item-link{display:inline-block;clear:both}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:nowrap;word-wrap:normal}.column-comments .post-com-count,.column-response .post-com-count{display:inline-block;vertical-align:top}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:5px}.column-comments .comment-count-approved,.column-comments .comment-count-no-comments,.column-response .comment-count-approved,.column-response .comment-count-no-comments{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;padding:0 8px;min-width:24px;height:2em;-webkit-border-radius:5px;border-radius:5px;background-color:#72777c;color:#fff;font-size:11px;line-height:21px;text-align:center}.plugin-card,.revisions-tickmarks{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.ie8 .column-comments .comment-count-approved,.ie8 .column-comments .comment-count-no-comments,.ie8 .column-response .comment-count-approved,.ie8 .column-response .comment-count-no-comments{min-width:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:"";display:block;margin-left:8px;width:0;height:0;border-top:5px solid #72777c;border-right:5px solid transparent}.column-comments .post-com-count-approved:focus .comment-count-approved,.column-comments .post-com-count-approved:hover .comment-count-approved,.column-response .post-com-count-approved:focus .comment-count-approved,.column-response .post-com-count-approved:hover .comment-count-approved{background:#0073aa}.column-comments .post-com-count-approved:focus:after,.column-comments .post-com-count-approved:hover:after,.column-response .post-com-count-approved:focus:after,.column-response .post-com-count-approved:hover:after{border-top-color:#0073aa}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:relative;left:-3px;padding:0 5px;min-width:7px;height:17px;border:2px solid #fff;-webkit-border-radius:11px;border-radius:11px;background:#ca4a1f;color:#fff;font-size:9px;line-height:17px;text-align:center}.column-comments .post-com-count-no-pending,.column-response .post-com-count-no-pending{display:none}.commentlist li{padding:1em 1em .2em;margin:0;border-bottom:1px solid #ccc}.commentlist li li{border-bottom:0;padding:0}.commentlist p{padding:0;margin:0 0 .8em}#submitted-on,.submitted-on{color:#777}#replyrow td{padding:2px}#replysubmit{margin:0;padding:5px 7px 10px;text-align:center}#replysubmit .button{margin-right:5px}#replysubmit .error{color:red;line-height:21px;text-align:center}#replyrow.inline-edit-row fieldset.comment-reply{font-size:inherit;line-height:inherit}#replyrow legend{margin:0;padding:.2em 5px 0;font-size:13px;line-height:1.4;font-weight:600}#replyrow.inline-edit-row label{display:inline;vertical-align:baseline;line-height:inherit}#commentsdiv #edithead .inside,#edithead .inside{float:left;padding:3px 0 2px 5px;margin:0;text-align:center}#edithead .inside input{width:180px}#edithead label{padding:2px 0}#replycontainer{padding:5px}#replycontent{height:120px;-webkit-box-shadow:none;box-shadow:none}#replyerror{border-color:#ddd;background-color:#f9f9f9}.commentlist .avatar{vertical-align:text-top}#the-comment-list div.undo,#the-comment-list tr.undo{background-color:#f4f4f4}#the-comment-list .unapproved td,#the-comment-list .unapproved th{background-color:#fef7f1}#the-comment-list .unapproved th.check-column{border-left:4px solid #d54e21}#the-comment-list .unapproved th.check-column input{margin-left:4px}#the-comment-list .approve a{color:#006505}#the-comment-list .unapprove a{color:#d98500}#the-comment-list td,#the-comment-list th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}#the-comment-list tr:last-child td,#the-comment-list tr:last-child th{-webkit-box-shadow:none;box-shadow:none}#the-comment-list tr.unapproved+tr.approved td,#the-comment-list tr.unapproved+tr.approved th{border-top:1px solid rgba(0,0,0,.03)}.vim-current,.vim-current td,.vim-current th{background-color:#e4f2fd!important}th .comment-grey-bubble{height:16px;width:16px}th .comment-grey-bubble:before{content:"\f101";font:400 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;left:-4px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.fixed .column-rating,.fixed .column-visible{width:8%}.fixed .column-author,.fixed .column-date,.fixed .column-format,.fixed .column-links,.fixed .column-parent,.fixed .column-posts{width:10%}.fixed .column-posts{width:74px}.fixed .column-comment .comment-author{display:none}.fixed .column-categories,.fixed .column-rel,.fixed .column-response,.fixed .column-role,.fixed .column-tags{width:15%}.fixed .column-slug{width:25%}.fixed .column-locations{width:35%}.fixed .column-comments{width:5.5em;padding:8px 0;text-align:left}.fixed .column-comments .vers{padding-left:3px}td.column-title strong,td.plugin-title strong{display:block;margin-bottom:.2em;font-size:14px}td.column-title p,td.plugin-title p{margin:6px 0}table.media .column-title .media-icon{float:left;min-height:60px;margin:0 9px 0 0}table.media .column-title .media-icon img{max-width:60px;height:auto;vertical-align:top}table.media .column-title .has-media-icon~.row-actions{margin-left:70px}table.media .column-title .filename{margin-bottom:.2em}.wp-list-table a{-webkit-transition:none;transition:none}#the-list tr:last-child td,#the-list tr:last-child th{border-bottom:none!important;-webkit-box-shadow:none;box-shadow:none}#comments-form .fixed .column-author{width:20%}#comments-form .fixed .column-date{width:14%}#commentsdiv.postbox .inside{margin:0;padding:0}#commentsdiv .inside .row-actions{line-height:18px}#commentsdiv .inside .column-author{width:25%}#commentsdiv .column-comment p{margin:.6em 0;padding:0}#commentsdiv #replyrow td{padding:0}#commentsdiv p{padding:8px 10px;margin:0}#commentsdiv .comments-box{border:0}#commentsdiv .comments-box thead td,#commentsdiv .comments-box thead th{background:0 0;padding:0 7px 4px;font-style:italic}#commentsdiv .comments-box tr:last-child td{border-bottom:0 none}#commentsdiv #edithead .inside input{width:160px}.sorting-indicator{display:block;visibility:hidden;width:10px;height:4px;margin-top:8px;margin-left:7px}.sorting-indicator:before{content:"\f142";font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0;top:-4px;left:-8px;line-height:10px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.column-comments .sorting-indicator:before{top:0;left:-10px}th.desc a:focus span.sorting-indicator:before,th.desc:hover span.sorting-indicator:before,th.sorted.asc .sorting-indicator:before{content:"\f142"}th.asc a:focus span.sorting-indicator:before,th.asc:hover span.sorting-indicator:before,th.sorted.desc .sorting-indicator:before{content:"\f140"}.wp-list-table .toggle-row{position:absolute;right:8px;top:10px;display:none;padding:0;width:40px;height:40px;border:none;outline:0;background:0 0}.wp-list-table .toggle-row:hover{cursor:pointer}.wp-list-table .toggle-row:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.ie8 .wp-list-table .toggle-row:focus:before{outline:#5b9dd9 solid 1px}.wp-list-table .toggle-row:active{-webkit-box-shadow:none;box-shadow:none}.wp-list-table .toggle-row:before{position:absolute;top:-5px;left:10px;-webkit-border-radius:50%;border-radius:50%;display:block;padding:1px 2px 1px 0;color:#666;content:"\f140";font:400 20px/1 dashicons;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;speak:none}.wp-list-table .is-expanded .toggle-row:before{content:"\f142"}tr.wp-locked .locked-indicator{margin-left:6px;height:20px;width:16px}tr.wp-locked .locked-indicator:before{color:#82878c;content:"\f160";display:inline-block;float:left;font:400 20px/1 dashicons;speak:none;vertical-align:middle;margin-left:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}tr.wp-locked .check-column input[type=checkbox],tr.wp-locked .check-column label,tr.wp-locked .row-actions .inline,tr.wp-locked .row-actions .trash{display:none}tr .locked-info{height:0;opacity:0}tr.wp-locked .locked-info{margin-top:8px;height:auto;opacity:1}.locked-text{vertical-align:top}tr.locked-info,tr.wp-locked .locked-info{-webkit-transition:height 1s,opacity .5s;transition:height 1s,opacity .5s}.fixed .column-comments .sorting-indicator{margin-top:3px}#menu-locations-wrap .widefat{width:60%}.widefat th.sortable,.widefat th.sorted{padding:0}th.sortable a,th.sorted a{display:block;padding:8px}.fixed .column-comments.sortable a,.fixed .column-comments.sorted a{padding:8px 0}th.sortable a span,th.sorted a span{float:left;cursor:pointer}th.asc a:focus span.sorting-indicator,th.asc:hover span.sorting-indicator,th.desc a:focus span.sorting-indicator,th.desc:hover span.sorting-indicator,th.sorted .sorting-indicator{visibility:visible}.tablenav-pages a,.tablenav-pages-navspan{font-weight:600;padding:0 2px}.tablenav-pages .current-page{margin:0 2px 0 0;padding-bottom:5px;font-size:13px;text-align:center}.tablenav .total-pages{margin-right:2px}.tablenav #table-paging{margin-left:2px}.tablenav a.button-secondary{display:block;margin:3px 8px 0 0}.tablenav{clear:both;height:30px;margin:6px 0 4px;vertical-align:middle}.tablenav.themes{max-width:98%}.tablenav .tablenav-pages{float:right;height:28px;margin-top:3px;cursor:default;color:#555}.tablenav .no-pages,.tablenav .one-page .pagination-links{display:none}.tablenav .tablenav-pages a,.tablenav-pages span.current{text-decoration:none;padding:3px 6px}.tablenav .tablenav-pages a,.tablenav-pages-navspan{display:inline-block;min-width:17px;border:1px solid #d2d2d2;padding:3px 5px 7px;background:#e4e4e4;font-size:16px;line-height:1;font-weight:400;text-align:center}.tablenav-pages-navspan{height:16px;border-color:#e8e8e8;background:#ebebeb;color:#b4b4b4}.tablenav .tablenav-pages a:focus,.tablenav .tablenav-pages a:hover{border-color:#5b9dd9;color:#fff;background:#00a0d2;-webkit-box-shadow:none;box-shadow:none;outline:0}.tablenav .displaying-num{margin-right:7px}.tablenav .one-page .displaying-num{display:inline-block;margin-top:5px;margin-right:0}.tablenav .actions{padding:2px 8px 0 0}.wp-filter .actions{display:inline-block;vertical-align:middle}.tablenav .delete{margin-right:20px}.tablenav .dots{border-color:transparent}.tablenav .next,.tablenav .prev{border-color:transparent;color:#0073aa}.tablenav .next:hover,.tablenav .prev:hover{border-color:transparent;color:#00a0d2}.tablenav .view-switch{float:right;margin:0 5px;padding-top:3px}.wp-filter .view-switch{display:inline-block;vertical-align:middle;padding:12px 0;margin:0 8px 0 2px}.media-toolbar.wp-filter .view-switch{margin:0 12px 0 2px}.view-switch a{float:left;width:28px;height:28px;text-align:center;line-height:24px;text-decoration:none}.view-switch a:before{color:#b4b9be;display:inline-block;font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.view-switch a:focus:before,.view-switch a:hover:before{color:#727272}.view-switch a.current:before{color:#0073aa}.view-switch .view-list:before{content:"\f163"}.view-switch .view-excerpt:before{content:"\f164"}.view-switch .view-grid:before{content:"\f509"}.filter{float:left;margin:-5px 0 0 10px}.filter .subsubsub{margin-left:-10px;margin-top:13px}.screen-per-page{width:4em}#posts-filter .wp-filter{margin-bottom:0}#posts-filter fieldset{float:left;margin:0 1.5ex 1em 0;padding:0}#posts-filter fieldset legend{padding:0 0 .2em 1px}.row-actions,.row-actions-visible{padding:2px 0 0}p.pagenav{margin:0;display:inline}.pagenav span{font-weight:600;margin:0 6px}.row-title{font-size:14px!important;font-weight:600}.column-comment .comment-author{margin-bottom:.6em}.column-author img,.column-comment .comment-author img,.column-username img{float:left;margin-right:10px;margin-top:1px}.row-actions{color:#ddd;font-size:13px;position:relative;left:-9999em}.plugins,.plugins td,.plugins th,.row-actions .network_active,.row-actions .network_only{color:#000}.rtl .row-actions a{display:inline-block}.mobile .row-actions,.no-js .row-actions,.row-actions.visible,div.comment-item:hover .row-actions,tr:hover .row-actions{position:static}#wpbody-content .inline-edit-row fieldset{font-size:12px;float:left;margin:0;padding:0;width:100%}#wpbody-content .inline-edit-row fieldset .inline-edit-col,tr.inline-edit-row td{padding:0 .5em}#wpbody-content .quick-edit-row-post .inline-edit-col-left{width:40%}#wpbody-content .quick-edit-row-post .inline-edit-col-right{width:39%}#wpbody-content .inline-edit-row-post .inline-edit-col-center{width:20%}#wpbody-content .quick-edit-row-page .inline-edit-col-left{width:50%}#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .quick-edit-row-page .inline-edit-col-right{width:49%}#wpbody-content .bulk-edit-row .inline-edit-col-left{width:30%}#wpbody-content .bulk-edit-row-page .inline-edit-col-right{width:69%}#wpbody-content .bulk-edit-row .inline-edit-col-bottom{float:right;width:69%}#bulk-titles div a,.inline-edit-row fieldset .inline-edit-date,.plugin-card,.quick-edit-row-post fieldset label.inline-edit-status{float:left}#wpbody-content .inline-edit-row-page .inline-edit-col-right{margin-top:27px}.inline-edit-row fieldset .inline-edit-group{clear:both;line-height:2.5}.inline-edit-row fieldset .inline-edit-group:after{content:".";display:block;height:0;clear:both;visibility:hidden}.inline-edit-row p.submit{clear:both;padding:.5em;margin:.5em 0 0}.inline-edit-row span.error{line-height:22px;margin:0 15px;padding:3px 5px}#the-list .inline-edit-row .inline-edit-legend{margin:0;padding:.2em .5em 0;line-height:2.5;font-weight:600}#the-list #bulk-edit.inline-edit-row .inline-edit-legend{padding:.2em .5em}.inline-edit-row fieldset span.checkbox-title,.inline-edit-row fieldset span.title{margin:0;padding:0;font-style:italic}.inline-edit-row fieldset label,.inline-edit-row fieldset span.inline-edit-categories-label{display:block;margin:.2em 0;line-height:2.5}.inline-edit-row fieldset.inline-edit-date label{display:inline-block;margin:0;line-height:1.5;vertical-align:baseline}.inline-edit-row fieldset label.inline-edit-tags{margin-top:0}.inline-edit-row fieldset label.inline-edit-tags span.title{margin:.2em 0;width:auto}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{display:block;float:left;width:6em;line-height:2.5}#posts-filter fieldset.inline-edit-date legend{padding:0}.inline-edit-row fieldset.inline-edit-date select{margin:1px;line-height:28px}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{display:block;margin-left:6em}.quick-edit-row-post fieldset.inline-edit-col-right label span.title{width:auto;padding-right:.5em}.inline-edit-row .inline-edit-or{margin:.2em 6px .2em 0;line-height:2.5}.inline-edit-row .input-text-wrap input[type=text]{width:100%}.inline-edit-row fieldset label input[type=checkbox]{vertical-align:middle}.inline-edit-row fieldset label textarea{width:100%;height:4em;vertical-align:top}#bulk-titles,ul.cat-checklist{height:12em;border:1px solid #ddd;overflow-y:scroll;padding:0 5px}#wpbody-content .bulk-edit-row fieldset .inline-edit-group label{max-width:50%}#wpbody-content .quick-edit-row fieldset .inline-edit-group label.alignleft:first-child{margin-right:.5em}.inline-edit-col-right .input-text-wrap input.inline-edit-menu-order-input{width:6em}.inline-edit-row .inline-edit-legend{text-transform:uppercase}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{font-size:12px;width:2.3em}.inline-edit-row fieldset input[name=aa]{font-size:12px;width:3.5em}.inline-edit-row fieldset label input.inline-edit-password-input{width:8em}ul.cat-checklist{margin:0;background-color:#fff}#bulk-titles{display:block;margin:0 0 5px;line-height:140%}.inline-edit-row fieldset ul.cat-checklist input,.inline-edit-row fieldset ul.cat-checklist li{margin:0;position:relative}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-style:normal;font-size:11px}.inline-edit-row fieldset label input.inline-edit-menu-order-input{width:3em}.inline-edit-row fieldset label input.inline-edit-slug-input{width:75%}.inline-edit-row #post_parent,.inline-edit-row select[name=page_template]{max-width:80%}.ie8 .inline-edit-row #post_parent,.ie8 .inline-edit-row select[name=page_template]{width:250px}#bulk-titles div{margin:.2em .3em}#bulk-titles div a{cursor:pointer;display:block;height:18px;margin:0 3px 0 -2px;overflow:hidden;position:relative;width:20px}#bulk-titles div a:before{position:relative;top:-3px}.plugins tbody,.plugins tbody th.check-column{padding:8px 0 0 2px}.plugins tbody th.check-column input[type=checkbox]{margin-top:4px}#update-plugins-table tbody td p{margin-top:0}#update-plugins-table tbody td p strong{font-size:14px}.plugins .inactive th.check-column,.plugins tfoot td.check-column,.plugins thead td.check-column{padding-left:6px}#update-plugins-table tfoot td.check-column,#update-plugins-table thead td.check-column{padding-top:11px}.plugins tr{background:#fff}.plugins p{margin:0 4px;padding:0}.plugins .desc p{margin:0 0 8px}.plugins td.desc{line-height:1.5em}.plugins .desc ol,.plugins .desc ul{margin:0 0 0 2em}.plugins .desc ul{list-style-type:disc}.plugins .row-actions{font-size:13px}.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th{padding:10px 9px}.plugins .active td,.plugins .active th{background-color:#f7fcfe}.plugins .update td,.plugins .update th{border-bottom:0}.plugin-update-tr td{border-top:0}.plugin-install #the-list td,.plugins .active td,.plugins .active th,.plugins .inactive td,.plugins .inactive th,.upgrade .plugins td,.upgrade .plugins th{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th,.plugins tr.active.plugin-update-tr+tr.inactive td,.plugins tr.active.plugin-update-tr+tr.inactive th{border-top:1px solid rgba(0,0,0,.03);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1;box-shadow:inset 0 1px 0 rgba(0,0,0,.02),inset 0 -1px 0 #e1e1e1}.plugins .update td,.plugins .update th,.plugins .updated td,.plugins .updated th,.plugins tr.active+tr.inactive.update td,.plugins tr.active+tr.inactive.update th,.plugins tr.active+tr.inactive.updated td,.plugins tr.active+tr.inactive.updated th,.upgrade .plugins tr:last-of-type td,.upgrade .plugins tr:last-of-type th{-webkit-box-shadow:none;box-shadow:none}.plugins .active.update td,.plugins .active.update th,tr.active.update+tr.plugin-update-tr .plugin-update{background-color:#fef7f1}.plugin-update-tr.active td,.plugins .active th.check-column{border-left:4px solid #00a0d2}.plugins .active.update th.check-column,.plugins .active.update+.plugin-update-tr .plugin-update{border-left:4px solid #d54e21}#wpbody-content .plugins .plugin-title,#wpbody-content .plugins .theme-title{padding-right:12px;white-space:nowrap}.plugins .inactive .plugin-title strong{font-weight:400}.plugins .row-actions,.plugins .second{padding:0 0 5px}.plugins .update .row-actions,.plugins .update .second,.plugins .updated .row-actions,.plugins .updated .second{padding-bottom:0}.plugins-php .widefat tfoot td,.plugins-php .widefat tfoot th{border-top-style:solid;border-top-width:1px}.plugin-update-tr .update-message{font-size:13px;font-weight:400;margin:0 10px 8px 31px;padding:6px 12px 8px 40px;background-color:#f7f7f7;background-color:rgba(0,0,0,.03)}.plugin-card .install-now:before,.plugin-card .update-now:before,.plugin-update-tr .update-message:before{color:#d54e21;display:inline-block;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:top}.plugin-card .update-now:before,.plugin-update-tr .update-message:before{content:"\f463"}.plugin-update-tr .update-message:before{margin:0 10px 0 -30px}.plugin-card .install-now:before,.plugin-card .update-now:before{margin:3px 5px 0 -2px}.plugin-card .updating-message:before,.plugin-update-tr .updating-message:before{content:"\f463";-webkit-animation:rotation 2s infinite linear;animation:rotation 2s infinite linear}@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.plugin-card .updated-message:before,.plugin-update-tr .updated-message:before{color:#79ba49;content:"\f147"}.wp-list-table.plugins tbody tr.plugin-update-tr td.plugin-update{overflow:hidden;padding:0;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}tr.active+tr.plugin-update-tr .plugin-update{background-color:#f7fcfe}tr.active+tr.plugin-update-tr:not(.updated) .plugin-update .update-message{background-color:#fcf3ef}.plugin-install-php h2{clear:both}.plugin-install-php h3{margin:2.5em 0 8px}.plugin-install-php .wp-filter{margin-bottom:0}.plugin-group{overflow:hidden;margin-top:1.5em}.plugin-group h3{margin-top:0}.plugin-card{margin:0 8px 16px;width:48.5%;width:-webkit-calc(50% - 8px);width:calc(50% - 8px);background-color:#fff;border:1px solid #dedede;box-sizing:border-box}.plugin-card:nth-child(odd){clear:both;margin-left:0}.plugin-card:nth-child(even){margin-right:0}@media screen and (min-width:1600px){.plugin-card{width:30%;width:-webkit-calc(33.1% - 8px);width:calc(33.1% - 8px)}.plugin-card:nth-child(odd){clear:none;margin-left:8px}.plugin-card:nth-child(even){margin-right:8px}.plugin-card:nth-child(3n+1){clear:both;margin-left:0}.plugin-card:nth-child(3n){margin-right:0}}.plugin-card-top{position:relative;padding:20px 20px 10px;min-height:135px}.plugin-action-buttons,div.action-links{margin:0}.plugin-card h3{margin:0 0 12px;font-size:18px;line-height:1.3}.plugin-card .desc,.plugin-card .name{margin-left:148px;margin-right:120px}.plugin-card .action-links{position:absolute;top:20px;right:20px;width:120px}.plugin-action-buttons{clear:right;float:right;margin-left:2em;margin-bottom:1em;text-align:right}.plugin-action-buttons li{margin-bottom:10px}.plugin-card-bottom{clear:both;padding:12px 20px;background-color:#fafafa;border-top:1px solid #dedede;overflow:hidden}.plugin-card-bottom .star-rating{display:inline}.plugin-card-update-failed .update-now{font-weight:600}.plugin-card-update-failed .notice-error{margin:0;padding-left:16px;-webkit-box-shadow:0 -1px 0 #dedede;box-shadow:0 -1px 0 #dedede}.plugin-card-update-failed .plugin-card-bottom{display:none}.plugin-card .column-rating{line-height:23px}.plugin-card .column-rating,.plugin-card .column-updated{margin-bottom:4px}.plugin-card .column-downloaded,.plugin-card .column-rating{float:left;clear:left;max-width:180px}.plugin-card .column-compatibility,.plugin-card .column-updated{text-align:right;float:right;clear:right;width:65%;width:-webkit-calc(100% - 180px);width:calc(100% - 180px)}.plugin-card .column-compatibility span:before{font:400 20px/.5 dashicons;speak:none;display:inline-block;padding:0;top:4px;left:-2px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important;color:#444}.plugin-card .compatibility-incompatible:before{content:"\f158"}.plugin-card .compatibility-compatible:before{content:"\f147"}.plugin-icon{position:absolute;top:20px;left:20px;width:128px;height:128px;margin:0 20px 20px 0}.no-plugin-results{color:#999;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.wp-list-table .site-deleted,.wp-list-table tr.site-deleted{background:#ff8573}.wp-list-table .site-spammed,.wp-list-table tr.site-spammed{background:#faafaa}.wp-list-table .site-archived,.wp-list-table tr.site-archived{background:#ffebe8}.wp-list-table .site-mature,.wp-list-table tr.site-mature{background:#fecac2}.sites.fixed .column-lastupdated,.sites.fixed .column-registered{width:20%}.sites.fixed .column-users{width:80px}@media screen and (max-width:1100px) and (min-width:782px),(max-width:480px){.plugin-card .action-links{position:static;margin-left:148px;width:auto}.plugin-action-buttons{float:none;margin:1em 0 0;text-align:left}.plugin-action-buttons li{display:inline-block;vertical-align:middle}.plugin-action-buttons li .button{margin-right:20px}.plugin-card .desc,.plugin-card .name{margin-right:0}.plugin-card .desc p:first-of-type{margin-top:0}.fixed .column-date{width:14%}}@media screen and (max-width:782px){.plugins #the-list tr td,.plugins tr.active+tr.inactive td,.plugins tr.active+tr.inactive th.check-column{border-top:none}.tablenav{height:auto}.tablenav.top{margin:20px 0 5px}.tablenav.bottom{position:relative;margin-top:15px}.tablenav br{display:none}.tablenav br.clear{display:block}.form-wrap>p,.tablenav .view-switch,.tablenav.top .actions,.tablenav.top .displaying-num,.tablenav.top .tablenav-pages.one-page{display:none}.view-switch a{width:36px;height:36px;line-height:33px}.tablenav.bottom .displaying-num{position:absolute;right:0;top:11px;margin:0;font-size:14px}.tablenav .tablenav-pages{width:100%;height:auto;text-align:center;margin:0 0 25px}.tablenav.bottom .tablenav-pages{margin-top:25px}.tablenav.bottom .tablenav-pages.one-page{margin:15px 0 0;height:0}.tablenav-pages .pagination-links{font-size:16px}.tablenav-pages .pagination-links a,.tablenav-pages-navspan{padding:9px 11px 12px;font-size:18px}.tablenav-pages-navspan{height:18px}.tablenav-pages .pagination-links .current-page{padding:8px 9px 9px;font-size:16px}.comment-count{font-size:14px}.wp-list-table th.column-primary~th,.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){display:none}.wp-list-table thead th.column-primary{width:100%}.wp-list-table tr th.check-column{display:table-cell;width:35px}.wp-list-table .column-primary .toggle-row{display:block}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.check-column){position:relative;clear:both;display:block;width:auto!important}.wp-list-table td.column-primary{padding-right:50px}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td.column-primary~td:not(.check-column){padding:3px 8px 3px 35%}.wp-list-table tr:not(.inline-edit-row):not(.no-items) td:not(.column-primary)::before{position:absolute;left:10px;display:block;overflow:hidden;width:32%;content:attr(data-colname);white-space:nowrap;text-overflow:ellipsis}.wp-list-table .is-expanded td:not(.hidden){display:block!important;overflow:hidden}.column-posts,.widefat .num{text-align:left}#comments-form .fixed .column-author,#commentsdiv .fixed .column-author{display:none!important}.fixed .column-comment .comment-author{display:block}#the-comment-list .is-expanded td{-webkit-box-shadow:none;box-shadow:none}#the-comment-list .is-expanded td:last-child{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.post-com-count .screen-reader-text{position:static;width:auto;height:auto;margin:0}.column-comments .post-com-count-approved:after,.column-comments .post-com-count-no-comments:after,.column-response .post-com-count-approved:after,.column-response .post-com-count-no-comments:after{content:none}.column-comments .post-com-count [aria-hidden=true],.column-response .post-com-count [aria-hidden=true]{display:none}#edithead label,.column-comments .post-com-count-wrapper>a,.column-response .post-com-count-wrapper>a{display:block}.column-comments .post-com-count-wrapper,.column-response .post-com-count-wrapper{white-space:normal}.column-comments .post-com-count-approved,.column-comments .post-com-count-no-comments,.column-response .post-com-count-approved,.column-response .post-com-count-no-comments{margin-top:0;margin-right:.5em}.column-comments .post-com-count-pending,.column-response .post-com-count-pending{position:static;height:auto;min-width:0;padding:0;border:none;-webkit-border-radius:0;border-radius:0;background:0 0;color:#bb2a2a;font-size:inherit;line-height:inherit;text-align:left}.column-comments .post-com-count-pending:hover,.column-response .post-com-count-pending:hover{color:#dc3232}.widefat tfoot td.check-column,.widefat thead td.check-column{padding-top:10px}.widefat *{word-wrap:normal}#wpbody-content .bulk-edit-row .inline-edit-col-bottom,#wpbody-content .bulk-edit-row .inline-edit-col-left,#wpbody-content .bulk-edit-row-page .inline-edit-col-right,#wpbody-content .bulk-edit-row-post .inline-edit-col-right,#wpbody-content .inline-edit-row-post .inline-edit-col-center,#wpbody-content .quick-edit-row-page .inline-edit-col-left,#wpbody-content .quick-edit-row-page .inline-edit-col-right,#wpbody-content .quick-edit-row-post .inline-edit-col-left,#wpbody-content .quick-edit-row-post .inline-edit-col-right{float:none;width:100%}#wpbody-content .bulk-edit-row fieldset .inline-edit-col label,#wpbody-content .bulk-edit-row fieldset .inline-edit-group label,#wpbody-content .quick-edit-row fieldset .inline-edit-col label,#wpbody-content .quick-edit-row fieldset .inline-edit-group label{max-width:none;float:none;margin-bottom:5px}#wpbody .bulk-edit-row fieldset select{display:block;width:100%;max-width:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.inline-edit-row #bulk-titles div,.inline-edit-row fieldset ul.cat-checklist label{font-size:16px}.wp-list-table.plugins .plugin-title strong,.wp-list-table.plugins .theme-title strong,table.plugin-install td.column-name strong{font-size:1.4em;line-height:1.6em}.inline-edit-row fieldset label span.title,.inline-edit-row fieldset.inline-edit-date legend{float:none}.inline-edit-row fieldset label.inline-edit-tags{padding:0 .5em}.inline-edit-row fieldset .inline-edit-col label.inline-edit-tags{padding:0}.inline-edit-row fieldset .timestamp-wrap,.inline-edit-row fieldset label span.input-text-wrap{margin-left:0}.inline-edit-row fieldset input[name=hh],.inline-edit-row fieldset input[name=jj],.inline-edit-row fieldset input[name=mn]{width:3em}.inline-edit-row fieldset input[name=aa]{width:4.5em}.inline-edit-row .inline-edit-or{margin:0 6px 0 0}#commentsdiv #edithead .inside,#edithead .inside{float:none;text-align:left;padding:3px 5px}#commentsdiv #edithead .inside input,#edithead .inside input{width:100%}#bulk-titles div{margin:.8em .3em}.plugin-card,.plugin-update-tr .update-message{margin-left:0}#bulk-titles div a{height:22px}#wpbody-content #update-themes-table .plugin-title{width:auto;white-space:normal}.link-manager-php #posts-filter{margin-top:25px}.link-manager-php .tablenav.bottom{overflow:hidden}.comments-box .toggle-row,.wp-list-table.plugins .toggle-row{display:none}#wpbody-content .wp-list-table.plugins td{display:block;width:auto;padding:10px 9px}#wpbody-content .wp-list-table.plugins .column-description{padding-top:2px}.wp-list-table.plugins .plugin-title,.wp-list-table.plugins .theme-title{padding-top:13px;padding-bottom:4px}.plugins #the-list .update td,.plugins #the-list .update th,.plugins #the-list tr>td:not(:last-child),.wp-list-table.plugins #the-list .theme-title{-webkit-box-shadow:none;box-shadow:none;border-top:none}.plugins tbody{padding:1px 0 0}.plugins .plugin-update-tr:before,.plugins tr.active+tr.inactive td.column-description,.plugins tr.active+tr.inactive th.check-column{-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugins .plugin-update-tr:before{content:"";display:table-cell}.plugins .active.update+.plugin-update-tr:before{border-left:4px solid #d54e21;background-color:#fef7f1}.plugins #the-list .plugin-update-tr .plugin-update{border-left:none}table.plugin-install .column-description,table.plugin-install .column-name,table.plugin-install .column-rating,table.plugin-install .column-version{display:block;width:auto}table.plugin-install th.column-description,table.plugin-install th.column-name,table.plugin-install th.column-rating,table.plugin-install th.column-version{display:none}table.plugin-install #the-list td{-webkit-box-shadow:none;box-shadow:none}table.plugin-install #the-list tr{display:block;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.1);box-shadow:inset 0 -1px 0 rgba(0,0,0,.1)}.plugin-card{margin-right:0;width:100%}}#titlediv,#wp-content-editor-container,.postbox,form#tags-filter{position:relative}#pending,#poststuff #titlewrap{border:0;padding:0}#poststuff{padding-top:10px;min-width:763px}#poststuff #post-body{padding:0}#poststuff .postbox-container{width:100%}#poststuff #post-body.columns-2{margin-right:300px}#show-comments{overflow:hidden}#save-action .spinner,#show-comments a{float:left}#show-comments .spinner{float:none;margin-top:0}#lost-connection-notice .spinner{visibility:visible;float:left;margin:0 5px 0 0}#titlediv label{cursor:text}#titlediv div.inside{margin:0}#titlediv #title{padding:3px 8px;font-size:1.7em;line-height:100%;height:1.7em;width:100%;outline:0;margin:0 0 3px;background-color:#fff}#titlediv #title-prompt-text{color:#777;position:absolute;font-size:1.7em;padding:11px 10px}#poststuff .inside-submitbox,#side-sortables .inside-submitbox{margin:0 3px;font-size:11px}input#link_description,input#link_url{width:98%}#pending{background:0 none;font-size:11px;margin-top:-1px}#comment-link-box,#edit-slug-box{line-height:24px;min-height:25px;margin-top:5px;padding:0 10px;color:#666}#edit-slug-box .cancel{margin-right:10px;padding:0;font-size:11px;text-decoration:underline;color:#0073aa}#comment-link-box{margin:5px 0;padding:0 5px}#editable-post-name-full{display:none}#editable-post-name{font-weight:700}#editable-post-name input{font-size:13px;font-weight:400;height:22px;margin:0;width:16em}.postarea h3 label{float:left}.submitbox .submit{text-align:left;padding:12px 10px 10px;font-size:11px;background-color:#464646;color:#ccc}.submitbox .submitdelete{text-decoration:none;padding:1px 2px}#normal-sortables .submitbox .submitdelete:hover{color:#000;background-color:red;border-bottom-color:red}.submitbox .submit a:hover{text-decoration:underline}.submitbox .submit input{margin-bottom:8px;margin-right:4px;padding:6px}.inside-submitbox #post_status{margin:2px 0 2px -2px}#post-status-select{margin-top:3px}#post-body #normal-sortables{min-height:50px}.postbox{min-width:255px;border:1px solid #e5e5e5;box-shadow:0 1px 1px rgba(0,0,0,.04);background:#fff}#trackback_url{width:99%}#normal-sortables .postbox .submit{background:0 0;border:0;float:right;padding:0 12px;margin:0}.category-add input[type=text],.category-add select{width:100%;max-width:260px;vertical-align:baseline}#side-sortables .category-add input[type=text],#side-sortables .category-add select{margin:0 0 1em}#side-sortables .add-menu-item-tabs li,.wp-tab-bar li,ul.category-tabs li{display:inline;line-height:1.35em}.no-js .category-tabs li.hide-if-no-js{display:none}#side-sortables .add-menu-item-tabs a,.category-tabs a,.wp-tab-bar a{text-decoration:none}#post-body ul.add-menu-item-tabs li.tabs a,#post-body ul.category-tabs li.tabs a,#side-sortables .add-menu-item-tabs .tabs a,#side-sortables .category-tabs .tabs a,.wp-tab-bar .wp-tab-active a{color:#32373c}.category-tabs{margin:8px 0 5px}#category-adder h4{margin:0}.taxonomy-add-new{display:inline-block;margin:10px 0;font-weight:600}.ui-tabs-hide,.wp-editor-expand #content-resize-handle,.wp-hidden-children .wp-hidden-child{display:none}#side-sortables .add-menu-item-tabs,.wp-tab-bar{margin-bottom:3px}#normal-sortables .postbox #replyrow .submit{float:none;margin:0;padding:5px 7px 10px;overflow:hidden}#side-sortables .submitbox .submit .preview,#side-sortables .submitbox .submit a.preview:hover,#side-sortables .submitbox .submit input{border:0}#side-sortables .inside-submitbox .insidebox,.stuffbox .insidebox{margin:11px 0}ul.add-menu-item-tabs,ul.category-tabs,ul.wp-tab-bar{margin-top:12px}ul.add-menu-item-tabs li,ul.category-tabs li{border:1px solid transparent;position:relative}.wp-tab-active,ul.add-menu-item-tabs li.tabs,ul.category-tabs li.tabs{border:1px solid #dfdfdf;border-bottom-color:#fdfdfd;background-color:#fdfdfd}ul.add-menu-item-tabs li,ul.category-tabs li,ul.wp-tab-bar li{padding:3px 5px 5px}#postimagediv .inside img{max-width:100%;height:auto;width:auto;background-image:-webkit-linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),-webkit-linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-image:linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4),linear-gradient(45deg,#c4c4c4 25%,transparent 25%,transparent 75%,#c4c4c4 75%,#c4c4c4);background-position:0 0,10px 10px;-webkit-background-size:20px 20px;background-size:20px 20px}#post-body .tagsdiv #newtag{margin-right:5px;width:16em}#side-sortables input#post_password{width:94%}#side-sortables .tagsdiv #newtag{width:68%}#post-status-info{width:100%;border-spacing:0;border:1px solid #e5e5e5;border-top:none;background-color:#f7f7f7;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);z-index:999}#post-status-info td{font-size:12px}.autosave-info{padding:2px 10px;text-align:right}#editorcontent #post-status-info{border:none}#content-resize-handle{background:url(../images/resize.gif) right bottom no-repeat;width:12px;cursor:row-resize}.rtl #content-resize-handle{background:url(../images/resize-rtl.gif) left bottom no-repeat}#postdivrich #content{resize:none}#wp-word-count{display:block;padding:2px 10px}#content-textarea-clone{z-index:-1;position:absolute;top:0;visibility:hidden;overflow:hidden;max-width:100%;border:1px solid transparent}.wp-editor-expand #wp-content-editor-tools{z-index:1000;border-bottom:1px solid #e5e5e5}.wp-editor-expand #wp-content-editor-container{-webkit-box-shadow:none;box-shadow:none;margin-top:-1px;border-bottom:0 none}.wp-editor-expand div.mce-statusbar{z-index:1}.wp-editor-expand #post-status-info{border-top:1px solid #e5e5e5}.wp-editor-expand div.mce-toolbar-grp{z-index:999}.mce-fullscreen #wp-content-wrap .mce-edit-area,.mce-fullscreen #wp-content-wrap .mce-menubar,.mce-fullscreen #wp-content-wrap .mce-statusbar,.mce-fullscreen #wp-content-wrap .mce-toolbar-grp{position:static!important;width:auto!important;padding:0!important}.mce-fullscreen #wp-content-wrap .mce-statusbar{visibility:visible!important}.mce-fullscreen #wp-content-wrap .mce-tinymce .mce-wp-dfw,.mce-fullscreen #wp-content-wrap .mce-wp-dfw,.post-php.mce-fullscreen #wpadminbar{display:none}#wp-content-editor-tools{background-color:#f1f1f1;padding-top:20px}#poststuff #post-body.columns-2 #side-sortables{width:280px}#timestampdiv select{height:21px;line-height:14px;padding:0;vertical-align:top;font-size:12px}#aa,#hh,#jj,#mn{padding:1px;font-size:12px}#hh,#jj,#mn{width:2em}#aa{width:3.4em}.curtime #timestamp{padding:2px 0 1px;display:inline!important;height:auto!important}#misc-publishing-actions label[for=post_status]:before,#post-body #visibility:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before,span.wp-media-buttons-icon:before{color:#82878c}#post-body #visibility:before,#post-body .misc-pub-revisions:before,.curtime #timestamp:before{font:400 20px/1 dashicons;speak:none;display:inline-block;padding:0 2px 0 0;top:0;left:-1px;position:relative;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-decoration:none!important}#post-body #visibility:before{content:"\f177"}.curtime #timestamp:before{content:"\f145";top:-1px}#post-body .misc-pub-revisions:before{content:"\f321"}#timestampdiv{padding-top:5px;line-height:23px}#timestampdiv p{margin:8px 0 6px}#timestampdiv input{border-width:1px;border-style:solid}.notification-dialog{position:fixed;top:30%;max-height:70%;left:50%;width:450px;margin-left:-225px;background:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);line-height:1.5;z-index:1000005;overflow-y:auto}.notification-dialog-background{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000000}#post-lock-dialog .post-locked-message,#post-lock-dialog .post-taken-over{margin:25px}#post-lock-dialog .post-locked-message a.button{margin-right:10px}#post-lock-dialog .post-locked-avatar{float:left;margin:0 20px 20px 0}#post-lock-dialog .wp-tab-first{outline:0}#post-lock-dialog .locked-saving img{float:left;margin-right:3px}#post-lock-dialog.saved .locked-saved,#post-lock-dialog.saving .locked-saving{display:inline}#excerpt{display:block;margin:12px 0 0;height:4em;width:100%}.tagchecklist{margin-left:14px;font-size:12px;overflow:auto}.tagchecklist br{display:none}.tagchecklist span,.tagchecklist span a{display:block;float:left;overflow:hidden}.tagchecklist strong{margin-left:-8px;position:absolute}.tagchecklist span{margin-right:25px;font-size:13px;line-height:1.8em;cursor:default;max-width:100%;text-overflow:ellipsis}.tagchecklist span a{margin:1px 0 0 -17px;cursor:pointer;width:20px;height:20px;text-indent:0;position:absolute}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{font-size:14px;padding:8px 12px;margin:0;line-height:1.4}#poststuff .inside{margin:6px 0 0}#poststuff .inside #page_template,#poststuff .inside #parent_id{max-width:100%}#poststuff .inside label.deleted,#poststuff .inside label.spam{color:red}#poststuff .inside label.waiting{color:orange}#poststuff .inside label.approved{color:green}.ie8 #poststuff .inside #page_template,.ie8 #poststuff .inside #parent_id{width:250px}#post-visibility-select{line-height:1.5em;margin-top:3px}#poststuff #submitdiv .inside{margin:0;padding:0}#post-body-content,.edit-form-section{margin-bottom:20px}#postcustomstuff thead th{padding:5px 8px 8px;background-color:#f1f1f1}#postcustom #postcustomstuff .submit{border:0;float:none;padding:0 8px 8px}#side-sortables #postcustom #postcustomstuff .submit{margin:0;padding:0}#side-sortables #postcustom #postcustomstuff #the-list textarea{height:85px}#side-sortables #postcustom #postcustomstuff td.left input,#side-sortables #postcustom #postcustomstuff td.left select,#side-sortables #postcustomstuff #newmetaleft a{margin:3px 3px 0}#postcustomstuff table{margin:0;width:100%;border:1px solid #dfdfdf;border-spacing:0;background-color:#f9f9f9}#postcustomstuff tr{vertical-align:top}#postcustomstuff table input,#postcustomstuff table select,#postcustomstuff table textarea{width:96%;margin:8px}#side-sortables #postcustomstuff table input,#side-sortables #postcustomstuff table select,#side-sortables #postcustomstuff table textarea{margin:3px}#postcustomstuff td.left,#postcustomstuff th.left{width:38%}#postcustomstuff .submit input{margin:0;width:auto}#postcustomstuff #newmetaleft a{display:inline-block;margin:0 8px 8px;text-decoration:none}.no-js #postcustomstuff #enternew{display:none}#post-body-content .compat-attachment-fields{margin-bottom:20px}.compat-attachment-fields th{padding-top:5px;padding-right:10px}#select-featured-image{padding:4px 0;overflow:hidden}#select-featured-image img{max-width:100%;height:auto;margin-bottom:10px}#select-featured-image a{float:left;clear:both}#select-featured-image .remove{display:none;margin-top:10px}.js #select-featured-image.has-featured-image .remove{display:inline-block}.no-js #select-featured-image .choose{display:none}.post-state-format{overflow:hidden;display:inline-block;vertical-align:middle;height:20px;width:20px;margin-right:5px;margin-top:-4px}.post-state-format:before{display:block;height:20px;width:20px;font:400 20px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon:before,.post-state-format:before{color:#ddd;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}a.post-format-icon:hover:before,a.post-state-format:hover:before{color:#00a0d2}#post-formats-select{line-height:2em}#post-formats-select .post-format-icon:before{top:5px}input.post-format{margin-top:1px}label.post-format-icon{margin-left:0;padding:2px 0}.post-format-icon:before{position:relative;display:inline-block;margin-right:7px;font:400 20px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.post-format-icon.post-format-standard:before,.post-state-format.post-format-standard:before,a.post-state-format.format-standard:before{content:"\f109"}.post-format-icon.post-format-image:before,.post-state-format.post-format-image:before,a.post-state-format.format-image:before{content:"\f128"}.post-format-icon.post-format-gallery:before,.post-state-format.post-format-gallery:before,a.post-state-format.format-gallery:before{content:"\f161"}.post-format-icon.post-format-audio:before,.post-state-format.post-format-audio:before,a.post-state-format.format-audio:before{content:"\f127"}.post-format-icon.post-format-video:before,.post-state-format.post-format-video:before,a.post-state-format.format-video:before{content:"\f126"}.post-format-icon.post-format-chat:before,.post-state-format.post-format-chat:before,a.post-state-format.format-chat:before{content:"\f125"}.post-format-icon.post-format-status:before,.post-state-format.post-format-status:before,a.post-state-format.format-status:before{content:"\f130"}.post-format-icon.post-format-aside:before,.post-state-format.post-format-aside:before,a.post-state-format.format-aside:before{content:"\f123"}.post-format-icon.post-format-quote:before,.post-state-format.post-format-quote:before,a.post-state-format.format-quote:before{content:"\f122"}.post-format-icon.post-format-link:before,.post-state-format.post-format-link:before,a.post-state-format.format-link:before{content:"\f103"}.category-adder{margin-left:120px;padding:4px 0}.category-adder h4{margin:0 0 8px}#side-sortables .category-adder{margin:0}.categorydiv div.tabs-panel,.customlinkdiv div.tabs-panel,.posttypediv div.tabs-panel,.taxonomydiv div.tabs-panel,.wp-tab-panel{min-height:42px;max-height:200px;overflow:auto;padding:0 .9em;border:1px solid #dfdfdf;background-color:#fdfdfd}div.tabs-panel-active{display:block}div.tabs-panel-inactive{display:none}#front-page-warning,#front-static-pages ul,.categorydiv ul.categorychecklist ul,.customlinkdiv ul.categorychecklist ul,.inline-editor ul.cat-checklist ul,.posttypediv ul.categorychecklist ul,.taxonomydiv ul.categorychecklist ul,ul.export-filters{margin-left:18px}ul.categorychecklist li{margin:0;padding:0;line-height:22px;word-wrap:break-word}.categorydiv .tabs-panel,.customlinkdiv .tabs-panel,.posttypediv .tabs-panel,.taxonomydiv .tabs-panel{border-width:3px;border-style:solid}.form-wrap label{display:block;padding:2px;font-size:12px}.form-field input[type=text],.form-field input[type=password],.form-field input[type=email],.form-field input[type=number],.form-field input[type=tel],.form-field input[type=url],.form-field input[type=search],.form-field textarea{border-style:solid;border-width:1px;width:95%}.form-wrap p,p.description{margin:2px 0 5px;color:#666}.form-wrap p,p.description,p.help,span.description{font-size:13px;font-style:italic}.form-wrap .form-field{margin:0 0 10px;padding:8px 0}.form-wrap .form-field #parent{max-width:100%}.col-wrap h2{margin:12px 0;font-size:1.1em}.col-wrap p.submit{margin-top:-10px}#poststuff .tagsdiv .howto{margin:0 0 6px}.ajaxtag .newtag{position:relative}.tagsdiv .newtag{width:180px}.tagsdiv .the-tags{display:block;height:60px;margin:0 auto;overflow:auto;width:260px}#qt_content_dfw,#wp-content-wrap .mce-wp-dfw,.ac_results{display:none}#post-body-content .tagsdiv .the-tags{margin:0 5px}p.popular-tags{border:none;line-height:2em;padding:8px 12px 12px;text-align:justify}p.popular-tags a{padding:0 3px}.tagcloud{width:97%;margin:0 0 40px;text-align:justify}.tagcloud h2{margin:2px 0 12px}.ac_results{padding:0;margin:0;list-style:none;position:absolute;z-index:10000;border:1px solid grey;background-color:#fff}.wp-customizer .ac_results{z-index:500000}.ac_results li{padding:2px 5px;white-space:nowrap;color:#101010;text-align:left}.ac_over{background-color:#f0f0b8;cursor:pointer}.ac_match{text-decoration:underline}.imgedit-group-top h2 a,.imgedit-group-top h3 a,a.imgedit-help-toggle,table.diff .diff-addedline ins,table.diff .diff-deletedline del{text-decoration:none}.comment-php .wp-editor-area{height:200px}.comment-ays td,.comment-ays th{padding:10px 15px}#comment-status-radio label,.links-table td,.links-table th{padding:5px 0}.comment-ays-submit .button-cancel{margin-left:1em}.spam-undo-inside,.trash-undo-inside{margin:1px 8px 1px 0;line-height:16px}.spam-undo-inside .avatar,.trash-undo-inside .avatar{height:20px;width:20px;margin-right:8px;vertical-align:middle}.stuffbox .editcomment{clear:none}#comment-status-radio p{margin:3px 0 5px}#comment-status-radio input{margin:2px 3px 5px 0;vertical-align:middle}table.links-table{width:100%;border-spacing:0}.links-table th{font-weight:400;text-align:left;vertical-align:top;min-width:80px;width:20%;word-wrap:break-word}.links-table td label{margin-right:8px}.links-table td input[type=text],.links-table td textarea{width:100%}.links-table #link_rel{max-width:280px}.wp-editor-expand #qt_content_dfw,.wp-editor-expand #wp-content-wrap .mce-wp-dfw{display:inline-block}.focus-on #screen-meta,.focus-on #screen-meta-links,.focus-on #wp-toolbar,.focus-on #wpfooter,.focus-on .postbox-container>*,.focus-on .update-nag,.focus-on .wrap>h1,.focus-on div.error,.focus-on div.notice,.focus-on div.updated{opacity:0;-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.focus-on #wp-toolbar{opacity:.3}.focus-off #screen-meta,.focus-off #screen-meta-links,.focus-off #wp-toolbar,.focus-off #wpfooter,.focus-off .postbox-container>*,.focus-off .update-nag,.focus-off .wrap>h1,.focus-off div.error,.focus-off div.notice,.focus-off div.updated{opacity:1;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:opacity;transition-property:opacity;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}.focus-off #wp-toolbar{-webkit-transform:translate(0,0)}.focus-on #adminmenuback,.focus-on #adminmenuwrap{-webkit-transition-duration:.6s;transition-duration:.6s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%)}.focus-off #adminmenuback,.focus-off #adminmenuwrap{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0);-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:-webkit-transform;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){#content-resize-handle,#post-body .wp_themeSkin .mceStatusbar a.mceResize{background:url(../images/resize-2x.gif) right bottom no-repeat;-webkit-background-size:11px 11px;background-size:11px 11px}.rtl #content-resize-handle,.rtl #post-body .wp_themeSkin .mceStatusbar a.mceResize{background:url(../images/resize-rtl-2x.gif) right bottom no-repeat}}@media only screen and (max-width:850px){#poststuff{min-width:0}#wpbody-content #poststuff #post-body{margin:0}#wpbody-content #post-body.columns-2 #postbox-container-1{margin-right:0;width:100%}#poststuff #postbox-container-1 #side-sortables:empty,#poststuff #postbox-container-1 .empty-container{border:0;height:0;min-height:0}#poststuff #post-body.columns-2 #side-sortables{min-height:0;width:auto}.columns-prefs,.screen-layout{display:none}}@media screen and (max-width:782px){#post-body-content{min-width:0}#titlediv #title-prompt-text{padding:10px}#poststuff .stuffbox>h3,#poststuff h2,#poststuff h3.hndle{padding:12px}.post-format-options{padding-right:0}.post-format-options a{margin-right:5px;margin-bottom:5px;min-width:52px}.post-format-options .post-format-title{font-size:11px}.post-format-options a div{height:28px;width:28px}.post-format-options a div:before{font-size:26px!important}#post-visibility-select{line-height:280%}.wp-core-ui .save-post-visibility,.wp-core-ui .save-timestamp{vertical-align:middle;margin-right:15px}.timestamp-wrap select#mm{display:block;width:100%;margin-bottom:10px}.timestamp-wrap #aa,.timestamp-wrap #hh,.timestamp-wrap #jj,.timestamp-wrap #mn{padding:12px 3px;font-size:14px;margin-bottom:5px;width:auto;text-align:center}ul.category-tabs{margin:30px 0 15px}.tagsdiv .newtag,ul.categorychecklist li{margin-bottom:15px}ul.category-tabs li.tabs{padding:15px}ul.categorychecklist ul{margin-top:15px}.category-add input[type=text],.category-add select{max-width:none;margin-bottom:15px}.tagsdiv .newtag{width:100%;height:auto}.tagchecklist{margin:25px 10px}.tagchecklist span{font-size:16px;line-height:1.4}#commentstatusdiv p{line-height:2.8}.mceToolbar *{white-space:normal!important}.mceToolbar td,.mceToolbar tr{float:left!important}.wp_themeSkin a.mceButton{width:30px;height:30px}.wp_themeSkin .mceButton .mceIcon{margin-top:5px;margin-left:5px}.wp_themeSkin .mceSplitButton{margin-top:1px}.wp_themeSkin .mceSplitButton td a.mceAction{padding:6px 3px 6px 6px}.wp_themeSkin .mceSplitButton td a.mceOpen,.wp_themeSkin .mceSplitButtonEnabled:hover td a.mceOpen{padding-top:6px;padding-bottom:6px;background-position:1px 6px}.wp_themeSkin table.mceListBox{margin:5px}div.quicktags-toolbar input{padding:10px 20px}button.wp-switch-editor{font-size:16px;line-height:1em;margin:7px 0 0 7px;padding:8px 12px}#wp-content-media-buttons a{font-size:16px;line-height:37px;height:39px;padding:0 20px 0 15px}.wp-media-buttons span.jetpack-contact-form-icon,.wp-media-buttons span.wp-media-buttons-icon{width:22px!important;margin-top:-3px!important;margin-left:-5px!important}.wp-media-buttons #insert-jetpack-contact-form span.jetpack-contact-form-icon:before,.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font-size:20px!important}#content_wp_fullscreen{display:none}.misc-pub-section{padding:20px 10px}.misc-pub-section>a{float:right;font-size:16px}#delete-action,#publishing-action{line-height:47px}#publishing-action .spinner{float:none;margin-top:-2px}.comment-ays td,.comment-ays th{padding-bottom:0}.comment-ays td{padding-top:6px}.links-table #link_rel{max-width:none}.links-table td,.links-table th{padding:10px 0}}@media only screen and (max-width:500px){#wp-content-media-buttons a{font-size:14px;padding:0 10px}}.revisions-control-frame,.revisions-diff-frame{position:relative}.revisions-controls{padding-top:40px;height:100px;z-index:1}.revisions-controls input[type=checkbox]{position:relative;top:-1px;vertical-align:text-bottom}.revisions.pinned .revisions-controls{position:fixed;top:0;height:82px;background:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff,.revisions-meta{background-color:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-tickmarks{position:relative;margin:0 auto;height:.7em;top:7px;max-width:70%;box-sizing:border-box;background-color:#fff}.revisions-tickmarks>div{position:absolute;height:100%;border-left:1px solid #a0a5aa;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.revisions-tickmarks>div:first-child{border-width:0}.comparing-two-revisions .revisions-controls{height:140px}.comparing-two-revisions.pinned .revisions-controls{height:124px}.revisions .diff-error{position:absolute;text-align:center;margin:0 auto;width:100%;display:none}.revisions.diff-error .diff-error{display:block}.revisions .loading-indicator{position:absolute;vertical-align:middle;opacity:0;width:100%;width:-webkit-calc(100% - 30px);width:calc(100% - 30px);top:50%;top:-webkit-calc(50% - 10px);top:calc(50% - 10px);-webkit-transition:opacity .5s;transition:opacity .5s;filter:alpha(opacity=0)}body.folded .revisions .loading-indicator{margin-left:-32px}.revisions .loading-indicator span.spinner{display:block;margin:0 auto;float:none}.revisions.loading .loading-indicator{opacity:1;filter:alpha(opacity=100)}.revisions .diff{-webkit-transition:opacity .5s;transition:opacity .5s}.revisions.loading .diff{opacity:.5;filter:alpha(opacity=50)}.revisions.diff-error .diff{visibility:hidden}.revisions-meta{margin-top:20px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions.pinned .revisions-meta{-webkit-box-shadow:none;box-shadow:none}.revision-toggle-compare-mode{position:absolute;top:0;right:0}.comparing-two-revisions .revisions-next,.comparing-two-revisions .revisions-previous,.revisions-meta .diff-meta-to strong{display:none}.revisions-controls .author-card .date{color:#777}.revisions-controls .author-card.autosave{color:#d54e21}.revisions-controls .author-card .author-name{font-weight:700}.comparing-two-revisions .diff-meta-to strong{display:block}.revisions.pinned .revisions-buttons{padding:0 11px}.revisions-next,.revisions-previous{position:relative;z-index:1}.revisions-previous{float:left}.revisions-next{float:right}.revisions-controls .wp-slider{max-width:70%;margin:0 auto;top:-3px}.revisions-diff{padding:15px;box-shadow:0 1px 3px rgba(0,0,0,.1)}.revisions-diff h3:first-child{margin-top:0}#revisions-meta-restored img,.post-revisions li img{vertical-align:middle}table.diff tbody tr td:nth-child(2){width:4%}table.diff{width:100%;white-space:pre-wrap}table.diff col.content{width:auto}table.diff col.content.diffsplit{width:48%}table.diff col.diffsplit.middle{width:auto}table.diff col.ltype{width:30px}table.diff tr{background-color:transparent}table.diff td,table.diff th{font-family:Consolas,Monaco,monospace;font-size:14px;line-height:1.618;padding:.5em;vertical-align:top;word-wrap:break-word}table.diff td h1,table.diff td h2,table.diff td h3,table.diff td h4,table.diff td h5,table.diff td h6{margin:0}table.diff .diff-deletedline{background-color:#ffe9e9}table.diff .diff-deletedline del{background-color:#faa}table.diff .diff-addedline{background-color:#e9ffe9}table.diff .diff-addedline ins{background-color:#afa}.diff-meta{padding:5px;clear:both;min-height:32px}.diff-title strong{line-height:32px;min-width:60px;text-align:right;float:left;margin-right:5px}.revisions-controls .author-card .author-info{font-size:12px;line-height:16px}.revisions-controls .author-card .author-info,.revisions-controls .author-card .avatar{float:left;margin-left:6px;margin-right:6px}.revisions-controls .author-card .byline{display:block;font-size:12px}.revisions-controls .author-card .avatar{vertical-align:middle}.diff-meta input.restore-revision{float:right;margin-left:6px;margin-right:6px;margin-top:4px}.diff-meta-from{display:none}.comparing-two-revisions .diff-meta-from{display:block}.revisions-tooltip{position:absolute;bottom:105px;margin-right:0;margin-left:-69px;z-index:0;max-width:350px;min-width:130px;padding:8px 4px;opacity:0}.revisions-tooltip.flipped{margin-left:0;margin-right:-70px}.revisions.pinned .revisions-tooltip{display:none!important}.comparing-two-revisions .revisions-tooltip{bottom:145px}.revisions-tooltip-arrow{width:70px;height:15px;overflow:hidden;position:absolute;left:0;margin-left:35px;bottom:-15px}.revisions-tooltip.flipped .revisions-tooltip-arrow{margin-left:0;margin-right:35px;left:auto;right:0}.revisions-tooltip-arrow>span{content:"";position:absolute;left:20px;top:-20px;width:25px;height:25px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.revisions-tooltip.flipped .revisions-tooltip-arrow>span{left:auto;right:20px}.ie8 .revisions-tooltip-arrow>span{left:15px;top:-25px;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(SizingMethod='auto expand', M11=0.7071067811865476, M12=-0.7071067811865475, M21=0.7071067811865475, M22=0.7071067811865476)"}.ie8 .revisions-tooltip.flipped .revisions-tooltip-arrow>span{right:25px}.revisions-tooltip,.revisions-tooltip-arrow>span{border:1px solid #d7d7d7;background-color:#fff}.revisions-tooltip{display:none}.arrow{width:70px;height:16px;overflow:hidden;position:absolute;left:0;margin-left:-35px;bottom:90px;z-index:10000}.arrow.top{top:-16px;bottom:auto}.arrow.left{left:20%}.arrow:after{z-index:9999;background-color:#fff;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.1);box-shadow:0 1px 3px rgba(0,0,0,.1);content:"";position:absolute;left:20px;top:-20px;width:25px;height:25px;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.revisions-tooltip,.revisions-tooltip-arrow:after{border-width:1px;border-style:solid}div.revisions-controls>.wp-slider>.ui-slider-handle{margin-left:-10px}.rtl div.revisions-controls>.wp-slider>.ui-slider-handle{margin-right:-10px}.wp-slider.ui-slider{position:relative;border:1px solid #d7d7d7;text-align:left;cursor:pointer}.wp-slider .ui-slider-handle{-webkit-border-radius:50%;border-radius:50%;height:18px;margin-top:-5px;outline:0;padding:2px;position:absolute;width:18px;z-index:2;-ms-touch-action:none;touch-action:none}.wp-slider .ui-slider-handle,.wp-slider .ui-slider-handle.focus{background:#f7f7f7;border:1px solid #ccc;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc}.wp-slider .ui-slider-handle.ui-state-hover,.wp-slider .ui-slider-handle:hover{background:#fafafa;border-color:#999}.wp-slider .ui-slider-handle.ui-state-active,.wp-slider .ui-slider-handle:active{background:#eee;border-color:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.wp-slider .ui-slider-handle:before{background:0 0;position:absolute;top:2px;left:2px;color:#555;content:"\f229";font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.media-item .media-item-info tr,.wp-slider .ui-slider-range{background-color:transparent}.wp-slider .ui-slider-handle.ui-state-hover:before,.wp-slider .ui-slider-handle:hover:before{color:#23282d}.wp-slider .ui-slider-handle.from-handle:before,.wp-slider .ui-slider-handle.to-handle:before{font-size:20px!important;margin:-1px 0 0 -1px}.wp-slider .ui-slider-handle.from-handle:before{content:"\f139"}.wp-slider .ui-slider-handle.to-handle:before{content:"\f141"}.rtl .wp-slider .ui-slider-handle.from-handle:before{content:"\f141"}.rtl .wp-slider .ui-slider-handle.to-handle:before{content:"\f139";right:-1px}.wp-slider .ui-slider-range{position:absolute;font-size:.7em;display:block;border:0;background-image:none}.wp-slider.ui-slider-horizontal{height:.7em}.wp-slider.ui-slider-horizontal .ui-slider-handle{top:-.25em;margin-left:-.6em}.wp-slider.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.wp-slider.ui-slider-horizontal .ui-slider-range-min{left:0}.wp-slider.ui-slider-horizontal .ui-slider-range-max{right:0}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.revision-tick.completed-false{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){#diff-next-revision,#diff-previous-revision{margin-top:-1em}table.diff{-ms-word-break:break-all;word-break:break-all;word-wrap:break-word}}.media-item .describe{width:100%;border-top:1px solid #dfdfdf;clear:both;cursor:default}.media-item.media-blank .describe{border:0}.media-item .describe th{vertical-align:top;text-align:left;padding:5px 10px 10px;width:140px}.media-item .describe .align th{padding-top:0}.media-item .describe td{padding:0 8px 8px 0;vertical-align:top}.media-item thead.media-item-info td{padding:4px 10px 0}.media-item .media-item-info .A1B1{padding:0 0 0 10px}.media-item td.savesend{padding-bottom:15px}.media-item .thumbnail{max-height:128px;max-width:128px}#wpbody-content #async-upload-wrap a{display:none}.media-upload-form{margin-top:20px}.media-upload-form td label{margin-right:6px;margin-left:2px}.media-upload-form .align .field label{display:inline;padding:0 0 0 23px;margin:0 1em 0 3px;font-weight:600}.media-upload-form tr.image-size label{margin:0 0 0 5px;font-weight:600}.media-upload-form th.label label{font-weight:600;margin:.5em;font-size:13px}.media-upload-form th.label label span{padding:0 5px}.media-item .describe input[type=text],.media-item .describe textarea{width:460px}.media-item .describe p.help{margin:0;padding:0 0 0 5px}.describe-toggle-off,.describe-toggle-on,.media-item .edit-attachment{display:block;line-height:36px;float:right;margin-right:10px}.media-item .describe-toggle-off,.media-item.open .describe-toggle-on{display:none}.media-item.open .describe-toggle-off{display:block}.js .html-uploader #plupload-upload-ui,.media-item .startclosed,.media-item .startopen{display:none}.media-upload-form .media-item{min-height:36px;margin-bottom:1px;position:relative;width:100%;background:#fff}.media-upload-form .media-item,.media-upload-form .media-item .error{-webkit-box-shadow:0 1px 0 #dfdfdf;box-shadow:0 1px 0 #dfdfdf}#media-items:empty{border:0}.media-item .filename{line-height:36px;overflow:hidden;margin-left:6px}.media-item .pinkynail{float:left;margin:2px 10px 0 3px;max-width:40px;max-height:32px}.media-item .original{position:relative;height:34px}.media-item .progress{float:right;height:22px;margin:7px 6px;width:200px;line-height:2em;padding:0;overflow:hidden;-webkit-border-radius:22px;border-radius:22px;background:#ddd;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.media-item .bar{z-index:9;width:0;height:100%;margin-top:-22px;-webkit-border-radius:22px;border-radius:22px;background-color:#0073aa;-webkit-box-shadow:inset 0 0 2px rgba(0,0,0,.3);box-shadow:inset 0 0 2px rgba(0,0,0,.3)}.media-item .progress .percent{z-index:10;position:relative;width:200px;padding:0;color:#fff;text-align:center;line-height:22px;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.upload-php .fixed .column-parent{width:15%}.js .html-uploader #html-upload-ui{display:block}.media-upload-form .media-item .error,.media-upload-form .media-item.error{width:auto;margin:0 0 1px}.media-upload-form .media-item .error{padding:10px 0 10px 14px}.media-item .error-div a.dismiss{display:block;float:right;margin:0 10px 0 15px}.find-box{background-color:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);width:600px;overflow:hidden;margin-left:-300px;position:fixed;top:30px;bottom:30px;left:50%;z-index:100105}.find-box-head{background:#fcfcfc;border-bottom:1px solid #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 36px 0 16px;position:absolute;top:0;left:0;right:0}.find-box-inside{overflow:auto;padding:16px;background-color:#fff;position:absolute;top:37px;bottom:45px;overflow-y:scroll;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.find-box-search{padding-bottom:16px}.find-box-search .spinner{float:none;left:105px;position:absolute}#find-posts-response,.find-box-search{position:relative}#find-posts-input,#find-posts-search{float:left}#find-posts-input{width:140px;height:28px;margin:0 4px 0 0}.widefat .found-radio{padding-right:0;width:16px}#find-posts-close{width:36px;height:36px;position:absolute;top:0;right:0;cursor:pointer;text-align:center;color:#666}#find-posts-close:hover{color:#00a0d2}#find-posts-close:before{font:400 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f158"}.find-box-buttons{padding:8px 16px;background:#fcfcfc;border-top:1px solid #dfdfdf;position:absolute;bottom:0;left:0;right:0}@media screen and (max-width:782px){.find-box-inside{bottom:57px}}@media screen and (max-width:660px){.find-box{top:0;bottom:0;left:0;right:0;margin:0;width:100%}}.ui-find-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}ul#dismissed-updates{display:none}form.upgrade{margin-top:8px}form.upgrade .hint{font-style:italic;font-size:85%;margin:-.5em 0 2em}#poststuff .inside .the-tagcloud{margin:5px 0 10px;padding:8px;border:1px solid #ddd;line-height:1.8em;word-spacing:3px}.drag-drop #drag-drop-area{border:4px dashed #b4b9be;height:200px}.drag-drop .drag-drop-inside{margin:70px auto 0;width:250px}.drag-drop-inside p{color:#a0a5aa;font-size:14px;margin:5px 0;display:none}.drag-drop .drag-drop-inside p{text-align:center}.drag-drop-inside p.drag-drop-info{font-size:20px}.drag-drop .drag-drop-inside p,.drag-drop-inside p.drag-drop-buttons{display:block}.media-frame.mode-grid .media-frame-menu,.media-frame.mode-grid .media-frame-router,.media-frame.mode-grid .media-frame-title,.upload-php .mode-grid .hide-sidebar .media-sidebar{display:none}.drag-drop.drag-over #drag-drop-area{border-color:#83b4d8}#plupload-upload-ui{position:relative}.media-frame.mode-grid,.media-frame.mode-grid .attachments-browser .attachments,.media-frame.mode-grid .media-frame-content,.media-frame.mode-grid .uploader-inline-content{position:static}.media-frame.mode-grid .media-frame-content{background-color:transparent;border:none}.upload-php .mode-grid .media-sidebar{position:relative;width:auto;margin-bottom:16px;padding:0 16px;border-left:4px solid #dd3d36;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);background-color:#fff}.upload-php .mode-grid .media-sidebar .media-uploader-status{border-bottom:none;padding-bottom:0;max-width:100%}.upload-php .mode-grid .media-sidebar .upload-error{margin:12px 0;padding:4px 0 0;border:none;-webkit-box-shadow:none;box-shadow:none;background:0 0}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors{top:-10px;right:-14px;padding:10px}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:before{content:"\f153";display:block;font:400 16px/1 dashicons;color:#bbb}.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:focus:before,.upload-php .mode-grid .media-sidebar .media-uploader-status .upload-dismiss-errors:hover:before{color:#c00}.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h2,.upload-php .mode-grid .media-sidebar .media-uploader-status.errors h3{display:none}.media-frame.mode-grid .uploader-inline{position:relative;top:auto;right:auto;left:auto;bottom:auto;padding-top:0;margin-top:0;border:4px dashed #b4b9be}.media-frame.mode-select .attachments-browser.fixed .attachments{position:relative;top:94px;padding-bottom:94px}.media-frame.mode-grid .attachment.details:focus,.media-frame.mode-grid .attachment:focus,.media-frame.mode-grid .selected.attachment:focus{-webkit-box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #f1f1f1,inset 0 0 0 7px #5b9dd9;outline:0}.media-frame.mode-grid .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #f1f1f1,inset 0 0 0 7px #ccc}.media-frame.mode-grid .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe;box-shadow:inset 0 0 0 3px #f1f1f1,inset 0 0 0 7px #1e8cbe}.media-frame.mode-grid.mode-select .attachment .thumbnail{opacity:.65}.media-frame.mode-select .attachment.selected .thumbnail{opacity:1}.media-frame.mode-grid .media-toolbar{margin-bottom:15px;height:auto}.media-frame.mode-grid .media-toolbar select{margin:0 10px 0 0;font-size:14px}.media-frame.mode-grid.mode-edit .media-toolbar-secondary>.select-mode-toggle-button{margin:0 8px 0 0;vertical-align:middle}.media-frame.mode-grid .attachments-browser .bulk-select{display:inline-block;margin:0 10px 0 0}.media-frame.mode-grid .search{margin-top:0}.media-frame.mode-grid .spinner{margin-top:16px}.attachments-browser .media-toolbar-secondary>.media-button{margin-right:10px}.media-frame.mode-select .attachments-browser.fixed .media-toolbar{position:fixed;top:32px;left:auto;right:20px;margin-top:0}.media-frame.mode-grid .attachments-browser{padding:0}.media-frame.mode-grid .attachments-browser .attachments{padding:2px}.media-frame.mode-grid .attachments-browser .no-media{color:#999;font-size:18px;font-style:normal;margin:0;padding:100px 0 0;text-align:center}.edit-attachment-frame{display:block;height:100%;width:100%}.edit-attachment-frame .edit-media-header{overflow:hidden}.upload-php .media-modal-close .media-modal-icon:before{content:"\f335";font-size:22px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{cursor:pointer;color:#777;background-color:transparent;height:50px;width:50px;padding:0;position:absolute;text-align:center;border:0;border-left:1px solid #ddd;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.upload-php .media-modal-close{top:0;right:0}.edit-attachment-frame .edit-media-header .left{right:102px}.edit-attachment-frame .edit-media-header .right{right:51px}.edit-attachment-frame .media-frame-title{left:0;right:150px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{font:400 20px/50px dashicons!important;display:inline;font-weight:300}.edit-attachment-frame .edit-media-header .left:focus,.edit-attachment-frame .edit-media-header .left:hover,.edit-attachment-frame .edit-media-header .right:focus,.edit-attachment-frame .edit-media-header .right:hover,.upload-php .media-modal-close:focus,.upload-php .media-modal-close:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.upload-php .media-modal-close:focus .media-modal-icon:before,.upload-php .media-modal-close:hover .media-modal-icon:before{color:#000}.edit-attachment-frame .edit-media-header .left:before,.rtl .edit-attachment-frame .edit-media-header .right:before{content:"\f341"}.edit-attachment-frame .edit-media-header .right:before,.rtl .edit-attachment-frame .edit-media-header .left:before{content:"\f345"}.edit-attachment-frame .edit-media-header .left.disabled,.edit-attachment-frame .edit-media-header .left.disabled:hover,.edit-attachment-frame .edit-media-header .right.disabled,.edit-attachment-frame .edit-media-header .right.disabled:hover{color:#ccc;background:inherit;cursor:default;pointer-events:none}.edit-attachment-frame .media-frame-content,.edit-attachment-frame .media-frame-router{left:0}.edit-attachment-frame .media-frame-content{border-bottom:none;bottom:0;top:50px}.edit-attachment-frame .attachment-details{position:absolute;overflow:auto;top:0;bottom:0;right:0;left:0;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1)}.edit-attachment-frame .attachment-media-view{float:left;width:65%;height:100%}.edit-attachment-frame .attachment-media-view .thumbnail{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:16px;height:100%}.edit-attachment-frame .attachment-media-view .details-image{display:block;margin-bottom:16px;max-width:100%;max-height:90%;max-height:-webkit-calc(100% - 42px);max-height:calc(100% - 42px)}.edit-attachment-frame .wp-media-wrapper{margin-bottom:12px}.edit-attachment-frame input,.edit-attachment-frame textarea{padding:6px 8px;line-height:16px}.edit-attachment-frame .attachment-info{overflow:auto;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:0;padding:12px 16px 0;width:35%;height:100%;-webkit-box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);box-shadow:inset 0 4px 4px -4px rgba(0,0,0,.1);border-bottom:0;border-left:1px solid #ddd;background:#f3f3f3}.edit-attachment-frame .attachment-info .details,.edit-attachment-frame .attachment-info .settings{position:relative;overflow:hidden;float:none;margin-bottom:15px;padding-bottom:15px;border-bottom:1px solid #ddd}.edit-attachment-frame .attachment-info .filename{font-weight:400;color:#666}.edit-attachment-frame .attachment-info .thumbnail{margin-bottom:12px}.attachment-info .actions{margin-bottom:16px}.attachment-info .actions a{display:inline;text-decoration:none}.wp_attachment_details label[for=content]{font-size:13px;line-height:1.5;margin:1em 0}.wp_attachment_details #attachment_caption{height:4em}.describe .image-editor{vertical-align:top}.imgedit-wrap{position:relative}.imgedit-settings p{margin:8px 0 0}.describe .imgedit-wrap .imgedit-settings{padding:0 5px}.wp_attachment_holder div.updated{margin-top:0}.wp_attachment_holder .imgedit-wrap>div{height:auto;overflow:hidden}.wp_attachment_holder .imgedit-wrap .imgedit-panel-content{padding-right:16px;width:auto;overflow:hidden}.wp_attachment_holder .imgedit-wrap .imgedit-settings{float:right;width:250px}.imgedit-settings input{margin-top:0;vertical-align:middle}.imgedit-wait{position:absolute;top:0;background:url(../images/spinner.gif) center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px;opacity:.7;filter:alpha(opacity=70);width:100%;height:500px;display:none}.no-float{float:none}.A1B1 .button,.A1B1 .spinner,.wp_attachment_image .button,.wp_attachment_image .spinner{float:left}.imgedit-settings .disabled,.media-disabled{color:grey}.A1B1,.wp_attachment_image{overflow:hidden}.no-js .wp_attachment_image .button{display:none}.imgedit-menu{margin:0 0 12px;min-width:300px}.imgedit-menu div{float:left;width:32px;border:1px solid #d5d5d5;background:#f1f1f1;margin:0 8px 0 0;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;line-height:28px;color:#777;cursor:pointer}.imgedit-menu div:before{font:400 20px/1 dashicons;speak:none;vertical-align:middle}.imgedit-menu div:hover{border-color:#c1c1c1;background-color:#eaeaea;color:#32373c}.imgedit-menu div.disabled{border-color:#ccc;background-color:#ddd;color:#777;filter:alpha(opacity=50);opacity:.5;cursor:default}.imgedit-crop:before{content:"\f165"}.imgedit-rleft:before{content:"\f166"}.imgedit-rright:before{content:"\f167"}.imgedit-flipv:before{content:"\f168"}.imgedit-fliph:before{content:"\f169"}.imgedit-undo:before{content:"\f171"}.imgedit-redo:before{content:"\f172"}.imgedit-crop-wrap{position:relative}.imgedit-crop{margin:0 8px 0 0}.imgedit-rleft{margin:0 3px}.imgedit-rright{margin:0 8px 0 3px}.imgedit-flipv{margin:0 3px}.imgedit-fliph{margin:0 8px 0 3px}.imgedit-undo{margin:0 3px}.imgedit-redo{margin:0 8px 0 3px}.imgedit-applyto img{margin:0 8px 0 0}#poststuff .imgedit-group-top h2,#poststuff .imgedit-group-top h3{margin:0;padding:0;font-size:14px;line-height:1.4}.imgedit-applyto .imgedit-label{padding:2px 0 0;display:block}.imgedit-help{display:none;font-style:italic}.form-table td.imgedit-response{padding:0}.imgedit-submit{margin:8px 0 0}.imgedit-submit-btn{margin-left:20px}.imgedit-wrap .nowrap{white-space:nowrap}span.imgedit-scale-warn{color:red;font-size:20px;font-style:normal;visibility:hidden;vertical-align:middle}.imgedit-group{margin-bottom:8px;padding:10px}audio,video{display:inline-block;max-width:100%}.mejs-container{width:100%;max-width:100%}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.imgedit-wait{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.wp_attachment_details label[for=content]{font-size:14px;line-height:1.5em}.media-upload-form .media-item .error,.media-upload-form .media-item.error{font-size:13px;line-height:1.5}.media-upload-form .media-item.error{padding:1px 10px}.media-upload-form .media-item .error{padding:10px 0 10px 12px}}@media only screen and (max-width:1120px){#wp-media-grid .wp-filter .attachment-filters{max-width:100%}}@media only screen and (max-width:782px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:46px;right:10px}}@media only screen and (max-width:600px){.media-frame.mode-select .attachments-browser.fixed .media-toolbar{top:0}}@media only screen and (max-width:480px){.edit-attachment-frame .media-frame-title{right:110px}.edit-attachment-frame .edit-media-header .left,.edit-attachment-frame .edit-media-header .right,.upload-php .media-modal-close{width:40px;height:40px}.upload-php .media-modal-close .media-modal-icon{margin:9px 10px}.edit-attachment-frame .edit-media-header .left:before,.edit-attachment-frame .edit-media-header .right:before{line-height:40px!important}.edit-attachment-frame .edit-media-header .left{right:82px}.edit-attachment-frame .edit-media-header .right{right:41px}.edit-attachment-frame .media-frame-content{top:40px}.edit-attachment-frame .attachment-media-view{float:none;height:auto;width:100%}.edit-attachment-frame .attachment-info{height:auto;width:100%}}@media only screen and (max-width:640px),screen and (max-height:400px){.upload-php .mode-grid .media-sidebar{max-width:100%}}.theme-browser .themes{clear:both;padding:0 0 100px}.themes-php .wrap h1{float:left;margin-bottom:15px}.network-admin.themes-php .wrap h1{margin-bottom:0}.themes-php .wrap h1 .button{margin-left:20px}.themes-php .wp-filter-search{position:relative;top:-2px;left:20px;margin:0;width:280px;font-size:16px;font-weight:300;line-height:1.5}.themes-php div.error,.themes-php div.notice,.themes-php div.updated{margin:0 0 20px;clear:both}.themes-php div.updated a{text-decoration:underline}.theme-browser .theme{cursor:pointer;float:left;margin:0 4% 4% 0;position:relative;width:30.6%;border:1px solid #dedede;-webkit-box-shadow:0 1px 1px -1px rgba(0,0,0,.1);box-shadow:0 1px 1px -1px rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.ie8 .theme-browser .theme{width:30%;margin:0 3% 4% 0}.theme-browser .theme:nth-child(3n){margin-right:0}.theme-browser .theme:focus,.theme-browser .theme:hover{cursor:pointer}.theme-browser .theme .theme-name{font-size:15px;font-weight:600;height:18px;margin:0;padding:15px;-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:#fff;background:rgba(255,255,255,.65)}.theme-browser .theme .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out;position:absolute;bottom:0;right:0;height:38px;padding:9px 10px 0;background:rgba(244,244,244,.7);border-left:1px solid rgba(0,0,0,.05)}.theme-browser .theme.focus .theme-actions,.theme-browser .theme:focus .theme-actions,.theme-browser .theme:hover .theme-actions{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-actions .button-primary{margin-right:3px}.theme-browser .theme .theme-actions .button-secondary{float:none;margin-left:3px}.theme-browser .theme .theme-screenshot{display:block;overflow:hidden;position:relative;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.theme-browser .theme .theme-screenshot:after{content:"";display:block;padding-top:66.66666%}.theme-browser .theme .theme-screenshot img{height:auto;position:absolute;left:0;top:0;width:100%;-webkit-transition:opacity .2s ease-in-out;transition:opacity .2s ease-in-out}.theme-browser .theme:focus .theme-screenshot,.theme-browser .theme:hover .theme-screenshot{background:#fff}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:.4}.theme-browser .theme .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";opacity:0;position:absolute;top:35%;right:25%;left:25%;background:#23282d;background:rgba(0,0,0,.7);color:#fff;font-size:15px;text-shadow:0 1px 0 rgba(0,0,0,.6);-webkit-font-smoothing:antialiased;font-weight:600;padding:15px 12px;text-align:center;-webkit-border-radius:3px;border-radius:3px;-webkit-transition:opacity .1s ease-in-out;transition:opacity .1s ease-in-out}.theme-browser .theme:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}.theme-browser .theme:focus .more-details{opacity:1}.theme-browser .theme.active:focus .theme-actions{display:block}.theme-browser.rendered .theme:focus .more-details,.theme-browser.rendered .theme:hover .more-details{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";opacity:1}.theme-browser .theme .theme-installed,.theme-browser .theme .theme-update{background:#d54e21;background:rgba(213,78,33,.95);color:#fff;display:block;font-size:13px;font-weight:400;height:48px;line-height:48px;padding:0 10px;position:absolute;top:0;right:0;left:0;border-bottom:1px solid rgba(0,0,0,.25);overflow:hidden}.theme-browser .theme .theme-installed:before,.theme-browser .theme .theme-update:before{content:"\f463";display:inline-block;font:400 20px/1 dashicons;margin:0 6px 0 0;opacity:.8;position:relative;top:5px;speak:none;-webkit-font-smoothing:antialiased}.theme-browser .theme.active .theme-name{background:#2f2f2f;color:#fff;padding-right:110px;font-weight:300;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.5);box-shadow:inset 0 1px 1px rgba(0,0,0,.5)}.theme-browser .customize-control .theme.active .theme-name{padding-right:15px}.theme-browser .theme.active .theme-name span{font-weight:600}.theme-browser .theme.active .theme-actions{background:rgba(49,49,49,.7);border-left:none;opacity:1}.theme-browser .theme.active .theme-actions .button-primary{margin-right:0}.theme-browser .theme .theme-author{background:#23282d;color:#eee;display:none;font-size:14px;margin:0 10px;padding:5px 10px;position:absolute;bottom:56px}.theme-browser .theme.display-author .theme-author{display:block}.theme-browser .theme.display-author .theme-author a{color:inherit;text-decoration:none}.theme-browser .theme.add-new-theme{border:none;-webkit-box-shadow:none;box-shadow:none}.theme-browser .theme.add-new-theme a{color:#999;text-decoration:none;display:block;position:relative;z-index:1}.theme-browser .theme.add-new-theme a:after{display:block;content:"";background:0 0;background:rgba(0,0,0,0);position:absolute;top:0;left:0;right:0;bottom:0;padding:0;text-shadow:none;border:5px dashed #d5d2ca;border:5px dashed rgba(0,0,0,.1);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.theme-browser .theme.add-new-theme span:after{background:#e5e5e5;background:rgba(153,153,153,.1);-webkit-border-radius:50%;border-radius:50%;display:inline-block;content:"\f132";-webkit-font-smoothing:antialiased;font:400 74px/115px dashicons;width:100px;height:100px;vertical-align:middle;text-align:center;color:#999;position:absolute;top:30%;left:50%;margin-left:-50px;text-indent:-4px;padding:0;text-shadow:none;z-index:4}.rtl .theme-browser .theme.add-new-theme span:after{text-indent:4px}.theme-browser .theme.add-new-theme a:focus .theme-screenshot,.theme-browser .theme.add-new-theme a:hover .theme-screenshot{background:0 0}.theme-browser .theme.add-new-theme a:focus span:after,.theme-browser .theme.add-new-theme a:hover span:after{background:#fff;color:#0073aa}.theme-browser .theme.add-new-theme a:focus:after,.theme-browser .theme.add-new-theme a:hover:after{border-color:transparent;color:#fff;background:#0073aa;content:""}.theme-browser .theme.add-new-theme .theme-name{background:0 0;text-align:center;-webkit-box-shadow:none;box-shadow:none;font-weight:400;position:relative;top:0;margin-top:-18px;padding-top:0;padding-bottom:48px}.theme-browser .theme.add-new-theme a:focus .theme-name,.theme-browser .theme.add-new-theme a:hover .theme-name{color:#fff;z-index:2}.theme-overlay .theme-backdrop{position:absolute;left:-20px;right:0;top:0;bottom:0;background:#f1f1f1;background:rgba(238,238,238,.9);z-index:10000}.theme-overlay .theme-header .close,.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{cursor:pointer;background-color:transparent;height:48px;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;text-align:center}.theme-overlay .theme-header{position:absolute;top:0;left:0;right:0;height:48px;border-bottom:1px solid #ddd}.theme-overlay .theme-header button{padding:0}.theme-overlay .theme-header .close{width:50px;float:right;border:0;border-left:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:before{font:400 22px/50px dashicons!important;color:#777;display:inline-block;content:"\f335";font-weight:300}.theme-overlay .theme-header .left,.theme-overlay .theme-header .right{color:#777;width:54px;float:left;border:0;border-right:1px solid #ddd;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .close:hover,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .left:hover,.theme-overlay .theme-header .right:focus,.theme-overlay .theme-header .right:hover{background:#ddd;border-color:#ccc;color:#000}.theme-overlay .theme-header .close:focus:before,.theme-overlay .theme-header .close:hover:before{color:#000}.theme-overlay .theme-header .close:focus,.theme-overlay .theme-header .left:focus,.theme-overlay .theme-header .right:focus{-webkit-box-shadow:none;box-shadow:none;outline:0}.theme-overlay .theme-header .left.disabled,.theme-overlay .theme-header .left.disabled:hover,.theme-overlay .theme-header .right.disabled,.theme-overlay .theme-header .right.disabled:hover{color:#ccc;background:inherit;cursor:inherit}.theme-overlay .theme-header .left:before,.theme-overlay .theme-header .right:before{font:400 20px/50px dashicons!important;display:inline;font-weight:300}.theme-overlay .theme-header .left:before{content:"\f341"}.theme-overlay .theme-header .right:before{content:"\f345"}.theme-overlay .theme-wrap{clear:both;position:fixed;top:9%;left:190px;right:30px;bottom:3%;background:#fff;-webkit-box-shadow:0 1px 20px 5px rgba(0,0,0,.1);box-shadow:0 1px 20px 5px rgba(0,0,0,.1);z-index:10000;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch}.theme-overlay .theme-wrap:after{content:".";display:block;height:0;clear:both;visibility:hidden}body.folded .theme-overlay .theme-wrap{left:70px}.theme-overlay .theme-about{position:absolute;top:49px;bottom:57px;left:0;right:0;overflow:auto;padding:2% 4%}.theme-overlay .theme-about:after{content:".";display:block;height:0;clear:both;visibility:hidden}.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-header"],.customize-support .theme-overlay .theme-actions a[href="themes.php?page=custom-background"],.theme-overlay .theme-actions .active-theme,.theme-overlay.active .theme-actions .inactive-theme{display:none}.theme-overlay .theme-actions{position:absolute;text-align:center;bottom:0;left:0;right:0;padding:10px 25px 5px;background:#f3f3f3;z-index:30;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-top:1px solid #eee}.upload-plugin,.upload-theme,.wp-full-overlay-sidebar{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.ie8 .theme-overlay .theme-actions{border:1px solid #eee}.theme-overlay .theme-actions a{margin-right:5px;margin-bottom:5px}.broken-themes a.delete-theme,.theme-overlay .theme-actions .delete-theme{color:#a00;text-decoration:none;border-color:transparent;-webkit-box-shadow:none;box-shadow:none;background:0 0}.theme-overlay .theme-actions .delete-theme{position:absolute;right:10px;bottom:5px}.broken-themes a.delete-theme:focus,.broken-themes a.delete-theme:hover,.theme-overlay .theme-actions .delete-theme:focus,.theme-overlay .theme-actions .delete-theme:hover{background:#d54e21;color:#fff;border-color:#d54e21}.theme-overlay .theme-actions .inactive-theme,.theme-overlay.active .theme-actions .active-theme{display:block}.theme-overlay .theme-screenshots{float:left;margin:0 30px 0 0;width:55%;max-width:880px;text-align:center}.theme-overlay .screenshot{border:1px solid #fff;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden;position:relative;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.2);box-shadow:0 0 0 1px rgba(0,0,0,.2)}.theme-overlay .screenshot:after{content:"";display:block;padding-top:75%}.theme-overlay .screenshot img{height:auto;position:absolute;left:0;top:0;width:100%}.theme-overlay.small-screenshot .theme-screenshots{position:absolute;width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:350px;width:auto}.theme-overlay .screenshot.thumb{background:#ccc;border:1px solid #eee;float:none;display:inline-block;margin:10px 5px 0;width:140px;height:80px;cursor:pointer}.theme-overlay .screenshot.thumb:after{content:"";display:block;padding-top:100%}.theme-overlay .screenshot.thumb img{cursor:pointer;position:absolute;left:0;top:0;width:100%;height:auto}.theme-overlay .screenshot.selected{background:0 0;border:2px solid #00a0d2}.theme-overlay .screenshot.selected img{opacity:.8}.theme-browser .theme .theme-screenshot.blank,.theme-overlay .screenshot.blank{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAALElEQVQYGWO8d+/efwYkoKioiMRjYGBC4WHhUK6A8T8QIJt8//59ZC493AAAQssKpBK4F5AAAAAASUVORK5CYII=)}.theme-overlay .theme-info{width:40%;float:left}.theme-overlay .current-label{background:#32373c;color:#fff;font-size:11px;display:inline-block;padding:2px 8px;-webkit-border-radius:2px;border-radius:2px;margin:0 0 -10px;user-select:none}.theme-overlay .theme-name{color:#23282d;font-size:32px;font-weight:100;margin:10px 0 0;line-height:1.3}.theme-overlay .theme-version{color:#999;font-size:13px;font-weight:400;float:none;display:inline-block;margin-left:10px}.theme-overlay .theme-author{margin:15px 0 25px;color:#686868;font-size:16px;font-weight:400;line-height:inherit}.theme-overlay .theme-author a{text-decoration:none}.theme-overlay .theme-description{color:#555;font-size:15px;font-weight:400;line-height:1.5;margin:30px 0 0}.theme-overlay .theme-tags{border-top:3px solid #eee;color:#82878c;font-size:13px;font-weight:400;margin:30px 0 0;padding-top:20px}.theme-overlay .theme-tags span{color:#444;font-weight:700;margin-right:5px}.theme-overlay .parent-theme{background:#f7fcfe;border:1px solid #eee;border-left:4px solid #00a0d2;font-size:14px;font-weight:400;margin-top:30px;padding:10px 10px 10px 20px}.theme-overlay .parent-theme strong{font-weight:700}.single-theme .theme,.single-theme .theme-overlay .theme-backdrop,.single-theme .theme-overlay .theme-header{display:none}.single-theme .theme-overlay .theme-wrap{clear:both;min-height:330px;position:relative;left:auto;right:auto;top:auto;bottom:auto;z-index:10}.single-theme .theme-overlay .theme-about{padding:30px 30px 70px;position:static}.single-theme .theme-overlay .theme-actions{position:absolute}@media only screen and (min-width:2000px){#wpwrap .theme-browser .theme{width:17.6%;margin:0 3% 3% 0}#wpwrap .theme-browser .theme:nth-child(3n),#wpwrap .theme-browser .theme:nth-child(4n){margin-right:3%}#wpwrap .theme-browser .theme:nth-child(5n){margin-right:0}}@media only screen and (min-width:1680px){.theme-overlay .theme-wrap{width:1450px;margin:0 auto}}@media only screen and (min-width:1640px){.theme-browser .theme{width:22.7%;margin:0 3% 3% 0}.theme-browser .theme .theme-screenshot:after{padding-top:75%}.theme-browser .theme:nth-child(3n){margin-right:3%}.theme-browser .theme:nth-child(4n){margin-right:0}}@media only screen and (max-width:1120px){.theme-browser .theme{width:47.5%;margin-right:0}.theme-browser .theme:nth-child(even){margin-right:0}.theme-browser .theme:nth-child(odd){margin-right:5%}}@media only screen and (max-width:900px){.theme-overlay .theme-wrap{left:65px}}@media only screen and (max-width:780px){.theme-overlay .theme-wrap,body.folded .theme-overlay .theme-wrap{top:0;right:0;bottom:0;left:0;padding:70px 20px 20px;border:none;z-index:100000;position:fixed}.theme-browser .theme.active .theme-name span{display:none}.theme-overlay .theme-screenshots{width:40%}.theme-overlay .theme-info{width:50%}.single-theme .theme-wrap{padding:10px}.theme-browser .theme .theme-actions{padding:5px 10px 4px}.theme-overlay.small-screenshot .theme-screenshots{position:static;float:none;max-width:302px}.theme-overlay.small-screenshot .theme-info{margin-left:0;width:auto}.theme:focus .more-details,.theme:hover .more-details,.theme:not(.active):focus .theme-actions,.theme:not(.active):hover .theme-actions{display:none}.theme-browser.rendered .theme:focus .theme-screenshot img,.theme-browser.rendered .theme:hover .theme-screenshot img{opacity:1}}@media only screen and (max-width:480px){.theme-browser .theme{width:100%;margin-right:0}.theme-browser .theme:nth-child(2n),.theme-browser .theme:nth-child(3n){margin-right:0}}@media only screen and (max-width:650px){.theme-overlay .theme-description,.theme-overlay .theme-update{margin-left:0}.theme-overlay .theme-actions .delete-theme{position:relative;right:auto;bottom:auto}.theme-overlay .theme-actions .inactive-theme{display:inline}.theme-overlay .theme-screenshots{width:100%;float:none}.theme-overlay .theme-info{width:100%}.theme-overlay .theme-author{margin:5px 0 15px}.theme-overlay .current-label{margin-top:10px;font-size:13px}.themes-php .wp-filter-search{float:none;clear:both;left:0;top:0;right:0;margin:10px 0;width:100%;max-width:280px}.theme-browser .theme.add-new-theme span:after{font:400 60px/90px dashicons;width:80px;height:80px;top:30%;left:50%;text-indent:0;margin-left:-40px}.single-theme .theme-wrap{margin:0 -12px 0 -10px;padding:10px}.single-theme .theme-overlay .theme-about{padding:10px;overflow:visible}.single-theme .current-label{display:none}.single-theme .theme-overlay .theme-actions{position:static}}.broken-themes{clear:both}.broken-themes table{text-align:left;width:50%;border-spacing:3px;padding:3px}.theme-browser .theme .theme-installed{background:#0073aa}.theme-browser .theme .theme-installed:before{content:"\f147"}.theme-browser .theme.is-installed .theme-actions .button-primary{display:none!important}.theme-install-php .wp-filter{padding:0 20px}.theme-install-php a.browse-themes,.theme-install-php a.upload{cursor:pointer}.theme-install-php a.browse-themes,.theme-install-php.show-upload-theme a.upload{display:none}.theme-install-php.show-upload-theme a.browse-themes{display:inline}.upload-plugin,.upload-theme{box-sizing:border-box;display:none;margin:0;padding:0;width:100%;overflow:hidden;position:relative;top:10px}.wp-full-overlay,.wp-full-overlay-main,.wp-full-overlay-sidebar{top:0;height:100%;bottom:0;left:0}.upload-plugin,body.show-upload-theme .upload-theme{display:block}body.show-upload-theme .upload-theme+.wp-filter,body.show-upload-theme .upload-theme+.wp-filter+.theme-browser,p.no-themes{display:none}.upload-plugin .wp-upload-form,.upload-theme .wp-upload-form{background:#fafafa;border:1px solid #e5e5e5;padding:30px;margin:30px auto;max-width:380px}.upload-plugin .install-help,.upload-theme .install-help{color:#999;font-size:18px;font-style:normal;margin:0;padding:40px 0 0;text-align:center}p.no-themes{clear:both;color:#666;font-size:18px;font-style:normal;margin:0;padding:0;text-align:center}body.no-results p.no-themes{display:block}.theme-install-php .add-new-theme,body.show-upload-theme p.no-themes{display:none!important}@media only screen and (max-width:1120px){.upload-theme .wp-upload-form{margin:20px 0;max-width:100%}.upload-theme .install-help{font-size:15px;padding:20px 0 0;text-align:left}}.theme-details .theme-rating{line-height:23px}.theme-details .star-rating{display:inline}.theme-details .no-rating,.theme-details .num-ratings{font-size:11px;color:#999}.theme-details .no-rating{display:block;line-height:20px}.appearance_page_custom-header #headimg{border:1px solid #DFDFDF;overflow:hidden;width:100%}.appearance_page_custom-header #upload-form p label{font-size:12px}.appearance_page_custom-header .available-headers .default-header{float:left;margin:0 20px 20px 0}.appearance_page_custom-header .random-header{clear:both;margin:0 20px 20px 0;vertical-align:middle}.appearance_page_custom-header .available-headers label input,.appearance_page_custom-header .random-header label input{margin-right:10px}.appearance_page_custom-header .available-headers label img{vertical-align:middle}div#custom-background-image{min-height:100px;border:1px solid #dfdfdf}div#custom-background-image img{max-width:400px;max-height:300px}body.full-overlay-active{overflow:hidden}.wp-full-overlay{background:0 0;z-index:500000;position:fixed;overflow:visible;right:0;min-width:0}.wp-full-overlay-sidebar{box-sizing:border-box;position:fixed;width:300px;padding:0;margin:0;z-index:10;background:#eee;border-right:none}.widget,.widget-placeholder{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}.wp-full-overlay.collapsed,.wp-full-overlay.expanded .wp-full-overlay-sidebar{margin-left:0!important}.wp-full-overlay.expanded{margin-left:300px}.wp-full-overlay.collapsed .wp-full-overlay-sidebar{overflow:visible;margin-left:-300px}.wp-full-overlay-sidebar:after{content:"";display:block;position:absolute;top:0;bottom:0;right:0;width:3px;z-index:1000}.wp-full-overlay-main{position:absolute;right:0}#customize-preview.wp-full-overlay-main{background:url(../images/spinner.gif) center center no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-preview.wp-full-overlay-main.iframe-ready{background:0 0}.wp-full-overlay-sidebar .wp-full-overlay-header{position:absolute;left:0;right:0;height:45px;padding:0 15px;line-height:45px;z-index:10;margin:0;border-top:none;-webkit-box-shadow:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-header a.back{margin-top:9px}.wp-full-overlay-sidebar .wp-full-overlay-footer{bottom:0;border-bottom:none;border-top:none;-webkit-box-shadow:none;box-shadow:none}.wp-full-overlay-sidebar .wp-full-overlay-sidebar-content{position:absolute;top:45px;bottom:45px;left:0;right:0;overflow:auto}.theme-install-overlay .wp-full-overlay-sidebar .wp-full-overlay-header{padding:0}.theme-install-overlay .close-full-overlay,.theme-install-overlay .next-theme,.theme-install-overlay .previous-theme{display:block;position:relative;float:left;width:45px;height:45px;padding-right:2px;background:#eee;border-right:1px solid #ddd;color:#444;cursor:pointer;text-decoration:none;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.theme-install-overlay .close-full-overlay:focus,.theme-install-overlay .close-full-overlay:hover,.theme-install-overlay .next-theme:focus,.theme-install-overlay .next-theme:hover,.theme-install-overlay .previous-theme:focus,.theme-install-overlay .previous-theme:hover{background:#ddd;border-color:#ccc;color:#000;outline:0;-webkit-box-shadow:none;box-shadow:none}.theme-install-overlay .close-full-overlay:before{font:400 22px/1 dashicons;content:"\f335";position:relative;top:7px;left:13px}.theme-install-overlay .previous-theme:before{font:400 20px/1 dashicons;content:"\f341";position:relative;top:6px;left:14px}.theme-install-overlay .next-theme:before{font:400 20px/1 dashicons;content:"\f345";position:relative;top:6px;left:13px}.theme-install-overlay .next-theme.disabled,.theme-install-overlay .next-theme.disabled:focus,.theme-install-overlay .next-theme.disabled:hover,.theme-install-overlay .previous-theme.disabled,.theme-install-overlay .previous-theme.disabled:focus,.theme-install-overlay .previous-theme.disabled:hover{color:#b4b9be;background:#eee;cursor:default;pointer-events:none}.wp-core-ui .wp-full-overlay .collapse-sidebar{position:fixed;bottom:8px;left:10px;padding:0;color:#656a6f;outline:0;line-height:1;background-color:transparent!important;border:none!important;-webkit-box-shadow:none!important;box-shadow:none!important;-webkit-border-radius:0!important;border-radius:0!important}.wp-core-ui .wp-full-overlay .collapse-sidebar:focus,.wp-core-ui .wp-full-overlay .collapse-sidebar:hover{color:#0073aa}.wp-full-overlay .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar-label{display:inline-block;vertical-align:middle;line-height:20px}.wp-full-overlay .collapse-sidebar-arrow{width:20px;height:20px;margin:0 2px;-webkit-border-radius:50%;border-radius:50%;overflow:hidden}.wp-full-overlay .collapse-sidebar:focus .collapse-sidebar-arrow,.wp-full-overlay .collapse-sidebar:hover .collapse-sidebar-arrow{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-full-overlay .collapse-sidebar-label{margin-left:3px}.wp-full-overlay.collapsed .collapse-sidebar-label{display:none}.wp-full-overlay .collapse-sidebar-arrow:before{display:block;content:"\f148";background:#eee;font:400 20px/1 dashicons;speak:none;padding:0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.rtl .wp-full-overlay .collapse-sidebar-arrow:before,.wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:rotate(180.001deg);-ms-transform:rotate(180.001deg);transform:rotate(180.001deg)}.rtl .wp-full-overlay.collapsed .collapse-sidebar-arrow:before{-webkit-transform:none;-ms-transform:none;transform:none}.wp-full-overlay,.wp-full-overlay .collapse-sidebar,.wp-full-overlay-main,.wp-full-overlay-sidebar{-webkit-transition-property:left,right,top,bottom,width,margin;transition-property:left,right,top,bottom,width,margin;-webkit-transition-duration:.2s;transition-duration:.2s}.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#customize-container{display:none;background:#fff;z-index:500000;position:fixed;overflow:visible;top:0;bottom:0;left:0;right:0;height:100%}.customize-active #customize-container{display:block}.customize-loading #customize-container iframe{opacity:0}.customize-loading #customize-container{background:url(../images/spinner.gif) center center no-repeat fixed #fff;-webkit-background-size:20px 20px;background-size:20px 20px}#customize-container iframe,.theme-install-overlay iframe{height:100%;width:100%;z-index:20;-webkit-transition:opacity .3s;transition:opacity .3s}#customize-controls{margin-top:0}.theme-install-overlay{display:none}.theme-install-overlay.single-theme{display:block}.install-theme-info{display:none;padding:10px 20px 60px}.single-theme .install-theme-info{padding-top:15px}.theme-install-overlay .install-theme-info{display:block}.install-theme-info .theme-install{float:right;margin-top:18px}.install-theme-info .theme-name{font-size:16px;line-height:24px;margin-bottom:0;margin-top:0}.install-theme-info .theme-screenshot{margin:15px 0;width:258px;border:1px solid #ccc}.install-theme-info .theme-details{overflow:hidden}.theme-details .theme-version{margin:15px 0}.theme-details .theme-description{float:left;color:#777;line-height:20px;max-width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{float:right;margin:8px 10px 0 0;line-height:26px}.theme-install-overlay .wp-full-overlay-sidebar{background:#eee;border-right:1px solid #ddd}.theme-install-overlay .wp-full-overlay-sidebar-content{background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.theme-install-overlay .wp-full-overlay-main{position:relative;z-index:0;background-color:#fff}.theme-install-overlay .wp-full-overlay-main:before{content:'';display:block;width:20px;height:20px;position:absolute;left:50%;top:50%;z-index:-1;margin:-10px 0 0 -10px;-webkit-transform:translateZ(0);transform:translateZ(0);background:url(../images/spinner.gif) center center no-repeat #fff;-webkit-background-size:20px 20px;background-size:20px 20px}.theme-install-overlay.iframe-ready .wp-full-overlay-main:before{background-image:none}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-full-overlay .collapse-sidebar-arrow{background-image:url(../images/arrows-2x.png);-webkit-background-size:15px 123px;background-size:15px 123px}#customize-preview.wp-full-overlay-main,.customize-loading #customize-container,.theme-install-overlay .wp-full-overlay-main:before{background-image:url(../images/spinner-2x.gif)}}@media screen and (max-width:782px){.available-theme .action-links .delete-theme{float:none;margin:0;padding:0;clear:both}.available-theme .action-links .delete-theme a{padding:0}.broken-themes table{width:100%}.theme-install-overlay .wp-full-overlay-header .theme-install{margin-top:6px;line-height:normal}}.about-wrap{position:relative;margin:25px 40px 0 20px;max-width:1050px;font-size:15px}.about-wrap .notice,.about-wrap div.error,.about-wrap div.updated{display:none!important}.about-wrap hr{border:0;height:0;margin:0;border-top:1px solid rgba(0,0,0,.1)}.about-wrap img{margin:0;max-width:100%;height:auto;vertical-align:middle}.about-wrap .jetpack-video-wrapper{margin-bottom:0}.wp-badge{background:url(../images/w-logo-white.png?ver=20131202) center 24px no-repeat #0073aa;-webkit-background-size:85px 85px;background-size:85px 85px;color:#78c8e6;font-size:14px;text-align:center;font-weight:600;margin:5px 0 0;padding-top:120px;height:40px;display:inline-block;width:150px;text-rendering:optimizeLegibility;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.2);box-shadow:0 1px 3px rgba(0,0,0,.2)}.svg .wp-badge{background-image:url(../images/wordpress-logo-white.svg?ver=20131110)}.about-wrap .wp-badge{position:absolute;top:0;right:0}.about-wrap .nav-tab{padding-right:15px;padding-left:15px;font-size:18px}.about-wrap p{line-height:1.6em;font-size:14px}.about-wrap h1{margin:.2em 200px 0 0;padding:0;color:#32373c;line-height:1.2em;font-size:2.8em;font-weight:400}.about-wrap h3{margin:1.25em 0 .6em;font-size:1.25em;line-height:1.5em}.about-wrap h4{color:#23282d}.about-wrap code,.about-wrap ol li p{font-size:14px;font-weight:400}.about-wrap .about-description,.about-wrap .about-text{margin-top:1.4em;font-weight:400;line-height:1.6em;font-size:19px}.about-wrap .about-text{margin:1em 200px 1em 0;min-height:60px;color:#777}.about-wrap [class$=col] .col{float:left;position:relative}.about-wrap .two-col .col{margin-right:4.799999999%;width:47.6%}.about-wrap .feature-section.two-col .col{display:inline-block;float:none;margin-right:4.799999999%;width:calc(47.6% - 4px);vertical-align:middle}.about-wrap .three-col .col{margin-right:4.999999999%;width:29.95%}.about-wrap .three-col .col:nth-of-type(3n),.about-wrap .two-col .col:nth-of-type(2n){margin-right:0}.about-wrap .point-releases{margin-top:5px;border-bottom:1px solid #dfdfdf}.about-wrap .changelog.point-releases h3{padding-top:35px}.about-wrap .changelog.point-releases h3:first-child{padding-top:7px}.about-wrap .headline-feature h2{margin:30px 0;font-size:2.2em;font-weight:300;line-height:1.3;text-align:center}.about-wrap .headline-feature h3{margin-top:0;text-align:left}.about-wrap .embed-container,.about-wrap .feature-list h2,.about-wrap .featured-image{text-align:center}.about-wrap .feature-section.two-col h3{margin-top:0}.about-wrap .feature-list h2{margin:30px 0 15px}.about-wrap .feature-section h4{margin:1.4em 0 .6em;font-size:1em}.about-wrap .feature-section p{margin-top:.6em}.about-wrap .two-col-text{-webkit-column-count:2;-moz-column-count:2;column-count:2;-webkit-column-gap:40px;-moz-column-gap:40px;column-gap:40px}.about-wrap .two-col-text p:first-of-type{margin-top:0}.about-wrap .headline-feature.feature-video{position:relative;margin:40px 0;padding-bottom:56.25%;width:100%;max-width:100%;height:0;text-align:center}.about-wrap .feature-video embed{position:absolute;top:0;left:0;width:100%;height:100%}.about-wrap .feature-section{overflow:hidden;padding:0 0 40px}.about-wrap .headline-feature{margin:0 auto;max-width:80%}.about-wrap .feature-section .media-container{overflow:hidden}.about-wrap .headline-feature .col{width:65.2%}.about-wrap .headline-feature .col.feature-image{width:30%}.about-wrap .headline-feature .vertical-screen{float:right;margin-left:40px;max-width:100%}.about-wrap .headline-feature .horizontal-screen{margin-top:20px;max-width:100%}.about-wrap .embed-container iframe,.about-wrap .wp-embedded-content{max-width:100%}.about-wrap .feature-section:not(.under-the-hood) .col{margin-top:40px}.about-wrap .changelog{margin-bottom:40px}.about-wrap .changelog.feature-section .col{margin-top:40px}.about-wrap .return-to-dashboard{margin:30px 0 0 -5px;font-size:14px;font-weight:700}.about-wrap .return-to-dashboard a{text-decoration:none;padding:0 5px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-left:115px}.about-wrap h3.wp-people-group{margin:2.6em 0 1.33em;font-size:16px;line-height:inherit}.about-wrap ul.wp-people-group{overflow:hidden;padding:0 5px;margin:0 -15px 0 -5px}.about-wrap ul.compact{margin-bottom:0}.about-wrap li.wp-person{display:inline-block;vertical-align:top;margin-right:10px;padding-bottom:15px;height:70px;width:280px}.about-wrap ul.compact li.wp-person{height:auto;width:180px;padding-bottom:0;margin-bottom:0}.about-wrap li.wp-person img.gravatar{float:left;margin:0 10px 10px 0;padding:2px;width:60px;height:60px}.about-wrap ul.compact li.wp-person img.gravatar{width:30px;height:30px}.about-wrap li.wp-person a.web{display:block;margin:6px 0 2px;font-size:16px;font-weight:400;line-height:1.6em;text-decoration:none}.about-wrap #wp-people-group-validators+p.wp-credits-list{margin-top:0}.about-wrap p.wp-credits-list a{white-space:nowrap}.freedoms-php .about-wrap ol{margin:40px 60px}.freedoms-php .about-wrap ol li{list-style-type:decimal;font-weight:700}.freedoms-php .about-wrap ol p{font-weight:400;margin:.6em 0}@media screen and (max-width:782px){.about-wrap .feature-section{padding:0;border-bottom:none}.about-wrap [class$=col] .col{float:none;width:100%;margin:40px 0 0;padding:0 0 40px}.about-wrap .headline-feature{position:relative}.about-wrap .headline-feature .col.feature-image{position:absolute;bottom:0;right:0;width:40%}.about-wrap .headline-feature .horizontal-image{position:relative}.about-wrap .headline-feature .horizontal-image:before{display:block;content:"";width:100%;padding-top:80%}.about-wrap .headline-feature .horizontal-image>.content{position:absolute;top:0;left:0;right:0;bottom:0}.about-wrap .headline-feature .horizontal-image img{position:absolute;bottom:0}.about-wrap .two-col-text{-webkit-column-count:1;-moz-column-count:1;column-count:1}.about-wrap .three-col img{display:block;margin:0 auto}.about-wrap .feature-list .col{margin:0;padding:0;border-bottom:none}.about-wrap .headline-feature .feature-section{max-width:100%}.about-wrap .feature-list .feature-section{padding:0 0 40px}}@media only screen and (max-width:500px){.about-wrap{margin-right:20px;margin-left:10px}.about-wrap .about-text,.about-wrap h1{margin-right:0}.about-wrap .about-text{margin-bottom:.25em}.about-wrap .wp-badge{position:relative;margin-bottom:1.5em;width:100%}.about-wrap .feature-section.two-col .col,.about-wrap .headline-feature .feature-section .col,.about-wrap .three-col .col{width:100%!important;float:none!important}.about-wrap .feature-section.two-col .col:last-of-type{margin-top:0}.feature-section.under-the-hood.one-col .col,.feature-section.under-the-hood.three-col .col{padding-bottom:0}}@media only screen and (max-width:400px){.about-wrap .feature-list svg{margin-top:15px;height:65px;width:65px}.about-wrap .feature-list.finer-points h4,.about-wrap .feature-list.finer-points p{margin-left:80px}}.no-js #message{display:block}ul.add-menu-item-tabs li{padding:3px 5px 3px 8px}.accordion-section ul.add-menu-item-tabs,.accordion-section ul.category-tabs,.accordion-section ul.wp-tab-bar{margin:0}.accordion-section .categorychecklist{margin:13px 0}#nav-menu-meta .accordion-section-content{padding:18px 13px}#nav-menu-meta .button-controls{margin-bottom:0}#nav-menus-frame{margin-left:300px;margin-top:23px}#wpbody-content #menu-settings-column{display:inline;width:281px;margin-left:-300px;clear:both;float:left;padding-top:0}#menu-settings-column .inside{clear:both;margin:10px 0 0}.metabox-holder-disabled .accordion-section-content,.metabox-holder-disabled .accordion-section-title,.metabox-holder-disabled .postbox{opacity:.5;filter:alpha(opacity=50)}.metabox-holder-disabled .button-controls .select-all{display:none}#wpbody{position:relative}.blank-slate .menu-name{height:2em}.blank-slate .menu-settings{border:none;margin-top:0;padding-top:0;overflow:hidden}.is-submenu{color:#999;font-style:italic;font-weight:400;margin-left:4px}.manage-menus{margin-top:23px;padding:10px;overflow:hidden;background:#fbfbfb}.manage-menus select{float:left;margin-right:6px}.manage-menus .selected-menu{float:left;margin:5px 6px 0 0}.manage-menus .submit-btn{float:left;margin-top:1px}.menu-edit #post-body-content h3{margin:1em 0 10px}.menu-settings{border-top:1px solid #eee;margin-top:2em}.menu-settings dl{margin:0 0 10px;overflow:hidden;padding-left:18%}.menu-settings dd{float:left;margin:0;width:100%}.menu-settings dt{float:left;clear:both;width:21.951%;padding:3px 0 0;margin-left:-21.951%}.menu-settings label{vertical-align:baseline}.menu-edit .checkbox-input{margin-top:4px}.theme-location-set{color:#999;font-size:11px}#add-custom-link .howto,#cancel-save{font-size:12px}#menu-management-liquid{float:left;min-width:100%;margin-top:3px}#menu-management{position:relative;margin-right:20px;margin-top:-3px;width:100%;background:#f5f5f5}#menu-management .menu-edit{margin-bottom:20px}.nav-menus-php #post-body{padding:0 10px 10px;border-top:1px solid #fff;border-bottom:1px solid #dfdfdf;background:#fff}#nav-menu-footer,#nav-menu-header{padding:0 10px}#nav-menu-header{border-bottom:1px solid #dfdfdf;margin-bottom:0}#nav-menu-header .menu-name-label{margin-top:4px}.nav-menus-php #post-body div.error,.nav-menus-php #post-body div.updated{margin:0}.nav-menus-php #post-body-content{position:relative;float:none}#menu-management .menu-add-new abbr{font-weight:600}#select-nav-menu-container{text-align:right;padding:0 10px 3px;margin-bottom:5px}#select-nav-menu{width:100px;display:inline}#menu-name-label{margin-top:-2px}.widefat .menu-locations tr+tr td{padding-top:0}.widefat .menu-locations td{vertical-align:middle}.menu-location-title label{font-weight:700}.menu-location-menus select{float:left}#locations-nav-menu-wrapper{padding:5px 0}.locations-nav-menu-select select{float:left;width:160px;margin-right:5px}.locations-row-links{float:left;margin:6px 0 0 6px}.locations-add-menu-link,.locations-edit-menu-link{margin:0 3px}.locations-edit-menu-link{padding-right:3px;border-right:1px solid #ccc}#wpbody .open-label{display:block;float:left}#wpbody .open-label span{padding-right:10px}.js .input-with-default-title{color:#a0a5aa;font-style:italic}#menu-management .inside{padding:0 10px}.accordion-container .howto input,.postbox .howto input{width:180px;float:right}.accordion-container .outer-border{margin:0}.customlinkdiv .howto input{width:180px}.customlinkdiv p{margin-top:0}#nav-menu-theme-locations .howto select{width:100%}#nav-menu-theme-locations .button-controls{text-align:right}.add-menu-item-view-all{height:400px}#menu-container .submit{margin:0 0 10px;padding:0}.nav-menus-php .add-new-menu-action{float:left;margin:6px 0 0 6px;line-height:15px}.nav-menus-php .meta-sep,.nav-menus-php .submitcancel,.nav-menus-php .submitdelete{display:block;float:left;margin:6px 0;line-height:15px}.meta-sep{padding:0 2px}#cancel-save{text-decoration:underline;margin-left:20px;margin-top:5px}.button-primary.right,.button-secondary.right,.button.right{float:right}.list-controls{float:left;margin-top:5px}.add-to-menu{float:right}.button-controls{clear:both;margin:10px 0}.hide-all,.show-all{cursor:pointer}.hide-all{display:none}#menu-name{width:270px}#manage-menu .inside{padding:0}#available-links dt{display:block}#add-custom-link label span{display:block;float:left;margin-top:5px;padding-right:5px}.menu-item-textbox{width:180px}.nav-menus-php .howto span{margin-top:6px;display:block;float:left}.quick-search{width:190px}.quick-search-wrap .spinner{float:none;margin:-3px -10px 0 0}.nav-menus-php .list-wrap{display:none;clear:both;margin-bottom:10px}.nav-menus-php .postbox p.submit{margin-bottom:0}.nav-menus-php .list li{display:none;margin:0 0 5px}.nav-menus-php .list li .menu-item-title{cursor:pointer;display:block}.nav-menus-php .list li .menu-item-title input{margin-right:3px;margin-top:-3px}.menu-item-title input[type=checkbox]{display:inline-block;margin-top:-4px}#menu-container .inside{padding-bottom:10px}.menu{padding-top:1em}#menu-to-edit{margin:0;padding:.1em 0}.menu ul{width:100%}.menu li{margin-bottom:0;position:relative}.menu-item-bar{clear:both;line-height:1.5em;position:relative;margin:9px 0 0}.menu-item-bar .menu-item-handle{border:1px solid #dfdfdf;position:relative;padding:10px 15px;height:auto;min-height:20px;width:382px;line-height:30px;overflow:hidden;word-wrap:break-word}.menu-item-bar .menu-item-handle:hover{border-color:#999}#menu-to-edit .menu-item-invalid .menu-item-handle{background:#f6c9cc;border-color:#f1acb1}.no-js .menu-item-edit-active .item-edit{display:none}.js .menu-item-handle{cursor:move}#cancel-save,.item-controls a:hover,.js .sidebar-name{cursor:pointer}.menu li.deleting .menu-item-handle{background-image:none;background-color:#f66}.menu-item-handle .item-title{font-size:13px;font-weight:600;line-height:20px;display:block;margin-right:13em}.menu-item-handle .menu-item-title.no-title{color:#999}li.menu-item.ui-sortable-helper .menu-item-bar{margin-top:0}li.menu-item.ui-sortable-helper .menu-item-transport .menu-item-bar{margin-top:13px}.menu .sortable-placeholder{height:35px;width:410px;margin-top:13px}.menu-item .menu-item-transport:empty{display:none}.menu-item-depth-0{margin-left:0}.menu-item-depth-1{margin-left:30px}.menu-item-depth-2{margin-left:60px}.menu-item-depth-3{margin-left:90px}.menu-item-depth-4{margin-left:120px}.menu-item-depth-5{margin-left:150px}.menu-item-depth-6{margin-left:180px}.menu-item-depth-7{margin-left:210px}.menu-item-depth-8{margin-left:240px}.menu-item-depth-9{margin-left:270px}.menu-item-depth-10{margin-left:300px}.menu-item-depth-11{margin-left:330px}.menu-item-depth-0 .menu-item-transport{margin-left:0}.menu-item-depth-1 .menu-item-transport{margin-left:-30px}.menu-item-depth-2 .menu-item-transport{margin-left:-60px}.menu-item-depth-3 .menu-item-transport{margin-left:-90px}.menu-item-depth-4 .menu-item-transport{margin-left:-120px}.menu-item-depth-5 .menu-item-transport{margin-left:-150px}.menu-item-depth-6 .menu-item-transport{margin-left:-180px}.menu-item-depth-7 .menu-item-transport{margin-left:-210px}.menu-item-depth-8 .menu-item-transport{margin-left:-240px}.menu-item-depth-9 .menu-item-transport{margin-left:-270px}.menu-item-depth-10 .menu-item-transport{margin-left:-300px}.menu-item-depth-11 .menu-item-transport{margin-left:-330px}body.menu-max-depth-0{min-width:950px!important}body.menu-max-depth-1{min-width:980px!important}body.menu-max-depth-2{min-width:1010px!important}body.menu-max-depth-3{min-width:1040px!important}body.menu-max-depth-4{min-width:1070px!important}body.menu-max-depth-5{min-width:1100px!important}body.menu-max-depth-6{min-width:1130px!important}body.menu-max-depth-7{min-width:1160px!important}body.menu-max-depth-8{min-width:1190px!important}body.menu-max-depth-9{min-width:1220px!important}body.menu-max-depth-10{min-width:1250px!important}body.menu-max-depth-11{min-width:1280px!important}.item-type{display:inline-block;padding:12px 16px;color:#666;font-size:12px;line-height:18px}.item-controls{font-size:12px;position:absolute;right:20px;top:-1px}.item-controls a{text-decoration:none}.item-controls .item-order{padding-right:10px}.nav-menus-php .item-edit{position:absolute;right:-20px;top:0;display:block;width:30px;height:40px;margin-right:0!important;text-indent:100%;outline:0;overflow:hidden;white-space:nowrap}.nav-menus-php .item-edit:before{margin-top:10px;margin-left:4px;width:20px;-webkit-border-radius:50%;border-radius:50%;text-indent:-1px}.rtl .nav-menus-php .item-edit:before{text-indent:1px}.nav-menus-php .item-edit:focus{-webkit-box-shadow:none;box-shadow:none}.nav-menus-php .item-edit:focus:before{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.menu-instructions-inactive{display:none}.menu-item-settings{display:block;width:402px;padding:10px 0 10px 10px;position:relative;z-index:10;border:1px solid #e5e5e5;border-top:none;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04)}.menu-item-settings .field-move a{display:none;margin:0 2px}.menu-item-edit-active .menu-item-settings{display:block}.menu-item-edit-inactive .menu-item-settings{display:none}.add-menu-item-pagelinks{margin:.5em auto;text-align:center}.link-to-original{display:block;margin:0 0 10px;padding:3px 5px 5px;border:1px solid #dfdfdf;color:#777;font-size:12px;font-style:italic}.hidden-field,.nav-menus-php .blank-slate .menu-settings{display:none}.link-to-original a{padding-left:4px;font-style:normal}.menu-item-settings .description-thin,.menu-item-settings .description-wide{margin-right:10px;float:left}.description-thin{width:190px}.description-wide{width:390px}.menu-item-actions{padding-top:15px}.nav-menus-php .major-publishing-actions{clear:both;padding:3px 0 6px}.nav-menus-php .major-publishing-actions .publishing-action{text-align:right;float:right;line-height:23px;margin:4px 0 1px}.nav-menus-php .delete-action{float:left;margin-top:2px}.nav-menus-php .submitbox .submitcancel{border-bottom:1px solid #0073aa;padding:1px 2px;color:#0073aa;text-decoration:none}.nav-menus-php .submitbox .submitcancel:hover{background:#0073aa;color:#fff}.nav-menus-php .major-publishing-actions .form-invalid{padding-left:4px;margin-left:-4px}#menu-item-name-wrap:after,#menu-item-url-wrap:after,#menu-name-label:after,#menu-settings-column .inside:after,#nav-menus-frame:after,.nav-menus-php #post-body-content:after,.nav-menus-php .button-controls:after,.nav-menus-php .major-publishing-actions:after,.nav-menus-php .menu-item-settings:after{clear:both;content:".";display:block;height:0;visibility:hidden}#menu-item-name-wrap,#menu-item-url-wrap,#nav-menus-frame,.button-controls{display:block}@media only screen and (min-width:769px) and (max-width:1000px){body.menu-max-depth-0{min-width:0!important}#menu-management-liquid{width:100%}.nav-menus-php #post-body-content{min-width:0}.menu-item-bar .menu-item-handle{width:90%}}@media screen and (max-width:782px){body.nav-menus-php{min-width:0!important}#nav-menus-frame{margin-left:0;float:none;width:100%}#wpbody-content #menu-settings-column{display:block;width:100%;float:none;margin-left:0}#side-sortables .add-menu-item-tabs{margin:15px 0 14px}ul.add-menu-item-tabs li.tabs{padding:13px 15px 14px}.nav-menus-php .item-controls .item-type{margin-top:2px}.nav-menus-php .customlinkdiv .howto input{width:65%}.nav-menus-php .quick-search{width:85%}#menu-management-liquid{margin-top:25px}.nav-menus-php .menu-name-label.howto span{margin-top:13px}.menu-name-label #menu-name{margin-top:4px}.nav-menus-php .major-publishing-actions .publishing-action{margin-top:6px}.nav-menus-php .delete-action{font-size:14px;line-height:50px;margin-top:12px}.description-wide,.menu-item-bar .menu-item-handle,.menu-item-settings{width:auto}.menu-item-settings{padding:10px}.menu-item-settings .description-thin,.menu-item-settings .description-wide,.menu-item-settings input{width:100%}.menu-item-settings input[type=checkbox],.menu-item-settings input[type=radio]{width:25px}.menu-settings dl{padding-left:0}.menu-settings dd{float:none;width:100%;margin-bottom:15px}.menu-settings dt{float:none;width:auto;margin-left:0;margin-bottom:15px}}@media only screen and (max-width:768px){#menu-locations-wrap .widefat{width:100%}}.widget{margin:0 auto 10px;position:relative;box-sizing:border-box}.widget-top{font-size:13px;font-weight:600;background:#f7f7f7}.widget-top a.widget-action,.widget-top a.widget-action:hover{-webkit-box-shadow:none;box-shadow:none;outline:0;text-decoration:none}.widget-title h3,.widget-title h4{margin:0;padding:15px;font-size:1em;line-height:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;user-select:none}.widgets-holder-wrap .widget-inside{border-top:none;padding:1px 15px 15px;line-height:16px}#available-widgets .widget-description,#widgets-right a.widget-control-edit,.in-widget-title{color:#666}.deleting .widget-title,.deleting .widget-top a.widget-action:after{color:#a0a5aa}.widget.ui-draggable-dragging{min-width:100%}.widget.ui-sortable-helper{opacity:.8}.widget-placeholder{border:1px dashed #b4b9be;margin:0 auto 10px;height:45px;width:100%;box-sizing:border-box}#widgets-right .widget-placeholder{margin-top:0}#widgets-right .closed .widget-placeholder{height:0;border:0;margin-top:-10px}.sidebar-name{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sidebar-name-arrow{position:absolute;top:0;right:0;bottom:0}.sidebar-name h2,.sidebar-name h3{margin:0;padding:8px 10px;overflow:hidden;white-space:nowrap}.widgets-holder-wrap .description{padding:0 0 15px;margin:0;font-style:normal;color:#777}#widgets-right .widgets-holder-wrap .description{padding-left:7px;padding-right:7px}div.widget-liquid-left{margin:0;width:38%;float:left}div.widget-liquid-right{float:right;width:58%}div#widgets-left{padding-top:12px}div#widgets-left .closed .sidebar-name,div#widgets-left .inactive-sidebar.closed .sidebar-name{margin-bottom:10px}div#widgets-left .sidebar-name h2,div#widgets-left .sidebar-name h3{padding:10px 0;margin:0 10px 0 0}#widgets-left .sidebar-name .sidebar-name-arrow:before{padding:9px}#widgets-left #available-widgets,div#widgets-left .widget-holder{background:0 0;border:none}#widgets-left .widgets-holder-wrap{border:none;-webkit-box-shadow:none;box-shadow:none}#available-widgets .widget-action{display:none}#available-widgets .widget{margin:0}#available-widgets .widget:nth-child(odd){clear:both}#available-widgets .widget .widget-description{display:block;padding:10px 15px;font-size:12px}#available-widgets #widget-list{position:relative}#widgets-left .inactive-sidebar{clear:both;width:100%;background:0 0;padding:0;margin:0 0 20px;border:none;-webkit-box-shadow:none;box-shadow:none}#widgets-left .inactive-sidebar.first{margin-top:40px}div#widgets-left .inactive-sidebar .widget.expanded{left:auto}.widget-title-action{float:right;position:relative}div#widgets-left .inactive-sidebar .widgets-sortables{min-height:42px;padding:0;background:0 0;margin:0;position:relative}div#widgets-right:after{content:".";display:block;height:0;clear:both;visibility:hidden}div#widgets-right .sidebars-column-1,div#widgets-right .sidebars-column-2{max-width:450px}div#widgets-right .widgets-holder-wrap{margin:10px 0 0}div#widgets-right .sidebar-description{min-height:20px;margin-top:-5px}div#widgets-right .sidebar-name h2,div#widgets-right .sidebar-name h3{padding:15px 7px}div#widgets-right .sidebar-name .sidebar-name-arrow:before{top:2px}div#widgets-right .widget-top{padding:0}div#widgets-right .widgets-sortables{padding:0 8px;margin-bottom:9px;position:relative;min-height:123px}div#widgets-right .closed .widgets-sortables{min-height:0;margin-bottom:0}.remove-inactive-widgets .spinner,.sidebar-name .spinner{float:none;position:relative;top:-2px;margin:-5px 5px}#widgets-right .widgets-holder-wrap.widget-hover{border-color:#777;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 1px 2px rgba(0,0,0,.3)}.widgets_access #widgets-left .widget .widget-top{cursor:auto}.widgets_access #wpwrap .widget-control-edit,.widgets_access #wpwrap .widgets-holder-wrap.closed .sidebar-description,.widgets_access #wpwrap .widgets-holder-wrap.closed .widget{display:block}.widgets_access #widgets-left .widget .widget-top:hover,.widgets_access #widgets-right .widget .widget-top:hover{border-color:#ddd}#available-widgets .widget-control-edit .edit,#widgets-left .inactive-sidebar .widget-control-edit .add,#widgets-right .widget-control-edit .add{display:none}.editwidget .widget-inside,.widget-control-edit{display:block;padding:0 15px}.widget-control-edit{color:#666;background:#EEE;line-height:43px;border-left:1px solid #DDD}#widgets-left .widget-control-edit:hover,#widgets-right .widget-control-edit:hover{color:#fff;background:#444;border-left:0;outline:#444 solid 1px}.widgets-holder-wrap .sidebar-description,.widgets-holder-wrap .sidebar-name{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.editwidget{margin:0 auto}.editwidget .widget-control-actions{margin-top:20px}.js .closed br.clear,.js .widgets-holder-wrap.closed .remove-inactive-widgets,.js .widgets-holder-wrap.closed .sidebar-description,.js .widgets-holder-wrap.closed .widget{display:none}.js .widgets-holder-wrap.closed .widget.ui-sortable-helper{display:block}#access-off,.no-js .widget-holder .description,.widget-control-noform,.widget-description,.widget-inside,.widgets_access #access-on,.widgets_access .sidebar-name-arrow,.widgets_access .widget-action,.widgets_access .widget-holder .description{display:none}.widget-inside{background:#fff}#removing-widget{display:none;font-weight:400;padding-left:15px;font-size:12px;line-height:1;color:#000}.js #removing-widget{color:#00a0d2}.widgets_access #widget-list,.widgets_access .widget-holder{padding-top:10px}.widgets_access #access-off{display:inline}.widgets_access .sidebar-name,.widgets_access .widget .widget-top{cursor:default}.widget-liquid-left #widgets-left.chooser #available-widgets .widget,.widget-liquid-left #widgets-left.chooser .inactive-sidebar{-webkit-transition:opacity .1s linear;transition:opacity .1s linear;opacity:.2;pointer-events:none}.widget-liquid-left #widgets-left.chooser #available-widgets .widget-in-question{opacity:1;pointer-events:auto}#available-widgets .widget-top:hover,#widgets-left .widget-in-question .widget-top,#widgets-left .widget-top:hover,.widgets-chooser ul,div#widgets-right .widget-top:hover{border-color:#999;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.widgets-chooser ul.widgets-chooser-sidebars{margin:0;list-style-type:none;max-height:300px;overflow:auto}.widgets-chooser{display:none}.widgets-chooser ul{border:1px solid #ccc}.widgets-chooser li{padding:10px 15px 10px 35px;border-bottom:1px solid #ccc;background:#fff;margin:0;cursor:pointer;outline:0;position:relative;-webkit-transition:background .2s ease-in-out;transition:background .2s ease-in-out}.widgets-chooser li:focus,.widgets-chooser li:hover{background:rgba(255,255,255,.7)}.widgets-chooser li:focus:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:400 26px/1 dashicons;color:#999;position:absolute;top:7px;left:5px}.widgets-chooser li:last-child{border:none}.widgets-chooser li.widgets-chooser-selected{background:#00a0d2;color:#fff}.widgets-chooser li.widgets-chooser-selected:before,.widgets-chooser li.widgets-chooser-selected:focus:before{content:"\f147";display:block;-webkit-font-smoothing:antialiased;font:400 26px/1 dashicons;color:#fff;position:absolute;top:7px;left:5px}.locale-he-il em,.locale-zh-cn #local-time,.locale-zh-cn #utc-time,.locale-zh-cn .form-wrap p,.locale-zh-cn .howto,.locale-zh-cn .inline-edit-row fieldset span.checkbox-title,.locale-zh-cn .inline-edit-row fieldset span.title,.locale-zh-cn .js .input-with-default-title,.locale-zh-cn .link-to-original,.locale-zh-cn .tablenav .displaying-num,.locale-zh-cn p.description,.locale-zh-cn p.help,.locale-zh-cn p.install-help,.locale-zh-cn span.description{font-style:normal}.widgets-chooser .widgets-chooser-actions{padding:10px 0 12px;text-align:center}.widgets-chooser button{margin-right:5px}#available-widgets .widget .widget-top{cursor:pointer}#available-widgets .widget.ui-draggable-dragging .widget-top{cursor:move}@media screen and (max-width:480px){div.widget-liquid-left{width:100%;float:none;border-right:none;padding-right:0}#widgets-left #available-widgets .widget-top,#widgets-left .inactive-sidebar .widgets-sortables,#widgets-left .sidebar-name{margin-right:0}div.widget-liquid-right{width:100%;float:none}div.widget{margin:0 auto 10px!important;max-width:480px}}.locale-de-de #customize-header-actions .button,.locale-de-de-formal #customize-header-actions .button,.locale-ru-ru #customize-header-actions .button{padding:0 5px 1px}@media screen and (max-width:320px){div.widget{max-width:320px}}@media only screen and (min-width:1250px){#widgets-left #available-widgets .widget{width:49%;float:left}.widget.ui-draggable-dragging{min-width:49%}#widgets-left #available-widgets .widget:nth-child(even){float:right}#widgets-right .sidebars-column-1,#widgets-right .sidebars-column-2{float:left;width:49%}#widgets-right .sidebars-column-1{margin-right:2%}#widgets-right.single-sidebar .sidebars-column-1,#widgets-right.single-sidebar .sidebars-column-2{float:none;width:100%;margin:0}}.site-icon-preview .favicon-preview{margin:5px 0 20px;overflow:hidden;position:relative;max-width:180px}.site-icon-preview .browser-title,.site-icon-preview .favicon{height:16px;left:88px;overflow:hidden;position:absolute;top:16px}.site-icon-preview .favicon{width:16px}.site-icon-preview .browser-title{left:109px}.site-icon-preview .app-icon-preview{background-color:#000;-webkit-border-radius:16px;border-radius:16px;height:64px;overflow:hidden;width:64px;margin-top:5px}body.rtl,body.rtl .press-this a.wp-switch-editor{font-family:Tahoma,Arial,sans-serif}.rtl h1,.rtl h2,.rtl h3,.rtl h4,.rtl h5,.rtl h6{font-family:Arial,sans-serif;font-weight:700}body.locale-he-il,body.locale-he-il .press-this a.wp-switch-editor{font-family:Arial,sans-serif}.locale-he-il em{font-weight:700}.locale-zh-cn .hdnle a{font-size:12px}.locale-zh-cn form.upgrade .hint{font-style:normal;font-size:100%}.locale-zh-cn #sort-buttons{font-size:1em!important}.locale-de-de #customize-header-actions .spinner,.locale-de-de-formal #customize-header-actions .spinner{margin:16px 3px 0}.locale-ru-ru #adminmenu{width:inherit}.locale-ru-ru #adminmenu,.locale-ru-ru #wpbody{margin-left:0}.locale-ru-ru .inline-edit-row fieldset label span.title,.locale-ru-ru .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}.locale-ru-ru.post-new-php .tagsdiv .newtag,.locale-ru-ru.post-php .tagsdiv .newtag{width:165px}.locale-ru-ru.press-this .posting{margin-right:277px}.locale-ru-ru .press-this-sidebar{width:265px}.locale-ru-ru #customize-header-actions .spinner{margin:16px 3px 0}.locale-lt-lt .inline-edit-row fieldset label span.title,.locale-lt-lt .inline-edit-row fieldset.inline-edit-date legend{width:8em}.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap{margin-left:8em}@media screen and (max-width:782px){.locale-lt-lt .inline-edit-row fieldset .timestamp-wrap,.locale-lt-lt .inline-edit-row fieldset label span.input-text-wrap,.locale-ru-ru .inline-edit-row fieldset .timestamp-wrap,.locale-ru-ru .inline-edit-row fieldset label span.input-text-wrap{margin-left:0}}
\ No newline at end of file
index 36a5b504fad8067c0bbba7fc6d7d03a9a81d43f3..dba32c661e5d7d3b7bf84ee45d0af4819baf0557 100644 (file)
@@ -18,7 +18,7 @@ class Custom_Background {
        /**
         * Callback for administration header.
         *
-        * @var callback
+        * @var callable
         * @since 3.0.0
         */
        public $admin_header_callback;
@@ -26,12 +26,16 @@ class Custom_Background {
        /**
         * Callback for header div.
         *
-        * @var callback
+        * @var callable
         * @since 3.0.0
         */
        public $admin_image_div_callback;
 
        /**
+        * Used to trigger a success message when settings updated and set to true.
+        *
+        * @since 3.0.0
+        * @access private
         * @var bool
         */
        private $updated;
@@ -40,8 +44,8 @@ class Custom_Background {
         * Constructor - Register administration header callback.
         *
         * @since 3.0.0
-        * @param callback $admin_header_callback
-        * @param callback $admin_image_div_callback Optional custom image div output callback.
+        * @param callable $admin_header_callback
+        * @param callable $admin_image_div_callback Optional custom image div output callback.
         */
        public function __construct($admin_header_callback = '', $admin_image_div_callback = '') {
                $this->admin_header_callback = $admin_header_callback;
index e61feb781c3bdd7f3c452103443f44b0eaf14887..dfb90cb0be5d5b5f2fa28ad134cefc512b7c3986 100644 (file)
@@ -18,7 +18,7 @@ class Custom_Image_Header {
        /**
         * Callback for administration header.
         *
-        * @var callback
+        * @var callable
         * @since 2.1.0
         */
        public $admin_header_callback;
@@ -26,7 +26,7 @@ class Custom_Image_Header {
        /**
         * Callback for header div.
         *
-        * @var callback
+        * @var callable
         * @since 3.0.0
         */
        public $admin_image_div_callback;
@@ -41,6 +41,10 @@ class Custom_Image_Header {
        public $default_headers = array();
 
        /**
+        * Used to trigger a success message when settings updated and set to true.
+        *
+        * @since 3.0.0
+        * @access private
         * @var bool
         */
        private $updated;
@@ -49,8 +53,8 @@ class Custom_Image_Header {
         * Constructor - Register administration header callback.
         *
         * @since 2.1.0
-        * @param callback $admin_header_callback
-        * @param callback $admin_image_div_callback Optional custom image div output callback.
+        * @param callable $admin_header_callback
+        * @param callable $admin_image_div_callback Optional custom image div output callback.
         */
        public function __construct($admin_header_callback, $admin_image_div_callback = '') {
                $this->admin_header_callback = $admin_header_callback;
@@ -683,8 +687,13 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
         */
        public function step_2() {
                check_admin_referer('custom-header-upload', '_wpnonce-custom-header-upload');
-               if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
-                       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+               if ( ! current_theme_supports( 'custom-header', 'uploads' ) ) {
+                       wp_die(
+                               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                               '<p>' . __( 'The current theme does not support uploading a custom header image.' ) . '</p>',
+                               403
+                       );
+               }
 
                if ( empty( $_POST ) && isset( $_GET['file'] ) ) {
                        $attachment_id = absint( $_GET['file'] );
@@ -762,7 +771,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
        <p class="hide-if-js"><strong><?php _e( 'You need JavaScript to choose a part of the image.'); ?></strong></p>
 
        <div id="crop_image" style="position: relative">
-               <img src="<?php echo esc_url( $url ); ?>" id="upload" width="<?php echo $width; ?>" height="<?php echo $height; ?>" />
+               <img src="<?php echo esc_url( $url ); ?>" id="upload" width="<?php echo $width; ?>" height="<?php echo $height; ?>" alt="" />
        </div>
 
        <input type="hidden" name="x1" id="x1" value="0"/>
@@ -830,15 +839,27 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
         * Display third step of custom header image page.
         *
         * @since 2.1.0
+        * @since 4.4.0 Switched to using wp_get_attachment_url() instead of the guid
+        *              for retrieving the header image URL.
         */
        public function step_3() {
                check_admin_referer( 'custom-header-crop-image' );
 
-               if ( ! current_theme_supports( 'custom-header', 'uploads' ) )
-                       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+               if ( ! current_theme_supports( 'custom-header', 'uploads' ) ) {
+                       wp_die(
+                               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                               '<p>' . __( 'The current theme does not support uploading a custom header image.' ) . '</p>',
+                               403
+                       );
+               }
 
-               if ( ! empty( $_POST['skip-cropping'] ) && ! ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) )
-                       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+               if ( ! empty( $_POST['skip-cropping'] ) && ! ( current_theme_supports( 'custom-header', 'flex-height' ) || current_theme_supports( 'custom-header', 'flex-width' ) ) ) {
+                       wp_die(
+                               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                               '<p>' . __( 'The current theme does not support a flexible sized header image.' ) . '</p>',
+                               403
+                       );
+               }
 
                if ( $_POST['oitar'] > 1 ) {
                        $_POST['x1'] = $_POST['x1'] * $_POST['oitar'];
@@ -878,7 +899,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                // Update the attachment
                $attachment_id = $this->insert_attachment( $object, $cropped );
 
-               $url = $object['guid'];
+               $url = wp_get_attachment_url( $attachment_id );
                $this->set_header_image( compact( 'url', 'attachment_id', 'width', 'height' ) );
 
                // Cleanup.
@@ -1101,7 +1122,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
         */
        final public function create_attachment_object( $cropped, $parent_attachment_id ) {
                $parent = get_post( $parent_attachment_id );
-               $parent_url = $parent->guid;
+               $parent_url = wp_get_attachment_url( $parent->ID );
                $url = str_replace( basename( $parent_url ), basename( $cropped ), $parent_url );
 
                $size = @getimagesize( $cropped );
@@ -1110,7 +1131,6 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                $object = array(
                        'ID' => $parent_attachment_id,
                        'post_title' => basename($cropped),
-                       'post_content' => $url,
                        'post_mime_type' => $image_type,
                        'guid' => $url,
                        'context' => 'custom-header'
@@ -1192,6 +1212,7 @@ wp_nonce_field( 'custom-header-options', '_wpnonce-custom-header-options' ); ?>
                $new_attachment_id = $this->insert_attachment( $object, $cropped );
 
                $object['attachment_id'] = $new_attachment_id;
+               $object['url']           = wp_get_attachment_url( $new_attachment_id );;
                $object['width']         = $dimensions['dst_width'];
                $object['height']        = $dimensions['dst_height'];
 
index 6ee2de007af3c64a6a651e9756cc908c8aecd66e..aa949e54404611eb8dd46a113e8295be5497bba0 100644 (file)
@@ -13,24 +13,22 @@ define( 'IFRAME_REQUEST', true );
 require_once( dirname( __FILE__ ) . '/admin.php' );
 
 if ( ! current_user_can( 'customize' ) ) {
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to customize the appearance of this site.' ) . '</p>',
+               403
+       );
 }
 
-wp_reset_vars( array( 'url', 'return' ) );
-$url = wp_unslash( $url );
-$url = wp_validate_redirect( $url, home_url( '/' ) );
-if ( $return ) {
-       $return = wp_unslash( $return );
-       $return = wp_validate_redirect( $return );
+wp_reset_vars( array( 'url', 'return', 'autofocus' ) );
+if ( ! empty( $url ) ) {
+       $wp_customize->set_preview_url( wp_unslash( $url ) );
+}
+if ( ! empty( $return ) ) {
+       $wp_customize->set_return_url( wp_unslash( $return ) );
 }
-if ( ! $return ) {
-       if ( $url ) {
-               $return = $url;
-       } elseif ( current_user_can( 'edit_theme_options' ) || current_user_can( 'switch_themes' ) ) {
-               $return = admin_url( 'themes.php' );
-       } else {
-               $return = admin_url();
-       }
+if ( ! empty( $autofocus ) && is_array( $autofocus ) ) {
+       $wp_customize->set_autofocus( wp_unslash( $autofocus ) );
 }
 
 /**
@@ -78,9 +76,7 @@ if ( wp_is_mobile() ) :
        ?><meta name="viewport" id="viewport-meta" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=1.2" /><?php
 endif;
 
-$is_ios = wp_is_mobile() && preg_match( '/iPad|iPod|iPhone/', $_SERVER['HTTP_USER_AGENT'] );
-
-if ( $is_ios ) {
+if ( $wp_customize->is_ios() ) {
        $body_class .= ' ios';
 }
 
@@ -89,18 +85,12 @@ if ( is_rtl() ) {
 }
 $body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
 
-if ( $wp_customize->is_theme_active() ) {
-       $document_title_tmpl = _x( 'Customize: %s', 'Placeholder is the document title from the preview' );
-} else {
-       $document_title_tmpl = _x( 'Live Preview: %s', 'Placeholder is the document title from the preview' );
-}
-$document_title_tmpl = html_entity_decode( $document_title_tmpl, ENT_QUOTES, 'UTF-8' ); // because exported to JS and assigned to document.title
-$admin_title = sprintf( $document_title_tmpl, __( 'Loading&hellip;' ) );
+$admin_title = sprintf( $wp_customize->get_document_title_template(), __( 'Loading&hellip;' ) );
 
 ?><title><?php echo $admin_title; ?></title>
 
 <script type="text/javascript">
-var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>';
+var ajaxurl = <?php echo wp_json_encode( admin_url( 'admin-ajax.php', 'relative' ) ); ?>;
 </script>
 
 <?php
@@ -132,7 +122,7 @@ do_action( 'customize_controls_print_scripts' );
                                <span class="controls"><?php _e( 'Customize' ); ?></span>
                                <span class="preview"><?php _e( 'Preview' ); ?></span>
                        </a>
-                       <a class="customize-controls-close" href="<?php echo esc_url( $return ); ?>">
+                       <a class="customize-controls-close" href="<?php echo esc_url( $wp_customize->get_return_url() ); ?>">
                                <span class="screen-reader-text"><?php _e( 'Cancel' ); ?></span>
                        </a>
                </div>
@@ -140,7 +130,7 @@ do_action( 'customize_controls_print_scripts' );
                <div id="widgets-right"><!-- For Widget Customizer, many widgets try to look for instances under div#widgets-right, so we have to add that ID to a container div in the Customizer for compat -->
                <div class="wp-full-overlay-sidebar-content" tabindex="-1">
                        <div id="customize-info" class="accordion-section customize-info">
-                               <div class="accordion-section-title" aria-label="<?php esc_attr_e( 'Customizer Options' ); ?>">
+                               <div class="accordion-section-title">
                                        <span class="preview-notice"><?php
                                                echo sprintf( __( 'You are customizing %s' ), '<strong class="panel-title site-title">' . get_bloginfo( 'name' ) . '</strong>' );
                                        ?></span>
@@ -167,134 +157,13 @@ do_action( 'customize_controls_print_scripts' );
        <div id="customize-preview" class="wp-full-overlay-main"></div>
        <?php
 
-       // Render Panel, Section, and Control templates.
-       $wp_customize->render_panel_templates();
-       $wp_customize->render_section_templates();
-       $wp_customize->render_control_templates();
-
        /**
-        * Print Customizer control scripts in the footer.
+        * Print templates, control scripts, and settings in the footer.
         *
         * @since 3.4.0
         */
        do_action( 'customize_controls_print_footer_scripts' );
-
-       /*
-        * If the frontend and the admin are served from the same domain, load the
-        * preview over ssl if the Customizer is being loaded over ssl. This avoids
-        * insecure content warnings. This is not attempted if the admin and frontend
-        * are on different domains to avoid the case where the frontend doesn't have
-        * ssl certs. Domain mapping plugins can allow other urls in these conditions
-        * using the customize_allowed_urls filter.
-        */
-
-       $allowed_urls = array( home_url('/') );
-       $admin_origin = parse_url( admin_url() );
-       $home_origin  = parse_url( home_url() );
-       $cross_domain = ( strtolower( $admin_origin[ 'host' ] ) != strtolower( $home_origin[ 'host' ] ) );
-
-       if ( is_ssl() && ! $cross_domain )
-               $allowed_urls[] = home_url( '/', 'https' );
-
-       /**
-        * Filter the list of URLs allowed to be clicked and followed in the Customizer preview.
-        *
-        * @since 3.4.0
-        *
-        * @param array $allowed_urls An array of allowed URLs.
-        */
-       $allowed_urls = array_unique( apply_filters( 'customize_allowed_urls', $allowed_urls ) );
-
-       $login_url = add_query_arg( array(
-               'interim-login' => 1,
-               'customize-login' => 1
-       ), wp_login_url() );
-
-       // Prepare Customizer settings to pass to JavaScript.
-       $settings = array(
-               'theme'    => array(
-                       'stylesheet' => $wp_customize->get_stylesheet(),
-                       'active'     => $wp_customize->is_theme_active(),
-               ),
-               'url'      => array(
-                       'preview'       => esc_url_raw( $url ? $url : home_url( '/' ) ),
-                       'parent'        => esc_url_raw( admin_url() ),
-                       'activated'     => esc_url_raw( home_url( '/' ) ),
-                       'ajax'          => esc_url_raw( admin_url( 'admin-ajax.php', 'relative' ) ),
-                       'allowed'       => array_map( 'esc_url_raw', $allowed_urls ),
-                       'isCrossDomain' => $cross_domain,
-                       'home'          => esc_url_raw( home_url( '/' ) ),
-                       'login'         => esc_url_raw( $login_url ),
-               ),
-               'browser'  => array(
-                       'mobile' => wp_is_mobile(),
-                       'ios'    => $is_ios,
-               ),
-               'settings' => array(),
-               'controls' => array(),
-               'panels'   => array(),
-               'sections' => array(),
-               'nonce'    => array(
-                       'save'    => wp_create_nonce( 'save-customize_' . $wp_customize->get_stylesheet() ),
-                       'preview' => wp_create_nonce( 'preview-customize_' . $wp_customize->get_stylesheet() )
-               ),
-               'autofocus' => array(),
-               'documentTitleTmpl' => $document_title_tmpl,
-       );
-
-       // Prepare Customize Setting objects to pass to JavaScript.
-       foreach ( $wp_customize->settings() as $id => $setting ) {
-               if ( $setting->check_capabilities() ) {
-                       $settings['settings'][ $id ] = array(
-                               'value'     => $setting->js_value(),
-                               'transport' => $setting->transport,
-                               'dirty'     => $setting->dirty,
-                       );
-               }
-       }
-
-       // Prepare Customize Control objects to pass to JavaScript.
-       foreach ( $wp_customize->controls() as $id => $control ) {
-               if ( $control->check_capabilities() ) {
-                       $settings['controls'][ $id ] = $control->json();
-               }
-       }
-
-       // Prepare Customize Section objects to pass to JavaScript.
-       foreach ( $wp_customize->sections() as $id => $section ) {
-               if ( $section->check_capabilities() ) {
-                       $settings['sections'][ $id ] = $section->json();
-               }
-       }
-
-       // Prepare Customize Panel objects to pass to JavaScript.
-       foreach ( $wp_customize->panels() as $panel_id => $panel ) {
-               if ( $panel->check_capabilities() ) {
-                       $settings['panels'][ $panel_id ] = $panel->json();
-                       foreach ( $panel->sections as $section_id => $section ) {
-                               if ( $section->check_capabilities() ) {
-                                       $settings['sections'][ $section_id ] = $section->json();
-                               }
-                       }
-               }
-       }
-
-       // Pass to frontend the Customizer construct being deeplinked
-       if ( isset( $_GET['autofocus'] ) ) {
-               $autofocus = wp_unslash( $_GET['autofocus'] );
-               if ( is_array( $autofocus ) ) {
-                       foreach ( $autofocus as $type => $id ) {
-                               if ( isset( $settings[ $type . 's' ][ $id ] ) ) {
-                                       $settings['autofocus'][ $type ] = $id;
-                               }
-                       }
-               }
-       }
-
        ?>
-       <script type="text/javascript">
-               var _wpCustomizeSettings = <?php echo wp_json_encode( $settings ); ?>;
-       </script>
 </div>
 </body>
 </html>
index ea5bb7624a780bd2654a214c04b7e54949ff781e..fc105feb369b3d6d2d49afee4a0f1d1490ba4a9c 100644 (file)
@@ -8,8 +8,13 @@
 
 /** WordPress Administration Bootstrap */
 require_once( dirname( __FILE__ ) . '/admin.php' );
-if ( !current_user_can('edit_posts') )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! current_user_can( 'edit_posts' ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to edit comments.' ) . '</p>',
+               403
+       );
+}
 
 $wp_list_table = _get_list_table('WP_Comments_List_Table');
 $pagenum = $wp_list_table->get_pagenum();
@@ -39,6 +44,8 @@ if ( $doaction ) {
        $redirect_to = remove_query_arg( array( 'trashed', 'untrashed', 'deleted', 'spammed', 'unspammed', 'approved', 'unapproved', 'ids' ), wp_get_referer() );
        $redirect_to = add_query_arg( 'paged', $pagenum, $redirect_to );
 
+       wp_defer_comment_counting( true );
+
        foreach ( $comment_ids as $comment_id ) { // Check the permissions on each
                if ( !current_user_can( 'edit_comment', $comment_id ) )
                        continue;
@@ -75,6 +82,8 @@ if ( $doaction ) {
                }
        }
 
+       wp_defer_comment_counting( false );
+
        if ( $approved )
                $redirect_to = add_query_arg( 'approved', $approved, $redirect_to );
        if ( $unapproved )
@@ -104,10 +113,32 @@ $wp_list_table->prepare_items();
 wp_enqueue_script('admin-comments');
 enqueue_comment_hotkeys_js();
 
-if ( $post_id )
-       $title = sprintf( __( 'Comments on &#8220;%s&#8221;' ), wp_html_excerpt( _draft_or_post_title( $post_id ), 50, '&hellip;' ) );
-else
-       $title = __('Comments');
+if ( $post_id ) {
+       $comments_count = wp_count_comments( $post_id );
+       $draft_or_post_title = wp_html_excerpt( _draft_or_post_title( $post_id ), 50, '&hellip;' );
+       if ( $comments_count->moderated > 0 ) {
+               /* translators: 1: comments count 2: post title */
+               $title = sprintf( __( 'Comments (%1$s) on &#8220;%2$s&#8221;' ),
+                       number_format_i18n( $comments_count->moderated ),
+                       $draft_or_post_title
+               );
+       } else {
+               /* translators: %s: post title */
+               $title = sprintf( __( 'Comments on &#8220;%s&#8221;' ),
+                       $draft_or_post_title
+               );
+       }
+} else {
+       $comments_count = wp_count_comments();
+       if ( $comments_count->moderated > 0 ) {
+               /* translators: %s: comments count */
+               $title = sprintf( __( 'Comments (%s)' ),
+                       number_format_i18n( $comments_count->moderated )
+               );
+       } else {
+               $title = __( 'Comments' );
+       }
+}
 
 add_screen_option( 'per_page' );
 
@@ -123,8 +154,9 @@ get_current_screen()->add_help_tab( array(
 'content'      =>
                '<p>' . __( 'A red bar on the left means the comment is waiting for you to moderate it.' ) . '</p>' .
                '<p>' . __( 'In the <strong>Author</strong> column, in addition to the author&#8217;s name, email address, and blog URL, the commenter&#8217;s IP address is shown. Clicking on this link will show you all the comments made from this IP address.' ) . '</p>' .
-               '<p>' . __( 'In the <strong>Comment</strong> column, above each comment it says &#8220;Submitted on,&#8221; followed by the date and time the comment was left on your site. Clicking on the date/time link will take you to that comment on your live site. Hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment.' ) . '</p>' .
+               '<p>' . __( 'In the <strong>Comment</strong> column, hovering over any comment gives you options to approve, reply (and approve), quick edit, edit, spam mark, or trash that comment.' ) . '</p>' .
                '<p>' . __( 'In the <strong>In Response To</strong> column, there are three elements. The text is the name of the post that inspired the comment, and links to the post editor for that entry. The View Post link leads to that post on your live site. The small bubble with the number in it shows the number of approved comments that post has received. If there are pending comments, a red notification circle with the number of pending comments is displayed. Clicking the notification circle will filter the comments screen to show only pending comments on that post.' ) . '</p>' .
+               '<p>' . __( 'In the <strong>Submitted On</strong> column, the date and time the comment was left on your site appears. Clicking on the date/time link will take you to that comment on your live site.' ) . '</p>' .
                '<p>' . __( 'Many people take advantage of keyboard shortcuts to moderate their comments more quickly. Use the link to the side to learn more.' ) . '</p>'
 ) );
 
@@ -136,24 +168,38 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __( '<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_views'      => __( 'Filter comments list' ),
+       'heading_pagination' => __( 'Comments list navigation' ),
+       'heading_list'       => __( 'Comments list' ),
+) );
+
 require_once( ABSPATH . 'wp-admin/admin-header.php' );
 ?>
 
 <div class="wrap">
 <h1><?php
-if ( $post_id )
-       echo sprintf( __( 'Comments on &#8220;%s&#8221;' ),
-               sprintf( '<a href="%s">%s</a>',
+if ( $post_id ) {
+       /* translators: %s: link to post */
+       printf( __( 'Comments on &#8220;%s&#8221;' ),
+               sprintf( '<a href="%1$s">%2$s</a>',
                        get_edit_post_link( $post_id ),
                        wp_html_excerpt( _draft_or_post_title( $post_id ), 50, '&hellip;' )
                )
        );
-else
+} else {
        _e( 'Comments' );
+}
 
-if ( isset($_REQUEST['s']) && $_REQUEST['s'] )
-       echo '<span class="subtitle">' . sprintf( __( 'Search results for &#8220;%s&#8221;' ), wp_html_excerpt( esc_html( wp_unslash( $_REQUEST['s'] ) ), 50, '&hellip;' ) ) . '</span>'; ?>
-</h1>
+if ( isset($_REQUEST['s']) && $_REQUEST['s'] ) {
+       echo '<span class="subtitle">';
+       /* translators: %s: search keywords */
+       printf( __( 'Search results for &#8220;%s&#8221;' ),
+               wp_html_excerpt( esc_html( wp_unslash( $_REQUEST['s'] ) ), 50, '&hellip;' )
+       );
+       echo '</span>';
+}
+?></h1>
 
 <?php
 if ( isset( $_REQUEST['error'] ) ) {
@@ -181,27 +227,37 @@ if ( isset($_REQUEST['approved']) || isset($_REQUEST['deleted']) || isset($_REQU
        $same      = isset( $_REQUEST['same'] )      ? (int) $_REQUEST['same']      : 0;
 
        if ( $approved > 0 || $deleted > 0 || $trashed > 0 || $untrashed > 0 || $spammed > 0 || $unspammed > 0 || $same > 0 ) {
-               if ( $approved > 0 )
+               if ( $approved > 0 ) {
+                       /* translators: %s: number of comments approved */
                        $messages[] = sprintf( _n( '%s comment approved', '%s comments approved', $approved ), $approved );
+               }
 
                if ( $spammed > 0 ) {
                        $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0;
+                       /* translators: %s: number of comments marked as spam */
                        $messages[] = sprintf( _n( '%s comment marked as spam.', '%s comments marked as spam.', $spammed ), $spammed ) . ' <a href="' . esc_url( wp_nonce_url( "edit-comments.php?doaction=undo&action=unspam&ids=$ids", "bulk-comments" ) ) . '">' . __('Undo') . '</a><br />';
                }
 
-               if ( $unspammed > 0 )
+               if ( $unspammed > 0 ) {
+                       /* translators: %s: number of comments restored from the spam */
                        $messages[] = sprintf( _n( '%s comment restored from the spam', '%s comments restored from the spam', $unspammed ), $unspammed );
+               }
 
                if ( $trashed > 0 ) {
                        $ids = isset($_REQUEST['ids']) ? $_REQUEST['ids'] : 0;
+                       /* translators: %s: number of comments moved to the Trash */
                        $messages[] = sprintf( _n( '%s comment moved to the Trash.', '%s comments moved to the Trash.', $trashed ), $trashed ) . ' <a href="' . esc_url( wp_nonce_url( "edit-comments.php?doaction=undo&action=untrash&ids=$ids", "bulk-comments" ) ) . '">' . __('Undo') . '</a><br />';
                }
 
-               if ( $untrashed > 0 )
+               if ( $untrashed > 0 ) {
+                       /* translators: %s: number of comments restored from the Trash */
                        $messages[] = sprintf( _n( '%s comment restored from the Trash', '%s comments restored from the Trash', $untrashed ), $untrashed );
+               }
 
-               if ( $deleted > 0 )
+               if ( $deleted > 0 ) {
+                       /* translators: %s: number of comments permanently deleted */
                        $messages[] = sprintf( _n( '%s comment permanently deleted', '%s comments permanently deleted', $deleted ), $deleted );
+               }
 
                if ( $same > 0 && $comment = get_comment( $same ) ) {
                        switch ( $comment->comment_approved ) {
index 2a963f1c19a32c413e9d93acceace607c6a6af03..aff0413182c1f8efd2ea904fb9709790abea1bbd 100644 (file)
@@ -81,41 +81,84 @@ if ( ! $permalink ) {
 }
 
 $messages = array();
-/** This filter is documented in wp-admin/includes/meta-boxes.php */
-$post_preview_url = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $permalink ), $post );
+
+$preview_post_link_html = $scheduled_post_link_html = $view_post_link_html = '';
+$preview_page_link_html = $scheduled_page_link_html = $view_page_link_html = '';
+
+$preview_url = get_preview_post_link( $post );
+
+$viewable = is_post_type_viewable( $post_type_object );
+
+if ( $viewable ) {
+
+       // Preview post link.
+       $preview_post_link_html = sprintf( ' <a target="_blank" href="%1$s">%2$s</a>',
+               esc_url( $preview_url ),
+               __( 'Preview post' )
+       );
+
+       // Scheduled post preview link.
+       $scheduled_post_link_html = sprintf( ' <a target="_blank" href="%1$s">%2$s</a>',
+               esc_url( $permalink ),
+               __( 'Preview post' )
+       );
+
+       // View post link.
+       $view_post_link_html = sprintf( ' <a href="%1$s">%2$s</a>',
+               esc_url( $permalink ),
+               __( 'View post' )
+       );
+
+       // Preview page link.
+       $preview_page_link_html = sprintf( ' <a target="_blank" href="%1$s">%2$s</a>',
+               esc_url( $preview_url ),
+               __( 'Preview page' )
+       );
+
+       // Scheduled page preview link.
+       $scheduled_page_link_html = sprintf( ' <a target="_blank" href="%1$s">%2$s</a>',
+               esc_url( $permalink ),
+               __( 'Preview page' )
+       );
+
+       // View page link.
+       $view_page_link_html = sprintf( ' <a href="%1$s">%2$s</a>',
+               esc_url( $permalink ),
+               __( 'View page' )
+       );
+
+}
+
+/* translators: Publish box date format, see http://php.net/date */
+$scheduled_date = date_i18n( __( 'M j, Y @ H:i' ), strtotime( $post->post_date ) );
 
 $messages['post'] = array(
         0 => '', // Unused. Messages start at index 1.
-        1 => sprintf( __('Post updated. <a href="%s">View post</a>'), esc_url( $permalink ) ),
-        2 => __('Custom field updated.'),
-        3 => __('Custom field deleted.'),
-        4 => __('Post updated.'),
+        1 => __( 'Post updated.' ) . $view_post_link_html,
+        2 => __( 'Custom field updated.' ),
+        3 => __( 'Custom field deleted.' ),
+        4 => __( 'Post updated.' ),
        /* translators: %s: date and time of the revision */
-        5 => isset($_GET['revision']) ? sprintf( __('Post restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
-        6 => sprintf( __('Post published. <a href="%s">View post</a>'), esc_url( $permalink ) ),
-        7 => __('Post saved.'),
-        8 => sprintf( __('Post submitted. <a target="_blank" href="%s">Preview post</a>'), esc_url( $post_preview_url ) ),
-        9 => sprintf( __('Post scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview post</a>'),
-               /* translators: Publish box date format, see http://php.net/date */
-               date_i18n( __( 'M j, Y @ H:i' ), strtotime( $post->post_date ) ), esc_url( $permalink ) ),
-       10 => sprintf( __('Post draft updated. <a target="_blank" href="%s">Preview post</a>'), esc_url( $post_preview_url ) ),
+        5 => isset($_GET['revision']) ? sprintf( __( 'Post restored to revision from %s.' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
+        6 => __( 'Post published.' ) . $view_post_link_html,
+        7 => __( 'Post saved.' ),
+        8 => __( 'Post submitted.' ) . $preview_post_link_html,
+        9 => sprintf( __( 'Post scheduled for: %s.' ), '<strong>' . $scheduled_date . '</strong>' ) . $scheduled_post_link_html,
+       10 => __( 'Post draft updated.' ) . $preview_post_link_html,
 );
-
-/** This filter is documented in wp-admin/includes/meta-boxes.php */
-$page_preview_url = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $permalink ), $post );
-
 $messages['page'] = array(
         0 => '', // Unused. Messages start at index 1.
-        1 => sprintf( __('Page updated. <a href="%s">View page</a>'), esc_url( $permalink ) ),
-        2 => __('Custom field updated.'),
-        3 => __('Custom field deleted.'),
-        4 => __('Page updated.'),
-        5 => isset($_GET['revision']) ? sprintf( __('Page restored to revision from %s'), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
-        6 => sprintf( __('Page published. <a href="%s">View page</a>'), esc_url( $permalink ) ),
-        7 => __('Page saved.'),
-        8 => sprintf( __('Page submitted. <a target="_blank" href="%s">Preview page</a>'), esc_url( $page_preview_url ) ),
-        9 => sprintf( __('Page scheduled for: <strong>%1$s</strong>. <a target="_blank" href="%2$s">Preview page</a>'), date_i18n( __( 'M j, Y @ H:i' ), strtotime( $post->post_date ) ), esc_url( $permalink ) ),
-       10 => sprintf( __('Page draft updated. <a target="_blank" href="%s">Preview page</a>'), esc_url( $page_preview_url ) ),
+        1 => __( 'Page updated.' ) . $view_page_link_html,
+        2 => __( 'Custom field updated.' ),
+        3 => __( 'Custom field deleted.' ),
+        4 => __( 'Page updated.' ),
+       /* translators: %s: date and time of the revision */
+        5 => isset($_GET['revision']) ? sprintf( __( 'Page restored to revision from %s.' ), wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
+        6 => __( 'Page published.' ) . $view_page_link_html,
+        7 => __( 'Page saved.' ),
+        8 => __( 'Page submitted.' ) . $preview_page_link_html,
+        9 => sprintf( __( 'Page scheduled for: %s.' ), '<strong>' . $scheduled_date . '</strong>' ) . $scheduled_page_link_html,
+       10 => __( 'Page draft updated.' ) . $preview_page_link_html,
 );
 $messages['attachment'] = array_fill( 1, 10, __( 'Media attachment updated.' ) ); // Hack, for now.
 
@@ -241,11 +284,25 @@ if ( post_type_supports($post_type, 'custom-fields') )
  */
 do_action( 'dbx_post_advanced', $post );
 
-if ( post_type_supports($post_type, 'comments') )
-       add_meta_box('commentstatusdiv', __('Discussion'), 'post_comment_status_meta_box', null, 'normal', 'core');
+// Allow the Discussion meta box to show up if the post type supports comments,
+// or if comments or pings are open.
+if ( comments_open( $post ) || pings_open( $post ) || post_type_supports( $post_type, 'comments' ) ) {
+       add_meta_box( 'commentstatusdiv', __( 'Discussion' ), 'post_comment_status_meta_box', null, 'normal', 'core' );
+}
 
-if ( ( 'publish' == get_post_status( $post ) || 'private' == get_post_status( $post ) ) && post_type_supports($post_type, 'comments') )
-       add_meta_box('commentsdiv', __('Comments'), 'post_comment_meta_box', null, 'normal', 'core');
+$stati = get_post_stati( array( 'public' => true ) );
+if ( empty( $stati ) ) {
+       $stati = array( 'publish' );
+}
+$stati[] = 'private';
+
+if ( in_array( get_post_status( $post ), $stati ) ) {
+       // If the post type support comments, or the post has comments, allow the
+       // Comments meta box.
+       if ( comments_open( $post ) || pings_open( $post ) || $post->comment_count > 0 || post_type_supports( $post_type, 'comments' ) ) {
+               add_meta_box( 'commentsdiv', __( 'Comments' ), 'post_comment_meta_box', null, 'normal', 'core' );
+       }
+}
 
 if ( ! ( 'pending' == get_post_status( $post ) && ! current_user_can( $post_type_object->cap->publish_posts ) ) )
        add_meta_box('slugdiv', __('Slug'), 'post_slug_meta_box', null, 'normal', 'core');
@@ -304,8 +361,8 @@ if ( 'post' == $post_type ) {
                'content' => $customize_display,
        ) );
 
-       $title_and_editor  = '<p>' . __('<strong>Title</strong> - Enter a title for your post. After you enter a title, you&#8217;ll see the permalink below, which you can edit.') . '</p>';
-       $title_and_editor .= '<p>' . __( '<strong>Post editor</strong> - Enter the text for your post. There are two modes of editing: Visual and Text. Choose the mode by clicking on the appropriate tab.' ) . '</p>';
+       $title_and_editor  = '<p>' . __('<strong>Title</strong> &mdash; Enter a title for your post. After you enter a title, you&#8217;ll see the permalink below, which you can edit.') . '</p>';
+       $title_and_editor .= '<p>' . __( '<strong>Post editor</strong> &mdash; Enter the text for your post. There are two modes of editing: Visual and Text. Choose the mode by clicking on the appropriate tab.' ) . '</p>';
        $title_and_editor .= '<p>' . __( 'Visual mode gives you a WYSIWYG editor. Click the last icon in the row to get a second row of controls. ') . '</p>';
        $title_and_editor .= '<p>' . __( 'The Text mode allows you to enter HTML along with your post text. Line breaks will be converted to paragraphs automatically.' ) . '</p>';
        $title_and_editor .= '<p>' . __( 'You can insert media files by clicking the icons above the post editor and following the directions. You can align or edit images using the inline formatting toolbar available in Visual mode.' ) . '</p>';
@@ -326,7 +383,7 @@ if ( 'post' == $post_type ) {
        );
 } elseif ( 'page' == $post_type ) {
        $about_pages = '<p>' . __('Pages are similar to posts in that they have a title, body text, and associated metadata, but they are different in that they are not part of the chronological blog stream, kind of like permanent posts. Pages are not categorized or tagged, but can have a hierarchy. You can nest pages under other pages by making one the &#8220;Parent&#8221; of the other, creating a group of pages.') . '</p>' .
-               '<p>' . __('Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the distraction-free writing space, available in both the Visual and Text modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box:') . '</p>';
+               '<p>' . __('Creating a Page is very similar to creating a Post, and the screens can be customized in the same way using drag and drop, the Screen Options tab, and expanding/collapsing boxes as you choose. This screen also has the distraction-free writing space, available in both the Visual and Text modes via the Fullscreen buttons. The Page editor mostly works the same as the Post editor, but there are some Page-specific features in the Page Attributes box.') . '</p>';
 
        get_current_screen()->add_help_tab( array(
                'id'      => 'about-pages',
@@ -371,15 +428,17 @@ if ( 'post' == $post_type || 'page' == $post_type ) {
 
 if ( 'post' == $post_type ) {
        $publish_box = '<p>' . __('Several boxes on this screen contain settings for how your content will be published, including:') . '</p>';
-       $publish_box .= '<ul><li>' . __('<strong>Publish</strong> - You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post.') . '</li>';
+       $publish_box .= '<ul><li>' .
+               __( '<strong>Publish</strong> &mdash; You can set the terms of publishing your post in the Publish box. For Status, Visibility, and Publish (immediately), click on the Edit link to reveal more options. Visibility includes options for password-protecting a post or making it stay at the top of your blog indefinitely (sticky). Publish (immediately) allows you to set a future or past date and time, so you can schedule a post to be published in the future or backdate a post. The Password protected option allows you to set an arbitrary password for each post. The Private option hides the post from everyone except editors and administrators.' ) .
+       '</li>';
 
        if ( current_theme_supports( 'post-formats' ) && post_type_supports( 'post', 'post-formats' ) ) {
-               $publish_box .= '<li>' . __( '<strong>Format</strong> - Post Formats designate how your theme will display a specific post. For example, you could have a <em>standard</em> blog post with a title and paragraphs, or a short <em>aside</em> that omits the title and contains a short text blurb. Please refer to the Codex for <a href="https://codex.wordpress.org/Post_Formats#Supported_Formats">descriptions of each post format</a>. Your theme could enable all or some of 10 possible formats.' ) . '</li>';
+               $publish_box .= '<li>' . __( '<strong>Format</strong> &mdash; Post Formats designate how your theme will display a specific post. For example, you could have a <em>standard</em> blog post with a title and paragraphs, or a short <em>aside</em> that omits the title and contains a short text blurb. Please refer to the Codex for <a href="https://codex.wordpress.org/Post_Formats#Supported_Formats">descriptions of each post format</a>. Your theme could enable all or some of 10 possible formats.' ) . '</li>';
        }
 
        if ( current_theme_supports( 'post-thumbnails' ) && post_type_supports( 'post', 'thumbnail' ) ) {
                /* translators: %s: Featured Image */
-               $publish_box .= '<li>' . sprintf( __( '<strong>%s</strong> - This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the image as a post thumbnail on the home page, a custom header, etc.' ), esc_html( $post_type_object->labels->featured_image ) ) . '</li>';
+               $publish_box .= '<li>' . sprintf( __( '<strong>%s</strong> &mdash; This allows you to associate an image with your post without inserting it. This is usually useful only if your theme makes use of the image as a post thumbnail on the home page, a custom header, etc.' ), esc_html( $post_type_object->labels->featured_image ) ) . '</li>';
        }
 
        $publish_box .= '</ul>';
@@ -390,8 +449,8 @@ if ( 'post' == $post_type ) {
                'content' => $publish_box,
        ) );
 
-       $discussion_settings  = '<p>' . __('<strong>Send Trackbacks</strong> - Trackbacks are a way to notify legacy blog systems that you&#8217;ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they&#8217;ll be notified automatically using pingbacks, and this field is unnecessary.') . '</p>';
-       $discussion_settings .= '<p>' . __('<strong>Discussion</strong> - You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them.') . '</p>';
+       $discussion_settings  = '<p>' . __('<strong>Send Trackbacks</strong> &mdash; Trackbacks are a way to notify legacy blog systems that you&#8217;ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they&#8217;ll be notified automatically using pingbacks, and this field is unnecessary.') . '</p>';
+       $discussion_settings .= '<p>' . __('<strong>Discussion</strong> &mdash; You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them.') . '</p>';
 
        get_current_screen()->add_help_tab( array(
                'id'      => 'discussion-settings',
@@ -399,9 +458,9 @@ if ( 'post' == $post_type ) {
                'content' => $discussion_settings,
        ) );
 } elseif ( 'page' == $post_type ) {
-       $page_attributes = '<p>' . __('<strong>Parent</strong> - You can arrange your pages in hierarchies. For example, you could have an &#8220;About&#8221; page that has &#8220;Life Story&#8221; and &#8220;My Dog&#8221; pages under it. There are no limits to how many levels you can nest pages.') . '</p>' .
-               '<p>' . __('<strong>Template</strong> - Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you&#8217;ll see them in this dropdown menu.') . '</p>' .
-               '<p>' . __('<strong>Order</strong> - Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field.') . '</p>';
+       $page_attributes = '<p>' . __('<strong>Parent</strong> &mdash; You can arrange your pages in hierarchies. For example, you could have an &#8220;About&#8221; page that has &#8220;Life Story&#8221; and &#8220;My Dog&#8221; pages under it. There are no limits to how many levels you can nest pages.') . '</p>' .
+               '<p>' . __('<strong>Template</strong> &mdash; Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you&#8217;ll see them in this dropdown menu.') . '</p>' .
+               '<p>' . __('<strong>Order</strong> &mdash; Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field.') . '</p>';
 
        get_current_screen()->add_help_tab( array(
                'id' => 'page-attributes',
@@ -508,11 +567,17 @@ do_action( 'edit_form_before_permalink', $post );
 ?>
 <div class="inside">
 <?php
+if ( $viewable ) :
 $sample_permalink_html = $post_type_object->public ? get_sample_permalink_html($post->ID) : '';
-$shortlink = wp_get_shortlink($post->ID, 'post');
 
-if ( !empty( $shortlink ) && $shortlink !== $permalink && $permalink !== home_url('?page_id=' . $post->ID) )
-    $sample_permalink_html .= '<input id="shortlink" type="hidden" value="' . esc_attr($shortlink) . '" /><a href="#" class="button button-small" onclick="prompt(&#39;URL:&#39;, jQuery(\'#shortlink\').val()); return false;">' . __('Get Shortlink') . '</a>';
+// As of 4.4, the Get Shortlink button is hidden by default.
+if ( has_filter( 'pre_get_shortlink' ) || has_filter( 'get_shortlink' ) ) {
+       $shortlink = wp_get_shortlink($post->ID, 'post');
+
+       if ( !empty( $shortlink ) && $shortlink !== $permalink && $permalink !== home_url('?page_id=' . $post->ID) ) {
+       $sample_permalink_html .= '<input id="shortlink" type="hidden" value="' . esc_attr($shortlink) . '" /><a href="#" class="button button-small" onclick="prompt(&#39;URL:&#39;, jQuery(\'#shortlink\').val()); return false;">' . __('Get Shortlink') . '</a>';
+       }
+}
 
 if ( $post_type_object->public && ! ( 'pending' == get_post_status( $post ) && !current_user_can( $post_type_object->cap->publish_posts ) ) ) {
        $has_sample_permalink = $sample_permalink_html && 'auto-draft' != $post->post_status;
@@ -525,6 +590,7 @@ if ( $post_type_object->public && ! ( 'pending' == get_post_status( $post ) && !
        </div>
 <?php
 }
+endif;
 ?>
 </div>
 <?php
@@ -558,7 +624,7 @@ if ( post_type_supports($post_type, 'editor') ) {
        ),
 ) ); ?>
 <table id="post-status-info"><tbody><tr>
-       <td id="wp-word-count"><?php printf( __( 'Word count: %s' ), '<span class="word-count">0</span>' ); ?></td>
+       <td id="wp-word-count" class="hide-if-no-js"><?php printf( __( 'Word count: %s' ), '<span class="word-count">0</span>' ); ?></td>
        <td class="autosave-info">
        <span class="autosave-message">&nbsp;</span>
 <?php
index 9b8062da121fb737b0746ca375eadc97c6717f26..92911db23ac3d2327f5a1e922f82cdd649465761 100644 (file)
@@ -22,6 +22,17 @@ if ( !defined('ABSPATH') )
 
 <div id="post-body" class="metabox-holder columns-2">
 <div id="post-body-content" class="edit-form-section edit-comment-section">
+<?php
+if ( $comment->comment_post_ID > 0 ):
+       $comment_link = get_comment_link( $comment );
+?>
+<div class="inside">
+       <div id="comment-link-box">
+               <strong><?php _ex( 'Permalink:', 'comment' ); ?></strong>
+               <span id="sample-permalink"><a href="<?php echo $comment_link; ?>"><?php echo $comment_link; ?></a></span>
+       </div>
+</div>
+<?php endif; ?>
 <div id="namediv" class="stuffbox">
 <div class="inside">
 <fieldset>
@@ -33,7 +44,7 @@ if ( !defined('ABSPATH') )
        <td><input type="text" name="newcomment_author" size="30" value="<?php echo esc_attr( $comment->comment_author ); ?>" id="name" /></td>
 </tr>
 <tr>
-       <td class="first"><label for="email"><?php _e( 'E-mail:' ); ?></label></td>
+       <td class="first"><label for="email"><?php _e( 'Email:' ); ?></label></td>
        <td>
                <input type="text" name="newcomment_author_email" size="30" value="<?php echo $comment->comment_author_email; ?>" id="email" />
        </td>
@@ -62,18 +73,11 @@ if ( !defined('ABSPATH') )
 
 <div id="postbox-container-1" class="postbox-container">
 <div id="submitdiv" class="stuffbox" >
-<h3><span class="hndle"><?php _e('Status') ?></span></h3>
+<h2><?php _e( 'Status' ) ?></h2>
 <div class="inside">
 <div class="submitbox" id="submitcomment">
 <div id="minor-publishing">
 
-<div id="minor-publishing-actions">
-<div id="preview-action">
-<a class="preview button" href="<?php echo get_comment_link(); ?>" target="_blank"><?php _e('View Comment'); ?></a>
-</div>
-<div class="clear"></div>
-</div>
-
 <div id="misc-publishing-actions">
 
 <fieldset class="misc-pub-section misc-pub-comment-status" id="comment-status-radio">
@@ -87,10 +91,14 @@ if ( !defined('ABSPATH') )
 <?php
 /* translators: Publish box date format, see http://php.net/date */
 $datef = __( 'M j, Y @ H:i' );
-$stamp = __('Submitted on: <b>%1$s</b>');
-$date = date_i18n( $datef, strtotime( $comment->comment_date ) );
 ?>
-<span id="timestamp"><?php printf( $stamp, $date ); ?></span>
+<span id="timestamp"><?php
+printf(
+       /* translators: %s: comment date */
+       __( 'Submitted on: %s' ),
+       '<b>' . date_i18n( $datef, strtotime( $comment->comment_date ) ) . '</b>'
+);
+?></span>
 <a href="#edit_timestamp" class="edit-timestamp hide-if-no-js"><span aria-hidden="true"><?php _e( 'Edit' ); ?></span> <span class="screen-reader-text"><?php _e( 'Edit date and time' ); ?></span></a>
 <fieldset id='timestampdiv' class='hide-if-js'>
 <legend class="screen-reader-text"><?php _e( 'Date and time' ); ?></legend>
@@ -110,7 +118,7 @@ if ( current_user_can( 'edit_post', $post_id ) ) {
 
 <div class="misc-pub-section misc-pub-response-to">
        <?php printf(
-               /* translators: post link */
+               /* translators: %s: post link */
                __( 'In response to: %s' ),
                '<b>' . $post_link . '</b>'
        ); ?>
@@ -119,17 +127,19 @@ if ( current_user_can( 'edit_post', $post_id ) ) {
 <?php
 if ( $comment->comment_parent ) :
        $parent      = get_comment( $comment->comment_parent );
-       $parent_link = esc_url( get_comment_link( $comment->comment_parent ) );
-       $name        = get_comment_author( $parent->comment_ID );
-?>
-<div class="misc-pub-section misc-pub-reply-to">
-       <?php printf(
-               /* translators: comment link */
-               __( 'In reply to: %s' ),
-               '<b><a href="' . $parent_link . '">' . $name . '</a></b>'
-       ); ?>
-</div>
-<?php endif; ?>
+       if ( $parent ) :
+               $parent_link = esc_url( get_comment_link( $parent ) );
+               $name        = get_comment_author( $parent );
+       ?>
+       <div class="misc-pub-section misc-pub-reply-to">
+               <?php printf(
+                       /* translators: %s: comment link */
+                       __( 'In reply to: %s' ),
+                       '<b><a href="' . $parent_link . '">' . $name . '</a></b>'
+               ); ?>
+       </div>
+<?php endif;
+endif; ?>
 
 <?php
        /**
@@ -171,7 +181,7 @@ do_action( 'add_meta_boxes', 'comment', $comment );
  *
  * @since 3.0.0
  *
- * @param object $comment Comment object.
+ * @param WP_Comment $comment Comment object.
  */
 do_action( 'add_meta_boxes_comment', $comment );
 
index 943874a8e2b9f0d6258f25870630b7f5e8f3d94b..ff02e394cf7fa91f64858a43b0d9716749fd43be 100644 (file)
@@ -91,7 +91,7 @@ wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
 <div id="post-body" class="metabox-holder columns-<?php echo 1 == get_current_screen()->get_columns() ? '1' : '2'; ?>">
 <div id="post-body-content">
 <div id="namediv" class="stuffbox">
-<h3><label for="link_name"><?php _ex('Name', 'link name') ?></label></h3>
+<h2><label for="link_name"><?php _ex( 'Name', 'link name' ) ?></label></h2>
 <div class="inside">
        <input type="text" name="link_name" size="30" maxlength="255" value="<?php echo esc_attr($link->link_name); ?>" id="link_name" />
        <p><?php _e('Example: Nifty blogging software'); ?></p>
@@ -99,7 +99,7 @@ wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
 </div>
 
 <div id="addressdiv" class="stuffbox">
-<h3><label for="link_url"><?php _e('Web Address') ?></label></h3>
+<h2><label for="link_url"><?php _e( 'Web Address' ) ?></label></h2>
 <div class="inside">
        <input type="text" name="link_url" size="30" maxlength="255" class="code" value="<?php echo esc_attr($link->link_url); ?>" id="link_url" />
        <p><?php _e('Example: <code>http://wordpress.org/</code> &#8212; don&#8217;t forget the <code>http://</code>'); ?></p>
@@ -107,7 +107,7 @@ wp_nonce_field( 'meta-box-order', 'meta-box-order-nonce', false ); ?>
 </div>
 
 <div id="descriptiondiv" class="stuffbox">
-<h3><label for="link_description"><?php _e('Description') ?></label></h3>
+<h2><label for="link_description"><?php _e( 'Description' ) ?></label></h2>
 <div class="inside">
        <input type="text" name="link_description" size="30" maxlength="255" value="<?php echo isset($link->link_description) ? esc_attr($link->link_description) : ''; ?>" id="link_description" />
        <p><?php _e('This will be shown when someone hovers over the link in the blogroll, or optionally below the link.'); ?></p>
index ac5aafbf8fef26da306c8dfcbcd7f35f32e8418d..8b5c61b1642591ca3dbfce98caeb3b29e1d0f4c7 100644 (file)
@@ -48,6 +48,17 @@ if ( 'category' == $taxonomy ) {
         */
        do_action( 'edit_tag_form_pre', $tag );
 }
+
+/**
+ * Use with caution, see http://codex.wordpress.org/Function_Reference/wp_reset_vars
+ */
+wp_reset_vars( array( 'wp_http_referer' ) );
+
+$wp_http_referer = remove_query_arg( array( 'action', 'message', 'tag_ID' ), $wp_http_referer );
+
+/** Also used by Edit Tags */
+require_once( ABSPATH . 'wp-admin/includes/edit-tag-messages.php' );
+
 /**
  * Fires before the Edit Term form for all taxonomies.
  *
@@ -63,7 +74,20 @@ do_action( "{$taxonomy}_pre_edit_form", $tag, $taxonomy ); ?>
 
 <div class="wrap">
 <h1><?php echo $tax->labels->edit_item; ?></h1>
+
+<?php if ( $message ) : ?>
+<div id="message" class="updated">
+       <p><strong><?php echo $message; ?></strong></p>
+       <?php if ( $wp_http_referer ) { ?>
+       <p><a href="<?php echo esc_url( $wp_http_referer ); ?>"><?php printf( __( '&larr; Back to %s' ), $tax->labels->name ); ?></a></p>
+       <?php } else { ?>
+       <p><a href="<?php echo esc_url( wp_get_referer() ); ?>"><?php printf( __( '&larr; Back to %s' ), $tax->labels->name ); ?></a></p>
+       <?php } ?>
+</div>
+<?php endif; ?>
+
 <div id="ajax-response"></div>
+
 <form name="edittag" id="edittag" method="post" action="edit-tags.php" class="validate"
 <?php
 /**
@@ -97,11 +121,13 @@ do_action( "{$taxonomy}_term_edit_form_tag" );
                         * post URIs and term slugs.
                         *
                         * @since 2.6.0
+                        * @since 4.4.0 The `$tag` parameter was added.
                         *
-                        * @param string $slug The editable slug. Will be either a term slug or post URI depending
-                        *                     upon the context in which it is evaluated.
+                        * @param string         $slug The editable slug. Will be either a term slug or post URI depending
+                        *                             upon the context in which it is evaluated.
+                        * @param object|WP_Post $tag  Term or WP_Post object.
                         */
-                       $slug = isset( $tag->slug ) ? apply_filters( 'editable_slug', $tag->slug ) : '';
+                       $slug = isset( $tag->slug ) ? apply_filters( 'editable_slug', $tag->slug, $tag ) : '';
                        ?>
                        <td><input name="slug" id="slug" type="text" value="<?php echo esc_attr( $slug ); ?>" size="40" />
                        <p class="description"><?php _e('The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.'); ?></p></td>
index db8319cdd42e2e9fd22f955010f7a997ec763f00..6ff9e3741968ad23d647c49e59da4a8184636e15 100644 (file)
@@ -17,8 +17,17 @@ $tax = get_taxonomy( $taxnow );
 if ( ! $tax )
        wp_die( __( 'Invalid taxonomy' ) );
 
-if ( ! current_user_can( $tax->cap->manage_terms ) )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! in_array( $tax->name, get_taxonomies( array( 'show_ui' => true ) ) ) ) {
+   wp_die( __( 'You are not allowed to manage these items.' ) );
+}
+
+if ( ! current_user_can( $tax->cap->manage_terms ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to manage these items.' ) . '</p>',
+               403
+       );
+}
 
 /**
  * $post_type is set when the WP_Terms_List_Table instance is created
@@ -45,7 +54,13 @@ if ( 'post' != $post_type ) {
 
 add_screen_option( 'per_page', array( 'default' => 20, 'option' => 'edit_' . $tax->name . '_per_page' ) );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_pagination' => $tax->labels->items_list_navigation,
+       'heading_list'       => $tax->labels->items_list,
+) );
+
 $location = false;
+$referer = wp_get_referer();
 
 switch ( $wp_list_table->current_action() ) {
 
@@ -53,17 +68,21 @@ case 'add-tag':
 
        check_admin_referer( 'add-tag', '_wpnonce_add-tag' );
 
-       if ( !current_user_can( $tax->cap->edit_terms ) )
-               wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       if ( ! current_user_can( $tax->cap->edit_terms ) ) {
+               wp_die(
+                       '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                       '<p>' . __( 'You are not allowed to add this item.' ) . '</p>',
+                       403
+               );
+       }
 
        $ret = wp_insert_term( $_POST['tag-name'], $taxonomy, $_POST );
        $location = 'edit-tags.php?taxonomy=' . $taxonomy;
        if ( 'post' != $post_type )
                $location .= '&post_type=' . $post_type;
 
-       if ( $referer = wp_get_original_referer() ) {
-               if ( false !== strpos( $referer, 'edit-tags.php' ) )
-                       $location = $referer;
+       if ( $referer && false !== strpos( $referer, 'edit-tags.php' ) ) {
+               $location = $referer;
        }
 
        if ( $ret && !is_wp_error( $ret ) )
@@ -77,9 +96,9 @@ case 'delete':
        $location = 'edit-tags.php?taxonomy=' . $taxonomy;
        if ( 'post' != $post_type )
                $location .= '&post_type=' . $post_type;
-       if ( $referer = wp_get_referer() ) {
-               if ( false !== strpos( $referer, 'edit-tags.php' ) )
-                       $location = $referer;
+
+       if ( $referer && false !== strpos( $referer, 'edit-tags.php' ) ) {
+               $location = $referer;
        }
 
        if ( ! isset( $_REQUEST['tag_ID'] ) ) {
@@ -89,8 +108,13 @@ case 'delete':
        $tag_ID = (int) $_REQUEST['tag_ID'];
        check_admin_referer( 'delete-tag_' . $tag_ID );
 
-       if ( !current_user_can( $tax->cap->delete_terms ) )
-               wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       if ( ! current_user_can( $tax->cap->delete_terms ) ) {
+               wp_die(
+                       '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                       '<p>' . __( 'You are not allowed to delete this item.' ) . '</p>',
+                       403
+               );
+       }
 
        wp_delete_term( $tag_ID, $taxonomy );
 
@@ -101,8 +125,13 @@ case 'delete':
 case 'bulk-delete':
        check_admin_referer( 'bulk-tags' );
 
-       if ( !current_user_can( $tax->cap->delete_terms ) )
-               wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       if ( ! current_user_can( $tax->cap->delete_terms ) ) {
+               wp_die(
+                       '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                       '<p>' . __( 'You are not allowed to delete these items.' ) . '</p>',
+                       403
+               );
+       }
 
        $tags = (array) $_REQUEST['delete_tags'];
        foreach ( $tags as $tag_ID ) {
@@ -112,9 +141,8 @@ case 'bulk-delete':
        $location = 'edit-tags.php?taxonomy=' . $taxonomy;
        if ( 'post' != $post_type )
                $location .= '&post_type=' . $post_type;
-       if ( $referer = wp_get_referer() ) {
-               if ( false !== strpos( $referer, 'edit-tags.php' ) )
-                       $location = $referer;
+       if ( $referer && false !== strpos( $referer, 'edit-tags.php' ) ) {
+               $location = $referer;
        }
 
        $location = add_query_arg( 'message', 6, $location );
@@ -139,8 +167,13 @@ case 'editedtag':
        $tag_ID = (int) $_POST['tag_ID'];
        check_admin_referer( 'update-tag_' . $tag_ID );
 
-       if ( !current_user_can( $tax->cap->edit_terms ) )
-               wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       if ( ! current_user_can( $tax->cap->edit_terms ) ) {
+               wp_die(
+                       '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                       '<p>' . __( 'You are not allowed to edit this item.' ) . '</p>',
+                       403
+               );
+       }
 
        $tag = get_term( $tag_ID, $taxonomy );
        if ( ! $tag )
@@ -152,9 +185,8 @@ case 'editedtag':
        if ( 'post' != $post_type )
                $location .= '&post_type=' . $post_type;
 
-       if ( $referer = wp_get_original_referer() ) {
-               if ( false !== strpos( $referer, 'edit-tags.php' ) )
-                       $location = $referer;
+       if ( $referer && false !== strpos( $referer, 'edit-tags.php' ) ) {
+               $location = $referer;
        }
 
        if ( $ret && !is_wp_error( $ret ) )
@@ -215,15 +247,15 @@ if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $t
                        $help = '<p>' . __( 'When adding a new tag on this screen, you&#8217;ll fill in the following fields:' ) . '</p>';
 
                $help .= '<ul>' .
-               '<li>' . __( '<strong>Name</strong> - The name is how it appears on your site.' ) . '</li>';
+               '<li>' . __( '<strong>Name</strong> &mdash; The name is how it appears on your site.' ) . '</li>';
 
                if ( ! global_terms_enabled() )
-                       $help .= '<li>' . __( '<strong>Slug</strong> - The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ) . '</li>';
+                       $help .= '<li>' . __( '<strong>Slug</strong> &mdash; The &#8220;slug&#8221; is the URL-friendly version of the name. It is usually all lowercase and contains only letters, numbers, and hyphens.' ) . '</li>';
 
                if ( 'category' == $taxonomy )
-                       $help .= '<li>' . __( '<strong>Parent</strong> - Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have child categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.' ) . '</li>';
+                       $help .= '<li>' . __( '<strong>Parent</strong> &mdash; Categories, unlike tags, can have a hierarchy. You might have a Jazz category, and under that have child categories for Bebop and Big Band. Totally optional. To create a subcategory, just choose another category from the Parent dropdown.' ) . '</li>';
 
-               $help .= '<li>' . __( '<strong>Description</strong> - The description is not prominent by default; however, some themes may display it.' ) . '</li>' .
+               $help .= '<li>' . __( '<strong>Description</strong> &mdash; The description is not prominent by default; however, some themes may display it.' ) . '</li>' .
                '</ul>' .
                '<p>' . __( 'You can change the display of this screen using the Screen Options tab to set how many items are displayed per screen and to display/hide columns in the table.' ) . '</p>';
 
@@ -252,55 +284,17 @@ if ( 'category' == $taxonomy || 'link_category' == $taxonomy || 'post_tag' == $t
 
 require_once( ABSPATH . 'wp-admin/admin-header.php' );
 
-if ( !current_user_can($tax->cap->edit_terms) )
-       wp_die( __('You are not allowed to edit this item.') );
-
-$messages = array();
-$messages['_item'] = array(
-       0 => '', // Unused. Messages start at index 1.
-       1 => __( 'Item added.' ),
-       2 => __( 'Item deleted.' ),
-       3 => __( 'Item updated.' ),
-       4 => __( 'Item not added.' ),
-       5 => __( 'Item not updated.' ),
-       6 => __( 'Items deleted.' )
-);
-$messages['category'] = array(
-       0 => '', // Unused. Messages start at index 1.
-       1 => __( 'Category added.' ),
-       2 => __( 'Category deleted.' ),
-       3 => __( 'Category updated.' ),
-       4 => __( 'Category not added.' ),
-       5 => __( 'Category not updated.' ),
-       6 => __( 'Categories deleted.' )
-);
-$messages['post_tag'] = array(
-       0 => '', // Unused. Messages start at index 1.
-       1 => __( 'Tag added.' ),
-       2 => __( 'Tag deleted.' ),
-       3 => __( 'Tag updated.' ),
-       4 => __( 'Tag not added.' ),
-       5 => __( 'Tag not updated.' ),
-       6 => __( 'Tags deleted.' )
-);
-
-/**
- * Filter the messages displayed when a tag is updated.
- *
- * @since 3.7.0
- *
- * @param array $messages The messages to be displayed.
- */
-$messages = apply_filters( 'term_updated_messages', $messages );
-
-$message = false;
-if ( isset( $_REQUEST['message'] ) && ( $msg = (int) $_REQUEST['message'] ) ) {
-       if ( isset( $messages[ $taxonomy ][ $msg ] ) )
-               $message = $messages[ $taxonomy ][ $msg ];
-       elseif ( ! isset( $messages[ $taxonomy ] ) && isset( $messages['_item'][ $msg ] ) )
-               $message = $messages['_item'][ $msg ];
+if ( ! current_user_can( $tax->cap->edit_terms ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to edit this item.' ) . '</p>',
+               403
+       );
 }
 
+/** Also used by the Edit Tag  form */
+require_once( ABSPATH . 'wp-admin/includes/edit-tag-messages.php' );
+
 $class = ( isset( $_REQUEST['error'] ) ) ? 'error' : 'updated';
 
 if ( is_plugin_active( 'wpcat2tag-importer/wpcat2tag-importer.php' ) ) {
@@ -349,8 +343,13 @@ endif; ?>
 <div class="form-wrap">
 <p>
        <?php
-       /** This filter is documented in wp-includes/category-template.php */
-       printf( __( '<strong>Note:</strong><br />Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the category <strong>%s</strong>.' ), apply_filters( 'the_category', get_cat_name( get_option( 'default_category') ) ) );
+       echo '<strong>' . __( 'Note:' ) . '</strong><br />';
+       printf(
+               /* translators: %s: default category */
+               __( 'Deleting a category does not delete the posts in that category. Instead, posts that were only assigned to the deleted category are set to the category %s.' ),
+               /** This filter is documented in wp-includes/category-template.php */
+               '<strong>' . apply_filters( 'the_category', get_cat_name( get_option( 'default_category') ) ) . '</strong>'
+       );
        ?>
 </p>
 <?php if ( current_user_can( 'import' ) ) : ?>
@@ -392,7 +391,7 @@ if ( !is_null( $tax->labels->popular_items ) ) {
        if ( $tag_cloud ) :
        ?>
 <div class="tagcloud">
-<h3><?php echo $tax->labels->popular_items; ?></h3>
+<h2><?php echo $tax->labels->popular_items; ?></h2>
 <?php echo $tag_cloud; unset( $tag_cloud ); ?>
 </div>
 <?php
@@ -445,7 +444,7 @@ if ( current_user_can($tax->cap->edit_terms) ) {
 ?>
 
 <div class="form-wrap">
-<h3><?php echo $tax->labels->add_new_item; ?></h3>
+<h2><?php echo $tax->labels->add_new_item; ?></h2>
 <form id="addtag" method="post" action="edit-tags.php" class="validate"
 <?php
 /**
index 6c285d78ecf2207ba7af2c0e45141c75f59ff59c..62c70e2bc3eb66e2a54ccc1579f9c44016e26124 100644 (file)
@@ -12,6 +12,10 @@ require_once( dirname( __FILE__ ) . '/admin.php' );
 if ( ! $typenow )
        wp_die( __( 'Invalid post type' ) );
 
+if ( ! in_array( $typenow, get_post_types( array( 'show_ui' => true ) ) ) ) {
+       wp_die( __( 'You are not allowed to edit posts in this post type.' ) );
+}
+
 if ( 'attachment' === $typenow ) {
        if ( wp_redirect( admin_url( 'upload.php' ) ) ) {
                exit;
@@ -30,8 +34,13 @@ $post_type_object = get_post_type_object( $post_type );
 if ( ! $post_type_object )
        wp_die( __( 'Invalid post type' ) );
 
-if ( ! current_user_can( $post_type_object->cap->edit_posts ) )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! current_user_can( $post_type_object->cap->edit_posts ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to edit posts in this post type.' ) . '</p>',
+               403
+       );
+}
 
 $wp_list_table = _get_list_table('WP_Posts_List_Table');
 $pagenum = $wp_list_table->get_pagenum();
@@ -92,7 +101,7 @@ if ( $doaction ) {
                case 'trash':
                        $trashed = $locked = 0;
 
-                       foreach( (array) $post_ids as $post_id ) {
+                       foreach ( (array) $post_ids as $post_id ) {
                                if ( !current_user_can( 'delete_post', $post_id) )
                                        wp_die( __('You are not allowed to move this item to the Trash.') );
 
@@ -111,7 +120,7 @@ if ( $doaction ) {
                        break;
                case 'untrash':
                        $untrashed = 0;
-                       foreach( (array) $post_ids as $post_id ) {
+                       foreach ( (array) $post_ids as $post_id ) {
                                if ( !current_user_can( 'delete_post', $post_id) )
                                        wp_die( __('You are not allowed to restore this item from the Trash.') );
 
@@ -124,7 +133,7 @@ if ( $doaction ) {
                        break;
                case 'delete':
                        $deleted = 0;
-                       foreach( (array) $post_ids as $post_id ) {
+                       foreach ( (array) $post_ids as $post_id ) {
                                $post_del = get_post($post_id);
 
                                if ( !current_user_can( 'delete_post', $post_id ) )
@@ -186,7 +195,7 @@ if ( 'post' == $post_type ) {
                '<ul>' .
                        '<li>' . __('You can hide/display columns based on your needs and decide how many posts to list per screen using the Screen Options tab.') . '</li>' .
                        '<li>' . __('You can filter the list of posts by post status using the text links in the upper left to show All, Published, Draft, or Trashed posts. The default view is to show all posts.') . '</li>' .
-                       '<li>' . __('You can view posts in a simple title list or with an excerpt. Choose the view you prefer by clicking on the icons at the top of the list on the right.') . '</li>' .
+                       '<li>' . __('You can view posts in a simple title list or with an excerpt using the Screen Options tab.') . '</li>' .
                        '<li>' . __('You can refine the list to show only posts in a specific category or from a specific month by using the dropdown menus above the posts list. Click the Filter button after making your selection. You also can refine the list by clicking on the post author, category or tag in the posts list.') . '</li>' .
                '</ul>'
        ) );
@@ -236,8 +245,15 @@ if ( 'post' == $post_type ) {
        '<p>' . __('<a href="https://codex.wordpress.org/Pages_Screen" target="_blank">Documentation on Managing Pages</a>') . '</p>' .
        '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
        );
+
 }
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_views'      => $post_type_object->labels->filter_items_list,
+       'heading_pagination' => $post_type_object->labels->items_list_navigation,
+       'heading_list'       => $post_type_object->labels->items_list,
+) );
+
 add_screen_option( 'per_page', array( 'default' => 20, 'option' => 'edit_' . $post_type . '_per_page' ) );
 
 $bulk_counts = array(
index ce5081baa9176f85d0e363b78935b1c0df2f65b1..7f416c46566d780909b55f8daec409f35db6b794 100644 (file)
@@ -31,6 +31,7 @@ function export_add_js() {
                form.find('input:radio').change(function() {
                        filters.slideUp('fast');
                        switch ( $(this).val() ) {
+                               case 'attachment': $('#attachment-filters').slideDown(); break;
                                case 'posts': $('#post-filters').slideDown(); break;
                                case 'pages': $('#page-filters').slideDown(); break;
                        }
@@ -89,7 +90,15 @@ if ( isset( $_GET['download'] ) ) {
 
                if ( $_GET['page_status'] )
                        $args['status'] = $_GET['page_status'];
-       } else {
+       } elseif ( 'attachment' == $_GET['content'] ) {
+               $args['content'] = 'attachment';
+
+               if ( $_GET['attachment_start_date'] || $_GET['attachment_end_date'] ) {
+                       $args['start_date'] = $_GET['attachment_start_date'];
+                       $args['end_date'] = $_GET['attachment_end_date'];
+               }
+       }
+       else {
                $args['content'] = $_GET['content'];
        }
 
@@ -149,39 +158,47 @@ function export_date_options( $post_type = 'post' ) {
 <p><?php _e('This format, which we call WordPress eXtended RSS or WXR, will contain your posts, pages, comments, custom fields, categories, and tags.'); ?></p>
 <p><?php _e('Once you&#8217;ve saved the download file, you can use the Import function in another WordPress installation to import the content from this site.'); ?></p>
 
-<h3><?php _e( 'Choose what to export' ); ?></h3>
+<h2><?php _e( 'Choose what to export' ); ?></h2>
 <form method="get" id="export-filters">
+<fieldset>
+<legend class="screen-reader-text"><?php _e( 'Content to export' ); ?></legend>
 <input type="hidden" name="download" value="true" />
-<p><label><input type="radio" name="content" value="all" checked="checked" /> <?php _e( 'All content' ); ?></label></p>
-<p class="description"><?php _e( 'This will contain all of your posts, pages, comments, custom fields, terms, navigation menus and custom posts.' ); ?></p>
+<p><label><input type="radio" name="content" value="all" checked="checked" aria-describedby="all-content-desc" /> <?php _e( 'All content' ); ?></label></p>
+<p class="description" id="all-content-desc"><?php _e( 'This will contain all of your posts, pages, comments, custom fields, terms, navigation menus and custom posts.' ); ?></p>
 
 <p><label><input type="radio" name="content" value="posts" /> <?php _e( 'Posts' ); ?></label></p>
 <ul id="post-filters" class="export-filters">
        <li>
-               <label><?php _e( 'Categories:' ); ?></label>
+               <label><span class="label-responsive"><?php _e( 'Categories:' ); ?></span>
                <?php wp_dropdown_categories( array( 'show_option_all' => __('All') ) ); ?>
+               </label>
        </li>
        <li>
-               <label><?php _e( 'Authors:' ); ?></label>
-<?php
+               <label><span class="label-responsive"><?php _e( 'Authors:' ); ?></span>
+               <?php
                $authors = $wpdb->get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'post'" );
                wp_dropdown_users( array( 'include' => $authors, 'name' => 'post_author', 'multi' => true, 'show_option_all' => __('All') ) );
-?>
+               ?>
+               </label>
        </li>
        <li>
-               <label><?php _e( 'Date range:' ); ?></label>
-               <select name="post_start_date">
-                       <option value="0"><?php _e( 'Start Date' ); ?></option>
+               <fieldset>
+               <legend class="screen-reader-text"><?php _e( 'Date range:' ); ?></legend>
+               <label for="post-start-date" class="label-responsive"><?php _e( 'Start date:' ); ?></label>
+               <select name="post_start_date" id="post-start-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
                        <?php export_date_options(); ?>
                </select>
-               <select name="post_end_date">
-                       <option value="0"><?php _e( 'End Date' ); ?></option>
+               <label for="post-end-date" class="label-responsive"><?php _e( 'End date:' ); ?></label>
+               <select name="post_end_date" id="post-end-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
                        <?php export_date_options(); ?>
                </select>
+               </fieldset>
        </li>
        <li>
-               <label><?php _e( 'Status:' ); ?></label>
-               <select name="post_status">
+               <label for="post-status" class="label-responsive"><?php _e( 'Status:' ); ?></label>
+               <select name="post_status" id="post-status">
                        <option value="0"><?php _e( 'All' ); ?></option>
                        <?php $post_stati = get_post_stati( array( 'internal' => false ), 'objects' );
                        foreach ( $post_stati as $status ) : ?>
@@ -194,26 +211,31 @@ function export_date_options( $post_type = 'post' ) {
 <p><label><input type="radio" name="content" value="pages" /> <?php _e( 'Pages' ); ?></label></p>
 <ul id="page-filters" class="export-filters">
        <li>
-               <label><?php _e( 'Authors:' ); ?></label>
-<?php
+               <label><span class="label-responsive"><?php _e( 'Authors:' ); ?></span>
+               <?php
                $authors = $wpdb->get_col( "SELECT DISTINCT post_author FROM {$wpdb->posts} WHERE post_type = 'page'" );
                wp_dropdown_users( array( 'include' => $authors, 'name' => 'page_author', 'multi' => true, 'show_option_all' => __('All') ) );
-?>
+               ?>
+               </label>
        </li>
        <li>
-               <label><?php _e( 'Date range:' ); ?></label>
-               <select name="page_start_date">
-                       <option value="0"><?php _e( 'Start Date' ); ?></option>
+               <fieldset>
+               <legend class="screen-reader-text"><?php _e( 'Date range:' ); ?></legend>
+               <label for="page-start-date" class="label-responsive"><?php _e( 'Start date:' ); ?></label>
+               <select name="page_start_date" id="page-start-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
                        <?php export_date_options( 'page' ); ?>
                </select>
-               <select name="page_end_date">
-                       <option value="0"><?php _e( 'End Date' ); ?></option>
+               <label for="page-end-date" class="label-responsive"><?php _e( 'End date:' ); ?></label>
+               <select name="page_end_date" id="page-end-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
                        <?php export_date_options( 'page' ); ?>
                </select>
+               </fieldset>
        </li>
        <li>
-               <label><?php _e( 'Status:' ); ?></label>
-               <select name="page_status">
+               <label for="page-status" class="label-responsive"><?php _e( 'Status:' ); ?></label>
+               <select name="page_status" id="page-status">
                        <option value="0"><?php _e( 'All' ); ?></option>
                        <?php foreach ( $post_stati as $status ) : ?>
                        <option value="<?php echo esc_attr( $status->name ); ?>"><?php echo esc_html( $status->label ); ?></option>
@@ -226,9 +248,29 @@ function export_date_options( $post_type = 'post' ) {
 <p><label><input type="radio" name="content" value="<?php echo esc_attr( $post_type->name ); ?>" /> <?php echo esc_html( $post_type->label ); ?></label></p>
 <?php endforeach; ?>
 
+<p><label><input type="radio" name="content" value="attachment" /> <?php _e( 'Media' ); ?></label></p>
+<ul id="attachment-filters" class="export-filters">
+       <li>
+               <fieldset>
+               <legend class="screen-reader-text"><?php _e( 'Date range:' ); ?></legend>
+               <label for="attachment-start-date" class="label-responsive"><?php _e( 'Start date:' ); ?></label>
+               <select name="attachment_start_date" id="attachment-start-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
+                       <?php export_date_options( 'attachment' ); ?>
+               </select>
+               <label for="attachment-end-date" class="label-responsive"><?php _e( 'End date:' ); ?></label>
+               <select name="attachment_end_date" id="attachment-end-date">
+                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
+                       <?php export_date_options( 'attachment' ); ?>
+               </select>
+               </fieldset>
+       </li>
+</ul>
+
+</fieldset>
 <?php
 /**
- * Fires after the export filters form.
+ * Fires at the end of the export filters form.
  *
  * @since 3.5.0
  */
index 7788f65c5dc1908964abdcda7ca2ef9b52d5bea1..ce9f9e235de735a66d68f4b5985246b3480135a0 100644 (file)
@@ -19,18 +19,14 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 
 <h1><?php printf( __( 'Welcome to WordPress %s' ), $display_version ); ?></h1>
 
-<div class="about-text"><?php printf( __( 'Thank you for updating! WordPress %s makes it even easier to format your content and customize your site.' ), $display_version ); ?></div>
+<div class="about-text"><?php printf( __( 'Thank you for updating! WordPress %s makes your site more connected and responsive.' ), $display_version ); ?></div>
 
 <div class="wp-badge"><?php printf( __( 'Version %s' ), $display_version ); ?></div>
 
 <h2 class="nav-tab-wrapper">
-       <a href="about.php" class="nav-tab">
-               <?php _e( 'What&#8217;s New' ); ?>
-       </a><a href="credits.php" class="nav-tab">
-               <?php _e( 'Credits' ); ?>
-       </a><a href="freedoms.php" class="nav-tab nav-tab-active">
-               <?php _e( 'Freedoms' ); ?>
-       </a>
+       <a href="about.php" class="nav-tab"><?php _e( 'What&#8217;s New' ); ?></a>
+       <a href="credits.php" class="nav-tab"><?php _e( 'Credits' ); ?></a>
+       <a href="freedoms.php" class="nav-tab nav-tab-active"><?php _e( 'Freedoms' ); ?></a>
 </h2>
 
 <p class="about-description"><?php printf( __( 'WordPress is Free and open source software, built by a distributed community of mostly volunteer developers from around the world. WordPress comes with some awesome, worldview-changing rights courtesy of its <a href="%s">license</a>, the GPL.' ), 'https://wordpress.org/about/license/' ); ?></p>
index d0709f4f8a7f3c44cea09659f9d4788e4ce418e6..38051e394775b0fcc06a1a54ba6f59c4cff0c1f0 100644 (file)
@@ -1,10 +1,9 @@
 <?php
 /**
- * Administration hooks
+ * Administration API: Default admin hooks
  *
  * @package WordPress
- * @subpackage Hooks
- *
+ * @subpackage Administration
  * @since 4.3.0
  */
 
index 64a0ded744ea672d32785d01d675c4fd66773197..a44abba9179a6c15148abbbd31f6c18eba091199 100644 (file)
@@ -1,9 +1,10 @@
 <?php
 /**
- * Includes all of the WordPress Administration API files.
+ * Core Administration API
  *
  * @package WordPress
  * @subpackage Administration
+ * @since 2.3.0
  */
 
 if ( ! defined('WP_ADMIN') ) {
@@ -39,6 +40,9 @@ require_once(ABSPATH . 'wp-admin/includes/import.php');
 /** WordPress Misc Administration API */
 require_once(ABSPATH . 'wp-admin/includes/misc.php');
 
+/** WordPress Options Administration API */
+require_once(ABSPATH . 'wp-admin/includes/options.php');
+
 /** WordPress Plugin Administration API */
 require_once(ABSPATH . 'wp-admin/includes/plugin.php');
 
@@ -46,6 +50,7 @@ require_once(ABSPATH . 'wp-admin/includes/plugin.php');
 require_once(ABSPATH . 'wp-admin/includes/post.php');
 
 /** WordPress Administration Screen API */
+require_once(ABSPATH . 'wp-admin/includes/class-wp-screen.php');
 require_once(ABSPATH . 'wp-admin/includes/screen.php');
 
 /** WordPress Taxonomy Administration API */
index 77c32b05ed6d1701d2145a112fbcdd32d007143e..58734452f94bfda4a0ecb223255644e92d8178c0 100644 (file)
@@ -1,9 +1,10 @@
 <?php
 /**
- * WordPress Core Ajax Handlers.
+ * Administration API: Core Ajax handlers
  *
  * @package WordPress
  * @subpackage Administration
+ * @since 2.1.0
  */
 
 //
@@ -347,8 +348,33 @@ function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) {
        $url      = isset( $_POST['_url'] )      ? esc_url_raw( $_POST['_url'] ) : '';
 
        // JS didn't send us everything we need to know. Just die with success message
-       if ( !$total || !$per_page || !$page || !$url )
-               wp_die( time() );
+       if ( ! $total || ! $per_page || ! $page || ! $url ) {
+               $time = time();
+               $comment = get_comment( $comment_id );
+
+               $counts = wp_count_comments();
+
+               $x = new WP_Ajax_Response( array(
+                       'what' => 'comment',
+                       // Here for completeness - not used.
+                       'id' => $comment_id,
+                       'supplemental' => array(
+                               'status' => $comment ? $comment->comment_approved : '',
+                               'postId' => $comment ? $comment->comment_post_ID : '',
+                               'time' => $time,
+                               'in_moderation' => $counts->moderated,
+                               'i18n_comments_text' => sprintf(
+                                       _n( '%s Comment', '%s Comments', $counts->approved ),
+                                       number_format_i18n( $counts->approved )
+                               ),
+                               'i18n_moderation_text' => sprintf(
+                                       _nx( '%s in moderation', '%s in moderation', $counts->moderated, 'comments' ),
+                                       number_format_i18n( $counts->moderated )
+                               )
+                       )
+               ) );
+               $x->send();
+       }
 
        $total += $delta;
        if ( $total < 0 )
@@ -357,7 +383,8 @@ function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) {
        // Only do the expensive stuff on a page-break, and about 1 other time per page
        if ( 0 == $total % $per_page || 1 == mt_rand( 1, $per_page ) ) {
                $post_id = 0;
-               $status = 'total_comments'; // What type of comment count are we looking for?
+               // What type of comment count are we looking for?
+               $status = 'all';
                $parsed = parse_url( $url );
                if ( isset( $parsed['query'] ) ) {
                        parse_str( $parsed['query'], $query_vars );
@@ -377,12 +404,15 @@ function _wp_ajax_delete_comment_response( $comment_id, $delta = -1 ) {
 
        // The time since the last comment count.
        $time = time();
+       $comment = get_comment( $comment_id );
 
        $x = new WP_Ajax_Response( array(
                'what' => 'comment',
                // Here for completeness - not used.
                'id' => $comment_id,
                'supplemental' => array(
+                       'status' => $comment ? $comment->comment_approved : '',
+                       'postId' => $comment ? $comment->comment_post_ID : '',
                        'total_items_i18n' => sprintf( _n( '%s item', '%s items', $total ), number_format_i18n( $total ) ),
                        'total_pages' => ceil( $total / $per_page ),
                        'total_pages_i18n' => number_format_i18n( ceil( $total / $per_page ) ),
@@ -503,31 +533,31 @@ function wp_ajax_delete_comment() {
                wp_die( -1 );
 
        check_ajax_referer( "delete-comment_$id" );
-       $status = wp_get_comment_status( $comment->comment_ID );
+       $status = wp_get_comment_status( $comment );
 
        $delta = -1;
        if ( isset($_POST['trash']) && 1 == $_POST['trash'] ) {
                if ( 'trash' == $status )
                        wp_die( time() );
-               $r = wp_trash_comment( $comment->comment_ID );
+               $r = wp_trash_comment( $comment );
        } elseif ( isset($_POST['untrash']) && 1 == $_POST['untrash'] ) {
                if ( 'trash' != $status )
                        wp_die( time() );
-               $r = wp_untrash_comment( $comment->comment_ID );
+               $r = wp_untrash_comment( $comment );
                if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'trash' ) // undo trash, not in trash
                        $delta = 1;
        } elseif ( isset($_POST['spam']) && 1 == $_POST['spam'] ) {
                if ( 'spam' == $status )
                        wp_die( time() );
-               $r = wp_spam_comment( $comment->comment_ID );
+               $r = wp_spam_comment( $comment );
        } elseif ( isset($_POST['unspam']) && 1 == $_POST['unspam'] ) {
                if ( 'spam' != $status )
                        wp_die( time() );
-               $r = wp_unspam_comment( $comment->comment_ID );
+               $r = wp_unspam_comment( $comment );
                if ( ! isset( $_POST['comment_status'] ) || $_POST['comment_status'] != 'spam' ) // undo spam, not in spam
                        $delta = 1;
        } elseif ( isset($_POST['delete']) && 1 == $_POST['delete'] ) {
-               $r = wp_delete_comment( $comment->comment_ID );
+               $r = wp_delete_comment( $comment );
        } else {
                wp_die( -1 );
        }
@@ -713,15 +743,16 @@ function wp_ajax_dim_comment() {
        if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) && ! current_user_can( 'moderate_comments' ) )
                wp_die( -1 );
 
-       $current = wp_get_comment_status( $comment->comment_ID );
+       $current = wp_get_comment_status( $comment );
        if ( isset( $_POST['new'] ) && $_POST['new'] == $current )
                wp_die( time() );
 
        check_ajax_referer( "approve-comment_$id" );
-       if ( in_array( $current, array( 'unapproved', 'spam' ) ) )
-               $result = wp_set_comment_status( $comment->comment_ID, 'approve', true );
-       else
-               $result = wp_set_comment_status( $comment->comment_ID, 'hold', true );
+       if ( in_array( $current, array( 'unapproved', 'spam' ) ) ) {
+               $result = wp_set_comment_status( $comment, 'approve', true );
+       } else {
+               $result = wp_set_comment_status( $comment, 'hold', true );
+       }
 
        if ( is_wp_error($result) ) {
                $x = new WP_Ajax_Response( array(
@@ -994,7 +1025,11 @@ function wp_ajax_replyto_comment( $action ) {
                $parent = get_comment( $comment_parent );
 
                if ( $parent && $parent->comment_approved === '0' && $parent->comment_post_ID == $comment_post_ID ) {
-                       if ( wp_set_comment_status( $parent->comment_ID, 'approve' ) )
+                       if ( ! current_user_can( 'edit_comment', $parent->comment_ID ) ) {
+                               wp_die( -1 );
+                       }
+
+                       if ( wp_set_comment_status( $parent, 'approve' ) )
                                $comment_auto_approved = true;
                }
        }
@@ -1026,8 +1061,23 @@ function wp_ajax_replyto_comment( $action ) {
                'position' => $position
        );
 
-       if ( $comment_auto_approved )
-               $response['supplemental'] = array( 'parent_approved' => $parent->comment_ID );
+       $counts = wp_count_comments();
+       $response['supplemental'] = array(
+               'in_moderation' => $counts->moderated,
+               'i18n_comments_text' => sprintf(
+                       _n( '%s Comment', '%s Comments', $counts->approved ),
+                       number_format_i18n( $counts->approved )
+               ),
+               'i18n_moderation_text' => sprintf(
+                       _nx( '%s in moderation', '%s in moderation', $counts->moderated, 'comments' ),
+                       number_format_i18n( $counts->moderated )
+               )
+       );
+
+       if ( $comment_auto_approved ) {
+               $response['supplemental']['parent_approved'] = $parent->comment_ID;
+               $response['supplemental']['parent_post_id'] = $parent->comment_post_ID;
+       }
 
        $x = new WP_Ajax_Response();
        $x->add( $response );
@@ -1109,6 +1159,10 @@ function wp_ajax_add_menu_item() {
                                        $_object = get_post( $menu_item_data['menu-item-object-id'] );
                                break;
 
+                               case 'post_type_archive' :
+                                       $_object = get_post_type_object( $menu_item_data['menu-item-object'] );
+                               break;
+
                                case 'taxonomy' :
                                        $_object = get_term( $menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object'] );
                                break;
@@ -1177,16 +1231,16 @@ function wp_ajax_add_meta() {
 
                // If the post is an autodraft, save the post as a draft and then attempt to save the meta.
                if ( $post->post_status == 'auto-draft' ) {
-                       $save_POST = $_POST; // Backup $_POST
-                       $_POST = array(); // Make it empty for edit_post()
-                       $_POST['action'] = 'draft'; // Warning fix
-                       $_POST['post_ID'] = $pid;
-                       $_POST['post_type'] = $post->post_type;
-                       $_POST['post_status'] = 'draft';
+                       $post_data = array();
+                       $post_data['action'] = 'draft'; // Warning fix
+                       $post_data['post_ID'] = $pid;
+                       $post_data['post_type'] = $post->post_type;
+                       $post_data['post_status'] = 'draft';
                        $now = current_time('timestamp', 1);
-                       $_POST['post_title'] = sprintf( __( 'Draft created on %1$s at %2$s' ), date( get_option( 'date_format' ), $now ), date( get_option( 'time_format' ), $now ) );
+                       $post_data['post_title'] = sprintf( __( 'Draft created on %1$s at %2$s' ), date( get_option( 'date_format' ), $now ), date( get_option( 'time_format' ), $now ) );
 
-                       if ( $pid = edit_post() ) {
+                       $pid = edit_post( $post_data );
+                       if ( $pid ) {
                                if ( is_wp_error( $pid ) ) {
                                        $x = new WP_Ajax_Response( array(
                                                'what' => 'meta',
@@ -1194,7 +1248,7 @@ function wp_ajax_add_meta() {
                                        ) );
                                        $x->send();
                                }
-                               $_POST = $save_POST; // Now we can restore original $_POST again
+
                                if ( !$mid = add_meta( $pid ) )
                                        wp_die( __( 'Please provide a custom field value.' ) );
                        } else {
@@ -1285,7 +1339,11 @@ function wp_ajax_add_user( $action ) {
                'id' => $user_id,
                'data' => $wp_list_table->single_row( $user_object, '', $role ),
                'supplemental' => array(
-                       'show-link' => sprintf(__( 'User <a href="#%s">%s</a> added' ), "user-$user_id", $user_object->user_login),
+                       'show-link' => sprintf(
+                               /* translators: %s: the new user */
+                               __( 'User %s added' ),
+                               '<a href="#user-' . $user_id . '">' . $user_object->user_login . '</a>'
+                       ),
                        'role' => $role,
                )
        ) );
@@ -1504,7 +1562,7 @@ function wp_ajax_menu_quick_search() {
 function wp_ajax_get_permalink() {
        check_ajax_referer( 'getpermalink', 'getpermalinknonce' );
        $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0;
-       wp_die( add_query_arg( array( 'preview' => 'true' ), get_permalink( $post_id ) ) );
+       wp_die( get_preview_post_link( $post_id ) );
 }
 
 /**
@@ -1528,7 +1586,7 @@ function wp_ajax_sample_permalink() {
  * @global WP_List_Table $wp_list_table
  */
 function wp_ajax_inline_save() {
-       global $wp_list_table;
+       global $wp_list_table, $mode;
 
        check_ajax_referer( 'inlineeditnonce', '_inline_edit' );
 
@@ -1601,6 +1659,8 @@ function wp_ajax_inline_save() {
 
        $wp_list_table = _get_list_table( 'WP_Posts_List_Table', array( 'screen' => $_POST['screen'] ) );
 
+       $mode = $_POST['post_view'] === 'excerpt' ? 'excerpt' : 'list';
+
        $level = 0;
        $request_post = array( get_post( $_POST['post_ID'] ) );
        $parent = $request_post[0]->post_parent;
@@ -1824,6 +1884,10 @@ function wp_ajax_save_widget() {
 
                $sidebar = array_diff( $sidebar, array($widget_id) );
                $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1');
+
+               /** This action is documented in wp-admin/widgets.php */
+               do_action( 'delete_widget', $widget_id, $sidebar_id, $id_base );
+
        } elseif ( $settings && preg_match( '/__i__|%i%/', key($settings) ) ) {
                if ( !$multi_number )
                        wp_die( $error );
@@ -1875,6 +1939,41 @@ function wp_ajax_update_widget() {
        $wp_customize->widgets->wp_ajax_update_widget();
 }
 
+/**
+ * Ajax handler for removing inactive widgets.
+ *
+ * @since 4.4.0
+ */
+function wp_ajax_delete_inactive_widgets() {
+       check_ajax_referer( 'remove-inactive-widgets', 'removeinactivewidgets' );
+
+       if ( ! current_user_can( 'edit_theme_options' ) ) {
+               wp_die( -1 );
+       }
+
+       unset( $_POST['removeinactivewidgets'], $_POST['action'] );
+
+       do_action( 'load-widgets.php' );
+       do_action( 'widgets.php' );
+       do_action( 'sidebar_admin_setup' );
+
+       $sidebars_widgets = wp_get_sidebars_widgets();
+
+       foreach ( $sidebars_widgets['wp_inactive_widgets'] as $key => $widget_id ) {
+               $pieces = explode( '-', $widget_id );
+               $multi_number = array_pop( $pieces );
+               $id_base = implode( '-', $pieces );
+               $widget = get_option( 'widget_' . $id_base );
+               unset( $widget[$multi_number] );
+               update_option( 'widget_' . $id_base, $widget );
+               unset( $sidebars_widgets['wp_inactive_widgets'][$key] );
+       }
+
+       wp_set_sidebars_widgets( $sidebars_widgets );
+
+       wp_die();
+}
+
 /**
  * Ajax handler for uploading attachments
  *
@@ -1892,7 +1991,7 @@ function wp_ajax_upload_attachment() {
                echo wp_json_encode( array(
                        'success' => false,
                        'data'    => array(
-                               'message'  => __( "You don't have permission to upload files." ),
+                               'message'  => __( 'You do not have permission to upload files.' ),
                                'filename' => $_FILES['async-upload']['name'],
                        )
                ) );
@@ -2468,13 +2567,10 @@ function wp_ajax_send_attachment_to_editor() {
                }
        }
 
-       $rel = $url = '';
-       $html = isset( $attachment['post_title'] ) ? $attachment['post_title'] : '';
-       if ( ! empty( $attachment['url'] ) ) {
-               $url = $attachment['url'];
-               if ( strpos( $url, 'attachment_id') || get_attachment_link( $id ) == $url )
-                       $rel = ' rel="attachment wp-att-' . $id . '"';
-               $html = '<a href="' . esc_url( $url ) . '"' . $rel . '>' . $html . '</a>';
+       $rel = '';
+       $url = empty( $attachment['url'] ) ? '' : $attachment['url'];
+       if ( strpos( $url, 'attachment_id') || get_attachment_link( $id ) == $url ) {
+               $rel = 'attachment wp-att-' . $id;
        }
 
        remove_filter( 'media_send_to_editor', 'image_media_send_to_editor' );
@@ -2491,9 +2587,14 @@ function wp_ajax_send_attachment_to_editor() {
                }
 
                $title = ''; // We no longer insert title tags into <img> tags, as they are redundant.
-               $html = get_image_send_to_editor( $id, $caption, $title, $align, $url, (bool) $rel, $size, $alt );
+               $html = get_image_send_to_editor( $id, $caption, $title, $align, $url, $rel, $size, $alt );
        } elseif ( wp_attachment_is( 'video', $post ) || wp_attachment_is( 'audio', $post )  ) {
                $html = stripslashes_deep( $_POST['html'] );
+       } else {
+               $html = isset( $attachment['post_title'] ) ? $attachment['post_title'] : '';
+               if ( ! empty( $url ) ) {
+                       $html = '<a href="' . esc_url( $url ) . '"' . 'rel="' . esc_attr( $rel ) . '">' . $html . '</a>';
+               }
        }
 
        /** This filter is documented in wp-admin/includes/media.php */
@@ -2720,6 +2821,13 @@ function wp_ajax_query_themes() {
                'fields'   => $theme_field_defaults
        ) );
 
+       if ( isset( $args['browse'] ) && 'favorites' === $args['browse'] && ! isset( $args['user'] ) ) {
+               $user = get_user_option( 'wporg_favorites' );
+               if ( $user ) {
+                       $args['user'] = $user;
+               }
+       }
+
        $old_filter = isset( $args['browse'] ) ? $args['browse'] : 'search';
 
        /** This filter is documented in wp-admin/includes/class-wp-theme-install-list-table.php */
@@ -2742,7 +2850,8 @@ function wp_ajax_query_themes() {
                $theme->author      = wp_kses( $theme->author, $themes_allowedtags );
                $theme->version     = wp_kses( $theme->version, $themes_allowedtags );
                $theme->description = wp_kses( $theme->description, $themes_allowedtags );
-               $theme->num_ratings = sprintf( _n( '(based on %s rating)', '(based on %s ratings)', $theme->num_ratings ), number_format_i18n( $theme->num_ratings ) );
+               $theme->stars       = wp_star_rating( array( 'rating' => $theme->rating, 'type' => 'percent', 'number' => $theme->num_ratings, 'echo' => false ) );
+               $theme->num_ratings = number_format_i18n( $theme->num_ratings );
                $theme->preview_url = set_url_scheme( $theme->preview_url );
        }
 
@@ -3002,6 +3111,7 @@ function wp_ajax_update_plugin() {
                 * For now, surface some sort of error here.
                 */
                if ( $plugin_update_data === true ) {
+                       $status['error'] = __( 'Plugin update failed.' );
                        wp_send_json_error( $status );
                }
 
@@ -3028,6 +3138,10 @@ function wp_ajax_update_plugin() {
 
                wp_send_json_error( $status );
 
+       } else {
+               // An unhandled error occured
+               $status['error'] = __( 'Plugin update failed.' );
+               wp_send_json_error( $status );
        }
 }
 
@@ -3132,7 +3246,7 @@ function wp_ajax_crop_image() {
                        /** This filter is documented in wp-admin/custom-header.php */
                        $cropped = apply_filters( 'wp_create_file_in_uploads', $cropped, $attachment_id ); // For replication.
 
-                       $parent_url = get_post( $attachment_id )->guid;
+                       $parent_url = wp_get_attachment_url( $attachment_id );
                        $url        = str_replace( basename( $parent_url ), basename( $cropped ), $parent_url );
 
                        $size       = @getimagesize( $cropped );
@@ -3174,3 +3288,31 @@ function wp_ajax_crop_image() {
 
        wp_send_json_success( wp_prepare_attachment_for_js( $attachment_id ) );
 }
+
+/**
+ * Ajax handler for generating a password.
+ *
+ * @since 4.4.0
+ */
+function wp_ajax_generate_password() {
+       wp_send_json_success( wp_generate_password( 24 ) );
+}
+
+/**
+ * Ajax handler for saving the user's WordPress.org username.
+ *
+ * @since 4.4.0
+ */
+function wp_ajax_save_wporg_username() {
+       if ( ! current_user_can( 'install_themes' ) && ! current_user_can( 'install_plugins' ) ) {
+               wp_send_json_error();
+       }
+
+       $username = isset( $_REQUEST['username'] ) ? wp_unslash( $_REQUEST['username'] ) : false;
+
+       if ( ! $username ) {
+               wp_send_json_error();
+       }
+
+       wp_send_json_success( update_user_meta( get_current_user_id(), 'wporg_favorites', $username ) );
+}
index bdf1d7fa4026897e381aee4558eaba575c6ede6f..0d8502658835661ef1d05863bea44b69b101b8f2 100644 (file)
@@ -18,16 +18,21 @@ function add_link() {
 }
 
 /**
- * Update or insert a link using values provided in $_POST.
+ * Updates or inserts a link using values provided in $_POST.
  *
  * @since 2.0.0
  *
- * @param int $link_id Optional. ID of the link to edit.
+ * @param int $link_id Optional. ID of the link to edit. Default 0.
  * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
  */
 function edit_link( $link_id = 0 ) {
-       if ( !current_user_can( 'manage_links' ) )
-               wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       if ( ! current_user_can( 'manage_links' ) ) {
+               wp_die(
+                       '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                       '<p>' . __( 'You do not have sufficient permissions to edit the links for this site.' ) . '</p>',
+                       403
+               );
+       }
 
        $_POST['link_url'] = esc_html( $_POST['link_url'] );
        $_POST['link_url'] = esc_url($_POST['link_url']);
@@ -46,11 +51,11 @@ function edit_link( $link_id = 0 ) {
 }
 
 /**
- * Retrieve the default link for editing.
+ * Retrieves the default link for editing.
  *
  * @since 2.0.0
  *
- * @return stdClass Default link
+ * @return stdClass Default link object.
  */
 function get_default_link_to_edit() {
        $link = new stdClass;
@@ -70,14 +75,14 @@ function get_default_link_to_edit() {
 }
 
 /**
- * Delete link specified from database.
+ * Deletes a specified link from the database.
  *
  * @since 2.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $link_id ID of the link to delete
- * @return true
+ * @return true Always true.
  */
 function wp_delete_link( $link_id ) {
        global $wpdb;
@@ -93,6 +98,7 @@ function wp_delete_link( $link_id ) {
        wp_delete_object_term_relationships( $link_id, 'link_category' );
 
        $wpdb->delete( $wpdb->links, array( 'link_id' => $link_id ) );
+
        /**
         * Fires after a link has been deleted.
         *
@@ -121,26 +127,26 @@ function wp_get_link_cats( $link_id = 0 ) {
 }
 
 /**
- * Retrieve link data based on ID.
+ * Retrieves link data based on its ID.
  *
  * @since 2.0.0
  *
- * @param int $link_id ID of link to retrieve
- * @return object Link for editing
+ * @param int $link_id ID of link to retrieve.
+ * @return object Link object for editing.
  */
 function get_link_to_edit( $link_id ) {
        return get_bookmark( $link_id, OBJECT, 'edit' );
 }
 
 /**
- * This function inserts/updates links into/in the database.
+ * Inserts/updates links into/in the database.
  *
  * @since 2.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param array $linkdata Elements that make up the link to insert.
- * @param bool  $wp_error Optional. If true return WP_Error object on failure.
+ * @param bool  $wp_error Optional. Whether to return a WP_Error object on failure. Default false.
  * @return int|WP_Error Value 0 or WP_Error on failure. The link ID on success.
  */
 function wp_insert_link( $linkdata, $wp_error = false ) {
@@ -183,7 +189,7 @@ function wp_insert_link( $linkdata, $wp_error = false ) {
        $link_rel         = ( ! empty( $r['link_rel'] ) ) ? $r['link_rel'] : '';
        $link_category    = ( ! empty( $r['link_category'] ) ) ? $r['link_category'] : array();
 
-       // Make sure we set a valid category
+       // Make sure we set a valid category.
        if ( ! is_array( $link_category ) || 0 == count( $link_category ) ) {
                $link_category = array( get_option( 'default_link_category' ) );
        }
@@ -238,8 +244,8 @@ function wp_insert_link( $linkdata, $wp_error = false ) {
  *
  * @since 2.1.0
  *
- * @param int $link_id ID of link to update
- * @param array $link_categories Array of categories to
+ * @param int   $link_id         ID of the link to update.
+ * @param array $link_categories Array of link categories to add the link to.
  */
 function wp_set_link_cats( $link_id = 0, $link_categories = array() ) {
        // If $link_categories isn't already an array, make it one:
@@ -255,7 +261,7 @@ function wp_set_link_cats( $link_id = 0, $link_categories = array() ) {
 }
 
 /**
- * Update a link in the database.
+ * Updates a link in the database.
  *
  * @since 2.0.0
  *
@@ -285,6 +291,8 @@ function wp_update_link( $linkdata ) {
 }
 
 /**
+ * Outputs the 'disabled' message for the WordPress Link Manager.
+ *
  * @since 3.5.0
  * @access private
  *
index 7146c9626d6ddfa754b8c7a9fbe2307182a4d908..28e56779f97edd2607b1c578ff6ef39cdaac05b3 100644 (file)
@@ -110,7 +110,7 @@ class ftp extends ftp_base {
                                $this->_data_close();
                                return FALSE;
                        }
-                       $ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message));
+                       $ip_port = explode(",", preg_replace("/^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*$/s", "\\1", $this->_message));
                        $this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3];
             $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]);
                        $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport);
index 6bf94ebd946d2f008908d90a4995f0fe8ce2e0fe..c71205e9219714ea509f4897e21de6620cf9371e 100644 (file)
@@ -131,9 +131,9 @@ class ftp extends ftp_base {
                                $this->_data_close();
                                return FALSE;
                        }
-                       $ip_port = explode(",", ereg_replace("^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*".CRLF."$", "\\1", $this->_message));
+                       $ip_port = explode(",", preg_replace("/^.+ \\(?([0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]{1,3},[0-9]+,[0-9]+)\\)?.*$/s", "\\1", $this->_message));
                        $this->_datahost=$ip_port[0].".".$ip_port[1].".".$ip_port[2].".".$ip_port[3];
-            $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]);
+                       $this->_dataport=(((int)$ip_port[4])<<8) + ((int)$ip_port[5]);
                        $this->SendMSG("Connecting to ".$this->_datahost.":".$this->_dataport);
                        if(!@socket_connect($this->_ftp_data_sock, $this->_datahost, $this->_dataport)) {
                                $this->PushError("_data_prepare","socket_connect", socket_strerror(socket_last_error($this->_ftp_data_sock)));
index c9d965649c3791d79323559cad2995b8df70264a..4f75e409f8faeaf07933a3be57617dac8b157db7 100644 (file)
@@ -380,7 +380,7 @@ class ftp_base {
        function pwd() {
                if(!$this->_exec("PWD", "pwd")) return FALSE;
                if(!$this->_checkCode()) return FALSE;
-               return ereg_replace("^[0-9]{3} \"(.+)\".+", "\\1", $this->_message);
+               return preg_replace("/^[0-9]{3} \"(.+)\".*$/s", "\\1", $this->_message);
        }
 
        function cdup() {
@@ -424,7 +424,7 @@ class ftp_base {
                }
                if(!$this->_exec("SIZE ".$pathname, "filesize")) return FALSE;
                if(!$this->_checkCode()) return FALSE;
-               return ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message);
+               return preg_replace("/^[0-9]{3} ([0-9]+).*$/s", "\\1", $this->_message);
        }
 
        function abort() {
@@ -444,7 +444,7 @@ class ftp_base {
                }
                if(!$this->_exec("MDTM ".$pathname, "mdtm")) return FALSE;
                if(!$this->_checkCode()) return FALSE;
-               $mdtm = ereg_replace("^[0-9]{3} ([0-9]+)".CRLF, "\\1", $this->_message);
+               $mdtm = preg_replace("/^[0-9]{3} ([0-9]+).*$/s", "\\1", $this->_message);
                $date = sscanf($mdtm, "%4d%2d%2d%2d%2d%2d");
                $timestamp = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]);
                return $timestamp;
@@ -818,8 +818,8 @@ class ftp_base {
        function glob_regexp($pattern,$probe) {
                $sensitive=(PHP_OS!='WIN32');
                return ($sensitive?
-                       ereg($pattern,$probe):
-                       eregi($pattern,$probe)
+                       preg_match( '/' . preg_quote( $pattern, '/' ) . '/', $probe ) : 
+                       preg_match( '/' . preg_quote( $pattern, '/' ) . '/i', $probe )
                );
        }
 
diff --git a/wp-admin/includes/class-walker-category-checklist.php b/wp-admin/includes/class-walker-category-checklist.php
new file mode 100644 (file)
index 0000000..cd38bfc
--- /dev/null
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Taxonomy API: Walker_Category_Checklist class
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+/**
+ * Core walker class to output an unordered list of category checkbox input elements.
+ *
+ * @since 2.5.1
+ *
+ * @see Walker
+ * @see wp_category_checklist()
+ * @see wp_terms_checklist()
+ */
+class Walker_Category_Checklist extends Walker {
+       public $tree_type = 'category';
+       public $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
+
+       /**
+        * Starts the list before the elements are added.
+        *
+        * @see Walker:start_lvl()
+        *
+        * @since 2.5.1
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param int    $depth  Depth of category. Used for tab indentation.
+        * @param array  $args   An array of arguments. @see wp_terms_checklist()
+        */
+       public function start_lvl( &$output, $depth = 0, $args = array() ) {
+               $indent = str_repeat("\t", $depth);
+               $output .= "$indent<ul class='children'>\n";
+       }
+
+       /**
+        * Ends the list of after the elements are added.
+        *
+        * @see Walker::end_lvl()
+        *
+        * @since 2.5.1
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param int    $depth  Depth of category. Used for tab indentation.
+        * @param array  $args   An array of arguments. @see wp_terms_checklist()
+        */
+       public function end_lvl( &$output, $depth = 0, $args = array() ) {
+               $indent = str_repeat("\t", $depth);
+               $output .= "$indent</ul>\n";
+       }
+
+       /**
+        * Start the element output.
+        *
+        * @see Walker::start_el()
+        *
+        * @since 2.5.1
+        *
+        * @param string $output   Passed by reference. Used to append additional content.
+        * @param object $category The current term object.
+        * @param int    $depth    Depth of the term in reference to parents. Default 0.
+        * @param array  $args     An array of arguments. @see wp_terms_checklist()
+        * @param int    $id       ID of the current term.
+        */
+       public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
+               if ( empty( $args['taxonomy'] ) ) {
+                       $taxonomy = 'category';
+               } else {
+                       $taxonomy = $args['taxonomy'];
+               }
+
+               if ( $taxonomy == 'category' ) {
+                       $name = 'post_category';
+               } else {
+                       $name = 'tax_input[' . $taxonomy . ']';
+               }
+
+               $args['popular_cats'] = empty( $args['popular_cats'] ) ? array() : $args['popular_cats'];
+               $class = in_array( $category->term_id, $args['popular_cats'] ) ? ' class="popular-category"' : '';
+
+               $args['selected_cats'] = empty( $args['selected_cats'] ) ? array() : $args['selected_cats'];
+
+               if ( ! empty( $args['list_only'] ) ) {
+                       $aria_cheched = 'false';
+                       $inner_class = 'category';
+
+                       if ( in_array( $category->term_id, $args['selected_cats'] ) ) {
+                               $inner_class .= ' selected';
+                               $aria_cheched = 'true';
+                       }
+
+                       /** This filter is documented in wp-includes/category-template.php */
+                       $output .= "\n" . '<li' . $class . '>' .
+                               '<div class="' . $inner_class . '" data-term-id=' . $category->term_id .
+                               ' tabindex="0" role="checkbox" aria-checked="' . $aria_cheched . '">' .
+                               esc_html( apply_filters( 'the_category', $category->name ) ) . '</div>';
+               } else {
+                       /** This filter is documented in wp-includes/category-template.php */
+                       $output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" .
+                               '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' .
+                               checked( in_array( $category->term_id, $args['selected_cats'] ), true, false ) .
+                               disabled( empty( $args['disabled'] ), false, false ) . ' /> ' .
+                               esc_html( apply_filters( 'the_category', $category->name ) ) . '</label>';
+               }
+       }
+
+       /**
+        * Ends the element output, if needed.
+        *
+        * @see Walker::end_el()
+        *
+        * @since 2.5.1
+        *
+        * @param string $output   Passed by reference. Used to append additional content.
+        * @param object $category The current term object.
+        * @param int    $depth    Depth of the term in reference to parents. Default 0.
+        * @param array  $args     An array of arguments. @see wp_terms_checklist()
+        */
+       public function end_el( &$output, $category, $depth = 0, $args = array() ) {
+               $output .= "</li>\n";
+       }
+}
diff --git a/wp-admin/includes/class-walker-nav-menu-checklist.php b/wp-admin/includes/class-walker-nav-menu-checklist.php
new file mode 100644 (file)
index 0000000..8817601
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+/**
+ * Navigation Menu API: Walker_Nav_Menu_Checklist class
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+/**
+ * Create HTML list of nav menu input items.
+ *
+ * @since 3.0.0
+ * @uses Walker_Nav_Menu
+ */
+class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu {
+       /**
+        *
+        * @param array $fields
+        */
+       public function __construct( $fields = false ) {
+               if ( $fields ) {
+                       $this->db_fields = $fields;
+               }
+       }
+
+       /**
+        * Starts the list before the elements are added.
+        *
+        * @see Walker_Nav_Menu::start_lvl()
+        *
+        * @since 3.0.0
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param int    $depth  Depth of page. Used for padding.
+        * @param array  $args   Not used.
+        */
+       public function start_lvl( &$output, $depth = 0, $args = array() ) {
+               $indent = str_repeat( "\t", $depth );
+               $output .= "\n$indent<ul class='children'>\n";
+       }
+
+       /**
+        * Ends the list of after the elements are added.
+        *
+        * @see Walker_Nav_Menu::end_lvl()
+        *
+        * @since 3.0.0
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param int    $depth  Depth of page. Used for padding.
+        * @param array  $args   Not used.
+        */
+       public function end_lvl( &$output, $depth = 0, $args = array() ) {
+               $indent = str_repeat( "\t", $depth );
+               $output .= "\n$indent</ul>";
+       }
+
+       /**
+        * Start the element output.
+        *
+        * @see Walker_Nav_Menu::start_el()
+        *
+        * @since 3.0.0
+        *
+        * @global int $_nav_menu_placeholder
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param object $item   Menu item data object.
+        * @param int    $depth  Depth of menu item. Used for padding.
+        * @param array  $args   Not used.
+        * @param int    $id     Not used.
+        */
+       public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
+               global $_nav_menu_placeholder;
+
+               $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1;
+               $possible_object_id = isset( $item->post_type ) && 'nav_menu_item' == $item->post_type ? $item->object_id : $_nav_menu_placeholder;
+               $possible_db_id = ( ! empty( $item->ID ) ) && ( 0 < $possible_object_id ) ? (int) $item->ID : 0;
+
+               $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
+
+               $output .= $indent . '<li>';
+               $output .= '<label class="menu-item-title">';
+               $output .= '<input type="checkbox" class="menu-item-checkbox';
+
+               if ( ! empty( $item->front_or_home ) )
+                       $output .= ' add-to-top';
+
+               $output .= '" name="menu-item[' . $possible_object_id . '][menu-item-object-id]" value="'. esc_attr( $item->object_id ) .'" /> ';
+
+               if ( ! empty( $item->label ) ) {
+                       $title = $item->label;
+               } elseif ( isset( $item->post_type ) ) {
+                       /** This filter is documented in wp-includes/post-template.php */
+                       $title = apply_filters( 'the_title', $item->post_title, $item->ID );
+                       if ( ! empty( $item->front_or_home ) && _x( 'Home', 'nav menu home label' ) !== $title )
+                               $title = sprintf( _x( 'Home: %s', 'nav menu front page title' ), $title );
+               }
+
+               $output .= isset( $title ) ? esc_html( $title ) : esc_html( $item->title );
+               $output .= '</label>';
+
+               // Menu item hidden fields
+               $output .= '<input type="hidden" class="menu-item-db-id" name="menu-item[' . $possible_object_id . '][menu-item-db-id]" value="' . $possible_db_id . '" />';
+               $output .= '<input type="hidden" class="menu-item-object" name="menu-item[' . $possible_object_id . '][menu-item-object]" value="'. esc_attr( $item->object ) .'" />';
+               $output .= '<input type="hidden" class="menu-item-parent-id" name="menu-item[' . $possible_object_id . '][menu-item-parent-id]" value="'. esc_attr( $item->menu_item_parent ) .'" />';
+               $output .= '<input type="hidden" class="menu-item-type" name="menu-item[' . $possible_object_id . '][menu-item-type]" value="'. esc_attr( $item->type ) .'" />';
+               $output .= '<input type="hidden" class="menu-item-title" name="menu-item[' . $possible_object_id . '][menu-item-title]" value="'. esc_attr( $item->title ) .'" />';
+               $output .= '<input type="hidden" class="menu-item-url" name="menu-item[' . $possible_object_id . '][menu-item-url]" value="'. esc_attr( $item->url ) .'" />';
+               $output .= '<input type="hidden" class="menu-item-target" name="menu-item[' . $possible_object_id . '][menu-item-target]" value="'. esc_attr( $item->target ) .'" />';
+               $output .= '<input type="hidden" class="menu-item-attr_title" name="menu-item[' . $possible_object_id . '][menu-item-attr_title]" value="'. esc_attr( $item->attr_title ) .'" />';
+               $output .= '<input type="hidden" class="menu-item-classes" name="menu-item[' . $possible_object_id . '][menu-item-classes]" value="'. esc_attr( implode( ' ', $item->classes ) ) .'" />';
+               $output .= '<input type="hidden" class="menu-item-xfn" name="menu-item[' . $possible_object_id . '][menu-item-xfn]" value="'. esc_attr( $item->xfn ) .'" />';
+       }
+
+} // Walker_Nav_Menu_Checklist
diff --git a/wp-admin/includes/class-walker-nav-menu-edit.php b/wp-admin/includes/class-walker-nav-menu-edit.php
new file mode 100644 (file)
index 0000000..105e613
--- /dev/null
@@ -0,0 +1,241 @@
+<?php
+/**
+ * Navigation Menu API: Walker_Nav_Menu_Edit class
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+/**
+ * Create HTML list of nav menu input items.
+ *
+ * @package WordPress
+ * @since 3.0.0
+ * @uses Walker_Nav_Menu
+ */
+class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
+       /**
+        * Starts the list before the elements are added.
+        *
+        * @see Walker_Nav_Menu::start_lvl()
+        *
+        * @since 3.0.0
+        *
+        * @param string $output Passed by reference.
+        * @param int    $depth  Depth of menu item. Used for padding.
+        * @param array  $args   Not used.
+        */
+       public function start_lvl( &$output, $depth = 0, $args = array() ) {}
+
+       /**
+        * Ends the list of after the elements are added.
+        *
+        * @see Walker_Nav_Menu::end_lvl()
+        *
+        * @since 3.0.0
+        *
+        * @param string $output Passed by reference.
+        * @param int    $depth  Depth of menu item. Used for padding.
+        * @param array  $args   Not used.
+        */
+       public function end_lvl( &$output, $depth = 0, $args = array() ) {}
+
+       /**
+        * Start the element output.
+        *
+        * @see Walker_Nav_Menu::start_el()
+        * @since 3.0.0
+        *
+        * @global int $_wp_nav_menu_max_depth
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param object $item   Menu item data object.
+        * @param int    $depth  Depth of menu item. Used for padding.
+        * @param array  $args   Not used.
+        * @param int    $id     Not used.
+        */
+       public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
+               global $_wp_nav_menu_max_depth;
+               $_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
+
+               ob_start();
+               $item_id = esc_attr( $item->ID );
+               $removed_args = array(
+                       'action',
+                       'customlink-tab',
+                       'edit-menu-item',
+                       'menu-item',
+                       'page-tab',
+                       '_wpnonce',
+               );
+
+               $original_title = '';
+               if ( 'taxonomy' == $item->type ) {
+                       $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
+                       if ( is_wp_error( $original_title ) )
+                               $original_title = false;
+               } elseif ( 'post_type' == $item->type ) {
+                       $original_object = get_post( $item->object_id );
+                       $original_title = get_the_title( $original_object->ID );
+               } elseif ( 'post_type_archive' == $item->type ) {
+                       $original_object = get_post_type_object( $item->object );
+                       $original_title = $original_object->labels->archives;
+               }
+
+               $classes = array(
+                       'menu-item menu-item-depth-' . $depth,
+                       'menu-item-' . esc_attr( $item->object ),
+                       'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'),
+               );
+
+               $title = $item->title;
+
+               if ( ! empty( $item->_invalid ) ) {
+                       $classes[] = 'menu-item-invalid';
+                       /* translators: %s: title of menu item which is invalid */
+                       $title = sprintf( __( '%s (Invalid)' ), $item->title );
+               } elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) {
+                       $classes[] = 'pending';
+                       /* translators: %s: title of menu item in draft status */
+                       $title = sprintf( __('%s (Pending)'), $item->title );
+               }
+
+               $title = ( ! isset( $item->label ) || '' == $item->label ) ? $title : $item->label;
+
+               $submenu_text = '';
+               if ( 0 == $depth )
+                       $submenu_text = 'style="display: none;"';
+
+               ?>
+               <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes ); ?>">
+                       <div class="menu-item-bar">
+                               <div class="menu-item-handle">
+                                       <span class="item-title"><span class="menu-item-title"><?php echo esc_html( $title ); ?></span> <span class="is-submenu" <?php echo $submenu_text; ?>><?php _e( 'sub item' ); ?></span></span>
+                                       <span class="item-controls">
+                                               <span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
+                                               <span class="item-order hide-if-js">
+                                                       <a href="<?php
+                                                               echo wp_nonce_url(
+                                                                       add_query_arg(
+                                                                               array(
+                                                                                       'action' => 'move-up-menu-item',
+                                                                                       'menu-item' => $item_id,
+                                                                               ),
+                                                                               remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
+                                                                       ),
+                                                                       'move-menu_item'
+                                                               );
+                                                       ?>" class="item-move-up"><abbr title="<?php esc_attr_e('Move up'); ?>">&#8593;</abbr></a>
+                                                       |
+                                                       <a href="<?php
+                                                               echo wp_nonce_url(
+                                                                       add_query_arg(
+                                                                               array(
+                                                                                       'action' => 'move-down-menu-item',
+                                                                                       'menu-item' => $item_id,
+                                                                               ),
+                                                                               remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
+                                                                       ),
+                                                                       'move-menu_item'
+                                                               );
+                                                       ?>" class="item-move-down"><abbr title="<?php esc_attr_e('Move down'); ?>">&#8595;</abbr></a>
+                                               </span>
+                                               <a class="item-edit" id="edit-<?php echo $item_id; ?>" title="<?php esc_attr_e('Edit Menu Item'); ?>" href="<?php
+                                                       echo ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? admin_url( 'nav-menus.php' ) : add_query_arg( 'edit-menu-item', $item_id, remove_query_arg( $removed_args, admin_url( 'nav-menus.php#menu-item-settings-' . $item_id ) ) );
+                                               ?>"><?php _e( 'Edit Menu Item' ); ?></a>
+                                       </span>
+                               </div>
+                       </div>
+
+                       <div class="menu-item-settings" id="menu-item-settings-<?php echo $item_id; ?>">
+                               <?php if ( 'custom' == $item->type ) : ?>
+                                       <p class="field-url description description-wide">
+                                               <label for="edit-menu-item-url-<?php echo $item_id; ?>">
+                                                       <?php _e( 'URL' ); ?><br />
+                                                       <input type="text" id="edit-menu-item-url-<?php echo $item_id; ?>" class="widefat code edit-menu-item-url" name="menu-item-url[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->url ); ?>" />
+                                               </label>
+                                       </p>
+                               <?php endif; ?>
+                               <p class="description description-wide">
+                                       <label for="edit-menu-item-title-<?php echo $item_id; ?>">
+                                               <?php _e( 'Navigation Label' ); ?><br />
+                                               <input type="text" id="edit-menu-item-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->title ); ?>" />
+                                       </label>
+                               </p>
+                               <p class="field-title-attribute description description-wide">
+                                       <label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
+                                               <?php _e( 'Title Attribute' ); ?><br />
+                                               <input type="text" id="edit-menu-item-attr-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->post_excerpt ); ?>" />
+                                       </label>
+                               </p>
+                               <p class="field-link-target description">
+                                       <label for="edit-menu-item-target-<?php echo $item_id; ?>">
+                                               <input type="checkbox" id="edit-menu-item-target-<?php echo $item_id; ?>" value="_blank" name="menu-item-target[<?php echo $item_id; ?>]"<?php checked( $item->target, '_blank' ); ?> />
+                                               <?php _e( 'Open link in a new tab' ); ?>
+                                       </label>
+                               </p>
+                               <p class="field-css-classes description description-thin">
+                                       <label for="edit-menu-item-classes-<?php echo $item_id; ?>">
+                                               <?php _e( 'CSS Classes (optional)' ); ?><br />
+                                               <input type="text" id="edit-menu-item-classes-<?php echo $item_id; ?>" class="widefat code edit-menu-item-classes" name="menu-item-classes[<?php echo $item_id; ?>]" value="<?php echo esc_attr( implode(' ', $item->classes ) ); ?>" />
+                                       </label>
+                               </p>
+                               <p class="field-xfn description description-thin">
+                                       <label for="edit-menu-item-xfn-<?php echo $item_id; ?>">
+                                               <?php _e( 'Link Relationship (XFN)' ); ?><br />
+                                               <input type="text" id="edit-menu-item-xfn-<?php echo $item_id; ?>" class="widefat code edit-menu-item-xfn" name="menu-item-xfn[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->xfn ); ?>" />
+                                       </label>
+                               </p>
+                               <p class="field-description description description-wide">
+                                       <label for="edit-menu-item-description-<?php echo $item_id; ?>">
+                                               <?php _e( 'Description' ); ?><br />
+                                               <textarea id="edit-menu-item-description-<?php echo $item_id; ?>" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description[<?php echo $item_id; ?>]"><?php echo esc_html( $item->description ); // textarea_escaped ?></textarea>
+                                               <span class="description"><?php _e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
+                                       </label>
+                               </p>
+
+                               <p class="field-move hide-if-no-js description description-wide">
+                                       <label>
+                                               <span><?php _e( 'Move' ); ?></span>
+                                               <a href="#" class="menus-move menus-move-up" data-dir="up"><?php _e( 'Up one' ); ?></a>
+                                               <a href="#" class="menus-move menus-move-down" data-dir="down"><?php _e( 'Down one' ); ?></a>
+                                               <a href="#" class="menus-move menus-move-left" data-dir="left"></a>
+                                               <a href="#" class="menus-move menus-move-right" data-dir="right"></a>
+                                               <a href="#" class="menus-move menus-move-top" data-dir="top"><?php _e( 'To the top' ); ?></a>
+                                       </label>
+                               </p>
+
+                               <div class="menu-item-actions description-wide submitbox">
+                                       <?php if ( 'custom' != $item->type && $original_title !== false ) : ?>
+                                               <p class="link-to-original">
+                                                       <?php printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
+                                               </p>
+                                       <?php endif; ?>
+                                       <a class="item-delete submitdelete deletion" id="delete-<?php echo $item_id; ?>" href="<?php
+                                       echo wp_nonce_url(
+                                               add_query_arg(
+                                                       array(
+                                                               'action' => 'delete-menu-item',
+                                                               'menu-item' => $item_id,
+                                                       ),
+                                                       admin_url( 'nav-menus.php' )
+                                               ),
+                                               'delete-menu_item_' . $item_id
+                                       ); ?>"><?php _e( 'Remove' ); ?></a> <span class="meta-sep hide-if-no-js"> | </span> <a class="item-cancel submitcancel hide-if-no-js" id="cancel-<?php echo $item_id; ?>" href="<?php echo esc_url( add_query_arg( array( 'edit-menu-item' => $item_id, 'cancel' => time() ), admin_url( 'nav-menus.php' ) ) );
+                                               ?>#menu-item-settings-<?php echo $item_id; ?>"><?php _e('Cancel'); ?></a>
+                               </div>
+
+                               <input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" />
+                               <input class="menu-item-data-object-id" type="hidden" name="menu-item-object-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object_id ); ?>" />
+                               <input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
+                               <input class="menu-item-data-parent-id" type="hidden" name="menu-item-parent-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_item_parent ); ?>" />
+                               <input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
+                               <input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
+                       </div><!-- .menu-item-settings-->
+                       <ul class="menu-item-transport"></ul>
+               <?php
+               $output .= ob_get_clean();
+       }
+
+} // Walker_Nav_Menu_Edit
index fcfcd1e36bc6b76e2a3b355f5e3bf212a3cf5fa4..a7c6d869cf6bdb7dd80e74ce2ccbfb5372da42e6 100644 (file)
@@ -1,19 +1,19 @@
 <?php
 /**
- * Comments and Post Comments List Table classes.
+ * List Table API: WP_Comments_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
  * @since 3.1.0
  */
 
 /**
- * Comments List Table class.
+ * Core class used to implement displaying comments in a list table.
  *
- * @package WordPress
- * @subpackage List_Table
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Table
  */
 class WP_Comments_List_Table extends WP_List_Table {
 
@@ -42,8 +42,9 @@ class WP_Comments_List_Table extends WP_List_Table {
 
                $post_id = isset( $_REQUEST['p'] ) ? absint( $_REQUEST['p'] ) : 0;
 
-               if ( get_option('show_avatars') )
-                       add_filter( 'comment_author', 'floated_admin_avatar' );
+               if ( get_option( 'show_avatars' ) ) {
+                       add_filter( 'comment_author', array( $this, 'floated_admin_avatar' ), 10, 2 );
+               }
 
                parent::__construct( array(
                        'plural' => 'comments',
@@ -53,6 +54,12 @@ class WP_Comments_List_Table extends WP_List_Table {
                ) );
        }
 
+       public function floated_admin_avatar( $name, $comment_ID ) {
+               $comment = get_comment( $comment_ID );
+               $avatar = get_avatar( $comment, 32, 'mystery' );
+               return "$avatar $name";
+       }
+
        /**
         * @return bool
         */
@@ -176,10 +183,11 @@ class WP_Comments_List_Table extends WP_List_Table {
        public function no_items() {
                global $comment_status;
 
-               if ( 'moderated' == $comment_status )
+               if ( 'moderated' === $comment_status ) {
                        _e( 'No comments awaiting moderation.' );
-               else
+               } else {
                        _e( 'No comments found.' );
+               }
        }
 
        /**
@@ -196,22 +204,51 @@ class WP_Comments_List_Table extends WP_List_Table {
                //, number_format_i18n($num_comments->moderated) ), "<span class='comment-count'>" . number_format_i18n($num_comments->moderated) . "</span>"),
                //, number_format_i18n($num_comments->spam) ), "<span class='spam-comment-count'>" . number_format_i18n($num_comments->spam) . "</span>")
                $stati = array(
-                               'all' => _nx_noop('All', 'All', 'comments'), // singular not used
-                               'moderated' => _n_noop('Pending <span class="count">(<span class="pending-count">%s</span>)</span>', 'Pending <span class="count">(<span class="pending-count">%s</span>)</span>'),
-                               'approved' => _n_noop('Approved', 'Approved'), // singular not used
-                               'spam' => _n_noop('Spam <span class="count">(<span class="spam-count">%s</span>)</span>', 'Spam <span class="count">(<span class="spam-count">%s</span>)</span>'),
-                               'trash' => _n_noop('Trash <span class="count">(<span class="trash-count">%s</span>)</span>', 'Trash <span class="count">(<span class="trash-count">%s</span>)</span>')
-                       );
+                       /* translators: %s: all comments count */
+                       'all' => _nx_noop(
+                               'All <span class="count">(%s)</span>',
+                               'All <span class="count">(%s)</span>',
+                               'comments'
+                       ), // singular not used
+
+                       /* translators: %s: pending comments count */
+                       'moderated' => _nx_noop(
+                               'Pending <span class="count">(%s)</span>',
+                               'Pending <span class="count">(%s)</span>',
+                               'comments'
+                       ),
+
+                       /* translators: %s: approved comments count */
+                       'approved' => _nx_noop(
+                               'Approved <span class="count">(%s)</span>',
+                               'Approved <span class="count">(%s)</span>',
+                               'comments'
+                       ),
+
+                       /* translators: %s: spam comments count */
+                       'spam' => _nx_noop(
+                               'Spam <span class="count">(%s)</span>',
+                               'Spam <span class="count">(%s)</span>',
+                               'comments'
+                       ),
+
+                       /* translators: %s: trashed comments count */
+                       'trash' => _nx_noop(
+                               'Trash <span class="count">(%s)</span>',
+                               'Trash <span class="count">(%s)</span>',
+                               'comments'
+                       )
+               );
 
                if ( !EMPTY_TRASH_DAYS )
                        unset($stati['trash']);
 
-               $link = 'edit-comments.php';
+               $link = admin_url( 'edit-comments.php' );
                if ( !empty($comment_type) && 'all' != $comment_type )
                        $link = add_query_arg( 'comment_type', $comment_type, $link );
 
                foreach ( $stati as $status => $label ) {
-                       $class = ( $status == $comment_status ) ? ' class="current"' : '';
+                       $class = ( $status === $comment_status ) ? ' class="current"' : '';
 
                        if ( !isset( $num_comments->$status ) )
                                $num_comments->$status = 10;
@@ -223,9 +260,12 @@ class WP_Comments_List_Table extends WP_List_Table {
                        if ( !empty( $_REQUEST['s'] ) )
                                $link = add_query_arg( 's', esc_attr( wp_unslash( $_REQUEST['s'] ) ), $link );
                        */
-                       $status_links[$status] = "<a href='$link'$class>" . sprintf(
+                       $status_links[ $status ] = "<a href='$link'$class>" . sprintf(
                                translate_nooped_plural( $label, $num_comments->$status ),
-                               number_format_i18n( $num_comments->$status )
+                               sprintf( '<span class="%s-count">%s</span>',
+                                       ( 'moderated' === $status ) ? 'pending' : $status,
+                                       number_format_i18n( $num_comments->$status )
+                               )
                        ) . '</a>';
                }
 
@@ -257,10 +297,11 @@ class WP_Comments_List_Table extends WP_List_Table {
                if ( in_array( $comment_status, array( 'all', 'moderated', 'approved', 'trash' ) ) )
                        $actions['spam'] = _x( 'Mark as Spam', 'comment' );
 
-               if ( 'trash' == $comment_status )
+               if ( 'trash' === $comment_status ) {
                        $actions['untrash'] = __( 'Restore' );
-               elseif ( 'spam' == $comment_status )
+               } elseif ( 'spam' === $comment_status ) {
                        $actions['unspam'] = _x( 'Not Spam', 'comment' );
+               }
 
                if ( in_array( $comment_status, array( 'trash', 'spam' ) ) || !EMPTY_TRASH_DAYS )
                        $actions['delete'] = __( 'Delete Permanently' );
@@ -282,7 +323,7 @@ class WP_Comments_List_Table extends WP_List_Table {
 ?>
                <div class="alignleft actions">
 <?php
-               if ( 'top' == $which ) {
+               if ( 'top' === $which ) {
 ?>
                        <label class="screen-reader-text" for="filter-by-comment-type"><?php _e( 'Filter by comment type' ); ?></label>
                        <select id="filter-by-comment-type" name="comment_type">
@@ -314,9 +355,9 @@ class WP_Comments_List_Table extends WP_List_Table {
                        submit_button( __( 'Filter' ), 'button', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
                }
 
-               if ( ( 'spam' == $comment_status || 'trash' == $comment_status ) && current_user_can( 'moderate_comments' ) ) {
+               if ( ( 'spam' === $comment_status || 'trash' === $comment_status ) && current_user_can( 'moderate_comments' ) ) {
                        wp_nonce_field( 'bulk-destroy', '_destroy_nonce' );
-                       $title = ( 'spam' == $comment_status ) ? esc_attr__( 'Empty Spam' ) : esc_attr__( 'Empty Trash' );
+                       $title = ( 'spam' === $comment_status ) ? esc_attr__( 'Empty Spam' ) : esc_attr__( 'Empty Trash' );
                        submit_button( $title, 'apply', 'delete_all', false );
                }
                /**
@@ -362,6 +403,8 @@ class WP_Comments_List_Table extends WP_List_Table {
                        $columns['response'] = __( 'In Response To' );
                }
 
+               $columns['date'] = _x( 'Submitted On', 'column name' );
+
                return $columns;
        }
 
@@ -372,7 +415,8 @@ class WP_Comments_List_Table extends WP_List_Table {
        protected function get_sortable_columns() {
                return array(
                        'author'   => 'comment_author',
-                       'response' => 'comment_post_ID'
+                       'response' => 'comment_post_ID',
+                       'date'     => 'comment_date'
                );
        }
 
@@ -396,6 +440,8 @@ class WP_Comments_List_Table extends WP_List_Table {
 
                $this->display_tablenav( 'top' );
 
+               $this->screen->render_screen_reader_content( 'heading_list' );
+
 ?>
 <table class="wp-list-table <?php echo implode( ' ', $this->get_table_classes() ); ?>">
        <thead>
@@ -409,7 +455,10 @@ class WP_Comments_List_Table extends WP_List_Table {
        </tbody>
 
        <tbody id="the-extra-comment-list" data-wp-lists="list:comment" style="display: none;">
-               <?php $this->items = $this->extra_items; $this->display_rows(); ?>
+               <?php
+                       $this->items = $this->extra_items;
+                       $this->display_rows_or_placeholder();
+               ?>
        </tbody>
 
        <tfoot>
@@ -425,29 +474,32 @@ class WP_Comments_List_Table extends WP_List_Table {
        }
 
        /**
+        * @global WP_Post    $post
+        * @global WP_Comment $comment
         *
-        * @global WP_Post $post
-        * @global object  $comment
-        *
-        * @param object $a_comment
+        * @param WP_Comment $item
         */
-       public function single_row( $a_comment ) {
+       public function single_row( $item ) {
                global $post, $comment;
 
-               $comment = $a_comment;
-               $the_comment_class = wp_get_comment_status( $comment->comment_ID );
+               $comment = $item;
+
+               $the_comment_class = wp_get_comment_status( $comment );
                if ( ! $the_comment_class ) {
                        $the_comment_class = '';
                }
-               $the_comment_class = join( ' ', get_comment_class( $the_comment_class, $comment->comment_ID, $comment->comment_post_ID ) );
-
-               $post = get_post( $comment->comment_post_ID );
+               $the_comment_class = join( ' ', get_comment_class( $the_comment_class, $comment, $comment->comment_post_ID ) );
 
+               if ( $comment->comment_post_ID > 0 ) {
+                       $post = get_post( $comment->comment_post_ID );
+               }
                $this->user_can = current_user_can( 'edit_comment', $comment->comment_ID );
 
                echo "<tr id='comment-$comment->comment_ID' class='$the_comment_class'>";
                $this->single_row_columns( $comment );
                echo "</tr>\n";
+
+               unset( $post, $comment );
        }
 
        /**
@@ -456,6 +508,8 @@ class WP_Comments_List_Table extends WP_List_Table {
         * @since 4.3.0
         * @access protected
         *
+        * @global string $comment_status Status for the current listed comments.
+        *
         * @param object $comment     Comment being acted upon.
         * @param string $column_name Current column name.
         * @param string $primary     Primary column name.
@@ -472,7 +526,7 @@ class WP_Comments_List_Table extends WP_List_Table {
                        return;
                }
 
-               $the_comment_status = wp_get_comment_status( $comment->comment_ID );
+               $the_comment_status = wp_get_comment_status( $comment );
 
                $out = '';
 
@@ -501,9 +555,9 @@ class WP_Comments_List_Table extends WP_List_Table {
 
                // Not looking at all comments.
                if ( $comment_status && 'all' != $comment_status ) {
-                       if ( 'approved' == $the_comment_status ) {
+                       if ( 'approved' === $the_comment_status ) {
                                $actions['unapprove'] = "<a href='$unapprove_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID:e7e7d3:action=dim-comment&amp;new=unapproved' class='vim-u vim-destructive' title='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
-                       } elseif ( 'unapproved' == $the_comment_status ) {
+                       } elseif ( 'unapproved' === $the_comment_status ) {
                                $actions['approve'] = "<a href='$approve_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID:e7e7d3:action=dim-comment&amp;new=approved' class='vim-a vim-destructive' title='" . esc_attr__( 'Approve this comment' ) . "'>" . __( 'Approve' ) . '</a>';
                        }
                } else {
@@ -511,23 +565,23 @@ class WP_Comments_List_Table extends WP_List_Table {
                        $actions['unapprove'] = "<a href='$unapprove_url' data-wp-lists='dim:the-comment-list:comment-$comment->comment_ID:unapproved:e7e7d3:e7e7d3:new=unapproved' class='vim-u' title='" . esc_attr__( 'Unapprove this comment' ) . "'>" . __( 'Unapprove' ) . '</a>';
                }
 
-               if ( 'spam' != $the_comment_status ) {
+               if ( 'spam' !== $the_comment_status ) {
                        $actions['spam'] = "<a href='$spam_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::spam=1' class='vim-s vim-destructive' title='" . esc_attr__( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . '</a>';
-               } elseif ( 'spam' == $the_comment_status ) {
+               } elseif ( 'spam' === $the_comment_status ) {
                        $actions['unspam'] = "<a href='$unspam_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID:66cc66:unspam=1' class='vim-z vim-destructive'>" . _x( 'Not Spam', 'comment' ) . '</a>';
                }
 
-               if ( 'trash' == $the_comment_status ) {
+               if ( 'trash' === $the_comment_status ) {
                        $actions['untrash'] = "<a href='$untrash_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID:66cc66:untrash=1' class='vim-z vim-destructive'>" . __( 'Restore' ) . '</a>';
                }
 
-               if ( 'spam' == $the_comment_status || 'trash' == $the_comment_status || !EMPTY_TRASH_DAYS ) {
+               if ( 'spam' === $the_comment_status || 'trash' === $the_comment_status || !EMPTY_TRASH_DAYS ) {
                        $actions['delete'] = "<a href='$delete_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::delete=1' class='delete vim-d vim-destructive'>" . __( 'Delete Permanently' ) . '</a>';
                } else {
                        $actions['trash'] = "<a href='$trash_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::trash=1' class='delete vim-d vim-destructive' title='" . esc_attr__( 'Move this comment to the trash' ) . "'>" . _x( 'Trash', 'verb' ) . '</a>';
                }
 
-               if ( 'spam' != $the_comment_status && 'trash' != $the_comment_status ) {
+               if ( 'spam' !== $the_comment_status && 'trash' !== $the_comment_status ) {
                        $actions['edit'] = "<a href='comment.php?action=editcomment&amp;c={$comment->comment_ID}' title='" . esc_attr__( 'Edit comment' ) . "'>". __( 'Edit' ) . '</a>';
 
                        $format = '<a data-comment-id="%d" data-post-id="%d" data-action="%s" class="%s" title="%s" href="#">%s</a>';
@@ -544,12 +598,12 @@ class WP_Comments_List_Table extends WP_List_Table {
                $out .= '<div class="row-actions">';
                foreach ( $actions as $action => $link ) {
                        ++$i;
-                       ( ( ( 'approve' == $action || 'unapprove' == $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ';
+                       ( ( ( 'approve' === $action || 'unapprove' === $action ) && 2 === $i ) || 1 === $i ) ? $sep = '' : $sep = ' | ';
 
                        // Reply and quickedit need a hide-if-no-js span when not added with ajax
-                       if ( ( 'reply' == $action || 'quickedit' == $action ) && ! defined('DOING_AJAX') )
+                       if ( ( 'reply' === $action || 'quickedit' === $action ) && ! defined('DOING_AJAX') )
                                $action .= ' hide-if-no-js';
-                       elseif ( ( $action == 'untrash' && $the_comment_status == 'trash' ) || ( $action == 'unspam' && $the_comment_status == 'spam' ) ) {
+                       elseif ( ( $action === 'untrash' && $the_comment_status === 'trash' ) || ( $action === 'unspam' && $the_comment_status === 'spam' ) ) {
                                if ( '1' == get_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', true ) )
                                        $action .= ' approve';
                                else
@@ -581,29 +635,24 @@ class WP_Comments_List_Table extends WP_List_Table {
         * @param object $comment
         */
        public function column_comment( $comment ) {
-               $comment_url = esc_url( get_comment_link( $comment->comment_ID ) );
-
                echo '<div class="comment-author">';
                        $this->column_author( $comment );
                echo '</div>';
 
-               echo '<div class="submitted-on">';
-               /* translators: 2: comment date, 3: comment time */
-               printf( __( 'Submitted on <a href="%1$s">%2$s at %3$s</a>' ), $comment_url,
-                       /* translators: comment date format. See http://php.net/date */
-                       get_comment_date( __( 'Y/m/d' ) ),
-                       get_comment_date( get_option( 'time_format' ) )
-               );
-
                if ( $comment->comment_parent ) {
                        $parent = get_comment( $comment->comment_parent );
-                       $parent_link = esc_url( get_comment_link( $comment->comment_parent ) );
-                       $name = get_comment_author( $parent->comment_ID );
-                       printf( ' | '.__( 'In reply to <a href="%1$s">%2$s</a>.' ), $parent_link, $name );
+                       if ( $parent ) {
+                               $parent_link = esc_url( get_comment_link( $parent ) );
+                               $name = get_comment_author( $parent );
+                               printf(
+                                       /* translators: %s: comment link */
+                                       __( 'In reply to %s.' ),
+                                       '<a href="' . $parent_link . '">' . $name . '</a>'
+                               );
+                       }
                }
 
-               echo '</div>';
-               comment_text();
+               comment_text( $comment );
                if ( $this->user_can ) { ?>
                <div id="inline-<?php echo $comment->comment_ID; ?>" class="hidden">
                <textarea class="comment" rows="1" cols="1"><?php
@@ -628,40 +677,53 @@ class WP_Comments_List_Table extends WP_List_Table {
        public function column_author( $comment ) {
                global $comment_status;
 
-               $author_url = get_comment_author_url();
-               if ( 'http://' == $author_url )
-                       $author_url = '';
-               $author_url_display = preg_replace( '|http://(www\.)?|i', '', $author_url );
-               if ( strlen( $author_url_display ) > 50 )
-                       $author_url_display = substr( $author_url_display, 0, 49 ) . '&hellip;';
+               $author_url = get_comment_author_url( $comment );
 
-               echo "<strong>"; comment_author(); echo '</strong><br />';
-               if ( !empty( $author_url ) )
-                       echo "<a title='$author_url' href='$author_url'>$author_url_display</a><br />";
+               $author_url_display = untrailingslashit( preg_replace( '|^http(s)?://(www\.)?|i', '', $author_url ) );
+               if ( strlen( $author_url_display ) > 50 ) {
+                       $author_url_display = wp_html_excerpt( $author_url_display, 49, '&hellip;' );
+               }
+
+               echo "<strong>"; comment_author( $comment ); echo '</strong><br />';
+               if ( ! empty( $author_url_display ) ) {
+                       printf( '<a href="%s">%s</a><br />', esc_url( $author_url ), esc_html( $author_url_display ) );
+               }
 
                if ( $this->user_can ) {
-                       if ( !empty( $comment->comment_author_email ) ) {
-                               comment_author_email_link();
-                               echo '<br />';
+                       if ( ! empty( $comment->comment_author_email ) ) {
+                               /* This filter is documented in wp-includes/comment-template.php */
+                               $email = apply_filters( 'comment_email', $comment->comment_author_email, $comment );
+
+                               if ( ! empty( $email ) && '@' !== $email ) {
+                                       printf( '<a href="%1$s">%2$s</a><br />', esc_url( 'mailto:' . $email ), esc_html( $email ) );
+                               }
                        }
 
-                       $author_ip = get_comment_author_IP();
+                       $author_ip = get_comment_author_IP( $comment );
                        if ( $author_ip ) {
-                               $author_ip_url = add_query_arg( array( 's' => $author_ip, 'mode' => 'detail' ), 'edit-comments.php' );
-                               if ( 'spam' == $comment_status ) {
+                               $author_ip_url = add_query_arg( array( 's' => $author_ip, 'mode' => 'detail' ), admin_url( 'edit-comments.php' ) );
+                               if ( 'spam' === $comment_status ) {
                                        $author_ip_url = add_query_arg( 'comment_status', 'spam', $author_ip_url );
                                }
-                               printf( '<a href="%s">%s</a>', esc_url( $author_ip_url ), $author_ip );
+                               printf( '<a href="%1$s">%2$s</a>', esc_url( $author_ip_url ), esc_html( $author_ip ) );
                        }
                }
        }
 
        /**
-        *
-        * @return string
+        * @access public
         */
-       public function column_date() {
-               return get_comment_date( __( 'Y/m/d \a\t g:i a' ) );
+       public function column_date( $comment ) {
+               echo '<div class="submitted-on">';
+               echo '<a href="' . esc_url( get_comment_link( $comment ) ) . '">';
+               /* translators: 1: comment date, 2: comment time */
+               printf( __( '%1$s at %2$s' ),
+                       /* translators: comment date format. See http://php.net/date */
+                       get_comment_date( __( 'Y/m/d' ), $comment ),
+                       get_comment_date( get_option( 'time_format' ), $comment )
+               );
+               echo '</a>';
+               echo '</div>';
        }
 
        /**
@@ -689,13 +751,13 @@ class WP_Comments_List_Table extends WP_List_Table {
                }
 
                echo '<div class="response-links">';
-               if ( 'attachment' == $post->post_type && ( $thumb = wp_get_attachment_image( $post->ID, array( 80, 60 ), true ) ) ) {
+               if ( 'attachment' === $post->post_type && ( $thumb = wp_get_attachment_image( $post->ID, array( 80, 60 ), true ) ) ) {
                        echo $thumb;
                }
                echo $post_link;
                $post_type_object = get_post_type_object( $post->post_type );
                echo "<a href='" . get_permalink( $post->ID ) . "' class='comments-view-item-link'>" . $post_type_object->labels->view_item . '</a>';
-               echo '<span class="post-com-count-wrapper">';
+               echo '<span class="post-com-count-wrapper post-com-count-', $post->ID, '">';
                $this->comments_bubble( $post->ID, $pending_comments );
                echo '</span> ';
                echo '</div>';
@@ -718,74 +780,3 @@ class WP_Comments_List_Table extends WP_List_Table {
                do_action( 'manage_comments_custom_column', $column_name, $comment->comment_ID );
        }
 }
-
-/**
- * Post Comments List Table class.
- *
- * @package WordPress
- * @subpackage List_Table
- * @since 3.1.0
- * @access private
- *
- * @see WP_Comments_Table
- */
-class WP_Post_Comments_List_Table extends WP_Comments_List_Table {
-
-       /**
-        *
-        * @return array
-        */
-       protected function get_column_info() {
-               return array(
-                       array(
-                               'author'   => __( 'Author' ),
-                               'comment'  => _x( 'Comment', 'column name' ),
-                       ),
-                       array(),
-                       array(),
-                       'comment',
-               );
-       }
-
-       /**
-        *
-        * @return array
-        */
-       protected function get_table_classes() {
-               $classes = parent::get_table_classes();
-               $classes[] = 'wp-list-table';
-               $classes[] = 'comments-box';
-               return $classes;
-       }
-
-       /**
-        *
-        * @param bool $output_empty
-        */
-       public function display( $output_empty = false ) {
-               $singular = $this->_args['singular'];
-
-               wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' );
-?>
-<table class="<?php echo implode( ' ', $this->get_table_classes() ); ?>" style="display:none;">
-       <tbody id="the-comment-list"<?php
-               if ( $singular ) {
-                       echo " data-wp-lists='list:$singular'";
-               } ?>>
-               <?php if ( ! $output_empty ) {
-                       $this->display_rows_or_placeholder();
-               } ?>
-       </tbody>
-</table>
-<?php
-       }
-
-       /**
-        *
-        * @param bool $comment_status
-        * @return int
-        */
-       public function get_per_page( $comment_status = false ) {
-               return 10;
-       }
-}
index 80d92501ad6a9cb15abfe4f5d9556b8befcc135b..7e6a80f00f7b90e674d5da57007ee532165a2520 100644 (file)
@@ -24,6 +24,7 @@ class WP_Filesystem_Base {
        /**
         * Cached list of local filepaths to mapped remote filepaths.
         *
+        * @access public
         * @since 2.7.0
         * @var array
         */
@@ -38,8 +39,14 @@ class WP_Filesystem_Base {
         */
        public $method = '';
 
+       /**
+        * @access public
+        */
        public $errors = null;
 
+       /**
+        * @access public
+        */
        public $options = array();
 
        /**
@@ -230,6 +237,7 @@ class WP_Filesystem_Base {
         *
         * Expects Windows sanitized path.
         *
+        * @access public
         * @since 2.7.0
         *
         * @param string $folder The folder to locate.
@@ -243,8 +251,10 @@ class WP_Filesystem_Base {
 
                $folder = untrailingslashit($folder);
 
-               if ( $this->verbose )
-                       printf( "\n" . __('Looking for %1$s in %2$s') . "<br/>\n", $folder, $base );
+               if ( $this->verbose ) {
+                       /* translators: 1: folder to locate, 2: folder to start searching from */
+                       printf( "\n" . __( 'Looking for %1$s in %2$s' ) . "<br/>\n", $folder, $base );
+               }
 
                $folder_parts = explode('/', $folder);
                $folder_part_keys = array_keys( $folder_parts );
@@ -268,8 +278,10 @@ class WP_Filesystem_Base {
 
                                // Let's try that folder:
                                $newdir = trailingslashit(path_join($base, $key));
-                               if ( $this->verbose )
-                                       printf( "\n" . __('Changing to %s') . "<br/>\n", $newdir );
+                               if ( $this->verbose ) {
+                                       /* translators: %s: directory name */
+                                       printf( "\n" . __( 'Changing to %s' ) . "<br/>\n", $newdir );
+                               }
 
                                // Only search for the remaining path tokens in the directory, not the full path again.
                                $newfolder = implode( '/', array_slice( $folder_parts, $index + 1 ) );
@@ -278,10 +290,13 @@ class WP_Filesystem_Base {
                        }
                }
 
-               // Only check this as a last resort, to prevent locating the incorrect install. All above procedures will fail quickly if this is the right branch to take.
+               // Only check this as a last resort, to prevent locating the incorrect install.
+               // All above procedures will fail quickly if this is the right branch to take.
                if (isset( $files[ $last_path ] ) ) {
-                       if ( $this->verbose )
-                               printf( "\n" . __('Found %s') . "<br/>\n",  $base . $last_path );
+                       if ( $this->verbose ) {
+                               /* translators: %s: directory name */
+                               printf( "\n" . __( 'Found %s' ) . "<br/>\n",  $base . $last_path );
+                       }
                        return trailingslashit($base . $last_path);
                }
 
@@ -354,6 +369,7 @@ class WP_Filesystem_Base {
        /**
         * Gets the permissions of the specified file or filepath in their octal format
         *
+        * @access public
         * @since 2.5.0
         * @param string $file
         * @return string the last 3 characters of the octal number
@@ -401,6 +417,7 @@ class WP_Filesystem_Base {
        /**
         * Determine if the string provided contains binary characters.
         *
+        * @access public
         * @since 2.7.0
         *
         * @param string $text String to test against.
@@ -415,6 +432,7 @@ class WP_Filesystem_Base {
         *
         * Default behavior is to do nothing, override this in your subclass, if desired.
         *
+        * @access public
         * @since 2.5.0
         *
         * @param string $file      Path to the file.
@@ -429,8 +447,10 @@ class WP_Filesystem_Base {
        /**
         * Connect filesystem.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @return bool True on success or false on failure (always true for WP_Filesystem_Direct).
         */
        public function connect() {
@@ -440,8 +460,10 @@ class WP_Filesystem_Base {
        /**
         * Read entire file into a string.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file Name of the file to read.
         * @return mixed|bool Returns the read data or false on failure.
         */
@@ -452,8 +474,10 @@ class WP_Filesystem_Base {
        /**
         * Read entire file into an array.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file Path to the file.
         * @return array|bool the file contents in an array or false on failure.
         */
@@ -464,8 +488,10 @@ class WP_Filesystem_Base {
        /**
         * Write a string to a file.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file     Remote path to the file where to write the data.
         * @param string $contents The data to write.
         * @param int    $mode     Optional. The file permissions as octal number, usually 0644.
@@ -478,8 +504,10 @@ class WP_Filesystem_Base {
        /**
         * Get the current working directory.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @return string|bool The current working directory on success, or false on failure.
         */
        public function cwd() {
@@ -489,8 +517,10 @@ class WP_Filesystem_Base {
        /**
         * Change current directory.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $dir The new current directory.
         * @return bool|string
         */
@@ -501,8 +531,10 @@ class WP_Filesystem_Base {
        /**
         * Change the file group.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file      Path to the file.
         * @param mixed  $group     A group name or number.
         * @param bool   $recursive Optional. If set True changes file group recursively. Defaults to False.
@@ -515,8 +547,10 @@ class WP_Filesystem_Base {
        /**
         * Change filesystem permissions.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file      Path to the file.
         * @param int    $mode      Optional. The permissions as octal number, usually 0644 for files, 0755 for dirs.
         * @param bool   $recursive Optional. If set True changes file group recursively. Defaults to False.
@@ -529,8 +563,10 @@ class WP_Filesystem_Base {
        /**
         * Get the file owner.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        * 
         * @param string $file Path to the file.
         * @return string|bool Username of the user or false on error.
         */
@@ -541,8 +577,10 @@ class WP_Filesystem_Base {
        /**
         * Get the file's group.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file Path to the file.
         * @return string|bool The group or false on error.
         */
@@ -553,8 +591,10 @@ class WP_Filesystem_Base {
        /**
         * Copy a file.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $source      Path to the source file.
         * @param string $destination Path to the destination file.
         * @param bool   $overwrite   Optional. Whether to overwrite the destination file if it exists.
@@ -570,8 +610,10 @@ class WP_Filesystem_Base {
        /**
         * Move a file.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $source      Path to the source file.
         * @param string $destination Path to the destination file.
         * @param bool   $overwrite   Optional. Whether to overwrite the destination file if it exists.
@@ -585,8 +627,10 @@ class WP_Filesystem_Base {
        /**
         * Delete a file or directory.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file      Path to the file.
         * @param bool   $recursive Optional. If set True changes file group recursively. Defaults to False.
         *                          Default false.
@@ -601,8 +645,10 @@ class WP_Filesystem_Base {
        /**
         * Check if a file or directory exists.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file Path to file/directory.
         * @return bool Whether $file exists or not.
         */
@@ -613,8 +659,10 @@ class WP_Filesystem_Base {
        /**
         * Check if resource is a file.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file File path.
         * @return bool Whether $file is a file.
         */
@@ -625,8 +673,10 @@ class WP_Filesystem_Base {
        /**
         * Check if resource is a directory.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $path Directory path.
         * @return bool Whether $path is a directory.
         */
@@ -637,8 +687,10 @@ class WP_Filesystem_Base {
        /**
         * Check if a file is readable.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file Path to file.
         * @return bool Whether $file is readable.
         */
@@ -649,8 +701,10 @@ class WP_Filesystem_Base {
        /**
         * Check if a file or directory is writable.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @return bool Whether $file is writable.
         */
        public function is_writable( $file ) {
@@ -660,8 +714,10 @@ class WP_Filesystem_Base {
        /**
         * Gets the file's last access time.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file Path to file.
         * @return int|bool Unix timestamp representing last access time.
         */
@@ -672,8 +728,10 @@ class WP_Filesystem_Base {
        /**
         * Gets the file modification time.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file Path to file.
         * @return int|bool Unix timestamp representing modification time.
         */
@@ -684,8 +742,10 @@ class WP_Filesystem_Base {
        /**
         * Gets the file size (in bytes).
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file Path to file.
         * @return int|bool Size of the file in bytes.
         */
@@ -698,8 +758,10 @@ class WP_Filesystem_Base {
         *
         * Note: If $file doesn't exist, it will be created.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $file  Path to file.
         * @param int    $time  Optional. Modified time to set for file.
         *                      Default 0.
@@ -714,8 +776,10 @@ class WP_Filesystem_Base {
        /**
         * Create a directory.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $path  Path for new directory.
         * @param mixed  $chmod Optional. The permissions as octal number, (or False to skip chmod)
         *                      Default false.
@@ -732,8 +796,10 @@ class WP_Filesystem_Base {
        /**
         * Delete a directory.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
+        *
         * @param string $path      Path to directory.
         * @param bool   $recursive Optional. Whether to recursively remove files/directories.
         *                          Default false.
@@ -746,6 +812,7 @@ class WP_Filesystem_Base {
        /**
         * Get details for files in a directory or a specific file.
         *
+        * @access public
         * @since 2.5.0
         * @abstract
         *
index f8979c2ac95c78ef0389ce28c8379e3dbaba34b6..bb37b8f3c59475fe458a4c615ef58bea9ed60bc2 100644 (file)
@@ -19,6 +19,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        /**
         * constructor
         *
+        * @access public
+        *
         * @param mixed $arg ignored argument
         */
        public function __construct($arg) {
@@ -29,6 +31,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        /**
         * Reads entire file into a string
         *
+        * @access public
+        *
         * @param string $file Name of the file to read.
         * @return string|bool The function returns the read data or false on failure.
         */
@@ -39,6 +43,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        /**
         * Reads entire file into an array
         *
+        * @access public
+        *
         * @param string $file Path to the file.
         * @return array|bool the file contents in an array or false on failure.
         */
@@ -49,6 +55,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        /**
         * Write a string to a file
         *
+        * @access public
+        *
         * @param string $file     Remote path to the file where to write the data.
         * @param string $contents The data to write.
         * @param int    $mode     Optional. The file permissions as octal number, usually 0644.
@@ -81,6 +89,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        /**
         * Gets the current working directory
         *
+        * @access public
+        *
         * @return string|bool the current working directory on success, or false on failure.
         */
        public function cwd() {
@@ -90,6 +100,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        /**
         * Change directory
         *
+        * @access public
+        *
         * @param string $dir The new current directory.
         * @return bool Returns true on success or false on failure.
         */
@@ -100,6 +112,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        /**
         * Changes file group
         *
+        * @access public
+        *
         * @param string $file      Path to the file.
         * @param mixed  $group     A group name or number.
         * @param bool   $recursive Optional. If set True changes file group recursively. Default false.
@@ -124,6 +138,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        /**
         * Changes filesystem permissions
         *
+        * @access public
+        *
         * @param string $file      Path to the file.
         * @param int    $mode      Optional. The permissions as octal number, usually 0644 for files,
         *                          0755 for dirs. Default false.
@@ -154,6 +170,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        /**
         * Changes file owner
         *
+        * @access public
+        *
         * @param string $file      Path to the file.
         * @param mixed  $owner     A user name or number.
         * @param bool   $recursive Optional. If set True changes file owner recursively.
@@ -178,6 +196,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        /**
         * Gets file owner
         *
+        * @access public
+        *
         * @param string $file Path to the file.
         * @return string|bool Username of the user or false on error.
         */
@@ -196,6 +216,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
         *
         * FIXME does not handle errors in fileperms()
         *
+        * @access public
+        *
         * @param string $file Path to the file.
         * @return string Mode of the file (last 3 digits).
         */
@@ -204,6 +226,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return string|false
         */
@@ -218,6 +242,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $source
         * @param string $destination
         * @param bool   $overwrite
@@ -235,6 +261,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $source
         * @param string $destination
         * @param bool $overwrite
@@ -257,6 +285,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @param bool $recursive
         * @param string $type
@@ -290,6 +320,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
                return $retval;
        }
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
@@ -297,6 +329,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
                return @file_exists($file);
        }
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
@@ -304,6 +338,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
                return @is_file($file);
        }
        /**
+        * @access public
+        *
         * @param string $path
         * @return bool
         */
@@ -312,6 +348,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
@@ -320,6 +358,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
@@ -328,6 +368,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return int
         */
@@ -336,6 +378,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return int
         */
@@ -344,6 +388,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return int
         */
@@ -352,6 +398,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @param int $time
         * @param int $atime
@@ -366,6 +414,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param mixed  $chmod
         * @param mixed  $chown
@@ -392,6 +442,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param bool $recursive
         * @return bool
@@ -401,6 +453,8 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param bool $include_hidden
         * @param bool $recursive
index 62ade49136ec5a9c6143529280811ae3a2d1a6c7..38536a0ea9d37a60e1bdfc862f58a64f581d069d 100644 (file)
@@ -18,6 +18,7 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        public $link;
 
        /**
+        * @access public
         *
         * @param array $opt
         */
@@ -63,6 +64,7 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
         *
         * @return bool
         */
@@ -73,12 +75,22 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
                        $this->link = @ftp_connect($this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT);
 
                if ( ! $this->link ) {
-                       $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port']));
+                       $this->errors->add( 'connect',
+                               /* translators: %s: hostname:port */
+                               sprintf( __( 'Failed to connect to FTP Server %s' ),
+                                       $this->options['hostname'] . ':' . $this->options['port']
+                               )
+                       );
                        return false;
                }
 
-               if ( ! @ftp_login($this->link,$this->options['username'], $this->options['password']) ) {
-                       $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username']));
+               if ( ! @ftp_login( $this->link,$this->options['username'], $this->options['password'] ) ) {
+                       $this->errors->add( 'auth',
+                               /* translators: %s: username */
+                               sprintf( __( 'Username/Password incorrect for %s' ),
+                                       $this->options['username']
+                               )
+                       );
                        return false;
                }
 
@@ -91,8 +103,14 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
-        * @param string $file
-        * @return false|string
+        * Retrieves the file contents.
+        *
+        * @since 2.5.0
+        * @access public
+        *
+        * @param string $file Filename.
+        * @return string|false File contents on success, false if no temp file could be opened,
+        *                      or if the file couldn't be retrieved.
         */
        public function get_contents( $file ) {
                $tempfile = wp_tempnam($file);
@@ -116,6 +134,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return array
         */
@@ -124,6 +144,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @param string $contents
         * @param bool|int $mode
@@ -161,6 +183,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @return string
         */
        public function cwd() {
@@ -171,6 +195,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $dir
         * @return bool
         */
@@ -179,6 +205,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @param int $mode
         * @param bool $recursive
@@ -208,6 +236,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return string
         */
@@ -216,6 +246,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
                return $dir[$file]['owner'];
        }
        /**
+        * @access public
+        *
         * @param string $file
         * @return string
         */
@@ -223,7 +255,10 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
                $dir = $this->dirlist($file);
                return $dir[$file]['permsn'];
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return string
         */
@@ -233,6 +268,7 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
         *
         * @param string $source
         * @param string $destination
@@ -248,7 +284,10 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
                        return false;
                return $this->put_contents($destination, $content, $mode);
        }
+
        /**
+        * @access public
+        *
         * @param string $source
         * @param string $destination
         * @param bool $overwrite
@@ -257,7 +296,10 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        public function move($source, $destination, $overwrite = false) {
                return ftp_rename($this->link, $source, $destination);
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @param bool $recursive
         * @param string $type
@@ -277,27 +319,38 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
                                $this->delete( trailingslashit($file) . $delete_file['name'], $recursive, $delete_file['type'] );
                return @ftp_rmdir($this->link, $file);
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
-       public function exists($file) {
-               $list = @ftp_nlist($this->link, $file);
+       public function exists( $file ) {
+               $path = dirname( $file );
+               $filename = basename( $file );
 
-               if ( empty( $list ) && $this->is_dir( $file ) ) {
-                       return true; // File is an empty directory.
+               $file_list = @ftp_nlist( $this->link, '-a ' . $path );
+               if ( $file_list ) {
+                       $file_list = array_map( 'basename', $file_list );
                }
 
-               return !empty($list); //empty list = no file, so invert.
+               return $file_list && in_array( $filename, $file_list );
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
        public function is_file($file) {
                return $this->exists($file) && !$this->is_dir($file);
        }
+
        /**
+        * @access public
+        *
         * @param string $path
         * @return bool
         */
@@ -312,41 +365,58 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
        public function is_readable($file) {
                return true;
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
        public function is_writable($file) {
                return true;
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
        public function atime($file) {
                return false;
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return int
         */
        public function mtime($file) {
                return ftp_mdtm($this->link, $file);
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return int
         */
        public function size($file) {
                return ftp_size($this->link, $file);
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
@@ -355,6 +425,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param mixed $chmod
         * @param mixed $chown
@@ -373,6 +445,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param bool $recursive
         * @return bool
@@ -382,6 +456,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @staticvar bool $is_windows
         * @param string $line
         * @return array
@@ -454,13 +530,16 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
                }
 
                // Replace symlinks formatted as "source -> target" with just the source name
-               if ( $b['islink'] )
+               if ( isset( $b['islink'] ) && $b['islink'] ) {
                        $b['name'] = preg_replace( '/(\s*->\s*.*)$/', '', $b['name'] );
+               }
 
                return $b;
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param bool $include_hidden
         * @param bool $recursive
index 879a2e8ca8542e25d0881a4f98bbda7a26fae916..29ac7888ab4b0fb4bbb69d4e8ab5d4456b7cfcdb 100644 (file)
  */
 class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        /**
+        * @access public
         * @var ftp
         */
        public $ftp;
 
        /**
+        * @access public
         *
         * @param array $opt
         */
@@ -57,6 +59,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
         *
         * @return bool
         */
@@ -66,18 +69,33 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
 
                $this->ftp->setTimeout(FS_CONNECT_TIMEOUT);
 
-               if ( ! $this->ftp->SetServer($this->options['hostname'], $this->options['port']) ) {
-                       $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port']));
+               if ( ! $this->ftp->SetServer( $this->options['hostname'], $this->options['port'] ) ) {
+                       $this->errors->add( 'connect',
+                               /* translators: %s: hostname:port */
+                               sprintf( __( 'Failed to connect to FTP Server %s' ),
+                                       $this->options['hostname'] . ':' . $this->options['port']
+                               )
+                       );
                        return false;
                }
 
                if ( ! $this->ftp->connect() ) {
-                       $this->errors->add('connect', sprintf(__('Failed to connect to FTP Server %1$s:%2$s'), $this->options['hostname'], $this->options['port']));
+                       $this->errors->add( 'connect',
+                               /* translators: %s: hostname:port */
+                               sprintf( __( 'Failed to connect to FTP Server %s' ),
+                                       $this->options['hostname'] . ':' . $this->options['port']
+                               )
+                       );
                        return false;
                }
 
-               if ( ! $this->ftp->login($this->options['username'], $this->options['password']) ) {
-                       $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username']));
+               if ( ! $this->ftp->login( $this->options['username'], $this->options['password'] ) ) {
+                       $this->errors->add( 'auth',
+                               /* translators: %s: username */
+                               sprintf( __( 'Username/Password incorrect for %s' ),
+                                       $this->options['username']
+                               )
+                       );
                        return false;
                }
 
@@ -88,8 +106,14 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
-        * @param string $file
-        * @return false|string
+        * Retrieves the file contents.
+        *
+        * @since 2.5.0
+        * @access public
+        *
+        * @param string $file Filename.
+        * @return string|false File contents on success, false if no temp file could be opened,
+        *                      or if the file doesn't exist.
         */
        public function get_contents( $file ) {
                if ( ! $this->exists($file) )
@@ -123,7 +147,10 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
                unlink($temp);
                return $contents;
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return array
         */
@@ -132,6 +159,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @param string $contents
         * @param int|bool $mode
@@ -172,6 +201,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
         *
         * @return string
         */
@@ -183,6 +213,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
         *
         * @param string $file
         * @return bool
@@ -192,6 +223,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @param int|bool $mode
         * @param bool $recursive
@@ -219,6 +252,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return string
         */
@@ -226,7 +261,10 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
                $dir = $this->dirlist($file);
                return $dir[$file]['owner'];
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return string
         */
@@ -234,7 +272,10 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
                $dir = $this->dirlist($file);
                return $dir[$file]['permsn'];
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return string
         */
@@ -242,7 +283,10 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
                $dir = $this->dirlist($file);
                return $dir[$file]['group'];
        }
+
        /**
+        * @access public
+        *
         * @param string   $source
         * @param string   $destination
         * @param bool     $overwrite
@@ -259,7 +303,10 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
 
                return $this->put_contents($destination, $content, $mode);
        }
+
        /**
+        * @access public
+        *
         * @param string $source
         * @param string $destination
         * @param bool   $overwrite
@@ -268,7 +315,10 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        public function move($source, $destination, $overwrite = false ) {
                return $this->ftp->rename($source, $destination);
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @param bool   $recursive
         * @param string $type
@@ -286,11 +336,13 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
        public function exists( $file ) {
-               $list = $this->ftp->nlist( $file );
+               $list = $this->ftp->rawlist( $file, '-a' );
 
                if ( empty( $list ) && $this->is_dir( $file ) ) {
                        return true; // File is an empty directory.
@@ -301,6 +353,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
@@ -313,6 +367,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @return bool
         */
@@ -326,6 +382,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
@@ -334,6 +392,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
@@ -342,6 +402,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
@@ -350,6 +412,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return int
         */
@@ -364,7 +428,10 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        public function size($file) {
                return $this->ftp->filesize($file);
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @param int $time
         * @param int $atime
@@ -375,6 +442,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param mixed  $chmod
         * @param mixed  $chown
@@ -395,7 +464,9 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
-        * @param sting $path
+        * @access public
+        *
+        * @param string $path
         * @param bool $recursive
         */
        public function rmdir($path, $recursive = false ) {
@@ -403,6 +474,8 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param bool   $include_hidden
         * @param bool   $recursive
index 2b167965910eeb56f149e600089d83e7ee3c25c3..42eab59c7953d3eea076a1e41dbc7bdb14aad09c 100644 (file)
  */
 class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
 
+       /**
+        * @access public
+        */
        public $link = false;
+
        /**
+        * @access public
         * @var resource
         */
        public $sftp_link;
        public $keys = false;
 
        /**
+        * @access public
         *
         * @param array $opt
         */
@@ -96,6 +102,7 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
         *
         * @return bool
         */
@@ -107,28 +114,76 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
                }
 
                if ( ! $this->link ) {
-                       $this->errors->add('connect', sprintf(__('Failed to connect to SSH2 Server %1$s:%2$s'), $this->options['hostname'], $this->options['port']));
+                       $this->errors->add( 'connect',
+                               /* translators: %s: hostname:port */
+                               sprintf( __( 'Failed to connect to SSH2 Server %s' ),
+                                       $this->options['hostname'] . ':' . $this->options['port']
+                               )
+                       );
                        return false;
                }
 
                if ( !$this->keys ) {
                        if ( ! @ssh2_auth_password($this->link, $this->options['username'], $this->options['password']) ) {
-                               $this->errors->add('auth', sprintf(__('Username/Password incorrect for %s'), $this->options['username']));
+                               $this->errors->add( 'auth',
+                                       /* translators: %s: username */
+                                       sprintf( __( 'Username/Password incorrect for %s' ),
+                                               $this->options['username']
+                                       )
+                               );
                                return false;
                        }
                } else {
                        if ( ! @ssh2_auth_pubkey_file($this->link, $this->options['username'], $this->options['public_key'], $this->options['private_key'], $this->options['password'] ) ) {
-                               $this->errors->add('auth', sprintf(__('Public and Private keys incorrect for %s'), $this->options['username']));
+                               $this->errors->add( 'auth',
+                                       /* translators: %s: username */
+                                       sprintf( __( 'Public and Private keys incorrect for %s' ),
+                                               $this->options['username']
+                                       )
+                               );
                                return false;
                        }
                }
 
-               $this->sftp_link = ssh2_sftp($this->link);
+               $this->sftp_link = ssh2_sftp( $this->link );
+               if ( ! $this->sftp_link ) {
+                       $this->errors->add( 'connect',
+                               /* translators: %s: hostname:port */
+                               sprintf( __( 'Failed to initialize a SFTP subsystem session with the SSH2 Server %s' ),
+                                       $this->options['hostname'] . ':' . $this->options['port']
+                               )
+                       );
+                       return false;
+               }
 
                return true;
        }
 
        /**
+        * Gets the ssh2.sftp PHP stream wrapper path to open for the given file.
+        *
+        * This method also works around a PHP bug where the root directory (/) cannot
+        * be opened by PHP functions, causing a false failure. In order to work around
+        * this, the path is converted to /./ which is semantically the same as /
+        * See https://bugs.php.net/bug.php?id=64169 for more details.
+        *
+        * @access public
+        *
+        * @since 4.4.0
+        *
+        * @param string $path The File/Directory path on the remote server to return
+        * @return string The ssh2.sftp:// wrapped path to use.
+        */
+       public function sftp_path( $path ) {
+               if ( '/' === $path ) {
+                       $path = '/./';
+               }
+               return 'ssh2.sftp://' . $this->sftp_link . '/' . ltrim( $path, '/' );
+       }
+
+       /**
+        * @access public
+        * 
         * @param string $command
         * @param bool $returnbool
         * @return bool|string
@@ -138,7 +193,12 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
                        return false;
 
                if ( ! ($stream = ssh2_exec($this->link, $command)) ) {
-                       $this->errors->add('command', sprintf(__('Unable to perform command: %s'), $command));
+                       $this->errors->add( 'command',
+                               /* translators: %s: command */
+                               sprintf( __( 'Unable to perform command: %s'),
+                                       $command
+                               )
+                       );
                } else {
                        stream_set_blocking( $stream, true );
                        stream_set_timeout( $stream, FS_TIMEOUT );
@@ -154,31 +214,35 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return string|false
         */
        public function get_contents( $file ) {
-               $file = ltrim($file, '/');
-               return file_get_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+               return file_get_contents( $this->sftp_path( $file ) );
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return array
         */
        public function get_contents_array($file) {
-               $file = ltrim($file, '/');
-               return file('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+               return file( $this->sftp_path( $file ) );
        }
 
        /**
+        * @access public
+        *
         * @param string   $file
         * @param string   $contents
         * @param bool|int $mode
         * @return bool
         */
        public function put_contents($file, $contents, $mode = false ) {
-               $ret = file_put_contents( 'ssh2.sftp://' . $this->sftp_link . '/' . ltrim( $file, '/' ), $contents );
+               $ret = file_put_contents( $this->sftp_path( $file ), $contents );
 
                if ( $ret !== strlen( $contents ) )
                        return false;
@@ -189,6 +253,7 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
         *
         * @return bool
         */
@@ -201,6 +266,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $dir
         * @return bool|string
         */
@@ -209,6 +276,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @param string $group
         * @param bool   $recursive
@@ -224,6 +293,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @param int    $mode
         * @param bool   $recursive
@@ -250,7 +321,7 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        /**
         * Change the ownership of a file / folder.
         *
-        * @since Unknown
+        * @access public
         *
         * @param string     $file    Path to the file.
         * @param string|int $owner   A user name or number.
@@ -266,11 +337,13 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return string|false
         */
        public function owner($file) {
-               $owneruid = @fileowner('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/'));
+               $owneruid = @fileowner( $this->sftp_path( $file ) );
                if ( ! $owneruid )
                        return false;
                if ( ! function_exists('posix_getpwuid') )
@@ -278,20 +351,25 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
                $ownerarray = posix_getpwuid($owneruid);
                return $ownerarray['name'];
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return string
         */
        public function getchmod($file) {
-               return substr( decoct( @fileperms( 'ssh2.sftp://' . $this->sftp_link . '/' . ltrim( $file, '/' ) ) ), -3 );
+               return substr( decoct( @fileperms( $this->sftp_path( $file ) ) ), -3 );
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return string|false
         */
        public function group($file) {
-               $gid = @filegroup('ssh2.sftp://' . $this->sftp_link . '/' . ltrim($file, '/'));
+               $gid = @filegroup( $this->sftp_path( $file ) );
                if ( ! $gid )
                        return false;
                if ( ! function_exists('posix_getgrgid') )
@@ -301,6 +379,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string   $source
         * @param string   $destination
         * @param bool     $overwrite
@@ -317,6 +397,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $source
         * @param string $destination
         * @param bool   $overwrite
@@ -327,6 +409,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string      $file
         * @param bool        $recursive
         * @param string|bool $type
@@ -347,38 +431,48 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
        public function exists($file) {
-               $file = ltrim($file, '/');
-               return file_exists('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+               return file_exists( $this->sftp_path( $file ) );
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
        public function is_file($file) {
-               $file = ltrim($file, '/');
-               return is_file('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+               return is_file( $this->sftp_path( $file ) );
        }
+
        /**
+        * @access public
+        *
         * @param string $path
         * @return bool
         */
        public function is_dir($path) {
-               $path = ltrim($path, '/');
-               return is_dir('ssh2.sftp://' . $this->sftp_link . '/' . $path);
+               return is_dir( $this->sftp_path( $path ) );
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
        public function is_readable($file) {
-               $file = ltrim($file, '/');
-               return is_readable('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+               return is_readable( $this->sftp_path( $file ) );
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return bool
         */
@@ -386,34 +480,40 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
                // PHP will base it's writable checks on system_user === file_owner, not ssh_user === file_owner
                return true;
        }
+
        /**
+        * @access public
+        *
         * @param string $file
         * @return int
         */
        public function atime($file) {
-               $file = ltrim($file, '/');
-               return fileatime('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+               return fileatime( $this->sftp_path( $file ) );
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return int
         */
        public function mtime($file) {
-               $file = ltrim($file, '/');
-               return filemtime('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+               return filemtime( $this->sftp_path( $file ) );
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @return int
         */
        public function size($file) {
-               $file = ltrim($file, '/');
-               return filesize('ssh2.sftp://' . $this->sftp_link . '/' . $file);
+               return filesize( $this->sftp_path( $file ) );
        }
 
        /**
+        * @access public
+        *
         * @param string $file
         * @param int    $time
         * @param int    $atime
@@ -423,6 +523,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param mixed  $chmod
         * @param mixed  $chown
@@ -446,6 +548,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param bool   $recursive
         * @return bool
@@ -455,6 +559,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
        }
 
        /**
+        * @access public
+        *
         * @param string $path
         * @param bool   $include_hidden
         * @param bool   $recursive
@@ -472,7 +578,7 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
                        return false;
 
                $ret = array();
-               $dir = @dir('ssh2.sftp://' . $this->sftp_link .'/' . ltrim($path, '/') );
+               $dir = @dir( $this->sftp_path( $path ) );
 
                if ( ! $dir )
                        return false;
index fac5d40e4f78c91c6562eb4f34955f82f3904514..408fe1bc046f509321c3734cf9ab10547eb09921 100644 (file)
@@ -12,7 +12,7 @@ class WP_Importer {
        /**
         * Returns array with imported permalinks from WordPress database
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param string $importer_name
         * @param string $bid
@@ -52,7 +52,7 @@ class WP_Importer {
        /**
         * Return count of imported permalinks from WordPress database
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param string $importer_name
         * @param string $bid
@@ -81,7 +81,7 @@ class WP_Importer {
        /**
         * Set array with imported comments from WordPress database
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param string $bid
         * @return array
diff --git a/wp-admin/includes/class-wp-internal-pointers.php b/wp-admin/includes/class-wp-internal-pointers.php
new file mode 100644 (file)
index 0000000..94796c1
--- /dev/null
@@ -0,0 +1,166 @@
+<?php
+/**
+ * Administration API: WP_Internal_Pointers class
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement an internal admin pointers API.
+ *
+ * @since 3.3.0
+ */
+final class WP_Internal_Pointers {
+       /**
+        * Initializes the new feature pointers.
+        *
+        * @since 3.3.0
+        *
+        * All pointers can be disabled using the following:
+        *     remove_action( 'admin_enqueue_scripts', array( 'WP_Internal_Pointers', 'enqueue_scripts' ) );
+        *
+        * Individual pointers (e.g. wp390_widgets) can be disabled using the following:
+        *     remove_action( 'admin_print_footer_scripts', array( 'WP_Internal_Pointers', 'pointer_wp390_widgets' ) );
+        *
+        * @static
+        *
+        * @param string $hook_suffix The current admin page.
+        */
+       public static function enqueue_scripts( $hook_suffix ) {
+               /*
+                * Register feature pointers
+                *
+                * Format:
+                *     array(
+                *         hook_suffix => pointer callback
+                *     )
+                *
+                * Example:
+                *     array(
+                *         'themes.php' => 'wp390_widgets'
+                *     )
+                */
+               $registered_pointers = array(
+                       // None currently
+               );
+
+               // Check if screen related pointer is registered
+               if ( empty( $registered_pointers[ $hook_suffix ] ) )
+                       return;
+
+               $pointers = (array) $registered_pointers[ $hook_suffix ];
+
+               /*
+                * Specify required capabilities for feature pointers
+                *
+                * Format:
+                *     array(
+                *         pointer callback => Array of required capabilities
+                *     )
+                *
+                * Example:
+                *     array(
+                *         'wp390_widgets' => array( 'edit_theme_options' )
+                *     )
+                */
+               $caps_required = array(
+                       // None currently
+               );
+
+               // Get dismissed pointers
+               $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
+
+               $got_pointers = false;
+               foreach ( array_diff( $pointers, $dismissed ) as $pointer ) {
+                       if ( isset( $caps_required[ $pointer ] ) ) {
+                               foreach ( $caps_required[ $pointer ] as $cap ) {
+                                       if ( ! current_user_can( $cap ) )
+                                               continue 2;
+                               }
+                       }
+
+                       // Bind pointer print function
+                       add_action( 'admin_print_footer_scripts', array( 'WP_Internal_Pointers', 'pointer_' . $pointer ) );
+                       $got_pointers = true;
+               }
+
+               if ( ! $got_pointers )
+                       return;
+
+               // Add pointers script and style to queue
+               wp_enqueue_style( 'wp-pointer' );
+               wp_enqueue_script( 'wp-pointer' );
+       }
+
+       /**
+        * Print the pointer JavaScript data.
+        *
+        * @since 3.3.0
+        *
+        * @static
+        *
+        * @param string $pointer_id The pointer ID.
+        * @param string $selector The HTML elements, on which the pointer should be attached.
+        * @param array  $args Arguments to be passed to the pointer JS (see wp-pointer.js).
+        */
+       private static function print_js( $pointer_id, $selector, $args ) {
+               if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) )
+                       return;
+
+               ?>
+               <script type="text/javascript">
+               (function($){
+                       var options = <?php echo wp_json_encode( $args ); ?>, setup;
+
+                       if ( ! options )
+                               return;
+
+                       options = $.extend( options, {
+                               close: function() {
+                                       $.post( ajaxurl, {
+                                               pointer: '<?php echo $pointer_id; ?>',
+                                               action: 'dismiss-wp-pointer'
+                                       });
+                               }
+                       });
+
+                       setup = function() {
+                               $('<?php echo $selector; ?>').first().pointer( options ).pointer('open');
+                       };
+
+                       if ( options.position && options.position.defer_loading )
+                               $(window).bind( 'load.wp-pointers', setup );
+                       else
+                               $(document).ready( setup );
+
+               })( jQuery );
+               </script>
+               <?php
+       }
+
+       public static function pointer_wp330_toolbar() {}
+       public static function pointer_wp330_media_uploader() {}
+       public static function pointer_wp330_saving_widgets() {}
+       public static function pointer_wp340_customize_current_theme_link() {}
+       public static function pointer_wp340_choose_image_from_library() {}
+       public static function pointer_wp350_media() {}
+       public static function pointer_wp360_revisions() {}
+       public static function pointer_wp360_locks() {}
+       public static function pointer_wp390_widgets() {}
+       public static function pointer_wp410_dfw() {}
+
+       /**
+        * Prevents new users from seeing existing 'new feature' pointers.
+        *
+        * @since 3.3.0
+        *
+        * @static
+        *
+        * @param int $user_id User ID.
+        */
+       public static function dismiss_pointers_for_new_users( $user_id ) {
+               add_user_meta( $user_id, 'dismissed_wp_pointers', '' );
+       }
+}
index 9b917d1db48adbe7d98941b88c43a0467468d4dc..4af3a5b5f251a73bdb89eb8a86f114e199e05ebd 100644 (file)
@@ -1,11 +1,19 @@
 <?php
 /**
- * Links Manager List Table class.
+ * List Table API: WP_Links_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying links in a list table.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Tsble
  */
 class WP_Links_List_Table extends WP_List_Table {
 
index ad35fc670a3559f7b8a4b868810f8d2389e55dcf..3a85f79d02cc9922427164ae758e721f586ca52f 100644 (file)
@@ -1,65 +1,71 @@
 <?php
+/**
+ * Administration API: WP_List_Table class
+ *
+ * @package WordPress
+ * @subpackage List_Table
+ * @since 3.1.0
+ */
+
 /**
  * Base class for displaying a list of items in an ajaxified HTML table.
  *
  * @since 3.1.0
  * @access private
- *
- * @package WordPress
- * @subpackage List_Table
  */
 class WP_List_Table {
 
        /**
-        * The current list of items
+        * The current list of items.
         *
         * @since 3.1.0
-        * @var array
         * @access public
+        * @var array
         */
        public $items;
 
        /**
-        * Various information about the current table
+        * Various information about the current table.
         *
         * @since 3.1.0
-        * @var array
         * @access protected
+        * @var array
         */
        protected $_args;
 
        /**
-        * Various information needed for displaying the pagination
+        * Various information needed for displaying the pagination.
         *
         * @since 3.1.0
+        * @access protected
         * @var array
         */
        protected $_pagination_args = array();
 
        /**
-        * The current screen
+        * The current screen.
         *
         * @since 3.1.0
-        * @var object
         * @access protected
+        * @var object
         */
        protected $screen;
 
        /**
-        * Cached bulk actions
+        * Cached bulk actions.
         *
         * @since 3.1.0
-        * @var array
         * @access private
+        * @var array
         */
        private $_actions;
 
        /**
-        * Cached pagination output
+        * Cached pagination output.
         *
         * @since 3.1.0
-        * @var string
         * @access private
+        * @var string
         */
        private $_pagination;
 
@@ -67,20 +73,34 @@ class WP_List_Table {
         * The view switcher modes.
         *
         * @since 4.1.0
-        * @var array
         * @access protected
+        * @var array
         */
        protected $modes = array();
 
        /**
-        * Stores the value returned by ->get_column_info()
+        * Stores the value returned by ->get_column_info().
         *
+        * @since 4.1.0
+        * @access protected
         * @var array
         */
        protected $_column_headers;
 
+       /**
+        * {@internal Missing Summary}
+        *
+        * @access protected
+        * @var array
+        */
        protected $compat_fields = array( '_args', '_pagination_args', 'screen', '_actions', '_pagination' );
 
+       /**
+        * {@internal Missing Summary}
+        *
+        * @access protected
+        * @var array
+        */
        protected $compat_methods = array( 'set_pagination_args', 'get_views', 'get_bulk_actions', 'bulk_actions',
                'row_actions', 'months_dropdown', 'view_switcher', 'comments_bubble', 'get_items_per_page', 'pagination',
                'get_sortable_columns', 'get_column_info', 'get_table_classes', 'display_tablenav', 'extra_tablenav',
@@ -248,10 +268,10 @@ class WP_List_Table {
        /**
         * An internal method that sets all the necessary pagination arguments
         *
-        * @param array $args An associative array with information about the pagination
+        * @since 3.1.0
         * @access protected
         *
-        * @param array|string $args
+        * @param array|string $args Array or string of arguments with information about the pagination.
         */
        protected function set_pagination_args( $args ) {
                $args = wp_parse_args( $args, array(
@@ -283,11 +303,13 @@ class WP_List_Table {
         * @return int Number of items that correspond to the given pagination argument.
         */
        public function get_pagination_arg( $key ) {
-               if ( 'page' == $key )
+               if ( 'page' === $key ) {
                        return $this->get_pagenum();
+               }
 
-               if ( isset( $this->_pagination_args[$key] ) )
+               if ( isset( $this->_pagination_args[$key] ) ) {
                        return $this->_pagination_args[$key];
+               }
        }
 
        /**
@@ -380,6 +402,8 @@ class WP_List_Table {
                if ( empty( $views ) )
                        return;
 
+               $this->screen->render_screen_reader_content( 'heading_views' );
+
                echo "<ul class='subsubsub'>\n";
                foreach ( $views as $class => $view ) {
                        $views[ $class ] = "\t<li class='$class'>$view";
@@ -435,14 +459,14 @@ class WP_List_Table {
                if ( empty( $this->_actions ) )
                        return;
 
-               echo "<label for='bulk-action-selector-" . esc_attr( $which ) . "' class='screen-reader-text'>" . __( 'Select bulk action' ) . "</label>";
-               echo "<select name='action$two' id='bulk-action-selector-" . esc_attr( $which ) . "'>\n";
-               echo "<option value='-1' selected='selected'>" . __( 'Bulk Actions' ) . "</option>\n";
+               echo '<label for="bulk-action-selector-' . esc_attr( $which ) . '" class="screen-reader-text">' . __( 'Select bulk action' ) . '</label>';
+               echo '<select name="action' . $two . '" id="bulk-action-selector-' . esc_attr( $which ) . "\">\n";
+               echo '<option value="-1">' . __( 'Bulk Actions' ) . "</option>\n";
 
                foreach ( $this->_actions as $name => $title ) {
-                       $class = 'edit' == $name ? ' class="hide-if-no-js"' : '';
+                       $class = 'edit' === $name ? ' class="hide-if-no-js"' : '';
 
-                       echo "\t<option value='$name'$class>$title</option>\n";
+                       echo "\t" . '<option value="' . $name . '"' . $class . '>' . $title . "</option>\n";
                }
 
                echo "</select>\n";
@@ -528,10 +552,18 @@ class WP_List_Table {
                        return;
                }
 
+               $extra_checks = "AND post_status != 'auto-draft'";
+               if ( ! isset( $_GET['post_status'] ) || 'trash' !== $_GET['post_status'] ) {
+                       $extra_checks .= " AND post_status != 'trash'";
+               } elseif ( isset( $_GET['post_status'] ) ) {
+                       $extra_checks = $wpdb->prepare( ' AND post_status = %s', $_GET['post_status'] );
+               }
+
                $months = $wpdb->get_results( $wpdb->prepare( "
                        SELECT DISTINCT YEAR( post_date ) AS year, MONTH( post_date ) AS month
                        FROM $wpdb->posts
                        WHERE post_type = %s
+                       $extra_checks
                        ORDER BY post_date DESC
                ", $post_type ) );
 
@@ -590,7 +622,7 @@ class WP_List_Table {
 <?php
                        foreach ( $this->modes as $mode => $title ) {
                                $classes = array( 'view-' . $mode );
-                               if ( $current_mode == $mode )
+                               if ( $current_mode === $mode )
                                        $classes[] = 'current';
                                printf(
                                        "<a href='%s' class='%s' id='view-switch-$mode'><span class='screen-reader-text'>%s</span></a>\n",
@@ -648,6 +680,11 @@ class WP_List_Table {
                                $pending_comments_number,
                                $pending_phrase
                        );
+               } else {
+                       printf( '<span class="post-com-count post-com-count-pending post-com-count-no-pending"><span class="comment-count comment-count-no-pending" aria-hidden="true">%s</span><span class="screen-reader-text">%s</span></span>',
+                               $pending_comments_number,
+                               $approved_comments ? __( 'No pending comments' ) : __( 'No comments' )
+                       );
                }
        }
 
@@ -719,6 +756,10 @@ class WP_List_Table {
                        $infinite_scroll = $this->_pagination_args['infinite_scroll'];
                }
 
+               if ( 'top' === $which && $total_pages > 1 ) {
+                       $this->screen->render_screen_reader_content( 'heading_pagination' );
+               }
+
                $output = '<span class="displaying-num">' . sprintf( _n( '%s item', '%s items', $total_items ), number_format_i18n( $total_items ) ) . '</span>';
 
                $current = $this->get_pagenum();
@@ -769,7 +810,7 @@ class WP_List_Table {
                        );
                }
 
-               if ( 'bottom' == $which ) {
+               if ( 'bottom' === $which ) {
                        $html_current_page  = $current;
                        $total_pages_before = '<span class="screen-reader-text">' . __( 'Current Page' ) . '</span><span id="table-paging" class="paging-input">';
                } else {
@@ -861,9 +902,13 @@ class WP_List_Table {
                $columns = $this->get_columns();
                $column = '';
 
+               if ( empty( $columns ) ) {
+                       return $column;
+               }
+
                // We need a primary defined so responsive views show something,
                // so let's fall back to the first non-checkbox column.
-               foreach( $columns as $col => $column_name ) {
+               foreach ( $columns as $col => $column_name ) {
                        if ( 'cb' === $col ) {
                                continue;
                        }
@@ -875,6 +920,18 @@ class WP_List_Table {
                return $column;
        }
 
+       /**
+        * Public wrapper for WP_List_Table::get_default_primary_column_name().
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return string Name of the default primary column.
+        */
+       public function get_primary_column() {
+               return $this->get_primary_column_name();
+       }
+
        /**
         * Gets the name of the primary column.
         *
@@ -884,7 +941,7 @@ class WP_List_Table {
         * @return string The name of the primary column.
         */
        protected function get_primary_column_name() {
-               $columns = $this->get_columns();
+               $columns = get_column_headers( $this->screen );
                $default = $this->get_default_primary_column_name();
 
                // If the primary column doesn't exist fall back to the
@@ -995,15 +1052,17 @@ class WP_List_Table {
                $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
                $current_url = remove_query_arg( 'paged', $current_url );
 
-               if ( isset( $_GET['orderby'] ) )
+               if ( isset( $_GET['orderby'] ) ) {
                        $current_orderby = $_GET['orderby'];
-               else
+               } else {
                        $current_orderby = '';
+               }
 
-               if ( isset( $_GET['order'] ) && 'desc' == $_GET['order'] )
+               if ( isset( $_GET['order'] ) && 'desc' === $_GET['order'] ) {
                        $current_order = 'desc';
-               else
+               } else {
                        $current_order = 'asc';
+               }
 
                if ( ! empty( $columns['cb'] ) ) {
                        static $cb_counter = 1;
@@ -1019,7 +1078,7 @@ class WP_List_Table {
                                $class[] = 'hidden';
                        }
 
-                       if ( 'cb' == $column_key )
+                       if ( 'cb' === $column_key )
                                $class[] = 'check-column';
                        elseif ( in_array( $column_key, array( 'posts', 'comments', 'links' ) ) )
                                $class[] = 'num';
@@ -1031,8 +1090,8 @@ class WP_List_Table {
                        if ( isset( $sortable[$column_key] ) ) {
                                list( $orderby, $desc_first ) = $sortable[$column_key];
 
-                               if ( $current_orderby == $orderby ) {
-                                       $order = 'asc' == $current_order ? 'desc' : 'asc';
+                               if ( $current_orderby === $orderby ) {
+                                       $order = 'asc' === $current_order ? 'desc' : 'asc';
                                        $class[] = 'sorted';
                                        $class[] = $current_order;
                                } else {
@@ -1065,6 +1124,8 @@ class WP_List_Table {
                $singular = $this->_args['singular'];
 
                $this->display_tablenav( 'top' );
+
+               $this->screen->render_screen_reader_content( 'heading_list' );
 ?>
 <table class="wp-list-table <?php echo implode( ' ', $this->get_table_classes() ); ?>">
        <thead>
@@ -1111,15 +1172,17 @@ class WP_List_Table {
         * @param string $which
         */
        protected function display_tablenav( $which ) {
-               if ( 'top' == $which )
+               if ( 'top' === $which ) {
                        wp_nonce_field( 'bulk-' . $this->_args['plural'] );
-?>
+               }
+               ?>
        <div class="tablenav <?php echo esc_attr( $which ); ?>">
 
+               <?php if ( $this->has_items() ): ?>
                <div class="alignleft actions bulkactions">
                        <?php $this->bulk_actions( $which ); ?>
                </div>
-<?php
+               <?php endif;
                $this->extra_tablenav( $which );
                $this->pagination( $which );
 ?>
@@ -1220,7 +1283,7 @@ class WP_List_Table {
 
                        $attributes = "class='$classes' $data";
 
-                       if ( 'cb' == $column_name ) {
+                       if ( 'cb' === $column_name ) {
                                echo '<th scope="row" class="check-column">';
                                echo $this->column_cb( $item );
                                echo '</th>';
@@ -1255,10 +1318,10 @@ class WP_List_Table {
         * @param object $item        The item being acted upon.
         * @param string $column_name Current column name.
         * @param string $primary     Primary column name.
-        * @return string The row actions output. In this case, an empty string.
+        * @return string The row actions HTML, or an empty string if the current column is the primary column.
         */
        protected function handle_row_actions( $item, $column_name, $primary ) {
-               return $column_name == $primary ? '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __( 'Show more details' ) . '</span></button>' : '';
+               return $column_name === $primary ? '<button type="button" class="toggle-row"><span class="screen-reader-text">' . __( 'Show more details' ) . '</span></button>' : '';
        }
 
        /**
index 9c61fc28ef6da6c612d0ad3948d65e0e3e45b09c..3e0f41cfd16f9fe90506bed69afacbf8a9a02026 100644 (file)
@@ -1,13 +1,29 @@
 <?php
 /**
- * Media Library List Table class.
+ * List Table API: WP_Media_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying media items in a list table.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Table
  */
 class WP_Media_List_Table extends WP_List_Table {
+       /**
+        * Holds the number of pending comments for each post.
+        *
+        * @since 4.4.0
+        * @var array
+        * @access protected
+        */
+       protected $comment_pending_count = array();
 
        private $detached;
 
@@ -57,7 +73,7 @@ class WP_Media_List_Table extends WP_List_Table {
 
                list( $post_mime_types, $avail_post_mime_types ) = wp_edit_attachments_query( $_REQUEST );
 
-               $this->is_trash = isset( $_REQUEST['attachment-filter'] ) && 'trash' == $_REQUEST['attachment-filter'];
+               $this->is_trash = isset( $_REQUEST['attachment-filter'] ) && 'trash' === $_REQUEST['attachment-filter'];
 
                $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode'];
 
@@ -69,43 +85,51 @@ class WP_Media_List_Table extends WP_List_Table {
        }
 
        /**
-        *
-        * @global wpdb  $wpdb
         * @global array $post_mime_types
         * @global array $avail_post_mime_types
         * @return array
         */
        protected function get_views() {
-               global $wpdb, $post_mime_types, $avail_post_mime_types;
+               global $post_mime_types, $avail_post_mime_types;
 
                $type_links = array();
-               $_num_posts = (array) wp_count_attachments();
-               $_total_posts = array_sum($_num_posts) - $_num_posts['trash'];
-               $total_orphans = $wpdb->get_var( "SELECT COUNT( * ) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' AND post_parent < 1" );
-               $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts));
-               $num_posts = array();
-               foreach ( $matches as $type => $reals ) {
-                       foreach ( $reals as $real ) {
-                               $num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real];
-                       }
-               }
-               $selected = empty( $_GET['attachment-filter'] ) ? ' selected="selected"' : '';
-               $type_links['all'] = "<option value=''$selected>" . sprintf( _nx( 'All (%s)', 'All (%s)', $_total_posts, 'uploaded files' ), number_format_i18n( $_total_posts ) ) . '</option>';
+
+               $filter = empty( $_GET['attachment-filter'] ) ? '' : $_GET['attachment-filter'];
+
+               $type_links['all'] = sprintf(
+                       '<option value=""%s>%s</option>',
+                       selected( $filter, true, false ),
+                       __( 'All media items' )
+               );
+
                foreach ( $post_mime_types as $mime_type => $label ) {
-                       if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) )
+                       if ( ! wp_match_mime_types( $mime_type, $avail_post_mime_types ) ) {
                                continue;
+                       }
 
-                       $selected = '';
-                       if ( !empty( $_GET['attachment-filter'] ) && strpos( $_GET['attachment-filter'], 'post_mime_type:' ) === 0 && wp_match_mime_types( $mime_type, str_replace( 'post_mime_type:', '', $_GET['attachment-filter'] ) ) )
-                               $selected = ' selected="selected"';
-                       if ( !empty( $num_posts[$mime_type] ) )
-                               $type_links[$mime_type] = '<option value="post_mime_type:' . esc_attr( $mime_type ) . '"' . $selected . '>' . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), number_format_i18n( $num_posts[$mime_type] )) . '</option>';
+                       $selected = selected(
+                               $filter && 0 === strpos( $filter, 'post_mime_type:' ) &&
+                                       wp_match_mime_types( $mime_type, str_replace( 'post_mime_type:', '', $filter ) ),
+                               true,
+                               false
+                       );
+
+                       $type_links[$mime_type] = sprintf(
+                               '<option value="post_mime_type:%s"%s>%s</option>',
+                               esc_attr( $mime_type ),
+                               $selected,
+                               $label[0]
+                       );
+               }
+               $type_links['detached'] = '<option value="detached"' . ( $this->detached ? ' selected="selected"' : '' ) . '>' . __( 'Unattached' ) . '</option>';
+
+               if ( $this->is_trash || ( defined( 'MEDIA_TRASH') && MEDIA_TRASH ) ) {
+                       $type_links['trash'] = sprintf(
+                               '<option value="trash"%s>%s</option>',
+                               selected( 'trash' === $filter, true, false ),
+                               __( 'Trash' )
+                       );
                }
-               $type_links['detached'] = '<option value="detached"' . ( $this->detached ? ' selected="selected"' : '' ) . '>' . sprintf( _nx( 'Unattached (%s)', 'Unattached (%s)', $total_orphans, 'detached files' ), number_format_i18n( $total_orphans ) ) . '</option>';
-
-               if ( !empty($_num_posts['trash']) )
-                       $type_links['trash'] = '<option value="trash"' . ( (isset($_GET['attachment-filter']) && $_GET['attachment-filter'] == 'trash' ) ? ' selected="selected"' : '') . '>' . sprintf( _nx( 'Trash (%s)', 'Trash (%s)', $_num_posts['trash'], 'uploaded files' ), number_format_i18n( $_num_posts['trash'] ) ) . '</option>';
-
                return $type_links;
        }
 
@@ -127,7 +151,7 @@ class WP_Media_List_Table extends WP_List_Table {
                }
 
                if ( $this->detached )
-                       $actions['attach'] = __( 'Attach to a post' );
+                       $actions['attach'] = __( 'Attach' );
 
                return $actions;
        }
@@ -148,7 +172,8 @@ class WP_Media_List_Table extends WP_List_Table {
                        }
 
                        /** This action is documented in wp-admin/includes/class-wp-posts-list-table.php */
-                       do_action( 'restrict_manage_posts' );
+                       do_action( 'restrict_manage_posts', $this->screen->post_type );
+
                        submit_button( __( 'Filter' ), 'button', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
                }
 
@@ -200,6 +225,8 @@ class WP_Media_List_Table extends WP_List_Table {
                global $mode;
 
                $views = $this->get_views();
+
+               $this->screen->render_screen_reader_content( 'heading_views' );
 ?>
 <div class="wp-filter">
        <div class="filter-items">
@@ -266,13 +293,13 @@ class WP_Media_List_Table extends WP_List_Table {
                $taxonomies = array_filter( $taxonomies, 'taxonomy_exists' );
 
                foreach ( $taxonomies as $taxonomy ) {
-                       if ( 'category' == $taxonomy )
+                       if ( 'category' === $taxonomy ) {
                                $column_key = 'categories';
-                       elseif ( 'post_tag' == $taxonomy )
+                       } elseif ( 'post_tag' === $taxonomy ) {
                                $column_key = 'tags';
-                       else
+                       } else {
                                $column_key = 'taxonomy-' . $taxonomy;
-
+                       }
                        $posts_columns[ $column_key ] = get_taxonomy( $taxonomy )->labels->name;
                }
 
@@ -361,7 +388,13 @@ class WP_Media_List_Table extends WP_List_Table {
                        <?php echo $link_end; ?>
                        <?php _media_states( $post ); ?>
                </strong>
-               <p class="filename"><span class="screen-reader-text"><?php _e( 'File name:' ); ?> </span><?php echo wp_basename( $post->guid ); ?></p>
+               <p class="filename">
+                       <span class="screen-reader-text"><?php _e( 'File name:' ); ?> </span>
+                       <?php
+                       $file = get_attached_file( $post->ID );
+                       echo wp_basename( $file );
+                       ?>
+               </p>
                <?php
        }
 
@@ -401,7 +434,7 @@ class WP_Media_List_Table extends WP_List_Table {
         * @param WP_Post $post The current WP_Post object.
         */
        public function column_date( $post ) {
-               if ( '0000-00-00 00:00:00' == $post->post_date ) {
+               if ( '0000-00-00 00:00:00' === $post->post_date ) {
                        $h_time = __( 'Unpublished' );
                } else {
                        $m_time = $post->post_date;
@@ -447,8 +480,8 @@ class WP_Media_List_Table extends WP_List_Table {
                                        <?php echo $title ?></a><?php
                        } else {
                                echo $title;
-                       } ?></strong>,
-                       <?php echo get_the_time( __( 'Y/m/d' ) ); ?><br />
+                       } ?></strong>
+                       <br />
                        <?php
                        if ( $user_can_edit ):
                                $detach_url = add_query_arg( array(
@@ -480,7 +513,12 @@ class WP_Media_List_Table extends WP_List_Table {
        public function column_comments( $post ) {
                echo '<div class="post-com-count-wrapper">';
 
-               $pending_comments = get_pending_comments_num( $post->ID );
+               if ( isset( $this->comment_pending_count[ $post->ID ] ) ) {
+                       $pending_comments = $this->comment_pending_count[ $post->ID ];
+               } else {
+                       $pending_comments = get_pending_comments_num( $post->ID );
+               }
+
                $this->comments_bubble( $post->ID, $pending_comments );
 
                echo '</div>';
@@ -496,9 +534,9 @@ class WP_Media_List_Table extends WP_List_Table {
         * @param string  $column_name Current column name.
         */
        public function column_default( $post, $column_name ) {
-               if ( 'categories' == $column_name ) {
+               if ( 'categories' === $column_name ) {
                        $taxonomy = 'category';
-               } elseif ( 'tags' == $column_name ) {
+               } elseif ( 'tags' === $column_name ) {
                        $taxonomy = 'post_tag';
                } elseif ( 0 === strpos( $column_name, 'taxonomy-' ) ) {
                        $taxonomy = substr( $column_name, 9 );
@@ -547,14 +585,19 @@ class WP_Media_List_Table extends WP_List_Table {
         * @global WP_Post $post
         */
        public function display_rows() {
-               global $post;
+               global $post, $wp_query;
+
+               $post_ids = wp_list_pluck( $wp_query->posts, 'ID' );
+               reset( $wp_query->posts );
+
+               $this->comment_pending_count = get_pending_comments_num( $post_ids );
 
                add_filter( 'the_title','esc_html' );
 
                while ( have_posts() ) : the_post();
                        if (
                                ( $this->is_trash && $post->post_status != 'trash' )
-                               || ( ! $this->is_trash && $post->post_status == 'trash' )
+                               || ( ! $this->is_trash && $post->post_status === 'trash' )
                        ) {
                                continue;
                        }
index 9fe3f482d40bd72007592a29a90a26837082a1cc..cf3acf9225c28a19838eec50154a9a94790a7c4a 100644 (file)
@@ -1,11 +1,19 @@
 <?php
 /**
- * Sites List Table class.
+ * List Table API: WP_MS_Sites_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying sites in a list table for the network admin.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Table
  */
 class WP_MS_Sites_List_Table extends WP_List_Table {
 
@@ -122,24 +130,24 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
                }
 
                $order_by = isset( $_REQUEST['orderby'] ) ? $_REQUEST['orderby'] : '';
-               if ( $order_by == 'registered' ) {
+               if ( $order_by === 'registered' ) {
                        $query .= ' ORDER BY registered ';
-               } elseif ( $order_by == 'lastupdated' ) {
+               } elseif ( $order_by === 'lastupdated' ) {
                        $query .= ' ORDER BY last_updated ';
-               } elseif ( $order_by == 'blogname' ) {
+               } elseif ( $order_by === 'blogname' ) {
                        if ( is_subdomain_install() ) {
                                $query .= ' ORDER BY domain ';
                        } else {
                                $query .= ' ORDER BY path ';
                        }
-               } elseif ( $order_by == 'blog_id' ) {
+               } elseif ( $order_by === 'blog_id' ) {
                        $query .= ' ORDER BY blog_id ';
                } else {
                        $order_by = null;
                }
 
                if ( isset( $order_by ) ) {
-                       $order = ( isset( $_REQUEST['order'] ) && 'DESC' == strtoupper( $_REQUEST['order'] ) ) ? "DESC" : "ASC";
+                       $order = ( isset( $_REQUEST['order'] ) && 'DESC' === strtoupper( $_REQUEST['order'] ) ) ? "DESC" : "ASC";
                        $query .= $order;
                }
 
@@ -190,7 +198,7 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
 
                parent::pagination( $which );
 
-               if ( 'top' == $which )
+               if ( 'top' === $which )
                        $this->view_switcher( $mode );
        }
 
@@ -251,6 +259,18 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
                <?php endif;
        }
 
+       /**
+        * Handles the ID column output.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $blog Current site.
+        */
+       public function column_id( $blog ) {
+               echo $blog['blog_id'];
+       }
+
        /**
         * Handles the blogname column output.
         *
@@ -307,13 +327,13 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
        public function column_lastupdated( $blog ) {
                global $mode;
 
-               if ( 'list' == $mode ) {
+               if ( 'list' === $mode ) {
                        $date = __( 'Y/m/d' );
                } else {
                        $date = __( 'Y/m/d g:i:s a' );
                }
 
-               echo ( $blog['last_updated'] == '0000-00-00 00:00:00' ) ? __( 'Never' ) : mysql2date( $date, $blog['last_updated'] );
+               echo ( $blog['last_updated'] === '0000-00-00 00:00:00' ) ? __( 'Never' ) : mysql2date( $date, $blog['last_updated'] );
        }
 
        /**
@@ -327,13 +347,13 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
        public function column_registered( $blog ) {
                global $mode;
 
-               if ( 'list' == $mode ) {
+               if ( 'list' === $mode ) {
                        $date = __( 'Y/m/d' );
                } else {
                        $date = __( 'Y/m/d g:i:s a' );
                }
 
-               if ( $blog['registered'] == '0000-00-00 00:00:00' ) {
+               if ( $blog['registered'] === '0000-00-00 00:00:00' ) {
                        echo '&#x2014;';
                } else {
                        echo mysql2date( $date, $blog['registered'] );
@@ -471,33 +491,33 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
                        'visit' => '',
                );
 
-               $actions['edit']        = '<span class="edit"><a href="' . esc_url( network_admin_url( 'site-info.php?id=' . $blog['blog_id'] ) ) . '">' . __( 'Edit' ) . '</a></span>';
-               $actions['backend']     = "<span class='backend'><a href='" . esc_url( get_admin_url( $blog['blog_id'] ) ) . "' class='edit'>" . __( 'Dashboard' ) . '</a></span>';
+               $actions['edit']        = '<a href="' . esc_url( network_admin_url( 'site-info.php?id=' . $blog['blog_id'] ) ) . '">' . __( 'Edit' ) . '</a>';
+               $actions['backend']     = "<a href='" . esc_url( get_admin_url( $blog['blog_id'] ) ) . "' class='edit'>" . __( 'Dashboard' ) . '</a>';
                if ( get_current_site()->blog_id != $blog['blog_id'] ) {
                        if ( $blog['deleted'] == '1' ) {
-                               $actions['activate']   = '<span class="activate"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=activateblog&amp;id=' . $blog['blog_id'] ), 'activateblog_' . $blog['blog_id'] ) ) . '">' . __( 'Activate' ) . '</a></span>';
+                               $actions['activate']   = '<a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=activateblog&amp;id=' . $blog['blog_id'] ), 'activateblog_' . $blog['blog_id'] ) ) . '">' . __( 'Activate' ) . '</a>';
                        } else {
-                               $actions['deactivate'] = '<span class="activate"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deactivateblog&amp;id=' . $blog['blog_id'] ), 'deactivateblog_' . $blog['blog_id'] ) ) . '">' . __( 'Deactivate' ) . '</a></span>';
+                               $actions['deactivate'] = '<a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deactivateblog&amp;id=' . $blog['blog_id'] ), 'deactivateblog_' . $blog['blog_id'] ) ) . '">' . __( 'Deactivate' ) . '</a>';
                        }
 
                        if ( $blog['archived'] == '1' ) {
-                               $actions['unarchive'] = '<span class="archive"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=unarchiveblog&amp;id=' . $blog['blog_id'] ), 'unarchiveblog_' . $blog['blog_id'] ) ) . '">' . __( 'Unarchive' ) . '</a></span>';
+                               $actions['unarchive'] = '<a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=unarchiveblog&amp;id=' . $blog['blog_id'] ), 'unarchiveblog_' . $blog['blog_id'] ) ) . '">' . __( 'Unarchive' ) . '</a>';
                        } else {
-                               $actions['archive']   = '<span class="archive"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=archiveblog&amp;id=' . $blog['blog_id'] ), 'archiveblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Archive', 'verb; site' ) . '</a></span>';
+                               $actions['archive']   = '<a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=archiveblog&amp;id=' . $blog['blog_id'] ), 'archiveblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Archive', 'verb; site' ) . '</a>';
                        }
 
                        if ( $blog['spam'] == '1' ) {
-                               $actions['unspam'] = '<span class="spam"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=unspamblog&amp;id=' . $blog['blog_id'] ), 'unspamblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Not Spam', 'site' ) . '</a></span>';
+                               $actions['unspam'] = '<a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=unspamblog&amp;id=' . $blog['blog_id'] ), 'unspamblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Not Spam', 'site' ) . '</a>';
                        } else {
-                               $actions['spam']   = '<span class="spam"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=spamblog&amp;id=' . $blog['blog_id'] ), 'spamblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Spam', 'site' ) . '</a></span>';
+                               $actions['spam']   = '<a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=spamblog&amp;id=' . $blog['blog_id'] ), 'spamblog_' . $blog['blog_id'] ) ) . '">' . _x( 'Spam', 'site' ) . '</a>';
                        }
 
                        if ( current_user_can( 'delete_site', $blog['blog_id'] ) ) {
-                               $actions['delete'] = '<span class="delete"><a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deleteblog&amp;id=' . $blog['blog_id'] ), 'deleteblog_' . $blog['blog_id'] ) ) . '">' . __( 'Delete' ) . '</a></span>';
+                               $actions['delete'] = '<a href="' . esc_url( wp_nonce_url( network_admin_url( 'sites.php?action=confirm&amp;action2=deleteblog&amp;id=' . $blog['blog_id'] ), 'deleteblog_' . $blog['blog_id'] ) ) . '">' . __( 'Delete' ) . '</a>';
                        }
                }
 
-               $actions['visit']       = "<span class='view'><a href='" . esc_url( get_home_url( $blog['blog_id'], '/' ) ) . "' rel='permalink'>" . __( 'Visit' ) . '</a></span>';
+               $actions['visit']       = "<a href='" . esc_url( get_home_url( $blog['blog_id'], '/' ) ) . "' rel='permalink'>" . __( 'Visit' ) . '</a>';
 
                /**
                 * Filter the action links displayed for each site in the Sites list table.
index 991a07749a4c7151cf61fc502eae643d89f59539..ef1ab91b3d5362f9523b6375fe7536c9ba7cafcf 100644 (file)
@@ -1,11 +1,19 @@
 <?php
 /**
- * MS Themes List Table class.
+ * List Table API: WP_MS_Themes_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying themes in a list table for the network admin.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Table
  */
 class WP_MS_Themes_List_Table extends WP_List_Table {
 
@@ -41,7 +49,7 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
 
                $page = $this->get_pagenum();
 
-               $this->is_site_themes = ( 'site-themes-network' == $this->screen->id ) ? true : false;
+               $this->is_site_themes = ( 'site-themes-network' === $this->screen->id ) ? true : false;
 
                if ( $this->is_site_themes )
                        $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
@@ -145,9 +153,10 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                        $orderby = ucfirst( $orderby );
                        $order = strtoupper( $order );
 
-                       if ( $orderby == 'Name' ) {
-                               if ( 'ASC' == $order )
+                       if ( $orderby === 'Name' ) {
+                               if ( 'ASC' === $order ) {
                                        $this->items = array_reverse( $this->items );
+                               }
                        } else {
                                uasort( $this->items, array( $this, '_order_callback' ) );
                        }
@@ -206,7 +215,7 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                if ( $a == $b )
                        return 0;
 
-               if ( 'DESC' == $order )
+               if ( 'DESC' === $order )
                        return ( $a < $b ) ? 1 : -1;
                else
                        return ( $a < $b ) ? -1 : 1;
@@ -216,10 +225,11 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
         * @access public
         */
        public function no_items() {
-               if ( ! $this->has_items )
+               if ( $this->has_items ) {
                        _e( 'No themes found.' );
-               else
+               } else {
                        _e( 'You do not appear to have any themes available at this time.' );
+               }
        }
 
        /**
@@ -296,7 +306,7 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
                        if ( 'search' != $type ) {
                                $status_links[$type] = sprintf( "<a href='%s' %s>%s</a>",
                                        esc_url( add_query_arg('theme_status', $type, $url) ),
-                                       ( $type == $status ) ? ' class="current"' : '',
+                                       ( $type === $status ) ? ' class="current"' : '',
                                        sprintf( $text, number_format_i18n( $count ) )
                                );
                        }
@@ -459,7 +469,7 @@ class WP_MS_Themes_List_Table extends WP_List_Table {
        public function column_description( $theme ) {
                global $status, $totals;
                if ( $theme->errors() ) {
-                       $pre = $status == 'broken' ? __( 'Broken Theme:' ) . ' ' : '';
+                       $pre = $status === 'broken' ? __( 'Broken Theme:' ) . ' ' : '';
                        echo '<p><strong class="error-message">' . $pre . $theme->errors()->get_error_message() . '</strong></p>';
                }
 
index 962f34aaea4544296b67eaaf02a594526831c10c..9062d9f084959541ffe0dd1f5cd1c506185bc826 100644 (file)
@@ -1,11 +1,19 @@
 <?php
 /**
- * Multisite Users List Table class.
+ * List Table API: WP_MS_Users_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying users in a list table for the network admin.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Table
  */
 class WP_MS_Users_List_Table extends WP_List_Table {
        /**
@@ -42,10 +50,14 @@ class WP_MS_Users_List_Table extends WP_List_Table {
                        'fields' => 'all_with_meta'
                );
 
-               if ( wp_is_large_network( 'users' ) )
+               if ( wp_is_large_network( 'users' ) ) {
                        $args['search'] = ltrim( $args['search'], '*' );
+               } else if ( '' !== $args['search'] ) {
+                       $args['search'] = trim( $args['search'], '*' );
+                       $args['search'] = '*' . $args['search'] . '*';
+               }
 
-               if ( $role == 'super' ) {
+               if ( $role === 'super' ) {
                        $logins = implode( "', '", get_super_admins() );
                        $args['include'] = $wpdb->get_col( "SELECT ID FROM $wpdb->users WHERE user_login IN ('$logins')" );
                }
@@ -71,6 +83,9 @@ class WP_MS_Users_List_Table extends WP_List_Table {
 
                $mode = empty( $_REQUEST['mode'] ) ? 'list' : $_REQUEST['mode'];
 
+               /** This filter is documented in wp-admin/includes/class-wp-users-list-table.php */
+               $args = apply_filters( 'users_list_table_query_args', $args );
+
                // Query the user IDs for this page
                $wp_user_search = new WP_User_Query( $args );
 
@@ -118,7 +133,7 @@ class WP_MS_Users_List_Table extends WP_List_Table {
                $class = $role != 'super' ? ' class="current"' : '';
                $role_links = array();
                $role_links['all'] = "<a href='" . network_admin_url('users.php') . "'$class>" . sprintf( _nx( 'All <span class="count">(%s)</span>', 'All <span class="count">(%s)</span>', $total_users, 'users' ), number_format_i18n( $total_users ) ) . '</a>';
-               $class = $role == 'super' ? ' class="current"' : '';
+               $class = $role === 'super' ? ' class="current"' : '';
                $role_links['super'] = "<a href='" . network_admin_url('users.php?role=super') . "'$class>" . sprintf( _n( 'Super Admin <span class="count">(%s)</span>', 'Super Admins <span class="count">(%s)</span>', $total_admins ), number_format_i18n( $total_admins ) ) . '</a>';
 
                return $role_links;
@@ -133,8 +148,9 @@ class WP_MS_Users_List_Table extends WP_List_Table {
 
                parent::pagination ( $which );
 
-               if ( 'top' == $which )
+               if ( 'top' === $which ) {
                        $this->view_switcher( $mode );
+               }
        }
 
        /**
@@ -146,7 +162,7 @@ class WP_MS_Users_List_Table extends WP_List_Table {
                        'cb'         => '<input type="checkbox" />',
                        'username'   => __( 'Username' ),
                        'name'       => __( 'Name' ),
-                       'email'      => __( 'E-mail' ),
+                       'email'      => __( 'Email' ),
                        'registered' => _x( 'Registered', 'user' ),
                        'blogs'      => __( 'Sites' )
                );
@@ -183,12 +199,27 @@ class WP_MS_Users_List_Table extends WP_List_Table {
         * @param WP_User $user The current WP_User object.
         */
        public function column_cb( $user ) {
+               if ( is_super_admin( $user->ID ) ) {
+                       return;
+               }
                ?>
                <label class="screen-reader-text" for="blog_<?php echo $user->ID; ?>"><?php echo sprintf( __( 'Select %s' ), $user->user_login ); ?></label>
                <input type="checkbox" id="blog_<?php echo $user->ID ?>" name="allusers[]" value="<?php echo esc_attr( $user->ID ) ?>" />
                <?php
        }
 
+       /**
+        * Handles the ID column output.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param WP_User $user The current WP_User object.
+        */
+       public function column_id( $user ) {
+               echo $user->ID;
+       }
+
        /**
         * Handles the username column output.
         *
@@ -248,7 +279,7 @@ class WP_MS_Users_List_Table extends WP_List_Table {
         */
        public function column_registered( $user ) {
                global $mode;
-               if ( 'list' == $mode ) {
+               if ( 'list' === $mode ) {
                        $date = __( 'Y/m/d' );
                } else {
                        $date = __( 'Y/m/d g:i:s a' );
@@ -291,7 +322,7 @@ class WP_MS_Users_List_Table extends WP_List_Table {
                                continue;
                        }
 
-                       $path   = ( $val->path == '/' ) ? '' : $val->path;
+                       $path   = ( $val->path === '/' ) ? '' : $val->path;
                        echo '<span class="site-' . $val->site_id . '" >';
                        echo '<a href="'. esc_url( network_admin_url( 'site-info.php?id=' . $val->userblog_id ) ) .'">' . str_replace( '.' . get_current_site()->domain, '', $val->domain . $path ) . '</a>';
                        echo ' <small class="row-actions">';
index 45a525128573a080272744892d17d61a2c4a6d2a..ba8445c1bdd02d2478c6868dceff89f76d508385 100644 (file)
@@ -1,11 +1,19 @@
 <?php
 /**
- * Plugin Installer List Table class.
+ * List Table API: WP_Plugin_Install_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying plugins to install in a list table.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Table
  */
 class WP_Plugin_Install_List_Table extends WP_List_Table {
 
@@ -77,8 +85,9 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                // These are the tabs which are shown on the page
                $tabs = array();
 
-               if ( 'search' == $tab )
+               if ( 'search' === $tab ) {
                        $tabs['search'] = __( 'Search Results' );
+               }
                $tabs['featured']  = _x( 'Featured', 'Plugin Installer' );
                $tabs['popular']   = _x( 'Popular', 'Plugin Installer' );
                $tabs['recommended']   = _x( 'Recommended', 'Plugin Installer' );
@@ -238,7 +247,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
 
                $display_tabs = array();
                foreach ( (array) $tabs as $action => $text ) {
-                       $class = ( $action == $tab ) ? ' current' : '';
+                       $class = ( $action === $tab ) ? ' current' : '';
                        $href = self_admin_url('plugin-install.php?tab=' . $action);
                        $display_tabs['plugin-install-'.$action] = "<a href='$href' class='$class'>$text</a>";
                }
@@ -257,6 +266,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                /** This filter is documented in wp-admin/inclues/class-wp-list-table.php */
                $views = apply_filters( "views_{$this->screen->id}", $views );
 
+               $this->screen->render_screen_reader_content( 'heading_views' );
 ?>
 <div class="wp-filter">
        <ul class="filter-links">
@@ -291,7 +301,9 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
 
 ?>
 <div class="wp-list-table <?php echo implode( ' ', $this->get_table_classes() ); ?>">
-
+<?php
+       $this->screen->render_screen_reader_content( 'heading_list' );
+?>
        <div id="the-list"<?php echo $data_attr; ?>>
                <?php $this->display_rows_or_placeholder(); ?>
        </div>
@@ -310,7 +322,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                        return;
                }
 
-               if ( 'top' ==  $which ) {
+               if ( 'top' === $which ) {
                        wp_referer_field();
                ?>
                        <div class="tablenav top">
@@ -367,7 +379,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                        return 0;
                }
 
-               if ( 'DESC' == $this->order ) {
+               if ( 'DESC' === $this->order ) {
                        return ( $a < $b ) ? 1 : -1;
                } else {
                        return ( $a < $b ) ? -1 : 1;
@@ -491,9 +503,13 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
                ?>
                <div class="plugin-card plugin-card-<?php echo sanitize_html_class( $plugin['slug'] ); ?>">
                        <div class="plugin-card-top">
-                               <a href="<?php echo esc_url( $details_link ); ?>" class="thickbox plugin-icon"><img src="<?php echo esc_attr( $plugin_icon_url ) ?>" /></a>
                                <div class="name column-name">
-                                       <h4><a href="<?php echo esc_url( $details_link ); ?>" class="thickbox"><?php echo $title; ?></a></h4>
+                                       <h3>
+                                               <a href="<?php echo esc_url( $details_link ); ?>" class="thickbox">
+                                               <?php echo $title; ?>
+                                               <img src="<?php echo esc_attr( $plugin_icon_url ) ?>" class="plugin-icon" alt="">
+                                               </a>
+                                       </h3>
                                </div>
                                <div class="action-links">
                                        <?php
index 781330cbdf3f9175e95756a7a85a90b4984ad70c..f87f3218bdec85d88c8f24f057294ae0b569ca7a 100644 (file)
@@ -1,11 +1,19 @@
 <?php
 /**
- * Plugins List Table class.
+ * List Table API: WP_Plugins_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying installed plugins in a list table.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Table
  */
 class WP_Plugins_List_Table extends WP_List_Table {
 
@@ -127,14 +135,41 @@ class WP_Plugins_List_Table extends WP_List_Table {
                        }
                }
 
+               if ( ! $screen->in_admin( 'network' ) ) {
+                       $show = current_user_can( 'manage_network_plugins' );
+                       /**
+                        * Filter whether to display network-active plugins alongside plugins active for the current site.
+                        *
+                        * This also controls the display of inactive network-only plugins (plugins with
+                        * "Network: true" in the plugin header).
+                        *
+                        * Plugins cannot be network-activated or network-deactivated from this screen.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param bool $show Whether to show network-active plugins. Default is whether the current
+                        *                   user can manage network plugins (ie. a Super Admin).
+                        */
+                       $show_network_active = apply_filters( 'show_network_active_plugins', $show );
+               }
+
                set_transient( 'plugin_slugs', array_keys( $plugins['all'] ), DAY_IN_SECONDS );
 
-               if ( ! $screen->in_admin( 'network' ) ) {
+               if ( $screen->in_admin( 'network' ) ) {
+                       $recently_activated = get_site_option( 'recently_activated', array() );
+               } else {
                        $recently_activated = get_option( 'recently_activated', array() );
+               }
+
+               foreach ( $recently_activated as $key => $time ) {
+                       if ( $time + WEEK_IN_SECONDS < time() ) {
+                               unset( $recently_activated[$key] );
+                       }
+               }
 
-                       foreach ( $recently_activated as $key => $time )
-                               if ( $time + WEEK_IN_SECONDS < time() )
-                                       unset( $recently_activated[$key] );
+               if ( $screen->in_admin( 'network' ) ) {
+                       update_site_option( 'recently_activated', $recently_activated );
+               } else {
                        update_option( 'recently_activated', $recently_activated );
                }
 
@@ -159,19 +194,29 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
                        // Filter into individual sections
                        if ( is_multisite() && ! $screen->in_admin( 'network' ) && is_network_only_plugin( $plugin_file ) && ! is_plugin_active( $plugin_file ) ) {
-                               // On the non-network screen, filter out network-only plugins as long as they're not individually activated
-                               unset( $plugins['all'][ $plugin_file ] );
+                               if ( $show_network_active ) {
+                                       // On the non-network screen, show inactive network-only plugins if allowed
+                                       $plugins['inactive'][ $plugin_file ] = $plugin_data;
+                               } else {
+                                       // On the non-network screen, filter out network-only plugins as long as they're not individually active
+                                       unset( $plugins['all'][ $plugin_file ] );
+                               }
                        } elseif ( ! $screen->in_admin( 'network' ) && is_plugin_active_for_network( $plugin_file ) ) {
-                               // On the non-network screen, filter out network activated plugins
-                               unset( $plugins['all'][ $plugin_file ] );
+                               if ( $show_network_active ) {
+                                       // On the non-network screen, show network-active plugins if allowed
+                                       $plugins['active'][ $plugin_file ] = $plugin_data;
+                               } else {
+                                       // On the non-network screen, filter out network-active plugins
+                                       unset( $plugins['all'][ $plugin_file ] );
+                               }
                        } elseif ( ( ! $screen->in_admin( 'network' ) && is_plugin_active( $plugin_file ) )
                                || ( $screen->in_admin( 'network' ) && is_plugin_active_for_network( $plugin_file ) ) ) {
                                // On the non-network screen, populate the active list with plugins that are individually activated
                                // On the network-admin screen, populate the active list with plugins that are network activated
                                $plugins['active'][ $plugin_file ] = $plugin_data;
                        } else {
-                               if ( ! $screen->in_admin( 'network' ) && isset( $recently_activated[ $plugin_file ] ) ) {
-                                       // On the non-network screen, populate the recently activated list with plugins that have been recently activated
+                               if ( isset( $recently_activated[ $plugin_file ] ) ) {
+                                       // Populate the recently activated list with plugins that have been recently activated
                                        $plugins['recently_activated'][ $plugin_file ] = $plugin_data;
                                }
                                // Populate the inactive list with plugins that aren't activated
@@ -257,7 +302,7 @@ class WP_Plugins_List_Table extends WP_List_Table {
                if ( $a == $b )
                        return 0;
 
-               if ( 'DESC' == $order ) {
+               if ( 'DESC' === $order ) {
                        return strcasecmp( $b, $a );
                } else {
                        return strcasecmp( $a, $b );
@@ -337,10 +382,10 @@ class WP_Plugins_List_Table extends WP_List_Table {
                                        break;
                        }
 
-                       if ( 'search' != $type ) {
+                       if ( 'search' !== $type ) {
                                $status_links[$type] = sprintf( "<a href='%s' %s>%s</a>",
                                        add_query_arg('plugin_status', $type, 'plugins.php'),
-                                       ( $type == $status ) ? ' class="current"' : '',
+                                       ( $type === $status ) ? ' class="current"' : '',
                                        sprintf( $text, number_format_i18n( $count ) )
                                        );
                        }
@@ -400,13 +445,19 @@ class WP_Plugins_List_Table extends WP_List_Table {
 
                echo '<div class="alignleft actions">';
 
-               if ( ! $this->screen->in_admin( 'network' ) && 'recently_activated' == $status )
+               if ( 'recently_activated' == $status ) {
                        submit_button( __( 'Clear List' ), 'button', 'clear-recent-list', false );
-               elseif ( 'top' == $which && 'mustuse' == $status )
-                       echo '<p>' . sprintf( __( 'Files in the <code>%s</code> directory are executed automatically.' ), str_replace( ABSPATH, '/', WPMU_PLUGIN_DIR ) ) . '</p>';
-               elseif ( 'top' == $which && 'dropins' == $status )
-                       echo '<p>' . sprintf( __( 'Drop-ins are advanced plugins in the <code>%s</code> directory that replace WordPress functionality when present.' ), str_replace( ABSPATH, '', WP_CONTENT_DIR ) ) . '</p>';
-
+               } elseif ( 'top' === $which && 'mustuse' === $status ) {
+                       /* translators: %s: mu-plugins directory name */
+                       echo '<p>' . sprintf( __( 'Files in the %s directory are executed automatically.' ),
+                               '<code>' . str_replace( ABSPATH, '/', WPMU_PLUGIN_DIR ) . '</code>'
+                       ) . '</p>';
+               } elseif ( 'top' === $which && 'dropins' === $status ) {
+                       /* translators: %s: wp-content directory name */
+                       echo '<p>' . sprintf( __( 'Drop-ins are advanced plugins in the %s directory that replace WordPress functionality when present.' ),
+                               '<code>' . str_replace( ABSPATH, '', WP_CONTENT_DIR ) . '</code>'
+                       ) . '</p>';
+               }
                echo '</div>';
        }
 
@@ -458,9 +509,13 @@ class WP_Plugins_List_Table extends WP_List_Table {
                        'delete' => '',
                );
 
-               if ( 'mustuse' == $context ) {
+               // Do not restrict by default
+               $restrict_network_active = false;
+               $restrict_network_only = false;
+
+               if ( 'mustuse' === $context ) {
                        $is_active = true;
-               } elseif ( 'dropins' == $context ) {
+               } elseif ( 'dropins' === $context ) {
                        $dropins = _get_dropins();
                        $plugin_name = $plugin_file;
                        if ( $plugin_file != $plugin_data['Name'] )
@@ -473,15 +528,23 @@ class WP_Plugins_List_Table extends WP_List_Table {
                                $description = '<p><strong>' . $dropins[ $plugin_file ][0] . '</strong></p>';
                        } else {
                                $is_active = false;
-                               $description = '<p><strong>' . $dropins[ $plugin_file ][0] . ' <span class="error-message">' . __('Inactive:') . '</span></strong> ' . sprintf( __( 'Requires <code>%s</code> in <code>wp-config.php</code>.' ), "define('" . $dropins[ $plugin_file ][1] . "', true);" ) . '</p>';
+                               $description = '<p><strong>' . $dropins[ $plugin_file ][0] . ' <span class="error-message">' . __( 'Inactive:' ) . '</span></strong> ' .
+                                       /* translators: 1: drop-in constant name, 2: wp-config.php */
+                                       sprintf( __( 'Requires %1$s in %2$s file.' ),
+                                               "<code>define('" . $dropins[ $plugin_file ][1] . "', true);</code>",
+                                               '<code>wp-config.php</code>'
+                                       ) . '</p>';
                        }
                        if ( $plugin_data['Description'] )
                                $description .= '<p>' . $plugin_data['Description'] . '</p>';
                } else {
-                       if ( $screen->in_admin( 'network' ) )
+                       if ( $screen->in_admin( 'network' ) ) {
                                $is_active = is_plugin_active_for_network( $plugin_file );
-                       else
+                       } else {
                                $is_active = is_plugin_active( $plugin_file );
+                               $restrict_network_active = ( is_multisite() && is_plugin_active_for_network( $plugin_file ) );
+                               $restrict_network_only = ( is_multisite() && is_network_only_plugin( $plugin_file ) && ! $is_active );
+                       }
 
                        if ( $screen->in_admin( 'network' ) ) {
                                if ( $is_active ) {
@@ -500,7 +563,15 @@ class WP_Plugins_List_Table extends WP_List_Table {
                                        }
                                }
                        } else {
-                               if ( $is_active ) {
+                               if ( $restrict_network_active ) {
+                                       $actions = array(
+                                               'network_active' => __( 'Network Active' ),
+                                       );
+                               } elseif ( $restrict_network_only ) {
+                                       $actions = array(
+                                               'network_only' => __( 'Network Only' ),
+                                       );
+                               } elseif ( $is_active ) {
                                        /* translators: %s: plugin name */
                                        $actions['deactivate'] = '<a href="' . wp_nonce_url( 'plugins.php?action=deactivate&amp;plugin=' . $plugin_file . '&amp;plugin_status=' . $context . '&amp;paged=' . $page . '&amp;s=' . $s, 'deactivate-plugin_' . $plugin_file ) . '" aria-label="' . esc_attr( sprintf( __( 'Deactivate %s' ), $plugin_data['Name'] ) ) . '">' . __( 'Deactivate' ) . '</a>';
                                } else {
@@ -521,59 +592,90 @@ class WP_Plugins_List_Table extends WP_List_Table {
                        }
                } // end if $context
 
-               $prefix = $screen->in_admin( 'network' ) ? 'network_admin_' : '';
+               $actions = array_filter( $actions );
 
-               /**
-                * Filter the action links displayed for each plugin in the Plugins list table.
-                *
-                * The dynamic portion of the hook name, `$prefix`, refers to the context the
-                * action links are displayed in. The 'network_admin_' prefix is used if the
-                * current screen is the Network plugins list table. The prefix is empty ('')
-                * if the current screen is the site plugins list table.
-                *
-                * The default action links for the Network plugins list table include
-                * 'Network Activate', 'Network Deactivate', 'Edit', and 'Delete'.
-                *
-                * The default action links for the site plugins list table include
-                * 'Activate', 'Deactivate', and 'Edit', for a network site, and
-                * 'Activate', 'Deactivate', 'Edit', and 'Delete' for a single site.
-                *
-                * @since 2.5.0
-                *
-                * @param array  $actions     An array of plugin action links.
-                * @param string $plugin_file Path to the plugin file.
-                * @param array  $plugin_data An array of plugin data.
-                * @param string $context     The plugin context. Defaults are 'All', 'Active',
-                *                            'Inactive', 'Recently Activated', 'Upgrade',
-                *                            'Must-Use', 'Drop-ins', 'Search'.
-                */
-               $actions = apply_filters( $prefix . 'plugin_action_links', array_filter( $actions ), $plugin_file, $plugin_data, $context );
+               if ( $screen->in_admin( 'network' ) ) {
 
-               /**
-                * Filter the list of action links displayed for a specific plugin.
-                *
-                * The first dynamic portion of the hook name, $prefix, refers to the context
-                * the action links are displayed in. The 'network_admin_' prefix is used if the
-                * current screen is the Network plugins list table. The prefix is empty ('')
-                * if the current screen is the site plugins list table.
-                *
-                * The second dynamic portion of the hook name, $plugin_file, refers to the path
-                * to the plugin file, relative to the plugins directory.
-                *
-                * @since 2.7.0
-                *
-                * @param array  $actions     An array of plugin action links.
-                * @param string $plugin_file Path to the plugin file.
-                * @param array  $plugin_data An array of plugin data.
-                * @param string $context     The plugin context. Defaults are 'All', 'Active',
-                *                            'Inactive', 'Recently Activated', 'Upgrade',
-                *                            'Must-Use', 'Drop-ins', 'Search'.
-                */
-               $actions = apply_filters( $prefix . "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context );
+                       /**
+                        * Filter the action links displayed for each plugin in the Network Admin Plugins list table.
+                        *
+                        * The default action links for the Network plugins list table include
+                        * 'Network Activate', 'Network Deactivate', 'Edit', and 'Delete'.
+                        *
+                        * @since 3.1.0 As `{$prefix}_plugin_action_links`
+                        * @since 4.4.0
+                        *
+                        * @param array  $actions     An array of plugin action links.
+                        * @param string $plugin_file Path to the plugin file relative to the plugins directory.
+                        * @param array  $plugin_data An array of plugin data.
+                        * @param string $context     The plugin context. Defaults are 'All', 'Active',
+                        *                            'Inactive', 'Recently Activated', 'Upgrade',
+                        *                            'Must-Use', 'Drop-ins', 'Search'.
+                        */
+                       $actions = apply_filters( 'network_admin_plugin_action_links', $actions, $plugin_file, $plugin_data, $context );
+
+                       /**
+                        * Filter the list of action links displayed for a specific plugin in the Network Admin Plugins list table.
+                        *
+                        * The dynamic portion of the hook name, $plugin_file, refers to the path
+                        * to the plugin file, relative to the plugins directory.
+                        *
+                        * @since 3.1.0 As `{$prefix}_plugin_action_links_{$plugin_file}`
+                        * @since 4.4.0
+                        *
+                        * @param array  $actions     An array of plugin action links.
+                        * @param string $plugin_file Path to the plugin file relative to the plugins directory.
+                        * @param array  $plugin_data An array of plugin data.
+                        * @param string $context     The plugin context. Defaults are 'All', 'Active',
+                        *                            'Inactive', 'Recently Activated', 'Upgrade',
+                        *                            'Must-Use', 'Drop-ins', 'Search'.
+                        */
+                       $actions = apply_filters( "network_admin_plugin_action_links_{$plugin_file}", $actions, $plugin_file, $plugin_data, $context );
+
+               } else {
+
+                       /**
+                        * Filter the action links displayed for each plugin in the Plugins list table.
+                        *
+                        * The default action links for the site plugins list table include
+                        * 'Activate', 'Deactivate', and 'Edit', for a network site, and
+                        * 'Activate', 'Deactivate', 'Edit', and 'Delete' for a single site.
+                        *
+                        * @since 2.5.0 As `{$prefix}_plugin_action_links`
+                        * @since 4.4.0
+                        *
+                        * @param array  $actions     An array of plugin action links.
+                        * @param string $plugin_file Path to the plugin file relative to the plugins directory.
+                        * @param array  $plugin_data An array of plugin data.
+                        * @param string $context     The plugin context. Defaults are 'All', 'Active',
+                        *                            'Inactive', 'Recently Activated', 'Upgrade',
+                        *                            'Must-Use', 'Drop-ins', 'Search'.
+                        */
+                       $actions = apply_filters( 'plugin_action_links', $actions, $plugin_file, $plugin_data, $context );
+
+                       /**
+                        * Filter the list of action links displayed for a specific plugin in the Plugins list table.
+                        *
+                        * The dynamic portion of the hook name, $plugin_file, refers to the path
+                        * to the plugin file, relative to the plugins directory.
+                        *
+                        * @since 2.7.0 As `{$prefix}_plugin_action_links_{$plugin_file}`
+                        * @since 4.4.0
+                        *
+                        * @param array  $actions     An array of plugin action links.
+                        * @param string $plugin_file Path to the plugin file relative to the plugins directory.
+                        * @param array  $plugin_data An array of plugin data.
+                        * @param string $context     The plugin context. Defaults are 'All', 'Active',
+                        *                            'Inactive', 'Recently Activated', 'Upgrade',
+                        *                            'Must-Use', 'Drop-ins', 'Search'.
+                        */
+                       $actions = apply_filters( "plugin_action_links_{$plugin_file}", $actions, $plugin_file, $plugin_data, $context );
+
+               }
 
                $class = $is_active ? 'active' : 'inactive';
                $checkbox_id =  "checkbox_" . md5($plugin_data['Name']);
-               if ( in_array( $status, array( 'mustuse', 'dropins' ) ) ) {
+               if ( $restrict_network_active || $restrict_network_only || in_array( $status, array( 'mustuse', 'dropins' ) ) ) {
                        $checkbox = '';
                } else {
                        $checkbox = "<label class='screen-reader-text' for='" . $checkbox_id . "' >" . sprintf( __( 'Select %s' ), $plugin_data['Name'] ) . "</label>"
diff --git a/wp-admin/includes/class-wp-post-comments-list-table.php b/wp-admin/includes/class-wp-post-comments-list-table.php
new file mode 100644 (file)
index 0000000..719d655
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+/**
+ * List Table API: WP_Post_Comments_List_Table class
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement displaying post comments in a list table.
+ *
+ * @since 3.1.0
+ * @access private
+ *
+ * @see WP_Comments_List_Table
+ */
+class WP_Post_Comments_List_Table extends WP_Comments_List_Table {
+
+       /**
+        *
+        * @return array
+        */
+       protected function get_column_info() {
+               return array(
+                       array(
+                               'author'   => __( 'Author' ),
+                               'comment'  => _x( 'Comment', 'column name' ),
+                       ),
+                       array(),
+                       array(),
+                       'comment',
+               );
+       }
+
+       /**
+        *
+        * @return array
+        */
+       protected function get_table_classes() {
+               $classes = parent::get_table_classes();
+               $classes[] = 'wp-list-table';
+               $classes[] = 'comments-box';
+               return $classes;
+       }
+
+       /**
+        *
+        * @param bool $output_empty
+        */
+       public function display( $output_empty = false ) {
+               $singular = $this->_args['singular'];
+
+               wp_nonce_field( "fetch-list-" . get_class( $this ), '_ajax_fetch_list_nonce' );
+?>
+<table class="<?php echo implode( ' ', $this->get_table_classes() ); ?>" style="display:none;">
+       <tbody id="the-comment-list"<?php
+               if ( $singular ) {
+                       echo " data-wp-lists='list:$singular'";
+               } ?>>
+               <?php if ( ! $output_empty ) {
+                       $this->display_rows_or_placeholder();
+               } ?>
+       </tbody>
+</table>
+<?php
+       }
+
+       /**
+        *
+        * @param bool $comment_status
+        * @return int
+        */
+       public function get_per_page( $comment_status = false ) {
+               return 10;
+       }
+}
index 04639347d2aedb2a9d8194114da571b37bc16e84..d52ebc983213738685edf66acc1e74e7a19e32d4 100644 (file)
@@ -1,16 +1,24 @@
 <?php
 /**
- * Posts List Table class.
+ * List Table API: WP_Posts_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying posts in a list table.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Table
  */
 class WP_Posts_List_Table extends WP_List_Table {
 
        /**
-        * Whether the items should be displayed hierarchically or linearly
+        * Whether the items should be displayed hierarchically or linearly.
         *
         * @since 3.1.0
         * @var bool
@@ -19,16 +27,16 @@ class WP_Posts_List_Table extends WP_List_Table {
        protected $hierarchical_display;
 
        /**
-        * Holds the number of pending comments for each post
+        * Holds the number of pending comments for each post.
         *
         * @since 3.1.0
-        * @var int
+        * @var array
         * @access protected
         */
        protected $comment_pending_count;
 
        /**
-        * Holds the number of posts for this user
+        * Holds the number of posts for this user.
         *
         * @since 3.1.0
         * @var int
@@ -77,22 +85,25 @@ class WP_Posts_List_Table extends WP_List_Table {
                        'screen' => isset( $args['screen'] ) ? $args['screen'] : null,
                ) );
 
-               $post_type = $this->screen->post_type;
+               $post_type        = $this->screen->post_type;
                $post_type_object = get_post_type_object( $post_type );
 
-               if ( !current_user_can( $post_type_object->cap->edit_others_posts ) ) {
-                       $exclude_states = get_post_stati( array( 'show_in_admin_all_list' => false ) );
-                       $this->user_posts_count = $wpdb->get_var( $wpdb->prepare( "
-                               SELECT COUNT( 1 ) FROM $wpdb->posts
-                               WHERE post_type = %s AND post_status NOT IN ( '" . implode( "','", $exclude_states ) . "' )
-                               AND post_author = %d
-                       ", $post_type, get_current_user_id() ) );
-
-                       if ( $this->user_posts_count && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['all_posts'] ) && empty( $_REQUEST['author'] ) && empty( $_REQUEST['show_sticky'] ) )
-                               $_GET['author'] = get_current_user_id();
+               $exclude_states   = get_post_stati( array(
+                       'show_in_admin_all_list' => false,
+               ) );
+               $this->user_posts_count = intval( $wpdb->get_var( $wpdb->prepare( "
+                       SELECT COUNT( 1 )
+                       FROM $wpdb->posts
+                       WHERE post_type = %s
+                       AND post_status NOT IN ( '" . implode( "','", $exclude_states ) . "' )
+                       AND post_author = %d
+               ", $post_type, get_current_user_id() ) ) );
+
+               if ( $this->user_posts_count && ! current_user_can( $post_type_object->cap->edit_others_posts ) && empty( $_REQUEST['post_status'] ) && empty( $_REQUEST['all_posts'] ) && empty( $_REQUEST['author'] ) && empty( $_REQUEST['show_sticky'] ) ) {
+                       $_GET['author'] = get_current_user_id();
                }
 
-               if ( 'post' == $post_type && $sticky_posts = get_option( 'sticky_posts' ) ) {
+               if ( 'post' === $post_type && $sticky_posts = get_option( 'sticky_posts' ) ) {
                        $sticky_posts = implode( ', ', array_map( 'absint', (array) $sticky_posts ) );
                        $this->sticky_posts_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT( 1 ) FROM $wpdb->posts WHERE post_type = %s AND post_status NOT IN ('trash', 'auto-draft') AND ID IN ($sticky_posts)", $post_type ) );
                }
@@ -127,11 +138,10 @@ class WP_Posts_List_Table extends WP_List_Table {
        public function prepare_items() {
                global $avail_post_stati, $wp_query, $per_page, $mode;
 
+               // is going to call wp()
                $avail_post_stati = wp_edit_posts_query();
 
-               $this->set_hierarchical_display( is_post_type_hierarchical( $this->screen->post_type ) && 'menu_order title' == $wp_query->query['orderby'] );
-
-               $total_items = $this->hierarchical_display ? $wp_query->post_count : $wp_query->found_posts;
+               $this->set_hierarchical_display( is_post_type_hierarchical( $this->screen->post_type ) && 'menu_order title' === $wp_query->query['orderby'] );
 
                $post_type = $this->screen->post_type;
                $per_page = $this->get_items_per_page( 'edit_' . $post_type . '_per_page' );
@@ -139,23 +149,40 @@ class WP_Posts_List_Table extends WP_List_Table {
                /** This filter is documented in wp-admin/includes/post.php */
                $per_page = apply_filters( 'edit_posts_per_page', $per_page, $post_type );
 
-               if ( $this->hierarchical_display )
-                       $total_pages = ceil( $total_items / $per_page );
-               else
-                       $total_pages = $wp_query->max_num_pages;
+               if ( $this->hierarchical_display ) {
+                       $total_items = $wp_query->post_count;
+               } elseif ( $wp_query->found_posts || $this->get_pagenum() === 1 ) {
+                       $total_items = $wp_query->found_posts;
+               } else {
+                       $post_counts = (array) wp_count_posts( $post_type, 'readable' );
+
+                       if ( isset( $_REQUEST['post_status'] ) && in_array( $_REQUEST['post_status'] , $avail_post_stati ) ) {
+                               $total_items = $post_counts[ $_REQUEST['post_status'] ];
+                       } elseif ( isset( $_REQUEST['show_sticky'] ) && $_REQUEST['show_sticky'] ) {
+                               $total_items = $this->sticky_posts_count;
+                       } elseif ( isset( $_GET['author'] ) && $_GET['author'] == get_current_user_id() ) {
+                               $total_items = $this->user_posts_count;
+                       } else {
+                               $total_items = array_sum( $post_counts );
+
+                               // Subtract post types that are not included in the admin all list.
+                               foreach ( get_post_stati( array( 'show_in_admin_all_list' => false ) ) as $state ) {
+                                       $total_items -= $post_counts[ $state ];
+                               }
+                       }
+               }
 
                if ( ! empty( $_REQUEST['mode'] ) ) {
-                       $mode = $_REQUEST['mode'] == 'excerpt' ? 'excerpt' : 'list';
+                       $mode = $_REQUEST['mode'] === 'excerpt' ? 'excerpt' : 'list';
                        set_user_setting ( 'posts_list_mode', $mode );
                } else {
                        $mode = get_user_setting ( 'posts_list_mode', 'list' );
                }
 
-               $this->is_trash = isset( $_REQUEST['post_status'] ) && $_REQUEST['post_status'] == 'trash';
+               $this->is_trash = isset( $_REQUEST['post_status'] ) && $_REQUEST['post_status'] === 'trash';
 
                $this->set_pagination_args( array(
                        'total_items' => $total_items,
-                       'total_pages' => $total_pages,
                        'per_page' => $per_page
                ) );
        }
@@ -172,7 +199,7 @@ class WP_Posts_List_Table extends WP_List_Table {
         * @access public
         */
        public function no_items() {
-               if ( isset( $_REQUEST['post_status'] ) && 'trash' == $_REQUEST['post_status'] )
+               if ( isset( $_REQUEST['post_status'] ) && 'trash' === $_REQUEST['post_status'] )
                        echo get_post_type_object( $this->screen->post_type )->labels->not_found_in_trash;
                else
                        echo get_post_type_object( $this->screen->post_type )->labels->not_found;
@@ -186,11 +213,46 @@ class WP_Posts_List_Table extends WP_List_Table {
         * @return bool Whether the current view is the "All" view.
         */
        protected function is_base_request() {
-               if ( empty( $_GET ) ) {
+               $vars = $_GET;
+               unset( $vars['paged'] );
+
+               if ( empty( $vars ) ) {
                        return true;
-               } elseif ( 1 === count( $_GET ) && ! empty( $_GET['post_type'] ) ) {
-                       return $this->screen->post_type === $_GET['post_type'];
+               } elseif ( 1 === count( $vars ) && ! empty( $vars['post_type'] ) ) {
+                       return $this->screen->post_type === $vars['post_type'];
                }
+
+               return 1 === count( $vars ) && ! empty( $vars['mode'] );
+       }
+
+       /**
+        * Helper to create links to edit.php with params.
+        *
+        * @since 4.4.0
+        * @access protected
+        *
+        * @param array  $args  URL parameters for the link.
+        * @param string $label Link text.
+        * @param string $class Optional. Class attribute. Default empty string.
+        * @return string The formatted link string.
+        */
+       protected function get_edit_link( $args, $label, $class = '' ) {
+               $url = add_query_arg( $args, 'edit.php' );
+
+               $class_html = '';
+               if ( ! empty( $class ) ) {
+                        $class_html = sprintf(
+                               ' class="%s"',
+                               esc_attr( $class )
+                       );
+               }
+
+               return sprintf(
+                       '<a href="%s"%s>%s</a>',
+                       esc_url( $url ),
+                       $class_html,
+                       $label
+               );
        }
 
        /**
@@ -209,27 +271,46 @@ class WP_Posts_List_Table extends WP_List_Table {
 
                $status_links = array();
                $num_posts = wp_count_posts( $post_type, 'readable' );
+               $total_posts = array_sum( (array) $num_posts );
                $class = '';
-               $allposts = '';
 
                $current_user_id = get_current_user_id();
+               $all_args = array( 'post_type' => $post_type );
+               $mine = '';
 
-               if ( $this->user_posts_count ) {
-                       if ( isset( $_GET['author'] ) && ( $_GET['author'] == $current_user_id ) )
-                               $class = ' class="current"';
-                       $status_links['mine'] = "<a href='edit.php?post_type=$post_type&author=$current_user_id'$class>" . sprintf( _nx( 'Mine <span class="count">(%s)</span>', 'Mine <span class="count">(%s)</span>', $this->user_posts_count, 'posts' ), number_format_i18n( $this->user_posts_count ) ) . '</a>';
-                       $allposts = '&all_posts=1';
-                       $class = '';
+               // Subtract post types that are not included in the admin all list.
+               foreach ( get_post_stati( array( 'show_in_admin_all_list' => false ) ) as $state ) {
+                       $total_posts -= $num_posts->$state;
                }
 
-               $total_posts = array_sum( (array) $num_posts );
+               if ( $this->user_posts_count && $this->user_posts_count !== $total_posts ) {
+                       if ( isset( $_GET['author'] ) && ( $_GET['author'] == $current_user_id ) ) {
+                               $class = 'current';
+                       }
 
-               // Subtract post types that are not included in the admin all list.
-               foreach ( get_post_stati( array('show_in_admin_all_list' => false) ) as $state )
-                       $total_posts -= $num_posts->$state;
+                       $mine_args = array(
+                               'post_type' => $post_type,
+                               'author' => $current_user_id
+                       );
 
-               if ( empty( $class ) && ( ( $this->is_base_request() && ! $this->user_posts_count ) || isset( $_REQUEST['all_posts'] ) ) ) {
-                       $class =  ' class="current"';
+                       $mine_inner_html = sprintf(
+                               _nx(
+                                       'Mine <span class="count">(%s)</span>',
+                                       'Mine <span class="count">(%s)</span>',
+                                       $this->user_posts_count,
+                                       'posts'
+                               ),
+                               number_format_i18n( $this->user_posts_count )
+                       );
+
+                       $mine = $this->get_edit_link( $mine_args, $mine_inner_html, $class );
+
+                       $all_args['all_posts'] = 1;
+                       $class = '';
+               }
+
+               if ( empty( $class ) && ( $this->is_base_request() || isset( $_REQUEST['all_posts'] ) ) ) {
+                       $class = 'current';
                }
 
                $all_inner_html = sprintf(
@@ -242,29 +323,58 @@ class WP_Posts_List_Table extends WP_List_Table {
                        number_format_i18n( $total_posts )
                );
 
-               $status_links['all'] = "<a href='edit.php?post_type=$post_type{$allposts}'$class>" . $all_inner_html . '</a>';
+               $status_links['all'] = $this->get_edit_link( $all_args, $all_inner_html, $class );
+               if ( $mine ) {
+                       $status_links['mine'] = $mine;
+               }
 
                foreach ( get_post_stati(array('show_in_admin_status_list' => true), 'objects') as $status ) {
                        $class = '';
 
                        $status_name = $status->name;
 
-                       if ( !in_array( $status_name, $avail_post_stati ) )
+                       if ( ! in_array( $status_name, $avail_post_stati ) || empty( $num_posts->$status_name ) ) {
                                continue;
+                       }
 
-                       if ( empty( $num_posts->$status_name ) )
-                               continue;
+                       if ( isset($_REQUEST['post_status']) && $status_name === $_REQUEST['post_status'] ) {
+                               $class = 'current';
+                       }
 
-                       if ( isset($_REQUEST['post_status']) && $status_name == $_REQUEST['post_status'] )
-                               $class = ' class="current"';
+                       $status_args = array(
+                               'post_status' => $status_name,
+                               'post_type' => $post_type,
+                       );
 
-                       $status_links[$status_name] = "<a href='edit.php?post_status=$status_name&amp;post_type=$post_type'$class>" . sprintf( translate_nooped_plural( $status->label_count, $num_posts->$status_name ), number_format_i18n( $num_posts->$status_name ) ) . '</a>';
+                       $status_label = sprintf(
+                               translate_nooped_plural( $status->label_count, $num_posts->$status_name ),
+                               number_format_i18n( $num_posts->$status_name )
+                       );
+
+                       $status_links[ $status_name ] = $this->get_edit_link( $status_args, $status_label, $class );
                }
 
                if ( ! empty( $this->sticky_posts_count ) ) {
-                       $class = ! empty( $_REQUEST['show_sticky'] ) ? ' class="current"' : '';
-
-                       $sticky_link = array( 'sticky' => "<a href='edit.php?post_type=$post_type&amp;show_sticky=1'$class>" . sprintf( _nx( 'Sticky <span class="count">(%s)</span>', 'Sticky <span class="count">(%s)</span>', $this->sticky_posts_count, 'posts' ), number_format_i18n( $this->sticky_posts_count ) ) . '</a>' );
+                       $class = ! empty( $_REQUEST['show_sticky'] ) ? 'current' : '';
+
+                       $sticky_args = array(
+                               'post_type'     => $post_type,
+                               'show_sticky' => 1
+                       );
+
+                       $sticky_inner_html = sprintf(
+                               _nx(
+                                       'Sticky <span class="count">(%s)</span>',
+                                       'Sticky <span class="count">(%s)</span>',
+                                       $this->sticky_posts_count,
+                                       'posts'
+                               ),
+                               number_format_i18n( $this->sticky_posts_count )
+                       );
+
+                       $sticky_link = array(
+                               'sticky' => $this->get_edit_link( $sticky_args, $sticky_inner_html, $class )
+                       );
 
                        // Sticky comes after Publish, or if not listed, after All.
                        $split = 1 + array_search( ( isset( $status_links['publish'] ) ? 'publish' : 'all' ), array_keys( $status_links ) );
@@ -282,10 +392,12 @@ class WP_Posts_List_Table extends WP_List_Table {
                $actions = array();
                $post_type_obj = get_post_type_object( $this->screen->post_type );
 
-               if ( $this->is_trash ) {
-                       $actions['untrash'] = __( 'Restore' );
-               } else {
-                       $actions['edit'] = __( 'Edit' );
+               if ( current_user_can( $post_type_obj->cap->edit_posts ) ) {
+                       if ( $this->is_trash ) {
+                               $actions['untrash'] = __( 'Restore' );
+                       } else {
+                               $actions['edit'] = __( 'Edit' );
+                       }
                }
 
                if ( current_user_can( $post_type_obj->cap->delete_posts ) ) {
@@ -308,7 +420,7 @@ class WP_Posts_List_Table extends WP_List_Table {
 ?>
                <div class="alignleft actions">
 <?php
-               if ( 'top' == $which && !is_singular() ) {
+               if ( 'top' === $which && !is_singular() ) {
 
                        $this->months_dropdown( $this->screen->post_type );
 
@@ -333,8 +445,11 @@ class WP_Posts_List_Table extends WP_List_Table {
                         * Posts list table, and sorting by date on the Pages list table.
                         *
                         * @since 2.1.0
+                        * @since 4.4.0 The `$post_type` parameter was added.
+                        *
+                        * @param string $post_type The post type slug.
                         */
-                       do_action( 'restrict_manage_posts' );
+                       do_action( 'restrict_manage_posts', $this->screen->post_type );
 
                        submit_button( __( 'Filter' ), 'button', 'filter_action', false, array( 'id' => 'post-query-submit' ) );
                }
@@ -345,6 +460,15 @@ class WP_Posts_List_Table extends WP_List_Table {
 ?>
                </div>
 <?php
+               /**
+                * Fires immediately following the closing "actions" div in the tablenav for the posts
+                * list table.
+                *
+                * @since 4.4.0
+                *
+                * @param string $which The location of the extra table nav markup: 'top' or 'bottom'.
+                */
+               do_action( 'manage_posts_extra_tablenav', $which );
        }
 
        /**
@@ -358,19 +482,6 @@ class WP_Posts_List_Table extends WP_List_Table {
                return parent::current_action();
        }
 
-       /**
-        * @global string $mode
-        * @param string $which
-        */
-       protected function pagination( $which ) {
-               global $mode;
-
-               parent::pagination( $which );
-
-               if ( 'top' == $which && ! is_post_type_hierarchical( $this->screen->post_type ) )
-                       $this->view_switcher( $mode );
-       }
-
        /**
         *
         * @return array
@@ -415,9 +526,9 @@ class WP_Posts_List_Table extends WP_List_Table {
                $taxonomies = array_filter( $taxonomies, 'taxonomy_exists' );
 
                foreach ( $taxonomies as $taxonomy ) {
-                       if ( 'category' == $taxonomy )
+                       if ( 'category' === $taxonomy )
                                $column_key = 'categories';
-                       elseif ( 'post_tag' == $taxonomy )
+                       elseif ( 'post_tag' === $taxonomy )
                                $column_key = 'tags';
                        else
                                $column_key = 'taxonomy-' . $taxonomy;
@@ -431,7 +542,7 @@ class WP_Posts_List_Table extends WP_List_Table {
 
                $posts_columns['date'] = __( 'Date' );
 
-               if ( 'page' == $post_type ) {
+               if ( 'page' === $post_type ) {
 
                        /**
                         * Filter the columns displayed in the Pages list table.
@@ -501,13 +612,10 @@ class WP_Posts_List_Table extends WP_List_Table {
        }
 
        /**
-        * @global string $mode
         * @param array $posts
         * @param int $level
         */
        private function _display_rows( $posts, $level = 0 ) {
-               global $mode;
-
                // Create array of post IDs.
                $post_ids = array();
 
@@ -755,7 +863,14 @@ class WP_Posts_List_Table extends WP_List_Table {
                if ( $format ) {
                        $label = get_post_format_string( $format );
 
-                       echo '<a href="' . esc_url( add_query_arg( array( 'post_format' => $format, 'post_type' => $post->post_type ), 'edit.php' ) ) . '" class="post-state-format post-format-icon post-format-' . $format . '" title="' . $label . '">' . $label . ":</a> ";
+                       $format_class = 'post-state-format post-format-icon post-format-' . $format;
+
+                       $format_args = array(
+                               'post_format' => $format,
+                               'post_type' => $post->post_type
+                       );
+
+                       echo $this->get_edit_link( $format_args, $label . ':', $format_class );
                }
 
                $can_edit_post = current_user_can( 'edit_post', $post->ID );
@@ -789,7 +904,7 @@ class WP_Posts_List_Table extends WP_List_Table {
                        echo '<div class="locked-info"><span class="locked-avatar">' . $locked_avatar . '</span> <span class="locked-text">' . $locked_text . "</span></div>\n";
                }
 
-               if ( ! is_post_type_hierarchical( $this->screen->post_type ) && 'excerpt' == $mode && current_user_can( 'read_post', $post->ID ) ) {
+               if ( ! is_post_type_hierarchical( $this->screen->post_type ) && 'excerpt' === $mode && current_user_can( 'read_post', $post->ID ) ) {
                        the_excerpt();
                }
 
@@ -809,7 +924,7 @@ class WP_Posts_List_Table extends WP_List_Table {
        public function column_date( $post ) {
                global $mode;
 
-               if ( '0000-00-00 00:00:00' == $post->post_date ) {
+               if ( '0000-00-00 00:00:00' === $post->post_date ) {
                        $t_time = $h_time = __( 'Unpublished' );
                        $time_diff = 0;
                } else {
@@ -826,17 +941,29 @@ class WP_Posts_List_Table extends WP_List_Table {
                        }
                }
 
-               if ( 'excerpt' == $mode ) {
+               if ( 'publish' === $post->post_status ) {
+                       _e( 'Published' );
+               } elseif ( 'future' === $post->post_status ) {
+                       if ( $time_diff > 0 ) {
+                               echo '<strong class="error-message">' . __( 'Missed schedule' ) . '</strong>';
+                       } else {
+                               _e( 'Scheduled' );
+                       }
+               } else {
+                       _e( 'Last Modified' );
+               }
+               echo '<br />';
+               if ( 'excerpt' === $mode ) {
                        /**
                         * Filter the published time of the post.
                         *
-                        * If $mode equals 'excerpt', the published time and date are both displayed.
-                        * If $mode equals 'list' (default), the publish date is displayed, with the
+                        * If `$mode` equals 'excerpt', the published time and date are both displayed.
+                        * If `$mode` equals 'list' (default), the publish date is displayed, with the
                         * time and date together available as an abbreviation definition.
                         *
                         * @since 2.5.1
                         *
-                        * @param array   $t_time      The published time.
+                        * @param string  $t_time      The published time.
                         * @param WP_Post $post        Post object.
                         * @param string  $column_name The column name.
                         * @param string  $mode        The list display mode ('excerpt' or 'list').
@@ -847,18 +974,6 @@ class WP_Posts_List_Table extends WP_List_Table {
                        /** This filter is documented in wp-admin/includes/class-wp-posts-list-table.php */
                        echo '<abbr title="' . $t_time . '">' . apply_filters( 'post_date_column_time', $h_time, $post, 'date', $mode ) . '</abbr>';
                }
-               echo '<br />';
-               if ( 'publish' == $post->post_status ) {
-                       _e( 'Published' );
-               } elseif ( 'future' == $post->post_status ) {
-                       if ( $time_diff > 0 ) {
-                               echo '<strong class="error-message">' . __( 'Missed schedule' ) . '</strong>';
-                       } else {
-                               _e( 'Scheduled' );
-                       }
-               } else {
-                       _e( 'Last Modified' );
-               }
        }
 
        /**
@@ -890,10 +1005,11 @@ class WP_Posts_List_Table extends WP_List_Table {
         * @param WP_Post $post The current WP_Post object.
         */
        public function column_author( $post ) {
-               printf( '<a href="%s">%s</a>',
-                       esc_url( add_query_arg( array( 'post_type' => $post->post_type, 'author' => get_the_author_meta( 'ID' ) ), 'edit.php' )),
-                       get_the_author()
+               $args = array(
+                       'post_type' => $post->post_type,
+                       'author' => get_the_author_meta( 'ID' )
                );
+               echo $this->get_edit_link( $args, get_the_author() );
        }
 
        /**
@@ -906,9 +1022,9 @@ class WP_Posts_List_Table extends WP_List_Table {
         * @param string  $column_name The current column name.
         */
        public function column_default( $post, $column_name ) {
-               if ( 'categories' == $column_name ) {
+               if ( 'categories' === $column_name ) {
                        $taxonomy = 'category';
-               } elseif ( 'tags' == $column_name ) {
+               } elseif ( 'tags' === $column_name ) {
                        $taxonomy = 'post_tag';
                } elseif ( 0 === strpos( $column_name, 'taxonomy-' ) ) {
                        $taxonomy = substr( $column_name, 9 );
@@ -932,10 +1048,8 @@ class WP_Posts_List_Table extends WP_List_Table {
                                                $posts_in_term_qv['term'] = $t->slug;
                                        }
 
-                                       $out[] = sprintf( '<a href="%s">%s</a>',
-                                               esc_url( add_query_arg( $posts_in_term_qv, 'edit.php' ) ),
-                                               esc_html( sanitize_term_field( 'name', $t->name, $t->term_id, $taxonomy, 'display' ) )
-                                       );
+                                       $label = esc_html( sanitize_term_field( 'name', $t->name, $t->term_id, $taxonomy, 'display' ) );
+                                       $out[] = $this->get_edit_link( $posts_in_term_qv, $label );
                                }
                                /* translators: used between list items, there is a space after the comma */
                                echo join( __( ', ' ), $out );
@@ -1062,21 +1176,20 @@ class WP_Posts_List_Table extends WP_List_Table {
                }
 
                if ( current_user_can( 'delete_post', $post->ID ) ) {
-                       if ( 'trash' == $post->post_status )
+                       if ( 'trash' === $post->post_status )
                                $actions['untrash'] = "<a title='" . esc_attr__( 'Restore this item from the Trash' ) . "' href='" . wp_nonce_url( admin_url( sprintf( $post_type_object->_edit_link . '&amp;action=untrash', $post->ID ) ), 'untrash-post_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
                        elseif ( EMPTY_TRASH_DAYS )
                                $actions['trash'] = "<a class='submitdelete' title='" . esc_attr__( 'Move this item to the Trash' ) . "' href='" . get_delete_post_link( $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
-                       if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS )
+                       if ( 'trash' === $post->post_status || !EMPTY_TRASH_DAYS )
                                $actions['delete'] = "<a class='submitdelete' title='" . esc_attr__( 'Delete this item permanently' ) . "' href='" . get_delete_post_link( $post->ID, '', true ) . "'>" . __( 'Delete Permanently' ) . "</a>";
                }
 
-               if ( $post_type_object->public ) {
+               if ( is_post_type_viewable( $post_type_object ) ) {
                        $title = _draft_or_post_title();
                        if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ) ) ) {
                                if ( $can_edit_post ) {
-                                       $preview_link = set_url_scheme( get_permalink( $post->ID ) );
-                                       /** This filter is documented in wp-admin/includes/meta-boxes.php */
-                                       $preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post );
+                                       $unpublished_link = set_url_scheme( get_permalink( $post ) );
+                                       $preview_link = get_preview_post_link( $post, array(), $unpublished_link );
                                        $actions['view'] = '<a href="' . esc_url( $preview_link ) . '" title="' . esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'Preview' ) . '</a>';
                                }
                        } elseif ( 'trash' != $post->post_status ) {
@@ -1162,7 +1275,7 @@ class WP_Posts_List_Table extends WP_List_Table {
                                $flat_taxonomies[] = $taxonomy;
                }
 
-               $m = ( isset( $mode ) && 'excerpt' == $mode ) ? 'excerpt' : 'list';
+               $m = ( isset( $mode ) && 'excerpt' === $mode ) ? 'excerpt' : 'list';
                $can_publish = current_user_can( $post_type_object->cap->publish_posts );
                $core_columns = array( 'cb' => true, 'date' => true, 'title' => true, 'categories' => true, 'tags' => true, 'comments' => true, 'author' => true );
 
@@ -1178,8 +1291,9 @@ class WP_Posts_List_Table extends WP_List_Table {
                        echo $bulk ? " bulk-edit-row bulk-edit-row-$hclass bulk-edit-{$screen->post_type}" : " quick-edit-row quick-edit-row-$hclass inline-edit-{$screen->post_type}";
                ?>" style="display: none"><td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
 
-               <fieldset class="inline-edit-col-left"><div class="inline-edit-col">
-                       <h4><?php echo $bulk ? __( 'Bulk Edit' ) : __( 'Quick Edit' ); ?></h4>
+               <fieldset class="inline-edit-col-left">
+                       <legend class="inline-edit-legend"><?php echo $bulk ? __( 'Bulk Edit' ) : __( 'Quick Edit' ); ?></legend>
+                       <div class="inline-edit-col">
        <?php
 
        if ( post_type_supports( $screen->post_type, 'title' ) ) :
@@ -1270,7 +1384,7 @@ class WP_Posts_List_Table extends WP_List_Table {
        <?php foreach ( $hierarchical_taxonomies as $taxonomy ) : ?>
 
                        <span class="title inline-edit-categories-label"><?php echo esc_html( $taxonomy->labels->name ) ?></span>
-                       <input type="hidden" name="<?php echo ( $taxonomy->name == 'category' ) ? 'post_category[]' : 'tax_input[' . esc_attr( $taxonomy->name ) . '][]'; ?>" value="0" />
+                       <input type="hidden" name="<?php echo ( $taxonomy->name === 'category' ) ? 'post_category[]' : 'tax_input[' . esc_attr( $taxonomy->name ) . '][]'; ?>" value="0" />
                        <ul class="cat-checklist <?php echo esc_attr( $taxonomy->name )?>-checklist">
                                <?php wp_terms_checklist( null, array( 'taxonomy' => $taxonomy->name ) ) ?>
                        </ul>
@@ -1333,7 +1447,7 @@ class WP_Posts_List_Table extends WP_List_Table {
 
        <?php   endif; // !$bulk
 
-                       if ( 'page' == $screen->post_type ) :
+                       if ( 'page' === $screen->post_type ) :
        ?>
 
                        <label>
@@ -1433,7 +1547,7 @@ class WP_Posts_List_Table extends WP_List_Table {
                                        </select>
                                </label>
 
-       <?php if ( 'post' == $screen->post_type && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?>
+       <?php if ( 'post' === $screen->post_type && $can_publish && current_user_can( $post_type_object->cap->edit_others_posts ) ) : ?>
 
        <?php   if ( $bulk ) : ?>
 
@@ -1471,13 +1585,13 @@ class WP_Posts_List_Table extends WP_List_Table {
                        <option value="-1"><?php _e( '&mdash; No Change &mdash;' ); ?></option>
                        <option value="0"><?php echo get_post_format_string( 'standard' ); ?></option>
                        <?php
-
-                       foreach ( $post_formats[0] as $format ) {
-                               ?>
-                               <option value="<?php echo esc_attr( $format ); ?>"><?php echo esc_html( get_post_format_string( $format ) ); ?></option>
-                               <?php
+                       if ( is_array( $post_formats[0] ) ) {
+                               foreach ( $post_formats[0] as $format ) {
+                                       ?>
+                                       <option value="<?php echo esc_attr( $format ); ?>"><?php echo esc_html( get_post_format_string( $format ) ); ?></option>
+                                       <?php
+                               }
                        }
-
                        ?>
                </select></label>
        <?php
@@ -1513,8 +1627,8 @@ class WP_Posts_List_Table extends WP_List_Table {
                                 *
                                 * @since 2.7.0
                                 *
-                                * @param string  $column_name Name of the column to edit.
-                                * @param WP_Post $post_type   The post type slug.
+                                * @param string $column_name Name of the column to edit.
+                                * @param string $post_type   The post type slug.
                                 */
                                do_action( 'quick_edit_custom_box', $column_name, $screen->post_type );
                        }
index 58ed28661a6a3bf1613ddfabd9390a0c8a0dd860..cdc4ad79bb307f7b4ea5d3f8e0bbc62fc29642d6 100644 (file)
@@ -390,8 +390,8 @@ class WP_Press_This {
        /**
         * Utility method to limit image source URLs.
         *
-        * Excluded URLs include share-this type buttons, loaders, spinners, spacers, WP interface images,
-        * tiny buttons or thumbs, mathtag.com or quantserve.com images, or the WP stats gif.
+        * Excluded URLs include share-this type buttons, loaders, spinners, spacers, WordPress interface images,
+        * tiny buttons or thumbs, mathtag.com or quantserve.com images, or the WordPress.com stats gif.
         *
         * @ignore
         * @since 4.2.0
@@ -402,32 +402,32 @@ class WP_Press_This {
        private function _limit_img( $src ) {
                $src = $this->_limit_url( $src );
 
-               if ( preg_match( '/\/ad[sx]{1}?\//', $src ) ) {
+               if ( preg_match( '!/ad[sx]?/!i', $src ) ) {
                        // Ads
                        return '';
-               } else if ( preg_match( '/(\/share-?this[^\.]+?\.[a-z0-9]{3,4})(\?.*)?$/', $src ) ) {
+               } else if ( preg_match( '!(/share-?this[^.]+?\.[a-z0-9]{3,4})(\?.*)?$!i', $src ) ) {
                        // Share-this type button
                        return '';
-               } else if ( preg_match( '/\/(spinner|loading|spacer|blank|rss)\.(gif|jpg|png)/', $src ) ) {
+               } else if ( preg_match( '!/(spinner|loading|spacer|blank|rss)\.(gif|jpg|png)!i', $src ) ) {
                        // Loaders, spinners, spacers
                        return '';
-               } else if ( preg_match( '/\/([^\.\/]+[-_]{1})?(spinner|loading|spacer|blank)s?([-_]{1}[^\.\/]+)?\.[a-z0-9]{3,4}/', $src ) ) {
+               } else if ( preg_match( '!/([^./]+[-_])?(spinner|loading|spacer|blank)s?([-_][^./]+)?\.[a-z0-9]{3,4}!i', $src ) ) {
                        // Fancy loaders, spinners, spacers
                        return '';
-               } else if ( preg_match( '/([^\.\/]+[-_]{1})?thumb[^.]*\.(gif|jpg|png)$/', $src ) ) {
+               } else if ( preg_match( '!([^./]+[-_])?thumb[^.]*\.(gif|jpg|png)$!i', $src ) ) {
                        // Thumbnails, too small, usually irrelevant to context
                        return '';
-               } else if ( preg_match( '/\/wp-includes\//', $src ) ) {
-                       // Classic WP interface images
+               } else if ( false !== stripos( $src, '/wp-includes/' ) ) {
+                       // Classic WordPress interface images
                        return '';
-               } else if ( preg_match( '/[^\d]{1}\d{1,2}x\d+\.(gif|jpg|png)$/', $src ) ) {
+               } else if ( preg_match( '![^\d]\d{1,2}x\d+\.(gif|jpg|png)$!i', $src ) ) {
                        // Most often tiny buttons/thumbs (< 100px wide)
                        return '';
-               } else if ( preg_match( '/\/pixel\.(mathtag|quantserve)\.com/', $src ) ) {
+               } else if ( preg_match( '!/pixel\.(mathtag|quantserve)\.com!i', $src ) ) {
                        // See mathtag.com and https://www.quantcast.com/how-we-do-it/iab-standard-measurement/how-we-collect-data/
                        return '';
-               } else if ( preg_match( '/\/[gb]\.gif(\?.+)?$/', $src ) ) {
-                       // Classic WP stats gif
+               } else if ( preg_match( '!/[gb]\.gif(\?.+)?$!i', $src ) ) {
+                       // WordPress.com stats gif
                        return '';
                }
 
@@ -452,19 +452,19 @@ class WP_Press_This {
                if ( empty( $src ) )
                        return '';
 
-               if ( preg_match( '/\/\/(m|www)\.youtube\.com\/(embed|v)\/([^\?]+)\?.+$/', $src, $src_matches ) ) {
+               if ( preg_match( '!//(m|www)\.youtube\.com/(embed|v)/([^?]+)\?.+$!i', $src, $src_matches ) ) {
                        // Embedded Youtube videos (www or mobile)
                        $src = 'https://www.youtube.com/watch?v=' . $src_matches[3];
-               } else if ( preg_match( '/\/\/player\.vimeo\.com\/video\/([\d]+)([\?\/]{1}.*)?$/', $src, $src_matches ) ) {
+               } else if ( preg_match( '!//player\.vimeo\.com/video/([\d]+)([?/].*)?$!i', $src, $src_matches ) ) {
                        // Embedded Vimeo iframe videos
                        $src = 'https://vimeo.com/' . (int) $src_matches[1];
-               } else if ( preg_match( '/\/\/vimeo\.com\/moogaloop\.swf\?clip_id=([\d]+)$/', $src, $src_matches ) ) {
+               } else if ( preg_match( '!//vimeo\.com/moogaloop\.swf\?clip_id=([\d]+)$!i', $src, $src_matches ) ) {
                        // Embedded Vimeo Flash videos
                        $src = 'https://vimeo.com/' . (int) $src_matches[1];
-               } else if ( preg_match( '/\/\/vine\.co\/v\/([^\/]+)\/embed/', $src, $src_matches ) ) {
+               } else if ( preg_match( '!//vine\.co/v/([^/]+)/embed!i', $src, $src_matches ) ) {
                        // Embedded Vine videos
                        $src = 'https://vine.co/v/' . $src_matches[1];
-               } else if ( preg_match( '/\/\/(www\.)?dailymotion\.com\/embed\/video\/([^\/\?]+)([\/\?]{1}.+)?/', $src, $src_matches ) ) {
+               } else if ( preg_match( '!//(www\.)?dailymotion\.com/embed/video/([^/?]+)([/?].+)?!i', $src, $src_matches ) ) {
                        // Embedded Daily Motion videos
                        $src = 'https://www.dailymotion.com/video/' . $src_matches[2];
                } else {
@@ -876,7 +876,7 @@ class WP_Press_This {
 
                if ( current_user_can( $taxonomy->cap->edit_terms ) ) {
                        ?>
-                       <button type="button" class="add-cat-toggle button-subtle" aria-expanded="false">
+                       <button type="button" class="add-cat-toggle button-link" aria-expanded="false">
                                <span class="dashicons dashicons-plus"></span><span class="screen-reader-text"><?php _e( 'Toggle add category' ); ?></span>
                        </button>
                        <div class="add-category is-hidden">
@@ -961,7 +961,7 @@ class WP_Press_This {
 
                if ( $user_can_assign_terms ) {
                        ?>
-                       <button type="button" class="button-reset button-link tagcloud-link" id="link-post_tag"><?php echo $taxonomy->labels->choose_from_most_used; ?></button>
+                       <button type="button" class="button-link tagcloud-link" id="link-post_tag"><?php echo $taxonomy->labels->choose_from_most_used; ?></button>
                        <?php
                }
        }
@@ -984,7 +984,7 @@ class WP_Press_This {
                }
 
                if ( ! empty( $data['_embeds'] ) ) {
-                       foreach( $data['_embeds'] as $src ) {
+                       foreach ( $data['_embeds'] as $src ) {
                                $prot_relative_src = preg_replace( '/^https?:/', '', $src );
 
                                if ( in_array( $prot_relative_src, $this->embeds ) ) {
@@ -1012,7 +1012,7 @@ class WP_Press_This {
                $selected_images = array();
 
                if ( ! empty( $data['_images'] ) ) {
-                       foreach( $data['_images'] as $src ) {
+                       foreach ( $data['_images'] as $src ) {
                                if ( false !== strpos( $src, 'gravatar.com' ) ) {
                                        $src = preg_replace( '%http://[\d]+\.gravatar\.com/%', 'https://secure.gravatar.com/', $src );
                                }
@@ -1341,7 +1341,7 @@ class WP_Press_This {
                                <span class="current-site-name"><?php bloginfo( 'name' ); ?></span>
                        </a>
                </h1>
-               <button type="button" class="options button-subtle closed">
+               <button type="button" class="options button-link closed">
                        <span class="dashicons dashicons-tag on-closed"></span>
                        <span class="screen-reader-text on-closed"><?php _e( 'Show post options' ); ?></span>
                        <span aria-hidden="true" class="on-open"><?php _e( 'Done' ); ?></span>
@@ -1430,7 +1430,7 @@ class WP_Press_This {
                        <div class="post-options">
 
                                <?php if ( $supports_formats ) : ?>
-                                       <button type="button" class="button-reset post-option">
+                                       <button type="button" class="button-link post-option">
                                                <span class="dashicons dashicons-admin-post"></span>
                                                <span class="post-option-title"><?php _ex( 'Format', 'post format' ); ?></span>
                                                <span class="post-option-contents" id="post-option-post-format"><?php echo esc_html( get_post_format_string( $post_format ) ); ?></span>
@@ -1438,13 +1438,13 @@ class WP_Press_This {
                                        </button>
                                <?php endif; ?>
 
-                               <button type="button" class="button-reset post-option">
+                               <button type="button" class="button-link post-option">
                                        <span class="dashicons dashicons-category"></span>
                                        <span class="post-option-title"><?php _e( 'Categories' ); ?></span>
                                        <span class="dashicons post-option-forward"></span>
                                </button>
 
-                               <button type="button" class="button-reset post-option">
+                               <button type="button" class="button-link post-option">
                                        <span class="dashicons dashicons-tag"></span>
                                        <span class="post-option-title"><?php _e( 'Tags' ); ?></span>
                                        <span class="dashicons post-option-forward"></span>
@@ -1453,7 +1453,7 @@ class WP_Press_This {
 
                        <?php if ( $supports_formats ) : ?>
                                <div class="setting-modal is-off-screen is-hidden">
-                                       <button type="button" class="button-reset modal-close">
+                                       <button type="button" class="button-link modal-close">
                                                <span class="dashicons post-option-back"></span>
                                                <span class="setting-title" aria-hidden="true"><?php _ex( 'Format', 'post format' ); ?></span>
                                                <span class="screen-reader-text"><?php _e( 'Back to post options' ) ?></span>
@@ -1463,7 +1463,7 @@ class WP_Press_This {
                        <?php endif; ?>
 
                        <div class="setting-modal is-off-screen is-hidden">
-                               <button type="button" class="button-reset modal-close">
+                               <button type="button" class="button-link modal-close">
                                        <span class="dashicons post-option-back"></span>
                                        <span class="setting-title" aria-hidden="true"><?php _e( 'Categories' ); ?></span>
                                        <span class="screen-reader-text"><?php _e( 'Back to post options' ) ?></span>
@@ -1472,7 +1472,7 @@ class WP_Press_This {
                        </div>
 
                        <div class="setting-modal tags is-off-screen is-hidden">
-                               <button type="button" class="button-reset modal-close">
+                               <button type="button" class="button-link modal-close">
                                        <span class="dashicons post-option-back"></span>
                                        <span class="setting-title" aria-hidden="true"><?php _e( 'Tags' ); ?></span>
                                        <span class="screen-reader-text"><?php _e( 'Back to post options' ) ?></span>
@@ -1484,7 +1484,7 @@ class WP_Press_This {
 
        <div class="press-this-actions">
                <div class="pressthis-media-buttons">
-                       <button type="button" class="insert-media button-subtle" data-editor="pressthis">
+                       <button type="button" class="insert-media button-link" data-editor="pressthis">
                                <span class="dashicons dashicons-admin-media"></span>
                                <span class="screen-reader-text"><?php _e( 'Add Media' ); ?></span>
                        </button>
@@ -1495,16 +1495,16 @@ class WP_Press_This {
                                <div class="split-button-head">
                                        <button type="button" class="publish-button split-button-primary" aria-live="polite">
                                                <span class="publish"><?php echo ( current_user_can( 'publish_posts' ) ) ? __( 'Publish' ) : __( 'Submit for Review' ); ?></span>
-                                               <span class="saving-draft"><?php _e( 'Saving...' ); ?></span>
+                                               <span class="saving-draft"><?php _e( 'Saving&hellip;' ); ?></span>
                                        </button><button type="button" class="split-button-toggle" aria-haspopup="true" aria-expanded="false">
                                                <i class="dashicons dashicons-arrow-down-alt2"></i>
                                                <span class="screen-reader-text"><?php _e('More actions'); ?></span>
                                        </button>
                                </div>
                                <ul class="split-button-body">
-                                       <li><button type="button" class="button-subtle draft-button split-button-option"><?php _e( 'Save Draft' ); ?></button></li>
-                                       <li><button type="button" class="button-subtle standard-editor-button split-button-option"><?php _e( 'Standard Editor' ); ?></button></li>
-                                       <li><button type="button" class="button-subtle preview-button split-button-option"><?php _e( 'Preview' ); ?></button></li>
+                                       <li><button type="button" class="button-link draft-button split-button-option"><?php _e( 'Save Draft' ); ?></button></li>
+                                       <li><button type="button" class="button-link standard-editor-button split-button-option"><?php _e( 'Standard Editor' ); ?></button></li>
+                                       <li><button type="button" class="button-link preview-button split-button-option"><?php _e( 'Preview' ); ?></button></li>
                                </ul>
                        </div>
                </div>
diff --git a/wp-admin/includes/class-wp-screen.php b/wp-admin/includes/class-wp-screen.php
new file mode 100644 (file)
index 0000000..398bb07
--- /dev/null
@@ -0,0 +1,1253 @@
+<?php
+/**
+ * Screen API: WP_Screen class
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement an admin screen API.
+ *
+ * @since 3.3.0
+ */
+final class WP_Screen {
+       /**
+        * Any action associated with the screen. 'add' for *-add.php and *-new.php screens. Empty otherwise.
+        *
+        * @since 3.3.0
+        * @var string
+        * @access public
+        */
+       public $action;
+
+       /**
+        * The base type of the screen. This is typically the same as $id but with any post types and taxonomies stripped.
+        * For example, for an $id of 'edit-post' the base is 'edit'.
+        *
+        * @since 3.3.0
+        * @var string
+        * @access public
+        */
+       public $base;
+
+       /**
+        * The number of columns to display. Access with get_columns().
+        *
+        * @since 3.4.0
+        * @var int
+        * @access private
+        */
+       private $columns = 0;
+
+       /**
+        * The unique ID of the screen.
+        *
+        * @since 3.3.0
+        * @var string
+        * @access public
+        */
+       public $id;
+
+       /**
+        * Which admin the screen is in. network | user | site | false
+        *
+        * @since 3.5.0
+        * @var string
+        * @access protected
+        */
+       protected $in_admin;
+
+       /**
+        * Whether the screen is in the network admin.
+        *
+        * Deprecated. Use in_admin() instead.
+        *
+        * @since 3.3.0
+        * @deprecated 3.5.0
+        * @var bool
+        * @access public
+        */
+       public $is_network;
+
+       /**
+        * Whether the screen is in the user admin.
+        *
+        * Deprecated. Use in_admin() instead.
+        *
+        * @since 3.3.0
+        * @deprecated 3.5.0
+        * @var bool
+        * @access public
+        */
+       public $is_user;
+
+       /**
+        * The base menu parent.
+        * This is derived from $parent_file by removing the query string and any .php extension.
+        * $parent_file values of 'edit.php?post_type=page' and 'edit.php?post_type=post' have a $parent_base of 'edit'.
+        *
+        * @since 3.3.0
+        * @var string
+        * @access public
+        */
+       public $parent_base;
+
+       /**
+        * The parent_file for the screen per the admin menu system.
+        * Some $parent_file values are 'edit.php?post_type=page', 'edit.php', and 'options-general.php'.
+        *
+        * @since 3.3.0
+        * @var string
+        * @access public
+        */
+       public $parent_file;
+
+       /**
+        * The post type associated with the screen, if any.
+        * The 'edit.php?post_type=page' screen has a post type of 'page'.
+        * The 'edit-tags.php?taxonomy=$taxonomy&post_type=page' screen has a post type of 'page'.
+        *
+        * @since 3.3.0
+        * @var string
+        * @access public
+        */
+       public $post_type;
+
+       /**
+        * The taxonomy associated with the screen, if any.
+        * The 'edit-tags.php?taxonomy=category' screen has a taxonomy of 'category'.
+        * @since 3.3.0
+        * @var string
+        * @access public
+        */
+       public $taxonomy;
+
+       /**
+        * The help tab data associated with the screen, if any.
+        *
+        * @since 3.3.0
+        * @var array
+        * @access private
+        */
+       private $_help_tabs = array();
+
+       /**
+        * The help sidebar data associated with screen, if any.
+        *
+        * @since 3.3.0
+        * @var string
+        * @access private
+        */
+       private $_help_sidebar = '';
+
+       /**
+        * The accessible hidden headings and text associated with the screen, if any.
+        *
+        * @since 4.4.0
+        * @access private
+        * @var array
+        */
+       private $_screen_reader_content = array();
+
+       /**
+        * Stores old string-based help.
+        *
+        * @static
+        * @access private
+        *
+        * @var array
+        */
+       private static $_old_compat_help = array();
+
+       /**
+        * The screen options associated with screen, if any.
+        *
+        * @since 3.3.0
+        * @var array
+        * @access private
+        */
+       private $_options = array();
+
+       /**
+        * The screen object registry.
+        *
+        * @since 3.3.0
+        *
+        * @static
+        * @access private
+        *
+        * @var array
+        */
+       private static $_registry = array();
+
+       /**
+        * Stores the result of the public show_screen_options function.
+        *
+        * @since 3.3.0
+        * @var bool
+        * @access private
+        */
+       private $_show_screen_options;
+
+       /**
+        * Stores the 'screen_settings' section of screen options.
+        *
+        * @since 3.3.0
+        * @var string
+        * @access private
+        */
+       private $_screen_settings;
+
+       /**
+        * Fetches a screen object.
+        *
+        * @since 3.3.0
+        * @access public
+        *
+        * @static
+        *
+        * @global string $hook_suffix
+        *
+        * @param string|WP_Screen $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen.
+        *                                        Defaults to the current $hook_suffix global.
+        * @return WP_Screen Screen object.
+        */
+       public static function get( $hook_name = '' ) {
+               if ( $hook_name instanceof WP_Screen ) {
+                       return $hook_name;
+               }
+
+               $post_type = $taxonomy = null;
+               $in_admin = false;
+               $action = '';
+
+               if ( $hook_name )
+                       $id = $hook_name;
+               else
+                       $id = $GLOBALS['hook_suffix'];
+
+               // For those pesky meta boxes.
+               if ( $hook_name && post_type_exists( $hook_name ) ) {
+                       $post_type = $id;
+                       $id = 'post'; // changes later. ends up being $base.
+               } else {
+                       if ( '.php' == substr( $id, -4 ) )
+                               $id = substr( $id, 0, -4 );
+
+                       if ( 'post-new' == $id || 'link-add' == $id || 'media-new' == $id || 'user-new' == $id ) {
+                               $id = substr( $id, 0, -4 );
+                               $action = 'add';
+                       }
+               }
+
+               if ( ! $post_type && $hook_name ) {
+                       if ( '-network' == substr( $id, -8 ) ) {
+                               $id = substr( $id, 0, -8 );
+                               $in_admin = 'network';
+                       } elseif ( '-user' == substr( $id, -5 ) ) {
+                               $id = substr( $id, 0, -5 );
+                               $in_admin = 'user';
+                       }
+
+                       $id = sanitize_key( $id );
+                       if ( 'edit-comments' != $id && 'edit-tags' != $id && 'edit-' == substr( $id, 0, 5 ) ) {
+                               $maybe = substr( $id, 5 );
+                               if ( taxonomy_exists( $maybe ) ) {
+                                       $id = 'edit-tags';
+                                       $taxonomy = $maybe;
+                               } elseif ( post_type_exists( $maybe ) ) {
+                                       $id = 'edit';
+                                       $post_type = $maybe;
+                               }
+                       }
+
+                       if ( ! $in_admin )
+                               $in_admin = 'site';
+               } else {
+                       if ( defined( 'WP_NETWORK_ADMIN' ) && WP_NETWORK_ADMIN )
+                               $in_admin = 'network';
+                       elseif ( defined( 'WP_USER_ADMIN' ) && WP_USER_ADMIN )
+                               $in_admin = 'user';
+                       else
+                               $in_admin = 'site';
+               }
+
+               if ( 'index' == $id )
+                       $id = 'dashboard';
+               elseif ( 'front' == $id )
+                       $in_admin = false;
+
+               $base = $id;
+
+               // If this is the current screen, see if we can be more accurate for post types and taxonomies.
+               if ( ! $hook_name ) {
+                       if ( isset( $_REQUEST['post_type'] ) )
+                               $post_type = post_type_exists( $_REQUEST['post_type'] ) ? $_REQUEST['post_type'] : false;
+                       if ( isset( $_REQUEST['taxonomy'] ) )
+                               $taxonomy = taxonomy_exists( $_REQUEST['taxonomy'] ) ? $_REQUEST['taxonomy'] : false;
+
+                       switch ( $base ) {
+                               case 'post' :
+                                       if ( isset( $_GET['post'] ) )
+                                               $post_id = (int) $_GET['post'];
+                                       elseif ( isset( $_POST['post_ID'] ) )
+                                               $post_id = (int) $_POST['post_ID'];
+                                       else
+                                               $post_id = 0;
+
+                                       if ( $post_id ) {
+                                               $post = get_post( $post_id );
+                                               if ( $post )
+                                                       $post_type = $post->post_type;
+                                       }
+                                       break;
+                               case 'edit-tags' :
+                                       if ( null === $post_type && is_object_in_taxonomy( 'post', $taxonomy ? $taxonomy : 'post_tag' ) )
+                                               $post_type = 'post';
+                                       break;
+                       }
+               }
+
+               switch ( $base ) {
+                       case 'post' :
+                               if ( null === $post_type )
+                                       $post_type = 'post';
+                               $id = $post_type;
+                               break;
+                       case 'edit' :
+                               if ( null === $post_type )
+                                       $post_type = 'post';
+                               $id .= '-' . $post_type;
+                               break;
+                       case 'edit-tags' :
+                               if ( null === $taxonomy )
+                                       $taxonomy = 'post_tag';
+                               // The edit-tags ID does not contain the post type. Look for it in the request.
+                               if ( null === $post_type ) {
+                                       $post_type = 'post';
+                                       if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) )
+                                               $post_type = $_REQUEST['post_type'];
+                               }
+
+                               $id = 'edit-' . $taxonomy;
+                               break;
+               }
+
+               if ( 'network' == $in_admin ) {
+                       $id   .= '-network';
+                       $base .= '-network';
+               } elseif ( 'user' == $in_admin ) {
+                       $id   .= '-user';
+                       $base .= '-user';
+               }
+
+               if ( isset( self::$_registry[ $id ] ) ) {
+                       $screen = self::$_registry[ $id ];
+                       if ( $screen === get_current_screen() )
+                               return $screen;
+               } else {
+                       $screen = new WP_Screen();
+                       $screen->id     = $id;
+               }
+
+               $screen->base       = $base;
+               $screen->action     = $action;
+               $screen->post_type  = (string) $post_type;
+               $screen->taxonomy   = (string) $taxonomy;
+               $screen->is_user    = ( 'user' == $in_admin );
+               $screen->is_network = ( 'network' == $in_admin );
+               $screen->in_admin   = $in_admin;
+
+               self::$_registry[ $id ] = $screen;
+
+               return $screen;
+       }
+
+       /**
+        * Makes the screen object the current screen.
+        *
+        * @see set_current_screen()
+        * @since 3.3.0
+        *
+        * @global WP_Screen $current_screen
+        * @global string    $taxnow
+        * @global string    $typenow
+        */
+       public function set_current_screen() {
+               global $current_screen, $taxnow, $typenow;
+               $current_screen = $this;
+               $taxnow = $this->taxonomy;
+               $typenow = $this->post_type;
+
+               /**
+                * Fires after the current screen has been set.
+                *
+                * @since 3.0.0
+                *
+                * @param WP_Screen $current_screen Current WP_Screen object.
+                */
+               do_action( 'current_screen', $current_screen );
+       }
+
+       /**
+        * Constructor
+        *
+        * @since 3.3.0
+        * @access private
+        */
+       private function __construct() {}
+
+       /**
+        * Indicates whether the screen is in a particular admin
+        *
+        * @since 3.5.0
+        *
+        * @param string $admin The admin to check against (network | user | site).
+        *                      If empty any of the three admins will result in true.
+        * @return bool True if the screen is in the indicated admin, false otherwise.
+        */
+       public function in_admin( $admin = null ) {
+               if ( empty( $admin ) )
+                       return (bool) $this->in_admin;
+
+               return ( $admin == $this->in_admin );
+       }
+
+       /**
+        * Sets the old string-based contextual help for the screen.
+        *
+        * For backwards compatibility.
+        *
+        * @since 3.3.0
+        *
+        * @static
+        *
+        * @param WP_Screen $screen A screen object.
+        * @param string $help Help text.
+        */
+       public static function add_old_compat_help( $screen, $help ) {
+               self::$_old_compat_help[ $screen->id ] = $help;
+       }
+
+       /**
+        * Set the parent information for the screen.
+        * This is called in admin-header.php after the menu parent for the screen has been determined.
+        *
+        * @since 3.3.0
+        *
+        * @param string $parent_file The parent file of the screen. Typically the $parent_file global.
+        */
+       public function set_parentage( $parent_file ) {
+               $this->parent_file = $parent_file;
+               list( $this->parent_base ) = explode( '?', $parent_file );
+               $this->parent_base = str_replace( '.php', '', $this->parent_base );
+       }
+
+       /**
+        * Adds an option for the screen.
+        * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add screen options.
+        *
+        * @since 3.3.0
+        *
+        * @param string $option Option ID
+        * @param mixed $args Option-dependent arguments.
+        */
+       public function add_option( $option, $args = array() ) {
+               $this->_options[ $option ] = $args;
+       }
+
+       /**
+        * Remove an option from the screen.
+        *
+        * @since 3.8.0
+        *
+        * @param string $option Option ID.
+        */
+       public function remove_option( $option ) {
+               unset( $this->_options[ $option ] );
+       }
+
+       /**
+        * Remove all options from the screen.
+        *
+        * @since 3.8.0
+        */
+       public function remove_options() {
+               $this->_options = array();
+       }
+
+       /**
+        * Get the options registered for the screen.
+        *
+        * @since 3.8.0
+        *
+        * @return array Options with arguments.
+        */
+       public function get_options() {
+               return $this->_options;
+       }
+
+       /**
+        * Gets the arguments for an option for the screen.
+        *
+        * @since 3.3.0
+        *
+        * @param string $option Option name.
+        * @param string $key    Optional. Specific array key for when the option is an array.
+        *                       Default false.
+        * @return string The option value if set, null otherwise.
+        */
+       public function get_option( $option, $key = false ) {
+               if ( ! isset( $this->_options[ $option ] ) )
+                       return null;
+               if ( $key ) {
+                       if ( isset( $this->_options[ $option ][ $key ] ) )
+                               return $this->_options[ $option ][ $key ];
+                       return null;
+               }
+               return $this->_options[ $option ];
+       }
+
+       /**
+        * Gets the help tabs registered for the screen.
+        *
+        * @since 3.4.0
+        * @since 4.4.0 Help tabs are ordered by their priority.
+        *
+        * @return array Help tabs with arguments.
+        */
+       public function get_help_tabs() {
+               $help_tabs = $this->_help_tabs;
+
+               $priorities = array();
+               foreach ( $help_tabs as $help_tab ) {
+                       if ( isset( $priorities[ $help_tab['priority'] ] ) ) {
+                               $priorities[ $help_tab['priority'] ][] = $help_tab;
+                       } else {
+                               $priorities[ $help_tab['priority'] ] = array( $help_tab );
+                       }
+               }
+
+               sort( $priorities );
+
+               $sorted = array();
+               foreach ( $priorities as $list ) {
+                       foreach ( $list as $tab ) {
+                               $sorted[ $tab['id'] ] = $tab;
+                       }
+               }
+
+               return $sorted;
+       }
+
+       /**
+        * Gets the arguments for a help tab.
+        *
+        * @since 3.4.0
+        *
+        * @param string $id Help Tab ID.
+        * @return array Help tab arguments.
+        */
+       public function get_help_tab( $id ) {
+               if ( ! isset( $this->_help_tabs[ $id ] ) )
+                       return null;
+               return $this->_help_tabs[ $id ];
+       }
+
+       /**
+        * Add a help tab to the contextual help for the screen.
+        * Call this on the load-$pagenow hook for the relevant screen.
+        *
+        * @since 3.3.0
+        * @since 4.4.0 The `$priority` argument was added.
+        *
+        * @param array $args {
+        *     Array of arguments used to display the help tab.
+        *
+        *     @type string $title    Title for the tab. Default false.
+        *     @type string $id       Tab ID. Must be HTML-safe. Default false.
+        *     @type string $content  Optional. Help tab content in plain text or HTML. Default empty string.
+        *     @type string $callback Optional. A callback to generate the tab content. Default false.
+        *     @type int    $priority Optional. The priority of the tab, used for ordering. Default 10.
+        * }
+        */
+       public function add_help_tab( $args ) {
+               $defaults = array(
+                       'title'    => false,
+                       'id'       => false,
+                       'content'  => '',
+                       'callback' => false,
+                       'priority' => 10,
+               );
+               $args = wp_parse_args( $args, $defaults );
+
+               $args['id'] = sanitize_html_class( $args['id'] );
+
+               // Ensure we have an ID and title.
+               if ( ! $args['id'] || ! $args['title'] )
+                       return;
+
+               // Allows for overriding an existing tab with that ID.
+               $this->_help_tabs[ $args['id'] ] = $args;
+       }
+
+       /**
+        * Removes a help tab from the contextual help for the screen.
+        *
+        * @since 3.3.0
+        *
+        * @param string $id The help tab ID.
+        */
+       public function remove_help_tab( $id ) {
+               unset( $this->_help_tabs[ $id ] );
+       }
+
+       /**
+        * Removes all help tabs from the contextual help for the screen.
+        *
+        * @since 3.3.0
+        */
+       public function remove_help_tabs() {
+               $this->_help_tabs = array();
+       }
+
+       /**
+        * Gets the content from a contextual help sidebar.
+        *
+        * @since 3.4.0
+        *
+        * @return string Contents of the help sidebar.
+        */
+       public function get_help_sidebar() {
+               return $this->_help_sidebar;
+       }
+
+       /**
+        * Add a sidebar to the contextual help for the screen.
+        * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add a sidebar to the contextual help.
+        *
+        * @since 3.3.0
+        *
+        * @param string $content Sidebar content in plain text or HTML.
+        */
+       public function set_help_sidebar( $content ) {
+               $this->_help_sidebar = $content;
+       }
+
+       /**
+        * Gets the number of layout columns the user has selected.
+        *
+        * The layout_columns option controls the max number and default number of
+        * columns. This method returns the number of columns within that range selected
+        * by the user via Screen Options. If no selection has been made, the default
+        * provisioned in layout_columns is returned. If the screen does not support
+        * selecting the number of layout columns, 0 is returned.
+        *
+        * @since 3.4.0
+        *
+        * @return int Number of columns to display.
+        */
+       public function get_columns() {
+               return $this->columns;
+       }
+
+       /**
+        * Get the accessible hidden headings and text used in the screen.
+        *
+        * @since 4.4.0
+        *
+        * @see set_screen_reader_content() For more information on the array format.
+        *
+        * @return array An associative array of screen reader text strings.
+        */
+       public function get_screen_reader_content() {
+               return $this->_screen_reader_content;
+       }
+
+       /**
+        * Get a screen reader text string.
+        *
+        * @since 4.4.0
+        *
+        * @param string $key Screen reader text array named key.
+        * @return string Screen reader text string.
+        */
+       public function get_screen_reader_text( $key ) {
+               if ( ! isset( $this->_screen_reader_content[ $key ] ) ) {
+                       return null;
+               }
+               return $this->_screen_reader_content[ $key ];
+       }
+
+       /**
+        * Add accessible hidden headings and text for the screen.
+        *
+        * @since 4.4.0
+        *
+        * @param array $content {
+        *     An associative array of screen reader text strings.
+        *
+        *     @type string $heading_views      Screen reader text for the filter links heading.
+        *                                      Default 'Filter items list'.
+        *     @type string $heading_pagination Screen reader text for the pagination heading.
+        *                                      Default 'Items list navigation'.
+        *     @type string heading_list        Screen reader text for the items list heading.
+        *                                      Default 'Items list'.
+        * }
+        */
+       public function set_screen_reader_content( $content = array() ) {
+               $defaults = array(
+                       'heading_views'      => __( 'Filter items list' ),
+                       'heading_pagination' => __( 'Items list navigation' ),
+                       'heading_list'       => __( 'Items list' ),
+               );
+               $content = wp_parse_args( $content, $defaults );
+
+               $this->_screen_reader_content = $content;
+       }
+
+       /**
+        * Remove all the accessible hidden headings and text for the screen.
+        *
+        * @since 4.4.0
+        */
+       public function remove_screen_reader_content() {
+               $this->_screen_reader_content = array();
+       }
+
+       /**
+        * Render the screen's help section.
+        *
+        * This will trigger the deprecated filters for backwards compatibility.
+        *
+        * @since 3.3.0
+        *
+        * @global string $screen_layout_columns
+        */
+       public function render_screen_meta() {
+
+               /**
+                * Filter the legacy contextual help list.
+                *
+                * @since 2.7.0
+                * @deprecated 3.3.0 Use get_current_screen()->add_help_tab() or
+                *                   get_current_screen()->remove_help_tab() instead.
+                *
+                * @param array     $old_compat_help Old contextual help.
+                * @param WP_Screen $this            Current WP_Screen instance.
+                */
+               self::$_old_compat_help = apply_filters( 'contextual_help_list', self::$_old_compat_help, $this );
+
+               $old_help = isset( self::$_old_compat_help[ $this->id ] ) ? self::$_old_compat_help[ $this->id ] : '';
+
+               /**
+                * Filter the legacy contextual help text.
+                *
+                * @since 2.7.0
+                * @deprecated 3.3.0 Use get_current_screen()->add_help_tab() or
+                *                   get_current_screen()->remove_help_tab() instead.
+                *
+                * @param string    $old_help  Help text that appears on the screen.
+                * @param string    $screen_id Screen ID.
+                * @param WP_Screen $this      Current WP_Screen instance.
+                *
+                */
+               $old_help = apply_filters( 'contextual_help', $old_help, $this->id, $this );
+
+               // Default help only if there is no old-style block of text and no new-style help tabs.
+               if ( empty( $old_help ) && ! $this->get_help_tabs() ) {
+
+                       /**
+                        * Filter the default legacy contextual help text.
+                        *
+                        * @since 2.8.0
+                        * @deprecated 3.3.0 Use get_current_screen()->add_help_tab() or
+                        *                   get_current_screen()->remove_help_tab() instead.
+                        *
+                        * @param string $old_help_default Default contextual help text.
+                        */
+                       $default_help = apply_filters( 'default_contextual_help', '' );
+                       if ( $default_help )
+                               $old_help = '<p>' . $default_help . '</p>';
+               }
+
+               if ( $old_help ) {
+                       $this->add_help_tab( array(
+                               'id'      => 'old-contextual-help',
+                               'title'   => __('Overview'),
+                               'content' => $old_help,
+                       ) );
+               }
+
+               $help_sidebar = $this->get_help_sidebar();
+
+               $help_class = 'hidden';
+               if ( ! $help_sidebar )
+                       $help_class .= ' no-sidebar';
+
+               // Time to render!
+               ?>
+               <div id="screen-meta" class="metabox-prefs">
+
+                       <div id="contextual-help-wrap" class="<?php echo esc_attr( $help_class ); ?>" tabindex="-1" aria-label="<?php esc_attr_e('Contextual Help Tab'); ?>">
+                               <div id="contextual-help-back"></div>
+                               <div id="contextual-help-columns">
+                                       <div class="contextual-help-tabs">
+                                               <ul>
+                                               <?php
+                                               $class = ' class="active"';
+                                               foreach ( $this->get_help_tabs() as $tab ) :
+                                                       $link_id  = "tab-link-{$tab['id']}";
+                                                       $panel_id = "tab-panel-{$tab['id']}";
+                                                       ?>
+
+                                                       <li id="<?php echo esc_attr( $link_id ); ?>"<?php echo $class; ?>>
+                                                               <a href="<?php echo esc_url( "#$panel_id" ); ?>" aria-controls="<?php echo esc_attr( $panel_id ); ?>">
+                                                                       <?php echo esc_html( $tab['title'] ); ?>
+                                                               </a>
+                                                       </li>
+                                               <?php
+                                                       $class = '';
+                                               endforeach;
+                                               ?>
+                                               </ul>
+                                       </div>
+
+                                       <?php if ( $help_sidebar ) : ?>
+                                       <div class="contextual-help-sidebar">
+                                               <?php echo $help_sidebar; ?>
+                                       </div>
+                                       <?php endif; ?>
+
+                                       <div class="contextual-help-tabs-wrap">
+                                               <?php
+                                               $classes = 'help-tab-content active';
+                                               foreach ( $this->get_help_tabs() as $tab ):
+                                                       $panel_id = "tab-panel-{$tab['id']}";
+                                                       ?>
+
+                                                       <div id="<?php echo esc_attr( $panel_id ); ?>" class="<?php echo $classes; ?>">
+                                                               <?php
+                                                               // Print tab content.
+                                                               echo $tab['content'];
+
+                                                               // If it exists, fire tab callback.
+                                                               if ( ! empty( $tab['callback'] ) )
+                                                                       call_user_func_array( $tab['callback'], array( $this, $tab ) );
+                                                               ?>
+                                                       </div>
+                                               <?php
+                                                       $classes = 'help-tab-content';
+                                               endforeach;
+                                               ?>
+                                       </div>
+                               </div>
+                       </div>
+               <?php
+               // Setup layout columns
+
+               /**
+                * Filter the array of screen layout columns.
+                *
+                * This hook provides back-compat for plugins using the back-compat
+                * filter instead of add_screen_option().
+                *
+                * @since 2.8.0
+                *
+                * @param array     $empty_columns Empty array.
+                * @param string    $screen_id     Screen ID.
+                * @param WP_Screen $this          Current WP_Screen instance.
+                */
+               $columns = apply_filters( 'screen_layout_columns', array(), $this->id, $this );
+
+               if ( ! empty( $columns ) && isset( $columns[ $this->id ] ) )
+                       $this->add_option( 'layout_columns', array('max' => $columns[ $this->id ] ) );
+
+               if ( $this->get_option( 'layout_columns' ) ) {
+                       $this->columns = (int) get_user_option("screen_layout_$this->id");
+
+                       if ( ! $this->columns && $this->get_option( 'layout_columns', 'default' ) )
+                               $this->columns = $this->get_option( 'layout_columns', 'default' );
+               }
+               $GLOBALS[ 'screen_layout_columns' ] = $this->columns; // Set the global for back-compat.
+
+               // Add screen options
+               if ( $this->show_screen_options() )
+                       $this->render_screen_options();
+               ?>
+               </div>
+               <?php
+               if ( ! $this->get_help_tabs() && ! $this->show_screen_options() )
+                       return;
+               ?>
+               <div id="screen-meta-links">
+               <?php if ( $this->get_help_tabs() ) : ?>
+                       <div id="contextual-help-link-wrap" class="hide-if-no-js screen-meta-toggle">
+                       <button type="button" id="contextual-help-link" class="button show-settings" aria-controls="contextual-help-wrap" aria-expanded="false"><?php _e( 'Help' ); ?></button>
+                       </div>
+               <?php endif;
+               if ( $this->show_screen_options() ) : ?>
+                       <div id="screen-options-link-wrap" class="hide-if-no-js screen-meta-toggle">
+                       <button type="button" id="show-settings-link" class="button show-settings" aria-controls="screen-options-wrap" aria-expanded="false"><?php _e( 'Screen Options' ); ?></button>
+                       </div>
+               <?php endif; ?>
+               </div>
+               <?php
+       }
+
+       /**
+        *
+        * @global array $wp_meta_boxes
+        *
+        * @return bool
+        */
+       public function show_screen_options() {
+               global $wp_meta_boxes;
+
+               if ( is_bool( $this->_show_screen_options ) )
+                       return $this->_show_screen_options;
+
+               $columns = get_column_headers( $this );
+
+               $show_screen = ! empty( $wp_meta_boxes[ $this->id ] ) || $columns || $this->get_option( 'per_page' );
+
+               switch ( $this->base ) {
+                       case 'widgets':
+                               $this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n";
+                               break;
+                       case 'post' :
+                               $expand = '<fieldset class="editor-expand hidden"><legend>' . __( 'Additional settings' ) . '</legend><label for="editor-expand-toggle">';
+                               $expand .= '<input type="checkbox" id="editor-expand-toggle"' . checked( get_user_setting( 'editor_expand', 'on' ), 'on', false ) . ' />';
+                               $expand .= __( 'Enable full-height editor and distraction-free functionality.' ) . '</label></fieldset>';
+                               $this->_screen_settings = $expand;
+                               break;
+                       default:
+                               $this->_screen_settings = '';
+                               break;
+               }
+
+               /**
+                * Filter the screen settings text displayed in the Screen Options tab.
+                *
+                * This filter is currently only used on the Widgets screen to enable
+                * accessibility mode.
+                *
+                * @since 3.0.0
+                *
+                * @param string    $screen_settings Screen settings.
+                * @param WP_Screen $this            WP_Screen object.
+                */
+               $this->_screen_settings = apply_filters( 'screen_settings', $this->_screen_settings, $this );
+
+               if ( $this->_screen_settings || $this->_options )
+                       $show_screen = true;
+
+               /**
+                * Filter whether to show the Screen Options tab.
+                *
+                * @since 3.2.0
+                *
+                * @param bool      $show_screen Whether to show Screen Options tab.
+                *                               Default true.
+                * @param WP_Screen $this        Current WP_Screen instance.
+                */
+               $this->_show_screen_options = apply_filters( 'screen_options_show_screen', $show_screen, $this );
+               return $this->_show_screen_options;
+       }
+
+       /**
+        * Render the screen options tab.
+        *
+        * @since 3.3.0
+        *
+        * @param array $options {
+        *     @type bool $wrap  Whether the screen-options-wrap div will be included. Defaults to true.
+        * }
+        */
+       public function render_screen_options( $options = array() ) {
+               $options = wp_parse_args( $options, array(
+                       'wrap' => true,
+               ) );
+
+               $wrapper_start = $wrapper_end = $form_start = $form_end = '';
+
+               // Output optional wrapper.
+               if ( $options['wrap'] ) {
+                       $wrapper_start = '<div id="screen-options-wrap" class="hidden" tabindex="-1" aria-label="' . esc_attr__( 'Screen Options Tab' ) . '">';
+                       $wrapper_end = '</div>';
+               }
+
+               // Don't output the form and nonce for the widgets accessibility mode links.
+               if ( 'widgets' !== $this->base ) {
+                       $form_start = "\n<form id='adv-settings' method='post'>\n";
+                       $form_end = "\n" . wp_nonce_field( 'screen-options-nonce', 'screenoptionnonce', false, false ) . "\n</form>\n";
+               }
+
+               echo $wrapper_start . $form_start;
+
+               $this->render_meta_boxes_preferences();
+               $this->render_list_table_columns_preferences();
+               $this->render_screen_layout();
+               $this->render_per_page_options();
+               $this->render_view_mode();
+               echo $this->_screen_settings;
+
+               /**
+                * Filter whether to show the Screen Options submit button.
+                *
+                * @since 4.4.0
+                * 
+                * @param bool      $show_button Whether to show Screen Options submit button.
+                *                               Default false.
+                * @param WP_Screen $this        Current WP_Screen instance.
+                */
+               $show_button = apply_filters( 'screen_options_show_submit', false, $this );
+
+               if ( $show_button ) {
+                       submit_button( __( 'Apply' ), 'primary', 'screen-options-apply', true );
+               }
+
+               echo $form_end . $wrapper_end;
+       }
+
+       /**
+        * Render the meta boxes preferences.
+        *
+        * @since 4.4.0
+        *
+        * @global array $wp_meta_boxes
+        */
+       public function render_meta_boxes_preferences() {
+               global $wp_meta_boxes;
+
+               if ( ! isset( $wp_meta_boxes[ $this->id ] ) ) {
+                       return;
+               }
+               ?>
+               <fieldset class="metabox-prefs">
+               <legend><?php _e( 'Boxes' ); ?></legend>
+               <?php
+                       meta_box_prefs( $this );
+
+                       if ( 'dashboard' === $this->id && has_action( 'welcome_panel' ) && current_user_can( 'edit_theme_options' ) ) {
+                               if ( isset( $_GET['welcome'] ) ) {
+                                       $welcome_checked = empty( $_GET['welcome'] ) ? 0 : 1;
+                                       update_user_meta( get_current_user_id(), 'show_welcome_panel', $welcome_checked );
+                               } else {
+                                       $welcome_checked = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
+                                       if ( 2 == $welcome_checked && wp_get_current_user()->user_email != get_option( 'admin_email' ) ) {
+                                               $welcome_checked = false;
+                                       }
+                               }
+                               echo '<label for="wp_welcome_panel-hide">';
+                               echo '<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) $welcome_checked, true, false ) . ' />';
+                               echo _x( 'Welcome', 'Welcome panel' ) . "</label>\n";
+                       }
+               ?>
+               </fieldset>
+               <?php
+       }
+
+       /**
+        * Render the list table columns preferences.
+        *
+        * @since 4.4.0
+        */
+       public function render_list_table_columns_preferences() {
+
+               $columns = get_column_headers( $this );
+               $hidden  = get_hidden_columns( $this );
+
+               if ( ! $columns ) {
+                       return;
+               }
+
+               $legend = ! empty( $columns['_title'] ) ? $columns['_title'] : __( 'Columns' );
+               ?>
+               <fieldset class="metabox-prefs">
+               <legend><?php echo $legend; ?></legend>
+               <?php
+               $special = array( '_title', 'cb', 'comment', 'media', 'name', 'title', 'username', 'blogname' );
+
+               foreach ( $columns as $column => $title ) {
+                       // Can't hide these for they are special
+                       if ( in_array( $column, $special ) ) {
+                               continue;
+                       }
+
+                       if ( empty( $title ) ) {
+                               continue;
+                       }
+
+                       if ( 'comments' == $column ) {
+                               $title = __( 'Comments' );
+                       }
+
+                       $id = "$column-hide";
+                       echo '<label>';
+                       echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" value="' . $column . '"' . checked( ! in_array( $column, $hidden ), true, false ) . ' />';
+                       echo "$title</label>\n";
+               }
+               ?>
+               </fieldset>
+               <?php
+       }
+
+       /**
+        * Render the option for number of columns on the page
+        *
+        * @since 3.3.0
+        */
+       public function render_screen_layout() {
+               if ( ! $this->get_option( 'layout_columns' ) ) {
+                       return;
+               }
+
+               $screen_layout_columns = $this->get_columns();
+               $num = $this->get_option( 'layout_columns', 'max' );
+
+               ?>
+               <fieldset class='columns-prefs'>
+               <legend class="screen-layout"><?php _e( 'Layout' ); ?></legend><?php
+                       for ( $i = 1; $i <= $num; ++$i ):
+                               ?>
+                               <label class="columns-prefs-<?php echo $i; ?>">
+                                       <input type='radio' name='screen_columns' value='<?php echo esc_attr( $i ); ?>'
+                                               <?php checked( $screen_layout_columns, $i ); ?> />
+                                       <?php printf( _n( '%s column', '%s columns', $i ), number_format_i18n( $i ) ); ?>
+                               </label>
+                               <?php
+                       endfor; ?>
+               </fieldset>
+               <?php
+       }
+
+       /**
+        * Render the items per page option
+        *
+        * @since 3.3.0
+        */
+       public function render_per_page_options() {
+               if ( null === $this->get_option( 'per_page' ) ) {
+                       return;
+               }
+
+               $per_page_label = $this->get_option( 'per_page', 'label' );
+               if ( null === $per_page_label ) {
+                       $per_page_label = __( 'Number of items per page:' );
+               }
+
+               $option = $this->get_option( 'per_page', 'option' );
+               if ( ! $option ) {
+                       $option = str_replace( '-', '_', "{$this->id}_per_page" );
+               }
+
+               $per_page = (int) get_user_option( $option );
+               if ( empty( $per_page ) || $per_page < 1 ) {
+                       $per_page = $this->get_option( 'per_page', 'default' );
+                       if ( ! $per_page ) {
+                               $per_page = 20;
+                       }
+               }
+
+               if ( 'edit_comments_per_page' == $option ) {
+                       $comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all';
+
+                       /** This filter is documented in wp-admin/includes/class-wp-comments-list-table.php */
+                       $per_page = apply_filters( 'comments_per_page', $per_page, $comment_status );
+               } elseif ( 'categories_per_page' == $option ) {
+                       /** This filter is documented in wp-admin/includes/class-wp-terms-list-table.php */
+                       $per_page = apply_filters( 'edit_categories_per_page', $per_page );
+               } else {
+                       /** This filter is documented in wp-admin/includes/class-wp-list-table.php */
+                       $per_page = apply_filters( $option, $per_page );
+               }
+
+               // Back compat
+               if ( isset( $this->post_type ) ) {
+                       /** This filter is documented in wp-admin/includes/post.php */
+                       $per_page = apply_filters( 'edit_posts_per_page', $per_page, $this->post_type );
+               }
+
+               // This needs a submit button
+               add_filter( 'screen_options_show_submit', '__return_true' );
+
+               ?>
+               <fieldset class="screen-options">
+               <legend><?php _e( 'Pagination' ); ?></legend>
+                       <?php if ( $per_page_label ) : ?>
+                               <label for="<?php echo esc_attr( $option ); ?>"><?php echo $per_page_label; ?></label>
+                               <input type="number" step="1" min="1" max="999" class="screen-per-page" name="wp_screen_options[value]"
+                                       id="<?php echo esc_attr( $option ); ?>" maxlength="3"
+                                       value="<?php echo esc_attr( $per_page ); ?>" />
+                       <?php endif; ?>
+                               <input type="hidden" name="wp_screen_options[option]" value="<?php echo esc_attr( $option ); ?>" />
+               </fieldset>
+               <?php
+       }
+
+       /**
+        * Render the list table view mode preferences.
+        *
+        * @since 4.4.0
+        */
+       public function render_view_mode() {
+               $screen = get_current_screen();
+
+               // Currently only enabled for posts lists
+               if ( 'edit' !== $screen->base ) {
+                       return;
+               }
+
+               /**
+                * Filter the post types that have different view mode options.
+                *
+                * @since 4.4.0
+                *
+                * @param array $view_mode_post_types Array of post types that can change view modes.
+                *                                    Default hierarchical post types with show_ui on.
+                */
+               $view_mode_post_types = get_post_types( array( 'hierarchical' => false, 'show_ui' => true ) );
+               $view_mode_post_types = apply_filters( 'view_mode_post_types', $view_mode_post_types );
+
+               if ( ! in_array( $this->post_type, $view_mode_post_types ) ) {
+                       return;
+               }
+
+               global $mode;
+
+               // This needs a submit button
+               add_filter( 'screen_options_show_submit', '__return_true' );
+?>
+               <fieldset class="metabox-prefs view-mode">
+               <legend><?php _e( 'View Mode' ); ?></legend>
+                               <label for="list-view-mode">
+                                       <input id="list-view-mode" type="radio" name="mode" value="list" <?php checked( 'list', $mode ); ?> />
+                                       <?php _e( 'List View' ); ?>
+                               </label>
+                               <label for="excerpt-view-mode">
+                                       <input id="excerpt-view-mode" type="radio" name="mode" value="excerpt" <?php checked( 'excerpt', $mode ); ?> />
+                                       <?php _e( 'Excerpt View' ); ?>
+                               </label>
+               </fieldset>
+<?php
+       }
+
+       /**
+        * Render screen reader text.
+        *
+        * @since 4.4.0
+        *
+        * @param string $key The screen reader text array named key.
+        * @param string $tag Optional. The HTML tag to wrap the screen reader text. Default h2.
+        */
+       public function render_screen_reader_content( $key = '', $tag = 'h2' ) {
+
+               if ( ! isset( $this->_screen_reader_content[ $key ] ) ) {
+                       return;
+               }
+               echo "<$tag class='screen-reader-text'>" . $this->_screen_reader_content[ $key ] . "</$tag>";
+       }
+}
index c71845936e723542ef3920b91bbfe274bf880700..8c06db64595561615d8bceb522750655f9788362 100644 (file)
@@ -1,6 +1,14 @@
 <?php
 /**
- * Class for implementing site icon functionality.
+ * Administration API: WP_Site_Icon class
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.3.0
+ */
+
+/**
+ * Core class used to implement site icon functionality.
  *
  * @since 4.3.0
  */
@@ -80,7 +88,7 @@ class WP_Site_Icon {
         */
        public function create_attachment_object( $cropped, $parent_attachment_id ) {
                $parent     = get_post( $parent_attachment_id );
-               $parent_url = $parent->guid;
+               $parent_url = wp_get_attachment_url( $parent->ID );
                $url        = str_replace( basename( $parent_url ), basename( $cropped ), $parent_url );
 
                $size       = @getimagesize( $cropped );
@@ -221,10 +229,12 @@ class WP_Site_Icon {
         * @return array|null|string The attachment metadata value, array of values, or null.
         */
        public function get_post_metadata( $value, $post_id, $meta_key, $single ) {
-               $site_icon_id = get_option( 'site_icon' );
+               if ( $single && '_wp_attachment_backup_sizes' === $meta_key ) {
+                       $site_icon_id = get_option( 'site_icon' );
 
-               if ( $post_id == $site_icon_id && '_wp_attachment_backup_sizes' == $meta_key && $single ) {
-                       add_filter( 'intermediate_image_sizes', array( $this, 'intermediate_image_sizes' ) );
+                       if ( $post_id == $site_icon_id ) {
+                               add_filter( 'intermediate_image_sizes', array( $this, 'intermediate_image_sizes' ) );
+                       }
                }
 
                return $value;
index a4c81afbe71f4e45ad0219ffd5dfcafc73e1059a..765b1a36b382cf555525416f300191896e6408bb 100644 (file)
@@ -1,11 +1,19 @@
 <?php
 /**
- * Terms List Table class.
+ * List Table API: WP_Terms_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying terms in a list table.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Table
  */
 class WP_Terms_List_Table extends WP_List_Table {
 
@@ -69,7 +77,7 @@ class WP_Terms_List_Table extends WP_List_Table {
        public function prepare_items() {
                $tags_per_page = $this->get_items_per_page( 'edit_' . $this->screen->taxonomy . '_per_page' );
 
-               if ( 'post_tag' == $this->screen->taxonomy ) {
+               if ( 'post_tag' === $this->screen->taxonomy ) {
                        /**
                         * Filter the number of terms displayed per page for the Tags list table.
                         *
@@ -88,7 +96,7 @@ class WP_Terms_List_Table extends WP_List_Table {
                         * @param int $tags_per_page Number of tags to be displayed. Default 20.
                         */
                        $tags_per_page = apply_filters( 'tagsperpage', $tags_per_page );
-               } elseif ( 'category' == $this->screen->taxonomy ) {
+               } elseif ( 'category' === $this->screen->taxonomy ) {
                        /**
                         * Filter the number of terms displayed per page for the Categories list table.
                         *
@@ -153,7 +161,7 @@ class WP_Terms_List_Table extends WP_List_Table {
         * @return string
         */
        public function current_action() {
-               if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['delete_tags'] ) && ( 'delete' == $_REQUEST['action'] || 'delete' == $_REQUEST['action2'] ) )
+               if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['delete_tags'] ) && ( 'delete' === $_REQUEST['action'] || 'delete' === $_REQUEST['action2'] ) )
                        return 'bulk-delete';
 
                return parent::current_action();
@@ -171,7 +179,7 @@ class WP_Terms_List_Table extends WP_List_Table {
                        'slug'        => __( 'Slug' ),
                );
 
-               if ( 'link_category' == $this->screen->taxonomy ) {
+               if ( 'link_category' === $this->screen->taxonomy ) {
                        $columns['links'] = __( 'Links' );
                } else {
                        $columns['posts'] = _x( 'Count', 'Number/count of items' );
@@ -358,15 +366,22 @@ class WP_Terms_List_Table extends WP_List_Table {
                $name = apply_filters( 'term_name', $pad . ' ' . $tag->name, $tag );
 
                $qe_data = get_term( $tag->term_id, $taxonomy, OBJECT, 'edit' );
-               $edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type ) );
 
-               $out = '<strong><a class="row-title" href="' . $edit_link . '" title="' . esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $name ) ) . '">' . $name . '</a></strong><br />';
+               $uri = ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ? wp_get_referer() : $_SERVER['REQUEST_URI'];
+
+               $edit_link = add_query_arg(
+                       'wp_http_referer',
+                       urlencode( wp_unslash( $uri ) ),
+                       get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type )
+               );
+
+               $out = '<strong><a class="row-title" href="' . esc_url( $edit_link ) . '" title="' . esc_attr( sprintf( __( 'Edit &#8220;%s&#8221;' ), $name ) ) . '">' . $name . '</a></strong><br />';
 
                $out .= '<div class="hidden" id="inline_' . $qe_data->term_id . '">';
                $out .= '<div class="name">' . $qe_data->name . '</div>';
 
                /** This filter is documented in wp-admin/edit-tag-form.php */
-               $out .= '<div class="slug">' . apply_filters( 'editable_slug', $qe_data->slug ) . '</div>';
+               $out .= '<div class="slug">' . apply_filters( 'editable_slug', $qe_data->slug, $qe_data ) . '</div>';
                $out .= '<div class="parent">' . $qe_data->parent . '</div></div>';
 
                return $out;
@@ -404,11 +419,17 @@ class WP_Terms_List_Table extends WP_List_Table {
                $tax = get_taxonomy( $taxonomy );
                $default_term = get_option( 'default_' . $taxonomy );
 
-               $edit_link = esc_url( get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type ) );
+               $uri = ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ? wp_get_referer() : $_SERVER['REQUEST_URI'];
+
+               $edit_link = add_query_arg(
+                       'wp_http_referer',
+                       urlencode( wp_unslash( $uri ) ),
+                       get_edit_term_link( $tag->term_id, $taxonomy, $this->screen->post_type )
+               );
 
                $actions = array();
                if ( current_user_can( $tax->cap->edit_terms ) ) {
-                       $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
+                       $actions['edit'] = '<a href="' . esc_url( $edit_link ) . '">' . __( 'Edit' ) . '</a>';
                        $actions['inline hide-if-no-js'] = '<a href="#" class="editinline">' . __( 'Quick&nbsp;Edit' ) . '</a>';
                }
                if ( current_user_can( $tax->cap->delete_terms ) && $tag->term_id != $default_term )
@@ -458,7 +479,7 @@ class WP_Terms_List_Table extends WP_List_Table {
         */
        public function column_slug( $tag ) {
                /** This filter is documented in wp-admin/edit-tag-form.php */
-               return apply_filters( 'editable_slug', $tag->slug );
+               return apply_filters( 'editable_slug', $tag->slug, $tag );
        }
 
        /**
@@ -483,7 +504,7 @@ class WP_Terms_List_Table extends WP_List_Table {
                if ( 'post' != $this->screen->post_type )
                        $args['post_type'] = $this->screen->post_type;
 
-               if ( 'attachment' == $this->screen->post_type )
+               if ( 'attachment' === $this->screen->post_type )
                        return "<a href='" . esc_url ( add_query_arg( $args, 'upload.php' ) ) . "'>$count</a>";
 
                return "<a href='" . esc_url ( add_query_arg( $args, 'edit.php' ) ) . "'>$count</a>";
@@ -536,9 +557,9 @@ class WP_Terms_List_Table extends WP_List_Table {
        <form method="get"><table style="display: none"><tbody id="inlineedit">
                <tr id="inline-edit" class="inline-edit-row" style="display: none"><td colspan="<?php echo $this->get_column_count(); ?>" class="colspanchange">
 
-                       <fieldset><div class="inline-edit-col">
-                               <h4><?php _e( 'Quick Edit' ); ?></h4>
-
+                       <fieldset>
+                               <legend class="inline-edit-legend"><?php _e( 'Quick Edit' ); ?></legend>
+                               <div class="inline-edit-col">
                                <label>
                                        <span class="title"><?php _ex( 'Name', 'term name' ); ?></span>
                                        <span class="input-text-wrap"><input type="text" name="name" class="ptitle" value="" /></span>
@@ -567,8 +588,8 @@ class WP_Terms_List_Table extends WP_List_Table {
        ?>
 
                <p class="inline-edit-save submit">
-                       <a href="#inline-edit" class="cancel button-secondary alignleft"><?php _e( 'Cancel' ); ?></a>
-                       <a href="#inline-edit" class="save button-primary alignright"><?php echo $tax->labels->update_item; ?></a>
+                       <button type="button" class="cancel button-secondary alignleft"><?php _e( 'Cancel' ); ?></button>
+                       <button type="button" class="save button-primary alignright"><?php echo $tax->labels->update_item; ?></button>
                        <span class="spinner"></span>
                        <span class="error" style="display:none;"></span>
                        <?php wp_nonce_field( 'taxinlineeditnonce', '_inline_edit', false ); ?>
index 427c5391489953005444823e43370dc588e50e7d..c2b0b6d5813a0102e4c2d097b37b6afd83d98c47 100644 (file)
@@ -1,11 +1,19 @@
 <?php
 /**
- * Theme Installer List Table class.
+ * List Table API: WP_Theme_Install_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying themes to install in a list table.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_Thenes_List_Table
  */
 class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
 
@@ -50,7 +58,7 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
                // These are the tabs which are shown on the page,
                $tabs = array();
                $tabs['dashboard'] = __( 'Search' );
-               if ( 'search' == $tab )
+               if ( 'search' === $tab )
                        $tabs['search'] = __( 'Search Results' );
                $tabs['upload'] = __( 'Upload' );
                $tabs['featured'] = _x( 'Featured', 'themes' );
@@ -163,7 +171,7 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
 
                $display_tabs = array();
                foreach ( (array) $tabs as $action => $text ) {
-                       $class = ( $action == $tab ) ? ' class="current"' : '';
+                       $class = ( $action === $tab ) ? ' class="current"' : '';
                        $href = self_admin_url('theme-install.php?tab=' . $action);
                        $display_tabs['theme-install-'.$action] = "<a href='$href'$class>$text</a>";
                }
@@ -294,7 +302,7 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
 
                ?>
                <a class="screenshot install-theme-preview" href="<?php echo esc_url( $preview_url ); ?>" title="<?php echo esc_attr( $preview_title ); ?>">
-                       <img src="<?php echo esc_url( $theme->screenshot_url ); ?>" width="150" />
+                       <img src="<?php echo esc_url( $theme->screenshot_url ); ?>" width="150" alt="" />
                </a>
 
                <h3><?php echo $name; ?></h3>
@@ -404,7 +412,7 @@ class WP_Theme_Install_List_Table extends WP_Themes_List_Table {
                        <h3 class="theme-name"><?php echo $name; ?></h3>
                        <span class="theme-by"><?php printf( __( 'By %s' ), $author ); ?></span>
                        <?php if ( isset( $theme->screenshot_url ) ): ?>
-                               <img class="theme-screenshot" src="<?php echo esc_url( $theme->screenshot_url ); ?>" />
+                               <img class="theme-screenshot" src="<?php echo esc_url( $theme->screenshot_url ); ?>" alt="" />
                        <?php endif; ?>
                        <div class="theme-details">
                                <?php wp_star_rating( array( 'rating' => $theme->rating, 'type' => 'percent', 'number' => $theme->num_ratings ) ); ?>
index e01e3d463686d88c0fe4fc8b651e0405c4e2e453..2426e61223b61dcdc07633c044670a65f1aa08ab 100644 (file)
@@ -1,11 +1,19 @@
 <?php
 /**
- * Themes List Table class.
+ * List Table API: WP_Themes_List_Table class
  *
  * @package WordPress
- * @subpackage List_Table
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying installed themes in a list table.
+ *
  * @since 3.1.0
  * @access private
+ *
+ * @see WP_List_Table
  */
 class WP_Themes_List_Table extends WP_List_Table {
 
index 3e9a5556b63d0a4325e85c0d510010f98097c494..77a5e7bdfa331a20ed3c5041dd64026af8a56fc3 100644 (file)
@@ -281,8 +281,11 @@ class Bulk_Upgrader_Skin extends WP_Upgrader_Skin {
         */
        public function add_strings() {
                $this->upgrader->strings['skin_upgrade_start'] = __('The update process is starting. This process may take a while on some hosts, so please be patient.');
-               $this->upgrader->strings['skin_update_failed_error'] = __('An error occurred while updating %1$s: <strong>%2$s</strong>');
+               /* translators: 1: Title of an update, 2: Error message */
+               $this->upgrader->strings['skin_update_failed_error'] = __('An error occurred while updating %1$s: %2$s');
+               /* translators: 1: Title of an update */
                $this->upgrader->strings['skin_update_failed'] = __('The update of %1$s failed.');
+               /* translators: 1: Title of an update */
                $this->upgrader->strings['skin_update_successful'] = __( '%1$s updated successfully.' ) . ' <a onclick="%2$s" href="#" class="hide-if-no-js"><span>' . __( 'Show Details' ) . '</span><span class="hidden">' . __( 'Hide Details' ) . '</span></a>';
                $this->upgrader->strings['skin_upgrade_end'] = __('All updates have been completed.');
        }
@@ -366,7 +369,7 @@ class Bulk_Upgrader_Skin extends WP_Upgrader_Skin {
         */
        public function before($title = '') {
                $this->in_loop = true;
-               printf( '<h4>' . $this->upgrader->strings['skin_before_update_header'] . ' <span class="spinner waiting-' . $this->upgrader->update_current . '"></span></h4>',  $title, $this->upgrader->update_current, $this->upgrader->update_count);
+               printf( '<h2>' . $this->upgrader->strings['skin_before_update_header'] . ' <span class="spinner waiting-' . $this->upgrader->update_current . '"></span></h2>', $title, $this->upgrader->update_current, $this->upgrader->update_count );
                echo '<script type="text/javascript">jQuery(\'.waiting-' . esc_js($this->upgrader->update_current) . '\').css("display", "inline-block");</script>';
                echo '<div class="update-messages hide-if-js" id="progress-' . esc_attr($this->upgrader->update_current) . '"><p>';
                $this->flush_output();
@@ -379,10 +382,11 @@ class Bulk_Upgrader_Skin extends WP_Upgrader_Skin {
        public function after($title = '') {
                echo '</p></div>';
                if ( $this->error || ! $this->result ) {
-                       if ( $this->error )
-                               echo '<div class="error"><p>' . sprintf($this->upgrader->strings['skin_update_failed_error'], $title, $this->error) . '</p></div>';
-                       else
+                       if ( $this->error ) {
+                               echo '<div class="error"><p>' . sprintf($this->upgrader->strings['skin_update_failed_error'], $title, '<strong>' . $this->error . '</strong>' ) . '</p></div>';
+                       } else {
                                echo '<div class="error"><p>' . sprintf($this->upgrader->strings['skin_update_failed'], $title) . '</p></div>';
+                       }
 
                        echo '<script type="text/javascript">jQuery(\'#progress-' . esc_js($this->upgrader->update_current) . '\').show();</script>';
                }
@@ -739,7 +743,7 @@ class Theme_Upgrader_Skin extends WP_Upgrader_Skin {
                                }
                        } elseif ( current_user_can( 'switch_themes' ) ) {
                                if ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) ) {
-                                       $update_actions['preview'] .= '<a href="' . wp_customize_url( $stylesheet ) . '" class="hide-if-no-customize load-customize"><span aria-hidden="true">' . __( 'Live Preview' ) . '</span><span class="screen-reader-text">' . sprintf( __( 'Live Preview &#8220;%s&#8221;' ), $name ) . '</span></a>';
+                                       $update_actions['preview'] = '<a href="' . wp_customize_url( $stylesheet ) . '" class="hide-if-no-customize load-customize"><span aria-hidden="true">' . __( 'Live Preview' ) . '</span><span class="screen-reader-text">' . sprintf( __( 'Live Preview &#8220;%s&#8221;' ), $name ) . '</span></a>';
                                }
                                $update_actions['activate'] = '<a href="' . esc_url( $activate_link ) . '" class="activatelink"><span aria-hidden="true">' . __( 'Activate' ) . '</span><span class="screen-reader-text">' . sprintf( __( 'Activate &#8220;%s&#8221;' ), $name ) . '</span></a>';
                        }
@@ -801,7 +805,7 @@ class Language_Pack_Upgrader_Skin extends WP_Upgrader_Skin {
 
                echo '<div class="update-messages lp-show-latest">';
 
-               printf( '<h4>' . __( 'Updating translations for %1$s (%2$s)&#8230;' ) . '</h4>', $name, $this->language_update->language );
+               printf( '<h2>' . __( 'Updating translations for %1$s (%2$s)&#8230;' ) . '</h2>', $name, $this->language_update->language );
        }
 
        /**
index 235df514c1716888f480c0c59f8f5702ab33c007..d3abd8eab467ea4426953a0385130c1ff46fb211 100644 (file)
@@ -1,10 +1,10 @@
 <?php
 /**
- * A File upgrader class for WordPress.
+ * Upgrade API: WP_Upgrader, Plugin_Upgrader, Theme_Upgrader, Language_Pack_Upgrader,
+ * Core_Upgrader, File_Upload_Upgrader, and WP_Automatic_Updater classes
  *
- * This set of classes are designed to be used to upgrade/install a local set of files on the filesystem via the Filesystem Abstraction classes.
- *
- * @link https://core.trac.wordpress.org/ticket/7875 consolidate plugin/theme/core upgrade/install functions
+ * This set of classes are designed to be used to upgrade/install a local set of files
+ * on the filesystem via the Filesystem Abstraction classes.
  *
  * @package WordPress
  * @subpackage Upgrader
 require ABSPATH . 'wp-admin/includes/class-wp-upgrader-skins.php';
 
 /**
- * WordPress Upgrader class for Upgrading/Installing a local set of files via the Filesystem Abstraction classes from a Zip file.
+ * Core class used for upgrading/installing a local set of files via
+ * the Filesystem Abstraction classes from a Zip file.
  *
- * @package WordPress
- * @subpackage Upgrader
  * @since 2.8.0
  */
 class WP_Upgrader {
@@ -26,6 +25,7 @@ class WP_Upgrader {
         * The error/notification strings used to update the user on the progress.
         *
         * @since 2.8.0
+        * @access public
         * @var string $strings
         */
        public $strings = array();
@@ -34,6 +34,7 @@ class WP_Upgrader {
         * The upgrader skin being used.
         *
         * @since 2.8.0
+        * @access public
         * @var WP_Upgrader_Skin $skin
         */
        public $skin = null;
@@ -47,6 +48,8 @@ class WP_Upgrader {
         * it.
         *
         * @since 2.8.0
+        * @access public
+        *
         * @var WP_Error|array $result {
         *      @type string $source             The full path to the source the files were installed from.
         *      @type string $source_files       List of all the files in the source directory.
@@ -68,6 +71,7 @@ class WP_Upgrader {
         * Set by the bulk update methods.
         *
         * @since 3.0.0
+        * @access public
         * @var int $update_count
         */
        public $update_count = 0;
@@ -78,6 +82,7 @@ class WP_Upgrader {
         * Used by the bulk update methods, and incremented for each update.
         *
         * @since 3.0.0
+        * @access public
         * @var int
         */
        public $update_current = 0;
@@ -86,6 +91,7 @@ class WP_Upgrader {
         * Construct the upgrader with a skin.
         *
         * @since 2.8.0
+        * @access public
         *
         * @param WP_Upgrader_Skin $skin The upgrader skin to use. Default is a {@see WP_Upgrader_Skin}
         *                               instance.
@@ -104,6 +110,7 @@ class WP_Upgrader {
         * and also add the generic strings to `WP_Upgrader::$strings`.
         *
         * @since 2.8.0
+        * @access public
         */
        public function init() {
                $this->skin->set_upgrader($this);
@@ -114,6 +121,7 @@ class WP_Upgrader {
         * Add the generic strings to WP_Upgrader::$strings.
         *
         * @since 2.8.0
+        * @access public
         */
        public function generic_strings() {
                $this->strings['bad_request'] = __('Invalid Data provided.');
@@ -142,6 +150,7 @@ class WP_Upgrader {
         * Connect to the filesystem.
         *
         * @since 2.8.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
         *
@@ -205,6 +214,7 @@ class WP_Upgrader {
         * Download a package.
         *
         * @since 2.8.0
+        * @access public
         *
         * @param string $package The URI of the package. If this is the full path to an
         *                        existing local file, it will be returned untouched.
@@ -216,6 +226,7 @@ class WP_Upgrader {
                 * Filter whether to return the package.
                 *
                 * @since 3.7.0
+                * @access public
                 *
                 * @param bool        $reply   Whether to bail without returning the package.
                 *                             Default false.
@@ -246,6 +257,7 @@ class WP_Upgrader {
         * Unpack a compressed package file.
         *
         * @since 2.8.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
         *
@@ -297,6 +309,7 @@ class WP_Upgrader {
         * Clears the directory where this item is going to be installed into.
         *
         * @since 4.3.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
         *
@@ -360,6 +373,7 @@ class WP_Upgrader {
         * clear out the destination folder if it already exists.
         *
         * @since 2.8.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
         * @global array              $wp_theme_directories
@@ -421,6 +435,7 @@ class WP_Upgrader {
                 * @param array         $hook_extra Extra arguments passed to hooked filters.
                 */
                $res = apply_filters( 'upgrader_pre_install', true, $args['hook_extra'] );
+
                if ( is_wp_error( $res ) ) {
                        return $res;
                }
@@ -437,7 +452,7 @@ class WP_Upgrader {
                        $source = trailingslashit( $args['source'] ) . trailingslashit( $source_files[0] );
                } elseif ( count( $source_files ) == 0 ) {
                        return new WP_Error( 'incompatible_archive_empty', $this->strings['incompatible_archive'], $this->strings['no_files'] ); // There are no files?
-               } else { //It's only a single file, the upgrader will use the foldername of this file as the destination folder. foldername is based on zip filename.
+               } else { // It's only a single file, the upgrader will use the folder name of this file as the destination folder. Folder name is based on zip filename.
                        $source = trailingslashit( $args['source'] );
                }
 
@@ -445,12 +460,15 @@ class WP_Upgrader {
                 * Filter the source file location for the upgrade package.
                 *
                 * @since 2.8.0
+                * @since 4.4.0 The $hook_extra parameter became available.
                 *
                 * @param string      $source        File source location.
-                * @param string      $remote_source Remove file source location.
+                * @param string      $remote_source Remote file source location.
                 * @param WP_Upgrader $this          WP_Upgrader instance.
+                * @param array       $hook_extra    Extra arguments passed to hooked filters.
                 */
-               $source = apply_filters( 'upgrader_source_selection', $source, $remote_source, $this );
+               $source = apply_filters( 'upgrader_source_selection', $source, $remote_source, $this, $args['hook_extra'] );
+
                if ( is_wp_error( $source ) ) {
                        return $source;
                }
@@ -459,6 +477,7 @@ class WP_Upgrader {
                if ( $source !== $remote_source ) {
                        $source_files = array_keys( $wp_filesystem->dirlist( $source ) );
                }
+
                /*
                 * Protection against deleting files in any important base directories.
                 * Theme_Upgrader & Plugin_Upgrader also trigger this, as they pass the
@@ -471,13 +490,14 @@ class WP_Upgrader {
                if ( is_array( $wp_theme_directories ) ) {
                        $protected_directories = array_merge( $protected_directories, $wp_theme_directories );
                }
+
                if ( in_array( $destination, $protected_directories ) ) {
                        $remote_destination = trailingslashit( $remote_destination ) . trailingslashit( basename( $source ) );
                        $destination = trailingslashit( $destination ) . trailingslashit( basename( $source ) );
                }
 
                if ( $clear_destination ) {
-                       // We're going to clear the destination if there's something there
+                       // We're going to clear the destination if there's something there.
                        $this->skin->feedback('remove_old');
 
                        $removed = $this->clear_destination( $remote_destination );
@@ -561,6 +581,7 @@ class WP_Upgrader {
         * install it in the destination folder.
         *
         * @since 2.8.0
+        * @access public
         *
         * @param array $options {
         *     Array or string of arguments for upgrading/installing a package.
@@ -584,7 +605,6 @@ class WP_Upgrader {
         *     @type array  $hook_extra                  Extra arguments to pass to the filter hooks called by
         *                                               {@see WP_Upgrader::run()}.
         * }
-        *
         * @return array|false|WP_error The result from self::install_package() on success, otherwise a WP_Error,
         *                              or false if unable to connect to the filesystem.
         */
@@ -646,7 +666,10 @@ class WP_Upgrader {
                        return $res;
                }
 
-               //Download the package (Note, This just returns the filename of the file if the package is a local file)
+               /*
+                * Download the package (Note, This just returns the filename
+                * of the file if the package is a local file)
+                */
                $download = $this->download_package( $options['package'] );
                if ( is_wp_error($download) ) {
                        $this->skin->error($download);
@@ -659,7 +682,7 @@ class WP_Upgrader {
 
                $delete_package = ( $download != $options['package'] ); // Do not delete a "local" file
 
-               //Unzips the file into a temporary directory
+               // Unzips the file into a temporary directory.
                $working_dir = $this->unpack_package( $download, $delete_package );
                if ( is_wp_error($working_dir) ) {
                        $this->skin->error($working_dir);
@@ -670,7 +693,7 @@ class WP_Upgrader {
                        return $working_dir;
                }
 
-               //With the given options, this installs it to the destination directory.
+               // With the given options, this installs it to the destination directory.
                $result = $this->install_package( array(
                        'source' => $working_dir,
                        'destination' => $options['destination'],
@@ -685,7 +708,7 @@ class WP_Upgrader {
                        $this->skin->error($result);
                        $this->skin->feedback('process_failed');
                } else {
-                       //Install Succeeded
+                       // Install succeeded.
                        $this->skin->feedback('process_success');
                }
 
@@ -707,6 +730,7 @@ class WP_Upgrader {
         * Creates/deletes the maintenance file to enable/disable maintenance mode.
         *
         * @since 2.8.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
         *
@@ -730,11 +754,14 @@ class WP_Upgrader {
 }
 
 /**
- * Plugin Upgrader class for WordPress Plugins, It is designed to upgrade/install plugins from a local zip, remote zip URL, or uploaded zip file.
+ * Core class used for upgrading/installing plugins.
+ *
+ * It is designed to upgrade/install plugins from a local zip, remote zip URL,
+ * or uploaded zip file.
  *
- * @package WordPress
- * @subpackage Upgrader
  * @since 2.8.0
+ *
+ * @see WP_Upgrader
  */
 class Plugin_Upgrader extends WP_Upgrader {
 
@@ -742,7 +769,9 @@ class Plugin_Upgrader extends WP_Upgrader {
         * Plugin upgrade result.
         *
         * @since 2.8.0
+        * @access public
         * @var array|WP_Error $result
+        *
         * @see WP_Upgrader::$result
         */
        public $result;
@@ -751,6 +780,7 @@ class Plugin_Upgrader extends WP_Upgrader {
         * Whether a bulk upgrade/install is being performed.
         *
         * @since 2.9.0
+        * @access public
         * @var bool $bulk
         */
        public $bulk = false;
@@ -759,6 +789,7 @@ class Plugin_Upgrader extends WP_Upgrader {
         * Initialize the upgrade strings.
         *
         * @since 2.8.0
+        * @access public
         */
        public function upgrade_strings() {
                $this->strings['up_to_date'] = __('The plugin is at the latest version.');
@@ -776,6 +807,7 @@ class Plugin_Upgrader extends WP_Upgrader {
         * Initialize the install strings.
         *
         * @since 2.8.0
+        * @access public
         */
        public function install_strings() {
                $this->strings['no_package'] = __('Install package not available.');
@@ -792,6 +824,7 @@ class Plugin_Upgrader extends WP_Upgrader {
         *
         * @since 2.8.0
         * @since 3.7.0 The `$args` parameter was added, making clearing the plugin update cache optional.
+        * @access public
         *
         * @param string $package The full local path or URI of the package.
         * @param array  $args {
@@ -800,7 +833,6 @@ class Plugin_Upgrader extends WP_Upgrader {
         *     @type bool $clear_update_cache Whether to clear the plugin updates cache if successful.
         *                                    Default true.
         * }
-        *
         * @return bool|WP_Error True if the install was successful, false or a WP_Error otherwise.
         */
        public function install( $package, $args = array() ) {
@@ -814,6 +846,8 @@ class Plugin_Upgrader extends WP_Upgrader {
                $this->install_strings();
 
                add_filter('upgrader_source_selection', array($this, 'check_package') );
+               // Clear cache so wp_update_plugins() knows about the new plugin.
+               add_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9, 0 );
 
                $this->run( array(
                        'package' => $package,
@@ -826,6 +860,7 @@ class Plugin_Upgrader extends WP_Upgrader {
                        )
                ) );
 
+               remove_action( 'upgrader_process_complete', 'wp_clean_plugins_cache', 9 );
                remove_filter('upgrader_source_selection', array($this, 'check_package') );
 
                if ( ! $this->result || is_wp_error($this->result) )
@@ -842,10 +877,11 @@ class Plugin_Upgrader extends WP_Upgrader {
         *
         * @since 2.8.0
         * @since 3.7.0 The `$args` parameter was added, making clearing the plugin update cache optional.
+        * @access public
         *
         * @param string $plugin The basename path to the main plugin file.
         * @param array  $args {
-        *     Optional. Other arguments for upgrading a plugin package. Defualt empty array.
+        *     Optional. Other arguments for upgrading a plugin package. Default empty array.
         *
         *     @type bool $clear_update_cache Whether to clear the plugin updates cache if successful.
         *                                    Default true.
@@ -908,6 +944,7 @@ class Plugin_Upgrader extends WP_Upgrader {
         *
         * @since 2.8.0
         * @since 3.7.0 The `$args` parameter was added, making clearing the plugin update cache optional.
+        * @access public
         *
         * @param array $plugins Array of the basename paths of the plugins' main files.
         * @param array $args {
@@ -916,7 +953,6 @@ class Plugin_Upgrader extends WP_Upgrader {
         *     @type bool $clear_update_cache Whether to clear the plugin updates cache if successful.
         *                                    Default true.
         * }
-        *
         * @return array|false An array of results indexed by plugin file, or false if unable to connect to the filesystem.
         */
        public function bulk_upgrade( $plugins, $args = array() ) {
@@ -945,10 +981,12 @@ class Plugin_Upgrader extends WP_Upgrader {
 
                $this->skin->bulk_header();
 
-               // Only start maintenance mode if:
-               // - running Multisite and there are one or more plugins specified, OR
-               // - a plugin with an update available is currently active.
-               // @TODO: For multisite, maintenance mode should only kick in for individual sites if at all possible.
+               /*
+                * Only start maintenance mode if:
+                * - running Multisite and there are one or more plugins specified, OR
+                * - a plugin with an update available is currently active.
+                * @TODO: For multisite, maintenance mode should only kick in for individual sites if at all possible.
+                */
                $maintenance = ( is_multisite() && ! empty( $plugins ) );
                foreach ( $plugins as $plugin )
                        $maintenance = $maintenance || ( is_plugin_active( $plugin ) && isset( $current->response[ $plugin] ) );
@@ -972,7 +1010,7 @@ class Plugin_Upgrader extends WP_Upgrader {
                                continue;
                        }
 
-                       // Get the URL to the zip file
+                       // Get the URL to the zip file.
                        $r = $current->response[ $plugin ];
 
                        $this->skin->plugin_active = is_plugin_active($plugin);
@@ -1027,7 +1065,7 @@ class Plugin_Upgrader extends WP_Upgrader {
                // Cleanup our hooks, in case something else does a upgrade on this connection.
                remove_filter('upgrader_clear_destination', array($this, 'delete_old_plugin'));
 
-               // Force refresh of plugin update information
+               // Force refresh of plugin update information.
                wp_clean_plugins_cache( $parsed_args['clear_update_cache'] );
 
                return $results;
@@ -1040,11 +1078,13 @@ class Plugin_Upgrader extends WP_Upgrader {
         * {@see Plugin_Upgrader::install()}.
         *
         * @since 3.3.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
         *
         * @param string $source The path to the downloaded package source.
-        * @return string|WP_Error The source as passed, or a {@see WP_Error} object if no plugins were found.
+        * @return string|WP_Error The source as passed, or a {@see WP_Error} object
+        *                         if no plugins were found.
         */
        public function check_package($source) {
                global $wp_filesystem;
@@ -1081,6 +1121,7 @@ class Plugin_Upgrader extends WP_Upgrader {
         * This isn't used internally in the class, but is called by the skins.
         *
         * @since 2.8.0
+        * @access public
         *
         * @return string|false The full path to the main plugin file, or false.
         */
@@ -1106,6 +1147,7 @@ class Plugin_Upgrader extends WP_Upgrader {
         *
         * @since 2.8.0
         * @since 4.1.0 Added a return value.
+        * @access public
         *
         * @param bool|WP_Error  $return Upgrade offer return.
         * @param array          $plugin Plugin package arguments.
@@ -1139,6 +1181,7 @@ class Plugin_Upgrader extends WP_Upgrader {
         * {@see Plugin_Upgrader::upgrade()} and {@see Plugin_Upgrader::bulk_upgrade()}.
         *
         * @since 2.8.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
      *
@@ -1178,11 +1221,14 @@ class Plugin_Upgrader extends WP_Upgrader {
 }
 
 /**
- * Theme Upgrader class for WordPress Themes, It is designed to upgrade/install themes from a local zip, remote zip URL, or uploaded zip file.
+ * Core class used for upgrading/installing themes.
+ *
+ * It is designed to upgrade/install themes from a local zip, remote zip URL,
+ * or uploaded zip file.
  *
- * @package WordPress
- * @subpackage Upgrader
  * @since 2.8.0
+ *
+ * @see WP_Upgrader
  */
 class Theme_Upgrader extends WP_Upgrader {
 
@@ -1190,15 +1236,17 @@ class Theme_Upgrader extends WP_Upgrader {
         * Result of the theme upgrade offer.
         *
         * @since 2.8.0
-        * @var array|WP_Erorr $result
+        * @access public
+        * @var array|WP_Error $result
         * @see WP_Upgrader::$result
         */
        public $result;
 
        /**
-        * Whether multiple plugins are being upgraded/installed in bulk.
+        * Whether multiple themes are being upgraded/installed in bulk.
         *
         * @since 2.9.0
+        * @access public
         * @var bool $bulk
         */
        public $bulk = false;
@@ -1207,6 +1255,7 @@ class Theme_Upgrader extends WP_Upgrader {
         * Initialize the upgrade strings.
         *
         * @since 2.8.0
+        * @access public
         */
        public function upgrade_strings() {
                $this->strings['up_to_date'] = __('The theme is at the latest version.');
@@ -1223,6 +1272,7 @@ class Theme_Upgrader extends WP_Upgrader {
         * Initialize the install strings.
         *
         * @since 2.8.0
+        * @access public
         */
        public function install_strings() {
                $this->strings['no_package'] = __('Install package not available.');
@@ -1250,6 +1300,7 @@ class Theme_Upgrader extends WP_Upgrader {
         * Hooked to the {@see 'upgrader_post_install'} filter by {@see Theme_Upgrader::install()}.
         *
         * @since 3.4.0
+        * @access public
         *
         * @param bool  $install_result
         * @param array $hook_extra
@@ -1323,6 +1374,7 @@ class Theme_Upgrader extends WP_Upgrader {
         * a child theme and installing the parent theme fails.
         *
         * @since 3.4.0
+        * @access public
         *
         * @param array $actions Preview actions.
         * @return array
@@ -1337,6 +1389,7 @@ class Theme_Upgrader extends WP_Upgrader {
         *
         * @since 2.8.0
         * @since 3.7.0 The `$args` parameter was added, making clearing the update cache optional.
+        * @access public
         *
         * @param string $package The full local path or URI of the package.
         * @param array  $args {
@@ -1360,6 +1413,8 @@ class Theme_Upgrader extends WP_Upgrader {
 
                add_filter('upgrader_source_selection', array($this, 'check_package') );
                add_filter('upgrader_post_install', array($this, 'check_parent_theme_filter'), 10, 3);
+               // Clear cache so wp_update_themes() knows about the new theme.
+               add_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9, 0 );
 
                $this->run( array(
                        'package' => $package,
@@ -1372,6 +1427,7 @@ class Theme_Upgrader extends WP_Upgrader {
                        ),
                ) );
 
+               remove_action( 'upgrader_process_complete', 'wp_clean_themes_cache', 9 );
                remove_filter('upgrader_source_selection', array($this, 'check_package') );
                remove_filter('upgrader_post_install', array($this, 'check_parent_theme_filter'));
 
@@ -1389,6 +1445,7 @@ class Theme_Upgrader extends WP_Upgrader {
         *
         * @since 2.8.0
         * @since 3.7.0 The `$args` parameter was added, making clearing the update cache optional.
+        * @access public
         *
         * @param string $theme The theme slug.
         * @param array  $args {
@@ -1454,6 +1511,7 @@ class Theme_Upgrader extends WP_Upgrader {
         *
         * @since 3.0.0
         * @since 3.7.0 The `$args` parameter was added, making clearing the update cache optional.
+        * @access public
         *
         * @param array $themes The theme slugs.
         * @param array $args {
@@ -1574,6 +1632,7 @@ class Theme_Upgrader extends WP_Upgrader {
         * files.
         *
         * @since 3.3.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
         *
@@ -1592,17 +1651,35 @@ class Theme_Upgrader extends WP_Upgrader {
                        return $source;
 
                // A proper archive should have a style.css file in the single subdirectory
-               if ( ! file_exists( $working_directory . 'style.css' ) )
-                       return new WP_Error( 'incompatible_archive_theme_no_style', $this->strings['incompatible_archive'], __( 'The theme is missing the <code>style.css</code> stylesheet.' ) );
+               if ( ! file_exists( $working_directory . 'style.css' ) ) {
+                       return new WP_Error( 'incompatible_archive_theme_no_style', $this->strings['incompatible_archive'],
+                               /* translators: %s: style.css */
+                               sprintf( __( 'The theme is missing the %s stylesheet.' ),
+                                       '<code>style.css</code>'
+                               )
+                       );
+               }
 
                $info = get_file_data( $working_directory . 'style.css', array( 'Name' => 'Theme Name', 'Template' => 'Template' ) );
 
-               if ( empty( $info['Name'] ) )
-                       return new WP_Error( 'incompatible_archive_theme_no_name', $this->strings['incompatible_archive'], __( "The <code>style.css</code> stylesheet doesn't contain a valid theme header." ) );
+               if ( empty( $info['Name'] ) ) {
+                       return new WP_Error( 'incompatible_archive_theme_no_name', $this->strings['incompatible_archive'],
+                               /* translators: %s: style.css */
+                               sprintf( __( 'The %s stylesheet doesn&#8217;t contain a valid theme header.' ),
+                                       '<code>style.css</code>'
+                               )
+                       );
+               }
 
                // If it's not a child theme, it must have at least an index.php to be legit.
-               if ( empty( $info['Template'] ) && ! file_exists( $working_directory . 'index.php' ) )
-                       return new WP_Error( 'incompatible_archive_theme_no_index', $this->strings['incompatible_archive'], __( 'The theme is missing the <code>index.php</code> file.' ) );
+               if ( empty( $info['Template'] ) && ! file_exists( $working_directory . 'index.php' ) ) {
+                       return new WP_Error( 'incompatible_archive_theme_no_index', $this->strings['incompatible_archive'],
+                               /* translators: %s: index.php */
+                               sprintf( __( 'The theme is missing the %s file.' ),
+                                       '<code>index.php</code>'
+                               )
+                       );
+               }
 
                return $source;
        }
@@ -1614,6 +1691,7 @@ class Theme_Upgrader extends WP_Upgrader {
         * {@see Theme_Upgrader::bulk_upgrade()}.
         *
         * @since 2.8.0
+        * @access public
         *
         * @param bool|WP_Error  $return
         * @param array          $theme
@@ -1641,6 +1719,7 @@ class Theme_Upgrader extends WP_Upgrader {
         * and {@see Theme_Upgrader::bulk_upgrade()}.
         *
         * @since 2.8.0
+        * @access public
         *
         * @param bool|WP_Error  $return
         * @param array          $theme
@@ -1675,6 +1754,7 @@ class Theme_Upgrader extends WP_Upgrader {
         * and {@see Theme_Upgrader::bulk_upgrade()}.
         *
         * @since 2.8.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
         *
@@ -1708,6 +1788,7 @@ class Theme_Upgrader extends WP_Upgrader {
         *
         * @since 2.8.0
         * @since 3.0.0 The `$theme` argument was added.
+        * @access public
         *
         * @param string $theme The directory name of the theme. This is optional, and if not supplied,
         *                      the directory name from the last result will be used.
@@ -1728,11 +1809,12 @@ class Theme_Upgrader extends WP_Upgrader {
 }
 
 /**
- * Language pack upgrader, for updating translations of plugins, themes, and core.
+ * Core class used for updating/installing language packs (translations)
+ * for plugins, themes, and core.
  *
- * @package WordPress
- * @subpackage Upgrader
  * @since 3.7.0
+ *
+ * @see WP_Upgrader
  */
 class Language_Pack_Upgrader extends WP_Upgrader {
 
@@ -1740,6 +1822,7 @@ class Language_Pack_Upgrader extends WP_Upgrader {
         * Result of the language pack upgrade.
         *
         * @since 3.7.0
+        * @access public
         * @var array|WP_Error $result
         * @see WP_Upgrader::$result
         */
@@ -1749,20 +1832,23 @@ class Language_Pack_Upgrader extends WP_Upgrader {
         * Whether a bulk upgrade/install is being performed.
         *
         * @since 3.7.0
+        * @access public
         * @var bool $bulk
         */
        public $bulk = true;
 
        /**
-        * Asynchronously upgrade language packs after other upgrades have been made.
+        * Asynchronously upgrades language packs after other upgrades have been made.
         *
         * Hooked to the {@see 'upgrader_process_complete'} action by default.
         *
         * @since 3.7.0
-        *
+        * @access public
         * @static
         *
-        * @param false|WP_Upgrader $upgrader
+        * @param false|WP_Upgrader $upgrader Optional. WP_Upgrader instance or false. If `$upgrader` is
+        *                                    a Language_Pack_Upgrader instance, the method will bail to
+        *                                    avoid recursion. Otherwise unused. Default false.
         */
        public static function async_upgrade( $upgrader = false ) {
                // Avoid recursion.
@@ -1776,8 +1862,10 @@ class Language_Pack_Upgrader extends WP_Upgrader {
                        return;
                }
 
-               // Avoid messing with VCS installs, at least for now.
-               // Noted: this is not the ideal way to accomplish this.
+               /*
+                * Avoid messing with VCS installs, at least for now.
+                * Noted: this is not the ideal way to accomplish this.
+                */
                $check_vcs = new WP_Automatic_Updater;
                if ( $check_vcs->is_vcs_checkout( WP_CONTENT_DIR ) ) {
                        return;
@@ -1805,9 +1893,14 @@ class Language_Pack_Upgrader extends WP_Upgrader {
                        return;
                }
 
-               $skin = new Language_Pack_Upgrader_Skin( array(
-                       'skip_header_footer' => true,
-               ) );
+               // Re-use the automatic upgrader skin if the parent upgrader is using it.
+               if ( $upgrader && $upgrader->skin instanceof Automatic_Upgrader_Skin ) {
+                       $skin = $upgrader->skin;
+               } else {
+                       $skin = new Language_Pack_Upgrader_Skin( array(
+                               'skip_header_footer' => true,
+                       ) );
+               }
 
                $lp_upgrader = new Language_Pack_Upgrader( $skin );
                $lp_upgrader->bulk_upgrade( $language_updates );
@@ -1817,6 +1910,7 @@ class Language_Pack_Upgrader extends WP_Upgrader {
         * Initialize the upgrade strings.
         *
         * @since 3.7.0
+        * @access public
         */
        public function upgrade_strings() {
                $this->strings['starting_upgrade'] = __( 'Some of your translations need updating. Sit tight for a few more seconds while we update them as well.' );
@@ -1832,6 +1926,7 @@ class Language_Pack_Upgrader extends WP_Upgrader {
         * Upgrade a language pack.
         *
         * @since 3.7.0
+        * @access public
         *
         * @param string|false $update Optional. Whether an update offer is available. Default false.
         * @param array        $args   Optional. Other optional arguments, see
@@ -1856,6 +1951,7 @@ class Language_Pack_Upgrader extends WP_Upgrader {
         * Bulk upgrade language packs.
         *
         * @since 3.7.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
         *
@@ -1983,6 +2079,7 @@ class Language_Pack_Upgrader extends WP_Upgrader {
         * {@see Language_Pack_Upgrader::bulk_upgrade()}.
         *
         * @since 3.7.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
         *
@@ -2007,9 +2104,15 @@ class Language_Pack_Upgrader extends WP_Upgrader {
                                $mo = true;
                }
 
-               if ( ! $mo || ! $po )
+               if ( ! $mo || ! $po ) {
                        return new WP_Error( 'incompatible_archive_pomo', $this->strings['incompatible_archive'],
-                               __( 'The language pack is missing either the <code>.po</code> or <code>.mo</code> files.' ) );
+                               /* translators: 1: .po 2: .mo */
+                               sprintf( __( 'The language pack is missing either the %1$s or %2$s files.' ),
+                                       '<code>.po</code>',
+                                       '<code>.mo</code>'
+                               )
+                       );
+               }
 
                return $source;
        }
@@ -2018,6 +2121,7 @@ class Language_Pack_Upgrader extends WP_Upgrader {
         * Get the name of an item being updated.
         *
         * @since 3.7.0
+        * @access public
         *
         * @param object $update The data for an update.
         * @return string The name of the item being updated.
@@ -2045,11 +2149,14 @@ class Language_Pack_Upgrader extends WP_Upgrader {
 }
 
 /**
- * Core Upgrader class for WordPress. It allows for WordPress to upgrade itself in combination with the wp-admin/includes/update-core.php file
+ * Core class used for updating core.
+ *
+ * It allows for WordPress to upgrade itself in combination with
+ * the wp-admin/includes/update-core.php file.
  *
- * @package WordPress
- * @subpackage Upgrader
  * @since 2.8.0
+ *
+ * @see WP_Upgrader
  */
 class Core_Upgrader extends WP_Upgrader {
 
@@ -2057,6 +2164,7 @@ class Core_Upgrader extends WP_Upgrader {
         * Initialize the upgrade strings.
         *
         * @since 2.8.0
+        * @access public
         */
        public function upgrade_strings() {
                $this->strings['up_to_date'] = __('WordPress is at the latest version.');
@@ -2073,9 +2181,10 @@ class Core_Upgrader extends WP_Upgrader {
         * Upgrade WordPress core.
         *
         * @since 2.8.0
+        * @access public
         *
         * @global WP_Filesystem_Base $wp_filesystem Subclass
-        * @global callback           $_wp_filesystem_direct_method
+        * @global callable           $_wp_filesystem_direct_method
         *
         * @param object $current Response object for whether WordPress is current.
         * @param array  $args {
@@ -2243,6 +2352,7 @@ class Core_Upgrader extends WP_Upgrader {
         * Determines if this WordPress Core version should update to an offered version or not.
         *
         * @since 3.7.0
+        * @access public
         *
         * @static
         *
@@ -2348,9 +2458,10 @@ class Core_Upgrader extends WP_Upgrader {
        }
 
        /**
-        * Compare the disk file checksums agains the expected checksums.
+        * Compare the disk file checksums against the expected checksums.
         *
         * @since 3.7.0
+        * @access public
         *
         * @global string $wp_version
         * @global string $wp_local_package
@@ -2378,10 +2489,11 @@ class Core_Upgrader extends WP_Upgrader {
 }
 
 /**
- * Upgrade Skin helper for File uploads. This class handles the upload process and passes it as if it's a local file to the Upgrade/Installer functions.
+ * Core class used for handling file uploads.
+ *
+ * This class handles the upload process and passes it as if it's a local file
+ * to the Upgrade/Installer functions.
  *
- * @package WordPress
- * @subpackage Upgrader
  * @since 2.8.0
  */
 class File_Upload_Upgrader {
@@ -2390,6 +2502,7 @@ class File_Upload_Upgrader {
         * The full path to the file package.
         *
         * @since 2.8.0
+        * @access public
         * @var string $package
         */
        public $package;
@@ -2398,6 +2511,7 @@ class File_Upload_Upgrader {
         * The name of the file.
         *
         * @since 2.8.0
+        * @access public
         * @var string $filename
         */
        public $filename;
@@ -2406,6 +2520,7 @@ class File_Upload_Upgrader {
         * The ID of the attachment post for this file.
         *
         * @since 3.3.0
+        * @access public
         * @var int $id
         */
        public $id = 0;
@@ -2414,6 +2529,7 @@ class File_Upload_Upgrader {
         * Construct the upgrader for a form.
         *
         * @since 2.8.0
+        * @access public
         *
         * @param string $form      The name of the form the file was uploaded from.
         * @param string $urlholder The name of the `GET` parameter that holds the filename.
@@ -2473,6 +2589,7 @@ class File_Upload_Upgrader {
         * Delete the attachment/uploaded file.
         *
         * @since 3.2.2
+        * @access public
         *
         * @return bool Whether the cleanup was successful.
         */
@@ -2488,10 +2605,8 @@ class File_Upload_Upgrader {
 }
 
 /**
- * The WordPress automatic background updater.
+ * Core class used for handling automatic background updates.
  *
- * @package WordPress
- * @subpackage Upgrader
  * @since 3.7.0
  */
 class WP_Automatic_Updater {
@@ -2500,6 +2615,7 @@ class WP_Automatic_Updater {
         * Tracks update results during processing.
         *
         * @var array
+        * @access protected
         */
        protected $update_results = array();
 
@@ -2507,13 +2623,14 @@ class WP_Automatic_Updater {
         * Whether the entire automatic updater is disabled.
         *
         * @since 3.7.0
+        * @access public
         */
        public function is_disabled() {
                // Background updates are disabled if you don't want file changes.
                if ( defined( 'DISALLOW_FILE_MODS' ) && DISALLOW_FILE_MODS )
                        return true;
 
-               if ( defined( 'WP_INSTALLING' ) )
+               if ( wp_installing() )
                        return true;
 
                // More fine grained control can be done through the WP_AUTO_UPDATE_CORE constant and filters.
@@ -2547,6 +2664,7 @@ class WP_Automatic_Updater {
         * how things get updated.
         *
         * @since 3.7.0
+        * @access public
         *
         * @param string $context The filesystem path to check, in addition to ABSPATH.
         */
@@ -2599,8 +2717,9 @@ class WP_Automatic_Updater {
         * Tests to see if we can and should update a specific item.
         *
         * @since 3.7.0
+        * @access public
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param string $type    The type of update being checked: 'core', 'theme',
         *                        'plugin', 'translation'.
@@ -2682,6 +2801,7 @@ class WP_Automatic_Updater {
         * Notifies an administrator of a core update.
         *
         * @since 3.7.0
+        * @access protected
         *
         * @param object $item The update offer.
         */
@@ -2725,6 +2845,7 @@ class WP_Automatic_Updater {
         * Update an item, if appropriate.
         *
         * @since 3.7.0
+        * @access public
         *
         * @param string $type The type of update being checked: 'core', 'theme', 'plugin', 'translation'.
         * @param object $item The update offer.
@@ -2759,6 +2880,18 @@ class WP_Automatic_Updater {
                if ( ! $this->should_update( $type, $item, $context ) )
                        return false;
 
+               /**
+                * Fires immediately prior to an auto-update.
+                *
+                * @since 4.4.0
+                *
+                * @param string $type    The type of update being checked: 'core', 'theme', 'plugin', or 'translation'.
+                * @param object $item    The update offer.
+                * @param string $context The filesystem context (a path) against which filesystem access and status
+                *                        should be checked.
+                */
+               do_action( 'pre_auto_update', $type, $item, $context );
+
                $upgrader_item = $item;
                switch ( $type ) {
                        case 'core':
@@ -2828,6 +2961,7 @@ class WP_Automatic_Updater {
         * Kicks off the background update process, looping through all pending updates.
         *
         * @since 3.7.0
+        * @access public
         *
         * @global wpdb   $wpdb
         * @global string $wp_version
@@ -2966,6 +3100,9 @@ class WP_Automatic_Updater {
         * If we tried to perform a core update, check if we should send an email,
         * and if we need to avoid processing future updates.
         *
+        * @since Unknown
+        * @access protected
+        *
         * @global string $wp_version
         *
         * @param object|WP_Error $update_result The result of the core update. Includes the update offer and result.
@@ -3054,6 +3191,7 @@ class WP_Automatic_Updater {
         * Sends an email upon the completion or failure of a background core update.
         *
         * @since 3.7.0
+        * @access protected
         *
         * @global string $wp_version
         *
@@ -3253,6 +3391,7 @@ class WP_Automatic_Updater {
         * Prepares and sends an email of a full log of background update results, useful for debugging and geekery.
         *
         * @since 3.7.0
+        * @access protected
         */
        protected function send_debug_email() {
                $update_count = 0;
index bb83f85672052b0a49bfb3c010d40a821b8bfe4c..9e26867df95fde4151bb833b368d87abb3dcb98e 100644 (file)
@@ -1,12 +1,19 @@
 <?php
 /**
- * Users List Table class.
+ * List Table API: WP_Users_List_Table class
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement displaying users in a list table.
  *
  * @since 3.1.0
  * @access private
  *
- * @package WordPress
- * @subpackage List_Table
+ * @see WP_List_Table
  */
 class WP_Users_List_Table extends WP_List_Table {
 
@@ -45,7 +52,7 @@ class WP_Users_List_Table extends WP_List_Table {
                        'screen'   => isset( $args['screen'] ) ? $args['screen'] : null,
                ) );
 
-               $this->is_site_users = 'site-users-network' == $this->screen->id;
+               $this->is_site_users = 'site-users-network' === $this->screen->id;
 
                if ( $this->is_site_users )
                        $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
@@ -87,13 +94,23 @@ class WP_Users_List_Table extends WP_List_Table {
 
                $paged = $this->get_pagenum();
 
-               $args = array(
-                       'number' => $users_per_page,
-                       'offset' => ( $paged-1 ) * $users_per_page,
-                       'role' => $role,
-                       'search' => $usersearch,
-                       'fields' => 'all_with_meta'
-               );
+               if ( 'none' === $role ) {
+                       $args = array(
+                               'number' => $users_per_page,
+                               'offset' => ( $paged-1 ) * $users_per_page,
+                               'include' => wp_get_users_with_no_role(),
+                               'search' => $usersearch,
+                               'fields' => 'all_with_meta'
+                       );
+               } else {
+                       $args = array(
+                               'number' => $users_per_page,
+                               'offset' => ( $paged-1 ) * $users_per_page,
+                               'role' => $role,
+                               'search' => $usersearch,
+                               'fields' => 'all_with_meta'
+                       );
+               }
 
                if ( '' !== $args['search'] )
                        $args['search'] = '*' . $args['search'] . '*';
@@ -107,6 +124,16 @@ class WP_Users_List_Table extends WP_List_Table {
                if ( isset( $_REQUEST['order'] ) )
                        $args['order'] = $_REQUEST['order'];
 
+               /**
+                * Filter the query arguments used to retrieve users for the current users list table.
+                *
+                * @since 4.4.0
+                *
+                * @param array $args Arguments passed to WP_User_Query to retrieve items for the current
+                *                    users list table.
+                */
+               $args = apply_filters( 'users_list_table_query_args', $args );
+
                // Query the user IDs for this page
                $wp_user_search = new WP_User_Query( $args );
 
@@ -156,6 +183,7 @@ class WP_Users_List_Table extends WP_List_Table {
                        $url = 'users.php';
                        $users_of_blog = count_users();
                }
+
                $total_users = $users_of_blog['total_users'];
                $avail_roles =& $users_of_blog['avail_roles'];
                unset($users_of_blog);
@@ -169,7 +197,7 @@ class WP_Users_List_Table extends WP_List_Table {
 
                        $class = '';
 
-                       if ( $this_role == $role ) {
+                       if ( $this_role === $role ) {
                                $class = ' class="current"';
                        }
 
@@ -179,6 +207,21 @@ class WP_Users_List_Table extends WP_List_Table {
                        $role_links[$this_role] = "<a href='" . esc_url( add_query_arg( 'role', $this_role, $url ) ) . "'$class>$name</a>";
                }
 
+               if ( ! empty( $avail_roles['none' ] ) ) {
+
+                       $class = '';
+
+                       if ( 'none' === $role ) {
+                               $class = ' class="current"';
+                       }
+
+                       $name = __( 'No role' );
+                       /* translators: User role name with count */
+                       $name = sprintf( __('%1$s <span class="count">(%2$s)</span>'), $name, number_format_i18n( $avail_roles['none' ] ) );
+                       $role_links['none'] = "<a href='" . esc_url( add_query_arg( 'role', 'none', $url ) ) . "'$class>$name</a>";
+
+               }
+
                return $role_links;
        }
 
@@ -214,13 +257,12 @@ class WP_Users_List_Table extends WP_List_Table {
         *                      or below the table ("bottom").
         */
        protected function extra_tablenav( $which ) {
-               if ( 'top' != $which )
-                       return;
+               $id = 'bottom' === $which ? 'new_role2' : 'new_role';
        ?>
        <div class="alignleft actions">
-               <?php if ( current_user_can( 'promote_users' ) ) : ?>
-               <label class="screen-reader-text" for="new_role"><?php _e( 'Change role to&hellip;' ) ?></label>
-               <select name="new_role" id="new_role">
+               <?php if ( current_user_can( 'promote_users' ) && $this->has_items() ) : ?>
+               <label class="screen-reader-text" for="<?php echo $id ?>"><?php _e( 'Change role to&hellip;' ) ?></label>
+               <select name="<?php echo $id ?>" id="<?php echo $id ?>">
                        <option value=""><?php _e( 'Change role to&hellip;' ) ?></option>
                        <?php wp_dropdown_roles(); ?>
                </select>
@@ -250,8 +292,10 @@ class WP_Users_List_Table extends WP_List_Table {
         * @return string The bulk action required.
         */
        public function current_action() {
-               if ( isset($_REQUEST['changeit']) && !empty($_REQUEST['new_role']) )
+               if ( isset( $_REQUEST['changeit'] ) &&
+                       ( ! empty( $_REQUEST['new_role'] ) || ! empty( $_REQUEST['new_role2'] ) ) ) {
                        return 'promote';
+               }
 
                return parent::current_action();
        }
@@ -270,7 +314,7 @@ class WP_Users_List_Table extends WP_List_Table {
                        'cb'       => '<input type="checkbox" />',
                        'username' => __( 'Username' ),
                        'name'     => __( 'Name' ),
-                       'email'    => __( 'E-mail' ),
+                       'email'    => __( 'Email' ),
                        'role'     => __( 'Role' ),
                        'posts'    => __( 'Posts' )
                );
@@ -296,9 +340,6 @@ class WP_Users_List_Table extends WP_List_Table {
                        'email'    => 'email',
                );
 
-               if ( $this->is_site_users )
-                       unset( $c['posts'] );
-
                return $c;
        }
 
@@ -313,21 +354,11 @@ class WP_Users_List_Table extends WP_List_Table {
                if ( ! $this->is_site_users )
                        $post_counts = count_many_users_posts( array_keys( $this->items ) );
 
-               $editable_roles = array_keys( get_editable_roles() );
-
                foreach ( $this->items as $userid => $user_object ) {
-                       if ( count( $user_object->roles ) <= 1 ) {
-                               $role = reset( $user_object->roles );
-                       } elseif ( $roles = array_intersect( array_values( $user_object->roles ), $editable_roles ) ) {
-                               $role = reset( $roles );
-                       } else {
-                               $role = reset( $user_object->roles );
-                       }
-
                        if ( is_multisite() && empty( $user_object->allcaps ) )
                                continue;
 
-                       echo "\n\t" . $this->single_row( $user_object, $style = '', $role, isset( $post_counts ) ? $post_counts[ $userid ] : 0 );
+                       echo "\n\t" . $this->single_row( $user_object, '', '', isset( $post_counts ) ? $post_counts[ $userid ] : 0 );
                }
        }
 
@@ -335,19 +366,18 @@ class WP_Users_List_Table extends WP_List_Table {
         * Generate HTML for a single row on the users.php admin panel.
         *
         * @since 3.1.0
-        * @since 4.2.0 The `$style` argument was deprecated.
+        * @since 4.2.0 The `$style` parameter was deprecated.
+        * @since 4.4.0 The `$role` parameter was deprecated.
         * @access public
         *
         * @param object $user_object The current user object.
         * @param string $style       Deprecated. Not used.
-        * @param string $role        Optional. Key for the $wp_roles array. Default empty.
+        * @param string $role        Deprecated. Not used.
         * @param int    $numposts    Optional. Post count to display for this user. Defaults
         *                            to zero, as in, a new user has made zero posts.
         * @return string Output for a single row.
         */
        public function single_row( $user_object, $style = '', $role = '', $numposts = 0 ) {
-               $wp_roles = wp_roles();
-
                if ( ! ( $user_object instanceof WP_User ) ) {
                        $user_object = get_userdata( (int) $user_object );
                }
@@ -359,15 +389,16 @@ class WP_Users_List_Table extends WP_List_Table {
                else
                        $url = 'users.php?';
 
+               $user_roles = $this->get_role_list( $user_object );
+
+               // Set up the hover actions for this user
+               $actions = array();
                $checkbox = '';
                // Check if the user for this row is editable
                if ( current_user_can( 'list_users' ) ) {
                        // Set up the user editing link
                        $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( wp_unslash( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user_object->ID ) ) );
 
-                       // Set up the hover actions for this user
-                       $actions = array();
-
                        if ( current_user_can( 'edit_user',  $user_object->ID ) ) {
                                $edit = "<strong><a href=\"$edit_link\">$user_object->user_login</a></strong><br />";
                                $actions['edit'] = '<a href="' . $edit_link . '">' . __( 'Edit' ) . '</a>';
@@ -392,16 +423,21 @@ class WP_Users_List_Table extends WP_List_Table {
                         */
                        $actions = apply_filters( 'user_row_actions', $actions, $user_object );
 
+                       // Role classes.
+                       $role_classes = esc_attr( implode( ' ', array_keys( $user_roles ) ) );
+
                        // Set up the checkbox ( because the user is editable, otherwise it's empty )
                        $checkbox = '<label class="screen-reader-text" for="user_' . $user_object->ID . '">' . sprintf( __( 'Select %s' ), $user_object->user_login ) . '</label>'
-                                               . "<input type='checkbox' name='users[]' id='user_{$user_object->ID}' class='$role' value='{$user_object->ID}' />";
+                                               . "<input type='checkbox' name='users[]' id='user_{$user_object->ID}' class='{$role_classes}' value='{$user_object->ID}' />";
 
                } else {
                        $edit = '<strong>' . $user_object->user_login . '</strong>';
                }
-               $role_name = isset( $wp_roles->role_names[$role] ) ? translate_user_role( $wp_roles->role_names[$role] ) : __( 'None' );
                $avatar = get_avatar( $user_object->ID, 32 );
 
+               // Comma-separated list of user roles.
+               $roles_list = implode( ', ', $user_roles );
+
                $r = "<tr id='user-$user_object->ID'>";
 
                list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info();
@@ -438,7 +474,7 @@ class WP_Users_List_Table extends WP_List_Table {
                                                $r .= "<a href='" . esc_url( "mailto:$email" ) . "'>$email</a>";
                                                break;
                                        case 'role':
-                                               $r .= $role_name;
+                                               $r .= esc_html( $roles_list );
                                                break;
                                        case 'posts':
                                                if ( $numposts > 0 ) {
@@ -485,4 +521,40 @@ class WP_Users_List_Table extends WP_List_Table {
        protected function get_default_primary_column_name() {
                return 'username';
        }
+
+       /**
+        * Returns an array of user roles for a given user object.
+        *
+        * @since 4.4.0
+        * @access protected
+        *
+        * @param WP_User $user_object The WP_User object.
+        * @return array An array of user roles.
+        */
+       protected function get_role_list( $user_object ) {
+               $wp_roles = wp_roles();
+
+               $role_list = array();
+
+               foreach ( $user_object->roles as $role ) {
+                       if ( isset( $wp_roles->role_names[ $role ] ) ) {
+                               $role_list[ $role ] = translate_user_role( $wp_roles->role_names[ $role ] );
+                       }
+               }
+
+               if ( empty( $role_list ) ) {
+                       $role_list['none'] = _x( 'None', 'no user roles' );
+               }
+
+               /**
+                * Filter the returned array of roles for a user.
+                *
+                * @since 4.4.0
+                *
+                * @param array   $role_list   An array of user roles.
+                * @param WP_User $user_object A WP_User object.
+                */
+               return apply_filters( 'get_role_list', $role_list, $user_object );
+       }
+
 }
index 36954b231c6e70c4b096882395ef4555981f95cc..3037c4102e744b4444c3cdd40271f2ac400e4c43 100644 (file)
@@ -4,24 +4,36 @@
  *
  * @package WordPress
  * @subpackage Administration
+ * @since 2.3.0
  */
 
 /**
  * Determine if a comment exists based on author and date.
  *
+ * For best performance, use `$timezone = 'gmt'`, which queries a field that is properly indexed. The default value
+ * for `$timezone` is 'blog' for legacy reasons.
+ *
  * @since 2.0.0
+ * @since 4.4.0 Added the `$timezone` parameter.
  *
  * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param string $comment_author Author of the comment
- * @param string $comment_date Date of the comment
+ * @param string $comment_author Author of the comment.
+ * @param string $comment_date   Date of the comment.
+ * @param string $timezone       Timezone. Accepts 'blog' or 'gmt'. Default 'blog'.
+ *
  * @return mixed Comment post ID on success.
  */
-function comment_exists($comment_author, $comment_date) {
+function comment_exists( $comment_author, $comment_date, $timezone = 'blog' ) {
        global $wpdb;
 
+       $date_field = 'comment_date';
+       if ( 'gmt' === $timezone ) {
+               $date_field = 'comment_date_gmt';
+       }
+
        return $wpdb->get_var( $wpdb->prepare("SELECT comment_post_ID FROM $wpdb->comments
-                       WHERE comment_author = %s AND comment_date = %s",
+                       WHERE comment_author = %s AND $date_field = %s",
                        stripslashes( $comment_author ),
                        stripslashes( $comment_date )
        ) );
@@ -74,12 +86,12 @@ function edit_comment() {
 }
 
 /**
- * Returns a comment object based on comment ID.
+ * Returns a WP_Comment object based on comment ID.
  *
  * @since 2.0.0
  *
  * @param int $id ID of comment to retrieve.
- * @return object|false Comment if found. False on failure.
+ * @return WP_Comment|false Comment if found. False on failure.
  */
 function get_comment_to_edit( $id ) {
        if ( !$comment = get_comment($id) )
@@ -156,14 +168,11 @@ function get_pending_comments_num( $post_id ) {
  *
  * @since 2.5.0
  *
- * @global object $comment
- *
  * @param string $name User name.
  * @return string Avatar with Admin name.
  */
 function floated_admin_avatar( $name ) {
-       global $comment;
-       $avatar = get_avatar( $comment, 32, 'mystery' );
+       $avatar = get_avatar( get_comment(), 32, 'mystery' );
        return "$avatar $name";
 }
 
@@ -174,3 +183,14 @@ function enqueue_comment_hotkeys_js() {
        if ( 'true' == get_user_option( 'comment_shortcuts' ) )
                wp_enqueue_script( 'jquery-table-hotkeys' );
 }
+
+/**
+ * Display error message at bottom of comments.
+ *
+ * @param string $msg Error Message. Assumed to contain HTML and be sanitized.
+ */
+function comment_footer_die( $msg ) {
+       echo "<div class='wrap'><p>$msg</p></div>";
+       include( ABSPATH . 'wp-admin/admin-footer.php' );
+       die;
+}
\ No newline at end of file
index 0ebc4f3fcecc800a67a4809b4f67fc62de34f1e5..02ebbe7aa1bf6120cca83e21a69d2e0a78c97b00 100644 (file)
@@ -1,7 +1,12 @@
 <?php
-
-/* Continent and city translations for timezone selection.
+/**
+ * Translation API: Continent and city translations for timezone selection
+ *
  * This file is not included anywhere. It exists solely for use by xgettext.
+ *
+ * @package WordPress
+ * @subpackage i18n
+ * @since 2.8.0
  */
 
 __('Africa', 'continents-cities');
diff --git a/wp-admin/includes/credits.php b/wp-admin/includes/credits.php
new file mode 100644 (file)
index 0000000..c4fb276
--- /dev/null
@@ -0,0 +1,69 @@
+<?php
+/**
+ * WordPress Credits Administration API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+/**
+ * Retrieve the contributor credits.
+ *
+ * @global string $wp_version The current WordPress version.
+ *
+ * @since 3.2.0
+ *
+ * @return array|false A list of all of the contributors, or false on error.
+*/
+function wp_credits() {
+       global $wp_version;
+       $locale = get_locale();
+
+       $results = get_site_transient( 'wordpress_credits_' . $locale );
+
+       if ( ! is_array( $results )
+               || false !== strpos( $wp_version, '-' )
+               || ( isset( $results['data']['version'] ) && strpos( $wp_version, $results['data']['version'] ) !== 0 )
+       ) {
+               $response = wp_remote_get( "http://api.wordpress.org/core/credits/1.1/?version=$wp_version&locale=$locale" );
+
+               if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) )
+                       return false;
+
+               $results = json_decode( wp_remote_retrieve_body( $response ), true );
+
+               if ( ! is_array( $results ) )
+                       return false;
+
+               set_site_transient( 'wordpress_credits_' . $locale, $results, DAY_IN_SECONDS );
+       }
+
+       return $results;
+}
+
+/**
+ * Retrieve the link to a contributor's WordPress.org profile page.
+ *
+ * @access private
+ * @since 3.2.0
+ *
+ * @param string &$display_name The contributor's display name, passed by reference.
+ * @param string $username      The contributor's username.
+ * @param string $profiles      URL to the contributor's WordPress.org profile page.
+ */
+function _wp_credits_add_profile_link( &$display_name, $username, $profiles ) {
+       $display_name = '<a href="' . esc_url( sprintf( $profiles, $username ) ) . '">' . esc_html( $display_name ) . '</a>';
+}
+
+/**
+ * Retrieve the link to an external library used in WordPress.
+ *
+ * @access private
+ * @since 3.2.0
+ *
+ * @param string &$data External library data, passed by reference.
+ */
+function _wp_credits_build_object_link( &$data ) {
+       $data = '<a href="' . esc_url( $data[1] ) . '">' . esc_html( $data[0] ) . '</a>';
+}
index 49fcdd926b7db0112d781f2da5737353face1510..144fcc04fc77f768fa7f5aa5bcd5011933c425e5 100644 (file)
@@ -47,7 +47,7 @@ function wp_dashboard_setup() {
        }
 
        // QuickPress Widget
-       if ( is_blog_admin() && current_user_can( 'edit_posts' ) ) {
+       if ( is_blog_admin() && current_user_can( get_post_type_object( 'post' )->cap->create_posts ) ) {
                $quick_draft_title = sprintf( '<span class="hide-if-no-js">%1$s</span> <span class="hide-if-js">%2$s</span>', __( 'Quick Draft' ), __( 'Drafts' ) );
                wp_add_dashboard_widget( 'dashboard_quick_press', $quick_draft_title, 'wp_dashboard_quick_press' );
        }
@@ -135,8 +135,8 @@ function wp_dashboard_setup() {
  *
  * @param string   $widget_id
  * @param string   $widget_name
- * @param callback $callback
- * @param callback $control_callback
+ * @param callable $callback
+ * @param callable $control_callback
  * @param array    $callback_args
  */
 function wp_add_dashboard_widget( $widget_id, $widget_name, $callback, $control_callback = null, $callback_args = null ) {
@@ -259,13 +259,15 @@ function wp_dashboard_right_now() {
                ?>
                <li class="comment-count"><a href="edit-comments.php"><?php echo $text; ?></a></li>
                <?php
-               if ( $num_comm->moderated ) {
-                       /* translators: Number of comments in moderation */
-                       $text = sprintf( _nx( '%s in moderation', '%s in moderation', $num_comm->moderated, 'comments' ), number_format_i18n( $num_comm->moderated ) );
-                       ?>
-                       <li class="comment-mod-count"><a href="edit-comments.php?comment_status=moderated"><?php echo $text; ?></a></li>
-                       <?php
-               }
+               /* translators: Number of comments in moderation */
+               $text = sprintf( _nx( '%s in moderation', '%s in moderation', $num_comm->moderated, 'comments' ), number_format_i18n( $num_comm->moderated ) );
+               ?>
+               <li class="comment-mod-count<?php
+                       if ( ! $num_comm->moderated ) {
+                               echo ' hidden';
+                       }
+               ?>"><a href="edit-comments.php?comment_status=moderated"><?php echo $text; ?></a></li>
+               <?php
        }
 
        /**
@@ -403,7 +405,7 @@ function wp_network_dashboard_right_now() {
                <p>
                        <label class="screen-reader-text" for="search-users"><?php _e( 'Search Users' ); ?></label>
                        <input type="search" name="s" value="" size="30" autocomplete="off" id="search-users"/>
-                       <?php submit_button( __( 'Search Users' ), 'button', 'submit', false, array( 'id' => 'submit_users' ) ); ?>
+                       <?php submit_button( __( 'Search Users' ), 'button', false, false, array( 'id' => 'submit_users' ) ); ?>
                </p>
        </form>
 
@@ -411,7 +413,7 @@ function wp_network_dashboard_right_now() {
                <p>
                        <label class="screen-reader-text" for="search-sites"><?php _e( 'Search Sites' ); ?></label>
                        <input type="search" name="s" value="" size="30" autocomplete="off" id="search-sites"/>
-                       <?php submit_button( __( 'Search Sites' ), 'button', 'submit', false, array( 'id' => 'submit_sites' ) ); ?>
+                       <?php submit_button( __( 'Search Sites' ), 'button', false, false, array( 'id' => 'submit_sites' ) ); ?>
                </p>
        </form>
 <?php
@@ -520,6 +522,16 @@ function wp_dashboard_recent_drafts( $drafts = false ) {
                        'orderby'        => 'modified',
                        'order'          => 'DESC'
                );
+
+               /**
+                * Filter the post query arguments for the 'Recent Drafts' dashboard widget.
+                *
+                * @since 4.4.0
+                *
+                * @param array $query_args The query arguments for the 'Recent Drafts' dashboard widget.
+                */
+               $query_args = apply_filters( 'dashboard_recent_drafts_query_args', $query_args );
+
                $drafts = get_posts( $query_args );
                if ( ! $drafts ) {
                        return;
@@ -528,9 +540,9 @@ function wp_dashboard_recent_drafts( $drafts = false ) {
 
        echo '<div class="drafts">';
        if ( count( $drafts ) > 3 ) {
-               echo '<p class="view-all"><a href="' . esc_url( admin_url( 'edit.php?post_status=draft' ) ) . '">' . _x( 'View all', 'drafts' ) . "</a></p>\n";
+               echo '<p class="view-all"><a href="' . esc_url( admin_url( 'edit.php?post_status=draft' ) ) . '" aria-label="' . __( 'View all drafts' ) . '">' . _x( 'View all', 'drafts' ) . "</a></p>\n";
        }
-       echo '<h4 class="hide-if-no-js">' . __( 'Drafts' ) . "</h4>\n<ul>";
+       echo '<h2 class="hide-if-no-js">' . __( 'Drafts' ) . "</h2>\n<ul>";
 
        $drafts = array_slice( $drafts, 0, 3 );
        foreach ( $drafts as $draft ) {
@@ -548,25 +560,22 @@ function wp_dashboard_recent_drafts( $drafts = false ) {
 }
 
 /**
- * @global object $comment
+ * @global WP_Comment $comment
  *
- * @param object $comment
- * @param bool   $show_date
+ * @param WP_Comment $comment
+ * @param bool       $show_date
  */
 function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
-       $GLOBALS['comment'] =& $comment;
-
-       $comment_post_title = _draft_or_post_title( $comment->comment_post_ID );
+       $GLOBALS['comment'] = clone $comment;
 
-       if ( current_user_can( 'edit_post', $comment->comment_post_ID ) ) {
+       if ( $comment->comment_post_ID > 0 && current_user_can( 'edit_post', $comment->comment_post_ID ) ) {
+               $comment_post_title = _draft_or_post_title( $comment->comment_post_ID );
                $comment_post_url = get_edit_post_link( $comment->comment_post_ID );
                $comment_post_link = "<a href='$comment_post_url'>$comment_post_title</a>";
        } else {
-               $comment_post_link = $comment_post_title;
+               $comment_post_link = '';
        }
 
-       $comment_link = '<a class="comment-link" href="' . esc_url(get_comment_link()) . '">#</a>';
-
        $actions_string = '';
        if ( current_user_can( 'edit_comment', $comment->comment_ID ) ) {
                // Pre-order it: Approve | Reply | Edit | Spam | Trash.
@@ -575,7 +584,8 @@ function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
                        'reply' => '',
                        'edit' => '',
                        'spam' => '',
-                       'trash' => '', 'delete' => ''
+                       'trash' => '', 'delete' => '',
+                       'view' => '',
                );
 
                $del_nonce = esc_html( '_wpnonce=' . wp_create_nonce( "delete-comment_$comment->comment_ID" ) );
@@ -592,10 +602,16 @@ function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
                $actions['edit'] = "<a href='comment.php?action=editcomment&amp;c={$comment->comment_ID}' title='" . esc_attr__('Edit comment') . "'>". __('Edit') . '</a>';
                $actions['reply'] = '<a onclick="window.commentReply && commentReply.open(\''.$comment->comment_ID.'\',\''.$comment->comment_post_ID.'\');return false;" class="vim-r hide-if-no-js" title="'.esc_attr__('Reply to this comment').'" href="#">' . __('Reply') . '</a>';
                $actions['spam'] = "<a href='$spam_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::spam=1' class='vim-s vim-destructive' title='" . esc_attr__( 'Mark this comment as spam' ) . "'>" . /* translators: mark as spam link */ _x( 'Spam', 'verb' ) . '</a>';
-               if ( !EMPTY_TRASH_DAYS )
+
+               if ( ! EMPTY_TRASH_DAYS ) {
                        $actions['delete'] = "<a href='$delete_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::trash=1' class='delete vim-d vim-destructive'>" . __('Delete Permanently') . '</a>';
-               else
+               } else {
                        $actions['trash'] = "<a href='$trash_url' data-wp-lists='delete:the-comment-list:comment-$comment->comment_ID::trash=1' class='delete vim-d vim-destructive' title='" . esc_attr__( 'Move this comment to the trash' ) . "'>" . _x('Trash', 'verb') . '</a>';
+               }
+
+               if ( '1' === $comment->comment_approved ) {
+                       $actions['view'] = '<a class="comment-link" href="' . esc_url( get_comment_link( $comment ) ) . '">' . _x( 'View', 'verb' ) . '</a>';
+               }
 
                /**
                 * Filter the action links displayed for each comment in the 'Recent Comments'
@@ -603,10 +619,10 @@ function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
                 *
                 * @since 2.6.0
                 *
-                * @param array  $actions An array of comment actions. Default actions include:
-                *                        'Approve', 'Unapprove', 'Edit', 'Reply', 'Spam',
-                *                        'Delete', and 'Trash'.
-                * @param object $comment The comment object.
+                * @param array      $actions An array of comment actions. Default actions include:
+                *                            'Approve', 'Unapprove', 'Edit', 'Reply', 'Spam',
+                *                            'Delete', and 'Trash'.
+                * @param WP_Comment $comment The comment object.
                 */
                $actions = apply_filters( 'comment_row_actions', array_filter($actions), $comment );
 
@@ -625,17 +641,33 @@ function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
 
 ?>
 
-               <div id="comment-<?php echo $comment->comment_ID; ?>" <?php comment_class( array( 'comment-item', wp_get_comment_status($comment->comment_ID) ) ); ?>>
+               <div id="comment-<?php echo $comment->comment_ID; ?>" <?php comment_class( array( 'comment-item', wp_get_comment_status( $comment ) ), $comment ); ?>>
 
                        <?php echo get_avatar( $comment, 50, 'mystery' ); ?>
 
                        <?php if ( !$comment->comment_type || 'comment' == $comment->comment_type ) : ?>
 
                        <div class="dashboard-comment-wrap has-row-actions">
-                       <h4 class="comment-meta">
-                               <?php printf( /* translators: 1: comment author, 2: post link, 3: notification if the comment is pending */__( 'From %1$s on %2$s%3$s' ),
-                                       '<cite class="comment-author">' . get_comment_author_link() . '</cite>', $comment_post_link.' '.$comment_link, ' <span class="approve">' . __( '[Pending]' ) . '</span>' ); ?>
-                       </h4>
+                       <p class="comment-meta">
+                               <?php
+                               if ( $comment_post_link ) {
+                                       printf(
+                                               /* translators: 1: comment author, 2: post link, 3: notification if the comment is pending */
+                                               __( 'From %1$s on %2$s%3$s' ),
+                                               '<cite class="comment-author">' . get_comment_author_link( $comment ) . '</cite>',
+                                               $comment_post_link,
+                                               ' <span class="approve">' . __( '[Pending]' ) . '</span>'
+                                       );
+                               } else {
+                                       printf(
+                                               /* translators: 1: comment author, 2: notification if the comment is pending */
+                                               __( 'From %1$s %2$s' ),
+                                               '<cite class="comment-author">' . get_comment_author_link( $comment ) . '</cite>',
+                                               ' <span class="approve">' . __( '[Pending]' ) . '</span>'
+                                       );
+                               }
+                               ?>
+                       </p>
 
                        <?php
                        else :
@@ -653,15 +685,16 @@ function _wp_dashboard_recent_comments_row( &$comment, $show_date = true ) {
                        ?>
                        <div class="dashboard-comment-wrap has-row-actions">
                        <?php /* translators: %1$s is type of comment, %2$s is link to the post */ ?>
-                       <h4 class="comment-meta"><?php printf( _x( '%1$s on %2$s', 'dashboard' ), "<strong>$type</strong>", $comment_post_link." ".$comment_link ); ?></h4>
-                       <p class="comment-author"><?php comment_author_link(); ?></p>
+                       <p class="comment-meta"><?php printf( _x( '%1$s on %2$s', 'dashboard' ), "<strong>$type</strong>", $comment_post_link ); ?></p>
+                       <p class="comment-author"><?php comment_author_link( $comment ); ?></p>
 
                        <?php endif; // comment_type ?>
-                       <blockquote><p><?php comment_excerpt(); ?></p></blockquote>
+                       <blockquote><p><?php comment_excerpt( $comment ); ?></p></blockquote>
                        <p class="row-actions"><?php echo $actions_string; ?></p>
                        </div>
                </div>
 <?php
+       $GLOBALS['comment'] = null;
 }
 
 /**
@@ -742,7 +775,7 @@ function wp_dashboard_recent_posts( $args ) {
 
                echo '<div id="' . $args['id'] . '" class="activity-block">';
 
-               echo '<h4>' . $args['title'] . '</h4>';
+               echo '<h3>' . $args['title'] . '</h3>';
 
                echo '<ul>';
 
@@ -757,6 +790,9 @@ function wp_dashboard_recent_posts( $args ) {
                                $relative = __( 'Today' );
                        } elseif ( date( 'Y-m-d', $time ) == $tomorrow ) {
                                $relative = __( 'Tomorrow' );
+                       } elseif ( date( 'Y', $time ) !== date( 'Y', current_time( 'timestamp' ) ) ) {
+                               /* translators: date and time format for recent posts on the dashboard, from a different calendar year, see http://php.net/date */
+                               $relative = date_i18n( __( 'M jS Y' ), $time );
                        } else {
                                /* translators: date and time format for recent posts on the dashboard, see http://php.net/date */
                                $relative = date_i18n( __( 'M jS' ), $time );
@@ -818,7 +854,7 @@ function wp_dashboard_recent_comments( $total_items = 5 ) {
 
        if ( $comments ) {
                echo '<div id="latest-comments" class="activity-block">';
-               echo '<h4>' . __( 'Comments' ) . '</h4>';
+               echo '<h3>' . __( 'Comments' ) . '</h3>';
 
                echo '<div id="the-comment-list" data-wp-lists="list:comment">';
                foreach ( $comments as $comment )
@@ -863,7 +899,7 @@ function wp_dashboard_rss_output( $widget_id ) {
  * @since 2.5.0
  *
  * @param string $widget_id
- * @param callback $callback
+ * @param callable $callback
  * @param array $check_urls RSS feeds
  * @return bool False on failure. True on success.
  */
@@ -903,9 +939,10 @@ function wp_dashboard_cached_rss_widget( $widget_id, $callback, $check_urls = ar
        return true;
 }
 
-/* Dashboard Widgets Controls */
+//
+// Dashboard Widgets Controls
+//
 
-// Calls widget_control callback
 /**
  * Calls widget control callback.
  *
@@ -984,7 +1021,7 @@ function wp_dashboard_primary() {
                         *
                         * @param string $link The widget's primary link URL.
                         */
-                       'link' => apply_filters( 'dashboard_primary_link', __( 'http://wordpress.org/news/' ) ),
+                       'link' => apply_filters( 'dashboard_primary_link', __( 'https://wordpress.org/news/' ) ),
 
                        /**
                         * Filter the primary feed URL for the 'WordPress News' dashboard widget.
@@ -1036,7 +1073,15 @@ function wp_dashboard_primary() {
                         * @param string $title Title attribute for the widget's secondary link.
                         */
                        'title'        => apply_filters( 'dashboard_secondary_title', __( 'Other WordPress News' ) ),
-                       'items'        => 3,
+
+                       /**
+                        * Filter the number of secondary link items for the 'WordPress News' dashboard widget.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param string $items How many items to show in the secondary feed.
+                        */
+                       'items'        => apply_filters( 'dashboard_secondary_items', 3 ),
                        'show_summary' => 0,
                        'show_author'  => 0,
                        'show_date'    => 0,
@@ -1069,7 +1114,7 @@ function wp_dashboard_primary() {
  * @param array  $feeds     Array of RSS feeds.
  */
 function wp_dashboard_primary_output( $widget_id, $feeds ) {
-       foreach( $feeds as $type => $args ) {
+       foreach ( $feeds as $type => $args ) {
                $args['type'] = $type;
                echo '<div class="rss-widget">';
                if ( $type === 'plugins' ) {
@@ -1179,7 +1224,7 @@ function wp_dashboard_quota() {
        $percentused = number_format( $percentused );
 
        ?>
-       <h4 class="mu-storage"><?php _e( 'Storage Space' ); ?></h4>
+       <h3 class="mu-storage"><?php _e( 'Storage Space' ); ?></h3>
        <div class="mu-storage">
        <ul>
                <li class="storage-count">
@@ -1220,9 +1265,15 @@ function wp_dashboard_browser_nag() {
 
        if ( $response ) {
                if ( $response['insecure'] ) {
-                       $msg = sprintf( __( "It looks like you're using an insecure version of <a href='%s'>%s</a>. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser." ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ) );
+                       /* translators: %s: browser name and link */
+                       $msg = sprintf( __( "It looks like you're using an insecure version of %s. Using an outdated browser makes your computer unsafe. For the best WordPress experience, please update your browser." ),
+                               sprintf( '<a href="%s">%s</a>', esc_url( $response['update_url'] ), esc_html( $response['name'] ) )
+                       );
                } else {
-                       $msg = sprintf( __( "It looks like you're using an old version of <a href='%s'>%s</a>. For the best WordPress experience, please update your browser." ), esc_attr( $response['update_url'] ), esc_html( $response['name'] ) );
+                       /* translators: %s: browser name and link */
+                       $msg = sprintf( __( "It looks like you're using an old version of %s. For the best WordPress experience, please update your browser." ),
+                               sprintf( '<a href="%s">%s</a>', esc_url( $response['update_url'] ), esc_html( $response['name'] ) )
+                       );
                }
 
                $browser_nag_class = '';
@@ -1301,8 +1352,8 @@ function wp_check_browser_version() {
                /**
                 * Response should be an array with:
                 *  'name' - string - A user friendly browser name
-                *  'version' - string - The most recent version of the browser
-                *  'current_version' - string - The version of the browser the user is using
+                *  'version' - string - The version of the browser the user is using
+                *  'current_version' - string - The most recent version of the browser
                 *  'upgrade' - boolean - Whether the browser needs an upgrade
                 *  'insecure' - boolean - Whether the browser is deemed insecure
                 *  'upgrade_url' - string - The url to visit to upgrade
@@ -1333,12 +1384,12 @@ function wp_dashboard_empty() {}
 function wp_welcome_panel() {
        ?>
        <div class="welcome-panel-content">
-       <h3><?php _e( 'Welcome to WordPress!' ); ?></h3>
+       <h2><?php _e( 'Welcome to WordPress!' ); ?></h2>
        <p class="about-description"><?php _e( 'We&#8217;ve assembled some links to get you started:' ); ?></p>
        <div class="welcome-panel-column-container">
        <div class="welcome-panel-column">
                <?php if ( current_user_can( 'customize' ) ): ?>
-                       <h4><?php _e( 'Get Started' ); ?></h4>
+                       <h3><?php _e( 'Get Started' ); ?></h3>
                        <a class="button button-primary button-hero load-customize hide-if-no-customize" href="<?php echo wp_customize_url(); ?>"><?php _e( 'Customize Your Site' ); ?></a>
                <?php endif; ?>
                <a class="button button-primary button-hero hide-if-customize" href="<?php echo admin_url( 'themes.php' ); ?>"><?php _e( 'Customize Your Site' ); ?></a>
@@ -1347,7 +1398,7 @@ function wp_welcome_panel() {
                <?php endif; ?>
        </div>
        <div class="welcome-panel-column">
-               <h4><?php _e( 'Next Steps' ); ?></h4>
+               <h3><?php _e( 'Next Steps' ); ?></h3>
                <ul>
                <?php if ( 'page' == get_option( 'show_on_front' ) && ! get_option( 'page_for_posts' ) ) : ?>
                        <li><?php printf( '<a href="%s" class="welcome-icon welcome-edit-page">' . __( 'Edit your front page' ) . '</a>', get_edit_post_link( get_option( 'page_on_front' ) ) ); ?></li>
@@ -1364,7 +1415,7 @@ function wp_welcome_panel() {
                </ul>
        </div>
        <div class="welcome-panel-column welcome-panel-last">
-               <h4><?php _e( 'More Actions' ); ?></h4>
+               <h3><?php _e( 'More Actions' ); ?></h3>
                <ul>
                <?php if ( current_theme_supports( 'widgets' ) || current_theme_supports( 'menus' ) ) : ?>
                        <li><div class="welcome-icon welcome-widgets-menus"><?php
index e12547e90b6d61acb655240b15cade889317e618..b984d6df9202b719192d60c8eea6cc12636cc6a4 100644 (file)
@@ -14,8 +14,7 @@
 
 /**
  * @since 2.1.0
- * @deprecated 2.1.0
- * @deprecated Use wp_editor().
+ * @deprecated 2.1.0 Use wp_editor()
  * @see wp_editor()
  */
 function tinymce_include() {
@@ -39,8 +38,7 @@ function documentation_link() {
  * Calculates the new dimensions for a downsampled image.
  *
  * @since 2.0.0
- * @deprecated 3.0.0
- * @deprecated Use wp_constrain_dimensions()
+ * @deprecated 3.0.0 Use wp_constrain_dimensions()
  * @see wp_constrain_dimensions()
  *
  * @param int $width Current width of the image
@@ -58,8 +56,7 @@ function wp_shrink_dimensions( $width, $height, $wmax = 128, $hmax = 96 ) {
  * Calculated the new dimensions for a downsampled image.
  *
  * @since 2.0.0
- * @deprecated 3.5.0
- * @deprecated Use wp_constrain_dimensions()
+ * @deprecated 3.5.0 Use wp_constrain_dimensions()
  * @see wp_constrain_dimensions()
  *
  * @param int $width Current width of the image
@@ -72,16 +69,15 @@ function get_udims( $width, $height ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Legacy function used to generate the categories checklist control.
  *
  * @since 0.71
- * @deprecated 2.6.0
- * @deprecated Use wp_category_checklist()
+ * @deprecated 2.6.0 Use wp_category_checklist()
  * @see wp_category_checklist()
  *
- * @param int $default
- * @param int $parent
- * @param array $popular_ids
+ * @param int $default       Unused.
+ * @param int $parent        Unused.
+ * @param array $popular_ids Unused.
  */
 function dropdown_categories( $default = 0, $parent = 0, $popular_ids = array() ) {
        _deprecated_function( __FUNCTION__, '2.6', 'wp_category_checklist()' );
@@ -90,14 +86,13 @@ function dropdown_categories( $default = 0, $parent = 0, $popular_ids = array()
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Legacy function used to generate a link categories checklist control.
  *
  * @since 2.1.0
- * @deprecated 2.6.0
- * @deprecated Use wp_link_category_checklist()
+ * @deprecated 2.6.0 Use wp_link_category_checklist()
  * @see wp_link_category_checklist()
  *
- * @param int $default
+ * @param int $default Unused.
  */
 function dropdown_link_categories( $default = 0 ) {
        _deprecated_function( __FUNCTION__, '2.6', 'wp_link_category_checklist()' );
@@ -122,19 +117,18 @@ function get_real_file_to_edit( $file ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Legacy function used for generating a categories drop-down control.
  *
  * @since 1.2.0
- * @deprecated 3.0.0
- * @deprecated Use wp_dropdown_categories()
+ * @deprecated 3.0.0 Use wp_dropdown_categories()
  * @see wp_dropdown_categories()
  *
- * @param int $currentcat
- * @param int $currentparent
- * @param int $parent
- * @param int $level
- * @param array $categories
- * @return bool|null
+ * @param int $currentcat    Optional. ID of the current category. Default 0.
+ * @param int $currentparent Optional. Current parent category ID. Default 0.
+ * @param int $parent        Optional. Parent ID to retrieve categories for. Default 0.
+ * @param int $level         Optional. Number of levels deep to display. Default 0.
+ * @param array $categories  Optional. Categories to include in the control. Default 0.
+ * @return bool|null False if no categories were found.
  */
 function wp_dropdown_cats( $currentcat = 0, $currentparent = 0, $parent = 0, $level = 0, $categories = 0 ) {
        _deprecated_function( __FUNCTION__, '3.0', 'wp_dropdown_categories()' );
@@ -162,8 +156,7 @@ function wp_dropdown_cats( $currentcat = 0, $currentparent = 0, $parent = 0, $le
  * Register a setting and its sanitization callback
  *
  * @since 2.7.0
- * @deprecated 3.0.0
- * @deprecated Use register_setting()
+ * @deprecated 3.0.0 Use register_setting()
  * @see register_setting()
  *
  * @param string $option_group A settings group name. Should correspond to a whitelisted option key name.
@@ -180,8 +173,7 @@ function add_option_update_handler( $option_group, $option_name, $sanitize_callb
  * Unregister a setting
  *
  * @since 2.7.0
- * @deprecated 3.0.0
- * @deprecated Use unregister_setting()
+ * @deprecated 3.0.0 Use unregister_setting()
  * @see unregister_setting()
  *
  * @param string $option_group
@@ -226,7 +218,9 @@ function use_codepress() {
 }
 
 /**
- * @deprecated 3.1.0
+ * Get all user IDs.
+ *
+ * @deprecated 3.1.0 Use get_users()
  *
  * @return array List of user IDs.
  */
@@ -243,7 +237,9 @@ function get_author_user_ids() {
 }
 
 /**
- * @deprecated 3.1.0
+ * Gets author users who can edit posts.
+ *
+ * @deprecated 3.1.0 Use get_users()
  *
  * @param int $user_id User ID.
  * @return array|bool List of editable authors. False if no editable users.
@@ -266,7 +262,9 @@ function get_editable_authors( $user_id ) {
 }
 
 /**
- * @deprecated 3.1.0
+ * Gets the IDs of any users who can edit posts.
+ *
+ * @deprecated 3.1.0 Use get_users()
  *
  * @param int $user_id User ID.
  * @param bool $exclude_zeros Optional, default is true. Whether to exclude zeros.
@@ -301,7 +299,9 @@ function get_editable_user_ids( $user_id, $exclude_zeros = true, $post_type = 'p
 }
 
 /**
- * @deprecated 3.1.0
+ * Gets all users who are not authors.
+ *
+ * @deprecated 3.1.0 Use get_users()
  */
 function get_nonauthor_user_ids() {
        _deprecated_function( __FUNCTION__, '3.1', 'get_users()' );
@@ -316,12 +316,12 @@ function get_nonauthor_user_ids() {
        return $wpdb->get_col( $wpdb->prepare("SELECT user_id FROM $wpdb->usermeta WHERE meta_key = %s AND meta_value = '0'", $level_key) );
 }
 
-if ( !class_exists('WP_User_Search') ) :
+if ( ! class_exists( 'WP_User_Search', false ) ) :
 /**
  * WordPress User Search class.
  *
  * @since 2.1.0
- * @deprecated 3.1.0
+ * @deprecated 3.1.0 Use WP_User_Query
  */
 class WP_User_Search {
 
@@ -507,14 +507,12 @@ class WP_User_Search {
        }
 
        /**
-        * {@internal Missing Short Description}}
-        *
-        * {@internal Missing Long Description}}
+        * Prepares the user search query (legacy).
         *
         * @since 2.1.0
         * @access public
         */
-       function prepare_query() {
+       public function prepare_query() {
                global $wpdb;
                $this->first_user = ($this->page - 1) * $this->users_per_page;
 
@@ -547,14 +545,12 @@ class WP_User_Search {
        }
 
        /**
-        * {@internal Missing Short Description}}
-        *
-        * {@internal Missing Long Description}}
+        * Executes the user search query.
         *
         * @since 2.1.0
         * @access public
         */
-       function query() {
+       public function query() {
                global $wpdb;
 
                $this->results = $wpdb->get_col("SELECT DISTINCT($wpdb->users.ID)" . $this->query_from . $this->query_where . $this->query_orderby . $this->query_limit);
@@ -566,9 +562,7 @@ class WP_User_Search {
        }
 
        /**
-        * {@internal Missing Short Description}}
-        *
-        * {@internal Missing Long Description}}
+        * Prepares variables for use in templates.
         *
         * @since 2.1.0
         * @access public
@@ -576,14 +570,12 @@ class WP_User_Search {
        function prepare_vars_for_template_usage() {}
 
        /**
-        * {@internal Missing Short Description}}
-        *
-        * {@internal Missing Long Description}}
+        * Handles paging for the user search query.
         *
         * @since 2.1.0
         * @access public
         */
-       function do_paging() {
+       public function do_paging() {
                if ( $this->total_users_for_query > $this->users_per_page ) { // have to page the results
                        $args = array();
                        if ( ! empty($this->search_term) )
@@ -610,16 +602,14 @@ class WP_User_Search {
        }
 
        /**
-        * {@internal Missing Short Description}}
-        *
-        * {@internal Missing Long Description}}
+        * Retrieves the user search query results.
         *
         * @since 2.1.0
         * @access public
         *
         * @return array
         */
-       function get_results() {
+       public function get_results() {
                return (array) $this->results;
        }
 
@@ -670,7 +660,8 @@ endif;
 /**
  * Retrieve editable posts from other users.
  *
- * @deprecated 3.1.0
+ * @deprecated 3.1.0 Use get_posts()
+ * @see get_posts()
  *
  * @param int $user_id User ID to not retrieve posts from.
  * @param string $type Optional, defaults to 'any'. Post type to retrieve, can be 'draft' or 'pending'.
@@ -703,7 +694,8 @@ function get_others_unpublished_posts($user_id, $type='any') {
 /**
  * Retrieve drafts from other users.
  *
- * @deprecated 3.1.0
+ * @deprecated 3.1.0 Use get_posts()
+ * @see get_posts()
  *
  * @param int $user_id User ID.
  * @return array List of drafts from other users.
@@ -717,7 +709,8 @@ function get_others_drafts($user_id) {
 /**
  * Retrieve pending review posts from other users.
  *
- * @deprecated 3.1.0
+ * @deprecated 3.1.0 Use get_posts()
+ * @see get_posts()
  *
  * @param int $user_id User ID.
  * @return array List of posts with pending review post type from other users.
@@ -732,8 +725,7 @@ function get_others_pending($user_id) {
  * Output the QuickPress dashboard widget.
  *
  * @since 3.0.0
- * @deprecated 3.2.0
- * @deprecated Use wp_dashboard_quick_press()
+ * @deprecated 3.2.0 Use wp_dashboard_quick_press()
  * @see wp_dashboard_quick_press()
  */
 function wp_dashboard_quick_press_output() {
@@ -742,9 +734,10 @@ function wp_dashboard_quick_press_output() {
 }
 
 /**
+ * Outputs the TinyMCE editor.
+ *
  * @since 2.7.0
- * @deprecated 3.3.0
- * @deprecated Use wp_editor()
+ * @deprecated 3.3.0 Use wp_editor()
  * @see wp_editor()
  *
  * @staticvar int $num
@@ -754,7 +747,7 @@ function wp_tiny_mce( $teeny = false, $settings = false ) {
 
        static $num = 1;
 
-       if ( ! class_exists('_WP_Editors' ) )
+       if ( ! class_exists( '_WP_Editors', false ) )
                require_once( ABSPATH . WPINC . '/class-wp-editor.php' );
 
        $editor_id = 'content' . $num++;
@@ -770,8 +763,9 @@ function wp_tiny_mce( $teeny = false, $settings = false ) {
 }
 
 /**
- * @deprecated 3.3.0
- * @deprecated Use wp_editor()
+ * Preloads TinyMCE dialogs.
+ *
+ * @deprecated 3.3.0 Use wp_editor()
  * @see wp_editor()
  */
 function wp_preload_dialogs() {
@@ -779,8 +773,9 @@ function wp_preload_dialogs() {
 }
 
 /**
- * @deprecated 3.3.0
- * @deprecated Use wp_editor()
+ * Prints TinyMCE editor JS.
+ *
+ * @deprecated 3.3.0 Use wp_editor()
  * @see wp_editor()
  */
 function wp_print_editor_js() {
@@ -788,8 +783,9 @@ function wp_print_editor_js() {
 }
 
 /**
- * @deprecated 3.3.0
- * @deprecated Use wp_editor()
+ * Handles quicktags.
+ *
+ * @deprecated 3.3.0 Use wp_editor()
  * @see wp_editor()
  */
 function wp_quicktags() {
@@ -800,8 +796,7 @@ function wp_quicktags() {
  * Returns the screen layout options.
  *
  * @since 2.8.0
- * @deprecated 3.3.0
- * @deprecated Use $current_screen->render_screen_layout()
+ * @deprecated 3.3.0 WP_Screen::render_screen_layout()
  * @see WP_Screen::render_screen_layout()
  */
 function screen_layout( $screen ) {
@@ -821,8 +816,7 @@ function screen_layout( $screen ) {
  * Returns the screen's per-page options.
  *
  * @since 2.8.0
- * @deprecated 3.3.0
- * @deprecated Use $current_screen->render_per_page_options()
+ * @deprecated 3.3.0 Use WP_Screen::render_per_page_options()
  * @see WP_Screen::render_per_page_options()
  */
 function screen_options( $screen ) {
@@ -842,8 +836,7 @@ function screen_options( $screen ) {
  * Renders the screen's help.
  *
  * @since 2.7.0
- * @deprecated 3.3.0
- * @deprecated Use $current_screen->render_screen_meta()
+ * @deprecated 3.3.0 Use WP_Screen::render_screen_meta()
  * @see WP_Screen::render_screen_meta()
  */
 function screen_meta( $screen ) {
@@ -855,47 +848,112 @@ function screen_meta( $screen ) {
  * Favorite actions were deprecated in version 3.2. Use the admin bar instead.
  *
  * @since 2.7.0
- * @deprecated 3.2.0
+ * @deprecated 3.2.0 Use WP_Admin_Bar
+ * @see WP_Admin_Bar
  */
 function favorite_actions() {
        _deprecated_function( __FUNCTION__, '3.2', 'WP_Admin_Bar' );
 }
 
+/**
+ * Handles uploading an image.
+ *
+ * @deprecated 3.3.0 Use wp_media_upload_handler()
+ * @see wp_media_upload_handler()
+ *
+ * @return null|string
+ */
 function media_upload_image() {
        _deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' );
        return wp_media_upload_handler();
 }
 
+/**
+ * Handles uploading an audio file.
+ *
+ * @deprecated 3.3.0 Use wp_media_upload_handler()
+ * @see wp_media_upload_handler()
+ *
+ * @return null|string
+ */
 function media_upload_audio() {
        _deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' );
        return wp_media_upload_handler();
 }
 
+/**
+ * Handles uploading a video file.
+ *
+ * @deprecated 3.3.0 Use wp_media_upload_handler()
+ * @see wp_media_upload_handler()
+ *
+ * @return null|string
+ */
 function media_upload_video() {
        _deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' );
        return wp_media_upload_handler();
 }
 
+/**
+ * Handles uploading a generic file.
+ *
+ * @deprecated 3.3.0 Use wp_media_upload_handler()
+ * @see wp_media_upload_handler()
+ *
+ * @return null|string
+ */
 function media_upload_file() {
        _deprecated_function( __FUNCTION__, '3.3', 'wp_media_upload_handler()' );
        return wp_media_upload_handler();
 }
 
+/**
+ * Handles retrieving the insert-from-URL form for an image.
+ *
+ * @deprecated 3.3.0 Use wp_media_insert_url_form()
+ * @see wp_media_insert_url_form()
+ *
+ * @return string
+ */
 function type_url_form_image() {
        _deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('image')" );
        return wp_media_insert_url_form( 'image' );
 }
 
+/**
+ * Handles retrieving the insert-from-URL form for an audio file.
+ *
+ * @deprecated 3.3.0 Use wp_media_insert_url_form()
+ * @see wp_media_insert_url_form()
+ *
+ * @return string
+ */
 function type_url_form_audio() {
        _deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('audio')" );
        return wp_media_insert_url_form( 'audio' );
 }
 
+/**
+ * Handles retrieving the insert-from-URL form for a video file.
+ *
+ * @deprecated 3.3.0 Use wp_media_insert_url_form()
+ * @see wp_media_insert_url_form()
+ *
+ * @return string
+ */
 function type_url_form_video() {
        _deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('video')" );
        return wp_media_insert_url_form( 'video' );
 }
 
+/**
+ * Handles retrieving the insert-from-URL form for a generic file.
+ *
+ * @deprecated 3.3.0 Use wp_media_insert_url_form()
+ * @see wp_media_insert_url_form()
+ *
+ * @return string
+ */
 function type_url_form_file() {
        _deprecated_function( __FUNCTION__, '3.3', "wp_media_insert_url_form('file')" );
        return wp_media_insert_url_form( 'file' );
@@ -907,9 +965,8 @@ function type_url_form_file() {
  * Creates an 'Overview' help tab.
  *
  * @since 2.7.0
- * @deprecated 3.3.0
- * @deprecated Use get_current_screen()->add_help_tab()
- * @see WP_Screen
+ * @deprecated 3.3.0 Use WP_Screen::add_help_tab()
+ * @see WP_Screen::add_help_tab()
  *
  * @param string    $screen The handle for the screen to add help to. This is usually the hook name returned by the add_*_page() functions.
  * @param string    $help   The content of an 'Overview' help tab.
@@ -927,8 +984,7 @@ function add_contextual_help( $screen, $help ) {
  * Get the allowed themes for the current blog.
  *
  * @since 3.0.0
- * @deprecated 3.4.0
- * @deprecated Use wp_get_themes()
+ * @deprecated 3.4.0 Use wp_get_themes()
  * @see wp_get_themes()
  *
  * @return array $themes Array of allowed themes.
@@ -947,10 +1003,11 @@ function get_allowed_themes() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves a list of broken themes.
  *
  * @since 1.5.0
- * @deprecated 3.4.0
+ * @deprecated 3.4.0 Use wp_get_themes()
+ * @see wp_get_themes()
  *
  * @return array
  */
@@ -971,10 +1028,11 @@ function get_broken_themes() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves information on the current active theme.
  *
  * @since 2.0.0
- * @deprecated 3.4.0
+ * @deprecated 3.4.0 Use wp_get_theme()
+ * @see wp_get_theme()
  *
  * @return WP_Theme
  */
@@ -985,7 +1043,9 @@ function current_theme_info() {
 }
 
 /**
- * This was once used to display an 'Insert into Post' button. Now it is deprecated and stubbed.
+ * This was once used to display an 'Insert into Post' button.
+ *
+ * Now it is deprecated and stubbed.
  *
  * @deprecated 3.5.0
  */
@@ -994,7 +1054,9 @@ function _insert_into_post_button( $type ) {
 }
 
 /**
- * This was once used to display a media button. Now it is deprecated and stubbed.
+ * This was once used to display a media button.
+ *
+ * Now it is deprecated and stubbed.
  *
  * @deprecated 3.5.0
  */
@@ -1003,10 +1065,11 @@ function _media_button($title, $icon, $type, $id) {
 }
 
 /**
- * Get an existing post and format it for editing.
+ * Gets an existing post and format it for editing.
  *
  * @since 2.0.0
- * @deprecated 3.5.0
+ * @deprecated 3.5.0 Use get_post()
+ * @see get_post()
  *
  * @param int $id
  * @return object
@@ -1018,11 +1081,11 @@ function get_post_to_edit( $id ) {
 }
 
 /**
- * Get the default page information to use.
+ * Gets the default page information to use.
  *
  * @since 2.5.0
- * @deprecated 3.5.0
- * @deprecated Use get_default_post_to_edit()
+ * @deprecated 3.5.0 Use get_default_post_to_edit()
+ * @see get_default_post_to_edit()
  *
  * @return WP_Post Post object containing all the default post data as attributes
  */
@@ -1038,8 +1101,7 @@ function get_default_page_to_edit() {
  * This was once used to create a thumbnail from an Image given a maximum side size.
  *
  * @since 1.2.0
- * @deprecated 3.5.0
- * @deprecated Use image_resize()
+ * @deprecated 3.5.0 Use image_resize()
  * @see image_resize()
  *
  * @param mixed $file Filename of the original image, Or attachment id.
@@ -1071,7 +1133,7 @@ function wp_nav_menu_locations_meta_box() {
  * and calling the 'upgrade' method.
  *
  * @since 2.7.0
- * @deprecated 3.7.0
+ * @deprecated 3.7.0 Use Core_Upgrader
  * @see Core_Upgrader
  */
 function wp_update_core($current, $feedback = '') {
@@ -1094,7 +1156,7 @@ function wp_update_core($current, $feedback = '') {
  * Unused since 2.8.0.
  *
  * @since 2.5.0
- * @deprecated 3.7.0
+ * @deprecated 3.7.0 Use Plugin_Upgrader
  * @see Plugin_Upgrader
  */
 function wp_update_plugin($plugin, $feedback = '') {
@@ -1116,7 +1178,7 @@ function wp_update_plugin($plugin, $feedback = '') {
  * Unused since 2.8.0.
  *
  * @since 2.7.0
- * @deprecated 3.7.0
+ * @deprecated 3.7.0 Use Theme_Upgrader
  * @see Theme_Upgrader
  */
 function wp_update_theme($theme, $feedback = '') {
@@ -1133,8 +1195,6 @@ function wp_update_theme($theme, $feedback = '') {
 /**
  * This was once used to display attachment links. Now it is deprecated and stubbed.
  *
- * {@internal Missing Short Description}}
- *
  * @since 2.0.0
  * @deprecated 3.7.0
  *
@@ -1144,45 +1204,93 @@ function the_attachment_links( $id = false ) {
        _deprecated_function( __FUNCTION__, '3.7' );
 }
 
-/**#@+
+/**
  * Displays a screen icon.
  *
  * @since 2.7.0
  * @since 3.8.0 Screen icons are no longer used in WordPress. This function no longer produces output.
- * @deprecated 3.8.0
+ * @deprecated 3.8.0 Use get_screen_icon()
+ * @see get_screen_icon()
  */
 function screen_icon() {
        echo get_screen_icon();
 }
+
+/**
+ * Retrieves the screen icon (no longer used in 3.8+).
+ *
+ * @deprecated 3.8.0
+ *
+ * @return string
+ */
 function get_screen_icon() {
        return '<!-- Screen icons are no longer used as of WordPress 3.8. -->';
 }
-/**#@-*/
 
-/**#@+
+/**
  * Deprecated dashboard widget controls.
  *
  * @since 2.5.0
  * @deprecated 3.8.0
  */
 function wp_dashboard_incoming_links_output() {}
+
+/**
+ * Deprecated dashboard secondary output.
+ *
+ * @deprecated 3.8.0
+ */
 function wp_dashboard_secondary_output() {}
-/**#@-*/
 
-/**#@+
+/**
  * Deprecated dashboard widget controls.
  *
  * @since 2.7.0
  * @deprecated 3.8.0
  */
 function wp_dashboard_incoming_links() {}
+
+/**
+ * Deprecated dashboard incoming links control.
+ *
+ * @deprecated 3.8.0
+ */
 function wp_dashboard_incoming_links_control() {}
+
+/**
+ * Deprecated dashboard plugins control.
+ *
+ * @deprecated 3.8.0
+ */
 function wp_dashboard_plugins() {}
+
+/**
+ * Deprecated dashboard primary control.
+ *
+ * @deprecated 3.8.0
+ */
 function wp_dashboard_primary_control() {}
+
+/**
+ * Deprecated dashboard recent comments control.
+ *
+ * @deprecated 3.8.0
+ */
 function wp_dashboard_recent_comments_control() {}
+
+/**
+ * Deprecated dashboard secondary section.
+ *
+ * @deprecated 3.8.0
+ */
 function wp_dashboard_secondary() {}
+
+/**
+ * Deprecated dashboard secondary control.
+ *
+ * @deprecated 3.8.0
+ */
 function wp_dashboard_secondary_control() {}
-/**#@-*/
 
 /**
  * This was once used to move child posts to a new parent.
diff --git a/wp-admin/includes/edit-tag-messages.php b/wp-admin/includes/edit-tag-messages.php
new file mode 100644 (file)
index 0000000..dcfd603
--- /dev/null
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Edit Tags Administration: Messages
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+$messages = array();
+// 0 = unused. Messages start at index 1.
+$messages['_item'] = array(
+       0 => '',
+       1 => __( 'Item added.' ),
+       2 => __( 'Item deleted.' ),
+       3 => __( 'Item updated.' ),
+       4 => __( 'Item not added.' ),
+       5 => __( 'Item not updated.' ),
+       6 => __( 'Items deleted.' ),
+);
+
+$messages['category'] = array(
+       0 => '',
+       1 => __( 'Category added.' ),
+       2 => __( 'Category deleted.' ),
+       3 => __( 'Category updated.' ),
+       4 => __( 'Category not added.' ),
+       5 => __( 'Category not updated.' ),
+       6 => __( 'Categories deleted.' ),
+);
+
+$messages['post_tag'] = array(
+       0 => '',
+       1 => __( 'Tag added.' ),
+       2 => __( 'Tag deleted.' ),
+       3 => __( 'Tag updated.' ),
+       4 => __( 'Tag not added.' ),
+       5 => __( 'Tag not updated.' ),
+       6 => __( 'Tags deleted.' ),
+);
+
+/**
+ * Filter the messages displayed when a tag is updated.
+ *
+ * @since 3.7.0
+ *
+ * @param array $messages The messages to be displayed.
+ */
+$messages = apply_filters( 'term_updated_messages', $messages );
+
+$message = false;
+if ( isset( $_REQUEST['message'] ) && ( $msg = (int) $_REQUEST['message'] ) ) {
+       if ( isset( $messages[ $taxonomy ][ $msg ] ) ) {
+               $message = $messages[ $taxonomy ][ $msg ];
+       } elseif ( ! isset( $messages[ $taxonomy ] ) && isset( $messages['_item'][ $msg ] ) ) {
+               $message = $messages['_item'][ $msg ];
+       }
+}
\ No newline at end of file
index 98989324e1a0d22f2931100688b8e7f606af52c1..4b18c9c0a391e6a7fd2baa29ede3a24acd12488d 100644 (file)
@@ -43,8 +43,21 @@ function export_wp( $args = array() ) {
        do_action( 'export_wp', $args );
 
        $sitename = sanitize_key( get_bloginfo( 'name' ) );
-       if ( ! empty($sitename) ) $sitename .= '.';
-       $filename = $sitename . 'wordpress.' . date( 'Y-m-d' ) . '.xml';
+       if ( ! empty( $sitename ) ) {
+               $sitename .= '.';
+       }
+       $date = date( 'Y-m-d' );
+       $wp_filename = $sitename . 'wordpress.' . $date . '.xml';
+       /**
+        * Filter the export filename.
+        *
+        * @since 4.4.0
+        *
+        * @param string $wp_filename The name of the file for download.
+        * @param string $sitename    The site name.
+        * @param string $date        Today's date, formatted.
+        */
+       $filename = apply_filters( 'export_wp_filename', $wp_filename, $sitename, $date );
 
        header( 'Content-Description: File Transfer' );
        header( 'Content-Disposition: attachment; filename=' . $filename );
@@ -75,7 +88,7 @@ function export_wp( $args = array() ) {
                }
        }
 
-       if ( 'post' == $args['content'] || 'page' == $args['content'] ) {
+       if ( 'post' == $args['content'] || 'page' == $args['content'] || 'attachment' == $args['content'] ) {
                if ( $args['author'] )
                        $where .= $wpdb->prepare( " AND {$wpdb->posts}.post_author = %d", $args['author'] );
 
@@ -247,7 +260,7 @@ function export_wp( $args = array() ) {
         *
         * @since 3.1.0
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param array $post_ids Array of post IDs to filter the query by. Optional.
         */
@@ -270,12 +283,12 @@ function export_wp( $args = array() ) {
 
                foreach ( $authors as $author ) {
                        echo "\t<wp:author>";
-                       echo '<wp:author_id>' . $author->ID . '</wp:author_id>';
-                       echo '<wp:author_login>' . $author->user_login . '</wp:author_login>';
-                       echo '<wp:author_email>' . $author->user_email . '</wp:author_email>';
+                       echo '<wp:author_id>' . intval( $author->ID ) . '</wp:author_id>';
+                       echo '<wp:author_login>' . wxr_cdata( $author->user_login ) . '</wp:author_login>';
+                       echo '<wp:author_email>' . wxr_cdata( $author->user_email ) . '</wp:author_email>';
                        echo '<wp:author_display_name>' . wxr_cdata( $author->display_name ) . '</wp:author_display_name>';
-                       echo '<wp:author_first_name>' . wxr_cdata( $author->user_firstname ) . '</wp:author_first_name>';
-                       echo '<wp:author_last_name>' . wxr_cdata( $author->user_lastname ) . '</wp:author_last_name>';
+                       echo '<wp:author_first_name>' . wxr_cdata( $author->first_name ) . '</wp:author_first_name>';
+                       echo '<wp:author_last_name>' . wxr_cdata( $author->last_name ) . '</wp:author_last_name>';
                        echo "</wp:author>\n";
                }
        }
@@ -291,7 +304,10 @@ function export_wp( $args = array() ) {
                        return;
 
                foreach ( $nav_menus as $menu ) {
-                       echo "\t<wp:term><wp:term_id>{$menu->term_id}</wp:term_id><wp:term_taxonomy>nav_menu</wp:term_taxonomy><wp:term_slug>{$menu->slug}</wp:term_slug>";
+                       echo "\t<wp:term>";
+                       echo '<wp:term_id>' . intval( $menu->term_id ) . '</wp:term_id>';
+                       echo '<wp:term_taxonomy>nav_menu</wp:term_taxonomy>';
+                       echo '<wp:term_slug>' . wxr_cdata( $menu->slug ) . '</wp:term_slug>';
                        wxr_term_name( $menu );
                        echo "</wp:term>\n";
                }
@@ -370,13 +386,13 @@ function export_wp( $args = array() ) {
 <?php wxr_authors_list( $post_ids ); ?>
 
 <?php foreach ( $cats as $c ) : ?>
-       <wp:category><wp:term_id><?php echo $c->term_id ?></wp:term_id><wp:category_nicename><?php echo $c->slug; ?></wp:category_nicename><wp:category_parent><?php echo $c->parent ? $cats[$c->parent]->slug : ''; ?></wp:category_parent><?php wxr_cat_name( $c ); ?><?php wxr_category_description( $c ); ?></wp:category>
+       <wp:category><wp:term_id><?php echo intval( $c->term_id ); ?></wp:term_id><wp:category_nicename><?php echo wxr_cdata( $c->slug ); ?></wp:category_nicename><wp:category_parent><?php echo wxr_cdata( $c->parent ? $cats[$c->parent]->slug : '' ); ?></wp:category_parent><?php wxr_cat_name( $c ); ?><?php wxr_category_description( $c ); ?></wp:category>
 <?php endforeach; ?>
 <?php foreach ( $tags as $t ) : ?>
-       <wp:tag><wp:term_id><?php echo $t->term_id ?></wp:term_id><wp:tag_slug><?php echo $t->slug; ?></wp:tag_slug><?php wxr_tag_name( $t ); ?><?php wxr_tag_description( $t ); ?></wp:tag>
+       <wp:tag><wp:term_id><?php echo intval( $t->term_id ); ?></wp:term_id><wp:tag_slug><?php echo wxr_cdata( $t->slug ); ?></wp:tag_slug><?php wxr_tag_name( $t ); ?><?php wxr_tag_description( $t ); ?></wp:tag>
 <?php endforeach; ?>
 <?php foreach ( $terms as $t ) : ?>
-       <wp:term><wp:term_id><?php echo $t->term_id ?></wp:term_id><wp:term_taxonomy><?php echo $t->taxonomy; ?></wp:term_taxonomy><wp:term_slug><?php echo $t->slug; ?></wp:term_slug><wp:term_parent><?php echo $t->parent ? $terms[$t->parent]->slug : ''; ?></wp:term_parent><?php wxr_term_name( $t ); ?><?php wxr_term_description( $t ); ?></wp:term>
+       <wp:term><wp:term_id><?php echo wxr_cdata( $t->term_id ); ?></wp:term_id><wp:term_taxonomy><?php echo wxr_cdata( $t->taxonomy ); ?></wp:term_taxonomy><wp:term_slug><?php echo wxr_cdata( $t->slug ); ?></wp:term_slug><wp:term_parent><?php echo wxr_cdata( $t->parent ? $terms[$t->parent]->slug : '' ); ?></wp:term_parent><?php wxr_term_name( $t ); ?><?php wxr_term_description( $t ); ?></wp:term>
 <?php endforeach; ?>
 <?php if ( 'all' == $args['content'] ) wxr_nav_menu_terms(); ?>
 
@@ -434,20 +450,20 @@ function export_wp( $args = array() ) {
                         */
                        echo wxr_cdata( apply_filters( 'the_excerpt_export', $post->post_excerpt ) );
                ?></excerpt:encoded>
-               <wp:post_id><?php echo $post->ID; ?></wp:post_id>
-               <wp:post_date><?php echo $post->post_date; ?></wp:post_date>
-               <wp:post_date_gmt><?php echo $post->post_date_gmt; ?></wp:post_date_gmt>
-               <wp:comment_status><?php echo $post->comment_status; ?></wp:comment_status>
-               <wp:ping_status><?php echo $post->ping_status; ?></wp:ping_status>
-               <wp:post_name><?php echo $post->post_name; ?></wp:post_name>
-               <wp:status><?php echo $post->post_status; ?></wp:status>
-               <wp:post_parent><?php echo $post->post_parent; ?></wp:post_parent>
-               <wp:menu_order><?php echo $post->menu_order; ?></wp:menu_order>
-               <wp:post_type><?php echo $post->post_type; ?></wp:post_type>
-               <wp:post_password><?php echo $post->post_password; ?></wp:post_password>
-               <wp:is_sticky><?php echo $is_sticky; ?></wp:is_sticky>
+               <wp:post_id><?php echo intval( $post->ID ); ?></wp:post_id>
+               <wp:post_date><?php echo wxr_cdata( $post->post_date ); ?></wp:post_date>
+               <wp:post_date_gmt><?php echo wxr_cdata( $post->post_date_gmt ); ?></wp:post_date_gmt>
+               <wp:comment_status><?php echo wxr_cdata( $post->comment_status ); ?></wp:comment_status>
+               <wp:ping_status><?php echo wxr_cdata( $post->ping_status ); ?></wp:ping_status>
+               <wp:post_name><?php echo wxr_cdata( $post->post_name ); ?></wp:post_name>
+               <wp:status><?php echo wxr_cdata( $post->post_status ); ?></wp:status>
+               <wp:post_parent><?php echo intval( $post->post_parent ); ?></wp:post_parent>
+               <wp:menu_order><?php echo intval( $post->menu_order ); ?></wp:menu_order>
+               <wp:post_type><?php echo wxr_cdata( $post->post_type ); ?></wp:post_type>
+               <wp:post_password><?php echo wxr_cdata( $post->post_password ); ?></wp:post_password>
+               <wp:is_sticky><?php echo intval( $is_sticky ); ?></wp:is_sticky>
 <?php  if ( $post->post_type == 'attachment' ) : ?>
-               <wp:attachment_url><?php echo wp_get_attachment_url( $post->ID ); ?></wp:attachment_url>
+               <wp:attachment_url><?php echo wxr_cdata( wp_get_attachment_url( $post->ID ) ); ?></wp:attachment_url>
 <?php  endif; ?>
 <?php  wxr_post_taxonomy(); ?>
 <?php  $postmeta = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID ) );
@@ -468,26 +484,27 @@ function export_wp( $args = array() ) {
                                continue;
                ?>
                <wp:postmeta>
-                       <wp:meta_key><?php echo $meta->meta_key; ?></wp:meta_key>
+                       <wp:meta_key><?php echo wxr_cdata( $meta->meta_key ); ?></wp:meta_key>
                        <wp:meta_value><?php echo wxr_cdata( $meta->meta_value ); ?></wp:meta_value>
                </wp:postmeta>
 <?php  endforeach;
 
-               $comments = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved <> 'spam'", $post->ID ) );
+               $_comments = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved <> 'spam'", $post->ID ) );
+               $comments = array_map( 'get_comment', $_comments );
                foreach ( $comments as $c ) : ?>
                <wp:comment>
-                       <wp:comment_id><?php echo $c->comment_ID; ?></wp:comment_id>
+                       <wp:comment_id><?php echo intval( $c->comment_ID ); ?></wp:comment_id>
                        <wp:comment_author><?php echo wxr_cdata( $c->comment_author ); ?></wp:comment_author>
-                       <wp:comment_author_email><?php echo $c->comment_author_email; ?></wp:comment_author_email>
+                       <wp:comment_author_email><?php echo wxr_cdata( $c->comment_author_email ); ?></wp:comment_author_email>
                        <wp:comment_author_url><?php echo esc_url_raw( $c->comment_author_url ); ?></wp:comment_author_url>
-                       <wp:comment_author_IP><?php echo $c->comment_author_IP; ?></wp:comment_author_IP>
-                       <wp:comment_date><?php echo $c->comment_date; ?></wp:comment_date>
-                       <wp:comment_date_gmt><?php echo $c->comment_date_gmt; ?></wp:comment_date_gmt>
+                       <wp:comment_author_IP><?php echo wxr_cdata( $c->comment_author_IP ); ?></wp:comment_author_IP>
+                       <wp:comment_date><?php echo wxr_cdata( $c->comment_date ); ?></wp:comment_date>
+                       <wp:comment_date_gmt><?php echo wxr_cdata( $c->comment_date_gmt ); ?></wp:comment_date_gmt>
                        <wp:comment_content><?php echo wxr_cdata( $c->comment_content ) ?></wp:comment_content>
-                       <wp:comment_approved><?php echo $c->comment_approved; ?></wp:comment_approved>
-                       <wp:comment_type><?php echo $c->comment_type; ?></wp:comment_type>
-                       <wp:comment_parent><?php echo $c->comment_parent; ?></wp:comment_parent>
-                       <wp:comment_user_id><?php echo $c->user_id; ?></wp:comment_user_id>
+                       <wp:comment_approved><?php echo wxr_cdata( $c->comment_approved ); ?></wp:comment_approved>
+                       <wp:comment_type><?php echo wxr_cdata( $c->comment_type ); ?></wp:comment_type>
+                       <wp:comment_parent><?php echo intval( $c->comment_parent ); ?></wp:comment_parent>
+                       <wp:comment_user_id><?php echo intval( $c->user_id ); ?></wp:comment_user_id>
 <?php          $c_meta = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->commentmeta WHERE comment_id = %d", $c->comment_ID ) );
                        foreach ( $c_meta as $meta ) :
                                /**
@@ -507,7 +524,7 @@ function export_wp( $args = array() ) {
                                }
                        ?>
                        <wp:commentmeta>
-                               <wp:meta_key><?php echo $meta->meta_key; ?></wp:meta_key>
+                               <wp:meta_key><?php echo wxr_cdata( $meta->meta_key ); ?></wp:meta_key>
                                <wp:meta_value><?php echo wxr_cdata( $meta->meta_value ); ?></wp:meta_value>
                        </wp:commentmeta>
 <?php          endforeach; ?>
index df489491e6391356f1aca3904a0709dbe343082d..3b4d1c6e4c2fafe87f1e777d4a0dc8121a4a88e2 100644 (file)
@@ -1,11 +1,14 @@
 <?php
 /**
+ * Filesystem API: Top-level functionality
+ *
  * Functions for reading, writing, modifying, and deleting files on the file system.
  * Includes functionality for theme-specific files as well as operations for uploading,
  * archiving, and rendering output when necessary.
  *
  * @package WordPress
- * @subpackage Administration
+ * @subpackage Filesystem
+ * @since 2.3.0
  */
 
 /** The descriptions for theme files. */
@@ -17,8 +20,8 @@ $wp_file_descriptions = array(
        'rtl.css' => __( 'RTL Stylesheet' ),
        'comments.php' => __( 'Comments' ),
        'comments-popup.php' => __( 'Popup Comments' ),
-       'footer.php' => __( 'Footer' ),
-       'header.php' => __( 'Header' ),
+       'footer.php' => __( 'Theme Footer' ),
+       'header.php' => __( 'Theme Header' ),
        'sidebar.php' => __( 'Sidebar' ),
        'archive.php' => __( 'Archives' ),
        'author.php' => __( 'Author Template' ),
@@ -52,18 +55,21 @@ $wp_file_descriptions = array(
  *
  * @global array $wp_file_descriptions
  * @param string $file Filesystem path or filename
- * @return string Description of file from $wp_file_descriptions or basename of $file if description doesn't exist
+ * @return string Description of file from $wp_file_descriptions or basename of $file if description doesn't exist.
+ *                Appends 'Page Template' to basename of $file if the file is a page template
  */
 function get_file_description( $file ) {
-       global $wp_file_descriptions;
-
-       if ( isset( $wp_file_descriptions[basename( $file )] ) ) {
-               return $wp_file_descriptions[basename( $file )];
-       }
-       elseif ( file_exists( $file ) && is_file( $file ) ) {
-               $template_data = implode( '', file( $file ) );
-               if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name ))
-                       return sprintf( __( '%s Page Template' ), _cleanup_header_comment($name[1]) );
+       global $wp_file_descriptions, $allowed_files;
+
+       $relative_pathinfo = pathinfo( $file );
+       $file_path = $allowed_files[ $file ];
+       if ( isset( $wp_file_descriptions[ basename( $file ) ] ) && '.' === $relative_pathinfo['dirname'] ) {
+               return $wp_file_descriptions[ basename( $file ) ];
+       } elseif ( file_exists( $file_path ) && is_file( $file_path ) ) {
+               $template_data = implode( '', file( $file_path ) );
+               if ( preg_match( '|Template Name:(.*)$|mi', $template_data, $name ) ) {
+                       return sprintf( __( '%s Page Template' ), _cleanup_header_comment( $name[1] ) );
+               }
        }
 
        return trim( basename( $file ) );
@@ -154,14 +160,23 @@ function wp_tempnam( $filename = '', $dir = '' ) {
        $temp_filename = basename( $filename );
        $temp_filename = preg_replace( '|\.[^.]*$|', '', $temp_filename );
 
-       // If the folder is falsey, use it's parent directory name instead
+       // If the folder is falsey, use its parent directory name instead.
        if ( ! $temp_filename ) {
                return wp_tempnam( dirname( $filename ), $dir );
        }
 
+       // Suffix some random data to avoid filename conflicts
+       $temp_filename .= '-' . wp_generate_password( 6, false );
        $temp_filename .= '.tmp';
        $temp_filename = $dir . wp_unique_filename( $dir, $temp_filename );
-       touch( $temp_filename );
+
+       $fp = @fopen( $temp_filename, 'x' );
+       if ( ! $fp && is_writable( $dir ) && file_exists( $temp_filename ) ) {
+               return wp_tempnam( $filename, $dir );
+       }
+       if ( $fp ) {
+               fclose( $fp );
+       }
 
        return $temp_filename;
 }
@@ -340,7 +355,9 @@ function _wp_handle_upload( &$file, $overrides, $time, $action ) {
        if ( 'wp_handle_upload' === $action ) {
                $move_new_file = @ move_uploaded_file( $file['tmp_name'], $new_file );
        } else {
-               $move_new_file = @ rename( $file['tmp_name'], $new_file );
+               // use copy and unlink because rename breaks streams.
+               $move_new_file = @ copy( $file['tmp_name'], $new_file );
+               unlink( $file['tmp_name'] );
        }
 
        if ( false === $move_new_file ) {
@@ -560,7 +577,7 @@ function unzip_file($file, $to) {
         *
         * @param bool $ziparchive Whether to use ZipArchive. Default true.
         */
-       if ( class_exists( 'ZipArchive' ) && apply_filters( 'unzip_file_use_ziparchive', true ) ) {
+       if ( class_exists( 'ZipArchive', false ) && apply_filters( 'unzip_file_use_ziparchive', true ) ) {
                $result = _unzip_file_ziparchive($file, $to, $needed_dirs);
                if ( true === $result ) {
                        return $result;
@@ -849,7 +866,7 @@ function WP_Filesystem( $args = false, $context = false, $allow_relaxed_file_own
        if ( ! $method )
                return false;
 
-       if ( ! class_exists("WP_Filesystem_$method") ) {
+       if ( ! class_exists( "WP_Filesystem_$method" ) ) {
 
                /**
                 * Filter the path for a specific filesystem method class file.
@@ -910,7 +927,7 @@ function WP_Filesystem( $args = false, $context = false, $allow_relaxed_file_own
  *
  * @since 2.5.0
  *
- * @global callback $_wp_filesystem_direct_method
+ * @global callable $_wp_filesystem_direct_method
  *
  * @param array  $args                         Optional. Connection details. Default empty array.
  * @param string $context                      Optional. Full path to the directory that is tested
@@ -996,6 +1013,8 @@ function get_filesystem_method( $args = array(), $context = false, $allow_relaxe
  *
  * @todo Properly mark optional arguments as such
  *
+ * @global string $pagenow
+ *
  * @param string $form_post    the URL to post the form to
  * @param string $type         the chosen Filesystem method in use
  * @param bool   $error        if the current request has failed to connect
@@ -1005,6 +1024,7 @@ function get_filesystem_method( $args = array(), $context = false, $allow_relaxe
  * @return bool False on failure. True on success.
  */
 function request_filesystem_credentials($form_post, $type = '', $error = false, $context = false, $extra_fields = null, $allow_relaxed_file_ownership = false ) {
+       global $pagenow;
 
        /**
         * Filter the filesystem credentials form output.
@@ -1079,7 +1099,7 @@ function request_filesystem_credentials($form_post, $type = '', $error = false,
                        $stored_credentials['hostname'] .= ':' . $stored_credentials['port'];
 
                unset($stored_credentials['password'], $stored_credentials['port'], $stored_credentials['private_key'], $stored_credentials['public_key']);
-               if ( ! defined( 'WP_INSTALLING' ) ) {
+               if ( ! wp_installing() ) {
                        update_option( 'ftp_credentials', $stored_credentials );
                }
                return $credentials;
@@ -1136,7 +1156,14 @@ jQuery(function($){
 </script>
 <form action="<?php echo esc_url( $form_post ) ?>" method="post">
 <div id="request-filesystem-credentials-form" class="request-filesystem-credentials-form">
-<h3 id="request-filesystem-credentials-title"><?php _e( 'Connection Information' ) ?></h3>
+<?php
+// Print a H1 heading in the FTP credentials modal dialog, default is a H2.
+$heading_tag = 'h2';
+if ( 'plugins.php' === $pagenow || 'plugin-install.php' === $pagenow ) {
+       $heading_tag = 'h1';
+}
+echo "<$heading_tag id='request-filesystem-credentials-title'>" . __( 'Connection Information' ) . "</$heading_tag>";
+?>
 <p id="request-filesystem-credentials-desc"><?php
        $label_user = __('Username');
        $label_pass = __('Password');
@@ -1174,7 +1201,8 @@ jQuery(function($){
        </label>
 </div>
 <?php if ( isset($types['ssh']) ) : ?>
-<h4><?php _e('Authentication Keys') ?></h4>
+<fieldset>
+<legend><?php _e( 'Authentication Keys' ); ?></legend>
 <label for="public_key">
        <span class="field-title"><?php _e('Public Key:') ?></span>
        <input name="public_key" type="text" id="public_key" aria-describedby="auth-keys-desc" value="<?php echo esc_attr($public_key) ?>"<?php disabled( defined('FTP_PUBKEY') ); ?> />
@@ -1183,10 +1211,11 @@ jQuery(function($){
        <span class="field-title"><?php _e('Private Key:') ?></span>
        <input name="private_key" type="text" id="private_key" value="<?php echo esc_attr($private_key) ?>"<?php disabled( defined('FTP_PRIKEY') ); ?> />
 </label>
+</fieldset>
 <span id="auth-keys-desc"><?php _e('Enter the location on the server where the public and private keys are located. If a passphrase is needed, enter that in the password field above.') ?></span>
 <?php endif; ?>
-<h4><?php _e('Connection Type') ?></h4>
-<fieldset><legend class="screen-reader-text"><span><?php _e('Connection Type') ?></span></legend>
+<fieldset>
+<legend><?php _e( 'Connection Type' ); ?></legend>
 <?php
        $disabled = disabled( (defined('FTP_SSL') && FTP_SSL) || (defined('FTP_SSH') && FTP_SSH), true, false );
        foreach ( $types as $name => $text ) : ?>
@@ -1232,7 +1261,7 @@ function wp_print_request_filesystem_credentials_modal() {
                <div class="notification-dialog" role="dialog" aria-labelledby="request-filesystem-credentials-title" tabindex="0">
                        <div class="request-filesystem-credentials-dialog-content">
                                <?php request_filesystem_credentials( site_url() ); ?>
-                       <div>
+                       </div>
                </div>
        </div>
        <?php
index c15562f3108ed99653947f687d6dc65b8b3cf54f..4015f30cf89106db45dd095006228e08b062c797 100644 (file)
@@ -46,7 +46,7 @@ function wp_image_editor($post_id, $msg = false) {
        <div class="imgedit-settings">
        <div class="imgedit-group">
        <div class="imgedit-group-top">
-               <h3><?php _e( 'Scale Image' ); ?> <a href="#" class="dashicons dashicons-editor-help imgedit-help-toggle" onclick="imageEdit.toggleHelp(this);return false;"></a></h3>
+               <h2><?php _e( 'Scale Image' ); ?> <a href="#" class="dashicons dashicons-editor-help imgedit-help-toggle" onclick="imageEdit.toggleHelp(this);return false;"></a></h2>
                <div class="imgedit-help">
                <p><?php _e('You can proportionally scale the original image. For best results, scaling should be done before you crop, flip, or rotate. Images can only be scaled down, not up.'); ?></p>
                </div>
@@ -65,7 +65,7 @@ function wp_image_editor($post_id, $msg = false) {
 
        <div class="imgedit-group">
        <div class="imgedit-group-top">
-               <h3><a onclick="imageEdit.toggleHelp(this);return false;" href="#"><?php _e('Restore Original Image'); ?> <span class="dashicons dashicons-arrow-down imgedit-help-toggle"></span></a></h3>
+               <h2><a onclick="imageEdit.toggleHelp(this);return false;" href="#"><?php _e('Restore Original Image'); ?> <span class="dashicons dashicons-arrow-down imgedit-help-toggle"></span></a></h2>
                <div class="imgedit-help">
                <p><?php _e('Discard any changes and restore the original image.');
 
@@ -84,7 +84,7 @@ function wp_image_editor($post_id, $msg = false) {
 
        <div class="imgedit-group">
        <div class="imgedit-group-top">
-               <h3><?php _e('Image Crop'); ?> <a href="#" class="dashicons dashicons-editor-help imgedit-help-toggle" onclick="imageEdit.toggleHelp(this);return false;"></a></h3>
+               <h2><?php _e( 'Image Crop' ); ?> <a href="#" class="dashicons dashicons-editor-help imgedit-help-toggle" onclick="imageEdit.toggleHelp(this);return false;"></a></h2>
 
                <div class="imgedit-help">
                <p><?php _e('To crop the image, click on it and drag to make your selection.'); ?></p>
@@ -122,7 +122,7 @@ function wp_image_editor($post_id, $msg = false) {
 
        <div class="imgedit-group imgedit-applyto">
        <div class="imgedit-group-top">
-               <h3><?php _e('Thumbnail Settings'); ?> <a href="#" class="dashicons dashicons-editor-help imgedit-help-toggle" onclick="imageEdit.toggleHelp(this);return false;"></a></h3>
+               <h2><?php _e( 'Thumbnail Settings' ); ?> <a href="#" class="dashicons dashicons-editor-help imgedit-help-toggle" onclick="imageEdit.toggleHelp(this);return false;"></a></h2>
                <p class="imgedit-help"><?php _e('You can edit the image while preserving the thumbnail. For example, you may wish to have a square thumbnail that displays just a section of the image.'); ?></p>
        </div>
 
@@ -184,7 +184,7 @@ function wp_image_editor($post_id, $msg = false) {
                <input type="hidden" id="imgedit-y-<?php echo $post_id; ?>" value="<?php echo isset( $meta['height'] ) ? $meta['height'] : 0; ?>" />
 
                <div id="imgedit-crop-<?php echo $post_id; ?>" class="imgedit-crop-wrap">
-               <img id="image-preview-<?php echo $post_id; ?>" onload="imageEdit.imgLoaded('<?php echo $post_id; ?>')" src="<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>?action=imgedit-preview&amp;_ajax_nonce=<?php echo $nonce; ?>&amp;postid=<?php echo $post_id; ?>&amp;rand=<?php echo rand(1, 99999); ?>" />
+               <img id="image-preview-<?php echo $post_id; ?>" onload="imageEdit.imgLoaded('<?php echo $post_id; ?>')" src="<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>?action=imgedit-preview&amp;_ajax_nonce=<?php echo $nonce; ?>&amp;postid=<?php echo $post_id; ?>&amp;rand=<?php echo rand(1, 99999); ?>" alt="<?php esc_attr_e( 'Image preview' ); ?>" />
                </div>
 
                <div class="imgedit-submit">
@@ -614,7 +614,7 @@ function wp_restore_image($post_id) {
                if ( $parts['basename'] != $data['file'] ) {
                        if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) {
 
-                               // Delete only if it's edited image.
+                               // Delete only if it's an edited image.
                                if ( preg_match('/-e[0-9]{13}\./', $parts['basename']) ) {
                                        wp_delete_file( $file );
                                }
@@ -637,7 +637,7 @@ function wp_restore_image($post_id) {
                        if ( isset($meta['sizes'][$default_size]) && $meta['sizes'][$default_size]['file'] != $data['file'] ) {
                                if ( defined('IMAGE_EDIT_OVERWRITE') && IMAGE_EDIT_OVERWRITE ) {
 
-                                       // Delete only if it's edited image
+                                       // Delete only if it's an edited image.
                                        if ( preg_match('/-e[0-9]{13}-/', $meta['sizes'][$default_size]['file']) ) {
                                                $delete_file = path_join( $parts['dirname'], $meta['sizes'][$default_size]['file'] );
                                                wp_delete_file( $delete_file );
index be023e23f9fc0a15279a71456a8e1b3046d05ee3..139d40507052d31a7c9239ec626efd97f3478635 100644 (file)
@@ -110,10 +110,12 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) {
                 * Filter the image sizes automatically generated when uploading an image.
                 *
                 * @since 2.9.0
+                * @since 4.4.0 The `$metadata` argument was addeed
                 *
-                * @param array $sizes An associative array of image sizes.
+                * @param array $sizes    An associative array of image sizes.
+                * @param array $metadata An associative array of image metadata: width, height, file.
                 */
-               $sizes = apply_filters( 'intermediate_image_sizes_advanced', $sizes );
+               $sizes = apply_filters( 'intermediate_image_sizes_advanced', $sizes, $metadata );
 
                if ( $sizes ) {
                        $editor = wp_get_image_editor( $file );
@@ -192,7 +194,9 @@ function wp_generate_attachment_metadata( $attachment_id, $file ) {
        }
 
        // Remove the blob of binary data from the array.
-       unset( $metadata['image']['data'] );
+       if ( $metadata ) {
+               unset( $metadata['image']['data'] );
+       }
 
        /**
         * Filter the generated attachment meta data.
@@ -275,8 +279,10 @@ function wp_read_image_metadata( $file ) {
                'shutter_speed' => 0,
                'title' => '',
                'orientation' => 0,
+               'keywords' => array(),
        );
 
+       $iptc = array();
        /*
         * Read IPTC first, since it might contain data not available in exif such
         * as caption, description etc.
@@ -323,6 +329,10 @@ function wp_read_image_metadata( $file ) {
 
                        if ( ! empty( $iptc['2#116'][0] ) ) // copyright
                                $meta['copyright'] = trim( $iptc['2#116'][0] );
+
+                       if ( ! empty( $iptc['2#025'][0] ) ) { // keywords array
+                               $meta['keywords'] = array_values( $iptc['2#025'] );
+                       }
                 }
        }
 
@@ -408,12 +418,14 @@ function wp_read_image_metadata( $file ) {
         * Filter the array of meta data read from an image's exif data.
         *
         * @since 2.5.0
+        * @since 4.4.0 The `$iptc` parameter was added.
         *
         * @param array  $meta            Image meta data.
         * @param string $file            Path to image file.
         * @param int    $sourceImageType Type of image.
+        * @param array  $iptc            IPTC data.
         */
-       return apply_filters( 'wp_read_image_metadata', $meta, $file, $sourceImageType );
+       return apply_filters( 'wp_read_image_metadata', $meta, $file, $sourceImageType, $iptc );
 
 }
 
index 8b6737437ad705ad3b5862962a2a2225ef8175f3..fa980e6f167b66a2e35acf6340302882a4d8d220 100644 (file)
@@ -48,7 +48,7 @@ function _usort_by_first_member( $a, $b ) {
  * @param string   $id          Importer tag. Used to uniquely identify importer.
  * @param string   $name        Importer name and title.
  * @param string   $description Importer description.
- * @param callback $callback    Callback to run.
+ * @param callable $callback    Callback to run.
  * @return WP_Error Returns WP_Error when $callback is WP_Error.
  */
 function register_importer( $id, $name, $description, $callback ) {
index 97b4077e76b3cffc92a74402eabfd9e03d215821..8120598a600079d3120710a505fb69e3e631b0d6 100644 (file)
@@ -27,7 +27,7 @@ function _get_list_table( $class, $args = array() ) {
                'WP_Terms_List_Table' => 'terms',
                'WP_Users_List_Table' => 'users',
                'WP_Comments_List_Table' => 'comments',
-               'WP_Post_Comments_List_Table' => 'comments',
+               'WP_Post_Comments_List_Table' => array( 'comments', 'post-comments' ),
                'WP_Links_List_Table' => 'links',
                'WP_Plugin_Install_List_Table' => 'plugin-install',
                'WP_Themes_List_Table' => 'themes',
@@ -110,8 +110,9 @@ class _WP_List_Table_Compat extends WP_List_Table {
                $columns = get_column_headers( $this->_screen );
                $hidden = get_hidden_columns( $this->_screen );
                $sortable = array();
+               $primary = $this->get_default_primary_column_name();
 
-               return array( $columns, $hidden, $sortable );
+               return array( $columns, $hidden, $sortable, $primary );
        }
 
        /**
index fc8ce0fe97a654d81f8495a92a68a4d6c845e989..9990b9fd1b7325608772c70487ac42ed6165bc21 100644 (file)
@@ -36,7 +36,7 @@ function media_upload_tabs() {
  *
  * @since 2.5.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param array $tabs
  * @return array $tabs with gallery if post has image attachment
@@ -65,7 +65,7 @@ function update_gallery_tab($tabs) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs the legacy media upload tabs UI.
  *
  * @since 2.5.0
  *
@@ -102,25 +102,30 @@ function the_media_upload_tabs() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves the image HTML to send to the editor.
  *
  * @since 2.5.0
  *
- * @param integer $id image attachment id
- * @param string $caption image caption
- * @param string $alt image alt attribute
- * @param string $title image title attribute
- * @param string $align image css alignment property
- * @param string $url image src url
- * @param string|bool $rel image rel attribute
- * @param string $size image size (thumbnail, medium, large, full or added  with add_image_size() )
- * @return string the html to insert into editor
+ * @param int          $id      Image attachment id.
+ * @param string       $caption Image caption.
+ * @param string       $title   Image title attribute.
+ * @param string       $align   Image CSS alignment property.
+ * @param string       $url     Optional. Image src URL. Default empty.
+ * @param string       $rel     Optional. Image rel attribute. Default empty.
+ * @param string|array $size    Optional. Image size. Accepts any valid image size, or an array of width
+ *                              and height values in pixels (in that order). Default 'medium'.
+ * @param string       $alt     Optional. Image alt attribute. Default empty.
+ * @return string The HTML output to insert into the editor.
  */
-function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel = false, $size='medium', $alt = '') {
+function get_image_send_to_editor( $id, $caption, $title, $align, $url = '', $rel = '', $size = 'medium', $alt = '' ) {
 
        $html = get_image_tag($id, $alt, '', $align, $size);
 
-       $rel = $rel ? ' rel="attachment wp-att-' . esc_attr($id).'"' : '';
+       if ( ! $rel ) {
+               $rel = ' rel="attachment wp-att-' . esc_attr( $id ) . '"';
+       } else {
+               $rel = ' rel="' . esc_attr( $rel ) . '"';
+       }
 
        if ( $url )
                $html = '<a href="' . esc_attr($url) . "\"$rel>$html</a>";
@@ -130,14 +135,15 @@ function get_image_send_to_editor($id, $caption, $title, $align, $url='', $rel =
         *
         * @since 2.5.0
         *
-        * @param string $html    The image HTML markup to send.
-        * @param int    $id      The attachment id.
-        * @param string $caption The image caption.
-        * @param string $title   The image title.
-        * @param string $align   The image alignment.
-        * @param string $url     The image source URL.
-        * @param string $size    The image size.
-        * @param string $alt     The image alternative, or alt, text.
+        * @param string       $html    The image HTML markup to send.
+        * @param int          $id      The attachment id.
+        * @param string       $caption The image caption.
+        * @param string       $title   The image title.
+        * @param string       $align   The image alignment.
+        * @param string       $url     The image source URL.
+        * @param string|array $size    Size of image. Image size or array of width and height values
+        *                              (in that order). Default 'medium'.
+        * @param string       $alt     The image alternative, or alt, text.
         */
        $html = apply_filters( 'image_send_to_editor', $html, $id, $caption, $title, $align, $url, $size, $alt );
 
@@ -242,7 +248,7 @@ function media_send_to_editor($html) {
 ?>
 <script type="text/javascript">
 var win = window.dialogArguments || opener || parent || top;
-win.send_to_editor('<?php echo addslashes($html); ?>');
+win.send_to_editor( <?php echo wp_json_encode( $html ); ?> );
 </script>
 <?php
        exit;
@@ -613,7 +619,7 @@ function get_upload_iframe_src( $type = null, $post_id = null, $tab = null ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Handles form submissions for the legacy media uploader.
  *
  * @since 2.5.0
  *
@@ -656,8 +662,8 @@ function media_upload_form_handler() {
                 *
                 * @see wp_get_attachment_metadata()
                 *
-                * @param WP_Post $post       The WP_Post object.
-                * @param array   $attachment An array of attachment metadata.
+                * @param array $post       An array of post data.
+                * @param array $attachment An array of attachment metadata.
                 */
                $post = apply_filters( 'attachment_fields_to_save', $post, $attachment );
 
@@ -724,7 +730,7 @@ function media_upload_form_handler() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Handles the process of uploading media.
  *
  * @since 2.5.0
  *
@@ -805,7 +811,9 @@ function wp_media_upload_handler() {
 
        if ( isset( $_POST['save'] ) ) {
                $errors['upload_notice'] = __('Saved.');
-               return media_upload_gallery();
+               wp_enqueue_script( 'admin-gallery' );
+               return wp_iframe( 'media_upload_gallery_form', $errors );
+
        } elseif ( ! empty( $_POST ) ) {
                $return = media_upload_form_handler();
 
@@ -842,6 +850,10 @@ function media_sideload_image( $file, $post_id, $desc = null, $return = 'html' )
 
                // Set variables for storage, fix file filename for query strings.
                preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $file, $matches );
+               if ( ! $matches ) {
+                       return new WP_Error( 'image_sideload_failed', __( 'Invalid image URL' ) );
+               }
+
                $file_array = array();
                $file_array['name'] = basename( $matches[0] );
 
@@ -880,7 +892,7 @@ function media_sideload_image( $file, $post_id, $desc = null, $return = 'html' )
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves the legacy media uploader form in an iframe.
  *
  * @since 2.5.0
  *
@@ -903,7 +915,7 @@ function media_upload_gallery() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves the legacy media library form in an iframe.
  *
  * @since 2.5.0
  *
@@ -1072,7 +1084,7 @@ function wp_caption_input_textarea($edit_post) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves the image attachment fields to edit form fields.
  *
  * @since 2.5.0
  *
@@ -1085,7 +1097,7 @@ function image_attachment_fields_to_edit($form_fields, $post) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves the single non-image attachment fields to edit form fields.
  *
  * @since 2.5.0
  *
@@ -1099,7 +1111,7 @@ function media_single_attachment_fields_to_edit( $form_fields, $post ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves the post non-image attachment fields to edito form fields.
  *
  * @since 2.8.0
  *
@@ -1138,7 +1150,7 @@ function image_attachment_fields_to_save( $post, $attachment ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves the media element HTML to send to the editor.
  *
  * @since 2.5.0
  *
@@ -1163,7 +1175,7 @@ function image_media_send_to_editor($html, $attachment_id, $attachment) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves the attachment fields to edit form fields.
  *
  * @since 2.5.0
  *
@@ -1239,7 +1251,7 @@ function get_attachment_fields_to_edit($post, $errors = null) {
        }
 
        // Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default
-       // The recursive merge is easily traversed with array casting: foreach( (array) $things as $thing )
+       // The recursive merge is easily traversed with array casting: foreach ( (array) $things as $thing )
        $form_fields = array_merge_recursive($form_fields, (array) $errors);
 
        // This was formerly in image_attachment_fields_to_edit().
@@ -1366,7 +1378,8 @@ function get_media_item( $attachment_id, $args = null ) {
        $toggle_on  = __( 'Show' );
        $toggle_off = __( 'Hide' );
 
-       $filename = esc_html( wp_basename( $post->guid ) );
+       $file = get_attached_file( $post->ID );
+       $filename = esc_html( wp_basename( $file ) );
        $title = esc_attr( $post->post_title );
 
        $post_mime_types = get_post_mime_types();
@@ -1471,7 +1484,9 @@ function get_media_item( $attachment_id, $args = null ) {
                        $delete = "<a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-post_' . $attachment_id ) . "' id='del[$attachment_id]' class='delete-permanently'>" . __( 'Delete Permanently' ) . '</a>';
                } elseif ( !MEDIA_TRASH ) {
                        $delete = "<a href='#' class='del-link' onclick=\"document.getElementById('del_attachment_$attachment_id').style.display='block';return false;\">" . __( 'Delete' ) . "</a>
-                        <div id='del_attachment_$attachment_id' class='del-attachment' style='display:none;'><p>" . sprintf( __( 'You are about to delete <strong>%s</strong>.' ), $filename ) . "</p>
+                        <div id='del_attachment_$attachment_id' class='del-attachment' style='display:none;'>" .
+                        /* translators: %s: file name */
+                       '<p>' . sprintf( __( 'You are about to delete %s.' ), '<strong>' . $filename . '</strong>' ) . "</p>
                         <a href='" . wp_nonce_url( "post.php?action=delete&amp;post=$attachment_id", 'delete-post_' . $attachment_id ) . "' id='del[$attachment_id]' class='button'>" . __( 'Continue' ) . "</a>
                         <a href='#' class='button' onclick=\"this.parentNode.style.display='none';return false;\">" . __( 'Cancel' ) . "</a>
                         </div>";
@@ -1627,7 +1642,7 @@ function get_compat_media_markup( $attachment_id, $args = null ) {
        }
 
        // Merge default fields with their errors, so any key passed with the error (e.g. 'error', 'helps', 'value') will replace the default
-       // The recursive merge is easily traversed with array casting: foreach( (array) $things as $thing )
+       // The recursive merge is easily traversed with array casting: foreach ( (array) $things as $thing )
        $form_fields = array_merge_recursive($form_fields, (array) $args['errors'] );
 
        /** This filter is documented in wp-admin/includes/media.php */
@@ -1734,7 +1749,7 @@ function get_compat_media_markup( $attachment_id, $args = null ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs the legacy media upload header.
  *
  * @since 2.5.0
  */
@@ -1750,7 +1765,7 @@ function media_upload_header() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs the legacy media upload form.
  *
  * @since 2.5.0
  *
@@ -1914,7 +1929,7 @@ do_action( 'post-plupload-upload-ui' ); ?>
        <p id="async-upload-wrap">
                <label class="screen-reader-text" for="async-upload"><?php _e('Upload'); ?></label>
                <input type="file" name="async-upload" id="async-upload" />
-               <?php submit_button( __( 'Upload' ), 'button', 'html-upload', false ); ?>
+               <?php submit_button( __( 'Upload' ), 'primary', 'html-upload', false ); ?>
                <a href="#" onclick="try{top.tb_remove();}catch(e){}; return false;"><?php _e('Cancel'); ?></a>
        </p>
        <div class="clear"></div>
@@ -1942,7 +1957,7 @@ do_action( 'post-html-upload-ui' );
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs the legacy media upload form for a given media type.
  *
  * @since 2.5.0
  *
@@ -2012,7 +2027,7 @@ if ( $id ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs the legacy media upload form for external media.
  *
  * @since 2.7.0
  *
@@ -2303,7 +2318,7 @@ jQuery(function($){
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs the legacy media upload form for the media library.
  *
  * @since 2.5.0
  *
@@ -2763,7 +2778,7 @@ function edit_form_image_editor( $post ) {
                );
        ?>
 
-       <label for="content"><strong><?php _e( 'Description' ); ?></strong><?php
+       <label for="attachment_content"><strong><?php _e( 'Description' ); ?></strong><?php
        if ( preg_match( '#^(audio|video)/#', $post->post_mime_type ) ) {
                echo ': ' . __( 'Displayed on attachment pages.' );
        } ?></label>
@@ -2784,7 +2799,8 @@ function edit_form_image_editor( $post ) {
 function attachment_submitbox_metadata() {
        $post = get_post();
 
-       $filename = esc_html( wp_basename( $post->guid ) );
+       $file = get_attached_file( $post->ID );
+       $filename = esc_html( wp_basename( $file ) );
 
        $media_dims = '';
        $meta = wp_get_attachment_metadata( $post->ID );
@@ -2796,8 +2812,8 @@ function attachment_submitbox_metadata() {
        $att_url = wp_get_attachment_url( $post->ID );
 ?>
        <div class="misc-pub-section misc-pub-attachment">
-                       <label for="attachment_url"><?php _e( 'File URL:' ); ?></label>
-                       <input type="text" class="widefat urlfield" readonly="readonly" name="attachment_url" value="<?php echo esc_attr($att_url); ?>" />
+               <label for="attachment_url"><?php _e( 'File URL:' ); ?></label>
+               <input type="text" class="widefat urlfield" readonly="readonly" name="attachment_url" id="attachment_url" value="<?php echo esc_attr( $att_url ); ?>" />
        </div>
        <div class="misc-pub-section misc-pub-filename">
                <?php _e( 'File name:' ); ?> <strong><?php echo $filename; ?></strong>
@@ -2819,7 +2835,6 @@ function attachment_submitbox_metadata() {
        </div>
 
        <?php
-               $file  = get_attached_file( $post->ID );
                $file_size = false;
 
                if ( isset( $meta['filesize'] ) )
@@ -2963,13 +2978,19 @@ function wp_add_id3_tag_data( &$metadata, $data ) {
  * @return array|bool Returns array of metadata, if found.
  */
 function wp_read_video_metadata( $file ) {
-       if ( ! file_exists( $file ) )
+       if ( ! file_exists( $file ) ) {
                return false;
+       }
 
        $metadata = array();
 
-       if ( ! class_exists( 'getID3' ) )
+       if ( ! defined( 'GETID3_TEMP_DIR' ) ) {
+               define( 'GETID3_TEMP_DIR', get_temp_dir() );
+       }
+
+       if ( ! class_exists( 'getID3', false ) ) {
                require( ABSPATH . WPINC . '/ID3/getid3.php' );
+       }
        $id3 = new getID3();
        $data = $id3->analyze( $file );
 
@@ -3019,12 +3040,18 @@ function wp_read_video_metadata( $file ) {
  * @return array|bool Returns array of metadata, if found.
  */
 function wp_read_audio_metadata( $file ) {
-       if ( ! file_exists( $file ) )
+       if ( ! file_exists( $file ) ) {
                return false;
+       }
        $metadata = array();
 
-       if ( ! class_exists( 'getID3' ) )
+       if ( ! defined( 'GETID3_TEMP_DIR' ) ) {
+               define( 'GETID3_TEMP_DIR', get_temp_dir() );
+       }
+
+       if ( ! class_exists( 'getID3', false ) ) {
                require( ABSPATH . WPINC . '/ID3/getid3.php' );
+       }
        $id3 = new getID3();
        $data = $id3->analyze( $file );
 
index accc04b1b0b46d59857b9ee7677a1cc930e00562..74804022b7034b607256046e6fed685e356e193c 100644 (file)
@@ -178,22 +178,6 @@ foreach ( $menu as $id => $data ) {
 }
 unset($id, $data, $subs, $first_sub);
 
-// Remove any duplicated separators
-$separator_found = false;
-foreach ( $menu as $id => $data ) {
-       if ( 0 == strcmp('wp-menu-separator', $data[4] ) ) {
-               if ( ! $separator_found ) {
-                       $separator_found = true;
-               } else {
-                       unset($menu[$id]);
-                       $separator_found = false;
-               }
-       } else {
-               $separator_found = false;
-       }
-}
-unset($id, $data);
-
 /**
  *
  * @param string $add
@@ -259,7 +243,7 @@ uksort($menu, "strnatcasecmp"); // make it all pretty
 /**
  * Filter whether to enable custom ordering of the administration menu.
  *
- * See the 'menu_order' filter for reordering menu items.
+ * See the {@see 'menu_order'} filter for reordering menu items.
  *
  * @since 2.8.0
  *
@@ -276,7 +260,7 @@ if ( apply_filters( 'custom_menu_order', false ) ) {
        /**
         * Filter the order of administration menu items.
         *
-        * A truthy value must first be passed to the 'custom_menu_order' filter
+        * A truthy value must first be passed to the {@see 'custom_menu_order'} filter
         * for this filter to work. Use the following to enable custom menu ordering:
         *
         *     add_filter( 'custom_menu_order', '__return_true' );
@@ -319,6 +303,26 @@ if ( apply_filters( 'custom_menu_order', false ) ) {
        unset($menu_order, $default_menu_order);
 }
 
+// Prevent adjacent separators
+$prev_menu_was_separator = false;
+foreach ( $menu as $id => $data ) {
+       if ( false === stristr( $data[4], 'wp-menu-separator' ) ) {
+
+               // This item is not a separator, so falsey the toggler and do nothing
+               $prev_menu_was_separator = false;
+       } else {
+
+               // The previous item was a separator, so unset this one
+               if ( true === $prev_menu_was_separator ) {
+                       unset( $menu[ $id ] );
+               }
+
+               // This item is a separator, so truthy the toggler and move on
+               $prev_menu_was_separator = true;
+       }
+}
+unset( $id, $data, $prev_menu_was_separator );
+
 // Remove the last menu item if it is a separator.
 $last_menu_key = array_keys( $menu );
 $last_menu_key = array_pop( $last_menu_key );
index a7a895a1947c5447a007a74d9d8bace112ca8da1..1627b1f577962a65e018615d7b3c01d09e74cd8b 100644 (file)
@@ -3,15 +3,23 @@
 // -- Post related Meta Boxes
 
 /**
- * Display post submit form fields.
+ * Displays post submit form fields.
  *
  * @since 2.7.0
  *
  * @global string $action
  *
- * @param object $post
+ * @param WP_Post  $post Current post object.
+ * @param array    $args {
+ *     Array of arguments for building the post submit meta box.
+ *
+ *     @type string   $id       Meta box ID.
+ *     @type string   $title    Meta box title.
+ *     @type callable $callback Meta box display callback.
+ *     @type array    $args     Extra meta box arguments.
+ * }
  */
-function post_submit_meta_box($post, $args = array() ) {
+function post_submit_meta_box( $post, $args = array() ) {
        global $action;
 
        $post_type = $post->post_type;
@@ -31,30 +39,19 @@ function post_submit_meta_box($post, $args = array() ) {
 <div id="save-action">
 <?php if ( 'publish' != $post->post_status && 'future' != $post->post_status && 'pending' != $post->post_status ) { ?>
 <input <?php if ( 'private' == $post->post_status ) { ?>style="display:none"<?php } ?> type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save Draft'); ?>" class="button" />
+<span class="spinner"></span>
 <?php } elseif ( 'pending' == $post->post_status && $can_publish ) { ?>
 <input type="submit" name="save" id="save-post" value="<?php esc_attr_e('Save as Pending'); ?>" class="button" />
-<?php } ?>
 <span class="spinner"></span>
+<?php } ?>
 </div>
-<?php if ( $post_type_object->public ) : ?>
+<?php if ( is_post_type_viewable( $post_type_object ) ) : ?>
 <div id="preview-action">
 <?php
+$preview_link = esc_url( get_preview_post_link( $post ) );
 if ( 'publish' == $post->post_status ) {
-       $preview_link = esc_url( get_permalink( $post->ID ) );
        $preview_button = __( 'Preview Changes' );
 } else {
-       $preview_link = set_url_scheme( get_permalink( $post->ID ) );
-
-       /**
-        * Filter the URI of a post preview in the post submit box.
-        *
-        * @since 2.0.5
-        * @since 4.0.0 $post parameter was added.
-        *
-        * @param string  $preview_link URI the user will be directed to for a post preview.
-        * @param WP_Post $post         Post object.
-        */
-       $preview_link = esc_url( apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post ) );
        $preview_button = __( 'Preview' );
 }
 ?>
@@ -62,6 +59,16 @@ if ( 'publish' == $post->post_status ) {
 <input type="hidden" name="wp-preview" id="wp-preview" value="" />
 </div>
 <?php endif; // public post type ?>
+<?php
+/**
+ * Fires before the post time/date setting in the Publish meta box.
+ *
+ * @since 4.4.0
+ *
+ * @param WP_Post $post WP_Post object for the current post.
+ */
+do_action( 'post_submitbox_minor_actions', $post );
+?>
 <div class="clear"></div>
 </div><!-- #minor-publishing-actions -->
 
@@ -218,8 +225,11 @@ if ( $can_publish ) : // Contributors don't get to choose the date of publish ?>
  * Fires after the post time/date setting in the Publish meta box.
  *
  * @since 2.9.0
+ * @since 4.4.0 Added the `$post` parameter.
+ *
+ * @param WP_Post $post WP_Post object for the current post.
  */
-do_action( 'post_submitbox_misc_actions' );
+do_action( 'post_submitbox_misc_actions', $post );
 ?>
 </div>
 <div class="clear"></div>
@@ -356,7 +366,7 @@ function attachment_submit_meta_box( $post ) {
  *
  *     @type string   $id       Meta box ID.
  *     @type string   $title    Meta box title.
- *     @type callback $callback Meta box display callback.
+ *     @type callable $callback Meta box display callback.
  *     @type array    $args     Extra meta box arguments.
  * }
  */
@@ -397,7 +407,7 @@ function post_format_meta_box( $post, $box ) {
  *
  *     @type string   $id       Meta box ID.
  *     @type string   $title    Meta box title.
- *     @type callback $callback Meta box display callback.
+ *     @type callable $callback Meta box display callback.
  *     @type array    $args {
  *         Extra meta box arguments.
  *
@@ -417,19 +427,24 @@ function post_tags_meta_box( $post, $box ) {
        $taxonomy = get_taxonomy( $r['taxonomy'] );
        $user_can_assign_terms = current_user_can( $taxonomy->cap->assign_terms );
        $comma = _x( ',', 'tag delimiter' );
+       $terms_to_edit = get_terms_to_edit( $post->ID, $tax_name );
+       if ( ! is_string( $terms_to_edit ) ) {
+               $terms_to_edit = '';
+       }
 ?>
 <div class="tagsdiv" id="<?php echo $tax_name; ?>">
        <div class="jaxtag">
        <div class="nojs-tags hide-if-js">
-       <p><?php echo $taxonomy->labels->add_or_remove_items; ?></p>
-       <textarea name="<?php echo "tax_input[$tax_name]"; ?>" rows="3" cols="20" class="the-tags" id="tax-input-<?php echo $tax_name; ?>" <?php disabled( ! $user_can_assign_terms ); ?>><?php echo str_replace( ',', $comma . ' ', get_terms_to_edit( $post->ID, $tax_name ) ); // textarea_escaped by esc_attr() ?></textarea></div>
+               <label for="tax-input-<?php echo $tax_name; ?>"><?php echo $taxonomy->labels->add_or_remove_items; ?></label>
+               <p><textarea name="<?php echo "tax_input[$tax_name]"; ?>" rows="3" cols="20" class="the-tags" id="tax-input-<?php echo $tax_name; ?>" <?php disabled( ! $user_can_assign_terms ); ?> aria-describedby="new-tag-<?php echo $tax_name; ?>-desc"><?php echo str_replace( ',', $comma . ' ', $terms_to_edit ); // textarea_escaped by esc_attr() ?></textarea></p>
+       </div>
        <?php if ( $user_can_assign_terms ) : ?>
        <div class="ajaxtag hide-if-no-js">
-               <label class="screen-reader-text" for="new-tag-<?php echo $tax_name; ?>"><?php echo $box['title']; ?></label>
-               <p><input type="text" id="new-tag-<?php echo $tax_name; ?>" name="newtag[<?php echo $tax_name; ?>]" class="newtag form-input-tip" size="16" autocomplete="off" value="" />
+               <label class="screen-reader-text" for="new-tag-<?php echo $tax_name; ?>"><?php echo $taxonomy->labels->add_new_item; ?></label>
+               <p><input type="text" id="new-tag-<?php echo $tax_name; ?>" name="newtag[<?php echo $tax_name; ?>]" class="newtag form-input-tip" size="16" autocomplete="off" aria-describedby="new-tag-<?php echo $tax_name; ?>-desc" value="" />
                <input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" /></p>
        </div>
-       <p class="howto"><?php echo $taxonomy->labels->separate_items_with_commas; ?></p>
+       <p class="howto" id="new-tag-<?php echo $tax_name; ?>-desc"><?php echo $taxonomy->labels->separate_items_with_commas; ?></p>
        <?php endif; ?>
        </div>
        <div class="tagchecklist"></div>
@@ -453,7 +468,7 @@ function post_tags_meta_box( $post, $box ) {
  *
  *     @type string   $id       Meta box ID.
  *     @type string   $title    Meta box title.
- *     @type callback $callback Meta box display callback.
+ *     @type callable $callback Meta box display callback.
  *     @type array    $args {
  *         Extra meta box arguments.
  *
@@ -486,30 +501,65 @@ function post_categories_meta_box( $post, $box ) {
 
                <div id="<?php echo $tax_name; ?>-all" class="tabs-panel">
                        <?php
-            $name = ( $tax_name == 'category' ) ? 'post_category' : 'tax_input[' . $tax_name . ']';
-            echo "<input type='hidden' name='{$name}[]' value='0' />"; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks.
-            ?>
+                       $name = ( $tax_name == 'category' ) ? 'post_category' : 'tax_input[' . $tax_name . ']';
+                       echo "<input type='hidden' name='{$name}[]' value='0' />"; // Allows for an empty term set to be sent. 0 is an invalid Term ID and will be ignored by empty() checks.
+                       ?>
                        <ul id="<?php echo $tax_name; ?>checklist" data-wp-lists="list:<?php echo $tax_name; ?>" class="categorychecklist form-no-clear">
                                <?php wp_terms_checklist( $post->ID, array( 'taxonomy' => $tax_name, 'popular_cats' => $popular_ids ) ); ?>
                        </ul>
                </div>
        <?php if ( current_user_can( $taxonomy->cap->edit_terms ) ) : ?>
                        <div id="<?php echo $tax_name; ?>-adder" class="wp-hidden-children">
-                               <h4>
-                                       <a id="<?php echo $tax_name; ?>-add-toggle" href="#<?php echo $tax_name; ?>-add" class="hide-if-no-js">
-                                               <?php
-                                                       /* translators: %s: add new taxonomy label */
-                                                       printf( __( '+ %s' ), $taxonomy->labels->add_new_item );
-                                               ?>
-                                       </a>
-                               </h4>
+                               <a id="<?php echo $tax_name; ?>-add-toggle" href="#<?php echo $tax_name; ?>-add" class="hide-if-no-js taxonomy-add-new">
+                                       <?php
+                                               /* translators: %s: add new taxonomy label */
+                                               printf( __( '+ %s' ), $taxonomy->labels->add_new_item );
+                                       ?>
+                               </a>
                                <p id="<?php echo $tax_name; ?>-add" class="category-add wp-hidden-child">
                                        <label class="screen-reader-text" for="new<?php echo $tax_name; ?>"><?php echo $taxonomy->labels->add_new_item; ?></label>
                                        <input type="text" name="new<?php echo $tax_name; ?>" id="new<?php echo $tax_name; ?>" class="form-required form-input-tip" value="<?php echo esc_attr( $taxonomy->labels->new_item_name ); ?>" aria-required="true"/>
                                        <label class="screen-reader-text" for="new<?php echo $tax_name; ?>_parent">
                                                <?php echo $taxonomy->labels->parent_item_colon; ?>
                                        </label>
-                                       <?php wp_dropdown_categories( array( 'taxonomy' => $tax_name, 'hide_empty' => 0, 'name' => 'new' . $tax_name . '_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $taxonomy->labels->parent_item . ' &mdash;' ) ); ?>
+                                       <?php
+                                       $parent_dropdown_args = array(
+                                               'taxonomy'         => $tax_name,
+                                               'hide_empty'       => 0,
+                                               'name'             => 'new' . $tax_name . '_parent',
+                                               'orderby'          => 'name',
+                                               'hierarchical'     => 1,
+                                               'show_option_none' => '&mdash; ' . $taxonomy->labels->parent_item . ' &mdash;',
+                                       );
+
+                                       /**
+                                        * Filter the arguments for the taxonomy parent dropdown on the Post Edit page.
+                                        *
+                                        * @since 4.4.0
+                                        *
+                                        * @param array $parent_dropdown_args {
+                                        *     Optional. Array of arguments to generate parent dropdown.
+                                        *
+                                        *     @type string   $taxonomy         Name of the taxonomy to retrieve.
+                                        *     @type bool     $hide_if_empty    True to skip generating markup if no
+                                        *                                      categories are found. Default 0.
+                                        *     @type string   $name             Value for the 'name' attribute
+                                        *                                      of the select element.
+                                        *                                      Default "new{$tax_name}_parent".
+                                        *     @type string   $orderby          Which column to use for ordering
+                                        *                                      terms. Default 'name'.
+                                        *     @type bool|int $hierarchical     Whether to traverse the taxonomy
+                                        *                                      hierarchy. Default 1.
+                                        *     @type string   $show_option_none Text to display for the "none" option.
+                                        *                                      Default "&mdash; {$parent} &mdash;",
+                                        *                                      where `$parent` is 'parent_item'
+                                        *                                      taxonomy label.
+                                        * }
+                                        */
+                                       $parent_dropdown_args = apply_filters( 'post_edit_category_parent_dropdown_args', $parent_dropdown_args );
+
+                                       wp_dropdown_categories( $parent_dropdown_args );
+                                       ?>
                                        <input type="button" id="<?php echo $tax_name; ?>-add-submit" data-wp-lists="add:<?php echo $tax_name; ?>checklist:<?php echo $tax_name; ?>-add" class="button category-add-submit" value="<?php echo esc_attr( $taxonomy->labels->add_new_item ); ?>" />
                                        <?php wp_nonce_field( 'add-' . $tax_name, '_ajax_nonce-add-' . $tax_name, false ); ?>
                                        <span id="<?php echo $tax_name; ?>-ajax-response"></span>
@@ -652,7 +702,7 @@ function post_comment_meta_box( $post ) {
                }
 
                ?>
-               <p class="hide-if-no-js" id="show-comments"><a href="#commentstatusdiv" onclick="commentsBox.get(<?php echo $total; ?>);return false;"><?php _e('Show comments'); ?></a> <span class="spinner"></span></p>
+               <p class="hide-if-no-js" id="show-comments"><a href="#commentstatusdiv" onclick="commentsBox.load(<?php echo $total; ?>);return false;"><?php _e('Show comments'); ?></a> <span class="spinner"></span></p>
                <?php
        }
 
@@ -668,8 +718,9 @@ function post_comment_meta_box( $post ) {
  */
 function post_slug_meta_box($post) {
 /** This filter is documented in wp-admin/edit-tag-form.php */
+$editable_slug = apply_filters( 'editable_slug', $post->post_name, $post );
 ?>
-<label class="screen-reader-text" for="post_name"><?php _e('Slug') ?></label><input name="post_name" type="text" size="13" id="post_name" value="<?php echo esc_attr( apply_filters( 'editable_slug', $post->post_name ) ); ?>" />
+<label class="screen-reader-text" for="post_name"><?php _e('Slug') ?></label><input name="post_name" type="text" size="13" id="post_name" value="<?php echo esc_attr( $editable_slug ); ?>" />
 <?php
 }
 
@@ -751,7 +802,18 @@ function page_attributes_meta_box($post) {
        if ( 'page' == $post->post_type && 0 != count( get_page_templates( $post ) ) && get_option( 'page_for_posts' ) != $post->ID ) {
                $template = !empty($post->page_template) ? $post->page_template : false;
                ?>
-<p><strong><?php _e('Template') ?></strong></p>
+<p><strong><?php _e('Template') ?></strong><?php
+       /**
+        * Fires immediately after the heading inside the 'Template' section
+        * of the 'Page Attributes' meta box.
+        *
+        * @since 4.4.0
+        *
+        * @param string  $template The template used for the current post.
+        * @param WP_Post $post     The current post.
+        */
+       do_action( 'page_attributes_meta_box_template', $template, $post );
+?></p>
 <label class="screen-reader-text" for="page_template"><?php _e('Page Template') ?></label><select name="page_template" id="page_template">
 <?php
 /**
@@ -882,7 +944,7 @@ function link_categories_meta_box($link) {
        </div>
 
        <div id="category-adder" class="wp-hidden-children">
-               <h4><a id="category-add-toggle" href="#category-add"><?php _e( '+ Add New Category' ); ?></a></h4>
+               <a id="category-add-toggle" href="#category-add" class="taxonomy-add-new"><?php _e( '+ Add New Category' ); ?></a>
                <p id="link-category-add" class="wp-hidden-child">
                        <label class="screen-reader-text" for="newcat"><?php _e( '+ Add New Category' ); ?></label>
                        <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php esc_attr_e( 'New category name' ); ?>" aria-required="true" />
index 3b6f0504162da8fbfc4ad75b561aa485c35afbc4..d3d2d34279290c5c1bf76d40b4932c85dc00b0ec 100644 (file)
@@ -56,7 +56,7 @@ function got_url_rewrite() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Extracts strings from between the BEGIN and END markers in the .htaccess file.
  *
  * @since 1.5.0
  *
@@ -88,64 +88,99 @@ function extract_from_markers( $filename, $marker ) {
 }
 
 /**
- * {@internal Missing Short Description}}
- *
  * Inserts an array of strings into a file (.htaccess ), placing it between
- * BEGIN and END markers. Replaces existing marked info. Retains surrounding
+ * BEGIN and END markers.
+ *
+ * Replaces existing marked info. Retains surrounding
  * data. Creates file if none exists.
  *
  * @since 1.5.0
  *
- * @param string $filename
- * @param string $marker
- * @param array  $insertion
+ * @param string       $filename  Filename to alter.
+ * @param string       $marker    The marker to alter.
+ * @param array|string $insertion The new content to insert.
  * @return bool True on write success, false on failure.
  */
 function insert_with_markers( $filename, $marker, $insertion ) {
-       if (!file_exists( $filename ) || is_writeable( $filename ) ) {
-               if (!file_exists( $filename ) ) {
-                       $markerdata = '';
-               } else {
-                       $markerdata = explode( "\n", implode( '', file( $filename ) ) );
+       if ( ! file_exists( $filename ) ) {
+               if ( ! is_writable( dirname( $filename ) ) ) {
+                       return false;
                }
-
-               if ( !$f = @fopen( $filename, 'w' ) )
+               if ( ! touch( $filename ) ) {
                        return false;
+               }
+       } elseif ( ! is_writeable( $filename ) ) {
+               return false;
+       }
 
-               $foundit = false;
-               if ( $markerdata ) {
-                       $state = true;
-                       foreach ( $markerdata as $n => $markerline ) {
-                               if (strpos($markerline, '# BEGIN ' . $marker) !== false)
-                                       $state = false;
-                               if ( $state ) {
-                                       if ( $n + 1 < count( $markerdata ) )
-                                               fwrite( $f, "{$markerline}\n" );
-                                       else
-                                               fwrite( $f, "{$markerline}" );
-                               }
-                               if (strpos($markerline, '# END ' . $marker) !== false) {
-                                       fwrite( $f, "# BEGIN {$marker}\n" );
-                                       if ( is_array( $insertion ))
-                                               foreach ( $insertion as $insertline )
-                                                       fwrite( $f, "{$insertline}\n" );
-                                       fwrite( $f, "# END {$marker}\n" );
-                                       $state = true;
-                                       $foundit = true;
-                               }
-                       }
+       if ( ! is_array( $insertion ) ) {
+               $insertion = explode( "\n", $insertion );
+       }
+
+       $start_marker = "# BEGIN {$marker}";
+       $end_marker   = "# END {$marker}";
+
+       $fp = fopen( $filename, 'r+' );
+       if ( ! $fp ) {
+               return false;
+       }
+
+       // Attempt to get a lock. If the filesystem supports locking, this will block until the lock is acquired.
+       flock( $fp, LOCK_EX );
+
+       $lines = array();
+       while ( ! feof( $fp ) ) {
+               $lines[] = rtrim( fgets( $fp ), "\r\n" );
+       }
+
+       // Split out the existing file into the preceeding lines, and those that appear after the marker
+       $pre_lines = $post_lines = $existing_lines = array();
+       $found_marker = $found_end_marker = false;
+       foreach ( $lines as $line ) {
+               if ( ! $found_marker && false !== strpos( $line, $start_marker ) ) {
+                       $found_marker = true;
+                       continue;
+               } elseif ( ! $found_end_marker && false !== strpos( $line, $end_marker ) ) {
+                       $found_end_marker = true;
+                       continue;
                }
-               if (!$foundit) {
-                       fwrite( $f, "\n# BEGIN {$marker}\n" );
-                       foreach ( $insertion as $insertline )
-                               fwrite( $f, "{$insertline}\n" );
-                       fwrite( $f, "# END {$marker}\n" );
+               if ( ! $found_marker ) {
+                       $pre_lines[] = $line;
+               } elseif ( $found_marker && $found_end_marker ) {
+                       $post_lines[] = $line;
+               } else {
+                       $existing_lines[] = $line;
                }
-               fclose( $f );
+       }
+
+       // Check to see if there was a change
+       if ( $existing_lines === $insertion ) {
+               flock( $fp, LOCK_UN );
+               fclose( $fp );
+
                return true;
-       } else {
-               return false;
        }
+
+       // Generate the new file data
+       $new_file_data = implode( "\n", array_merge(
+               $pre_lines,
+               array( $start_marker ),
+               $insertion,
+               array( $end_marker ),
+               $post_lines
+       ) );
+
+       // Write to the start of the file, and truncate it to that length
+       fseek( $fp, 0 );
+       $bytes = fwrite( $fp, $new_file_data );
+       if ( $bytes ) {
+               ftruncate( $fp, ftell( $fp ) );
+       }
+       fflush( $fp );
+       flock( $fp, LOCK_UN );
+       fclose( $fp );
+
+       return (bool) $bytes;
 }
 
 /**
@@ -213,7 +248,7 @@ function iis7_save_url_rewrite_rules(){
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Update the "recently-edited" file for the plugin or theme editor.
  *
  * @since 1.5.0
  *
@@ -235,7 +270,7 @@ function update_recently_edited( $file ) {
 }
 
 /**
- * If siteurl, home or page_on_front changed, flush rewrite rules.
+ * Flushes rewrite rules if siteurl, home or page_on_front changed.
  *
  * @since 2.1.0
  *
@@ -243,28 +278,16 @@ function update_recently_edited( $file ) {
  * @param string $value
  */
 function update_home_siteurl( $old_value, $value ) {
-       if ( defined( "WP_INSTALLING" ) )
+       if ( wp_installing() )
                return;
 
-       // If home changed, write rewrite rules to new location.
-       flush_rewrite_rules();
+       if ( is_multisite() && ms_is_switched() ) {
+               delete_option( 'rewrite_rules' );
+       } else {
+               flush_rewrite_rules();
+       }
 }
 
-/**
- * Shorten an URL, to be used as link text
- *
- * @since 1.2.0
- *
- * @param string $url
- * @return string
- */
-function url_shorten( $url ) {
-       $short_url = str_replace( array( 'http://', 'www.' ), '', $url );
-       $short_url = untrailingslashit( $short_url );
-       if ( strlen( $short_url ) > 35 )
-               $short_url = substr( $short_url, 0, 32 ) . '&hellip;';
-       return $short_url;
-}
 
 /**
  * Resets global variables based on $_GET and $_POST
@@ -292,7 +315,7 @@ function wp_reset_vars( $vars ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Displays the given administration message.
  *
  * @since 2.1.0
  *
@@ -438,7 +461,13 @@ function set_screen_options() {
                }
 
                update_user_meta($user->ID, $option, $value);
-               wp_safe_redirect( remove_query_arg( array('pagenum', 'apage', 'paged'), wp_get_referer() ) );
+
+               $url = remove_query_arg( array( 'pagenum', 'apage', 'paged' ), wp_get_referer() );
+               if ( isset( $_POST['mode'] ) ) {
+                       $url = add_query_arg( array( 'mode' => $_POST['mode'] ), $url );
+               }
+
+               wp_safe_redirect( $url );
                exit;
        }
 }
@@ -454,8 +483,9 @@ function set_screen_options() {
 function iis7_rewrite_rule_exists($filename) {
        if ( ! file_exists($filename) )
                return false;
-       if ( ! class_exists('DOMDocument') )
+       if ( ! class_exists( 'DOMDocument', false ) ) {
                return false;
+       }
 
        $doc = new DOMDocument();
        if ( $doc->load($filename) === false )
@@ -481,8 +511,9 @@ function iis7_delete_rewrite_rule($filename) {
        if ( ! file_exists($filename) )
                return true;
 
-       if ( ! class_exists('DOMDocument') )
+       if ( ! class_exists( 'DOMDocument', false ) ) {
                return false;
+       }
 
        $doc = new DOMDocument();
        $doc->preserveWhiteSpace = false;
@@ -511,8 +542,9 @@ function iis7_delete_rewrite_rule($filename) {
  * @return bool
  */
 function iis7_add_rewrite_rule($filename, $rewrite_rule) {
-       if ( ! class_exists('DOMDocument') )
+       if ( ! class_exists( 'DOMDocument', false ) ) {
                return false;
+       }
 
        // If configuration file does not exist then we create one.
        if ( ! file_exists($filename) ) {
@@ -843,7 +875,7 @@ function heartbeat_autosave( $response, $data ) {
  * as they disregard the autocomplete setting on the editor textarea. That can break the editor
  * when the user navigates to it with the browser's Back button. See #28037
  *
- * @since 4.0
+ * @since 4.0.0
  *
  * @global bool $is_safari
  * @global bool $is_chrome
@@ -865,23 +897,7 @@ function post_form_autocomplete_off() {
  * @since 4.2.0
  */
 function wp_admin_canonical_url() {
-       $removable_query_args = array(
-               'message', 'settings-updated', 'saved',
-               'update', 'updated', 'activated',
-               'activate', 'deactivate', 'locked',
-               'deleted', 'trashed', 'untrashed',
-               'enabled', 'disabled', 'skipped',
-               'spammed', 'unspammed',
-       );
-
-       /**
-        * Filter the list of URL parameters to remove.
-        *
-        * @since 4.2.0
-        *
-        * @param array $removable_query_args An array of parameters to remove from the URL.
-        */
-       $removable_query_args = apply_filters( 'removable_query_args', $removable_query_args );
+       $removable_query_args = wp_removable_query_args();
 
        if ( empty( $removable_query_args ) ) {
                return;
index b49490eb886d22091ba7503922bd5d91f84c7df4..d3f3b7f5ec0c818b5993e54750cf2c2dd29050f6 100644 (file)
@@ -3,7 +3,7 @@
  * Multisite Administration hooks
  *
  * @package WordPress
- *
+ * @subpackage Administration
  * @since 4.3.0
  */
 
index 5038ad376f3f05e330e39f4c6c3f7d14b569534a..84dcefc96adc927be385e9519471626cee8aeb45 100644 (file)
@@ -1,8 +1,9 @@
 <?php
 /**
- * Deprecated multisite admin functions from past WordPress versions and WordPress MU.
- * You shouldn't use these functions and look for the alternatives instead. The functions
- * will be removed in a later version.
+ * Multisite: Deprecated admin functions from past versions and WordPress MU
+ *
+ * These functions should not be used and will be removed in a later version.
+ * It is suggested to use for the alternatives instead when available.
  *
  * @package WordPress
  * @subpackage Deprecated
@@ -10,6 +11,8 @@
  */
 
 /**
+ * Outputs the WPMU menu.
+ *
  * @deprecated 3.0.0
  */
 function wpmu_menu() {
@@ -18,10 +21,10 @@ function wpmu_menu() {
 }
 
 /**
 * Determines if the available space defined by the admin has been exceeded by the user.
 *
-  * @deprecated 3.0.0
 * @see is_upload_space_available()
+ * Determines if the available space defined by the admin has been exceeded by the user.
+ *
+ * @deprecated 3.0.0 Use is_upload_space_available()
+ * @see is_upload_space_available()
  */
 function wpmu_checkAvailableSpace() {
        _deprecated_function(__FUNCTION__, '3.0', 'is_upload_space_available()' );
@@ -31,6 +34,8 @@ function wpmu_checkAvailableSpace() {
 }
 
 /**
+ * WPMU options.
+ *
  * @deprecated 3.0.0
  */
 function mu_options( $options ) {
@@ -39,7 +44,9 @@ function mu_options( $options ) {
 }
 
 /**
- * @deprecated 3.0.0
+ * Deprecated functionality for activating a network-only plugin.
+ *
+ * @deprecated 3.0.0 Use activate_plugin()
  * @see activate_plugin()
  */
 function activate_sitewide_plugin() {
@@ -48,7 +55,9 @@ function activate_sitewide_plugin() {
 }
 
 /**
- * @deprecated 3.0.0
+ * Deprecated functionality for deactivating a network-only plugin.
+ *
+ * @deprecated 3.0.0 Use deactivate_sitewide_plugin()
  * @see deactivate_sitewide_plugin()
  */
 function deactivate_sitewide_plugin( $plugin = false ) {
@@ -56,7 +65,9 @@ function deactivate_sitewide_plugin( $plugin = false ) {
 }
 
 /**
- * @deprecated 3.0.0
+ * Deprecated functionality for determining if the current plugin is network-only.
+ *
+ * @deprecated 3.0.0 Use is_network_only_plugin()
  * @see is_network_only_plugin()
  */
 function is_wpmu_sitewide_plugin( $file ) {
@@ -65,7 +76,9 @@ function is_wpmu_sitewide_plugin( $file ) {
 }
 
 /**
- * @deprecated 3.4.0
+ * Deprecated functionality for getting themes network-enabled themes.
+ *
+ * @deprecated 3.4.0 Use WP_Theme::get_allowed_on_network()
  * @see WP_Theme::get_allowed_on_network()
  */
 function get_site_allowed_themes() {
@@ -74,7 +87,9 @@ function get_site_allowed_themes() {
 }
 
 /**
- * @deprecated 3.4.0
+ * Deprecated functionality for getting themes allowed on a specific site.
+ *
+ * @deprecated 3.4.0 Use WP_Theme::get_allowed_on_site()
  * @see WP_Theme::get_allowed_on_site()
  */
 function wpmu_get_blog_allowedthemes( $blog_id = 0 ) {
@@ -83,6 +98,8 @@ function wpmu_get_blog_allowedthemes( $blog_id = 0 ) {
 }
 
 /**
- * @deprecated
+ * Deprecated functionality for determining whether a file is deprecated.
+ *
+ * @deprecated 3.5.0
  */
-function ms_deprecated_blogs_file() {}
\ No newline at end of file
+function ms_deprecated_blogs_file() {}
index ffed184b217e3c2dcbb25646fdbf63a1f4dda9df..534bc552d5cf9a70dffe1b354fb618071cfb646f 100644 (file)
@@ -28,13 +28,18 @@ function check_upload_size( $file ) {
        $space_left = get_upload_space_available();
 
        $file_size = filesize( $file['tmp_name'] );
-       if ( $space_left < $file_size )
-               $file['error'] = sprintf( __( 'Not enough space to upload. %1$s KB needed.' ), number_format( ($file_size - $space_left) /1024 ) );
-       if ( $file_size > ( 1024 * get_site_option( 'fileupload_maxk', 1500 ) ) )
-               $file['error'] = sprintf(__('This file is too big. Files must be less than %1$s KB in size.'), get_site_option( 'fileupload_maxk', 1500 ) );
+       if ( $space_left < $file_size ) {
+               $file['error'] = sprintf( __( 'Not enough space to upload. %1$s KB needed.' ), number_format( ( $file_size - $space_left ) / KB_IN_BYTES ) );
+       }
+
+       if ( $file_size > ( KB_IN_BYTES * get_site_option( 'fileupload_maxk', 1500 ) ) ) {
+               $file['error'] = sprintf( __( 'This file is too big. Files must be less than %1$s KB in size.' ), get_site_option( 'fileupload_maxk', 1500 ) );
+       }
+
        if ( upload_is_user_over_quota( false ) ) {
                $file['error'] = __( 'You have used your space quota. Please delete files before uploading.' );
        }
+
        if ( $file['error'] != '0' && ! isset( $_POST['html-upload'] ) && ( ! defined( 'DOING_AJAX' ) || ! DOING_AJAX ) ) {
                wp_die( $file['error'] . ' <a href="javascript:history.go(-1)">' . __( 'Back' ) . '</a>' );
        }
@@ -47,7 +52,7 @@ function check_upload_size( $file ) {
  *
  * @since 3.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int  $blog_id Blog ID.
  * @param bool $drop    True if blog's table should be dropped. Default is false.
@@ -158,7 +163,7 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
                }
 
                $stack = array_reverse( $stack ); // Last added dirs are deepest
-               foreach( (array) $stack as $dir ) {
+               foreach ( (array) $stack as $dir ) {
                        if ( $dir != $top_dir)
                        @rmdir( $dir );
                }
@@ -177,7 +182,7 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
  *
  * @todo Merge with wp_delete_user() ?
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $id The user ID.
  * @return bool True if the user was deleted, otherwise false.
@@ -185,6 +190,10 @@ function wpmu_delete_blog( $blog_id, $drop = false ) {
 function wpmu_delete_user( $id ) {
        global $wpdb;
 
+       if ( ! is_numeric( $id ) ) {
+               return false;
+       }
+
        $id = (int) $id;
        $user = new WP_User( $id );
 
@@ -313,8 +322,8 @@ All at ###SITENAME###
  *
  * @since 3.0.0
  *
- * @global object $errors WP_Error object.
- * @global object $wpdb   WordPress database object.
+ * @global WP_Error $errors WP_Error object.
+ * @global wpdb     $wpdb   WordPress database object.
  */
 function send_confirmation_on_profile_email() {
        global $errors, $wpdb;
@@ -413,9 +422,9 @@ function upload_is_user_over_quota( $echo = true ) {
                return false;
 
        $space_allowed = get_space_allowed();
-       if ( empty( $space_allowed ) || !is_numeric( $space_allowed ) )
+       if ( ! is_numeric( $space_allowed ) ) {
                $space_allowed = 10; // Default space allowed is 10 MB
-
+       }
        $space_used = get_space_used();
 
        if ( ( $space_allowed - $space_used ) < 0 ) {
@@ -439,7 +448,7 @@ function display_space_usage() {
        $percent_used = ( $space_used / $space_allowed ) * 100;
 
        if ( $space_allowed > 1000 ) {
-               $space = number_format( $space_allowed / 1024 );
+               $space = number_format( $space_allowed / KB_IN_BYTES );
                /* translators: Gigabytes */
                $space .= __( 'GB' );
        } else {
@@ -501,7 +510,7 @@ function upload_space_setting( $id ) {
  *
  * @since 3.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int    $id         The user ID.
  * @param string $pref       The column in the wp_users table to update the user's status
@@ -802,7 +811,7 @@ function choose_primary_blog() {
                        $found = false;
                        ?>
                        <select name="primary_blog" id="primary_blog">
-                               <?php foreach( (array) $all_blogs as $blog ) {
+                               <?php foreach ( (array) $all_blogs as $blog ) {
                                        if ( $primary_blog == $blog->userblog_id )
                                                $found = true;
                                        ?><option value="<?php echo $blog->userblog_id ?>"<?php selected( $primary_blog, $blog->userblog_id ); ?>><?php echo esc_url( get_home_url( $blog->userblog_id ) ) ?></option><?php
@@ -824,17 +833,6 @@ function choose_primary_blog() {
                ?>
                </td>
        </tr>
-       <?php if ( in_array( get_site_option( 'registration' ), array( 'all', 'blog' ) ) ) : ?>
-               <tr>
-                       <th scope="row" colspan="2" class="th-full">
-                               <?php
-                               /** This filter is documented in wp-login.php */
-                               $sign_up_url = apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) );
-                               ?>
-                               <a href="<?php echo esc_url( $sign_up_url ); ?>"><?php _e( 'Create a New Site' ); ?></a>
-                       </th>
-               </tr>
-       <?php endif; ?>
        </table>
        <?php
 }
@@ -943,7 +941,7 @@ function revoke_super_admin( $user_id ) {
  *
  * @since 3.1.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $site_id The network/site ID to check.
  * @return bool True if network can be edited, otherwise false.
@@ -981,3 +979,134 @@ var tb_pathToImage = "<?php echo includes_url( 'js/thickbox/loadingAnimation.gif
 </script>
 <?php
 }
+
+/**
+ *
+ * @param array $users
+ */
+function confirm_delete_users( $users ) {
+       $current_user = wp_get_current_user();
+       if ( ! is_array( $users ) || empty( $users ) ) {
+               return false;
+       }
+       ?>
+       <h1><?php esc_html_e( 'Users' ); ?></h1>
+
+       <?php if ( 1 == count( $users ) ) : ?>
+               <p><?php _e( 'You have chosen to delete the user from all networks and sites.' ); ?></p>
+       <?php else : ?>
+               <p><?php _e( 'You have chosen to delete the following users from all networks and sites.' ); ?></p>
+       <?php endif; ?>
+
+       <form action="users.php?action=dodelete" method="post">
+       <input type="hidden" name="dodelete" />
+       <?php
+       wp_nonce_field( 'ms-users-delete' );
+       $site_admins = get_super_admins();
+       $admin_out = '<option value="' . esc_attr( $current_user->ID ) . '">' . $current_user->user_login . '</option>'; ?>
+       <table class="form-table">
+       <?php foreach ( ( $allusers = (array) $_POST['allusers'] ) as $user_id ) {
+               if ( $user_id != '' && $user_id != '0' ) {
+                       $delete_user = get_userdata( $user_id );
+
+                       if ( ! current_user_can( 'delete_user', $delete_user->ID ) ) {
+                               wp_die( sprintf( __( 'Warning! User %s cannot be deleted.' ), $delete_user->user_login ) );
+                       }
+
+                       if ( in_array( $delete_user->user_login, $site_admins ) ) {
+                               wp_die( sprintf( __( 'Warning! User cannot be deleted. The user %s is a network administrator.' ), '<em>' . $delete_user->user_login . '</em>' ) );
+                       }
+                       ?>
+                       <tr>
+                               <th scope="row"><?php echo $delete_user->user_login; ?>
+                                       <?php echo '<input type="hidden" name="user[]" value="' . esc_attr( $user_id ) . '" />' . "\n"; ?>
+                               </th>
+                       <?php $blogs = get_blogs_of_user( $user_id, true );
+
+                       if ( ! empty( $blogs ) ) {
+                               ?>
+                               <td><fieldset><p><legend><?php printf(
+                                       /* translators: user login */
+                                       __( 'What should be done with content owned by %s?' ),
+                                       '<em>' . $delete_user->user_login . '</em>'
+                               ); ?></legend></p>
+                               <?php
+                               foreach ( (array) $blogs as $key => $details ) {
+                                       $blog_users = get_users( array( 'blog_id' => $details->userblog_id, 'fields' => array( 'ID', 'user_login' ) ) );
+                                       if ( is_array( $blog_users ) && !empty( $blog_users ) ) {
+                                               $user_site = "<a href='" . esc_url( get_home_url( $details->userblog_id ) ) . "'>{$details->blogname}</a>";
+                                               $user_dropdown = '<label for="reassign_user" class="screen-reader-text">' . __( 'Select a user' ) . '</label>';
+                                               $user_dropdown .= "<select name='blog[$user_id][$key]' id='reassign_user'>";
+                                               $user_list = '';
+                                               foreach ( $blog_users as $user ) {
+                                                       if ( ! in_array( $user->ID, $allusers ) ) {
+                                                               $user_list .= "<option value='{$user->ID}'>{$user->user_login}</option>";
+                                                       }
+                                               }
+                                               if ( '' == $user_list ) {
+                                                       $user_list = $admin_out;
+                                               }
+                                               $user_dropdown .= $user_list;
+                                               $user_dropdown .= "</select>\n";
+                                               ?>
+                                               <ul style="list-style:none;">
+                                                       <li><?php printf( __( 'Site: %s' ), $user_site ); ?></li>
+                                                       <li><label><input type="radio" id="delete_option0" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID ?>]" value="delete" checked="checked" />
+                                                       <?php _e( 'Delete all content.' ); ?></label></li>
+                                                       <li><label><input type="radio" id="delete_option1" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID ?>]" value="reassign" />
+                                                       <?php _e( 'Attribute all content to:' ); ?></label>
+                                                       <?php echo $user_dropdown; ?></li>
+                                               </ul>
+                                               <?php
+                                       }
+                               }
+                               echo "</fieldset></td></tr>";
+                       } else {
+                               ?>
+                               <td><fieldset><p><legend><?php _e( 'User has no sites or content and will be deleted.' ); ?></legend></p>
+                       <?php } ?>
+                       </tr>
+               <?php
+               }
+       }
+
+       ?>
+       </table>
+       <?php
+       /** This action is documented in wp-admin/users.php */
+       do_action( 'delete_user_form', $current_user );
+
+       if ( 1 == count( $users ) ) : ?>
+               <p><?php _e( 'Once you hit &#8220;Confirm Deletion&#8221;, the user will be permanently removed.' ); ?></p>
+       <?php else : ?>
+               <p><?php _e( 'Once you hit &#8220;Confirm Deletion&#8221;, these users will be permanently removed.' ); ?></p>
+       <?php endif;
+
+       submit_button( __('Confirm Deletion'), 'primary' );
+       ?>
+       </form>
+       <?php
+       return true;
+}
+
+/**
+ * Print JavaScript in the header on the Network Settings screen.
+ *
+ * @since 4.1.0
+*/
+function network_settings_add_js() {
+?>
+<script type="text/javascript">
+jQuery(document).ready( function($) {
+       var languageSelect = $( '#WPLANG' );
+       $( 'form' ).submit( function() {
+               // Don't show a spinner for English and installed languages,
+               // as there is nothing to download.
+               if ( ! languageSelect.find( 'option:selected' ).data( 'installed' ) ) {
+                       $( '#submit', this ).after( '<span class="spinner language-install-spinner" />' );
+               }
+       });
+});
+</script>
+<?php
+}
index 43a807c8b141415935c9234ff2d13cad1786a6c4..16b157e7771a67a723875fc71eb1a1bad1ebdc1e 100644 (file)
 <?php
-
 /**
- * Create HTML list of nav menu input items.
+ * Core Navigation Menu API
  *
  * @package WordPress
+ * @subpackage Nav_Menus
  * @since 3.0.0
- * @uses Walker_Nav_Menu
- */
-class Walker_Nav_Menu_Edit extends Walker_Nav_Menu {
-       /**
-        * Starts the list before the elements are added.
-        *
-        * @see Walker_Nav_Menu::start_lvl()
-        *
-        * @since 3.0.0
-        *
-        * @param string $output Passed by reference.
-        * @param int    $depth  Depth of menu item. Used for padding.
-        * @param array  $args   Not used.
-        */
-       public function start_lvl( &$output, $depth = 0, $args = array() ) {}
-
-       /**
-        * Ends the list of after the elements are added.
-        *
-        * @see Walker_Nav_Menu::end_lvl()
-        *
-        * @since 3.0.0
-        *
-        * @param string $output Passed by reference.
-        * @param int    $depth  Depth of menu item. Used for padding.
-        * @param array  $args   Not used.
-        */
-       public function end_lvl( &$output, $depth = 0, $args = array() ) {}
-
-       /**
-        * Start the element output.
-        *
-        * @see Walker_Nav_Menu::start_el()
-        * @since 3.0.0
-        *
-        * @global int $_wp_nav_menu_max_depth
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param object $item   Menu item data object.
-        * @param int    $depth  Depth of menu item. Used for padding.
-        * @param array  $args   Not used.
-        * @param int    $id     Not used.
-        */
-       public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
-               global $_wp_nav_menu_max_depth;
-               $_wp_nav_menu_max_depth = $depth > $_wp_nav_menu_max_depth ? $depth : $_wp_nav_menu_max_depth;
-
-               ob_start();
-               $item_id = esc_attr( $item->ID );
-               $removed_args = array(
-                       'action',
-                       'customlink-tab',
-                       'edit-menu-item',
-                       'menu-item',
-                       'page-tab',
-                       '_wpnonce',
-               );
-
-               $original_title = '';
-               if ( 'taxonomy' == $item->type ) {
-                       $original_title = get_term_field( 'name', $item->object_id, $item->object, 'raw' );
-                       if ( is_wp_error( $original_title ) )
-                               $original_title = false;
-               } elseif ( 'post_type' == $item->type ) {
-                       $original_object = get_post( $item->object_id );
-                       $original_title = get_the_title( $original_object->ID );
-               }
-
-               $classes = array(
-                       'menu-item menu-item-depth-' . $depth,
-                       'menu-item-' . esc_attr( $item->object ),
-                       'menu-item-edit-' . ( ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? 'active' : 'inactive'),
-               );
-
-               $title = $item->title;
-
-               if ( ! empty( $item->_invalid ) ) {
-                       $classes[] = 'menu-item-invalid';
-                       /* translators: %s: title of menu item which is invalid */
-                       $title = sprintf( __( '%s (Invalid)' ), $item->title );
-               } elseif ( isset( $item->post_status ) && 'draft' == $item->post_status ) {
-                       $classes[] = 'pending';
-                       /* translators: %s: title of menu item in draft status */
-                       $title = sprintf( __('%s (Pending)'), $item->title );
-               }
-
-               $title = ( ! isset( $item->label ) || '' == $item->label ) ? $title : $item->label;
-
-               $submenu_text = '';
-               if ( 0 == $depth )
-                       $submenu_text = 'style="display: none;"';
-
-               ?>
-               <li id="menu-item-<?php echo $item_id; ?>" class="<?php echo implode(' ', $classes ); ?>">
-                       <div class="menu-item-bar">
-                               <div class="menu-item-handle">
-                                       <span class="item-title"><span class="menu-item-title"><?php echo esc_html( $title ); ?></span> <span class="is-submenu" <?php echo $submenu_text; ?>><?php _e( 'sub item' ); ?></span></span>
-                                       <span class="item-controls">
-                                               <span class="item-type"><?php echo esc_html( $item->type_label ); ?></span>
-                                               <span class="item-order hide-if-js">
-                                                       <a href="<?php
-                                                               echo wp_nonce_url(
-                                                                       add_query_arg(
-                                                                               array(
-                                                                                       'action' => 'move-up-menu-item',
-                                                                                       'menu-item' => $item_id,
-                                                                               ),
-                                                                               remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
-                                                                       ),
-                                                                       'move-menu_item'
-                                                               );
-                                                       ?>" class="item-move-up"><abbr title="<?php esc_attr_e('Move up'); ?>">&#8593;</abbr></a>
-                                                       |
-                                                       <a href="<?php
-                                                               echo wp_nonce_url(
-                                                                       add_query_arg(
-                                                                               array(
-                                                                                       'action' => 'move-down-menu-item',
-                                                                                       'menu-item' => $item_id,
-                                                                               ),
-                                                                               remove_query_arg($removed_args, admin_url( 'nav-menus.php' ) )
-                                                                       ),
-                                                                       'move-menu_item'
-                                                               );
-                                                       ?>" class="item-move-down"><abbr title="<?php esc_attr_e('Move down'); ?>">&#8595;</abbr></a>
-                                               </span>
-                                               <a class="item-edit" id="edit-<?php echo $item_id; ?>" title="<?php esc_attr_e('Edit Menu Item'); ?>" href="<?php
-                                                       echo ( isset( $_GET['edit-menu-item'] ) && $item_id == $_GET['edit-menu-item'] ) ? admin_url( 'nav-menus.php' ) : add_query_arg( 'edit-menu-item', $item_id, remove_query_arg( $removed_args, admin_url( 'nav-menus.php#menu-item-settings-' . $item_id ) ) );
-                                               ?>"><?php _e( 'Edit Menu Item' ); ?></a>
-                                       </span>
-                               </div>
-                       </div>
-
-                       <div class="menu-item-settings" id="menu-item-settings-<?php echo $item_id; ?>">
-                               <?php if ( 'custom' == $item->type ) : ?>
-                                       <p class="field-url description description-wide">
-                                               <label for="edit-menu-item-url-<?php echo $item_id; ?>">
-                                                       <?php _e( 'URL' ); ?><br />
-                                                       <input type="text" id="edit-menu-item-url-<?php echo $item_id; ?>" class="widefat code edit-menu-item-url" name="menu-item-url[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->url ); ?>" />
-                                               </label>
-                                       </p>
-                               <?php endif; ?>
-                               <p class="description description-wide">
-                                       <label for="edit-menu-item-title-<?php echo $item_id; ?>">
-                                               <?php _e( 'Navigation Label' ); ?><br />
-                                               <input type="text" id="edit-menu-item-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-title" name="menu-item-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->title ); ?>" />
-                                       </label>
-                               </p>
-                               <p class="field-title-attribute description description-wide">
-                                       <label for="edit-menu-item-attr-title-<?php echo $item_id; ?>">
-                                               <?php _e( 'Title Attribute' ); ?><br />
-                                               <input type="text" id="edit-menu-item-attr-title-<?php echo $item_id; ?>" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->post_excerpt ); ?>" />
-                                       </label>
-                               </p>
-                               <p class="field-link-target description">
-                                       <label for="edit-menu-item-target-<?php echo $item_id; ?>">
-                                               <input type="checkbox" id="edit-menu-item-target-<?php echo $item_id; ?>" value="_blank" name="menu-item-target[<?php echo $item_id; ?>]"<?php checked( $item->target, '_blank' ); ?> />
-                                               <?php _e( 'Open link in a new window/tab' ); ?>
-                                       </label>
-                               </p>
-                               <p class="field-css-classes description description-thin">
-                                       <label for="edit-menu-item-classes-<?php echo $item_id; ?>">
-                                               <?php _e( 'CSS Classes (optional)' ); ?><br />
-                                               <input type="text" id="edit-menu-item-classes-<?php echo $item_id; ?>" class="widefat code edit-menu-item-classes" name="menu-item-classes[<?php echo $item_id; ?>]" value="<?php echo esc_attr( implode(' ', $item->classes ) ); ?>" />
-                                       </label>
-                               </p>
-                               <p class="field-xfn description description-thin">
-                                       <label for="edit-menu-item-xfn-<?php echo $item_id; ?>">
-                                               <?php _e( 'Link Relationship (XFN)' ); ?><br />
-                                               <input type="text" id="edit-menu-item-xfn-<?php echo $item_id; ?>" class="widefat code edit-menu-item-xfn" name="menu-item-xfn[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->xfn ); ?>" />
-                                       </label>
-                               </p>
-                               <p class="field-description description description-wide">
-                                       <label for="edit-menu-item-description-<?php echo $item_id; ?>">
-                                               <?php _e( 'Description' ); ?><br />
-                                               <textarea id="edit-menu-item-description-<?php echo $item_id; ?>" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description[<?php echo $item_id; ?>]"><?php echo esc_html( $item->description ); // textarea_escaped ?></textarea>
-                                               <span class="description"><?php _e('The description will be displayed in the menu if the current theme supports it.'); ?></span>
-                                       </label>
-                               </p>
-
-                               <p class="field-move hide-if-no-js description description-wide">
-                                       <label>
-                                               <span><?php _e( 'Move' ); ?></span>
-                                               <a href="#" class="menus-move menus-move-up" data-dir="up"><?php _e( 'Up one' ); ?></a>
-                                               <a href="#" class="menus-move menus-move-down" data-dir="down"><?php _e( 'Down one' ); ?></a>
-                                               <a href="#" class="menus-move menus-move-left" data-dir="left"></a>
-                                               <a href="#" class="menus-move menus-move-right" data-dir="right"></a>
-                                               <a href="#" class="menus-move menus-move-top" data-dir="top"><?php _e( 'To the top' ); ?></a>
-                                       </label>
-                               </p>
-
-                               <div class="menu-item-actions description-wide submitbox">
-                                       <?php if ( 'custom' != $item->type && $original_title !== false ) : ?>
-                                               <p class="link-to-original">
-                                                       <?php printf( __('Original: %s'), '<a href="' . esc_attr( $item->url ) . '">' . esc_html( $original_title ) . '</a>' ); ?>
-                                               </p>
-                                       <?php endif; ?>
-                                       <a class="item-delete submitdelete deletion" id="delete-<?php echo $item_id; ?>" href="<?php
-                                       echo wp_nonce_url(
-                                               add_query_arg(
-                                                       array(
-                                                               'action' => 'delete-menu-item',
-                                                               'menu-item' => $item_id,
-                                                       ),
-                                                       admin_url( 'nav-menus.php' )
-                                               ),
-                                               'delete-menu_item_' . $item_id
-                                       ); ?>"><?php _e( 'Remove' ); ?></a> <span class="meta-sep hide-if-no-js"> | </span> <a class="item-cancel submitcancel hide-if-no-js" id="cancel-<?php echo $item_id; ?>" href="<?php echo esc_url( add_query_arg( array( 'edit-menu-item' => $item_id, 'cancel' => time() ), admin_url( 'nav-menus.php' ) ) );
-                                               ?>#menu-item-settings-<?php echo $item_id; ?>"><?php _e('Cancel'); ?></a>
-                               </div>
-
-                               <input class="menu-item-data-db-id" type="hidden" name="menu-item-db-id[<?php echo $item_id; ?>]" value="<?php echo $item_id; ?>" />
-                               <input class="menu-item-data-object-id" type="hidden" name="menu-item-object-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object_id ); ?>" />
-                               <input class="menu-item-data-object" type="hidden" name="menu-item-object[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->object ); ?>" />
-                               <input class="menu-item-data-parent-id" type="hidden" name="menu-item-parent-id[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_item_parent ); ?>" />
-                               <input class="menu-item-data-position" type="hidden" name="menu-item-position[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->menu_order ); ?>" />
-                               <input class="menu-item-data-type" type="hidden" name="menu-item-type[<?php echo $item_id; ?>]" value="<?php echo esc_attr( $item->type ); ?>" />
-                       </div><!-- .menu-item-settings-->
-                       <ul class="menu-item-transport"></ul>
-               <?php
-               $output .= ob_get_clean();
-       }
-
-} // Walker_Nav_Menu_Edit
-
-/**
- * Create HTML list of nav menu input items.
- *
- * @since 3.0.0
- * @uses Walker_Nav_Menu
  */
-class Walker_Nav_Menu_Checklist extends Walker_Nav_Menu {
-       /**
-        *
-        * @param array $fields
-        */
-       public function __construct( $fields = false ) {
-               if ( $fields ) {
-                       $this->db_fields = $fields;
-               }
-       }
-
-       /**
-        * Starts the list before the elements are added.
-        *
-        * @see Walker_Nav_Menu::start_lvl()
-        *
-        * @since 3.0.0
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param int    $depth  Depth of page. Used for padding.
-        * @param array  $args   Not used.
-        */
-       public function start_lvl( &$output, $depth = 0, $args = array() ) {
-               $indent = str_repeat( "\t", $depth );
-               $output .= "\n$indent<ul class='children'>\n";
-       }
-
-       /**
-        * Ends the list of after the elements are added.
-        *
-        * @see Walker_Nav_Menu::end_lvl()
-        *
-        * @since 3.0.0
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param int    $depth  Depth of page. Used for padding.
-        * @param array  $args   Not used.
-        */
-       public function end_lvl( &$output, $depth = 0, $args = array() ) {
-               $indent = str_repeat( "\t", $depth );
-               $output .= "\n$indent</ul>";
-       }
-
-       /**
-        * Start the element output.
-        *
-        * @see Walker_Nav_Menu::start_el()
-        *
-        * @since 3.0.0
-        *
-        * @global int $_nav_menu_placeholder
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param object $item   Menu item data object.
-        * @param int    $depth  Depth of menu item. Used for padding.
-        * @param array  $args   Not used.
-        * @param int    $id     Not used.
-        */
-       public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) {
-               global $_nav_menu_placeholder;
-
-               $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1;
-               $possible_object_id = isset( $item->post_type ) && 'nav_menu_item' == $item->post_type ? $item->object_id : $_nav_menu_placeholder;
-               $possible_db_id = ( ! empty( $item->ID ) ) && ( 0 < $possible_object_id ) ? (int) $item->ID : 0;
-
-               $indent = ( $depth ) ? str_repeat( "\t", $depth ) : '';
-
-               $output .= $indent . '<li>';
-               $output .= '<label class="menu-item-title">';
-               $output .= '<input type="checkbox" class="menu-item-checkbox';
-
-               if ( ! empty( $item->front_or_home ) )
-                       $output .= ' add-to-top';
-
-               $output .= '" name="menu-item[' . $possible_object_id . '][menu-item-object-id]" value="'. esc_attr( $item->object_id ) .'" /> ';
-
-               if ( ! empty( $item->label ) ) {
-                       $title = $item->label;
-               } elseif ( isset( $item->post_type ) ) {
-                       /** This filter is documented in wp-includes/post-template.php */
-                       $title = apply_filters( 'the_title', $item->post_title, $item->ID );
-                       if ( ! empty( $item->front_or_home ) && _x( 'Home', 'nav menu home label' ) !== $title )
-                               $title = sprintf( _x( 'Home: %s', 'nav menu front page title' ), $title );
-               }
 
-               $output .= isset( $title ) ? esc_html( $title ) : esc_html( $item->title );
-               $output .= '</label>';
-
-               // Menu item hidden fields
-               $output .= '<input type="hidden" class="menu-item-db-id" name="menu-item[' . $possible_object_id . '][menu-item-db-id]" value="' . $possible_db_id . '" />';
-               $output .= '<input type="hidden" class="menu-item-object" name="menu-item[' . $possible_object_id . '][menu-item-object]" value="'. esc_attr( $item->object ) .'" />';
-               $output .= '<input type="hidden" class="menu-item-parent-id" name="menu-item[' . $possible_object_id . '][menu-item-parent-id]" value="'. esc_attr( $item->menu_item_parent ) .'" />';
-               $output .= '<input type="hidden" class="menu-item-type" name="menu-item[' . $possible_object_id . '][menu-item-type]" value="'. esc_attr( $item->type ) .'" />';
-               $output .= '<input type="hidden" class="menu-item-title" name="menu-item[' . $possible_object_id . '][menu-item-title]" value="'. esc_attr( $item->title ) .'" />';
-               $output .= '<input type="hidden" class="menu-item-url" name="menu-item[' . $possible_object_id . '][menu-item-url]" value="'. esc_attr( $item->url ) .'" />';
-               $output .= '<input type="hidden" class="menu-item-target" name="menu-item[' . $possible_object_id . '][menu-item-target]" value="'. esc_attr( $item->target ) .'" />';
-               $output .= '<input type="hidden" class="menu-item-attr_title" name="menu-item[' . $possible_object_id . '][menu-item-attr_title]" value="'. esc_attr( $item->attr_title ) .'" />';
-               $output .= '<input type="hidden" class="menu-item-classes" name="menu-item[' . $possible_object_id . '][menu-item-classes]" value="'. esc_attr( implode( ' ', $item->classes ) ) .'" />';
-               $output .= '<input type="hidden" class="menu-item-xfn" name="menu-item[' . $possible_object_id . '][menu-item-xfn]" value="'. esc_attr( $item->xfn ) .'" />';
-       }
+/** Walker_Nav_Menu_Edit class */
+require_once( ABSPATH . 'wp-admin/includes/class-walker-nav-menu-edit.php' );
 
-} // Walker_Nav_Menu_Checklist
+/** Walker_Nav_Menu_Checklist class */
+require_once( ABSPATH . 'wp-admin/includes/class-walker-nav-menu-checklist.php' );
 
 /**
  * Prints the appropriate response to a menu quick search.
@@ -426,7 +100,7 @@ function _wp_ajax_menu_quick_search( $request = array() ) {
                        ));
                        if ( empty( $terms ) || is_wp_error( $terms ) )
                                return;
-                       foreach( (array) $terms as $term ) {
+                       foreach ( (array) $terms as $term ) {
                                if ( 'markup' == $response_format ) {
                                        echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( $term ) ), 0, (object) $args );
                                } elseif ( 'json' == $response_format ) {
@@ -480,7 +154,7 @@ function wp_initial_nav_menu_meta_boxes() {
        if ( get_user_option( 'metaboxhidden_nav-menus' ) !== false || ! is_array($wp_meta_boxes) )
                return;
 
-       $initial_meta_boxes = array( 'add-page', 'add-post', 'add-custom-links', 'add-category' );
+       $initial_meta_boxes = array( 'add-post-type-page', 'add-post-type-post', 'add-custom-links', 'add-category' );
        $hidden_meta_boxes = array();
 
        foreach ( array_keys($wp_meta_boxes['nav-menus']) as $context ) {
@@ -528,7 +202,7 @@ function wp_nav_menu_post_type_meta_boxes() {
                        $id = $post_type->name;
                        // Give pages a higher priority.
                        $priority = ( 'page' == $post_type->name ? 'core' : 'default' );
-                       add_meta_box( "add-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', $priority, $post_type );
+                       add_meta_box( "add-post-type-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', $priority, $post_type );
                }
        }
 }
@@ -819,6 +493,23 @@ function wp_nav_menu_item_post_type_meta_box( $object, $post_type ) {
                                        }
                                }
 
+                               $post_type = get_post_type_object( $post_type_name );
+                               $archive_link = get_post_type_archive_link( $post_type_name );
+                               if ( $post_type->has_archive ) {
+                                       $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1;
+                                       array_unshift( $posts, (object) array(
+                                               'ID' => 0,
+                                               'object_id' => $_nav_menu_placeholder,
+                                               'object'     => $post_type_name,
+                                               'post_content' => '',
+                                               'post_excerpt' => '',
+                                               'post_title' => $post_type->labels->archives,
+                                               'post_type' => 'nav_menu_item',
+                                               'type' => 'post_type_archive',
+                                               'url' => get_post_type_archive_link( $post_type_name ),
+                                       ) );
+                               }
+
                                /**
                                 * Filter the posts displayed in the 'View All' tab of the current
                                 * post type's menu items meta box.
@@ -1081,7 +772,7 @@ function wp_save_nav_menu_items( $menu_id = 0, $menu_data = array() ) {
        if ( 0 == $menu_id || is_nav_menu( $menu_id ) ) {
 
                // Loop through all the menu items' POST values.
-               foreach( (array) $menu_data as $_possible_db_id => $_item_object_data ) {
+               foreach ( (array) $menu_data as $_possible_db_id => $_item_object_data ) {
                        if (
                                // Checkbox is not checked.
                                empty( $_item_object_data['menu-item-object-id'] ) &&
@@ -1208,13 +899,19 @@ function wp_get_nav_menu_to_edit( $menu_id = 0 ) {
                 */
                $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $menu_id );
 
-               if ( class_exists( $walker_class_name ) )
+               if ( class_exists( $walker_class_name ) ) {
                        $walker = new $walker_class_name;
-               else
-                       return new WP_Error( 'menu_walker_not_exist', sprintf( __('The Walker class named <strong>%s</strong> does not exist.'), $walker_class_name ) );
+               } else {
+                       return new WP_Error( 'menu_walker_not_exist',
+                               /* translators: %s: walker class name */
+                               sprintf( __( 'The Walker class named %s does not exist.' ),
+                                       '<strong>' . $walker_class_name . '</strong>'
+                               )
+                       );
+               }
 
                $some_pending_menu_items = $some_invalid_menu_items = false;
-               foreach( (array) $menu_items as $menu_item ) {
+               foreach ( (array) $menu_items as $menu_item ) {
                        if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status )
                                $some_pending_menu_items = true;
                        if ( ! empty( $menu_item->_invalid ) )
@@ -1262,7 +959,7 @@ function wp_nav_menu_manage_columns() {
  * @access private
  * @since 3.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function _wp_delete_orphaned_draft_menu_items() {
        global $wpdb;
@@ -1271,7 +968,7 @@ function _wp_delete_orphaned_draft_menu_items() {
        // Delete orphaned draft menu items.
        $menu_items_to_delete = $wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts AS p LEFT JOIN $wpdb->postmeta AS m ON p.ID = m.post_id WHERE post_type = 'nav_menu_item' AND post_status = 'draft' AND meta_key = '_menu_item_orphaned' AND meta_value < '%d'", $delete_timestamp ) );
 
-       foreach( (array) $menu_items_to_delete as $menu_item_id )
+       foreach ( (array) $menu_items_to_delete as $menu_item_id )
                wp_delete_post( $menu_item_id, true );
 }
 
@@ -1302,7 +999,7 @@ function wp_nav_menu_update_menu_items ( $nav_menu_selected_id, $nav_menu_select
        wp_defer_term_counting( true );
        // Loop through all the menu items' POST variables
        if ( ! empty( $_POST['menu-item-db-id'] ) ) {
-               foreach( (array) $_POST['menu-item-db-id'] as $_key => $k ) {
+               foreach ( (array) $_POST['menu-item-db-id'] as $_key => $k ) {
 
                        // Menu item title can't be blank
                        if ( ! isset( $_POST['menu-item-title'][ $_key ] ) || '' == $_POST['menu-item-title'][ $_key ] )
@@ -1352,7 +1049,12 @@ function wp_nav_menu_update_menu_items ( $nav_menu_selected_id, $nav_menu_select
        /** This action is documented in wp-includes/nav-menu.php */
        do_action( 'wp_update_nav_menu', $nav_menu_selected_id );
 
-       $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . sprintf( __( '<strong>%1$s</strong> has been updated.' ), $nav_menu_selected_title ) . '</p></div>';
+       $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' .
+               /* translators: %s: nav menu title */
+               sprintf( __( '%s has been updated.' ),
+                       '<strong>' . $nav_menu_selected_title . '</strong>'
+               ) . '</p></div>';
+
        unset( $menu_items, $unsorted_menu_items );
 
        return $messages;
diff --git a/wp-admin/includes/network.php b/wp-admin/includes/network.php
new file mode 100644 (file)
index 0000000..7f30c99
--- /dev/null
@@ -0,0 +1,578 @@
+<?php
+/**
+ * WordPress Network Administration API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+/**
+ * Check for an existing network.
+ *
+ * @since 3.0.0
+ *
+ * @global wpdb $wpdb WordPress database abstraction object.
+ *
+ * @return Whether a network exists.
+ */
+function network_domain_check() {
+       global $wpdb;
+
+       $sql = $wpdb->prepare( "SHOW TABLES LIKE %s", $wpdb->esc_like( $wpdb->site ) );
+       if ( $wpdb->get_var( $sql ) ) {
+               return $wpdb->get_var( "SELECT domain FROM $wpdb->site ORDER BY id ASC LIMIT 1" );
+       }
+       return false;
+}
+
+/**
+ * Allow subdomain install
+ *
+ * @since 3.0.0
+ * @return bool Whether subdomain install is allowed
+ */
+function allow_subdomain_install() {
+       $domain = preg_replace( '|https?://([^/]+)|', '$1', get_option( 'home' ) );
+       if ( parse_url( get_option( 'home' ), PHP_URL_PATH ) || 'localhost' == $domain || preg_match( '|^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$|', $domain ) )
+               return false;
+
+       return true;
+}
+
+/**
+ * Allow subdirectory install.
+ *
+ * @since 3.0.0
+ *
+ * @global wpdb $wpdb WordPress database abstraction object.
+ *
+ * @return bool Whether subdirectory install is allowed
+ */
+function allow_subdirectory_install() {
+       global $wpdb;
+        /**
+         * Filter whether to enable the subdirectory install feature in Multisite.
+         *
+         * @since 3.0.0
+         *
+         * @param bool true Whether to enable the subdirectory install feature in Multisite. Default is false.
+         */
+       if ( apply_filters( 'allow_subdirectory_install', false ) )
+               return true;
+
+       if ( defined( 'ALLOW_SUBDIRECTORY_INSTALL' ) && ALLOW_SUBDIRECTORY_INSTALL )
+               return true;
+
+       $post = $wpdb->get_row( "SELECT ID FROM $wpdb->posts WHERE post_date < DATE_SUB(NOW(), INTERVAL 1 MONTH) AND post_status = 'publish'" );
+       if ( empty( $post ) )
+               return true;
+
+       return false;
+}
+
+/**
+ * Get base domain of network.
+ *
+ * @since 3.0.0
+ * @return string Base domain.
+ */
+function get_clean_basedomain() {
+       if ( $existing_domain = network_domain_check() )
+               return $existing_domain;
+       $domain = preg_replace( '|https?://|', '', get_option( 'siteurl' ) );
+       if ( $slash = strpos( $domain, '/' ) )
+               $domain = substr( $domain, 0, $slash );
+       return $domain;
+}
+
+/**
+ * Prints step 1 for Network installation process.
+ *
+ * @todo Realistically, step 1 should be a welcome screen explaining what a Network is and such. Navigating to Tools > Network
+ *     should not be a sudden "Welcome to a new install process! Fill this out and click here." See also contextual help todo.
+ *
+ * @since 3.0.0
+ *
+ * @global bool $is_apache
+ *
+ * @param WP_Error $errors
+ */
+function network_step1( $errors = false ) {
+       global $is_apache;
+
+       if ( defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) {
+               echo '<div class="error"><p><strong>' . __('ERROR:') . '</strong> ' . __( 'The constant DO_NOT_UPGRADE_GLOBAL_TABLES cannot be defined when creating a network.' ) . '</p></div>';
+               echo '</div>';
+               include( ABSPATH . 'wp-admin/admin-footer.php' );
+               die();
+       }
+
+       $active_plugins = get_option( 'active_plugins' );
+       if ( ! empty( $active_plugins ) ) {
+               echo '<div class="updated"><p><strong>' . __('Warning:') . '</strong> ' . sprintf( __( 'Please <a href="%s">deactivate your plugins</a> before enabling the Network feature.' ), admin_url( 'plugins.php?plugin_status=active' ) ) . '</p></div><p>' . __( 'Once the network is created, you may reactivate your plugins.' ) . '</p>';
+               echo '</div>';
+               include( ABSPATH . 'wp-admin/admin-footer.php' );
+               die();
+       }
+
+       $hostname = get_clean_basedomain();
+       $has_ports = strstr( $hostname, ':' );
+       if ( ( false !== $has_ports && ! in_array( $has_ports, array( ':80', ':443' ) ) ) ) {
+               echo '<div class="error"><p><strong>' . __( 'ERROR:') . '</strong> ' . __( 'You cannot install a network of sites with your server address.' ) . '</p></div>';
+               echo '<p>' . sprintf(
+                       /* translators: %s: port number */
+                       __( 'You cannot use port numbers such as %s.' ),
+                       '<code>' . $has_ports . '</code>'
+               ) . '</p>';
+               echo '<a href="' . esc_url( admin_url() ) . '">' . __( 'Return to Dashboard' ) . '</a>';
+               echo '</div>';
+               include( ABSPATH . 'wp-admin/admin-footer.php' );
+               die();
+       }
+
+       echo '<form method="post">';
+
+       wp_nonce_field( 'install-network-1' );
+
+       $error_codes = array();
+       if ( is_wp_error( $errors ) ) {
+               echo '<div class="error"><p><strong>' . __( 'ERROR: The network could not be created.' ) . '</strong></p>';
+               foreach ( $errors->get_error_messages() as $error )
+                       echo "<p>$error</p>";
+               echo '</div>';
+               $error_codes = $errors->get_error_codes();
+       }
+
+       $site_name = ( ! empty( $_POST['sitename'] ) && ! in_array( 'empty_sitename', $error_codes ) ) ? $_POST['sitename'] : sprintf( _x('%s Sites', 'Default network name' ), get_option( 'blogname' ) );
+       $admin_email = ( ! empty( $_POST['email'] ) && ! in_array( 'invalid_email', $error_codes ) ) ? $_POST['email'] : get_option( 'admin_email' );
+       ?>
+       <p><?php _e( 'Welcome to the Network installation process!' ); ?></p>
+       <p><?php _e( 'Fill in the information below and you&#8217;ll be on your way to creating a network of WordPress sites. We will create configuration files in the next step.' ); ?></p>
+       <?php
+
+       if ( isset( $_POST['subdomain_install'] ) ) {
+               $subdomain_install = (bool) $_POST['subdomain_install'];
+       } elseif ( apache_mod_loaded('mod_rewrite') ) { // assume nothing
+               $subdomain_install = true;
+       } elseif ( !allow_subdirectory_install() ) {
+               $subdomain_install = true;
+       } else {
+               $subdomain_install = false;
+               if ( $got_mod_rewrite = got_mod_rewrite() ) { // dangerous assumptions 
+                       echo '<div class="updated inline"><p><strong>' . __( 'Note:' ) . '</strong> ';
+                       /* translators: %s: mod_rewrite */
+                       printf( __( 'Please make sure the Apache %s module is installed as it will be used at the end of this installation.' ),
+                               '<code>mod_rewrite</code>'
+                       );
+                       echo '</p>';
+               } elseif ( $is_apache ) {
+                       echo '<div class="error inline"><p><strong>' . __( 'Warning!' ) . '</strong> ';
+                       /* translators: %s: mod_rewrite */
+                       printf( __( 'It looks like the Apache %s module is not installed.' ),
+                               '<code>mod_rewrite</code>'
+                       );
+                       echo '</p>';
+               }
+
+               if ( $got_mod_rewrite || $is_apache ) { // Protect against mod_rewrite mimicry (but ! Apache)
+                       echo '<p>';
+                       /* translators: 1: mod_rewrite, 2: mod_rewrite documentation URL, 3: Google search for mod_rewrite */
+                       printf( __( 'If %1$s is disabled, ask your administrator to enable that module, or look at the <a href="%2$s">Apache documentation</a> or <a href="%3$s">elsewhere</a> for help setting it up.' ),
+                               '<code>mod_rewrite</code>',
+                               'http://httpd.apache.org/docs/mod/mod_rewrite.html',
+                               'http://www.google.com/search?q=apache+mod_rewrite'
+                       );
+                       echo '</p></div>';
+               }
+       }
+
+       if ( allow_subdomain_install() && allow_subdirectory_install() ) : ?>
+               <h3><?php esc_html_e( 'Addresses of Sites in your Network' ); ?></h3>
+               <p><?php _e( 'Please choose whether you would like sites in your WordPress network to use sub-domains or sub-directories.' ); ?>
+                       <strong><?php _e( 'You cannot change this later.' ); ?></strong></p>
+               <p><?php _e( 'You will need a wildcard DNS record if you are going to use the virtual host (sub-domain) functionality.' ); ?></p>
+               <?php // @todo: Link to an MS readme? ?>
+               <table class="form-table">
+                       <tr>
+                               <th><label><input type="radio" name="subdomain_install" value="1"<?php checked( $subdomain_install ); ?> /> <?php _e( 'Sub-domains' ); ?></label></th>
+                               <td><?php printf(
+                                       /* translators: 1: hostname */
+                                       _x( 'like <code>site1.%1$s</code> and <code>site2.%1$s</code>', 'subdomain examples' ),
+                                       $hostname
+                               ); ?></td>
+                       </tr>
+                       <tr>
+                               <th><label><input type="radio" name="subdomain_install" value="0"<?php checked( ! $subdomain_install ); ?> /> <?php _e( 'Sub-directories' ); ?></label></th>
+                               <td><?php printf(
+                                       /* translators: 1: hostname */
+                                       _x( 'like <code>%1$s/site1</code> and <code>%1$s/site2</code>', 'subdirectory examples' ),
+                                       $hostname
+                               ); ?></td>
+                       </tr>
+               </table>
+
+<?php
+       endif;
+
+               if ( WP_CONTENT_DIR != ABSPATH . 'wp-content' && ( allow_subdirectory_install() || ! allow_subdomain_install() ) )
+                       echo '<div class="error inline"><p><strong>' . __('Warning!') . '</strong> ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</p></div>';
+
+               $is_www = ( 0 === strpos( $hostname, 'www.' ) );
+               if ( $is_www ) :
+               ?>
+               <h3><?php esc_html_e( 'Server Address' ); ?></h3>
+               <p><?php printf(
+                       /* translators: 1: site url 2: host name 3. www */
+                       __( 'We recommend you change your siteurl to %1$s before enabling the network feature. It will still be possible to visit your site using the %3$s prefix with an address like %2$s but any links will not have the %3$s prefix.' ),
+                       '<code>' . substr( $hostname, 4 ) . '</code>',
+                       '<code>' . $hostname . '</code>',
+                       '<code>www</code>'
+               ); ?></p>
+               <table class="form-table">
+                       <tr>
+                               <th scope='row'><?php esc_html_e( 'Server Address' ); ?></th>
+                               <td>
+                                       <?php printf(
+                                               /* translators: %s: host name */
+                                               __( 'The internet address of your network will be %s.' ),
+                                               '<code>' . $hostname . '</code>'
+                                       ); ?>
+                               </td>
+                       </tr>
+               </table>
+               <?php endif; ?>
+
+               <h3><?php esc_html_e( 'Network Details' ); ?></h3>
+               <table class="form-table">
+               <?php if ( 'localhost' == $hostname ) : ?>
+                       <tr>
+                               <th scope="row"><?php esc_html_e( 'Sub-directory Install' ); ?></th>
+                               <td><?php
+                                       printf(
+                                               /* translators: 1: localhost 2: localhost.localdomain */
+                                               __( 'Because you are using %1$s, the sites in your WordPress network must use sub-directories. Consider using %2$s if you wish to use sub-domains.' ),
+                                               '<code>localhost</code>',
+                                               '<code>localhost.localdomain</code>'
+                                       );
+                                       // Uh oh:
+                                       if ( !allow_subdirectory_install() )
+                                               echo ' <strong>' . __( 'Warning!' ) . ' ' . __( 'The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links.' ) . '</strong>';
+                               ?></td>
+                       </tr>
+               <?php elseif ( !allow_subdomain_install() ) : ?>
+                       <tr>
+                               <th scope="row"><?php esc_html_e( 'Sub-directory Install' ); ?></th>
+                               <td><?php
+                                       _e( 'Because your install is in a directory, the sites in your WordPress network must use sub-directories.' );
+                                       // Uh oh:
+                                       if ( !allow_subdirectory_install() )
+                                               echo ' <strong>' . __( 'Warning!' ) . ' ' . __( 'The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links.' ) . '</strong>';
+                               ?></td>
+                       </tr>
+               <?php elseif ( !allow_subdirectory_install() ) : ?>
+                       <tr>
+                               <th scope="row"><?php esc_html_e( 'Sub-domain Install' ); ?></th>
+                               <td><?php _e( 'Because your install is not new, the sites in your WordPress network must use sub-domains.' );
+                                       echo ' <strong>' . __( 'The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links.' ) . '</strong>';
+                               ?></td>
+                       </tr>
+               <?php endif; ?>
+               <?php if ( ! $is_www ) : ?>
+                       <tr>
+                               <th scope='row'><?php esc_html_e( 'Server Address' ); ?></th>
+                               <td>
+                                       <?php printf(
+                                               /* translators: %s: host name */
+                                               __( 'The internet address of your network will be %s.' ),
+                                               '<code>' . $hostname . '</code>'
+                                       ); ?>
+                               </td>
+                       </tr>
+               <?php endif; ?>
+                       <tr>
+                               <th scope='row'><?php esc_html_e( 'Network Title' ); ?></th>
+                               <td>
+                                       <input name='sitename' type='text' size='45' value='<?php echo esc_attr( $site_name ); ?>' />
+                                       <p class="description">
+                                               <?php _e( 'What would you like to call your network?' ); ?>
+                                       </p>
+                               </td>
+                       </tr>
+                       <tr>
+                               <th scope='row'><?php esc_html_e( 'Network Admin Email' ); ?></th>
+                               <td>
+                                       <input name='email' type='text' size='45' value='<?php echo esc_attr( $admin_email ); ?>' />
+                                       <p class="description">
+                                               <?php _e( 'Your email address.' ); ?>
+                                       </p>
+                               </td>
+                       </tr>
+               </table>
+               <?php submit_button( __( 'Install' ), 'primary', 'submit' ); ?>
+       </form>
+       <?php
+}
+
+/**
+ * Prints step 2 for Network installation process.
+ *
+ * @since 3.0.0
+ *
+ * @global wpdb $wpdb WordPress database abstraction object.
+ *
+ * @param WP_Error $errors
+ */
+function network_step2( $errors = false ) {
+       global $wpdb;
+
+       $hostname          = get_clean_basedomain();
+       $slashed_home      = trailingslashit( get_option( 'home' ) );
+       $base              = parse_url( $slashed_home, PHP_URL_PATH );
+       $document_root_fix = str_replace( '\\', '/', realpath( $_SERVER['DOCUMENT_ROOT'] ) );
+       $abspath_fix       = str_replace( '\\', '/', ABSPATH );
+       $home_path         = 0 === strpos( $abspath_fix, $document_root_fix ) ? $document_root_fix . $base : get_home_path();
+       $wp_siteurl_subdir = preg_replace( '#^' . preg_quote( $home_path, '#' ) . '#', '', $abspath_fix );
+       $rewrite_base      = ! empty( $wp_siteurl_subdir ) ? ltrim( trailingslashit( $wp_siteurl_subdir ), '/' ) : '';
+
+
+       $location_of_wp_config = $abspath_fix;
+       if ( ! file_exists( ABSPATH . 'wp-config.php' ) && file_exists( dirname( ABSPATH ) . '/wp-config.php' ) ) {
+               $location_of_wp_config = dirname( $abspath_fix );
+       }
+       $location_of_wp_config = trailingslashit( $location_of_wp_config );
+
+       // Wildcard DNS message.
+       if ( is_wp_error( $errors ) )
+               echo '<div class="error">' . $errors->get_error_message() . '</div>';
+
+       if ( $_POST ) {
+               if ( allow_subdomain_install() )
+                       $subdomain_install = allow_subdirectory_install() ? ! empty( $_POST['subdomain_install'] ) : true;
+               else
+                       $subdomain_install = false;
+       } else {
+               if ( is_multisite() ) {
+                       $subdomain_install = is_subdomain_install();
+?>
+       <p><?php _e( 'The original configuration steps are shown here for reference.' ); ?></p>
+<?php
+               } else {
+                       $subdomain_install = (bool) $wpdb->get_var( "SELECT meta_value FROM $wpdb->sitemeta WHERE site_id = 1 AND meta_key = 'subdomain_install'" );
+?>
+       <div class="error"><p><strong><?php _e('Warning:'); ?></strong> <?php _e( 'An existing WordPress network was detected.' ); ?></p></div>
+       <p><?php _e( 'Please complete the configuration steps. To create a new network, you will need to empty or remove the network database tables.' ); ?></p>
+<?php
+               }
+       }
+
+       $subdir_match          = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
+       $subdir_replacement_01 = $subdomain_install ? '' : '$1';
+       $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
+
+       if ( $_POST || ! is_multisite() ) {
+?>
+               <h3><?php esc_html_e( 'Enabling the Network' ); ?></h3>
+               <p><?php _e( 'Complete the following steps to enable the features for creating a network of sites.' ); ?></p>
+               <div class="updated inline"><p><?php
+                       if ( file_exists( $home_path . '.htaccess' ) ) {
+                               printf(
+                                       /* translators: 1: wp-config.php 2: .htaccess */
+                                       __( '<strong>Caution:</strong> We recommend you back up your existing %1$s and %2$s files.' ),
+                                       '<code>wp-config.php</code>',
+                                       '<code>.htaccess</code>'
+                               );
+                       } elseif ( file_exists( $home_path . 'web.config' ) ) {
+                               printf(
+                                       /* translators: 1: wp-config.php 2: web.config */
+                                       __( '<strong>Caution:</strong> We recommend you back up your existing %1$s and %2$s files.' ),
+                                       '<code>wp-config.php</code>',
+                                       '<code>web.config</code>'
+                               );
+                       } else {
+                               printf(
+                                       /* translators: 1: wp-config.php */
+                                       __( '<strong>Caution:</strong> We recommend you back up your existing %s file.' ),
+                                       '<code>wp-config.php</code>'
+                               );
+                       }
+               ?></p></div>
+<?php
+       }
+?>
+               <ol>
+                       <li><p><?php printf(
+                               /* translators: 1: wp-config.php 2: location of wp-config file */
+                               __( 'Add the following to your %1$s file in %2$s <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:' ),
+                               '<code>wp-config.php</code>',
+                               '<code>' . $location_of_wp_config . '</code>'
+                       ); ?></p>
+                               <textarea class="code" readonly="readonly" cols="100" rows="7">
+define('MULTISITE', true);
+define('SUBDOMAIN_INSTALL', <?php echo $subdomain_install ? 'true' : 'false'; ?>);
+define('DOMAIN_CURRENT_SITE', '<?php echo $hostname; ?>');
+define('PATH_CURRENT_SITE', '<?php echo $base; ?>');
+define('SITE_ID_CURRENT_SITE', 1);
+define('BLOG_ID_CURRENT_SITE', 1);
+</textarea>
+<?php
+       $keys_salts = array( 'AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' );
+       foreach ( $keys_salts as $c => $v ) {
+               if ( defined( $c ) )
+                       unset( $keys_salts[ $c ] );
+       }
+
+       if ( ! empty( $keys_salts ) ) {
+               $keys_salts_str = '';
+               $from_api = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' );
+               if ( is_wp_error( $from_api ) ) {
+                       foreach ( $keys_salts as $c => $v ) {
+                               $keys_salts_str .= "\ndefine( '$c', '" . wp_generate_password( 64, true, true ) . "' );";
+                       }
+               } else {
+                       $from_api = explode( "\n", wp_remote_retrieve_body( $from_api ) );
+                       foreach ( $keys_salts as $c => $v ) {
+                               $keys_salts_str .= "\ndefine( '$c', '" . substr( array_shift( $from_api ), 28, 64 ) . "' );";
+                       }
+               }
+               $num_keys_salts = count( $keys_salts );
+?>
+       <p>
+               <?php
+                       if ( 1 == $num_keys_salts ) {
+                               printf(
+                                       /* translators: 1: wp-config.php */
+                                       __( 'This unique authentication key is also missing from your %s file.' ),
+                                       '<code>wp-config.php</code>'
+                               );
+                       } else {
+                               printf(
+                                       /* translators: 1: wp-config.php */
+                                       __( 'These unique authentication keys are also missing from your %s file.' ),
+                                       '<code>wp-config.php</code>'
+                               );
+                       }
+               ?>
+               <?php _e( 'To make your installation more secure, you should also add:' ); ?>
+       </p>
+       <textarea class="code" readonly="readonly" cols="100" rows="<?php echo $num_keys_salts; ?>"><?php echo esc_textarea( $keys_salts_str ); ?></textarea>
+<?php
+       }
+?>
+</li>
+<?php
+       if ( iis7_supports_permalinks() ) :
+               // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
+               $iis_subdir_match = ltrim( $base, '/' ) . $subdir_match;
+               $iis_rewrite_base = ltrim( $base, '/' ) . $rewrite_base;
+               $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
+
+               $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <system.webServer>
+        <rewrite>
+            <rules>
+                <rule name="WordPress Rule 1" stopProcessing="true">
+                    <match url="^index\.php$" ignoreCase="false" />
+                    <action type="None" />
+                </rule>';
+                               if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
+                                       $web_config_file .= '
+                <rule name="WordPress Rule for Files" stopProcessing="true">
+                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
+                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
+                </rule>';
+                }
+                $web_config_file .= '
+                <rule name="WordPress Rule 2" stopProcessing="true">
+                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
+                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
+                </rule>
+                <rule name="WordPress Rule 3" stopProcessing="true">
+                    <match url="^" ignoreCase="false" />
+                    <conditions logicalGrouping="MatchAny">
+                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
+                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
+                    </conditions>
+                    <action type="None" />
+                </rule>
+                <rule name="WordPress Rule 4" stopProcessing="true">
+                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
+                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
+                </rule>
+                <rule name="WordPress Rule 5" stopProcessing="true">
+                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
+                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
+                </rule>
+                <rule name="WordPress Rule 6" stopProcessing="true">
+                    <match url="." ignoreCase="false" />
+                    <action type="Rewrite" url="index.php" />
+                </rule>
+            </rules>
+        </rewrite>
+    </system.webServer>
+</configuration>
+';
+
+               echo '<li><p>';
+               printf(
+                       /* translators: 1: a filename like .htaccess. 2: a file path. */
+                       __( 'Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:' ),
+                       '<code>web.config</code>',
+                       '<code>' . $home_path . '</code>'
+               );
+               echo '</p>';
+               if ( ! $subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content' )
+                       echo '<p><strong>' . __('Warning:') . ' ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</strong></p>';
+               ?>
+               <textarea class="code" readonly="readonly" cols="100" rows="20"><?php echo esc_textarea( $web_config_file ); ?>
+               </textarea></li>
+               </ol>
+
+       <?php else : // end iis7_supports_permalinks(). construct an htaccess file instead:
+
+               $ms_files_rewriting = '';
+               if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
+                       $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
+                       $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
+               }
+
+               $htaccess_file = <<<EOF
+RewriteEngine On
+RewriteBase {$base}
+RewriteRule ^index\.php$ - [L]
+{$ms_files_rewriting}
+# add a trailing slash to /wp-admin
+RewriteRule ^{$subdir_match}wp-admin$ {$subdir_replacement_01}wp-admin/ [R=301,L]
+
+RewriteCond %{REQUEST_FILENAME} -f [OR]
+RewriteCond %{REQUEST_FILENAME} -d
+RewriteRule ^ - [L]
+RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
+RewriteRule ^{$subdir_match}(.*\.php)$ {$rewrite_base}$subdir_replacement_12 [L]
+RewriteRule . index.php [L]
+
+EOF;
+
+               echo '<li><p>';
+               printf(
+                       /* translators: 1: a filename like .htaccess. 2: a file path. */
+                       __( 'Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:' ),
+                       '<code>.htaccess</code>',
+                       '<code>' . $home_path . '</code>'
+               );
+               echo '</p>';
+               if ( ! $subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content' )
+                       echo '<p><strong>' . __('Warning:') . ' ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</strong></p>';
+               ?>
+               <textarea class="code" readonly="readonly" cols="100" rows="<?php echo substr_count( $htaccess_file, "\n" ) + 1; ?>">
+<?php echo esc_textarea( $htaccess_file ); ?></textarea></li>
+               </ol>
+
+       <?php endif; // end IIS/Apache code branches.
+
+       if ( !is_multisite() ) { ?>
+               <p><?php _e( 'Once you complete these steps, your network is enabled and configured. You will have to log in again.' ); ?> <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log In' ); ?></a></p>
+<?php
+       }
+}
\ No newline at end of file
diff --git a/wp-admin/includes/noop.php b/wp-admin/includes/noop.php
new file mode 100644 (file)
index 0000000..43264c2
--- /dev/null
@@ -0,0 +1,106 @@
+<?php
+
+/**
+ * @ignore
+ */
+function __() {}
+
+/**
+ * @ignore
+ */
+function _x() {}
+
+/**
+ * @ignore
+ */
+function add_filter() {}
+
+/**
+ * @ignore
+ */
+function esc_attr() {}
+
+/**
+ * @ignore
+ */
+function apply_filters() {}
+
+/**
+ * @ignore
+ */
+function get_option() {}
+
+/**
+ * @ignore
+ */
+function is_lighttpd_before_150() {}
+
+/**
+ * @ignore
+ */
+function add_action() {}
+
+/**
+ * @ignore
+ */
+function did_action() {}
+
+/**
+ * @ignore
+ */
+function do_action_ref_array() {}
+
+/**
+ * @ignore
+ */
+function get_bloginfo() {}
+
+/**
+ * @ignore
+ */
+function is_admin() {return true;}
+
+/**
+ * @ignore
+ */
+function site_url() {}
+
+/**
+ * @ignore
+ */
+function admin_url() {}
+
+/**
+ * @ignore
+ */
+function home_url() {}
+
+/**
+ * @ignore
+ */
+function includes_url() {}
+
+/**
+ * @ignore
+ */
+function wp_guess_url() {}
+
+if ( ! function_exists( 'json_encode' ) ) :
+/**
+ * @ignore
+ */
+function json_encode() {}
+endif;
+
+function get_file( $path ) {
+
+       if ( function_exists('realpath') ) {
+               $path = realpath( $path );
+       }
+
+       if ( ! $path || ! @is_file( $path ) ) {
+               return '';
+       }
+
+       return @file_get_contents( $path );
+}
\ No newline at end of file
diff --git a/wp-admin/includes/options.php b/wp-admin/includes/options.php
new file mode 100644 (file)
index 0000000..f0fab45
--- /dev/null
@@ -0,0 +1,141 @@
+<?php
+/**
+ * WordPress Options Administration API.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ * @since 4.4.0
+ */
+
+/**
+ * Output JavaScript to toggle display of additional settings if avatars are disabled.
+ *
+ * @since 4.2.0
+ */
+function options_discussion_add_js() {
+?>
+       <script>
+       (function($){
+               var parent = $( '#show_avatars' ),
+                       children = $( '.avatar-settings' );
+               parent.change(function(){
+                       children.toggleClass( 'hide-if-js', ! this.checked );
+               });
+       })(jQuery);
+       </script>
+<?php
+}
+
+/**
+ * Display JavaScript on the page.
+ *
+ * @since 3.5.0
+ */
+function options_general_add_js() {
+?>
+<script type="text/javascript">
+       jQuery(document).ready(function($){
+               var $siteName = $( '#wp-admin-bar-site-name' ).children( 'a' ).first(),
+                       homeURL = ( <?php echo wp_json_encode( get_home_url() ); ?> || '' ).replace( /^(https?:\/\/)?(www\.)?/, '' );
+
+               $( '#blogname' ).on( 'input', function() {
+                       var title = $.trim( $( this ).val() ) || homeURL;
+
+                       // Truncate to 40 characters.
+                       if ( 40 < title.length ) {
+                               title = title.substring( 0, 40 ) + '\u2026';
+                       }
+
+                       $siteName.text( title );
+               });
+
+               $("input[name='date_format']").click(function(){
+                       if ( "date_format_custom_radio" != $(this).attr("id") )
+                               $( "input[name='date_format_custom']" ).val( $( this ).val() ).siblings( '.example' ).text( $( this ).parent( 'label' ).text() );
+               });
+               $("input[name='date_format_custom']").focus(function(){
+                       $( '#date_format_custom_radio' ).prop( 'checked', true );
+               });
+
+               $("input[name='time_format']").click(function(){
+                       if ( "time_format_custom_radio" != $(this).attr("id") )
+                               $( "input[name='time_format_custom']" ).val( $( this ).val() ).siblings( '.example' ).text( $( this ).parent( 'label' ).text() );
+               });
+               $("input[name='time_format_custom']").focus(function(){
+                       $( '#time_format_custom_radio' ).prop( 'checked', true );
+               });
+               $("input[name='date_format_custom'], input[name='time_format_custom']").change( function() {
+                       var format = $(this);
+                       format.siblings( '.spinner' ).addClass( 'is-active' );
+                       $.post(ajaxurl, {
+                                       action: 'date_format_custom' == format.attr('name') ? 'date_format' : 'time_format',
+                                       date : format.val()
+                               }, function(d) { format.siblings( '.spinner' ).removeClass( 'is-active' ); format.siblings('.example').text(d); } );
+               });
+
+               var languageSelect = $( '#WPLANG' );
+               $( 'form' ).submit( function() {
+                       // Don't show a spinner for English and installed languages,
+                       // as there is nothing to download.
+                       if ( ! languageSelect.find( 'option:selected' ).data( 'installed' ) ) {
+                               $( '#submit', this ).after( '<span class="spinner language-install-spinner" />' );
+                       }
+               });
+       });
+</script>
+<?php
+}
+
+/**
+ * Display JavaScript on the page.
+ *
+ * @since 3.5.0
+ */
+function options_permalink_add_js() {
+       ?>
+<script type="text/javascript">
+jQuery(document).ready(function() {
+       jQuery('.permalink-structure input:radio').change(function() {
+               if ( 'custom' == this.value )
+                       return;
+               jQuery('#permalink_structure').val( this.value );
+       });
+       jQuery('#permalink_structure').focus(function() {
+               jQuery("#custom_selection").attr('checked', 'checked');
+       });
+});
+</script>
+<?php
+}
+
+/**
+ * Display JavaScript on the page.
+ *
+ * @since 3.5.0
+ */
+function options_reading_add_js() {
+?>
+<script type="text/javascript">
+       jQuery(document).ready(function($){
+               var section = $('#front-static-pages'),
+                       staticPage = section.find('input:radio[value="page"]'),
+                       selects = section.find('select'),
+                       check_disabled = function(){
+                               selects.prop( 'disabled', ! staticPage.prop('checked') );
+                       };
+               check_disabled();
+               section.find('input:radio').change(check_disabled);
+       });
+</script>
+<?php
+}
+
+/**
+ * Render the blog charset setting.
+ *
+ * @since 3.5.0
+ */
+function options_reading_blog_charset() {
+       echo '<input name="blog_charset" type="text" id="blog_charset" value="' . esc_attr( get_option( 'blog_charset' ) ) . '" class="regular-text" />';
+       echo '<p class="description">' . __( 'The <a href="https://codex.wordpress.org/Glossary#Character_set">character encoding</a> of your site (UTF-8 is recommended)' ) . '</p>';
+}
\ No newline at end of file
index ab776e8dd25bf2626356e66f7a4ae5e47ceca1bf..bb450e12ef62c234085d5ce1ad3867dbb0284cab 100644 (file)
@@ -7,26 +7,98 @@
  */
 
 /**
- * Retrieve plugin installer pages from WordPress Plugins API.
+ * Retrieves plugin installer pages from the WordPress.org Plugins API.
  *
  * It is possible for a plugin to override the Plugin API result with three
  * filters. Assume this is for plugins, which can extend on the Plugin Info to
- * offer more choices. This is very powerful and must be used with care, when
+ * offer more choices. This is very powerful and must be used with care when
  * overriding the filters.
  *
- * The first filter, 'plugins_api_args', is for the args and gives the action as
- * the second parameter. The hook for 'plugins_api_args' must ensure that an
- * object is returned.
+ * The first filter, {@see 'plugins_api_args'}, is for the args and gives the action
+ * as the second parameter. The hook for {@see 'plugins_api_args'} must ensure that
+ * an object is returned.
  *
- * The second filter, 'plugins_api', is the result that would be returned.
+ * The second filter, {@see 'plugins_api'}, allows a plugin to override the WordPress.org
+ * Plugin Install API entirely. If `$action` is 'query_plugins' or 'plugin_information',
+ * an object MUST be passed. If `$action` is 'hot_tags` or 'hot_categories', an array MUST
+ * be passed.
+ *
+ * Finally, the third filter, {@see 'plugins_api_result'}, makes it possible to filter the
+ * response object or array, depending on the `$action` type.
+ *
+ * Supported arguments per action:
+ *
+ * | Argument Name        | query_plugins | plugin_information | hot_tags | hot_categories |
+ * | -------------------- | :-----------: | :----------------: | :------: | :------------: |
+ * | `$slug`              | No            |  Yes               | No       | No             |
+ * | `$per_page`          | Yes           |  No                | No       | No             |
+ * | `$page`              | Yes           |  No                | No       | No             |
+ * | `$number`            | No            |  No                | Yes      | Yes            |
+ * | `$search`            | Yes           |  No                | No       | No             |
+ * | `$tag`               | Yes           |  No                | No       | No             |
+ * | `$author`            | Yes           |  No                | No       | No             |
+ * | `$user`              | Yes           |  No                | No       | No             |
+ * | `$browse`            | Yes           |  No                | No       | No             |
+ * | `$locale`            | Yes           |  Yes               | No       | No             |
+ * | `$installed_plugins` | Yes           |  No                | No       | No             |
+ * | `$is_ssl`            | Yes           |  Yes               | No       | No             |
+ * | `$fields`            | Yes           |  Yes               | No       | No             |
  *
  * @since 2.7.0
  *
- * @param string $action
- * @param array|object $args Optional. Arguments to serialize for the Plugin Info API.
- * @return object plugins_api response object on success, WP_Error on failure.
+ * @param string       $action API action to perform: 'query_plugins', 'plugin_information',
+ *                             'hot_tags' or 'hot_categories'.
+ * @param array|object $args   {
+ *     Optional. Array or object of arguments to serialize for the Plugin Info API.
+ *
+ *     @type string  $slug              The plugin slug. Default empty.
+ *     @type int     $per_page          Number of plugins per page. Default 24.
+ *     @type int     $page              Number of current page. Default 1.
+ *     @type int     $number            Number of tags or categories to be queried.
+ *     @type string  $search            A search term. Default empty.
+ *     @type string  $tag               Tag to filter plugins. Default empty.
+ *     @type string  $author            Username of an plugin author to filter plugins. Default empty.
+ *     @type string  $user              Username to query for their favorites. Default empty.
+ *     @type string  $browse            Browse view: 'popular', 'new', 'beta', 'recommended'.
+ *     @type string  $locale            Locale to provide context-sensitive results. Default is the value
+ *                                      of get_locale().
+ *     @type string  $installed_plugins Installed plugins to provide context-sensitive results.
+ *     @type bool    $is_ssl            Whether links should be returned with https or not. Default false.
+ *     @type array   $fields            {
+ *         Array of fields which should or should not be returned.
+ *
+ *         @type bool $short_description Whether to return the plugin short description. Default true.
+ *         @type bool $description       Whether to return the plugin full description. Default false.
+ *         @type bool $sections          Whether to return the plugin readme sections: description, installation,
+ *                                       FAQ, screenshots, other notes, and changelog. Default false.
+ *         @type bool $tested            Whether to return the 'Compatible up to' value. Default true.
+ *         @type bool $requires          Whether to return the required WordPress version. Default true.
+ *         @type bool $rating            Whether to return the rating in percent and total number of ratings.
+ *                                       Default true.
+ *         @type bool $ratings           Whether to return the number of rating for each star (1-5). Default true.
+ *         @type bool $downloaded        Whether to return the download count. Default true.
+ *         @type bool $downloadlink      Whether to return the download link for the package. Default true.
+ *         @type bool $last_updated      Whether to return the date of the last update. Default true.
+ *         @type bool $added             Whether to return the date when the plugin was added to the wordpress.org
+ *                                       repository. Default true.
+ *         @type bool $tags              Whether to return the assigned tags. Default true.
+ *         @type bool $compatibility     Whether to return the WordPress compatibility list. Default true.
+ *         @type bool $homepage          Whether to return the plugin homepage link. Default true.
+ *         @type bool $versions          Whether to return the list of all available versions. Default false.
+ *         @type bool $donate_link       Whether to return the donation link. Default true.
+ *         @type bool $reviews           Whether to return the plugin reviews. Default false.
+ *         @type bool $banners           Whether to return the banner images links. Default false.
+ *         @type bool $icons             Whether to return the icon links. Default false.
+ *         @type bool $active_installs   Whether to return the number of active installs. Default false.
+ *         @type bool $group             Whether to return the assigned group. Default false.
+ *         @type bool $contributors      Whether to return the list of contributors. Default false.
+ *     }
+ * }
+ * @return object|array|WP_Error Response object or array on success, WP_Error on failure. See the
+ *         {@link https://developer.wordpress.org/reference/functions/plugins_api/ function reference article}
+ *         for more information on the make-up of possible return values depending on the value of `$action`.
  */
-function plugins_api($action, $args = null) {
+function plugins_api( $action, $args = array() ) {
 
        if ( is_array( $args ) ) {
                $args = (object) $args;
@@ -41,9 +113,9 @@ function plugins_api($action, $args = null) {
        }
 
        /**
-        * Override the Plugin Install API arguments.
+        * Filter the WordPress.org Plugin Install API arguments.
         *
-        * Please ensure that an object is returned.
+        * Important: An object MUST be returned to this filter.
         *
         * @since 2.7.0
         *
@@ -53,15 +125,18 @@ function plugins_api($action, $args = null) {
        $args = apply_filters( 'plugins_api_args', $args, $action );
 
        /**
-        * Allows a plugin to override the WordPress.org Plugin Install API entirely.
+        * Filter the response for the current WordPress.org Plugin Install API request.
         *
-        * Please ensure that an object is returned.
+        * Passing a non-false value will effectively short-circuit the WordPress.org API request.
+        *
+        * If `$action` is 'query_plugins' or 'plugin_information', an object MUST be passed.
+        * If `$action` is 'hot_tags` or 'hot_categories', an array should be passed.
         *
         * @since 2.7.0
         *
-        * @param bool|object $result The result object. Default false.
-        * @param string      $action The type of information being requested from the Plugin Install API.
-        * @param object      $args   Plugin API arguments.
+        * @param false|object|array $result The result object or array. Default false.
+        * @param string             $action The type of information being requested from the Plugin Install API.
+        * @param object             $args   Plugin API arguments.
         */
        $res = apply_filters( 'plugins_api', false, $action, $args );
 
@@ -139,7 +214,7 @@ function install_dashboard() {
 
        <?php display_plugins_table(); ?>
 
-       <h3><?php _e( 'Popular tags' ) ?></h3>
+       <h2><?php _e( 'Popular tags' ) ?></h2>
        <p><?php _e( 'You may also browse based on the most popular tags in the Plugin Directory:' ) ?></p>
        <?php
 
@@ -457,7 +532,11 @@ function install_plugin_information() {
        echo "</div>\n";
 
        $date_format = __( 'M j, Y @ H:i' );
-       $last_updated_timestamp = strtotime( $api->last_updated );
+
+       if ( ! empty( $api->last_updated ) ) {
+               $last_updated_timestamp = strtotime( $api->last_updated );
+       }
+
        ?>
        <div id="<?php echo $_tab; ?>-content" class='<?php echo $_with_banner; ?>'>
        <div class="fyi">
@@ -497,7 +576,7 @@ function install_plugin_information() {
                <?php }
 
                if ( ! empty( $api->ratings ) && array_sum( (array) $api->ratings ) > 0 ) {
-                       foreach( $api->ratings as $key => $ratecount ) {
+                       foreach ( $api->ratings as $key => $ratecount ) {
                                // Avoid div-by-zero.
                                $_rating = $api->num_ratings ? ( $ratecount / $api->num_ratings ) : 0;
                                ?>
@@ -526,9 +605,9 @@ function install_plugin_information() {
                                        }
                                        $contrib_username = sanitize_user( $contrib_username );
                                        if ( empty( $contrib_profile ) ) {
-                                               echo "<li><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' />{$contrib_username}</li>";
+                                               echo "<li><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' alt='' />{$contrib_username}</li>";
                                        } else {
-                                               echo "<li><a href='{$contrib_profile}' target='_blank'><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' />{$contrib_username}</a></li>";
+                                               echo "<li><a href='{$contrib_profile}' target='_blank'><img src='https://wordpress.org/grav-redirect.php?user={$contrib_username}&amp;s=36' width='18' height='18' alt='' />{$contrib_username}</a></li>";
                                        }
                                }
                                ?>
@@ -541,9 +620,9 @@ function install_plugin_information() {
        <div id="section-holder" class="wrap">
        <?php
                if ( ! empty( $api->tested ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->tested ) ), $api->tested, '>' ) ) {
-                       echo '<div class="notice notice-warning"><p>' . __('<strong>Warning:</strong> This plugin has <strong>not been tested</strong> with your current version of WordPress.') . '</p></div>';
+                       echo '<div class="notice notice-warning notice-alt"><p>' . __( '<strong>Warning:</strong> This plugin has <strong>not been tested</strong> with your current version of WordPress.' ) . '</p></div>';
                } elseif ( ! empty( $api->requires ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $api->requires ) ), $api->requires, '<' ) ) {
-                       echo '<div class="notice notice-warning"><p>' . __('<strong>Warning:</strong> This plugin has <strong>not been marked as compatible</strong> with your version of WordPress.') . '</p></div>';
+                       echo '<div class="notice notice-warning notice-alt"><p>' . __( '<strong>Warning:</strong> This plugin has <strong>not been marked as compatible</strong> with your version of WordPress.' ) . '</p></div>';
                }
 
                foreach ( (array) $api->sections as $section_name => $content ) {
index 233d99081830c2f69b6dda8db24aed57816c16c1..1dfc977ea15a7dc9f06b0cbb0fce5cada5e9e37d 100644 (file)
@@ -7,7 +7,7 @@
  */
 
 /**
- * Parse the plugin contents to retrieve plugin's metadata.
+ * Parses the plugin contents to retrieve plugin's metadata.
  *
  * The metadata of the plugin's data searches for the following in the plugin's
  * header. All plugin data must be on its own line. For plugin description, it
  *             activated on a single site when Multisite is enabled.
  *      * / # Remove the space to close comment
  *
- * Plugin data returned array contains the following:
- *
- * - 'Name' - Name of the plugin, must be unique.
- * - 'Title' - Title of the plugin and the link to the plugin's web site.
- * - 'Description' - Description of what the plugin does and/or notes
- * - from the author.
- * - 'Author' - The author's name
- * - 'AuthorURI' - The authors web site address.
- * - 'Version' - The plugin version number.
- * - 'PluginURI' - Plugin web site address.
- * - 'TextDomain' - Plugin's text domain for localization.
- * - 'DomainPath' - Plugin's relative directory path to .mo files.
- * - 'Network' - Boolean. Whether the plugin can only be activated network wide.
- *
  * Some users have issues with opening large files and manipulating the contents
  * for want is usually the first 1kiB or 2kiB. This function stops pulling in
  * the plugin contents when it has all of the required plugin data.
  * the file. This is not checked however and the file is only opened for
  * reading.
  *
- * @link https://core.trac.wordpress.org/ticket/5651 Previous Optimizations.
- * @link https://core.trac.wordpress.org/ticket/7372 Further and better Optimizations.
- *
  * @since 1.5.0
  *
  * @param string $plugin_file Path to the plugin file
- * @param bool $markup Optional. If the returned data should have HTML markup applied. Defaults to true.
- * @param bool $translate Optional. If the returned data should be translated. Defaults to true.
- * @return array See above for description.
+ * @param bool   $markup      Optional. If the returned data should have HTML markup applied.
+ *                            Default true.
+ * @param bool   $translate   Optional. If the returned data should be translated. Default true.
+ * @return array {
+ *     Plugin data. Values will be empty if not supplied by the plugin.
+ *
+ *     @type string $Name        Name of the plugin. Should be unique.
+ *     @type string $Title       Title of the plugin and link to the plugin's site (if set).
+ *     @type string $Description Plugin description.
+ *     @type string $Author      Author's name.
+ *     @type string $AuthorURI   Author's website address (if set).
+ *     @type string $Version     Plugin version.
+ *     @type string $TextDomain  Plugin textdomain.
+ *     @type string $DomainPath  Plugins relative directory path to .mo files.
+ *     @type bool   $Network     Whether the plugin can only be activated network-wide.
+ * }
  */
 function get_plugin_data( $plugin_file, $markup = true, $translate = true ) {
 
@@ -89,7 +85,8 @@ function get_plugin_data( $plugin_file, $markup = true, $translate = true ) {
 
        // Site Wide Only is the old header for Network
        if ( ! $plugin_data['Network'] && $plugin_data['_sitewide'] ) {
-               _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The <code>%1$s</code> plugin header is deprecated. Use <code>%2$s</code> instead.' ), 'Site Wide Only: true', 'Network: true' ) );
+               /* translators: 1: Site Wide Only: true, 2: Network: true */
+               _deprecated_argument( __FUNCTION__, '3.0', sprintf( __( 'The %1$s plugin header is deprecated. Use %2$s instead.' ), '<code>Site Wide Only: true</code>', '<code>Network: true</code>' ) );
                $plugin_data['Network'] = $plugin_data['_sitewide'];
        }
        $plugin_data['Network'] = ( 'true' == strtolower( $plugin_data['Network'] ) );
@@ -765,7 +762,7 @@ function delete_plugins( $plugins, $deprecated = '' ) {
                return false;
 
        $checked = array();
-       foreach( $plugins as $plugin )
+       foreach ( $plugins as $plugin )
                $checked[] = 'checked[]=' . $plugin;
 
        ob_start();
@@ -813,13 +810,23 @@ function delete_plugins( $plugins, $deprecated = '' ) {
 
        $errors = array();
 
-       foreach( $plugins as $plugin_file ) {
+       foreach ( $plugins as $plugin_file ) {
                // Run Uninstall hook.
                if ( is_uninstallable_plugin( $plugin_file ) ) {
                        uninstall_plugin($plugin_file);
                }
 
+               /**
+                * Fires immediately before a plugin deletion attempt.
+                *
+                * @since 4.4.0
+                *
+                * @param string $plugin_file Plugin file name.
+                */
+               do_action( 'delete_plugin', $plugin_file );
+
                $this_plugin_dir = trailingslashit( dirname( $plugins_dir . $plugin_file ) );
+
                // If plugin is in its own directory, recursively delete the directory.
                if ( strpos( $plugin_file, '/' ) && $this_plugin_dir != $plugins_dir ) { //base check on if plugin includes directory separator AND that it's not the root plugin folder
                        $deleted = $wp_filesystem->delete( $this_plugin_dir, true );
@@ -827,6 +834,16 @@ function delete_plugins( $plugins, $deprecated = '' ) {
                        $deleted = $wp_filesystem->delete( $plugins_dir . $plugin_file );
                }
 
+               /**
+                * Fires immediately after a plugin deletion attempt.
+                *
+                * @since 4.4.0
+                *
+                * @param string $plugin_file Plugin file name.
+                * @param bool   $deleted     Whether the plugin deletion was successful.
+                */
+               do_action( 'deleted_plugin', $plugin_file, $deleted );
+
                if ( ! $deleted ) {
                        $errors[] = $plugin_file;
                        continue;
@@ -996,7 +1013,7 @@ function uninstall_plugin($plugin) {
 //
 
 /**
- * Add a top level menu page
+ * Add a top-level menu page.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1009,19 +1026,19 @@ function uninstall_plugin($plugin) {
  * @global array $_registered_pages
  * @global array $_parent_pages
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- * @param string $icon_url The url to the icon to be used for this menu.
- *     * Pass a base64-encoded SVG using a data URI, which will be colored to match the color scheme.
- *       This should begin with 'data:image/svg+xml;base64,'.
- *     * Pass the name of a Dashicons helper class to use a font icon, e.g. 'dashicons-chart-pie'.
- *     * Pass 'none' to leave div.wp-menu-image empty so an icon can be added via CSS.
- * @param int $position The position in the menu order this one should appear
- *
- * @return string The resulting page's hook_suffix
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
+ * @param string   $icon_url   The URL to the icon to be used for this menu.
+ *                             * Pass a base64-encoded SVG using a data URI, which will be colored to match
+ *                               the color scheme. This should begin with 'data:image/svg+xml;base64,'.
+ *                             * Pass the name of a Dashicons helper class to use a font icon,
+ *                               e.g. 'dashicons-chart-pie'.
+ *                             * Pass 'none' to leave div.wp-menu-image empty so an icon can be added via CSS.
+ * @param int      $position   The position in the menu order this one should appear.
+ * @return string The resulting page's hook_suffix.
  */
 function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '', $position = null ) {
        global $menu, $admin_page_hooks, $_registered_pages, $_parent_pages;
@@ -1045,10 +1062,14 @@ function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $func
 
        $new_menu = array( $menu_title, $capability, $menu_slug, $page_title, 'menu-top ' . $icon_class . $hookname, $hookname, $icon_url );
 
-       if ( null === $position )
+       if ( null === $position ) {
                $menu[] = $new_menu;
-       else
-               $menu[$position] = $new_menu;
+       } elseif ( isset( $menu[ "$position" ] ) ) {
+               $position = $position + substr( base_convert( md5( $menu_slug . $menu_title ), 16, 10 ) , -5 ) * 0.00001;
+               $menu[ "$position" ] = $new_menu;
+       } else {
+               $menu[ $position ] = $new_menu;
+       }
 
        $_registered_pages[$hookname] = true;
 
@@ -1059,7 +1080,7 @@ function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $func
 }
 
 /**
- * Add a top level menu page in the 'objects' section
+ * Add a top-level menu page in the 'objects' section.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1069,14 +1090,13 @@ function add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $func
  *
  * @global int $_wp_last_object_menu
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- * @param string $icon_url The url to the icon to be used for this menu
- *
- * @return string The resulting page's hook_suffix
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
+ * @param string   $icon_url   The url to the icon to be used for this menu.
+ * @return string The resulting page's hook_suffix.
  */
 function add_object_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '') {
        global $_wp_last_object_menu;
@@ -1087,7 +1107,7 @@ function add_object_page( $page_title, $menu_title, $capability, $menu_slug, $fu
 }
 
 /**
- * Add a top level menu page in the 'utility' section
+ * Add a top-level menu page in the 'utility' section.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1097,14 +1117,13 @@ function add_object_page( $page_title, $menu_title, $capability, $menu_slug, $fu
  *
  * @global int $_wp_last_utility_menu
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- * @param string $icon_url The url to the icon to be used for this menu
- *
- * @return string The resulting page's hook_suffix
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
+ * @param string   $icon_url   The url to the icon to be used for this menu.
+ * @return string The resulting page's hook_suffix.
  */
 function add_utility_page( $page_title, $menu_title, $capability, $menu_slug, $function = '', $icon_url = '') {
        global $_wp_last_utility_menu;
@@ -1115,7 +1134,7 @@ function add_utility_page( $page_title, $menu_title, $capability, $menu_slug, $f
 }
 
 /**
- * Add a sub menu page
+ * Add a submenu page.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1125,18 +1144,17 @@ function add_utility_page( $page_title, $menu_title, $capability, $menu_slug, $f
  *
  * @global array $submenu
  * @global array $menu
- * @global type $_wp_real_parent_file
- * @global bool $_wp_submenu_nopriv
+ * @global array $_wp_real_parent_file
+ * @global bool  $_wp_submenu_nopriv
  * @global array $_registered_pages
  * @global array $_parent_pages
  *
- * @param string $parent_slug The slug name for the parent menu (or the file name of a standard WordPress admin page)
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $parent_slug The slug name for the parent menu (or the file name of a standard WordPress admin page).
+ * @param string   $page_title  The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title  The text to be used for the menu.
+ * @param string   $capability  The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug   The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function    The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
  */
 function add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1189,7 +1207,7 @@ function add_submenu_page( $parent_slug, $page_title, $menu_title, $capability,
 }
 
 /**
- * Add sub menu page to the tools main menu.
+ * Add submenu page to the Tools main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1197,12 +1215,11 @@ function add_submenu_page( $parent_slug, $page_title, $menu_title, $capability,
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
  */
 function add_management_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1210,7 +1227,7 @@ function add_management_page( $page_title, $menu_title, $capability, $menu_slug,
 }
 
 /**
- * Add sub menu page to the options main menu.
+ * Add submenu page to the Settings main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1218,12 +1235,11 @@ function add_management_page( $page_title, $menu_title, $capability, $menu_slug,
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
  */
 function add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1231,7 +1247,7 @@ function add_options_page( $page_title, $menu_title, $capability, $menu_slug, $f
 }
 
 /**
- * Add sub menu page to the themes main menu.
+ * Add submenu page to the Appearance main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1239,12 +1255,11 @@ function add_options_page( $page_title, $menu_title, $capability, $menu_slug, $f
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
  */
 function add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1252,7 +1267,7 @@ function add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $fun
 }
 
 /**
- * Add sub menu page to the plugins main menu.
+ * Add submenu page to the Plugins main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1260,12 +1275,11 @@ function add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $fun
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
  */
 function add_plugins_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1273,7 +1287,7 @@ function add_plugins_page( $page_title, $menu_title, $capability, $menu_slug, $f
 }
 
 /**
- * Add sub menu page to the Users/Profile main menu.
+ * Add submenu page to the Users/Profile main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1281,12 +1295,11 @@ function add_plugins_page( $page_title, $menu_title, $capability, $menu_slug, $f
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
  */
 function add_users_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1297,7 +1310,7 @@ function add_users_page( $page_title, $menu_title, $capability, $menu_slug, $fun
        return add_submenu_page( $parent, $page_title, $menu_title, $capability, $menu_slug, $function );
 }
 /**
- * Add sub menu page to the Dashboard main menu.
+ * Add submenu page to the Dashboard main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1305,12 +1318,11 @@ function add_users_page( $page_title, $menu_title, $capability, $menu_slug, $fun
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
  */
 function add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1318,7 +1330,7 @@ function add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug,
 }
 
 /**
- * Add sub menu page to the posts main menu.
+ * Add submenu page to the Posts main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1326,12 +1338,11 @@ function add_dashboard_page( $page_title, $menu_title, $capability, $menu_slug,
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
  */
 function add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1339,7 +1350,7 @@ function add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $fun
 }
 
 /**
- * Add sub menu page to the media main menu.
+ * Add submenu page to the Media main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1347,12 +1358,11 @@ function add_posts_page( $page_title, $menu_title, $capability, $menu_slug, $fun
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
  */
 function add_media_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1360,7 +1370,7 @@ function add_media_page( $page_title, $menu_title, $capability, $menu_slug, $fun
 }
 
 /**
- * Add sub menu page to the links main menu.
+ * Add submenu page to the Links main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1368,12 +1378,11 @@ function add_media_page( $page_title, $menu_title, $capability, $menu_slug, $fun
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
  */
 function add_links_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1381,7 +1390,7 @@ function add_links_page( $page_title, $menu_title, $capability, $menu_slug, $fun
 }
 
 /**
- * Add sub menu page to the pages main menu.
+ * Add submenu page to the Pages main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1389,12 +1398,11 @@ function add_links_page( $page_title, $menu_title, $capability, $menu_slug, $fun
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
 */
 function add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1402,7 +1410,7 @@ function add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $fun
 }
 
 /**
- * Add sub menu page to the comments main menu.
+ * Add submenu page to the Comments main menu.
  *
  * This function takes a capability which will be used to determine whether
  * or not a page is included in the menu.
@@ -1410,12 +1418,11 @@ function add_pages_page( $page_title, $menu_title, $capability, $menu_slug, $fun
  * The function which is hooked in to handle the output of the page must check
  * that the user has the required capability as well.
  *
- * @param string $page_title The text to be displayed in the title tags of the page when the menu is selected
- * @param string $menu_title The text to be used for the menu
- * @param string $capability The capability required for this menu to be displayed to the user.
- * @param string $menu_slug The slug name to refer to this menu by (should be unique for this menu)
- * @param callback $function The function to be called to output the content for this page.
- *
+ * @param string   $page_title The text to be displayed in the title tags of the page when the menu is selected.
+ * @param string   $menu_title The text to be used for the menu.
+ * @param string   $capability The capability required for this menu to be displayed to the user.
+ * @param string   $menu_slug  The slug name to refer to this menu by (should be unique for this menu).
+ * @param callable $function   The function to be called to output the content for this page.
  * @return false|string The resulting page's hook_suffix, or false if the user does not have the capability required.
 */
 function add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $function = '' ) {
@@ -1423,14 +1430,14 @@ function add_comments_page( $page_title, $menu_title, $capability, $menu_slug, $
 }
 
 /**
- * Remove a top level admin menu
+ * Remove a top-level admin menu.
  *
  * @since 3.1.0
  *
  * @global array $menu
  *
- * @param string $menu_slug The slug of the menu
- * @return array|bool The removed menu on success, False if not found
+ * @param string $menu_slug The slug of the menu.
+ * @return array|bool The removed menu on success, false if not found.
  */
 function remove_menu_page( $menu_slug ) {
        global $menu;
@@ -1446,15 +1453,15 @@ function remove_menu_page( $menu_slug ) {
 }
 
 /**
- * Remove an admin submenu
+ * Remove an admin submenu.
  *
  * @since 3.1.0
  *
  * @global array $submenu
  *
- * @param string $menu_slug The slug for the parent menu
- * @param string $submenu_slug The slug of the submenu
- * @return array|bool The removed submenu on success, False if not found
+ * @param string $menu_slug    The slug for the parent menu.
+ * @param string $submenu_slug The slug of the submenu.
+ * @return array|bool The removed submenu on success, false if not found.
  */
 function remove_submenu_page( $menu_slug, $submenu_slug ) {
        global $submenu;
@@ -1518,7 +1525,7 @@ function menu_page_url($menu_slug, $echo = true) {
  * @global string $pagenow
  * @global string $typenow
  * @global string $plugin_page
- * @global string $_wp_real_parent_file
+ * @global array $_wp_real_parent_file
  * @global array $_wp_menu_nopriv
  * @global array $_wp_submenu_nopriv
  */
@@ -1842,7 +1849,7 @@ function unregister_setting( $option_group, $option_name, $sanitize_callback = '
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Refreshes the value of the options whitelist available via the 'whitelist_options' filter.
  *
  * @since 2.7.0
  *
@@ -1861,7 +1868,7 @@ function option_update_filter( $options ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Adds an array of options to the options whitelist.
  *
  * @since 2.7.0
  *
@@ -1894,7 +1901,7 @@ function add_option_whitelist( $new_options, $options = '' ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Removes a list of options from the options whitelist.
  *
  * @since 2.7.0
  *
@@ -1948,3 +1955,11 @@ function wp_clean_plugins_cache( $clear_update_cache = true ) {
                delete_site_transient( 'update_plugins' );
        wp_cache_delete( 'plugins', 'plugins' );
 }
+
+/**
+ * @param string $plugin
+ */
+function plugin_sandbox_scrape( $plugin ) {
+       wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . $plugin );
+       include( WP_PLUGIN_DIR . '/' . $plugin );
+}
index 5fcceec0014decdfcf3bbaffa3f29287bf1ff45d..fa3e400e3c174949763b7a974d191b4837c318f1 100644 (file)
@@ -173,7 +173,7 @@ function _wp_translate_postdata( $update = false, $post_data = null ) {
  *
  * @since 1.5.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param array $post_data Optional.
  * @return int Post ID.
@@ -371,7 +371,7 @@ function edit_post( $post_data = null ) {
        if ( ! $success && is_callable( array( $wpdb, 'strip_invalid_text_for_column' ) ) ) {
                $fields = array( 'post_title', 'post_content', 'post_excerpt' );
 
-               foreach( $fields as $field ) {
+               foreach ( $fields as $field ) {
                        if ( isset( $post_data[ $field ] ) ) {
                                $post_data[ $field ] = $wpdb->strip_invalid_text_for_column( $wpdb->posts, $field, $post_data[ $field ] );
                        }
@@ -403,7 +403,7 @@ function edit_post( $post_data = null ) {
  *
  * @since 2.7.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param array $post_data Optional, the array of post data to process if not provided will use $_POST superglobal.
  * @return array
@@ -577,7 +577,8 @@ function bulk_edit_posts( $post_data = null ) {
  *
  * @since 2.0.0
  *
- * @param string $post_type A post type string, defaults to 'post'.
+ * @param string $post_type    Optional. A post type string. Default 'post'.
+ * @param bool   $create_in_db Optional. Whether to insert the post into database. Default false.
  * @return WP_Post Post object containing all the default post data as attributes
  */
 function get_default_post_to_edit( $post_type = 'post', $create_in_db = false ) {
@@ -658,7 +659,7 @@ function get_default_post_to_edit( $post_type = 'post', $create_in_db = false )
  *
  * @since 2.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $title Post title
  * @param string $content Optional post content
@@ -842,7 +843,7 @@ function delete_meta( $mid ) {
  *
  * @since 1.2.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @return mixed
  */
@@ -875,7 +876,7 @@ function get_post_meta_by_id( $mid ) {
  *
  * @since 1.2.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $postid
  * @return mixed
@@ -1003,15 +1004,17 @@ function wp_edit_posts_query( $q = false ) {
                $perm = 'readable';
        }
 
-       if ( isset($q['orderby']) )
+       if ( isset( $q['orderby'] ) ) {
                $orderby = $q['orderby'];
-       elseif ( isset($q['post_status']) && in_array($q['post_status'], array('pending', 'draft')) )
+       } elseif ( isset( $q['post_status'] ) && in_array( $q['post_status'], array( 'pending', 'draft' ) ) ) {
                $orderby = 'modified';
+       }
 
-       if ( isset($q['order']) )
+       if ( isset( $q['order'] ) ) {
                $order = $q['order'];
-       elseif ( isset($q['post_status']) && 'pending' == $q['post_status'] )
+       } elseif ( isset( $q['post_status'] ) && 'pending' == $q['post_status'] ) {
                $order = 'ASC';
+       }
 
        $per_page = "edit_{$post_type}_per_page";
        $posts_per_page = (int) get_user_option( $per_page );
@@ -1067,7 +1070,7 @@ function wp_edit_posts_query( $q = false ) {
  *
  * @since 2.5.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $type
  * @return mixed
@@ -1123,7 +1126,7 @@ function wp_edit_attachments_query_vars( $q = false ) {
                unset($q['post_mime_type']);
        }
 
-       foreach( array_keys( $post_mime_types ) as $type ) {
+       foreach ( array_keys( $post_mime_types ) as $type ) {
                if ( isset( $q['attachment-filter'] ) && "post_mime_type:$type" == $q['attachment-filter'] ) {
                        $q['post_mime_type'] = $type;
                        break;
@@ -1242,20 +1245,31 @@ function get_sample_permalink($id, $title = null, $name = null) {
                }
 
                /** This filter is documented in wp-admin/edit-tag-form.php */
-               $uri = apply_filters( 'editable_slug', $uri );
+               $uri = apply_filters( 'editable_slug', $uri, $post );
                if ( !empty($uri) )
                        $uri .= '/';
                $permalink = str_replace('%pagename%', "{$uri}%pagename%", $permalink);
        }
 
        /** This filter is documented in wp-admin/edit-tag-form.php */
-       $permalink = array( $permalink, apply_filters( 'editable_slug', $post->post_name ) );
+       $permalink = array( $permalink, apply_filters( 'editable_slug', $post->post_name, $post ) );
        $post->post_status = $original_status;
        $post->post_date = $original_date;
        $post->post_name = $original_name;
        unset($post->filter);
 
-       return $permalink;
+       /**
+        * Filter the sample permalink.
+        *
+        * @since 4.4.0
+        *
+        * @param string  $permalink Sample permalink.
+        * @param int     $post_id   Post ID.
+        * @param string  $title     Post title.
+        * @param string  $name      Post name (slug).
+        * @param WP_Post $post      Post object.
+        */
+       return apply_filters( 'get_sample_permalink', $permalink, $post->ID, $title, $name, $post );
 }
 
 /**
@@ -1275,74 +1289,76 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) {
 
        list($permalink, $post_name) = get_sample_permalink($post->ID, $new_title, $new_slug);
 
-       if ( current_user_can( 'read_post', $post->ID ) ) {
-               $ptype = get_post_type_object( $post->post_type );
-               $view_post = $ptype->labels->view_item;
-       }
+       $view_link = false;
+       $preview_target = '';
 
-       if ( 'publish' == get_post_status( $post ) ) {
-               $title = __('Click to edit this part of the permalink');
-       } else {
-               $title = __('Temporary permalink. Click to edit this part.');
+       if ( current_user_can( 'read_post', $post->ID ) ) {
+               if ( 'draft' === $post->post_status ) {
+                       $draft_link = set_url_scheme( get_permalink( $post->ID ) );
+                       $view_link = get_preview_post_link( $post, array(), $draft_link );
+                       $preview_target = " target='wp-preview-{$post->ID}'";
+               } else {
+                       if ( 'publish' === $post->post_status || 'attachment' === $post->post_type ) {
+                               $view_link = get_permalink( $post );
+                       } else {
+                               // Allow non-published (private, future) to be viewed at a pretty permalink.
+                               $view_link = str_replace( array( '%pagename%', '%postname%' ), $post->post_name, urldecode( $permalink ) );
+                       }
+               }
        }
 
+       // Permalinks without a post/page name placeholder don't have anything to edit
        if ( false === strpos( $permalink, '%postname%' ) && false === strpos( $permalink, '%pagename%' ) ) {
-               $return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink" tabindex="-1">' . $permalink . "</span>\n";
+               $return = '<strong>' . __( 'Permalink:' ) . "</strong>\n";
+
+               if ( false !== $view_link ) {
+                       $return .= '<a id="sample-permalink" href="' . esc_url( $view_link ) . '"' . $preview_target . '>' . $view_link . "</a>\n";
+               } else {
+                       $return .= '<span id="sample-permalink">' . $permalink . "</span>\n";
+               }
+
+               // Encourage a pretty permalink setting
                if ( '' == get_option( 'permalink_structure' ) && current_user_can( 'manage_options' ) && !( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') ) ) {
                        $return .= '<span id="change-permalinks"><a href="options-permalink.php" class="button button-small" target="_blank">' . __('Change Permalinks') . "</a></span>\n";
                }
        } else {
                if ( function_exists( 'mb_strlen' ) ) {
-                       if ( mb_strlen( $post_name ) > 30 ) {
-                               $post_name_abridged = mb_substr( $post_name, 0, 14 ) . '&hellip;' . mb_substr( $post_name, -14 );
+                       if ( mb_strlen( $post_name ) > 34 ) {
+                               $post_name_abridged = mb_substr( $post_name, 0, 16 ) . '&hellip;' . mb_substr( $post_name, -16 );
                        } else {
                                $post_name_abridged = $post_name;
                        }
                } else {
-                       if ( strlen( $post_name ) > 30 ) {
-                               $post_name_abridged = substr( $post_name, 0, 14 ) . '&hellip;' . substr( $post_name, -14 );
+                       if ( strlen( $post_name ) > 34 ) {
+                               $post_name_abridged = substr( $post_name, 0, 16 ) . '&hellip;' . substr( $post_name, -16 );
                        } else {
                                $post_name_abridged = $post_name;
                        }
                }
 
-               $post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name_abridged . '</span>';
+               $post_name_html = '<span id="editable-post-name">' . $post_name_abridged . '</span>';
                $display_link = str_replace( array( '%pagename%', '%postname%' ), $post_name_html, urldecode( $permalink ) );
-               $pretty_permalink = str_replace( array( '%pagename%', '%postname%' ), $post_name, urldecode( $permalink ) );
 
-               $return =  '<strong>' . __( 'Permalink:' ) . "</strong>\n";
-               $return .= '<span id="sample-permalink" tabindex="-1">' . $display_link . "</span>\n";
+               $return = '<strong>' . __( 'Permalink:' ) . "</strong>\n";
+               $return .= '<span id="sample-permalink"><a href="' . esc_url( $view_link ) . '"' . $preview_target . '>' . $display_link . "</a></span>\n";
                $return .= '&lrm;'; // Fix bi-directional text display defect in RTL languages.
-               $return .= '<span id="edit-slug-buttons"><a href="#post_name" class="edit-slug button button-small hide-if-no-js" onclick="editPermalink(' . $id . '); return false;">' . __( 'Edit' ) . "</a></span>\n";
+               $return .= '<span id="edit-slug-buttons"><button type="button" class="edit-slug button button-small hide-if-no-js" aria-label="' . __( 'Edit permalink' ) . '">' . __( 'Edit' ) . "</button></span>\n";
                $return .= '<span id="editable-post-name-full">' . $post_name . "</span>\n";
        }
 
-       if ( isset( $view_post ) ) {
-               if ( 'draft' == $post->post_status ) {
-                       $preview_link = set_url_scheme( get_permalink( $post->ID ) );
-                       /** This filter is documented in wp-admin/includes/meta-boxes.php */
-                       $preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post );
-                       $return .= "<span id='view-post-btn'><a href='" . esc_url( $preview_link ) . "' class='button button-small' target='wp-preview-{$post->ID}'>$view_post</a></span>\n";
-               } else {
-                       if ( empty( $pretty_permalink ) ) {
-                               $pretty_permalink = $permalink;
-                       }
-
-                       $return .= "<span id='view-post-btn'><a href='" . $pretty_permalink . "' class='button button-small'>$view_post</a></span>\n";
-               }
-       }
-
        /**
         * Filter the sample permalink HTML markup.
         *
         * @since 2.9.0
+        * @since 4.4.0 Added `$post` parameter.
         *
-        * @param string      $return    Sample permalink HTML markup.
-        * @param int|WP_Post $id        Post object or ID.
-        * @param string      $new_title New sample permalink title.
-        * @param string      $new_slug  New sample permalink slug.
+        * @param string  $return    Sample permalink HTML markup.
+        * @param int     $post_id   Post ID.
+        * @param string  $new_title New sample permalink title.
+        * @param string  $new_slug  New sample permalink slug.
+        * @param WP_Post $post      Post object.
         */
-       $return = apply_filters( 'get_sample_permalink_html', $return, $id, $new_title, $new_slug );
+       $return = apply_filters( 'get_sample_permalink_html', $return, $post->ID, $new_title, $new_slug, $post );
 
        return $return;
 }
@@ -1374,12 +1390,29 @@ function _wp_post_thumbnail_html( $thumbnail_id = null, $post = null ) {
        );
 
        if ( $thumbnail_id && get_post( $thumbnail_id ) ) {
-               $old_content_width = $content_width;
-               $content_width = 266;
-               if ( !isset( $_wp_additional_image_sizes['post-thumbnail'] ) )
-                       $thumbnail_html = wp_get_attachment_image( $thumbnail_id, array( $content_width, $content_width ) );
-               else
-                       $thumbnail_html = wp_get_attachment_image( $thumbnail_id, 'post-thumbnail' );
+               $size = isset( $_wp_additional_image_sizes['post-thumbnail'] ) ? 'post-thumbnail' : array( 266, 266 );
+
+               /**
+                * Filter the size used to display the post thumbnail image in the 'Featured Image' meta box.
+                *
+                * Note: When a theme adds 'post-thumbnail' support, a special 'post-thumbnail'
+                * image size is registered, which differs from the 'thumbnail' image size
+                * managed via the Settings > Media screen. See the `$size` parameter description
+                * for more information on default values.
+                *
+                * @since 4.4.0
+                *
+                * @param string|array $size         Post thumbnail image size to display in the meta box. Accepts any valid
+                *                                   image size, or an array of width and height values in pixels (in that order).
+                *                                   If the 'post-thumbnail' size is set, default is 'post-thumbnail'. Otherwise,
+                *                                   default is an array with 266 as both the height and width values.
+                * @param int          $thumbnail_id Post thumbnail attachment ID.
+                * @param WP_Post      $post         The post object associated with the thumbnail.
+                */
+               $size = apply_filters( 'admin_post_thumbnail_size', $size, $thumbnail_id, $post );
+
+               $thumbnail_html = wp_get_attachment_image( $thumbnail_id, $size );
+
                if ( !empty( $thumbnail_html ) ) {
                        $ajax_nonce = wp_create_nonce( 'set_post_thumbnail-' . $post->ID );
                        $content = sprintf( $set_thumbnail_link,
@@ -1389,7 +1422,6 @@ function _wp_post_thumbnail_html( $thumbnail_id = null, $post = null ) {
                        );
                        $content .= '<p class="hide-if-no-js"><a href="#" id="remove-post-thumbnail" onclick="WPRemoveThumbnail(\'' . $ajax_nonce . '\');return false;">' . esc_html( $post_type_object->labels->remove_featured_image ) . '</a></p>';
                }
-               $content_width = $old_content_width;
        }
 
        /**
@@ -1508,20 +1540,17 @@ function _admin_notice_post_locked() {
        <?php
 
        if ( $locked ) {
+               $query_args = array();
                if ( get_post_type_object( $post->post_type )->public ) {
-                       $preview_link = set_url_scheme( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) );
-
                        if ( 'publish' == $post->post_status || $user->ID != $post->post_author ) {
                                // Latest content is in autosave
                                $nonce = wp_create_nonce( 'post_preview_' . $post->ID );
-                               $preview_link = add_query_arg( array( 'preview_id' => $post->ID, 'preview_nonce' => $nonce ), $preview_link );
+                               $query_args['preview_id'] = $post->ID;
+                               $query_args['preview_nonce'] = $nonce;
                        }
-               } else {
-                       $preview_link = '';
                }
 
-               /** This filter is documented in wp-admin/includes/meta-boxes.php */
-               $preview_link = apply_filters( 'preview_post_link', $preview_link, $post );
+               $preview_link = get_preview_post_link( $post->ID, $query_args );
 
                /**
                 * Filter whether to allow the post lock to be overridden.
@@ -1582,7 +1611,7 @@ function _admin_notice_post_locked() {
                        <div class="post-locked-avatar"></div>
                        <p class="wp-tab-first" tabindex="0">
                        <span class="currently-editing"></span><br />
-                       <span class="locked-saving hidden"><img src="<?php echo esc_url( admin_url( 'images/spinner-2x.gif' ) ); ?>" width="16" height="16" /> <?php _e('Saving revision...'); ?></span>
+                       <span class="locked-saving hidden"><img src="<?php echo esc_url( admin_url( 'images/spinner-2x.gif' ) ); ?>" width="16" height="16" alt="" /> <?php _e( 'Saving revision&hellip;' ); ?></span>
                        <span class="locked-saved hidden"><?php _e('Your latest changes were saved as a revision.'); ?></span>
                        </p>
                        <?php
@@ -1707,7 +1736,7 @@ function post_preview() {
        if ( is_wp_error( $saved_post_id ) )
                wp_die( $saved_post_id->get_error_message() );
 
-       $query_args = array( 'preview' => 'true' );
+       $query_args = array();
 
        if ( $is_autosave && $saved_post_id ) {
                $query_args['preview_id'] = $post->ID;
@@ -1717,10 +1746,7 @@ function post_preview() {
                        $query_args['post_format'] = empty( $_POST['post_format'] ) ? 'standard' : sanitize_key( $_POST['post_format'] );
        }
 
-       $url = add_query_arg( $query_args, get_permalink( $post->ID ) );
-
-       /** This filter is documented in wp-admin/includes/meta-boxes.php */
-       return apply_filters( 'preview_post_link', $url, $post );
+       return get_preview_post_link( $post, $query_args );
 }
 
 /**
@@ -1766,3 +1792,52 @@ function wp_autosave( $post_data ) {
                return wp_create_post_autosave( wp_slash( $post_data ) );
        }
 }
+
+/**
+ * Redirect to previous page.
+ *
+ * @param int $post_id Optional. Post ID.
+ */
+function redirect_post($post_id = '') {
+       if ( isset($_POST['save']) || isset($_POST['publish']) ) {
+               $status = get_post_status( $post_id );
+
+               if ( isset( $_POST['publish'] ) ) {
+                       switch ( $status ) {
+                               case 'pending':
+                                       $message = 8;
+                                       break;
+                               case 'future':
+                                       $message = 9;
+                                       break;
+                               default:
+                                       $message = 6;
+                       }
+               } else {
+                       $message = 'draft' == $status ? 10 : 1;
+               }
+
+               $location = add_query_arg( 'message', $message, get_edit_post_link( $post_id, 'url' ) );
+       } elseif ( isset($_POST['addmeta']) && $_POST['addmeta'] ) {
+               $location = add_query_arg( 'message', 2, wp_get_referer() );
+               $location = explode('#', $location);
+               $location = $location[0] . '#postcustom';
+       } elseif ( isset($_POST['deletemeta']) && $_POST['deletemeta'] ) {
+               $location = add_query_arg( 'message', 3, wp_get_referer() );
+               $location = explode('#', $location);
+               $location = $location[0] . '#postcustom';
+       } else {
+               $location = add_query_arg( 'message', 4, get_edit_post_link( $post_id, 'url' ) );
+       }
+
+       /**
+        * Filter the post redirect destination URL.
+        *
+        * @since 2.9.0
+        *
+        * @param string $location The destination URL.
+        * @param int    $post_id  The post ID.
+        */
+       wp_redirect( apply_filters( 'redirect_post_location', $location, $post_id ) );
+       exit;
+}
\ No newline at end of file
index 67bb56c761bc6d5b51f86ed32ec2ea74cc794cca..eb03e609c8ac67593549d7db884c8e2b2b3ae022 100644 (file)
@@ -4,6 +4,7 @@
  *
  * @package WordPress
  * @subpackage Administration
+ * @since 3.6.0
  */
 
 /**
@@ -199,7 +200,7 @@ function wp_prepare_revisions_for_js( $post, $selected_revision_id, $from = null
                        $current_id = $revision->ID;
                }
 
-               $revisions[ $revision->ID ] = array(
+               $revisions_data = array(
                        'id'         => $revision->ID,
                        'title'      => get_the_title( $post->ID ),
                        'author'     => $authors[ $revision->post_author ],
@@ -210,6 +211,30 @@ function wp_prepare_revisions_for_js( $post, $selected_revision_id, $from = null
                        'current'    => $current,
                        'restoreUrl' => $can_restore ? $restore_link : false,
                );
+
+               /**
+                * Filter the array of revisions used on the revisions screen.
+                *
+                * @since 4.4.0
+                *
+                * @param array   $revisions_data {
+                *     The bootstrapped data for the revisions screen.
+                *
+                *     @type int        $id         Revision ID.
+                *     @type string     $title      Title for the revision's parent WP_Post object.
+                *     @type int        $author     Revision post author ID.
+                *     @type string     $date       Date the revision was modified.
+                *     @type string     $dateShort  Short-form version of the date the revision was modified.
+                *     @type string     $timeAgo    GMT-aware amount of time ago the revision was modified.
+                *     @type bool       $autosave   Whether the revision is an autosave.
+                *     @type bool       $current    Whether the revision is both not an autosave and the post
+                *                                  modified date matches the revision modified date (GMT-aware).
+                *     @type bool|false $restoreUrl URL if the revision can be restored, false otherwise.
+                * }
+                * @param WP_Post $revision       The revision's WP_Post object.
+                * @param WP_Post $post           The revision's parent WP_Post object.
+                */
+               $revisions[ $revision->ID ] = apply_filters( 'wp_prepare_revision_for_js', $revisions_data, $revision, $post );
        }
 
        /**
index 8c84054803aa6fc42816d61496ef2695e6c282d7..4f49dc21e1267dc28a29f14e190da8e9c85a0f45 100644 (file)
@@ -27,7 +27,7 @@ $charset_collate = $wpdb->get_charset_collate();
  *
  * @since 3.3.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $scope Optional. The tables for which to retrieve SQL. Can be all, global, ms_global, or blog tables. Defaults to all.
  * @param int $blog_id Optional. The blog ID for which to retrieve SQL. Default is the current blog ID.
@@ -57,7 +57,16 @@ function wp_get_db_schema( $scope = 'all', $blog_id = null ) {
        $max_index_length = 191;
 
        // Blog specific tables.
-       $blog_tables = "CREATE TABLE $wpdb->terms (
+       $blog_tables = "CREATE TABLE $wpdb->termmeta (
+  meta_id bigint(20) unsigned NOT NULL auto_increment,
+  term_id bigint(20) unsigned NOT NULL default '0',
+  meta_key varchar(255) default NULL,
+  meta_value longtext,
+  PRIMARY KEY  (meta_id),
+  KEY term_id (term_id),
+  KEY meta_key (meta_key($max_index_length))
+) $charset_collate;
+CREATE TABLE $wpdb->terms (
  term_id bigint(20) unsigned NOT NULL auto_increment,
  name varchar(200) NOT NULL default '',
  slug varchar(200) NOT NULL default '',
@@ -135,7 +144,7 @@ CREATE TABLE $wpdb->links (
 ) $charset_collate;
 CREATE TABLE $wpdb->options (
   option_id bigint(20) unsigned NOT NULL auto_increment,
-  option_name varchar(64) NOT NULL default '',
+  option_name varchar(191) NOT NULL default '',
   option_value longtext NOT NULL,
   autoload varchar(20) NOT NULL default 'yes',
   PRIMARY KEY  (option_id),
@@ -185,12 +194,12 @@ CREATE TABLE $wpdb->posts (
        $users_single_table = "CREATE TABLE $wpdb->users (
   ID bigint(20) unsigned NOT NULL auto_increment,
   user_login varchar(60) NOT NULL default '',
-  user_pass varchar(64) NOT NULL default '',
+  user_pass varchar(255) NOT NULL default '',
   user_nicename varchar(50) NOT NULL default '',
   user_email varchar(100) NOT NULL default '',
   user_url varchar(100) NOT NULL default '',
   user_registered datetime NOT NULL default '0000-00-00 00:00:00',
-  user_activation_key varchar(60) NOT NULL default '',
+  user_activation_key varchar(255) NOT NULL default '',
   user_status int(11) NOT NULL default '0',
   display_name varchar(250) NOT NULL default '',
   PRIMARY KEY  (ID),
@@ -202,12 +211,12 @@ CREATE TABLE $wpdb->posts (
        $users_multi_table = "CREATE TABLE $wpdb->users (
   ID bigint(20) unsigned NOT NULL auto_increment,
   user_login varchar(60) NOT NULL default '',
-  user_pass varchar(64) NOT NULL default '',
+  user_pass varchar(255) NOT NULL default '',
   user_nicename varchar(50) NOT NULL default '',
   user_email varchar(100) NOT NULL default '',
   user_url varchar(100) NOT NULL default '',
   user_registered datetime NOT NULL default '0000-00-00 00:00:00',
-  user_activation_key varchar(60) NOT NULL default '',
+  user_activation_key varchar(255) NOT NULL default '',
   user_status int(11) NOT NULL default '0',
   display_name varchar(250) NOT NULL default '',
   spam tinyint(2) NOT NULL default '0',
@@ -359,11 +368,18 @@ function populate_options() {
                $uploads_use_yearmonth_folders = 1;
        }
 
-       $template = WP_DEFAULT_THEME;
-       // If default theme is a child theme, we need to get its template
-       $theme = wp_get_theme( $template );
-       if ( ! $theme->errors() )
-               $template = $theme->get_template();
+       // If WP_DEFAULT_THEME doesn't exist, fall back to the latest core default theme.
+       $stylesheet = $template = WP_DEFAULT_THEME;
+       $theme = wp_get_theme( WP_DEFAULT_THEME );
+       if ( ! $theme->exists() ) {
+               $theme = WP_Theme::get_core_default_theme();
+       }
+
+       // If we can't find a core default theme, WP_DEFAULT_THEME is the best we can do.
+       if ( $theme ) {
+               $stylesheet = $theme->get_stylesheet();
+               $template   = $theme->get_template();
+       }
 
        $timezone_string = '';
        $gmt_offset = 0;
@@ -411,14 +427,12 @@ function populate_options() {
        'comment_moderation' => 0,
        'moderation_notify' => 1,
        'permalink_structure' => '',
-       'gzipcompression' => 0,
        'hack_file' => 0,
        'blog_charset' => 'UTF-8',
        'moderation_keys' => '',
        'active_plugins' => array(),
        'category_base' => '',
        'ping_sites' => 'http://rpc.pingomatic.com/',
-       'advanced_edit' => 0,
        'comment_max_links' => 2,
        'gmt_offset' => $gmt_offset,
 
@@ -426,7 +440,7 @@ function populate_options() {
        'default_email_category' => 1,
        'recently_edited' => '',
        'template' => $template,
-       'stylesheet' => WP_DEFAULT_THEME,
+       'stylesheet' => $stylesheet,
        'comment_whitelist' => 1,
        'blacklist_keys' => '',
        'comment_registration' => 0,
@@ -467,7 +481,7 @@ function populate_options() {
        // 2.7
        'large_size_w' => 1024,
        'large_size_h' => 1024,
-       'image_default_link_type' => 'file',
+       'image_default_link_type' => 'none',
        'image_default_size' => '',
        'image_default_align' => '',
        'close_comments_for_old_posts' => 0,
@@ -499,6 +513,11 @@ function populate_options() {
 
        // 4.3.0
        'finished_splitting_shared_terms' => 1,
+       'site_icon' => 0,
+
+       // 4.4.0
+       'medium_large_size_w' => 768,
+       'medium_large_size_h' => 0,
        );
 
        // 3.3
@@ -559,7 +578,7 @@ function populate_options() {
                'can_compress_scripts', 'page_uris', 'update_core', 'update_plugins', 'update_themes', 'doing_cron',
                'random_seed', 'rss_excerpt_length', 'secret', 'use_linksupdate', 'default_comment_status_page',
                'wporg_popular_tags', 'what_to_show', 'rss_language', 'language', 'enable_xmlrpc', 'enable_app',
-               'embed_autourls', 'default_post_edit_rows',
+               'embed_autourls', 'default_post_edit_rows', 'gzipcompression', 'advanced_edit'
        );
        foreach ( $unusedoptions as $option )
                delete_option($option);
@@ -837,13 +856,6 @@ function populate_roles_300() {
                $role->add_cap( 'update_core' );
                $role->add_cap( 'list_users' );
                $role->add_cap( 'remove_users' );
-
-               /*
-                * Never used, will be removed. create_users or promote_users
-                * is the capability you're looking for.
-                */
-               $role->add_cap( 'add_users' );
-
                $role->add_cap( 'promote_users' );
                $role->add_cap( 'edit_theme_options' );
                $role->add_cap( 'delete_themes' );
@@ -893,21 +905,37 @@ function populate_network( $network_id = 1, $domain = '', $email = '', $site_nam
        if ( $network_id == $wpdb->get_var( $wpdb->prepare( "SELECT id FROM $wpdb->site WHERE id = %d", $network_id ) ) )
                $errors->add( 'siteid_exists', __( 'The network already exists.' ) );
 
-       $site_user = get_user_by( 'email', $email );
        if ( ! is_email( $email ) )
-               $errors->add( 'invalid_email', __( 'You must provide a valid e-mail address.' ) );
+               $errors->add( 'invalid_email', __( 'You must provide a valid email address.' ) );
 
        if ( $errors->get_error_code() )
                return $errors;
 
+       // If a user with the provided email does not exist, default to the current user as the new network admin.
+       $site_user = get_user_by( 'email', $email );
+       if ( false === $site_user ) {
+               $site_user = wp_get_current_user();
+       }
+
        // Set up site tables.
        $template = get_option( 'template' );
        $stylesheet = get_option( 'stylesheet' );
        $allowed_themes = array( $stylesheet => true );
-       if ( $template != $stylesheet )
+
+       if ( $template != $stylesheet ) {
                $allowed_themes[ $template ] = true;
-       if ( WP_DEFAULT_THEME != $stylesheet && WP_DEFAULT_THEME != $template )
+       }
+
+       if ( WP_DEFAULT_THEME != $stylesheet && WP_DEFAULT_THEME != $template ) {
                $allowed_themes[ WP_DEFAULT_THEME ] = true;
+       }
+
+       // If WP_DEFAULT_THEME doesn't exist, also whitelist the latest core default theme.
+       if ( ! wp_get_theme( WP_DEFAULT_THEME )->exists() ) {
+               if ( $core_default = WP_Theme::get_core_default_theme() ) {
+                       $allowed_themes[ $core_default->get_stylesheet() ] = true;
+               }
+       }
 
        if ( 1 == $network_id ) {
                $wpdb->insert( $wpdb->site, array( 'domain' => $domain, 'path' => $path ) );
@@ -963,7 +991,7 @@ We hope you enjoy your new site. Thanks!
 
        $sitemeta = array(
                'site_name' => $site_name,
-               'admin_email' => $site_user->user_email,
+               'admin_email' => $email,
                'admin_user_id' => $site_user->ID,
                'registration' => 'none',
                'upload_filetypes' => implode( ' ', $upload_filetypes ),
@@ -974,7 +1002,8 @@ We hope you enjoy your new site. Thanks!
                'illegal_names' => array( 'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator', 'files' ),
                'wpmu_upgrade_site' => $wp_db_version,
                'welcome_email' => $welcome_email,
-               'first_post' => __( 'Welcome to <a href="SITE_URL">SITE_NAME</a>. This is your first post. Edit or delete it, then start blogging!' ),
+               /* translators: %s: site link */
+               'first_post' => __( 'Welcome to %s. This is your first post. Edit or delete it, then start blogging!' ),
                // @todo - network admins should have a method of editing the network siteurl (used for cookie hash)
                'siteurl' => get_option( 'siteurl' ) . '/',
                'add_new_users' => '0',
@@ -1047,12 +1076,26 @@ We hope you enjoy your new site. Thanks!
 
                if ( ! $vhost_ok ) {
                        $msg = '<p><strong>' . __( 'Warning! Wildcard DNS may not be configured correctly!' ) . '</strong></p>';
-                       $msg .= '<p>' . sprintf( __( 'The installer attempted to contact a random hostname (<code>%1$s</code>) on your domain.' ), $hostname );
-                       if ( ! empty ( $errstr ) )
+
+                       $msg .= '<p>' . sprintf(
+                               /* translators: %s: host name */
+                               __( 'The installer attempted to contact a random hostname (%s) on your domain.' ),
+                               '<code>' . $hostname . '</code>'
+                       );
+                       if ( ! empty ( $errstr ) ) {
+                               /* translators: %s: error message */
                                $msg .= ' ' . sprintf( __( 'This resulted in an error message: %s' ), '<code>' . $errstr . '</code>' );
+                       }
                        $msg .= '</p>';
-                       $msg .= '<p>' . __( 'To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a <code>*</code> hostname record pointing at your web server in your DNS configuration tool.' ) . '</p>';
+
+                       $msg .= '<p>' . sprintf(
+                               /* translators: %s: asterisk symbol (*) */
+                               __( 'To use a subdomain configuration, you must have a wildcard entry in your DNS. This usually means adding a %s hostname record pointing at your web server in your DNS configuration tool.' ),
+                               '<code>*</code>'
+                       ) . '</p>';
+
                        $msg .= '<p>' . __( 'You can still use your site but any subdomain you create may not be accessible. If you know your DNS is correct, ignore this message.' ) . '</p>';
+
                        return new WP_Error( 'no_wildcard_dns', $msg );
                }
        }
index fba5dc9da06cbb784eb0e8441400926dec639f3e..8db0cde4336a72d2618cfeef6ffa1e745fd9884d 100644 (file)
@@ -51,10 +51,35 @@ function get_column_headers( $screen ) {
  * @return array
  */
 function get_hidden_columns( $screen ) {
-       if ( is_string( $screen ) )
+       if ( is_string( $screen ) ) {
                $screen = convert_to_screen( $screen );
+       }
 
-       return (array) get_user_option( 'manage' . $screen->id . 'columnshidden' );
+       $hidden = get_user_option( 'manage' . $screen->id . 'columnshidden' );
+
+       if ( ! $hidden ) {
+               $hidden = array();
+
+               /**
+                * Filter the default list of hidden columns.
+                *
+                * @since 4.4.0
+                *
+                * @param array     $hidden An array of columns hidden by default.
+                * @param WP_Screen $screen WP_Screen object of the current screen.
+                */
+               $hidden = apply_filters( 'default_hidden_columns', $hidden, $screen );
+       }
+
+       /**
+        * Filter the list of hidden columns.
+        *
+        * @since 4.4.0
+        *
+        * @param array     $hidden An array of hidden columns.
+        * @param WP_Screen $screen WP_Screen object of the current screen.
+        */
+       return apply_filters( 'hidden_columns', $hidden, $screen );
 }
 
 /**
@@ -193,1028 +218,3 @@ function get_current_screen() {
 function set_current_screen( $hook_name = '' ) {
        WP_Screen::get( $hook_name )->set_current_screen();
 }
-
-/**
- * A class representing the admin screen.
- *
- * @since 3.3.0
- * @access public
- */
-final class WP_Screen {
-       /**
-        * Any action associated with the screen. 'add' for *-add.php and *-new.php screens. Empty otherwise.
-        *
-        * @since 3.3.0
-        * @var string
-        * @access public
-        */
-       public $action;
-
-       /**
-        * The base type of the screen. This is typically the same as $id but with any post types and taxonomies stripped.
-        * For example, for an $id of 'edit-post' the base is 'edit'.
-        *
-        * @since 3.3.0
-        * @var string
-        * @access public
-        */
-       public $base;
-
-       /**
-        * The number of columns to display. Access with get_columns().
-        *
-        * @since 3.4.0
-        * @var int
-        * @access private
-        */
-       private $columns = 0;
-
-       /**
-        * The unique ID of the screen.
-        *
-        * @since 3.3.0
-        * @var string
-        * @access public
-        */
-       public $id;
-
-       /**
-        * Which admin the screen is in. network | user | site | false
-        *
-        * @since 3.5.0
-        * @var string
-        * @access protected
-        */
-       protected $in_admin;
-
-       /**
-        * Whether the screen is in the network admin.
-        *
-        * Deprecated. Use in_admin() instead.
-        *
-        * @since 3.3.0
-        * @deprecated 3.5.0
-        * @var bool
-        * @access public
-        */
-       public $is_network;
-
-       /**
-        * Whether the screen is in the user admin.
-        *
-        * Deprecated. Use in_admin() instead.
-        *
-        * @since 3.3.0
-        * @deprecated 3.5.0
-        * @var bool
-        * @access public
-        */
-       public $is_user;
-
-       /**
-        * The base menu parent.
-        * This is derived from $parent_file by removing the query string and any .php extension.
-        * $parent_file values of 'edit.php?post_type=page' and 'edit.php?post_type=post' have a $parent_base of 'edit'.
-        *
-        * @since 3.3.0
-        * @var string
-        * @access public
-        */
-       public $parent_base;
-
-       /**
-        * The parent_file for the screen per the admin menu system.
-        * Some $parent_file values are 'edit.php?post_type=page', 'edit.php', and 'options-general.php'.
-        *
-        * @since 3.3.0
-        * @var string
-        * @access public
-        */
-       public $parent_file;
-
-       /**
-        * The post type associated with the screen, if any.
-        * The 'edit.php?post_type=page' screen has a post type of 'page'.
-        * The 'edit-tags.php?taxonomy=$taxonomy&post_type=page' screen has a post type of 'page'.
-        *
-        * @since 3.3.0
-        * @var string
-        * @access public
-        */
-       public $post_type;
-
-       /**
-        * The taxonomy associated with the screen, if any.
-        * The 'edit-tags.php?taxonomy=category' screen has a taxonomy of 'category'.
-        * @since 3.3.0
-        * @var string
-        * @access public
-        */
-       public $taxonomy;
-
-       /**
-        * The help tab data associated with the screen, if any.
-        *
-        * @since 3.3.0
-        * @var array
-        * @access private
-        */
-       private $_help_tabs = array();
-
-       /**
-        * The help sidebar data associated with screen, if any.
-        *
-        * @since 3.3.0
-        * @var string
-        * @access private
-        */
-       private $_help_sidebar = '';
-
-       /**
-        * Stores old string-based help.
-        *
-        * @static
-        * @access private
-        *
-        * @var array
-        */
-       private static $_old_compat_help = array();
-
-       /**
-        * The screen options associated with screen, if any.
-        *
-        * @since 3.3.0
-        * @var array
-        * @access private
-        */
-       private $_options = array();
-
-       /**
-        * The screen object registry.
-        *
-        * @since 3.3.0
-        *
-        * @static
-        * @access private
-        *
-        * @var array
-        */
-       private static $_registry = array();
-
-       /**
-        * Stores the result of the public show_screen_options function.
-        *
-        * @since 3.3.0
-        * @var bool
-        * @access private
-        */
-       private $_show_screen_options;
-
-       /**
-        * Stores the 'screen_settings' section of screen options.
-        *
-        * @since 3.3.0
-        * @var string
-        * @access private
-        */
-       private $_screen_settings;
-
-       /**
-        * Fetches a screen object.
-        *
-        * @since 3.3.0
-        * @access public
-        *
-        * @static
-        *
-        * @global string $hook_suffix
-        *
-        * @param string|WP_Screen $hook_name Optional. The hook name (also known as the hook suffix) used to determine the screen.
-        *                                        Defaults to the current $hook_suffix global.
-        * @return WP_Screen Screen object.
-        */
-       public static function get( $hook_name = '' ) {
-               if ( $hook_name instanceof WP_Screen ) {
-                       return $hook_name;
-               }
-
-               $post_type = $taxonomy = null;
-               $in_admin = false;
-               $action = '';
-
-               if ( $hook_name )
-                       $id = $hook_name;
-               else
-                       $id = $GLOBALS['hook_suffix'];
-
-               // For those pesky meta boxes.
-               if ( $hook_name && post_type_exists( $hook_name ) ) {
-                       $post_type = $id;
-                       $id = 'post'; // changes later. ends up being $base.
-               } else {
-                       if ( '.php' == substr( $id, -4 ) )
-                               $id = substr( $id, 0, -4 );
-
-                       if ( 'post-new' == $id || 'link-add' == $id || 'media-new' == $id || 'user-new' == $id ) {
-                               $id = substr( $id, 0, -4 );
-                               $action = 'add';
-                       }
-               }
-
-               if ( ! $post_type && $hook_name ) {
-                       if ( '-network' == substr( $id, -8 ) ) {
-                               $id = substr( $id, 0, -8 );
-                               $in_admin = 'network';
-                       } elseif ( '-user' == substr( $id, -5 ) ) {
-                               $id = substr( $id, 0, -5 );
-                               $in_admin = 'user';
-                       }
-
-                       $id = sanitize_key( $id );
-                       if ( 'edit-comments' != $id && 'edit-tags' != $id && 'edit-' == substr( $id, 0, 5 ) ) {
-                               $maybe = substr( $id, 5 );
-                               if ( taxonomy_exists( $maybe ) ) {
-                                       $id = 'edit-tags';
-                                       $taxonomy = $maybe;
-                               } elseif ( post_type_exists( $maybe ) ) {
-                                       $id = 'edit';
-                                       $post_type = $maybe;
-                               }
-                       }
-
-                       if ( ! $in_admin )
-                               $in_admin = 'site';
-               } else {
-                       if ( defined( 'WP_NETWORK_ADMIN' ) && WP_NETWORK_ADMIN )
-                               $in_admin = 'network';
-                       elseif ( defined( 'WP_USER_ADMIN' ) && WP_USER_ADMIN )
-                               $in_admin = 'user';
-                       else
-                               $in_admin = 'site';
-               }
-
-               if ( 'index' == $id )
-                       $id = 'dashboard';
-               elseif ( 'front' == $id )
-                       $in_admin = false;
-
-               $base = $id;
-
-               // If this is the current screen, see if we can be more accurate for post types and taxonomies.
-               if ( ! $hook_name ) {
-                       if ( isset( $_REQUEST['post_type'] ) )
-                               $post_type = post_type_exists( $_REQUEST['post_type'] ) ? $_REQUEST['post_type'] : false;
-                       if ( isset( $_REQUEST['taxonomy'] ) )
-                               $taxonomy = taxonomy_exists( $_REQUEST['taxonomy'] ) ? $_REQUEST['taxonomy'] : false;
-
-                       switch ( $base ) {
-                               case 'post' :
-                                       if ( isset( $_GET['post'] ) )
-                                               $post_id = (int) $_GET['post'];
-                                       elseif ( isset( $_POST['post_ID'] ) )
-                                               $post_id = (int) $_POST['post_ID'];
-                                       else
-                                               $post_id = 0;
-
-                                       if ( $post_id ) {
-                                               $post = get_post( $post_id );
-                                               if ( $post )
-                                                       $post_type = $post->post_type;
-                                       }
-                                       break;
-                               case 'edit-tags' :
-                                       if ( null === $post_type && is_object_in_taxonomy( 'post', $taxonomy ? $taxonomy : 'post_tag' ) )
-                                               $post_type = 'post';
-                                       break;
-                       }
-               }
-
-               switch ( $base ) {
-                       case 'post' :
-                               if ( null === $post_type )
-                                       $post_type = 'post';
-                               $id = $post_type;
-                               break;
-                       case 'edit' :
-                               if ( null === $post_type )
-                                       $post_type = 'post';
-                               $id .= '-' . $post_type;
-                               break;
-                       case 'edit-tags' :
-                               if ( null === $taxonomy )
-                                       $taxonomy = 'post_tag';
-                               // The edit-tags ID does not contain the post type. Look for it in the request.
-                               if ( null === $post_type ) {
-                                       $post_type = 'post';
-                                       if ( isset( $_REQUEST['post_type'] ) && post_type_exists( $_REQUEST['post_type'] ) )
-                                               $post_type = $_REQUEST['post_type'];
-                               }
-
-                               $id = 'edit-' . $taxonomy;
-                               break;
-               }
-
-               if ( 'network' == $in_admin ) {
-                       $id   .= '-network';
-                       $base .= '-network';
-               } elseif ( 'user' == $in_admin ) {
-                       $id   .= '-user';
-                       $base .= '-user';
-               }
-
-               if ( isset( self::$_registry[ $id ] ) ) {
-                       $screen = self::$_registry[ $id ];
-                       if ( $screen === get_current_screen() )
-                               return $screen;
-               } else {
-                       $screen = new WP_Screen();
-                       $screen->id     = $id;
-               }
-
-               $screen->base       = $base;
-               $screen->action     = $action;
-               $screen->post_type  = (string) $post_type;
-               $screen->taxonomy   = (string) $taxonomy;
-               $screen->is_user    = ( 'user' == $in_admin );
-               $screen->is_network = ( 'network' == $in_admin );
-               $screen->in_admin   = $in_admin;
-
-               self::$_registry[ $id ] = $screen;
-
-               return $screen;
-       }
-
-       /**
-        * Makes the screen object the current screen.
-        *
-        * @see set_current_screen()
-        * @since 3.3.0
-        *
-        * @global WP_Screen $current_screen
-        * @global string    $taxnow
-        * @global string    $typenow
-        */
-       public function set_current_screen() {
-               global $current_screen, $taxnow, $typenow;
-               $current_screen = $this;
-               $taxnow = $this->taxonomy;
-               $typenow = $this->post_type;
-
-               /**
-                * Fires after the current screen has been set.
-                *
-                * @since 3.0.0
-                *
-                * @param WP_Screen $current_screen Current WP_Screen object.
-                */
-               do_action( 'current_screen', $current_screen );
-       }
-
-       /**
-        * Constructor
-        *
-        * @since 3.3.0
-        * @access private
-        */
-       private function __construct() {}
-
-       /**
-        * Indicates whether the screen is in a particular admin
-        *
-        * @since 3.5.0
-        *
-        * @param string $admin The admin to check against (network | user | site).
-        *                      If empty any of the three admins will result in true.
-        * @return bool True if the screen is in the indicated admin, false otherwise.
-        */
-       public function in_admin( $admin = null ) {
-               if ( empty( $admin ) )
-                       return (bool) $this->in_admin;
-
-               return ( $admin == $this->in_admin );
-       }
-
-       /**
-        * Sets the old string-based contextual help for the screen.
-        *
-        * For backwards compatibility.
-        *
-        * @since 3.3.0
-        *
-        * @static
-        *
-        * @param WP_Screen $screen A screen object.
-        * @param string $help Help text.
-        */
-       public static function add_old_compat_help( $screen, $help ) {
-               self::$_old_compat_help[ $screen->id ] = $help;
-       }
-
-       /**
-        * Set the parent information for the screen.
-        * This is called in admin-header.php after the menu parent for the screen has been determined.
-        *
-        * @since 3.3.0
-        *
-        * @param string $parent_file The parent file of the screen. Typically the $parent_file global.
-        */
-       public function set_parentage( $parent_file ) {
-               $this->parent_file = $parent_file;
-               list( $this->parent_base ) = explode( '?', $parent_file );
-               $this->parent_base = str_replace( '.php', '', $this->parent_base );
-       }
-
-       /**
-        * Adds an option for the screen.
-        * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add screen options.
-        *
-        * @since 3.3.0
-        *
-        * @param string $option Option ID
-        * @param mixed $args Option-dependent arguments.
-        */
-       public function add_option( $option, $args = array() ) {
-               $this->_options[ $option ] = $args;
-       }
-
-       /**
-        * Remove an option from the screen.
-        *
-        * @since 3.8.0
-        *
-        * @param string $option Option ID.
-        */
-       public function remove_option( $option ) {
-               unset( $this->_options[ $option ] );
-       }
-
-       /**
-        * Remove all options from the screen.
-        *
-        * @since 3.8.0
-        */
-       public function remove_options() {
-               $this->_options = array();
-       }
-
-       /**
-        * Get the options registered for the screen.
-        *
-        * @since 3.8.0
-        *
-        * @return array Options with arguments.
-        */
-       public function get_options() {
-               return $this->_options;
-       }
-
-       /**
-        * Gets the arguments for an option for the screen.
-        *
-        * @since 3.3.0
-        *
-        * @param string $option Option name.
-        * @param string $key    Optional. Specific array key for when the option is an array.
-        *                       Default false.
-        * @return string The option value if set, null otherwise.
-        */
-       public function get_option( $option, $key = false ) {
-               if ( ! isset( $this->_options[ $option ] ) )
-                       return null;
-               if ( $key ) {
-                       if ( isset( $this->_options[ $option ][ $key ] ) )
-                               return $this->_options[ $option ][ $key ];
-                       return null;
-               }
-               return $this->_options[ $option ];
-       }
-
-       /**
-        * Gets the help tabs registered for the screen.
-        *
-        * @since 3.4.0
-        *
-        * @return array Help tabs with arguments.
-        */
-       public function get_help_tabs() {
-               return $this->_help_tabs;
-       }
-
-       /**
-        * Gets the arguments for a help tab.
-        *
-        * @since 3.4.0
-        *
-        * @param string $id Help Tab ID.
-        * @return array Help tab arguments.
-        */
-       public function get_help_tab( $id ) {
-               if ( ! isset( $this->_help_tabs[ $id ] ) )
-                       return null;
-               return $this->_help_tabs[ $id ];
-       }
-
-       /**
-        * Add a help tab to the contextual help for the screen.
-        * Call this on the load-$pagenow hook for the relevant screen.
-        *
-        * @since 3.3.0
-        *
-        * @param array $args
-        * - string   - title    - Title for the tab.
-        * - string   - id       - Tab ID. Must be HTML-safe.
-        * - string   - content  - Help tab content in plain text or HTML. Optional.
-        * - callback - callback - A callback to generate the tab content. Optional.
-        *
-        */
-       public function add_help_tab( $args ) {
-               $defaults = array(
-                       'title'    => false,
-                       'id'       => false,
-                       'content'  => '',
-                       'callback' => false,
-               );
-               $args = wp_parse_args( $args, $defaults );
-
-               $args['id'] = sanitize_html_class( $args['id'] );
-
-               // Ensure we have an ID and title.
-               if ( ! $args['id'] || ! $args['title'] )
-                       return;
-
-               // Allows for overriding an existing tab with that ID.
-               $this->_help_tabs[ $args['id'] ] = $args;
-       }
-
-       /**
-        * Removes a help tab from the contextual help for the screen.
-        *
-        * @since 3.3.0
-        *
-        * @param string $id The help tab ID.
-        */
-       public function remove_help_tab( $id ) {
-               unset( $this->_help_tabs[ $id ] );
-       }
-
-       /**
-        * Removes all help tabs from the contextual help for the screen.
-        *
-        * @since 3.3.0
-        */
-       public function remove_help_tabs() {
-               $this->_help_tabs = array();
-       }
-
-       /**
-        * Gets the content from a contextual help sidebar.
-        *
-        * @since 3.4.0
-        *
-        * @return string Contents of the help sidebar.
-        */
-       public function get_help_sidebar() {
-               return $this->_help_sidebar;
-       }
-
-       /**
-        * Add a sidebar to the contextual help for the screen.
-        * Call this in template files after admin.php is loaded and before admin-header.php is loaded to add a sidebar to the contextual help.
-        *
-        * @since 3.3.0
-        *
-        * @param string $content Sidebar content in plain text or HTML.
-        */
-       public function set_help_sidebar( $content ) {
-               $this->_help_sidebar = $content;
-       }
-
-       /**
-        * Gets the number of layout columns the user has selected.
-        *
-        * The layout_columns option controls the max number and default number of
-        * columns. This method returns the number of columns within that range selected
-        * by the user via Screen Options. If no selection has been made, the default
-        * provisioned in layout_columns is returned. If the screen does not support
-        * selecting the number of layout columns, 0 is returned.
-        *
-        * @since 3.4.0
-        *
-        * @return int Number of columns to display.
-        */
-       public function get_columns() {
-               return $this->columns;
-       }
-
-       /**
-        * Render the screen's help section.
-        *
-        * This will trigger the deprecated filters for backwards compatibility.
-        *
-        * @since 3.3.0
-        *
-        * @global string $screen_layout_columns
-        */
-       public function render_screen_meta() {
-
-               /**
-                * Filter the legacy contextual help list.
-                *
-                * @since 2.7.0
-                * @deprecated 3.3.0 Use get_current_screen()->add_help_tab() or
-                *                   get_current_screen()->remove_help_tab() instead.
-                *
-                * @param array     $old_compat_help Old contextual help.
-                * @param WP_Screen $this            Current WP_Screen instance.
-                */
-               self::$_old_compat_help = apply_filters( 'contextual_help_list', self::$_old_compat_help, $this );
-
-               $old_help = isset( self::$_old_compat_help[ $this->id ] ) ? self::$_old_compat_help[ $this->id ] : '';
-
-               /**
-                * Filter the legacy contextual help text.
-                *
-                * @since 2.7.0
-                * @deprecated 3.3.0 Use get_current_screen()->add_help_tab() or
-                *                   get_current_screen()->remove_help_tab() instead.
-                *
-                * @param string    $old_help  Help text that appears on the screen.
-                * @param string    $screen_id Screen ID.
-                * @param WP_Screen $this      Current WP_Screen instance.
-                *
-                */
-               $old_help = apply_filters( 'contextual_help', $old_help, $this->id, $this );
-
-               // Default help only if there is no old-style block of text and no new-style help tabs.
-               if ( empty( $old_help ) && ! $this->get_help_tabs() ) {
-
-                       /**
-                        * Filter the default legacy contextual help text.
-                        *
-                        * @since 2.8.0
-                        * @deprecated 3.3.0 Use get_current_screen()->add_help_tab() or
-                        *                   get_current_screen()->remove_help_tab() instead.
-                        *
-                        * @param string $old_help_default Default contextual help text.
-                        */
-                       $default_help = apply_filters( 'default_contextual_help', '' );
-                       if ( $default_help )
-                               $old_help = '<p>' . $default_help . '</p>';
-               }
-
-               if ( $old_help ) {
-                       $this->add_help_tab( array(
-                               'id'      => 'old-contextual-help',
-                               'title'   => __('Overview'),
-                               'content' => $old_help,
-                       ) );
-               }
-
-               $help_sidebar = $this->get_help_sidebar();
-
-               $help_class = 'hidden';
-               if ( ! $help_sidebar )
-                       $help_class .= ' no-sidebar';
-
-               // Time to render!
-               ?>
-               <div id="screen-meta" class="metabox-prefs">
-
-                       <div id="contextual-help-wrap" class="<?php echo esc_attr( $help_class ); ?>" tabindex="-1" aria-label="<?php esc_attr_e('Contextual Help Tab'); ?>">
-                               <div id="contextual-help-back"></div>
-                               <div id="contextual-help-columns">
-                                       <div class="contextual-help-tabs">
-                                               <ul>
-                                               <?php
-                                               $class = ' class="active"';
-                                               foreach ( $this->get_help_tabs() as $tab ) :
-                                                       $link_id  = "tab-link-{$tab['id']}";
-                                                       $panel_id = "tab-panel-{$tab['id']}";
-                                                       ?>
-
-                                                       <li id="<?php echo esc_attr( $link_id ); ?>"<?php echo $class; ?>>
-                                                               <a href="<?php echo esc_url( "#$panel_id" ); ?>" aria-controls="<?php echo esc_attr( $panel_id ); ?>">
-                                                                       <?php echo esc_html( $tab['title'] ); ?>
-                                                               </a>
-                                                       </li>
-                                               <?php
-                                                       $class = '';
-                                               endforeach;
-                                               ?>
-                                               </ul>
-                                       </div>
-
-                                       <?php if ( $help_sidebar ) : ?>
-                                       <div class="contextual-help-sidebar">
-                                               <?php echo $help_sidebar; ?>
-                                       </div>
-                                       <?php endif; ?>
-
-                                       <div class="contextual-help-tabs-wrap">
-                                               <?php
-                                               $classes = 'help-tab-content active';
-                                               foreach ( $this->get_help_tabs() as $tab ):
-                                                       $panel_id = "tab-panel-{$tab['id']}";
-                                                       ?>
-
-                                                       <div id="<?php echo esc_attr( $panel_id ); ?>" class="<?php echo $classes; ?>">
-                                                               <?php
-                                                               // Print tab content.
-                                                               echo $tab['content'];
-
-                                                               // If it exists, fire tab callback.
-                                                               if ( ! empty( $tab['callback'] ) )
-                                                                       call_user_func_array( $tab['callback'], array( $this, $tab ) );
-                                                               ?>
-                                                       </div>
-                                               <?php
-                                                       $classes = 'help-tab-content';
-                                               endforeach;
-                                               ?>
-                                       </div>
-                               </div>
-                       </div>
-               <?php
-               // Setup layout columns
-
-               /**
-                * Filter the array of screen layout columns.
-                *
-                * This hook provides back-compat for plugins using the back-compat
-                * filter instead of add_screen_option().
-                *
-                * @since 2.8.0
-                *
-                * @param array     $empty_columns Empty array.
-                * @param string    $screen_id     Screen ID.
-                * @param WP_Screen $this          Current WP_Screen instance.
-                */
-               $columns = apply_filters( 'screen_layout_columns', array(), $this->id, $this );
-
-               if ( ! empty( $columns ) && isset( $columns[ $this->id ] ) )
-                       $this->add_option( 'layout_columns', array('max' => $columns[ $this->id ] ) );
-
-               if ( $this->get_option( 'layout_columns' ) ) {
-                       $this->columns = (int) get_user_option("screen_layout_$this->id");
-
-                       if ( ! $this->columns && $this->get_option( 'layout_columns', 'default' ) )
-                               $this->columns = $this->get_option( 'layout_columns', 'default' );
-               }
-               $GLOBALS[ 'screen_layout_columns' ] = $this->columns; // Set the global for back-compat.
-
-               // Add screen options
-               if ( $this->show_screen_options() )
-                       $this->render_screen_options();
-               ?>
-               </div>
-               <?php
-               if ( ! $this->get_help_tabs() && ! $this->show_screen_options() )
-                       return;
-               ?>
-               <div id="screen-meta-links">
-               <?php if ( $this->get_help_tabs() ) : ?>
-                       <div id="contextual-help-link-wrap" class="hide-if-no-js screen-meta-toggle">
-                       <button type="button" id="contextual-help-link" class="button show-settings" aria-controls="contextual-help-wrap" aria-expanded="false"><?php _e( 'Help' ); ?></button>
-                       </div>
-               <?php endif;
-               if ( $this->show_screen_options() ) : ?>
-                       <div id="screen-options-link-wrap" class="hide-if-no-js screen-meta-toggle">
-                       <button type="button" id="show-settings-link" class="button show-settings" aria-controls="screen-options-wrap" aria-expanded="false"><?php _e( 'Screen Options' ); ?></button>
-                       </div>
-               <?php endif; ?>
-               </div>
-               <?php
-       }
-
-       /**
-        *
-        * @global array $wp_meta_boxes
-        *
-        * @return bool
-        */
-       public function show_screen_options() {
-               global $wp_meta_boxes;
-
-               if ( is_bool( $this->_show_screen_options ) )
-                       return $this->_show_screen_options;
-
-               $columns = get_column_headers( $this );
-
-               $show_screen = ! empty( $wp_meta_boxes[ $this->id ] ) || $columns || $this->get_option( 'per_page' );
-
-               switch ( $this->base ) {
-                       case 'widgets':
-                               $this->_screen_settings = '<p><a id="access-on" href="widgets.php?widgets-access=on">' . __('Enable accessibility mode') . '</a><a id="access-off" href="widgets.php?widgets-access=off">' . __('Disable accessibility mode') . "</a></p>\n";
-                               break;
-                       case 'post' :
-                               $expand = '<div class="editor-expand hidden"><label for="editor-expand-toggle">';
-                               $expand .= '<input type="checkbox" id="editor-expand-toggle"' . checked( get_user_setting( 'editor_expand', 'on' ), 'on', false ) . ' />';
-                               $expand .= __( 'Enable full-height editor and distraction-free functionality.' ) . '</label></div>';
-                               $this->_screen_settings = $expand;
-                               break;
-                       default:
-                               $this->_screen_settings = '';
-                               break;
-               }
-
-               /**
-                * Filter the screen settings text displayed in the Screen Options tab.
-                *
-                * This filter is currently only used on the Widgets screen to enable
-                * accessibility mode.
-                *
-                * @since 3.0.0
-                *
-                * @param string    $screen_settings Screen settings.
-                * @param WP_Screen $this            WP_Screen object.
-                */
-               $this->_screen_settings = apply_filters( 'screen_settings', $this->_screen_settings, $this );
-
-               if ( $this->_screen_settings || $this->_options )
-                       $show_screen = true;
-
-               /**
-                * Filter whether to show the Screen Options tab.
-                *
-                * @since 3.2.0
-                *
-                * @param bool      $show_screen Whether to show Screen Options tab.
-                *                               Default true.
-                * @param WP_Screen $this        Current WP_Screen instance.
-                */
-               $this->_show_screen_options = apply_filters( 'screen_options_show_screen', $show_screen, $this );
-               return $this->_show_screen_options;
-       }
-
-       /**
-        * Render the screen options tab.
-        *
-        * @since 3.3.0
-        *
-        * @global array $wp_meta_boxes
-        */
-       public function render_screen_options() {
-               global $wp_meta_boxes;
-
-               $columns = get_column_headers( $this );
-               $hidden  = get_hidden_columns( $this );
-
-               ?>
-               <div id="screen-options-wrap" class="hidden" tabindex="-1" aria-label="<?php esc_attr_e('Screen Options Tab'); ?>">
-               <form id="adv-settings" method="post">
-               <?php if ( isset( $wp_meta_boxes[ $this->id ] ) || $this->get_option( 'per_page' ) || ( $columns && empty( $columns['_title'] ) ) ) : ?>
-                       <h5><?php _e( 'Show on screen' ); ?></h5>
-               <?php
-               endif;
-
-               if ( isset( $wp_meta_boxes[ $this->id ] ) ) : ?>
-                       <div class="metabox-prefs">
-                               <?php
-                                       meta_box_prefs( $this );
-
-                                       if ( 'dashboard' === $this->id && has_action( 'welcome_panel' ) && current_user_can( 'edit_theme_options' ) ) {
-                                               if ( isset( $_GET['welcome'] ) ) {
-                                                       $welcome_checked = empty( $_GET['welcome'] ) ? 0 : 1;
-                                                       update_user_meta( get_current_user_id(), 'show_welcome_panel', $welcome_checked );
-                                               } else {
-                                                       $welcome_checked = get_user_meta( get_current_user_id(), 'show_welcome_panel', true );
-                                                       if ( 2 == $welcome_checked && wp_get_current_user()->user_email != get_option( 'admin_email' ) )
-                                                               $welcome_checked = false;
-                                               }
-                                               echo '<label for="wp_welcome_panel-hide">';
-                                               echo '<input type="checkbox" id="wp_welcome_panel-hide"' . checked( (bool) $welcome_checked, true, false ) . ' />';
-                                               echo _x( 'Welcome', 'Welcome panel' ) . "</label>\n";
-                                       }
-                               ?>
-                               <br class="clear" />
-                       </div>
-                       <?php endif;
-                       if ( $columns ) :
-                               if ( ! empty( $columns['_title'] ) ) : ?>
-                       <h5><?php echo $columns['_title']; ?></h5>
-                       <?php endif; ?>
-                       <div class="metabox-prefs">
-                               <?php
-                               $special = array('_title', 'cb', 'comment', 'media', 'name', 'title', 'username', 'blogname');
-
-                               foreach ( $columns as $column => $title ) {
-                                       // Can't hide these for they are special
-                                       if ( in_array( $column, $special ) )
-                                               continue;
-                                       if ( empty( $title ) )
-                                               continue;
-
-                                       if ( 'comments' == $column )
-                                               $title = __( 'Comments' );
-                                       $id = "$column-hide";
-                                       echo '<label for="' . $id . '">';
-                                       echo '<input class="hide-column-tog" name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $column . '"' . checked( !in_array($column, $hidden), true, false ) . ' />';
-                                       echo "$title</label>\n";
-                               }
-                               ?>
-                               <br class="clear" />
-                       </div>
-               <?php endif;
-
-               $this->render_screen_layout();
-               $this->render_per_page_options();
-               echo $this->_screen_settings;
-
-               ?>
-               <div><?php wp_nonce_field( 'screen-options-nonce', 'screenoptionnonce', false ); ?></div>
-               </form>
-               </div>
-               <?php
-       }
-
-       /**
-        * Render the option for number of columns on the page
-        *
-        * @since 3.3.0
-        */
-       public function render_screen_layout() {
-               if ( ! $this->get_option('layout_columns') )
-                       return;
-
-               $screen_layout_columns = $this->get_columns();
-               $num = $this->get_option( 'layout_columns', 'max' );
-
-               ?>
-               <h5 class="screen-layout"><?php _e('Screen Layout'); ?></h5>
-               <div class='columns-prefs'><?php
-                       _e('Number of Columns:');
-                       for ( $i = 1; $i <= $num; ++$i ):
-                               ?>
-                               <label class="columns-prefs-<?php echo $i; ?>">
-                                       <input type='radio' name='screen_columns' value='<?php echo esc_attr( $i ); ?>'
-                                               <?php checked( $screen_layout_columns, $i ); ?> />
-                                       <?php echo esc_html( $i ); ?>
-                               </label>
-                               <?php
-                       endfor; ?>
-               </div>
-               <?php
-       }
-
-       /**
-        * Render the items per page option
-        *
-        * @since 3.3.0
-        */
-       public function render_per_page_options() {
-               if ( null === $this->get_option( 'per_page' ) ) {
-                       return;
-               }
-
-               $per_page_label = $this->get_option( 'per_page', 'label' );
-               if ( null === $per_page_label ) {
-                       $per_page_label = __( 'Number of items per page:' );
-               }
-
-               $option = $this->get_option( 'per_page', 'option' );
-               if ( ! $option ) {
-                       $option = str_replace( '-', '_', "{$this->id}_per_page" );
-               }
-
-               $per_page = (int) get_user_option( $option );
-               if ( empty( $per_page ) || $per_page < 1 ) {
-                       $per_page = $this->get_option( 'per_page', 'default' );
-                       if ( ! $per_page ) {
-                               $per_page = 20;
-                       }
-               }
-
-               if ( 'edit_comments_per_page' == $option ) {
-                       $comment_status = isset( $_REQUEST['comment_status'] ) ? $_REQUEST['comment_status'] : 'all';
-
-                       /** This filter is documented in wp-admin/includes/class-wp-comments-list-table.php */
-                       $per_page = apply_filters( 'comments_per_page', $per_page, $comment_status );
-               } elseif ( 'categories_per_page' == $option ) {
-                       /** This filter is documented in wp-admin/includes/class-wp-terms-list-table.php */
-                       $per_page = apply_filters( 'edit_categories_per_page', $per_page );
-               } else {
-                       /** This filter is documented in wp-admin/includes/class-wp-list-table.php */
-                       $per_page = apply_filters( $option, $per_page );
-               }
-
-               // Back compat
-               if ( isset( $this->post_type ) ) {
-                       /** This filter is documented in wp-admin/includes/class-wp-posts-list-table.php */
-                       $per_page = apply_filters( 'edit_posts_per_page', $per_page, $this->post_type );
-               }
-
-               ?>
-               <div class="screen-options">
-                       <?php if ( $per_page_label ) : ?>
-                               <label for="<?php echo esc_attr( $option ); ?>"><?php echo $per_page_label; ?></label>
-                               <input type="number" step="1" min="1" max="999" class="screen-per-page" name="wp_screen_options[value]"
-                                       id="<?php echo esc_attr( $option ); ?>" maxlength="3"
-                                       value="<?php echo esc_attr( $per_page ); ?>" />
-                       <?php endif;
-
-                       echo get_submit_button( __( 'Apply' ), 'button', 'screen-options-apply', false ); ?>
-                       <input type="hidden" name="wp_screen_options[option]" value="<?php echo esc_attr( $option ); ?>" />
-               </div>
-               <?php
-       }
-}
index 4f11bdbd4e12b69ae96d621c588298c6d7f73cbf..3d4154dae0ffba1049fd6904bced1ce4e8a71804 100644 (file)
@@ -93,9 +93,9 @@ function wp_create_categories( $categories, $post_id = '' ) {
  * @param array $catarr {
  *     Array of arguments for inserting a new category.
  *
- *     @type int        $cat_ID               Categoriy ID. A non-zero value updates an existing category.
+ *     @type int        $cat_ID               Category ID. A non-zero value updates an existing category.
  *                                            Default 0.
- *     @type string     $taxonomy             Taxonomy slug. Defualt 'category'.
+ *     @type string     $taxonomy             Taxonomy slug. Default 'category'.
  *     @type string     $cat_name             Category name. Default empty.
  *     @type string     $category_description Category description. Default empty.
  *     @type string     $category_nicename    Category nice (display) name. Default empty.
index a0b248f922a3b6a0ae902646994bb5cfac928763..e65c7d0f237ed6b4d497a77e43bb6eeb7a67ff90 100644 (file)
  * @subpackage Administration
  */
 
+/** Walker_Category_Checklist class */ 
+require_once( ABSPATH . 'wp-admin/includes/class-walker-category-checklist.php' );
+
+/** WP_Internal_Pointers class */ 
+require_once( ABSPATH . 'wp-admin/includes/class-wp-internal-pointers.php' );
+
 //
 // Category Checklists
 //
 
-/**
- * Walker to output an unordered list of category checkbox input elements.
- *
- * @since 2.5.1
- *
- * @see Walker
- * @see wp_category_checklist()
- * @see wp_terms_checklist()
- */
-class Walker_Category_Checklist extends Walker {
-       public $tree_type = 'category';
-       public $db_fields = array ('parent' => 'parent', 'id' => 'term_id'); //TODO: decouple this
-
-       /**
-        * Starts the list before the elements are added.
-        *
-        * @see Walker:start_lvl()
-        *
-        * @since 2.5.1
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param int    $depth  Depth of category. Used for tab indentation.
-        * @param array  $args   An array of arguments. @see wp_terms_checklist()
-        */
-       public function start_lvl( &$output, $depth = 0, $args = array() ) {
-               $indent = str_repeat("\t", $depth);
-               $output .= "$indent<ul class='children'>\n";
-       }
-
-       /**
-        * Ends the list of after the elements are added.
-        *
-        * @see Walker::end_lvl()
-        *
-        * @since 2.5.1
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param int    $depth  Depth of category. Used for tab indentation.
-        * @param array  $args   An array of arguments. @see wp_terms_checklist()
-        */
-       public function end_lvl( &$output, $depth = 0, $args = array() ) {
-               $indent = str_repeat("\t", $depth);
-               $output .= "$indent</ul>\n";
-       }
-
-       /**
-        * Start the element output.
-        *
-        * @see Walker::start_el()
-        *
-        * @since 2.5.1
-        *
-        * @param string $output   Passed by reference. Used to append additional content.
-        * @param object $category The current term object.
-        * @param int    $depth    Depth of the term in reference to parents. Default 0.
-        * @param array  $args     An array of arguments. @see wp_terms_checklist()
-        * @param int    $id       ID of the current term.
-        */
-       public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
-               if ( empty( $args['taxonomy'] ) ) {
-                       $taxonomy = 'category';
-               } else {
-                       $taxonomy = $args['taxonomy'];
-               }
-
-               if ( $taxonomy == 'category' ) {
-                       $name = 'post_category';
-               } else {
-                       $name = 'tax_input[' . $taxonomy . ']';
-               }
-
-               $args['popular_cats'] = empty( $args['popular_cats'] ) ? array() : $args['popular_cats'];
-               $class = in_array( $category->term_id, $args['popular_cats'] ) ? ' class="popular-category"' : '';
-
-               $args['selected_cats'] = empty( $args['selected_cats'] ) ? array() : $args['selected_cats'];
-
-               /** This filter is documented in wp-includes/category-template.php */
-               if ( ! empty( $args['list_only'] ) ) {
-                       $aria_cheched = 'false';
-                       $inner_class = 'category';
-
-                       if ( in_array( $category->term_id, $args['selected_cats'] ) ) {
-                               $inner_class .= ' selected';
-                               $aria_cheched = 'true';
-                       }
-
-                       $output .= "\n" . '<li' . $class . '>' .
-                               '<div class="' . $inner_class . '" data-term-id=' . $category->term_id .
-                               ' tabindex="0" role="checkbox" aria-checked="' . $aria_cheched . '">' .
-                               esc_html( apply_filters( 'the_category', $category->name ) ) . '</div>';
-               } else {
-                       $output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" .
-                               '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' .
-                               checked( in_array( $category->term_id, $args['selected_cats'] ), true, false ) .
-                               disabled( empty( $args['disabled'] ), false, false ) . ' /> ' .
-                               esc_html( apply_filters( 'the_category', $category->name ) ) . '</label>';
-               }
-       }
-
-       /**
-        * Ends the element output, if needed.
-        *
-        * @see Walker::end_el()
-        *
-        * @since 2.5.1
-        *
-        * @param string $output   Passed by reference. Used to append additional content.
-        * @param object $category The current term object.
-        * @param int    $depth    Depth of the term in reference to parents. Default 0.
-        * @param array  $args     An array of arguments. @see wp_terms_checklist()
-        */
-       public function end_el( &$output, $category, $depth = 0, $args = array() ) {
-               $output .= "</li>\n";
-       }
-}
-
 /**
  * Output an unordered list of checkbox input elements labeled with category names.
  *
@@ -164,6 +54,7 @@ function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $select
  * Taxonomy-independent version of wp_category_checklist().
  *
  * @since 3.0.0
+ * @since 4.4.0 Introduced the `$echo` argument.
  *
  * @param int          $post_id Optional. Post ID. Default 0.
  * @param array|string $args {
@@ -179,6 +70,8 @@ function wp_category_checklist( $post_id = 0, $descendants_and_self = 0, $select
  *     @type string $taxonomy             Taxonomy to generate the checklist for. Default 'category'.
  *     @type bool   $checked_ontop        Whether to move checked items out of the hierarchy and to
  *                                        the top of the list. Default true.
+ *     @type bool   $echo                 Whether to echo the generated markup. False to return the markup instead
+ *                                        of echoing it. Default true.
  * }
  */
 function wp_terms_checklist( $post_id = 0, $args = array() ) {
@@ -188,7 +81,8 @@ function wp_terms_checklist( $post_id = 0, $args = array() ) {
                'popular_cats' => false,
                'walker' => null,
                'taxonomy' => 'category',
-               'checked_ontop' => true
+               'checked_ontop' => true,
+               'echo' => true,
        );
 
        /**
@@ -251,12 +145,14 @@ function wp_terms_checklist( $post_id = 0, $args = array() ) {
                $categories = (array) get_terms( $taxonomy, array( 'get' => 'all' ) );
        }
 
+       $output = '';
+
        if ( $r['checked_ontop'] ) {
                // Post process $categories rather than adding an exclude to the get_terms() query to keep the query the same across all posts (for any query cache)
                $checked_categories = array();
                $keys = array_keys( $categories );
 
-               foreach( $keys as $k ) {
+               foreach ( $keys as $k ) {
                        if ( in_array( $categories[$k]->term_id, $args['selected_cats'] ) ) {
                                $checked_categories[] = $categories[$k];
                                unset( $categories[$k] );
@@ -264,10 +160,16 @@ function wp_terms_checklist( $post_id = 0, $args = array() ) {
                }
 
                // Put checked cats on top
-               echo call_user_func_array( array( $walker, 'walk' ), array( $checked_categories, 0, $args ) );
+               $output .= call_user_func_array( array( $walker, 'walk' ), array( $checked_categories, 0, $args ) );
        }
        // Then the rest of them
-       echo call_user_func_array( array( $walker, 'walk' ), array( $categories, 0, $args ) );
+       $output .= call_user_func_array( array( $walker, 'walk' ), array( $categories, 0, $args ) );
+
+       if ( $r['echo'] ) {
+               echo $output;
+       }
+
+       return $output;
 }
 
 /**
@@ -323,7 +225,7 @@ function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10, $ech
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs a link category checklist element.
  *
  * @since 2.5.1
  *
@@ -376,8 +278,9 @@ function get_inline_data($post) {
        /** This filter is documented in wp-admin/edit-tag-form.php */
        echo '
 <div class="hidden" id="inline_' . $post->ID . '">
-       <div class="post_title">' . $title . '</div>
-       <div class="post_name">' . apply_filters( 'editable_slug', $post->post_name ) . '</div>
+       <div class="post_title">' . $title . '</div>' .
+       /** This filter is documented in wp-admin/edit-tag-form.php */
+       '<div class="post_name">' . apply_filters( 'editable_slug', $post->post_name, $post ) . '</div>
        <div class="post_author">' . $post->post_author . '</div>
        <div class="comment_status">' . esc_html( $post->comment_status ) . '</div>
        <div class="ping_status">' . esc_html( $post->ping_status ) . '</div>
@@ -416,8 +319,13 @@ function get_inline_data($post) {
 
                } elseif ( $taxonomy->show_ui ) {
 
+                       $terms_to_edit = get_terms_to_edit( $post->ID, $taxonomy_name );
+                       if ( ! is_string( $terms_to_edit ) ) {
+                               $terms_to_edit = '';
+                       }
+
                        echo '<div class="tags_input" id="'.$taxonomy_name.'_'.$post->ID.'">'
-                               . esc_html( str_replace( ',', ', ', get_terms_to_edit( $post->ID, $taxonomy_name ) ) ) . '</div>';
+                               . esc_html( str_replace( ',', ', ', $terms_to_edit ) ) . '</div>';
 
                }
        }
@@ -432,7 +340,7 @@ function get_inline_data($post) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs the in-line comment reply-to form in the Comments list table.
  *
  * @since 2.7.0
  *
@@ -482,16 +390,29 @@ function wp_comment_reply( $position = 1, $checkbox = false, $mode = 'single', $
 <?php else : ?>
 <div id="com-reply" style="display:none;"><div id="replyrow" style="display:none;">
 <?php endif; ?>
-       <div id="replyhead" style="display:none;"><h5><?php _e( 'Reply to Comment' ); ?></h5></div>
-       <div id="addhead" style="display:none;"><h5><?php _e('Add new Comment'); ?></h5></div>
+       <fieldset class="comment-reply">
+       <legend>
+               <span class="hidden" id="editlegend"><?php _e( 'Edit Comment' ); ?></span>
+               <span class="hidden" id="replyhead"><?php _e( 'Reply to Comment' ); ?></span>
+               <span class="hidden" id="addhead"><?php _e( 'Add new Comment' ); ?></span>
+       </legend>
+
+       <div id="replycontainer">
+       <label for="replycontent" class="screen-reader-text"><?php _e( 'Comment' ); ?></label>
+       <?php
+       $quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,close' );
+       wp_editor( '', 'replycontent', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings ) );
+       ?>
+       </div>
+
        <div id="edithead" style="display:none;">
                <div class="inside">
-               <label for="author"><?php _e('Name') ?></label>
-               <input type="text" name="newcomment_author" size="50" value="" id="author" />
+               <label for="author-name"><?php _e( 'Name' ) ?></label>
+               <input type="text" name="newcomment_author" size="50" value="" id="author-name" />
                </div>
 
                <div class="inside">
-               <label for="author-email"><?php _e('E-mail') ?></label>
+               <label for="author-email"><?php _e('Email') ?></label>
                <input type="text" name="newcomment_author_email" size="50" value="" id="author-email" />
                </div>
 
@@ -499,14 +420,6 @@ function wp_comment_reply( $position = 1, $checkbox = false, $mode = 'single', $
                <label for="author-url"><?php _e('URL') ?></label>
                <input type="text" id="author-url" name="newcomment_author_url" class="code" size="103" value="" />
                </div>
-               <div style="clear:both;"></div>
-       </div>
-
-       <div id="replycontainer">
-       <?php
-       $quicktags_settings = array( 'buttons' => 'strong,em,link,block,del,ins,img,ul,ol,li,code,close' );
-       wp_editor( '', 'replycontent', array( 'media_buttons' => false, 'tinymce' => false, 'quicktags' => $quicktags_settings ) );
-       ?>
        </div>
 
        <p id="replysubmit" class="submit">
@@ -517,7 +430,6 @@ function wp_comment_reply( $position = 1, $checkbox = false, $mode = 'single', $
        <a href="#comments-form" class="cancel button-secondary alignleft"><?php _e('Cancel'); ?></a>
        <span class="waiting spinner"></span>
        <span class="error" style="display:none;"></span>
-       <br class="clear" />
        </p>
 
        <input type="hidden" name="action" id="action" value="" />
@@ -532,6 +444,7 @@ function wp_comment_reply( $position = 1, $checkbox = false, $mode = 'single', $
                if ( current_user_can( 'unfiltered_html' ) )
                        wp_nonce_field( 'unfiltered-html-comment', '_wp_unfiltered_html_comment', false );
        ?>
+       </fieldset>
 <?php if ( $table_row ) : ?>
 </td></tr></tbody></table>
 <?php else : ?>
@@ -558,7 +471,7 @@ function wp_comment_trashnotice() {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs a post's public meta data in the Custom Fields meta box.
  *
  * @since 1.2.0
  *
@@ -601,7 +514,7 @@ function list_meta( $meta ) {
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs a single row of public meta data in the Custom Fields meta box.
  *
  * @since 2.5.0
  *
@@ -660,7 +573,7 @@ function _list_meta_row( $entry, &$count ) {
  *
  * @since 1.2.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param WP_Post $post Optional. The post being edited.
  */
@@ -669,21 +582,37 @@ function meta_form( $post = null ) {
        $post = get_post( $post );
 
        /**
-        * Filter the number of custom fields to retrieve for the drop-down
-        * in the Custom Fields meta box.
+        * Filter values for the meta key dropdown in the Custom Fields meta box.
+        *
+        * Returning a non-null value will effectively short-circuit and avoid a
+        * potentially expensive query against postmeta.
         *
-        * @since 2.1.0
+        * @since 4.4.0
         *
-        * @param int $limit Number of custom fields to retrieve. Default 30.
+        * @param array|null $keys Pre-defined meta keys to be used in place of a postmeta query. Default null.
+        * @param WP_Post    $post The current post object.
         */
-       $limit = apply_filters( 'postmeta_form_limit', 30 );
-       $sql = "SELECT DISTINCT meta_key
-               FROM $wpdb->postmeta
-               WHERE meta_key NOT BETWEEN '_' AND '_z'
-               HAVING meta_key NOT LIKE %s
-               ORDER BY meta_key
-               LIMIT %d";
-       $keys = $wpdb->get_col( $wpdb->prepare( $sql, $wpdb->esc_like( '_' ) . '%', $limit ) );
+       $keys = apply_filters( 'postmeta_form_keys', null, $post );
+
+       if ( null === $keys ) {
+               /**
+                * Filter the number of custom fields to retrieve for the drop-down
+                * in the Custom Fields meta box.
+                *
+                * @since 2.1.0
+                *
+                * @param int $limit Number of custom fields to retrieve. Default 30.
+                */
+               $limit = apply_filters( 'postmeta_form_limit', 30 );
+               $sql = "SELECT DISTINCT meta_key
+                       FROM $wpdb->postmeta
+                       WHERE meta_key NOT BETWEEN '_' AND '_z'
+                       HAVING meta_key NOT LIKE %s
+                       ORDER BY meta_key
+                       LIMIT %d";
+               $keys = $wpdb->get_col( $wpdb->prepare( $sql, $wpdb->esc_like( '_' ) . '%', $limit ) );
+       }
+
        if ( $keys ) {
                natcasesort( $keys );
                $meta_key_input_id = 'metakeyselect';
@@ -742,9 +671,9 @@ function meta_form( $post = null ) {
  * Print out HTML form date elements for editing post or comment publish date.
  *
  * @since 0.71
+ * @since 4.4.0 Converted to use get_comment() instead of the global `$comment`.
  *
- * @global WP_Locale $wp_locale
- * @global object    $comment
+ * @global WP_Locale  $wp_locale
  *
  * @param int|bool $edit      Accepts 1|true for editing the date, 0|false for adding the date.
  * @param int|bool $for_post  Accepts 1|true for applying the date to a post, 0|false for a comment.
@@ -753,7 +682,7 @@ function meta_form( $post = null ) {
  *                            Default 0|false.
  */
 function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) {
-       global $wp_locale, $comment;
+       global $wp_locale;
        $post = get_post();
 
        if ( $for_post )
@@ -767,7 +696,7 @@ function touch_time( $edit = 1, $for_post = 1, $tab_index = 0, $multi = 0 ) {
        // echo '<label for="timestamp" style="display: block;"><input type="checkbox" class="checkbox" name="edit_date" value="1" id="timestamp"'.$tab_index_attribute.' /> '.__( 'Edit timestamp' ).'</label><br />';
 
        $time_adj = current_time('timestamp');
-       $post_date = ($for_post) ? $post->post_date : $comment->comment_date;
+       $post_date = ($for_post) ? $post->post_date : get_comment()->comment_date;
        $jj = ($edit) ? mysql2date( 'd', $post_date, false ) : gmdate( 'd', $time_adj );
        $mm = ($edit) ? mysql2date( 'm', $post_date, false ) : gmdate( 'm', $time_adj );
        $aa = ($edit) ? mysql2date( 'Y', $post_date, false ) : gmdate( 'Y', $time_adj );
@@ -848,18 +777,20 @@ function page_template_dropdown( $default = '' ) {
  * Print out option HTML elements for the page parents drop-down.
  *
  * @since 1.5.0
+ * @since 4.4.0 `$post` argument was added.
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param int $default Optional. The default page ID to be pre-selected. Default 0.
- * @param int $parent  Optional. The parent page ID. Default 0.
- * @param int $level   Optional. Page depth level. Default 0.
+ * @param int         $default Optional. The default page ID to be pre-selected. Default 0.
+ * @param int         $parent  Optional. The parent page ID. Default 0.
+ * @param int         $level   Optional. Page depth level. Default 0.
+ * @param int|WP_Post $post    Post ID or WP_Post object.
  *
  * @return null|false Boolean False if page has no children, otherwise print out html elements
  */
-function parent_dropdown( $default = 0, $parent = 0, $level = 0 ) {
+function parent_dropdown( $default = 0, $parent = 0, $level = 0, $post = null ) {
        global $wpdb;
-       $post = get_post();
+       $post = get_post( $post );
        $items = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_parent, post_title FROM $wpdb->posts WHERE post_parent = %d AND post_type = 'page' ORDER BY menu_order", $parent) );
 
        if ( $items ) {
@@ -935,44 +866,56 @@ function wp_import_upload_form( $action ) {
 <input type="hidden" name="action" value="save" />
 <input type="hidden" name="max_file_size" value="<?php echo $bytes; ?>" />
 </p>
-<?php submit_button( __('Upload file and import'), 'button' ); ?>
+<?php submit_button( __('Upload file and import'), 'primary' ); ?>
 </form>
 <?php
        endif;
 }
 
 /**
- * Add a meta box to an edit form.
+ * Adds a meta box to one or more screens.
  *
  * @since 2.5.0
+ * @since 4.4.0 The `$screen` parameter now accepts an array of screen IDs.
  *
  * @global array $wp_meta_boxes
  *
- * @param string           $id            String for use in the 'id' attribute of tags.
- * @param string           $title         Title of the meta box.
- * @param callback         $callback      Function that fills the box with the desired content.
- *                                        The function should echo its output.
- * @param string|WP_Screen $screen        Optional. The screen on which to show the box (like a post
- *                                        type, 'link', or 'comment'). Default is the current screen.
- * @param string           $context       Optional. The context within the screen where the boxes
- *                                        should display. Available contexts vary from screen to
- *                                        screen. Post edit screen contexts include 'normal', 'side',
- *                                        and 'advanced'. Comments screen contexts include 'normal'
- *                                        and 'side'. Menus meta boxes (accordion sections) all use
- *                                        the 'side' context. Global default is 'advanced'.
- * @param string           $priority      Optional. The priority within the context where the boxes
- *                                        should show ('high', 'low'). Default 'default'.
- * @param array            $callback_args Optional. Data that should be set as the $args property
- *                                        of the box array (which is the second parameter passed
- *                                        to your callback). Default null.
+ * @param string                 $id            Meta box ID (used in the 'id' attribute for the meta box).
+ * @param string                 $title         Title of the meta box.
+ * @param callable               $callback      Function that fills the box with the desired content.
+ *                                              The function should echo its output.
+ * @param string|array|WP_Screen $screen        Optional. The screen or screens on which to show the box
+ *                                              (such as a post type, 'link', or 'comment'). Accepts a single
+ *                                              screen ID, WP_Screen object, or array of screen IDs. Default
+ *                                              is the current screen.
+ * @param string                 $context       Optional. The context within the screen where the boxes
+ *                                              should display. Available contexts vary from screen to
+ *                                              screen. Post edit screen contexts include 'normal', 'side',
+ *                                              and 'advanced'. Comments screen contexts include 'normal'
+ *                                              and 'side'. Menus meta boxes (accordion sections) all use
+ *                                              the 'side' context. Global default is 'advanced'.
+ * @param string                 $priority      Optional. The priority within the context where the boxes
+ *                                              should show ('high', 'low'). Default 'default'.
+ * @param array                  $callback_args Optional. Data that should be set as the $args property
+ *                                              of the box array (which is the second parameter passed
+ *                                              to your callback). Default null.
  */
 function add_meta_box( $id, $title, $callback, $screen = null, $context = 'advanced', $priority = 'default', $callback_args = null ) {
        global $wp_meta_boxes;
 
-       if ( empty( $screen ) )
+       if ( empty( $screen ) ) {
                $screen = get_current_screen();
-       elseif ( is_string( $screen ) )
+       } elseif ( is_string( $screen ) ) {
                $screen = convert_to_screen( $screen );
+       } elseif ( is_array( $screen ) ) {
+               foreach ( $screen as $single_screen ) {
+                       add_meta_box( $id, $title, $callback, $single_screen, $context, $priority, $callback_args );
+               }
+       }
+
+       if ( ! isset( $screen->id ) ) {
+               return;
+       }
 
        $page = $screen->id;
 
@@ -1083,9 +1026,13 @@ function do_meta_boxes( $screen, $context, $object ) {
                                        $i++;
                                        $hidden_class = in_array($box['id'], $hidden) ? ' hide-if-js' : '';
                                        echo '<div id="' . $box['id'] . '" class="postbox ' . postbox_classes($box['id'], $page) . $hidden_class . '" ' . '>' . "\n";
-                                       if ( 'dashboard_browser_nag' != $box['id'] )
-                                               echo '<div class="handlediv" title="' . esc_attr__('Click to toggle') . '"><br /></div>';
-                                       echo "<h3 class='hndle'><span>{$box['title']}</span></h3>\n";
+                                       if ( 'dashboard_browser_nag' != $box['id'] ) {
+                                               echo '<button type="button" class="handlediv button-link" aria-expanded="true">';
+                                               echo '<span class="screen-reader-text">' . sprintf( __( 'Toggle panel: %s' ), $box['title'] ) . '</span>';
+                                               echo '<span class="toggle-indicator" aria-hidden="true"></span>';
+                                               echo '</button>';
+                                       }
+                                       echo "<h2 class='hndle'><span>{$box['title']}</span></h2>\n";
                                        echo '<div class="inside">' . "\n";
                                        call_user_func($box['callback'], $object, $box);
                                        echo "</div>\n";
@@ -1102,23 +1049,40 @@ function do_meta_boxes( $screen, $context, $object ) {
 }
 
 /**
- * Remove a meta box from an edit form.
+ * Removes a meta box from one or more screens.
  *
  * @since 2.6.0
+ * @since 4.4.0 The `$screen` parameter now accepts an array of screen IDs.
  *
  * @global array $wp_meta_boxes
  *
- * @param string        $id      String for use in the 'id' attribute of tags.
- * @param string|object $screen  The screen on which to show the box (post, page, link).
- * @param string        $context The context within the page where the boxes should show ('normal', 'advanced').
+ * @param string                 $id      Meta box ID (used in the 'id' attribute for the meta box).
+ * @param string|array|WP_Screen $screen  The screen or screens on which the meta box is shown (such as a
+ *                                        post type, 'link', or 'comment'). Accepts a single screen ID,
+ *                                        WP_Screen object, or array of screen IDs.
+ * @param string                 $context Optional. The context within the screen where the boxes
+ *                                        should display. Available contexts vary from screen to
+ *                                        screen. Post edit screen contexts include 'normal', 'side',
+ *                                        and 'advanced'. Comments screen contexts include 'normal'
+ *                                        and 'side'. Menus meta boxes (accordion sections) all use
+ *                                        the 'side' context. Global default is 'advanced'.
  */
-function remove_meta_box($id, $screen, $context) {
+function remove_meta_box( $id, $screen, $context ) {
        global $wp_meta_boxes;
 
-       if ( empty( $screen ) )
+       if ( empty( $screen ) ) {
                $screen = get_current_screen();
-       elseif ( is_string( $screen ) )
+       } elseif ( is_string( $screen ) ) {
                $screen = convert_to_screen( $screen );
+       } elseif ( is_array( $screen ) ) {
+               foreach ( $screen as $single_screen ) {
+                       remove_meta_box( $id, $single_screen, $context );
+               }
+       }
+
+       if ( ! isset( $screen->id ) ) {
+               return;
+       }
 
        $page = $screen->id;
 
@@ -1187,7 +1151,7 @@ function do_accordion_sections( $screen, $context, $object ) {
                                        <li class="control-section accordion-section <?php echo $hidden_class; ?> <?php echo $open_class; ?> <?php echo esc_attr( $box['id'] ); ?>" id="<?php echo esc_attr( $box['id'] ); ?>">
                                                <h3 class="accordion-section-title hndle" tabindex="0">
                                                        <?php echo esc_html( $box['title'] ); ?>
-                                                       <span class="screen-reader-text"><?php _e( 'Press return or enter to expand' ); ?></span>
+                                                       <span class="screen-reader-text"><?php _e( 'Press return or enter to open this section' ); ?></span>
                                                </h3>
                                                <div class="accordion-section-content <?php postbox_classes( $box['id'], $page ); ?>">
                                                        <div class="inside">
@@ -1305,7 +1269,7 @@ function add_settings_field($id, $title, $callback, $page, $section = 'default',
  * @global $wp_settings_fields Storage array of settings fields and info about their pages/sections
  * @since 2.7.0
  *
- * @param string $page The slug name of the page whos settings sections you want to output
+ * @param string $page The slug name of the page whose settings sections you want to output
  */
 function do_settings_sections( $page ) {
        global $wp_settings_sections, $wp_settings_fields;
@@ -1315,7 +1279,7 @@ function do_settings_sections( $page ) {
 
        foreach ( (array) $wp_settings_sections[$page] as $section ) {
                if ( $section['title'] )
-                       echo "<h3>{$section['title']}</h3>\n";
+                       echo "<h2>{$section['title']}</h2>\n";
 
                if ( $section['callback'] )
                        call_user_func( $section['callback'], $section );
@@ -1509,7 +1473,7 @@ function settings_errors( $setting = '', $sanitize = false, $hide_on_update = fa
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Outputs the modal window used for attaching media to posts or pages in the media-listing screen.
  *
  * @since 2.7.0
  *
@@ -1728,12 +1692,14 @@ function _post_states($post) {
                $post_states['scheduled'] = __( 'Scheduled' );
        }
 
-       if ( get_option( 'page_on_front' ) == $post->ID ) {
-               $post_states['page_on_front'] = __( 'Front Page' );
-       }
+       if ( 'page' === get_option( 'show_on_front' ) ) {
+               if ( intval( get_option( 'page_on_front' ) ) === $post->ID ) {
+                       $post_states['page_on_front'] = __( 'Front Page' );
+               }
 
-       if ( get_option( 'page_for_posts' ) == $post->ID ) {
-               $post_states['page_for_posts'] = __( 'Posts Page' );
+               if ( intval( get_option( 'page_for_posts' ) ) === $post->ID ) {
+                       $post_states['page_for_posts'] = __( 'Posts Page' );
+               }
        }
 
        /**
@@ -1741,15 +1707,15 @@ function _post_states($post) {
         *
         * @since 2.8.0
         *
-        * @param array $post_states An array of post display states.
-        * @param int   $post        The post ID.
+        * @param array   $post_states An array of post display states.
+        * @param WP_Post $post        The current post object.
         */
        $post_states = apply_filters( 'display_post_states', $post_states, $post );
 
        if ( ! empty($post_states) ) {
                $state_count = count($post_states);
                $i = 0;
-               echo ' - ';
+               echo ' &mdash; ';
                foreach ( $post_states as $state ) {
                        ++$i;
                        ( $i == $state_count ) ? $sep = '' : $sep = ', ';
@@ -1796,7 +1762,7 @@ function _media_states( $post ) {
        if ( ! empty( $media_states ) ) {
                $state_count = count( $media_states );
                $i = 0;
-               echo ' - ';
+               echo ' &mdash; ';
                foreach ( $media_states as $state ) {
                        ++$i;
                        ( $i == $state_count ) ? $sep = '' : $sep = ', ';
@@ -1998,159 +1964,6 @@ function _wp_admin_html_begin() {
 <?php
 }
 
-final class WP_Internal_Pointers {
-       /**
-        * Initializes the new feature pointers.
-        *
-        * @since 3.3.0
-        *
-        * All pointers can be disabled using the following:
-        *     remove_action( 'admin_enqueue_scripts', array( 'WP_Internal_Pointers', 'enqueue_scripts' ) );
-        *
-        * Individual pointers (e.g. wp390_widgets) can be disabled using the following:
-        *     remove_action( 'admin_print_footer_scripts', array( 'WP_Internal_Pointers', 'pointer_wp390_widgets' ) );
-        *
-        * @static
-        *
-        * @param string $hook_suffix The current admin page.
-        */
-       public static function enqueue_scripts( $hook_suffix ) {
-               /*
-                * Register feature pointers
-                *
-                * Format:
-                *     array(
-                *         hook_suffix => pointer callback
-                *     )
-                *
-                * Example:
-                *     array(
-                *         'themes.php' => 'wp390_widgets'
-                *     )
-                */
-               $registered_pointers = array(
-                       // None currently
-               );
-
-               // Check if screen related pointer is registered
-               if ( empty( $registered_pointers[ $hook_suffix ] ) )
-                       return;
-
-               $pointers = (array) $registered_pointers[ $hook_suffix ];
-
-               /*
-                * Specify required capabilities for feature pointers
-                *
-                * Format:
-                *     array(
-                *         pointer callback => Array of required capabilities
-                *     )
-                *
-                * Example:
-                *     array(
-                *         'wp390_widgets' => array( 'edit_theme_options' )
-                *     )
-                */
-               $caps_required = array(
-                       // None currently
-               );
-
-               // Get dismissed pointers
-               $dismissed = explode( ',', (string) get_user_meta( get_current_user_id(), 'dismissed_wp_pointers', true ) );
-
-               $got_pointers = false;
-               foreach ( array_diff( $pointers, $dismissed ) as $pointer ) {
-                       if ( isset( $caps_required[ $pointer ] ) ) {
-                               foreach ( $caps_required[ $pointer ] as $cap ) {
-                                       if ( ! current_user_can( $cap ) )
-                                               continue 2;
-                               }
-                       }
-
-                       // Bind pointer print function
-                       add_action( 'admin_print_footer_scripts', array( 'WP_Internal_Pointers', 'pointer_' . $pointer ) );
-                       $got_pointers = true;
-               }
-
-               if ( ! $got_pointers )
-                       return;
-
-               // Add pointers script and style to queue
-               wp_enqueue_style( 'wp-pointer' );
-               wp_enqueue_script( 'wp-pointer' );
-       }
-
-       /**
-        * Print the pointer JavaScript data.
-        *
-        * @since 3.3.0
-        *
-        * @static
-        *
-        * @param string $pointer_id The pointer ID.
-        * @param string $selector The HTML elements, on which the pointer should be attached.
-        * @param array  $args Arguments to be passed to the pointer JS (see wp-pointer.js).
-        */
-       private static function print_js( $pointer_id, $selector, $args ) {
-               if ( empty( $pointer_id ) || empty( $selector ) || empty( $args ) || empty( $args['content'] ) )
-                       return;
-
-               ?>
-               <script type="text/javascript">
-               (function($){
-                       var options = <?php echo wp_json_encode( $args ); ?>, setup;
-
-                       if ( ! options )
-                               return;
-
-                       options = $.extend( options, {
-                               close: function() {
-                                       $.post( ajaxurl, {
-                                               pointer: '<?php echo $pointer_id; ?>',
-                                               action: 'dismiss-wp-pointer'
-                                       });
-                               }
-                       });
-
-                       setup = function() {
-                               $('<?php echo $selector; ?>').first().pointer( options ).pointer('open');
-                       };
-
-                       if ( options.position && options.position.defer_loading )
-                               $(window).bind( 'load.wp-pointers', setup );
-                       else
-                               $(document).ready( setup );
-
-               })( jQuery );
-               </script>
-               <?php
-       }
-
-       public static function pointer_wp330_toolbar() {}
-       public static function pointer_wp330_media_uploader() {}
-       public static function pointer_wp330_saving_widgets() {}
-       public static function pointer_wp340_customize_current_theme_link() {}
-       public static function pointer_wp340_choose_image_from_library() {}
-       public static function pointer_wp350_media() {}
-       public static function pointer_wp360_revisions() {}
-       public static function pointer_wp360_locks() {}
-       public static function pointer_wp390_widgets() {}
-       public static function pointer_wp410_dfw() {}
-
-       /**
-        * Prevents new users from seeing existing 'new feature' pointers.
-        *
-        * @since 3.3.0
-        *
-        * @static
-        *
-        * @param int $user_id User ID.
-        */
-       public static function dismiss_pointers_for_new_users( $user_id ) {
-               add_user_meta( $user_id, 'dismissed_wp_pointers', '' );
-       }
-}
-
 /**
  * Convert a screen string to a screen object
  *
@@ -2160,7 +1973,7 @@ final class WP_Internal_Pointers {
  * @return WP_Screen Screen object.
  */
 function convert_to_screen( $hook_name ) {
-       if ( ! class_exists( 'WP_Screen' ) ) {
+       if ( ! class_exists( 'WP_Screen', false ) ) {
                _doing_it_wrong( 'convert_to_screen(), add_meta_box()', __( "Likely direct inclusion of wp-admin/includes/template.php in order to use add_meta_box(). This is very wrong. Hook the add_meta_box() call into the add_meta_boxes action instead." ), '3.3' );
                return (object) array( 'id' => '_invalid', 'base' => '_are_belong_to_us' );
        }
@@ -2197,6 +2010,8 @@ function _local_storage_notice() {
  * number of ratings may also be displayed by passing the $number parameter.
  *
  * @since 3.8.0
+ * @since 4.4.0 Introduced the `echo` parameter.
+ *
  * @param array $args {
  *     Optional. Array of star ratings arguments.
  *
@@ -2205,13 +2020,16 @@ function _local_storage_notice() {
  *     @type string $type   Format that the $rating is in. Valid values are 'rating' (default),
  *                          or, 'percent'. Default 'rating'.
  *     @type int    $number The number of ratings that makes up this rating. Default 0.
+ *     @type bool   $echo   Whether to echo the generated markup. False to return the markup instead
+ *                          of echoing it. Default true.
  * }
  */
 function wp_star_rating( $args = array() ) {
        $defaults = array(
                'rating' => 0,
-               'type' => 'rating',
+               'type'   => 'rating',
                'number' => 0,
+               'echo'   => true,
        );
        $r = wp_parse_args( $args, $defaults );
 
@@ -2237,12 +2055,18 @@ function wp_star_rating( $args = array() ) {
                $title = sprintf( __( '%s rating' ), number_format_i18n( $rating, 1 ) );
        }
 
-       echo '<div class="star-rating" title="' . esc_attr( $title ) . '">';
-       echo '<span class="screen-reader-text">' . $title . '</span>';
-       echo str_repeat( '<div class="star star-full"></div>', $full_stars );
-       echo str_repeat( '<div class="star star-half"></div>', $half_stars );
-       echo str_repeat( '<div class="star star-empty"></div>', $empty_stars);
-       echo '</div>';
+       $output = '<div class="star-rating" title="' . esc_attr( $title ) . '">';
+       $output .= '<span class="screen-reader-text">' . $title . '</span>';
+       $output .= str_repeat( '<div class="star star-full"></div>', $full_stars );
+       $output .= str_repeat( '<div class="star star-half"></div>', $half_stars );
+       $output .= str_repeat( '<div class="star star-empty"></div>', $empty_stars );
+       $output .= '</div>';
+
+       if ( $r['echo'] ) {
+               echo $output;
+       }
+
+       return $output;
 }
 
 /**
index 9bbfc7215d3572f4ff3d5cf00211321d15290354..dda79cbd4864561770fe6d26f4c66e58136dfd49 100644 (file)
@@ -187,7 +187,7 @@ function get_theme_update_available( $theme ) {
  *
  * @since 3.1.0
  *
- * @param bool $api Optional. Whether try to fetch tags from the WP.org API. Defaults to true.
+ * @param bool $api Optional. Whether try to fetch tags from the WordPress.org API. Defaults to true.
  * @return array Array of features keyed by category with translations keyed by slug.
  */
 function get_theme_feature_list( $api = true ) {
@@ -296,27 +296,87 @@ function get_theme_feature_list( $api = true ) {
 }
 
 /**
- * Retrieve theme installer pages from WordPress Themes API.
+ * Retrieves theme installer pages from the WordPress.org Themes API.
  *
  * It is possible for a theme to override the Themes API result with three
  * filters. Assume this is for themes, which can extend on the Theme Info to
  * offer more choices. This is very powerful and must be used with care, when
  * overriding the filters.
  *
- * The first filter, 'themes_api_args', is for the args and gives the action as
- * the second parameter. The hook for 'themes_api_args' must ensure that an
- * object is returned.
+ * The first filter, {@see 'themes_api_args'}, is for the args and gives the action
+ * as the second parameter. The hook for {@see 'themes_api_args'} must ensure that
+ * an object is returned.
  *
- * The second filter, 'themes_api', is the result that would be returned.
+ * The second filter, {@see 'themes_api'}, allows a plugin to override the WordPress.org
+ * Theme API entirely. If `$action` is 'query_themes', 'theme_information', or 'feature_list',
+ * an object MUST be passed. If `$action` is 'hot_tags`, an array should be passed.
+ *
+ * Finally, the third filter, {@see 'themes_api_result'}, makes it possible to filter the
+ * response object or array, depending on the `$action` type.
+ *
+ * Supported arguments per action:
+ *
+ * | Argument Name      | 'query_themes' | 'theme_information' | 'hot_tags' | 'feature_list'   |
+ * | -------------------| :------------: | :-----------------: | :--------: | :--------------: |
+ * | `$slug`            | No             |  Yes                | No         | No               |
+ * | `$per_page`        | Yes            |  No                 | No         | No               |
+ * | `$page`            | Yes            |  No                 | No         | No               |
+ * | `$number`          | No             |  No                 | Yes        | No               |
+ * | `$search`          | Yes            |  No                 | No         | No               |
+ * | `$tag`             | Yes            |  No                 | No         | No               |
+ * | `$author`          | Yes            |  No                 | No         | No               |
+ * | `$user`            | Yes            |  No                 | No         | No               |
+ * | `$browse`          | Yes            |  No                 | No         | No               |
+ * | `$locale`          | Yes            |  Yes                | No         | No               |
+ * | `$fields`          | Yes            |  Yes                | No         | No               |
  *
  * @since 2.8.0
  *
- * @param string       $action The requested action. Likely values are 'theme_information',
- *                             'feature_list', or 'query_themes'.
- * @param array|object $args   Optional. Arguments to serialize for the Theme Info API.
- * @return mixed
+ * @param string       $action API action to perform: 'query_themes', 'theme_information',
+ *                             'hot_tags' or 'feature_list'.
+ * @param array|object $args   {
+ *     Optional. Array or object of arguments to serialize for the Plugin Info API.
+ *
+ *     @type string  $slug     The plugin slug. Default empty.
+ *     @type int     $per_page Number of themes per page. Default 24.
+ *     @type int     $page     Number of current page. Default 1.
+ *     @type int     $number   Number of tags to be queried.
+ *     @type string  $search   A search term. Default empty.
+ *     @type string  $tag      Tag to filter themes. Default empty.
+ *     @type string  $author   Username of an author to filter themes. Default empty.
+ *     @type string  $user     Username to query for their favorites. Default empty.
+ *     @type string  $browse   Browse view: 'featured', 'popular', 'updated', 'favorites'.
+ *     @type string  $locale   Locale to provide context-sensitive results. Default is the value of get_locale().
+ *     @type array   $fields   {
+ *         Array of fields which should or should not be returned.
+ *
+ *         @type bool $description        Whether to return the theme full description. Default false.
+ *         @type bool $sections           Whether to return the theme readme sections: description, installation,
+ *                                        FAQ, screenshots, other notes, and changelog. Default false.
+ *         @type bool $rating             Whether to return the rating in percent and total number of ratings.
+ *                                        Default false.
+ *         @type bool $ratings            Whether to return the number of rating for each star (1-5). Default false.
+ *         @type bool $downloaded         Whether to return the download count. Default false.
+ *         @type bool $downloadlink       Whether to return the download link for the package. Default false.
+ *         @type bool $last_updated       Whether to return the date of the last update. Default false.
+ *         @type bool $tags               Whether to return the assigned tags. Default false.
+ *         @type bool $homepage           Whether to return the theme homepage link. Default false.
+ *         @type bool $screenshots        Whether to return the screenshots. Default false.
+ *         @type int  $screenshot_count   Number of screenshots to return. Default 1.
+ *         @type bool $screenshot_url     Whether to return the URL of the first screenshot. Default false.
+ *         @type bool $photon_screenshots Whether to return the screenshots via Photon. Default false.
+ *         @type bool $template           Whether to return the slug of the parent theme. Default false.
+ *         @type bool $parent             Whether to return the slug, name and homepage of the parent theme. Default false.
+ *         @type bool $versions           Whether to return the list of all available versions. Default false.
+ *         @type bool $theme_url          Whether to return theme's URL. Default false.
+ *         @type bool $extended_author    Whether to return nicename or nicename and display name. Default false.
+ *     }
+ * }
+ * @return object|array|WP_Error Response object or array on success, WP_Error on failure. See the
+ *         {@link https://developer.wordpress.org/reference/functions/themes_api/ function reference article}
+ *         for more information on the make-up of possible return objects depending on the value of `$action`.
  */
-function themes_api( $action, $args = null ) {
+function themes_api( $action, $args = array() ) {
 
        if ( is_array( $args ) ) {
                $args = (object) $args;
@@ -346,15 +406,17 @@ function themes_api( $action, $args = null ) {
        /**
         * Filter whether to override the WordPress.org Themes API.
         *
-        * Returning a value of true to this filter allows a theme to completely
-        * override the built-in WordPress.org API.
+        * Passing a non-false value will effectively short-circuit the WordPress.org API request.
+        *
+        * If `$action` is 'query_themes', 'theme_information', or 'feature_list', an object MUST
+        * be passed. If `$action` is 'hot_tags`, an array should be passed.
         *
         * @since 2.8.0
         *
-        * @param bool   $bool   Whether to override the WordPress.org Themes API. Default false.
-        * @param string $action Requested action. Likely values are 'theme_information',
-        *                       'feature_list', or 'query_themes'.
-        * @param object $args   Arguments used to query for installer pages from the Themes API.
+        * @param false|object|array $override Whether to override the WordPress.org Themes API. Default false.
+        * @param string             $action   Requested action. Likely values are 'theme_information',
+        *                                    'feature_list', or 'query_themes'.
+        * @param object             $args     Arguments used to query for installer pages from the Themes API.
         */
        $res = apply_filters( 'themes_api', false, $action, $args );
 
@@ -463,6 +525,16 @@ function wp_prepare_themes_for_js( $themes = null ) {
                        $parents[ $slug ] = $theme->parent()->get_stylesheet();
                }
 
+               $customize_action = null;
+               if ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) ) {
+                       $customize_action = esc_url( add_query_arg(
+                               array(
+                                       'return' => urlencode( esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ),
+                               ),
+                               wp_customize_url( $slug )
+                       ) );
+               }
+
                $prepared_themes[ $slug ] = array(
                        'id'           => $slug,
                        'name'         => $theme->display( 'Name' ),
@@ -478,7 +550,7 @@ function wp_prepare_themes_for_js( $themes = null ) {
                        'update'       => get_theme_update_available( $theme ),
                        'actions'      => array(
                                'activate' => current_user_can( 'switch_themes' ) ? wp_nonce_url( admin_url( 'themes.php?action=activate&amp;stylesheet=' . $encoded_slug ), 'switch-theme_' . $slug ) : null,
-                               'customize' => ( current_user_can( 'edit_theme_options' ) && current_user_can( 'customize' ) ) ? wp_customize_url( $slug ) : null,
+                               'customize' => $customize_action,
                                'delete'   => current_user_can( 'delete_themes' ) ? wp_nonce_url( admin_url( 'themes.php?action=delete&amp;stylesheet=' . $encoded_slug ), 'delete-theme_' . $slug ) : null,
                        ),
                );
@@ -533,8 +605,8 @@ function customize_themes_print_templates() {
                                        <# if ( data.active ) { #>
                                                <span class="current-label"><?php _e( 'Current Theme' ); ?></span>
                                        <# } #>
-                                       <h3 class="theme-name">{{{ data.name }}}<span class="theme-version"><?php printf( __( 'Version: %s' ), '{{ data.version }}' ); ?></span></h3>
-                                       <h4 class="theme-author"><?php printf( __( 'By %s' ), '{{{ data.authorAndUri }}}' ); ?></h4>
+                                       <h2 class="theme-name">{{{ data.name }}}<span class="theme-version"><?php printf( __( 'Version: %s' ), '{{ data.version }}' ); ?></span></h2>
+                                       <h3 class="theme-author"><?php printf( __( 'By %s' ), '{{{ data.authorAndUri }}}' ); ?></h3>
                                        <p class="theme-description">{{{ data.description }}}</p>
 
                                        <# if ( data.parent ) { #>
index 8e1b827c479e27e790102891585088866fbb00d2..2056838f003621004a1bd141ae2f0605a617be44 100644 (file)
@@ -94,7 +94,7 @@ function translations_api( $type, $args = null ) {
  *               in an error, an empty array will be returned.
  */
 function wp_get_available_translations() {
-       if ( ! defined( 'WP_INSTALLING' ) && false !== ( $translations = get_site_transient( 'available_translations' ) ) ) {
+       if ( ! wp_installing() && false !== ( $translations = get_site_transient( 'available_translations' ) ) ) {
                return $translations;
        }
 
index 04aa988a432ceaae51e5b39d1cb2c86b28927b6b..9f17a086d9e7f2a3ad6cc76fb40bd17d37eb36ab 100644 (file)
@@ -715,6 +715,9 @@ $_old_files = array(
  * Directories should be noted by suffixing it with a trailing slash (/)
  *
  * @since 3.2.0
+ * @since 4.4.0 New themes are not automatically installed on upgrade.
+ *              This can still be explicitly asked for by defining
+ *              CORE_UPGRADE_SKIP_NEW_BUNDLED as false.
  * @global array $_new_bundled_files
  * @var array
  * @name $_new_bundled_files
@@ -729,8 +732,14 @@ $_new_bundled_files = array(
        'themes/twentythirteen/' => '3.6',
        'themes/twentyfourteen/' => '3.8',
        'themes/twentyfifteen/'  => '4.1',
+       'themes/twentysixteen/'  => '4.4',
 );
 
+// If not explicitly defined as false, don't install new default themes.
+if ( ! defined( 'CORE_UPGRADE_SKIP_NEW_BUNDLED' ) || CORE_UPGRADE_SKIP_NEW_BUNDLED ) {
+       $_new_bundled_files = array( 'plugins/akismet/' => '2.0' );
+}
+
 /**
  * Upgrade the core of WordPress.
  *
@@ -881,7 +890,7 @@ function update_core($from, $to) {
                if ( is_array( $checksums ) && isset( $checksums[ $wp_version ] ) )
                        $checksums = $checksums[ $wp_version ]; // Compat code for 3.7-beta2
                if ( is_array( $checksums ) ) {
-                       foreach( $checksums as $file => $checksum ) {
+                       foreach ( $checksums as $file => $checksum ) {
                                if ( 'wp-content' == substr( $file, 0, 10 ) )
                                        continue;
                                if ( ! file_exists( ABSPATH . $file ) )
@@ -1073,6 +1082,9 @@ function update_core($from, $to) {
        // Remove any Genericons example.html's from the filesystem
        _upgrade_422_remove_genericons();
 
+       // Remove the REST API plugin if its version is Beta 4 or lower
+       _upgrade_440_force_deactivate_incompatible_plugins();
+
        // Upgrade DB with separate request
        /** This filter is documented in wp-admin/includes/update-core.php */
        apply_filters( 'update_feedback', __( 'Upgrading database&#8230;' ) );
@@ -1287,3 +1299,13 @@ function _upgrade_422_find_genericons_files_in_folder( $directory ) {
 
        return $files;
 }
+
+/**
+ * @ignore
+ * @since 4.4.0
+ */
+function _upgrade_440_force_deactivate_incompatible_plugins() {
+       if ( defined( 'REST_API_VERSION' ) && version_compare( REST_API_VERSION, '2.0-beta4', '<=' ) ) {
+               deactivate_plugins( array( 'rest-api/plugin.php' ), true );
+       }
+}
index 9bbb0c0f88540b29182d111a94597752dd47c7b0..6661d44afd1a0acf5f163d27c39000da590db693 100644 (file)
@@ -203,7 +203,7 @@ function core_update_footer( $msg = '' ) {
                return sprintf( __( 'You are using a development version (%1$s). Cool! Please <a href="%2$s">stay updated</a>.' ), get_bloginfo( 'version', 'display' ), network_admin_url( 'update-core.php' ) );
 
        case 'upgrade' :
-               return sprintf( '<strong>'.__( '<a href="%1$s">Get Version %2$s</a>' ).'</strong>', network_admin_url( 'update-core.php' ), $cur->current);
+               return '<strong><a href="' . network_admin_url( 'update-core.php' ) . '">' . sprintf( __( 'Get Version %s' ), $cur->current ) . '</a></strong>';
 
        case 'latest' :
        default :
@@ -254,7 +254,21 @@ function update_right_now_message() {
                        $msg .= '<a href="' . network_admin_url( 'update-core.php' ) . '" class="button" aria-describedby="wp-version">' . sprintf( __( 'Update to %s' ), $cur->current ? $cur->current : __( 'Latest' ) ) . '</a> ';
        }
 
-       $msg .= sprintf( '<span id="wp-version">' . __( 'WordPress %1$s running %2$s theme.' ) . '</span>', get_bloginfo( 'version', 'display' ), $theme_name );
+       /* translators: 1: version number, 2: theme name */
+       $content = __( 'WordPress %1$s running %2$s theme.' );
+
+       /**
+        * Filter the text displayed in the 'At a Glance' dashboard widget.
+        *
+        * Prior to 3.8.0, the widget was named 'Right Now'.
+        *
+        * @since 4.4.0
+        *
+        * @param string $content Default text.
+        */
+       $content = apply_filters( 'update_right_now_text', $content );
+
+       $msg .= sprintf( '<span id="wp-version">' . $content . '</span>', get_bloginfo( 'version', 'display' ), $theme_name );
 
        echo "<p id='wp-version-message'>$msg</p>";
 }
@@ -288,7 +302,7 @@ function wp_plugin_update_rows() {
        $plugins = get_site_transient( 'update_plugins' );
        if ( isset($plugins->response) && is_array($plugins->response) ) {
                $plugins = array_keys( $plugins->response );
-               foreach( $plugins as $plugin_file ) {
+               foreach ( $plugins as $plugin_file ) {
                        add_action( "after_plugin_row_$plugin_file", 'wp_plugin_update_row', 10, 2 );
                }
        }
@@ -401,7 +415,7 @@ function wp_theme_update_rows() {
        if ( isset($themes->response) && is_array($themes->response) ) {
                $themes = array_keys( $themes->response );
 
-               foreach( $themes as $theme ) {
+               foreach ( $themes as $theme ) {
                        add_action( "after_theme_row_$theme", 'wp_theme_update_row', 10, 2 );
                }
        }
index 95381faa724554b3cb4967629d5464b731a6dc9c..72d99b77b9a6c783f808e16e1ebf17666a0e6c32 100644 (file)
@@ -155,11 +155,18 @@ function wp_install_defaults( $user_id ) {
        if ( is_multisite() ) {
                $first_post = get_site_option( 'first_post' );
 
-               if ( empty($first_post) )
-                       $first_post = __( 'Welcome to <a href="SITE_URL">SITE_NAME</a>. This is your first post. Edit or delete it, then start writing!' );
+               if ( ! $first_post ) {
+                       /* translators: %s: site link */
+                       $first_post = __( 'Welcome to %s. This is your first post. Edit or delete it, then start blogging!' );
+               }
+
+               $first_post = sprintf( $first_post,
+                       sprintf( '<a href="%s">%s</a>', esc_url( network_home_url() ), get_current_site()->site_name )
+               );
 
-               $first_post = str_replace( "SITE_URL", esc_url( network_home_url() ), $first_post );
-               $first_post = str_replace( "SITE_NAME", get_current_site()->site_name, $first_post );
+               // Back-compat for pre-4.4
+               $first_post = str_replace( 'SITE_URL', esc_url( network_home_url() ), $first_post );
+               $first_post = str_replace( 'SITE_NAME', get_current_site()->site_name, $first_post );
        } else {
                $first_post = __( 'Welcome to WordPress. This is your first post. Edit or delete it, then start writing!' );
        }
@@ -392,7 +399,7 @@ if ( !function_exists('wp_upgrade') ) :
  *
  * @global int  $wp_current_db_version
  * @global int  $wp_db_version
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function wp_upgrade() {
        global $wp_current_db_version, $wp_db_version, $wpdb;
@@ -538,6 +545,9 @@ function upgrade_all() {
        if ( $wp_current_db_version < 33056 )
                upgrade_431();
 
+       if ( $wp_current_db_version < 35700 )
+               upgrade_440();
+
        maybe_disable_link_manager();
 
        maybe_disable_automattic_widgets();
@@ -551,7 +561,7 @@ function upgrade_all() {
  *
  * @since 1.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function upgrade_100() {
        global $wpdb;
@@ -559,7 +569,7 @@ function upgrade_100() {
        // Get the title and ID of every post, post_name to check if it already has a value
        $posts = $wpdb->get_results("SELECT ID, post_title, post_name FROM $wpdb->posts WHERE post_name = ''");
        if ($posts) {
-               foreach($posts as $post) {
+               foreach ($posts as $post) {
                        if ('' == $post->post_name) {
                                $newtitle = sanitize_title($post->post_title);
                                $wpdb->query( $wpdb->prepare("UPDATE $wpdb->posts SET post_name = %s WHERE ID = %d", $newtitle, $post->ID) );
@@ -609,7 +619,7 @@ function upgrade_100() {
  *
  * @since 1.0.1
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function upgrade_101() {
        global $wpdb;
@@ -629,7 +639,7 @@ function upgrade_101() {
  *
  * @since 1.2.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function upgrade_110() {
        global $wpdb;
@@ -691,7 +701,7 @@ function upgrade_110() {
  *
  * @since 1.5.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function upgrade_130() {
        global $wpdb;
@@ -699,7 +709,7 @@ function upgrade_130() {
        // Remove extraneous backslashes.
        $posts = $wpdb->get_results("SELECT ID, post_title, post_content, post_excerpt, guid, post_date, post_name, post_status, post_author FROM $wpdb->posts");
        if ($posts) {
-               foreach($posts as $post) {
+               foreach ($posts as $post) {
                        $post_content = addslashes(deslash($post->post_content));
                        $post_title = addslashes(deslash($post->post_title));
                        $post_excerpt = addslashes(deslash($post->post_excerpt));
@@ -716,7 +726,7 @@ function upgrade_130() {
        // Remove extraneous backslashes.
        $comments = $wpdb->get_results("SELECT comment_ID, comment_author, comment_content FROM $wpdb->comments");
        if ($comments) {
-               foreach($comments as $comment) {
+               foreach ($comments as $comment) {
                        $comment_content = deslash($comment->comment_content);
                        $comment_author = deslash($comment->comment_author);
 
@@ -727,7 +737,7 @@ function upgrade_130() {
        // Remove extraneous backslashes.
        $links = $wpdb->get_results("SELECT link_id, link_name, link_description FROM $wpdb->links");
        if ($links) {
-               foreach($links as $link) {
+               foreach ($links as $link) {
                        $link_name = deslash($link->link_name);
                        $link_description = deslash($link->link_description);
 
@@ -777,7 +787,7 @@ function upgrade_130() {
  *
  * @since 2.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  * @global int  $wp_current_db_version
  */
 function upgrade_160() {
@@ -863,7 +873,7 @@ function upgrade_160() {
  *
  * @since 2.1.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  * @global int  $wp_current_db_version
  */
 function upgrade_210() {
@@ -910,7 +920,7 @@ function upgrade_210() {
  *
  * @since 2.3.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  * @global int  $wp_current_db_version
  */
 function upgrade_230() {
@@ -1089,7 +1099,7 @@ function upgrade_230() {
  *
  * @since 2.3.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function upgrade_230_options_table() {
        global $wpdb;
@@ -1105,7 +1115,7 @@ function upgrade_230_options_table() {
  *
  * @since 2.3.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function upgrade_230_old_tables() {
        global $wpdb;
@@ -1119,7 +1129,7 @@ function upgrade_230_old_tables() {
  *
  * @since 2.2.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function upgrade_old_slugs() {
        // Upgrade people who were using the Redirect Old Slugs plugin.
@@ -1148,7 +1158,7 @@ function upgrade_250() {
  *
  * @since 2.5.2
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function upgrade_252() {
        global $wpdb;
@@ -1175,7 +1185,7 @@ function upgrade_260() {
  *
  * @since 2.7.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  * @global int  $wp_current_db_version
  */
 function upgrade_270() {
@@ -1195,7 +1205,7 @@ function upgrade_270() {
  * @since 2.8.0
  *
  * @global int  $wp_current_db_version
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function upgrade_280() {
        global $wp_current_db_version, $wpdb;
@@ -1205,7 +1215,7 @@ function upgrade_280() {
        if ( is_multisite() ) {
                $start = 0;
                while( $rows = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options ORDER BY option_id LIMIT $start, 20" ) ) {
-                       foreach( $rows as $row ) {
+                       foreach ( $rows as $row ) {
                                $value = $row->option_value;
                                if ( !@unserialize( $value ) )
                                        $value = stripslashes( $value );
@@ -1244,7 +1254,7 @@ function upgrade_290() {
  * @since 3.0.0
  *
  * @global int  $wp_current_db_version
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function upgrade_300() {
        global $wp_current_db_version, $wpdb;
@@ -1595,6 +1605,30 @@ function upgrade_431() {
        }
 }
 
+/**
+ * Executes changes made in WordPress 4.4.0.
+ *
+ * @since 4.4.0
+ *
+ * @global int  $wp_current_db_version Current version.
+ * @global wpdb $wpdb                  WordPress database abstraction object.
+ */
+function upgrade_440() {
+       global $wp_current_db_version, $wpdb;
+
+       if ( $wp_current_db_version < 34030 ) {
+               $wpdb->query( "ALTER TABLE {$wpdb->options} MODIFY option_name VARCHAR(191)" );
+       }
+
+       // Remove the unused 'add_users' role.
+       $roles = wp_roles();
+       foreach ( $roles->role_objects as $role ) {
+               if ( $role->has_cap( 'add_users' ) ) {
+                       $role->remove_cap( 'add_users' );
+               }
+       }
+}
+
 /**
  * Executes network-level upgrade routines.
  *
@@ -1639,7 +1673,7 @@ function upgrade_network() {
 
                $start = 0;
                while( $rows = $wpdb->get_results( "SELECT meta_key, meta_value FROM {$wpdb->sitemeta} ORDER BY meta_id LIMIT $start, 20" ) ) {
-                       foreach( $rows as $row ) {
+                       foreach ( $rows as $row ) {
                                $value = $row->meta_value;
                                if ( !@unserialize( $value ) )
                                        $value = stripslashes( $value );
@@ -1721,7 +1755,7 @@ function upgrade_network() {
                if ( wp_should_upgrade_global_tables() ) {
                        $upgrade = false;
                        $indexes = $wpdb->get_results( "SHOW INDEXES FROM $wpdb->signups" );
-                       foreach( $indexes as $index ) {
+                       foreach ( $indexes as $index ) {
                                if ( 'domain_path' == $index->Key_name && 'domain' == $index->Column_name && 140 != $index->Sub_part ) {
                                        $upgrade = true;
                                        break;
@@ -2025,7 +2059,7 @@ function dbDelta( $queries = '', $execute = true ) {
        $for_update = array();
 
        // Create a tablename index for an array ($cqueries) of queries
-       foreach($queries as $qry) {
+       foreach ($queries as $qry) {
                if ( preg_match( "|CREATE TABLE ([^ ]*)|", $qry, $matches ) ) {
                        $cqueries[ trim( $matches[1], '`' ) ] = $qry;
                        $for_update[$matches[1]] = 'Created table '.$matches[1];
@@ -2176,6 +2210,7 @@ function dbDelta( $queries = '', $execute = true ) {
                                $keyname = $tableindex->Key_name;
                                $index_ary[$keyname]['columns'][] = array('fieldname' => $tableindex->Column_name, 'subpart' => $tableindex->Sub_part);
                                $index_ary[$keyname]['unique'] = ($tableindex->Non_unique == 0)?true:false;
+                               $index_ary[$keyname]['index_type'] = $tableindex->Index_type;
                        }
 
                        // For each actual index in the index array.
@@ -2188,6 +2223,9 @@ function dbDelta( $queries = '', $execute = true ) {
                                } elseif ( $index_data['unique'] ) {
                                        $index_string .= 'UNIQUE ';
                                }
+                               if ( 'FULLTEXT' === strtoupper( $index_data['index_type'] ) ) {
+                                       $index_string .= 'FULLTEXT ';
+                               }
                                $index_string .= 'KEY ';
                                if ($index_name != 'PRIMARY') {
                                        $index_string .= $index_name;
@@ -2214,7 +2252,7 @@ function dbDelta( $queries = '', $execute = true ) {
                                        "$index_string ($alt_index_columns)",
                                );
 
-                               foreach( $index_strings as $index_string ) {
+                               foreach ( $index_strings as $index_string ) {
                                        if ( ! ( ( $aindex = array_search( $index_string, $indices ) ) === false ) ) {
                                                unset( $indices[ $aindex ] );
                                                break;
@@ -2265,7 +2303,7 @@ function dbDelta( $queries = '', $execute = true ) {
 function make_db_current( $tables = 'all' ) {
        $alterations = dbDelta( $tables );
        echo "<ol>\n";
-       foreach($alterations as $alteration) echo "<li>$alteration</li>\n";
+       foreach ($alterations as $alteration) echo "<li>$alteration</li>\n";
        echo "</ol>\n";
 }
 
@@ -2549,7 +2587,7 @@ function maybe_disable_automattic_widgets() {
  * @since 3.5.0
  *
  * @global int  $wp_current_db_version
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function maybe_disable_link_manager() {
        global $wp_current_db_version, $wpdb;
@@ -2564,7 +2602,7 @@ function maybe_disable_link_manager() {
  * @since 2.9.0
  *
  * @global int  $wp_current_db_version
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function pre_schema_upgrade() {
        global $wp_current_db_version, $wpdb;
@@ -2609,6 +2647,15 @@ function pre_schema_upgrade() {
                $wpdb->query( "ALTER TABLE $wpdb->postmeta DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))" );
                $wpdb->query( "ALTER TABLE $wpdb->posts DROP INDEX post_name, ADD INDEX post_name(post_name(191))" );
        }
+
+       // Upgrade versions prior to 4.4.
+       if ( $wp_current_db_version < 34978 ) {
+               // If compatible termmeta table is found, use it, but enforce a proper index and update collation.
+               if ( $wpdb->get_var( "SHOW TABLES LIKE '{$wpdb->termmeta}'" ) && $wpdb->get_results( "SHOW INDEX FROM {$wpdb->termmeta} WHERE Column_name = 'meta_key'" ) ) {
+                       $wpdb->query( "ALTER TABLE $wpdb->termmeta DROP INDEX meta_key, ADD INDEX meta_key(meta_key(191))" );
+                       maybe_convert_table_to_utf8mb4( $wpdb->termmeta );
+               }
+       }
 }
 
 /**
index 8e1df4f22c270223faa1ee259a79875f0e510af1..005266860a5fd6edadbca9361dfbb3b6c4a31840 100644 (file)
@@ -108,6 +108,11 @@ function edit_user( $user_id = 0 ) {
        if ( $user->user_login == '' )
                $errors->add( 'user_login', __( '<strong>ERROR</strong>: Please enter a username.' ) );
 
+       /* checking that nickname has been typed */
+       if ( $update && empty( $user->nickname ) ) {
+               $errors->add( 'nickname', __( '<strong>ERROR</strong>: Please enter a nickname.' ) );
+       }
+
        /* checking the password has been typed twice */
        /**
         * Fires before the password and confirm password fields are checked for congruity.
@@ -120,25 +125,13 @@ function edit_user( $user_id = 0 ) {
         */
        do_action_ref_array( 'check_passwords', array( $user->user_login, &$pass1, &$pass2 ) );
 
-       if ( $update ) {
-               if ( empty($pass1) && !empty($pass2) )
-                       $errors->add( 'pass', __( '<strong>ERROR</strong>: You entered your new password only once.' ), array( 'form-field' => 'pass1' ) );
-               elseif ( !empty($pass1) && empty($pass2) )
-                       $errors->add( 'pass', __( '<strong>ERROR</strong>: You entered your new password only once.' ), array( 'form-field' => 'pass2' ) );
-       } else {
-               if ( empty($pass1) )
-                       $errors->add( 'pass', __( '<strong>ERROR</strong>: Please enter your password.' ), array( 'form-field' => 'pass1' ) );
-               elseif ( empty($pass2) )
-                       $errors->add( 'pass', __( '<strong>ERROR</strong>: Please enter your password twice.' ), array( 'form-field' => 'pass2' ) );
-       }
-
        /* Check for "\" in password */
        if ( false !== strpos( wp_unslash( $pass1 ), "\\" ) )
                $errors->add( 'pass', __( '<strong>ERROR</strong>: Passwords may not contain the character "\\".' ), array( 'form-field' => 'pass1' ) );
 
        /* checking the password has been typed twice the same */
        if ( $pass1 != $pass2 )
-               $errors->add( 'pass', __( '<strong>ERROR</strong>: Please enter the same password in the two password fields.' ), array( 'form-field' => 'pass1' ) );
+               $errors->add( 'pass', __( '<strong>ERROR</strong>: Please enter the same password in both password fields.' ), array( 'form-field' => 'pass1' ) );
 
        if ( !empty( $pass1 ) )
                $user->user_pass = $pass1;
@@ -149,9 +142,16 @@ function edit_user( $user_id = 0 ) {
        if ( !$update && username_exists( $user->user_login ) )
                $errors->add( 'user_login', __( '<strong>ERROR</strong>: This username is already registered. Please choose another one.' ));
 
-       /* checking e-mail address */
+       /** This filter is documented in wp-includes/user.php */
+       $illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
+
+       if ( in_array( strtolower( $user->user_login ), array_map( 'strtolower', $illegal_logins ) ) ) {
+               $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: Sorry, that username is not allowed.' ) );
+       }
+
+       /* checking email address */
        if ( empty( $user->user_email ) ) {
-               $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please enter an e-mail address.' ), array( 'form-field' => 'email' ) );
+               $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please enter an email address.' ), array( 'form-field' => 'email' ) );
        } elseif ( !is_email( $user->user_email ) ) {
                $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The email address isn&#8217;t correct.' ), array( 'form-field' => 'email' ) );
        } elseif ( ( $owner_id = email_exists($user->user_email) ) && ( !$update || ( $owner_id != $user->ID ) ) ) {
@@ -163,9 +163,9 @@ function edit_user( $user_id = 0 ) {
         *
         * @since 2.8.0
         *
-        * @param array   &$errors An array of user profile update errors, passed by reference.
-        * @param bool    $update  Whether this is a user update.
-        * @param WP_User &$user   WP_User object, passed by reference.
+        * @param WP_Error &$errors WP_Error object, passed by reference.
+        * @param bool     $update  Whether this is a user update.
+        * @param WP_User  &$user   WP_User object, passed by reference.
         */
        do_action_ref_array( 'user_profile_update_errors', array( &$errors, $update, &$user ) );
 
@@ -176,7 +176,18 @@ function edit_user( $user_id = 0 ) {
                $user_id = wp_update_user( $user );
        } else {
                $user_id = wp_insert_user( $user );
-               wp_new_user_notification( $user_id, null, 'both' );
+               $notify  = isset( $_POST['send_user_notification'] ) ? 'both' : 'admin';
+
+               /**
+                 * Fires after a new user has been created.
+                 *
+                 * @since 4.4.0
+                 *
+                 * @param int    $user_id ID of the newly created user.
+                 * @param string $notify  Type of notification that should happen. See {@see wp_send_new_user_notifications()}
+                 *                        for more information on possible values.
+                 */
+               do_action( 'edit_user_created_user', $user_id, $notify );
        }
        return $user_id;
 }
@@ -234,7 +245,7 @@ function get_user_to_edit( $user_id ) {
  *
  * @since 2.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $user_id User ID.
  * @return array
@@ -264,7 +275,7 @@ function get_users_drafts( $user_id ) {
  *
  * @since 2.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $id User ID.
  * @param int $reassign Optional. Reassign posts and links to new User ID.
@@ -273,6 +284,10 @@ function get_users_drafts( $user_id ) {
 function wp_delete_user( $id, $reassign = null ) {
        global $wpdb;
 
+       if ( ! is_numeric( $id ) ) {
+               return false;
+       }
+
        $id = (int) $id;
        $user = new WP_User( $id );
 
@@ -446,3 +461,57 @@ function default_password_nag() {
        printf( '<a href="%s" id="default-password-nag-no">' . __('No thanks, do not remind me again') . '</a>', '?default_password_nag=0' );
        echo '</p></div>';
 }
+
+/**
+ * @since 3.5.0
+ * @access private
+ */
+function delete_users_add_js() { ?>
+<script>
+jQuery(document).ready( function($) {
+       var submit = $('#submit').prop('disabled', true);
+       $('input[name="delete_option"]').one('change', function() {
+               submit.prop('disabled', false);
+       });
+       $('#reassign_user').focus( function() {
+               $('#delete_option1').prop('checked', true).trigger('change');
+       });
+});
+</script>
+<?php
+}
+
+/**
+ * Optional SSL preference that can be turned on by hooking to the 'personal_options' action.
+ *
+ * @since 2.7.0
+ *
+ * @param object $user User data object
+ */
+function use_ssl_preference($user) {
+?>
+       <tr class="user-use-ssl-wrap">
+               <th scope="row"><?php _e('Use https')?></th>
+               <td><label for="use_ssl"><input name="use_ssl" type="checkbox" id="use_ssl" value="1" <?php checked('1', $user->use_ssl); ?> /> <?php _e('Always use https when visiting the admin'); ?></label></td>
+       </tr>
+<?php
+}
+
+/**
+ *
+ * @param string $text
+ * @return string
+ */
+function admin_created_user_email( $text ) {
+       $roles = get_editable_roles();
+       $role = $roles[ $_REQUEST['role'] ];
+       /* translators: 1: Site name, 2: site URL, 3: role */
+       return sprintf( __( 'Hi,
+You\'ve been invited to join \'%1$s\' at
+%2$s with the role of %3$s.
+If you do not want to join this site please ignore
+this email. This invitation will expire in a few days.
+
+Please click the following link to activate your user account:
+%%s' ), get_bloginfo( 'name' ), home_url(), wp_specialchars_decode( translate_user_role( $role['name'] ) ) );
+}
index 36cf6449a8cc0ca76303d3276af9a1b57b6308f1..746a892798bcfd97430b377cb126219c91bd8b56 100644 (file)
@@ -67,8 +67,8 @@ function _sort_name_callback( $a, $b ) {
  *
  * @since 2.5.0
  *
- * @param string $sidebar id slug of the sidebar
- * @param string optional $sidebar_name Include the HTML for the sidebar name
+ * @param string $sidebar      Sidebar ID.
+ * @param string $sidebar_name Optional. Sidebar name. Default empty.
  */
 function wp_list_widget_controls( $sidebar, $sidebar_name = '' ) {
        add_filter( 'dynamic_sidebar_params', 'wp_list_widget_controls_dynamic_sidebar' );
@@ -81,26 +81,26 @@ function wp_list_widget_controls( $sidebar, $sidebar_name = '' ) {
                ?>
                <div class="sidebar-name">
                        <div class="sidebar-name-arrow"><br /></div>
-                       <h3><?php echo esc_html( $sidebar_name ); ?> <span class="spinner"></span></h3>
+                       <h2><?php echo esc_html( $sidebar_name ); ?> <span class="spinner"></span></h2>
                </div>
                <?php
        }
 
-       echo '<div class="sidebar-description">';
-
        if ( ! empty( $description ) ) {
-               echo '<p class="description">' . $description . '</p>';
+               ?>
+               <div class="sidebar-description">
+                       <p class="description"><?php echo $description; ?></p>
+               </div>
+               <?php
        }
 
-       echo '</div>';
-
        dynamic_sidebar( $sidebar );
 
        echo '</div>';
 }
 
 /**
- * {@internal Missing Short Description}}
+ * Retrieves the widget control arguments.
  *
  * @since 2.5.0
  *
@@ -181,6 +181,11 @@ function wp_widget_control( $sidebar_args ) {
        $multi_number = isset($sidebar_args['_multi_num']) ? $sidebar_args['_multi_num'] : '';
        $add_new = isset($sidebar_args['_add']) ? $sidebar_args['_add'] : '';
 
+       $before_form = isset( $sidebar_args['before_form'] ) ? $sidebar_args['before_form'] : '<form method="post">';
+       $after_form = isset( $sidebar_args['after_form'] ) ? $sidebar_args['after_form'] : '</form>';
+       $before_widget_content = isset( $sidebar_args['before_widget_content'] ) ? $sidebar_args['before_widget_content'] : '<div class="widget-content">';
+       $after_widget_content = isset( $sidebar_args['after_widget_content'] ) ? $sidebar_args['after_widget_content'] : '</div>';
+
        $query_arg = array( 'editwidget' => $widget['id'] );
        if ( $add_new ) {
                $query_arg['addnew'] = 1;
@@ -221,18 +226,20 @@ function wp_widget_control( $sidebar_args ) {
                        <span class="screen-reader-text"><?php echo $widget_title; ?></span>
                </a>
        </div>
-       <div class="widget-title"><h4><?php echo $widget_title ?><span class="in-widget-title"></span></h4></div>
+       <div class="widget-title"><h3><?php echo $widget_title; ?><span class="in-widget-title"></span></h3></div>
        </div>
 
        <div class="widget-inside">
-       <form method="post">
-       <div class="widget-content">
-<?php
-       if ( isset($control['callback']) )
+       <?php echo $before_form; ?>
+       <?php echo $before_widget_content; ?>
+       <?php
+       if ( isset( $control['callback'] ) ) {
                $has_form = call_user_func_array( $control['callback'], $control['params'] );
-       else
-               echo "\t\t<p>" . __('There are no options for this widget.') . "</p>\n"; ?>
-       </div>
+       } else {
+               echo "\t\t<p>" . __('There are no options for this widget.') . "</p>\n";
+       }
+       ?>
+       <?php echo $after_widget_content; ?>
        <input type="hidden" name="widget-id" class="widget-id" value="<?php echo esc_attr($id_format); ?>" />
        <input type="hidden" name="id_base" class="id_base" value="<?php echo esc_attr($id_base); ?>" />
        <input type="hidden" name="widget-width" class="widget-width" value="<?php if (isset( $control['width'] )) echo esc_attr($control['width']); ?>" />
@@ -252,7 +259,7 @@ function wp_widget_control( $sidebar_args ) {
                </div>
                <br class="clear" />
        </div>
-       </form>
+       <?php echo $after_form; ?>
        </div>
 
        <div class="widget-description">
@@ -263,3 +270,12 @@ function wp_widget_control( $sidebar_args ) {
 
        return $sidebar_args;
 }
+
+/**
+ *
+ * @param string $classes
+ * @return string
+ */
+function wp_widgets_access_body_class($classes) {
+       return "$classes widgets_access ";
+}
\ No newline at end of file
index 9143928984d3b995901fd5b68e6ec211f65d9a58..abf1ac51ad956bb0d1909dc38927f51c926ba1e7 100644 (file)
@@ -52,9 +52,9 @@ $screen->add_help_tab( array(
 ) );
 
 $help  = '<p>' . __( 'You can use the following controls to arrange your Dashboard screen to suit your workflow. This is true on most other administration screens as well.' ) . '</p>';
-$help .= '<p>' . __( '<strong>Screen Options</strong> - Use the Screen Options tab to choose which Dashboard boxes to show.' ) . '</p>';
-$help .= '<p>' . __( '<strong>Drag and Drop</strong> - To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box.' ) . '</p>';
-$help .= '<p>' . __( '<strong>Box Controls</strong> - Click the title bar of the box to expand or collapse it. Some boxes added by plugins may have configurable content, and will show a &#8220;Configure&#8221; link in the title bar if you hover over it.' ) . '</p>';
+$help .= '<p>' . __( '<strong>Screen Options</strong> &mdash; Use the Screen Options tab to choose which Dashboard boxes to show.' ) . '</p>';
+$help .= '<p>' . __( '<strong>Drag and Drop</strong> &mdash; To rearrange the boxes, drag and drop by clicking on the title bar of the selected box and releasing when you see a gray dotted-line rectangle appear in the location you want to place the box.' ) . '</p>';
+$help .= '<p>' . __( '<strong>Box Controls</strong> &mdash; Click the title bar of the box to expand or collapse it. Some boxes added by plugins may have configurable content, and will show a &#8220;Configure&#8221; link in the title bar if you hover over it.' ) . '</p>';
 
 $screen->add_help_tab( array(
        'id'      => 'help-layout',
@@ -64,16 +64,16 @@ $screen->add_help_tab( array(
 
 $help  = '<p>' . __( 'The boxes on your Dashboard screen are:' ) . '</p>';
 if ( current_user_can( 'edit_posts' ) )
-       $help .= '<p>' . __( '<strong>At A Glance</strong> - Displays a summary of the content on your site and identifies which theme and version of WordPress you are using.' ) . '</p>';
-       $help .= '<p>' . __( '<strong>Activity</strong> - Shows the upcoming scheduled posts, recently published posts, and the most recent comments on your posts and allows you to moderate them.' ) . '</p>';
+       $help .= '<p>' . __( '<strong>At A Glance</strong> &mdash; Displays a summary of the content on your site and identifies which theme and version of WordPress you are using.' ) . '</p>';
+       $help .= '<p>' . __( '<strong>Activity</strong> &mdash; Shows the upcoming scheduled posts, recently published posts, and the most recent comments on your posts and allows you to moderate them.' ) . '</p>';
 if ( is_blog_admin() && current_user_can( 'edit_posts' ) )
-       $help .= '<p>' . __( "<strong>Quick Draft</strong> - Allows you to create a new post and save it as a draft. Also displays links to the 5 most recent draft posts you've started." ) . '</p>';
+       $help .= '<p>' . __( "<strong>Quick Draft</strong> &mdash; Allows you to create a new post and save it as a draft. Also displays links to the 5 most recent draft posts you've started." ) . '</p>';
 if ( ! is_multisite() && current_user_can( 'install_plugins' ) )
-       $help .= '<p>' . __( '<strong>WordPress News</strong> - Latest news from the official WordPress project, the <a href="https://planet.wordpress.org/">WordPress Planet</a>, and popular and recent plugins.' ) . '</p>';
+       $help .= '<p>' . __( '<strong>WordPress News</strong> &mdash; Latest news from the official WordPress project, the <a href="https://planet.wordpress.org/">WordPress Planet</a>, and popular and recent plugins.' ) . '</p>';
 else
-       $help .= '<p>' . __( '<strong>WordPress News</strong> - Latest news from the official WordPress project, the <a href="https://planet.wordpress.org/">WordPress Planet</a>.' ) . '</p>';
+       $help .= '<p>' . __( '<strong>WordPress News</strong> &mdash; Latest news from the official WordPress project, the <a href="https://planet.wordpress.org/">WordPress Planet</a>.' ) . '</p>';
 if ( current_user_can( 'edit_theme_options' ) )
-       $help .= '<p>' . __( '<strong>Welcome</strong> - Shows links for some of the most common tasks when setting up a new site.' ) . '</p>';
+       $help .= '<p>' . __( '<strong>Welcome</strong> &mdash; Shows links for some of the most common tasks when setting up a new site.' ) . '</p>';
 
 $screen->add_help_tab( array(
        'id'      => 'help-content',
index 1a3ced5e51ebf2125754e5e2d66aad76224926fe..42eb31e303b0df9926fb258242aeaa68168efa80 100644 (file)
@@ -154,7 +154,7 @@ function maybe_drop_column($table_name, $column_name, $drop_ddl) {
  *
  * @since 1.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $table_name Table name
  * @param string $col_name   Column name
index 2c0c6071bf5826d6a469892c20587eb1ac616045..0e30ec0c915008a1cc683b7a11ee341890837bec 100644 (file)
@@ -16,8 +16,8 @@ if ( false ) {
        <title>Error: PHP is not running</title>
 </head>
 <body class="wp-core-ui">
-       <h1 id="logo"><a href="https://wordpress.org/">WordPress</a></h1>
-       <h2>Error: PHP is not running</h2>
+       <p id="logo"><a href="https://wordpress.org/">WordPress</a></p>
+       <h1>Error: PHP is not running</h1>
        <p>WordPress requires that your web server is running PHP. Your server does not have PHP installed, or PHP is turned off.</p>
 </body>
 </html>
@@ -69,6 +69,7 @@ function display_header( $body_classes = '' ) {
 <head>
        <meta name="viewport" content="width=device-width" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+       <meta name="robots" content="noindex,nofollow" />
        <title><?php _e( 'WordPress &rsaquo; Installation' ); ?></title>
        <?php
                wp_admin_css( 'install', true );
@@ -76,7 +77,7 @@ function display_header( $body_classes = '' ) {
        ?>
 </head>
 <body class="wp-core-ui<?php echo $body_classes ?>">
-<h1 id="logo"><a href="<?php echo esc_url( __( 'https://wordpress.org/' ) ); ?>" tabindex="-1"><?php _e( 'WordPress' ); ?></a></h1>
+<p id="logo"><a href="<?php echo esc_url( __( 'https://wordpress.org/' ) ); ?>" tabindex="-1"><?php _e( 'WordPress' ); ?></a></p>
 
 <?php
 } // end display_header()
@@ -106,6 +107,7 @@ function display_setup_form( $error = null ) {
 
        if ( ! is_null( $error ) ) {
 ?>
+<h1><?php _ex( 'Welcome', 'Howdy' ); ?></h1>
 <p class="message"><?php echo $error; ?></p>
 <?php } ?>
 <form id="setup" method="post" action="install.php?step=2" novalidate="novalidate">
@@ -172,13 +174,32 @@ function display_setup_form( $error = null ) {
                </tr>
                <?php endif; ?>
                <tr>
-                       <th scope="row"><label for="admin_email"><?php _e( 'Your E-mail' ); ?></label></th>
+                       <th scope="row"><label for="admin_email"><?php _e( 'Your Email' ); ?></label></th>
                        <td><input name="admin_email" type="email" id="admin_email" size="25" value="<?php echo esc_attr( $admin_email ); ?>" />
                        <p><?php _e( 'Double-check your email address before continuing.' ); ?></p></td>
                </tr>
                <tr>
-                       <th scope="row"><?php _e( 'Privacy' ); ?></th>
-                       <td colspan="2"><label><input type="checkbox" name="blog_public" id="blog_public" value="1" <?php checked( $blog_public ); ?> /> <?php _e( 'Allow search engines to index this site' ); ?></label></td>
+                       <th scope="row"><?php has_action( 'blog_privacy_selector' ) ? _e( 'Site Visibility' ) : _e( 'Search Engine Visibility' ); ?></th>
+                       <td>
+                               <fieldset>
+                                       <legend class="screen-reader-text"><span><?php has_action( 'blog_privacy_selector' ) ? _e( 'Site Visibility' ) : _e( 'Search Engine Visibility' ); ?> </span></legend>
+                                       <?php
+                                       if ( has_action( 'blog_privacy_selector' ) ) { ?>
+                                               <input id="blog-public" type="radio" name="blog_public" value="1" <?php checked( 1, $blog_public ); ?> />
+                                               <label for="blog-public"><?php _e( 'Allow search engines to index this site' );?></label><br/>
+                                               <input id="blog-norobots" type="radio" name="blog_public" value="0" <?php checked( 0, $blog_public ); ?> />
+                                               <label for="blog-norobots"><?php _e( 'Discourage search engines from indexing this site' ); ?></label>
+                                               <p class="description"><?php _e( 'Note: Neither of these options blocks access to your site &mdash; it is up to search engines to honor your request.' ); ?></p>
+                                               <?php
+                                               /** This action is documented in wp-admin/options-reading.php */
+                                               do_action( 'blog_privacy_selector' );
+                                        } else { ?>
+                                               <label for="blog_public"><input name="blog_public" type="checkbox" id="blog_public" value="0" <?php checked( 0, $blog_public ); ?> />
+                                               <?php _e( 'Discourage search engines from indexing this site' ); ?></label>
+                                               <p class="description"><?php _e( 'It is up to search engines to honor this request.' ); ?></p>
+                                       <?php } ?>
+                               </fieldset>
+                       </td>
                </tr>
        </table>
        <p class="step"><?php submit_button( __( 'Install WordPress' ), 'large', 'Submit', false, array( 'id' => 'submit' ) ); ?></p>
@@ -190,7 +211,7 @@ function display_setup_form( $error = null ) {
 // Let's check to make sure WP isn't already installed.
 if ( is_blog_installed() ) {
        display_header();
-       die( '<h1>' . __( 'Already Installed' ) . '</h1><p>' . __( 'You appear to have already installed WordPress. To reinstall please clear your old database tables first.' ) . '</p><p class="step"><a href="../wp-login.php" class="button button-large">' . __( 'Log In' ) . '</a></p></body></html>' );
+       die( '<h1>' . __( 'Already Installed' ) . '</h1><p>' . __( 'You appear to have already installed WordPress. To reinstall please clear your old database tables first.' ) . '</p><p class="step"><a href="' . esc_url( wp_login_url() ) . '" class="button button-large">' . __( 'Log In' ) . '</a></p></body></html>' );
 }
 
 /**
@@ -267,7 +288,7 @@ switch($step) {
 <h1><?php _ex( 'Welcome', 'Howdy' ); ?></h1>
 <p><?php _e( 'Welcome to the famous five-minute WordPress installation process! Just fill in the information below and you&#8217;ll be on your way to using the most extendable and powerful personal publishing platform in the world.' ); ?></p>
 
-<h1><?php _e( 'Information needed' ); ?></h1>
+<h2><?php _e( 'Information needed' ); ?></h2>
 <p><?php _e( 'Please provide the following information. Don&#8217;t worry, you can always change these settings later.' ); ?></p>
 
 <?php
@@ -291,9 +312,9 @@ switch($step) {
                $admin_password = isset($_POST['admin_password']) ? wp_unslash( $_POST['admin_password'] ) : '';
                $admin_password_check = isset($_POST['admin_password2']) ? wp_unslash( $_POST['admin_password2'] ) : '';
                $admin_email  = isset( $_POST['admin_email'] ) ?trim( wp_unslash( $_POST['admin_email'] ) ) : '';
-               $public       = isset( $_POST['blog_public'] ) ? (int) $_POST['blog_public'] : 0;
+               $public       = isset( $_POST['blog_public'] ) ? (int) $_POST['blog_public'] : 1;
 
-               // Check e-mail address.
+               // Check email address.
                $error = false;
                if ( empty( $user_name ) ) {
                        // TODO: poka-yoke
@@ -341,7 +362,7 @@ switch($step) {
        </tr>
 </table>
 
-<p class="step"><a href="../wp-login.php" class="button button-large"><?php _e( 'Log In' ); ?></a></p>
+<p class="step"><a href="<?php echo esc_url( wp_login_url() ); ?>" class="button button-large"><?php _e( 'Log In' ); ?></a></p>
 
 <?php
                }
index 03cc1782e312dfe792ea464a66375691b7a5cc55..96f55daedb58cbb6b9558c25968d3c7c4cee2cbd 100644 (file)
                open: function() {
                        this.element.show().iris( 'toggle' ).focus();
                        this.button.removeClass( 'hidden' );
+                       this.wrap.addClass( 'wp-picker-active' );
                        this.toggler.addClass( 'wp-picker-open' );
                        $( 'body' ).trigger( 'click.wpcolorpicker' ).on( 'click.wpcolorpicker', this.close );
                },
                close: function() {
                        this.element.hide().iris( 'toggle' );
                        this.button.addClass( 'hidden' );
+                       this.wrap.removeClass( 'wp-picker-active' );
                        this.toggler.removeClass( 'wp-picker-open' );
                        $( 'body' ).off( 'click.wpcolorpicker', this.close );
                },
index 24d5d1a0c78e77bdbc410abe35a82e4382664a5d..9ad833c83af8cae1fba32e3502bc9b83829538e1 100644 (file)
@@ -1 +1 @@
-!function(a,b){var c,d='<a tabindex="0" class="wp-color-result" />',e='<div class="wp-picker-holder" />',f='<div class="wp-picker-container" />',g='<input type="button" class="button button-small hidden" />';c={options:{defaultColor:!1,change:!1,clear:!1,hide:!0,palettes:!0,width:255,mode:"hsv"},_create:function(){if(a.support.iris){var b=this,c=b.element;a.extend(b.options,c.data()),b.close=a.proxy(b.close,b),b.initialValue=c.val(),c.addClass("wp-color-picker").hide().wrap(f),b.wrap=c.parent(),b.toggler=a(d).insertBefore(c).css({backgroundColor:b.initialValue}).attr("title",wpColorPickerL10n.pick).attr("data-current",wpColorPickerL10n.current),b.pickerContainer=a(e).insertAfter(c),b.button=a(g),b.options.defaultColor?b.button.addClass("wp-picker-default").val(wpColorPickerL10n.defaultString):b.button.addClass("wp-picker-clear").val(wpColorPickerL10n.clear),c.wrap('<span class="wp-picker-input-wrap" />').after(b.button),c.iris({target:b.pickerContainer,hide:b.options.hide,width:b.options.width,mode:b.options.mode,palettes:b.options.palettes,change:function(c,d){b.toggler.css({backgroundColor:d.color.toString()}),a.isFunction(b.options.change)&&b.options.change.call(this,c,d)}}),c.val(b.initialValue),b._addListeners(),b.options.hide||b.toggler.click()}},_addListeners:function(){var b=this;b.wrap.on("click.wpcolorpicker",function(a){a.stopPropagation()}),b.toggler.click(function(){b.toggler.hasClass("wp-picker-open")?b.close():b.open()}),b.element.change(function(c){var d=a(this),e=d.val();(""===e||"#"===e)&&(b.toggler.css("backgroundColor",""),a.isFunction(b.options.clear)&&b.options.clear.call(this,c))}),b.toggler.on("keyup",function(a){(13===a.keyCode||32===a.keyCode)&&(a.preventDefault(),b.toggler.trigger("click").next().focus())}),b.button.click(function(c){var d=a(this);d.hasClass("wp-picker-clear")?(b.element.val(""),b.toggler.css("backgroundColor",""),a.isFunction(b.options.clear)&&b.options.clear.call(this,c)):d.hasClass("wp-picker-default")&&b.element.val(b.options.defaultColor).change()})},open:function(){this.element.show().iris("toggle").focus(),this.button.removeClass("hidden"),this.toggler.addClass("wp-picker-open"),a("body").trigger("click.wpcolorpicker").on("click.wpcolorpicker",this.close)},close:function(){this.element.hide().iris("toggle"),this.button.addClass("hidden"),this.toggler.removeClass("wp-picker-open"),a("body").off("click.wpcolorpicker",this.close)},color:function(a){return a===b?this.element.iris("option","color"):void this.element.iris("option","color",a)},defaultColor:function(a){return a===b?this.options.defaultColor:void(this.options.defaultColor=a)}},a.widget("wp.wpColorPicker",c)}(jQuery);
\ No newline at end of file
+!function(a,b){var c,d='<a tabindex="0" class="wp-color-result" />',e='<div class="wp-picker-holder" />',f='<div class="wp-picker-container" />',g='<input type="button" class="button button-small hidden" />';c={options:{defaultColor:!1,change:!1,clear:!1,hide:!0,palettes:!0,width:255,mode:"hsv"},_create:function(){if(a.support.iris){var b=this,c=b.element;a.extend(b.options,c.data()),b.close=a.proxy(b.close,b),b.initialValue=c.val(),c.addClass("wp-color-picker").hide().wrap(f),b.wrap=c.parent(),b.toggler=a(d).insertBefore(c).css({backgroundColor:b.initialValue}).attr("title",wpColorPickerL10n.pick).attr("data-current",wpColorPickerL10n.current),b.pickerContainer=a(e).insertAfter(c),b.button=a(g),b.options.defaultColor?b.button.addClass("wp-picker-default").val(wpColorPickerL10n.defaultString):b.button.addClass("wp-picker-clear").val(wpColorPickerL10n.clear),c.wrap('<span class="wp-picker-input-wrap" />').after(b.button),c.iris({target:b.pickerContainer,hide:b.options.hide,width:b.options.width,mode:b.options.mode,palettes:b.options.palettes,change:function(c,d){b.toggler.css({backgroundColor:d.color.toString()}),a.isFunction(b.options.change)&&b.options.change.call(this,c,d)}}),c.val(b.initialValue),b._addListeners(),b.options.hide||b.toggler.click()}},_addListeners:function(){var b=this;b.wrap.on("click.wpcolorpicker",function(a){a.stopPropagation()}),b.toggler.click(function(){b.toggler.hasClass("wp-picker-open")?b.close():b.open()}),b.element.change(function(c){var d=a(this),e=d.val();(""===e||"#"===e)&&(b.toggler.css("backgroundColor",""),a.isFunction(b.options.clear)&&b.options.clear.call(this,c))}),b.toggler.on("keyup",function(a){(13===a.keyCode||32===a.keyCode)&&(a.preventDefault(),b.toggler.trigger("click").next().focus())}),b.button.click(function(c){var d=a(this);d.hasClass("wp-picker-clear")?(b.element.val(""),b.toggler.css("backgroundColor",""),a.isFunction(b.options.clear)&&b.options.clear.call(this,c)):d.hasClass("wp-picker-default")&&b.element.val(b.options.defaultColor).change()})},open:function(){this.element.show().iris("toggle").focus(),this.button.removeClass("hidden"),this.wrap.addClass("wp-picker-active"),this.toggler.addClass("wp-picker-open"),a("body").trigger("click.wpcolorpicker").on("click.wpcolorpicker",this.close)},close:function(){this.element.hide().iris("toggle"),this.button.addClass("hidden"),this.wrap.removeClass("wp-picker-active"),this.toggler.removeClass("wp-picker-open"),a("body").off("click.wpcolorpicker",this.close)},color:function(a){return a===b?this.element.iris("option","color"):void this.element.iris("option","color",a)},defaultColor:function(a){return a===b?this.options.defaultColor:void(this.options.defaultColor=a)}},a.widget("wp.wpColorPicker",c)}(jQuery);
\ No newline at end of file
index 5b5741c154867944c7ac93325afaec1d8d213eef..796e1400f44df76e1c448d5805764a9ec811ec1b 100644 (file)
@@ -1,6 +1,10 @@
 /* global setUserSetting, ajaxurl, commonL10n, alert, confirm, pagenow */
 var showNotice, adminMenu, columns, validateForm, screenMeta;
 ( function( $, window, undefined ) {
+       var $document = $( document ),
+               $window = $( window ),
+               $body = $( document.body );
+
 // Removed in 3.3.
 // (perhaps) needed for back-compat
 adminMenu = {
@@ -70,7 +74,7 @@ columns = {
        }
 };
 
-$(document).ready(function(){columns.init();});
+$document.ready(function(){columns.init();});
 
 validateForm = function( form ) {
        return !$( form )
@@ -133,7 +137,7 @@ screenMeta = {
                        button.addClass( 'screen-meta-active' ).attr( 'aria-expanded', true );
                });
 
-               $( document ).trigger( 'screen:options:open' );
+               $document.trigger( 'screen:options:open' );
        },
 
        close: function( panel, button ) {
@@ -143,7 +147,7 @@ screenMeta = {
                        panel.parent().hide();
                });
 
-               $( document ).trigger( 'screen:options:close' );
+               $document.trigger( 'screen:options:close' );
        }
 };
 
@@ -171,17 +175,14 @@ $('.contextual-help-tabs').delegate('a', 'click', function(e) {
        panel.addClass('active').show();
 });
 
-$(document).ready( function() {
-       var checks, first, last, checked, sliced, mobileEvent, transitionTimeout, focusedRowActions, $firstHeading,
+$document.ready( function() {
+       var checks, first, last, checked, sliced, mobileEvent, transitionTimeout, focusedRowActions,
                lastClicked = false,
                pageInput = $('input.current-page'),
                currentPage = pageInput.val(),
                isIOS = /iPhone|iPad|iPod/.test( navigator.userAgent ),
                isAndroid = navigator.userAgent.indexOf( 'Android' ) !== -1,
                isIE8 = $( document.documentElement ).hasClass( 'ie8' ),
-               $document = $( document ),
-               $window = $( window ),
-               $body = $( document.body ),
                $adminMenuWrap = $( '#adminmenuwrap' ),
                $wpwrap = $( '#wpwrap' ),
                $adminmenu = $( '#adminmenu' ),
@@ -210,7 +211,7 @@ $(document).ready( function() {
        });
 
        $('#collapse-menu').on('click.collapse-menu', function() {
-               var body = $( document.body ), respWidth, state;
+               var respWidth, state;
 
                // reset any compensation for submenus near the bottom of the screen
                $('#adminmenu div.wp-submenu').css('margin-top', '');
@@ -224,31 +225,54 @@ $(document).ready( function() {
                }
 
                if ( respWidth && respWidth < 960 ) {
-                       if ( body.hasClass('auto-fold') ) {
-                               body.removeClass('auto-fold').removeClass('folded');
+                       if ( $body.hasClass('auto-fold') ) {
+                               $body.removeClass('auto-fold').removeClass('folded');
                                setUserSetting('unfold', 1);
                                setUserSetting('mfold', 'o');
                                state = 'open';
                        } else {
-                               body.addClass('auto-fold');
+                               $body.addClass('auto-fold');
                                setUserSetting('unfold', 0);
                                state = 'folded';
                        }
                } else {
-                       if ( body.hasClass('folded') ) {
-                               body.removeClass('folded');
+                       if ( $body.hasClass('folded') ) {
+                               $body.removeClass('folded');
                                setUserSetting('mfold', 'o');
                                state = 'open';
                        } else {
-                               body.addClass('folded');
+                               $body.addClass('folded');
                                setUserSetting('mfold', 'f');
                                state = 'folded';
                        }
                }
 
-               $( document ).trigger( 'wp-collapse-menu', { state: state } );
+               currentMenuItemHasPopup();
+               $document.trigger( 'wp-collapse-menu', { state: state } );
        });
 
+       // Handle the `aria-haspopup` attribute on the current menu item when it has a sub-menu.
+       function currentMenuItemHasPopup() {
+               var respWidth,
+                       $current = $( 'a.wp-has-current-submenu' );
+
+               if ( window.innerWidth ) {
+                       respWidth = Math.max( window.innerWidth, document.documentElement.clientWidth );
+               } else {
+                       respWidth = 961;
+               }
+
+               if ( $body.hasClass( 'folded' ) || ( $body.hasClass( 'auto-fold' ) && respWidth && respWidth <= 960 && respWidth > 782 ) ) {
+                       // When folded or auto-folded and not responsive view, the current menu item does have a fly-out sub-menu.
+                       $current.attr( 'aria-haspopup', 'true' );
+               } else {
+                       // When expanded or in responsive view, reset aria-haspopup.
+                       $current.attr( 'aria-haspopup', 'false' );
+               }
+       }
+
+       $document.on( 'wp-window-resized wp-responsive-activate wp-responsive-deactivate', currentMenuItemHasPopup );
+
        /**
         * Ensure an admin submenu is within the visual viewport.
         *
@@ -289,7 +313,7 @@ $(document).ready( function() {
                mobileEvent = isIOS ? 'touchstart' : 'click';
 
                // close any open submenus when touch/click is not on the menu
-               $(document.body).on( mobileEvent+'.wp-mobile-hover', function(e) {
+               $body.on( mobileEvent+'.wp-mobile-hover', function(e) {
                        if ( $adminmenu.data('wp-responsive') ) {
                                return;
                        }
@@ -369,36 +393,36 @@ $(document).ready( function() {
                });
        }
 
-       // Move .notice, .updated and .error alert boxes. Don't move boxes designed to be inline.
-       $firstHeading = $( '.wrap > h1:first' );
-
-       // Back compatibility: if there is no H1, apply to first H2.
-       if ( ! $firstHeading.length ) {
-               $firstHeading = $( '.wrap h2:first' );
-       }
-
-       $firstHeading.nextAll( 'div.updated, div.error, div.notice' ).addClass( 'below-h2' );
-       $( 'div.updated, div.error, div.notice' ).not( '.below-h2, .inline' ).insertAfter( $firstHeading );
+       /*
+        * The `.below-h2` class is here just for backwards compatibility with plugins
+        * that are (incorrectly) using it. Do not use. Use `.inline` instead. See #34570.
+        */
+       $( 'div.updated, div.error, div.notice' ).not( '.inline, .below-h2' ).insertAfter( $( '.wrap' ).children( ':header' ).first() );
 
        // Make notices dismissible
-       $( '.notice.is-dismissible' ).each( function() {
-               var $this = $( this ),
-                       $button = $( '<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>' ),
-                       btnText = commonL10n.dismiss || '';
-
-               // Ensure plain text
-               $button.find( '.screen-reader-text' ).text( btnText );
-
-               $this.append( $button );
-
-               $button.on( 'click.wp-dismiss-notice', function( event ) {
-                       event.preventDefault();
-                       $this.fadeTo( 100 , 0, function() {
-                               $(this).slideUp( 100, function() {
-                                       $(this).remove();
+       function makeNoticesDismissible() {
+               $( '.notice.is-dismissible' ).each( function() {
+                       var $el = $( this ),
+                               $button = $( '<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>' ),
+                               btnText = commonL10n.dismiss || '';
+
+                       // Ensure plain text
+                       $button.find( '.screen-reader-text' ).text( btnText );
+                       $button.on( 'click.wp-dismiss-notice', function( event ) {
+                               event.preventDefault();
+                               $el.fadeTo( 100, 0, function() {
+                                       $el.slideUp( 100, function() {
+                                               $el.remove();
+                                       });
                                });
                        });
+
+                       $el.append( $button );
                });
+       }
+
+       $document.on( 'wp-plugin-update-error', function() {
+               makeNoticesDismissible();
        });
 
        // Init screen meta
@@ -409,7 +433,7 @@ $(document).ready( function() {
                if ( 'undefined' == e.shiftKey ) { return true; }
                if ( e.shiftKey ) {
                        if ( !lastClicked ) { return true; }
-                       checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' );
+                       checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' ).filter( ':visible:enabled' );
                        first = checks.index( lastClicked );
                        last = checks.index( this );
                        checked = $(this).prop('checked');
@@ -426,7 +450,7 @@ $(document).ready( function() {
                lastClicked = this;
 
                // toggle "check all" checkboxes
-               var unchecked = $(this).closest('tbody').find(':checkbox').filter(':visible').not(':checked');
+               var unchecked = $(this).closest('tbody').find(':checkbox').filter(':visible:enabled').not(':checked');
                $(this).closest('table').children('thead, tfoot').find(':checkbox').prop('checked', function() {
                        return ( 0 === unchecked.length );
                });
@@ -443,7 +467,7 @@ $(document).ready( function() {
                $table.children( 'tbody' ).filter(':visible')
                        .children().children('.check-column').find(':checkbox')
                        .prop('checked', function() {
-                               if ( $(this).is(':hidden') ) {
+                               if ( $(this).is(':hidden,:disabled') ) {
                                        return false;
                                }
 
@@ -875,6 +899,8 @@ $(document).ready( function() {
 
        window.wpResponsive.init();
        setPinMenu();
+       currentMenuItemHasPopup();
+       makeNoticesDismissible();
 
        $document.on( 'wp-pin-menu wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu wp-collapse-menu.pin-menu wp-scroll-start.pin-menu', setPinMenu );
 });
@@ -884,7 +910,7 @@ $(document).ready( function() {
        var timeout;
 
        function triggerEvent() {
-               $(document).trigger( 'wp-window-resized' );
+               $document.trigger( 'wp-window-resized' );
        }
 
        function fireOnce() {
@@ -892,7 +918,7 @@ $(document).ready( function() {
                timeout = window.setTimeout( triggerEvent, 200 );
        }
 
-       $(window).on( 'resize.wp-fire-once', fireOnce );
+       $window.on( 'resize.wp-fire-once', fireOnce );
 }());
 
 // Make Windows 8 devices play along nicely.
index 26025ea3a9baa1e17b612259072c450184391da1..604ac9ef96d36c0d94a959a6e38f0edeffe7ea4f 100644 (file)
@@ -1 +1 @@
-var showNotice,adminMenu,columns,validateForm,screenMeta;!function(a,b,c){adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}},columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var c=a(this),d=c.val();c.prop("checked")?b.checked(d):b.unchecked(d),columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).removeClass("hidden"),this.colSpanChange(1)},unchecked:function(b){a(".column-"+b).addClass("hidden"),this.colSpanChange(-1)},hidden:function(){return a(".manage-column[id]").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var a=this.id;return a.substring(a,a.length-5)}).get().join(",")}},colSpanChange:function(b){var c,d=a("table").find(".colspanchange");d.length&&(c=parseInt(d.attr("colspan"),10)+b,d.attr("colspan",c.toString()))}},a(document).ready(function(){columns.init()}),validateForm=function(b){return!a(b).find(".form-required").filter(function(){return""===a("input:visible",this).val()}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()},showNotice={warn:function(){var a=commonL10n.warnDelete||"";return confirm(a)?!0:!1},note:function(a){alert(a)}},screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta"),this.toggles=a("#screen-meta-links").find(".show-settings"),this.page=a("#wpcontent"),this.toggles.click(this.toggleEvent)},toggleEvent:function(){var b=a("#"+a(this).attr("aria-controls"));b.length&&(b.is(":visible")?screenMeta.close(b,a(this)):screenMeta.open(b,a(this)))},open:function(b,c){a("#screen-meta-links").find(".screen-meta-toggle").not(c.parent()).css("visibility","hidden"),b.parent().show(),b.slideDown("fast",function(){b.focus(),c.addClass("screen-meta-active").attr("aria-expanded",!0)}),a(document).trigger("screen:options:open")},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",!1),a(".screen-meta-toggle").css("visibility",""),b.parent().hide()}),a(document).trigger("screen:options:close")}},a(".contextual-help-tabs").delegate("a","click",function(b){var c,d=a(this);return b.preventDefault(),d.is(".active a")?!1:(a(".contextual-help-tabs .active").removeClass("active"),d.parent("li").addClass("active"),c=a(d.attr("href")),a(".help-tab-content").not(c).removeClass("active").hide(),void c.addClass("active").show())}),a(document).ready(function(){function c(a){var b,c,d,e,f,g,h,i=a.find(".wp-submenu");f=a.offset().top,g=x.scrollTop(),h=f-g-30,b=f+i.height()+1,c=A.height(),d=60+b-c,e=x.height()+g-50,b-d>e&&(d=b-e),d>h&&(d=h),d>1?i.css("margin-top","-"+d+"px"):i.css("margin-top","")}function d(a){var b=x.scrollTop(),c=!a||"scroll"!==a.type;if(!(t||v||B.data("wp-responsive"))){if(N.menu+N.adminbar<N.window||N.menu+N.adminbar+20>N.wpwrap)return void f();if(M=!0,N.menu+N.adminbar>N.window){if(0>b)return void(J||(J=!0,K=!1,z.css({position:"fixed",top:"",bottom:""})));if(b+N.window>w.height()-1)return void(K||(K=!0,J=!1,z.css({position:"fixed",top:"",bottom:0})));b>I?J?(J=!1,L=z.offset().top-N.adminbar-(b-I),L+N.menu+N.adminbar<b+N.window&&(L=b+N.window-N.menu-N.adminbar),z.css({position:"absolute",top:L,bottom:""})):!K&&z.offset().top+N.menu<b+N.window&&(K=!0,z.css({position:"fixed",top:"",bottom:0})):I>b?K?(K=!1,L=z.offset().top-N.adminbar+(I-b),L+N.menu>b+N.window&&(L=b),z.css({position:"absolute",top:L,bottom:""})):!J&&z.offset().top>=b+N.adminbar&&(J=!0,z.css({position:"fixed",top:"",bottom:""})):c&&(J=K=!1,L=b+N.window-N.menu-N.adminbar-1,L>0?z.css({position:"absolute",top:L,bottom:""}):f())}I=b}}function e(){N={window:x.height(),wpwrap:A.height(),adminbar:H.height(),menu:z.height()}}function f(){!t&&M&&(J=K=M=!1,z.css({position:"",top:"",bottom:""}))}function g(){e(),B.data("wp-responsive")?(y.removeClass("sticky-menu"),f()):N.menu+N.adminbar>N.window?(d(),y.removeClass("sticky-menu")):(y.addClass("sticky-menu"),f())}var h,i,j,k,l,m,n,o,p,q=!1,r=a("input.current-page"),s=r.val(),t=/iPhone|iPad|iPod/.test(navigator.userAgent),u=-1!==navigator.userAgent.indexOf("Android"),v=a(document.documentElement).hasClass("ie8"),w=a(document),x=a(b),y=a(document.body),z=a("#adminmenuwrap"),A=a("#wpwrap"),B=a("#adminmenu"),C=a("#wp-responsive-overlay"),D=a("#wp-toolbar"),E=D.find('a[aria-haspopup="true"]'),F=a(".meta-box-sortables"),G=!1,H=a("#wpadminbar"),I=0,J=!1,K=!1,L=0,M=!1,N={window:x.height(),wpwrap:A.height(),adminbar:H.height(),menu:z.height()};B.on("click.wp-submenu-head",".wp-submenu-head",function(b){a(b.target).parent().siblings("a").get(0).click()}),a("#collapse-menu").on("click.collapse-menu",function(){var c,d,e=a(document.body);a("#adminmenu div.wp-submenu").css("margin-top",""),c=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,c&&960>c?e.hasClass("auto-fold")?(e.removeClass("auto-fold").removeClass("folded"),setUserSetting("unfold",1),setUserSetting("mfold","o"),d="open"):(e.addClass("auto-fold"),setUserSetting("unfold",0),d="folded"):e.hasClass("folded")?(e.removeClass("folded"),setUserSetting("mfold","o"),d="open"):(e.addClass("folded"),setUserSetting("mfold","f"),d="folded"),a(document).trigger("wp-collapse-menu",{state:d})}),("ontouchstart"in b||/IEMobile\/[1-9]/.test(navigator.userAgent))&&(m=t?"touchstart":"click",a(document.body).on(m+".wp-mobile-hover",function(b){B.data("wp-responsive")||a(b.target).closest("#adminmenu").length||B.find("li.opensub").removeClass("opensub")}),B.find("a.wp-has-submenu").on(m+".wp-mobile-hover",function(b){var d=a(this).parent();B.data("wp-responsive")||d.hasClass("opensub")||d.hasClass("wp-menu-open")&&!(d.width()<40)||(b.preventDefault(),c(d),B.find("li.opensub").removeClass("opensub"),d.addClass("opensub"))})),t||u||(B.find("li.wp-has-submenu").hoverIntent({over:function(){var b=a(this),d=b.find(".wp-submenu"),e=parseInt(d.css("top"),10);isNaN(e)||e>-5||B.data("wp-responsive")||(c(b),B.find("li.opensub").removeClass("opensub"),b.addClass("opensub"))},out:function(){B.data("wp-responsive")||a(this).removeClass("opensub").find(".wp-submenu").css("margin-top","")},timeout:200,sensitivity:7,interval:90}),B.on("focus.adminmenu",".wp-submenu a",function(b){B.data("wp-responsive")||a(b.target).closest("li.menu-top").addClass("opensub")}).on("blur.adminmenu",".wp-submenu a",function(b){B.data("wp-responsive")||a(b.target).closest("li.menu-top").removeClass("opensub")}).find("li.wp-has-submenu.wp-not-current-submenu").on("focusin.adminmenu",function(){c(a(this))})),p=a(".wrap > h1:first"),p.length||(p=a(".wrap h2:first")),p.nextAll("div.updated, div.error, div.notice").addClass("below-h2"),a("div.updated, div.error, div.notice").not(".below-h2, .inline").insertAfter(p),a(".notice.is-dismissible").each(function(){var b=a(this),c=a('<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>'),d=commonL10n.dismiss||"";c.find(".screen-reader-text").text(d),b.append(c),c.on("click.wp-dismiss-notice",function(c){c.preventDefault(),b.fadeTo(100,0,function(){a(this).slideUp(100,function(){a(this).remove()})})})}),screenMeta.init(),a("tbody").children().children(".check-column").find(":checkbox").click(function(b){if("undefined"==b.shiftKey)return!0;if(b.shiftKey){if(!q)return!0;h=a(q).closest("form").find(":checkbox"),i=h.index(q),j=h.index(this),k=a(this).prop("checked"),i>0&&j>0&&i!=j&&(l=j>i?h.slice(i,j):h.slice(j,i),l.prop("checked",function(){return a(this).closest("tr").is(":visible")?k:!1}))}q=this;var c=a(this).closest("tbody").find(":checkbox").filter(":visible").not(":checked");return a(this).closest("table").children("thead, tfoot").find(":checkbox").prop("checked",function(){return 0===c.length}),!0}),a("thead, tfoot").find(".check-column :checkbox").on("click.wp-toggle-checkboxes",function(b){var c=a(this),d=c.closest("table"),e=c.prop("checked"),f=b.shiftKey||c.data("wp-toggle");d.children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return a(this).is(":hidden")?!1:f?!a(this).prop("checked"):e?!0:!1}),d.children("thead,  tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return f?!1:e?!0:!1})}),a("#wpbody-content").on({focusin:function(){clearTimeout(n),o=a(this).find(".row-actions"),a(".row-actions").not(this).removeClass("visible"),o.addClass("visible")},focusout:function(){n=setTimeout(function(){o.removeClass("visible")},30)}},".has-row-actions"),a("tbody").on("click",".toggle-row",function(){a(this).closest("tr").toggleClass("is-expanded")}),a("#default-password-nag-no").click(function(){return setUserSetting("default_password_nag","hide"),a("div.default-password-nag").hide(),!1}),a("#newcontent").bind("keydown.wpevent_InsertTab",function(b){var c,d,e,f,g,h=b.target;if(27==b.keyCode)return b.preventDefault(),void a(h).data("tab-out",!0);if(!(9!=b.keyCode||b.ctrlKey||b.altKey||b.shiftKey)){if(a(h).data("tab-out"))return void a(h).data("tab-out",!1);c=h.selectionStart,d=h.selectionEnd,e=h.value,document.selection?(h.focus(),g=document.selection.createRange(),g.text="       "):c>=0&&(f=this.scrollTop,h.value=e.substring(0,c).concat("    ",e.substring(d)),h.selectionStart=h.selectionEnd=c+1,this.scrollTop=f),b.stopPropagation&&b.stopPropagation(),b.preventDefault&&b.preventDefault()}}),r.length&&r.closest("form").submit(function(){-1==a('select[name="action"]').val()&&-1==a('select[name="action2"]').val()&&r.val()==s&&r.val("1")}),a('.search-box input[type="search"], .search-box input[type="submit"]').mousedown(function(){a('select[name^="action"]').val("-1")}),a("#contextual-help-link, #show-settings-link").on("focus.scroll-into-view",function(a){a.target.scrollIntoView&&a.target.scrollIntoView(!1)}),function(){function b(){c.prop("disabled",""===d.map(function(){return a(this).val()}).get().join(""))}var c,d,e=a("form.wp-upload-form");e.length&&(c=e.find('input[type="submit"]'),d=e.find('input[type="file"]'),b(),d.on("change",b))}(),t||(x.on("scroll.pin-menu",d),w.on("tinymce-editor-init.pin-menu",function(a,b){b.on("wp-autoresize",e)})),b.wpResponsive={init:function(){var c=this;w.on("wp-responsive-activate.wp-responsive",function(){c.activate()}).on("wp-responsive-deactivate.wp-responsive",function(){c.deactivate()}),a("#wp-admin-bar-menu-toggle a").attr("aria-expanded","false"),a("#wp-admin-bar-menu-toggle").on("click.wp-responsive",function(b){b.preventDefault(),H.find(".hover").removeClass("hover"),A.toggleClass("wp-responsive-open"),A.hasClass("wp-responsive-open")?(a(this).find("a").attr("aria-expanded","true"),a("#adminmenu a:first").focus()):a(this).find("a").attr("aria-expanded","false")}),B.on("click.wp-responsive","li.wp-has-submenu > a",function(b){B.data("wp-responsive")&&(a(this).parent("li").toggleClass("selected"),b.preventDefault())}),c.trigger(),w.on("wp-window-resized.wp-responsive",a.proxy(this.trigger,this)),x.on("load.wp-responsive",function(){var a=navigator.userAgent.indexOf("AppleWebKit/")>-1?x.width():b.innerWidth;782>=a&&c.disableSortables()})},activate:function(){g(),y.hasClass("auto-fold")||y.addClass("auto-fold"),B.data("wp-responsive",1),this.disableSortables()},deactivate:function(){g(),B.removeData("wp-responsive"),this.enableSortables()},trigger:function(){var a;b.innerWidth&&(a=Math.max(b.innerWidth,document.documentElement.clientWidth),782>=a?G||(w.trigger("wp-responsive-activate"),G=!0):G&&(w.trigger("wp-responsive-deactivate"),G=!1),480>=a?this.enableOverlay():this.disableOverlay())},enableOverlay:function(){0===C.length&&(C=a('<div id="wp-responsive-overlay"></div>').insertAfter("#wpcontent").hide().on("click.wp-responsive",function(){D.find(".menupop.hover").removeClass("hover"),a(this).hide()})),E.on("click.wp-responsive",function(){C.show()})},disableOverlay:function(){E.off("click.wp-responsive"),C.hide()},disableSortables:function(){if(F.length)try{F.sortable("disable")}catch(a){}},enableSortables:function(){if(F.length)try{F.sortable("enable")}catch(a){}}},b.wpResponsive.init(),g(),w.on("wp-pin-menu wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu wp-collapse-menu.pin-menu wp-scroll-start.pin-menu",g)}),function(){function c(){a(document).trigger("wp-window-resized")}function d(){b.clearTimeout(e),e=b.setTimeout(c,200)}var e;a(b).on("resize.wp-fire-once",d)}(),function(){if("-ms-user-select"in document.documentElement.style&&navigator.userAgent.match(/IEMobile\/10\.0/)){var a=document.createElement("style");a.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),document.getElementsByTagName("head")[0].appendChild(a)}}()}(jQuery,window);
\ No newline at end of file
+var showNotice,adminMenu,columns,validateForm,screenMeta;!function(a,b,c){var d=a(document),e=a(b),f=a(document.body);adminMenu={init:function(){},fold:function(){},restoreMenuState:function(){},toggle:function(){},favorites:function(){}},columns={init:function(){var b=this;a(".hide-column-tog","#adv-settings").click(function(){var c=a(this),d=c.val();c.prop("checked")?b.checked(d):b.unchecked(d),columns.saveManageColumnsState()})},saveManageColumnsState:function(){var b=this.hidden();a.post(ajaxurl,{action:"hidden-columns",hidden:b,screenoptionnonce:a("#screenoptionnonce").val(),page:pagenow})},checked:function(b){a(".column-"+b).removeClass("hidden"),this.colSpanChange(1)},unchecked:function(b){a(".column-"+b).addClass("hidden"),this.colSpanChange(-1)},hidden:function(){return a(".manage-column[id]").filter(":hidden").map(function(){return this.id}).get().join(",")},useCheckboxesForHidden:function(){this.hidden=function(){return a(".hide-column-tog").not(":checked").map(function(){var a=this.id;return a.substring(a,a.length-5)}).get().join(",")}},colSpanChange:function(b){var c,d=a("table").find(".colspanchange");d.length&&(c=parseInt(d.attr("colspan"),10)+b,d.attr("colspan",c.toString()))}},d.ready(function(){columns.init()}),validateForm=function(b){return!a(b).find(".form-required").filter(function(){return""===a("input:visible",this).val()}).addClass("form-invalid").find("input:visible").change(function(){a(this).closest(".form-invalid").removeClass("form-invalid")}).size()},showNotice={warn:function(){var a=commonL10n.warnDelete||"";return confirm(a)?!0:!1},note:function(a){alert(a)}},screenMeta={element:null,toggles:null,page:null,init:function(){this.element=a("#screen-meta"),this.toggles=a("#screen-meta-links").find(".show-settings"),this.page=a("#wpcontent"),this.toggles.click(this.toggleEvent)},toggleEvent:function(){var b=a("#"+a(this).attr("aria-controls"));b.length&&(b.is(":visible")?screenMeta.close(b,a(this)):screenMeta.open(b,a(this)))},open:function(b,c){a("#screen-meta-links").find(".screen-meta-toggle").not(c.parent()).css("visibility","hidden"),b.parent().show(),b.slideDown("fast",function(){b.focus(),c.addClass("screen-meta-active").attr("aria-expanded",!0)}),d.trigger("screen:options:open")},close:function(b,c){b.slideUp("fast",function(){c.removeClass("screen-meta-active").attr("aria-expanded",!1),a(".screen-meta-toggle").css("visibility",""),b.parent().hide()}),d.trigger("screen:options:close")}},a(".contextual-help-tabs").delegate("a","click",function(b){var c,d=a(this);return b.preventDefault(),d.is(".active a")?!1:(a(".contextual-help-tabs .active").removeClass("active"),d.parent("li").addClass("active"),c=a(d.attr("href")),a(".help-tab-content").not(c).removeClass("active").hide(),void c.addClass("active").show())}),d.ready(function(){function c(){var c,d=a("a.wp-has-current-submenu");c=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,f.hasClass("folded")||f.hasClass("auto-fold")&&c&&960>=c&&c>782?d.attr("aria-haspopup","true"):d.attr("aria-haspopup","false")}function g(a){var b,c,d,f,g,h,i,j=a.find(".wp-submenu");g=a.offset().top,h=e.scrollTop(),i=g-h-30,b=g+j.height()+1,c=B.height(),d=60+b-c,f=e.height()+h-50,b-d>f&&(d=b-f),d>i&&(d=i),d>1?j.css("margin-top","-"+d+"px"):j.css("margin-top","")}function h(){a(".notice.is-dismissible").each(function(){var b=a(this),c=a('<button type="button" class="notice-dismiss"><span class="screen-reader-text"></span></button>'),d=commonL10n.dismiss||"";c.find(".screen-reader-text").text(d),c.on("click.wp-dismiss-notice",function(a){a.preventDefault(),b.fadeTo(100,0,function(){b.slideUp(100,function(){b.remove()})})}),b.append(c)})}function i(a){var b=e.scrollTop(),c=!a||"scroll"!==a.type;if(!(x||z||C.data("wp-responsive"))){if(O.menu+O.adminbar<O.window||O.menu+O.adminbar+20>O.wpwrap)return void k();if(N=!0,O.menu+O.adminbar>O.window){if(0>b)return void(K||(K=!0,L=!1,A.css({position:"fixed",top:"",bottom:""})));if(b+O.window>d.height()-1)return void(L||(L=!0,K=!1,A.css({position:"fixed",top:"",bottom:0})));b>J?K?(K=!1,M=A.offset().top-O.adminbar-(b-J),M+O.menu+O.adminbar<b+O.window&&(M=b+O.window-O.menu-O.adminbar),A.css({position:"absolute",top:M,bottom:""})):!L&&A.offset().top+O.menu<b+O.window&&(L=!0,A.css({position:"fixed",top:"",bottom:0})):J>b?L?(L=!1,M=A.offset().top-O.adminbar+(J-b),M+O.menu>b+O.window&&(M=b),A.css({position:"absolute",top:M,bottom:""})):!K&&A.offset().top>=b+O.adminbar&&(K=!0,A.css({position:"fixed",top:"",bottom:""})):c&&(K=L=!1,M=b+O.window-O.menu-O.adminbar-1,M>0?A.css({position:"absolute",top:M,bottom:""}):k())}J=b}}function j(){O={window:e.height(),wpwrap:B.height(),adminbar:I.height(),menu:A.height()}}function k(){!x&&N&&(K=L=N=!1,A.css({position:"",top:"",bottom:""}))}function l(){j(),C.data("wp-responsive")?(f.removeClass("sticky-menu"),k()):O.menu+O.adminbar>O.window?(i(),f.removeClass("sticky-menu")):(f.addClass("sticky-menu"),k())}var m,n,o,p,q,r,s,t,u=!1,v=a("input.current-page"),w=v.val(),x=/iPhone|iPad|iPod/.test(navigator.userAgent),y=-1!==navigator.userAgent.indexOf("Android"),z=a(document.documentElement).hasClass("ie8"),A=a("#adminmenuwrap"),B=a("#wpwrap"),C=a("#adminmenu"),D=a("#wp-responsive-overlay"),E=a("#wp-toolbar"),F=E.find('a[aria-haspopup="true"]'),G=a(".meta-box-sortables"),H=!1,I=a("#wpadminbar"),J=0,K=!1,L=!1,M=0,N=!1,O={window:e.height(),wpwrap:B.height(),adminbar:I.height(),menu:A.height()};C.on("click.wp-submenu-head",".wp-submenu-head",function(b){a(b.target).parent().siblings("a").get(0).click()}),a("#collapse-menu").on("click.collapse-menu",function(){var e,g;a("#adminmenu div.wp-submenu").css("margin-top",""),e=b.innerWidth?Math.max(b.innerWidth,document.documentElement.clientWidth):961,e&&960>e?f.hasClass("auto-fold")?(f.removeClass("auto-fold").removeClass("folded"),setUserSetting("unfold",1),setUserSetting("mfold","o"),g="open"):(f.addClass("auto-fold"),setUserSetting("unfold",0),g="folded"):f.hasClass("folded")?(f.removeClass("folded"),setUserSetting("mfold","o"),g="open"):(f.addClass("folded"),setUserSetting("mfold","f"),g="folded"),c(),d.trigger("wp-collapse-menu",{state:g})}),d.on("wp-window-resized wp-responsive-activate wp-responsive-deactivate",c),("ontouchstart"in b||/IEMobile\/[1-9]/.test(navigator.userAgent))&&(r=x?"touchstart":"click",f.on(r+".wp-mobile-hover",function(b){C.data("wp-responsive")||a(b.target).closest("#adminmenu").length||C.find("li.opensub").removeClass("opensub")}),C.find("a.wp-has-submenu").on(r+".wp-mobile-hover",function(b){var c=a(this).parent();C.data("wp-responsive")||c.hasClass("opensub")||c.hasClass("wp-menu-open")&&!(c.width()<40)||(b.preventDefault(),g(c),C.find("li.opensub").removeClass("opensub"),c.addClass("opensub"))})),x||y||(C.find("li.wp-has-submenu").hoverIntent({over:function(){var b=a(this),c=b.find(".wp-submenu"),d=parseInt(c.css("top"),10);isNaN(d)||d>-5||C.data("wp-responsive")||(g(b),C.find("li.opensub").removeClass("opensub"),b.addClass("opensub"))},out:function(){C.data("wp-responsive")||a(this).removeClass("opensub").find(".wp-submenu").css("margin-top","")},timeout:200,sensitivity:7,interval:90}),C.on("focus.adminmenu",".wp-submenu a",function(b){C.data("wp-responsive")||a(b.target).closest("li.menu-top").addClass("opensub")}).on("blur.adminmenu",".wp-submenu a",function(b){C.data("wp-responsive")||a(b.target).closest("li.menu-top").removeClass("opensub")}).find("li.wp-has-submenu.wp-not-current-submenu").on("focusin.adminmenu",function(){g(a(this))})),a("div.updated, div.error, div.notice").not(".inline, .below-h2").insertAfter(a(".wrap").children(":header").first()),d.on("wp-plugin-update-error",function(){h()}),screenMeta.init(),a("tbody").children().children(".check-column").find(":checkbox").click(function(b){if("undefined"==b.shiftKey)return!0;if(b.shiftKey){if(!u)return!0;m=a(u).closest("form").find(":checkbox").filter(":visible:enabled"),n=m.index(u),o=m.index(this),p=a(this).prop("checked"),n>0&&o>0&&n!=o&&(q=o>n?m.slice(n,o):m.slice(o,n),q.prop("checked",function(){return a(this).closest("tr").is(":visible")?p:!1}))}u=this;var c=a(this).closest("tbody").find(":checkbox").filter(":visible:enabled").not(":checked");return a(this).closest("table").children("thead, tfoot").find(":checkbox").prop("checked",function(){return 0===c.length}),!0}),a("thead, tfoot").find(".check-column :checkbox").on("click.wp-toggle-checkboxes",function(b){var c=a(this),d=c.closest("table"),e=c.prop("checked"),f=b.shiftKey||c.data("wp-toggle");d.children("tbody").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return a(this).is(":hidden,:disabled")?!1:f?!a(this).prop("checked"):e?!0:!1}),d.children("thead,  tfoot").filter(":visible").children().children(".check-column").find(":checkbox").prop("checked",function(){return f?!1:e?!0:!1})}),a("#wpbody-content").on({focusin:function(){clearTimeout(s),t=a(this).find(".row-actions"),a(".row-actions").not(this).removeClass("visible"),t.addClass("visible")},focusout:function(){s=setTimeout(function(){t.removeClass("visible")},30)}},".has-row-actions"),a("tbody").on("click",".toggle-row",function(){a(this).closest("tr").toggleClass("is-expanded")}),a("#default-password-nag-no").click(function(){return setUserSetting("default_password_nag","hide"),a("div.default-password-nag").hide(),!1}),a("#newcontent").bind("keydown.wpevent_InsertTab",function(b){var c,d,e,f,g,h=b.target;if(27==b.keyCode)return b.preventDefault(),void a(h).data("tab-out",!0);if(!(9!=b.keyCode||b.ctrlKey||b.altKey||b.shiftKey)){if(a(h).data("tab-out"))return void a(h).data("tab-out",!1);c=h.selectionStart,d=h.selectionEnd,e=h.value,document.selection?(h.focus(),g=document.selection.createRange(),g.text="     "):c>=0&&(f=this.scrollTop,h.value=e.substring(0,c).concat("    ",e.substring(d)),h.selectionStart=h.selectionEnd=c+1,this.scrollTop=f),b.stopPropagation&&b.stopPropagation(),b.preventDefault&&b.preventDefault()}}),v.length&&v.closest("form").submit(function(){-1==a('select[name="action"]').val()&&-1==a('select[name="action2"]').val()&&v.val()==w&&v.val("1")}),a('.search-box input[type="search"], .search-box input[type="submit"]').mousedown(function(){a('select[name^="action"]').val("-1")}),a("#contextual-help-link, #show-settings-link").on("focus.scroll-into-view",function(a){a.target.scrollIntoView&&a.target.scrollIntoView(!1)}),function(){function b(){c.prop("disabled",""===d.map(function(){return a(this).val()}).get().join(""))}var c,d,e=a("form.wp-upload-form");e.length&&(c=e.find('input[type="submit"]'),d=e.find('input[type="file"]'),b(),d.on("change",b))}(),x||(e.on("scroll.pin-menu",i),d.on("tinymce-editor-init.pin-menu",function(a,b){b.on("wp-autoresize",j)})),b.wpResponsive={init:function(){var c=this;d.on("wp-responsive-activate.wp-responsive",function(){c.activate()}).on("wp-responsive-deactivate.wp-responsive",function(){c.deactivate()}),a("#wp-admin-bar-menu-toggle a").attr("aria-expanded","false"),a("#wp-admin-bar-menu-toggle").on("click.wp-responsive",function(b){b.preventDefault(),I.find(".hover").removeClass("hover"),B.toggleClass("wp-responsive-open"),B.hasClass("wp-responsive-open")?(a(this).find("a").attr("aria-expanded","true"),a("#adminmenu a:first").focus()):a(this).find("a").attr("aria-expanded","false")}),C.on("click.wp-responsive","li.wp-has-submenu > a",function(b){C.data("wp-responsive")&&(a(this).parent("li").toggleClass("selected"),b.preventDefault())}),c.trigger(),d.on("wp-window-resized.wp-responsive",a.proxy(this.trigger,this)),e.on("load.wp-responsive",function(){var a=navigator.userAgent.indexOf("AppleWebKit/")>-1?e.width():b.innerWidth;782>=a&&c.disableSortables()})},activate:function(){l(),f.hasClass("auto-fold")||f.addClass("auto-fold"),C.data("wp-responsive",1),this.disableSortables()},deactivate:function(){l(),C.removeData("wp-responsive"),this.enableSortables()},trigger:function(){var a;b.innerWidth&&(a=Math.max(b.innerWidth,document.documentElement.clientWidth),782>=a?H||(d.trigger("wp-responsive-activate"),H=!0):H&&(d.trigger("wp-responsive-deactivate"),H=!1),480>=a?this.enableOverlay():this.disableOverlay())},enableOverlay:function(){0===D.length&&(D=a('<div id="wp-responsive-overlay"></div>').insertAfter("#wpcontent").hide().on("click.wp-responsive",function(){E.find(".menupop.hover").removeClass("hover"),a(this).hide()})),F.on("click.wp-responsive",function(){D.show()})},disableOverlay:function(){F.off("click.wp-responsive"),D.hide()},disableSortables:function(){if(G.length)try{G.sortable("disable")}catch(a){}},enableSortables:function(){if(G.length)try{G.sortable("enable")}catch(a){}}},b.wpResponsive.init(),l(),c(),h(),d.on("wp-pin-menu wp-window-resized.pin-menu postboxes-columnchange.pin-menu postbox-toggled.pin-menu wp-collapse-menu.pin-menu wp-scroll-start.pin-menu",l)}),function(){function a(){d.trigger("wp-window-resized")}function c(){b.clearTimeout(f),f=b.setTimeout(a,200)}var f;e.on("resize.wp-fire-once",c)}(),function(){if("-ms-user-select"in document.documentElement.style&&navigator.userAgent.match(/IEMobile\/10\.0/)){var a=document.createElement("style");a.appendChild(document.createTextNode("@-ms-viewport{width:auto!important}")),document.getElementsByTagName("head")[0].appendChild(a)}}()}(jQuery,window);
\ No newline at end of file
index c0ac1774af27c28dfb7cd56265530ba5d7b21d31..e78d2c96c7f1aa9d6e0a1db4bda5dd92ede9a85e 100644 (file)
@@ -3,13 +3,22 @@
        var Container, focus, api = wp.customize;
 
        /**
+        * A Customizer Setting.
+        *
+        * A setting is WordPress data (theme mod, option, menu, etc.) that the user can
+        * draft changes to in the Customizer.
+        *
+        * @see PHP class WP_Customize_Setting.
+        *
         * @class
         * @augments wp.customize.Value
         * @augments wp.customize.Class
         *
-        * @param options
-        * - previewer - The Previewer instance to sync with.
-        * - transport - The transport to use for previewing. Supports 'refresh' and 'postMessage'.
+        * @param {object} id                The Setting ID.
+        * @param {object} value             The initial value of the setting.
+        * @param {object} options.previewer The Previewer instance to sync with.
+        * @param {object} options.transport The transport to use for previewing. Supports 'refresh' and 'postMessage'.
+        * @param {object} options.dirty
         */
        api.Setting = api.Value.extend({
                initialize: function( id, value, options ) {
                        this.transport = this.transport || 'refresh';
                        this._dirty = options.dirty || false;
 
+                       // Whenever the setting's value changes, refresh the preview.
                        this.bind( this.preview );
                },
+
+               /**
+                * Refresh the preview, respective of the setting's refresh policy.
+                */
                preview: function() {
                        switch ( this.transport ) {
                                case 'refresh':
                },
 
                /**
-                * Handle changes to the active state.
+                * Active state change handler.
                 *
-                * This does not change the active state, it merely handles the behavior
-                * for when it does change.
+                * Shows the container if it is active, hides it if not.
                 *
                 * To override by subclass, update the container's UI to reflect the provided active state.
                 *
                 * @param {Object}  args.completeCallback
                 */
                onChangeActive: function( active, args ) {
-                       var duration, construct = this;
+                       var duration, construct = this, expandedOtherPanel;
                        if ( args.unchanged ) {
                                if ( args.completeCallback ) {
                                        args.completeCallback();
                        }
 
                        duration = ( 'resolved' === api.previewer.deferred.active.state() ? args.duration : 0 );
+
+                       if ( construct.extended( api.Panel ) ) {
+                               // If this is a panel is not currently expanded but another panel is expanded, do not animate.
+                               api.panel.each(function ( panel ) {
+                                       if ( panel !== construct && panel.expanded() ) {
+                                               expandedOtherPanel = panel;
+                                               duration = 0;
+                                       }
+                               });
+
+                               // Collapse any expanded sections inside of this panel first before deactivating.
+                               if ( ! active ) {
+                                       _.each( construct.sections(), function( section ) {
+                                               section.collapse( { duration: 0 } );
+                                       } );
+                               }
+                       }
+
                        if ( ! $.contains( document, construct.container[0] ) ) {
                                // jQuery.fn.slideUp is not hiding an element if it is not in the DOM
                                construct.container.toggle( active );
                                        construct.container.stop( true, true ).slideUp( duration, args.completeCallback );
                                }
                        }
+
+                       // Recalculate the margin-top immediately, not waiting for debounced reflow, to prevent momentary (100ms) vertical jiggle.
+                       if ( expandedOtherPanel ) {
+                               expandedOtherPanel._recalculateTopMargin();
+                       }
                },
 
                /**
                },
 
                /**
-                * @param {Boolean} expanded
-                * @param {Object} [params]
-                * @returns {Boolean} false if state already applied
+                * Handle the toggle logic for expand/collapse.
+                *
+                * @param {Boolean}  expanded - The new state to apply.
+                * @param {Object}   [params] - Object containing options for expand/collapse.
+                * @param {Function} [params.completeCallback] - Function to call when expansion/collapse is complete.
+                * @returns {Boolean} false if state already applied or active state is false
                 */
-               _toggleExpanded: function ( expanded, params ) {
-                       var self = this;
+               _toggleExpanded: function( expanded, params ) {
+                       var instance = this, previousCompleteCallback;
                        params = params || {};
-                       var section = this, previousCompleteCallback = params.completeCallback;
-                       params.completeCallback = function () {
+                       previousCompleteCallback = params.completeCallback;
+
+                       // Short-circuit expand() if the instance is not active.
+                       if ( expanded && ! instance.active() ) {
+                               return false;
+                       }
+
+                       params.completeCallback = function() {
                                if ( previousCompleteCallback ) {
-                                       previousCompleteCallback.apply( section, arguments );
+                                       previousCompleteCallback.apply( instance, arguments );
                                }
                                if ( expanded ) {
-                                       section.container.trigger( 'expanded' );
+                                       instance.container.trigger( 'expanded' );
                                } else {
-                                       section.container.trigger( 'collapsed' );
+                                       instance.container.trigger( 'collapsed' );
                                }
                        };
-                       if ( ( expanded && this.expanded.get() ) || ( ! expanded && ! this.expanded.get() ) ) {
+                       if ( ( expanded && instance.expanded.get() ) || ( ! expanded && ! instance.expanded.get() ) ) {
                                params.unchanged = true;
-                               self.onChangeExpanded( self.expanded.get(), params );
+                               instance.onChangeExpanded( instance.expanded.get(), params );
                                return false;
                        } else {
                                params.unchanged = false;
-                               this.expandedArgumentsQueue.push( params );
-                               this.expanded.set( expanded );
+                               instance.expandedArgumentsQueue.push( params );
+                               instance.expanded.set( expanded );
                                return true;
                        }
                },
 
                /**
                 * @param {Object} [params]
-                * @returns {Boolean} false if already expanded
+                * @returns {Boolean} false if already expanded or if inactive.
                 */
                expand: function ( params ) {
                        return this._toggleExpanded( true, params );
 
                /**
                 * @param {Object} [params]
-                * @returns {Boolean} false if already collapsed
+                * @returns {Boolean} false if already collapsed.
                 */
                collapse: function ( params ) {
                        return this._toggleExpanded( false, params );
                        };
                        section.panel.bind( inject );
                        inject( section.panel.get() ); // Since a section may never get a panel, assume that it won't ever get one
+
+                       section.deferred.embedded.done(function() {
+                               // Fix the top margin after reflow.
+                               api.bind( 'pane-contents-reflowed', _.debounce( function() {
+                                       section._recalculateTopMargin();
+                               }, 100 ) );
+                       });
                },
 
                /**
                                                // Fix the height after browser resize.
                                                $( window ).on( 'resize.customizer-section', _.debounce( resizeContentHeight, 100 ) );
 
-                                               // Fix the top margin after reflow.
-                                               api.bind( 'pane-contents-reflowed', _.debounce( function() {
-                                                       var offset = ( content.offset().top - headerActionsHeight );
-                                                       if ( 0 < offset ) {
-                                                               content.css( 'margin-top', ( parseInt( content.css( 'margin-top' ), 10 ) - offset ) );
-                                                       }
-                                               }, 100 ) );
+                                               section._recalculateTopMargin();
                                        };
                                }
 
                                        args.completeCallback();
                                }
                        }
+               },
+
+               /**
+                * Recalculate the top margin.
+                *
+                * @since 4.4.0
+                * @private
+                */
+               _recalculateTopMargin: function() {
+                       var section = this, content, offset, headerActionsHeight;
+                       content = section.container.find( '.accordion-section-content' );
+                       if ( 0 === content.length ) {
+                               return;
+                       }
+                       headerActionsHeight = $( '#customize-header-actions' ).height();
+                       offset = ( content.offset().top - headerActionsHeight );
+                       if ( 0 < offset ) {
+                               content.css( 'margin-top', ( parseInt( content.css( 'margin-top' ), 10 ) - offset ) );
+                       }
                }
        });
 
                        }
                },
 
+               /**
+                * Recalculate the top margin.
+                *
+                * @since 4.4.0
+                * @private
+                */
+               _recalculateTopMargin: function() {
+                       api.Panel.prototype._recalculateTopMargin.call( this );
+               },
+
                /**
                 * Render control's screenshot if the control comes into view.
                 *
                                parentContainer.append( panel.container );
                                panel.renderContent();
                        }
+
+                       api.bind( 'pane-contents-reflowed', _.debounce( function() {
+                               panel._recalculateTopMargin();
+                       }, 100 ) );
+
                        panel.deferred.embedded.resolve();
                },
 
                 * @param {Boolean}  expanded
                 * @param {Object}   args
                 * @param {Boolean}  args.unchanged
-                * @param {Callback} args.completeCallback
+                * @param {Function} args.completeCallback
                 */
                onChangeExpanded: function ( expanded, args ) {
 
                        // Note: there is a second argument 'args' passed
                        var position, scroll,
                                panel = this,
-                               section = panel.container.closest( '.accordion-section' ), // This is actually the panel.
-                               overlay = section.closest( '.wp-full-overlay' ),
-                               container = section.closest( '.wp-full-overlay-sidebar-content' ),
+                               accordionSection = panel.container.closest( '.accordion-section' ),
+                               overlay = accordionSection.closest( '.wp-full-overlay' ),
+                               container = accordionSection.closest( '.wp-full-overlay-sidebar-content' ),
                                siblings = container.find( '.open' ),
                                topPanel = overlay.find( '#customize-theme-controls > ul > .accordion-section > .accordion-section-title' ),
-                               backBtn = section.find( '.customize-panel-back' ),
-                               panelTitle = section.find( '.accordion-section-title' ).first(),
-                               content = section.find( '.control-panel-content' ),
+                               backBtn = accordionSection.find( '.customize-panel-back' ),
+                               panelTitle = accordionSection.find( '.accordion-section-title' ).first(),
+                               content = accordionSection.find( '.control-panel-content' ),
                                headerActionsHeight = $( '#customize-header-actions' ).height();
 
                        if ( expanded ) {
                                        position = content.offset().top;
                                        scroll = container.scrollTop();
                                        content.css( 'margin-top', ( headerActionsHeight - position - scroll ) );
-                                       section.addClass( 'current-panel' );
+                                       accordionSection.addClass( 'current-panel' );
                                        overlay.addClass( 'in-sub-panel' );
                                        container.scrollTop( 0 );
                                        if ( args.completeCallback ) {
                                topPanel.attr( 'tabindex', '-1' );
                                backBtn.attr( 'tabindex', '0' );
                                backBtn.focus();
-
-                               // Fix the top margin after reflow.
-                               api.bind( 'pane-contents-reflowed', _.debounce( function() {
-                                       content.css( 'margin-top', ( parseInt( content.css( 'margin-top' ), 10 ) - ( content.offset().top - headerActionsHeight ) ) );
-                               }, 100 ) );
+                               panel._recalculateTopMargin();
                        } else {
                                siblings.removeClass( 'open' );
-                               section.removeClass( 'current-panel' );
+                               accordionSection.removeClass( 'current-panel' );
                                overlay.removeClass( 'in-sub-panel' );
                                content.delay( 180 ).hide( 0, function() {
                                        content.css( 'margin-top', 'inherit' ); // Reset
                        }
                },
 
+               /**
+                * Recalculate the top margin.
+                *
+                * @since 4.4.0
+                * @private
+                */
+               _recalculateTopMargin: function() {
+                       var panel = this, headerActionsHeight, content, accordionSection;
+                       headerActionsHeight = $( '#customize-header-actions' ).height();
+                       accordionSection = panel.container.closest( '.accordion-section' );
+                       content = accordionSection.find( '.control-panel-content' );
+                       content.css( 'margin-top', ( parseInt( content.css( 'margin-top' ), 10 ) - ( content.offset().top - headerActionsHeight ) ) );
+               },
+
                /**
                 * Render the panel from its JS template, if it exists.
                 *
         * @class
         * @augments wp.customize.Class
         *
-        * @param {string} id                            Unique identifier for the control instance.
-        * @param {object} options                       Options hash for the control instance.
+        * @param {string} id                              Unique identifier for the control instance.
+        * @param {object} options                         Options hash for the control instance.
         * @param {object} options.params
-        * @param {object} options.params.type           Type of control (e.g. text, radio, dropdown-pages, etc.)
-        * @param {string} options.params.content        The HTML content for the control.
-        * @param {string} options.params.priority       Order of priority to show the control within the section.
+        * @param {object} options.params.type             Type of control (e.g. text, radio, dropdown-pages, etc.)
+        * @param {string} options.params.content          The HTML content for the control.
+        * @param {string} options.params.priority         Order of priority to show the control within the section.
         * @param {string} options.params.active
-        * @param {string} options.params.section
+        * @param {string} options.params.section          The ID of the section the control belongs to.
+        * @param {string} options.params.settings.default The ID of the setting the control relates to.
+        * @param {string} options.params.settings.data
         * @param {string} options.params.label
         * @param {string} options.params.description
         * @param {string} options.params.instanceNumber Order in which this instance was created in relation to other instances.
 
                        api.utils.bubbleChildValueChanges( control, [ 'section', 'priority', 'active' ] );
 
-                       // Associate this control with its settings when they are created
+                       /*
+                        * After all settings related to the control are available,
+                        * make them available on the control and embed the control into the page.
+                        */
                        settings = $.map( control.params.settings, function( value ) {
                                return value;
                        });
                                control.embed();
                        }) );
 
+                       // After the control is embedded on the page, invoke the "ready" method.
                        control.deferred.embedded.done( function () {
                                control.ready();
                        });
                                return;
                        }
 
-                       if ( ! $.contains( document, this.container ) ) {
+                       if ( ! $.contains( document, this.container[0] ) ) {
                                // jQuery.fn.slideUp is not hiding an element if it is not in the DOM
                                this.container.toggle( active );
                                if ( args.completeCallback ) {
                                        control.setting.set( picker.wpColorPicker('color') );
                                },
                                clear: function() {
-                                       control.setting.set( false );
+                                       control.setting.set( '' );
                                }
                        });
 
                 * @param {object} croppedImage Cropped attachment data.
                 */
                onCropped: function(croppedImage) {
-                       var url = croppedImage.post_content,
+                       var url = croppedImage.url,
                                attachmentId = croppedImage.attachment_id,
                                w = croppedImage.width,
                                h = croppedImage.height;
        api.panel = new api.Values({ defaultConstructor: api.Panel });
 
        /**
+        * An object that fetches a preview in the background of the document, which
+        * allows for seamless replacement of an existing preview.
+        *
         * @class
         * @augments wp.customize.Messenger
         * @augments wp.customize.Class
        api.PreviewFrame = api.Messenger.extend({
                sensitivity: 2000,
 
+               /**
+                * Initialize the PreviewFrame.
+                *
+                * @param {object} params.container
+                * @param {object} params.signature
+                * @param {object} params.previewUrl
+                * @param {object} params.query
+                * @param {object} options
+                */
                initialize: function( params, options ) {
                        var deferred = $.Deferred();
 
-                       // This is the promise object.
+                       /*
+                        * Make the instance of the PreviewFrame the promise object
+                        * so other objects can easily interact with it.
+                        */
                        deferred.promise( this );
 
                        this.container = params.container;
                        this.run( deferred );
                },
 
+               /**
+                * Run the preview request.
+                *
+                * @param {object} deferred jQuery Deferred object to be resolved with
+                *                          the request.
+                */
                run: function( deferred ) {
                        var self   = this,
                                loaded = false,
                refreshBuffer: 250,
 
                /**
-                * Requires params:
-                *  - container  - a selector or jQuery element
-                *  - previewUrl - the URL of preview frame
+                * @param {array}  params.allowedUrls
+                * @param {string} params.container   A selector or jQuery element for the preview
+                *                                    frame to be placed.
+                * @param {string} params.form
+                * @param {string} params.previewUrl  The URL to preview.
+                * @param {string} params.signature
+                * @param {object} options
                 */
                initialize: function( params, options ) {
                        var self = this,
                        } );
                },
 
+               /**
+                * Query string data sent with each preview request.
+                *
+                * @abstract
+                */
                query: function() {},
 
                abort: function() {
                        }
                },
 
+               /**
+                * Refresh the preview.
+                */
                refresh: function() {
                        var self = this;
 
                },
 
                cheatin: function() {
-                       $( document.body ).empty().addClass('cheatin').append( '<p>' + api.l10n.cheatin + '</p>' );
+                       $( document.body ).empty().addClass( 'cheatin' ).append(
+                               '<h1>' + api.l10n.cheatin + '</h1>' +
+                               '<p>' + api.l10n.notAllowed + '</p>'
+                       );
                },
 
                refreshNonces: function() {
 
                        nonce: api.settings.nonce,
 
+                       /**
+                        * Build the query to send along with the Preview request.
+                        *
+                        * @return {object}
+                        */
                        query: function() {
                                var dirtyCustomized = {};
                                api.each( function ( value, key ) {
                        } );
                }
 
-               // Create a potential postMessage connection with the parent frame.
+               /*
+                * Create a postMessage connection with a parent frame,
+                * in case the Customizer frame was opened with the Customize loader.
+                *
+                * @see wp.customize.Loader
+                */
                parent = new api.Messenger({
                        url: api.settings.url.parent,
                        channel: 'loader'
                });
 
-               // If we receive a 'back' event, we're inside an iframe.
-               // Send any clicks to the 'Return' link to the parent page.
+               /*
+                * If we receive a 'back' event, we're inside an iframe.
+                * Send any clicks to the 'Return' link to the parent page.
+                */
                parent.bind( 'back', function() {
                        closeBtn.on( 'click.customize-controls-close', function( event ) {
                                event.preventDefault();
                        });
                } );
 
-               // When activated, let the loader handle redirecting the page.
-               // If no loader exists, redirect the page ourselves (if a url exists).
+               /*
+                * When activated, let the loader handle redirecting the page.
+                * If no loader exists, redirect the page ourselves (if a url exists).
+                */
                api.bind( 'activated', function() {
                        if ( parent.targetWindow() )
                                parent.send( 'activated', api.settings.url.activated );
index 503034ccf71285887f99f7ecdcc1893446c7be17..06bd8acb487a895983c96df6ce9a89460cc40b77 100644 (file)
@@ -1,2 +1,2 @@
-!function(a,b){var c,d,e=wp.customize;e.Setting=e.Value.extend({initialize:function(a,b,c){e.Value.prototype.initialize.call(this,b,c),this.id=a,this.transport=this.transport||"refresh",this._dirty=c.dirty||!1,this.bind(this.preview)},preview:function(){switch(this.transport){case"refresh":return this.previewer.refresh();case"postMessage":return this.previewer.send("setting",[this.id,this()])}}}),e.utils={},e.utils.bubbleChildValueChanges=function(a,c){b.each(c,function(b,c){a[c].bind(function(b,c){a.parent&&b!==c&&a.parent.trigger("change",a)})})},d=function(a){var b,c,d;b=this,a=a||{},d=function(){var a;a=b.extended(e.Panel)&&b.expanded&&b.expanded()?b.container.find("ul.control-panel-content"):b.extended(e.Section)&&b.expanded&&b.expanded()?b.container.find("ul.accordion-section-content"):b.container,a.find("input, select, textarea, button, object, a[href], [tabindex]").filter(":visible").first().focus()},a.completeCallback?(c=a.completeCallback,a.completeCallback=function(){d(),c()}):a.completeCallback=d,b.expand?b.expand(a):a.completeCallback()},e.utils.prioritySort=function(a,b){return a.priority()===b.priority()&&"number"==typeof a.params.instanceNumber&&"number"==typeof b.params.instanceNumber?a.params.instanceNumber-b.params.instanceNumber:a.priority()-b.priority()},e.utils.isKeydownButNotEnterEvent=function(a){return"keydown"===a.type&&13!==a.which},e.utils.areElementListsEqual=function(a,c){var d=a.length===c.length&&-1===_.indexOf(_.map(_.zip(a,c),function(a){return b(a[0]).is(a[1])}),!1);return d},c=e.Class.extend({defaultActiveArguments:{duration:"fast",completeCallback:b.noop},defaultExpandedArguments:{duration:"fast",completeCallback:b.noop},containerType:"container",defaults:{title:"",description:"",priority:100,type:"default",content:null,active:!0,instanceNumber:null},initialize:function(a,c){var d=this;d.id=a,c=c||{},c.params=_.defaults(c.params||{},d.defaults),b.extend(d,c),d.templateSelector="customize-"+d.containerType+"-"+d.params.type,d.container=b(d.params.content),0===d.container.length&&(d.container=b(d.getContainer())),d.deferred={embedded:new b.Deferred},d.priority=new e.Value,d.active=new e.Value,d.activeArgumentsQueue=[],d.expanded=new e.Value,d.expandedArgumentsQueue=[],d.active.bind(function(a){var c=d.activeArgumentsQueue.shift();c=b.extend({},d.defaultActiveArguments,c),a=a&&d.isContextuallyActive(),d.onChangeActive(a,c)}),d.expanded.bind(function(a){var c=d.expandedArgumentsQueue.shift();c=b.extend({},d.defaultExpandedArguments,c),d.onChangeExpanded(a,c)}),d.deferred.embedded.done(function(){d.attachEvents()}),e.utils.bubbleChildValueChanges(d,["priority","active"]),d.priority.set(d.params.priority),d.active.set(d.params.active),d.expanded.set(!1)},ready:function(){},_children:function(a,b){var c=this,d=[];return e[b].each(function(b){b[a].get()===c.id&&d.push(b)}),d.sort(e.utils.prioritySort),d},isContextuallyActive:function(){throw new Error("Container.isContextuallyActive() must be overridden in a subclass.")},onChangeActive:function(a,c){var d,f=this;return c.unchanged?void(c.completeCallback&&c.completeCallback()):(d="resolved"===e.previewer.deferred.active.state()?c.duration:0,void(b.contains(document,f.container[0])?a?f.container.stop(!0,!0).slideDown(d,c.completeCallback):f.expanded()?f.collapse({duration:d,completeCallback:function(){f.container.stop(!0,!0).slideUp(d,c.completeCallback)}}):f.container.stop(!0,!0).slideUp(d,c.completeCallback):(f.container.toggle(a),c.completeCallback&&c.completeCallback())))},_toggleActive:function(a,b){var c=this;return b=b||{},a&&this.active.get()||!a&&!this.active.get()?(b.unchanged=!0,c.onChangeActive(c.active.get(),b),!1):(b.unchanged=!1,this.activeArgumentsQueue.push(b),this.active.set(a),!0)},activate:function(a){return this._toggleActive(!0,a)},deactivate:function(a){return this._toggleActive(!1,a)},onChangeExpanded:function(){throw new Error("Must override with subclass.")},_toggleExpanded:function(a,b){var c=this;b=b||{};var d=this,e=b.completeCallback;return b.completeCallback=function(){e&&e.apply(d,arguments),a?d.container.trigger("expanded"):d.container.trigger("collapsed")},a&&this.expanded.get()||!a&&!this.expanded.get()?(b.unchanged=!0,c.onChangeExpanded(c.expanded.get(),b),!1):(b.unchanged=!1,this.expandedArgumentsQueue.push(b),this.expanded.set(a),!0)},expand:function(a){return this._toggleExpanded(!0,a)},collapse:function(a){return this._toggleExpanded(!1,a)},focus:d,getContainer:function(){var a,c=this;return a=0!==b("#tmpl-"+c.templateSelector).length?wp.template(c.templateSelector):wp.template("customize-"+c.containerType+"-default"),a&&c.container?b.trim(a(c.params)):"<li></li>"}}),e.Section=c.extend({containerType:"section",defaults:{title:"",description:"",priority:100,type:"default",content:null,active:!0,instanceNumber:null,panel:null,customizeAction:""},initialize:function(a,d){var f=this;c.prototype.initialize.call(f,a,d),f.id=a,f.panel=new e.Value,f.panel.bind(function(a){b(f.container).toggleClass("control-subsection",!!a)}),f.panel.set(f.params.panel||""),e.utils.bubbleChildValueChanges(f,["panel"]),f.embed(),f.deferred.embedded.done(function(){f.ready()})},embed:function(){var a,c=this;a=function(a){var d;a?e.panel(a,function(a){a.deferred.embedded.done(function(){d=a.container.find("ul:first"),c.container.parent().is(d)||d.append(c.container),c.deferred.embedded.resolve()})}):(d=b("#customize-theme-controls").children("ul"),c.container.parent().is(d)||d.append(c.container),c.deferred.embedded.resolve())},c.panel.bind(a),a(c.panel.get())},attachEvents:function(){var a=this;a.container.find(".accordion-section-title, .customize-section-back").on("click keydown",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),a.expanded()?a.collapse():a.expand())})},isContextuallyActive:function(){var a=this,b=a.controls(),c=0;return _(b).each(function(a){a.active()&&(c+=1)}),0!==c},controls:function(){return this._children("section","control")},onChangeExpanded:function(a,c){var d,f,g,h,i=this,j=i.container.closest(".wp-full-overlay-sidebar-content"),k=i.container.find(".accordion-section-content"),l=i.container.closest(".wp-full-overlay"),m=i.container.find(".customize-section-back"),n=i.container.find(".accordion-section-title").first(),o=b("#customize-header-actions").height();a&&!i.container.hasClass("open")?(c.unchanged?f=c.completeCallback:(j.scrollTop(0),d=function(){var a,b;a=window.matchMedia||window.msMatchMedia,b=90,a&&a("(max-width: 640px)").matches&&(b=45),k.css("height",window.innerHeight-b)},f=function(){i.container.addClass("open"),l.addClass("section-open"),g=k.offset().top,h=j.scrollTop(),k.css("margin-top",o-g-h),d(),n.attr("tabindex","-1"),m.attr("tabindex","0"),m.focus(),c.completeCallback&&c.completeCallback(),b(window).on("resize.customizer-section",_.debounce(d,100)),e.bind("pane-contents-reflowed",_.debounce(function(){var a=k.offset().top-o;a>0&&k.css("margin-top",parseInt(k.css("margin-top"),10)-a)},100))}),c.allowMultiple||e.section.each(function(a){a!==i&&a.collapse({duration:c.duration})}),i.panel()?e.panel(i.panel()).expand({duration:c.duration,completeCallback:f}):(e.panel.each(function(a){a.collapse()}),f())):!a&&i.container.hasClass("open")?(i.container.removeClass("open"),l.removeClass("section-open"),k.css("margin-top",""),j.scrollTop(0),m.attr("tabindex","-1"),n.attr("tabindex","0"),n.focus(),c.completeCallback&&c.completeCallback(),b(window).off("resize.customizer-section")):c.completeCallback&&c.completeCallback()}}),e.ThemesSection=e.Section.extend({currentTheme:"",overlay:"",template:"",screenshotQueue:null,$window:b(window),initialize:function(){return this.$customizeSidebar=b(".wp-full-overlay-sidebar-content:first"),e.Section.prototype.initialize.apply(this,arguments)},ready:function(){var a=this;a.overlay=a.container.find(".theme-overlay"),a.template=wp.template("customize-themes-details-view"),b("body").on("keyup",function(b){a.overlay.find(".theme-wrap").is(":visible")&&(39===b.keyCode&&a.nextTheme(),37===b.keyCode&&a.previousTheme(),27===b.keyCode&&a.closeDetails())}),_.bindAll(this,"renderScreenshots")},isContextuallyActive:function(){return this.active()},attachEvents:function(){var a=this;a.container.find(".change-theme, .customize-theme").on("click keydown",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),a.expanded()?a.collapse():a.expand())}),a.container.on("click keydown",".left",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),a.previousTheme())}),a.container.on("click keydown",".right",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),a.nextTheme())}),a.container.on("click keydown",".theme-backdrop, .close",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),a.closeDetails())});var b=_.throttle(_.bind(a.renderScreenshots,this),100);a.container.on("input","#themes-filter",function(c){var d,e=c.currentTarget.value.toLowerCase().trim().replace("-"," "),f=a.controls();_.each(f,function(a){a.filter(e)}),b(),d=a.container.find("li.customize-control:visible").length,a.container.find(".theme-count").text(d)}),e.bind("ready",function(){_.each(a.controls().slice(0,3),function(a){var b,c=a.params.theme.screenshot[0];c&&(b=new Image,b.src=c)})})},onChangeExpanded:function(a,c){if(c.unchanged)return void(c.completeCallback&&c.completeCallback());var d,f,g=this,h=g.container.closest(".accordion-section"),i=h.closest(".wp-full-overlay"),j=h.closest(".wp-full-overlay-sidebar-content"),k=j.find(".open"),l=h.find(".customize-theme"),m=h.find(".change-theme"),n=h.find(".control-panel-content");a?(e.section.each(function(a){a!==g&&a.collapse({duration:c.duration})}),e.panel.each(function(a){a.collapse({duration:0})}),n.show(0,function(){d=n.offset().top,f=j.scrollTop(),n.css("margin-top",b("#customize-header-actions").height()-d-f),h.addClass("current-panel"),i.addClass("in-themes-panel"),j.scrollTop(0),_.delay(g.renderScreenshots,10),g.$customizeSidebar.on("scroll.customize-themes-section",_.throttle(g.renderScreenshots,300)),c.completeCallback&&c.completeCallback()}),l.focus()):(k.removeClass("open"),h.removeClass("current-panel"),i.removeClass("in-themes-panel"),g.$customizeSidebar.off("scroll.customize-themes-section"),n.delay(180).hide(0,function(){n.css("margin-top","inherit"),c.completeCallback&&c.completeCallback()}),l.attr("tabindex","0"),m.focus(),j.scrollTop(0))},renderScreenshots:function(){var a=this;null===a.screenshotQueue&&(a.screenshotQueue=a.controls()),a.screenshotQueue.length&&(a.screenshotQueue=_.filter(a.screenshotQueue,function(b){var c=b.container.find(".theme-screenshot"),d=c.find("img");if(!d.length)return!1;if(d.is(":hidden"))return!0;var e=a.$window.scrollTop(),f=e+a.$window.height(),g=d.offset().top,h=c.height(),i=g+h,j=3*h,k=i>=e-j&&f+j>=g;return k&&b.container.trigger("render-screenshot"),!k}))},nextTheme:function(){var a=this;a.getNextTheme()&&a.showDetails(a.getNextTheme(),function(){a.overlay.find(".right").focus()})},getNextTheme:function(){var a,b;return a=e.control("theme_"+this.currentTheme),b=a.container.next("li.customize-control-theme"),b.length?(b=b[0].id.replace("customize-control-",""),a=e.control(b),a.params.theme):!1},previousTheme:function(){var a=this;a.getPreviousTheme()&&a.showDetails(a.getPreviousTheme(),function(){a.overlay.find(".left").focus()})},getPreviousTheme:function(){var a,b;return a=e.control("theme_"+this.currentTheme),b=a.container.prev("li.customize-control-theme"),b.length?(b=b[0].id.replace("customize-control-",""),a=e.control(b),a.params.theme):!1},updateLimits:function(){this.getNextTheme()||this.overlay.find(".right").addClass("disabled"),this.getPreviousTheme()||this.overlay.find(".left").addClass("disabled")},showDetails:function(a,c){var d=this;c=c||function(){},d.currentTheme=a.id,d.overlay.html(d.template(a)).fadeIn("fast").focus(),b("body").addClass("modal-open"),d.containFocus(d.overlay),d.updateLimits(),c()},closeDetails:function(){b("body").removeClass("modal-open"),this.overlay.fadeOut("fast"),e.control("theme_"+this.currentTheme).focus()},containFocus:function(a){var c;a.on("keydown",function(d){return 9===d.keyCode?(c=b(":tabbable",a),c.last()[0]!==d.target||d.shiftKey?c.first()[0]===d.target&&d.shiftKey?(c.last().focus(),!1):void 0:(c.first().focus(),!1)):void 0})}}),e.Panel=c.extend({containerType:"panel",initialize:function(a,b){var d=this;c.prototype.initialize.call(d,a,b),d.embed(),d.deferred.embedded.done(function(){d.ready()})},embed:function(){var a=this,c=b("#customize-theme-controls > ul");a.container.parent().is(c)||(c.append(a.container),a.renderContent()),a.deferred.embedded.resolve()},attachEvents:function(){var a,c=this;c.container.find(".accordion-section-title").on("click keydown",function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),c.expanded()||c.expand())}),c.container.find(".customize-panel-back").on("click keydown",function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),c.expanded()&&c.collapse())}),a=c.container.find(".panel-meta:first"),a.find("> .accordion-section-title .customize-help-toggle").on("click keydown",function(d){if(!e.utils.isKeydownButNotEnterEvent(d)&&(d.preventDefault(),a=c.container.find(".panel-meta"),!a.hasClass("cannot-expand"))){var f=a.find(".customize-panel-description:first");a.hasClass("open")?(a.toggleClass("open"),f.slideUp(c.defaultExpandedArguments.duration),b(this).attr("aria-expanded",!1)):(f.slideDown(c.defaultExpandedArguments.duration),a.toggleClass("open"),b(this).attr("aria-expanded",!0))}})},sections:function(){return this._children("panel","section")},isContextuallyActive:function(){var a=this,b=a.sections(),c=0;return _(b).each(function(a){a.active()&&a.isContextuallyActive()&&(c+=1)}),0!==c},onChangeExpanded:function(a,c){if(c.unchanged)return void(c.completeCallback&&c.completeCallback());var d,f,g=this,h=g.container.closest(".accordion-section"),i=h.closest(".wp-full-overlay"),j=h.closest(".wp-full-overlay-sidebar-content"),k=j.find(".open"),l=i.find("#customize-theme-controls > ul > .accordion-section > .accordion-section-title"),m=h.find(".customize-panel-back"),n=h.find(".accordion-section-title").first(),o=h.find(".control-panel-content"),p=b("#customize-header-actions").height();a?(e.section.each(function(a){g.id!==a.panel()&&a.collapse({duration:0})}),e.panel.each(function(a){g!==a&&a.collapse({duration:0})}),o.show(0,function(){o.parent().show(),d=o.offset().top,f=j.scrollTop(),o.css("margin-top",p-d-f),h.addClass("current-panel"),i.addClass("in-sub-panel"),j.scrollTop(0),c.completeCallback&&c.completeCallback()}),l.attr("tabindex","-1"),m.attr("tabindex","0"),m.focus(),e.bind("pane-contents-reflowed",_.debounce(function(){o.css("margin-top",parseInt(o.css("margin-top"),10)-(o.offset().top-p))},100))):(k.removeClass("open"),h.removeClass("current-panel"),i.removeClass("in-sub-panel"),o.delay(180).hide(0,function(){o.css("margin-top","inherit"),c.completeCallback&&c.completeCallback()}),l.attr("tabindex","0"),m.attr("tabindex","-1"),n.focus(),j.scrollTop(0))},renderContent:function(){var a,c=this;a=0!==b("#tmpl-"+c.templateSelector+"-content").length?wp.template(c.templateSelector+"-content"):wp.template("customize-panel-default-content"),a&&c.container&&c.container.find(".accordion-sub-container").html(a(c.params))}}),e.Control=e.Class.extend({defaultActiveArguments:{duration:"fast",completeCallback:b.noop},initialize:function(a,c){var d,f,g,h=this;h.params={},b.extend(h,c||{}),h.id=a,h.selector="#customize-control-"+a.replace(/\]/g,"").replace(/\[/g,"-"),h.templateSelector="customize-control-"+h.params.type+"-content",h.container=b(h.params.content?h.params.content:h.selector),h.deferred={embedded:new b.Deferred},h.section=new e.Value,h.priority=new e.Value,h.active=new e.Value,h.activeArgumentsQueue=[],h.elements=[],d=h.container.find("[data-customize-setting-link]"),f={},d.each(function(){var a,c=b(this);if(c.is(":radio")){if(a=c.prop("name"),f[a])return;f[a]=!0,c=d.filter('[name="'+a+'"]')}e(c.data("customizeSettingLink"),function(a){var b=new e.Element(c);h.elements.push(b),b.sync(a),b.set(a())})}),h.active.bind(function(a){var c=h.activeArgumentsQueue.shift();c=b.extend({},h.defaultActiveArguments,c),h.onChangeActive(a,c)}),h.section.set(h.params.section),h.priority.set(isNaN(h.params.priority)?10:h.params.priority),h.active.set(h.params.active),e.utils.bubbleChildValueChanges(h,["section","priority","active"]),g=b.map(h.params.settings,function(a){return a}),e.apply(e,g.concat(function(){var a;h.settings={};for(a in h.params.settings)h.settings[a]=e(h.params.settings[a]);h.setting=h.settings["default"]||null,h.embed()})),h.deferred.embedded.done(function(){h.ready()})},embed:function(){var a,b=this;a=function(a){var c;a&&e.section(a,function(a){a.deferred.embedded.done(function(){c=a.container.find("ul:first"),b.container.parent().is(c)||(c.append(b.container),b.renderContent()),b.deferred.embedded.resolve()})})},b.section.bind(a),a(b.section.get())},ready:function(){},expand:function(a){e.section(this.section()).expand(a)},focus:d,onChangeActive:function(a,c){return c.unchanged?void(c.completeCallback&&c.completeCallback()):void(b.contains(document,this.container)?a?this.container.slideDown(c.duration,c.completeCallback):this.container.slideUp(c.duration,c.completeCallback):(this.container.toggle(a),c.completeCallback&&c.completeCallback()))},toggle:function(a){return this.onChangeActive(a,this.defaultActiveArguments)},activate:c.prototype.activate,deactivate:c.prototype.deactivate,_toggleActive:c.prototype._toggleActive,dropdownInit:function(){var a=this,b=this.container.find(".dropdown-status"),c=this.params,d=!1,f=function(a){"string"==typeof a&&c.statuses&&c.statuses[a]?b.html(c.statuses[a]).show():b.hide()};this.container.on("click keydown",".dropdown",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),d||a.container.toggleClass("open"),a.container.hasClass("open")&&a.container.parent().parent().find("li.library-selected").focus(),d=!0,setTimeout(function(){d=!1},400))}),this.setting.bind(f),f(this.setting())},renderContent:function(){var a,c=this;0!==b("#tmpl-"+c.templateSelector).length&&(a=wp.template(c.templateSelector),a&&c.container&&c.container.html(a(c.params)))}}),e.ColorControl=e.Control.extend({ready:function(){var a=this,b=this.container.find(".color-picker-hex");b.val(a.setting()).wpColorPicker({change:function(){a.setting.set(b.wpColorPicker("color"))},clear:function(){a.setting.set(!1)}}),this.setting.bind(function(a){b.val(a),b.wpColorPicker("color",a)})}}),e.MediaControl=e.Control.extend({ready:function(){var a=this;_.bindAll(a,"restoreDefault","removeFile","openFrame","select","pausePlayer"),a.container.on("click keydown",".upload-button",a.openFrame),a.container.on("click keydown",".upload-button",a.pausePlayer),a.container.on("click keydown",".thumbnail-image img",a.openFrame),a.container.on("click keydown",".default-button",a.restoreDefault),a.container.on("click keydown",".remove-button",a.pausePlayer),a.container.on("click keydown",".remove-button",a.removeFile),a.container.on("click keydown",".remove-button",a.cleanupPlayer),e.section(a.section()).container.on("expanded",function(){a.player&&a.player.setControlsSize()}).on("collapsed",function(){a.pausePlayer()}),a.setting.bind(function(){a.renderContent()})},pausePlayer:function(){this.player&&this.player.pause()},cleanupPlayer:function(){this.player&&wp.media.mixin.removePlayer(this.player)},openFrame:function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),this.frame||this.initFrame(),this.frame.open())},initFrame:function(){this.frame=wp.media({button:{text:this.params.button_labels.frame_button},states:[new wp.media.controller.Library({title:this.params.button_labels.frame_title,library:wp.media.query({type:this.params.mime_type}),multiple:!1,date:!1})]}),this.frame.on("select",this.select)},select:function(){var a,b=this.frame.state().get("selection").first().toJSON(),c=window._wpmejsSettings||{};this.params.attachment=b,this.setting(b.id),a=this.container.find("audio, video").get(0),a?this.player=new MediaElementPlayer(a,c):this.cleanupPlayer()},restoreDefault:function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),this.params.attachment=this.params.defaultAttachment,this.setting(this.params.defaultAttachment.url))},removeFile:function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),this.params.attachment={},this.setting(""),this.renderContent())}}),e.UploadControl=e.MediaControl.extend({select:function(){var a,b=this.frame.state().get("selection").first().toJSON(),c=window._wpmejsSettings||{};this.params.attachment=b,this.setting(b.url),a=this.container.find("audio, video").get(0),a?this.player=new MediaElementPlayer(a,c):this.cleanupPlayer()},success:function(){},removerVisibility:function(){}}),e.ImageControl=e.UploadControl.extend({thumbnailSrc:function(){}}),e.BackgroundControl=e.UploadControl.extend({ready:function(){e.UploadControl.prototype.ready.apply(this,arguments)},select:function(){e.UploadControl.prototype.select.apply(this,arguments),wp.ajax.post("custom-background-add",{nonce:_wpCustomizeBackground.nonces.add,wp_customize:"on",theme:e.settings.theme.stylesheet,attachment_id:this.params.attachment.id})}}),e.CroppedImageControl=e.MediaControl.extend({openFrame:function(a){e.utils.isKeydownButNotEnterEvent(a)||(this.initFrame(),this.frame.setState("library").open())},initFrame:function(){var a=_wpMediaViewsL10n;this.frame=wp.media({button:{text:a.select,close:!1},states:[new wp.media.controller.Library({title:this.params.button_labels.frame_title,library:wp.media.query({type:"image"}),multiple:!1,date:!1,priority:20,suggestedWidth:this.params.width,suggestedHeight:this.params.height}),new wp.media.controller.CustomizeImageCropper({imgSelectOptions:this.calculateImageSelectOptions,control:this})]}),this.frame.on("select",this.onSelect,this),this.frame.on("cropped",this.onCropped,this),this.frame.on("skippedcrop",this.onSkippedCrop,this)},onSelect:function(){var a=this.frame.state().get("selection").first().toJSON();this.params.width!==a.width||this.params.height!==a.height||this.params.flex_width||this.params.flex_height?this.frame.setState("cropper"):(this.setImageFromAttachment(a),this.frame.close())},onCropped:function(a){this.setImageFromAttachment(a)},calculateImageSelectOptions:function(a,b){var c,d,e,f=b.get("control"),g=!!parseInt(f.params.flex_width,10),h=!!parseInt(f.params.flex_height,10),i=a.get("width"),j=a.get("height"),k=parseInt(f.params.width,10),l=parseInt(f.params.height,10),m=k/l,n=i,o=j;return b.set("canSkipCrop",!f.mustBeCropped(g,h,k,l,i,j)),n/o>m?(l=o,k=l*m):(k=n,l=k/m),c=(n-k)/2,d=(o-l)/2,e={handles:!0,keys:!0,instance:!0,persistent:!0,imageWidth:i,imageHeight:j,x1:c,y1:d,x2:k+c,y2:l+d},h===!1&&g===!1&&(e.aspectRatio=k+":"+l),h===!1&&(e.maxHeight=l),g===!1&&(e.maxWidth=k),e},mustBeCropped:function(a,b,c,d,e,f){return!0===a&&!0===b?!1:!0===a&&d===f?!1:!0===b&&c===e?!1:c===e&&d===f?!1:c>=e?!1:!0},onSkippedCrop:function(){var a=this.frame.state().get("selection").first().toJSON();this.setImageFromAttachment(a)},setImageFromAttachment:function(a){this.params.attachment=a,this.setting(a.id)}}),e.SiteIconControl=e.CroppedImageControl.extend({initFrame:function(){var a=_wpMediaViewsL10n;this.frame=wp.media({button:{text:a.select,close:!1},states:[new wp.media.controller.Library({title:this.params.button_labels.frame_title,library:wp.media.query({type:"image"}),multiple:!1,date:!1,priority:20,suggestedWidth:this.params.width,suggestedHeight:this.params.height}),new wp.media.controller.SiteIconCropper({imgSelectOptions:this.calculateImageSelectOptions,control:this})]}),this.frame.on("select",this.onSelect,this),this.frame.on("cropped",this.onCropped,this),this.frame.on("skippedcrop",this.onSkippedCrop,this)},onSelect:function(){var a=this.frame.state().get("selection").first().toJSON(),b=this;this.params.width!==a.width||this.params.height!==a.height||this.params.flex_width||this.params.flex_height?this.frame.setState("cropper"):wp.ajax.post("crop-image",{nonce:a.nonces.edit,id:a.id,context:"site-icon",cropDetails:{x1:0,y1:0,width:this.params.width,height:this.params.height,dst_width:this.params.width,dst_height:this.params.height}}).done(function(a){b.setImageFromAttachment(a),b.frame.close()}).fail(function(){b.trigger("content:error:crop")})},setImageFromAttachment:function(a){var c,d=["site_icon-32","thumbnail","full"];_.each(d,function(b){c||_.isUndefined(a.sizes[b])||(c=a.sizes[b])}),this.params.attachment=a,this.setting(a.id),b('link[sizes="32x32"]').attr("href",c.url)},removeFile:function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),this.params.attachment={},this.setting(""),this.renderContent(),b('link[rel="icon"]').attr("href",""))}}),e.HeaderControl=e.Control.extend({ready:function(){this.btnRemove=b("#customize-control-header_image .actions .remove"),this.btnNew=b("#customize-control-header_image .actions .new"),_.bindAll(this,"openMedia","removeImage"),this.btnNew.on("click",this.openMedia),this.btnRemove.on("click",this.removeImage),e.HeaderTool.currentHeader=this.getInitialHeaderImage(),new e.HeaderTool.CurrentView({model:e.HeaderTool.currentHeader,el:"#customize-control-header_image .current .container"}),new e.HeaderTool.ChoiceListView({collection:e.HeaderTool.UploadsList=new e.HeaderTool.ChoiceList,el:"#customize-control-header_image .choices .uploaded .list"}),new e.HeaderTool.ChoiceListView({collection:e.HeaderTool.DefaultsList=new e.HeaderTool.DefaultsList,el:"#customize-control-header_image .choices .default .list"}),e.HeaderTool.combinedList=e.HeaderTool.CombinedList=new e.HeaderTool.CombinedList([e.HeaderTool.UploadsList,e.HeaderTool.DefaultsList])},getInitialHeaderImage:function(){if(!e.get().header_image||!e.get().header_image_data||_.contains(["remove-header","random-default-image","random-uploaded-image"],e.get().header_image))return new e.HeaderTool.ImageModel;var a=_.find(_wpCustomizeHeader.uploads,function(a){return a.attachment_id===e.get().header_image_data.attachment_id});return a||(a={url:e.get().header_image,thumbnail_url:e.get().header_image,attachment_id:e.get().header_image_data.attachment_id}),new e.HeaderTool.ImageModel({header:a,choice:a.url.split("/").pop()})},calculateImageSelectOptions:function(a,b){var c,d,f,g,h,i,j=parseInt(_wpCustomizeHeader.data.width,10),k=parseInt(_wpCustomizeHeader.data.height,10),l=!!parseInt(_wpCustomizeHeader.data["flex-width"],10),m=!!parseInt(_wpCustomizeHeader.data["flex-height"],10);return h=a.get("width"),g=a.get("height"),this.headerImage=new e.HeaderTool.ImageModel,this.headerImage.set({themeWidth:j,themeHeight:k,themeFlexWidth:l,themeFlexHeight:m,imageWidth:h,imageHeight:g}),b.set("canSkipCrop",!this.headerImage.shouldBeCropped()),c=j/k,d=h,f=g,d/f>c?(k=f,j=k*c):(j=d,k=j/c),i={handles:!0,keys:!0,instance:!0,persistent:!0,imageWidth:h,imageHeight:g,x1:0,y1:0,x2:j,y2:k},m===!1&&l===!1&&(i.aspectRatio=j+":"+k),m===!1&&(i.maxHeight=k),l===!1&&(i.maxWidth=j),i},openMedia:function(a){var b=_wpMediaViewsL10n;a.preventDefault(),this.frame=wp.media({button:{text:b.selectAndCrop,close:!1},states:[new wp.media.controller.Library({title:b.chooseImage,library:wp.media.query({type:"image"}),multiple:!1,date:!1,priority:20,suggestedWidth:_wpCustomizeHeader.data.width,suggestedHeight:_wpCustomizeHeader.data.height}),new wp.media.controller.Cropper({imgSelectOptions:this.calculateImageSelectOptions})]}),this.frame.on("select",this.onSelect,this),this.frame.on("cropped",this.onCropped,this),this.frame.on("skippedcrop",this.onSkippedCrop,this),this.frame.open()},onSelect:function(){this.frame.setState("cropper")},onCropped:function(a){var b=a.post_content,c=a.attachment_id,d=a.width,e=a.height;this.setImageFromURL(b,c,d,e)},onSkippedCrop:function(a){var b=a.get("url"),c=a.get("width"),d=a.get("height");this.setImageFromURL(b,a.id,c,d)},setImageFromURL:function(a,b,c,d){var f,g={};g.url=a,g.thumbnail_url=a,g.timestamp=_.now(),b&&(g.attachment_id=b),c&&(g.width=c),d&&(g.height=d),f=new e.HeaderTool.ImageModel({header:g,choice:a.split("/").pop()}),e.HeaderTool.UploadsList.add(f),e.HeaderTool.currentHeader.set(f.toJSON()),f.save(),f.importImage()},removeImage:function(){e.HeaderTool.currentHeader.trigger("hide"),e.HeaderTool.CombinedList.trigger("control:removeImage")}}),e.ThemeControl=e.Control.extend({touchDrag:!1,isRendered:!1,renderContent:function(){var a=this,b=arguments;e.section(a.section(),function(c){c.expanded()?(e.Control.prototype.renderContent.apply(a,b),a.isRendered=!0):c.expanded.bind(function(c){c&&!a.isRendered&&(e.Control.prototype.renderContent.apply(a,b),a.isRendered=!0)})})},ready:function(){var a=this;a.container.on("touchmove",".theme",function(){a.touchDrag=!0}),a.container.on("click keydown touchend",".theme",function(c){if(!e.utils.isKeydownButNotEnterEvent(c)){if(a.touchDrag===!0)return a.touchDrag=!1;if(!b(c.target).is(".theme-actions .button")){var d=b(this).data("previewUrl");b(".wp-full-overlay").addClass("customize-loading"),window.parent.location=d}}}),a.container.on("click keydown",".theme-actions .theme-details",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),e.section(a.section()).showDetails(a.params.theme))}),a.container.on("render-screenshot",function(){var a=b(this).find("img"),c=a.data("src");c&&a.attr("src",c)})},filter:function(a){var b=this,c=b.params.theme.name+" "+b.params.theme.description+" "+b.params.theme.tags+" "+b.params.theme.author;c=c.toLowerCase().replace("-"," "),-1!==c.search(a)?b.activate():b.deactivate()}}),e.defaultConstructor=e.Setting,e.control=new e.Values({defaultConstructor:e.Control}),e.section=new e.Values({defaultConstructor:e.Section}),e.panel=new e.Values({defaultConstructor:e.Panel}),e.PreviewFrame=e.Messenger.extend({sensitivity:2e3,initialize:function(a,c){var d=b.Deferred();d.promise(this),this.container=a.container,this.signature=a.signature,b.extend(a,{channel:e.PreviewFrame.uuid()}),e.Messenger.prototype.initialize.call(this,a,c),this.add("previewUrl",a.previewUrl),this.query=b.extend(a.query||{},{customize_messenger_channel:this.channel()}),this.run(d)},run:function(a){var c=this,d=!1,f=!1;this._ready&&this.unbind("ready",this._ready),this._ready=function(){f=!0,d&&a.resolveWith(c)},this.bind("ready",this._ready),this.bind("ready",function(a){if(this.container.addClass("iframe-ready"),a){var b={panel:a.activePanels,section:a.activeSections,control:a.activeControls};_(b).each(function(a,b){e[b].each(function(b,c){var d=!(!a||!a[c]);d?b.activate():b.deactivate()})})}}),this.request=b.ajax(this.previewUrl(),{type:"POST",data:this.query,xhrFields:{withCredentials:!0}}),this.request.fail(function(){a.rejectWith(c,["request failure"])}),this.request.done(function(g){var h,i=c.request.getResponseHeader("Location"),j=c.signature;return i&&i!==c.previewUrl()?void a.rejectWith(c,["redirect",i]):"0"===g?void c.login(a):"-1"===g?void a.rejectWith(c,["cheatin"]):(h=g.lastIndexOf(j),-1===h||h<g.lastIndexOf("</html>")?void a.rejectWith(c,["unsigned"]):(g=g.slice(0,h)+g.slice(h+j.length),c.iframe=b("<iframe />",{title:e.l10n.previewIframeTitle}).appendTo(c.container),c.iframe.one("load",function(){d=!0,f?a.resolveWith(c):setTimeout(function(){a.rejectWith(c,["ready timeout"])},c.sensitivity)}),c.targetWindow(c.iframe[0].contentWindow),c.targetWindow().document.open(),c.targetWindow().document.write(g),void c.targetWindow().document.close()))})},login:function(a){var c,d=this;return c=function(){a.rejectWith(d,["logged out"])},this.triedLogin?c():void b.get(e.settings.url.ajax,{action:"logged-in"}).fail(c).done(function(f){var g;"1"!==f&&c(),g=b("<iframe />",{src:d.previewUrl(),title:e.l10n.previewIframeTitle}).hide(),g.appendTo(d.container),g.load(function(){d.triedLogin=!0,g.remove(),d.run(a)})})},destroy:function(){e.Messenger.prototype.destroy.call(this),this.request.abort(),this.iframe&&this.iframe.remove(),delete this.request,
-delete this.iframe,delete this.targetWindow}}),function(){var a=0;e.PreviewFrame.uuid=function(){return"preview-"+a++}}(),e.setDocumentTitle=function(a){var b,c;b=e.settings.documentTitleTmpl,c=b.replace("%s",a),document.title=c,e.trigger("title",c)},e.Previewer=e.Messenger.extend({refreshBuffer:250,initialize:function(a,c){var d=this,f=/^https?/;b.extend(this,c||{}),this.deferred={active:b.Deferred()},this.refresh=function(a){var b,c=a.refresh,d=function(){b=null,c.call(a)};return function(){if("number"!=typeof b){if(!a.loading)return d();a.abort()}clearTimeout(b),b=setTimeout(d,a.refreshBuffer)}}(this),this.container=e.ensure(a.container),this.allowedUrls=a.allowedUrls,this.signature=a.signature,a.url=window.location.href,e.Messenger.prototype.initialize.call(this,a),this.add("scheme",this.origin()).link(this.origin).setter(function(a){var b=a.match(f);return b?b[0]:""}),this.add("previewUrl",a.previewUrl).setter(function(a){var c;return/\/wp-admin(\/|$)/.test(a.replace(/[#?].*$/,""))?null:(b.each([a.replace(f,d.scheme()),a],function(a,e){return b.each(d.allowedUrls,function(a,b){var d;return b=b.replace(/\/+$/,""),d=e.replace(b,""),0===e.indexOf(b)&&/^([/#?]|$)/.test(d)?(c=e,!1):void 0}),c?!1:void 0}),c?c:null)}),this.previewUrl.bind(this.refresh),this.scroll=0,this.bind("scroll",function(a){this.scroll=a}),this.bind("url",this.previewUrl),this.bind("documentTitle",function(a){e.setDocumentTitle(a)})},query:function(){},abort:function(){this.loading&&(this.loading.destroy(),delete this.loading)},refresh:function(){var a=this;this.send("loading-initiated"),this.abort(),this.loading=new e.PreviewFrame({url:this.url(),previewUrl:this.previewUrl(),query:this.query()||{},container:this.container,signature:this.signature}),this.loading.done(function(){this.bind("synced",function(){a.preview&&a.preview.destroy(),a.preview=this,delete a.loading,a.targetWindow(this.targetWindow()),a.channel(this.channel()),a.deferred.active.resolve(),a.send("active")}),this.send("sync",{scroll:a.scroll,settings:e.get()})}),this.loading.fail(function(b,c){a.send("loading-failed"),"redirect"===b&&c&&a.previewUrl(c),"logged out"===b&&(a.preview&&(a.preview.destroy(),delete a.preview),a.login().done(a.refresh)),"cheatin"===b&&a.cheatin()})},login:function(){var a,c,d,f=this;return this._login?this._login:(a=b.Deferred(),this._login=a.promise(),c=new e.Messenger({channel:"login",url:e.settings.url.login}),d=b("<iframe />",{src:e.settings.url.login,title:e.l10n.loginIframeTitle}).appendTo(this.container),c.targetWindow(d[0].contentWindow),c.bind("login",function(){var b=f.refreshNonces();b.always(function(){d.remove(),c.destroy(),delete f._login}),b.done(function(){a.resolve()}),b.fail(function(){f.cheatin(),a.reject()})}),this._login)},cheatin:function(){b(document.body).empty().addClass("cheatin").append("<p>"+e.l10n.cheatin+"</p>")},refreshNonces:function(){var a,c=b.Deferred();return c.promise(),a=wp.ajax.post("customize_refresh_nonces",{wp_customize:"on",theme:e.settings.theme.stylesheet}),a.done(function(a){e.trigger("nonce-refresh",a),c.resolve()}),a.fail(function(){c.reject()}),c}}),e.controlConstructor={color:e.ColorControl,media:e.MediaControl,upload:e.UploadControl,image:e.ImageControl,cropped_image:e.CroppedImageControl,site_icon:e.SiteIconControl,header:e.HeaderControl,background:e.BackgroundControl,theme:e.ThemeControl},e.panelConstructor={},e.sectionConstructor={themes:e.ThemesSection},b(function(){if(e.settings=window._wpCustomizeSettings,e.l10n=window._wpCustomizeControlsL10n,e.settings&&b.support.postMessage&&(b.support.cors||!e.settings.isCrossDomain)){var a,c,d=b(document.body),f=d.children(".wp-full-overlay"),g=b("#customize-info .panel-title.site-title"),h=b(".customize-controls-close"),i=b("#save");b("#customize-controls").on("keydown",function(a){var c=13===a.which,d=b(a.target);c&&(d.is("input:not([type=button])")||d.is("select"))&&a.preventDefault()}),b(".customize-info").find("> .accordion-section-title .customize-help-toggle").on("click keydown",function(a){if(!e.utils.isKeydownButNotEnterEvent(a)){a.preventDefault();var c=b(this).closest(".accordion-section"),d=c.find(".customize-panel-description:first");c.hasClass("cannot-expand")||(c.hasClass("open")?(c.toggleClass("open"),d.slideUp(e.Panel.prototype.defaultExpandedArguments.duration),b(this).attr("aria-expanded",!1)):(d.slideDown(e.Panel.prototype.defaultExpandedArguments.duration),c.toggleClass("open"),b(this).attr("aria-expanded",!0)))}}),e.previewer=new e.Previewer({container:"#customize-preview",form:"#customize-controls",previewUrl:e.settings.url.preview,allowedUrls:e.settings.url.allowed,signature:"WP_CUSTOMIZER_SIGNATURE"},{nonce:e.settings.nonce,query:function(){var a={};return e.each(function(b,c){b._dirty&&(a[c]=b())}),{wp_customize:"on",theme:e.settings.theme.stylesheet,customized:JSON.stringify(a),nonce:this.nonce.preview}},save:function(){var a,c,f=this,g=e.state("processing");d.addClass("saving"),c=function(){var a,c;c=b.extend(f.query(),{nonce:f.nonce.save}),a=wp.ajax.post("customize_save",c),e.trigger("save",a),a.always(function(){d.removeClass("saving")}),a.fail(function(a){"0"===a?a="not_logged_in":"-1"===a&&(a="invalid_nonce"),"invalid_nonce"===a?f.cheatin():"not_logged_in"===a&&(f.preview.iframe.hide(),f.login().done(function(){f.save(),f.preview.iframe.show()})),e.trigger("error",a)}),a.done(function(a){e.each(function(a){a._dirty=!1}),e.trigger("saved",a)})},0===g()?c():(a=function(){0===g()&&(e.state.unbind("change",a),c())},e.state.bind("change",a))}}),e.previewer.bind("nonce",function(a){b.extend(this.nonce,a)}),e.bind("nonce-refresh",function(a){b.extend(e.settings.nonce,a),b.extend(e.previewer.nonce,a)}),b.each(e.settings.settings,function(a,b){e.create(a,a,b.value,{transport:b.transport,previewer:e.previewer,dirty:!!b.dirty})}),b.each(e.settings.panels,function(a,b){var c,d=e.panelConstructor[b.type]||e.Panel;c=new d(a,{params:b}),e.panel.add(a,c)}),b.each(e.settings.sections,function(a,b){var c,d=e.sectionConstructor[b.type]||e.Section;c=new d(a,{params:b}),e.section.add(a,c)}),b.each(e.settings.controls,function(a,b){var c,d=e.controlConstructor[b.type]||e.Control;c=new d(a,{params:b,previewer:e.previewer}),e.control.add(a,c)}),_.each(["panel","section","control"],function(a){var b,c=e.settings.autofocus[a];c&&e[a](c)&&(b=e[a](c),b.deferred.embedded.done(function(){e.previewer.deferred.active.done(function(){b.focus()})}))}),e.reflowPaneContents=_.bind(function(){var a,c,d,f=[],g=!1;document.activeElement&&(c=b(document.activeElement)),e.panel.each(function(b){var c=b.sections(),d=_.pluck(c,"container");f.push(b),a=b.container.find("ul:first"),e.utils.areElementListsEqual(d,a.children("[id]"))||(_(c).each(function(b){a.append(b.container)}),g=!0)}),e.section.each(function(b){var c=b.controls(),d=_.pluck(c,"container");b.panel()||f.push(b),a=b.container.find("ul:first"),e.utils.areElementListsEqual(d,a.children("[id]"))||(_(c).each(function(b){a.append(b.container)}),g=!0)}),f.sort(e.utils.prioritySort),d=_.pluck(f,"container"),a=b("#customize-theme-controls").children("ul"),e.utils.areElementListsEqual(d,a.children())||(_(f).each(function(b){a.append(b.container)}),g=!0),e.panel.each(function(a){var b=a.active();a.active.callbacks.fireWith(a.active,[b,b])}),e.section.each(function(a){var b=a.active();a.active.callbacks.fireWith(a.active,[b,b])}),g&&c&&c.focus(),e.trigger("pane-contents-reflowed")},e),e.bind("ready",e.reflowPaneContents),e.reflowPaneContents=_.debounce(e.reflowPaneContents,100),b([e.panel,e.section,e.control]).each(function(a,b){b.bind("add",e.reflowPaneContents),b.bind("change",e.reflowPaneContents),b.bind("remove",e.reflowPaneContents)}),e.previewer.previewUrl()?e.previewer.refresh():e.previewer.previewUrl(e.settings.url.home),function(){var a=new e.Values,b=a.create("saved"),c=a.create("activated"),d=a.create("processing");a.bind("change",function(){c()?b()?(i.val(e.l10n.saved).prop("disabled",!0),h.find(".screen-reader-text").text(e.l10n.close)):(i.val(e.l10n.save).prop("disabled",!1),h.find(".screen-reader-text").text(e.l10n.cancel)):(i.val(e.l10n.activate).prop("disabled",!1),h.find(".screen-reader-text").text(e.l10n.cancel))}),b(!0),c(e.settings.theme.active),d(0),e.bind("change",function(){a("saved").set(!1)}),e.bind("saved",function(){a("saved").set(!0),a("activated").set(!0)}),c.bind(function(a){a&&e.trigger("activated")}),e.state=a}(),i.click(function(a){e.previewer.save(),a.preventDefault()}).keydown(function(a){9!==a.which&&(13===a.which&&e.previewer.save(),a.preventDefault())}),h.keydown(function(a){9!==a.which&&(13===a.which&&this.click(),a.preventDefault())}),b(".collapse-sidebar").on("click",function(){"true"===b(this).attr("aria-expanded")?b(this).attr({"aria-expanded":"false","aria-label":e.l10n.expandSidebar}):b(this).attr({"aria-expanded":"true","aria-label":e.l10n.collapseSidebar}),f.toggleClass("collapsed").toggleClass("expanded")}),b(".customize-controls-preview-toggle").on("click keydown",function(a){e.utils.isKeydownButNotEnterEvent(a)||(f.toggleClass("preview-only"),a.preventDefault())}),g.length&&b("#customize-control-blogname input").on("input",function(){g.text(this.value)}),a=new e.Messenger({url:e.settings.url.parent,channel:"loader"}),a.bind("back",function(){h.on("click.customize-controls-close",function(b){b.preventDefault(),a.send("close")})}),b(window).on("beforeunload",function(){return e.state("saved")()?void 0:(setTimeout(function(){f.removeClass("customize-loading")},1),e.l10n.saveAlert)}),b.each(["saved","change"],function(b,c){e.bind(c,function(){a.send(c)})}),e.bind("activated",function(){a.targetWindow()?a.send("activated",e.settings.url.activated):e.settings.url.activated&&(window.location=e.settings.url.activated)}),e.bind("title",function(b){a.send("title",b)}),a.send("ready"),b.each({background_image:{controls:["background_repeat","background_position_x","background_attachment"],callback:function(a){return!!a}},show_on_front:{controls:["page_on_front","page_for_posts"],callback:function(a){return"page"===a}},header_textcolor:{controls:["header_textcolor"],callback:function(a){return"blank"!==a}}},function(a,c){e(a,function(a){b.each(c.controls,function(b,d){e.control(d,function(b){var d=function(a){b.container.toggle(c.callback(a))};d(a.get()),a.bind(d)})})})}),e.control("display_header_text",function(a){var b="";a.elements[0].unsync(e("header_textcolor")),a.element=new e.Element(a.container.find("input")),a.element.set("blank"!==a.setting()),a.element.bind(function(c){c||(b=e("header_textcolor").get()),a.setting.set(c?b:"blank")}),a.setting.bind(function(b){a.element.set("blank"!==b)})}),e("show_on_front","page_on_front",function(a,b){var c=function(){"page"===a()&&parseInt(b(),10)>0&&e.previewer.previewUrl.set(e.settings.url.home)};a.bind(c),b.bind(c)}),e("page_for_posts",function(a){a.bind(function(a){a=parseInt(a,10),a>0&&e.previewer.previewUrl.set(e.settings.url.home+"?page_id="+a)})}),e.trigger("ready"),c=h,c.focus(),setTimeout(function(){c.focus()},200)}})}(wp,jQuery);
\ No newline at end of file
+!function(a,b){var c,d,e=wp.customize;e.Setting=e.Value.extend({initialize:function(a,b,c){e.Value.prototype.initialize.call(this,b,c),this.id=a,this.transport=this.transport||"refresh",this._dirty=c.dirty||!1,this.bind(this.preview)},preview:function(){switch(this.transport){case"refresh":return this.previewer.refresh();case"postMessage":return this.previewer.send("setting",[this.id,this()])}}}),e.utils={},e.utils.bubbleChildValueChanges=function(a,c){b.each(c,function(b,c){a[c].bind(function(b,c){a.parent&&b!==c&&a.parent.trigger("change",a)})})},d=function(a){var b,c,d;b=this,a=a||{},d=function(){var a;a=b.extended(e.Panel)&&b.expanded&&b.expanded()?b.container.find("ul.control-panel-content"):b.extended(e.Section)&&b.expanded&&b.expanded()?b.container.find("ul.accordion-section-content"):b.container,a.find("input, select, textarea, button, object, a[href], [tabindex]").filter(":visible").first().focus()},a.completeCallback?(c=a.completeCallback,a.completeCallback=function(){d(),c()}):a.completeCallback=d,b.expand?b.expand(a):a.completeCallback()},e.utils.prioritySort=function(a,b){return a.priority()===b.priority()&&"number"==typeof a.params.instanceNumber&&"number"==typeof b.params.instanceNumber?a.params.instanceNumber-b.params.instanceNumber:a.priority()-b.priority()},e.utils.isKeydownButNotEnterEvent=function(a){return"keydown"===a.type&&13!==a.which},e.utils.areElementListsEqual=function(a,c){var d=a.length===c.length&&-1===_.indexOf(_.map(_.zip(a,c),function(a){return b(a[0]).is(a[1])}),!1);return d},c=e.Class.extend({defaultActiveArguments:{duration:"fast",completeCallback:b.noop},defaultExpandedArguments:{duration:"fast",completeCallback:b.noop},containerType:"container",defaults:{title:"",description:"",priority:100,type:"default",content:null,active:!0,instanceNumber:null},initialize:function(a,c){var d=this;d.id=a,c=c||{},c.params=_.defaults(c.params||{},d.defaults),b.extend(d,c),d.templateSelector="customize-"+d.containerType+"-"+d.params.type,d.container=b(d.params.content),0===d.container.length&&(d.container=b(d.getContainer())),d.deferred={embedded:new b.Deferred},d.priority=new e.Value,d.active=new e.Value,d.activeArgumentsQueue=[],d.expanded=new e.Value,d.expandedArgumentsQueue=[],d.active.bind(function(a){var c=d.activeArgumentsQueue.shift();c=b.extend({},d.defaultActiveArguments,c),a=a&&d.isContextuallyActive(),d.onChangeActive(a,c)}),d.expanded.bind(function(a){var c=d.expandedArgumentsQueue.shift();c=b.extend({},d.defaultExpandedArguments,c),d.onChangeExpanded(a,c)}),d.deferred.embedded.done(function(){d.attachEvents()}),e.utils.bubbleChildValueChanges(d,["priority","active"]),d.priority.set(d.params.priority),d.active.set(d.params.active),d.expanded.set(!1)},ready:function(){},_children:function(a,b){var c=this,d=[];return e[b].each(function(b){b[a].get()===c.id&&d.push(b)}),d.sort(e.utils.prioritySort),d},isContextuallyActive:function(){throw new Error("Container.isContextuallyActive() must be overridden in a subclass.")},onChangeActive:function(a,c){var d,f,g=this;return c.unchanged?void(c.completeCallback&&c.completeCallback()):(d="resolved"===e.previewer.deferred.active.state()?c.duration:0,g.extended(e.Panel)&&(e.panel.each(function(a){a!==g&&a.expanded()&&(f=a,d=0)}),a||_.each(g.sections(),function(a){a.collapse({duration:0})})),b.contains(document,g.container[0])?a?g.container.stop(!0,!0).slideDown(d,c.completeCallback):g.expanded()?g.collapse({duration:d,completeCallback:function(){g.container.stop(!0,!0).slideUp(d,c.completeCallback)}}):g.container.stop(!0,!0).slideUp(d,c.completeCallback):(g.container.toggle(a),c.completeCallback&&c.completeCallback()),void(f&&f._recalculateTopMargin()))},_toggleActive:function(a,b){var c=this;return b=b||{},a&&this.active.get()||!a&&!this.active.get()?(b.unchanged=!0,c.onChangeActive(c.active.get(),b),!1):(b.unchanged=!1,this.activeArgumentsQueue.push(b),this.active.set(a),!0)},activate:function(a){return this._toggleActive(!0,a)},deactivate:function(a){return this._toggleActive(!1,a)},onChangeExpanded:function(){throw new Error("Must override with subclass.")},_toggleExpanded:function(a,b){var c,d=this;return b=b||{},c=b.completeCallback,a&&!d.active()?!1:(b.completeCallback=function(){c&&c.apply(d,arguments),a?d.container.trigger("expanded"):d.container.trigger("collapsed")},a&&d.expanded.get()||!a&&!d.expanded.get()?(b.unchanged=!0,d.onChangeExpanded(d.expanded.get(),b),!1):(b.unchanged=!1,d.expandedArgumentsQueue.push(b),d.expanded.set(a),!0))},expand:function(a){return this._toggleExpanded(!0,a)},collapse:function(a){return this._toggleExpanded(!1,a)},focus:d,getContainer:function(){var a,c=this;return a=0!==b("#tmpl-"+c.templateSelector).length?wp.template(c.templateSelector):wp.template("customize-"+c.containerType+"-default"),a&&c.container?b.trim(a(c.params)):"<li></li>"}}),e.Section=c.extend({containerType:"section",defaults:{title:"",description:"",priority:100,type:"default",content:null,active:!0,instanceNumber:null,panel:null,customizeAction:""},initialize:function(a,d){var f=this;c.prototype.initialize.call(f,a,d),f.id=a,f.panel=new e.Value,f.panel.bind(function(a){b(f.container).toggleClass("control-subsection",!!a)}),f.panel.set(f.params.panel||""),e.utils.bubbleChildValueChanges(f,["panel"]),f.embed(),f.deferred.embedded.done(function(){f.ready()})},embed:function(){var a,c=this;a=function(a){var d;a?e.panel(a,function(a){a.deferred.embedded.done(function(){d=a.container.find("ul:first"),c.container.parent().is(d)||d.append(c.container),c.deferred.embedded.resolve()})}):(d=b("#customize-theme-controls").children("ul"),c.container.parent().is(d)||d.append(c.container),c.deferred.embedded.resolve())},c.panel.bind(a),a(c.panel.get()),c.deferred.embedded.done(function(){e.bind("pane-contents-reflowed",_.debounce(function(){c._recalculateTopMargin()},100))})},attachEvents:function(){var a=this;a.container.find(".accordion-section-title, .customize-section-back").on("click keydown",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),a.expanded()?a.collapse():a.expand())})},isContextuallyActive:function(){var a=this,b=a.controls(),c=0;return _(b).each(function(a){a.active()&&(c+=1)}),0!==c},controls:function(){return this._children("section","control")},onChangeExpanded:function(a,c){var d,f,g,h,i=this,j=i.container.closest(".wp-full-overlay-sidebar-content"),k=i.container.find(".accordion-section-content"),l=i.container.closest(".wp-full-overlay"),m=i.container.find(".customize-section-back"),n=i.container.find(".accordion-section-title").first(),o=b("#customize-header-actions").height();a&&!i.container.hasClass("open")?(c.unchanged?f=c.completeCallback:(j.scrollTop(0),d=function(){var a,b;a=window.matchMedia||window.msMatchMedia,b=90,a&&a("(max-width: 640px)").matches&&(b=45),k.css("height",window.innerHeight-b)},f=function(){i.container.addClass("open"),l.addClass("section-open"),g=k.offset().top,h=j.scrollTop(),k.css("margin-top",o-g-h),d(),n.attr("tabindex","-1"),m.attr("tabindex","0"),m.focus(),c.completeCallback&&c.completeCallback(),b(window).on("resize.customizer-section",_.debounce(d,100)),i._recalculateTopMargin()}),c.allowMultiple||e.section.each(function(a){a!==i&&a.collapse({duration:c.duration})}),i.panel()?e.panel(i.panel()).expand({duration:c.duration,completeCallback:f}):(e.panel.each(function(a){a.collapse()}),f())):!a&&i.container.hasClass("open")?(i.container.removeClass("open"),l.removeClass("section-open"),k.css("margin-top",""),j.scrollTop(0),m.attr("tabindex","-1"),n.attr("tabindex","0"),n.focus(),c.completeCallback&&c.completeCallback(),b(window).off("resize.customizer-section")):c.completeCallback&&c.completeCallback()},_recalculateTopMargin:function(){var a,c,d,e=this;a=e.container.find(".accordion-section-content"),0!==a.length&&(d=b("#customize-header-actions").height(),c=a.offset().top-d,c>0&&a.css("margin-top",parseInt(a.css("margin-top"),10)-c))}}),e.ThemesSection=e.Section.extend({currentTheme:"",overlay:"",template:"",screenshotQueue:null,$window:b(window),initialize:function(){return this.$customizeSidebar=b(".wp-full-overlay-sidebar-content:first"),e.Section.prototype.initialize.apply(this,arguments)},ready:function(){var a=this;a.overlay=a.container.find(".theme-overlay"),a.template=wp.template("customize-themes-details-view"),b("body").on("keyup",function(b){a.overlay.find(".theme-wrap").is(":visible")&&(39===b.keyCode&&a.nextTheme(),37===b.keyCode&&a.previousTheme(),27===b.keyCode&&a.closeDetails())}),_.bindAll(this,"renderScreenshots")},isContextuallyActive:function(){return this.active()},attachEvents:function(){var a=this;a.container.find(".change-theme, .customize-theme").on("click keydown",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),a.expanded()?a.collapse():a.expand())}),a.container.on("click keydown",".left",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),a.previousTheme())}),a.container.on("click keydown",".right",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),a.nextTheme())}),a.container.on("click keydown",".theme-backdrop, .close",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),a.closeDetails())});var b=_.throttle(_.bind(a.renderScreenshots,this),100);a.container.on("input","#themes-filter",function(c){var d,e=c.currentTarget.value.toLowerCase().trim().replace("-"," "),f=a.controls();_.each(f,function(a){a.filter(e)}),b(),d=a.container.find("li.customize-control:visible").length,a.container.find(".theme-count").text(d)}),e.bind("ready",function(){_.each(a.controls().slice(0,3),function(a){var b,c=a.params.theme.screenshot[0];c&&(b=new Image,b.src=c)})})},onChangeExpanded:function(a,c){if(c.unchanged)return void(c.completeCallback&&c.completeCallback());var d,f,g=this,h=g.container.closest(".accordion-section"),i=h.closest(".wp-full-overlay"),j=h.closest(".wp-full-overlay-sidebar-content"),k=j.find(".open"),l=h.find(".customize-theme"),m=h.find(".change-theme"),n=h.find(".control-panel-content");a?(e.section.each(function(a){a!==g&&a.collapse({duration:c.duration})}),e.panel.each(function(a){a.collapse({duration:0})}),n.show(0,function(){d=n.offset().top,f=j.scrollTop(),n.css("margin-top",b("#customize-header-actions").height()-d-f),h.addClass("current-panel"),i.addClass("in-themes-panel"),j.scrollTop(0),_.delay(g.renderScreenshots,10),g.$customizeSidebar.on("scroll.customize-themes-section",_.throttle(g.renderScreenshots,300)),c.completeCallback&&c.completeCallback()}),l.focus()):(k.removeClass("open"),h.removeClass("current-panel"),i.removeClass("in-themes-panel"),g.$customizeSidebar.off("scroll.customize-themes-section"),n.delay(180).hide(0,function(){n.css("margin-top","inherit"),c.completeCallback&&c.completeCallback()}),l.attr("tabindex","0"),m.focus(),j.scrollTop(0))},_recalculateTopMargin:function(){e.Panel.prototype._recalculateTopMargin.call(this)},renderScreenshots:function(){var a=this;null===a.screenshotQueue&&(a.screenshotQueue=a.controls()),a.screenshotQueue.length&&(a.screenshotQueue=_.filter(a.screenshotQueue,function(b){var c=b.container.find(".theme-screenshot"),d=c.find("img");if(!d.length)return!1;if(d.is(":hidden"))return!0;var e=a.$window.scrollTop(),f=e+a.$window.height(),g=d.offset().top,h=c.height(),i=g+h,j=3*h,k=i>=e-j&&f+j>=g;return k&&b.container.trigger("render-screenshot"),!k}))},nextTheme:function(){var a=this;a.getNextTheme()&&a.showDetails(a.getNextTheme(),function(){a.overlay.find(".right").focus()})},getNextTheme:function(){var a,b;return a=e.control("theme_"+this.currentTheme),b=a.container.next("li.customize-control-theme"),b.length?(b=b[0].id.replace("customize-control-",""),a=e.control(b),a.params.theme):!1},previousTheme:function(){var a=this;a.getPreviousTheme()&&a.showDetails(a.getPreviousTheme(),function(){a.overlay.find(".left").focus()})},getPreviousTheme:function(){var a,b;return a=e.control("theme_"+this.currentTheme),b=a.container.prev("li.customize-control-theme"),b.length?(b=b[0].id.replace("customize-control-",""),a=e.control(b),a.params.theme):!1},updateLimits:function(){this.getNextTheme()||this.overlay.find(".right").addClass("disabled"),this.getPreviousTheme()||this.overlay.find(".left").addClass("disabled")},showDetails:function(a,c){var d=this;c=c||function(){},d.currentTheme=a.id,d.overlay.html(d.template(a)).fadeIn("fast").focus(),b("body").addClass("modal-open"),d.containFocus(d.overlay),d.updateLimits(),c()},closeDetails:function(){b("body").removeClass("modal-open"),this.overlay.fadeOut("fast"),e.control("theme_"+this.currentTheme).focus()},containFocus:function(a){var c;a.on("keydown",function(d){return 9===d.keyCode?(c=b(":tabbable",a),c.last()[0]!==d.target||d.shiftKey?c.first()[0]===d.target&&d.shiftKey?(c.last().focus(),!1):void 0:(c.first().focus(),!1)):void 0})}}),e.Panel=c.extend({containerType:"panel",initialize:function(a,b){var d=this;c.prototype.initialize.call(d,a,b),d.embed(),d.deferred.embedded.done(function(){d.ready()})},embed:function(){var a=this,c=b("#customize-theme-controls > ul");a.container.parent().is(c)||(c.append(a.container),a.renderContent()),e.bind("pane-contents-reflowed",_.debounce(function(){a._recalculateTopMargin()},100)),a.deferred.embedded.resolve()},attachEvents:function(){var a,c=this;c.container.find(".accordion-section-title").on("click keydown",function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),c.expanded()||c.expand())}),c.container.find(".customize-panel-back").on("click keydown",function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),c.expanded()&&c.collapse())}),a=c.container.find(".panel-meta:first"),a.find("> .accordion-section-title .customize-help-toggle").on("click keydown",function(d){if(!e.utils.isKeydownButNotEnterEvent(d)&&(d.preventDefault(),a=c.container.find(".panel-meta"),!a.hasClass("cannot-expand"))){var f=a.find(".customize-panel-description:first");a.hasClass("open")?(a.toggleClass("open"),f.slideUp(c.defaultExpandedArguments.duration),b(this).attr("aria-expanded",!1)):(f.slideDown(c.defaultExpandedArguments.duration),a.toggleClass("open"),b(this).attr("aria-expanded",!0))}})},sections:function(){return this._children("panel","section")},isContextuallyActive:function(){var a=this,b=a.sections(),c=0;return _(b).each(function(a){a.active()&&a.isContextuallyActive()&&(c+=1)}),0!==c},onChangeExpanded:function(a,c){if(c.unchanged)return void(c.completeCallback&&c.completeCallback());var d,f,g=this,h=g.container.closest(".accordion-section"),i=h.closest(".wp-full-overlay"),j=h.closest(".wp-full-overlay-sidebar-content"),k=j.find(".open"),l=i.find("#customize-theme-controls > ul > .accordion-section > .accordion-section-title"),m=h.find(".customize-panel-back"),n=h.find(".accordion-section-title").first(),o=h.find(".control-panel-content"),p=b("#customize-header-actions").height();a?(e.section.each(function(a){g.id!==a.panel()&&a.collapse({duration:0})}),e.panel.each(function(a){g!==a&&a.collapse({duration:0})}),o.show(0,function(){o.parent().show(),d=o.offset().top,f=j.scrollTop(),o.css("margin-top",p-d-f),h.addClass("current-panel"),i.addClass("in-sub-panel"),j.scrollTop(0),c.completeCallback&&c.completeCallback()}),l.attr("tabindex","-1"),m.attr("tabindex","0"),m.focus(),g._recalculateTopMargin()):(k.removeClass("open"),h.removeClass("current-panel"),i.removeClass("in-sub-panel"),o.delay(180).hide(0,function(){o.css("margin-top","inherit"),c.completeCallback&&c.completeCallback()}),l.attr("tabindex","0"),m.attr("tabindex","-1"),n.focus(),j.scrollTop(0))},_recalculateTopMargin:function(){var a,c,d,e=this;a=b("#customize-header-actions").height(),d=e.container.closest(".accordion-section"),c=d.find(".control-panel-content"),c.css("margin-top",parseInt(c.css("margin-top"),10)-(c.offset().top-a))},renderContent:function(){var a,c=this;a=0!==b("#tmpl-"+c.templateSelector+"-content").length?wp.template(c.templateSelector+"-content"):wp.template("customize-panel-default-content"),a&&c.container&&c.container.find(".accordion-sub-container").html(a(c.params))}}),e.Control=e.Class.extend({defaultActiveArguments:{duration:"fast",completeCallback:b.noop},initialize:function(a,c){var d,f,g,h=this;h.params={},b.extend(h,c||{}),h.id=a,h.selector="#customize-control-"+a.replace(/\]/g,"").replace(/\[/g,"-"),h.templateSelector="customize-control-"+h.params.type+"-content",h.container=b(h.params.content?h.params.content:h.selector),h.deferred={embedded:new b.Deferred},h.section=new e.Value,h.priority=new e.Value,h.active=new e.Value,h.activeArgumentsQueue=[],h.elements=[],d=h.container.find("[data-customize-setting-link]"),f={},d.each(function(){var a,c=b(this);if(c.is(":radio")){if(a=c.prop("name"),f[a])return;f[a]=!0,c=d.filter('[name="'+a+'"]')}e(c.data("customizeSettingLink"),function(a){var b=new e.Element(c);h.elements.push(b),b.sync(a),b.set(a())})}),h.active.bind(function(a){var c=h.activeArgumentsQueue.shift();c=b.extend({},h.defaultActiveArguments,c),h.onChangeActive(a,c)}),h.section.set(h.params.section),h.priority.set(isNaN(h.params.priority)?10:h.params.priority),h.active.set(h.params.active),e.utils.bubbleChildValueChanges(h,["section","priority","active"]),g=b.map(h.params.settings,function(a){return a}),e.apply(e,g.concat(function(){var a;h.settings={};for(a in h.params.settings)h.settings[a]=e(h.params.settings[a]);h.setting=h.settings["default"]||null,h.embed()})),h.deferred.embedded.done(function(){h.ready()})},embed:function(){var a,b=this;a=function(a){var c;a&&e.section(a,function(a){a.deferred.embedded.done(function(){c=a.container.find("ul:first"),b.container.parent().is(c)||(c.append(b.container),b.renderContent()),b.deferred.embedded.resolve()})})},b.section.bind(a),a(b.section.get())},ready:function(){},expand:function(a){e.section(this.section()).expand(a)},focus:d,onChangeActive:function(a,c){return c.unchanged?void(c.completeCallback&&c.completeCallback()):void(b.contains(document,this.container[0])?a?this.container.slideDown(c.duration,c.completeCallback):this.container.slideUp(c.duration,c.completeCallback):(this.container.toggle(a),c.completeCallback&&c.completeCallback()))},toggle:function(a){return this.onChangeActive(a,this.defaultActiveArguments)},activate:c.prototype.activate,deactivate:c.prototype.deactivate,_toggleActive:c.prototype._toggleActive,dropdownInit:function(){var a=this,b=this.container.find(".dropdown-status"),c=this.params,d=!1,f=function(a){"string"==typeof a&&c.statuses&&c.statuses[a]?b.html(c.statuses[a]).show():b.hide()};this.container.on("click keydown",".dropdown",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),d||a.container.toggleClass("open"),a.container.hasClass("open")&&a.container.parent().parent().find("li.library-selected").focus(),d=!0,setTimeout(function(){d=!1},400))}),this.setting.bind(f),f(this.setting())},renderContent:function(){var a,c=this;0!==b("#tmpl-"+c.templateSelector).length&&(a=wp.template(c.templateSelector),a&&c.container&&c.container.html(a(c.params)))}}),e.ColorControl=e.Control.extend({ready:function(){var a=this,b=this.container.find(".color-picker-hex");b.val(a.setting()).wpColorPicker({change:function(){a.setting.set(b.wpColorPicker("color"))},clear:function(){a.setting.set("")}}),this.setting.bind(function(a){b.val(a),b.wpColorPicker("color",a)})}}),e.MediaControl=e.Control.extend({ready:function(){var a=this;_.bindAll(a,"restoreDefault","removeFile","openFrame","select","pausePlayer"),a.container.on("click keydown",".upload-button",a.openFrame),a.container.on("click keydown",".upload-button",a.pausePlayer),a.container.on("click keydown",".thumbnail-image img",a.openFrame),a.container.on("click keydown",".default-button",a.restoreDefault),a.container.on("click keydown",".remove-button",a.pausePlayer),a.container.on("click keydown",".remove-button",a.removeFile),a.container.on("click keydown",".remove-button",a.cleanupPlayer),e.section(a.section()).container.on("expanded",function(){a.player&&a.player.setControlsSize()}).on("collapsed",function(){a.pausePlayer()}),a.setting.bind(function(){a.renderContent()})},pausePlayer:function(){this.player&&this.player.pause()},cleanupPlayer:function(){this.player&&wp.media.mixin.removePlayer(this.player)},openFrame:function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),this.frame||this.initFrame(),this.frame.open())},initFrame:function(){this.frame=wp.media({button:{text:this.params.button_labels.frame_button},states:[new wp.media.controller.Library({title:this.params.button_labels.frame_title,library:wp.media.query({type:this.params.mime_type}),multiple:!1,date:!1})]}),this.frame.on("select",this.select)},select:function(){var a,b=this.frame.state().get("selection").first().toJSON(),c=window._wpmejsSettings||{};this.params.attachment=b,this.setting(b.id),a=this.container.find("audio, video").get(0),a?this.player=new MediaElementPlayer(a,c):this.cleanupPlayer()},restoreDefault:function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),this.params.attachment=this.params.defaultAttachment,this.setting(this.params.defaultAttachment.url))},removeFile:function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),this.params.attachment={},this.setting(""),this.renderContent())}}),e.UploadControl=e.MediaControl.extend({select:function(){var a,b=this.frame.state().get("selection").first().toJSON(),c=window._wpmejsSettings||{};this.params.attachment=b,this.setting(b.url),a=this.container.find("audio, video").get(0),a?this.player=new MediaElementPlayer(a,c):this.cleanupPlayer()},success:function(){},removerVisibility:function(){}}),e.ImageControl=e.UploadControl.extend({thumbnailSrc:function(){}}),e.BackgroundControl=e.UploadControl.extend({ready:function(){e.UploadControl.prototype.ready.apply(this,arguments)},select:function(){e.UploadControl.prototype.select.apply(this,arguments),wp.ajax.post("custom-background-add",{nonce:_wpCustomizeBackground.nonces.add,wp_customize:"on",theme:e.settings.theme.stylesheet,attachment_id:this.params.attachment.id})}}),e.CroppedImageControl=e.MediaControl.extend({openFrame:function(a){e.utils.isKeydownButNotEnterEvent(a)||(this.initFrame(),this.frame.setState("library").open())},initFrame:function(){var a=_wpMediaViewsL10n;this.frame=wp.media({button:{text:a.select,close:!1},states:[new wp.media.controller.Library({title:this.params.button_labels.frame_title,library:wp.media.query({type:"image"}),multiple:!1,date:!1,priority:20,suggestedWidth:this.params.width,suggestedHeight:this.params.height}),new wp.media.controller.CustomizeImageCropper({imgSelectOptions:this.calculateImageSelectOptions,control:this})]}),this.frame.on("select",this.onSelect,this),this.frame.on("cropped",this.onCropped,this),this.frame.on("skippedcrop",this.onSkippedCrop,this)},onSelect:function(){var a=this.frame.state().get("selection").first().toJSON();this.params.width!==a.width||this.params.height!==a.height||this.params.flex_width||this.params.flex_height?this.frame.setState("cropper"):(this.setImageFromAttachment(a),this.frame.close())},onCropped:function(a){this.setImageFromAttachment(a)},calculateImageSelectOptions:function(a,b){var c,d,e,f=b.get("control"),g=!!parseInt(f.params.flex_width,10),h=!!parseInt(f.params.flex_height,10),i=a.get("width"),j=a.get("height"),k=parseInt(f.params.width,10),l=parseInt(f.params.height,10),m=k/l,n=i,o=j;return b.set("canSkipCrop",!f.mustBeCropped(g,h,k,l,i,j)),n/o>m?(l=o,k=l*m):(k=n,l=k/m),c=(n-k)/2,d=(o-l)/2,e={handles:!0,keys:!0,instance:!0,persistent:!0,imageWidth:i,imageHeight:j,x1:c,y1:d,x2:k+c,y2:l+d},h===!1&&g===!1&&(e.aspectRatio=k+":"+l),h===!1&&(e.maxHeight=l),g===!1&&(e.maxWidth=k),e},mustBeCropped:function(a,b,c,d,e,f){return!0===a&&!0===b?!1:!0===a&&d===f?!1:!0===b&&c===e?!1:c===e&&d===f?!1:c>=e?!1:!0},onSkippedCrop:function(){var a=this.frame.state().get("selection").first().toJSON();this.setImageFromAttachment(a)},setImageFromAttachment:function(a){this.params.attachment=a,this.setting(a.id)}}),e.SiteIconControl=e.CroppedImageControl.extend({initFrame:function(){var a=_wpMediaViewsL10n;this.frame=wp.media({button:{text:a.select,close:!1},states:[new wp.media.controller.Library({title:this.params.button_labels.frame_title,library:wp.media.query({type:"image"}),multiple:!1,date:!1,priority:20,suggestedWidth:this.params.width,suggestedHeight:this.params.height}),new wp.media.controller.SiteIconCropper({imgSelectOptions:this.calculateImageSelectOptions,control:this})]}),this.frame.on("select",this.onSelect,this),this.frame.on("cropped",this.onCropped,this),this.frame.on("skippedcrop",this.onSkippedCrop,this)},onSelect:function(){var a=this.frame.state().get("selection").first().toJSON(),b=this;this.params.width!==a.width||this.params.height!==a.height||this.params.flex_width||this.params.flex_height?this.frame.setState("cropper"):wp.ajax.post("crop-image",{nonce:a.nonces.edit,id:a.id,context:"site-icon",cropDetails:{x1:0,y1:0,width:this.params.width,height:this.params.height,dst_width:this.params.width,dst_height:this.params.height}}).done(function(a){b.setImageFromAttachment(a),b.frame.close()}).fail(function(){b.trigger("content:error:crop")})},setImageFromAttachment:function(a){var c,d=["site_icon-32","thumbnail","full"];_.each(d,function(b){c||_.isUndefined(a.sizes[b])||(c=a.sizes[b])}),this.params.attachment=a,this.setting(a.id),b('link[sizes="32x32"]').attr("href",c.url)},removeFile:function(a){e.utils.isKeydownButNotEnterEvent(a)||(a.preventDefault(),this.params.attachment={},this.setting(""),this.renderContent(),b('link[rel="icon"]').attr("href",""))}}),e.HeaderControl=e.Control.extend({ready:function(){this.btnRemove=b("#customize-control-header_image .actions .remove"),this.btnNew=b("#customize-control-header_image .actions .new"),_.bindAll(this,"openMedia","removeImage"),this.btnNew.on("click",this.openMedia),this.btnRemove.on("click",this.removeImage),e.HeaderTool.currentHeader=this.getInitialHeaderImage(),new e.HeaderTool.CurrentView({model:e.HeaderTool.currentHeader,el:"#customize-control-header_image .current .container"}),new e.HeaderTool.ChoiceListView({collection:e.HeaderTool.UploadsList=new e.HeaderTool.ChoiceList,el:"#customize-control-header_image .choices .uploaded .list"}),new e.HeaderTool.ChoiceListView({collection:e.HeaderTool.DefaultsList=new e.HeaderTool.DefaultsList,el:"#customize-control-header_image .choices .default .list"}),e.HeaderTool.combinedList=e.HeaderTool.CombinedList=new e.HeaderTool.CombinedList([e.HeaderTool.UploadsList,e.HeaderTool.DefaultsList])},getInitialHeaderImage:function(){if(!e.get().header_image||!e.get().header_image_data||_.contains(["remove-header","random-default-image","random-uploaded-image"],e.get().header_image))return new e.HeaderTool.ImageModel;var a=_.find(_wpCustomizeHeader.uploads,function(a){return a.attachment_id===e.get().header_image_data.attachment_id});return a||(a={url:e.get().header_image,thumbnail_url:e.get().header_image,attachment_id:e.get().header_image_data.attachment_id}),new e.HeaderTool.ImageModel({header:a,choice:a.url.split("/").pop()})},calculateImageSelectOptions:function(a,b){var c,d,f,g,h,i,j=parseInt(_wpCustomizeHeader.data.width,10),k=parseInt(_wpCustomizeHeader.data.height,10),l=!!parseInt(_wpCustomizeHeader.data["flex-width"],10),m=!!parseInt(_wpCustomizeHeader.data["flex-height"],10);return h=a.get("width"),g=a.get("height"),this.headerImage=new e.HeaderTool.ImageModel,this.headerImage.set({themeWidth:j,themeHeight:k,themeFlexWidth:l,themeFlexHeight:m,imageWidth:h,imageHeight:g}),b.set("canSkipCrop",!this.headerImage.shouldBeCropped()),c=j/k,d=h,f=g,d/f>c?(k=f,j=k*c):(j=d,k=j/c),i={handles:!0,keys:!0,instance:!0,persistent:!0,imageWidth:h,imageHeight:g,x1:0,y1:0,x2:j,y2:k},m===!1&&l===!1&&(i.aspectRatio=j+":"+k),m===!1&&(i.maxHeight=k),l===!1&&(i.maxWidth=j),i},openMedia:function(a){var b=_wpMediaViewsL10n;a.preventDefault(),this.frame=wp.media({button:{text:b.selectAndCrop,close:!1},states:[new wp.media.controller.Library({title:b.chooseImage,library:wp.media.query({type:"image"}),multiple:!1,date:!1,priority:20,suggestedWidth:_wpCustomizeHeader.data.width,suggestedHeight:_wpCustomizeHeader.data.height}),new wp.media.controller.Cropper({imgSelectOptions:this.calculateImageSelectOptions})]}),this.frame.on("select",this.onSelect,this),this.frame.on("cropped",this.onCropped,this),this.frame.on("skippedcrop",this.onSkippedCrop,this),this.frame.open()},onSelect:function(){this.frame.setState("cropper")},onCropped:function(a){var b=a.url,c=a.attachment_id,d=a.width,e=a.height;this.setImageFromURL(b,c,d,e)},onSkippedCrop:function(a){var b=a.get("url"),c=a.get("width"),d=a.get("height");this.setImageFromURL(b,a.id,c,d)},setImageFromURL:function(a,b,c,d){var f,g={};g.url=a,g.thumbnail_url=a,g.timestamp=_.now(),b&&(g.attachment_id=b),c&&(g.width=c),d&&(g.height=d),f=new e.HeaderTool.ImageModel({header:g,choice:a.split("/").pop()}),e.HeaderTool.UploadsList.add(f),e.HeaderTool.currentHeader.set(f.toJSON()),f.save(),f.importImage()},removeImage:function(){e.HeaderTool.currentHeader.trigger("hide"),e.HeaderTool.CombinedList.trigger("control:removeImage")}}),e.ThemeControl=e.Control.extend({touchDrag:!1,isRendered:!1,renderContent:function(){var a=this,b=arguments;e.section(a.section(),function(c){c.expanded()?(e.Control.prototype.renderContent.apply(a,b),a.isRendered=!0):c.expanded.bind(function(c){c&&!a.isRendered&&(e.Control.prototype.renderContent.apply(a,b),a.isRendered=!0)})})},ready:function(){var a=this;a.container.on("touchmove",".theme",function(){a.touchDrag=!0}),a.container.on("click keydown touchend",".theme",function(c){if(!e.utils.isKeydownButNotEnterEvent(c)){if(a.touchDrag===!0)return a.touchDrag=!1;if(!b(c.target).is(".theme-actions .button")){var d=b(this).data("previewUrl");b(".wp-full-overlay").addClass("customize-loading"),window.parent.location=d}}}),a.container.on("click keydown",".theme-actions .theme-details",function(b){e.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),e.section(a.section()).showDetails(a.params.theme))}),a.container.on("render-screenshot",function(){var a=b(this).find("img"),c=a.data("src");c&&a.attr("src",c)})},filter:function(a){var b=this,c=b.params.theme.name+" "+b.params.theme.description+" "+b.params.theme.tags+" "+b.params.theme.author;c=c.toLowerCase().replace("-"," "),-1!==c.search(a)?b.activate():b.deactivate()}}),e.defaultConstructor=e.Setting,e.control=new e.Values({defaultConstructor:e.Control}),e.section=new e.Values({defaultConstructor:e.Section}),e.panel=new e.Values({defaultConstructor:e.Panel}),e.PreviewFrame=e.Messenger.extend({sensitivity:2e3,initialize:function(a,c){var d=b.Deferred();d.promise(this),this.container=a.container,this.signature=a.signature,b.extend(a,{channel:e.PreviewFrame.uuid()}),e.Messenger.prototype.initialize.call(this,a,c),this.add("previewUrl",a.previewUrl),this.query=b.extend(a.query||{},{customize_messenger_channel:this.channel()}),this.run(d)},run:function(a){var c=this,d=!1,f=!1;this._ready&&this.unbind("ready",this._ready),this._ready=function(){f=!0,d&&a.resolveWith(c)},this.bind("ready",this._ready),this.bind("ready",function(a){if(this.container.addClass("iframe-ready"),a){var b={panel:a.activePanels,section:a.activeSections,control:a.activeControls};_(b).each(function(a,b){e[b].each(function(b,c){var d=!(!a||!a[c]);d?b.activate():b.deactivate()})})}}),this.request=b.ajax(this.previewUrl(),{type:"POST",data:this.query,xhrFields:{withCredentials:!0}}),this.request.fail(function(){a.rejectWith(c,["request failure"])}),this.request.done(function(g){var h,i=c.request.getResponseHeader("Location"),j=c.signature;return i&&i!==c.previewUrl()?void a.rejectWith(c,["redirect",i]):"0"===g?void c.login(a):"-1"===g?void a.rejectWith(c,["cheatin"]):(h=g.lastIndexOf(j),-1===h||h<g.lastIndexOf("</html>")?void a.rejectWith(c,["unsigned"]):(g=g.slice(0,h)+g.slice(h+j.length),c.iframe=b("<iframe />",{title:e.l10n.previewIframeTitle}).appendTo(c.container),c.iframe.one("load",function(){d=!0,f?a.resolveWith(c):setTimeout(function(){
+a.rejectWith(c,["ready timeout"])},c.sensitivity)}),c.targetWindow(c.iframe[0].contentWindow),c.targetWindow().document.open(),c.targetWindow().document.write(g),void c.targetWindow().document.close()))})},login:function(a){var c,d=this;return c=function(){a.rejectWith(d,["logged out"])},this.triedLogin?c():void b.get(e.settings.url.ajax,{action:"logged-in"}).fail(c).done(function(f){var g;"1"!==f&&c(),g=b("<iframe />",{src:d.previewUrl(),title:e.l10n.previewIframeTitle}).hide(),g.appendTo(d.container),g.load(function(){d.triedLogin=!0,g.remove(),d.run(a)})})},destroy:function(){e.Messenger.prototype.destroy.call(this),this.request.abort(),this.iframe&&this.iframe.remove(),delete this.request,delete this.iframe,delete this.targetWindow}}),function(){var a=0;e.PreviewFrame.uuid=function(){return"preview-"+a++}}(),e.setDocumentTitle=function(a){var b,c;b=e.settings.documentTitleTmpl,c=b.replace("%s",a),document.title=c,e.trigger("title",c)},e.Previewer=e.Messenger.extend({refreshBuffer:250,initialize:function(a,c){var d=this,f=/^https?/;b.extend(this,c||{}),this.deferred={active:b.Deferred()},this.refresh=function(a){var b,c=a.refresh,d=function(){b=null,c.call(a)};return function(){if("number"!=typeof b){if(!a.loading)return d();a.abort()}clearTimeout(b),b=setTimeout(d,a.refreshBuffer)}}(this),this.container=e.ensure(a.container),this.allowedUrls=a.allowedUrls,this.signature=a.signature,a.url=window.location.href,e.Messenger.prototype.initialize.call(this,a),this.add("scheme",this.origin()).link(this.origin).setter(function(a){var b=a.match(f);return b?b[0]:""}),this.add("previewUrl",a.previewUrl).setter(function(a){var c;return/\/wp-admin(\/|$)/.test(a.replace(/[#?].*$/,""))?null:(b.each([a.replace(f,d.scheme()),a],function(a,e){return b.each(d.allowedUrls,function(a,b){var d;return b=b.replace(/\/+$/,""),d=e.replace(b,""),0===e.indexOf(b)&&/^([/#?]|$)/.test(d)?(c=e,!1):void 0}),c?!1:void 0}),c?c:null)}),this.previewUrl.bind(this.refresh),this.scroll=0,this.bind("scroll",function(a){this.scroll=a}),this.bind("url",this.previewUrl),this.bind("documentTitle",function(a){e.setDocumentTitle(a)})},query:function(){},abort:function(){this.loading&&(this.loading.destroy(),delete this.loading)},refresh:function(){var a=this;this.send("loading-initiated"),this.abort(),this.loading=new e.PreviewFrame({url:this.url(),previewUrl:this.previewUrl(),query:this.query()||{},container:this.container,signature:this.signature}),this.loading.done(function(){this.bind("synced",function(){a.preview&&a.preview.destroy(),a.preview=this,delete a.loading,a.targetWindow(this.targetWindow()),a.channel(this.channel()),a.deferred.active.resolve(),a.send("active")}),this.send("sync",{scroll:a.scroll,settings:e.get()})}),this.loading.fail(function(b,c){a.send("loading-failed"),"redirect"===b&&c&&a.previewUrl(c),"logged out"===b&&(a.preview&&(a.preview.destroy(),delete a.preview),a.login().done(a.refresh)),"cheatin"===b&&a.cheatin()})},login:function(){var a,c,d,f=this;return this._login?this._login:(a=b.Deferred(),this._login=a.promise(),c=new e.Messenger({channel:"login",url:e.settings.url.login}),d=b("<iframe />",{src:e.settings.url.login,title:e.l10n.loginIframeTitle}).appendTo(this.container),c.targetWindow(d[0].contentWindow),c.bind("login",function(){var b=f.refreshNonces();b.always(function(){d.remove(),c.destroy(),delete f._login}),b.done(function(){a.resolve()}),b.fail(function(){f.cheatin(),a.reject()})}),this._login)},cheatin:function(){b(document.body).empty().addClass("cheatin").append("<h1>"+e.l10n.cheatin+"</h1><p>"+e.l10n.notAllowed+"</p>")},refreshNonces:function(){var a,c=b.Deferred();return c.promise(),a=wp.ajax.post("customize_refresh_nonces",{wp_customize:"on",theme:e.settings.theme.stylesheet}),a.done(function(a){e.trigger("nonce-refresh",a),c.resolve()}),a.fail(function(){c.reject()}),c}}),e.controlConstructor={color:e.ColorControl,media:e.MediaControl,upload:e.UploadControl,image:e.ImageControl,cropped_image:e.CroppedImageControl,site_icon:e.SiteIconControl,header:e.HeaderControl,background:e.BackgroundControl,theme:e.ThemeControl},e.panelConstructor={},e.sectionConstructor={themes:e.ThemesSection},b(function(){if(e.settings=window._wpCustomizeSettings,e.l10n=window._wpCustomizeControlsL10n,e.settings&&b.support.postMessage&&(b.support.cors||!e.settings.isCrossDomain)){var a,c,d=b(document.body),f=d.children(".wp-full-overlay"),g=b("#customize-info .panel-title.site-title"),h=b(".customize-controls-close"),i=b("#save");b("#customize-controls").on("keydown",function(a){var c=13===a.which,d=b(a.target);c&&(d.is("input:not([type=button])")||d.is("select"))&&a.preventDefault()}),b(".customize-info").find("> .accordion-section-title .customize-help-toggle").on("click keydown",function(a){if(!e.utils.isKeydownButNotEnterEvent(a)){a.preventDefault();var c=b(this).closest(".accordion-section"),d=c.find(".customize-panel-description:first");c.hasClass("cannot-expand")||(c.hasClass("open")?(c.toggleClass("open"),d.slideUp(e.Panel.prototype.defaultExpandedArguments.duration),b(this).attr("aria-expanded",!1)):(d.slideDown(e.Panel.prototype.defaultExpandedArguments.duration),c.toggleClass("open"),b(this).attr("aria-expanded",!0)))}}),e.previewer=new e.Previewer({container:"#customize-preview",form:"#customize-controls",previewUrl:e.settings.url.preview,allowedUrls:e.settings.url.allowed,signature:"WP_CUSTOMIZER_SIGNATURE"},{nonce:e.settings.nonce,query:function(){var a={};return e.each(function(b,c){b._dirty&&(a[c]=b())}),{wp_customize:"on",theme:e.settings.theme.stylesheet,customized:JSON.stringify(a),nonce:this.nonce.preview}},save:function(){var a,c,f=this,g=e.state("processing");d.addClass("saving"),c=function(){var a,c;c=b.extend(f.query(),{nonce:f.nonce.save}),a=wp.ajax.post("customize_save",c),e.trigger("save",a),a.always(function(){d.removeClass("saving")}),a.fail(function(a){"0"===a?a="not_logged_in":"-1"===a&&(a="invalid_nonce"),"invalid_nonce"===a?f.cheatin():"not_logged_in"===a&&(f.preview.iframe.hide(),f.login().done(function(){f.save(),f.preview.iframe.show()})),e.trigger("error",a)}),a.done(function(a){e.each(function(a){a._dirty=!1}),e.trigger("saved",a)})},0===g()?c():(a=function(){0===g()&&(e.state.unbind("change",a),c())},e.state.bind("change",a))}}),e.previewer.bind("nonce",function(a){b.extend(this.nonce,a)}),e.bind("nonce-refresh",function(a){b.extend(e.settings.nonce,a),b.extend(e.previewer.nonce,a)}),b.each(e.settings.settings,function(a,b){e.create(a,a,b.value,{transport:b.transport,previewer:e.previewer,dirty:!!b.dirty})}),b.each(e.settings.panels,function(a,b){var c,d=e.panelConstructor[b.type]||e.Panel;c=new d(a,{params:b}),e.panel.add(a,c)}),b.each(e.settings.sections,function(a,b){var c,d=e.sectionConstructor[b.type]||e.Section;c=new d(a,{params:b}),e.section.add(a,c)}),b.each(e.settings.controls,function(a,b){var c,d=e.controlConstructor[b.type]||e.Control;c=new d(a,{params:b,previewer:e.previewer}),e.control.add(a,c)}),_.each(["panel","section","control"],function(a){var b,c=e.settings.autofocus[a];c&&e[a](c)&&(b=e[a](c),b.deferred.embedded.done(function(){e.previewer.deferred.active.done(function(){b.focus()})}))}),e.reflowPaneContents=_.bind(function(){var a,c,d,f=[],g=!1;document.activeElement&&(c=b(document.activeElement)),e.panel.each(function(b){var c=b.sections(),d=_.pluck(c,"container");f.push(b),a=b.container.find("ul:first"),e.utils.areElementListsEqual(d,a.children("[id]"))||(_(c).each(function(b){a.append(b.container)}),g=!0)}),e.section.each(function(b){var c=b.controls(),d=_.pluck(c,"container");b.panel()||f.push(b),a=b.container.find("ul:first"),e.utils.areElementListsEqual(d,a.children("[id]"))||(_(c).each(function(b){a.append(b.container)}),g=!0)}),f.sort(e.utils.prioritySort),d=_.pluck(f,"container"),a=b("#customize-theme-controls").children("ul"),e.utils.areElementListsEqual(d,a.children())||(_(f).each(function(b){a.append(b.container)}),g=!0),e.panel.each(function(a){var b=a.active();a.active.callbacks.fireWith(a.active,[b,b])}),e.section.each(function(a){var b=a.active();a.active.callbacks.fireWith(a.active,[b,b])}),g&&c&&c.focus(),e.trigger("pane-contents-reflowed")},e),e.bind("ready",e.reflowPaneContents),e.reflowPaneContents=_.debounce(e.reflowPaneContents,100),b([e.panel,e.section,e.control]).each(function(a,b){b.bind("add",e.reflowPaneContents),b.bind("change",e.reflowPaneContents),b.bind("remove",e.reflowPaneContents)}),e.previewer.previewUrl()?e.previewer.refresh():e.previewer.previewUrl(e.settings.url.home),function(){var a=new e.Values,b=a.create("saved"),c=a.create("activated"),d=a.create("processing");a.bind("change",function(){c()?b()?(i.val(e.l10n.saved).prop("disabled",!0),h.find(".screen-reader-text").text(e.l10n.close)):(i.val(e.l10n.save).prop("disabled",!1),h.find(".screen-reader-text").text(e.l10n.cancel)):(i.val(e.l10n.activate).prop("disabled",!1),h.find(".screen-reader-text").text(e.l10n.cancel))}),b(!0),c(e.settings.theme.active),d(0),e.bind("change",function(){a("saved").set(!1)}),e.bind("saved",function(){a("saved").set(!0),a("activated").set(!0)}),c.bind(function(a){a&&e.trigger("activated")}),e.state=a}(),i.click(function(a){e.previewer.save(),a.preventDefault()}).keydown(function(a){9!==a.which&&(13===a.which&&e.previewer.save(),a.preventDefault())}),h.keydown(function(a){9!==a.which&&(13===a.which&&this.click(),a.preventDefault())}),b(".collapse-sidebar").on("click",function(){"true"===b(this).attr("aria-expanded")?b(this).attr({"aria-expanded":"false","aria-label":e.l10n.expandSidebar}):b(this).attr({"aria-expanded":"true","aria-label":e.l10n.collapseSidebar}),f.toggleClass("collapsed").toggleClass("expanded")}),b(".customize-controls-preview-toggle").on("click keydown",function(a){e.utils.isKeydownButNotEnterEvent(a)||(f.toggleClass("preview-only"),a.preventDefault())}),g.length&&b("#customize-control-blogname input").on("input",function(){g.text(this.value)}),a=new e.Messenger({url:e.settings.url.parent,channel:"loader"}),a.bind("back",function(){h.on("click.customize-controls-close",function(b){b.preventDefault(),a.send("close")})}),b(window).on("beforeunload",function(){return e.state("saved")()?void 0:(setTimeout(function(){f.removeClass("customize-loading")},1),e.l10n.saveAlert)}),b.each(["saved","change"],function(b,c){e.bind(c,function(){a.send(c)})}),e.bind("activated",function(){a.targetWindow()?a.send("activated",e.settings.url.activated):e.settings.url.activated&&(window.location=e.settings.url.activated)}),e.bind("title",function(b){a.send("title",b)}),a.send("ready"),b.each({background_image:{controls:["background_repeat","background_position_x","background_attachment"],callback:function(a){return!!a}},show_on_front:{controls:["page_on_front","page_for_posts"],callback:function(a){return"page"===a}},header_textcolor:{controls:["header_textcolor"],callback:function(a){return"blank"!==a}}},function(a,c){e(a,function(a){b.each(c.controls,function(b,d){e.control(d,function(b){var d=function(a){b.container.toggle(c.callback(a))};d(a.get()),a.bind(d)})})})}),e.control("display_header_text",function(a){var b="";a.elements[0].unsync(e("header_textcolor")),a.element=new e.Element(a.container.find("input")),a.element.set("blank"!==a.setting()),a.element.bind(function(c){c||(b=e("header_textcolor").get()),a.setting.set(c?b:"blank")}),a.setting.bind(function(b){a.element.set("blank"!==b)})}),e("show_on_front","page_on_front",function(a,b){var c=function(){"page"===a()&&parseInt(b(),10)>0&&e.previewer.previewUrl.set(e.settings.url.home)};a.bind(c),b.bind(c)}),e("page_for_posts",function(a){a.bind(function(a){a=parseInt(a,10),a>0&&e.previewer.previewUrl.set(e.settings.url.home+"?page_id="+a)})}),e.trigger("ready"),c=h,c.focus(),setTimeout(function(){c.focus()},200)}})}(wp,jQuery);
\ No newline at end of file
index f5296b65d249a2fcd6a6960865fe28670cae1b94..9db1664b009c763bd6ebd3fcae61a832a9d4c404 100644 (file)
                                return;
                        }
                        section = api.section( sectionId );
-                       if ( section && section.expanded() ) {
+                       if ( ( section && section.expanded() ) || api.settings.autofocus.control === control.id ) {
                                control.actuallyEmbed();
                        }
                },
                                        }
                                });
                                if ( settingValue ) {
-                                       element.set( settingValue[ property ] );
+                                       if ( ( property === 'classes' || property === 'xfn' ) && _.isArray( settingValue[ property ] ) ) {
+                                               element.set( settingValue[ property ].join( ' ' ) );
+                                       } else {
+                                               element.set( settingValue[ property ] );
+                                       }
                                }
                        });
 
                                        return;
                                }
 
-                               var titleEl = control.container.find( '.menu-item-title' );
+                               var titleEl = control.container.find( '.menu-item-title' ),
+                                   titleText = item.title || api.Menus.data.l10n.untitled;
+
+                               if ( item._invalid ) {
+                                       titleText = api.Menus.data.l10n.invalidTitleTpl.replace( '%s', titleText );
+                               }
 
                                // Don't update to an empty title.
                                if ( item.title ) {
                                        titleEl
-                                               .text( item.title )
+                                               .text( titleText )
                                                .removeClass( 'no-title' );
                                } else {
                                        titleEl
-                                               .text( api.Menus.data.l10n.untitled )
+                                               .text( titleText )
                                                .addClass( 'no-title' );
                                }
                        } );
                                'menu-item-edit-inactive'
                        ];
 
-                       if ( settingValue.invalid ) {
-                               containerClasses.push( 'invalid' );
-                               control.params.title = api.Menus.data.invalidTitleTpl.replace( '%s', control.params.title );
+                       if ( settingValue._invalid ) {
+                               containerClasses.push( 'menu-item-invalid' );
+                               control.params.title = api.Menus.data.l10n.invalidTitleTpl.replace( '%s', control.params.title );
                        } else if ( 'draft' === settingValue.status ) {
                                containerClasses.push( 'pending' );
                                control.params.title = api.Menus.data.pendingTitleTpl.replace( '%s', control.params.title );
                 * the first input in the control.
                 */
                focus: function() {
-                       this.expandControlSection();
-                       this.expandForm();
-                       this.container.find( '.menu-item-settings :focusable:first' ).focus();
+                       var control = this, focusable;
+                       control.expandControlSection();
+                       control.expandForm();
+                       // Note that we can't use :focusable due to a jQuery UI issue. See: https://github.com/jquery/jquery-ui/pull/1583
+                       focusable = control.container.find( '.menu-item-settings' ).find( 'input, select, textarea, button, object, a[href], [tabindex]' ).filter( ':visible' );
+                       focusable.first().focus();
                },
 
                /**
 
                                        control.isSorting = false;
 
+                                       // Reset horizontal scroll position when done dragging.
+                                       control.$sectionContent.scrollLeft( 0 );
+
                                        _.each( menuItemContainerIds, function( menuItemContainerId ) {
                                                var menuItemId, menuItemControl, matches;
                                                matches = menuItemContainerId.match( /^customize-control-nav_menu_item-(-?\d+)$/, '' );
         */
        api.Menus.applySavedData = function( data ) {
 
-               var insertedMenuIdMapping = {};
+               var insertedMenuIdMapping = {}, insertedMenuItemIdMapping = {};
 
                _( data.nav_menu_updates ).each(function( update ) {
                        var oldCustomizeId, newCustomizeId, customizeId, oldSetting, newSetting, setting, settingValue, oldSection, newSection, wasSaved, widgetTemplate, navMenuCount;
                        }
                } );
 
+               // Build up mapping of nav_menu_item placeholder IDs to inserted IDs.
+               _( data.nav_menu_item_updates ).each(function( update ) {
+                       if ( update.previous_post_id ) {
+                               insertedMenuItemIdMapping[ update.previous_post_id ] = update.post_id;
+                       }
+               });
+
                _( data.nav_menu_item_updates ).each(function( update ) {
                        var oldCustomizeId, newCustomizeId, oldSetting, newSetting, settingValue, oldControl, newControl;
                        if ( 'inserted' === update.status ) {
                                }
                                settingValue = _.clone( settingValue );
 
+                               // If the parent menu item was also inserted, update the menu_item_parent to the new ID.
+                               if ( settingValue.menu_item_parent < 0 ) {
+                                       if ( ! insertedMenuItemIdMapping[ settingValue.menu_item_parent ] ) {
+                                               throw new Error( 'inserted ID for menu_item_parent not available' );
+                                       }
+                                       settingValue.menu_item_parent = insertedMenuItemIdMapping[ settingValue.menu_item_parent ];
+                               }
+
                                // If the menu was also inserted, then make sure it uses the new menu ID for nav_menu_term_id.
                                if ( insertedMenuIdMapping[ settingValue.nav_menu_term_id ] ) {
                                        settingValue.nav_menu_term_id = insertedMenuIdMapping[ settingValue.nav_menu_term_id ];
index 2291b580871b25f3eaa81bb5842d70a2f221786b..60f8dcdfda9f8012f7be4475b42facb84566f0ec 100644 (file)
@@ -1,2 +1,2 @@
-!function(a,b,c){"use strict";function d(a){return"nav_menu_item["+a+"]"}function e(b){return b=b||"",b=c("<div>").text(b).html(),b=c.trim(b),b||a.Menus.data.l10n.unnamed}wpNavMenu.originalInit=wpNavMenu.init,wpNavMenu.options.menuItemDepthPerLevel=20,wpNavMenu.options.sortableItems="> .customize-control-nav_menu_item",wpNavMenu.options.targetTolerance=10,wpNavMenu.init=function(){this.jQueryExtensions()},a.Menus=a.Menus||{},a.Menus.data={nonce:"",itemTypes:[],l10n:{},menuItemTransport:"postMessage",phpIntMax:0,defaultSettingValues:{nav_menu:{},nav_menu_item:{}}},"undefined"!=typeof _wpCustomizeNavMenusSettings&&c.extend(a.Menus.data,_wpCustomizeNavMenusSettings),a.Menus.generatePlaceholderAutoIncrementId=function(){return-Math.ceil(a.Menus.data.phpIntMax*Math.random())},a.Menus.AvailableItemModel=Backbone.Model.extend(c.extend({id:null},a.Menus.data.defaultSettingValues.nav_menu_item)),a.Menus.AvailableItemCollection=Backbone.Collection.extend({model:a.Menus.AvailableItemModel,sort_key:"order",comparator:function(a){return-a.get(this.sort_key)},sortByField:function(a){this.sort_key=a,this.sort()}}),a.Menus.availableMenuItems=new a.Menus.AvailableItemCollection(a.Menus.data.availableMenuItems),a.Menus.AvailableMenuItemsPanelView=b.Backbone.View.extend({el:"#available-menu-items",events:{"input #menu-items-search":"debounceSearch","keyup #menu-items-search":"debounceSearch","focus .menu-item-tpl":"focus","click .menu-item-tpl":"_submit","click #custom-menu-item-submit":"_submitLink","keypress #custom-menu-item-name":"_submitLink",keydown:"keyboardAccessible"},selected:null,currentMenuControl:null,debounceSearch:null,$search:null,searchTerm:"",rendered:!1,pages:{},sectionContent:"",loading:!1,initialize:function(){var b=this;a.panel.has("nav_menus")&&(this.$search=c("#menu-items-search"),this.sectionContent=this.$el.find(".accordion-section-content"),this.debounceSearch=_.debounce(b.search,500),_.bindAll(this,"close"),c("#customize-controls, .customize-section-back").on("click keydown",function(a){var d=c(a.target).is(".item-delete, .item-delete *"),e=c(a.target).is(".add-new-menu-item, .add-new-menu-item *");!c("body").hasClass("adding-menu-items")||d||e||b.close()}),c(".clear-results").on("click keydown",function(a){("keydown"!==a.type||13===a.which||32===a.which)&&(a.preventDefault(),c("#menu-items-search").val("").focus(),a.target.value="",b.search(a))}),this.$el.on("input","#custom-menu-item-name.invalid, #custom-menu-item-url.invalid",function(){c(this).removeClass("invalid")}),a.panel("nav_menus").container.bind("expanded",function(){b.rendered||(b.initList(),b.rendered=!0)}),this.sectionContent.scroll(function(){var a=b.$el.find(".accordion-section.open .accordion-section-content").prop("scrollHeight"),d=b.$el.find(".accordion-section.open").height();if(!b.loading&&c(this).scrollTop()>.75*a-d){var e=c(this).data("type"),f=c(this).data("object");"search"===e?b.searchTerm&&b.doSearch(b.pages.search):b.loadItems(e,f)}}),a.previewer.bind("url",this.close))},search:function(a){var b=c("#available-menu-items-search"),d=c("#available-menu-items .accordion-section").not(b);a&&this.searchTerm!==a.target.value&&(""===a.target.value||b.hasClass("open")?""===a.target.value&&(b.removeClass("open"),d.show(),b.find(".clear-results").prop("tabIndex",-1).removeClass("is-visible")):(d.fadeOut(100),b.find(".accordion-section-content").slideDown("fast"),b.addClass("open"),b.find(".clear-results").prop("tabIndex",0).addClass("is-visible")),this.searchTerm=a.target.value,this.pages.search=1,this.doSearch(1))},doSearch:function(d){var e,f=this,g=c("#available-menu-items-search"),h=g.find(".accordion-section-content"),i=b.template("available-menu-item");if(f.currentRequest&&f.currentRequest.abort(),!(0>d)){if(d>1)g.addClass("loading-more"),h.attr("aria-busy","true"),b.a11y.speak(a.Menus.data.l10n.itemsLoadingMore);else if(""===f.searchTerm)return h.html(""),void b.a11y.speak("");g.addClass("loading"),f.loading=!0,e={"customize-menus-nonce":a.Menus.data.nonce,wp_customize:"on",search:f.searchTerm,page:d},f.currentRequest=b.ajax.post("search-available-menu-items-customizer",e),f.currentRequest.done(function(c){var e;1===d&&h.empty(),g.removeClass("loading loading-more"),h.attr("aria-busy","false"),g.addClass("open"),f.loading=!1,e=new a.Menus.AvailableItemCollection(c.items),f.collection.add(e.models),e.each(function(a){h.append(i(a.attributes))}),20>e.length?f.pages.search=-1:f.pages.search=f.pages.search+1,e&&d>1?b.a11y.speak(a.Menus.data.l10n.itemsFoundMore.replace("%d",e.length)):e&&1===d&&b.a11y.speak(a.Menus.data.l10n.itemsFound.replace("%d",e.length))}),f.currentRequest.fail(function(a){a.message&&(h.empty().append(c('<p class="nothing-found"></p>').text(a.message)),b.a11y.speak(a.message)),f.pages.search=-1}),f.currentRequest.always(function(){g.removeClass("loading loading-more"),h.attr("aria-busy","false"),f.loading=!1,f.currentRequest=null})}},initList:function(){var b=this;_.each(a.Menus.data.itemTypes,function(a){b.pages[a.type+":"+a.object]=0,b.loadItems(a.type,a.object)})},loadItems:function(d,e){var f,g,h,i,j=this;h=b.template("available-menu-item"),-1!==j.pages[d+":"+e]&&(i=c("#available-menu-items-"+d+"-"+e),i.find(".accordion-section-title").addClass("loading"),j.loading=!0,f={"customize-menus-nonce":a.Menus.data.nonce,wp_customize:"on",type:d,object:e,page:j.pages[d+":"+e]},g=b.ajax.post("load-available-menu-items-customizer",f),g.done(function(b){var c,f;return c=b.items,0===c.length?(0===j.pages[d+":"+e]&&i.addClass("cannot-expand").removeClass("loading").find(".accordion-section-title > button").prop("tabIndex",-1),void(j.pages[d+":"+e]=-1)):(c=new a.Menus.AvailableItemCollection(c),j.collection.add(c.models),f=i.find(".accordion-section-content"),c.each(function(a){f.append(h(a.attributes))}),void(j.pages[d+":"+e]+=1))}),g.fail(function(a){"undefined"!=typeof console&&console.error&&console.error(a)}),g.always(function(){i.find(".accordion-section-title").removeClass("loading"),j.loading=!1}))},itemSectionHeight:function(){var a,b,c,d;b=window.innerHeight,a=this.$el.find(".accordion-section:not( #available-menu-items-search ) .accordion-section-content"),c=46*(2+a.length)-13,d=b-c,d>120&&290>d&&a.css("max-height",d)},select:function(a){this.selected=c(a),this.selected.siblings(".menu-item-tpl").removeClass("selected"),this.selected.addClass("selected")},focus:function(a){this.select(c(a.currentTarget))},_submit:function(a){("keypress"!==a.type||13===a.which||32===a.which)&&this.submit(c(a.currentTarget))},submit:function(a){var b,d;a||(a=this.selected),a&&this.currentMenuControl&&(this.select(a),b=c(this.selected).data("menu-item-id"),d=this.collection.findWhere({id:b}),d&&(this.currentMenuControl.addItemToMenu(d.attributes),c(a).find(".menu-item-handle").addClass("item-added")))},_submitLink:function(a){("keypress"!==a.type||13===a.which)&&this.submitLink()},submitLink:function(){var b,d=c("#custom-menu-item-name"),e=c("#custom-menu-item-url");if(this.currentMenuControl){if(""===d.val())return void d.addClass("invalid");if(""===e.val()||"http://"===e.val())return void e.addClass("invalid");b={title:d.val(),url:e.val(),type:"custom",type_label:a.Menus.data.l10n.custom_label,object:""},this.currentMenuControl.addItemToMenu(b),e.val("http://"),d.val("")}},open:function(a){this.currentMenuControl=a,this.itemSectionHeight(),c("body").addClass("adding-menu-items"),_(this.currentMenuControl.getMenuItemControls()).each(function(a){a.collapseForm()}),this.$el.find(".selected").removeClass("selected"),this.$search.focus()},close:function(a){a=a||{},a.returnFocus&&this.currentMenuControl&&this.currentMenuControl.container.find(".add-new-menu-item").focus(),this.currentMenuControl=null,this.selected=null,c("body").removeClass("adding-menu-items"),c("#available-menu-items .menu-item-handle.item-added").removeClass("item-added"),this.$search.val("")},keyboardAccessible:function(a){var b=13===a.which,d=27===a.which,e=9===a.which&&a.shiftKey,f=c(a.target).is(this.$search);(!b||this.$search.val())&&(f&&e?(this.currentMenuControl.container.find(".add-new-menu-item").focus(),a.preventDefault()):d&&this.close({returnFocus:!0}))}}),a.Menus.MenusPanel=a.Panel.extend({attachEvents:function(){a.Panel.prototype.attachEvents.call(this);var b=this,d=b.container.find(".panel-meta"),e=d.find(".customize-help-toggle"),f=d.find(".customize-panel-description"),g=c("#screen-options-wrap"),h=d.find(".customize-screen-options-toggle");h.on("click keydown",function(b){return a.utils.isKeydownButNotEnterEvent(b)?void 0:(b.preventDefault(),f.not(":hidden")&&(f.slideUp("fast"),e.attr("aria-expanded","false")),"true"===h.attr("aria-expanded")?(h.attr("aria-expanded","false"),d.removeClass("open"),d.removeClass("active-menu-screen-options"),g.slideUp("fast")):(h.attr("aria-expanded","true"),d.addClass("open"),d.addClass("active-menu-screen-options"),g.slideDown("fast")),!1)}),e.on("click keydown",function(b){a.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),"true"===h.attr("aria-expanded")&&(h.attr("aria-expanded","false"),e.attr("aria-expanded","true"),d.addClass("open"),d.removeClass("active-menu-screen-options"),g.slideUp("fast"),f.slideDown("fast")))})},ready:function(){var a=this;this.container.find(".hide-column-tog").click(function(){var b=c(this),d=b.val();b.prop("checked")?a.checked(d):a.unchecked(d),a.saveManageColumnsState()}),this.container.find(".hide-column-tog").each(function(){var b=c(this),d=b.val();b.prop("checked")?a.checked(d):a.unchecked(d)})},saveManageColumnsState:function(){var a=this.hidden();c.post(b.ajax.settings.url,{action:"hidden-columns",hidden:a,screenoptionnonce:c("#screenoptionnonce").val(),page:"nav-menus"})},checked:function(a){this.container.addClass("field-"+a+"-active")},unchecked:function(a){this.container.removeClass("field-"+a+"-active")},hidden:function(){this.hidden=function(){return c(".hide-column-tog").not(":checked").map(function(){var a=this.id;return a.substring(a,a.length-5)}).get().join(",")}}}),a.Menus.MenuSection=a.Section.extend({initialize:function(b,d){var e=this;a.Section.prototype.initialize.call(e,b,d),e.deferred.initSortables=c.Deferred()},ready:function(){var b=this;if("undefined"==typeof b.params.menu_id)throw new Error("params.menu_id was not defined");b.active.validate=function(){return a.has(b.id)?!!a(b.id).get():!1},b.populateControls(),b.navMenuLocationSettings={},b.assignedLocations=new a.Value([]),a.each(function(a,c){var d=c.match(/^nav_menu_locations\[(.+?)]/);d&&(b.navMenuLocationSettings[d[1]]=a,a.bind(function(){b.refreshAssignedLocations()}))}),b.assignedLocations.bind(function(a){b.updateAssignedLocationsInSectionTitle(a)}),b.refreshAssignedLocations(),a.bind("pane-contents-reflowed",function(){b.container.parent().length&&(b.container.find(".menu-item .menu-item-reorder-nav button").attr({tabindex:"0","aria-hidden":"false"}),b.container.find(".menu-item.move-up-disabled .menus-move-up").attr({tabindex:"-1","aria-hidden":"true"}),b.container.find(".menu-item.move-down-disabled .menus-move-down").attr({tabindex:"-1","aria-hidden":"true"}),b.container.find(".menu-item.move-left-disabled .menus-move-left").attr({tabindex:"-1","aria-hidden":"true"}),b.container.find(".menu-item.move-right-disabled .menus-move-right").attr({tabindex:"-1","aria-hidden":"true"}))})},populateControls:function(){var b,c,d,e,f,g=this;b=g.id+"[name]",e=a.control(b),e||(e=new a.controlConstructor.nav_menu_name(b,{params:{type:"nav_menu_name",content:'<li id="customize-control-'+g.id.replace("[","-").replace("]","")+'-name" class="customize-control customize-control-nav_menu_name"></li>',label:a.Menus.data.l10n.menuNameLabel,active:!0,section:g.id,priority:0,settings:{"default":g.id}}}),a.control.add(e.id,e),e.active.set(!0)),d=a.control(g.id),d||(d=new a.controlConstructor.nav_menu(g.id,{params:{type:"nav_menu",content:'<li id="customize-control-'+g.id.replace("[","-").replace("]","")+'" class="customize-control customize-control-nav_menu"></li>',section:g.id,priority:998,active:!0,settings:{"default":g.id},menu_id:g.params.menu_id}}),a.control.add(d.id,d),d.active.set(!0)),c=g.id+"[auto_add]",f=a.control(c),f||(f=new a.controlConstructor.nav_menu_auto_add(c,{params:{type:"nav_menu_auto_add",content:'<li id="customize-control-'+g.id.replace("[","-").replace("]","")+'-auto-add" class="customize-control customize-control-nav_menu_auto_add"></li>',label:"",active:!0,section:g.id,priority:999,settings:{"default":g.id}}}),a.control.add(f.id,f),f.active.set(!0))},refreshAssignedLocations:function(){var a=this,b=a.params.menu_id,c=[];_.each(a.navMenuLocationSettings,function(a,d){a()===b&&c.push(d)}),a.assignedLocations.set(c)},updateAssignedLocationsInSectionTitle:function(b){var d,e=this;d=e.container.find(".accordion-section-title:first"),d.find(".menu-in-location").remove(),_.each(b,function(b){var e=c('<span class="menu-in-location"></span>');e.text(a.Menus.data.l10n.menuLocation.replace("%s",b)),d.append(e)}),e.container.toggleClass("assigned-to-menu-location",0!==b.length)},onChangeExpanded:function(b,d){var e=this;b&&(wpNavMenu.menuList=e.container.find(".accordion-section-content:first"),wpNavMenu.targetList=wpNavMenu.menuList,c("#menu-to-edit").removeAttr("id"),wpNavMenu.menuList.attr("id","menu-to-edit").addClass("menu"),_.each(a.section(e.id).controls(),function(a){"nav_menu_item"===a.params.type&&a.actuallyEmbed()}),"resolved"!==e.deferred.initSortables.state()&&(wpNavMenu.initSortables(),e.deferred.initSortables.resolve(wpNavMenu.menuList),a.control("nav_menu["+String(e.params.menu_id)+"]").reflowMenuItems())),a.Section.prototype.onChangeExpanded.call(e,b,d)}}),a.Menus.NewMenuSection=a.Section.extend({attachEvents:function(){var a=this;this.container.on("click",".add-menu-toggle",function(){a.expanded()?a.collapse():a.expand()})},onChangeExpanded:function(a){var b=this,c=b.container.find(".add-menu-toggle"),d=b.container.find(".new-menu-section-content"),e=b.container.closest(".wp-full-overlay-sidebar-content");a?(c.addClass("open"),c.attr("aria-expanded","true"),d.slideDown("fast",function(){e.scrollTop(e.height())})):(c.removeClass("open"),c.attr("aria-expanded","false"),d.slideUp("fast"),d.find(".menu-name-field").removeClass("invalid"))}}),a.Menus.MenuLocationControl=a.Control.extend({initialize:function(b,c){var d=this,e=b.match(/^nav_menu_locations\[(.+?)]/);d.themeLocation=e[1],a.Control.prototype.initialize.call(d,b,c)},ready:function(){var b=this,c=/^nav_menu\[(-?\d+)]/;b.setting.validate=function(a){return parseInt(a,10)},a.bind("add",function(a){var d,f,g=a.id.match(c);g&&!1!==a()&&(f=g[1],d=new Option(e(a().name),f),b.container.find("select").append(d))}),a.bind("remove",function(a){var d,e=a.id.match(c);e&&(d=parseInt(e[1],10),b.setting()===d&&b.setting.set(""),b.container.find("option[value="+d+"]").remove())}),a.bind("change",function(a){var d,f=a.id.match(c);f&&(d=parseInt(f[1],10),!1===a()?(b.setting()===d&&b.setting.set(""),b.container.find("option[value="+d+"]").remove()):b.container.find("option[value="+d+"]").text(e(a().name)))})}}),a.Menus.MenuItemControl=a.Control.extend({initialize:function(b,c){var d=this;a.Control.prototype.initialize.call(d,b,c),d.active.validate=function(){var b,c=a.section(d.section());return b=c?c.active():!1}},embed:function(){var b,c=this,d=c.section();d&&(b=a.section(d),b&&b.expanded()&&c.actuallyEmbed())},actuallyEmbed:function(){var a=this;"resolved"!==a.deferred.embedded.state()&&(a.renderContent(),a.deferred.embedded.resolve())},ready:function(){if("undefined"==typeof this.params.menu_item_id)throw new Error("params.menu_item_id was not defined");this._setupControlToggle(),this._setupReorderUI(),this._setupUpdateUI(),this._setupRemoveUI(),this._setupLinksUI(),this._setupTitleUI()},_setupControlToggle:function(){var a=this;this.container.find(".menu-item-handle").on("click",function(b){b.preventDefault(),b.stopPropagation();var c=a.getMenuControl();c.isReordering||c.isSorting||a.toggleForm()})},_setupReorderUI:function(){var a,d,e=this;a=b.template("menu-item-reorder-nav"),e.container.find(".item-controls").after(a),d=e.container.find(".menu-item-reorder-nav"),d.find(".menus-move-up, .menus-move-down, .menus-move-left, .menus-move-right").on("click",function(){var a=c(this);a.focus();var b=a.is(".menus-move-up"),d=a.is(".menus-move-down"),f=a.is(".menus-move-left"),g=a.is(".menus-move-right");b?e.moveUp():d?e.moveDown():f?e.moveLeft():g&&e.moveRight(),a.focus()})},_setupUpdateUI:function(){var b=this,c=b.setting();b.elements={},b.elements.url=new a.Element(b.container.find(".edit-menu-item-url")),b.elements.title=new a.Element(b.container.find(".edit-menu-item-title")),b.elements.attr_title=new a.Element(b.container.find(".edit-menu-item-attr-title")),b.elements.target=new a.Element(b.container.find(".edit-menu-item-target")),b.elements.classes=new a.Element(b.container.find(".edit-menu-item-classes")),b.elements.xfn=new a.Element(b.container.find(".edit-menu-item-xfn")),b.elements.description=new a.Element(b.container.find(".edit-menu-item-description")),_.each(b.elements,function(a,d){a.bind(function(c){a.element.is("input[type=checkbox]")&&(c=c?a.element.val():"");var e=b.setting();e&&e[d]!==c&&(e=_.clone(e),e[d]=c,b.setting.set(e))}),c&&a.set(c[d])}),b.setting.bind(function(c,d){var e,f=b.params.menu_item_id,g=[],h=[];!1===c?(e=a.control("nav_menu["+String(d.nav_menu_term_id)+"]"),b.container.remove(),_.each(e.getMenuItemControls(),function(a){d.menu_item_parent===a.setting().menu_item_parent&&a.setting().position>d.position?g.push(a):a.setting().menu_item_parent===f&&h.push(a)}),_.each(g,function(a){var b=_.clone(a.setting());b.position+=h.length,a.setting.set(b)}),_.each(h,function(a,b){var c=_.clone(a.setting());c.position=d.position+b,c.menu_item_parent=d.menu_item_parent,a.setting.set(c)}),e.debouncedReflowMenuItems()):(_.each(c,function(a,d){b.elements[d]&&b.elements[d].set(c[d])}),b.container.find(".menu-item-data-parent-id").val(c.menu_item_parent),(c.position!==d.position||c.menu_item_parent!==d.menu_item_parent)&&b.getMenuControl().debouncedReflowMenuItems())})},_setupRemoveUI:function(){var d,e=this;d=e.container.find(".item-delete"),d.on("click",function(){var d,f,g,h=!0;c("body").hasClass("adding-menu-items")||(h=!1),f=e.container.nextAll(".customize-control-nav_menu_item:visible").first(),g=e.container.prevAll(".customize-control-nav_menu_item:visible").first(),d=f.length?f.find(!1===h?".item-edit":".item-delete").first():g.length?g.find(!1===h?".item-edit":".item-delete").first():e.container.nextAll(".customize-control-nav_menu").find(".add-new-menu-item").first(),e.container.slideUp(function(){e.setting.set(!1),b.a11y.speak(a.Menus.data.l10n.itemDeleted),d.focus()})})},_setupLinksUI:function(){var b;b=this.container.find("a.original-link"),b.on("click",function(b){b.preventDefault(),a.previewer.previewUrl(b.target.toString())})},_setupTitleUI:function(){var b=this;b.setting.bind(function(c){if(c){var d=b.container.find(".menu-item-title");c.title?d.text(c.title).removeClass("no-title"):d.text(a.Menus.data.l10n.untitled).addClass("no-title")}})},getDepth:function(){var b=this,c=b.setting(),d=0;if(!c)return 0;for(;c&&c.menu_item_parent&&(d+=1,b=a.control("nav_menu_item["+c.menu_item_parent+"]"));)c=b.setting();return d},renderContent:function(){var b,c=this,d=c.setting();c.params.title=d.title||"",c.params.depth=c.getDepth(),c.container.data("item-depth",c.params.depth),b=["menu-item","menu-item-depth-"+String(c.params.depth),"menu-item-"+d.object,"menu-item-edit-inactive"],d.invalid?(b.push("invalid"),c.params.title=a.Menus.data.invalidTitleTpl.replace("%s",c.params.title)):"draft"===d.status&&(b.push("pending"),c.params.title=a.Menus.data.pendingTitleTpl.replace("%s",c.params.title)),c.params.el_classes=b.join(" "),c.params.item_type_label=d.type_label,c.params.item_type=d.type,c.params.url=d.url,c.params.target=d.target,c.params.attr_title=d.attr_title,c.params.classes=_.isArray(d.classes)?d.classes.join(" "):d.classes,c.params.attr_title=d.attr_title,c.params.xfn=d.xfn,c.params.description=d.description,c.params.parent=d.menu_item_parent,c.params.original_title=d.original_title||"",c.container.addClass(c.params.el_classes),a.Control.prototype.renderContent.call(c)},getMenuControl:function(){var b=this,c=b.setting();return c&&c.nav_menu_term_id?a.control("nav_menu["+c.nav_menu_term_id+"]"):null},expandControlSection:function(){var a=this.container.closest(".accordion-section");a.hasClass("open")||a.find(".accordion-section-title:first").trigger("click")},expandForm:function(){this.toggleForm(!0)},collapseForm:function(){this.toggleForm(!1)},toggleForm:function(b){var c,d,e,f=this;c=this.container,d=c.find(".menu-item-settings:first"),"undefined"==typeof b&&(b=!d.is(":visible")),d.is(":visible")!==b&&(b?(a.control.each(function(a){f.params.type===a.params.type&&f!==a&&a.collapseForm()}),e=function(){c.removeClass("menu-item-edit-inactive").addClass("menu-item-edit-active"),f.container.trigger("expanded")},c.find(".item-edit").attr("aria-expanded","true"),d.slideDown("fast",e),f.container.trigger("expand")):(e=function(){c.addClass("menu-item-edit-inactive").removeClass("menu-item-edit-active"),f.container.trigger("collapsed")},f.container.trigger("collapse"),c.find(".item-edit").attr("aria-expanded","false"),d.slideUp("fast",e)))},focus:function(){this.expandControlSection(),this.expandForm(),this.container.find(".menu-item-settings :focusable:first").focus()},moveUp:function(){this._changePosition(-1),b.a11y.speak(a.Menus.data.l10n.movedUp)},moveDown:function(){this._changePosition(1),b.a11y.speak(a.Menus.data.l10n.movedDown)},moveLeft:function(){this._changeDepth(-1),b.a11y.speak(a.Menus.data.l10n.movedLeft)},moveRight:function(){this._changeDepth(1),b.a11y.speak(a.Menus.data.l10n.movedRight)},_changePosition:function(a){var b,d,e=this,f=_.clone(e.setting()),g=[];if(1!==a&&-1!==a)throw new Error("Offset changes by 1 are only supported.");if(e.setting()){if(_(e.getMenuControl().getMenuItemControls()).each(function(a){a.setting().menu_item_parent===f.menu_item_parent&&g.push(a.setting)}),g.sort(function(a,b){return a().position-b().position}),d=_.indexOf(g,e.setting),-1===d)throw new Error("Expected setting to be among siblings.");0===d&&0>a||d===g.length-1&&a>0||(b=g[d+a],b&&b.set(c.extend(_.clone(b()),{position:f.position})),f.position+=a,e.setting.set(f))}},_changeDepth:function(b){if(1!==b&&-1!==b)throw new Error("Offset changes by 1 are only supported.");var d,e,f,g=this,h=_.clone(g.setting()),i=[];if(_(g.getMenuControl().getMenuItemControls()).each(function(a){a.setting().menu_item_parent===h.menu_item_parent&&i.push(a)}),i.sort(function(a,b){return a.setting().position-b.setting().position}),d=_.indexOf(i,g),-1===d)throw new Error("Expected control to be among siblings.");if(-1===b){if(!h.menu_item_parent)return;f=a.control("nav_menu_item["+h.menu_item_parent+"]"),_(i).chain().slice(d).each(function(a,b){a.setting.set(c.extend({},a.setting(),{menu_item_parent:g.params.menu_item_id,position:b}))}),_(g.getMenuControl().getMenuItemControls()).each(function(a){var b,d;d=a.setting().menu_item_parent===f.setting().menu_item_parent&&a.setting().position>f.setting().position,d&&(b=_.clone(a.setting()),a.setting.set(c.extend(b,{position:b.position+1})))}),h.position=f.setting().position+1,h.menu_item_parent=f.setting().menu_item_parent,g.setting.set(h)}else if(1===b){if(0===d)return;e=i[d-1],h.menu_item_parent=e.params.menu_item_id,h.position=0,_(g.getMenuControl().getMenuItemControls()).each(function(a){a.setting().menu_item_parent===h.menu_item_parent&&(h.position=Math.max(h.position,a.setting().position))}),h.position+=1,g.setting.set(h)}}}),a.Menus.MenuNameControl=a.Control.extend({ready:function(){var b=this,c=b.setting();b.active.validate=function(){var c,d=a.section(b.section());return c=d?d.active():!1},b.nameElement=new a.Element(b.container.find(".menu-name-field")),b.nameElement.bind(function(a){var c=b.setting();c&&c.name!==a&&(c=_.clone(c),c.name=a,b.setting.set(c))}),c&&b.nameElement.set(c.name),b.setting.bind(function(a){a&&b.nameElement.set(a.name)})}}),a.Menus.MenuAutoAddControl=a.Control.extend({ready:function(){var b=this,c=b.setting();b.active.validate=function(){var c,d=a.section(b.section());return c=d?d.active():!1},b.autoAddElement=new a.Element(b.container.find("input[type=checkbox].auto_add")),b.autoAddElement.bind(function(a){var c=b.setting();c&&c.name!==a&&(c=_.clone(c),c.auto_add=a,b.setting.set(c))}),c&&b.autoAddElement.set(c.auto_add),b.setting.bind(function(a){a&&b.autoAddElement.set(a.auto_add)})}}),a.Menus.MenuControl=a.Control.extend({ready:function(){var b,d,f,g=this,h=g.params.menu_id,i=g.setting();if("undefined"==typeof this.params.menu_id)throw new Error("params.menu_id was not defined");g.active.validate=function(){var b,c=a.section(g.section());return b=c?c.active():!1},g.$controlSection=g.container.closest(".control-section"),g.$sectionContent=g.container.closest(".accordion-section-content"),this._setupModel(),a.section(g.section(),function(a){a.deferred.initSortables.done(function(a){g._setupSortable(a)})}),this._setupAddition(),this._setupLocations(),this._setupTitle(),i&&(b=e(i.name),a.control.each(function(c){c.extended(a.controlConstructor.widget_form)&&"nav_menu"===c.params.widget_id_base&&(c.container.find(".nav-menu-widget-form-controls:first").show(),c.container.find(".nav-menu-widget-no-menus-message:first").hide(),f=c.container.find("select"),0===f.find("option[value="+String(h)+"]").length&&f.append(new Option(b,h)))}),d=c("#available-widgets-list .widget-tpl:has( input.id_base[ value=nav_menu ] )"),d.find(".nav-menu-widget-form-controls:first").show(),d.find(".nav-menu-widget-no-menus-message:first").hide(),f=d.find(".widget-inside select:first"),0===f.find("option[value="+String(h)+"]").length&&f.append(new Option(b,h)))},_setupModel:function(){var b=this,c=b.params.menu_id;b.setting.bind(function(d){var f;!1===d?b._handleDeletion():(f=e(d.name),a.control.each(function(b){if(b.extended(a.controlConstructor.widget_form)&&"nav_menu"===b.params.widget_id_base){var d=b.container.find("select");d.find("option[value="+String(c)+"]").text(f)}}))}),b.container.find(".menu-delete").on("click",function(a){a.stopPropagation(),a.preventDefault(),b.setting.set(!1)})},_setupSortable:function(b){var c=this;if(!b.is(c.$sectionContent))throw new Error("Unexpected menuList.");b.on("sortstart",function(){c.isSorting=!0}),b.on("sortstop",function(){setTimeout(function(){var b=c.$sectionContent.sortable("toArray"),d=[],e=0,f=10;c.isSorting=!1,_.each(b,function(b){var c,e,f;f=b.match(/^customize-control-nav_menu_item-(-?\d+)$/,""),f&&(c=parseInt(f[1],10),e=a.control("nav_menu_item["+String(c)+"]"),e&&d.push(e))}),_.each(d,function(a){if(!1!==a.setting()){var b=_.clone(a.setting());e+=1,f+=1,b.position=e,a.priority(f),b.menu_item_parent=parseInt(a.container.find(".menu-item-data-parent-id").val(),10),b.menu_item_parent||(b.menu_item_parent=0),a.setting.set(b)}})})}),c.isReordering=!1,this.container.find(".reorder-toggle").on("click",function(){c.toggleReordering(!c.isReordering)})},_setupAddition:function(){var b=this;this.container.find(".add-new-menu-item").on("click",function(d){b.$sectionContent.hasClass("reordering")||(c("body").hasClass("adding-menu-items")?(c(this).attr("aria-expanded","false"),a.Menus.availableMenuItemsPanel.close(),d.stopPropagation()):(c(this).attr("aria-expanded","true"),a.Menus.availableMenuItemsPanel.open(b)))})},_handleDeletion:function(){var d,e,f,g=this,h=g.params.menu_id,i=0;d=a.section(g.section()),e=function(){d.container.remove(),a.section.remove(d.id)},d&&d.expanded()?d.collapse({completeCallback:function(){e(),b.a11y.speak(a.Menus.data.l10n.menuDeleted),a.panel("nav_menus").focus()}}):e(),a.each(function(a){/^nav_menu\[/.test(a.id)&&!1!==a()&&(i+=1)}),a.control.each(function(b){if(b.extended(a.controlConstructor.widget_form)&&"nav_menu"===b.params.widget_id_base){var c=b.container.find("select");c.val()===String(h)&&c.prop("selectedIndex",0).trigger("change"),b.container.find(".nav-menu-widget-form-controls:first").toggle(0!==i),b.container.find(".nav-menu-widget-no-menus-message:first").toggle(0===i),b.container.find("option[value="+String(h)+"]").remove()}}),f=c("#available-widgets-list .widget-tpl:has( input.id_base[ value=nav_menu ] )"),f.find(".nav-menu-widget-form-controls:first").toggle(0!==i),f.find(".nav-menu-widget-no-menus-message:first").toggle(0===i),f.find("option[value="+String(h)+"]").remove()},_setupLocations:function(){var b=this;b.container.find(".assigned-menu-location").each(function(){var d,f,g=c(this),h=g.find("input[type=checkbox]"),i=a("nav_menu_locations["+h.data("location-id")+"]");f=function(b){var c=a("nav_menu["+String(b)+"]");b&&c&&c()?g.find(".theme-location-set").show().find("span").text(e(c().name)):g.find(".theme-location-set").hide()},d=new a.Element(h),d.set(i.get()===b.params.menu_id),h.on("change",function(){i.set(this.checked?b.params.menu_id:0)}),i.bind(function(a){d.set(a===b.params.menu_id),f(a)}),f(i.get())})},_setupTitle:function(){var b=this;b.setting.bind(function(d){if(d){var f=b.container.closest(".accordion-section"),g=b.params.menu_id,h=f.find(".accordion-section-title"),i=f.find(".customize-section-title h3"),j=f.find(".menu-in-location"),k=i.find(".customize-action"),l=e(d.name);h.text(l),j.length&&j.appendTo(h),i.text(l),k.length&&k.prependTo(i),a.control.each(function(a){/^nav_menu_locations\[/.test(a.id)&&a.container.find("option[value="+g+"]").text(l)}),f.find(".customize-control-checkbox input").each(function(){c(this).prop("checked")&&c(".current-menu-location-name-"+c(this).data("location-id")).text(l)})}})},toggleReordering:function(c){var d=this.container.find(".add-new-menu-item"),e=this.container.find(".reorder-toggle"),f=this.$sectionContent.find(".item-title");c=Boolean(c),c!==this.$sectionContent.hasClass("reordering")&&(this.isReordering=c,this.$sectionContent.toggleClass("reordering",c),this.$sectionContent.sortable(this.isReordering?"disable":"enable"),this.isReordering?(d.attr({tabindex:"-1","aria-hidden":"true"}),e.attr("aria-label",a.Menus.data.l10n.reorderLabelOff),b.a11y.speak(a.Menus.data.l10n.reorderModeOn),f.attr("aria-hidden","false")):(d.removeAttr("tabindex aria-hidden"),e.attr("aria-label",a.Menus.data.l10n.reorderLabelOn),b.a11y.speak(a.Menus.data.l10n.reorderModeOff),f.attr("aria-hidden","true")),c&&_(this.getMenuItemControls()).each(function(a){a.collapseForm()}))},getMenuItemControls:function(){var b=this,c=[],d=b.params.menu_id;return a.control.each(function(a){"nav_menu_item"===a.params.type&&a.setting()&&d===a.setting().nav_menu_term_id&&c.push(a)}),c},reflowMenuItems:function(){var a,b=this,c=b.getMenuItemControls();a=function(b){var c=[],d=b.currentParent;_.each(b.menuItemControls,function(a){d===a.setting().menu_item_parent&&c.push(a)}),c.sort(function(a,b){return a.setting().position-b.setting().position}),_.each(c,function(c){b.currentAbsolutePosition+=1,c.priority.set(b.currentAbsolutePosition),c.container.hasClass("menu-item-depth-"+String(b.currentDepth))||(_.each(c.container.prop("className").match(/menu-item-depth-\d+/g),function(a){c.container.removeClass(a)}),c.container.addClass("menu-item-depth-"+String(b.currentDepth))),c.container.data("item-depth",b.currentDepth),b.currentDepth+=1,b.currentParent=c.params.menu_item_id,a(b),b.currentDepth-=1,b.currentParent=d}),c.length&&(_(c).each(function(a){a.container.removeClass("move-up-disabled move-down-disabled move-left-disabled move-right-disabled"),0===b.currentDepth?a.container.addClass("move-left-disabled"):10===b.currentDepth&&a.container.addClass("move-right-disabled")}),c[0].container.addClass("move-up-disabled").addClass("move-right-disabled").toggleClass("move-down-disabled",1===c.length),c[c.length-1].container.addClass("move-down-disabled").toggleClass("move-up-disabled",1===c.length))},a({menuItemControls:c,currentParent:0,currentDepth:0,currentAbsolutePosition:0
-}),b.container.find(".reorder-toggle").toggle(c.length>1)},debouncedReflowMenuItems:_.debounce(function(){this.reflowMenuItems.apply(this,arguments)},0),addItemToMenu:function(d){var e,f,g,h,i,j=this,k=0,l=10;return _.each(j.getMenuItemControls(),function(a){!1!==a.setting()&&(l=Math.max(l,a.priority()),0===a.setting().menu_item_parent&&(k=Math.max(k,a.setting().position)))}),k+=1,l+=1,d=c.extend({},a.Menus.data.defaultSettingValues.nav_menu_item,d,{nav_menu_term_id:j.params.menu_id,original_title:d.title,position:k}),delete d.id,i=a.Menus.generatePlaceholderAutoIncrementId(),e="nav_menu_item["+String(i)+"]",f={type:"nav_menu_item",transport:"postMessage",previewer:a.previewer},g=a.create(e,e,{},f),g.set(d),h=new a.controlConstructor.nav_menu_item(e,{params:{type:"nav_menu_item",content:'<li id="customize-control-nav_menu_item-'+String(i)+'" class="customize-control customize-control-nav_menu_item"></li>',section:j.id,priority:l,active:!0,settings:{"default":e},menu_item_id:i},previewer:a.previewer}),a.control.add(e,h),g.preview(),j.debouncedReflowMenuItems(),b.a11y.speak(a.Menus.data.l10n.itemAdded),h}}),a.Menus.NewMenuControl=a.Control.extend({ready:function(){this._bindHandlers()},_bindHandlers:function(){var a=this,b=c("#customize-control-new_menu_name input"),d=c("#create-new-menu-submit");b.on("keydown",function(b){13===b.which&&a.submit()}),d.on("click",function(b){a.submit(),b.stopPropagation(),b.preventDefault()})},submit:function(){var d,f,g=this,h=g.container.closest(".accordion-section-new-menu"),i=h.find(".menu-name-field").first(),j=i.val(),k=a.Menus.generatePlaceholderAutoIncrementId();return j?(f="nav_menu["+String(k)+"]",a.create(f,f,{},{type:"nav_menu",transport:"postMessage",previewer:a.previewer}),a(f).set(c.extend({},a.Menus.data.defaultSettingValues.nav_menu,{name:j})),d=new a.Menus.MenuSection(f,{params:{id:f,panel:"nav_menus",title:e(j),customizeAction:a.Menus.data.l10n.customizingMenus,type:"nav_menu",priority:10,menu_id:k}}),a.section.add(f,d),i.val(""),i.removeClass("invalid"),b.a11y.speak(a.Menus.data.l10n.menuAdded),a.section(f).focus(),void c("#menu-to-edit").css("margin-top",0)):(i.addClass("invalid"),void i.focus())}}),c.extend(a.controlConstructor,{nav_menu_location:a.Menus.MenuLocationControl,nav_menu_item:a.Menus.MenuItemControl,nav_menu:a.Menus.MenuControl,nav_menu_name:a.Menus.MenuNameControl,nav_menu_auto_add:a.Menus.MenuAutoAddControl,new_menu:a.Menus.NewMenuControl}),c.extend(a.panelConstructor,{nav_menus:a.Menus.MenusPanel}),c.extend(a.sectionConstructor,{nav_menu:a.Menus.MenuSection,new_menu:a.Menus.NewMenuSection}),a.bind("ready",function(){a.Menus.availableMenuItemsPanel=new a.Menus.AvailableMenuItemsPanelView({collection:a.Menus.availableMenuItems}),a.bind("saved",function(b){(b.nav_menu_updates||b.nav_menu_item_updates)&&a.Menus.applySavedData(b)}),a.previewer.bind("refresh",function(){a.previewer.refresh()})}),a.Menus.applySavedData=function(d){var e={};_(d.nav_menu_updates).each(function(d){var f,g,h,i,j,k,l,m,n,o,p,q;if("inserted"===d.status){if(!d.previous_term_id)throw new Error("Expected previous_term_id");if(!d.term_id)throw new Error("Expected term_id");if(f="nav_menu["+String(d.previous_term_id)+"]",!a.has(f))throw new Error("Expected setting to exist: "+f);if(i=a(f),!a.section.has(f))throw new Error("Expected control to exist: "+f);if(m=a.section(f),l=i.get(),!l)throw new Error("Did not expect setting to be empty (deleted).");l=c.extend(_.clone(l),d.saved_value),e[d.previous_term_id]=d.term_id,g="nav_menu["+String(d.term_id)+"]",j=a.create(g,g,l,{type:"nav_menu",transport:"postMessage",previewer:a.previewer}),m.expanded()&&m.collapse(),n=new a.Menus.MenuSection(g,{params:{id:g,panel:"nav_menus",title:l.name,customizeAction:a.Menus.data.l10n.customizingMenus,type:"nav_menu",priority:m.priority.get(),active:!0,menu_id:d.term_id}}),a.section.add(g,n),a.control.each(function(b){if(b.extended(a.controlConstructor.widget_form)&&"nav_menu"===b.params.widget_id_base){var c,e,f;c=b.container.find("select"),e=c.find("option[value="+String(d.previous_term_id)+"]"),f=c.find("option[value="+String(d.term_id)+"]"),f.prop("selected",e.prop("selected")),e.remove()}}),i.callbacks.disable(),i.set(!1),i.preview(),j.preview(),i._dirty=!1,m.container.remove(),a.section.remove(f),q=0,a.each(function(a){/^nav_menu\[/.test(a.id)&&!1!==a()&&(q+=1)}),p=c("#available-widgets-list .widget-tpl:has( input.id_base[ value=nav_menu ] )"),p.find(".nav-menu-widget-form-controls:first").toggle(0!==q),p.find(".nav-menu-widget-no-menus-message:first").toggle(0===q),p.find("option[value="+String(d.previous_term_id)+"]").remove(),b.customize.control.each(function(a){/^nav_menu_locations\[/.test(a.id)&&a.container.find("option[value="+String(d.previous_term_id)+"]").remove()}),a.each(function(b){var c=a.state("saved").get();/^nav_menu_locations\[/.test(b.id)&&b.get()===d.previous_term_id&&(b.set(d.term_id),b._dirty=!1,a.state("saved").set(c),b.preview())}),m.expanded.get()&&n.expand()}else if("updated"===d.status){if(h="nav_menu["+String(d.term_id)+"]",!a.has(h))throw new Error("Expected setting to exist: "+h);k=a(h),_.isEqual(d.saved_value,k.get())||(o=a.state("saved").get(),k.set(d.saved_value),k._dirty=!1,a.state("saved").set(o))}}),_(d.nav_menu_item_updates).each(function(b){var c,d,f,g,h,i,j;if("inserted"===b.status){if(!b.previous_post_id)throw new Error("Expected previous_post_id");if(!b.post_id)throw new Error("Expected post_id");if(c="nav_menu_item["+String(b.previous_post_id)+"]",!a.has(c))throw new Error("Expected setting to exist: "+c);if(f=a(c),!a.control.has(c))throw new Error("Expected control to exist: "+c);if(i=a.control(c),h=f.get(),!h)throw new Error("Did not expect setting to be empty (deleted).");h=_.clone(h),e[h.nav_menu_term_id]&&(h.nav_menu_term_id=e[h.nav_menu_term_id]),d="nav_menu_item["+String(b.post_id)+"]",g=a.create(d,d,h,{type:"nav_menu_item",transport:"postMessage",previewer:a.previewer}),j=new a.controlConstructor.nav_menu_item(d,{params:{type:"nav_menu_item",content:'<li id="customize-control-nav_menu_item-'+String(b.post_id)+'" class="customize-control customize-control-nav_menu_item"></li>',menu_id:b.post_id,section:"nav_menu["+String(h.nav_menu_term_id)+"]",priority:i.priority.get(),active:!0,settings:{"default":d},menu_item_id:b.post_id},previewer:a.previewer}),i.container.remove(),a.control.remove(c),a.control.add(d,j),f.callbacks.disable(),f.set(!1),f.preview(),g.preview(),f._dirty=!1,j.container.toggleClass("menu-item-edit-inactive",i.container.hasClass("menu-item-edit-inactive"))}}),_.each(d.widget_nav_menu_updates,function(b,c){var d=a(c);d&&(d._value=b,d.preview())})},a.Menus.focusMenuItemControl=function(b){var c=a.Menus.getMenuItemControl(b);c&&c.focus()},a.Menus.getMenuControl=function(b){return a.control("nav_menu["+b+"]")},a.Menus.getMenuItemControl=function(b){return a.control(d(b))}}(wp.customize,wp,jQuery);
\ No newline at end of file
+!function(a,b,c){"use strict";function d(a){return"nav_menu_item["+a+"]"}function e(b){return b=b||"",b=c("<div>").text(b).html(),b=c.trim(b),b||a.Menus.data.l10n.unnamed}wpNavMenu.originalInit=wpNavMenu.init,wpNavMenu.options.menuItemDepthPerLevel=20,wpNavMenu.options.sortableItems="> .customize-control-nav_menu_item",wpNavMenu.options.targetTolerance=10,wpNavMenu.init=function(){this.jQueryExtensions()},a.Menus=a.Menus||{},a.Menus.data={nonce:"",itemTypes:[],l10n:{},menuItemTransport:"postMessage",phpIntMax:0,defaultSettingValues:{nav_menu:{},nav_menu_item:{}}},"undefined"!=typeof _wpCustomizeNavMenusSettings&&c.extend(a.Menus.data,_wpCustomizeNavMenusSettings),a.Menus.generatePlaceholderAutoIncrementId=function(){return-Math.ceil(a.Menus.data.phpIntMax*Math.random())},a.Menus.AvailableItemModel=Backbone.Model.extend(c.extend({id:null},a.Menus.data.defaultSettingValues.nav_menu_item)),a.Menus.AvailableItemCollection=Backbone.Collection.extend({model:a.Menus.AvailableItemModel,sort_key:"order",comparator:function(a){return-a.get(this.sort_key)},sortByField:function(a){this.sort_key=a,this.sort()}}),a.Menus.availableMenuItems=new a.Menus.AvailableItemCollection(a.Menus.data.availableMenuItems),a.Menus.AvailableMenuItemsPanelView=b.Backbone.View.extend({el:"#available-menu-items",events:{"input #menu-items-search":"debounceSearch","keyup #menu-items-search":"debounceSearch","focus .menu-item-tpl":"focus","click .menu-item-tpl":"_submit","click #custom-menu-item-submit":"_submitLink","keypress #custom-menu-item-name":"_submitLink",keydown:"keyboardAccessible"},selected:null,currentMenuControl:null,debounceSearch:null,$search:null,searchTerm:"",rendered:!1,pages:{},sectionContent:"",loading:!1,initialize:function(){var b=this;a.panel.has("nav_menus")&&(this.$search=c("#menu-items-search"),this.sectionContent=this.$el.find(".accordion-section-content"),this.debounceSearch=_.debounce(b.search,500),_.bindAll(this,"close"),c("#customize-controls, .customize-section-back").on("click keydown",function(a){var d=c(a.target).is(".item-delete, .item-delete *"),e=c(a.target).is(".add-new-menu-item, .add-new-menu-item *");!c("body").hasClass("adding-menu-items")||d||e||b.close()}),c(".clear-results").on("click keydown",function(a){("keydown"!==a.type||13===a.which||32===a.which)&&(a.preventDefault(),c("#menu-items-search").val("").focus(),a.target.value="",b.search(a))}),this.$el.on("input","#custom-menu-item-name.invalid, #custom-menu-item-url.invalid",function(){c(this).removeClass("invalid")}),a.panel("nav_menus").container.bind("expanded",function(){b.rendered||(b.initList(),b.rendered=!0)}),this.sectionContent.scroll(function(){var a=b.$el.find(".accordion-section.open .accordion-section-content").prop("scrollHeight"),d=b.$el.find(".accordion-section.open").height();if(!b.loading&&c(this).scrollTop()>.75*a-d){var e=c(this).data("type"),f=c(this).data("object");"search"===e?b.searchTerm&&b.doSearch(b.pages.search):b.loadItems(e,f)}}),a.previewer.bind("url",this.close))},search:function(a){var b=c("#available-menu-items-search"),d=c("#available-menu-items .accordion-section").not(b);a&&this.searchTerm!==a.target.value&&(""===a.target.value||b.hasClass("open")?""===a.target.value&&(b.removeClass("open"),d.show(),b.find(".clear-results").prop("tabIndex",-1).removeClass("is-visible")):(d.fadeOut(100),b.find(".accordion-section-content").slideDown("fast"),b.addClass("open"),b.find(".clear-results").prop("tabIndex",0).addClass("is-visible")),this.searchTerm=a.target.value,this.pages.search=1,this.doSearch(1))},doSearch:function(d){var e,f=this,g=c("#available-menu-items-search"),h=g.find(".accordion-section-content"),i=b.template("available-menu-item");if(f.currentRequest&&f.currentRequest.abort(),!(0>d)){if(d>1)g.addClass("loading-more"),h.attr("aria-busy","true"),b.a11y.speak(a.Menus.data.l10n.itemsLoadingMore);else if(""===f.searchTerm)return h.html(""),void b.a11y.speak("");g.addClass("loading"),f.loading=!0,e={"customize-menus-nonce":a.Menus.data.nonce,wp_customize:"on",search:f.searchTerm,page:d},f.currentRequest=b.ajax.post("search-available-menu-items-customizer",e),f.currentRequest.done(function(c){var e;1===d&&h.empty(),g.removeClass("loading loading-more"),h.attr("aria-busy","false"),g.addClass("open"),f.loading=!1,e=new a.Menus.AvailableItemCollection(c.items),f.collection.add(e.models),e.each(function(a){h.append(i(a.attributes))}),20>e.length?f.pages.search=-1:f.pages.search=f.pages.search+1,e&&d>1?b.a11y.speak(a.Menus.data.l10n.itemsFoundMore.replace("%d",e.length)):e&&1===d&&b.a11y.speak(a.Menus.data.l10n.itemsFound.replace("%d",e.length))}),f.currentRequest.fail(function(a){a.message&&(h.empty().append(c('<p class="nothing-found"></p>').text(a.message)),b.a11y.speak(a.message)),f.pages.search=-1}),f.currentRequest.always(function(){g.removeClass("loading loading-more"),h.attr("aria-busy","false"),f.loading=!1,f.currentRequest=null})}},initList:function(){var b=this;_.each(a.Menus.data.itemTypes,function(a){b.pages[a.type+":"+a.object]=0,b.loadItems(a.type,a.object)})},loadItems:function(d,e){var f,g,h,i,j=this;h=b.template("available-menu-item"),-1!==j.pages[d+":"+e]&&(i=c("#available-menu-items-"+d+"-"+e),i.find(".accordion-section-title").addClass("loading"),j.loading=!0,f={"customize-menus-nonce":a.Menus.data.nonce,wp_customize:"on",type:d,object:e,page:j.pages[d+":"+e]},g=b.ajax.post("load-available-menu-items-customizer",f),g.done(function(b){var c,f;return c=b.items,0===c.length?(0===j.pages[d+":"+e]&&i.addClass("cannot-expand").removeClass("loading").find(".accordion-section-title > button").prop("tabIndex",-1),void(j.pages[d+":"+e]=-1)):(c=new a.Menus.AvailableItemCollection(c),j.collection.add(c.models),f=i.find(".accordion-section-content"),c.each(function(a){f.append(h(a.attributes))}),void(j.pages[d+":"+e]+=1))}),g.fail(function(a){"undefined"!=typeof console&&console.error&&console.error(a)}),g.always(function(){i.find(".accordion-section-title").removeClass("loading"),j.loading=!1}))},itemSectionHeight:function(){var a,b,c,d;b=window.innerHeight,a=this.$el.find(".accordion-section:not( #available-menu-items-search ) .accordion-section-content"),c=46*(2+a.length)-13,d=b-c,d>120&&290>d&&a.css("max-height",d)},select:function(a){this.selected=c(a),this.selected.siblings(".menu-item-tpl").removeClass("selected"),this.selected.addClass("selected")},focus:function(a){this.select(c(a.currentTarget))},_submit:function(a){("keypress"!==a.type||13===a.which||32===a.which)&&this.submit(c(a.currentTarget))},submit:function(a){var b,d;a||(a=this.selected),a&&this.currentMenuControl&&(this.select(a),b=c(this.selected).data("menu-item-id"),d=this.collection.findWhere({id:b}),d&&(this.currentMenuControl.addItemToMenu(d.attributes),c(a).find(".menu-item-handle").addClass("item-added")))},_submitLink:function(a){("keypress"!==a.type||13===a.which)&&this.submitLink()},submitLink:function(){var b,d=c("#custom-menu-item-name"),e=c("#custom-menu-item-url");if(this.currentMenuControl){if(""===d.val())return void d.addClass("invalid");if(""===e.val()||"http://"===e.val())return void e.addClass("invalid");b={title:d.val(),url:e.val(),type:"custom",type_label:a.Menus.data.l10n.custom_label,object:""},this.currentMenuControl.addItemToMenu(b),e.val("http://"),d.val("")}},open:function(a){this.currentMenuControl=a,this.itemSectionHeight(),c("body").addClass("adding-menu-items"),_(this.currentMenuControl.getMenuItemControls()).each(function(a){a.collapseForm()}),this.$el.find(".selected").removeClass("selected"),this.$search.focus()},close:function(a){a=a||{},a.returnFocus&&this.currentMenuControl&&this.currentMenuControl.container.find(".add-new-menu-item").focus(),this.currentMenuControl=null,this.selected=null,c("body").removeClass("adding-menu-items"),c("#available-menu-items .menu-item-handle.item-added").removeClass("item-added"),this.$search.val("")},keyboardAccessible:function(a){var b=13===a.which,d=27===a.which,e=9===a.which&&a.shiftKey,f=c(a.target).is(this.$search);(!b||this.$search.val())&&(f&&e?(this.currentMenuControl.container.find(".add-new-menu-item").focus(),a.preventDefault()):d&&this.close({returnFocus:!0}))}}),a.Menus.MenusPanel=a.Panel.extend({attachEvents:function(){a.Panel.prototype.attachEvents.call(this);var b=this,d=b.container.find(".panel-meta"),e=d.find(".customize-help-toggle"),f=d.find(".customize-panel-description"),g=c("#screen-options-wrap"),h=d.find(".customize-screen-options-toggle");h.on("click keydown",function(b){return a.utils.isKeydownButNotEnterEvent(b)?void 0:(b.preventDefault(),f.not(":hidden")&&(f.slideUp("fast"),e.attr("aria-expanded","false")),"true"===h.attr("aria-expanded")?(h.attr("aria-expanded","false"),d.removeClass("open"),d.removeClass("active-menu-screen-options"),g.slideUp("fast")):(h.attr("aria-expanded","true"),d.addClass("open"),d.addClass("active-menu-screen-options"),g.slideDown("fast")),!1)}),e.on("click keydown",function(b){a.utils.isKeydownButNotEnterEvent(b)||(b.preventDefault(),"true"===h.attr("aria-expanded")&&(h.attr("aria-expanded","false"),e.attr("aria-expanded","true"),d.addClass("open"),d.removeClass("active-menu-screen-options"),g.slideUp("fast"),f.slideDown("fast")))})},ready:function(){var a=this;this.container.find(".hide-column-tog").click(function(){var b=c(this),d=b.val();b.prop("checked")?a.checked(d):a.unchecked(d),a.saveManageColumnsState()}),this.container.find(".hide-column-tog").each(function(){var b=c(this),d=b.val();b.prop("checked")?a.checked(d):a.unchecked(d)})},saveManageColumnsState:function(){var a=this.hidden();c.post(b.ajax.settings.url,{action:"hidden-columns",hidden:a,screenoptionnonce:c("#screenoptionnonce").val(),page:"nav-menus"})},checked:function(a){this.container.addClass("field-"+a+"-active")},unchecked:function(a){this.container.removeClass("field-"+a+"-active")},hidden:function(){this.hidden=function(){return c(".hide-column-tog").not(":checked").map(function(){var a=this.id;return a.substring(a,a.length-5)}).get().join(",")}}}),a.Menus.MenuSection=a.Section.extend({initialize:function(b,d){var e=this;a.Section.prototype.initialize.call(e,b,d),e.deferred.initSortables=c.Deferred()},ready:function(){var b=this;if("undefined"==typeof b.params.menu_id)throw new Error("params.menu_id was not defined");b.active.validate=function(){return a.has(b.id)?!!a(b.id).get():!1},b.populateControls(),b.navMenuLocationSettings={},b.assignedLocations=new a.Value([]),a.each(function(a,c){var d=c.match(/^nav_menu_locations\[(.+?)]/);d&&(b.navMenuLocationSettings[d[1]]=a,a.bind(function(){b.refreshAssignedLocations()}))}),b.assignedLocations.bind(function(a){b.updateAssignedLocationsInSectionTitle(a)}),b.refreshAssignedLocations(),a.bind("pane-contents-reflowed",function(){b.container.parent().length&&(b.container.find(".menu-item .menu-item-reorder-nav button").attr({tabindex:"0","aria-hidden":"false"}),b.container.find(".menu-item.move-up-disabled .menus-move-up").attr({tabindex:"-1","aria-hidden":"true"}),b.container.find(".menu-item.move-down-disabled .menus-move-down").attr({tabindex:"-1","aria-hidden":"true"}),b.container.find(".menu-item.move-left-disabled .menus-move-left").attr({tabindex:"-1","aria-hidden":"true"}),b.container.find(".menu-item.move-right-disabled .menus-move-right").attr({tabindex:"-1","aria-hidden":"true"}))})},populateControls:function(){var b,c,d,e,f,g=this;b=g.id+"[name]",e=a.control(b),e||(e=new a.controlConstructor.nav_menu_name(b,{params:{type:"nav_menu_name",content:'<li id="customize-control-'+g.id.replace("[","-").replace("]","")+'-name" class="customize-control customize-control-nav_menu_name"></li>',label:a.Menus.data.l10n.menuNameLabel,active:!0,section:g.id,priority:0,settings:{"default":g.id}}}),a.control.add(e.id,e),e.active.set(!0)),d=a.control(g.id),d||(d=new a.controlConstructor.nav_menu(g.id,{params:{type:"nav_menu",content:'<li id="customize-control-'+g.id.replace("[","-").replace("]","")+'" class="customize-control customize-control-nav_menu"></li>',section:g.id,priority:998,active:!0,settings:{"default":g.id},menu_id:g.params.menu_id}}),a.control.add(d.id,d),d.active.set(!0)),c=g.id+"[auto_add]",f=a.control(c),f||(f=new a.controlConstructor.nav_menu_auto_add(c,{params:{type:"nav_menu_auto_add",content:'<li id="customize-control-'+g.id.replace("[","-").replace("]","")+'-auto-add" class="customize-control customize-control-nav_menu_auto_add"></li>',label:"",active:!0,section:g.id,priority:999,settings:{"default":g.id}}}),a.control.add(f.id,f),f.active.set(!0))},refreshAssignedLocations:function(){var a=this,b=a.params.menu_id,c=[];_.each(a.navMenuLocationSettings,function(a,d){a()===b&&c.push(d)}),a.assignedLocations.set(c)},updateAssignedLocationsInSectionTitle:function(b){var d,e=this;d=e.container.find(".accordion-section-title:first"),d.find(".menu-in-location").remove(),_.each(b,function(b){var e=c('<span class="menu-in-location"></span>');e.text(a.Menus.data.l10n.menuLocation.replace("%s",b)),d.append(e)}),e.container.toggleClass("assigned-to-menu-location",0!==b.length)},onChangeExpanded:function(b,d){var e=this;b&&(wpNavMenu.menuList=e.container.find(".accordion-section-content:first"),wpNavMenu.targetList=wpNavMenu.menuList,c("#menu-to-edit").removeAttr("id"),wpNavMenu.menuList.attr("id","menu-to-edit").addClass("menu"),_.each(a.section(e.id).controls(),function(a){"nav_menu_item"===a.params.type&&a.actuallyEmbed()}),"resolved"!==e.deferred.initSortables.state()&&(wpNavMenu.initSortables(),e.deferred.initSortables.resolve(wpNavMenu.menuList),a.control("nav_menu["+String(e.params.menu_id)+"]").reflowMenuItems())),a.Section.prototype.onChangeExpanded.call(e,b,d)}}),a.Menus.NewMenuSection=a.Section.extend({attachEvents:function(){var a=this;this.container.on("click",".add-menu-toggle",function(){a.expanded()?a.collapse():a.expand()})},onChangeExpanded:function(a){var b=this,c=b.container.find(".add-menu-toggle"),d=b.container.find(".new-menu-section-content"),e=b.container.closest(".wp-full-overlay-sidebar-content");a?(c.addClass("open"),c.attr("aria-expanded","true"),d.slideDown("fast",function(){e.scrollTop(e.height())})):(c.removeClass("open"),c.attr("aria-expanded","false"),d.slideUp("fast"),d.find(".menu-name-field").removeClass("invalid"))}}),a.Menus.MenuLocationControl=a.Control.extend({initialize:function(b,c){var d=this,e=b.match(/^nav_menu_locations\[(.+?)]/);d.themeLocation=e[1],a.Control.prototype.initialize.call(d,b,c)},ready:function(){var b=this,c=/^nav_menu\[(-?\d+)]/;b.setting.validate=function(a){return parseInt(a,10)},a.bind("add",function(a){var d,f,g=a.id.match(c);g&&!1!==a()&&(f=g[1],d=new Option(e(a().name),f),b.container.find("select").append(d))}),a.bind("remove",function(a){var d,e=a.id.match(c);e&&(d=parseInt(e[1],10),b.setting()===d&&b.setting.set(""),b.container.find("option[value="+d+"]").remove())}),a.bind("change",function(a){var d,f=a.id.match(c);f&&(d=parseInt(f[1],10),!1===a()?(b.setting()===d&&b.setting.set(""),b.container.find("option[value="+d+"]").remove()):b.container.find("option[value="+d+"]").text(e(a().name)))})}}),a.Menus.MenuItemControl=a.Control.extend({initialize:function(b,c){var d=this;a.Control.prototype.initialize.call(d,b,c),d.active.validate=function(){var b,c=a.section(d.section());return b=c?c.active():!1}},embed:function(){var b,c=this,d=c.section();d&&(b=a.section(d),(b&&b.expanded()||a.settings.autofocus.control===c.id)&&c.actuallyEmbed())},actuallyEmbed:function(){var a=this;"resolved"!==a.deferred.embedded.state()&&(a.renderContent(),a.deferred.embedded.resolve())},ready:function(){if("undefined"==typeof this.params.menu_item_id)throw new Error("params.menu_item_id was not defined");this._setupControlToggle(),this._setupReorderUI(),this._setupUpdateUI(),this._setupRemoveUI(),this._setupLinksUI(),this._setupTitleUI()},_setupControlToggle:function(){var a=this;this.container.find(".menu-item-handle").on("click",function(b){b.preventDefault(),b.stopPropagation();var c=a.getMenuControl();c.isReordering||c.isSorting||a.toggleForm()})},_setupReorderUI:function(){var a,d,e=this;a=b.template("menu-item-reorder-nav"),e.container.find(".item-controls").after(a),d=e.container.find(".menu-item-reorder-nav"),d.find(".menus-move-up, .menus-move-down, .menus-move-left, .menus-move-right").on("click",function(){var a=c(this);a.focus();var b=a.is(".menus-move-up"),d=a.is(".menus-move-down"),f=a.is(".menus-move-left"),g=a.is(".menus-move-right");b?e.moveUp():d?e.moveDown():f?e.moveLeft():g&&e.moveRight(),a.focus()})},_setupUpdateUI:function(){var b=this,c=b.setting();b.elements={},b.elements.url=new a.Element(b.container.find(".edit-menu-item-url")),b.elements.title=new a.Element(b.container.find(".edit-menu-item-title")),b.elements.attr_title=new a.Element(b.container.find(".edit-menu-item-attr-title")),b.elements.target=new a.Element(b.container.find(".edit-menu-item-target")),b.elements.classes=new a.Element(b.container.find(".edit-menu-item-classes")),b.elements.xfn=new a.Element(b.container.find(".edit-menu-item-xfn")),b.elements.description=new a.Element(b.container.find(".edit-menu-item-description")),_.each(b.elements,function(a,d){a.bind(function(c){a.element.is("input[type=checkbox]")&&(c=c?a.element.val():"");var e=b.setting();e&&e[d]!==c&&(e=_.clone(e),e[d]=c,b.setting.set(e))}),c&&("classes"!==d&&"xfn"!==d||!_.isArray(c[d])?a.set(c[d]):a.set(c[d].join(" ")))}),b.setting.bind(function(c,d){var e,f=b.params.menu_item_id,g=[],h=[];!1===c?(e=a.control("nav_menu["+String(d.nav_menu_term_id)+"]"),b.container.remove(),_.each(e.getMenuItemControls(),function(a){d.menu_item_parent===a.setting().menu_item_parent&&a.setting().position>d.position?g.push(a):a.setting().menu_item_parent===f&&h.push(a)}),_.each(g,function(a){var b=_.clone(a.setting());b.position+=h.length,a.setting.set(b)}),_.each(h,function(a,b){var c=_.clone(a.setting());c.position=d.position+b,c.menu_item_parent=d.menu_item_parent,a.setting.set(c)}),e.debouncedReflowMenuItems()):(_.each(c,function(a,d){b.elements[d]&&b.elements[d].set(c[d])}),b.container.find(".menu-item-data-parent-id").val(c.menu_item_parent),(c.position!==d.position||c.menu_item_parent!==d.menu_item_parent)&&b.getMenuControl().debouncedReflowMenuItems())})},_setupRemoveUI:function(){var d,e=this;d=e.container.find(".item-delete"),d.on("click",function(){var d,f,g,h=!0;c("body").hasClass("adding-menu-items")||(h=!1),f=e.container.nextAll(".customize-control-nav_menu_item:visible").first(),g=e.container.prevAll(".customize-control-nav_menu_item:visible").first(),d=f.length?f.find(!1===h?".item-edit":".item-delete").first():g.length?g.find(!1===h?".item-edit":".item-delete").first():e.container.nextAll(".customize-control-nav_menu").find(".add-new-menu-item").first(),e.container.slideUp(function(){e.setting.set(!1),b.a11y.speak(a.Menus.data.l10n.itemDeleted),d.focus()})})},_setupLinksUI:function(){var b;b=this.container.find("a.original-link"),b.on("click",function(b){b.preventDefault(),a.previewer.previewUrl(b.target.toString())})},_setupTitleUI:function(){var b=this;b.setting.bind(function(c){if(c){var d=b.container.find(".menu-item-title"),e=c.title||a.Menus.data.l10n.untitled;c._invalid&&(e=a.Menus.data.l10n.invalidTitleTpl.replace("%s",e)),c.title?d.text(e).removeClass("no-title"):d.text(e).addClass("no-title")}})},getDepth:function(){var b=this,c=b.setting(),d=0;if(!c)return 0;for(;c&&c.menu_item_parent&&(d+=1,b=a.control("nav_menu_item["+c.menu_item_parent+"]"));)c=b.setting();return d},renderContent:function(){var b,c=this,d=c.setting();c.params.title=d.title||"",c.params.depth=c.getDepth(),c.container.data("item-depth",c.params.depth),b=["menu-item","menu-item-depth-"+String(c.params.depth),"menu-item-"+d.object,"menu-item-edit-inactive"],d._invalid?(b.push("menu-item-invalid"),c.params.title=a.Menus.data.l10n.invalidTitleTpl.replace("%s",c.params.title)):"draft"===d.status&&(b.push("pending"),c.params.title=a.Menus.data.pendingTitleTpl.replace("%s",c.params.title)),c.params.el_classes=b.join(" "),c.params.item_type_label=d.type_label,c.params.item_type=d.type,c.params.url=d.url,c.params.target=d.target,c.params.attr_title=d.attr_title,c.params.classes=_.isArray(d.classes)?d.classes.join(" "):d.classes,c.params.attr_title=d.attr_title,c.params.xfn=d.xfn,c.params.description=d.description,c.params.parent=d.menu_item_parent,c.params.original_title=d.original_title||"",c.container.addClass(c.params.el_classes),a.Control.prototype.renderContent.call(c)},getMenuControl:function(){var b=this,c=b.setting();return c&&c.nav_menu_term_id?a.control("nav_menu["+c.nav_menu_term_id+"]"):null},expandControlSection:function(){var a=this.container.closest(".accordion-section");a.hasClass("open")||a.find(".accordion-section-title:first").trigger("click")},expandForm:function(){this.toggleForm(!0)},collapseForm:function(){this.toggleForm(!1)},toggleForm:function(b){var c,d,e,f=this;c=this.container,d=c.find(".menu-item-settings:first"),"undefined"==typeof b&&(b=!d.is(":visible")),d.is(":visible")!==b&&(b?(a.control.each(function(a){f.params.type===a.params.type&&f!==a&&a.collapseForm()}),e=function(){c.removeClass("menu-item-edit-inactive").addClass("menu-item-edit-active"),f.container.trigger("expanded")},c.find(".item-edit").attr("aria-expanded","true"),d.slideDown("fast",e),f.container.trigger("expand")):(e=function(){c.addClass("menu-item-edit-inactive").removeClass("menu-item-edit-active"),f.container.trigger("collapsed")},f.container.trigger("collapse"),c.find(".item-edit").attr("aria-expanded","false"),d.slideUp("fast",e)))},focus:function(){var a,b=this;b.expandControlSection(),b.expandForm(),a=b.container.find(".menu-item-settings").find("input, select, textarea, button, object, a[href], [tabindex]").filter(":visible"),a.first().focus()},moveUp:function(){this._changePosition(-1),b.a11y.speak(a.Menus.data.l10n.movedUp)},moveDown:function(){this._changePosition(1),b.a11y.speak(a.Menus.data.l10n.movedDown)},moveLeft:function(){this._changeDepth(-1),b.a11y.speak(a.Menus.data.l10n.movedLeft)},moveRight:function(){this._changeDepth(1),b.a11y.speak(a.Menus.data.l10n.movedRight)},_changePosition:function(a){var b,d,e=this,f=_.clone(e.setting()),g=[];if(1!==a&&-1!==a)throw new Error("Offset changes by 1 are only supported.");if(e.setting()){if(_(e.getMenuControl().getMenuItemControls()).each(function(a){a.setting().menu_item_parent===f.menu_item_parent&&g.push(a.setting)}),g.sort(function(a,b){return a().position-b().position}),d=_.indexOf(g,e.setting),-1===d)throw new Error("Expected setting to be among siblings.");0===d&&0>a||d===g.length-1&&a>0||(b=g[d+a],b&&b.set(c.extend(_.clone(b()),{position:f.position})),f.position+=a,e.setting.set(f))}},_changeDepth:function(b){if(1!==b&&-1!==b)throw new Error("Offset changes by 1 are only supported.");var d,e,f,g=this,h=_.clone(g.setting()),i=[];if(_(g.getMenuControl().getMenuItemControls()).each(function(a){a.setting().menu_item_parent===h.menu_item_parent&&i.push(a)}),i.sort(function(a,b){return a.setting().position-b.setting().position}),d=_.indexOf(i,g),-1===d)throw new Error("Expected control to be among siblings.");if(-1===b){if(!h.menu_item_parent)return;f=a.control("nav_menu_item["+h.menu_item_parent+"]"),_(i).chain().slice(d).each(function(a,b){a.setting.set(c.extend({},a.setting(),{menu_item_parent:g.params.menu_item_id,position:b}))}),_(g.getMenuControl().getMenuItemControls()).each(function(a){var b,d;d=a.setting().menu_item_parent===f.setting().menu_item_parent&&a.setting().position>f.setting().position,d&&(b=_.clone(a.setting()),a.setting.set(c.extend(b,{position:b.position+1})))}),h.position=f.setting().position+1,h.menu_item_parent=f.setting().menu_item_parent,g.setting.set(h)}else if(1===b){if(0===d)return;e=i[d-1],h.menu_item_parent=e.params.menu_item_id,h.position=0,_(g.getMenuControl().getMenuItemControls()).each(function(a){a.setting().menu_item_parent===h.menu_item_parent&&(h.position=Math.max(h.position,a.setting().position))}),h.position+=1,g.setting.set(h)}}}),a.Menus.MenuNameControl=a.Control.extend({ready:function(){var b=this,c=b.setting();b.active.validate=function(){var c,d=a.section(b.section());return c=d?d.active():!1},b.nameElement=new a.Element(b.container.find(".menu-name-field")),b.nameElement.bind(function(a){var c=b.setting();c&&c.name!==a&&(c=_.clone(c),c.name=a,b.setting.set(c))}),c&&b.nameElement.set(c.name),b.setting.bind(function(a){a&&b.nameElement.set(a.name)})}}),a.Menus.MenuAutoAddControl=a.Control.extend({ready:function(){var b=this,c=b.setting();b.active.validate=function(){var c,d=a.section(b.section());return c=d?d.active():!1},b.autoAddElement=new a.Element(b.container.find("input[type=checkbox].auto_add")),b.autoAddElement.bind(function(a){var c=b.setting();c&&c.name!==a&&(c=_.clone(c),c.auto_add=a,b.setting.set(c))}),c&&b.autoAddElement.set(c.auto_add),b.setting.bind(function(a){a&&b.autoAddElement.set(a.auto_add)})}}),a.Menus.MenuControl=a.Control.extend({ready:function(){var b,d,f,g=this,h=g.params.menu_id,i=g.setting();if("undefined"==typeof this.params.menu_id)throw new Error("params.menu_id was not defined");g.active.validate=function(){var b,c=a.section(g.section());return b=c?c.active():!1},g.$controlSection=g.container.closest(".control-section"),g.$sectionContent=g.container.closest(".accordion-section-content"),this._setupModel(),a.section(g.section(),function(a){a.deferred.initSortables.done(function(a){g._setupSortable(a)})}),this._setupAddition(),this._setupLocations(),this._setupTitle(),i&&(b=e(i.name),a.control.each(function(c){c.extended(a.controlConstructor.widget_form)&&"nav_menu"===c.params.widget_id_base&&(c.container.find(".nav-menu-widget-form-controls:first").show(),c.container.find(".nav-menu-widget-no-menus-message:first").hide(),f=c.container.find("select"),0===f.find("option[value="+String(h)+"]").length&&f.append(new Option(b,h)))}),d=c("#available-widgets-list .widget-tpl:has( input.id_base[ value=nav_menu ] )"),d.find(".nav-menu-widget-form-controls:first").show(),d.find(".nav-menu-widget-no-menus-message:first").hide(),f=d.find(".widget-inside select:first"),0===f.find("option[value="+String(h)+"]").length&&f.append(new Option(b,h)))},_setupModel:function(){var b=this,c=b.params.menu_id;b.setting.bind(function(d){var f;!1===d?b._handleDeletion():(f=e(d.name),a.control.each(function(b){if(b.extended(a.controlConstructor.widget_form)&&"nav_menu"===b.params.widget_id_base){var d=b.container.find("select");d.find("option[value="+String(c)+"]").text(f)}}))}),b.container.find(".menu-delete").on("click",function(a){a.stopPropagation(),a.preventDefault(),b.setting.set(!1)})},_setupSortable:function(b){var c=this;if(!b.is(c.$sectionContent))throw new Error("Unexpected menuList.");b.on("sortstart",function(){c.isSorting=!0}),b.on("sortstop",function(){setTimeout(function(){var b=c.$sectionContent.sortable("toArray"),d=[],e=0,f=10;c.isSorting=!1,c.$sectionContent.scrollLeft(0),_.each(b,function(b){var c,e,f;f=b.match(/^customize-control-nav_menu_item-(-?\d+)$/,""),f&&(c=parseInt(f[1],10),e=a.control("nav_menu_item["+String(c)+"]"),e&&d.push(e))}),_.each(d,function(a){if(!1!==a.setting()){var b=_.clone(a.setting());e+=1,f+=1,b.position=e,a.priority(f),b.menu_item_parent=parseInt(a.container.find(".menu-item-data-parent-id").val(),10),b.menu_item_parent||(b.menu_item_parent=0),a.setting.set(b)}})})}),c.isReordering=!1,this.container.find(".reorder-toggle").on("click",function(){c.toggleReordering(!c.isReordering)})},_setupAddition:function(){var b=this;this.container.find(".add-new-menu-item").on("click",function(d){b.$sectionContent.hasClass("reordering")||(c("body").hasClass("adding-menu-items")?(c(this).attr("aria-expanded","false"),a.Menus.availableMenuItemsPanel.close(),d.stopPropagation()):(c(this).attr("aria-expanded","true"),a.Menus.availableMenuItemsPanel.open(b)))})},_handleDeletion:function(){var d,e,f,g=this,h=g.params.menu_id,i=0;d=a.section(g.section()),e=function(){d.container.remove(),a.section.remove(d.id)},d&&d.expanded()?d.collapse({completeCallback:function(){e(),b.a11y.speak(a.Menus.data.l10n.menuDeleted),a.panel("nav_menus").focus()}}):e(),a.each(function(a){/^nav_menu\[/.test(a.id)&&!1!==a()&&(i+=1)}),a.control.each(function(b){if(b.extended(a.controlConstructor.widget_form)&&"nav_menu"===b.params.widget_id_base){var c=b.container.find("select");c.val()===String(h)&&c.prop("selectedIndex",0).trigger("change"),b.container.find(".nav-menu-widget-form-controls:first").toggle(0!==i),b.container.find(".nav-menu-widget-no-menus-message:first").toggle(0===i),b.container.find("option[value="+String(h)+"]").remove()}}),f=c("#available-widgets-list .widget-tpl:has( input.id_base[ value=nav_menu ] )"),f.find(".nav-menu-widget-form-controls:first").toggle(0!==i),f.find(".nav-menu-widget-no-menus-message:first").toggle(0===i),f.find("option[value="+String(h)+"]").remove()},_setupLocations:function(){var b=this;b.container.find(".assigned-menu-location").each(function(){var d,f,g=c(this),h=g.find("input[type=checkbox]"),i=a("nav_menu_locations["+h.data("location-id")+"]");f=function(b){var c=a("nav_menu["+String(b)+"]");b&&c&&c()?g.find(".theme-location-set").show().find("span").text(e(c().name)):g.find(".theme-location-set").hide()},d=new a.Element(h),d.set(i.get()===b.params.menu_id),h.on("change",function(){i.set(this.checked?b.params.menu_id:0)}),i.bind(function(a){d.set(a===b.params.menu_id),f(a)}),f(i.get())})},_setupTitle:function(){var b=this;b.setting.bind(function(d){if(d){var f=b.container.closest(".accordion-section"),g=b.params.menu_id,h=f.find(".accordion-section-title"),i=f.find(".customize-section-title h3"),j=f.find(".menu-in-location"),k=i.find(".customize-action"),l=e(d.name);h.text(l),j.length&&j.appendTo(h),i.text(l),k.length&&k.prependTo(i),a.control.each(function(a){/^nav_menu_locations\[/.test(a.id)&&a.container.find("option[value="+g+"]").text(l)}),f.find(".customize-control-checkbox input").each(function(){c(this).prop("checked")&&c(".current-menu-location-name-"+c(this).data("location-id")).text(l)})}})},toggleReordering:function(c){var d=this.container.find(".add-new-menu-item"),e=this.container.find(".reorder-toggle"),f=this.$sectionContent.find(".item-title");c=Boolean(c),c!==this.$sectionContent.hasClass("reordering")&&(this.isReordering=c,this.$sectionContent.toggleClass("reordering",c),this.$sectionContent.sortable(this.isReordering?"disable":"enable"),this.isReordering?(d.attr({tabindex:"-1","aria-hidden":"true"}),e.attr("aria-label",a.Menus.data.l10n.reorderLabelOff),b.a11y.speak(a.Menus.data.l10n.reorderModeOn),f.attr("aria-hidden","false")):(d.removeAttr("tabindex aria-hidden"),e.attr("aria-label",a.Menus.data.l10n.reorderLabelOn),b.a11y.speak(a.Menus.data.l10n.reorderModeOff),f.attr("aria-hidden","true")),c&&_(this.getMenuItemControls()).each(function(a){a.collapseForm()}))},getMenuItemControls:function(){var b=this,c=[],d=b.params.menu_id;return a.control.each(function(a){"nav_menu_item"===a.params.type&&a.setting()&&d===a.setting().nav_menu_term_id&&c.push(a)}),c},reflowMenuItems:function(){var a,b=this,c=b.getMenuItemControls();a=function(b){var c=[],d=b.currentParent;_.each(b.menuItemControls,function(a){d===a.setting().menu_item_parent&&c.push(a)}),c.sort(function(a,b){return a.setting().position-b.setting().position}),_.each(c,function(c){b.currentAbsolutePosition+=1,c.priority.set(b.currentAbsolutePosition),c.container.hasClass("menu-item-depth-"+String(b.currentDepth))||(_.each(c.container.prop("className").match(/menu-item-depth-\d+/g),function(a){c.container.removeClass(a)}),c.container.addClass("menu-item-depth-"+String(b.currentDepth))),c.container.data("item-depth",b.currentDepth),b.currentDepth+=1,b.currentParent=c.params.menu_item_id,a(b),b.currentDepth-=1,b.currentParent=d}),c.length&&(_(c).each(function(a){a.container.removeClass("move-up-disabled move-down-disabled move-left-disabled move-right-disabled"),0===b.currentDepth?a.container.addClass("move-left-disabled"):10===b.currentDepth&&a.container.addClass("move-right-disabled");
+}),c[0].container.addClass("move-up-disabled").addClass("move-right-disabled").toggleClass("move-down-disabled",1===c.length),c[c.length-1].container.addClass("move-down-disabled").toggleClass("move-up-disabled",1===c.length))},a({menuItemControls:c,currentParent:0,currentDepth:0,currentAbsolutePosition:0}),b.container.find(".reorder-toggle").toggle(c.length>1)},debouncedReflowMenuItems:_.debounce(function(){this.reflowMenuItems.apply(this,arguments)},0),addItemToMenu:function(d){var e,f,g,h,i,j=this,k=0,l=10;return _.each(j.getMenuItemControls(),function(a){!1!==a.setting()&&(l=Math.max(l,a.priority()),0===a.setting().menu_item_parent&&(k=Math.max(k,a.setting().position)))}),k+=1,l+=1,d=c.extend({},a.Menus.data.defaultSettingValues.nav_menu_item,d,{nav_menu_term_id:j.params.menu_id,original_title:d.title,position:k}),delete d.id,i=a.Menus.generatePlaceholderAutoIncrementId(),e="nav_menu_item["+String(i)+"]",f={type:"nav_menu_item",transport:"postMessage",previewer:a.previewer},g=a.create(e,e,{},f),g.set(d),h=new a.controlConstructor.nav_menu_item(e,{params:{type:"nav_menu_item",content:'<li id="customize-control-nav_menu_item-'+String(i)+'" class="customize-control customize-control-nav_menu_item"></li>',section:j.id,priority:l,active:!0,settings:{"default":e},menu_item_id:i},previewer:a.previewer}),a.control.add(e,h),g.preview(),j.debouncedReflowMenuItems(),b.a11y.speak(a.Menus.data.l10n.itemAdded),h}}),a.Menus.NewMenuControl=a.Control.extend({ready:function(){this._bindHandlers()},_bindHandlers:function(){var a=this,b=c("#customize-control-new_menu_name input"),d=c("#create-new-menu-submit");b.on("keydown",function(b){13===b.which&&a.submit()}),d.on("click",function(b){a.submit(),b.stopPropagation(),b.preventDefault()})},submit:function(){var d,f,g=this,h=g.container.closest(".accordion-section-new-menu"),i=h.find(".menu-name-field").first(),j=i.val(),k=a.Menus.generatePlaceholderAutoIncrementId();return j?(f="nav_menu["+String(k)+"]",a.create(f,f,{},{type:"nav_menu",transport:"postMessage",previewer:a.previewer}),a(f).set(c.extend({},a.Menus.data.defaultSettingValues.nav_menu,{name:j})),d=new a.Menus.MenuSection(f,{params:{id:f,panel:"nav_menus",title:e(j),customizeAction:a.Menus.data.l10n.customizingMenus,type:"nav_menu",priority:10,menu_id:k}}),a.section.add(f,d),i.val(""),i.removeClass("invalid"),b.a11y.speak(a.Menus.data.l10n.menuAdded),a.section(f).focus(),void c("#menu-to-edit").css("margin-top",0)):(i.addClass("invalid"),void i.focus())}}),c.extend(a.controlConstructor,{nav_menu_location:a.Menus.MenuLocationControl,nav_menu_item:a.Menus.MenuItemControl,nav_menu:a.Menus.MenuControl,nav_menu_name:a.Menus.MenuNameControl,nav_menu_auto_add:a.Menus.MenuAutoAddControl,new_menu:a.Menus.NewMenuControl}),c.extend(a.panelConstructor,{nav_menus:a.Menus.MenusPanel}),c.extend(a.sectionConstructor,{nav_menu:a.Menus.MenuSection,new_menu:a.Menus.NewMenuSection}),a.bind("ready",function(){a.Menus.availableMenuItemsPanel=new a.Menus.AvailableMenuItemsPanelView({collection:a.Menus.availableMenuItems}),a.bind("saved",function(b){(b.nav_menu_updates||b.nav_menu_item_updates)&&a.Menus.applySavedData(b)}),a.previewer.bind("refresh",function(){a.previewer.refresh()})}),a.Menus.applySavedData=function(d){var e={},f={};_(d.nav_menu_updates).each(function(d){var f,g,h,i,j,k,l,m,n,o,p,q;if("inserted"===d.status){if(!d.previous_term_id)throw new Error("Expected previous_term_id");if(!d.term_id)throw new Error("Expected term_id");if(f="nav_menu["+String(d.previous_term_id)+"]",!a.has(f))throw new Error("Expected setting to exist: "+f);if(i=a(f),!a.section.has(f))throw new Error("Expected control to exist: "+f);if(m=a.section(f),l=i.get(),!l)throw new Error("Did not expect setting to be empty (deleted).");l=c.extend(_.clone(l),d.saved_value),e[d.previous_term_id]=d.term_id,g="nav_menu["+String(d.term_id)+"]",j=a.create(g,g,l,{type:"nav_menu",transport:"postMessage",previewer:a.previewer}),m.expanded()&&m.collapse(),n=new a.Menus.MenuSection(g,{params:{id:g,panel:"nav_menus",title:l.name,customizeAction:a.Menus.data.l10n.customizingMenus,type:"nav_menu",priority:m.priority.get(),active:!0,menu_id:d.term_id}}),a.section.add(g,n),a.control.each(function(b){if(b.extended(a.controlConstructor.widget_form)&&"nav_menu"===b.params.widget_id_base){var c,e,f;c=b.container.find("select"),e=c.find("option[value="+String(d.previous_term_id)+"]"),f=c.find("option[value="+String(d.term_id)+"]"),f.prop("selected",e.prop("selected")),e.remove()}}),i.callbacks.disable(),i.set(!1),i.preview(),j.preview(),i._dirty=!1,m.container.remove(),a.section.remove(f),q=0,a.each(function(a){/^nav_menu\[/.test(a.id)&&!1!==a()&&(q+=1)}),p=c("#available-widgets-list .widget-tpl:has( input.id_base[ value=nav_menu ] )"),p.find(".nav-menu-widget-form-controls:first").toggle(0!==q),p.find(".nav-menu-widget-no-menus-message:first").toggle(0===q),p.find("option[value="+String(d.previous_term_id)+"]").remove(),b.customize.control.each(function(a){/^nav_menu_locations\[/.test(a.id)&&a.container.find("option[value="+String(d.previous_term_id)+"]").remove()}),a.each(function(b){var c=a.state("saved").get();/^nav_menu_locations\[/.test(b.id)&&b.get()===d.previous_term_id&&(b.set(d.term_id),b._dirty=!1,a.state("saved").set(c),b.preview())}),m.expanded.get()&&n.expand()}else if("updated"===d.status){if(h="nav_menu["+String(d.term_id)+"]",!a.has(h))throw new Error("Expected setting to exist: "+h);k=a(h),_.isEqual(d.saved_value,k.get())||(o=a.state("saved").get(),k.set(d.saved_value),k._dirty=!1,a.state("saved").set(o))}}),_(d.nav_menu_item_updates).each(function(a){a.previous_post_id&&(f[a.previous_post_id]=a.post_id)}),_(d.nav_menu_item_updates).each(function(b){var c,d,g,h,i,j,k;if("inserted"===b.status){if(!b.previous_post_id)throw new Error("Expected previous_post_id");if(!b.post_id)throw new Error("Expected post_id");if(c="nav_menu_item["+String(b.previous_post_id)+"]",!a.has(c))throw new Error("Expected setting to exist: "+c);if(g=a(c),!a.control.has(c))throw new Error("Expected control to exist: "+c);if(j=a.control(c),i=g.get(),!i)throw new Error("Did not expect setting to be empty (deleted).");if(i=_.clone(i),i.menu_item_parent<0){if(!f[i.menu_item_parent])throw new Error("inserted ID for menu_item_parent not available");i.menu_item_parent=f[i.menu_item_parent]}e[i.nav_menu_term_id]&&(i.nav_menu_term_id=e[i.nav_menu_term_id]),d="nav_menu_item["+String(b.post_id)+"]",h=a.create(d,d,i,{type:"nav_menu_item",transport:"postMessage",previewer:a.previewer}),k=new a.controlConstructor.nav_menu_item(d,{params:{type:"nav_menu_item",content:'<li id="customize-control-nav_menu_item-'+String(b.post_id)+'" class="customize-control customize-control-nav_menu_item"></li>',menu_id:b.post_id,section:"nav_menu["+String(i.nav_menu_term_id)+"]",priority:j.priority.get(),active:!0,settings:{"default":d},menu_item_id:b.post_id},previewer:a.previewer}),j.container.remove(),a.control.remove(c),a.control.add(d,k),g.callbacks.disable(),g.set(!1),g.preview(),h.preview(),g._dirty=!1,k.container.toggleClass("menu-item-edit-inactive",j.container.hasClass("menu-item-edit-inactive"))}}),_.each(d.widget_nav_menu_updates,function(b,c){var d=a(c);d&&(d._value=b,d.preview())})},a.Menus.focusMenuItemControl=function(b){var c=a.Menus.getMenuItemControl(b);c&&c.focus()},a.Menus.getMenuControl=function(b){return a.control("nav_menu["+b+"]")},a.Menus.getMenuItemControl=function(b){return a.control(d(b))}}(wp.customize,wp,jQuery);
\ No newline at end of file
index 6a640e0efa544b1a0701b2a40f331d87007c4858..820e8e3cab6abac50f780651a4023bdecbd04011 100644 (file)
@@ -8,6 +8,7 @@
                l10n;
 
        api.Widgets = api.Widgets || {};
+       api.Widgets.savedWidgetIds = {};
 
        // Link settings
        api.Widgets.data = _wpCustomizeWidgetsSettings || {};
                /**
                 * @since 4.1.0
                 */
-               initialize: function ( id, options ) {
+               initialize: function( id, options ) {
                        var control = this;
-                       api.Control.prototype.initialize.call( control, id, options );
-                       control.expanded = new api.Value();
+
+                       control.widgetControlEmbedded = false;
+                       control.widgetContentEmbedded = false;
+                       control.expanded = new api.Value( false );
                        control.expandedArgumentsQueue = [];
-                       control.expanded.bind( function ( expanded ) {
+                       control.expanded.bind( function( expanded ) {
                                var args = control.expandedArgumentsQueue.shift();
                                args = $.extend( {}, control.defaultExpandedArguments, args );
                                control.onChangeExpanded( expanded, args );
                        });
-                       control.expanded.set( false );
+
+                       api.Control.prototype.initialize.call( control, id, options );
                },
 
                /**
-                * Set up the control
+                * Set up the control.
+                *
+                * @since 3.9.0
                 */
                ready: function() {
-                       this._setupModel();
-                       this._setupWideWidget();
-                       this._setupControlToggle();
-                       this._setupWidgetTitle();
-                       this._setupReorderUI();
-                       this._setupHighlightEffects();
-                       this._setupUpdateUI();
-                       this._setupRemoveUI();
+                       var control = this;
+
+                       /*
+                        * Embed a placeholder once the section is expanded. The full widget
+                        * form content will be embedded once the control itself is expanded,
+                        * and at this point the widget-added event will be triggered.
+                        */
+                       if ( ! control.section() ) {
+                               control.embedWidgetControl();
+                       } else {
+                               api.section( control.section(), function( section ) {
+                                       var onExpanded = function( isExpanded ) {
+                                               if ( isExpanded ) {
+                                                       control.embedWidgetControl();
+                                                       section.expanded.unbind( onExpanded );
+                                               }
+                                       };
+                                       if ( section.expanded() ) {
+                                               onExpanded( true );
+                                       } else {
+                                               section.expanded.bind( onExpanded );
+                                       }
+                               } );
+                       }
+               },
+
+               /**
+                * Embed the .widget element inside the li container.
+                *
+                * @since 4.4.0
+                */
+               embedWidgetControl: function() {
+                       var control = this, widgetControl;
+
+                       if ( control.widgetControlEmbedded ) {
+                               return;
+                       }
+                       control.widgetControlEmbedded = true;
+
+                       widgetControl = $( control.params.widget_control );
+                       control.container.append( widgetControl );
+
+                       control._setupModel();
+                       control._setupWideWidget();
+                       control._setupControlToggle();
+
+                       control._setupWidgetTitle();
+                       control._setupReorderUI();
+                       control._setupHighlightEffects();
+                       control._setupUpdateUI();
+                       control._setupRemoveUI();
+               },
+
+               /**
+                * Embed the actual widget form inside of .widget-content and finally trigger the widget-added event.
+                *
+                * @since 4.4.0
+                */
+               embedWidgetContent: function() {
+                       var control = this, widgetContent;
+
+                       control.embedWidgetControl();
+                       if ( control.widgetContentEmbedded ) {
+                               return;
+                       }
+                       control.widgetContentEmbedded = true;
+
+                       widgetContent = $( control.params.widget_content );
+                       control.container.find( '.widget-content:first' ).append( widgetContent );
 
                        /*
                         * Trigger widget-added event so that plugins can attach any event
                         * listeners and dynamic UI elements.
                         */
-                       $( document ).trigger( 'widget-added', [ this.container.find( '.widget:first' ) ] );
+                       $( document ).trigger( 'widget-added', [ control.container.find( '.widget:first' ) ] );
+
                },
 
                /**
                _setupModel: function() {
                        var self = this, rememberSavedWidgetId;
 
-                       api.Widgets.savedWidgetIds = api.Widgets.savedWidgetIds || [];
-
                        // Remember saved widgets so we know which to trash (move to inactive widgets sidebar)
                        rememberSavedWidgetId = function() {
                                api.Widgets.savedWidgetIds[self.params.widget_id] = true;
                        var self = this, instanceOverride, completeCallback, $widgetRoot, $widgetContent,
                                updateNumber, params, data, $inputs, processing, jqxhr, isChanged;
 
+                       // The updateWidget logic requires that the form fields to be fully present.
+                       self.embedWidgetContent();
+
                        args = $.extend( {
                                instance: null,
                                complete: null,
                onChangeExpanded: function ( expanded, args ) {
                        var self = this, $widget, $inside, complete, prevComplete;
 
+                       self.embedWidgetControl(); // Make sure the outer form is embedded so that the expanded state can be set in the UI.
+                       if ( expanded ) {
+                               self.embedWidgetContent();
+                       }
+
                        // If the expanded state is unchanged only manipulate container expanded states
                        if ( args.unchanged ) {
                                if ( expanded ) {
                }
        } );
 
+       /**
+        * wp.customize.Widgets.WidgetsPanel
+        *
+        * Customizer panel containing the widget area sections.
+        *
+        * @since 4.4.0
+        */
+       api.Widgets.WidgetsPanel = api.Panel.extend({
+
+               /**
+                * Add and manage the display of the no-rendered-areas notice.
+                *
+                * @since 4.4.0
+                */
+               ready: function () {
+                       var panel = this;
+
+                       api.Panel.prototype.ready.call( panel );
+
+                       panel.deferred.embedded.done(function() {
+                               var panelMetaContainer, noRenderedAreasNotice, shouldShowNotice;
+                               panelMetaContainer = panel.container.find( '.panel-meta' );
+                               noRenderedAreasNotice = $( '<div></div>', {
+                                       'class': 'no-widget-areas-rendered-notice'
+                               });
+                               noRenderedAreasNotice.append( $( '<em></em>', {
+                                       text: l10n.noAreasRendered
+                               } ) );
+                               panelMetaContainer.append( noRenderedAreasNotice );
+
+                               shouldShowNotice = function() {
+                                       return ( 0 === _.filter( panel.sections(), function( section ) {
+                                               return section.active();
+                                       } ).length );
+                               };
+
+                               /*
+                                * Set the initial visibility state for rendered notice.
+                                * Update the visibility of the notice whenever a reflow happens.
+                                */
+                               noRenderedAreasNotice.toggle( shouldShowNotice() );
+                               api.previewer.deferred.active.done( function () {
+                                       noRenderedAreasNotice.toggle( shouldShowNotice() );
+                               });
+                               api.bind( 'pane-contents-reflowed', function() {
+                                       var duration = ( 'resolved' === api.previewer.deferred.active.state() ) ? 'fast' : 0;
+                                       if ( shouldShowNotice() ) {
+                                               noRenderedAreasNotice.slideDown( duration );
+                                       } else {
+                                               noRenderedAreasNotice.slideUp( duration );
+                                       }
+                               });
+                       });
+               },
+
+               /**
+                * Allow an active widgets panel to be contextually active even when it has no active sections (widget areas).
+                *
+                * This ensures that the widgets panel appears even when there are no
+                * sidebars displayed on the URL currently being previewed.
+                *
+                * @since 4.4.0
+                *
+                * @returns {boolean}
+                */
+               isContextuallyActive: function() {
+                       var panel = this;
+                       return panel.active();
+               }
+       });
+
        /**
         * wp.customize.Widgets.SidebarSection
         *
                        /**
                         * Keyboard-accessible reordering
                         */
-                       this.container.find( '.reorder-toggle' ).on( 'click keydown', function( event ) {
-                               if ( event.type === 'keydown' && ! ( event.which === 13 || event.which === 32 ) ) { // Enter or Spacebar
-                                       return;
-                               }
-
+                       this.container.find( '.reorder-toggle' ).on( 'click', function() {
                                self.toggleReordering( ! self.isReordering );
                        } );
                },
                _setupAddition: function() {
                        var self = this;
 
-                       this.container.find( '.add-new-widget' ).on( 'click keydown', function( event ) {
-                               if ( event.type === 'keydown' && ! ( event.which === 13 || event.which === 32 ) ) { // Enter or Spacebar
-                                       return;
-                               }
+                       this.container.find( '.add-new-widget' ).on( 'click', function() {
+                               var addNewWidgetBtn = $( this );
 
                                if ( self.$sectionContent.hasClass( 'reordering' ) ) {
                                        return;
                                }
 
                                if ( ! $( 'body' ).hasClass( 'adding-widget' ) ) {
+                                       addNewWidgetBtn.attr( 'aria-expanded', 'true' );
                                        api.Widgets.availableWidgetsPanel.open( self );
                                } else {
+                                       addNewWidgetBtn.attr( 'aria-expanded', 'false' );
                                        api.Widgets.availableWidgetsPanel.close();
                                }
                        } );
                 * @todo We should have a reordering state instead and rename this to onChangeReordering
                 */
                toggleReordering: function( showOrHide ) {
+                       var addNewWidgetBtn = this.$sectionContent.find( '.add-new-widget' ),
+                               reorderBtn = this.container.find( '.reorder-toggle' ),
+                               widgetsTitle = this.$sectionContent.find( '.widget-title' );
+
                        showOrHide = Boolean( showOrHide );
 
                        if ( showOrHide === this.$sectionContent.hasClass( 'reordering' ) ) {
                                        formControl.collapse();
                                } );
 
-                               this.$sectionContent.find( '.first-widget .move-widget' ).focus();
-                               this.$sectionContent.find( '.add-new-widget' ).prop( 'tabIndex', -1 );
+                               addNewWidgetBtn.attr({ 'tabindex': '-1', 'aria-hidden': 'true' });
+                               reorderBtn.attr( 'aria-label', l10n.reorderLabelOff );
+                               wp.a11y.speak( l10n.reorderModeOn );
+                               // Hide widget titles while reordering: title is already in the reorder controls.
+                               widgetsTitle.attr( 'aria-hidden', 'true' );
                        } else {
-                               this.$sectionContent.find( '.add-new-widget' ).prop( 'tabIndex', 0 );
+                               addNewWidgetBtn.removeAttr( 'tabindex aria-hidden' );
+                               reorderBtn.attr( 'aria-label', l10n.reorderLabelOn );
+                               wp.a11y.speak( l10n.reorderModeOff );
+                               widgetsTitle.attr( 'aria-hidden', 'false' );
                        }
                },
 
                                        is_new: ! isExistingWidget,
                                        width: widget.get( 'width' ),
                                        height: widget.get( 'height' ),
-                                       is_wide: widget.get( 'is_wide' )
+                                       is_wide: widget.get( 'is_wide' ),
+                                       active: true
                                },
                                previewer: self.setting.previewer
                        } );
                }
        } );
 
-       // Register models for custom section and control types
+       // Register models for custom panel, section, and control types
+       $.extend( api.panelConstructor, {
+               widgets: api.Widgets.WidgetsPanel
+       });
        $.extend( api.sectionConstructor, {
                sidebar: api.Widgets.SidebarSection
        });
index 4210b04b4ba55c24cd60fe293d563f1348111556..f6f42d0d05a942fbd840e95d88fdfe63864e68f9 100644 (file)
@@ -1 +1 @@
-!function(a,b){function c(a){var b,c={number:null,id_base:null};return b=a.match(/^(.+)-(\d+)$/),b?(c.id_base=b[1],c.number=parseInt(b[2],10)):c.id_base=a,c}function d(a){var b,d=c(a);return b="widget_"+d.id_base,d.number&&(b+="["+d.number+"]"),b}if(a&&a.customize){var e,f=a.customize;f.Widgets=f.Widgets||{},f.Widgets.data=_wpCustomizeWidgetsSettings||{},e=f.Widgets.data.l10n,delete f.Widgets.data.l10n,f.Widgets.WidgetModel=Backbone.Model.extend({id:null,temp_id:null,classname:null,control_tpl:null,description:null,is_disabled:null,is_multi:null,multi_number:null,name:null,id_base:null,transport:"refresh",params:[],width:null,height:null,search_matched:!0}),f.Widgets.WidgetCollection=Backbone.Collection.extend({model:f.Widgets.WidgetModel,doSearch:function(a){this.terms!==a&&(this.terms=a,this.terms.length>0&&this.search(this.terms),""===this.terms&&this.each(function(a){a.set("search_matched",!0)}))},search:function(a){var b,c;a=a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),a=a.replace(/ /g,")(?=.*"),b=new RegExp("^(?=.*"+a+").+","i"),this.each(function(a){c=[a.get("name"),a.get("id"),a.get("description")].join(" "),a.set("search_matched",b.test(c))})}}),f.Widgets.availableWidgets=new f.Widgets.WidgetCollection(f.Widgets.data.availableWidgets),f.Widgets.SidebarModel=Backbone.Model.extend({after_title:null,after_widget:null,before_title:null,before_widget:null,"class":null,description:null,id:null,name:null,is_rendered:!1}),f.Widgets.SidebarCollection=Backbone.Collection.extend({model:f.Widgets.SidebarModel}),f.Widgets.registeredSidebars=new f.Widgets.SidebarCollection(f.Widgets.data.registeredSidebars),f.Widgets.AvailableWidgetsPanelView=a.Backbone.View.extend({el:"#available-widgets",events:{"input #widgets-search":"search","keyup #widgets-search":"search","change #widgets-search":"search","search #widgets-search":"search","focus .widget-tpl":"focus","click .widget-tpl":"_submit","keypress .widget-tpl":"_submit",keydown:"keyboardAccessible"},selected:null,currentSidebarControl:null,$search:null,initialize:function(){var a=this;this.$search=b("#widgets-search"),_.bindAll(this,"close"),this.listenTo(this.collection,"change",this.updateList),this.updateList(),b("#customize-controls, #available-widgets .customize-section-title").on("click keydown",function(c){var d=b(c.target).is(".add-new-widget, .add-new-widget *");b("body").hasClass("adding-widget")&&!d&&a.close()}),f.previewer.bind("url",this.close)},search:function(a){var b;this.collection.doSearch(a.target.value),this.selected&&!this.selected.is(":visible")&&(this.selected.removeClass("selected"),this.selected=null),this.selected&&!a.target.value&&(this.selected.removeClass("selected"),this.selected=null),!this.selected&&a.target.value&&(b=this.$el.find("> .widget-tpl:visible:first"),b.length&&this.select(b))},updateList:function(){this.collection.each(function(a){var c=b("#widget-tpl-"+a.id);c.toggle(a.get("search_matched")&&!a.get("is_disabled")),a.get("is_disabled")&&c.is(this.selected)&&(this.selected=null)})},select:function(a){this.selected=b(a),this.selected.siblings(".widget-tpl").removeClass("selected"),this.selected.addClass("selected")},focus:function(a){this.select(b(a.currentTarget))},_submit:function(a){("keypress"!==a.type||13===a.which||32===a.which)&&this.submit(b(a.currentTarget))},submit:function(a){var c,d,e;a||(a=this.selected),a&&this.currentSidebarControl&&(this.select(a),c=b(this.selected).data("widget-id"),d=this.collection.findWhere({id:c}),d&&(e=this.currentSidebarControl.addWidget(d.get("id_base")),e&&e.focus(),this.close()))},open:function(a){this.currentSidebarControl=a,_(this.currentSidebarControl.getWidgetFormControls()).each(function(a){a.params.is_wide&&a.collapseForm()}),b("body").addClass("adding-widget"),this.$el.find(".selected").removeClass("selected"),this.collection.doSearch(""),f.settings.browser.mobile||this.$search.focus()},close:function(a){a=a||{},a.returnFocus&&this.currentSidebarControl&&this.currentSidebarControl.container.find(".add-new-widget").focus(),this.currentSidebarControl=null,this.selected=null,b("body").removeClass("adding-widget"),this.$search.val("")},keyboardAccessible:function(a){var c=13===a.which,d=27===a.which,e=40===a.which,f=38===a.which,g=9===a.which,h=a.shiftKey,i=null,j=this.$el.find("> .widget-tpl:visible:first"),k=this.$el.find("> .widget-tpl:visible:last"),l=b(a.target).is(this.$search),m=b(a.target).is(".widget-tpl:visible:last");return e||f?(e?l?i=j:this.selected&&0!==this.selected.nextAll(".widget-tpl:visible").length&&(i=this.selected.nextAll(".widget-tpl:visible:first")):f&&(l?i=k:this.selected&&0!==this.selected.prevAll(".widget-tpl:visible").length&&(i=this.selected.prevAll(".widget-tpl:visible:first"))),this.select(i),void(i?i.focus():this.$search.focus())):void((!c||this.$search.val())&&(c?this.submit():d&&this.close({returnFocus:!0}),this.currentSidebarControl&&g&&(h&&l||!h&&m)&&(this.currentSidebarControl.container.find(".add-new-widget").focus(),a.preventDefault())))}}),f.Widgets.formSyncHandlers={rss:function(a,c,d){var e=c.find(".widget-error:first"),f=b("<div>"+d+"</div>").find(".widget-error:first");e.length&&f.length?e.replaceWith(f):e.length?e.remove():f.length&&c.find(".widget-content:first").prepend(f)}},f.Widgets.WidgetControl=f.Control.extend({defaultExpandedArguments:{duration:"fast",completeCallback:b.noop},initialize:function(a,c){var d=this;f.Control.prototype.initialize.call(d,a,c),d.expanded=new f.Value,d.expandedArgumentsQueue=[],d.expanded.bind(function(a){var c=d.expandedArgumentsQueue.shift();c=b.extend({},d.defaultExpandedArguments,c),d.onChangeExpanded(a,c)}),d.expanded.set(!1)},ready:function(){this._setupModel(),this._setupWideWidget(),this._setupControlToggle(),this._setupWidgetTitle(),this._setupReorderUI(),this._setupHighlightEffects(),this._setupUpdateUI(),this._setupRemoveUI(),b(document).trigger("widget-added",[this.container.find(".widget:first")])},_setupModel:function(){var a,b=this;f.Widgets.savedWidgetIds=f.Widgets.savedWidgetIds||[],a=function(){f.Widgets.savedWidgetIds[b.params.widget_id]=!0},f.bind("ready",a),f.bind("saved",a),this._updateCount=0,this.isWidgetUpdating=!1,this.liveUpdateMode=!0,this.setting.bind(function(a,c){_(c).isEqual(a)||b.isWidgetUpdating||b.updateWidget({instance:a})})},_setupWideWidget:function(){var a,c,d,e,g,h=this;this.params.is_wide&&(a=this.container.find(".widget-inside"),c=a.find("> .form"),d=b(".wp-full-overlay-sidebar-content:first"),this.container.addClass("wide-widget-control"),this.container.find(".widget-content:first").css({"max-width":this.params.width,"min-height":this.params.height}),g=function(){var d,e=h.container.offset().top,f=b(window).height(),g=c.outerHeight();a.css("max-height",f),d=Math.max(0,Math.min(Math.max(e,0),f-g)),a.css("top",d)},e=b("#customize-theme-controls"),this.container.on("expand",function(){g(),d.on("scroll",g),b(window).on("resize",g),e.on("expanded collapsed",g)}),this.container.on("collapsed",function(){d.off("scroll",g),b(window).off("resize",g),e.off("expanded collapsed",g)}),f.each(function(a){0===a.id.indexOf("sidebars_widgets[")&&a.bind(function(){h.container.hasClass("expanded")&&g()})}))},_setupControlToggle:function(){var a,b=this;this.container.find(".widget-top").on("click",function(a){a.preventDefault();var c=b.getSidebarWidgetsControl();c.isReordering||b.expanded(!b.expanded())}),a=this.container.find(".widget-control-close"),a.on("click",function(a){a.preventDefault(),b.collapse(),b.container.find(".widget-top .widget-action:first").focus()})},_setupWidgetTitle:function(){var a,b=this;a=function(){var a=b.setting().title,c=b.container.find(".in-widget-title");a?c.text(": "+a):c.text("")},this.setting.bind(a),a()},_setupReorderUI:function(){var c,d,g,h,i=this;c=function(a){a.siblings(".selected").removeClass("selected"),a.addClass("selected");var b=a.data("id")===i.params.sidebar_id;i.container.find(".move-widget-btn").prop("disabled",b)},this.container.find(".widget-title-action").after(b(f.Widgets.data.tpl.widgetReorderNav)),d=b(_.template(f.Widgets.data.tpl.moveWidgetArea,{sidebars:_(f.Widgets.registeredSidebars.toArray()).pluck("attributes")})),this.container.find(".widget-top").after(d),h=function(){var a,e=d.find("li"),g=0;a=e.filter(function(){return b(this).data("id")===i.params.sidebar_id}),e.each(function(){var d,e,h,i=b(this);d=i.data("id"),e=f.Widgets.registeredSidebars.get(d),h=e.get("is_rendered"),i.toggle(h),h&&(g+=1),i.hasClass("selected")&&!h&&c(a)}),g>1?i.container.find(".move-widget").show():i.container.find(".move-widget").hide()},h(),f.Widgets.registeredSidebars.on("change:is_rendered",h),g=this.container.find(".widget-reorder-nav"),g.find(".move-widget, .move-widget-down, .move-widget-up").each(function(){b(this).prepend(i.container.find(".widget-title").text()+": ")}).on("click keypress",function(c){if("keypress"!==c.type||13===c.which||32===c.which)if(b(this).focus(),b(this).is(".move-widget"))i.toggleWidgetMoveArea();else{var d=b(this).is(".move-widget-down"),f=b(this).is(".move-widget-up"),g=i.getWidgetSidebarPosition();if(f&&0===g||d&&g===i.getSidebarWidgetsControl().setting().length-1)return;f?(i.moveUp(),a.a11y.speak(e.widgetMovedUp)):(i.moveDown(),a.a11y.speak(e.widgetMovedDown)),b(this).focus()}}),this.container.find(".widget-area-select").on("click keypress","li",function(a){("keypress"!==a.type||13===a.which||32===a.which)&&(a.preventDefault(),c(b(this)))}),this.container.find(".move-widget-btn").click(function(){i.getSidebarWidgetsControl().toggleReordering(!1);var a,b,c,d,e,g=i.params.sidebar_id,h=i.container.find(".widget-area-select li.selected").data("id");a=f("sidebars_widgets["+g+"]"),b=f("sidebars_widgets["+h+"]"),c=Array.prototype.slice.call(a()),d=Array.prototype.slice.call(b()),e=i.getWidgetSidebarPosition(),c.splice(e,1),d.push(i.params.widget_id),a(c),b(d),i.focus()})},_setupHighlightEffects:function(){var a=this;this.container.on("mouseenter click",function(){a.setting.previewer.send("highlight-widget",a.params.widget_id)}),this.setting.bind(function(){a.setting.previewer.send("highlight-widget",a.params.widget_id)})},_setupUpdateUI:function(){var a,c,d,g,h,i=this;a=this.container.find(".widget:first"),c=a.find(".widget-content:first"),d=this.container.find(".widget-control-save"),d.val(e.saveBtnLabel),d.attr("title",e.saveBtnTooltip),d.removeClass("button-primary").addClass("button-secondary"),d.on("click",function(a){a.preventDefault(),i.updateWidget({disable_form:!0})}),g=_.debounce(function(){i.updateWidget()},250),c.on("keydown","input",function(a){13===a.which&&(a.preventDefault(),i.updateWidget({ignoreActiveElement:!0}))}),c.on("change input propertychange",":input",function(a){i.liveUpdateMode&&("change"===a.type||this.checkValidity&&this.checkValidity())&&g()}),this.setting.previewer.channel.bind("synced",function(){i.container.removeClass("previewer-loading")}),f.previewer.bind("widget-updated",function(a){a===i.params.widget_id&&i.container.removeClass("previewer-loading")}),h=f.Widgets.formSyncHandlers[this.params.widget_id_base],h&&b(document).on("widget-synced",function(b,c){a.is(c)&&h.apply(document,arguments)})},onChangeActive:function(a,b){this.container.toggleClass("widget-rendered",a),b.completeCallback&&b.completeCallback()},_setupRemoveUI:function(){var a,b,c=this;a=this.container.find("a.widget-control-remove"),a.on("click",function(a){a.preventDefault();var b;b=c.container.next().is(".customize-control-widget_form")?c.container.next().find(".widget-action:first"):c.container.prev().is(".customize-control-widget_form")?c.container.prev().find(".widget-action:first"):c.container.next(".customize-control-sidebar_widgets").find(".add-new-widget:first"),c.container.slideUp(function(){var a,d,e=f.Widgets.getSidebarWidgetControlContainingWidget(c.params.widget_id);e&&(a=e.setting().slice(),d=_.indexOf(a,c.params.widget_id),-1!==d&&(a.splice(d,1),e.setting(a),b.focus()))})}),b=function(){a.text(e.removeBtnLabel),a.attr("title",e.removeBtnTooltip)},this.params.is_new?f.bind("saved",b):b()},_getInputs:function(a){return b(a).find(":input[name]")},_getInputsSignature:function(a){var c=_(a).map(function(a){var c,d=b(a);return c=d.is(":checkbox, :radio")?[d.attr("id"),d.attr("name"),d.prop("value")]:[d.attr("id"),d.attr("name")],c.join(",")});return c.join(";")},_getInputState:function(a){return a=b(a),a.is(":radio, :checkbox")?a.prop("checked"):a.is("select[multiple]")?a.find("option:selected").map(function(){return b(this).val()}).get():a.val()},_setInputState:function(a,c){a=b(a),a.is(":radio, :checkbox")?a.prop("checked",c):a.is("select[multiple]")?(c=b.isArray(c)?_.map(c,function(a){return String(a)}):[],a.find("option").each(function(){b(this).prop("selected",-1!==_.indexOf(c,String(this.value)))})):a.val(c)},getSidebarWidgetsControl:function(){var a,b;return a="sidebars_widgets["+this.params.sidebar_id+"]",(b=f.control(a))?b:void 0},updateWidget:function(c){var d,g,h,i,j,k,l,m,n,o,p,q=this;c=b.extend({instance:null,complete:null,ignoreActiveElement:!1},c),d=c.instance,g=c.complete,this._updateCount+=1,j=this._updateCount,h=this.container.find(".widget:first"),i=h.find(".widget-content:first"),i.find(".widget-error").remove(),this.container.addClass("widget-form-loading"),this.container.addClass("previewer-loading"),n=f.state("processing"),n(n()+1),this.liveUpdateMode||this.container.addClass("widget-form-disabled"),k={},k.action="update-widget",k.wp_customize="on",k.nonce=f.Widgets.data.nonce,k.theme=f.settings.theme.stylesheet,k.customized=a.customize.previewer.query().customized,l=b.param(k),m=this._getInputs(i),m.each(function(){b(this).data("state"+j,q._getInputState(this))}),l+=d?"&"+b.param({sanitized_widget_setting:JSON.stringify(d)}):"&"+m.serialize(),l+="&"+i.find("~ :input").serialize(),this._previousUpdateRequest&&this._previousUpdateRequest.abort(),o=b.post(a.ajax.settings.url,l),this._previousUpdateRequest=o,o.done(function(a){var d,k,l,n,o=!1;return"0"===a?(f.previewer.preview.iframe.hide(),void f.previewer.login().done(function(){q.updateWidget(c),f.previewer.preview.iframe.show()})):"-1"===a?void f.previewer.cheatin():void(a.success?(k=b("<div>"+a.data.form+"</div>"),l=q._getInputs(k),n=q._getInputsSignature(m)===q._getInputsSignature(l),n&&!q.liveUpdateMode&&(q.liveUpdateMode=!0,q.container.removeClass("widget-form-disabled"),q.container.find('input[name="savewidget"]').hide()),n&&q.liveUpdateMode?(m.each(function(a){var d,e,f,g=b(this),h=b(l[a]);d=g.data("state"+j),e=q._getInputState(h),g.data("sanitized",e),f=!_.isEqual(d,e)&&(c.ignoreActiveElement||!g.is(document.activeElement)),f&&q._setInputState(g,e)}),b(document).trigger("widget-synced",[h,a.data.form])):q.liveUpdateMode?(q.liveUpdateMode=!1,q.container.find('input[name="savewidget"]').show(),o=!0):(i.html(a.data.form),q.container.removeClass("widget-form-disabled"),b(document).trigger("widget-updated",[h])),p=!o&&!_(q.setting()).isEqual(a.data.instance),p?(q.isWidgetUpdating=!0,q.setting(a.data.instance),q.isWidgetUpdating=!1):q.container.removeClass("previewer-loading"),g&&g.call(q,null,{noChange:!p,ajaxFinished:!0})):(d=e.error,a.data&&a.data.message&&(d=a.data.message),g?g.call(q,d):i.prepend('<p class="widget-error"><strong>'+d+"</strong></p>")))}),o.fail(function(a,b){g&&g.call(q,b)}),o.always(function(){q.container.removeClass("widget-form-loading"),m.each(function(){b(this).removeData("state"+j)}),n(n()-1)})},expandControlSection:function(){f.Control.prototype.expand.call(this)},_toggleExpanded:f.Section.prototype._toggleExpanded,expand:f.Section.prototype.expand,expandForm:function(){this.expand()},collapse:f.Section.prototype.collapse,collapseForm:function(){this.collapse()},toggleForm:function(a){"undefined"==typeof a&&(a=!this.expanded()),this.expanded(a)},onChangeExpanded:function(a,b){var c,d,e,g,h=this;return b.unchanged?void(a&&f.Control.prototype.expand.call(h,{completeCallback:b.completeCallback})):(c=this.container.find("div.widget:first"),d=c.find(".widget-inside:first"),void(a?(h.section()&&f.section(h.section())&&h.expandControlSection(),f.control.each(function(a){h.params.type===a.params.type&&h!==a&&a.collapse()}),e=function(){h.container.removeClass("expanding"),h.container.addClass("expanded"),h.container.trigger("expanded")},b.completeCallback&&(g=e,e=function(){g(),b.completeCallback()}),h.params.is_wide?d.fadeIn(b.duration,e):d.slideDown(b.duration,e),h.container.trigger("expand"),h.container.addClass("expanding")):(e=function(){h.container.removeClass("collapsing"),h.container.removeClass("expanded"),h.container.trigger("collapsed")},b.completeCallback&&(g=e,e=function(){g(),b.completeCallback()}),h.container.trigger("collapse"),h.container.addClass("collapsing"),h.params.is_wide?d.fadeOut(b.duration,e):d.slideUp(b.duration,function(){c.css({width:"",margin:""}),e()}))))},getWidgetSidebarPosition:function(){var a,b;return a=this.getSidebarWidgetsControl().setting(),b=_.indexOf(a,this.params.widget_id),-1!==b?b:void 0},moveUp:function(){this._moveWidgetByOne(-1)},moveDown:function(){this._moveWidgetByOne(1)},_moveWidgetByOne:function(a){var b,c,d,e;b=this.getWidgetSidebarPosition(),c=this.getSidebarWidgetsControl().setting,d=Array.prototype.slice.call(c()),e=d[b+a],d[b+a]=this.params.widget_id,d[b]=e,c(d)},toggleWidgetMoveArea:function(a){var c,d=this;c=this.container.find(".move-widget-area"),"undefined"==typeof a&&(a=!c.hasClass("active")),a&&(c.find(".selected").removeClass("selected"),c.find("li").filter(function(){return b(this).data("id")===d.params.sidebar_id}).addClass("selected"),this.container.find(".move-widget-btn").prop("disabled",!0)),c.toggleClass("active",a)},highlightSectionAndControl:function(){var a;a=this.container.is(":hidden")?this.container.closest(".control-section"):this.container,b(".highlighted").removeClass("highlighted"),a.addClass("highlighted"),setTimeout(function(){a.removeClass("highlighted")},500)}}),f.Widgets.SidebarSection=f.Section.extend({ready:function(){var a,b=this;f.Section.prototype.ready.call(this),a=f.Widgets.registeredSidebars.get(b.params.sidebarId),b.active.bind(function(b){a.set("is_rendered",b)}),a.set("is_rendered",b.active())}}),f.Widgets.SidebarControl=f.Control.extend({ready:function(){this.$controlSection=this.container.closest(".control-section"),this.$sectionContent=this.container.closest(".accordion-section-content"),this._setupModel(),this._setupSortable(),this._setupAddition(),this._applyCardinalOrderClassNames()},_setupModel:function(){var a=this;this.setting.bind(function(d,e){var g,h,i;h=_(e).difference(d),d=_(d).filter(function(a){var b=c(a);return!!f.Widgets.availableWidgets.findWhere({id_base:b.id_base})}),g=_(d).map(function(b){var c=f.Widgets.getWidgetFormControlForWidget(b);return c||(c=a.addWidget(b)),c}),g.sort(function(a,b){var c=_.indexOf(d,a.params.widget_id),e=_.indexOf(d,b.params.widget_id);return c-e}),i=0,_(g).each(function(b){b.priority(i),b.section(a.section()),i+=1}),a.priority(i),a._applyCardinalOrderClassNames(),_(g).each(function(b){b.params.sidebar_id=a.params.sidebar_id}),_(h).each(function(d){setTimeout(function(){var e,g,h,i,j,k=!1;f.each(function(b){if(b.id!==a.setting.id&&0===b.id.indexOf("sidebars_widgets[")&&"sidebars_widgets[wp_inactive_widgets]"!==b.id){var c,e=b();c=_.indexOf(e,d),-1!==c&&(k=!0)}}),k||(e=f.Widgets.getWidgetFormControlForWidget(d),g=e&&b.contains(document,e.container[0])&&!b.contains(a.$sectionContent[0],e.container[0]),e&&!g&&(f.control.remove(e.id),e.container.remove()),f.Widgets.savedWidgetIds[d]&&(h=f.value("sidebars_widgets[wp_inactive_widgets]")().slice(),h.push(d),f.value("sidebars_widgets[wp_inactive_widgets]")(_(h).unique())),i=c(d).id_base,j=f.Widgets.availableWidgets.findWhere({id_base:i}),j&&!j.get("is_multi")&&j.set("is_disabled",!1))})})})},_setupSortable:function(){var a=this;this.isReordering=!1,this.$sectionContent.sortable({items:"> .customize-control-widget_form",handle:".widget-top",axis:"y",tolerance:"pointer",connectWith:".accordion-section-content:has(.customize-control-sidebar_widgets)",update:function(){var c,d=a.$sectionContent.sortable("toArray");c=b.map(d,function(a){return b("#"+a).find(":input[name=widget-id]").val()}),a.setting(c)}}),this.$controlSection.find(".accordion-section-title").droppable({accept:".customize-control-widget_form",over:function(){var b=f.section(a.section.get());b.expand({allowMultiple:!0,completeCallback:function(){f.section.each(function(a){a.container.find(".customize-control-sidebar_widgets").length&&a.container.find(".accordion-section-content:first").sortable("refreshPositions")})}})}}),this.container.find(".reorder-toggle").on("click keydown",function(b){("keydown"!==b.type||13===b.which||32===b.which)&&a.toggleReordering(!a.isReordering)})},_setupAddition:function(){var a=this;this.container.find(".add-new-widget").on("click keydown",function(c){("keydown"!==c.type||13===c.which||32===c.which)&&(a.$sectionContent.hasClass("reordering")||(b("body").hasClass("adding-widget")?f.Widgets.availableWidgetsPanel.close():f.Widgets.availableWidgetsPanel.open(a)))})},_applyCardinalOrderClassNames:function(){var a=[];return _.each(this.setting(),function(b){var c=f.Widgets.getWidgetFormControlForWidget(b);c&&a.push(c)}),a.length?(this.container.find(".reorder-toggle").show(),b(a).each(function(){b(this.container).removeClass("first-widget").removeClass("last-widget").find(".move-widget-down, .move-widget-up").prop("tabIndex",0)}),_.first(a).container.addClass("first-widget").find(".move-widget-up").prop("tabIndex",-1),void _.last(a).container.addClass("last-widget").find(".move-widget-down").prop("tabIndex",-1)):void this.container.find(".reorder-toggle").hide()},toggleReordering:function(a){a=Boolean(a),a!==this.$sectionContent.hasClass("reordering")&&(this.isReordering=a,this.$sectionContent.toggleClass("reordering",a),a?(_(this.getWidgetFormControls()).each(function(a){a.collapse()}),this.$sectionContent.find(".first-widget .move-widget").focus(),this.$sectionContent.find(".add-new-widget").prop("tabIndex",-1)):this.$sectionContent.find(".add-new-widget").prop("tabIndex",0))},getWidgetFormControls:function(){var a=[];return _(this.setting()).each(function(b){var c=d(b),e=f.control(c);e&&a.push(e)}),a},addWidget:function(a){var d,e,g,h,i,j,k,l,m,n,o=this,p="widget_form",q=c(a),r=q.number,s=q.id_base,t=f.Widgets.availableWidgets.findWhere({id_base:s});return t?r&&!t.get("is_multi")?!1:(t.get("is_multi")&&!r&&(t.set("multi_number",t.get("multi_number")+1),r=t.get("multi_number")),d=b.trim(b("#widget-tpl-"+t.get("id")).html()),t.get("is_multi")?d=d.replace(/<[^<>]+>/g,function(a){return a.replace(/__i__|%i%/g,r)}):t.set("is_disabled",!0),e=b(d),g=b("<li/>").addClass("customize-control").addClass("customize-control-"+p).append(e),g.find("> .widget-icon").remove(),t.get("is_multi")&&(g.find('input[name="widget_number"]').val(r),g.find('input[name="multi_number"]').val(r)),a=g.find('[name="widget-id"]').val(),g.hide(),i="widget_"+t.get("id_base"),t.get("is_multi")&&(i+="["+r+"]"),g.attr("id","customize-control-"+i.replace(/\]/g,"").replace(/\[/g,"-")),j=f.has(i),j||(m={transport:"refresh",previewer:this.setting.previewer},n=f.create(i,i,"",m),n.set({})),h=f.controlConstructor[p],k=new h(i,{params:{settings:{"default":i},content:g,sidebar_id:o.params.sidebar_id,widget_id:a,widget_id_base:t.get("id_base"),type:p,is_new:!j,width:t.get("width"),height:t.get("height"),is_wide:t.get("is_wide")},previewer:o.setting.previewer}),f.control.add(i,k),f.each(function(b){if(b.id!==o.setting.id&&0===b.id.indexOf("sidebars_widgets[")){var c=b().slice(),d=_.indexOf(c,a);-1!==d&&(c.splice(d),b(c))}}),l=this.setting().slice(),-1===_.indexOf(l,a)&&(l.push(a),this.setting(l)),g.slideDown(function(){j&&k.updateWidget({instance:k.setting()})}),k):!1}}),b.extend(f.sectionConstructor,{sidebar:f.Widgets.SidebarSection}),b.extend(f.controlConstructor,{widget_form:f.Widgets.WidgetControl,sidebar_widgets:f.Widgets.SidebarControl}),f.bind("nonce-refresh",function(a){f.Widgets.data.nonce=a["update-widget"]}),f.bind("ready",function(){f.Widgets.availableWidgetsPanel=new f.Widgets.AvailableWidgetsPanelView({collection:f.Widgets.availableWidgets}),f.previewer.bind("highlight-widget-control",f.Widgets.highlightWidgetFormControl),f.previewer.bind("focus-widget-control",f.Widgets.focusWidgetFormControl)}),f.Widgets.highlightWidgetFormControl=function(a){var b=f.Widgets.getWidgetFormControlForWidget(a);b&&b.highlightSectionAndControl()},f.Widgets.focusWidgetFormControl=function(a){var b=f.Widgets.getWidgetFormControlForWidget(a);b&&b.focus()},f.Widgets.getSidebarWidgetControlContainingWidget=function(a){var b=null;return f.control.each(function(c){"sidebar_widgets"===c.params.type&&-1!==_.indexOf(c.setting(),a)&&(b=c)}),b},f.Widgets.getWidgetFormControlForWidget=function(a){var b=null;return f.control.each(function(c){"widget_form"===c.params.type&&c.params.widget_id===a&&(b=c)}),b}}}(window.wp,jQuery);
\ No newline at end of file
+!function(a,b){function c(a){var b,c={number:null,id_base:null};return b=a.match(/^(.+)-(\d+)$/),b?(c.id_base=b[1],c.number=parseInt(b[2],10)):c.id_base=a,c}function d(a){var b,d=c(a);return b="widget_"+d.id_base,d.number&&(b+="["+d.number+"]"),b}if(a&&a.customize){var e,f=a.customize;f.Widgets=f.Widgets||{},f.Widgets.savedWidgetIds={},f.Widgets.data=_wpCustomizeWidgetsSettings||{},e=f.Widgets.data.l10n,delete f.Widgets.data.l10n,f.Widgets.WidgetModel=Backbone.Model.extend({id:null,temp_id:null,classname:null,control_tpl:null,description:null,is_disabled:null,is_multi:null,multi_number:null,name:null,id_base:null,transport:"refresh",params:[],width:null,height:null,search_matched:!0}),f.Widgets.WidgetCollection=Backbone.Collection.extend({model:f.Widgets.WidgetModel,doSearch:function(a){this.terms!==a&&(this.terms=a,this.terms.length>0&&this.search(this.terms),""===this.terms&&this.each(function(a){a.set("search_matched",!0)}))},search:function(a){var b,c;a=a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),a=a.replace(/ /g,")(?=.*"),b=new RegExp("^(?=.*"+a+").+","i"),this.each(function(a){c=[a.get("name"),a.get("id"),a.get("description")].join(" "),a.set("search_matched",b.test(c))})}}),f.Widgets.availableWidgets=new f.Widgets.WidgetCollection(f.Widgets.data.availableWidgets),f.Widgets.SidebarModel=Backbone.Model.extend({after_title:null,after_widget:null,before_title:null,before_widget:null,"class":null,description:null,id:null,name:null,is_rendered:!1}),f.Widgets.SidebarCollection=Backbone.Collection.extend({model:f.Widgets.SidebarModel}),f.Widgets.registeredSidebars=new f.Widgets.SidebarCollection(f.Widgets.data.registeredSidebars),f.Widgets.AvailableWidgetsPanelView=a.Backbone.View.extend({el:"#available-widgets",events:{"input #widgets-search":"search","keyup #widgets-search":"search","change #widgets-search":"search","search #widgets-search":"search","focus .widget-tpl":"focus","click .widget-tpl":"_submit","keypress .widget-tpl":"_submit",keydown:"keyboardAccessible"},selected:null,currentSidebarControl:null,$search:null,initialize:function(){var a=this;this.$search=b("#widgets-search"),_.bindAll(this,"close"),this.listenTo(this.collection,"change",this.updateList),this.updateList(),b("#customize-controls, #available-widgets .customize-section-title").on("click keydown",function(c){var d=b(c.target).is(".add-new-widget, .add-new-widget *");b("body").hasClass("adding-widget")&&!d&&a.close()}),f.previewer.bind("url",this.close)},search:function(a){var b;this.collection.doSearch(a.target.value),this.selected&&!this.selected.is(":visible")&&(this.selected.removeClass("selected"),this.selected=null),this.selected&&!a.target.value&&(this.selected.removeClass("selected"),this.selected=null),!this.selected&&a.target.value&&(b=this.$el.find("> .widget-tpl:visible:first"),b.length&&this.select(b))},updateList:function(){this.collection.each(function(a){var c=b("#widget-tpl-"+a.id);c.toggle(a.get("search_matched")&&!a.get("is_disabled")),a.get("is_disabled")&&c.is(this.selected)&&(this.selected=null)})},select:function(a){this.selected=b(a),this.selected.siblings(".widget-tpl").removeClass("selected"),this.selected.addClass("selected")},focus:function(a){this.select(b(a.currentTarget))},_submit:function(a){("keypress"!==a.type||13===a.which||32===a.which)&&this.submit(b(a.currentTarget))},submit:function(a){var c,d,e;a||(a=this.selected),a&&this.currentSidebarControl&&(this.select(a),c=b(this.selected).data("widget-id"),d=this.collection.findWhere({id:c}),d&&(e=this.currentSidebarControl.addWidget(d.get("id_base")),e&&e.focus(),this.close()))},open:function(a){this.currentSidebarControl=a,_(this.currentSidebarControl.getWidgetFormControls()).each(function(a){a.params.is_wide&&a.collapseForm()}),b("body").addClass("adding-widget"),this.$el.find(".selected").removeClass("selected"),this.collection.doSearch(""),f.settings.browser.mobile||this.$search.focus()},close:function(a){a=a||{},a.returnFocus&&this.currentSidebarControl&&this.currentSidebarControl.container.find(".add-new-widget").focus(),this.currentSidebarControl=null,this.selected=null,b("body").removeClass("adding-widget"),this.$search.val("")},keyboardAccessible:function(a){var c=13===a.which,d=27===a.which,e=40===a.which,f=38===a.which,g=9===a.which,h=a.shiftKey,i=null,j=this.$el.find("> .widget-tpl:visible:first"),k=this.$el.find("> .widget-tpl:visible:last"),l=b(a.target).is(this.$search),m=b(a.target).is(".widget-tpl:visible:last");return e||f?(e?l?i=j:this.selected&&0!==this.selected.nextAll(".widget-tpl:visible").length&&(i=this.selected.nextAll(".widget-tpl:visible:first")):f&&(l?i=k:this.selected&&0!==this.selected.prevAll(".widget-tpl:visible").length&&(i=this.selected.prevAll(".widget-tpl:visible:first"))),this.select(i),void(i?i.focus():this.$search.focus())):void((!c||this.$search.val())&&(c?this.submit():d&&this.close({returnFocus:!0}),this.currentSidebarControl&&g&&(h&&l||!h&&m)&&(this.currentSidebarControl.container.find(".add-new-widget").focus(),a.preventDefault())))}}),f.Widgets.formSyncHandlers={rss:function(a,c,d){var e=c.find(".widget-error:first"),f=b("<div>"+d+"</div>").find(".widget-error:first");e.length&&f.length?e.replaceWith(f):e.length?e.remove():f.length&&c.find(".widget-content:first").prepend(f)}},f.Widgets.WidgetControl=f.Control.extend({defaultExpandedArguments:{duration:"fast",completeCallback:b.noop},initialize:function(a,c){var d=this;d.widgetControlEmbedded=!1,d.widgetContentEmbedded=!1,d.expanded=new f.Value(!1),d.expandedArgumentsQueue=[],d.expanded.bind(function(a){var c=d.expandedArgumentsQueue.shift();c=b.extend({},d.defaultExpandedArguments,c),d.onChangeExpanded(a,c)}),f.Control.prototype.initialize.call(d,a,c)},ready:function(){var a=this;a.section()?f.section(a.section(),function(b){var c=function(d){d&&(a.embedWidgetControl(),b.expanded.unbind(c))};b.expanded()?c(!0):b.expanded.bind(c)}):a.embedWidgetControl()},embedWidgetControl:function(){var a,c=this;c.widgetControlEmbedded||(c.widgetControlEmbedded=!0,a=b(c.params.widget_control),c.container.append(a),c._setupModel(),c._setupWideWidget(),c._setupControlToggle(),c._setupWidgetTitle(),c._setupReorderUI(),c._setupHighlightEffects(),c._setupUpdateUI(),c._setupRemoveUI())},embedWidgetContent:function(){var a,c=this;c.embedWidgetControl(),c.widgetContentEmbedded||(c.widgetContentEmbedded=!0,a=b(c.params.widget_content),c.container.find(".widget-content:first").append(a),b(document).trigger("widget-added",[c.container.find(".widget:first")]))},_setupModel:function(){var a,b=this;a=function(){f.Widgets.savedWidgetIds[b.params.widget_id]=!0},f.bind("ready",a),f.bind("saved",a),this._updateCount=0,this.isWidgetUpdating=!1,this.liveUpdateMode=!0,this.setting.bind(function(a,c){_(c).isEqual(a)||b.isWidgetUpdating||b.updateWidget({instance:a})})},_setupWideWidget:function(){var a,c,d,e,g,h=this;this.params.is_wide&&(a=this.container.find(".widget-inside"),c=a.find("> .form"),d=b(".wp-full-overlay-sidebar-content:first"),this.container.addClass("wide-widget-control"),this.container.find(".widget-content:first").css({"max-width":this.params.width,"min-height":this.params.height}),g=function(){var d,e=h.container.offset().top,f=b(window).height(),g=c.outerHeight();a.css("max-height",f),d=Math.max(0,Math.min(Math.max(e,0),f-g)),a.css("top",d)},e=b("#customize-theme-controls"),this.container.on("expand",function(){g(),d.on("scroll",g),b(window).on("resize",g),e.on("expanded collapsed",g)}),this.container.on("collapsed",function(){d.off("scroll",g),b(window).off("resize",g),e.off("expanded collapsed",g)}),f.each(function(a){0===a.id.indexOf("sidebars_widgets[")&&a.bind(function(){h.container.hasClass("expanded")&&g()})}))},_setupControlToggle:function(){var a,b=this;this.container.find(".widget-top").on("click",function(a){a.preventDefault();var c=b.getSidebarWidgetsControl();c.isReordering||b.expanded(!b.expanded())}),a=this.container.find(".widget-control-close"),a.on("click",function(a){a.preventDefault(),b.collapse(),b.container.find(".widget-top .widget-action:first").focus()})},_setupWidgetTitle:function(){var a,b=this;a=function(){var a=b.setting().title,c=b.container.find(".in-widget-title");a?c.text(": "+a):c.text("")},this.setting.bind(a),a()},_setupReorderUI:function(){var c,d,g,h,i=this;c=function(a){a.siblings(".selected").removeClass("selected"),a.addClass("selected");var b=a.data("id")===i.params.sidebar_id;i.container.find(".move-widget-btn").prop("disabled",b)},this.container.find(".widget-title-action").after(b(f.Widgets.data.tpl.widgetReorderNav)),d=b(_.template(f.Widgets.data.tpl.moveWidgetArea,{sidebars:_(f.Widgets.registeredSidebars.toArray()).pluck("attributes")})),this.container.find(".widget-top").after(d),h=function(){var a,e=d.find("li"),g=0;a=e.filter(function(){return b(this).data("id")===i.params.sidebar_id}),e.each(function(){var d,e,h,i=b(this);d=i.data("id"),e=f.Widgets.registeredSidebars.get(d),h=e.get("is_rendered"),i.toggle(h),h&&(g+=1),i.hasClass("selected")&&!h&&c(a)}),g>1?i.container.find(".move-widget").show():i.container.find(".move-widget").hide()},h(),f.Widgets.registeredSidebars.on("change:is_rendered",h),g=this.container.find(".widget-reorder-nav"),g.find(".move-widget, .move-widget-down, .move-widget-up").each(function(){b(this).prepend(i.container.find(".widget-title").text()+": ")}).on("click keypress",function(c){if("keypress"!==c.type||13===c.which||32===c.which)if(b(this).focus(),b(this).is(".move-widget"))i.toggleWidgetMoveArea();else{var d=b(this).is(".move-widget-down"),f=b(this).is(".move-widget-up"),g=i.getWidgetSidebarPosition();if(f&&0===g||d&&g===i.getSidebarWidgetsControl().setting().length-1)return;f?(i.moveUp(),a.a11y.speak(e.widgetMovedUp)):(i.moveDown(),a.a11y.speak(e.widgetMovedDown)),b(this).focus()}}),this.container.find(".widget-area-select").on("click keypress","li",function(a){("keypress"!==a.type||13===a.which||32===a.which)&&(a.preventDefault(),c(b(this)))}),this.container.find(".move-widget-btn").click(function(){i.getSidebarWidgetsControl().toggleReordering(!1);var a,b,c,d,e,g=i.params.sidebar_id,h=i.container.find(".widget-area-select li.selected").data("id");a=f("sidebars_widgets["+g+"]"),b=f("sidebars_widgets["+h+"]"),c=Array.prototype.slice.call(a()),d=Array.prototype.slice.call(b()),e=i.getWidgetSidebarPosition(),c.splice(e,1),d.push(i.params.widget_id),a(c),b(d),i.focus()})},_setupHighlightEffects:function(){var a=this;this.container.on("mouseenter click",function(){a.setting.previewer.send("highlight-widget",a.params.widget_id)}),this.setting.bind(function(){a.setting.previewer.send("highlight-widget",a.params.widget_id)})},_setupUpdateUI:function(){var a,c,d,g,h,i=this;a=this.container.find(".widget:first"),c=a.find(".widget-content:first"),d=this.container.find(".widget-control-save"),d.val(e.saveBtnLabel),d.attr("title",e.saveBtnTooltip),d.removeClass("button-primary").addClass("button-secondary"),d.on("click",function(a){a.preventDefault(),i.updateWidget({disable_form:!0})}),g=_.debounce(function(){i.updateWidget()},250),c.on("keydown","input",function(a){13===a.which&&(a.preventDefault(),i.updateWidget({ignoreActiveElement:!0}))}),c.on("change input propertychange",":input",function(a){i.liveUpdateMode&&("change"===a.type||this.checkValidity&&this.checkValidity())&&g()}),this.setting.previewer.channel.bind("synced",function(){i.container.removeClass("previewer-loading")}),f.previewer.bind("widget-updated",function(a){a===i.params.widget_id&&i.container.removeClass("previewer-loading")}),h=f.Widgets.formSyncHandlers[this.params.widget_id_base],h&&b(document).on("widget-synced",function(b,c){a.is(c)&&h.apply(document,arguments)})},onChangeActive:function(a,b){this.container.toggleClass("widget-rendered",a),b.completeCallback&&b.completeCallback()},_setupRemoveUI:function(){var a,b,c=this;a=this.container.find("a.widget-control-remove"),a.on("click",function(a){a.preventDefault();var b;b=c.container.next().is(".customize-control-widget_form")?c.container.next().find(".widget-action:first"):c.container.prev().is(".customize-control-widget_form")?c.container.prev().find(".widget-action:first"):c.container.next(".customize-control-sidebar_widgets").find(".add-new-widget:first"),c.container.slideUp(function(){var a,d,e=f.Widgets.getSidebarWidgetControlContainingWidget(c.params.widget_id);e&&(a=e.setting().slice(),d=_.indexOf(a,c.params.widget_id),-1!==d&&(a.splice(d,1),e.setting(a),b.focus()))})}),b=function(){a.text(e.removeBtnLabel),a.attr("title",e.removeBtnTooltip)},this.params.is_new?f.bind("saved",b):b()},_getInputs:function(a){return b(a).find(":input[name]")},_getInputsSignature:function(a){var c=_(a).map(function(a){var c,d=b(a);return c=d.is(":checkbox, :radio")?[d.attr("id"),d.attr("name"),d.prop("value")]:[d.attr("id"),d.attr("name")],c.join(",")});return c.join(";")},_getInputState:function(a){return a=b(a),a.is(":radio, :checkbox")?a.prop("checked"):a.is("select[multiple]")?a.find("option:selected").map(function(){return b(this).val()}).get():a.val()},_setInputState:function(a,c){a=b(a),a.is(":radio, :checkbox")?a.prop("checked",c):a.is("select[multiple]")?(c=b.isArray(c)?_.map(c,function(a){return String(a)}):[],a.find("option").each(function(){b(this).prop("selected",-1!==_.indexOf(c,String(this.value)))})):a.val(c)},getSidebarWidgetsControl:function(){var a,b;return a="sidebars_widgets["+this.params.sidebar_id+"]",(b=f.control(a))?b:void 0},updateWidget:function(c){var d,g,h,i,j,k,l,m,n,o,p,q=this;q.embedWidgetContent(),c=b.extend({instance:null,complete:null,ignoreActiveElement:!1},c),d=c.instance,g=c.complete,this._updateCount+=1,j=this._updateCount,h=this.container.find(".widget:first"),i=h.find(".widget-content:first"),i.find(".widget-error").remove(),this.container.addClass("widget-form-loading"),this.container.addClass("previewer-loading"),n=f.state("processing"),n(n()+1),this.liveUpdateMode||this.container.addClass("widget-form-disabled"),k={},k.action="update-widget",k.wp_customize="on",k.nonce=f.Widgets.data.nonce,k.theme=f.settings.theme.stylesheet,k.customized=a.customize.previewer.query().customized,l=b.param(k),m=this._getInputs(i),m.each(function(){b(this).data("state"+j,q._getInputState(this))}),l+=d?"&"+b.param({sanitized_widget_setting:JSON.stringify(d)}):"&"+m.serialize(),l+="&"+i.find("~ :input").serialize(),this._previousUpdateRequest&&this._previousUpdateRequest.abort(),o=b.post(a.ajax.settings.url,l),this._previousUpdateRequest=o,o.done(function(a){var d,k,l,n,o=!1;return"0"===a?(f.previewer.preview.iframe.hide(),void f.previewer.login().done(function(){q.updateWidget(c),f.previewer.preview.iframe.show()})):"-1"===a?void f.previewer.cheatin():void(a.success?(k=b("<div>"+a.data.form+"</div>"),l=q._getInputs(k),n=q._getInputsSignature(m)===q._getInputsSignature(l),n&&!q.liveUpdateMode&&(q.liveUpdateMode=!0,q.container.removeClass("widget-form-disabled"),q.container.find('input[name="savewidget"]').hide()),n&&q.liveUpdateMode?(m.each(function(a){var d,e,f,g=b(this),h=b(l[a]);d=g.data("state"+j),e=q._getInputState(h),g.data("sanitized",e),f=!_.isEqual(d,e)&&(c.ignoreActiveElement||!g.is(document.activeElement)),f&&q._setInputState(g,e)}),b(document).trigger("widget-synced",[h,a.data.form])):q.liveUpdateMode?(q.liveUpdateMode=!1,q.container.find('input[name="savewidget"]').show(),o=!0):(i.html(a.data.form),q.container.removeClass("widget-form-disabled"),b(document).trigger("widget-updated",[h])),p=!o&&!_(q.setting()).isEqual(a.data.instance),p?(q.isWidgetUpdating=!0,q.setting(a.data.instance),q.isWidgetUpdating=!1):q.container.removeClass("previewer-loading"),g&&g.call(q,null,{noChange:!p,ajaxFinished:!0})):(d=e.error,a.data&&a.data.message&&(d=a.data.message),g?g.call(q,d):i.prepend('<p class="widget-error"><strong>'+d+"</strong></p>")))}),o.fail(function(a,b){g&&g.call(q,b)}),o.always(function(){q.container.removeClass("widget-form-loading"),m.each(function(){b(this).removeData("state"+j)}),n(n()-1)})},expandControlSection:function(){f.Control.prototype.expand.call(this)},_toggleExpanded:f.Section.prototype._toggleExpanded,expand:f.Section.prototype.expand,expandForm:function(){this.expand()},collapse:f.Section.prototype.collapse,collapseForm:function(){this.collapse()},toggleForm:function(a){"undefined"==typeof a&&(a=!this.expanded()),this.expanded(a)},onChangeExpanded:function(a,b){var c,d,e,g,h=this;return h.embedWidgetControl(),a&&h.embedWidgetContent(),b.unchanged?void(a&&f.Control.prototype.expand.call(h,{completeCallback:b.completeCallback})):(c=this.container.find("div.widget:first"),d=c.find(".widget-inside:first"),void(a?(h.section()&&f.section(h.section())&&h.expandControlSection(),f.control.each(function(a){h.params.type===a.params.type&&h!==a&&a.collapse()}),e=function(){h.container.removeClass("expanding"),h.container.addClass("expanded"),h.container.trigger("expanded")},b.completeCallback&&(g=e,e=function(){g(),b.completeCallback()}),h.params.is_wide?d.fadeIn(b.duration,e):d.slideDown(b.duration,e),h.container.trigger("expand"),h.container.addClass("expanding")):(e=function(){h.container.removeClass("collapsing"),h.container.removeClass("expanded"),h.container.trigger("collapsed")},b.completeCallback&&(g=e,e=function(){g(),b.completeCallback()}),h.container.trigger("collapse"),h.container.addClass("collapsing"),h.params.is_wide?d.fadeOut(b.duration,e):d.slideUp(b.duration,function(){c.css({width:"",margin:""}),e()}))))},getWidgetSidebarPosition:function(){var a,b;return a=this.getSidebarWidgetsControl().setting(),b=_.indexOf(a,this.params.widget_id),-1!==b?b:void 0},moveUp:function(){this._moveWidgetByOne(-1)},moveDown:function(){this._moveWidgetByOne(1)},_moveWidgetByOne:function(a){var b,c,d,e;b=this.getWidgetSidebarPosition(),c=this.getSidebarWidgetsControl().setting,d=Array.prototype.slice.call(c()),e=d[b+a],d[b+a]=this.params.widget_id,d[b]=e,c(d)},toggleWidgetMoveArea:function(a){var c,d=this;c=this.container.find(".move-widget-area"),"undefined"==typeof a&&(a=!c.hasClass("active")),a&&(c.find(".selected").removeClass("selected"),c.find("li").filter(function(){return b(this).data("id")===d.params.sidebar_id}).addClass("selected"),this.container.find(".move-widget-btn").prop("disabled",!0)),c.toggleClass("active",a)},highlightSectionAndControl:function(){var a;a=this.container.is(":hidden")?this.container.closest(".control-section"):this.container,b(".highlighted").removeClass("highlighted"),a.addClass("highlighted"),setTimeout(function(){a.removeClass("highlighted")},500)}}),f.Widgets.WidgetsPanel=f.Panel.extend({ready:function(){var a=this;f.Panel.prototype.ready.call(a),a.deferred.embedded.done(function(){var c,d,g;c=a.container.find(".panel-meta"),d=b("<div></div>",{"class":"no-widget-areas-rendered-notice"}),d.append(b("<em></em>",{text:e.noAreasRendered})),c.append(d),g=function(){return 0===_.filter(a.sections(),function(a){return a.active()}).length},d.toggle(g()),f.previewer.deferred.active.done(function(){d.toggle(g())}),f.bind("pane-contents-reflowed",function(){var a="resolved"===f.previewer.deferred.active.state()?"fast":0;g()?d.slideDown(a):d.slideUp(a)})})},isContextuallyActive:function(){var a=this;return a.active()}}),f.Widgets.SidebarSection=f.Section.extend({ready:function(){var a,b=this;f.Section.prototype.ready.call(this),a=f.Widgets.registeredSidebars.get(b.params.sidebarId),b.active.bind(function(b){a.set("is_rendered",b)}),a.set("is_rendered",b.active())}}),f.Widgets.SidebarControl=f.Control.extend({ready:function(){this.$controlSection=this.container.closest(".control-section"),this.$sectionContent=this.container.closest(".accordion-section-content"),this._setupModel(),this._setupSortable(),this._setupAddition(),this._applyCardinalOrderClassNames()},_setupModel:function(){var a=this;this.setting.bind(function(d,e){var g,h,i;h=_(e).difference(d),d=_(d).filter(function(a){var b=c(a);return!!f.Widgets.availableWidgets.findWhere({id_base:b.id_base})}),g=_(d).map(function(b){var c=f.Widgets.getWidgetFormControlForWidget(b);return c||(c=a.addWidget(b)),c}),g.sort(function(a,b){var c=_.indexOf(d,a.params.widget_id),e=_.indexOf(d,b.params.widget_id);return c-e}),i=0,_(g).each(function(b){b.priority(i),b.section(a.section()),i+=1}),a.priority(i),a._applyCardinalOrderClassNames(),_(g).each(function(b){b.params.sidebar_id=a.params.sidebar_id}),_(h).each(function(d){setTimeout(function(){var e,g,h,i,j,k=!1;f.each(function(b){if(b.id!==a.setting.id&&0===b.id.indexOf("sidebars_widgets[")&&"sidebars_widgets[wp_inactive_widgets]"!==b.id){var c,e=b();c=_.indexOf(e,d),-1!==c&&(k=!0)}}),k||(e=f.Widgets.getWidgetFormControlForWidget(d),g=e&&b.contains(document,e.container[0])&&!b.contains(a.$sectionContent[0],e.container[0]),e&&!g&&(f.control.remove(e.id),e.container.remove()),f.Widgets.savedWidgetIds[d]&&(h=f.value("sidebars_widgets[wp_inactive_widgets]")().slice(),h.push(d),f.value("sidebars_widgets[wp_inactive_widgets]")(_(h).unique())),i=c(d).id_base,j=f.Widgets.availableWidgets.findWhere({id_base:i}),j&&!j.get("is_multi")&&j.set("is_disabled",!1))})})})},_setupSortable:function(){var a=this;this.isReordering=!1,this.$sectionContent.sortable({items:"> .customize-control-widget_form",handle:".widget-top",axis:"y",tolerance:"pointer",connectWith:".accordion-section-content:has(.customize-control-sidebar_widgets)",update:function(){var c,d=a.$sectionContent.sortable("toArray");c=b.map(d,function(a){return b("#"+a).find(":input[name=widget-id]").val()}),a.setting(c)}}),this.$controlSection.find(".accordion-section-title").droppable({accept:".customize-control-widget_form",over:function(){var b=f.section(a.section.get());b.expand({allowMultiple:!0,completeCallback:function(){f.section.each(function(a){a.container.find(".customize-control-sidebar_widgets").length&&a.container.find(".accordion-section-content:first").sortable("refreshPositions")})}})}}),this.container.find(".reorder-toggle").on("click",function(){a.toggleReordering(!a.isReordering)})},_setupAddition:function(){var a=this;this.container.find(".add-new-widget").on("click",function(){var c=b(this);a.$sectionContent.hasClass("reordering")||(b("body").hasClass("adding-widget")?(c.attr("aria-expanded","false"),f.Widgets.availableWidgetsPanel.close()):(c.attr("aria-expanded","true"),f.Widgets.availableWidgetsPanel.open(a)))})},_applyCardinalOrderClassNames:function(){var a=[];return _.each(this.setting(),function(b){var c=f.Widgets.getWidgetFormControlForWidget(b);c&&a.push(c)}),a.length?(this.container.find(".reorder-toggle").show(),b(a).each(function(){b(this.container).removeClass("first-widget").removeClass("last-widget").find(".move-widget-down, .move-widget-up").prop("tabIndex",0)}),_.first(a).container.addClass("first-widget").find(".move-widget-up").prop("tabIndex",-1),void _.last(a).container.addClass("last-widget").find(".move-widget-down").prop("tabIndex",-1)):void this.container.find(".reorder-toggle").hide()},toggleReordering:function(b){var c=this.$sectionContent.find(".add-new-widget"),d=this.container.find(".reorder-toggle"),f=this.$sectionContent.find(".widget-title");b=Boolean(b),b!==this.$sectionContent.hasClass("reordering")&&(this.isReordering=b,this.$sectionContent.toggleClass("reordering",b),b?(_(this.getWidgetFormControls()).each(function(a){a.collapse()}),c.attr({tabindex:"-1","aria-hidden":"true"}),d.attr("aria-label",e.reorderLabelOff),a.a11y.speak(e.reorderModeOn),f.attr("aria-hidden","true")):(c.removeAttr("tabindex aria-hidden"),d.attr("aria-label",e.reorderLabelOn),a.a11y.speak(e.reorderModeOff),f.attr("aria-hidden","false")))},getWidgetFormControls:function(){var a=[];return _(this.setting()).each(function(b){var c=d(b),e=f.control(c);e&&a.push(e)}),a},addWidget:function(a){var d,e,g,h,i,j,k,l,m,n,o=this,p="widget_form",q=c(a),r=q.number,s=q.id_base,t=f.Widgets.availableWidgets.findWhere({id_base:s});return t?r&&!t.get("is_multi")?!1:(t.get("is_multi")&&!r&&(t.set("multi_number",t.get("multi_number")+1),r=t.get("multi_number")),d=b.trim(b("#widget-tpl-"+t.get("id")).html()),t.get("is_multi")?d=d.replace(/<[^<>]+>/g,function(a){return a.replace(/__i__|%i%/g,r)}):t.set("is_disabled",!0),e=b(d),g=b("<li/>").addClass("customize-control").addClass("customize-control-"+p).append(e),g.find("> .widget-icon").remove(),t.get("is_multi")&&(g.find('input[name="widget_number"]').val(r),g.find('input[name="multi_number"]').val(r)),a=g.find('[name="widget-id"]').val(),g.hide(),i="widget_"+t.get("id_base"),t.get("is_multi")&&(i+="["+r+"]"),g.attr("id","customize-control-"+i.replace(/\]/g,"").replace(/\[/g,"-")),j=f.has(i),j||(m={transport:"refresh",previewer:this.setting.previewer},n=f.create(i,i,"",m),n.set({})),h=f.controlConstructor[p],k=new h(i,{params:{settings:{"default":i},content:g,sidebar_id:o.params.sidebar_id,widget_id:a,widget_id_base:t.get("id_base"),type:p,is_new:!j,width:t.get("width"),height:t.get("height"),is_wide:t.get("is_wide"),active:!0},previewer:o.setting.previewer}),f.control.add(i,k),f.each(function(b){if(b.id!==o.setting.id&&0===b.id.indexOf("sidebars_widgets[")){var c=b().slice(),d=_.indexOf(c,a);-1!==d&&(c.splice(d),b(c))}}),l=this.setting().slice(),-1===_.indexOf(l,a)&&(l.push(a),this.setting(l)),g.slideDown(function(){j&&k.updateWidget({instance:k.setting()})}),k):!1}}),b.extend(f.panelConstructor,{widgets:f.Widgets.WidgetsPanel}),b.extend(f.sectionConstructor,{sidebar:f.Widgets.SidebarSection}),b.extend(f.controlConstructor,{widget_form:f.Widgets.WidgetControl,sidebar_widgets:f.Widgets.SidebarControl}),f.bind("nonce-refresh",function(a){f.Widgets.data.nonce=a["update-widget"]}),f.bind("ready",function(){f.Widgets.availableWidgetsPanel=new f.Widgets.AvailableWidgetsPanelView({collection:f.Widgets.availableWidgets}),f.previewer.bind("highlight-widget-control",f.Widgets.highlightWidgetFormControl),f.previewer.bind("focus-widget-control",f.Widgets.focusWidgetFormControl)}),f.Widgets.highlightWidgetFormControl=function(a){var b=f.Widgets.getWidgetFormControlForWidget(a);b&&b.highlightSectionAndControl()},f.Widgets.focusWidgetFormControl=function(a){var b=f.Widgets.getWidgetFormControlForWidget(a);b&&b.focus()},f.Widgets.getSidebarWidgetControlContainingWidget=function(a){var b=null;return f.control.each(function(c){"sidebar_widgets"===c.params.type&&-1!==_.indexOf(c.setting(),a)&&(b=c)}),b},f.Widgets.getWidgetFormControlForWidget=function(a){var b=null;return f.control.each(function(c){"widget_form"===c.params.type&&c.params.widget_id===a&&(b=c)}),b}}}(window.wp,jQuery);
\ No newline at end of file
index a2a846cdd4f2301569f35eef1433fd0f1608c0fd..fa100dd16cb9c0599f8c0863671b15596c571351 100644 (file)
@@ -67,7 +67,8 @@ jQuery(document).ready( function($) {
 
                $( '#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]' ).prop( 'disabled' , false );
 
-               t = $('#quick-press').submit( function() {
+               t = $('#quick-press').submit( function( e ) {
+                       e.preventDefault();
                        $('#dashboard_quick_press #publishing-action .spinner').show();
                        $('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop('disabled', true);
 
@@ -87,8 +88,6 @@ jQuery(document).ready( function($) {
                                        latestPost.css('background', 'none');
                                }, 1000);
                        }
-
-                       return false;
                } );
 
                $('#publish').click( function() { act.val( 'post-quickpress-publish' ); } );
index 3ef0262bf65db08a5aa8425603064e6322f52977..211866f55a2440872620e807055b8569bb1cb786 100644 (file)
@@ -1 +1 @@
-var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){function b(){if(!(document.documentMode&&document.documentMode<9)){a("body").append('<div class="quick-draft-textarea-clone" style="display: none;"></div>');var b=a(".quick-draft-textarea-clone"),c=a("#content"),d=c.height(),e=a(window).height()-100;b.css({"font-family":c.css("font-family"),"font-size":c.css("font-size"),"line-height":c.css("line-height"),"padding-bottom":c.css("paddingBottom"),"padding-left":c.css("paddingLeft"),"padding-right":c.css("paddingRight"),"padding-top":c.css("paddingTop"),"white-space":"pre-wrap","word-wrap":"break-word",display:"none"}),c.on("focus input propertychange",function(){var f=a(this),g=f.val()+"&nbsp;",h=b.css("width",f.css("width")).text(g).outerHeight()+2;c.css("overflow-y","auto"),h===d||h>=e&&d>=e||(d=h>e?e:h,c.css("overflow","hidden"),f.css("height",d+"px"))})}}var c,d=a("#welcome-panel"),e=a("#wp_welcome_panel-hide");c=function(b){a.post(ajaxurl,{action:"update-welcome-panel",visible:b,welcomepanelnonce:a("#welcomepanelnonce").val()})},d.hasClass("hidden")&&e.prop("checked")&&d.removeClass("hidden"),a(".welcome-panel-close, .welcome-panel-dismiss a",d).click(function(b){b.preventDefault(),d.addClass("hidden"),c(0),a("#wp_welcome_panel-hide").prop("checked",!1)}),e.click(function(){d.toggleClass("hidden",!this.checked),c(this.checked?1:0)}),ajaxWidgets=["dashboard_primary"],ajaxPopulateWidgets=function(b){function c(b,c){var d,e=a("#"+c+" div.inside:visible").find(".widget-loading");e.length&&(d=e.parent(),setTimeout(function(){d.load(ajaxurl+"?action=dashboard-widgets&widget="+c+"&pagenow="+pagenow,"",function(){d.hide().slideDown("normal",function(){a(this).css("display","")})})},500*b))}b?(b=b.toString(),-1!==a.inArray(b,ajaxWidgets)&&c(0,b)):a.each(ajaxWidgets,c)},ajaxPopulateWidgets(),postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets}),quickPressLoad=function(){var c,d=a("#quickpost-action");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",!1),c=a("#quick-press").submit(function(){function b(){var b=a(".drafts ul li").first();b.css("background","#fffbe5"),setTimeout(function(){b.css("background","none")},1e3)}return a("#dashboard_quick_press #publishing-action .spinner").show(),a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",!0),a.post(c.attr("action"),c.serializeArray(),function(c){a("#dashboard_quick_press .inside").html(c),a("#quick-press").removeClass("initial-form"),quickPressLoad(),b(),a("#title").focus()}),!1}),a("#publish").click(function(){d.val("post-quickpress-publish")}),a("#title, #tags-input, #content").each(function(){var b=a(this),c=a("#"+this.id+"-prompt-text");""===this.value&&c.removeClass("screen-reader-text"),c.click(function(){a(this).addClass("screen-reader-text"),b.focus()}),b.blur(function(){""===this.value&&c.removeClass("screen-reader-text")}),b.focus(function(){c.addClass("screen-reader-text")})}),a("#quick-press").on("click focusin",function(){wpActiveEditor="content"}),b()},quickPressLoad(),a(".meta-box-sortables").sortable("option","containment","#wpwrap")});
\ No newline at end of file
+var ajaxWidgets,ajaxPopulateWidgets,quickPressLoad;jQuery(document).ready(function(a){function b(){if(!(document.documentMode&&document.documentMode<9)){a("body").append('<div class="quick-draft-textarea-clone" style="display: none;"></div>');var b=a(".quick-draft-textarea-clone"),c=a("#content"),d=c.height(),e=a(window).height()-100;b.css({"font-family":c.css("font-family"),"font-size":c.css("font-size"),"line-height":c.css("line-height"),"padding-bottom":c.css("paddingBottom"),"padding-left":c.css("paddingLeft"),"padding-right":c.css("paddingRight"),"padding-top":c.css("paddingTop"),"white-space":"pre-wrap","word-wrap":"break-word",display:"none"}),c.on("focus input propertychange",function(){var f=a(this),g=f.val()+"&nbsp;",h=b.css("width",f.css("width")).text(g).outerHeight()+2;c.css("overflow-y","auto"),h===d||h>=e&&d>=e||(d=h>e?e:h,c.css("overflow","hidden"),f.css("height",d+"px"))})}}var c,d=a("#welcome-panel"),e=a("#wp_welcome_panel-hide");c=function(b){a.post(ajaxurl,{action:"update-welcome-panel",visible:b,welcomepanelnonce:a("#welcomepanelnonce").val()})},d.hasClass("hidden")&&e.prop("checked")&&d.removeClass("hidden"),a(".welcome-panel-close, .welcome-panel-dismiss a",d).click(function(b){b.preventDefault(),d.addClass("hidden"),c(0),a("#wp_welcome_panel-hide").prop("checked",!1)}),e.click(function(){d.toggleClass("hidden",!this.checked),c(this.checked?1:0)}),ajaxWidgets=["dashboard_primary"],ajaxPopulateWidgets=function(b){function c(b,c){var d,e=a("#"+c+" div.inside:visible").find(".widget-loading");e.length&&(d=e.parent(),setTimeout(function(){d.load(ajaxurl+"?action=dashboard-widgets&widget="+c+"&pagenow="+pagenow,"",function(){d.hide().slideDown("normal",function(){a(this).css("display","")})})},500*b))}b?(b=b.toString(),-1!==a.inArray(b,ajaxWidgets)&&c(0,b)):a.each(ajaxWidgets,c)},ajaxPopulateWidgets(),postboxes.add_postbox_toggles(pagenow,{pbshow:ajaxPopulateWidgets}),quickPressLoad=function(){var c,d=a("#quickpost-action");a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",!1),c=a("#quick-press").submit(function(b){function d(){var b=a(".drafts ul li").first();b.css("background","#fffbe5"),setTimeout(function(){b.css("background","none")},1e3)}b.preventDefault(),a("#dashboard_quick_press #publishing-action .spinner").show(),a('#quick-press .submit input[type="submit"], #quick-press .submit input[type="reset"]').prop("disabled",!0),a.post(c.attr("action"),c.serializeArray(),function(b){a("#dashboard_quick_press .inside").html(b),a("#quick-press").removeClass("initial-form"),quickPressLoad(),d(),a("#title").focus()})}),a("#publish").click(function(){d.val("post-quickpress-publish")}),a("#title, #tags-input, #content").each(function(){var b=a(this),c=a("#"+this.id+"-prompt-text");""===this.value&&c.removeClass("screen-reader-text"),c.click(function(){a(this).addClass("screen-reader-text"),b.focus()}),b.blur(function(){""===this.value&&c.removeClass("screen-reader-text")}),b.focus(function(){c.addClass("screen-reader-text")})}),a("#quick-press").on("click focusin",function(){wpActiveEditor="content"}),b()},quickPressLoad(),a(".meta-box-sortables").sortable("option","containment","#wpwrap")});
\ No newline at end of file
index b3e69bf7fd56e693b016e56330fde3b3a52107a7..7fc62deb73688f65589fe93c5aa64fe8c212cecf 100644 (file)
@@ -2,7 +2,187 @@
 var setCommentsList, theList, theExtraList, commentReply;
 
 (function($) {
-var getCount, updateCount, updatePending;
+var getCount, updateCount, updateCountText, updatePending, updateApproved,
+       updateHtmlTitle, updateDashboardText, adminTitle = document.title,
+       isDashboard = $('#dashboard_right_now').length,
+       titleDiv, titleRegEx;
+
+       getCount = function(el) {
+               var n = parseInt( el.html().replace(/[^0-9]+/g, ''), 10 );
+               if ( isNaN(n) ) {
+                       return 0;
+               }
+               return n;
+       };
+
+       updateCount = function(el, n) {
+               var n1 = '';
+               if ( isNaN(n) ) {
+                       return;
+               }
+               n = n < 1 ? '0' : n.toString();
+               if ( n.length > 3 ) {
+                       while ( n.length > 3 ) {
+                               n1 = thousandsSeparator + n.substr(n.length - 3) + n1;
+                               n = n.substr(0, n.length - 3);
+                       }
+                       n = n + n1;
+               }
+               el.html(n);
+       };
+
+       updateApproved = function( diff, commentPostId ) {
+               var postSelector = '.post-com-count-' + commentPostId,
+                       noClass = 'comment-count-no-comments',
+                       approvedClass = 'comment-count-approved',
+                       approved,
+                       noComments;
+
+               updateCountText( 'span.approved-count', diff );
+
+               if ( ! commentPostId ) {
+                       return;
+               }
+
+               // cache selectors to not get dupes
+               approved = $( 'span.' + approvedClass, postSelector );
+               noComments = $( 'span.' + noClass, postSelector );
+
+               approved.each(function() {
+                       var a = $(this), n = getCount(a) + diff;
+                       if ( n < 1 )
+                               n = 0;
+
+                       if ( 0 === n ) {
+                               a.removeClass( approvedClass ).addClass( noClass );
+                       } else {
+                               a.addClass( approvedClass ).removeClass( noClass );
+                       }
+                       updateCount( a, n );
+               });
+
+               noComments.each(function() {
+                       var a = $(this);
+                       if ( diff > 0 ) {
+                               a.removeClass( noClass ).addClass( approvedClass );
+                       } else {
+                               a.addClass( noClass ).removeClass( approvedClass );
+                       }
+                       updateCount( a, diff );
+               });
+       };
+
+       updateCountText = function( selector, diff ) {
+               $( selector ).each(function() {
+                       var a = $(this), n = getCount(a) + diff;
+                       if ( n < 1 ) {
+                               n = 0;
+                       }
+                       updateCount( a, n );
+               });
+       };
+
+       updateDashboardText = function ( response ) {
+               if ( ! isDashboard || ! response || ! response.i18n_comments_text ) {
+                       return;
+               }
+
+               var rightNow = $( '#dashboard_right_now' );
+
+               $( '.comment-count a', rightNow ).text( response.i18n_comments_text );
+               $( '.comment-mod-count a', rightNow ).text( response.i18n_moderation_text )
+                       .parent()
+                       [ response.in_moderation > 0 ? 'removeClass' : 'addClass' ]( 'hidden' );
+       };
+
+       updateHtmlTitle = function ( diff ) {
+               var newTitle, regExMatch, titleCount, commentFrag;
+
+               titleRegEx = titleRegEx || new RegExp( adminCommentsL10n.docTitleCommentsCount.replace( '%s', '\\([0-9' + thousandsSeparator + ']+\\)' ) + '?' );
+               // count funcs operate on a $'d element
+               titleDiv = titleDiv || $( '<div />' );
+               newTitle = adminTitle;
+
+               commentFrag = titleRegEx.exec( document.title );
+               if ( commentFrag ) {
+                       commentFrag = commentFrag[0];
+                       titleDiv.html( commentFrag );
+                       titleCount = getCount( titleDiv ) + diff;
+               } else {
+                       titleDiv.html( 0 );
+                       titleCount = diff;
+               }
+
+               if ( titleCount >= 1 ) {
+                       updateCount( titleDiv, titleCount );
+                       regExMatch = titleRegEx.exec( document.title );
+                       if ( regExMatch ) {
+                               newTitle = document.title.replace( regExMatch[0], adminCommentsL10n.docTitleCommentsCount.replace( '%s', titleDiv.text() ) + ' ' );
+                       }
+               } else {
+                       regExMatch = titleRegEx.exec( newTitle );
+                       if ( regExMatch ) {
+                               newTitle = newTitle.replace( regExMatch[0], adminCommentsL10n.docTitleComments );
+                       }
+               }
+               document.title = newTitle;
+       };
+
+       updatePending = function( diff, commentPostId ) {
+               var postSelector = '.post-com-count-' + commentPostId,
+                       noClass = 'comment-count-no-pending',
+                       noParentClass = 'post-com-count-no-pending',
+                       pendingClass = 'comment-count-pending',
+                       pending,
+                       noPending;
+
+               if ( ! isDashboard ) {
+                       updateHtmlTitle( diff );
+               }
+
+               $( 'span.pending-count' ).each(function() {
+                       var a = $(this), n = getCount(a) + diff;
+                       if ( n < 1 )
+                               n = 0;
+                       a.closest('.awaiting-mod')[ 0 === n ? 'addClass' : 'removeClass' ]('count-0');
+                       updateCount( a, n );
+               });
+
+               if ( ! commentPostId ) {
+                       return;
+               }
+
+               // cache selectors to not get dupes
+               pending = $( 'span.' + pendingClass, postSelector );
+               noPending = $( 'span.' + noClass, postSelector );
+
+               pending.each(function() {
+                       var a = $(this), n = getCount(a) + diff;
+                       if ( n < 1 )
+                               n = 0;
+
+                       if ( 0 === n ) {
+                               a.parent().addClass( noParentClass );
+                               a.removeClass( pendingClass ).addClass( noClass );
+                       } else {
+                               a.parent().removeClass( noParentClass );
+                               a.addClass( pendingClass ).removeClass( noClass );
+                       }
+                       updateCount( a, n );
+               });
+
+               noPending.each(function() {
+                       var a = $(this);
+                       if ( diff > 0 ) {
+                               a.parent().removeClass( noParentClass );
+                               a.removeClass( noClass ).addClass( pendingClass );
+                       } else {
+                               a.parent().addClass( noParentClass );
+                               a.addClass( noClass ).removeClass( pendingClass );
+                       }
+                       updateCount( a, diff );
+               });
+       };
 
 setCommentsList = function() {
        var totalInput, perPageInput, pageInput, dimAfter, delBefore, updateTotalCount, delAfter, refillTheExtraList, diff,
@@ -12,10 +192,26 @@ setCommentsList = function() {
        perPageInput = $('input[name="_per_page"]', '#comments-form');
        pageInput = $('input[name="_page"]', '#comments-form');
 
+       // Updates the current total (stored in the _total input)
+       updateTotalCount = function( total, time, setConfidentTime ) {
+               if ( time < lastConfidentTime )
+                       return;
+
+               if ( setConfidentTime )
+                       lastConfidentTime = time;
+
+               totalInput.val( total.toString() );
+       };
+
+       // this fires when viewing "All"
        dimAfter = function( r, settings ) {
-               var editRow, replyID, replyButton,
+               var editRow, replyID, replyButton, response,
                        c = $( '#' + settings.element );
 
+               if ( true !== settings.parsed ) {
+                       response = settings.parsed.responses[0];
+               }
+
                editRow = $('#replyrow');
                replyID = $('#comment_ID', editRow).val();
                replyButton = $('#replybtn', editRow);
@@ -33,7 +229,14 @@ setCommentsList = function() {
                }
 
                diff = $('#' + settings.element).is('.' + settings.dimClass) ? 1 : -1;
-               updatePending( diff );
+               if ( response ) {
+                       updateDashboardText( response.supplemental );
+                       updatePending( diff, response.supplemental.postId );
+                       updateApproved( -1 * diff, response.supplemental.postId );
+               } else {
+                       updatePending( diff );
+                       updateApproved( -1 * diff  );
+               }
        };
 
        // Send current total, page, per_page and url
@@ -81,111 +284,177 @@ setCommentsList = function() {
                        a.attr('class', 'vim-z vim-destructive');
                        $('.avatar', el).first().clone().prependTo('#undo-' + id + ' .' + action + '-undo-inside');
 
-                       a.click(function(){
+                       a.click(function( e ){
+                               e.preventDefault();
                                list.wpList.del(this);
                                $('#undo-' + id).css( {backgroundColor:'#ceb'} ).fadeOut(350, function(){
                                        $(this).remove();
                                        $('#comment-' + id).css('backgroundColor', '').fadeIn(300, function(){ $(this).show(); });
                                });
-                               return false;
                        });
                }
 
                return settings;
        };
 
-       // Updates the current total (stored in the _total input)
-       updateTotalCount = function( total, time, setConfidentTime ) {
-               if ( time < lastConfidentTime )
-                       return;
+       // In admin-ajax.php, we send back the unix time stamp instead of 1 on success
+       delAfter = function( r, settings ) {
+               var total_items_i18n, total, animated, animatedCallback,
+                       response = true === settings.parsed ? {} : settings.parsed.responses[0],
+                       commentStatus = true === settings.parsed ? '' : response.supplemental.status,
+                       commentPostId = true === settings.parsed ? '' : response.supplemental.postId,
+                       newTotal = true === settings.parsed ? '' : response.supplemental,
+
+                       targetParent = $( settings.target ).parent(),
+                       commentRow = $('#' + settings.element),
+
+                       spamDiff, trashDiff, pendingDiff, approvedDiff,
+
+                       approved = commentRow.hasClass( 'approved' ),
+                       unapproved = commentRow.hasClass( 'unapproved' ),
+                       spammed = commentRow.hasClass( 'spam' ),
+                       trashed = commentRow.hasClass( 'trash' );
+
+               updateDashboardText( newTotal );
+
+               // the order of these checks is important
+               // .unspam can also have .approve or .unapprove
+               // .untrash can also have .approve or .unapprove
+
+               if ( targetParent.is( 'span.undo' ) ) {
+                       // the comment was spammed
+                       if ( targetParent.hasClass( 'unspam' ) ) {
+                               spamDiff = -1;
+
+                               if ( 'trash' === commentStatus ) {
+                                       trashDiff = 1;
+                               } else if ( '1' === commentStatus ) {
+                                       approvedDiff = 1;
+                               } else if ( '0' === commentStatus ) {
+                                       pendingDiff = 1;
+                               }
 
-               if ( setConfidentTime )
-                       lastConfidentTime = time;
+                       // the comment was trashed
+                       } else if ( targetParent.hasClass( 'untrash' ) ) {
+                               trashDiff = -1;
 
-               totalInput.val( total.toString() );
-       };
+                               if ( 'spam' === commentStatus ) {
+                                       spamDiff = 1;
+                               } else if ( '1' === commentStatus ) {
+                                       approvedDiff = 1;
+                               } else if ( '0' === commentStatus ) {
+                                       pendingDiff = 1;
+                               }
+                       }
 
-       getCount = function(el) {
-               var n = parseInt( el.html().replace(/[^0-9]+/g, ''), 10 );
-               if ( isNaN(n) )
-                       return 0;
-               return n;
-       };
+               // user clicked "Spam"
+               } else if ( targetParent.is( 'span.spam' ) ) {
+                       // the comment is currently approved
+                       if ( approved ) {
+                               approvedDiff = -1;
+                       // the comment is currently pending
+                       } else if ( unapproved ) {
+                               pendingDiff = -1;
+                       // the comment was in the trash
+                       } else if ( trashed ) {
+                               trashDiff = -1;
+                       }
+                       // you can't spam an item on the spam screen
+                       spamDiff = 1;
+
+               // user clicked "Unspam"
+               } else if ( targetParent.is( 'span.unspam' ) ) {
+                       if ( approved ) {
+                               pendingDiff = 1;
+                       } else if ( unapproved ) {
+                               approvedDiff = 1;
+                       } else if ( trashed ) {
+                               // the comment was previously approved
+                               if ( targetParent.hasClass( 'approve' ) ) {
+                                       approvedDiff = 1;
+                               // the comment was previously pending
+                               } else if ( targetParent.hasClass( 'unapprove' ) ) {
+                                       pendingDiff = 1;
+                               }
+                       } else if ( spammed ) {
+                               if ( targetParent.hasClass( 'approve' ) ) {
+                                       approvedDiff = 1;
 
-       updateCount = function(el, n) {
-               var n1 = '';
-               if ( isNaN(n) )
-                       return;
-               n = n < 1 ? '0' : n.toString();
-               if ( n.length > 3 ) {
-                       while ( n.length > 3 ) {
-                               n1 = thousandsSeparator + n.substr(n.length - 3) + n1;
-                               n = n.substr(0, n.length - 3);
+                               } else if ( targetParent.hasClass( 'unapprove' ) ) {
+                                       pendingDiff = 1;
+                               }
+                       }
+                       // you can Unspam an item on the spam screen
+                       spamDiff = -1;
+
+               // user clicked "Trash"
+               } else if ( targetParent.is( 'span.trash' ) ) {
+                       if ( approved ) {
+                               approvedDiff = -1;
+                       } else if ( unapproved ) {
+                               pendingDiff = -1;
+                       // the comment was in the spam queue
+                       } else if ( spammed ) {
+                               spamDiff = -1;
+                       }
+                       // you can't trash an item on the trash screen
+                       trashDiff = 1;
+
+               // user clicked "Restore"
+               } else if ( targetParent.is( 'span.untrash' ) ) {
+                       if ( approved ) {
+                               pendingDiff = 1;
+                       } else if ( unapproved ) {
+                               approvedDiff = 1;
+                       } else if ( trashed ) {
+                               if ( targetParent.hasClass( 'approve' ) ) {
+                                       approvedDiff = 1;
+                               } else if ( targetParent.hasClass( 'unapprove' ) ) {
+                                       pendingDiff = 1;
+                               }
+                       }
+                       // you can't go from trash to spam
+                       // you can untrash on the trash screen
+                       trashDiff = -1;
+
+               // User clicked "Approve"
+               } else if ( targetParent.is( 'span.approve:not(.unspam):not(.untrash)' ) ) {
+                       approvedDiff = 1;
+                       pendingDiff = -1;
+
+               // User clicked "Unapprove"
+               } else if ( targetParent.is( 'span.unapprove:not(.unspam):not(.untrash)' ) ) {
+                       approvedDiff = -1;
+                       pendingDiff = 1;
+
+               // User clicked "Delete Permanently"
+               } else if ( targetParent.is( 'span.delete' ) ) {
+                       if ( spammed ) {
+                               spamDiff = -1;
+                       } else if ( trashed ) {
+                               trashDiff = -1;
                        }
-                       n = n + n1;
                }
-               el.html(n);
-       };
-
-       updatePending = function( diff ) {
-               $('span.pending-count').each(function() {
-                       var a = $(this), n = getCount(a) + diff;
-                       if ( n < 1 )
-                               n = 0;
-                       a.closest('.awaiting-mod')[ 0 === n ? 'addClass' : 'removeClass' ]('count-0');
-                       updateCount( a, n );
-               });
-       };
-
-       // In admin-ajax.php, we send back the unix time stamp instead of 1 on success
-       delAfter = function( r, settings ) {
-               var total_items_i18n, total, spam, trash, pending,
-                       untrash = $(settings.target).parent().is('span.untrash'),
-                       unspam = $(settings.target).parent().is('span.unspam'),
-                       unapproved = $('#' + settings.element).is('.unapproved');
-
-               function getUpdate(s) {
-                       if ( $(settings.target).parent().is('span.' + s) )
-                               return 1;
-                       else if ( $('#' + settings.element).is('.' + s) )
-                               return -1;
 
-                       return 0;
+               if ( pendingDiff ) {
+                       updatePending( pendingDiff, commentPostId );
+                       updateCountText( 'span.all-count', pendingDiff );
                }
 
-               if ( untrash )
-                       trash = -1;
-               else
-                       trash = getUpdate('trash');
-
-               if ( unspam )
-                       spam = -1;
-               else
-                       spam = getUpdate('spam');
-
-               if ( $(settings.target).parent().is('span.unapprove') || ( ( untrash || unspam ) && unapproved ) ) {
-                       // a comment was 'deleted' from another list (e.g. approved, spam, trash) and moved to pending,
-                       // or a trash/spam of a pending comment was undone
-                       pending = 1;
-               } else if ( unapproved ) {
-                       // a pending comment was trashed/spammed/approved
-                       pending = -1;
+               if ( approvedDiff ) {
+                       updateApproved( approvedDiff, commentPostId );
+                       updateCountText( 'span.all-count', approvedDiff );
                }
 
-               if ( pending )
-                       updatePending(pending);
-
-               $('span.spam-count').each( function() {
-                       var a = $(this), n = getCount(a) + spam;
-                       updateCount(a, n);
-               });
+               if ( spamDiff ) {
+                       updateCountText( 'span.spam-count', spamDiff );
+               }
 
-               $('span.trash-count').each( function() {
-                       var a = $(this), n = getCount(a) + trash;
-                       updateCount(a, n);
-               });
+               if ( trashDiff ) {
+                       updateCountText( 'span.trash-count', trashDiff );
+               }
 
-               if ( ! $('#dashboard_right_now').length ) {
+               if ( ! isDashboard ) {
                        total = totalInput.val() ? parseInt( totalInput.val(), 10 ) : 0;
                        if ( $(settings.target).parent().is('span.undo') )
                                total++;
@@ -195,26 +464,43 @@ setCommentsList = function() {
                        if ( total < 0 )
                                total = 0;
 
-                       if ( ( 'object' == typeof r ) && lastConfidentTime < settings.parsed.responses[0].supplemental.time ) {
-                               total_items_i18n = settings.parsed.responses[0].supplemental.total_items_i18n || '';
-                               if ( total_items_i18n ) {
-                                       $('.displaying-num').text( total_items_i18n );
-                                       $('.total-pages').text( settings.parsed.responses[0].supplemental.total_pages_i18n );
-                                       $('.tablenav-pages').find('.next-page, .last-page').toggleClass('disabled', settings.parsed.responses[0].supplemental.total_pages == $('.current-page').val());
+                       if ( 'object' === typeof r ) {
+                               if ( response.supplemental.total_items_i18n && lastConfidentTime < response.supplemental.time ) {
+                                       total_items_i18n = response.supplemental.total_items_i18n || '';
+                                       if ( total_items_i18n ) {
+                                               $('.displaying-num').text( total_items_i18n );
+                                               $('.total-pages').text( response.supplemental.total_pages_i18n );
+                                               $('.tablenav-pages').find('.next-page, .last-page').toggleClass('disabled', response.supplemental.total_pages == $('.current-page').val());
+                                       }
+                                       updateTotalCount( total, response.supplemental.time, true );
+                               } else if ( response.supplemental.time ) {
+                                       updateTotalCount( total, response.supplemental.time, false );
                                }
-                               updateTotalCount( total, settings.parsed.responses[0].supplemental.time, true );
                        } else {
                                updateTotalCount( total, r, false );
                        }
                }
 
-               if ( ! theExtraList || theExtraList.size() === 0 || theExtraList.children().size() === 0 || untrash || unspam ) {
+               if ( ! theExtraList || theExtraList.size() === 0 || theExtraList.children().size() === 0 ) {
                        return;
                }
 
-               theList.get(0).wpList.add( theExtraList.children(':eq(0)').remove().clone() );
+               theList.get(0).wpList.add( theExtraList.children( ':eq(0):not(.no-items)' ).remove().clone() );
 
                refillTheExtraList();
+
+               animated = $( ':animated', '#the-comment-list' );
+               animatedCallback = function () {
+                       if ( ! $( '#the-comment-list tr:visible' ).length ) {
+                               theList.get(0).wpList.add( theExtraList.find( '.no-items' ).clone() );
+                       }
+               };
+
+               if ( animated.length ) {
+                       animated.promise().done( animatedCallback );
+               } else {
+                       animatedCallback();
+               }
        };
 
        refillTheExtraList = function(ev) {
@@ -279,7 +565,7 @@ commentReply = {
 
                $('a.cancel', row).click(function() { return commentReply.revert(); });
                $('a.save', row).click(function() { return commentReply.send(); });
-               $('input#author, input#author-email, input#author-url', row).keypress(function(e){
+               $( 'input#author-name, input#author-email, input#author-url', row ).keypress( function( e ) {
                        if ( e.which == 13 ) {
                                commentReply.send();
                                e.preventDefault();
@@ -373,7 +659,7 @@ commentReply = {
                action = action || 'replyto';
                act = 'edit' == action ? 'edit' : 'replyto';
                act = t.act = act + '-comment';
-               colspanVal = $( 'th:visible, td:visible', c ).length;
+               colspanVal = $( '> th:visible, > td:visible', c ).length;
 
                // Make sure it's actually a table and there's a `colspan` value to apply.
                if ( editRow.hasClass( 'inline-edit-row' ) && 0 !== colspanVal ) {
@@ -385,12 +671,12 @@ commentReply = {
                $('#comment_ID', editRow).val(comment_id);
 
                if ( action == 'edit' ) {
-                       $('#author', editRow).val( $('div.author', rowData).text() );
+                       $( '#author-name', editRow ).val( $( 'div.author', rowData ).text() );
                        $('#author-email', editRow).val( $('div.author-email', rowData).text() );
                        $('#author-url', editRow).val( $('div.author-url', rowData).text() );
                        $('#status', editRow).val( $('div.comment_status', rowData).text() );
                        $('#replycontent', editRow).val( $('textarea.comment', rowData).val() );
-                       $('#edithead, #savebtn', editRow).show();
+                       $( '#edithead, #editlegend, #savebtn', editRow ).show();
                        $('#replyhead, #replybtn, #addhead, #addbtn', editRow).hide();
 
                        if ( h > 120 ) {
@@ -405,12 +691,12 @@ commentReply = {
                        });
                } else if ( action == 'add' ) {
                        $('#addhead, #addbtn', editRow).show();
-                       $('#replyhead, #replybtn, #edithead, #savebtn', editRow).hide();
+                       $( '#replyhead, #replybtn, #edithead, #editlegend, #savebtn', editRow ) .hide();
                        $('#the-comment-list').prepend(editRow);
                        $('#replyrow').fadeIn(300);
                } else {
                        replyButton = $('#replybtn', editRow);
-                       $('#edithead, #savebtn, #addhead, #addbtn', editRow).hide();
+                       $( '#edithead, #editlegend, #savebtn, #addhead, #addbtn', editRow ).hide();
                        $('#replyhead, #replybtn', editRow).show();
                        c.after(editRow);
 
@@ -500,7 +786,7 @@ commentReply = {
 
                if ( r.supplemental.parent_approved ) {
                        pid = $('#comment-' + r.supplemental.parent_approved);
-                       updatePending( -1 );
+                       updatePending( -1, r.supplemental.parent_post_id );
 
                        if ( this.comments_listing == 'moderated' ) {
                                pid.animate( { 'backgroundColor':'#CCEEBB' }, 400, function(){
@@ -510,6 +796,15 @@ commentReply = {
                        }
                }
 
+               if ( r.supplemental.i18n_comments_text ) {
+                       if ( isDashboard ) {
+                               updateDashboardText( r.supplemental );
+                       } else {
+                               updateApproved( 1, r.supplemental.parent_post_id );
+                               updateCountText( 'span.all-count', 1 );
+                       }
+               }
+
                c = $.trim(r.data); // Trim leading whitespaces
                $(c).hide();
                $('#replyrow').after(c);
@@ -559,7 +854,10 @@ $(document).ready(function(){
 
        setCommentsList();
        commentReply.init();
-       $(document).delegate('span.delete a.delete', 'click', function(){return false;});
+
+       $(document).on( 'click', 'span.delete a.delete', function( e ) {
+               e.preventDefault();
+       });
 
        if ( typeof $.table_hotkeys != 'undefined' ) {
                make_hotkeys_redirect = function(which) {
index 531e7d8f59f05e20bd53d7941e3799d0db600b47..920701604951ffd67183ed66c3a1c1673a450f8a 100644 (file)
@@ -1 +1 @@
-var setCommentsList,theList,theExtraList,commentReply;!function(a){var b,c,d;setCommentsList=function(){var e,f,g,h,i,j,k,l,m,n=0;e=a('input[name="_total"]',"#comments-form"),f=a('input[name="_per_page"]',"#comments-form"),g=a('input[name="_page"]',"#comments-form"),h=function(b,c){var e,f,g,h=a("#"+c.element);e=a("#replyrow"),f=a("#comment_ID",e).val(),g=a("#replybtn",e),h.is(".unapproved")?(c.data.id==f&&g.text(adminCommentsL10n.replyApprove),h.find("div.comment_status").html("0")):(c.data.id==f&&g.text(adminCommentsL10n.reply),h.find("div.comment_status").html("1")),m=a("#"+c.element).is("."+c.dimClass)?1:-1,d(m)},i=function(b,c){var d,h,i,j,k,l,m,n=!1,o=a(b.target).attr("data-wp-lists");return b.data._total=e.val()||0,b.data._per_page=f.val()||0,b.data._page=g.val()||0,b.data._url=document.location.href,b.data.comment_status=a('input[name="comment_status"]',"#comments-form").val(),-1!=o.indexOf(":trash=1")?n="trash":-1!=o.indexOf(":spam=1")&&(n="spam"),n&&(h=o.replace(/.*?comment-([0-9]+).*/,"$1"),i=a("#comment-"+h),d=a("#"+n+"-undo-holder").html(),i.find(".check-column :checkbox").prop("checked",!1),i.siblings("#replyrow").length&&commentReply.cid==h&&commentReply.close(),i.is("tr")?(j=i.children(":visible").length,m=a(".author strong",i).text(),k=a('<tr id="undo-'+h+'" class="undo un'+n+'" style="display:none;"><td colspan="'+j+'">'+d+"</td></tr>")):(m=a(".comment-author",i).text(),k=a('<div id="undo-'+h+'" style="display:none;" class="undo un'+n+'">'+d+"</div>")),i.before(k),a("strong","#undo-"+h).text(m),l=a(".undo a","#undo-"+h),l.attr("href","comment.php?action=un"+n+"comment&c="+h+"&_wpnonce="+b.data._ajax_nonce),l.attr("data-wp-lists","delete:the-comment-list:comment-"+h+"::un"+n+"=1"),l.attr("class","vim-z vim-destructive"),a(".avatar",i).first().clone().prependTo("#undo-"+h+" ."+n+"-undo-inside"),l.click(function(){return c.wpList.del(this),a("#undo-"+h).css({backgroundColor:"#ceb"}).fadeOut(350,function(){a(this).remove(),a("#comment-"+h).css("backgroundColor","").fadeIn(300,function(){a(this).show()})}),!1})),b},j=function(a,b,c){n>b||(c&&(n=b),e.val(a.toString()))},b=function(a){var b=parseInt(a.html().replace(/[^0-9]+/g,""),10);return isNaN(b)?0:b},c=function(a,b){var c="";if(!isNaN(b)){if(b=1>b?"0":b.toString(),b.length>3){for(;b.length>3;)c=thousandsSeparator+b.substr(b.length-3)+c,b=b.substr(0,b.length-3);b+=c}a.html(b)}},d=function(d){a("span.pending-count").each(function(){var e=a(this),f=b(e)+d;1>f&&(f=0),e.closest(".awaiting-mod")[0===f?"addClass":"removeClass"]("count-0"),c(e,f)})},k=function(f,g){function h(b){return a(g.target).parent().is("span."+b)?1:a("#"+g.element).is("."+b)?-1:0}var i,k,m,o,p,q=a(g.target).parent().is("span.untrash"),r=a(g.target).parent().is("span.unspam"),s=a("#"+g.element).is(".unapproved");o=q?-1:h("trash"),m=r?-1:h("spam"),a(g.target).parent().is("span.unapprove")||(q||r)&&s?p=1:s&&(p=-1),p&&d(p),a("span.spam-count").each(function(){var d=a(this),e=b(d)+m;c(d,e)}),a("span.trash-count").each(function(){var d=a(this),e=b(d)+o;c(d,e)}),a("#dashboard_right_now").length||(k=e.val()?parseInt(e.val(),10):0,a(g.target).parent().is("span.undo")?k++:k--,0>k&&(k=0),"object"==typeof f&&n<g.parsed.responses[0].supplemental.time?(i=g.parsed.responses[0].supplemental.total_items_i18n||"",i&&(a(".displaying-num").text(i),a(".total-pages").text(g.parsed.responses[0].supplemental.total_pages_i18n),a(".tablenav-pages").find(".next-page, .last-page").toggleClass("disabled",g.parsed.responses[0].supplemental.total_pages==a(".current-page").val())),j(k,g.parsed.responses[0].supplemental.time,!0)):j(k,f,!1)),!theExtraList||0===theExtraList.size()||0===theExtraList.children().size()||q||r||(theList.get(0).wpList.add(theExtraList.children(":eq(0)").remove().clone()),l())},l=function(b){var c=a.query.get(),d=a(".total-pages").text(),e=a('input[name="_per_page"]',"#comments-form").val();c.paged||(c.paged=1),c.paged>d||(b?(theExtraList.empty(),c.number=Math.min(8,e)):(c.number=1,c.offset=Math.min(8,e)-1),c.no_placeholder=!0,c.paged++,!0===c.comment_type&&(c.comment_type=""),c=a.extend(c,{action:"fetch-list",list_args:list_args,_ajax_fetch_list_nonce:a("#_ajax_fetch_list_nonce").val()}),a.ajax({url:ajaxurl,global:!1,dataType:"json",data:c,success:function(a){theExtraList.get(0).wpList.add(a.rows)}}))},theExtraList=a("#the-extra-comment-list").wpList({alt:"",delColor:"none",addColor:"none"}),theList=a("#the-comment-list").wpList({alt:"",delBefore:i,dimAfter:h,delAfter:k,addColor:"none"}).bind("wpListDelEnd",function(b,c){var d=a(c.target).attr("data-wp-lists"),e=c.element.replace(/[^0-9]+/g,"");(-1!=d.indexOf(":trash=1")||-1!=d.indexOf(":spam=1"))&&a("#undo-"+e).fadeIn(300,function(){a(this).show()})})},commentReply={cid:"",act:"",init:function(){var b=a("#replyrow");a("a.cancel",b).click(function(){return commentReply.revert()}),a("a.save",b).click(function(){return commentReply.send()}),a("input#author, input#author-email, input#author-url",b).keypress(function(a){return 13==a.which?(commentReply.send(),a.preventDefault(),!1):void 0}),a("#the-comment-list .column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())}),a("#doaction, #doaction2, #post-query-submit").click(function(){a("#the-comment-list #replyrow").length>0&&commentReply.close()}),this.comments_listing=a('#comments-form > input[name="comment_status"]').val()||""},addEvents:function(b){b.each(function(){a(this).find(".column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())})})},toggle:function(b){"none"!==a(b).css("display")&&(a("#replyrow").parent().is("#com-reply")||window.confirm(adminCommentsL10n.warnQuickEdit))&&a(b).find("a.vim-q").click()},revert:function(){return a("#the-comment-list #replyrow").length<1?!1:(a("#replyrow").fadeOut("fast",function(){commentReply.close()}),!1)},close:function(){var b,c=a("#replyrow");c.parent().is("#com-reply")||(this.cid&&"edit-comment"==this.act&&(b=a("#comment-"+this.cid),b.fadeIn(300,function(){b.show()}).css("backgroundColor","")),"undefined"!=typeof QTags&&QTags.closeAllTags("replycontent"),a("#add-new-comment").css("display",""),c.hide(),a("#com-reply").append(c),a("#replycontent").css("height","").val(""),a("#edithead input").val(""),a(".error",c).empty().hide(),a(".spinner",c).removeClass("is-active"),this.cid="")},open:function(b,c,d){var e,f,g,h,i,j=this,k=a("#comment-"+b),l=k.height(),m=0;return j.close(),j.cid=b,e=a("#replyrow"),f=a("#inline-"+b),d=d||"replyto",g="edit"==d?"edit":"replyto",g=j.act=g+"-comment",m=a("th:visible, td:visible",k).length,e.hasClass("inline-edit-row")&&0!==m&&a("td",e).attr("colspan",m),a("#action",e).val(g),a("#comment_post_ID",e).val(c),a("#comment_ID",e).val(b),"edit"==d?(a("#author",e).val(a("div.author",f).text()),a("#author-email",e).val(a("div.author-email",f).text()),a("#author-url",e).val(a("div.author-url",f).text()),a("#status",e).val(a("div.comment_status",f).text()),a("#replycontent",e).val(a("textarea.comment",f).val()),a("#edithead, #savebtn",e).show(),a("#replyhead, #replybtn, #addhead, #addbtn",e).hide(),l>120&&(i=l>500?500:l,a("#replycontent",e).css("height",i+"px")),k.after(e).fadeOut("fast",function(){a("#replyrow").fadeIn(300,function(){a(this).show()})})):"add"==d?(a("#addhead, #addbtn",e).show(),a("#replyhead, #replybtn, #edithead, #savebtn",e).hide(),a("#the-comment-list").prepend(e),a("#replyrow").fadeIn(300)):(h=a("#replybtn",e),a("#edithead, #savebtn, #addhead, #addbtn",e).hide(),a("#replyhead, #replybtn",e).show(),k.after(e),k.hasClass("unapproved")?h.text(adminCommentsL10n.replyApprove):h.text(adminCommentsL10n.reply),a("#replyrow").fadeIn(300,function(){a(this).show()})),setTimeout(function(){var b,c,d,e,f;b=a("#replyrow").offset().top,c=b+a("#replyrow").height(),d=window.pageYOffset||document.documentElement.scrollTop,e=document.documentElement.clientHeight||window.innerHeight||0,f=d+e,c>f-20?window.scroll(0,c-e+35):d>b-20&&window.scroll(0,b-35),a("#replycontent").focus().keyup(function(a){27==a.which&&commentReply.revert()})},600),!1},send:function(){var b={};return a("#replysubmit .error").hide(),a("#replysubmit .spinner").addClass("is-active"),a("#replyrow input").not(":button").each(function(){var c=a(this);b[c.attr("name")]=c.val()}),b.content=a("#replycontent").val(),b.id=b.comment_post_ID,b.comments_listing=this.comments_listing,b.p=a('[name="p"]').val(),a("#comment-"+a("#comment_ID").val()).hasClass("unapproved")&&(b.approve_parent=1),a.ajax({type:"POST",url:ajaxurl,data:b,success:function(a){commentReply.show(a)},error:function(a){commentReply.error(a)}}),!1},show:function(b){var c,e,f,g,h,i=this;return"string"==typeof b?(i.error({responseText:b}),!1):(c=wpAjax.parseAjaxResponse(b),c.errors?(i.error({responseText:wpAjax.broken}),!1):(i.revert(),c=c.responses[0],f="#comment-"+c.id,"edit-comment"==i.act&&a(f).remove(),c.supplemental.parent_approved&&(h=a("#comment-"+c.supplemental.parent_approved),d(-1),"moderated"==this.comments_listing)?void h.animate({backgroundColor:"#CCEEBB"},400,function(){h.fadeOut()}):(e=a.trim(c.data),a(e).hide(),a("#replyrow").after(e),f=a(f),i.addEvents(f),g=f.hasClass("unapproved")?"#FFFFE0":f.closest(".widefat, .postbox").css("backgroundColor"),void f.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:g},300,function(){h&&h.length&&h.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:g},300).removeClass("unapproved").addClass("approved").find("div.comment_status").html("1")}))))},error:function(b){var c=b.statusText;a("#replysubmit .spinner").removeClass("is-active"),b.responseText&&(c=b.responseText.replace(/<.[^<>]*?>/g,"")),c&&a("#replysubmit .error").html(c).show()},addcomment:function(b){var c=this;a("#add-new-comment").fadeOut(200,function(){c.open(0,b,"add"),a("table.comments-box").css("display",""),a("#no-comments").remove()})}},a(document).ready(function(){var b,c,d,e;setCommentsList(),commentReply.init(),a(document).delegate("span.delete a.delete","click",function(){return!1}),"undefined"!=typeof a.table_hotkeys&&(b=function(b){return function(){var c,d;c="next"==b?"first":"last",d=a(".tablenav-pages ."+b+"-page:not(.disabled)"),d.length&&(window.location=d[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g,"")+"&hotkeys_highlight_"+c+"=1")}},c=function(b,c){window.location=a("span.edit a",c).attr("href")},d=function(){a("#cb-select-all-1").data("wp-toggle",1).trigger("click").removeData("wp-toggle")},e=function(b){return function(){var c=a('select[name="action"]');a('option[value="'+b+'"]',c).prop("selected",!0),a("#doaction").click()}},a.table_hotkeys(a("table.widefat"),["a","u","s","d","r","q","z",["e",c],["shift+x",d],["shift+a",e("approve")],["shift+s",e("spam")],["shift+d",e("delete")],["shift+t",e("trash")],["shift+z",e("untrash")],["shift+u",e("unapprove")]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:b("prev"),next_page_link_cb:b("next"),hotkeys_opts:{disableInInput:!0,type:"keypress",noDisable:'.check-column input[type="checkbox"]'},cycle_expr:"#the-comment-list tr",start_row_index:0})),a("#the-comment-list").on("click",".comment-inline",function(b){b.preventDefault();var c=a(this),d="replyto";"undefined"!=typeof c.data("action")&&(d=c.data("action")),commentReply.open(c.data("commentId"),c.data("postId"),d)})})}(jQuery);
\ No newline at end of file
+var setCommentsList,theList,theExtraList,commentReply;!function(a){var b,c,d,e,f,g,h,i,j,k=document.title,l=a("#dashboard_right_now").length;b=function(a){var b=parseInt(a.html().replace(/[^0-9]+/g,""),10);return isNaN(b)?0:b},c=function(a,b){var c="";if(!isNaN(b)){if(b=1>b?"0":b.toString(),b.length>3){for(;b.length>3;)c=thousandsSeparator+b.substr(b.length-3)+c,b=b.substr(0,b.length-3);b+=c}a.html(b)}},f=function(e,f){var g,h,i=".post-com-count-"+f,j="comment-count-no-comments",k="comment-count-approved";d("span.approved-count",e),f&&(g=a("span."+k,i),h=a("span."+j,i),g.each(function(){var d=a(this),f=b(d)+e;1>f&&(f=0),0===f?d.removeClass(k).addClass(j):d.addClass(k).removeClass(j),c(d,f)}),h.each(function(){var b=a(this);e>0?b.removeClass(j).addClass(k):b.addClass(j).removeClass(k),c(b,e)}))},d=function(d,e){a(d).each(function(){var d=a(this),f=b(d)+e;1>f&&(f=0),c(d,f)})},h=function(b){if(l&&b&&b.i18n_comments_text){var c=a("#dashboard_right_now");a(".comment-count a",c).text(b.i18n_comments_text),a(".comment-mod-count a",c).text(b.i18n_moderation_text).parent()[b.in_moderation>0?"removeClass":"addClass"]("hidden")}},g=function(d){var e,f,g,h;j=j||new RegExp(adminCommentsL10n.docTitleCommentsCount.replace("%s","\\([0-9"+thousandsSeparator+"]+\\)")+"?"),i=i||a("<div />"),e=k,h=j.exec(document.title),h?(h=h[0],i.html(h),g=b(i)+d):(i.html(0),g=d),g>=1?(c(i,g),f=j.exec(document.title),f&&(e=document.title.replace(f[0],adminCommentsL10n.docTitleCommentsCount.replace("%s",i.text())+" "))):(f=j.exec(e),f&&(e=e.replace(f[0],adminCommentsL10n.docTitleComments))),document.title=e},e=function(d,e){var f,h,i=".post-com-count-"+e,j="comment-count-no-pending",k="post-com-count-no-pending",m="comment-count-pending";l||g(d),a("span.pending-count").each(function(){var e=a(this),f=b(e)+d;1>f&&(f=0),e.closest(".awaiting-mod")[0===f?"addClass":"removeClass"]("count-0"),c(e,f)}),e&&(f=a("span."+m,i),h=a("span."+j,i),f.each(function(){var e=a(this),f=b(e)+d;1>f&&(f=0),0===f?(e.parent().addClass(k),e.removeClass(m).addClass(j)):(e.parent().removeClass(k),e.addClass(m).removeClass(j)),c(e,f)}),h.each(function(){var b=a(this);d>0?(b.parent().removeClass(k),b.removeClass(j).addClass(m)):(b.parent().addClass(k),b.addClass(j).removeClass(m)),c(b,d)}))},setCommentsList=function(){var b,c,g,i,j,k,m,n,o,p=0;b=a('input[name="_total"]',"#comments-form"),c=a('input[name="_per_page"]',"#comments-form"),g=a('input[name="_page"]',"#comments-form"),k=function(a,c,d){p>c||(d&&(p=c),b.val(a.toString()))},i=function(b,c){var d,g,i,j,k=a("#"+c.element);!0!==c.parsed&&(j=c.parsed.responses[0]),d=a("#replyrow"),g=a("#comment_ID",d).val(),i=a("#replybtn",d),k.is(".unapproved")?(c.data.id==g&&i.text(adminCommentsL10n.replyApprove),k.find("div.comment_status").html("0")):(c.data.id==g&&i.text(adminCommentsL10n.reply),k.find("div.comment_status").html("1")),o=a("#"+c.element).is("."+c.dimClass)?1:-1,j?(h(j.supplemental),e(o,j.supplemental.postId),f(-1*o,j.supplemental.postId)):(e(o),f(-1*o))},j=function(d,e){var f,h,i,j,k,l,m,n=!1,o=a(d.target).attr("data-wp-lists");return d.data._total=b.val()||0,d.data._per_page=c.val()||0,d.data._page=g.val()||0,d.data._url=document.location.href,d.data.comment_status=a('input[name="comment_status"]',"#comments-form").val(),-1!=o.indexOf(":trash=1")?n="trash":-1!=o.indexOf(":spam=1")&&(n="spam"),n&&(h=o.replace(/.*?comment-([0-9]+).*/,"$1"),i=a("#comment-"+h),f=a("#"+n+"-undo-holder").html(),i.find(".check-column :checkbox").prop("checked",!1),i.siblings("#replyrow").length&&commentReply.cid==h&&commentReply.close(),i.is("tr")?(j=i.children(":visible").length,m=a(".author strong",i).text(),k=a('<tr id="undo-'+h+'" class="undo un'+n+'" style="display:none;"><td colspan="'+j+'">'+f+"</td></tr>")):(m=a(".comment-author",i).text(),k=a('<div id="undo-'+h+'" style="display:none;" class="undo un'+n+'">'+f+"</div>")),i.before(k),a("strong","#undo-"+h).text(m),l=a(".undo a","#undo-"+h),l.attr("href","comment.php?action=un"+n+"comment&c="+h+"&_wpnonce="+d.data._ajax_nonce),l.attr("data-wp-lists","delete:the-comment-list:comment-"+h+"::un"+n+"=1"),l.attr("class","vim-z vim-destructive"),a(".avatar",i).first().clone().prependTo("#undo-"+h+" ."+n+"-undo-inside"),l.click(function(b){b.preventDefault(),e.wpList.del(this),a("#undo-"+h).css({backgroundColor:"#ceb"}).fadeOut(350,function(){a(this).remove(),a("#comment-"+h).css("backgroundColor","").fadeIn(300,function(){a(this).show()})})})),d},m=function(c,g){var i,j,m,o,q,r,s,t,u=!0===g.parsed?{}:g.parsed.responses[0],v=!0===g.parsed?"":u.supplemental.status,w=!0===g.parsed?"":u.supplemental.postId,x=!0===g.parsed?"":u.supplemental,y=a(g.target).parent(),z=a("#"+g.element),A=z.hasClass("approved"),B=z.hasClass("unapproved"),C=z.hasClass("spam"),D=z.hasClass("trash");h(x),y.is("span.undo")?y.hasClass("unspam")?(q=-1,"trash"===v?r=1:"1"===v?t=1:"0"===v&&(s=1)):y.hasClass("untrash")&&(r=-1,"spam"===v?q=1:"1"===v?t=1:"0"===v&&(s=1)):y.is("span.spam")?(A?t=-1:B?s=-1:D&&(r=-1),q=1):y.is("span.unspam")?(A?s=1:B?t=1:D?y.hasClass("approve")?t=1:y.hasClass("unapprove")&&(s=1):C&&(y.hasClass("approve")?t=1:y.hasClass("unapprove")&&(s=1)),q=-1):y.is("span.trash")?(A?t=-1:B?s=-1:C&&(q=-1),r=1):y.is("span.untrash")?(A?s=1:B?t=1:D&&(y.hasClass("approve")?t=1:y.hasClass("unapprove")&&(s=1)),r=-1):y.is("span.approve:not(.unspam):not(.untrash)")?(t=1,s=-1):y.is("span.unapprove:not(.unspam):not(.untrash)")?(t=-1,s=1):y.is("span.delete")&&(C?q=-1:D&&(r=-1)),s&&(e(s,w),d("span.all-count",s)),t&&(f(t,w),d("span.all-count",t)),q&&d("span.spam-count",q),r&&d("span.trash-count",r),l||(j=b.val()?parseInt(b.val(),10):0,a(g.target).parent().is("span.undo")?j++:j--,0>j&&(j=0),"object"==typeof c?u.supplemental.total_items_i18n&&p<u.supplemental.time?(i=u.supplemental.total_items_i18n||"",i&&(a(".displaying-num").text(i),a(".total-pages").text(u.supplemental.total_pages_i18n),a(".tablenav-pages").find(".next-page, .last-page").toggleClass("disabled",u.supplemental.total_pages==a(".current-page").val())),k(j,u.supplemental.time,!0)):u.supplemental.time&&k(j,u.supplemental.time,!1):k(j,c,!1)),theExtraList&&0!==theExtraList.size()&&0!==theExtraList.children().size()&&(theList.get(0).wpList.add(theExtraList.children(":eq(0):not(.no-items)").remove().clone()),n(),m=a(":animated","#the-comment-list"),o=function(){a("#the-comment-list tr:visible").length||theList.get(0).wpList.add(theExtraList.find(".no-items").clone())},m.length?m.promise().done(o):o())},n=function(b){var c=a.query.get(),d=a(".total-pages").text(),e=a('input[name="_per_page"]',"#comments-form").val();c.paged||(c.paged=1),c.paged>d||(b?(theExtraList.empty(),c.number=Math.min(8,e)):(c.number=1,c.offset=Math.min(8,e)-1),c.no_placeholder=!0,c.paged++,!0===c.comment_type&&(c.comment_type=""),c=a.extend(c,{action:"fetch-list",list_args:list_args,_ajax_fetch_list_nonce:a("#_ajax_fetch_list_nonce").val()}),a.ajax({url:ajaxurl,global:!1,dataType:"json",data:c,success:function(a){theExtraList.get(0).wpList.add(a.rows)}}))},theExtraList=a("#the-extra-comment-list").wpList({alt:"",delColor:"none",addColor:"none"}),theList=a("#the-comment-list").wpList({alt:"",delBefore:j,dimAfter:i,delAfter:m,addColor:"none"}).bind("wpListDelEnd",function(b,c){var d=a(c.target).attr("data-wp-lists"),e=c.element.replace(/[^0-9]+/g,"");(-1!=d.indexOf(":trash=1")||-1!=d.indexOf(":spam=1"))&&a("#undo-"+e).fadeIn(300,function(){a(this).show()})})},commentReply={cid:"",act:"",init:function(){var b=a("#replyrow");a("a.cancel",b).click(function(){return commentReply.revert()}),a("a.save",b).click(function(){return commentReply.send()}),a("input#author-name, input#author-email, input#author-url",b).keypress(function(a){return 13==a.which?(commentReply.send(),a.preventDefault(),!1):void 0}),a("#the-comment-list .column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())}),a("#doaction, #doaction2, #post-query-submit").click(function(){a("#the-comment-list #replyrow").length>0&&commentReply.close()}),this.comments_listing=a('#comments-form > input[name="comment_status"]').val()||""},addEvents:function(b){b.each(function(){a(this).find(".column-comment > p").dblclick(function(){commentReply.toggle(a(this).parent())})})},toggle:function(b){"none"!==a(b).css("display")&&(a("#replyrow").parent().is("#com-reply")||window.confirm(adminCommentsL10n.warnQuickEdit))&&a(b).find("a.vim-q").click()},revert:function(){return a("#the-comment-list #replyrow").length<1?!1:(a("#replyrow").fadeOut("fast",function(){commentReply.close()}),!1)},close:function(){var b,c=a("#replyrow");c.parent().is("#com-reply")||(this.cid&&"edit-comment"==this.act&&(b=a("#comment-"+this.cid),b.fadeIn(300,function(){b.show()}).css("backgroundColor","")),"undefined"!=typeof QTags&&QTags.closeAllTags("replycontent"),a("#add-new-comment").css("display",""),c.hide(),a("#com-reply").append(c),a("#replycontent").css("height","").val(""),a("#edithead input").val(""),a(".error",c).empty().hide(),a(".spinner",c).removeClass("is-active"),this.cid="")},open:function(b,c,d){var e,f,g,h,i,j=this,k=a("#comment-"+b),l=k.height(),m=0;return j.close(),j.cid=b,e=a("#replyrow"),f=a("#inline-"+b),d=d||"replyto",g="edit"==d?"edit":"replyto",g=j.act=g+"-comment",m=a("> th:visible, > td:visible",k).length,e.hasClass("inline-edit-row")&&0!==m&&a("td",e).attr("colspan",m),a("#action",e).val(g),a("#comment_post_ID",e).val(c),a("#comment_ID",e).val(b),"edit"==d?(a("#author-name",e).val(a("div.author",f).text()),a("#author-email",e).val(a("div.author-email",f).text()),a("#author-url",e).val(a("div.author-url",f).text()),a("#status",e).val(a("div.comment_status",f).text()),a("#replycontent",e).val(a("textarea.comment",f).val()),a("#edithead, #editlegend, #savebtn",e).show(),a("#replyhead, #replybtn, #addhead, #addbtn",e).hide(),l>120&&(i=l>500?500:l,a("#replycontent",e).css("height",i+"px")),k.after(e).fadeOut("fast",function(){a("#replyrow").fadeIn(300,function(){a(this).show()})})):"add"==d?(a("#addhead, #addbtn",e).show(),a("#replyhead, #replybtn, #edithead, #editlegend, #savebtn",e).hide(),a("#the-comment-list").prepend(e),a("#replyrow").fadeIn(300)):(h=a("#replybtn",e),a("#edithead, #editlegend, #savebtn, #addhead, #addbtn",e).hide(),a("#replyhead, #replybtn",e).show(),k.after(e),k.hasClass("unapproved")?h.text(adminCommentsL10n.replyApprove):h.text(adminCommentsL10n.reply),a("#replyrow").fadeIn(300,function(){a(this).show()})),setTimeout(function(){var b,c,d,e,f;b=a("#replyrow").offset().top,c=b+a("#replyrow").height(),d=window.pageYOffset||document.documentElement.scrollTop,e=document.documentElement.clientHeight||window.innerHeight||0,f=d+e,c>f-20?window.scroll(0,c-e+35):d>b-20&&window.scroll(0,b-35),a("#replycontent").focus().keyup(function(a){27==a.which&&commentReply.revert()})},600),!1},send:function(){var b={};return a("#replysubmit .error").hide(),a("#replysubmit .spinner").addClass("is-active"),a("#replyrow input").not(":button").each(function(){var c=a(this);b[c.attr("name")]=c.val()}),b.content=a("#replycontent").val(),b.id=b.comment_post_ID,b.comments_listing=this.comments_listing,b.p=a('[name="p"]').val(),a("#comment-"+a("#comment_ID").val()).hasClass("unapproved")&&(b.approve_parent=1),a.ajax({type:"POST",url:ajaxurl,data:b,success:function(a){commentReply.show(a)},error:function(a){commentReply.error(a)}}),!1},show:function(b){var c,g,i,j,k,m=this;return"string"==typeof b?(m.error({responseText:b}),!1):(c=wpAjax.parseAjaxResponse(b),c.errors?(m.error({responseText:wpAjax.broken}),!1):(m.revert(),c=c.responses[0],i="#comment-"+c.id,"edit-comment"==m.act&&a(i).remove(),c.supplemental.parent_approved&&(k=a("#comment-"+c.supplemental.parent_approved),e(-1,c.supplemental.parent_post_id),"moderated"==this.comments_listing)?void k.animate({backgroundColor:"#CCEEBB"},400,function(){k.fadeOut()}):(c.supplemental.i18n_comments_text&&(l?h(c.supplemental):(f(1,c.supplemental.parent_post_id),d("span.all-count",1))),g=a.trim(c.data),a(g).hide(),a("#replyrow").after(g),i=a(i),m.addEvents(i),j=i.hasClass("unapproved")?"#FFFFE0":i.closest(".widefat, .postbox").css("backgroundColor"),void i.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:j},300,function(){k&&k.length&&k.animate({backgroundColor:"#CCEEBB"},300).animate({backgroundColor:j},300).removeClass("unapproved").addClass("approved").find("div.comment_status").html("1")}))))},error:function(b){var c=b.statusText;a("#replysubmit .spinner").removeClass("is-active"),b.responseText&&(c=b.responseText.replace(/<.[^<>]*?>/g,"")),c&&a("#replysubmit .error").html(c).show()},addcomment:function(b){var c=this;a("#add-new-comment").fadeOut(200,function(){c.open(0,b,"add"),a("table.comments-box").css("display",""),a("#no-comments").remove()})}},a(document).ready(function(){var b,c,d,e;setCommentsList(),commentReply.init(),a(document).on("click","span.delete a.delete",function(a){a.preventDefault()}),"undefined"!=typeof a.table_hotkeys&&(b=function(b){return function(){var c,d;c="next"==b?"first":"last",d=a(".tablenav-pages ."+b+"-page:not(.disabled)"),d.length&&(window.location=d[0].href.replace(/\&hotkeys_highlight_(first|last)=1/g,"")+"&hotkeys_highlight_"+c+"=1")}},c=function(b,c){window.location=a("span.edit a",c).attr("href")},d=function(){a("#cb-select-all-1").data("wp-toggle",1).trigger("click").removeData("wp-toggle")},e=function(b){return function(){var c=a('select[name="action"]');a('option[value="'+b+'"]',c).prop("selected",!0),a("#doaction").click()}},a.table_hotkeys(a("table.widefat"),["a","u","s","d","r","q","z",["e",c],["shift+x",d],["shift+a",e("approve")],["shift+s",e("spam")],["shift+d",e("delete")],["shift+t",e("trash")],["shift+z",e("untrash")],["shift+u",e("unapprove")]],{highlight_first:adminCommentsL10n.hotkeys_highlight_first,highlight_last:adminCommentsL10n.hotkeys_highlight_last,prev_page_link_cb:b("prev"),next_page_link_cb:b("next"),hotkeys_opts:{disableInInput:!0,type:"keypress",noDisable:'.check-column input[type="checkbox"]'},cycle_expr:"#the-comment-list tr",start_row_index:0})),a("#the-comment-list").on("click",".comment-inline",function(b){b.preventDefault();var c=a(this),d="replyto";"undefined"!=typeof c.data("action")&&(d=c.data("action")),commentReply.open(c.data("commentId"),c.data("postId"),d)})})}(jQuery);
\ No newline at end of file
index 4d76717309e0561b3b81d97a6cc1e11800407029..3a744fe505925a2ce262dcfb70557a7f45541518 100644 (file)
                                $document.on( 'dfw-on.focus', mceBind ).on( 'dfw-off.focus', mceUnbind );
 
                                // Make sure the body focuses when clicking outside it.
-                               editor.on( 'click', function( event ) {
+                               editor.on( 'click', function( event ) {
                                        if ( event.target === editor.getDoc().documentElement ) {
                                                editor.focus();
                                        }
index d64d3e6045b8407f95921312cbc9b2690d1d37b8..8602b1409efe8fe61c3b533688de330466b9dd71 100644 (file)
                        // Protect pre|script tags
                        if ( text.indexOf( '<pre' ) !== -1 || text.indexOf( '<script' ) !== -1 ) {
                                preserve_linebreaks = true;
-                               text = text.replace( /<(pre|script)[^>]*>[\s\S]+?<\/\1>/g, function( a ) {
+                               text = text.replace( /<(pre|script)[^>]*>[\s\S]*?<\/\1>/g, function( a ) {
                                        return a.replace( /\n/g, '<wp-line-break>' );
                                });
                        }
index 925164ab04bc855f6e093d33a4294956762c2692..6644486a869d2e4488b3d85ec8fef936d2479571 100644 (file)
@@ -1 +1 @@
-!function(a){function b(){function b(){!i&&window.tinymce&&(i=window.tinymce,j=i.$,j(document).on("click",function(a){var b,c,e=j(a.target);e.hasClass("wp-switch-editor")&&(b=e.attr("data-wp-editor-id"),c=e.hasClass("switch-tmce")?"tmce":"html",d(b,c))}))}function c(a){var b=j(".mce-toolbar-grp",a.getContainer())[0],c=b&&b.clientHeight;return c&&c>10&&200>c?parseInt(c,10):30}function d(a,b){a=a||"content",b=b||"toggle";var d,e,f,g=i.get(a),h=j("#wp-"+a+"-wrap"),k=j("#"+a),l=k[0];if("toggle"===b&&(b=g&&!g.isHidden()?"html":"tmce"),"tmce"===b||"tinymce"===b){if(g&&!g.isHidden())return!1;"undefined"!=typeof window.QTags&&window.QTags.closeAllTags(a),d=parseInt(l.style.height,10)||0,g?(g.show(),!i.Env.iOS&&d&&(e=c(g),d=d-e+14,d>50&&5e3>d&&g.theme.resizeTo(null,d))):i.init(window.tinyMCEPreInit.mceInit[a]),h.removeClass("html-active").addClass("tmce-active"),k.attr("aria-hidden",!0),window.setUserSetting("editor","tinymce")}else if("html"===b){if(g&&g.isHidden())return!1;g?(i.Env.iOS||(f=g.iframeElement,d=f?parseInt(f.style.height,10):0,d&&(e=c(g),d=d+e-14,d>50&&5e3>d&&(l.style.height=d+"px"))),g.hide()):k.css({display:"",visibility:""}),h.removeClass("tmce-active").addClass("html-active"),k.attr("aria-hidden",!1),window.setUserSetting("editor","html")}}function e(a){var b="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|fieldset",c=b+"|div|p",d=b+"|pre",e=!1,f=!1;return a?((-1!==a.indexOf("<pre")||-1!==a.indexOf("<script"))&&(e=!0,a=a.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(a){return a=a.replace(/<br ?\/?>(\r\n|\n)?/g,"<wp-line-break>"),a=a.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g,"<wp-line-break>"),a.replace(/\r?\n/g,"<wp-line-break>")})),-1!==a.indexOf("[caption")&&(f=!0,a=a.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(a){return a.replace(/<br([^>]*)>/g,"<wp-temp-br$1>").replace(/[\r\n\t]+/,"")})),a=a.replace(new RegExp("\\s*</("+c+")>\\s*","g"),"</$1>\n"),a=a.replace(new RegExp("\\s*<((?:"+c+")(?: [^>]*)?)>","g"),"\n<$1>"),a=a.replace(/(<p [^>]+>.*?)<\/p>/g,"$1</p#>"),a=a.replace(/<div( [^>]*)?>\s*<p>/gi,"<div$1>\n\n"),a=a.replace(/\s*<p>/gi,""),a=a.replace(/\s*<\/p>\s*/gi,"\n\n"),a=a.replace(/\n[\s\u00a0]+\n/g,"\n\n"),a=a.replace(/\s*<br ?\/?>\s*/gi,"\n"),a=a.replace(/\s*<div/g,"\n<div"),a=a.replace(/<\/div>\s*/g,"</div>\n"),a=a.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi,"\n\n[caption$1[/caption]\n\n"),a=a.replace(/caption\]\n\n+\[caption/g,"caption]\n\n[caption"),a=a.replace(new RegExp("\\s*<((?:"+d+")(?: [^>]*)?)\\s*>","g"),"\n<$1>"),a=a.replace(new RegExp("\\s*</("+d+")>\\s*","g"),"</$1>\n"),a=a.replace(/<li([^>]*)>/g,"     <li$1>"),-1!==a.indexOf("<option")&&(a=a.replace(/\s*<option/g,"\n<option"),a=a.replace(/\s*<\/select>/g,"\n</select>")),-1!==a.indexOf("<hr")&&(a=a.replace(/\s*<hr( [^>]*)?>\s*/g,"\n\n<hr$1>\n\n")),-1!==a.indexOf("<object")&&(a=a.replace(/<object[\s\S]+?<\/object>/g,function(a){return a.replace(/[\r\n]+/g,"")})),a=a.replace(/<\/p#>/g,"</p>\n"),a=a.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g,"\n$1"),a=a.replace(/^\s+/,""),a=a.replace(/[\s\u00a0]+$/,""),e&&(a=a.replace(/<wp-line-break>/g,"\n")),f&&(a=a.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")),a):""}function f(a){var b=!1,c=!1,d="table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary";return a=a.replace(/\r\n|\r/g,"\n"),-1===a.indexOf("\n")?a:(-1!==a.indexOf("<object")&&(a=a.replace(/<object[\s\S]+?<\/object>/g,function(a){return a.replace(/\n+/g,"")})),a=a.replace(/<[^<>]+>/g,function(a){return a.replace(/[\n\t ]+/g," ")}),(-1!==a.indexOf("<pre")||-1!==a.indexOf("<script"))&&(b=!0,a=a.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(a){return a.replace(/\n/g,"<wp-line-break>")})),-1!==a.indexOf("[caption")&&(c=!0,a=a.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(a){return a=a.replace(/<br([^>]*)>/g,"<wp-temp-br$1>"),a=a.replace(/<[^<>]+>/g,function(a){return a.replace(/[\n\t ]+/," ")}),a.replace(/\s*\n\s*/g,"<wp-temp-br />")})),a+="\n\n",a=a.replace(/<br \/>\s*<br \/>/gi,"\n\n"),a=a.replace(new RegExp("(<(?:"+d+")(?: [^>]*)?>)","gi"),"\n$1"),a=a.replace(new RegExp("(</(?:"+d+")>)","gi"),"$1\n\n"),a=a.replace(/<hr( [^>]*)?>/gi,"<hr$1>\n\n"),a=a.replace(/\s*<option/gi,"<option"),a=a.replace(/<\/option>\s*/gi,"</option>"),a=a.replace(/\n\s*\n+/g,"\n\n"),a=a.replace(/([\s\S]+?)\n\n/g,"<p>$1</p>\n"),a=a.replace(/<p>\s*?<\/p>/gi,""),a=a.replace(new RegExp("<p>\\s*(</?(?:"+d+")(?: [^>]*)?>)\\s*</p>","gi"),"$1"),a=a.replace(/<p>(<li.+?)<\/p>/gi,"$1"),a=a.replace(/<p>\s*<blockquote([^>]*)>/gi,"<blockquote$1><p>"),a=a.replace(/<\/blockquote>\s*<\/p>/gi,"</p></blockquote>"),a=a.replace(new RegExp("<p>\\s*(</?(?:"+d+")(?: [^>]*)?>)","gi"),"$1"),a=a.replace(new RegExp("(</?(?:"+d+")(?: [^>]*)?>)\\s*</p>","gi"),"$1"),a=a.replace(/(<br[^>]*>)\s*\n/gi,"$1"),a=a.replace(/\s*\n/g,"<br />\n"),a=a.replace(new RegExp("(</?(?:"+d+")[^>]*>)\\s*<br />","gi"),"$1"),a=a.replace(/<br \/>(\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi,"$1"),a=a.replace(/(?:<p>|<br ?\/?>)*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|<br ?\/?>)*/gi,"[caption$1[/caption]"),a=a.replace(/(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g,function(a,b,c){return c.match(/<p( [^>]*)?>/)?a:b+"<p>"+c+"</p>"}),b&&(a=a.replace(/<wp-line-break>/g,"\n")),c&&(a=a.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")),a)}function g(b){var c={o:k,data:b,unfiltered:b};return a&&a("body").trigger("beforePreWpautop",[c]),c.data=e(c.data),a&&a("body").trigger("afterPreWpautop",[c]),c.data}function h(b){var c={o:k,data:b,unfiltered:b};return a&&a("body").trigger("beforeWpautop",[c]),c.data=f(c.data),a&&a("body").trigger("afterWpautop",[c]),c.data}var i,j,k={};return a?a(document).ready(b):document.addEventListener?(document.addEventListener("DOMContentLoaded",b,!1),window.addEventListener("load",b,!1)):window.attachEvent&&(window.attachEvent("onload",b),document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&b()})),window.wp=window.wp||{},window.wp.editor=window.wp.editor||{},window.wp.editor.autop=h,window.wp.editor.removep=g,k={go:d,wpautop:h,pre_wpautop:g,_wp_Autop:f,_wp_Nop:e}}window.switchEditors=new b}(window.jQuery);
\ No newline at end of file
+!function(a){function b(){function b(){!i&&window.tinymce&&(i=window.tinymce,j=i.$,j(document).on("click",function(a){var b,c,e=j(a.target);e.hasClass("wp-switch-editor")&&(b=e.attr("data-wp-editor-id"),c=e.hasClass("switch-tmce")?"tmce":"html",d(b,c))}))}function c(a){var b=j(".mce-toolbar-grp",a.getContainer())[0],c=b&&b.clientHeight;return c&&c>10&&200>c?parseInt(c,10):30}function d(a,b){a=a||"content",b=b||"toggle";var d,e,f,g=i.get(a),h=j("#wp-"+a+"-wrap"),k=j("#"+a),l=k[0];if("toggle"===b&&(b=g&&!g.isHidden()?"html":"tmce"),"tmce"===b||"tinymce"===b){if(g&&!g.isHidden())return!1;"undefined"!=typeof window.QTags&&window.QTags.closeAllTags(a),d=parseInt(l.style.height,10)||0,g?(g.show(),!i.Env.iOS&&d&&(e=c(g),d=d-e+14,d>50&&5e3>d&&g.theme.resizeTo(null,d))):i.init(window.tinyMCEPreInit.mceInit[a]),h.removeClass("html-active").addClass("tmce-active"),k.attr("aria-hidden",!0),window.setUserSetting("editor","tinymce")}else if("html"===b){if(g&&g.isHidden())return!1;g?(i.Env.iOS||(f=g.iframeElement,d=f?parseInt(f.style.height,10):0,d&&(e=c(g),d=d+e-14,d>50&&5e3>d&&(l.style.height=d+"px"))),g.hide()):k.css({display:"",visibility:""}),h.removeClass("tmce-active").addClass("html-active"),k.attr("aria-hidden",!1),window.setUserSetting("editor","html")}}function e(a){var b="blockquote|ul|ol|li|table|thead|tbody|tfoot|tr|th|td|h[1-6]|fieldset",c=b+"|div|p",d=b+"|pre",e=!1,f=!1;return a?((-1!==a.indexOf("<pre")||-1!==a.indexOf("<script"))&&(e=!0,a=a.replace(/<(pre|script)[^>]*>[\s\S]+?<\/\1>/g,function(a){return a=a.replace(/<br ?\/?>(\r\n|\n)?/g,"<wp-line-break>"),a=a.replace(/<\/?p( [^>]*)?>(\r\n|\n)?/g,"<wp-line-break>"),a.replace(/\r?\n/g,"<wp-line-break>")})),-1!==a.indexOf("[caption")&&(f=!0,a=a.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(a){return a.replace(/<br([^>]*)>/g,"<wp-temp-br$1>").replace(/[\r\n\t]+/,"")})),a=a.replace(new RegExp("\\s*</("+c+")>\\s*","g"),"</$1>\n"),a=a.replace(new RegExp("\\s*<((?:"+c+")(?: [^>]*)?)>","g"),"\n<$1>"),a=a.replace(/(<p [^>]+>.*?)<\/p>/g,"$1</p#>"),a=a.replace(/<div( [^>]*)?>\s*<p>/gi,"<div$1>\n\n"),a=a.replace(/\s*<p>/gi,""),a=a.replace(/\s*<\/p>\s*/gi,"\n\n"),a=a.replace(/\n[\s\u00a0]+\n/g,"\n\n"),a=a.replace(/\s*<br ?\/?>\s*/gi,"\n"),a=a.replace(/\s*<div/g,"\n<div"),a=a.replace(/<\/div>\s*/g,"</div>\n"),a=a.replace(/\s*\[caption([^\[]+)\[\/caption\]\s*/gi,"\n\n[caption$1[/caption]\n\n"),a=a.replace(/caption\]\n\n+\[caption/g,"caption]\n\n[caption"),a=a.replace(new RegExp("\\s*<((?:"+d+")(?: [^>]*)?)\\s*>","g"),"\n<$1>"),a=a.replace(new RegExp("\\s*</("+d+")>\\s*","g"),"</$1>\n"),a=a.replace(/<li([^>]*)>/g,"     <li$1>"),-1!==a.indexOf("<option")&&(a=a.replace(/\s*<option/g,"\n<option"),a=a.replace(/\s*<\/select>/g,"\n</select>")),-1!==a.indexOf("<hr")&&(a=a.replace(/\s*<hr( [^>]*)?>\s*/g,"\n\n<hr$1>\n\n")),-1!==a.indexOf("<object")&&(a=a.replace(/<object[\s\S]+?<\/object>/g,function(a){return a.replace(/[\r\n]+/g,"")})),a=a.replace(/<\/p#>/g,"</p>\n"),a=a.replace(/\s*(<p [^>]+>[\s\S]*?<\/p>)/g,"\n$1"),a=a.replace(/^\s+/,""),a=a.replace(/[\s\u00a0]+$/,""),e&&(a=a.replace(/<wp-line-break>/g,"\n")),f&&(a=a.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")),a):""}function f(a){var b=!1,c=!1,d="table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary";return a=a.replace(/\r\n|\r/g,"\n"),-1===a.indexOf("\n")?a:(-1!==a.indexOf("<object")&&(a=a.replace(/<object[\s\S]+?<\/object>/g,function(a){return a.replace(/\n+/g,"")})),a=a.replace(/<[^<>]+>/g,function(a){return a.replace(/[\n\t ]+/g," ")}),(-1!==a.indexOf("<pre")||-1!==a.indexOf("<script"))&&(b=!0,a=a.replace(/<(pre|script)[^>]*>[\s\S]*?<\/\1>/g,function(a){return a.replace(/\n/g,"<wp-line-break>")})),-1!==a.indexOf("[caption")&&(c=!0,a=a.replace(/\[caption[\s\S]+?\[\/caption\]/g,function(a){return a=a.replace(/<br([^>]*)>/g,"<wp-temp-br$1>"),a=a.replace(/<[^<>]+>/g,function(a){return a.replace(/[\n\t ]+/," ")}),a.replace(/\s*\n\s*/g,"<wp-temp-br />")})),a+="\n\n",a=a.replace(/<br \/>\s*<br \/>/gi,"\n\n"),a=a.replace(new RegExp("(<(?:"+d+")(?: [^>]*)?>)","gi"),"\n$1"),a=a.replace(new RegExp("(</(?:"+d+")>)","gi"),"$1\n\n"),a=a.replace(/<hr( [^>]*)?>/gi,"<hr$1>\n\n"),a=a.replace(/\s*<option/gi,"<option"),a=a.replace(/<\/option>\s*/gi,"</option>"),a=a.replace(/\n\s*\n+/g,"\n\n"),a=a.replace(/([\s\S]+?)\n\n/g,"<p>$1</p>\n"),a=a.replace(/<p>\s*?<\/p>/gi,""),a=a.replace(new RegExp("<p>\\s*(</?(?:"+d+")(?: [^>]*)?>)\\s*</p>","gi"),"$1"),a=a.replace(/<p>(<li.+?)<\/p>/gi,"$1"),a=a.replace(/<p>\s*<blockquote([^>]*)>/gi,"<blockquote$1><p>"),a=a.replace(/<\/blockquote>\s*<\/p>/gi,"</p></blockquote>"),a=a.replace(new RegExp("<p>\\s*(</?(?:"+d+")(?: [^>]*)?>)","gi"),"$1"),a=a.replace(new RegExp("(</?(?:"+d+")(?: [^>]*)?>)\\s*</p>","gi"),"$1"),a=a.replace(/(<br[^>]*>)\s*\n/gi,"$1"),a=a.replace(/\s*\n/g,"<br />\n"),a=a.replace(new RegExp("(</?(?:"+d+")[^>]*>)\\s*<br />","gi"),"$1"),a=a.replace(/<br \/>(\s*<\/?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)/gi,"$1"),a=a.replace(/(?:<p>|<br ?\/?>)*\s*\[caption([^\[]+)\[\/caption\]\s*(?:<\/p>|<br ?\/?>)*/gi,"[caption$1[/caption]"),a=a.replace(/(<(?:div|th|td|form|fieldset|dd)[^>]*>)(.*?)<\/p>/g,function(a,b,c){return c.match(/<p( [^>]*)?>/)?a:b+"<p>"+c+"</p>"}),b&&(a=a.replace(/<wp-line-break>/g,"\n")),c&&(a=a.replace(/<wp-temp-br([^>]*)>/g,"<br$1>")),a)}function g(b){var c={o:k,data:b,unfiltered:b};return a&&a("body").trigger("beforePreWpautop",[c]),c.data=e(c.data),a&&a("body").trigger("afterPreWpautop",[c]),c.data}function h(b){var c={o:k,data:b,unfiltered:b};return a&&a("body").trigger("beforeWpautop",[c]),c.data=f(c.data),a&&a("body").trigger("afterWpautop",[c]),c.data}var i,j,k={};return a?a(document).ready(b):document.addEventListener?(document.addEventListener("DOMContentLoaded",b,!1),window.addEventListener("load",b,!1)):window.attachEvent&&(window.attachEvent("onload",b),document.attachEvent("onreadystatechange",function(){"complete"===document.readyState&&b()})),window.wp=window.wp||{},window.wp.editor=window.wp.editor||{},window.wp.editor.autop=h,window.wp.editor.removep=g,k={go:d,wpautop:h,pre_wpautop:g,_wp_Autop:f,_wp_Nop:e}}window.switchEditors=new b}(window.jQuery);
\ No newline at end of file
index 5b70b7f21ca834d9d1877dfeb08ca129586d4221..e2131323ea7906019f63abdcd0cad326be5ddd1c 100644 (file)
@@ -38,33 +38,33 @@ jQuery(document).ready(function($) {
                });
        };
 
-       $('#asc').click( function() {
+       $('#asc').click( function( e ) {
+               e.preventDefault();
                desc = false;
                sortIt();
-               return false;
        });
-       $('#desc').click( function() {
+       $('#desc').click( function( e ) {
+               e.preventDefault();
                desc = true;
                sortIt();
-               return false;
        });
-       $('#clear').click( function() {
+       $('#clear').click( function( e ) {
+               e.preventDefault();
                clearAll(1);
-               return false;
        });
-       $('#showall').click( function() {
+       $('#showall').click( function( e ) {
+               e.preventDefault();
                $('#sort-buttons span a').toggle();
                $('a.describe-toggle-on').hide();
                $('a.describe-toggle-off, table.slidetoggle').show();
                $('img.pinkynail').toggle(false);
-               return false;
        });
-       $('#hideall').click( function() {
+       $('#hideall').click( function( e ) {
+               e.preventDefault();
                $('#sort-buttons span a').toggle();
                $('a.describe-toggle-on').show();
                $('a.describe-toggle-off, table.slidetoggle').hide();
                $('img.pinkynail').toggle(true);
-               return false;
        });
 
        // initialize sortable
index bcfc88a3efc89ebe08acb850e3f0fd8f486b52c9..b1b1ebccd428aecb17d3ce76072b6c3f9c7895c9 100644 (file)
@@ -1 +1 @@
-jQuery(document).ready(function(a){var b,c,d,e,f,g=!1;c=function(){b=a("#media-items").sortable({items:"div.media-item",placeholder:"sorthelper",axis:"y",distance:2,handle:"div.filename",stop:function(){var b=a("#media-items").sortable("toArray"),c=b.length;a.each(b,function(b,d){var e=g?c-b:1+b;a("#"+d+" .menu_order input").val(e)})}})},d=function(){var b=a(".menu_order_input"),c=b.length;b.each(function(b){var d=g?c-b:1+b;a(this).val(d)})},e=function(b){b=b||0,a(".menu_order_input").each(function(){("0"===this.value||b)&&(this.value="")})},a("#asc").click(function(){return g=!1,d(),!1}),a("#desc").click(function(){return g=!0,d(),!1}),a("#clear").click(function(){return e(1),!1}),a("#showall").click(function(){return a("#sort-buttons span a").toggle(),a("a.describe-toggle-on").hide(),a("a.describe-toggle-off, table.slidetoggle").show(),a("img.pinkynail").toggle(!1),!1}),a("#hideall").click(function(){return a("#sort-buttons span a").toggle(),a("a.describe-toggle-on").show(),a("a.describe-toggle-off, table.slidetoggle").hide(),a("img.pinkynail").toggle(!0),!1}),c(),e(),a("#media-items>*").length>1&&(f=wpgallery.getWin(),a("#save-all, #gallery-settings").show(),"undefined"!=typeof f.tinyMCE&&f.tinyMCE.activeEditor&&!f.tinyMCE.activeEditor.isHidden()?(wpgallery.mcemode=!0,wpgallery.init()):a("#insert-gallery").show())}),jQuery(window).unload(function(){tinymce=tinyMCE=wpgallery=null});var tinymce=null,tinyMCE,wpgallery;wpgallery={mcemode:!1,editor:{},dom:{},is_update:!1,el:{},I:function(a){return document.getElementById(a)},init:function(){var a,b,c,d,e=this,f=e.getWin();if(e.mcemode){for(a=(""+document.location.search).replace(/^\?/,"").split("&"),b={},c=0;c<a.length;c++)d=a[c].split("="),b[unescape(d[0])]=unescape(d[1]);b.mce_rdomain&&(document.domain=b.mce_rdomain),tinymce=f.tinymce,tinyMCE=f.tinyMCE,e.editor=tinymce.EditorManager.activeEditor,e.setup()}},getWin:function(){return window.dialogArguments||opener||parent||top},setup:function(){var a,b,c,d,e,f,g=this,h=g.editor;if(g.mcemode){if(g.el=h.selection.getNode(),"IMG"!==g.el.nodeName||!h.dom.hasClass(g.el,"wpGallery")){if(!(b=h.dom.select("img.wpGallery"))||!b[0])return"1"===getUserSetting("galfile")&&(g.I("linkto-file").checked="checked"),"1"===getUserSetting("galdesc")&&(g.I("order-desc").checked="checked"),getUserSetting("galcols")&&(g.I("columns").value=getUserSetting("galcols")),getUserSetting("galord")&&(g.I("orderby").value=getUserSetting("galord")),void jQuery("#insert-gallery").show();g.el=b[0]}a=h.dom.getAttrib(g.el,"title"),a=h.dom.decode(a),a?(jQuery("#update-gallery").show(),g.is_update=!0,c=a.match(/columns=['"]([0-9]+)['"]/),d=a.match(/link=['"]([^'"]+)['"]/i),e=a.match(/order=['"]([^'"]+)['"]/i),f=a.match(/orderby=['"]([^'"]+)['"]/i),d&&d[1]&&(g.I("linkto-file").checked="checked"),e&&e[1]&&(g.I("order-desc").checked="checked"),c&&c[1]&&(g.I("columns").value=""+c[1]),f&&f[1]&&(g.I("orderby").value=f[1])):jQuery("#insert-gallery").show()}},update:function(){var a,b=this,c=b.editor,d="";return b.mcemode&&b.is_update?void("IMG"===b.el.nodeName&&(d=c.dom.decode(c.dom.getAttrib(b.el,"title")),d=d.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi,""),d+=b.getSettings(),c.dom.setAttrib(b.el,"title",d),b.getWin().tb_remove())):(a="[gallery"+b.getSettings()+"]",void b.getWin().send_to_editor(a))},getSettings:function(){var a=this.I,b="";return a("linkto-file").checked&&(b+=' link="file"',setUserSetting("galfile","1")),a("order-desc").checked&&(b+=' order="DESC"',setUserSetting("galdesc","1")),3!==a("columns").value&&(b+=' columns="'+a("columns").value+'"',setUserSetting("galcols",a("columns").value)),"menu_order"!==a("orderby").value&&(b+=' orderby="'+a("orderby").value+'"',setUserSetting("galord",a("orderby").value)),b}};
\ No newline at end of file
+jQuery(document).ready(function(a){var b,c,d,e,f,g=!1;c=function(){b=a("#media-items").sortable({items:"div.media-item",placeholder:"sorthelper",axis:"y",distance:2,handle:"div.filename",stop:function(){var b=a("#media-items").sortable("toArray"),c=b.length;a.each(b,function(b,d){var e=g?c-b:1+b;a("#"+d+" .menu_order input").val(e)})}})},d=function(){var b=a(".menu_order_input"),c=b.length;b.each(function(b){var d=g?c-b:1+b;a(this).val(d)})},e=function(b){b=b||0,a(".menu_order_input").each(function(){("0"===this.value||b)&&(this.value="")})},a("#asc").click(function(a){a.preventDefault(),g=!1,d()}),a("#desc").click(function(a){a.preventDefault(),g=!0,d()}),a("#clear").click(function(a){a.preventDefault(),e(1)}),a("#showall").click(function(b){b.preventDefault(),a("#sort-buttons span a").toggle(),a("a.describe-toggle-on").hide(),a("a.describe-toggle-off, table.slidetoggle").show(),a("img.pinkynail").toggle(!1)}),a("#hideall").click(function(b){b.preventDefault(),a("#sort-buttons span a").toggle(),a("a.describe-toggle-on").show(),a("a.describe-toggle-off, table.slidetoggle").hide(),a("img.pinkynail").toggle(!0)}),c(),e(),a("#media-items>*").length>1&&(f=wpgallery.getWin(),a("#save-all, #gallery-settings").show(),"undefined"!=typeof f.tinyMCE&&f.tinyMCE.activeEditor&&!f.tinyMCE.activeEditor.isHidden()?(wpgallery.mcemode=!0,wpgallery.init()):a("#insert-gallery").show())}),jQuery(window).unload(function(){tinymce=tinyMCE=wpgallery=null});var tinymce=null,tinyMCE,wpgallery;wpgallery={mcemode:!1,editor:{},dom:{},is_update:!1,el:{},I:function(a){return document.getElementById(a)},init:function(){var a,b,c,d,e=this,f=e.getWin();if(e.mcemode){for(a=(""+document.location.search).replace(/^\?/,"").split("&"),b={},c=0;c<a.length;c++)d=a[c].split("="),b[unescape(d[0])]=unescape(d[1]);b.mce_rdomain&&(document.domain=b.mce_rdomain),tinymce=f.tinymce,tinyMCE=f.tinyMCE,e.editor=tinymce.EditorManager.activeEditor,e.setup()}},getWin:function(){return window.dialogArguments||opener||parent||top},setup:function(){var a,b,c,d,e,f,g=this,h=g.editor;if(g.mcemode){if(g.el=h.selection.getNode(),"IMG"!==g.el.nodeName||!h.dom.hasClass(g.el,"wpGallery")){if(!(b=h.dom.select("img.wpGallery"))||!b[0])return"1"===getUserSetting("galfile")&&(g.I("linkto-file").checked="checked"),"1"===getUserSetting("galdesc")&&(g.I("order-desc").checked="checked"),getUserSetting("galcols")&&(g.I("columns").value=getUserSetting("galcols")),getUserSetting("galord")&&(g.I("orderby").value=getUserSetting("galord")),void jQuery("#insert-gallery").show();g.el=b[0]}a=h.dom.getAttrib(g.el,"title"),a=h.dom.decode(a),a?(jQuery("#update-gallery").show(),g.is_update=!0,c=a.match(/columns=['"]([0-9]+)['"]/),d=a.match(/link=['"]([^'"]+)['"]/i),e=a.match(/order=['"]([^'"]+)['"]/i),f=a.match(/orderby=['"]([^'"]+)['"]/i),d&&d[1]&&(g.I("linkto-file").checked="checked"),e&&e[1]&&(g.I("order-desc").checked="checked"),c&&c[1]&&(g.I("columns").value=""+c[1]),f&&f[1]&&(g.I("orderby").value=f[1])):jQuery("#insert-gallery").show()}},update:function(){var a,b=this,c=b.editor,d="";return b.mcemode&&b.is_update?void("IMG"===b.el.nodeName&&(d=c.dom.decode(c.dom.getAttrib(b.el,"title")),d=d.replace(/\s*(order|link|columns|orderby)=['"]([^'"]+)['"]/gi,""),d+=b.getSettings(),c.dom.setAttrib(b.el,"title",d),b.getWin().tb_remove())):(a="[gallery"+b.getSettings()+"]",void b.getWin().send_to_editor(a))},getSettings:function(){var a=this.I,b="";return a("linkto-file").checked&&(b+=' link="file"',setUserSetting("galfile","1")),a("order-desc").checked&&(b+=' order="DESC"',setUserSetting("galdesc","1")),3!==a("columns").value&&(b+=' columns="'+a("columns").value+'"',setUserSetting("galcols",a("columns").value)),"menu_order"!==a("orderby").value&&(b+=' orderby="'+a("orderby").value+'"',setUserSetting("galord",a("orderby").value)),b}};
\ No newline at end of file
index 0abf6efc280d3e20326934913977c35d0695dd01..c50a9d131c30bf159f1976945cc7dbd1992ededb 100644 (file)
@@ -165,7 +165,7 @@ var imageEdit = window.imageEdit = {
                        'rand': t.intval(Math.random() * 1000000)
                };
 
-               img = $('<img id="image-preview-' + postid + '" />')
+               img = $( '<img id="image-preview-' + postid + '" alt="" />' )
                        .on('load', function() {
                                var max1, max2, parent = $('#imgedit-crop-' + postid), t = imageEdit;
 
index 29784347afbb8a9cdf6832d5c1bb4bdd48f4c4b4..7eaffbba796eb8186ec3053b75d7a9fbef397ff0 100644 (file)
@@ -1 +1 @@
-!function(a){var b=window.imageEdit={iasapi:{},hold:{},postid:"",_view:!1,intval:function(a){return 0|a},setDisabled:function(b,c){c?(b.removeClass("disabled"),a("input",b).removeAttr("disabled")):(b.addClass("disabled"),a("input",b).prop("disabled",!0))},init:function(b){var c=this,d=a("#image-editor-"+c.postid),e=c.intval(a("#imgedit-x-"+b).val()),f=c.intval(a("#imgedit-y-"+b).val());c.postid!==b&&d.length&&c.close(c.postid),c.hold.w=c.hold.ow=e,c.hold.h=c.hold.oh=f,c.hold.xy_ratio=e/f,c.hold.sizer=parseFloat(a("#imgedit-sizer-"+b).val()),c.postid=b,a("#imgedit-response-"+b).empty(),a('input[type="text"]',"#imgedit-panel-"+b).keypress(function(b){var c=b.keyCode;return c>36&&41>c&&a(this).blur(),13===c?(b.preventDefault(),b.stopPropagation(),!1):void 0})},toggleEditor:function(b,c){var d=a("#imgedit-wait-"+b);c?d.height(a("#imgedit-panel-"+b).height()).fadeIn("fast"):d.fadeOut("fast")},toggleHelp:function(b){return a(b).parents(".imgedit-group-top").toggleClass("imgedit-help-toggled").find(".imgedit-help").slideToggle("fast"),!1},getTarget:function(b){return a('input[name="imgedit-target-'+b+'"]:checked',"#imgedit-save-target-"+b).val()||"full"},scaleChanged:function(b,c){var d=a("#imgedit-scale-width-"+b),e=a("#imgedit-scale-height-"+b),f=a("#imgedit-scale-warn-"+b),g="",h="";c?(h=""!==d.val()?Math.round(d.val()/this.hold.xy_ratio):"",e.val(h)):(g=""!==e.val()?Math.round(e.val()*this.hold.xy_ratio):"",d.val(g)),h&&h>this.hold.oh||g&&g>this.hold.ow?f.css("visibility","visible"):f.css("visibility","hidden")},getSelRatio:function(b){var c=this.hold.w,d=this.hold.h,e=this.intval(a("#imgedit-crop-width-"+b).val()),f=this.intval(a("#imgedit-crop-height-"+b).val());return e&&f?e+":"+f:c&&d?c+":"+d:"1:1"},filterHistory:function(b,c){var d,e,f,g,h=a("#imgedit-history-"+b).val(),i=[];if(""!==h){if(h=JSON.parse(h),d=this.intval(a("#imgedit-undone-"+b).val()),d>0)for(;d>0;)h.pop(),d--;if(c){if(!h.length)return this.hold.w=this.hold.ow,this.hold.h=this.hold.oh,"";f=h[h.length-1],f=f.c||f.r||f.f||!1,f&&(this.hold.w=f.fw,this.hold.h=f.fh)}for(e in h)g=h[e],g.hasOwnProperty("c")?i[e]={c:{x:g.c.x,y:g.c.y,w:g.c.w,h:g.c.h}}:g.hasOwnProperty("r")?i[e]={r:g.r.r}:g.hasOwnProperty("f")&&(i[e]={f:g.f.f});return JSON.stringify(i)}return""},refreshEditor:function(c,d,e){var f,g,h=this;h.toggleEditor(c,1),f={action:"imgedit-preview",_ajax_nonce:d,postid:c,history:h.filterHistory(c,1),rand:h.intval(1e6*Math.random())},g=a('<img id="image-preview-'+c+'" />').on("load",function(){var d,f,h=a("#imgedit-crop-"+c),i=b;h.empty().append(g),d=Math.max(i.hold.w,i.hold.h),f=Math.max(a(g).width(),a(g).height()),i.hold.sizer=d>f?f/d:1,i.initCrop(c,g,h),i.setCropSelection(c,0),"undefined"!=typeof e&&null!==e&&e(),a("#imgedit-history-"+c).val()&&"0"===a("#imgedit-undone-"+c).val()?a("input.imgedit-submit-btn","#imgedit-panel-"+c).removeAttr("disabled"):a("input.imgedit-submit-btn","#imgedit-panel-"+c).prop("disabled",!0),i.toggleEditor(c,0)}).on("error",function(){a("#imgedit-crop-"+c).empty().append('<div class="error"><p>'+imageEditL10n.error+"</p></div>"),h.toggleEditor(c,0)}).attr("src",ajaxurl+"?"+a.param(f))},action:function(b,c,d){var e,f,g,h,i,j=this;if(j.notsaved(b))return!1;if(e={action:"image-editor",_ajax_nonce:c,postid:b},"scale"===d){if(f=a("#imgedit-scale-width-"+b),g=a("#imgedit-scale-height-"+b),h=j.intval(f.val()),i=j.intval(g.val()),1>h)return f.focus(),!1;if(1>i)return g.focus(),!1;if(h===j.hold.ow||i===j.hold.oh)return!1;e["do"]="scale",e.fwidth=h,e.fheight=i}else{if("restore"!==d)return!1;e["do"]="restore"}j.toggleEditor(b,1),a.post(ajaxurl,e,function(c){a("#image-editor-"+b).empty().append(c),j.toggleEditor(b,0),j._view&&j._view.refresh()})},save:function(c,d){var e,f=this.getTarget(c),g=this.filterHistory(c,0),h=this;return""===g?!1:(this.toggleEditor(c,1),e={action:"image-editor",_ajax_nonce:d,postid:c,history:g,target:f,context:a("#image-edit-context").length?a("#image-edit-context").val():null,"do":"save"},void a.post(ajaxurl,e,function(d){var e=JSON.parse(d);return e.error?(a("#imgedit-response-"+c).html('<div class="error"><p>'+e.error+"</p></div>"),void b.close(c)):(e.fw&&e.fh&&a("#media-dims-"+c).html(e.fw+" &times; "+e.fh),e.thumbnail&&a(".thumbnail","#thumbnail-head-"+c).attr("src",""+e.thumbnail),e.msg&&a("#imgedit-response-"+c).html('<div class="updated"><p>'+e.msg+"</p></div>"),void(h._view?h._view.save():b.close(c)))}))},open:function(b,c,d){this._view=d;var e,f,g=a("#image-editor-"+b),h=a("#media-head-"+b),i=a("#imgedit-open-btn-"+b),j=i.siblings(".spinner");return i.prop("disabled",!0),j.addClass("is-active"),f={action:"image-editor",_ajax_nonce:c,postid:b,"do":"open"},e=a.ajax({url:ajaxurl,type:"post",data:f}).done(function(a){g.html(a),h.fadeOut("fast",function(){g.fadeIn("fast"),i.removeAttr("disabled"),j.removeClass("is-active")})})},imgLoaded:function(b){var c=a("#image-preview-"+b),d=a("#imgedit-crop-"+b);this.initCrop(b,c,d),this.setCropSelection(b,0),this.toggleEditor(b,0)},initCrop:function(c,d,e){var f,g=this,h=a("#imgedit-sel-width-"+c),i=a("#imgedit-sel-height-"+c);g.iasapi=a(d).imgAreaSelect({parent:e,instance:!0,handles:!0,keys:!0,minWidth:3,minHeight:3,onInit:function(b){f=a(b),f.next().css("position","absolute").nextAll(".imgareaselect-outer").css("position","absolute"),e.children().mousedown(function(a){var b,d,e=!1;a.shiftKey&&(b=g.iasapi.getSelection(),d=g.getSelRatio(c),e=b&&b.width&&b.height?b.width+":"+b.height:d),g.iasapi.setOptions({aspectRatio:e})})},onSelectStart:function(){b.setDisabled(a("#imgedit-crop-sel-"+c),1)},onSelectEnd:function(a,d){b.setCropSelection(c,d)},onSelectChange:function(a,c){var d=b.hold.sizer;h.val(b.round(c.width/d)),i.val(b.round(c.height/d))}})},setCropSelection:function(b,c){var d;return c=c||0,!c||c.width<3&&c.height<3?(this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+b),0),this.setDisabled(a("#imgedit-crop-sel-"+b),0),a("#imgedit-sel-width-"+b).val(""),a("#imgedit-sel-height-"+b).val(""),a("#imgedit-selection-"+b).val(""),!1):(d={x:c.x1,y:c.y1,w:c.width,h:c.height},this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+b),1),void a("#imgedit-selection-"+b).val(JSON.stringify(d)))},close:function(b,c){return c=c||!1,c&&this.notsaved(b)?!1:(this.iasapi={},this.hold={},void(this._view?this._view.back():a("#image-editor-"+b).fadeOut("fast",function(){a("#media-head-"+b).fadeIn("fast"),a(this).empty()})))},notsaved:function(b){var c=a("#imgedit-history-"+b).val(),d=""!==c?JSON.parse(c):[],e=this.intval(a("#imgedit-undone-"+b).val());return e<d.length?confirm(a("#imgedit-leaving-"+b).html())?!1:!0:!1},addStep:function(b,c,d){for(var e=this,f=a("#imgedit-history-"+c),g=""!==f.val()?JSON.parse(f.val()):[],h=a("#imgedit-undone-"+c),i=e.intval(h.val());i>0;)g.pop(),i--;h.val(0),g.push(b),f.val(JSON.stringify(g)),e.refreshEditor(c,d,function(){e.setDisabled(a("#image-undo-"+c),!0),e.setDisabled(a("#image-redo-"+c),!1)})},rotate:function(b,c,d,e){return a(e).hasClass("disabled")?!1:void this.addStep({r:{r:b,fw:this.hold.h,fh:this.hold.w}},c,d)},flip:function(b,c,d,e){return a(e).hasClass("disabled")?!1:void this.addStep({f:{f:b,fw:this.hold.w,fh:this.hold.h}},c,d)},crop:function(b,c,d){var e=a("#imgedit-selection-"+b).val(),f=this.intval(a("#imgedit-sel-width-"+b).val()),g=this.intval(a("#imgedit-sel-height-"+b).val());return a(d).hasClass("disabled")||""===e?!1:(e=JSON.parse(e),void(e.w>0&&e.h>0&&f>0&&g>0&&(e.fw=f,e.fh=g,this.addStep({c:e},b,c))))},undo:function(b,c){var d=this,e=a("#image-undo-"+b),f=a("#imgedit-undone-"+b),g=d.intval(f.val())+1;e.hasClass("disabled")||(f.val(g),d.refreshEditor(b,c,function(){var c=a("#imgedit-history-"+b),f=""!==c.val()?JSON.parse(c.val()):[];d.setDisabled(a("#image-redo-"+b),!0),d.setDisabled(e,g<f.length)}))},redo:function(b,c){var d=this,e=a("#image-redo-"+b),f=a("#imgedit-undone-"+b),g=d.intval(f.val())-1;e.hasClass("disabled")||(f.val(g),d.refreshEditor(b,c,function(){d.setDisabled(a("#image-undo-"+b),!0),d.setDisabled(e,g>0)}))},setNumSelection:function(b){var c,d,e,f,g,h=a("#imgedit-sel-width-"+b),i=a("#imgedit-sel-height-"+b),j=this.intval(h.val()),k=this.intval(i.val()),l=a("#image-preview-"+b),m=l.height(),n=l.width(),o=this.hold.sizer,p=this.iasapi;return 1>j?(h.val(""),!1):1>k?(i.val(""),!1):void(j&&k&&(c=p.getSelection())&&(f=c.x1+Math.round(j*o),g=c.y1+Math.round(k*o),d=c.x1,e=c.y1,f>n&&(d=0,f=n,h.val(Math.round(f/o))),g>m&&(e=0,g=m,i.val(Math.round(g/o))),p.setSelection(d,e,f,g),p.update(),this.setCropSelection(b,p.getSelection())))},round:function(a){var b;return a=Math.round(a),this.hold.sizer>.6?a:(b=a.toString().slice(-1),"1"===b?a-1:"9"===b?a+1:a)},setRatioSelection:function(b,c,d){var e,f,g=this.intval(a("#imgedit-crop-width-"+b).val()),h=this.intval(a("#imgedit-crop-height-"+b).val()),i=a("#image-preview-"+b).height();return this.intval(a(d).val())?void(g&&h&&(this.iasapi.setOptions({aspectRatio:g+":"+h}),(e=this.iasapi.getSelection(!0))&&(f=Math.ceil(e.y1+(e.x2-e.x1)/(g/h)),f>i&&(f=i,c?a("#imgedit-crop-height-"+b).val(""):a("#imgedit-crop-width-"+b).val("")),this.iasapi.setSelection(e.x1,e.y1,e.x2,f),this.iasapi.update()))):void a(d).val("")}}}(jQuery);
\ No newline at end of file
+!function(a){var b=window.imageEdit={iasapi:{},hold:{},postid:"",_view:!1,intval:function(a){return 0|a},setDisabled:function(b,c){c?(b.removeClass("disabled"),a("input",b).removeAttr("disabled")):(b.addClass("disabled"),a("input",b).prop("disabled",!0))},init:function(b){var c=this,d=a("#image-editor-"+c.postid),e=c.intval(a("#imgedit-x-"+b).val()),f=c.intval(a("#imgedit-y-"+b).val());c.postid!==b&&d.length&&c.close(c.postid),c.hold.w=c.hold.ow=e,c.hold.h=c.hold.oh=f,c.hold.xy_ratio=e/f,c.hold.sizer=parseFloat(a("#imgedit-sizer-"+b).val()),c.postid=b,a("#imgedit-response-"+b).empty(),a('input[type="text"]',"#imgedit-panel-"+b).keypress(function(b){var c=b.keyCode;return c>36&&41>c&&a(this).blur(),13===c?(b.preventDefault(),b.stopPropagation(),!1):void 0})},toggleEditor:function(b,c){var d=a("#imgedit-wait-"+b);c?d.height(a("#imgedit-panel-"+b).height()).fadeIn("fast"):d.fadeOut("fast")},toggleHelp:function(b){return a(b).parents(".imgedit-group-top").toggleClass("imgedit-help-toggled").find(".imgedit-help").slideToggle("fast"),!1},getTarget:function(b){return a('input[name="imgedit-target-'+b+'"]:checked',"#imgedit-save-target-"+b).val()||"full"},scaleChanged:function(b,c){var d=a("#imgedit-scale-width-"+b),e=a("#imgedit-scale-height-"+b),f=a("#imgedit-scale-warn-"+b),g="",h="";c?(h=""!==d.val()?Math.round(d.val()/this.hold.xy_ratio):"",e.val(h)):(g=""!==e.val()?Math.round(e.val()*this.hold.xy_ratio):"",d.val(g)),h&&h>this.hold.oh||g&&g>this.hold.ow?f.css("visibility","visible"):f.css("visibility","hidden")},getSelRatio:function(b){var c=this.hold.w,d=this.hold.h,e=this.intval(a("#imgedit-crop-width-"+b).val()),f=this.intval(a("#imgedit-crop-height-"+b).val());return e&&f?e+":"+f:c&&d?c+":"+d:"1:1"},filterHistory:function(b,c){var d,e,f,g,h=a("#imgedit-history-"+b).val(),i=[];if(""!==h){if(h=JSON.parse(h),d=this.intval(a("#imgedit-undone-"+b).val()),d>0)for(;d>0;)h.pop(),d--;if(c){if(!h.length)return this.hold.w=this.hold.ow,this.hold.h=this.hold.oh,"";f=h[h.length-1],f=f.c||f.r||f.f||!1,f&&(this.hold.w=f.fw,this.hold.h=f.fh)}for(e in h)g=h[e],g.hasOwnProperty("c")?i[e]={c:{x:g.c.x,y:g.c.y,w:g.c.w,h:g.c.h}}:g.hasOwnProperty("r")?i[e]={r:g.r.r}:g.hasOwnProperty("f")&&(i[e]={f:g.f.f});return JSON.stringify(i)}return""},refreshEditor:function(c,d,e){var f,g,h=this;h.toggleEditor(c,1),f={action:"imgedit-preview",_ajax_nonce:d,postid:c,history:h.filterHistory(c,1),rand:h.intval(1e6*Math.random())},g=a('<img id="image-preview-'+c+'" alt="" />').on("load",function(){var d,f,h=a("#imgedit-crop-"+c),i=b;h.empty().append(g),d=Math.max(i.hold.w,i.hold.h),f=Math.max(a(g).width(),a(g).height()),i.hold.sizer=d>f?f/d:1,i.initCrop(c,g,h),i.setCropSelection(c,0),"undefined"!=typeof e&&null!==e&&e(),a("#imgedit-history-"+c).val()&&"0"===a("#imgedit-undone-"+c).val()?a("input.imgedit-submit-btn","#imgedit-panel-"+c).removeAttr("disabled"):a("input.imgedit-submit-btn","#imgedit-panel-"+c).prop("disabled",!0),i.toggleEditor(c,0)}).on("error",function(){a("#imgedit-crop-"+c).empty().append('<div class="error"><p>'+imageEditL10n.error+"</p></div>"),h.toggleEditor(c,0)}).attr("src",ajaxurl+"?"+a.param(f))},action:function(b,c,d){var e,f,g,h,i,j=this;if(j.notsaved(b))return!1;if(e={action:"image-editor",_ajax_nonce:c,postid:b},"scale"===d){if(f=a("#imgedit-scale-width-"+b),g=a("#imgedit-scale-height-"+b),h=j.intval(f.val()),i=j.intval(g.val()),1>h)return f.focus(),!1;if(1>i)return g.focus(),!1;if(h===j.hold.ow||i===j.hold.oh)return!1;e["do"]="scale",e.fwidth=h,e.fheight=i}else{if("restore"!==d)return!1;e["do"]="restore"}j.toggleEditor(b,1),a.post(ajaxurl,e,function(c){a("#image-editor-"+b).empty().append(c),j.toggleEditor(b,0),j._view&&j._view.refresh()})},save:function(c,d){var e,f=this.getTarget(c),g=this.filterHistory(c,0),h=this;return""===g?!1:(this.toggleEditor(c,1),e={action:"image-editor",_ajax_nonce:d,postid:c,history:g,target:f,context:a("#image-edit-context").length?a("#image-edit-context").val():null,"do":"save"},void a.post(ajaxurl,e,function(d){var e=JSON.parse(d);return e.error?(a("#imgedit-response-"+c).html('<div class="error"><p>'+e.error+"</p></div>"),void b.close(c)):(e.fw&&e.fh&&a("#media-dims-"+c).html(e.fw+" &times; "+e.fh),e.thumbnail&&a(".thumbnail","#thumbnail-head-"+c).attr("src",""+e.thumbnail),e.msg&&a("#imgedit-response-"+c).html('<div class="updated"><p>'+e.msg+"</p></div>"),void(h._view?h._view.save():b.close(c)))}))},open:function(b,c,d){this._view=d;var e,f,g=a("#image-editor-"+b),h=a("#media-head-"+b),i=a("#imgedit-open-btn-"+b),j=i.siblings(".spinner");return i.prop("disabled",!0),j.addClass("is-active"),f={action:"image-editor",_ajax_nonce:c,postid:b,"do":"open"},e=a.ajax({url:ajaxurl,type:"post",data:f}).done(function(a){g.html(a),h.fadeOut("fast",function(){g.fadeIn("fast"),i.removeAttr("disabled"),j.removeClass("is-active")})})},imgLoaded:function(b){var c=a("#image-preview-"+b),d=a("#imgedit-crop-"+b);this.initCrop(b,c,d),this.setCropSelection(b,0),this.toggleEditor(b,0)},initCrop:function(c,d,e){var f,g=this,h=a("#imgedit-sel-width-"+c),i=a("#imgedit-sel-height-"+c);g.iasapi=a(d).imgAreaSelect({parent:e,instance:!0,handles:!0,keys:!0,minWidth:3,minHeight:3,onInit:function(b){f=a(b),f.next().css("position","absolute").nextAll(".imgareaselect-outer").css("position","absolute"),e.children().mousedown(function(a){var b,d,e=!1;a.shiftKey&&(b=g.iasapi.getSelection(),d=g.getSelRatio(c),e=b&&b.width&&b.height?b.width+":"+b.height:d),g.iasapi.setOptions({aspectRatio:e})})},onSelectStart:function(){b.setDisabled(a("#imgedit-crop-sel-"+c),1)},onSelectEnd:function(a,d){b.setCropSelection(c,d)},onSelectChange:function(a,c){var d=b.hold.sizer;h.val(b.round(c.width/d)),i.val(b.round(c.height/d))}})},setCropSelection:function(b,c){var d;return c=c||0,!c||c.width<3&&c.height<3?(this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+b),0),this.setDisabled(a("#imgedit-crop-sel-"+b),0),a("#imgedit-sel-width-"+b).val(""),a("#imgedit-sel-height-"+b).val(""),a("#imgedit-selection-"+b).val(""),!1):(d={x:c.x1,y:c.y1,w:c.width,h:c.height},this.setDisabled(a(".imgedit-crop","#imgedit-panel-"+b),1),void a("#imgedit-selection-"+b).val(JSON.stringify(d)))},close:function(b,c){return c=c||!1,c&&this.notsaved(b)?!1:(this.iasapi={},this.hold={},void(this._view?this._view.back():a("#image-editor-"+b).fadeOut("fast",function(){a("#media-head-"+b).fadeIn("fast"),a(this).empty()})))},notsaved:function(b){var c=a("#imgedit-history-"+b).val(),d=""!==c?JSON.parse(c):[],e=this.intval(a("#imgedit-undone-"+b).val());return e<d.length?confirm(a("#imgedit-leaving-"+b).html())?!1:!0:!1},addStep:function(b,c,d){for(var e=this,f=a("#imgedit-history-"+c),g=""!==f.val()?JSON.parse(f.val()):[],h=a("#imgedit-undone-"+c),i=e.intval(h.val());i>0;)g.pop(),i--;h.val(0),g.push(b),f.val(JSON.stringify(g)),e.refreshEditor(c,d,function(){e.setDisabled(a("#image-undo-"+c),!0),e.setDisabled(a("#image-redo-"+c),!1)})},rotate:function(b,c,d,e){return a(e).hasClass("disabled")?!1:void this.addStep({r:{r:b,fw:this.hold.h,fh:this.hold.w}},c,d)},flip:function(b,c,d,e){return a(e).hasClass("disabled")?!1:void this.addStep({f:{f:b,fw:this.hold.w,fh:this.hold.h}},c,d)},crop:function(b,c,d){var e=a("#imgedit-selection-"+b).val(),f=this.intval(a("#imgedit-sel-width-"+b).val()),g=this.intval(a("#imgedit-sel-height-"+b).val());return a(d).hasClass("disabled")||""===e?!1:(e=JSON.parse(e),void(e.w>0&&e.h>0&&f>0&&g>0&&(e.fw=f,e.fh=g,this.addStep({c:e},b,c))))},undo:function(b,c){var d=this,e=a("#image-undo-"+b),f=a("#imgedit-undone-"+b),g=d.intval(f.val())+1;e.hasClass("disabled")||(f.val(g),d.refreshEditor(b,c,function(){var c=a("#imgedit-history-"+b),f=""!==c.val()?JSON.parse(c.val()):[];d.setDisabled(a("#image-redo-"+b),!0),d.setDisabled(e,g<f.length)}))},redo:function(b,c){var d=this,e=a("#image-redo-"+b),f=a("#imgedit-undone-"+b),g=d.intval(f.val())-1;e.hasClass("disabled")||(f.val(g),d.refreshEditor(b,c,function(){d.setDisabled(a("#image-undo-"+b),!0),d.setDisabled(e,g>0)}))},setNumSelection:function(b){var c,d,e,f,g,h=a("#imgedit-sel-width-"+b),i=a("#imgedit-sel-height-"+b),j=this.intval(h.val()),k=this.intval(i.val()),l=a("#image-preview-"+b),m=l.height(),n=l.width(),o=this.hold.sizer,p=this.iasapi;return 1>j?(h.val(""),!1):1>k?(i.val(""),!1):void(j&&k&&(c=p.getSelection())&&(f=c.x1+Math.round(j*o),g=c.y1+Math.round(k*o),d=c.x1,e=c.y1,f>n&&(d=0,f=n,h.val(Math.round(f/o))),g>m&&(e=0,g=m,i.val(Math.round(g/o))),p.setSelection(d,e,f,g),p.update(),this.setCropSelection(b,p.getSelection())))},round:function(a){var b;return a=Math.round(a),this.hold.sizer>.6?a:(b=a.toString().slice(-1),"1"===b?a-1:"9"===b?a+1:a)},setRatioSelection:function(b,c,d){var e,f,g=this.intval(a("#imgedit-crop-width-"+b).val()),h=this.intval(a("#imgedit-crop-height-"+b).val()),i=a("#image-preview-"+b).height();return this.intval(a(d).val())?void(g&&h&&(this.iasapi.setOptions({aspectRatio:g+":"+h}),(e=this.iasapi.getSelection(!0))&&(f=Math.ceil(e.y1+(e.x2-e.x1)/(g/h)),f>i&&(f=i,c?a("#imgedit-crop-height-"+b).val(""):a("#imgedit-crop-width-"+b).val("")),this.iasapi.setSelection(e.x1,e.y1,e.x2,f),this.iasapi.update()))):void a(d).val("")}}}(jQuery);
\ No newline at end of file
index 02f5c76ea2f8f4d1e1c8179f861c181e97d8ecbc..2011e7ba360abc69c73219be66ad20d280ee712e 100644 (file)
@@ -48,9 +48,9 @@ inlineEditPost = {
                });
 
                // add events
-               $('#the-list').on('click', 'a.editinline', function(){
+               $('#the-list').on( 'click', 'a.editinline', function( e ) {
+                       e.preventDefault();
                        inlineEditPost.edit(this);
-                       return false;
                });
 
                $('#bulk-edit').find('fieldset:first').after(
@@ -268,6 +268,7 @@ inlineEditPost = {
                $.post( ajaxurl, params,
                        function(r) {
                                $( 'table.widefat .spinner' ).removeClass( 'is-active' );
+                               $( '.ac_results' ).hide();
 
                                if (r) {
                                        if ( -1 !== r.indexOf( '<tr' ) ) {
@@ -287,13 +288,15 @@ inlineEditPost = {
        },
 
        revert : function(){
-               var id = $('table.widefat tr.inline-editor').attr('id');
+               var $tableWideFat = $( '.widefat' ),
+                       id = $( '.inline-editor', $tableWideFat ).attr( 'id' );
 
                if ( id ) {
-                       $( 'table.widefat .spinner' ).removeClass( 'is-active' );
+                       $( '.spinner', $tableWideFat ).removeClass( 'is-active' );
+                       $( '.ac_results' ).hide();
 
                        if ( 'bulk-edit' === id ) {
-                               $('table.widefat #bulk-edit').removeClass('inline-editor').hide().siblings('tr.hidden').remove();
+                               $( '#bulk-edit', $tableWideFat ).removeClass( 'inline-editor' ).hide().siblings( '.hidden' ).remove();
                                $('#bulk-titles').empty();
                                $('#inlineedit').append( $('#bulk-edit') );
                        } else {
@@ -329,7 +332,7 @@ $( document ).on( 'heartbeat-tick.wp-check-locked-posts', function( e, data ) {
                                row.find('.check-column checkbox').prop('checked', false);
 
                                if ( lock_data.avatar_src ) {
-                                       avatar = $('<img class="avatar avatar-18 photo" width="18" height="18" />').attr( 'src', lock_data.avatar_src.replace(/&amp;/g, '&') );
+                                       avatar = $( '<img class="avatar avatar-18 photo" width="18" height="18" alt="" />' ).attr( 'src', lock_data.avatar_src.replace( /&amp;/g, '&' ) );
                                        row.find('.column-title .locked-avatar').empty().append( avatar );
                                }
                                row.addClass('wp-locked');
index 46ccb74ee0805005eb39daf4bff88cc06838b8b2..cea555de80ef542be50c991e305ca7b57ddf048c 100644 (file)
@@ -1 +1 @@
-var inlineEditPost;!function(a){inlineEditPost={init:function(){var b=this,c=a("#inline-edit"),d=a("#bulk-edit");b.type=a("table.widefat").hasClass("pages")?"page":"post",b.what="#post-",c.keyup(function(a){return 27===a.which?inlineEditPost.revert():void 0}),d.keyup(function(a){return 27===a.which?inlineEditPost.revert():void 0}),a(".cancel",c).click(function(){return inlineEditPost.revert()}),a(".save",c).click(function(){return inlineEditPost.save(this)}),a("td",c).keydown(function(b){return 13!==b.which||a(b.target).hasClass("cancel")?void 0:inlineEditPost.save(this)}),a(".cancel",d).click(function(){return inlineEditPost.revert()}),a('#inline-edit .inline-edit-private input[value="private"]').click(function(){var b=a("input.inline-edit-password-input");a(this).prop("checked")?b.val("").prop("disabled",!0):b.prop("disabled",!1)}),a("#the-list").on("click","a.editinline",function(){return inlineEditPost.edit(this),!1}),a("#bulk-edit").find("fieldset:first").after(a("#inline-edit fieldset.inline-edit-categories").clone()).siblings("fieldset:last").prepend(a("#inline-edit label.inline-edit-tags").clone()),a('select[name="_status"] option[value="future"]',d).remove(),a("#doaction, #doaction2").click(function(c){var d=a(this).attr("id").substr(2);"edit"===a('select[name="'+d+'"]').val()?(c.preventDefault(),b.setBulk()):a("form#posts-filter tr.inline-editor").length>0&&b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},setBulk:function(){var b,c="",d=this.type,e=!0;return this.revert(),a("#bulk-edit td").attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a("table.widefat tbody").prepend(a("#bulk-edit")).prepend('<tr class="hidden"></tr>'),a("#bulk-edit").addClass("inline-editor").show(),a('tbody th.check-column input[type="checkbox"]').each(function(){if(a(this).prop("checked")){e=!1;var b,d=a(this).val();b=a("#inline_"+d+" .post_title").html()||inlineEditL10n.notitle,c+='<div id="ttle'+d+'"><a id="_'+d+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+b+"</div>"}}),e?this.revert():(a("#bulk-titles").html(c),a("#bulk-titles a").click(function(){var b=a(this).attr("id").substr(1);a('table.widefat input[value="'+b+'"]').prop("checked",!1),a("#ttle"+b).remove()}),"post"===d&&(b="post_tag",a('tr.inline-editor textarea[name="tax_input['+b+']"]').suggest(ajaxurl+"?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:!0,multipleSep:inlineEditL10n.comma})),void a("html, body").animate({scrollTop:0},"fast"))},edit:function(b){var c,d,e,f,g,h,i,j,k,l,m,n,o=this,p=!0;for(o.revert(),"object"==typeof b&&(b=o.getId(b)),c=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password","post_format","menu_order"],"page"===o.type&&c.push("post_parent","page_template"),d=a("#inline-edit").clone(!0),a("td",d).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(o.what+b).removeClass("is-expanded").hide().after(d).after('<tr class="hidden"></tr>'),e=a("#inline_"+b),a(':input[name="post_author"] option[value="'+a(".post_author",e).text()+'"]',d).val()||a(':input[name="post_author"]',d).prepend('<option value="'+a(".post_author",e).text()+'">'+a("#"+o.type+"-"+b+" .author").text()+"</option>"),1===a(':input[name="post_author"] option',d).length&&a("label.inline-edit-author",d).hide(),k=a(".post_format",e).text(),a("option.unsupported",d).each(function(){var b=a(this);b.val()!==k&&b.remove()}),l=0;l<c.length;l++)m=a("."+c[l],e),m.find("img").replaceWith(function(){return this.alt}),m=m.text(),a(':input[name="'+c[l]+'"]',d).val(m);if("open"===a(".comment_status",e).text()&&a('input[name="comment_status"]',d).prop("checked",!0),"open"===a(".ping_status",e).text()&&a('input[name="ping_status"]',d).prop("checked",!0),"sticky"===a(".sticky",e).text()&&a('input[name="sticky"]',d).prop("checked",!0),a(".post_category",e).each(function(){var c,e=a(this).text();e&&(c=a(this).attr("id").replace("_"+b,""),a("ul."+c+"-checklist :checkbox",d).val(e.split(",")))}),a(".tags_input",e).each(function(){var c=a(this),e=a(this).attr("id").replace("_"+b,""),f=a("textarea.tax_input_"+e,d),g=inlineEditL10n.comma;c.find("img").replaceWith(function(){return this.alt}),c=c.text(),c&&(","!==g&&(c=c.replace(/,/g,g)),f.val(c)),f.suggest(ajaxurl+"?action=ajax-tag-search&tax="+e,{delay:500,minchars:2,multiple:!0,multipleSep:inlineEditL10n.comma})}),f=a("._status",e).text(),"future"!==f&&a('select[name="_status"] option[value="future"]',d).remove(),n=a(".inline-edit-password-input").prop("disabled",!1),"private"===f&&(a('input[name="keep_private"]',d).prop("checked",!0),n.val("").prop("disabled",!0)),g=a('select[name="post_parent"] option[value="'+b+'"]',d),g.length>0){for(h=g[0].className.split("-")[1],i=g;p&&(i=i.next("option"),0!==i.length);)j=i[0].className.split("-")[1],h>=j?p=!1:(i.remove(),i=g);g.remove()}return a(d).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",d).focus(),!1},save:function(b){var c,d,e=a(".post_status_page").val()||"";return"object"==typeof b&&(b=this.getId(b)),a("table.widefat .spinner").addClass("is-active"),c={action:"inline-save",post_type:typenow,post_ID:b,edit_date:"true",post_status:e},d=a("#edit-"+b).find(":input").serialize(),c=d+"&"+a.param(c),a.post(ajaxurl,c,function(c){a("table.widefat .spinner").removeClass("is-active"),c?-1!==c.indexOf("<tr")?(a(inlineEditPost.what+b).siblings("tr.hidden").addBack().remove(),a("#edit-"+b).before(c).remove(),a(inlineEditPost.what+b).hide().fadeIn()):(c=c.replace(/<.[^<>]*?>/g,""),a("#edit-"+b+" .inline-edit-save .error").html(c).show()):a("#edit-"+b+" .inline-edit-save .error").html(inlineEditL10n.error).show()},"html"),!1},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");return b&&(a("table.widefat .spinner").removeClass("is-active"),"bulk-edit"===b?(a("table.widefat #bulk-edit").removeClass("inline-editor").hide().siblings("tr.hidden").remove(),a("#bulk-titles").empty(),a("#inlineedit").append(a("#bulk-edit"))):(a("#"+b).siblings("tr.hidden").addBack().remove(),b=b.substr(b.lastIndexOf("-")+1),a(this.what+b).show())),!1},getId:function(b){var c=a(b).closest("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditPost.init()}),a(document).on("heartbeat-tick.wp-check-locked-posts",function(b,c){var d=c["wp-check-locked-posts"]||{};a("#the-list tr").each(function(b,c){var e,f,g=c.id,h=a(c);d.hasOwnProperty(g)?h.hasClass("wp-locked")||(e=d[g],h.find(".column-title .locked-text").text(e.text),h.find(".check-column checkbox").prop("checked",!1),e.avatar_src&&(f=a('<img class="avatar avatar-18 photo" width="18" height="18" />').attr("src",e.avatar_src.replace(/&amp;/g,"&")),h.find(".column-title .locked-avatar").empty().append(f)),h.addClass("wp-locked")):h.hasClass("wp-locked")&&h.removeClass("wp-locked").delay(1e3).find(".locked-info span").empty()})}).on("heartbeat-send.wp-check-locked-posts",function(b,c){var d=[];a("#the-list tr").each(function(a,b){b.id&&d.push(b.id)}),d.length&&(c["wp-check-locked-posts"]=d)}).ready(function(){"undefined"!=typeof wp&&wp.heartbeat&&wp.heartbeat.interval(15)})}(jQuery);
\ No newline at end of file
+var inlineEditPost;!function(a){inlineEditPost={init:function(){var b=this,c=a("#inline-edit"),d=a("#bulk-edit");b.type=a("table.widefat").hasClass("pages")?"page":"post",b.what="#post-",c.keyup(function(a){return 27===a.which?inlineEditPost.revert():void 0}),d.keyup(function(a){return 27===a.which?inlineEditPost.revert():void 0}),a(".cancel",c).click(function(){return inlineEditPost.revert()}),a(".save",c).click(function(){return inlineEditPost.save(this)}),a("td",c).keydown(function(b){return 13!==b.which||a(b.target).hasClass("cancel")?void 0:inlineEditPost.save(this)}),a(".cancel",d).click(function(){return inlineEditPost.revert()}),a('#inline-edit .inline-edit-private input[value="private"]').click(function(){var b=a("input.inline-edit-password-input");a(this).prop("checked")?b.val("").prop("disabled",!0):b.prop("disabled",!1)}),a("#the-list").on("click","a.editinline",function(a){a.preventDefault(),inlineEditPost.edit(this)}),a("#bulk-edit").find("fieldset:first").after(a("#inline-edit fieldset.inline-edit-categories").clone()).siblings("fieldset:last").prepend(a("#inline-edit label.inline-edit-tags").clone()),a('select[name="_status"] option[value="future"]',d).remove(),a("#doaction, #doaction2").click(function(c){var d=a(this).attr("id").substr(2);"edit"===a('select[name="'+d+'"]').val()?(c.preventDefault(),b.setBulk()):a("form#posts-filter tr.inline-editor").length>0&&b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},setBulk:function(){var b,c="",d=this.type,e=!0;return this.revert(),a("#bulk-edit td").attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a("table.widefat tbody").prepend(a("#bulk-edit")).prepend('<tr class="hidden"></tr>'),a("#bulk-edit").addClass("inline-editor").show(),a('tbody th.check-column input[type="checkbox"]').each(function(){if(a(this).prop("checked")){e=!1;var b,d=a(this).val();b=a("#inline_"+d+" .post_title").html()||inlineEditL10n.notitle,c+='<div id="ttle'+d+'"><a id="_'+d+'" class="ntdelbutton" title="'+inlineEditL10n.ntdeltitle+'">X</a>'+b+"</div>"}}),e?this.revert():(a("#bulk-titles").html(c),a("#bulk-titles a").click(function(){var b=a(this).attr("id").substr(1);a('table.widefat input[value="'+b+'"]').prop("checked",!1),a("#ttle"+b).remove()}),"post"===d&&(b="post_tag",a('tr.inline-editor textarea[name="tax_input['+b+']"]').suggest(ajaxurl+"?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:!0,multipleSep:inlineEditL10n.comma})),void a("html, body").animate({scrollTop:0},"fast"))},edit:function(b){var c,d,e,f,g,h,i,j,k,l,m,n,o=this,p=!0;for(o.revert(),"object"==typeof b&&(b=o.getId(b)),c=["post_title","post_name","post_author","_status","jj","mm","aa","hh","mn","ss","post_password","post_format","menu_order"],"page"===o.type&&c.push("post_parent","page_template"),d=a("#inline-edit").clone(!0),a("td",d).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(o.what+b).removeClass("is-expanded").hide().after(d).after('<tr class="hidden"></tr>'),e=a("#inline_"+b),a(':input[name="post_author"] option[value="'+a(".post_author",e).text()+'"]',d).val()||a(':input[name="post_author"]',d).prepend('<option value="'+a(".post_author",e).text()+'">'+a("#"+o.type+"-"+b+" .author").text()+"</option>"),1===a(':input[name="post_author"] option',d).length&&a("label.inline-edit-author",d).hide(),k=a(".post_format",e).text(),a("option.unsupported",d).each(function(){var b=a(this);b.val()!==k&&b.remove()}),l=0;l<c.length;l++)m=a("."+c[l],e),m.find("img").replaceWith(function(){return this.alt}),m=m.text(),a(':input[name="'+c[l]+'"]',d).val(m);if("open"===a(".comment_status",e).text()&&a('input[name="comment_status"]',d).prop("checked",!0),"open"===a(".ping_status",e).text()&&a('input[name="ping_status"]',d).prop("checked",!0),"sticky"===a(".sticky",e).text()&&a('input[name="sticky"]',d).prop("checked",!0),a(".post_category",e).each(function(){var c,e=a(this).text();e&&(c=a(this).attr("id").replace("_"+b,""),a("ul."+c+"-checklist :checkbox",d).val(e.split(",")))}),a(".tags_input",e).each(function(){var c=a(this),e=a(this).attr("id").replace("_"+b,""),f=a("textarea.tax_input_"+e,d),g=inlineEditL10n.comma;c.find("img").replaceWith(function(){return this.alt}),c=c.text(),c&&(","!==g&&(c=c.replace(/,/g,g)),f.val(c)),f.suggest(ajaxurl+"?action=ajax-tag-search&tax="+e,{delay:500,minchars:2,multiple:!0,multipleSep:inlineEditL10n.comma})}),f=a("._status",e).text(),"future"!==f&&a('select[name="_status"] option[value="future"]',d).remove(),n=a(".inline-edit-password-input").prop("disabled",!1),"private"===f&&(a('input[name="keep_private"]',d).prop("checked",!0),n.val("").prop("disabled",!0)),g=a('select[name="post_parent"] option[value="'+b+'"]',d),g.length>0){for(h=g[0].className.split("-")[1],i=g;p&&(i=i.next("option"),0!==i.length);)j=i[0].className.split("-")[1],h>=j?p=!1:(i.remove(),i=g);g.remove()}return a(d).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",d).focus(),!1},save:function(b){var c,d,e=a(".post_status_page").val()||"";return"object"==typeof b&&(b=this.getId(b)),a("table.widefat .spinner").addClass("is-active"),c={action:"inline-save",post_type:typenow,post_ID:b,edit_date:"true",post_status:e},d=a("#edit-"+b).find(":input").serialize(),c=d+"&"+a.param(c),a.post(ajaxurl,c,function(c){a("table.widefat .spinner").removeClass("is-active"),a(".ac_results").hide(),c?-1!==c.indexOf("<tr")?(a(inlineEditPost.what+b).siblings("tr.hidden").addBack().remove(),a("#edit-"+b).before(c).remove(),a(inlineEditPost.what+b).hide().fadeIn()):(c=c.replace(/<.[^<>]*?>/g,""),a("#edit-"+b+" .inline-edit-save .error").html(c).show()):a("#edit-"+b+" .inline-edit-save .error").html(inlineEditL10n.error).show()},"html"),!1},revert:function(){var b=a(".widefat"),c=a(".inline-editor",b).attr("id");return c&&(a(".spinner",b).removeClass("is-active"),a(".ac_results").hide(),"bulk-edit"===c?(a("#bulk-edit",b).removeClass("inline-editor").hide().siblings(".hidden").remove(),a("#bulk-titles").empty(),a("#inlineedit").append(a("#bulk-edit"))):(a("#"+c).siblings("tr.hidden").addBack().remove(),c=c.substr(c.lastIndexOf("-")+1),a(this.what+c).show())),!1},getId:function(b){var c=a(b).closest("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditPost.init()}),a(document).on("heartbeat-tick.wp-check-locked-posts",function(b,c){var d=c["wp-check-locked-posts"]||{};a("#the-list tr").each(function(b,c){var e,f,g=c.id,h=a(c);d.hasOwnProperty(g)?h.hasClass("wp-locked")||(e=d[g],h.find(".column-title .locked-text").text(e.text),h.find(".check-column checkbox").prop("checked",!1),e.avatar_src&&(f=a('<img class="avatar avatar-18 photo" width="18" height="18" alt="" />').attr("src",e.avatar_src.replace(/&amp;/g,"&")),h.find(".column-title .locked-avatar").empty().append(f)),h.addClass("wp-locked")):h.hasClass("wp-locked")&&h.removeClass("wp-locked").delay(1e3).find(".locked-info span").empty()})}).on("heartbeat-send.wp-check-locked-posts",function(b,c){var d=[];a("#the-list tr").each(function(a,b){b.id&&d.push(b.id)}),d.length&&(c["wp-check-locked-posts"]=d)}).ready(function(){"undefined"!=typeof wp&&wp.heartbeat&&wp.heartbeat.interval(15)})}(jQuery);
\ No newline at end of file
index 99bfca463249d987c4abf7c03e6c71a821314ac9..a05dc0954fa7b9863e4b1c9217e4460b1366fd43 100644 (file)
@@ -1,7 +1,8 @@
 /* global inlineEditL10n, ajaxurl */
+window.wp = window.wp || {};
 
 var inlineEditTax;
-(function($) {
+( function( $, wp ) {
 inlineEditTax = {
 
        init : function() {
@@ -22,10 +23,10 @@ inlineEditTax = {
                        }
                });
 
-               $( 'a.cancel', row ).click( function() {
+               $( '.cancel', row ).click( function() {
                        return inlineEditTax.revert();
                });
-               $( 'a.save', row ).click( function() {
+               $( '.save', row ).click( function() {
                        return inlineEditTax.save(this);
                });
                $( 'input, select', row ).keydown( function( e ) {
@@ -96,7 +97,9 @@ inlineEditTax = {
                // make ajax request
                $.post( ajaxurl, params,
                        function(r) {
-                               var row, new_id, option_value;
+                               var row, new_id, option_value,
+                                       $errorSpan = $( '#edit-' + id + ' .inline-edit-save .error' );
+
                                $( 'table.widefat .spinner' ).removeClass( 'is-active' );
 
                                if (r) {
@@ -117,16 +120,23 @@ inlineEditTax = {
                                                // Update the value in the Parent dropdown.
                                                $( '#parent' ).find( 'option[value=' + option_value + ']' ).text( row.find( '.row-title' ).text() );
 
-                                               row.hide().fadeIn();
+                                               row.hide().fadeIn( 400, function() {
+                                                       // Move focus back to the taxonomy title.
+                                                       row.find( '.row-title' ).focus();
+                                                       wp.a11y.speak( inlineEditL10n.saved );
+                                               });
+
                                        } else {
-                                               $('#edit-'+id+' .inline-edit-save .error').html(r).show();
+                                               $errorSpan.html( r ).show();
+                                               // Some error strings may contain HTML entities (e.g. `&#8220`), let's use the HTML element's text.
+                                               wp.a11y.speak( $errorSpan.text() );
                                        }
                                } else {
-                                       $('#edit-'+id+' .inline-edit-save .error').html(inlineEditL10n.error).show();
+                                       $errorSpan.html( inlineEditL10n.error ).show();
+                                       wp.a11y.speak( inlineEditL10n.error );
                                }
                        }
                );
-               return false;
        },
 
        revert : function() {
@@ -136,10 +146,9 @@ inlineEditTax = {
                        $( 'table.widefat .spinner' ).removeClass( 'is-active' );
                        $('#'+id).siblings('tr.hidden').addBack().remove();
                        id = id.substr( id.lastIndexOf('-') + 1 );
-                       $(this.what+id).show();
+                       // Show the taxonomy listing and move focus back to the taxonomy title.
+                       $( this.what + id ).show().find( '.row-title' ).focus();
                }
-
-               return false;
        },
 
        getId : function(o) {
@@ -149,4 +158,4 @@ inlineEditTax = {
 };
 
 $(document).ready(function(){inlineEditTax.init();});
-})(jQuery);
+})( jQuery, window.wp );
index 93140e74fc82942657a1f4f65fec1e4f83569542..14b3b8a7acfb76febd44857c36cd8e3a1ea732b6 100644 (file)
@@ -1 +1 @@
-var inlineEditTax;!function(a){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("data-wp-lists").substr(5),b.what="#"+b.type+"-",a("#the-list").on("click","a.editinline",function(){return inlineEditTax.edit(this),!1}),c.keyup(function(a){return 27===a.which?inlineEditTax.revert():void 0}),a("a.cancel",c).click(function(){return inlineEditTax.revert()}),a("a.save",c).click(function(){return inlineEditTax.save(this)}),a("input, select",c).keydown(function(a){return 13===a.which?inlineEditTax.save(this):void 0}),a('#posts-filter input[type="submit"]').mousedown(function(){b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},edit:function(b){var c,d,e,f=this;return f.revert(),"object"==typeof b&&(b=f.getId(b)),c=a("#inline-edit").clone(!0),d=a("#inline_"+b),a("td",c).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(f.what+b).hide().after(c).after('<tr class="hidden"></tr>'),e=a(".name",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="name"]',c).val(e),e=a(".slug",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="slug"]',c).val(e),a(c).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",c).eq(0).focus(),!1},save:function(b){var c,d,e=a('input[name="taxonomy"]').val()||"";return"object"==typeof b&&(b=this.getId(b)),a("table.widefat .spinner").addClass("is-active"),c={action:"inline-save-tax",tax_type:this.type,tax_ID:b,taxonomy:e},d=a("#edit-"+b).find(":input").serialize(),c=d+"&"+a.param(c),a.post(ajaxurl,c,function(c){var d,e,f;a("table.widefat .spinner").removeClass("is-active"),c?-1!==c.indexOf("<tr")?(a(inlineEditTax.what+b).siblings("tr.hidden").addBack().remove(),e=a(c).attr("id"),a("#edit-"+b).before(c).remove(),e?(f=e.replace(inlineEditTax.type+"-",""),d=a("#"+e)):(f=b,d=a(inlineEditTax.what+b)),a("#parent").find("option[value="+f+"]").text(d.find(".row-title").text()),d.hide().fadeIn()):a("#edit-"+b+" .inline-edit-save .error").html(c).show():a("#edit-"+b+" .inline-edit-save .error").html(inlineEditL10n.error).show()}),!1},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");return b&&(a("table.widefat .spinner").removeClass("is-active"),a("#"+b).siblings("tr.hidden").addBack().remove(),b=b.substr(b.lastIndexOf("-")+1),a(this.what+b).show()),!1},getId:function(b){var c="TR"===b.tagName?b.id:a(b).parents("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditTax.init()})}(jQuery);
\ No newline at end of file
+window.wp=window.wp||{};var inlineEditTax;!function(a,b){inlineEditTax={init:function(){var b=this,c=a("#inline-edit");b.type=a("#the-list").attr("data-wp-lists").substr(5),b.what="#"+b.type+"-",a("#the-list").on("click","a.editinline",function(){return inlineEditTax.edit(this),!1}),c.keyup(function(a){return 27===a.which?inlineEditTax.revert():void 0}),a(".cancel",c).click(function(){return inlineEditTax.revert()}),a(".save",c).click(function(){return inlineEditTax.save(this)}),a("input, select",c).keydown(function(a){return 13===a.which?inlineEditTax.save(this):void 0}),a('#posts-filter input[type="submit"]').mousedown(function(){b.revert()})},toggle:function(b){var c=this;"none"===a(c.what+c.getId(b)).css("display")?c.revert():c.edit(b)},edit:function(b){var c,d,e,f=this;return f.revert(),"object"==typeof b&&(b=f.getId(b)),c=a("#inline-edit").clone(!0),d=a("#inline_"+b),a("td",c).attr("colspan",a("th:visible, td:visible",".widefat:first thead").length),a(f.what+b).hide().after(c).after('<tr class="hidden"></tr>'),e=a(".name",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="name"]',c).val(e),e=a(".slug",d),e.find("img").replaceWith(function(){return this.alt}),e=e.text(),a(':input[name="slug"]',c).val(e),a(c).attr("id","edit-"+b).addClass("inline-editor").show(),a(".ptitle",c).eq(0).focus(),!1},save:function(c){var d,e,f=a('input[name="taxonomy"]').val()||"";"object"==typeof c&&(c=this.getId(c)),a("table.widefat .spinner").addClass("is-active"),d={action:"inline-save-tax",tax_type:this.type,tax_ID:c,taxonomy:f},e=a("#edit-"+c).find(":input").serialize(),d=e+"&"+a.param(d),a.post(ajaxurl,d,function(d){var e,f,g,h=a("#edit-"+c+" .inline-edit-save .error");a("table.widefat .spinner").removeClass("is-active"),d?-1!==d.indexOf("<tr")?(a(inlineEditTax.what+c).siblings("tr.hidden").addBack().remove(),f=a(d).attr("id"),a("#edit-"+c).before(d).remove(),f?(g=f.replace(inlineEditTax.type+"-",""),e=a("#"+f)):(g=c,e=a(inlineEditTax.what+c)),a("#parent").find("option[value="+g+"]").text(e.find(".row-title").text()),e.hide().fadeIn(400,function(){e.find(".row-title").focus(),b.a11y.speak(inlineEditL10n.saved)})):(h.html(d).show(),b.a11y.speak(h.text())):(h.html(inlineEditL10n.error).show(),b.a11y.speak(inlineEditL10n.error))})},revert:function(){var b=a("table.widefat tr.inline-editor").attr("id");b&&(a("table.widefat .spinner").removeClass("is-active"),a("#"+b).siblings("tr.hidden").addBack().remove(),b=b.substr(b.lastIndexOf("-")+1),a(this.what+b).show().find(".row-title").focus())},getId:function(b){var c="TR"===b.tagName?b.id:a(b).parents("tr").attr("id"),d=c.split("-");return d[d.length-1]}},a(document).ready(function(){inlineEditTax.init()})}(jQuery,window.wp);
\ No newline at end of file
index 87c27d1b61041e8b71aa30f9861999ef1680ad4e..e9186cde1ca7905517fb3818cecb5bbd2a5408e4 100644 (file)
@@ -38,15 +38,16 @@ jQuery( document ).ready( function( $ ) {
                tb_position();
        });
 
-       $( '.plugin-card, .plugins .plugin-version-author-uri' ).on( 'click', 'a.thickbox', function() {
+       $( '.plugin-card, .plugins .plugin-version-author-uri' ).on( 'click', 'a.thickbox', function( e ) {
+               e.preventDefault();
+               e.stopPropagation();
+
                tb_click.call(this);
 
                $('#TB_title').css({'background-color':'#23282d','color':'#cfcfcf'});
                $('#TB_ajaxWindowTitle').html( '<strong>' + plugininstallL10n.plugin_information + '</strong>&nbsp;' + $(this).data( 'title' ) );
                $('#TB_iframeContent').attr( 'title', plugininstallL10n.plugin_information + ' ' + $(this).data( 'title' ) );
                $('#TB_closeWindowButton').focus();
-
-               return false;
        });
 
        /* Plugin install related JS */
index 0b43ae596e41fdd32c5d150b43b6af045fbe0564..b5198c0d54d8eede9275d71950a308188c3e32b1 100644 (file)
@@ -1 +1 @@
-var tb_position;jQuery(document).ready(function(a){tb_position=function(){var b=a("#TB_window"),c=a(window).width(),d=a(window).height()-(c>792?60:20),e=c>792?772:c-20;return b.size()&&(b.width(e).height(d),a("#TB_iframeContent").width(e).height(d),b.css({"margin-left":"-"+parseInt(e/2,10)+"px"}),"undefined"!=typeof document.body.style.maxWidth&&b.css({top:"30px","margin-top":"0"})),a("a.thickbox").each(function(){var b=a(this).attr("href");b&&(b=b.replace(/&width=[0-9]+/g,""),b=b.replace(/&height=[0-9]+/g,""),a(this).attr("href",b+"&width="+e+"&height="+d))})},a(window).resize(function(){tb_position()}),a(".plugin-card, .plugins .plugin-version-author-uri").on("click","a.thickbox",function(){return tb_click.call(this),a("#TB_title").css({"background-color":"#23282d",color:"#cfcfcf"}),a("#TB_ajaxWindowTitle").html("<strong>"+plugininstallL10n.plugin_information+"</strong>&nbsp;"+a(this).data("title")),a("#TB_iframeContent").attr("title",plugininstallL10n.plugin_information+" "+a(this).data("title")),a("#TB_closeWindowButton").focus(),!1}),a("#plugin-information-tabs a").click(function(b){var c=a(this).attr("name");b.preventDefault(),a("#plugin-information-tabs a.current").removeClass("current"),a(this).addClass("current"),"description"!==c&&a(window).width()<772?a("#plugin-information-content").find(".fyi").hide():a("#plugin-information-content").find(".fyi").show(),a("#section-holder div.section").hide(),a("#section-"+c).show()})});
\ No newline at end of file
+var tb_position;jQuery(document).ready(function(a){tb_position=function(){var b=a("#TB_window"),c=a(window).width(),d=a(window).height()-(c>792?60:20),e=c>792?772:c-20;return b.size()&&(b.width(e).height(d),a("#TB_iframeContent").width(e).height(d),b.css({"margin-left":"-"+parseInt(e/2,10)+"px"}),"undefined"!=typeof document.body.style.maxWidth&&b.css({top:"30px","margin-top":"0"})),a("a.thickbox").each(function(){var b=a(this).attr("href");b&&(b=b.replace(/&width=[0-9]+/g,""),b=b.replace(/&height=[0-9]+/g,""),a(this).attr("href",b+"&width="+e+"&height="+d))})},a(window).resize(function(){tb_position()}),a(".plugin-card, .plugins .plugin-version-author-uri").on("click","a.thickbox",function(b){b.preventDefault(),b.stopPropagation(),tb_click.call(this),a("#TB_title").css({"background-color":"#23282d",color:"#cfcfcf"}),a("#TB_ajaxWindowTitle").html("<strong>"+plugininstallL10n.plugin_information+"</strong>&nbsp;"+a(this).data("title")),a("#TB_iframeContent").attr("title",plugininstallL10n.plugin_information+" "+a(this).data("title")),a("#TB_closeWindowButton").focus()}),a("#plugin-information-tabs a").click(function(b){var c=a(this).attr("name");b.preventDefault(),a("#plugin-information-tabs a.current").removeClass("current"),a(this).addClass("current"),"description"!==c&&a(window).width()<772?a("#plugin-information-content").find(".fyi").hide():a("#plugin-information-content").find(".fyi").show(),a("#section-holder div.section").hide(),a("#section-"+c).show()})});
\ No newline at end of file
index 085c5d865a4cd58eabc47449e351c3b5734f72a7..e6d2ca2ea03df8809a2c70a774cb04293cc29d6c 100644 (file)
@@ -59,6 +59,11 @@ commentsBox = {
                );
 
                return false;
+       },
+
+       load: function(total){
+               this.st = jQuery('#the-comment-list tr.comment:visible').length;
+               this.get(total);
        }
 };
 
@@ -126,7 +131,7 @@ $(document).on( 'heartbeat-send.refresh-lock', function( e, data ) {
                                }
 
                                if ( received.lock_error.avatar_src ) {
-                                       avatar = $('<img class="avatar avatar-64 photo" width="64" height="64" />').attr( 'src', received.lock_error.avatar_src.replace(/&amp;/g, '&') );
+                                       avatar = $( '<img class="avatar avatar-64 photo" width="64" height="64" alt="" />' ).attr( 'src', received.lock_error.avatar_src.replace( /&amp;/g, '&' ) );
                                        wrap.find('div.post-locked-avatar').empty().append( avatar );
                                }
 
@@ -205,7 +210,6 @@ jQuery(document).ready( function($) {
                sticky = '',
                $textarea = $('#content'),
                $document = $(document),
-               $editSlugWrap = $('#edit-slug-box'),
                postId = $('#post_ID').val() || 0,
                $submitpost = $('#submitpost'),
                releaseLock = true,
@@ -428,7 +432,8 @@ jQuery(document).ready( function($) {
                        settingName = 'cats';
 
                // TODO: move to jQuery 1.3+, support for multiple hierarchical taxonomies, see wp-lists.js
-               $('a', '#' + taxonomy + '-tabs').click( function(){
+               $('a', '#' + taxonomy + '-tabs').click( function( e ) {
+                       e.preventDefault();
                        var t = $(this).attr('href');
                        $(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
                        $('#' + taxonomy + '-tabs').siblings('.tabs-panel').hide();
@@ -437,7 +442,6 @@ jQuery(document).ready( function($) {
                                deleteUserSetting( settingName );
                        else
                                setUserSetting( settingName, 'pop' );
-                       return false;
                });
 
                if ( getUserSetting( settingName ) )
@@ -479,11 +483,11 @@ jQuery(document).ready( function($) {
                        addAfter: catAddAfter
                });
 
-               $('#' + taxonomy + '-add-toggle').click( function() {
+               $('#' + taxonomy + '-add-toggle').click( function( e ) {
+                       e.preventDefault();
                        $('#' + taxonomy + '-adder').toggleClass( 'wp-hidden-children' );
                        $('a[href="#' + taxonomy + '-all"]', '#' + taxonomy + '-tabs').click();
                        $('#new'+taxonomy).focus();
-                       return false;
                });
 
                $('#' + taxonomy + 'checklist, #' + taxonomy + 'checklist-pop').on( 'click', 'li.popular-category > label input[type="checkbox"]', function() {
@@ -604,7 +608,8 @@ jQuery(document).ready( function($) {
                        return true;
                };
 
-               $( '#visibility .edit-visibility').click( function () {
+               $( '#visibility .edit-visibility').click( function( e ) {
+                       e.preventDefault();
                        if ( $postVisibilitySelect.is(':hidden') ) {
                                updateVisibility();
                                $postVisibilitySelect.slideDown( 'fast', function() {
@@ -612,7 +617,6 @@ jQuery(document).ready( function($) {
                                } );
                                $(this).hide();
                        }
-                       return false;
                });
 
                $postVisibilitySelect.find('.cancel-post-visibility').click( function( event ) {
@@ -718,26 +722,32 @@ jQuery(document).ready( function($) {
        // permalink
        function editPermalink() {
                var i, slug_value,
+                       $el, revert_e,
                        c = 0,
-                       e = $('#editable-post-name'),
-                       revert_e = e.html(),
                        real_slug = $('#post_name'),
                        revert_slug = real_slug.val(),
-                       b = $('#edit-slug-buttons'),
-                       revert_b = b.html(),
+                       permalink = $( '#sample-permalink' ),
+                       permalinkOrig = permalink.html(),
+                       permalinkInner = $( '#sample-permalink a' ).html(),
+                       buttons = $('#edit-slug-buttons'),
+                       buttonsOrig = buttons.html(),
                        full = $('#editable-post-name-full');
 
                // Deal with Twemoji in the post-name
                full.find( 'img' ).replaceWith( function() { return this.alt; } );
                full = full.html();
 
-               $('#view-post-btn').hide();
-               b.html('<a href="#" class="save button button-small">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+'</a>');
-               b.children('.save').click(function() {
-                       var new_slug = e.children('input').val();
+               permalink.html( permalinkInner );
+               $el = $( '#editable-post-name' );
+               revert_e = $el.html();
+
+               buttons.html( '<button type="button" class="save button button-small">' + postL10n.ok + '</button> <button type="button" class="cancel button-link">' + postL10n.cancel + '</button>' );
+               buttons.children( '.save' ).click( function() {
+                       var new_slug = $el.children( 'input' ).val();
+
                        if ( new_slug == $('#editable-post-name-full').text() ) {
-                               b.children('.cancel').click();
-                               return false;
+                               buttons.children('.cancel').click();
+                               return;
                        }
                        $.post(ajaxurl, {
                                action: 'sample-permalink',
@@ -754,19 +764,21 @@ jQuery(document).ready( function($) {
                                        });
                                }
 
-                               b.html(revert_b);
+                               buttons.html(buttonsOrig);
+                               permalink.html(permalinkOrig);
                                real_slug.val(new_slug);
-                               $('#view-post-btn').show();
+                               $( '.edit-slug' ).focus();
+                               wp.a11y.speak( postL10n.permalinkSaved );
                        });
-                       return false;
                });
 
-               b.children('.cancel').click(function() {
+               buttons.children( '.cancel' ).click( function() {
                        $('#view-post-btn').show();
-                       e.html(revert_e);
-                       b.html(revert_b);
+                       $el.html(revert_e);
+                       buttons.html(buttonsOrig);
+                       permalink.html(permalinkOrig);
                        real_slug.val(revert_slug);
-                       return false;
+                       $( '.edit-slug' ).focus();
                });
 
                for ( i = 0; i < full.length; ++i ) {
@@ -775,31 +787,24 @@ jQuery(document).ready( function($) {
                }
 
                slug_value = ( c > full.length / 4 ) ? '' : full;
-               e.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children('input').keypress(function(e) {
-                       var key = e.keyCode || 0;
-                       // on enter, just save the new slug, don't save the post
-                       if ( 13 == key ) {
-                               b.children('.save').click();
-                               return false;
+               $el.html( '<input type="text" id="new-post-slug" value="' + slug_value + '" autocomplete="off" />' ).children( 'input' ).keydown( function( e ) {
+                       var key = e.which;
+                       // On enter, just save the new slug, don't save the post.
+                       if ( 13 === key ) {
+                               e.preventDefault();
+                               buttons.children( '.save' ).click();
                        }
-                       if ( 27 == key ) {
-                               b.children('.cancel').click();
-                               return false;
+                       if ( 27 === key ) {
+                               buttons.children( '.cancel' ).click();
                        }
                } ).keyup( function() {
-                       real_slug.val(this.value);
+                       real_slug.val( this.value );
                }).focus();
        }
 
-       if ( $editSlugWrap.length ) {
-               $editSlugWrap.on( 'click', function( event ) {
-                       var $target = $( event.target );
-
-                       if ( $target.is('#editable-post-name') || $target.hasClass('edit-slug') ) {
-                               editPermalink();
-                       }
-               });
-       }
+       $( '#titlediv' ).on( 'click', '.edit-slug', function() {
+               editPermalink();
+       });
 
        wptitlehint = function(id) {
                id = id || 'title';
@@ -929,6 +934,18 @@ jQuery(document).ready( function($) {
                        event.preventDefault();
                }
        });
+
+       if ( $( '#original_post_status' ).val() === 'auto-draft' && window.history.replaceState ) {
+               var location;
+
+               $( '#publish' ).on( 'click', function() {
+                       location = window.location.href;
+                       location += ( location.indexOf( '?' ) !== -1 ) ? '&' : '?';
+                       location += 'wp-post-new-reload=true';
+
+                       window.history.replaceState( null, null, location );
+               });
+       }
 });
 
 ( function( $, counter ) {
index aab467cd880d88cb0cfdee962479ee796c80de8f..183e81eec00951931a2c899750dac5e4729d25d9 100644 (file)
@@ -1 +1 @@
-var commentsBox,WPSetThumbnailHTML,WPSetThumbnailID,WPRemoveThumbnail,wptitlehint,makeSlugeditClickable,editPermalink;makeSlugeditClickable=editPermalink=function(){},window.wp=window.wp||{},function(a){var b=!1;commentsBox={st:0,get:function(b,c){var d,e=this.st;return c||(c=20),this.st+=c,this.total=b,a("#commentsdiv .spinner").addClass("is-active"),d={action:"get-comments",mode:"single",_ajax_nonce:a("#add_comment_nonce").val(),p:a("#post_ID").val(),start:e,number:c},a.post(ajaxurl,d,function(b){return b=wpAjax.parseAjaxResponse(b),a("#commentsdiv .widefat").show(),a("#commentsdiv .spinner").removeClass("is-active"),"object"==typeof b&&b.responses[0]?(a("#the-comment-list").append(b.responses[0].data),theList=theExtraList=null,a("a[className*=':']").unbind(),void(commentsBox.st>commentsBox.total?a("#show-comments").hide():a("#show-comments").show().children("a").html(postL10n.showcomm))):1==b?void a("#show-comments").html(postL10n.endcomm):void a("#the-comment-list").append('<tr><td colspan="2">'+wpAjax.broken+"</td></tr>")}),!1}},WPSetThumbnailHTML=function(b){a(".inside","#postimagediv").html(b)},WPSetThumbnailID=function(b){var c=a('input[value="_thumbnail_id"]',"#list-table");c.size()>0&&a("#meta\\["+c.attr("id").match(/[0-9]+/)+"\\]\\[value\\]").text(b)},WPRemoveThumbnail=function(b){a.post(ajaxurl,{action:"set-post-thumbnail",post_id:a("#post_ID").val(),thumbnail_id:-1,_ajax_nonce:b,cookie:encodeURIComponent(document.cookie)},function(a){"0"==a?alert(setPostThumbnailL10n.error):WPSetThumbnailHTML(a)})},a(document).on("heartbeat-send.refresh-lock",function(b,c){var d=a("#active_post_lock").val(),e=a("#post_ID").val(),f={};e&&a("#post-lock-dialog").length&&(f.post_id=e,d&&(f.lock=d),c["wp-refresh-post-lock"]=f)}).on("heartbeat-tick.refresh-lock",function(b,c){var d,e,f;c["wp-refresh-post-lock"]&&(d=c["wp-refresh-post-lock"],d.lock_error?(e=a("#post-lock-dialog"),e.length&&!e.is(":visible")&&(wp.autosave&&(a(document).one("heartbeat-tick",function(){wp.autosave.server.suspend(),e.removeClass("saving").addClass("saved"),a(window).off("beforeunload.edit-post")}),e.addClass("saving"),wp.autosave.server.triggerSave()),d.lock_error.avatar_src&&(f=a('<img class="avatar avatar-64 photo" width="64" height="64" />').attr("src",d.lock_error.avatar_src.replace(/&amp;/g,"&")),e.find("div.post-locked-avatar").empty().append(f)),e.show().find(".currently-editing").text(d.lock_error.text),e.find(".wp-tab-first").focus())):d.new_lock&&a("#active_post_lock").val(d.new_lock))}).on("before-autosave.update-post-slug",function(){b=document.activeElement&&"title"===document.activeElement.id}).on("after-autosave.update-post-slug",function(){a("#edit-slug-box > *").length||b||a.post(ajaxurl,{action:"sample-permalink",post_id:a("#post_ID").val(),new_title:a("#title").val(),samplepermalinknonce:a("#samplepermalinknonce").val()},function(b){"-1"!=b&&a("#edit-slug-box").html(b)})})}(jQuery),function(a){function b(){c=!1,window.clearTimeout(d),d=window.setTimeout(function(){c=!0},3e5)}var c,d;a(document).on("heartbeat-send.wp-refresh-nonces",function(b,d){var e,f=a("#wp-auth-check-wrap");(c||f.length&&!f.hasClass("hidden"))&&(e=a("#post_ID").val())&&a("#_wpnonce").val()&&(d["wp-refresh-post-nonces"]={post_id:e})}).on("heartbeat-tick.wp-refresh-nonces",function(c,d){var e=d["wp-refresh-post-nonces"];e&&(b(),e.replace&&a.each(e.replace,function(b,c){a("#"+b).val(c)}),e.heartbeatNonce&&(window.heartbeatSettings.nonce=e.heartbeatNonce))}).ready(function(){b()})}(jQuery),jQuery(document).ready(function(a){function b(){var b,c,d=0,e=a("#editable-post-name"),f=e.html(),g=a("#post_name"),h=g.val(),i=a("#edit-slug-buttons"),j=i.html(),k=a("#editable-post-name-full");for(k.find("img").replaceWith(function(){return this.alt}),k=k.html(),a("#view-post-btn").hide(),i.html('<a href="#" class="save button button-small">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+"</a>"),i.children(".save").click(function(){var b=e.children("input").val();return b==a("#editable-post-name-full").text()?(i.children(".cancel").click(),!1):(a.post(ajaxurl,{action:"sample-permalink",post_id:l,new_slug:b,new_title:a("#title").val(),samplepermalinknonce:a("#samplepermalinknonce").val()},function(c){var d=a("#edit-slug-box");d.html(c),d.hasClass("hidden")&&d.fadeIn("fast",function(){d.removeClass("hidden")}),i.html(j),g.val(b),a("#view-post-btn").show()}),!1)}),i.children(".cancel").click(function(){return a("#view-post-btn").show(),e.html(f),i.html(j),g.val(h),!1}),b=0;b<k.length;++b)"%"==k.charAt(b)&&d++;c=d>k.length/4?"":k,e.html('<input type="text" id="new-post-slug" value="'+c+'" />').children("input").keypress(function(a){var b=a.keyCode||0;return 13==b?(i.children(".save").click(),!1):27==b?(i.children(".cancel").click(),!1):void 0}).keyup(function(){g.val(this.value)}).focus()}var c,d,e,f,g,h="",i=a("#content"),j=a(document),k=a("#edit-slug-box"),l=a("#post_ID").val()||0,m=a("#submitpost"),n=!0,o=a("#post-visibility-select"),p=a("#timestampdiv"),q=a("#post-status-select"),r=window.navigator.platform?-1!==window.navigator.platform.indexOf("Mac"):!1;postboxes.add_postbox_toggles(pagenow),window.name="",a("#post-lock-dialog .notification-dialog").on("keydown",function(b){if(9==b.which){var c=a(b.target);c.hasClass("wp-tab-first")&&b.shiftKey?(a(this).find(".wp-tab-last").focus(),b.preventDefault()):c.hasClass("wp-tab-last")&&!b.shiftKey&&(a(this).find(".wp-tab-first").focus(),b.preventDefault())}}).filter(":visible").find(".wp-tab-first").focus(),wp.heartbeat&&a("#post-lock-dialog").length&&wp.heartbeat.interval(15),e=m.find(":submit, a.submitdelete, #post-preview").on("click.edit-post",function(b){var c=a(this);return c.hasClass("disabled")?void b.preventDefault():void(c.hasClass("submitdelete")||c.is("#post-preview")||a("form#post").off("submit.edit-post").on("submit.edit-post",function(b){b.isDefaultPrevented()||(wp.autosave&&wp.autosave.server.suspend(),"undefined"!=typeof commentReply&&commentReply.close(),n=!1,a(window).off("beforeunload.edit-post"),e.addClass("disabled"),"publish"===c.attr("id")?m.find("#major-publishing-actions .spinner").addClass("is-active"):m.find("#minor-publishing .spinner").addClass("is-active"))}))}),a("#post-preview").on("click.post-preview",function(b){var c=a(this),d=a("form#post"),e=a("input#wp-preview"),f=c.attr("target")||"wp-preview",g=navigator.userAgent.toLowerCase();b.preventDefault(),c.hasClass("disabled")||(wp.autosave&&wp.autosave.server.tempBlockSave(),e.val("dopreview"),d.attr("target",f).submit().attr("target",""),-1!==g.indexOf("safari")&&-1===g.indexOf("chrome")&&d.attr("action",function(a,b){return b+"?t="+(new Date).getTime()}),e.val(""))}),a("#title").on("keydown.editor-focus",function(a){var b;if(9===a.keyCode&&!a.ctrlKey&&!a.altKey&&!a.shiftKey){if(b="undefined"!=typeof tinymce&&tinymce.get("content"),b&&!b.isHidden())b.focus();else{if(!i.length)return;i.focus()}a.preventDefault()}}),a("#auto_draft").val()&&a("#title").blur(function(){var b;this.value&&!a("#edit-slug-box > *").length&&(a("form#post").one("submit",function(){b=!0}),window.setTimeout(function(){!b&&wp.autosave&&wp.autosave.server.triggerSave()},200))}),j.on("autosave-disable-buttons.edit-post",function(){e.addClass("disabled")}).on("autosave-enable-buttons.edit-post",function(){wp.heartbeat&&wp.heartbeat.hasConnectionError()||e.removeClass("disabled")}).on("before-autosave.edit-post",function(){a(".autosave-message").text(postL10n.savingText)}).on("after-autosave.edit-post",function(b,c){a(".autosave-message").text(c.message)}),a(window).on("beforeunload.edit-post",function(){var a="undefined"!=typeof tinymce&&tinymce.get("content");return a&&!a.isHidden()&&a.isDirty()||wp.autosave&&wp.autosave.server.postChanged()?postL10n.saveAlert:void 0}).on("unload.edit-post",function(b){n&&(b.target&&"#document"!=b.target.nodeName||a.ajax({type:"POST",url:ajaxurl,async:!1,data:{action:"wp-remove-post-lock",_wpnonce:a("#_wpnonce").val(),post_ID:a("#post_ID").val(),active_post_lock:a("#active_post_lock").val()}}))}),a("#tagsdiv-post_tag").length?window.tagBox&&window.tagBox.init():a("#side-sortables, #normal-sortables, #advanced-sortables").children("div.postbox").each(function(){return 0===this.id.indexOf("tagsdiv-")?(window.tagBox&&window.tagBox.init(),!1):void 0}),a(".categorydiv").each(function(){var b,c,d,e,f,g=a(this).attr("id");d=g.split("-"),d.shift(),e=d.join("-"),f=e+"_tab","category"==e&&(f="cats"),a("a","#"+e+"-tabs").click(function(){var b=a(this).attr("href");return a(this).parent().addClass("tabs").siblings("li").removeClass("tabs"),a("#"+e+"-tabs").siblings(".tabs-panel").hide(),a(b).show(),"#"+e+"-all"==b?deleteUserSetting(f):setUserSetting(f,"pop"),!1}),getUserSetting(f)&&a('a[href="#'+e+'-pop"]',"#"+e+"-tabs").click(),a("#new"+e).one("focus",function(){a(this).val("").removeClass("form-input-tip")}),a("#new"+e).keypress(function(b){13===b.keyCode&&(b.preventDefault(),a("#"+e+"-add-submit").click())}),a("#"+e+"-add-submit").click(function(){a("#new"+e).focus()}),b=function(b){return a("#new"+e).val()?(b.data+="&"+a(":checked","#"+e+"checklist").serialize(),a("#"+e+"-add-submit").prop("disabled",!0),b):!1},c=function(b,c){var d,f=a("#new"+e+"_parent");a("#"+e+"-add-submit").prop("disabled",!1),"undefined"!=c.parsed.responses[0]&&(d=c.parsed.responses[0].supplemental.newcat_parent)&&(f.before(d),f.remove())},a("#"+e+"checklist").wpList({alt:"",response:e+"-ajax-response",addBefore:b,addAfter:c}),a("#"+e+"-add-toggle").click(function(){return a("#"+e+"-adder").toggleClass("wp-hidden-children"),a('a[href="#'+e+'-all"]',"#"+e+"-tabs").click(),a("#new"+e).focus(),!1}),a("#"+e+"checklist, #"+e+"checklist-pop").on("click",'li.popular-category > label input[type="checkbox"]',function(){var b=a(this),c=b.is(":checked"),d=b.val();d&&b.parents("#taxonomy-"+e).length&&a("#in-"+e+"-"+d+", #in-popular-"+e+"-"+d).prop("checked",c)})}),a("#postcustom").length&&a("#the-list").wpList({addAfter:function(){a("table#list-table").show()},addBefore:function(b){return b.data+="&post_id="+a("#post_ID").val(),b}}),a("#submitdiv").length&&(c=a("#timestamp").html(),d=a("#post-visibility-display").html(),f=function(){"public"!=o.find("input:radio:checked").val()?(a("#sticky").prop("checked",!1),a("#sticky-span").hide()):a("#sticky-span").show(),"password"!=o.find("input:radio:checked").val()?a("#password-span").hide():a("#password-span").show()},g=function(){if(!p.length)return!0;var b,d,e,f,g=a("#post_status"),h=a('option[value="publish"]',g),i=a("#aa").val(),j=a("#mm").val(),k=a("#jj").val(),l=a("#hh").val(),m=a("#mn").val();return b=new Date(i,j-1,k,l,m),d=new Date(a("#hidden_aa").val(),a("#hidden_mm").val()-1,a("#hidden_jj").val(),a("#hidden_hh").val(),a("#hidden_mn").val()),e=new Date(a("#cur_aa").val(),a("#cur_mm").val()-1,a("#cur_jj").val(),a("#cur_hh").val(),a("#cur_mn").val()),b.getFullYear()!=i||1+b.getMonth()!=j||b.getDate()!=k||b.getMinutes()!=m?(p.find(".timestamp-wrap").addClass("form-invalid"),!1):(p.find(".timestamp-wrap").removeClass("form-invalid"),b>e&&"future"!=a("#original_post_status").val()?(f=postL10n.publishOnFuture,a("#publish").val(postL10n.schedule)):e>=b&&"publish"!=a("#original_post_status").val()?(f=postL10n.publishOn,a("#publish").val(postL10n.publish)):(f=postL10n.publishOnPast,a("#publish").val(postL10n.update)),d.toUTCString()==b.toUTCString()?a("#timestamp").html(c):a("#timestamp").html("\n"+f+" <b>"+postL10n.dateFormat.replace("%1$s",a('option[value="'+j+'"]',"#mm").attr("data-text")).replace("%2$s",parseInt(k,10)).replace("%3$s",i).replace("%4$s",("00"+l).slice(-2)).replace("%5$s",("00"+m).slice(-2))+"</b> "),"private"==o.find("input:radio:checked").val()?(a("#publish").val(postL10n.update),0===h.length?g.append('<option value="publish">'+postL10n.privatelyPublished+"</option>"):h.html(postL10n.privatelyPublished),a('option[value="publish"]',g).prop("selected",!0),a("#misc-publishing-actions .edit-post-status").hide()):("future"==a("#original_post_status").val()||"draft"==a("#original_post_status").val()?h.length&&(h.remove(),g.val(a("#hidden_post_status").val())):h.html(postL10n.published),g.is(":hidden")&&a("#misc-publishing-actions .edit-post-status").show()),a("#post-status-display").html(a("option:selected",g).text()),"private"==a("option:selected",g).val()||"publish"==a("option:selected",g).val()?a("#save-post").hide():(a("#save-post").show(),"pending"==a("option:selected",g).val()?a("#save-post").show().val(postL10n.savePending):a("#save-post").show().val(postL10n.saveDraft)),!0)},a("#visibility .edit-visibility").click(function(){return o.is(":hidden")&&(f(),o.slideDown("fast",function(){o.find('input[type="radio"]').first().focus()}),a(this).hide()),!1}),o.find(".cancel-post-visibility").click(function(b){o.slideUp("fast"),a("#visibility-radio-"+a("#hidden-post-visibility").val()).prop("checked",!0),a("#post_password").val(a("#hidden-post-password").val()),a("#sticky").prop("checked",a("#hidden-post-sticky").prop("checked")),a("#post-visibility-display").html(d),a("#visibility .edit-visibility").show().focus(),g(),b.preventDefault()}),o.find(".save-post-visibility").click(function(b){o.slideUp("fast"),a("#visibility .edit-visibility").show().focus(),g(),"public"!=o.find("input:radio:checked").val()&&a("#sticky").prop("checked",!1),h=a("#sticky").prop("checked")?"Sticky":"",a("#post-visibility-display").html(postL10n[o.find("input:radio:checked").val()+h]),b.preventDefault()}),o.find("input:radio").change(function(){f()}),p.siblings("a.edit-timestamp").click(function(b){p.is(":hidden")&&(p.slideDown("fast",function(){a("input, select",p.find(".timestamp-wrap")).first().focus()}),a(this).hide()),b.preventDefault()}),p.find(".cancel-timestamp").click(function(b){p.slideUp("fast").siblings("a.edit-timestamp").show().focus(),a("#mm").val(a("#hidden_mm").val()),a("#jj").val(a("#hidden_jj").val()),a("#aa").val(a("#hidden_aa").val()),a("#hh").val(a("#hidden_hh").val()),a("#mn").val(a("#hidden_mn").val()),g(),b.preventDefault()}),p.find(".save-timestamp").click(function(a){g()&&(p.slideUp("fast"),p.siblings("a.edit-timestamp").show().focus()),a.preventDefault()}),a("#post").on("submit",function(b){g()||(b.preventDefault(),p.show(),wp.autosave&&wp.autosave.enableButtons(),a("#publishing-action .spinner").removeClass("is-active"))}),q.siblings("a.edit-post-status").click(function(b){q.is(":hidden")&&(q.slideDown("fast",function(){q.find("select").focus()}),a(this).hide()),b.preventDefault()}),q.find(".save-post-status").click(function(a){q.slideUp("fast").siblings("a.edit-post-status").show().focus(),g(),a.preventDefault()}),q.find(".cancel-post-status").click(function(b){q.slideUp("fast").siblings("a.edit-post-status").show().focus(),a("#post_status").val(a("#hidden_post_status").val()),g(),b.preventDefault()})),k.length&&k.on("click",function(c){var d=a(c.target);(d.is("#editable-post-name")||d.hasClass("edit-slug"))&&b()}),wptitlehint=function(b){b=b||"title";var c=a("#"+b),d=a("#"+b+"-prompt-text");""===c.val()&&d.removeClass("screen-reader-text"),d.click(function(){a(this).addClass("screen-reader-text"),c.focus()}),c.blur(function(){""===this.value&&d.removeClass("screen-reader-text")}).focus(function(){d.addClass("screen-reader-text")}).keydown(function(b){d.addClass("screen-reader-text"),a(this).unbind(b)})},wptitlehint(),function(){function b(a){h.hasClass("wp-editor-expand")||(f?d.theme.resizeTo(null,e+a.pageY):i.height(Math.max(50,e+a.pageY)),a.preventDefault())}function c(){var b,c;h.hasClass("wp-editor-expand")||(f?(d.focus(),c=parseInt(a("#wp-content-editor-container .mce-toolbar-grp").height(),10),(10>c||c>200)&&(c=30),b=parseInt(a("#content_ifr").css("height"),10)+c-28):(i.focus(),b=parseInt(i.css("height"),10)),j.off(".wp-editor-resize"),b&&b>50&&5e3>b&&setUserSetting("ed_size",b))}var d,e,f,g=a("#post-status-info"),h=a("#postdivrich");return!i.length||"ontouchstart"in window?void a("#content-resize-handle").hide():void g.on("mousedown.wp-editor-resize",function(g){"undefined"!=typeof tinymce&&(d=tinymce.get("content")),d&&!d.isHidden()?(f=!0,e=a("#content_ifr").height()-g.pageY):(f=!1,e=i.height()-g.pageY,i.blur()),j.on("mousemove.wp-editor-resize",b).on("mouseup.wp-editor-resize mouseleave.wp-editor-resize",c),g.preventDefault()}).on("mouseup.wp-editor-resize",c)}(),"undefined"!=typeof tinymce&&a("#post-formats-select input.post-format").on("change.set-editor-class",function(){var b,c,d=this.id;d&&a(this).prop("checked")&&(b=tinymce.get("content"))&&(c=b.getBody(),c.className=c.className.replace(/\bpost-format-[^ ]+/,""),b.dom.addClass(c,"post-format-0"==d?"post-format-standard":d),a(document).trigger("editor-classchange"))}),i.on("keydown.wp-autosave",function(a){if(83===a.which){if(a.shiftKey||a.altKey||r&&(!a.metaKey||a.ctrlKey)||!r&&!a.ctrlKey)return;wp.autosave&&wp.autosave.server.triggerSave(),a.preventDefault()}})}),function(a,b){a(function(){function c(){var a,c;a=!d||d.isHidden()?e.val():d.getContent({format:"raw"}),c=b.count(a),c!==g&&f.text(c),g=c}var d,e=a("#content"),f=a("#wp-word-count").find(".word-count"),g=0;a(document).on("tinymce-editor-init",function(a,b){"content"===b.id&&(d=b,b.on("nodechange keyup",_.debounce(c,1e3)))}),e.on("input keyup",_.debounce(c,1e3)),c()})}(jQuery,new wp.utils.WordCounter);
\ No newline at end of file
+var commentsBox,WPSetThumbnailHTML,WPSetThumbnailID,WPRemoveThumbnail,wptitlehint,makeSlugeditClickable,editPermalink;makeSlugeditClickable=editPermalink=function(){},window.wp=window.wp||{},function(a){var b=!1;commentsBox={st:0,get:function(b,c){var d,e=this.st;return c||(c=20),this.st+=c,this.total=b,a("#commentsdiv .spinner").addClass("is-active"),d={action:"get-comments",mode:"single",_ajax_nonce:a("#add_comment_nonce").val(),p:a("#post_ID").val(),start:e,number:c},a.post(ajaxurl,d,function(b){return b=wpAjax.parseAjaxResponse(b),a("#commentsdiv .widefat").show(),a("#commentsdiv .spinner").removeClass("is-active"),"object"==typeof b&&b.responses[0]?(a("#the-comment-list").append(b.responses[0].data),theList=theExtraList=null,a("a[className*=':']").unbind(),void(commentsBox.st>commentsBox.total?a("#show-comments").hide():a("#show-comments").show().children("a").html(postL10n.showcomm))):1==b?void a("#show-comments").html(postL10n.endcomm):void a("#the-comment-list").append('<tr><td colspan="2">'+wpAjax.broken+"</td></tr>")}),!1},load:function(a){this.st=jQuery("#the-comment-list tr.comment:visible").length,this.get(a)}},WPSetThumbnailHTML=function(b){a(".inside","#postimagediv").html(b)},WPSetThumbnailID=function(b){var c=a('input[value="_thumbnail_id"]',"#list-table");c.size()>0&&a("#meta\\["+c.attr("id").match(/[0-9]+/)+"\\]\\[value\\]").text(b)},WPRemoveThumbnail=function(b){a.post(ajaxurl,{action:"set-post-thumbnail",post_id:a("#post_ID").val(),thumbnail_id:-1,_ajax_nonce:b,cookie:encodeURIComponent(document.cookie)},function(a){"0"==a?alert(setPostThumbnailL10n.error):WPSetThumbnailHTML(a)})},a(document).on("heartbeat-send.refresh-lock",function(b,c){var d=a("#active_post_lock").val(),e=a("#post_ID").val(),f={};e&&a("#post-lock-dialog").length&&(f.post_id=e,d&&(f.lock=d),c["wp-refresh-post-lock"]=f)}).on("heartbeat-tick.refresh-lock",function(b,c){var d,e,f;c["wp-refresh-post-lock"]&&(d=c["wp-refresh-post-lock"],d.lock_error?(e=a("#post-lock-dialog"),e.length&&!e.is(":visible")&&(wp.autosave&&(a(document).one("heartbeat-tick",function(){wp.autosave.server.suspend(),e.removeClass("saving").addClass("saved"),a(window).off("beforeunload.edit-post")}),e.addClass("saving"),wp.autosave.server.triggerSave()),d.lock_error.avatar_src&&(f=a('<img class="avatar avatar-64 photo" width="64" height="64" alt="" />').attr("src",d.lock_error.avatar_src.replace(/&amp;/g,"&")),e.find("div.post-locked-avatar").empty().append(f)),e.show().find(".currently-editing").text(d.lock_error.text),e.find(".wp-tab-first").focus())):d.new_lock&&a("#active_post_lock").val(d.new_lock))}).on("before-autosave.update-post-slug",function(){b=document.activeElement&&"title"===document.activeElement.id}).on("after-autosave.update-post-slug",function(){a("#edit-slug-box > *").length||b||a.post(ajaxurl,{action:"sample-permalink",post_id:a("#post_ID").val(),new_title:a("#title").val(),samplepermalinknonce:a("#samplepermalinknonce").val()},function(b){"-1"!=b&&a("#edit-slug-box").html(b)})})}(jQuery),function(a){function b(){c=!1,window.clearTimeout(d),d=window.setTimeout(function(){c=!0},3e5)}var c,d;a(document).on("heartbeat-send.wp-refresh-nonces",function(b,d){var e,f=a("#wp-auth-check-wrap");(c||f.length&&!f.hasClass("hidden"))&&(e=a("#post_ID").val())&&a("#_wpnonce").val()&&(d["wp-refresh-post-nonces"]={post_id:e})}).on("heartbeat-tick.wp-refresh-nonces",function(c,d){var e=d["wp-refresh-post-nonces"];e&&(b(),e.replace&&a.each(e.replace,function(b,c){a("#"+b).val(c)}),e.heartbeatNonce&&(window.heartbeatSettings.nonce=e.heartbeatNonce))}).ready(function(){b()})}(jQuery),jQuery(document).ready(function(a){function b(){var b,c,d,e,f=0,g=a("#post_name"),h=g.val(),i=a("#sample-permalink"),j=i.html(),l=a("#sample-permalink a").html(),m=a("#edit-slug-buttons"),n=m.html(),o=a("#editable-post-name-full");for(o.find("img").replaceWith(function(){return this.alt}),o=o.html(),i.html(l),d=a("#editable-post-name"),e=d.html(),m.html('<button type="button" class="save button button-small">'+postL10n.ok+'</button> <button type="button" class="cancel button-link">'+postL10n.cancel+"</button>"),m.children(".save").click(function(){var b=d.children("input").val();return b==a("#editable-post-name-full").text()?void m.children(".cancel").click():void a.post(ajaxurl,{action:"sample-permalink",post_id:k,new_slug:b,new_title:a("#title").val(),samplepermalinknonce:a("#samplepermalinknonce").val()},function(c){var d=a("#edit-slug-box");d.html(c),d.hasClass("hidden")&&d.fadeIn("fast",function(){d.removeClass("hidden")}),m.html(n),i.html(j),g.val(b),a(".edit-slug").focus(),wp.a11y.speak(postL10n.permalinkSaved)})}),m.children(".cancel").click(function(){a("#view-post-btn").show(),d.html(e),m.html(n),i.html(j),g.val(h),a(".edit-slug").focus()}),b=0;b<o.length;++b)"%"==o.charAt(b)&&f++;c=f>o.length/4?"":o,d.html('<input type="text" id="new-post-slug" value="'+c+'" autocomplete="off" />').children("input").keydown(function(a){var b=a.which;13===b&&(a.preventDefault(),m.children(".save").click()),27===b&&m.children(".cancel").click()}).keyup(function(){g.val(this.value)}).focus()}var c,d,e,f,g,h="",i=a("#content"),j=a(document),k=a("#post_ID").val()||0,l=a("#submitpost"),m=!0,n=a("#post-visibility-select"),o=a("#timestampdiv"),p=a("#post-status-select"),q=window.navigator.platform?-1!==window.navigator.platform.indexOf("Mac"):!1;if(postboxes.add_postbox_toggles(pagenow),window.name="",a("#post-lock-dialog .notification-dialog").on("keydown",function(b){if(9==b.which){var c=a(b.target);c.hasClass("wp-tab-first")&&b.shiftKey?(a(this).find(".wp-tab-last").focus(),b.preventDefault()):c.hasClass("wp-tab-last")&&!b.shiftKey&&(a(this).find(".wp-tab-first").focus(),b.preventDefault())}}).filter(":visible").find(".wp-tab-first").focus(),wp.heartbeat&&a("#post-lock-dialog").length&&wp.heartbeat.interval(15),e=l.find(":submit, a.submitdelete, #post-preview").on("click.edit-post",function(b){var c=a(this);return c.hasClass("disabled")?void b.preventDefault():void(c.hasClass("submitdelete")||c.is("#post-preview")||a("form#post").off("submit.edit-post").on("submit.edit-post",function(b){b.isDefaultPrevented()||(wp.autosave&&wp.autosave.server.suspend(),"undefined"!=typeof commentReply&&commentReply.close(),m=!1,a(window).off("beforeunload.edit-post"),e.addClass("disabled"),"publish"===c.attr("id")?l.find("#major-publishing-actions .spinner").addClass("is-active"):l.find("#minor-publishing .spinner").addClass("is-active"))}))}),a("#post-preview").on("click.post-preview",function(b){var c=a(this),d=a("form#post"),e=a("input#wp-preview"),f=c.attr("target")||"wp-preview",g=navigator.userAgent.toLowerCase();b.preventDefault(),c.hasClass("disabled")||(wp.autosave&&wp.autosave.server.tempBlockSave(),e.val("dopreview"),d.attr("target",f).submit().attr("target",""),-1!==g.indexOf("safari")&&-1===g.indexOf("chrome")&&d.attr("action",function(a,b){return b+"?t="+(new Date).getTime()}),e.val(""))}),a("#title").on("keydown.editor-focus",function(a){var b;if(9===a.keyCode&&!a.ctrlKey&&!a.altKey&&!a.shiftKey){if(b="undefined"!=typeof tinymce&&tinymce.get("content"),b&&!b.isHidden())b.focus();else{if(!i.length)return;i.focus()}a.preventDefault()}}),a("#auto_draft").val()&&a("#title").blur(function(){var b;this.value&&!a("#edit-slug-box > *").length&&(a("form#post").one("submit",function(){b=!0}),window.setTimeout(function(){!b&&wp.autosave&&wp.autosave.server.triggerSave()},200))}),j.on("autosave-disable-buttons.edit-post",function(){e.addClass("disabled")}).on("autosave-enable-buttons.edit-post",function(){wp.heartbeat&&wp.heartbeat.hasConnectionError()||e.removeClass("disabled")}).on("before-autosave.edit-post",function(){a(".autosave-message").text(postL10n.savingText)}).on("after-autosave.edit-post",function(b,c){a(".autosave-message").text(c.message)}),a(window).on("beforeunload.edit-post",function(){var a="undefined"!=typeof tinymce&&tinymce.get("content");return a&&!a.isHidden()&&a.isDirty()||wp.autosave&&wp.autosave.server.postChanged()?postL10n.saveAlert:void 0}).on("unload.edit-post",function(b){m&&(b.target&&"#document"!=b.target.nodeName||a.ajax({type:"POST",url:ajaxurl,async:!1,data:{action:"wp-remove-post-lock",_wpnonce:a("#_wpnonce").val(),post_ID:a("#post_ID").val(),active_post_lock:a("#active_post_lock").val()}}))}),a("#tagsdiv-post_tag").length?window.tagBox&&window.tagBox.init():a("#side-sortables, #normal-sortables, #advanced-sortables").children("div.postbox").each(function(){return 0===this.id.indexOf("tagsdiv-")?(window.tagBox&&window.tagBox.init(),!1):void 0}),a(".categorydiv").each(function(){var b,c,d,e,f,g=a(this).attr("id");d=g.split("-"),d.shift(),e=d.join("-"),f=e+"_tab","category"==e&&(f="cats"),a("a","#"+e+"-tabs").click(function(b){b.preventDefault();var c=a(this).attr("href");a(this).parent().addClass("tabs").siblings("li").removeClass("tabs"),a("#"+e+"-tabs").siblings(".tabs-panel").hide(),a(c).show(),"#"+e+"-all"==c?deleteUserSetting(f):setUserSetting(f,"pop")}),getUserSetting(f)&&a('a[href="#'+e+'-pop"]',"#"+e+"-tabs").click(),a("#new"+e).one("focus",function(){a(this).val("").removeClass("form-input-tip")}),a("#new"+e).keypress(function(b){13===b.keyCode&&(b.preventDefault(),a("#"+e+"-add-submit").click())}),a("#"+e+"-add-submit").click(function(){a("#new"+e).focus()}),b=function(b){return a("#new"+e).val()?(b.data+="&"+a(":checked","#"+e+"checklist").serialize(),a("#"+e+"-add-submit").prop("disabled",!0),b):!1},c=function(b,c){var d,f=a("#new"+e+"_parent");a("#"+e+"-add-submit").prop("disabled",!1),"undefined"!=c.parsed.responses[0]&&(d=c.parsed.responses[0].supplemental.newcat_parent)&&(f.before(d),f.remove())},a("#"+e+"checklist").wpList({alt:"",response:e+"-ajax-response",addBefore:b,addAfter:c}),a("#"+e+"-add-toggle").click(function(b){b.preventDefault(),a("#"+e+"-adder").toggleClass("wp-hidden-children"),a('a[href="#'+e+'-all"]',"#"+e+"-tabs").click(),a("#new"+e).focus()}),a("#"+e+"checklist, #"+e+"checklist-pop").on("click",'li.popular-category > label input[type="checkbox"]',function(){var b=a(this),c=b.is(":checked"),d=b.val();d&&b.parents("#taxonomy-"+e).length&&a("#in-"+e+"-"+d+", #in-popular-"+e+"-"+d).prop("checked",c)})}),a("#postcustom").length&&a("#the-list").wpList({addAfter:function(){a("table#list-table").show()},addBefore:function(b){return b.data+="&post_id="+a("#post_ID").val(),b}}),a("#submitdiv").length&&(c=a("#timestamp").html(),d=a("#post-visibility-display").html(),f=function(){"public"!=n.find("input:radio:checked").val()?(a("#sticky").prop("checked",!1),a("#sticky-span").hide()):a("#sticky-span").show(),"password"!=n.find("input:radio:checked").val()?a("#password-span").hide():a("#password-span").show()},g=function(){if(!o.length)return!0;var b,d,e,f,g=a("#post_status"),h=a('option[value="publish"]',g),i=a("#aa").val(),j=a("#mm").val(),k=a("#jj").val(),l=a("#hh").val(),m=a("#mn").val();return b=new Date(i,j-1,k,l,m),d=new Date(a("#hidden_aa").val(),a("#hidden_mm").val()-1,a("#hidden_jj").val(),a("#hidden_hh").val(),a("#hidden_mn").val()),e=new Date(a("#cur_aa").val(),a("#cur_mm").val()-1,a("#cur_jj").val(),a("#cur_hh").val(),a("#cur_mn").val()),b.getFullYear()!=i||1+b.getMonth()!=j||b.getDate()!=k||b.getMinutes()!=m?(o.find(".timestamp-wrap").addClass("form-invalid"),!1):(o.find(".timestamp-wrap").removeClass("form-invalid"),b>e&&"future"!=a("#original_post_status").val()?(f=postL10n.publishOnFuture,a("#publish").val(postL10n.schedule)):e>=b&&"publish"!=a("#original_post_status").val()?(f=postL10n.publishOn,a("#publish").val(postL10n.publish)):(f=postL10n.publishOnPast,a("#publish").val(postL10n.update)),d.toUTCString()==b.toUTCString()?a("#timestamp").html(c):a("#timestamp").html("\n"+f+" <b>"+postL10n.dateFormat.replace("%1$s",a('option[value="'+j+'"]',"#mm").attr("data-text")).replace("%2$s",parseInt(k,10)).replace("%3$s",i).replace("%4$s",("00"+l).slice(-2)).replace("%5$s",("00"+m).slice(-2))+"</b> "),"private"==n.find("input:radio:checked").val()?(a("#publish").val(postL10n.update),0===h.length?g.append('<option value="publish">'+postL10n.privatelyPublished+"</option>"):h.html(postL10n.privatelyPublished),a('option[value="publish"]',g).prop("selected",!0),a("#misc-publishing-actions .edit-post-status").hide()):("future"==a("#original_post_status").val()||"draft"==a("#original_post_status").val()?h.length&&(h.remove(),g.val(a("#hidden_post_status").val())):h.html(postL10n.published),g.is(":hidden")&&a("#misc-publishing-actions .edit-post-status").show()),a("#post-status-display").html(a("option:selected",g).text()),"private"==a("option:selected",g).val()||"publish"==a("option:selected",g).val()?a("#save-post").hide():(a("#save-post").show(),"pending"==a("option:selected",g).val()?a("#save-post").show().val(postL10n.savePending):a("#save-post").show().val(postL10n.saveDraft)),!0)},a("#visibility .edit-visibility").click(function(b){b.preventDefault(),n.is(":hidden")&&(f(),n.slideDown("fast",function(){n.find('input[type="radio"]').first().focus()}),a(this).hide())}),n.find(".cancel-post-visibility").click(function(b){n.slideUp("fast"),a("#visibility-radio-"+a("#hidden-post-visibility").val()).prop("checked",!0),a("#post_password").val(a("#hidden-post-password").val()),a("#sticky").prop("checked",a("#hidden-post-sticky").prop("checked")),a("#post-visibility-display").html(d),a("#visibility .edit-visibility").show().focus(),g(),b.preventDefault()}),n.find(".save-post-visibility").click(function(b){n.slideUp("fast"),a("#visibility .edit-visibility").show().focus(),g(),"public"!=n.find("input:radio:checked").val()&&a("#sticky").prop("checked",!1),h=a("#sticky").prop("checked")?"Sticky":"",a("#post-visibility-display").html(postL10n[n.find("input:radio:checked").val()+h]),b.preventDefault()}),n.find("input:radio").change(function(){f()}),o.siblings("a.edit-timestamp").click(function(b){o.is(":hidden")&&(o.slideDown("fast",function(){a("input, select",o.find(".timestamp-wrap")).first().focus()}),a(this).hide()),b.preventDefault()}),o.find(".cancel-timestamp").click(function(b){o.slideUp("fast").siblings("a.edit-timestamp").show().focus(),a("#mm").val(a("#hidden_mm").val()),a("#jj").val(a("#hidden_jj").val()),a("#aa").val(a("#hidden_aa").val()),a("#hh").val(a("#hidden_hh").val()),a("#mn").val(a("#hidden_mn").val()),g(),b.preventDefault()}),o.find(".save-timestamp").click(function(a){g()&&(o.slideUp("fast"),o.siblings("a.edit-timestamp").show().focus()),a.preventDefault()}),a("#post").on("submit",function(b){g()||(b.preventDefault(),o.show(),wp.autosave&&wp.autosave.enableButtons(),a("#publishing-action .spinner").removeClass("is-active"))}),p.siblings("a.edit-post-status").click(function(b){p.is(":hidden")&&(p.slideDown("fast",function(){p.find("select").focus()}),a(this).hide()),b.preventDefault()}),p.find(".save-post-status").click(function(a){p.slideUp("fast").siblings("a.edit-post-status").show().focus(),g(),a.preventDefault()}),p.find(".cancel-post-status").click(function(b){p.slideUp("fast").siblings("a.edit-post-status").show().focus(),a("#post_status").val(a("#hidden_post_status").val()),g(),b.preventDefault()})),a("#titlediv").on("click",".edit-slug",function(){b()}),wptitlehint=function(b){b=b||"title";var c=a("#"+b),d=a("#"+b+"-prompt-text");""===c.val()&&d.removeClass("screen-reader-text"),d.click(function(){a(this).addClass("screen-reader-text"),c.focus()}),c.blur(function(){""===this.value&&d.removeClass("screen-reader-text")}).focus(function(){d.addClass("screen-reader-text")}).keydown(function(b){d.addClass("screen-reader-text"),a(this).unbind(b)})},wptitlehint(),function(){function b(a){h.hasClass("wp-editor-expand")||(f?d.theme.resizeTo(null,e+a.pageY):i.height(Math.max(50,e+a.pageY)),a.preventDefault())}function c(){var b,c;h.hasClass("wp-editor-expand")||(f?(d.focus(),c=parseInt(a("#wp-content-editor-container .mce-toolbar-grp").height(),10),(10>c||c>200)&&(c=30),b=parseInt(a("#content_ifr").css("height"),10)+c-28):(i.focus(),b=parseInt(i.css("height"),10)),j.off(".wp-editor-resize"),b&&b>50&&5e3>b&&setUserSetting("ed_size",b))}var d,e,f,g=a("#post-status-info"),h=a("#postdivrich");return!i.length||"ontouchstart"in window?void a("#content-resize-handle").hide():void g.on("mousedown.wp-editor-resize",function(g){"undefined"!=typeof tinymce&&(d=tinymce.get("content")),d&&!d.isHidden()?(f=!0,e=a("#content_ifr").height()-g.pageY):(f=!1,e=i.height()-g.pageY,i.blur()),j.on("mousemove.wp-editor-resize",b).on("mouseup.wp-editor-resize mouseleave.wp-editor-resize",c),g.preventDefault()}).on("mouseup.wp-editor-resize",c)}(),"undefined"!=typeof tinymce&&a("#post-formats-select input.post-format").on("change.set-editor-class",function(){var b,c,d=this.id;d&&a(this).prop("checked")&&(b=tinymce.get("content"))&&(c=b.getBody(),c.className=c.className.replace(/\bpost-format-[^ ]+/,""),b.dom.addClass(c,"post-format-0"==d?"post-format-standard":d),a(document).trigger("editor-classchange"))}),i.on("keydown.wp-autosave",function(a){if(83===a.which){if(a.shiftKey||a.altKey||q&&(!a.metaKey||a.ctrlKey)||!q&&!a.ctrlKey)return;wp.autosave&&wp.autosave.server.triggerSave(),a.preventDefault()}}),"auto-draft"===a("#original_post_status").val()&&window.history.replaceState){var r;a("#publish").on("click",function(){r=window.location.href,r+=-1!==r.indexOf("?")?"&":"?",r+="wp-post-new-reload=true",window.history.replaceState(null,null,r)})}}),function(a,b){a(function(){function c(){var a,c;a=!d||d.isHidden()?e.val():d.getContent({format:"raw"}),c=b.count(a),c!==g&&f.text(c),g=c}var d,e=a("#content"),f=a("#wp-word-count").find(".word-count"),g=0;a(document).on("tinymce-editor-init",function(a,b){"content"===b.id&&(d=b,b.on("nodechange keyup",_.debounce(c,1e3)))}),e.on("input keyup",_.debounce(c,1e3)),c()})}(jQuery,new wp.utils.WordCounter);
\ No newline at end of file
index 07e5ed25b3080b380ef7b1d01e85a0542bc9ec08..4fe74193bbd830617557dcff3a7f834e82593fa3 100644 (file)
@@ -6,57 +6,80 @@ var postboxes;
        var $document = $( document );
 
        postboxes = {
-               add_postbox_toggles : function(page, args) {
-                       var self = this;
-
-                       self.init(page, args);
+               handle_click : function () {
+                       var $el = $( this ),
+                               p = $el.parent( '.postbox' ),
+                               id = p.attr( 'id' ),
+                               ariaExpandedValue;
+
+                       if ( 'dashboard_browser_nag' === id ) {
+                               return;
+                       }
 
-                       $('.postbox .hndle, .postbox .handlediv').bind('click.postboxes', function() {
-                               var p = $(this).parent('.postbox'), id = p.attr('id');
+                       p.toggleClass( 'closed' );
 
-                               if ( 'dashboard_browser_nag' == id )
-                                       return;
+                       ariaExpandedValue = ! p.hasClass( 'closed' );
 
-                               p.toggleClass('closed');
+                       if ( $el.hasClass( 'handlediv' ) ) {
+                               // The handle button was clicked.
+                               $el.attr( 'aria-expanded', ariaExpandedValue );
+                       } else {
+                               // The handle heading was clicked.
+                               $el.closest( '.postbox' ).find( 'button.handlediv' )
+                                       .attr( 'aria-expanded', ariaExpandedValue );
+                       }
 
-                               if ( page != 'press-this' )
-                                       self.save_state(page);
+                       if ( postboxes.page !== 'press-this' ) {
+                               postboxes.save_state( postboxes.page );
+                       }
 
-                               if ( id ) {
-                                       if ( !p.hasClass('closed') && $.isFunction(postboxes.pbshow) )
-                                               self.pbshow(id);
-                                       else if ( p.hasClass('closed') && $.isFunction(postboxes.pbhide) )
-                                               self.pbhide(id);
+                       if ( id ) {
+                               if ( !p.hasClass('closed') && $.isFunction( postboxes.pbshow ) ) {
+                                       postboxes.pbshow( id );
+                               } else if ( p.hasClass('closed') && $.isFunction( postboxes.pbhide ) ) {
+                                       postboxes.pbhide( id );
                                }
+                       }
 
-                               $document.trigger( 'postbox-toggled', p );
-                       });
+                       $document.trigger( 'postbox-toggled', p );
+               },
+
+               add_postbox_toggles : function (page, args) {
+                       var $handles = $( '.postbox .hndle, .postbox .handlediv' );
+
+                       this.page = page;
+                       this.init( page, args );
+
+                       $handles.on( 'click.postboxes',  this.handle_click );
 
                        $('.postbox .hndle a').click( function(e) {
                                e.stopPropagation();
                        });
 
-                       $( '.postbox a.dismiss' ).bind( 'click.postboxes', function() {
+                       $( '.postbox a.dismiss' ).on( 'click.postboxes', function( e ) {
                                var hide_id = $(this).parents('.postbox').attr('id') + '-hide';
+                               e.preventDefault();
                                $( '#' + hide_id ).prop('checked', false).triggerHandler('click');
-                               return false;
                        });
 
                        $('.hide-postbox-tog').bind('click.postboxes', function() {
-                               var boxId = $(this).val(),
+                               var $el = $(this),
+                                       boxId = $el.val(),
                                        $postbox = $( '#' + boxId );
 
-                               if ( $(this).prop('checked') ) {
+                               if ( $el.prop( 'checked' ) ) {
                                        $postbox.show();
-                                       if ( $.isFunction( postboxes.pbshow ) )
-                                               self.pbshow( boxId );
+                                       if ( $.isFunction( postboxes.pbshow ) ) {
+                                               postboxes.pbshow( boxId );
+                                       }
                                } else {
                                        $postbox.hide();
-                                       if ( $.isFunction( postboxes.pbhide ) )
-                                               self.pbhide( boxId );
+                                       if ( $.isFunction( postboxes.pbhide ) ) {
+                                               postboxes.pbhide( boxId );
+                                       }
                                }
-                               self.save_state(page);
-                               self._mark_area();
+                               postboxes.save_state( page );
+                               postboxes._mark_area();
                                $document.trigger( 'postbox-toggled', $postbox );
                        });
 
@@ -64,14 +87,15 @@ var postboxes;
                                var n = parseInt($(this).val(), 10);
 
                                if ( n ) {
-                                       self._pb_edit(n);
-                                       self.save_order(page);
+                                       postboxes._pb_edit(n);
+                                       postboxes.save_order( page );
                                }
                        });
                },
 
                init : function(page, args) {
-                       var isMobile = $(document.body).hasClass('mobile');
+                       var isMobile = $( document.body ).hasClass( 'mobile' ),
+                               $handleButtons = $( '.postbox .handlediv' );
 
                        $.extend( this, args || {} );
                        $('#wpbody-content').css('overflow','hidden');
@@ -88,8 +112,10 @@ var postboxes;
                                helper: 'clone',
                                opacity: 0.65,
                                stop: function() {
-                                       if ( $(this).find('#dashboard_browser_nag').is(':visible') && 'dashboard_browser_nag' != this.firstChild.id ) {
-                                               $(this).sortable('cancel');
+                                       var $el = $( this );
+
+                                       if ( $el.find( '#dashboard_browser_nag' ).is( ':visible' ) && 'dashboard_browser_nag' != this.firstChild.id ) {
+                                               $el.sortable('cancel');
                                                return;
                                        }
 
@@ -109,6 +135,12 @@ var postboxes;
                        }
 
                        this._mark_area();
+
+                       // Set the handle buttons `aria-expanded` attribute initial value on page load.
+                       $handleButtons.each( function () {
+                               var $el = $( this );
+                               $el.attr( 'aria-expanded', ! $el.parent( '.postbox' ).hasClass( 'closed' ) );
+                       });
                },
 
                save_state : function(page) {
index 3cbd15ba5710f893a159ce8bdbf5b8f44cc848f9..077a5e3a149643137b910e612fc53b27cc10446f 100644 (file)
@@ -1 +1 @@
-var postboxes;!function(a){var b=a(document);postboxes={add_postbox_toggles:function(c,d){var e=this;e.init(c,d),a(".postbox .hndle, .postbox .handlediv").bind("click.postboxes",function(){var d=a(this).parent(".postbox"),f=d.attr("id");"dashboard_browser_nag"!=f&&(d.toggleClass("closed"),"press-this"!=c&&e.save_state(c),f&&(!d.hasClass("closed")&&a.isFunction(postboxes.pbshow)?e.pbshow(f):d.hasClass("closed")&&a.isFunction(postboxes.pbhide)&&e.pbhide(f)),b.trigger("postbox-toggled",d))}),a(".postbox .hndle a").click(function(a){a.stopPropagation()}),a(".postbox a.dismiss").bind("click.postboxes",function(){var b=a(this).parents(".postbox").attr("id")+"-hide";return a("#"+b).prop("checked",!1).triggerHandler("click"),!1}),a(".hide-postbox-tog").bind("click.postboxes",function(){var d=a(this).val(),f=a("#"+d);a(this).prop("checked")?(f.show(),a.isFunction(postboxes.pbshow)&&e.pbshow(d)):(f.hide(),a.isFunction(postboxes.pbhide)&&e.pbhide(d)),e.save_state(c),e._mark_area(),b.trigger("postbox-toggled",f)}),a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var b=parseInt(a(this).val(),10);b&&(e._pb_edit(b),e.save_order(c))})},init:function(b,c){var d=a(document.body).hasClass("mobile");a.extend(this,c||{}),a("#wpbody-content").css("overflow","hidden"),a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:d?200:0,distance:2,tolerance:"pointer",forcePlaceholderSize:!0,helper:"clone",opacity:.65,stop:function(){return a(this).find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id?void a(this).sortable("cancel"):void postboxes.save_order(b)},receive:function(b,c){"dashboard_browser_nag"==c.item[0].id&&a(c.sender).sortable("cancel"),postboxes._mark_area()}}),d&&(a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()}),this._pb_change()),this._mark_area()},save_state:function(b){var c=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),d=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"closed-postboxes",closed:c,hidden:d,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:b})},save_order:function(b){var c,d=a(".columns-prefs input:checked").val()||0;c={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:b},a(".meta-box-sortables").each(function(){c["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")}),a.post(ajaxurl,c)},_mark_area:function(){var b=a("div.postbox:visible").length,c=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(){var c=a(this);1==b||c.children(".postbox:visible").length?c.removeClass("empty-container"):c.addClass("empty-container")}),c.length&&(c.children(".postbox:visible").length?c.removeClass("empty-container"):"280px"==a("#postbox-container-1").css("width")&&c.addClass("empty-container"))},_pb_edit:function(b){var c=a(".metabox-holder").get(0);c&&(c.className=c.className.replace(/columns-\d+/,"columns-"+b)),a(document).trigger("postboxes-columnchange")},_pb_change:function(){var b=a('label.columns-prefs-1 input[type="radio"]');switch(window.orientation){case 90:case-90:b.length&&b.is(":checked")||this._pb_edit(2);break;case 0:case 180:a("#poststuff").length?this._pb_edit(1):b.length&&b.is(":checked")||this._pb_edit(2)}},pbshow:!1,pbhide:!1}}(jQuery);
\ No newline at end of file
+var postboxes;!function(a){var b=a(document);postboxes={handle_click:function(){var c,d=a(this),e=d.parent(".postbox"),f=e.attr("id");"dashboard_browser_nag"!==f&&(e.toggleClass("closed"),c=!e.hasClass("closed"),d.hasClass("handlediv")?d.attr("aria-expanded",c):d.closest(".postbox").find("button.handlediv").attr("aria-expanded",c),"press-this"!==postboxes.page&&postboxes.save_state(postboxes.page),f&&(!e.hasClass("closed")&&a.isFunction(postboxes.pbshow)?postboxes.pbshow(f):e.hasClass("closed")&&a.isFunction(postboxes.pbhide)&&postboxes.pbhide(f)),b.trigger("postbox-toggled",e))},add_postbox_toggles:function(c,d){var e=a(".postbox .hndle, .postbox .handlediv");this.page=c,this.init(c,d),e.on("click.postboxes",this.handle_click),a(".postbox .hndle a").click(function(a){a.stopPropagation()}),a(".postbox a.dismiss").on("click.postboxes",function(b){var c=a(this).parents(".postbox").attr("id")+"-hide";b.preventDefault(),a("#"+c).prop("checked",!1).triggerHandler("click")}),a(".hide-postbox-tog").bind("click.postboxes",function(){var d=a(this),e=d.val(),f=a("#"+e);d.prop("checked")?(f.show(),a.isFunction(postboxes.pbshow)&&postboxes.pbshow(e)):(f.hide(),a.isFunction(postboxes.pbhide)&&postboxes.pbhide(e)),postboxes.save_state(c),postboxes._mark_area(),b.trigger("postbox-toggled",f)}),a('.columns-prefs input[type="radio"]').bind("click.postboxes",function(){var b=parseInt(a(this).val(),10);b&&(postboxes._pb_edit(b),postboxes.save_order(c))})},init:function(b,c){var d=a(document.body).hasClass("mobile"),e=a(".postbox .handlediv");a.extend(this,c||{}),a("#wpbody-content").css("overflow","hidden"),a(".meta-box-sortables").sortable({placeholder:"sortable-placeholder",connectWith:".meta-box-sortables",items:".postbox",handle:".hndle",cursor:"move",delay:d?200:0,distance:2,tolerance:"pointer",forcePlaceholderSize:!0,helper:"clone",opacity:.65,stop:function(){var c=a(this);return c.find("#dashboard_browser_nag").is(":visible")&&"dashboard_browser_nag"!=this.firstChild.id?void c.sortable("cancel"):void postboxes.save_order(b)},receive:function(b,c){"dashboard_browser_nag"==c.item[0].id&&a(c.sender).sortable("cancel"),postboxes._mark_area()}}),d&&(a(document.body).bind("orientationchange.postboxes",function(){postboxes._pb_change()}),this._pb_change()),this._mark_area(),e.each(function(){var b=a(this);b.attr("aria-expanded",!b.parent(".postbox").hasClass("closed"))})},save_state:function(b){var c=a(".postbox").filter(".closed").map(function(){return this.id}).get().join(","),d=a(".postbox").filter(":hidden").map(function(){return this.id}).get().join(",");a.post(ajaxurl,{action:"closed-postboxes",closed:c,hidden:d,closedpostboxesnonce:jQuery("#closedpostboxesnonce").val(),page:b})},save_order:function(b){var c,d=a(".columns-prefs input:checked").val()||0;c={action:"meta-box-order",_ajax_nonce:a("#meta-box-order-nonce").val(),page_columns:d,page:b},a(".meta-box-sortables").each(function(){c["order["+this.id.split("-")[0]+"]"]=a(this).sortable("toArray").join(",")}),a.post(ajaxurl,c)},_mark_area:function(){var b=a("div.postbox:visible").length,c=a("#post-body #side-sortables");a("#dashboard-widgets .meta-box-sortables:visible").each(function(){var c=a(this);1==b||c.children(".postbox:visible").length?c.removeClass("empty-container"):c.addClass("empty-container")}),c.length&&(c.children(".postbox:visible").length?c.removeClass("empty-container"):"280px"==a("#postbox-container-1").css("width")&&c.addClass("empty-container"))},_pb_edit:function(b){var c=a(".metabox-holder").get(0);c&&(c.className=c.className.replace(/columns-\d+/,"columns-"+b)),a(document).trigger("postboxes-columnchange")},_pb_change:function(){var b=a('label.columns-prefs-1 input[type="radio"]');switch(window.orientation){case 90:case-90:b.length&&b.is(":checked")||this._pb_edit(2);break;case 0:case 180:a("#poststuff").length?this._pb_edit(1):b.length&&b.is(":checked")||this._pb_edit(2)}},pbshow:!1,pbhide:!1}}(jQuery);
\ No newline at end of file
index beaca67224cf1eb05d2904a113b31918a22fa498..bf2e8300dfefec08fe557cc48f963df5e8824fd9 100644 (file)
                                        link = src;
                                }
 
-                               newContent = '<a href="' + link + '"><img class="alignnone size-full" src="' + src + '" /></a>';
+                               newContent = '<a href="' + link + '"><img class="alignnone size-full" src="' + src + '" alt="" /></a>';
                        } else {
                                newContent = '[embed]' + src + '[/embed]';
                        }
 
                        // Publish, Draft and Preview buttons
                        $( '.post-actions' ).on( 'click.press-this', function( event ) {
-                               var $target = $( event.target ),
+                               var location,
+                                       $target = $( event.target ),
                                        $button = $target.closest( 'button' );
 
                                if ( $button.length ) {
                                                submitPost( 'draft' );
                                        } else if ( $button.hasClass( 'publish-button' ) ) {
                                                $button.addClass( 'is-saving' );
+
+                                               if ( window.history.replaceState ) {
+                                                       location = window.location.href;
+                                                       location += ( location.indexOf( '?' ) !== -1 ) ? '&' : '?';
+                                                       location += 'wp-press-this-reload=true';
+
+                                                       window.history.replaceState( null, null, location );
+                                               }
+
                                                submitPost( 'publish' );
                                        } else if ( $button.hasClass( 'preview-button' ) ) {
                                                prepareFormData();
index f4c7556cf9270d9cab526e5b5278835c2d375d06..cb22aba3dfb358e730621139490cd5b47b974d3a 100644 (file)
@@ -1 +1 @@
-!function(a,b){var c=function(){function c(a){return a&&b.pressThisL10n?b.pressThisL10n[a]||a:a||""}function d(a){return a=a||"",a.replace(/<!--[\s\S]*?(-->|$)/g,"").replace(/<(script|style)[^>]*>[\s\S]*?(<\/\1>|$)/gi,"").replace(/<\/?[a-z][\s\S]*?(>|$)/gi,"")}function e(a){var b=d(a);try{O.innerHTML=b,b=d(O.value)}catch(c){}return b}function f(b){return b=a.trim(b||""),/^(?:https?:)?\/\//.test(b)?(b=d(b),b.replace(/["\\]+/g,"")):""}function g(){a(".spinner").addClass("is-active"),a(".post-actions button").attr("disabled","disabled")}function h(){a(".spinner").removeClass("is-active"),a(".post-actions button").removeAttr("disabled")}function i(a){var c,d;(!I||I.isHidden())&&(a="reset"===a||aa&&aa>$.value.length,d=$.style.height,a?(c=b.pageYOffset,$.style.height="auto",$.style.height=Math.max($.scrollHeight,_)+"px",b.scrollTo(b.pageXOffset,c)):parseInt($.style.height,10)<$.scrollHeight&&($.style.height=$.scrollHeight+"px"),aa=$.value.length)}function j(){if(!I)return!1;var a,b,c,d=I.selection.getNode();if(I.wp&&I.wp.getView&&(b=I.wp.getView(d)))c=b.getBoundingClientRect();else{a=I.selection.getRng();try{c=a.getClientRects()[0]}catch(e){}c||(c=d.getBoundingClientRect())}return c.height?c:!1}function k(a){var c=b.tinymce.util.VK,d=a.keyCode;47>=d&&d!==c.SPACEBAR&&d!==c.ENTER&&d!==c.DELETE&&d!==c.BACKSPACE&&d!==c.UP&&d!==c.LEFT&&d!==c.DOWN&&d!==c.UP||d>=91&&93>=d||d>=112&&123>=d||144===d||145===d||l(d)}function l(a){var c,d,e,f=j(),g=50,h=65,i=b.tinymce.util.VK;f&&(c=f.top+I.iframeElement.getBoundingClientRect().top,d=c+f.height,c-=g,d+=h,e=L.height(),e<f.height||(0>c&&(a===i.UP||a===i.LEFT||a===i.BACKSPACE)?b.scrollTo(b.pageXOffset,c+b.pageYOffset):d>e&&b.scrollTo(b.pageXOffset,d+b.pageYOffset-e)))}function m(){var b=a("#title-container");return b.find("img.emoji").each(function(){var b=a(this);b.replaceWith(a("<span>").text(b.attr("alt")))}),e(b.text())}function n(){var c=a("#pressthis-form"),d=a('<input type="hidden" name="post_category[]" value="">');I&&I.save(),a("#post_title").val(m()),b.tagBox&&a("div.tagsdiv").each(function(){b.tagBox.flushTags(this,!1,1)}),a(".categories-select .category").each(function(b,e){var f=a(e);f.hasClass("selected")&&c.append(d.clone().val(f.attr("data-term-id")||""))})}function o(d){var e;N=!1,g(),"publish"===d&&a("#post_status").val("publish"),n(),e=a("#pressthis-form").serialize(),a.ajax({type:"post",url:b.ajaxurl,data:e}).always(function(){h(),u(),a(".publish-button").removeClass("is-saving")}).done(function(a){if(a.success){if(a.data.redirect)if(b.opener&&(Q.redirInParent||a.data.force))try{b.opener.location.href=a.data.redirect,b.setTimeout(function(){b.self.close()},200)}catch(c){b.location.href=a.data.redirect}else b.location.href=a.data.redirect}else t(a.data.errorMessage)}).fail(function(){t(c("serverError"))})}function p(a){var c,d,e="";c=f(a.attr("data-wp-src")||""),d=f(R.u),a.hasClass("is-image")?(d||(d=c),e='<a href="'+d+'"><img class="alignnone size-full" src="'+c+'" /></a>'):e="[embed]"+c+"[/embed]",I&&!I.isHidden()?T?I.execCommand("mceInsertContent",!1,e):I.setContent("<p>"+e+"</p>"+I.getContent()):b.QTags&&b.QTags.insertContent(e)}function q(){var c,d=a("#new-category").val();d&&(c={action:"press-this-add-category",post_id:a("#post_ID").val()||0,name:d,new_cat_nonce:a("#_ajax_nonce-add-category").val()||"",parent:a("#new-category-parent").val()||0},a.post(b.ajaxurl,c,function(b){if(b.success){var c,d,e=a("ul.categories-select");a.each(b.data,function(b,f){var g=a("<li>").append(a('<div class="category selected" tabindex="0" role="checkbox" aria-checked="true">').attr("data-term-id",f.term_id).text(f.name));f.parent?(d&&d.length||(c=e.find('div[data-term-id="'+f.parent+'"]').parent(),d=c.find("ul.children:first"),d.length||(d=a('<ul class="children">').appendTo(c))),d.prepend(g)):e.prepend(g),g.focus()}),H()}else t(b.data.errorMessage)}))}function r(){R.hasData&&a("#scanbar").hide()}function s(b,c){var d=a(".editor-wrapper div.alerts"),e=c?"is-error":"is-notice";d.append(a('<p class="alert '+e+'">').text(b))}function t(a){s(a,!0)}function u(){a("div.alerts").empty()}function v(){R.errors&&a.each(R.errors,function(a,b){t(b)})}function w(a,b,d){var e=K.clone().addClass("is-image");e.attr("data-wp-src",a).css("background-image","url("+b+")").find("span").text(c("suggestedImgAlt").replace("%d",d+1)),J.append(e)}function x(){var b=0;J=a("ul.media-list"),K=a('<li class="suggested-media-thumbnail" tabindex="0"><span class="screen-reader-text"></span></li>'),R._embeds&&a.each(R._embeds,function(a,d){var e="",g="",h=K.clone().addClass("is-embed");d=f(d),d.indexOf("youtube.com/")>-1?(e="https://i.ytimg.com/vi/"+d.replace(/.+v=([^&]+).*/,"$1")+"/hqdefault.jpg",g+=" is-video"):d.indexOf("youtu.be/")>-1?(e="https://i.ytimg.com/vi/"+d.replace(/\/([^\/])$/,"$1")+"/hqdefault.jpg",g+=" is-video"):d.indexOf("dailymotion.com")>-1?(e=d.replace("/video/","/thumbnail/video/"),g+=" is-video"):g+=d.indexOf("soundcloud.com")>-1?" is-audio":d.indexOf("twitter.com")>-1?" is-tweet":" is-video",h.attr("data-wp-src",d).find("span").text(c("suggestedEmbedAlt").replace("%d",a+1)),e&&h.css("background-image","url("+e+")"),J.append(h),b++}),R._images&&a.each(R._images,function(a,c){var d,e=new Image;c=f(c),d=c.replace(/^(http[^\?]+)(\?.*)?$/,"$1"),d=c.indexOf("files.wordpress.com/")>-1?d.replace(/\?.*$/,"")+"?w="+S:c.indexOf("gravatar.com/")>-1?d.replace(/\?.*$/,"")+"?s="+S:c,e.onload=function(){e.width&&e.width<256||e.height&&e.height<128||w(c,d,a)},e.src=c,b++}),b&&a(".media-list-container").addClass("has-media")}function y(){var b=a(".post-options"),c=a(".post-option"),d=a(".setting-modal"),e=a(".modal-close");c.on("click",function(){var c=a(this).index(),e=d.eq(c);b.addClass(V).one(ba,function(){a(this).addClass(W)}),e.removeClass(X).one(ba,function(){a(this).find(".modal-close").focus()})}),e.on("click",function(){var d=a(this).parent(),e=d.index();b.removeClass(X),d.addClass(V),ba?d.one(ba,function(){a(this).addClass(W),c.eq(e-1).focus()}):setTimeout(function(){d.addClass(W),c.eq(e-1).focus()},350)})}function z(){P=!0,a(".options").removeClass("closed").addClass("open"),a(".press-this-actions, #scanbar").addClass(W),a(".options-panel-back").removeClass(W),a(".options-panel").removeClass(X).one(ba,function(){a(".post-option:first").focus()})}function A(){P=!1,a(".options").removeClass("open").addClass("closed"),a(".options-panel-back").addClass(W),a(".press-this-actions, #scanbar").removeClass(W),a(".options-panel").addClass(V).one(ba,function(){a(this).addClass(W),a(".post-options").removeClass(X),a(".setting-modal").addClass(X)})}function B(){var c=a("#title-container"),d=a(".post-title-placeholder");c.on("focus",function(){d.addClass("is-hidden")}).on("blur",function(){c.text()||c.html()||d.removeClass("is-hidden")}).on("keyup",function(){N=!0}).on("paste",function(d){var e,f,g=d.originalEvent.clipboardData||b.clipboardData;if(g){try{e=g.getData("Text")||g.getData("text/plain"),e&&(e=a.trim(e.replace(/\s+/g," ")),b.getSelection?(f=b.getSelection().getRangeAt(0),f&&(f.collapsed||f.deleteContents(),f.insertNode(document.createTextNode(e)))):document.selection&&(f=document.selection.createRange(),f&&(f.text=e)))}catch(h){}d.preventDefault()}N=!0,setTimeout(function(){c.text(m())},50)}),(c.text()||c.html())&&d.addClass("is-hidden")}function C(a){a.hasClass("selected")?a.removeClass("selected").attr("aria-checked","false"):a.addClass("selected").attr("aria-checked","true")}function D(){a(".categories-select").on("click.press-this keydown.press-this",function(b){var c=a(b.target);if(c.is("div.category")){if("keydown"===b.type&&32!==b.keyCode)return;C(c),b.preventDefault()}})}function E(){a(".split-button").removeClass("is-open"),a(".split-button-toggle").attr("aria-expanded","false")}function F(){r(),x(),v(),b.tagBox&&b.tagBox.init(),Y&&a(document.body).css("cursor","pointer")}function G(){var d=a(".split-button");return M.on("tinymce-editor-init",function(a,b){I=b,I.on("nodechange",function(){T=!0}),I.on("focus",function(){E()}),I.on("show",function(){setTimeout(function(){I.execCommand("wpAutoResize")},300)}),I.on("hide",function(){setTimeout(function(){i("reset")},100)}),I.on("keyup",k),I.on("undo redo",l)}).on("click.press-this keypress.press-this",".suggested-media-thumbnail",function(b){("click"===b.type||13===b.keyCode)&&p(a(this))}).on("click.press-this",function(b){a(b.target).closest("button").hasClass("split-button-toggle")||E()}),a(".post-actions").on("click.press-this",function(c){var e=a(c.target),f=e.closest("button");f.length&&(f.hasClass("draft-button")?(a(".publish-button").addClass("is-saving"),o("draft")):f.hasClass("publish-button")?(f.addClass("is-saving"),o("publish")):f.hasClass("preview-button")?(n(),b.opener&&b.opener.focus(),a("#wp-preview").val("dopreview"),a("#pressthis-form").attr("target","_blank").submit().attr("target",""),a("#wp-preview").val("")):f.hasClass("standard-editor-button")?(a(".publish-button").addClass("is-saving"),a("#pt-force-redirect").val("true"),o("draft")):f.hasClass("split-button-toggle")&&(d.hasClass("is-open")?(d.removeClass("is-open"),f.attr("aria-expanded","false")):(d.addClass("is-open"),f.attr("aria-expanded","true"))))}),y(),B(),D(),a(".options").on("click.press-this",function(){a(this).hasClass("open")?A():z()}),a(".options-panel, .options-panel-back").on("focusout.press-this",function(){setTimeout(function(){var b=document.activeElement,c=a(b);!P||!b||c.hasClass("options-panel-back")||"BODY"!==b.nodeName&&(c.closest(".options-panel").length||c.closest(".options").length)||A()},50)}),a("#post-formats-select input").on("change",function(){var b=a(this);b.is(":checked")&&a("#post-option-post-format").text(a('label[for="'+b.attr("id")+'"]').text()||"")}),L.on("beforeunload.press-this",function(){return N||I&&I.isDirty()?c("saveAlert"):void 0}).on("resize.press-this",function(){(!I||I.isHidden())&&i("reset")}),a("button.add-cat-toggle").on("click.press-this",function(){var b=a(this);b.toggleClass("is-toggled"),b.attr("aria-expanded","false"===b.attr("aria-expanded")?"true":"false"),a(".setting-modal .add-category, .categories-search-wrapper").toggleClass("is-hidden")}),a("button.add-cat-submit").on("click.press-this",q),a(".categories-search").on("keyup.press-this",function(){var b=a(this).val().toLowerCase()||"";/[\x20-\xFF]+/.test(b)&&b.length<2||(a.each(U,function(a,b){b.node.removeClass("is-hidden searched-parent")}),b&&a.each(U,function(a,c){-1===c.text.indexOf(b)?c.node.addClass("is-hidden"):c.parents.addClass("searched-parent")}))}),Z.on("focus.press-this input.press-this propertychange.press-this",i),!0}function H(){a(".categories-select").find("li").each(function(){var b=a(this);U.push({node:b,parents:b.parents("li"),text:b.children(".category").text().toLowerCase()})})}var I,J,K,L=a(b),M=a(document),N=!1,O=document.createElement("textarea"),P=!1,Q=b.wpPressThisConfig||{},R=b.wpPressThisData||{},S=128,T=!1,U=[],V="is-off-screen",W="is-hidden",X=V+" "+W,Y=/iPad|iPod|iPhone/.test(b.navigator.userAgent),Z=a("#pressthis"),$=Z[0],_=600,aa=0,ba=function(){var a=document.documentElement.style;return"undefined"!=typeof a.transition?"transitionend":"undefined"!=typeof a.WebkitTransition?"webkitTransitionEnd":!1}();return M.ready(function(){F(),G(),H()}),{renderNotice:s,renderError:t}};b.wp=b.wp||{},b.wp.pressThis=new c}(jQuery,window);
\ No newline at end of file
+!function(a,b){var c=function(){function c(a){return a&&b.pressThisL10n?b.pressThisL10n[a]||a:a||""}function d(a){return a=a||"",a.replace(/<!--[\s\S]*?(-->|$)/g,"").replace(/<(script|style)[^>]*>[\s\S]*?(<\/\1>|$)/gi,"").replace(/<\/?[a-z][\s\S]*?(>|$)/gi,"")}function e(a){var b=d(a);try{O.innerHTML=b,b=d(O.value)}catch(c){}return b}function f(b){return b=a.trim(b||""),/^(?:https?:)?\/\//.test(b)?(b=d(b),b.replace(/["\\]+/g,"")):""}function g(){a(".spinner").addClass("is-active"),a(".post-actions button").attr("disabled","disabled")}function h(){a(".spinner").removeClass("is-active"),a(".post-actions button").removeAttr("disabled")}function i(a){var c,d;(!I||I.isHidden())&&(a="reset"===a||aa&&aa>$.value.length,d=$.style.height,a?(c=b.pageYOffset,$.style.height="auto",$.style.height=Math.max($.scrollHeight,_)+"px",b.scrollTo(b.pageXOffset,c)):parseInt($.style.height,10)<$.scrollHeight&&($.style.height=$.scrollHeight+"px"),aa=$.value.length)}function j(){if(!I)return!1;var a,b,c,d=I.selection.getNode();if(I.wp&&I.wp.getView&&(b=I.wp.getView(d)))c=b.getBoundingClientRect();else{a=I.selection.getRng();try{c=a.getClientRects()[0]}catch(e){}c||(c=d.getBoundingClientRect())}return c.height?c:!1}function k(a){var c=b.tinymce.util.VK,d=a.keyCode;47>=d&&d!==c.SPACEBAR&&d!==c.ENTER&&d!==c.DELETE&&d!==c.BACKSPACE&&d!==c.UP&&d!==c.LEFT&&d!==c.DOWN&&d!==c.UP||d>=91&&93>=d||d>=112&&123>=d||144===d||145===d||l(d)}function l(a){var c,d,e,f=j(),g=50,h=65,i=b.tinymce.util.VK;f&&(c=f.top+I.iframeElement.getBoundingClientRect().top,d=c+f.height,c-=g,d+=h,e=L.height(),e<f.height||(0>c&&(a===i.UP||a===i.LEFT||a===i.BACKSPACE)?b.scrollTo(b.pageXOffset,c+b.pageYOffset):d>e&&b.scrollTo(b.pageXOffset,d+b.pageYOffset-e)))}function m(){var b=a("#title-container");return b.find("img.emoji").each(function(){var b=a(this);b.replaceWith(a("<span>").text(b.attr("alt")))}),e(b.text())}function n(){var c=a("#pressthis-form"),d=a('<input type="hidden" name="post_category[]" value="">');I&&I.save(),a("#post_title").val(m()),b.tagBox&&a("div.tagsdiv").each(function(){b.tagBox.flushTags(this,!1,1)}),a(".categories-select .category").each(function(b,e){var f=a(e);f.hasClass("selected")&&c.append(d.clone().val(f.attr("data-term-id")||""))})}function o(d){var e;N=!1,g(),"publish"===d&&a("#post_status").val("publish"),n(),e=a("#pressthis-form").serialize(),a.ajax({type:"post",url:b.ajaxurl,data:e}).always(function(){h(),u(),a(".publish-button").removeClass("is-saving")}).done(function(a){if(a.success){if(a.data.redirect)if(b.opener&&(Q.redirInParent||a.data.force))try{b.opener.location.href=a.data.redirect,b.setTimeout(function(){b.self.close()},200)}catch(c){b.location.href=a.data.redirect}else b.location.href=a.data.redirect}else t(a.data.errorMessage)}).fail(function(){t(c("serverError"))})}function p(a){var c,d,e="";c=f(a.attr("data-wp-src")||""),d=f(R.u),a.hasClass("is-image")?(d||(d=c),e='<a href="'+d+'"><img class="alignnone size-full" src="'+c+'" alt="" /></a>'):e="[embed]"+c+"[/embed]",I&&!I.isHidden()?T?I.execCommand("mceInsertContent",!1,e):I.setContent("<p>"+e+"</p>"+I.getContent()):b.QTags&&b.QTags.insertContent(e)}function q(){var c,d=a("#new-category").val();d&&(c={action:"press-this-add-category",post_id:a("#post_ID").val()||0,name:d,new_cat_nonce:a("#_ajax_nonce-add-category").val()||"",parent:a("#new-category-parent").val()||0},a.post(b.ajaxurl,c,function(b){if(b.success){var c,d,e=a("ul.categories-select");a.each(b.data,function(b,f){var g=a("<li>").append(a('<div class="category selected" tabindex="0" role="checkbox" aria-checked="true">').attr("data-term-id",f.term_id).text(f.name));f.parent?(d&&d.length||(c=e.find('div[data-term-id="'+f.parent+'"]').parent(),d=c.find("ul.children:first"),d.length||(d=a('<ul class="children">').appendTo(c))),d.prepend(g)):e.prepend(g),g.focus()}),H()}else t(b.data.errorMessage)}))}function r(){R.hasData&&a("#scanbar").hide()}function s(b,c){var d=a(".editor-wrapper div.alerts"),e=c?"is-error":"is-notice";d.append(a('<p class="alert '+e+'">').text(b))}function t(a){s(a,!0)}function u(){a("div.alerts").empty()}function v(){R.errors&&a.each(R.errors,function(a,b){t(b)})}function w(a,b,d){var e=K.clone().addClass("is-image");e.attr("data-wp-src",a).css("background-image","url("+b+")").find("span").text(c("suggestedImgAlt").replace("%d",d+1)),J.append(e)}function x(){var b=0;J=a("ul.media-list"),K=a('<li class="suggested-media-thumbnail" tabindex="0"><span class="screen-reader-text"></span></li>'),R._embeds&&a.each(R._embeds,function(a,d){var e="",g="",h=K.clone().addClass("is-embed");d=f(d),d.indexOf("youtube.com/")>-1?(e="https://i.ytimg.com/vi/"+d.replace(/.+v=([^&]+).*/,"$1")+"/hqdefault.jpg",g+=" is-video"):d.indexOf("youtu.be/")>-1?(e="https://i.ytimg.com/vi/"+d.replace(/\/([^\/])$/,"$1")+"/hqdefault.jpg",g+=" is-video"):d.indexOf("dailymotion.com")>-1?(e=d.replace("/video/","/thumbnail/video/"),g+=" is-video"):g+=d.indexOf("soundcloud.com")>-1?" is-audio":d.indexOf("twitter.com")>-1?" is-tweet":" is-video",h.attr("data-wp-src",d).find("span").text(c("suggestedEmbedAlt").replace("%d",a+1)),e&&h.css("background-image","url("+e+")"),J.append(h),b++}),R._images&&a.each(R._images,function(a,c){var d,e=new Image;c=f(c),d=c.replace(/^(http[^\?]+)(\?.*)?$/,"$1"),d=c.indexOf("files.wordpress.com/")>-1?d.replace(/\?.*$/,"")+"?w="+S:c.indexOf("gravatar.com/")>-1?d.replace(/\?.*$/,"")+"?s="+S:c,e.onload=function(){e.width&&e.width<256||e.height&&e.height<128||w(c,d,a)},e.src=c,b++}),b&&a(".media-list-container").addClass("has-media")}function y(){var b=a(".post-options"),c=a(".post-option"),d=a(".setting-modal"),e=a(".modal-close");c.on("click",function(){var c=a(this).index(),e=d.eq(c);b.addClass(V).one(ba,function(){a(this).addClass(W)}),e.removeClass(X).one(ba,function(){a(this).find(".modal-close").focus()})}),e.on("click",function(){var d=a(this).parent(),e=d.index();b.removeClass(X),d.addClass(V),ba?d.one(ba,function(){a(this).addClass(W),c.eq(e-1).focus()}):setTimeout(function(){d.addClass(W),c.eq(e-1).focus()},350)})}function z(){P=!0,a(".options").removeClass("closed").addClass("open"),a(".press-this-actions, #scanbar").addClass(W),a(".options-panel-back").removeClass(W),a(".options-panel").removeClass(X).one(ba,function(){a(".post-option:first").focus()})}function A(){P=!1,a(".options").removeClass("open").addClass("closed"),a(".options-panel-back").addClass(W),a(".press-this-actions, #scanbar").removeClass(W),a(".options-panel").addClass(V).one(ba,function(){a(this).addClass(W),a(".post-options").removeClass(X),a(".setting-modal").addClass(X)})}function B(){var c=a("#title-container"),d=a(".post-title-placeholder");c.on("focus",function(){d.addClass("is-hidden")}).on("blur",function(){c.text()||c.html()||d.removeClass("is-hidden")}).on("keyup",function(){N=!0}).on("paste",function(d){var e,f,g=d.originalEvent.clipboardData||b.clipboardData;if(g){try{e=g.getData("Text")||g.getData("text/plain"),e&&(e=a.trim(e.replace(/\s+/g," ")),b.getSelection?(f=b.getSelection().getRangeAt(0),f&&(f.collapsed||f.deleteContents(),f.insertNode(document.createTextNode(e)))):document.selection&&(f=document.selection.createRange(),f&&(f.text=e)))}catch(h){}d.preventDefault()}N=!0,setTimeout(function(){c.text(m())},50)}),(c.text()||c.html())&&d.addClass("is-hidden")}function C(a){a.hasClass("selected")?a.removeClass("selected").attr("aria-checked","false"):a.addClass("selected").attr("aria-checked","true")}function D(){a(".categories-select").on("click.press-this keydown.press-this",function(b){var c=a(b.target);if(c.is("div.category")){if("keydown"===b.type&&32!==b.keyCode)return;C(c),b.preventDefault()}})}function E(){a(".split-button").removeClass("is-open"),a(".split-button-toggle").attr("aria-expanded","false")}function F(){r(),x(),v(),b.tagBox&&b.tagBox.init(),Y&&a(document.body).css("cursor","pointer")}function G(){var d=a(".split-button");return M.on("tinymce-editor-init",function(a,b){I=b,I.on("nodechange",function(){T=!0}),I.on("focus",function(){E()}),I.on("show",function(){setTimeout(function(){I.execCommand("wpAutoResize")},300)}),I.on("hide",function(){setTimeout(function(){i("reset")},100)}),I.on("keyup",k),I.on("undo redo",l)}).on("click.press-this keypress.press-this",".suggested-media-thumbnail",function(b){("click"===b.type||13===b.keyCode)&&p(a(this))}).on("click.press-this",function(b){a(b.target).closest("button").hasClass("split-button-toggle")||E()}),a(".post-actions").on("click.press-this",function(c){var e,f=a(c.target),g=f.closest("button");g.length&&(g.hasClass("draft-button")?(a(".publish-button").addClass("is-saving"),o("draft")):g.hasClass("publish-button")?(g.addClass("is-saving"),b.history.replaceState&&(e=b.location.href,e+=-1!==e.indexOf("?")?"&":"?",e+="wp-press-this-reload=true",b.history.replaceState(null,null,e)),o("publish")):g.hasClass("preview-button")?(n(),b.opener&&b.opener.focus(),a("#wp-preview").val("dopreview"),a("#pressthis-form").attr("target","_blank").submit().attr("target",""),a("#wp-preview").val("")):g.hasClass("standard-editor-button")?(a(".publish-button").addClass("is-saving"),a("#pt-force-redirect").val("true"),o("draft")):g.hasClass("split-button-toggle")&&(d.hasClass("is-open")?(d.removeClass("is-open"),g.attr("aria-expanded","false")):(d.addClass("is-open"),g.attr("aria-expanded","true"))))}),y(),B(),D(),a(".options").on("click.press-this",function(){a(this).hasClass("open")?A():z()}),a(".options-panel, .options-panel-back").on("focusout.press-this",function(){setTimeout(function(){var b=document.activeElement,c=a(b);!P||!b||c.hasClass("options-panel-back")||"BODY"!==b.nodeName&&(c.closest(".options-panel").length||c.closest(".options").length)||A()},50)}),a("#post-formats-select input").on("change",function(){var b=a(this);b.is(":checked")&&a("#post-option-post-format").text(a('label[for="'+b.attr("id")+'"]').text()||"")}),L.on("beforeunload.press-this",function(){return N||I&&I.isDirty()?c("saveAlert"):void 0}).on("resize.press-this",function(){(!I||I.isHidden())&&i("reset")}),a("button.add-cat-toggle").on("click.press-this",function(){var b=a(this);b.toggleClass("is-toggled"),b.attr("aria-expanded","false"===b.attr("aria-expanded")?"true":"false"),a(".setting-modal .add-category, .categories-search-wrapper").toggleClass("is-hidden")}),a("button.add-cat-submit").on("click.press-this",q),a(".categories-search").on("keyup.press-this",function(){var b=a(this).val().toLowerCase()||"";/[\x20-\xFF]+/.test(b)&&b.length<2||(a.each(U,function(a,b){b.node.removeClass("is-hidden searched-parent")}),b&&a.each(U,function(a,c){-1===c.text.indexOf(b)?c.node.addClass("is-hidden"):c.parents.addClass("searched-parent")}))}),Z.on("focus.press-this input.press-this propertychange.press-this",i),!0}function H(){a(".categories-select").find("li").each(function(){var b=a(this);U.push({node:b,parents:b.parents("li"),text:b.children(".category").text().toLowerCase()})})}var I,J,K,L=a(b),M=a(document),N=!1,O=document.createElement("textarea"),P=!1,Q=b.wpPressThisConfig||{},R=b.wpPressThisData||{},S=128,T=!1,U=[],V="is-off-screen",W="is-hidden",X=V+" "+W,Y=/iPad|iPod|iPhone/.test(b.navigator.userAgent),Z=a("#pressthis"),$=Z[0],_=600,aa=0,ba=function(){var a=document.documentElement.style;return"undefined"!=typeof a.transition?"transitionend":"undefined"!=typeof a.WebkitTransition?"webkitTransitionEnd":!1}();return M.ready(function(){F(),G(),H()}),{renderNotice:s,renderError:t}};b.wp=b.wp||{},b.wp.pressThis=new c}(jQuery,window);
\ No newline at end of file
index 19793c353ae49b881cac11dd339a4e8df84538e0..1d7437c71ade000b3fd88e12abdf274c8ca061c6 100644 (file)
@@ -24,7 +24,7 @@ window.wp = window.wp || {};
         * wp.revisions.log
         *
         * A debugging utility for revisions. Works only when a
-        * debug flag is on and the browser supports it.
+        * debug flag is on and the browser supports it.
         */
        revisions.log = function() {
                if ( window.console && revisions.debug ) {
index 9535255738fe8f39a0f0ec18d6ce4ca2030d98f6..af823ac4e6f08abd1c627ffe4707d8711afb6a0f 100644 (file)
@@ -177,7 +177,7 @@ var tagBox, array_unique_noempty;
                                var tax = $(this).closest('div.tagsdiv').attr('id');
                                $(this).suggest(
                                        ajaxurl + '?action=ajax-tag-search&tax=' + tax,
-                                       { delay: 500, minchars: 2, multiple: true, multipleSep: window.tagsBoxL10n.tagDelimiter + ' ' }
+                                       { delay: 500, minchars: 2, multiple: true, multipleSep: window.tagsBoxL10n.tagDelimiter }
                                );
                        });
 
index 1e26f34f6f63cf5c4d0f02d63ede943ac3907e1d..c31988ec535670fe45f387a8800eb03b46b430a7 100644 (file)
@@ -1 +1 @@
-var tagBox,array_unique_noempty;!function(a){array_unique_noempty=function(b){var c=[];return a.each(b,function(b,d){d=a.trim(d),d&&-1===a.inArray(d,c)&&c.push(d)}),c},tagBox={clean:function(a){var b=window.tagsBoxL10n.tagDelimiter;return","!==b&&(a=a.replace(new RegExp(b,"g"),",")),a=a.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,""),","!==b&&(a=a.replace(/,/g,b)),a},parseTags:function(b){var c=b.id,d=c.split("-check-num-")[1],e=a(b).closest(".tagsdiv"),f=e.find(".the-tags"),g=window.tagsBoxL10n.tagDelimiter,h=f.val().split(g),i=[];return delete h[d],a.each(h,function(b,c){c=a.trim(c),c&&i.push(c)}),f.val(this.clean(i.join(g))),this.quickClicks(e),!1},quickClicks:function(b){var c,d,e=a(".the-tags",b),f=a(".tagchecklist",b),g=a(b).attr("id");e.length&&(d=e.prop("disabled"),c=e.val().split(window.tagsBoxL10n.tagDelimiter),f.empty(),a.each(c,function(b,c){var e,h;c=a.trim(c),c&&(e=a("<span />").text(c),d||(h=a('<a id="'+g+"-check-num-"+b+'" class="ntdelbutton" tabindex="0">X</a>'),h.on("click keypress",function(b){("click"===b.type||13===b.keyCode)&&(13===b.keyCode&&a(this).closest(".tagsdiv").find("input.newtag").focus(),tagBox.parseTags(this))}),e.prepend("&nbsp;").prepend(h)),f.append(e))}))},flushTags:function(b,c,d){var e,f,g,h=a(".the-tags",b),i=a("input.newtag",b),j=window.tagsBoxL10n.tagDelimiter;return c=c||!1,g=c?a(c).text():i.val(),"undefined"==typeof g?!1:(e=h.val(),f=e?e+j+g:g,f=this.clean(f),f=array_unique_noempty(f.split(j)).join(j),h.val(f),this.quickClicks(b),c||i.val(""),"undefined"==typeof d&&i.focus(),!1)},get:function(b){var c=b.substr(b.indexOf("-")+1);a.post(ajaxurl,{action:"get-tagcloud",tax:c},function(d,e){0!==d&&"success"==e&&(d=a('<p id="tagcloud-'+c+'" class="the-tagcloud">'+d+"</p>"),a("a",d).click(function(){return tagBox.flushTags(a("#"+c),this),!1}),a("#"+b).after(d))})},init:function(){var b=this,c=a("div.ajaxtag");a(".tagsdiv").each(function(){tagBox.quickClicks(this)}),a(".tagadd",c).click(function(){b.flushTags(a(this).closest(".tagsdiv"))}),a("input.newtag",c).keyup(function(b){return 13==b.which?(tagBox.flushTags(a(this).closest(".tagsdiv")),!1):void 0}).keypress(function(a){return 13==a.which?(a.preventDefault(),!1):void 0}).each(function(){var b=a(this).closest("div.tagsdiv").attr("id");a(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:!0,multipleSep:window.tagsBoxL10n.tagDelimiter+" "})}),a("#post").submit(function(){a("div.tagsdiv").each(function(){tagBox.flushTags(this,!1,1)})}),a(".tagcloud-link").click(function(){return tagBox.get(a(this).attr("id")),a(this).unbind().click(function(){return a(this).siblings(".the-tagcloud").toggle(),!1}),!1})}}}(jQuery);
\ No newline at end of file
+var tagBox,array_unique_noempty;!function(a){array_unique_noempty=function(b){var c=[];return a.each(b,function(b,d){d=a.trim(d),d&&-1===a.inArray(d,c)&&c.push(d)}),c},tagBox={clean:function(a){var b=window.tagsBoxL10n.tagDelimiter;return","!==b&&(a=a.replace(new RegExp(b,"g"),",")),a=a.replace(/\s*,\s*/g,",").replace(/,+/g,",").replace(/[,\s]+$/,"").replace(/^[,\s]+/,""),","!==b&&(a=a.replace(/,/g,b)),a},parseTags:function(b){var c=b.id,d=c.split("-check-num-")[1],e=a(b).closest(".tagsdiv"),f=e.find(".the-tags"),g=window.tagsBoxL10n.tagDelimiter,h=f.val().split(g),i=[];return delete h[d],a.each(h,function(b,c){c=a.trim(c),c&&i.push(c)}),f.val(this.clean(i.join(g))),this.quickClicks(e),!1},quickClicks:function(b){var c,d,e=a(".the-tags",b),f=a(".tagchecklist",b),g=a(b).attr("id");e.length&&(d=e.prop("disabled"),c=e.val().split(window.tagsBoxL10n.tagDelimiter),f.empty(),a.each(c,function(b,c){var e,h;c=a.trim(c),c&&(e=a("<span />").text(c),d||(h=a('<a id="'+g+"-check-num-"+b+'" class="ntdelbutton" tabindex="0">X</a>'),h.on("click keypress",function(b){("click"===b.type||13===b.keyCode)&&(13===b.keyCode&&a(this).closest(".tagsdiv").find("input.newtag").focus(),tagBox.parseTags(this))}),e.prepend("&nbsp;").prepend(h)),f.append(e))}))},flushTags:function(b,c,d){var e,f,g,h=a(".the-tags",b),i=a("input.newtag",b),j=window.tagsBoxL10n.tagDelimiter;return c=c||!1,g=c?a(c).text():i.val(),"undefined"==typeof g?!1:(e=h.val(),f=e?e+j+g:g,f=this.clean(f),f=array_unique_noempty(f.split(j)).join(j),h.val(f),this.quickClicks(b),c||i.val(""),"undefined"==typeof d&&i.focus(),!1)},get:function(b){var c=b.substr(b.indexOf("-")+1);a.post(ajaxurl,{action:"get-tagcloud",tax:c},function(d,e){0!==d&&"success"==e&&(d=a('<p id="tagcloud-'+c+'" class="the-tagcloud">'+d+"</p>"),a("a",d).click(function(){return tagBox.flushTags(a("#"+c),this),!1}),a("#"+b).after(d))})},init:function(){var b=this,c=a("div.ajaxtag");a(".tagsdiv").each(function(){tagBox.quickClicks(this)}),a(".tagadd",c).click(function(){b.flushTags(a(this).closest(".tagsdiv"))}),a("input.newtag",c).keyup(function(b){return 13==b.which?(tagBox.flushTags(a(this).closest(".tagsdiv")),!1):void 0}).keypress(function(a){return 13==a.which?(a.preventDefault(),!1):void 0}).each(function(){var b=a(this).closest("div.tagsdiv").attr("id");a(this).suggest(ajaxurl+"?action=ajax-tag-search&tax="+b,{delay:500,minchars:2,multiple:!0,multipleSep:window.tagsBoxL10n.tagDelimiter})}),a("#post").submit(function(){a("div.tagsdiv").each(function(){tagBox.flushTags(this,!1,1)})}),a(".tagcloud-link").click(function(){return tagBox.get(a(this).attr("id")),a(this).unbind().click(function(){return a(this).siblings(".the-tagcloud").toggle(),!1}),!1})}}}(jQuery);
\ No newline at end of file
index 0e83f4e04beac38df3a90881d64bd48a632ad32b..1a91279bacc9536a542d71980329a58755e84780 100644 (file)
@@ -454,6 +454,8 @@ themes.view.Theme = wp.Backbone.View.extend({
                var self = this,
                        current, preview;
 
+               event = event || window.event;
+
                // Bail if the user scrolled on a touch device
                if ( this.touchDrag === true ) {
                        return this.touchDrag = false;
@@ -764,9 +766,10 @@ themes.view.Preview = themes.view.Details.extend({
        html: themes.template( 'theme-preview' ),
 
        render: function() {
-               var data = this.model.toJSON();
+               var self = this,
+                       data = this.model.toJSON();
 
-               this.$el.html( this.html( data ) );
+               this.$el.removeClass( 'iframe-ready' ).html( this.html( data ) );
 
                themes.router.navigate( themes.router.baseUrl( themes.router.themePath + this.model.get( 'id' ) ), { replace: true } );
 
@@ -774,6 +777,14 @@ themes.view.Preview = themes.view.Details.extend({
                        $( 'body' ).addClass( 'theme-installer-active full-overlay-active' );
                        $( '.close-full-overlay' ).focus();
                });
+
+               this.$el.find( 'iframe' ).one( 'load', function() {
+                       self.iframeLoaded();
+               });
+       },
+
+       iframeLoaded: function() {
+               this.$el.addClass( 'iframe-ready' );
        },
 
        close: function() {
@@ -784,7 +795,7 @@ themes.view.Preview = themes.view.Details.extend({
                        if ( themes.focusedTheme ) {
                                themes.focusedTheme.focus();
                        }
-               });
+               }).removeClass( 'iframe-ready' );
 
                themes.router.navigate( themes.router.baseUrl( '' ) );
                this.trigger( 'preview:close' );
@@ -958,7 +969,7 @@ themes.view.Themes = wp.Backbone.View.extend({
                }
 
                // Make sure the add-new stays at the end
-               if ( page >= 1 ) {
+               if ( ! themes.isInstall && page >= 1 ) {
                        $( '.add-new-theme' ).remove();
                }
 
@@ -980,8 +991,8 @@ themes.view.Themes = wp.Backbone.View.extend({
                });
 
                // 'Add new theme' element shown at the end of the grid
-               if ( themes.data.settings.canInstall ) {
-                       this.$el.append( '<div class="theme add-new-theme"><a href="' + themes.data.settings.installURI + '"><div class="theme-screenshot"><span></span></div><h3 class="theme-name">' + l10n.addNew + '</h3></a></div>' );
+               if ( ! themes.isInstall && themes.data.settings.canInstall ) {
+                       this.$el.append( '<div class="theme add-new-theme"><a href="' + themes.data.settings.installURI + '"><div class="theme-screenshot"><span></span></div><h2 class="theme-name">' + l10n.addNew + '</h2></a></div>' );
                }
 
                this.parent.page++;
@@ -1322,7 +1333,7 @@ themes.view.InstallerSearch =  themes.view.Search.extend({
                }
 
                $( '.filter-links li > a.current' ).removeClass( 'current' );
-               $( 'body' ).removeClass( 'show-filters filters-applied' );
+               $( 'body' ).removeClass( 'show-filters filters-applied show-favorites-form' );
 
                // Get the themes by sending Ajax POST request to api.wordpress.org/themes
                // or searching the local cache
@@ -1345,7 +1356,9 @@ themes.view.Installer = themes.view.Appearance.extend({
                'click .filter-drawer .apply-filters': 'applyFilters',
                'click .filter-group [type="checkbox"]': 'addFilter',
                'click .filter-drawer .clear-filters': 'clearFilters',
-               'click .filtered-by': 'backToFilters'
+               'click .filtered-by': 'backToFilters',
+               'click .favorites-form-submit' : 'saveUsername',
+               'keyup #wporg-username-input': 'saveUsername'
        },
 
        // Initial render method
@@ -1437,6 +1450,12 @@ themes.view.Installer = themes.view.Appearance.extend({
                $( '.filter-links li > a, .theme-filter' ).removeClass( this.activeClass );
                $( '[data-sort="' + sort + '"]' ).addClass( this.activeClass );
 
+               if ( 'favorites' === sort ) {
+                       $ ( 'body' ).addClass( 'show-favorites-form' );
+               } else {
+                       $ ( 'body' ).removeClass( 'show-favorites-form' );
+               }
+
                this.browse( sort );
        },
 
@@ -1498,6 +1517,33 @@ themes.view.Installer = themes.view.Appearance.extend({
                this.collection.query( request );
        },
 
+       // Save the user's WordPress.org username and get his favorite themes.
+       saveUsername: function ( event ) {
+               var username = $( '#wporg-username-input' ).val(),
+                       request = { browse: 'favorites', user: username },
+                       that = this;
+
+               if ( event ) {
+                       event.preventDefault();
+               }
+
+               // save username on enter
+               if ( event.type === 'keyup' && event.which !== 13 ) {
+                       return;
+               }
+
+               return wp.ajax.send( 'save-wporg-username', {
+                       data: {
+                               username: username
+                       },
+                       success: function () {
+                               // Get the themes by sending Ajax POST request to api.wordpress.org/themes
+                               // or searching the local cache
+                               that.collection.query( request );
+                       }
+               } );
+       },
+
        // Get the checked filters
        // @return {array} of tags or false
        filtersChecked: function() {
@@ -1658,6 +1704,9 @@ themes.RunInstaller = {
                themes.router.on( 'route:preview', function( slug ) {
                        request.theme = slug;
                        self.view.collection.query( request );
+                       self.view.collection.once( 'update', function() {
+                               self.view.view.theme.preview();
+                       });
                });
 
                // Handles sorting / browsing routes
index f784f41f7b1d8abc964ae265717190d9f0b825f3..ac15535eceacb43120e2684d91e67bb6c991f567 100644 (file)
@@ -1 +1 @@
-window.wp=window.wp||{},function(a){var b,c;b=wp.themes=wp.themes||{},b.data=_wpThemeSettings,c=b.data.l10n,b.isInstall=!!b.data.settings.isInstall,_.extend(b,{model:{},view:{},routes:{},router:{},template:wp.template}),b.Model=Backbone.Model.extend({initialize:function(){var a;-1!==_.indexOf(b.data.installedThemes,this.get("slug"))&&this.set({installed:!0}),this.set({id:this.get("slug")||this.get("id")}),this.has("sections")&&(a=this.get("sections").description,this.set({description:a}))}}),b.view.Appearance=wp.Backbone.View.extend({el:"#wpbody-content .wrap .theme-browser",window:a(window),page:0,initialize:function(a){_.bindAll(this,"scroller"),this.SearchView=a.SearchView?a.SearchView:b.view.Search,this.window.bind("scroll",_.throttle(this.scroller,300))},render:function(){this.view=new b.view.Themes({collection:this.collection,parent:this}),this.search(),this.view.render(),this.$el.empty().append(this.view.el).addClass("rendered"),this.$el.append('<br class="clear"/>')},searchContainer:a("#wpbody h1:first"),search:function(){var d,e=this;1!==b.data.themes.length&&(d=new this.SearchView({collection:e.collection,parent:this}),d.render(),this.searchContainer.append(a.parseHTML('<label class="screen-reader-text" for="wp-filter-search-input">'+c.search+"</label>")).append(d.el))},scroller:function(){var a,b,c=this;a=this.window.scrollTop()+c.window.height(),b=c.$el.offset().top+c.$el.outerHeight(!1)-c.window.height(),b=Math.round(.9*b),a>b&&this.trigger("theme:scroll")}}),b.Collection=Backbone.Collection.extend({model:b.Model,terms:"",doSearch:function(c){this.terms!==c&&(this.terms=c,this.terms.length>0&&this.search(this.terms),""===this.terms&&(this.reset(b.data.themes),a("body").removeClass("no-results")),this.trigger("update"))},search:function(c){var d,e,f,g,h,i;this.reset(b.data.themes,{silent:!0}),c=c.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),c=c.replace(/ /g,")(?=.*"),d=new RegExp("^(?=.*"+c+").+","i"),e=this.filter(function(a){return g=a.get("name").replace(/(<([^>]+)>)/gi,""),h=a.get("description").replace(/(<([^>]+)>)/gi,""),i=a.get("author").replace(/(<([^>]+)>)/gi,""),f=_.union(g,a.get("id"),h,i,a.get("tags")),d.test(a.get("author"))&&c.length>2&&a.set("displayAuthor",!0),d.test(f)}),0===e.length?this.trigger("query:empty"):a("body").removeClass("no-results"),this.reset(e)},paginate:function(a){var b=this;return a=a||0,b=_(b.rest(20*a)),b=_(b.first(20))},count:!1,query:function(b){var c,d,e,f=this.queries,g=this;if(this.currentQuery.request=b,c=_.find(f,function(a){return _.isEqual(a.request,b)}),d=_.has(b,"page"),d||(this.currentQuery.page=1),c||d){if(d)return this.apiCall(b,d).done(function(a){g.add(a.themes),g.trigger("query:success"),g.loadingThemes=!1}).fail(function(){g.trigger("query:fail")});0===c.themes.length?g.trigger("query:empty"):a("body").removeClass("no-results"),_.isNumber(c.total)&&(this.count=c.total),this.reset(c.themes),c.total||(this.count=this.length),this.trigger("update"),this.trigger("query:success",this.count)}else c=this.apiCall(b).done(function(a){a.themes&&(g.reset(a.themes),e=a.info.results,f.push({themes:a.themes,request:b,total:e})),g.trigger("update"),g.trigger("query:success",e),a.themes&&0===a.themes.length&&g.trigger("query:empty")}).fail(function(){g.trigger("query:fail")})},queries:[],currentQuery:{page:1,request:{}},apiCall:function(b,c){return wp.ajax.send("query-themes",{data:{request:_.extend({per_page:100,fields:{description:!0,tested:!0,requires:!0,rating:!0,downloaded:!0,downloadLink:!0,last_updated:!0,homepage:!0,num_ratings:!0}},b)},beforeSend:function(){c||a("body").addClass("loading-content").removeClass("no-results")}})},loadingThemes:!1}),b.view.Theme=wp.Backbone.View.extend({className:"theme",state:"grid",html:b.template("theme"),events:{click:b.isInstall?"preview":"expand",keydown:b.isInstall?"preview":"expand",touchend:b.isInstall?"preview":"expand",keyup:"addFocus",touchmove:"preventExpand"},touchDrag:!1,render:function(){var a=this.model.toJSON();this.$el.html(this.html(a)).attr({tabindex:0,"aria-describedby":a.id+"-action "+a.id+"-name"}),this.activeTheme(),this.model.get("displayAuthor")&&this.$el.addClass("display-author"),this.model.get("installed")&&this.$el.addClass("is-installed")},activeTheme:function(){this.model.get("active")&&this.$el.addClass("active")},addFocus:function(){var b=a(":focus").hasClass("theme")?a(":focus"):a(":focus").parents(".theme");a(".theme.focus").removeClass("focus"),b.addClass("focus")},expand:function(c){var d=this;return c=c||window.event,"keydown"!==c.type||13===c.which||32===c.which?this.touchDrag===!0?this.touchDrag=!1:void(a(c.target).is(".theme-actions a")||(b.focusedTheme=this.$el,this.trigger("theme:expand",d.model.cid))):void 0},preventExpand:function(){this.touchDrag=!0},preview:function(c){var d,e,f=this;return this.touchDrag===!0?this.touchDrag=!1:void(a(c.target).hasClass("button-primary")||("keydown"!==c.type||13===c.which||32===c.which)&&("keydown"===c.type&&13!==c.which&&a(":focus").hasClass("button")||(c.preventDefault(),c=c||window.event,b.focusedTheme=this.$el,e=new b.view.Preview({model:this.model}),e.render(),this.setNavButtonsState(),1===this.model.collection.length?e.$el.addClass("no-navigation"):e.$el.removeClass("no-navigation"),a("div.wrap").append(e.el),this.listenTo(e,"theme:next",function(){return d=f.model,_.isUndefined(f.current)||(d=f.current),f.current=f.model.collection.at(f.model.collection.indexOf(d)+1),_.isUndefined(f.current)?(f.options.parent.parent.trigger("theme:end"),f.current=d):(e.model=f.current,e.render(),this.setNavButtonsState(),void a(".next-theme").focus())}).listenTo(e,"theme:previous",function(){d=f.model,0!==f.model.collection.indexOf(f.current)&&(_.isUndefined(f.current)||(d=f.current),f.current=f.model.collection.at(f.model.collection.indexOf(d)-1),_.isUndefined(f.current)||(e.model=f.current,e.render(),this.setNavButtonsState(),a(".previous-theme").focus()))}),this.listenTo(e,"preview:close",function(){f.current=f.model}))))},setNavButtonsState:function(){var b=a(".theme-install-overlay"),c=_.isUndefined(this.current)?this.model:this.current;0===this.model.collection.indexOf(c)&&b.find(".previous-theme").addClass("disabled"),_.isUndefined(this.model.collection.at(this.model.collection.indexOf(c)+1))&&b.find(".next-theme").addClass("disabled")}}),b.view.Details=wp.Backbone.View.extend({className:"theme-overlay",events:{click:"collapse","click .delete-theme":"deleteTheme","click .left":"previousTheme","click .right":"nextTheme"},html:b.template("theme-single"),render:function(){var a=this.model.toJSON();this.$el.html(this.html(a)),this.activeTheme(),this.navigation(),this.screenshotCheck(this.$el),this.containFocus(this.$el)},activeTheme:function(){this.$el.toggleClass("active",this.model.get("active"))},containFocus:function(b){var c;_.delay(function(){a(".theme-wrap a.button-primary:visible").focus()},500),b.on("keydown.wp-themes",function(d){9===d.which&&(c=a(d.target),c.is("button.left")&&d.shiftKey?(b.find(".theme-actions a:last-child").focus(),d.preventDefault()):c.is(".theme-actions a:last-child")&&(b.find("button.left").focus(),d.preventDefault()))})},collapse:function(c){var d,e=this;c=c||window.event,1!==b.data.themes.length&&(a(c.target).is(".theme-backdrop")||a(c.target).is(".close")||27===c.keyCode)&&(a("body").addClass("closing-overlay"),this.$el.fadeOut(130,function(){a("body").removeClass("closing-overlay"),e.closeOverlay(),d=document.body.scrollTop,b.router.navigate(b.router.baseUrl("")),document.body.scrollTop=d,b.focusedTheme&&b.focusedTheme.focus()}))},navigation:function(){this.model.cid===this.model.collection.at(0).cid&&this.$el.find(".left").addClass("disabled"),this.model.cid===this.model.collection.at(this.model.collection.length-1).cid&&this.$el.find(".right").addClass("disabled")},closeOverlay:function(){a("body").removeClass("modal-open"),this.remove(),this.unbind(),this.trigger("theme:collapse")},deleteTheme:function(){return confirm(b.data.settings.confirmDelete)},nextTheme:function(){var a=this;return a.trigger("theme:next",a.model.cid),!1},previousTheme:function(){var a=this;return a.trigger("theme:previous",a.model.cid),!1},screenshotCheck:function(a){var b,c;b=a.find(".screenshot img"),c=new Image,c.src=b.attr("src"),c.width&&c.width<=300&&a.addClass("small-screenshot")}}),b.view.Preview=b.view.Details.extend({className:"wp-full-overlay expanded",el:".theme-install-overlay",events:{"click .close-full-overlay":"close","click .collapse-sidebar":"collapse","click .previous-theme":"previousTheme","click .next-theme":"nextTheme",keyup:"keyEvent"},html:b.template("theme-preview"),render:function(){var c=this.model.toJSON();this.$el.html(this.html(c)),b.router.navigate(b.router.baseUrl(b.router.themePath+this.model.get("id")),{replace:!0}),this.$el.fadeIn(200,function(){a("body").addClass("theme-installer-active full-overlay-active"),a(".close-full-overlay").focus()})},close:function(){return this.$el.fadeOut(200,function(){a("body").removeClass("theme-installer-active full-overlay-active"),b.focusedTheme&&b.focusedTheme.focus()}),b.router.navigate(b.router.baseUrl("")),this.trigger("preview:close"),this.undelegateEvents(),this.unbind(),!1},collapse:function(b){var d=a(b.currentTarget);return"true"===d.attr("aria-expanded")?d.attr({"aria-expanded":"false","aria-label":c.expandSidebar}):d.attr({"aria-expanded":"true","aria-label":c.collapseSidebar}),this.$el.toggleClass("collapsed").toggleClass("expanded"),!1},keyEvent:function(a){27===a.keyCode&&(this.undelegateEvents(),this.close()),39===a.keyCode&&_.once(this.nextTheme()),37===a.keyCode&&this.previousTheme()}}),b.view.Themes=wp.Backbone.View.extend({className:"themes",$overlay:a("div.theme-overlay"),index:0,count:a(".wp-core-ui .theme-count"),liveThemeCount:0,initialize:function(b){var c=this;this.parent=b.parent,this.setView("grid"),c.currentTheme(),this.listenTo(c.collection,"update",function(){c.parent.page=0,c.currentTheme(),c.render(this)}),this.listenTo(c.collection,"query:success",function(a){_.isNumber(a)?(c.count.text(a),c.announceSearchResults(a)):(c.count.text(c.collection.length),c.announceSearchResults(c.collection.length))}),this.listenTo(c.collection,"query:empty",function(){a("body").addClass("no-results")}),this.listenTo(this.parent,"theme:scroll",function(){c.renderThemes(c.parent.page)}),this.listenTo(this.parent,"theme:close",function(){c.overlay&&c.overlay.closeOverlay()}),a("body").on("keyup",function(a){c.overlay&&(39===a.keyCode&&c.overlay.nextTheme(),37===a.keyCode&&c.overlay.previousTheme(),27===a.keyCode&&c.overlay.collapse(a))})},render:function(){this.$el.empty(),1===b.data.themes.length&&(this.singleTheme=new b.view.Details({model:this.collection.models[0]}),this.singleTheme.render(),this.$el.addClass("single-theme"),this.$el.append(this.singleTheme.el)),this.options.collection.size()>0&&this.renderThemes(this.parent.page),this.liveThemeCount=this.collection.count?this.collection.count:this.collection.length,this.count.text(this.liveThemeCount),this.announceSearchResults(this.liveThemeCount)},renderThemes:function(d){var e=this;return e.instance=e.collection.paginate(d),0===e.instance.size()?void this.parent.trigger("theme:end"):(d>=1&&a(".add-new-theme").remove(),e.instance.each(function(a){e.theme=new b.view.Theme({model:a,parent:e}),e.theme.render(),e.$el.append(e.theme.el),e.listenTo(e.theme,"theme:expand",e.expand,e)}),b.data.settings.canInstall&&this.$el.append('<div class="theme add-new-theme"><a href="'+b.data.settings.installURI+'"><div class="theme-screenshot"><span></span></div><h3 class="theme-name">'+c.addNew+"</h3></a></div>"),void this.parent.page++)},currentTheme:function(){var a,b=this;a=b.collection.findWhere({active:!0}),a&&(b.collection.remove(a),b.collection.add(a,{at:0}))},setView:function(a){return a},expand:function(c){var d=this;this.model=d.collection.get(c),b.router.navigate(b.router.baseUrl(b.router.themePath+this.model.id)),this.setView("detail"),a("body").addClass("modal-open"),this.overlay=new b.view.Details({model:d.model}),this.overlay.render(),this.$overlay.html(this.overlay.el),this.listenTo(this.overlay,"theme:next",function(){d.next([d.model.cid])}).listenTo(this.overlay,"theme:previous",function(){d.previous([d.model.cid])})},next:function(a){var b,c,d=this;b=d.collection.get(a[0]),c=d.collection.at(d.collection.indexOf(b)+1),void 0!==c&&(this.overlay.closeOverlay(),d.theme.trigger("theme:expand",c.cid))},previous:function(a){var b,c,d=this;b=d.collection.get(a[0]),c=d.collection.at(d.collection.indexOf(b)-1),void 0!==c&&(this.overlay.closeOverlay(),d.theme.trigger("theme:expand",c.cid))},announceSearchResults:function(a){0===a?wp.a11y.speak(c.noThemesFound):wp.a11y.speak(c.themesFound.replace("%d",a))}}),b.view.Search=wp.Backbone.View.extend({tagName:"input",className:"wp-filter-search",id:"wp-filter-search-input",searching:!1,attributes:{placeholder:c.searchPlaceholder,type:"search","aria-describedby":"live-search-desc"},events:{input:"search",keyup:"search",blur:"pushState"},initialize:function(a){this.parent=a.parent,this.listenTo(this.parent,"theme:close",function(){this.searching=!1})},search:function(a){"keyup"===a.type&&27===a.which&&(a.target.value=""),this.doSearch(a)},doSearch:_.debounce(function(a){var c={};this.collection.doSearch(a.target.value),this.searching&&13!==a.which?c.replace=!0:this.searching=!0,a.target.value?b.router.navigate(b.router.baseUrl(b.router.searchPath+a.target.value),c):b.router.navigate(b.router.baseUrl(""))},500),pushState:function(a){var c=b.router.baseUrl("");a.target.value&&(c=b.router.baseUrl(b.router.searchPath+a.target.value)),this.searching=!1,b.router.navigate(c)}}),b.Router=Backbone.Router.extend({routes:{"themes.php?theme=:slug":"theme","themes.php?search=:query":"search","themes.php?s=:query":"search","themes.php":"themes","":"themes"},baseUrl:function(a){return"themes.php"+a},themePath:"?theme=",searchPath:"?search=",search:function(b){a(".wp-filter-search").val(b)},themes:function(){a(".wp-filter-search").val("")},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments)}}),b.Run={init:function(){this.themes=new b.Collection(b.data.themes),this.view=new b.view.Appearance({collection:this.themes}),this.render()},render:function(){this.view.render(),this.routes(),Backbone.history.start({root:b.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var c=this;b.router=new b.Router,b.router.on("route:theme",function(a){c.view.view.expand(a)}),b.router.on("route:themes",function(){c.themes.doSearch(""),c.view.trigger("theme:close")}),b.router.on("route:search",function(){a(".wp-filter-search").trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},b.view.InstallerSearch=b.view.Search.extend({events:{input:"search",keyup:"search"},search:function(a){("keyup"!==a.type||9!==a.which&&16!==a.which)&&(this.collection=this.options.parent.view.collection,"keyup"===a.type&&27===a.which&&(a.target.value=""),this.doSearch(a.target.value))},doSearch:_.debounce(function(c){var d={};d.search=c,"author:"===c.substring(0,7)&&(d.search="",d.author=c.slice(7)),"tag:"===c.substring(0,4)&&(d.search="",d.tag=[c.slice(4)]),a(".filter-links li > a.current").removeClass("current"),a("body").removeClass("show-filters filters-applied"),this.collection.query(d),b.router.navigate(b.router.baseUrl(b.router.searchPath+c),{replace:!0})},500)}),b.view.Installer=b.view.Appearance.extend({el:"#wpbody-content .wrap",events:{"click .filter-links li > a":"onSort","click .theme-filter":"onFilter","click .drawer-toggle":"moreFilters","click .filter-drawer .apply-filters":"applyFilters",'click .filter-group [type="checkbox"]':"addFilter","click .filter-drawer .clear-filters":"clearFilters","click .filtered-by":"backToFilters"},render:function(){var d=this;this.search(),this.uploader(),this.collection=new b.Collection,this.listenTo(this,"theme:end",function(){d.collection.loadingThemes||(d.collection.loadingThemes=!0,d.collection.currentQuery.page++,_.extend(d.collection.currentQuery.request,{page:d.collection.currentQuery.page}),d.collection.query(d.collection.currentQuery.request))}),this.listenTo(this.collection,"query:success",function(){a("body").removeClass("loading-content"),a(".theme-browser").find("div.error").remove()}),this.listenTo(this.collection,"query:fail",function(){a("body").removeClass("loading-content"),a(".theme-browser").find("div.error").remove(),a(".theme-browser").find("div.themes").before('<div class="error"><p>'+c.error+"</p></div>")}),this.view&&this.view.remove(),this.view=new b.view.Themes({collection:this.collection,parent:this}),this.page=0,this.$el.find(".themes").remove(),this.view.render(),this.$el.find(".theme-browser").append(this.view.el).addClass("rendered")},browse:function(a){this.collection.query({browse:a})},onSort:function(c){var d=a(c.target),e=d.data("sort");c.preventDefault(),a("body").removeClass("filters-applied show-filters"),d.hasClass(this.activeClass)||(this.sort(e),b.router.navigate(b.router.baseUrl(b.router.browsePath+e)))},sort:function(b){this.clearSearch(),a(".filter-links li > a, .theme-filter").removeClass(this.activeClass),a('[data-sort="'+b+'"]').addClass(this.activeClass),this.browse(b)},onFilter:function(b){var c,d=a(b.target),e=d.data("filter");d.hasClass(this.activeClass)||(a(".filter-links li > a, .theme-section").removeClass(this.activeClass),d.addClass(this.activeClass),e&&(e=_.union(e,this.filtersChecked()),c={tag:[e]},this.collection.query(c)))},addFilter:function(){this.filtersChecked()},applyFilters:function(b){var c,d=this.filtersChecked(),e={tag:d},f=a(".filtered-by .tags");b&&b.preventDefault(),a("body").addClass("filters-applied"),a(".filter-links li > a.current").removeClass("current"),f.empty(),_.each(d,function(b){c=a('label[for="filter-id-'+b+'"]').text(),f.append('<span class="tag">'+c+"</span>")}),this.collection.query(e)},filtersChecked:function(){var b=a(".filter-group").find(":checkbox"),c=[];return _.each(b.filter(":checked"),function(b){c.push(a(b).prop("value"))}),0===c.length?(a(".filter-drawer .apply-filters").find("span").text(""),a(".filter-drawer .clear-filters").hide(),a("body").removeClass("filters-applied"),!1):(a(".filter-drawer .apply-filters").find("span").text(c.length),a(".filter-drawer .clear-filters").css("display","inline-block"),c)},activeClass:"current",searchContainer:a(".wp-filter .search-form"),uploader:function(){a("a.upload").on("click",function(c){c.preventDefault(),a("body").addClass("show-upload-theme"),b.router.navigate(b.router.baseUrl("?upload"),{replace:!0})}),a("a.browse-themes").on("click",function(c){c.preventDefault(),a("body").removeClass("show-upload-theme"),b.router.navigate(b.router.baseUrl(""),{replace:!0})})},moreFilters:function(c){return c.preventDefault(),a("body").hasClass("filters-applied")?this.backToFilters():a("body").hasClass("show-filters")&&this.filtersChecked()?this.addFilter():(this.clearSearch(),b.router.navigate(b.router.baseUrl("")),void a("body").toggleClass("show-filters"))},clearFilters:function(b){var c=a(".filter-group").find(":checkbox"),d=this;b.preventDefault(),_.each(c.filter(":checked"),function(b){return a(b).prop("checked",!1),d.filtersChecked()})},backToFilters:function(b){b&&b.preventDefault(),a("body").removeClass("filters-applied")},clearSearch:function(){a("#wp-filter-search-input").val("")}}),b.InstallerRouter=Backbone.Router.extend({routes:{"theme-install.php?theme=:slug":"preview","theme-install.php?browse=:sort":"sort","theme-install.php?upload":"upload","theme-install.php?search=:query":"search","theme-install.php":"sort"},baseUrl:function(a){return"theme-install.php"+a},themePath:"?theme=",browsePath:"?browse=",searchPath:"?search=",search:function(b){a(".wp-filter-search").val(b)},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments)}}),b.RunInstaller={init:function(){this.view=new b.view.Installer({section:"featured",SearchView:b.view.InstallerSearch}),this.render()},render:function(){this.view.render(),this.routes(),Backbone.history.start({root:b.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var c=this,d={};b.router=new b.InstallerRouter,b.router.on("route:preview",function(a){d.theme=a,c.view.collection.query(d)}),b.router.on("route:sort",function(a){a||(a="featured"),c.view.sort(a),c.view.trigger("theme:close")}),b.router.on("route:upload",function(){a("a.upload").trigger("click")}),b.router.on("route:search",function(){a(".wp-filter-search").focus().trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},a(document).ready(function(){b.isInstall?b.RunInstaller.init():b.Run.init(),a(".broken-themes .delete-theme").on("click",function(){return confirm(_wpThemeSettings.settings.confirmDelete)})})}(jQuery);var tb_position;jQuery(document).ready(function(a){tb_position=function(){var b=a("#TB_window"),c=a(window).width(),d=a(window).height(),e=c>1040?1040:c,f=0;a("#wpadminbar").length&&(f=parseInt(a("#wpadminbar").css("height"),10)),b.size()&&(b.width(e-50).height(d-45-f),a("#TB_iframeContent").width(e-50).height(d-75-f),b.css({"margin-left":"-"+parseInt((e-50)/2,10)+"px"}),"undefined"!=typeof document.body.style.maxWidth&&b.css({top:20+f+"px","margin-top":"0"}))},a(window).resize(function(){tb_position()})});
\ No newline at end of file
+window.wp=window.wp||{},function(a){var b,c;b=wp.themes=wp.themes||{},b.data=_wpThemeSettings,c=b.data.l10n,b.isInstall=!!b.data.settings.isInstall,_.extend(b,{model:{},view:{},routes:{},router:{},template:wp.template}),b.Model=Backbone.Model.extend({initialize:function(){var a;-1!==_.indexOf(b.data.installedThemes,this.get("slug"))&&this.set({installed:!0}),this.set({id:this.get("slug")||this.get("id")}),this.has("sections")&&(a=this.get("sections").description,this.set({description:a}))}}),b.view.Appearance=wp.Backbone.View.extend({el:"#wpbody-content .wrap .theme-browser",window:a(window),page:0,initialize:function(a){_.bindAll(this,"scroller"),this.SearchView=a.SearchView?a.SearchView:b.view.Search,this.window.bind("scroll",_.throttle(this.scroller,300))},render:function(){this.view=new b.view.Themes({collection:this.collection,parent:this}),this.search(),this.view.render(),this.$el.empty().append(this.view.el).addClass("rendered"),this.$el.append('<br class="clear"/>')},searchContainer:a("#wpbody h1:first"),search:function(){var d,e=this;1!==b.data.themes.length&&(d=new this.SearchView({collection:e.collection,parent:this}),d.render(),this.searchContainer.append(a.parseHTML('<label class="screen-reader-text" for="wp-filter-search-input">'+c.search+"</label>")).append(d.el))},scroller:function(){var a,b,c=this;a=this.window.scrollTop()+c.window.height(),b=c.$el.offset().top+c.$el.outerHeight(!1)-c.window.height(),b=Math.round(.9*b),a>b&&this.trigger("theme:scroll")}}),b.Collection=Backbone.Collection.extend({model:b.Model,terms:"",doSearch:function(c){this.terms!==c&&(this.terms=c,this.terms.length>0&&this.search(this.terms),""===this.terms&&(this.reset(b.data.themes),a("body").removeClass("no-results")),this.trigger("update"))},search:function(c){var d,e,f,g,h,i;this.reset(b.data.themes,{silent:!0}),c=c.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),c=c.replace(/ /g,")(?=.*"),d=new RegExp("^(?=.*"+c+").+","i"),e=this.filter(function(a){return g=a.get("name").replace(/(<([^>]+)>)/gi,""),h=a.get("description").replace(/(<([^>]+)>)/gi,""),i=a.get("author").replace(/(<([^>]+)>)/gi,""),f=_.union(g,a.get("id"),h,i,a.get("tags")),d.test(a.get("author"))&&c.length>2&&a.set("displayAuthor",!0),d.test(f)}),0===e.length?this.trigger("query:empty"):a("body").removeClass("no-results"),this.reset(e)},paginate:function(a){var b=this;return a=a||0,b=_(b.rest(20*a)),b=_(b.first(20))},count:!1,query:function(b){var c,d,e,f=this.queries,g=this;if(this.currentQuery.request=b,c=_.find(f,function(a){return _.isEqual(a.request,b)}),d=_.has(b,"page"),d||(this.currentQuery.page=1),c||d){if(d)return this.apiCall(b,d).done(function(a){g.add(a.themes),g.trigger("query:success"),g.loadingThemes=!1}).fail(function(){g.trigger("query:fail")});0===c.themes.length?g.trigger("query:empty"):a("body").removeClass("no-results"),_.isNumber(c.total)&&(this.count=c.total),this.reset(c.themes),c.total||(this.count=this.length),this.trigger("update"),this.trigger("query:success",this.count)}else c=this.apiCall(b).done(function(a){a.themes&&(g.reset(a.themes),e=a.info.results,f.push({themes:a.themes,request:b,total:e})),g.trigger("update"),g.trigger("query:success",e),a.themes&&0===a.themes.length&&g.trigger("query:empty")}).fail(function(){g.trigger("query:fail")})},queries:[],currentQuery:{page:1,request:{}},apiCall:function(b,c){return wp.ajax.send("query-themes",{data:{request:_.extend({per_page:100,fields:{description:!0,tested:!0,requires:!0,rating:!0,downloaded:!0,downloadLink:!0,last_updated:!0,homepage:!0,num_ratings:!0}},b)},beforeSend:function(){c||a("body").addClass("loading-content").removeClass("no-results")}})},loadingThemes:!1}),b.view.Theme=wp.Backbone.View.extend({className:"theme",state:"grid",html:b.template("theme"),events:{click:b.isInstall?"preview":"expand",keydown:b.isInstall?"preview":"expand",touchend:b.isInstall?"preview":"expand",keyup:"addFocus",touchmove:"preventExpand"},touchDrag:!1,render:function(){var a=this.model.toJSON();this.$el.html(this.html(a)).attr({tabindex:0,"aria-describedby":a.id+"-action "+a.id+"-name"}),this.activeTheme(),this.model.get("displayAuthor")&&this.$el.addClass("display-author"),this.model.get("installed")&&this.$el.addClass("is-installed")},activeTheme:function(){this.model.get("active")&&this.$el.addClass("active")},addFocus:function(){var b=a(":focus").hasClass("theme")?a(":focus"):a(":focus").parents(".theme");a(".theme.focus").removeClass("focus"),b.addClass("focus")},expand:function(c){var d=this;return c=c||window.event,"keydown"!==c.type||13===c.which||32===c.which?this.touchDrag===!0?this.touchDrag=!1:void(a(c.target).is(".theme-actions a")||(b.focusedTheme=this.$el,this.trigger("theme:expand",d.model.cid))):void 0},preventExpand:function(){this.touchDrag=!0},preview:function(c){var d,e,f=this;return c=c||window.event,this.touchDrag===!0?this.touchDrag=!1:void(a(c.target).hasClass("button-primary")||("keydown"!==c.type||13===c.which||32===c.which)&&("keydown"===c.type&&13!==c.which&&a(":focus").hasClass("button")||(c.preventDefault(),c=c||window.event,b.focusedTheme=this.$el,e=new b.view.Preview({model:this.model}),e.render(),this.setNavButtonsState(),1===this.model.collection.length?e.$el.addClass("no-navigation"):e.$el.removeClass("no-navigation"),a("div.wrap").append(e.el),this.listenTo(e,"theme:next",function(){return d=f.model,_.isUndefined(f.current)||(d=f.current),f.current=f.model.collection.at(f.model.collection.indexOf(d)+1),_.isUndefined(f.current)?(f.options.parent.parent.trigger("theme:end"),f.current=d):(e.model=f.current,e.render(),this.setNavButtonsState(),void a(".next-theme").focus())}).listenTo(e,"theme:previous",function(){d=f.model,0!==f.model.collection.indexOf(f.current)&&(_.isUndefined(f.current)||(d=f.current),f.current=f.model.collection.at(f.model.collection.indexOf(d)-1),_.isUndefined(f.current)||(e.model=f.current,e.render(),this.setNavButtonsState(),a(".previous-theme").focus()))}),this.listenTo(e,"preview:close",function(){f.current=f.model}))))},setNavButtonsState:function(){var b=a(".theme-install-overlay"),c=_.isUndefined(this.current)?this.model:this.current;0===this.model.collection.indexOf(c)&&b.find(".previous-theme").addClass("disabled"),_.isUndefined(this.model.collection.at(this.model.collection.indexOf(c)+1))&&b.find(".next-theme").addClass("disabled")}}),b.view.Details=wp.Backbone.View.extend({className:"theme-overlay",events:{click:"collapse","click .delete-theme":"deleteTheme","click .left":"previousTheme","click .right":"nextTheme"},html:b.template("theme-single"),render:function(){var a=this.model.toJSON();this.$el.html(this.html(a)),this.activeTheme(),this.navigation(),this.screenshotCheck(this.$el),this.containFocus(this.$el)},activeTheme:function(){this.$el.toggleClass("active",this.model.get("active"))},containFocus:function(b){var c;_.delay(function(){a(".theme-wrap a.button-primary:visible").focus()},500),b.on("keydown.wp-themes",function(d){9===d.which&&(c=a(d.target),c.is("button.left")&&d.shiftKey?(b.find(".theme-actions a:last-child").focus(),d.preventDefault()):c.is(".theme-actions a:last-child")&&(b.find("button.left").focus(),d.preventDefault()))})},collapse:function(c){var d,e=this;c=c||window.event,1!==b.data.themes.length&&(a(c.target).is(".theme-backdrop")||a(c.target).is(".close")||27===c.keyCode)&&(a("body").addClass("closing-overlay"),this.$el.fadeOut(130,function(){a("body").removeClass("closing-overlay"),e.closeOverlay(),d=document.body.scrollTop,b.router.navigate(b.router.baseUrl("")),document.body.scrollTop=d,b.focusedTheme&&b.focusedTheme.focus()}))},navigation:function(){this.model.cid===this.model.collection.at(0).cid&&this.$el.find(".left").addClass("disabled"),this.model.cid===this.model.collection.at(this.model.collection.length-1).cid&&this.$el.find(".right").addClass("disabled")},closeOverlay:function(){a("body").removeClass("modal-open"),this.remove(),this.unbind(),this.trigger("theme:collapse")},deleteTheme:function(){return confirm(b.data.settings.confirmDelete)},nextTheme:function(){var a=this;return a.trigger("theme:next",a.model.cid),!1},previousTheme:function(){var a=this;return a.trigger("theme:previous",a.model.cid),!1},screenshotCheck:function(a){var b,c;b=a.find(".screenshot img"),c=new Image,c.src=b.attr("src"),c.width&&c.width<=300&&a.addClass("small-screenshot")}}),b.view.Preview=b.view.Details.extend({className:"wp-full-overlay expanded",el:".theme-install-overlay",events:{"click .close-full-overlay":"close","click .collapse-sidebar":"collapse","click .previous-theme":"previousTheme","click .next-theme":"nextTheme",keyup:"keyEvent"},html:b.template("theme-preview"),render:function(){var c=this,d=this.model.toJSON();this.$el.removeClass("iframe-ready").html(this.html(d)),b.router.navigate(b.router.baseUrl(b.router.themePath+this.model.get("id")),{replace:!0}),this.$el.fadeIn(200,function(){a("body").addClass("theme-installer-active full-overlay-active"),a(".close-full-overlay").focus()}),this.$el.find("iframe").one("load",function(){c.iframeLoaded()})},iframeLoaded:function(){this.$el.addClass("iframe-ready")},close:function(){return this.$el.fadeOut(200,function(){a("body").removeClass("theme-installer-active full-overlay-active"),b.focusedTheme&&b.focusedTheme.focus()}).removeClass("iframe-ready"),b.router.navigate(b.router.baseUrl("")),this.trigger("preview:close"),this.undelegateEvents(),this.unbind(),!1},collapse:function(b){var d=a(b.currentTarget);return"true"===d.attr("aria-expanded")?d.attr({"aria-expanded":"false","aria-label":c.expandSidebar}):d.attr({"aria-expanded":"true","aria-label":c.collapseSidebar}),this.$el.toggleClass("collapsed").toggleClass("expanded"),!1},keyEvent:function(a){27===a.keyCode&&(this.undelegateEvents(),this.close()),39===a.keyCode&&_.once(this.nextTheme()),37===a.keyCode&&this.previousTheme()}}),b.view.Themes=wp.Backbone.View.extend({className:"themes",$overlay:a("div.theme-overlay"),index:0,count:a(".wp-core-ui .theme-count"),liveThemeCount:0,initialize:function(b){var c=this;this.parent=b.parent,this.setView("grid"),c.currentTheme(),this.listenTo(c.collection,"update",function(){c.parent.page=0,c.currentTheme(),c.render(this)}),this.listenTo(c.collection,"query:success",function(a){_.isNumber(a)?(c.count.text(a),c.announceSearchResults(a)):(c.count.text(c.collection.length),c.announceSearchResults(c.collection.length))}),this.listenTo(c.collection,"query:empty",function(){a("body").addClass("no-results")}),this.listenTo(this.parent,"theme:scroll",function(){c.renderThemes(c.parent.page)}),this.listenTo(this.parent,"theme:close",function(){c.overlay&&c.overlay.closeOverlay()}),a("body").on("keyup",function(a){c.overlay&&(39===a.keyCode&&c.overlay.nextTheme(),37===a.keyCode&&c.overlay.previousTheme(),27===a.keyCode&&c.overlay.collapse(a))})},render:function(){this.$el.empty(),1===b.data.themes.length&&(this.singleTheme=new b.view.Details({model:this.collection.models[0]}),this.singleTheme.render(),this.$el.addClass("single-theme"),this.$el.append(this.singleTheme.el)),this.options.collection.size()>0&&this.renderThemes(this.parent.page),this.liveThemeCount=this.collection.count?this.collection.count:this.collection.length,this.count.text(this.liveThemeCount),this.announceSearchResults(this.liveThemeCount)},renderThemes:function(d){var e=this;return e.instance=e.collection.paginate(d),0===e.instance.size()?void this.parent.trigger("theme:end"):(!b.isInstall&&d>=1&&a(".add-new-theme").remove(),e.instance.each(function(a){e.theme=new b.view.Theme({model:a,parent:e}),e.theme.render(),e.$el.append(e.theme.el),e.listenTo(e.theme,"theme:expand",e.expand,e)}),!b.isInstall&&b.data.settings.canInstall&&this.$el.append('<div class="theme add-new-theme"><a href="'+b.data.settings.installURI+'"><div class="theme-screenshot"><span></span></div><h2 class="theme-name">'+c.addNew+"</h2></a></div>"),void this.parent.page++)},currentTheme:function(){var a,b=this;a=b.collection.findWhere({active:!0}),a&&(b.collection.remove(a),b.collection.add(a,{at:0}))},setView:function(a){return a},expand:function(c){var d=this;this.model=d.collection.get(c),b.router.navigate(b.router.baseUrl(b.router.themePath+this.model.id)),this.setView("detail"),a("body").addClass("modal-open"),this.overlay=new b.view.Details({model:d.model}),this.overlay.render(),this.$overlay.html(this.overlay.el),this.listenTo(this.overlay,"theme:next",function(){d.next([d.model.cid])}).listenTo(this.overlay,"theme:previous",function(){d.previous([d.model.cid])})},next:function(a){var b,c,d=this;b=d.collection.get(a[0]),c=d.collection.at(d.collection.indexOf(b)+1),void 0!==c&&(this.overlay.closeOverlay(),d.theme.trigger("theme:expand",c.cid))},previous:function(a){var b,c,d=this;b=d.collection.get(a[0]),c=d.collection.at(d.collection.indexOf(b)-1),void 0!==c&&(this.overlay.closeOverlay(),d.theme.trigger("theme:expand",c.cid))},announceSearchResults:function(a){0===a?wp.a11y.speak(c.noThemesFound):wp.a11y.speak(c.themesFound.replace("%d",a))}}),b.view.Search=wp.Backbone.View.extend({tagName:"input",className:"wp-filter-search",id:"wp-filter-search-input",searching:!1,attributes:{placeholder:c.searchPlaceholder,type:"search","aria-describedby":"live-search-desc"},events:{input:"search",keyup:"search",blur:"pushState"},initialize:function(a){this.parent=a.parent,this.listenTo(this.parent,"theme:close",function(){this.searching=!1})},search:function(a){"keyup"===a.type&&27===a.which&&(a.target.value=""),this.doSearch(a)},doSearch:_.debounce(function(a){var c={};this.collection.doSearch(a.target.value),this.searching&&13!==a.which?c.replace=!0:this.searching=!0,a.target.value?b.router.navigate(b.router.baseUrl(b.router.searchPath+a.target.value),c):b.router.navigate(b.router.baseUrl(""))},500),pushState:function(a){var c=b.router.baseUrl("");a.target.value&&(c=b.router.baseUrl(b.router.searchPath+a.target.value)),this.searching=!1,b.router.navigate(c)}}),b.Router=Backbone.Router.extend({routes:{"themes.php?theme=:slug":"theme","themes.php?search=:query":"search","themes.php?s=:query":"search","themes.php":"themes","":"themes"},baseUrl:function(a){return"themes.php"+a},themePath:"?theme=",searchPath:"?search=",search:function(b){a(".wp-filter-search").val(b)},themes:function(){a(".wp-filter-search").val("")},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments)}}),b.Run={init:function(){this.themes=new b.Collection(b.data.themes),this.view=new b.view.Appearance({collection:this.themes}),this.render()},render:function(){this.view.render(),this.routes(),Backbone.history.start({root:b.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var c=this;b.router=new b.Router,b.router.on("route:theme",function(a){c.view.view.expand(a)}),b.router.on("route:themes",function(){c.themes.doSearch(""),c.view.trigger("theme:close")}),b.router.on("route:search",function(){a(".wp-filter-search").trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},b.view.InstallerSearch=b.view.Search.extend({events:{input:"search",keyup:"search"},search:function(a){("keyup"!==a.type||9!==a.which&&16!==a.which)&&(this.collection=this.options.parent.view.collection,"keyup"===a.type&&27===a.which&&(a.target.value=""),this.doSearch(a.target.value))},doSearch:_.debounce(function(c){var d={};d.search=c,"author:"===c.substring(0,7)&&(d.search="",d.author=c.slice(7)),"tag:"===c.substring(0,4)&&(d.search="",d.tag=[c.slice(4)]),a(".filter-links li > a.current").removeClass("current"),a("body").removeClass("show-filters filters-applied show-favorites-form"),this.collection.query(d),b.router.navigate(b.router.baseUrl(b.router.searchPath+c),{replace:!0})},500)}),b.view.Installer=b.view.Appearance.extend({el:"#wpbody-content .wrap",events:{"click .filter-links li > a":"onSort","click .theme-filter":"onFilter","click .drawer-toggle":"moreFilters","click .filter-drawer .apply-filters":"applyFilters",'click .filter-group [type="checkbox"]':"addFilter","click .filter-drawer .clear-filters":"clearFilters","click .filtered-by":"backToFilters","click .favorites-form-submit":"saveUsername","keyup #wporg-username-input":"saveUsername"},render:function(){var d=this;this.search(),this.uploader(),this.collection=new b.Collection,this.listenTo(this,"theme:end",function(){d.collection.loadingThemes||(d.collection.loadingThemes=!0,d.collection.currentQuery.page++,_.extend(d.collection.currentQuery.request,{page:d.collection.currentQuery.page}),d.collection.query(d.collection.currentQuery.request))}),this.listenTo(this.collection,"query:success",function(){a("body").removeClass("loading-content"),a(".theme-browser").find("div.error").remove()}),this.listenTo(this.collection,"query:fail",function(){a("body").removeClass("loading-content"),a(".theme-browser").find("div.error").remove(),a(".theme-browser").find("div.themes").before('<div class="error"><p>'+c.error+"</p></div>")}),this.view&&this.view.remove(),this.view=new b.view.Themes({collection:this.collection,parent:this}),this.page=0,this.$el.find(".themes").remove(),this.view.render(),this.$el.find(".theme-browser").append(this.view.el).addClass("rendered")},browse:function(a){this.collection.query({browse:a})},onSort:function(c){var d=a(c.target),e=d.data("sort");c.preventDefault(),a("body").removeClass("filters-applied show-filters"),d.hasClass(this.activeClass)||(this.sort(e),b.router.navigate(b.router.baseUrl(b.router.browsePath+e)))},sort:function(b){this.clearSearch(),a(".filter-links li > a, .theme-filter").removeClass(this.activeClass),a('[data-sort="'+b+'"]').addClass(this.activeClass),"favorites"===b?a("body").addClass("show-favorites-form"):a("body").removeClass("show-favorites-form"),this.browse(b)},onFilter:function(b){var c,d=a(b.target),e=d.data("filter");d.hasClass(this.activeClass)||(a(".filter-links li > a, .theme-section").removeClass(this.activeClass),d.addClass(this.activeClass),e&&(e=_.union(e,this.filtersChecked()),c={tag:[e]},this.collection.query(c)))},addFilter:function(){this.filtersChecked()},applyFilters:function(b){var c,d=this.filtersChecked(),e={tag:d},f=a(".filtered-by .tags");b&&b.preventDefault(),a("body").addClass("filters-applied"),a(".filter-links li > a.current").removeClass("current"),f.empty(),_.each(d,function(b){c=a('label[for="filter-id-'+b+'"]').text(),f.append('<span class="tag">'+c+"</span>")}),this.collection.query(e)},saveUsername:function(b){var c=a("#wporg-username-input").val(),d={browse:"favorites",user:c},e=this;return b&&b.preventDefault(),"keyup"!==b.type||13===b.which?wp.ajax.send("save-wporg-username",{data:{username:c},success:function(){e.collection.query(d)}}):void 0},filtersChecked:function(){var b=a(".filter-group").find(":checkbox"),c=[];return _.each(b.filter(":checked"),function(b){c.push(a(b).prop("value"))}),0===c.length?(a(".filter-drawer .apply-filters").find("span").text(""),a(".filter-drawer .clear-filters").hide(),a("body").removeClass("filters-applied"),!1):(a(".filter-drawer .apply-filters").find("span").text(c.length),a(".filter-drawer .clear-filters").css("display","inline-block"),c)},activeClass:"current",searchContainer:a(".wp-filter .search-form"),uploader:function(){a("a.upload").on("click",function(c){c.preventDefault(),a("body").addClass("show-upload-theme"),b.router.navigate(b.router.baseUrl("?upload"),{replace:!0})}),a("a.browse-themes").on("click",function(c){c.preventDefault(),a("body").removeClass("show-upload-theme"),b.router.navigate(b.router.baseUrl(""),{replace:!0})})},moreFilters:function(c){return c.preventDefault(),a("body").hasClass("filters-applied")?this.backToFilters():a("body").hasClass("show-filters")&&this.filtersChecked()?this.addFilter():(this.clearSearch(),b.router.navigate(b.router.baseUrl("")),void a("body").toggleClass("show-filters"))},clearFilters:function(b){var c=a(".filter-group").find(":checkbox"),d=this;b.preventDefault(),_.each(c.filter(":checked"),function(b){return a(b).prop("checked",!1),d.filtersChecked()})},backToFilters:function(b){b&&b.preventDefault(),a("body").removeClass("filters-applied")},clearSearch:function(){a("#wp-filter-search-input").val("")}}),b.InstallerRouter=Backbone.Router.extend({routes:{"theme-install.php?theme=:slug":"preview","theme-install.php?browse=:sort":"sort","theme-install.php?upload":"upload","theme-install.php?search=:query":"search","theme-install.php":"sort"},baseUrl:function(a){return"theme-install.php"+a},themePath:"?theme=",browsePath:"?browse=",searchPath:"?search=",search:function(b){a(".wp-filter-search").val(b)},navigate:function(){Backbone.history._hasPushState&&Backbone.Router.prototype.navigate.apply(this,arguments)}}),b.RunInstaller={init:function(){this.view=new b.view.Installer({section:"featured",SearchView:b.view.InstallerSearch}),this.render()},render:function(){this.view.render(),this.routes(),Backbone.history.start({root:b.data.settings.adminUrl,pushState:!0,hashChange:!1})},routes:function(){var c=this,d={};b.router=new b.InstallerRouter,b.router.on("route:preview",function(a){d.theme=a,c.view.collection.query(d),c.view.collection.once("update",function(){c.view.view.theme.preview()})}),b.router.on("route:sort",function(a){a||(a="featured"),c.view.sort(a),c.view.trigger("theme:close")}),b.router.on("route:upload",function(){a("a.upload").trigger("click")}),b.router.on("route:search",function(){a(".wp-filter-search").focus().trigger("keyup")}),this.extraRoutes()},extraRoutes:function(){return!1}},a(document).ready(function(){b.isInstall?b.RunInstaller.init():b.Run.init(),a(".broken-themes .delete-theme").on("click",function(){return confirm(_wpThemeSettings.settings.confirmDelete)})})}(jQuery);var tb_position;jQuery(document).ready(function(a){tb_position=function(){var b=a("#TB_window"),c=a(window).width(),d=a(window).height(),e=c>1040?1040:c,f=0;a("#wpadminbar").length&&(f=parseInt(a("#wpadminbar").css("height"),10)),b.size()&&(b.width(e-50).height(d-45-f),a("#TB_iframeContent").width(e-50).height(d-75-f),b.css({"margin-left":"-"+parseInt((e-50)/2,10)+"px"}),"undefined"!=typeof document.body.style.maxWidth&&b.css({top:20+f+"px","margin-top":"0"}))},a(window).resize(function(){tb_position()})});
\ No newline at end of file
index 5bd0b7a7d9cec0cd570698e4cbe9ef52d0fa6ec0..3f1dba71e3aad2751aa5e7948a73981e631c1ad2 100644 (file)
@@ -93,7 +93,7 @@ window.wp = window.wp || {};
         *
         * @since 3.9.0
         *
-        * @param {string} updateType
+        * @param {string} upgradeType
         */
        wp.updates.decrementCount = function( upgradeType ) {
                var count,
@@ -146,13 +146,17 @@ window.wp = window.wp || {};
         * @param {string} slug
         */
        wp.updates.updatePlugin = function( plugin, slug ) {
-               var $message, name;
+               var $message, name,
+                       $card = $( '.plugin-card-' + slug );
+
                if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
                        $message = $( '[data-slug="' + slug + '"]' ).next().find( '.update-message' );
                } else if ( 'plugin-install' === pagenow ) {
-                       $message = $( '.plugin-card-' + slug ).find( '.update-now' );
+                       $message = $card.find( '.update-now' );
                        name = $message.data( 'name' );
                        $message.attr( 'aria-label', wp.updates.l10n.updatingLabel.replace( '%s', name ) );
+                       // Remove previous error messages, if any.
+                       $card.removeClass( 'plugin-card-update-failed' ).find( '.notice.notice-error' ).remove();
                }
 
                $message.addClass( 'updating-message' );
@@ -248,23 +252,47 @@ window.wp = window.wp || {};
         * @param {object} response
         */
        wp.updates.updateError = function( response ) {
-               var $message, name;
+               var $card = $( '.plugin-card-' + response.slug ),
+                       $message,
+                       $button,
+                       name,
+                       error_message;
+
                wp.updates.updateDoneSuccessfully = false;
+
                if ( response.errorCode && response.errorCode == 'unable_to_connect_to_filesystem' && wp.updates.shouldRequestFilesystemCredentials ) {
                        wp.updates.credentialError( response, 'update-plugin' );
                        return;
                }
+
+               error_message = wp.updates.l10n.updateFailed.replace( '%s', response.error );
+
                if ( 'plugins' === pagenow || 'plugins-network' === pagenow ) {
                        $message = $( '[data-slug="' + response.slug + '"]' ).next().find( '.update-message' );
+                       $message.html( error_message ).removeClass( 'updating-message' );
                } else if ( 'plugin-install' === pagenow ) {
-                       $message = $( '.plugin-card-' + response.slug ).find( '.update-now' );
-
-                       name = $message.data( 'name' );
-                       $message.attr( 'aria-label', wp.updates.l10n.updateFailedLabel.replace( '%s', name ) );
+                       $button = $card.find( '.update-now' );
+                       name = $button.data( 'name' );
+
+                       $card
+                               .addClass( 'plugin-card-update-failed' )
+                               .append( '<div class="notice notice-error is-dismissible"><p>' + error_message + '</p></div>' );
+
+                       $button
+                               .attr( 'aria-label', wp.updates.l10n.updateFailedLabel.replace( '%s', name ) )
+                               .html( wp.updates.l10n.updateFailedShort ).removeClass( 'updating-message' );
+
+                       $card.on( 'click', '.notice.is-dismissible .notice-dismiss', function() {
+                               // Use same delay as the total duration of the notice fadeTo + slideUp animation.
+                               setTimeout( function() {
+                                       $card
+                                               .removeClass( 'plugin-card-update-failed' )
+                                               .find( '.column-name a' ).focus();
+                               }, 200 );
+                       });
                }
-               $message.removeClass( 'updating-message' );
-               $message.html( wp.updates.l10n.updateFailed.replace( '%s', response.error ) );
-               wp.a11y.speak( wp.updates.l10n.updateFailed );
+
+               wp.a11y.speak( error_message, 'assertive' );
 
                /*
                 * The lock can be released since this failure was
@@ -552,7 +580,7 @@ window.wp = window.wp || {};
                                        // trigger the update
                                        $( '.plugin-update-tr[data-slug="' + message.slug + '"]' ).find( '.update-link' ).trigger( 'click' );
                                } else if ( 'plugin-install' === pagenow ) {
-                                       $( '.plugin-card-' + message.slug ).find( 'h4 a' ).focus();
+                                       $( '.plugin-card-' + message.slug ).find( '.column-name a' ).focus();
                                        $( '.plugin-card-' + message.slug ).find( '[data-slug="' + message.slug + '"]' ).trigger( 'click' );
                                }
                                break;
index 10267fb69f3f367dae000d14b8a2dc44240fbb20..fb065b2bb56a925b5618e9b034139d95e6488d11 100644 (file)
@@ -1 +1 @@
-window.wp=window.wp||{},function(a,b,c){b.updates={},b.updates.ajaxNonce=window._wpUpdatesSettings.ajax_nonce,b.updates.l10n=window._wpUpdatesSettings.l10n,b.updates.shouldRequestFilesystemCredentials=null,b.updates.filesystemCredentials={ftp:{host:null,username:null,password:null,connectionType:null},ssh:{publicKey:null,privateKey:null}},b.updates.updateLock=!1,b.updates.updateDoneSuccessfully=!1,b.updates.updateQueue=[],b.updates.$elToReturnFocusToFromCredentialsModal=null,b.updates.decrementCount=function(b){var c,d,e=a("#wp-admin-bar-updates .ab-label"),f=a('a[href="update-core.php"] .update-plugins'),g=a("#menu-plugins");if(c=e.text(),c=parseInt(c,10)-1,!(0>c||isNaN(c))&&(a("#wp-admin-bar-updates .ab-item").removeAttr("title"),e.text(c),f.each(function(a,b){b.className=b.className.replace(/count-\d+/,"count-"+c)}),f.removeAttr("title"),f.find(".update-count").text(c),"plugin"===b)){if(d=g.find(".plugin-count").eq(0).text(),d=parseInt(d,10)-1,0>d||isNaN(d))return;g.find(".plugin-count").text(d),g.find(".update-plugins").each(function(a,b){b.className=b.className.replace(/count-\d+/,"count-"+d)}),d>0?a(".subsubsub .upgrade .count").text("("+d+")"):a(".subsubsub .upgrade").remove()}},b.updates.updatePlugin=function(d,e){var f,g;if("plugins"===c||"plugins-network"===c?f=a('[data-slug="'+e+'"]').next().find(".update-message"):"plugin-install"===c&&(f=a(".plugin-card-"+e).find(".update-now"),g=f.data("name"),f.attr("aria-label",b.updates.l10n.updatingLabel.replace("%s",g))),f.addClass("updating-message"),f.html()!==b.updates.l10n.updating&&f.data("originaltext",f.html()),f.text(b.updates.l10n.updating),b.a11y.speak(b.updates.l10n.updatingMsg),b.updates.updateLock)return void b.updates.updateQueue.push({type:"update-plugin",data:{plugin:d,slug:e}});b.updates.updateLock=!0;var h={_ajax_nonce:b.updates.ajaxNonce,plugin:d,slug:e,username:b.updates.filesystemCredentials.ftp.username,password:b.updates.filesystemCredentials.ftp.password,hostname:b.updates.filesystemCredentials.ftp.hostname,connection_type:b.updates.filesystemCredentials.ftp.connectionType,public_key:b.updates.filesystemCredentials.ssh.publicKey,private_key:b.updates.filesystemCredentials.ssh.privateKey};b.ajax.post("update-plugin",h).done(b.updates.updateSuccess).fail(b.updates.updateError)},b.updates.updateSuccess=function(d){var e,f,g,h;"plugins"===c||"plugins-network"===c?(g=a('[data-slug="'+d.slug+'"]').first(),e=g.next().find(".update-message"),g.addClass("updated").removeClass("update"),h=g.find(".plugin-version-author-uri").html().replace(d.oldVersion,d.newVersion),g.find(".plugin-version-author-uri").html(h),g.next().addClass("updated")):"plugin-install"===c&&(e=a(".plugin-card-"+d.slug).find(".update-now"),e.addClass("button-disabled"),f=e.data("name"),e.attr("aria-label",b.updates.l10n.updatedLabel.replace("%s",f))),e.removeClass("updating-message").addClass("updated-message"),e.text(b.updates.l10n.updated),b.a11y.speak(b.updates.l10n.updatedMsg),b.updates.decrementCount("plugin"),b.updates.updateDoneSuccessfully=!0,b.updates.updateLock=!1,a(document).trigger("wp-plugin-update-success",d),b.updates.queueChecker()},b.updates.updateError=function(d){var e,f;return b.updates.updateDoneSuccessfully=!1,d.errorCode&&"unable_to_connect_to_filesystem"==d.errorCode&&b.updates.shouldRequestFilesystemCredentials?void b.updates.credentialError(d,"update-plugin"):("plugins"===c||"plugins-network"===c?e=a('[data-slug="'+d.slug+'"]').next().find(".update-message"):"plugin-install"===c&&(e=a(".plugin-card-"+d.slug).find(".update-now"),f=e.data("name"),e.attr("aria-label",b.updates.l10n.updateFailedLabel.replace("%s",f))),e.removeClass("updating-message"),e.html(b.updates.l10n.updateFailed.replace("%s",d.error)),b.a11y.speak(b.updates.l10n.updateFailed),b.updates.updateLock=!1,a(document).trigger("wp-plugin-update-error",d),void b.updates.queueChecker())},b.updates.showErrorInCredentialsForm=function(b){var c=a(".notification-dialog");c.find(".error").remove(),c.find("h3").after('<div class="error">'+b+"</div>")},b.updates.credentialError=function(a,c){b.updates.updateQueue.push({type:c,data:{plugin:a.plugin,slug:a.slug}}),b.updates.showErrorInCredentialsForm(a.error),b.updates.requestFilesystemCredentials()},b.updates.queueChecker=function(){if(!(b.updates.updateLock||b.updates.updateQueue.length<=0)){var a=b.updates.updateQueue.shift();b.updates.updatePlugin(a.data.plugin,a.data.slug)}},b.updates.requestFilesystemCredentials=function(d){b.updates.updateDoneSuccessfully===!1&&("plugin-install"===c&&d&&(b.updates.$elToReturnFocusToFromCredentialsModal=a(d.target)),b.updates.updateLock=!0,b.updates.requestForCredentialsModalOpen())},b.updates.keydown=function(c){27===c.keyCode?b.updates.requestForCredentialsModalCancel():9===c.keyCode&&("upgrade"!==c.target.id||c.shiftKey?"hostname"===c.target.id&&c.shiftKey&&(a("#upgrade").focus(),c.preventDefault()):(a("#hostname").focus(),c.preventDefault()))},b.updates.requestForCredentialsModalOpen=function(){var c=a("#request-filesystem-credentials-dialog");a("body").addClass("modal-open"),c.show(),c.find("input:enabled:first").focus(),c.keydown(b.updates.keydown)},b.updates.requestForCredentialsModalClose=function(){a("#request-filesystem-credentials-dialog").hide(),a("body").removeClass("modal-open"),b.updates.$elToReturnFocusToFromCredentialsModal.focus()},b.updates.requestForCredentialsModalCancel=function(){var d,e;(b.updates.updateLock!==!1||0!==b.updates.updateQueue.length)&&(d=b.updates.updateQueue[0].data.slug,b.updates.updateLock=!1,b.updates.updateQueue=[],b.updates.requestForCredentialsModalClose(),"plugins"===c||"plugins-network"===c?e=a('[data-slug="'+d+'"]').next().find(".update-message"):"plugin-install"===c&&(e=a(".plugin-card-"+d).find(".update-now")),e.removeClass("updating-message"),e.html(e.data("originaltext")),b.a11y.speak(b.updates.l10n.updateCancel))},b.updates.beforeunload=function(){return b.updates.updateLock?b.updates.l10n.beforeunload:void 0},a(document).ready(function(){b.updates.shouldRequestFilesystemCredentials=a("#request-filesystem-credentials-dialog").length<=0?!1:!0,a("#request-filesystem-credentials-dialog form").on("submit",function(){return b.updates.filesystemCredentials.ftp.hostname=a("#hostname").val(),b.updates.filesystemCredentials.ftp.username=a("#username").val(),b.updates.filesystemCredentials.ftp.password=a("#password").val(),b.updates.filesystemCredentials.ftp.connectionType=a('input[name="connection_type"]:checked').val(),b.updates.filesystemCredentials.ssh.publicKey=a("#public_key").val(),b.updates.filesystemCredentials.ssh.privateKey=a("#private_key").val(),b.updates.requestForCredentialsModalClose(),b.updates.updateLock=!1,b.updates.queueChecker(),!1}),a('#request-filesystem-credentials-dialog [data-js-action="close"], .notification-dialog-background').on("click",function(){b.updates.requestForCredentialsModalCancel()}),a('#request-filesystem-credentials-dialog input[name="connection_type"]').on("change",function(){a(this).parents("form").find("#private_key, #public_key").parents("label").toggle("ssh"==a(this).val())}).change(),a(".plugin-update-tr").on("click",".update-link",function(c){c.preventDefault(),b.updates.shouldRequestFilesystemCredentials&&!b.updates.updateLock&&b.updates.requestFilesystemCredentials(c);var d=a(c.target).parents(".plugin-update-tr");b.updates.$elToReturnFocusToFromCredentialsModal=a("#"+d.data("slug")).find(".check-column input"),b.updates.updatePlugin(d.data("plugin"),d.data("slug"))}),a(".plugin-card").on("click",".update-now",function(c){c.preventDefault();var d=a(c.target);b.updates.shouldRequestFilesystemCredentials&&!b.updates.updateLock&&b.updates.requestFilesystemCredentials(c),b.updates.updatePlugin(d.data("plugin"),d.data("slug"))}),a("#plugin_update_from_iframe").on("click",function(b){var c,d;c=window.parent==window?null:window.parent,a.support.postMessage=!!window.postMessage,a.support.postMessage!==!1&&null!==c&&-1===window.parent.location.pathname.indexOf("update-core.php")&&(b.preventDefault(),d={action:"updatePlugin",slug:a(this).data("slug")},c.postMessage(JSON.stringify(d),window.location.origin))})}),a(window).on("message",function(d){var e,f=d.originalEvent,g=document.location,h=g.protocol+"//"+g.hostname;if(f.origin===h&&(e=a.parseJSON(f.data),"undefined"!=typeof e.action))switch(e.action){case"decrementUpdateCount":b.updates.decrementCount(e.upgradeType);break;case"updatePlugin":tb_remove(),"plugins"===c||"plugins-network"===c?(a("#"+e.slug).find(".check-column input").focus(),a('.plugin-update-tr[data-slug="'+e.slug+'"]').find(".update-link").trigger("click")):"plugin-install"===c&&(a(".plugin-card-"+e.slug).find("h4 a").focus(),a(".plugin-card-"+e.slug).find('[data-slug="'+e.slug+'"]').trigger("click"))}}),a(window).on("beforeunload",b.updates.beforeunload)}(jQuery,window.wp,window.pagenow,window.ajaxurl);
\ No newline at end of file
+window.wp=window.wp||{},function(a,b,c){b.updates={},b.updates.ajaxNonce=window._wpUpdatesSettings.ajax_nonce,b.updates.l10n=window._wpUpdatesSettings.l10n,b.updates.shouldRequestFilesystemCredentials=null,b.updates.filesystemCredentials={ftp:{host:null,username:null,password:null,connectionType:null},ssh:{publicKey:null,privateKey:null}},b.updates.updateLock=!1,b.updates.updateDoneSuccessfully=!1,b.updates.updateQueue=[],b.updates.$elToReturnFocusToFromCredentialsModal=null,b.updates.decrementCount=function(b){var c,d,e=a("#wp-admin-bar-updates .ab-label"),f=a('a[href="update-core.php"] .update-plugins'),g=a("#menu-plugins");if(c=e.text(),c=parseInt(c,10)-1,!(0>c||isNaN(c))&&(a("#wp-admin-bar-updates .ab-item").removeAttr("title"),e.text(c),f.each(function(a,b){b.className=b.className.replace(/count-\d+/,"count-"+c)}),f.removeAttr("title"),f.find(".update-count").text(c),"plugin"===b)){if(d=g.find(".plugin-count").eq(0).text(),d=parseInt(d,10)-1,0>d||isNaN(d))return;g.find(".plugin-count").text(d),g.find(".update-plugins").each(function(a,b){b.className=b.className.replace(/count-\d+/,"count-"+d)}),d>0?a(".subsubsub .upgrade .count").text("("+d+")"):a(".subsubsub .upgrade").remove()}},b.updates.updatePlugin=function(d,e){var f,g,h=a(".plugin-card-"+e);if("plugins"===c||"plugins-network"===c?f=a('[data-slug="'+e+'"]').next().find(".update-message"):"plugin-install"===c&&(f=h.find(".update-now"),g=f.data("name"),f.attr("aria-label",b.updates.l10n.updatingLabel.replace("%s",g)),h.removeClass("plugin-card-update-failed").find(".notice.notice-error").remove()),f.addClass("updating-message"),f.html()!==b.updates.l10n.updating&&f.data("originaltext",f.html()),f.text(b.updates.l10n.updating),b.a11y.speak(b.updates.l10n.updatingMsg),b.updates.updateLock)return void b.updates.updateQueue.push({type:"update-plugin",data:{plugin:d,slug:e}});b.updates.updateLock=!0;var i={_ajax_nonce:b.updates.ajaxNonce,plugin:d,slug:e,username:b.updates.filesystemCredentials.ftp.username,password:b.updates.filesystemCredentials.ftp.password,hostname:b.updates.filesystemCredentials.ftp.hostname,connection_type:b.updates.filesystemCredentials.ftp.connectionType,public_key:b.updates.filesystemCredentials.ssh.publicKey,private_key:b.updates.filesystemCredentials.ssh.privateKey};b.ajax.post("update-plugin",i).done(b.updates.updateSuccess).fail(b.updates.updateError)},b.updates.updateSuccess=function(d){var e,f,g,h;"plugins"===c||"plugins-network"===c?(g=a('[data-slug="'+d.slug+'"]').first(),e=g.next().find(".update-message"),g.addClass("updated").removeClass("update"),h=g.find(".plugin-version-author-uri").html().replace(d.oldVersion,d.newVersion),g.find(".plugin-version-author-uri").html(h),g.next().addClass("updated")):"plugin-install"===c&&(e=a(".plugin-card-"+d.slug).find(".update-now"),e.addClass("button-disabled"),f=e.data("name"),e.attr("aria-label",b.updates.l10n.updatedLabel.replace("%s",f))),e.removeClass("updating-message").addClass("updated-message"),e.text(b.updates.l10n.updated),b.a11y.speak(b.updates.l10n.updatedMsg),b.updates.decrementCount("plugin"),b.updates.updateDoneSuccessfully=!0,b.updates.updateLock=!1,a(document).trigger("wp-plugin-update-success",d),b.updates.queueChecker()},b.updates.updateError=function(d){var e,f,g,h,i=a(".plugin-card-"+d.slug);return b.updates.updateDoneSuccessfully=!1,d.errorCode&&"unable_to_connect_to_filesystem"==d.errorCode&&b.updates.shouldRequestFilesystemCredentials?void b.updates.credentialError(d,"update-plugin"):(h=b.updates.l10n.updateFailed.replace("%s",d.error),"plugins"===c||"plugins-network"===c?(e=a('[data-slug="'+d.slug+'"]').next().find(".update-message"),e.html(h).removeClass("updating-message")):"plugin-install"===c&&(f=i.find(".update-now"),g=f.data("name"),i.addClass("plugin-card-update-failed").append('<div class="notice notice-error is-dismissible"><p>'+h+"</p></div>"),f.attr("aria-label",b.updates.l10n.updateFailedLabel.replace("%s",g)).html(b.updates.l10n.updateFailedShort).removeClass("updating-message"),i.on("click",".notice.is-dismissible .notice-dismiss",function(){setTimeout(function(){i.removeClass("plugin-card-update-failed").find(".column-name a").focus()},200)})),b.a11y.speak(h,"assertive"),b.updates.updateLock=!1,a(document).trigger("wp-plugin-update-error",d),void b.updates.queueChecker())},b.updates.showErrorInCredentialsForm=function(b){var c=a(".notification-dialog");c.find(".error").remove(),c.find("h3").after('<div class="error">'+b+"</div>")},b.updates.credentialError=function(a,c){b.updates.updateQueue.push({type:c,data:{plugin:a.plugin,slug:a.slug}}),b.updates.showErrorInCredentialsForm(a.error),b.updates.requestFilesystemCredentials()},b.updates.queueChecker=function(){if(!(b.updates.updateLock||b.updates.updateQueue.length<=0)){var a=b.updates.updateQueue.shift();b.updates.updatePlugin(a.data.plugin,a.data.slug)}},b.updates.requestFilesystemCredentials=function(d){b.updates.updateDoneSuccessfully===!1&&("plugin-install"===c&&d&&(b.updates.$elToReturnFocusToFromCredentialsModal=a(d.target)),b.updates.updateLock=!0,b.updates.requestForCredentialsModalOpen())},b.updates.keydown=function(c){27===c.keyCode?b.updates.requestForCredentialsModalCancel():9===c.keyCode&&("upgrade"!==c.target.id||c.shiftKey?"hostname"===c.target.id&&c.shiftKey&&(a("#upgrade").focus(),c.preventDefault()):(a("#hostname").focus(),c.preventDefault()))},b.updates.requestForCredentialsModalOpen=function(){var c=a("#request-filesystem-credentials-dialog");a("body").addClass("modal-open"),c.show(),c.find("input:enabled:first").focus(),c.keydown(b.updates.keydown)},b.updates.requestForCredentialsModalClose=function(){a("#request-filesystem-credentials-dialog").hide(),a("body").removeClass("modal-open"),b.updates.$elToReturnFocusToFromCredentialsModal.focus()},b.updates.requestForCredentialsModalCancel=function(){var d,e;(b.updates.updateLock!==!1||0!==b.updates.updateQueue.length)&&(d=b.updates.updateQueue[0].data.slug,b.updates.updateLock=!1,b.updates.updateQueue=[],b.updates.requestForCredentialsModalClose(),"plugins"===c||"plugins-network"===c?e=a('[data-slug="'+d+'"]').next().find(".update-message"):"plugin-install"===c&&(e=a(".plugin-card-"+d).find(".update-now")),e.removeClass("updating-message"),e.html(e.data("originaltext")),b.a11y.speak(b.updates.l10n.updateCancel))},b.updates.beforeunload=function(){return b.updates.updateLock?b.updates.l10n.beforeunload:void 0},a(document).ready(function(){b.updates.shouldRequestFilesystemCredentials=a("#request-filesystem-credentials-dialog").length<=0?!1:!0,a("#request-filesystem-credentials-dialog form").on("submit",function(){return b.updates.filesystemCredentials.ftp.hostname=a("#hostname").val(),b.updates.filesystemCredentials.ftp.username=a("#username").val(),b.updates.filesystemCredentials.ftp.password=a("#password").val(),b.updates.filesystemCredentials.ftp.connectionType=a('input[name="connection_type"]:checked').val(),b.updates.filesystemCredentials.ssh.publicKey=a("#public_key").val(),b.updates.filesystemCredentials.ssh.privateKey=a("#private_key").val(),b.updates.requestForCredentialsModalClose(),b.updates.updateLock=!1,b.updates.queueChecker(),!1}),a('#request-filesystem-credentials-dialog [data-js-action="close"], .notification-dialog-background').on("click",function(){b.updates.requestForCredentialsModalCancel()}),a('#request-filesystem-credentials-dialog input[name="connection_type"]').on("change",function(){a(this).parents("form").find("#private_key, #public_key").parents("label").toggle("ssh"==a(this).val())}).change(),a(".plugin-update-tr").on("click",".update-link",function(c){c.preventDefault(),b.updates.shouldRequestFilesystemCredentials&&!b.updates.updateLock&&b.updates.requestFilesystemCredentials(c);var d=a(c.target).parents(".plugin-update-tr");b.updates.$elToReturnFocusToFromCredentialsModal=a("#"+d.data("slug")).find(".check-column input"),b.updates.updatePlugin(d.data("plugin"),d.data("slug"))}),a(".plugin-card").on("click",".update-now",function(c){c.preventDefault();var d=a(c.target);b.updates.shouldRequestFilesystemCredentials&&!b.updates.updateLock&&b.updates.requestFilesystemCredentials(c),b.updates.updatePlugin(d.data("plugin"),d.data("slug"))}),a("#plugin_update_from_iframe").on("click",function(b){var c,d;c=window.parent==window?null:window.parent,a.support.postMessage=!!window.postMessage,a.support.postMessage!==!1&&null!==c&&-1===window.parent.location.pathname.indexOf("update-core.php")&&(b.preventDefault(),d={action:"updatePlugin",slug:a(this).data("slug")},c.postMessage(JSON.stringify(d),window.location.origin))})}),a(window).on("message",function(d){var e,f=d.originalEvent,g=document.location,h=g.protocol+"//"+g.hostname;if(f.origin===h&&(e=a.parseJSON(f.data),"undefined"!=typeof e.action))switch(e.action){case"decrementUpdateCount":b.updates.decrementCount(e.upgradeType);break;case"updatePlugin":tb_remove(),"plugins"===c||"plugins-network"===c?(a("#"+e.slug).find(".check-column input").focus(),a('.plugin-update-tr[data-slug="'+e.slug+'"]').find(".update-link").trigger("click")):"plugin-install"===c&&(a(".plugin-card-"+e.slug).find(".column-name a").focus(),a(".plugin-card-"+e.slug).find('[data-slug="'+e.slug+'"]').trigger("click"))}}),a(window).on("beforeunload",b.updates.beforeunload)}(jQuery,window.wp,window.pagenow,window.ajaxurl);
\ No newline at end of file
index 245d8738fd7e22bc08d4bd83896e6cb0701f7256..525084483bbe559f14555684d72bcde1763e2924 100644 (file)
                } );
        }
 
+       function resetToggle() {
+               $toggleButton
+                       .data( 'toggle', 0 )
+                       .attr({
+                               'aria-label': userProfileL10n.ariaHide
+                       })
+                       .find( '.text' )
+                               .text( userProfileL10n.hide )
+                       .end()
+                       .find( '.dashicons' )
+                               .removeClass( 'dashicons-visibility' )
+                               .addClass( 'dashicons-hidden' );
+
+               $pass1Text.focus();
+
+               $pass1Label.attr( 'for', 'pass1-text' );
+       }
+
        function bindToggleButton() {
                $toggleButton = $pass1Row.find('.wp-hide-pw');
                $toggleButton.show().on( 'click', function () {
                        if ( 1 === parseInt( $toggleButton.data( 'toggle' ), 10 ) ) {
                                $pass1Wrap.addClass( 'show-password' );
-                               $toggleButton
-                                       .data( 'toggle', 0 )
-                                       .attr({
-                                               'aria-label': userProfileL10n.ariaHide
-                                       })
-                                       .find( '.text' )
-                                               .text( userProfileL10n.hide )
-                                       .end()
-                                       .find( '.dashicons' )
-                                               .removeClass('dashicons-visibility')
-                                               .addClass('dashicons-hidden');
-
-                               $pass1Text.focus();
 
-                               $pass1Label.attr( 'for', 'pass1-text' );
+                               resetToggle();
 
                                if ( ! _.isUndefined( $pass1Text[0].setSelectionRange ) ) {
                                        $pass1Text[0].setSelectionRange( 0, 100 );
                        }
                } );
 
-               $passwordWrapper = $pass1Row.find('.wp-pwd').hide();
+               // Disable hidden inputs to prevent autofill and submission.
+               if ( $pass1.is( ':hidden' ) ) {
+                       $pass1.prop( 'disabled', true );
+                       $pass2.prop( 'disabled', true );
+                       $pass1Text.prop( 'disabled', true );
+               }
+
+               $passwordWrapper = $pass1Row.find( '.wp-pwd' );
+               $generateButton  = $pass1Row.find( 'button.wp-generate-pw' );
 
                bindToggleButton();
 
-               $generateButton = $pass1Row.find( 'button.wp-generate-pw' ).show();
+               if ( $generateButton.length ) {
+                       $passwordWrapper.hide();
+               }
+
+               $generateButton.show();
                $generateButton.on( 'click', function () {
                        updateLock = true;
 
                        $generateButton.hide();
                        $passwordWrapper.show();
 
+                       // Enable the inputs when showing.
+                       $pass1.attr( 'disabled', false );
+                       $pass2.attr( 'disabled', false );
+                       $pass1Text.attr( 'disabled', false );
+
                        if ( $pass1Text.val().length === 0 ) {
                                generatePassword();
                        }
                $cancelButton.on( 'click', function () {
                        updateLock = false;
 
+                       // Clear any entered password.
+                       $pass1Text.val( '' );
+
+                       // Generate a new password.
+                       wp.ajax.post( 'generate-password' )
+                               .done( function( data ) {
+                                       $pass1.data( 'pw', data );
+                               } );
+
                        $generateButton.show();
                        $passwordWrapper.hide();
 
+                       // Disable the inputs when hiding to prevent autofill and submission.
+                       $pass1.prop( 'disabled', true );
+                       $pass2.prop( 'disabled', true );
+                       $pass1Text.prop( 'disabled', true );
+
+                       resetToggle();
+
                        // Clear password field to prevent update
                        $pass1.val( '' ).trigger( 'pwupdate' );
                        $submitButtons.prop( 'disabled', false );
                $pass1Row.closest('form').on( 'submit', function () {
                        updateLock = false;
 
+                       $pass1.prop( 'disabled', false );
+                       $pass2.prop( 'disabled', false );
                        $pass2.val( $pass1.val() );
                        $pass1Wrap.removeClass( 'show-password' );
                });
index de4399c2df0c527c2a9757a42df2240870b3866f..f793683ddbe276e0505deefa351cdb180057e1a3 100644 (file)
@@ -1 +1 @@
-!function(a){function b(){"function"!=typeof zxcvbn?setTimeout(b,50):(i.val(i.data("pw")),i.trigger("pwupdate").trigger("wp-check-valid-field"),1!==parseInt(o.data("start-masked"),10)?h.addClass("show-password"):o.trigger("click"))}function c(){var c=a("#pass-strength-result")[0];r=i.val(),h=i.parent(),j=a('<input type="text"/>').attr({id:"pass1-text",name:"pass1-text",autocomplete:"off"}).addClass(i[0].className).data("pw",i.data("pw")).val(i.val()).on(s,function(){j.val()!==r&&(l.val(j.val()),i.val(j.val()).trigger("pwupdate"),r=j.val())}),i.after(j),1===parseInt(i.data("reveal"),10)&&b(),i.on(s+" pwupdate",function(){i.val()!==r&&(r=i.val(),j.val()!==r&&j.val(r),i.add(j).removeClass("short bad good strong"),c.className&&(i.add(j).addClass(c.className),"short"===c.className||"bad"===c.className?(n.prop("checked")||p.prop("disabled",!0),m.show()):(p.prop("disabled",!1),m.hide())))})}function d(){o=g.find(".wp-hide-pw"),o.show().on("click",function(){1===parseInt(o.data("toggle"),10)?(h.addClass("show-password"),o.data("toggle",0).attr({"aria-label":userProfileL10n.ariaHide}).find(".text").text(userProfileL10n.hide).end().find(".dashicons").removeClass("dashicons-visibility").addClass("dashicons-hidden"),j.focus(),k.attr("for","pass1-text"),_.isUndefined(j[0].setSelectionRange)||j[0].setSelectionRange(0,100)):(h.removeClass("show-password"),o.data("toggle",1).attr({"aria-label":userProfileL10n.ariaShow}).find(".text").text(userProfileL10n.show).end().find(".dashicons").removeClass("dashicons-hidden").addClass("dashicons-visibility"),i.focus(),k.attr("for","pass1"),_.isUndefined(i[0].setSelectionRange)||i[0].setSelectionRange(0,100))})}function e(){var e,f,o;g=a(".user-pass1-wrap"),k=g.find("th label").attr("for","pass1-text"),a(".user-pass2-wrap").hide(),q=a("#submit").on("click",function(){t=!1}),p=q.add(" #createusersub"),m=a(".pw-weak"),n=m.find(".pw-checkbox"),n.change(function(){p.prop("disabled",!n.prop("checked"))}),i=a("#pass1"),i.length&&c(),l=a("#pass2").on(s,function(){l.val().length>0&&(i.val(l.val()),l.val(""),r="",i.trigger("pwupdate"))}),e=g.find(".wp-pwd").hide(),d(),f=g.find("button.wp-generate-pw").show(),f.on("click",function(){t=!0,f.hide(),e.show(),0===j.val().length&&b(),_.defer(function(){j.focus(),_.isUndefined(j[0].setSelectionRange)||j[0].setSelectionRange(0,100)},0)}),o=g.find("button.wp-cancel-pw"),o.on("click",function(){t=!1,f.show(),e.hide(),i.val("").trigger("pwupdate"),p.prop("disabled",!1)}),g.closest("form").on("submit",function(){t=!1,l.val(i.val()),h.removeClass("show-password")})}function f(){var b,c=a("#pass1").val();if(a("#pass-strength-result").removeClass("short bad good strong"),!c)return void a("#pass-strength-result").html("&nbsp;");switch(b=wp.passwordStrength.meter(c,wp.passwordStrength.userInputBlacklist(),c)){case 2:a("#pass-strength-result").addClass("bad").html(pwsL10n.bad);break;case 3:a("#pass-strength-result").addClass("good").html(pwsL10n.good);break;case 4:a("#pass-strength-result").addClass("strong").html(pwsL10n.strong);break;case 5:a("#pass-strength-result").addClass("short").html(pwsL10n.mismatch);break;default:a("#pass-strength-result").addClass("short").html(pwsL10n["short"])}}var g,h,i,j,k,l,m,n,o,p,q,r,s,t=!1;s="oninput"in document.createElement("input")?"input":"keyup",a(document).ready(function(){var b,c,d,g,h=a("#display_name");a("#pass1").val("").on(s+" pwupdate",f),a("#pass-strength-result").show(),a(".color-palette").click(function(){a(this).siblings('input[name="admin_color"]').prop("checked",!0)}),h.length&&a("#first_name, #last_name, #nickname").bind("blur.user_profile",function(){var b=[],c={display_nickname:a("#nickname").val()||"",display_username:a("#user_login").val()||"",display_firstname:a("#first_name").val()||"",display_lastname:a("#last_name").val()||""};c.display_firstname&&c.display_lastname&&(c.display_firstlast=c.display_firstname+" "+c.display_lastname,c.display_lastfirst=c.display_lastname+" "+c.display_firstname),a.each(a("option",h),function(a,c){b.push(c.value)}),a.each(c,function(d,e){if(e){var f=e.replace(/<\/?[a-z][^>]*>/gi,"");c[d].length&&-1===a.inArray(f,b)&&(b.push(f),a("<option />",{text:f}).appendTo(h))}})}),b=a("#color-picker"),c=a("#colors-css"),d=a("input#user_id").val(),g=a('input[name="checkuser_id"]').val(),b.on("click.colorpicker",".color-option",function(){var b,e=a(this);if(!e.hasClass("selected")&&(e.siblings(".selected").removeClass("selected"),e.addClass("selected").find('input[type="radio"]').prop("checked",!0),d===g)){if(0===c.length&&(c=a('<link rel="stylesheet" />').appendTo("head")),c.attr("href",e.children(".css_url").val()),"undefined"!=typeof wp&&wp.svgPainter){try{b=a.parseJSON(e.children(".icon_colors").val())}catch(f){}b&&(wp.svgPainter.setColors(b),wp.svgPainter.paint())}a.post(ajaxurl,{action:"save-user-color-scheme",color_scheme:e.children('input[name="admin_color"]').val(),nonce:a("#color-nonce").val()}).done(function(b){b.success&&a("body").removeClass(b.data.previousScheme).addClass(b.data.currentScheme)})}}),e()}),a("#destroy-sessions").on("click",function(b){var c=a(this);wp.ajax.post("destroy-sessions",{nonce:a("#_wpnonce").val(),user_id:a("#user_id").val()}).done(function(a){c.prop("disabled",!0),c.siblings(".notice").remove(),c.before('<div class="notice notice-success inline"><p>'+a.message+"</p></div>")}).fail(function(a){c.siblings(".notice").remove(),c.before('<div class="notice notice-error inline"><p>'+a.message+"</p></div>")}),b.preventDefault()}),window.generatePassword=b,a(window).on("beforeunload",function(){return!0===t?userProfileL10n.warn:void 0})}(jQuery);
\ No newline at end of file
+!function(a){function b(){"function"!=typeof zxcvbn?setTimeout(b,50):(j.val(j.data("pw")),j.trigger("pwupdate").trigger("wp-check-valid-field"),1!==parseInt(p.data("start-masked"),10)?i.addClass("show-password"):p.trigger("click"))}function c(){var c=a("#pass-strength-result")[0];s=j.val(),i=j.parent(),k=a('<input type="text"/>').attr({id:"pass1-text",name:"pass1-text",autocomplete:"off"}).addClass(j[0].className).data("pw",j.data("pw")).val(j.val()).on(t,function(){k.val()!==s&&(m.val(k.val()),j.val(k.val()).trigger("pwupdate"),s=k.val())}),j.after(k),1===parseInt(j.data("reveal"),10)&&b(),j.on(t+" pwupdate",function(){j.val()!==s&&(s=j.val(),k.val()!==s&&k.val(s),j.add(k).removeClass("short bad good strong"),c.className&&(j.add(k).addClass(c.className),"short"===c.className||"bad"===c.className?(o.prop("checked")||q.prop("disabled",!0),n.show()):(q.prop("disabled",!1),n.hide())))})}function d(){p.data("toggle",0).attr({"aria-label":userProfileL10n.ariaHide}).find(".text").text(userProfileL10n.hide).end().find(".dashicons").removeClass("dashicons-visibility").addClass("dashicons-hidden"),k.focus(),l.attr("for","pass1-text")}function e(){p=h.find(".wp-hide-pw"),p.show().on("click",function(){1===parseInt(p.data("toggle"),10)?(i.addClass("show-password"),d(),_.isUndefined(k[0].setSelectionRange)||k[0].setSelectionRange(0,100)):(i.removeClass("show-password"),p.data("toggle",1).attr({"aria-label":userProfileL10n.ariaShow}).find(".text").text(userProfileL10n.show).end().find(".dashicons").removeClass("dashicons-hidden").addClass("dashicons-visibility"),j.focus(),l.attr("for","pass1"),_.isUndefined(j[0].setSelectionRange)||j[0].setSelectionRange(0,100))})}function f(){var f,g,p;h=a(".user-pass1-wrap"),l=h.find("th label").attr("for","pass1-text"),a(".user-pass2-wrap").hide(),r=a("#submit").on("click",function(){u=!1}),q=r.add(" #createusersub"),n=a(".pw-weak"),o=n.find(".pw-checkbox"),o.change(function(){q.prop("disabled",!o.prop("checked"))}),j=a("#pass1"),j.length&&c(),m=a("#pass2").on(t,function(){m.val().length>0&&(j.val(m.val()),m.val(""),s="",j.trigger("pwupdate"))}),j.is(":hidden")&&(j.prop("disabled",!0),m.prop("disabled",!0),k.prop("disabled",!0)),f=h.find(".wp-pwd"),g=h.find("button.wp-generate-pw"),e(),g.length&&f.hide(),g.show(),g.on("click",function(){u=!0,g.hide(),f.show(),j.attr("disabled",!1),m.attr("disabled",!1),k.attr("disabled",!1),0===k.val().length&&b(),_.defer(function(){k.focus(),_.isUndefined(k[0].setSelectionRange)||k[0].setSelectionRange(0,100)},0)}),p=h.find("button.wp-cancel-pw"),p.on("click",function(){u=!1,k.val(""),wp.ajax.post("generate-password").done(function(a){j.data("pw",a)}),g.show(),f.hide(),j.prop("disabled",!0),m.prop("disabled",!0),k.prop("disabled",!0),d(),j.val("").trigger("pwupdate"),q.prop("disabled",!1)}),h.closest("form").on("submit",function(){u=!1,j.prop("disabled",!1),m.prop("disabled",!1),m.val(j.val()),i.removeClass("show-password")})}function g(){var b,c=a("#pass1").val();if(a("#pass-strength-result").removeClass("short bad good strong"),!c)return void a("#pass-strength-result").html("&nbsp;");switch(b=wp.passwordStrength.meter(c,wp.passwordStrength.userInputBlacklist(),c)){case 2:a("#pass-strength-result").addClass("bad").html(pwsL10n.bad);break;case 3:a("#pass-strength-result").addClass("good").html(pwsL10n.good);break;case 4:a("#pass-strength-result").addClass("strong").html(pwsL10n.strong);break;case 5:a("#pass-strength-result").addClass("short").html(pwsL10n.mismatch);break;default:a("#pass-strength-result").addClass("short").html(pwsL10n["short"])}}var h,i,j,k,l,m,n,o,p,q,r,s,t,u=!1;t="oninput"in document.createElement("input")?"input":"keyup",a(document).ready(function(){var b,c,d,e,h=a("#display_name");a("#pass1").val("").on(t+" pwupdate",g),a("#pass-strength-result").show(),a(".color-palette").click(function(){a(this).siblings('input[name="admin_color"]').prop("checked",!0)}),h.length&&a("#first_name, #last_name, #nickname").bind("blur.user_profile",function(){var b=[],c={display_nickname:a("#nickname").val()||"",display_username:a("#user_login").val()||"",display_firstname:a("#first_name").val()||"",display_lastname:a("#last_name").val()||""};c.display_firstname&&c.display_lastname&&(c.display_firstlast=c.display_firstname+" "+c.display_lastname,c.display_lastfirst=c.display_lastname+" "+c.display_firstname),a.each(a("option",h),function(a,c){b.push(c.value)}),a.each(c,function(d,e){if(e){var f=e.replace(/<\/?[a-z][^>]*>/gi,"");c[d].length&&-1===a.inArray(f,b)&&(b.push(f),a("<option />",{text:f}).appendTo(h))}})}),b=a("#color-picker"),c=a("#colors-css"),d=a("input#user_id").val(),e=a('input[name="checkuser_id"]').val(),b.on("click.colorpicker",".color-option",function(){var b,f=a(this);if(!f.hasClass("selected")&&(f.siblings(".selected").removeClass("selected"),f.addClass("selected").find('input[type="radio"]').prop("checked",!0),d===e)){if(0===c.length&&(c=a('<link rel="stylesheet" />').appendTo("head")),c.attr("href",f.children(".css_url").val()),"undefined"!=typeof wp&&wp.svgPainter){try{b=a.parseJSON(f.children(".icon_colors").val())}catch(g){}b&&(wp.svgPainter.setColors(b),wp.svgPainter.paint())}a.post(ajaxurl,{action:"save-user-color-scheme",color_scheme:f.children('input[name="admin_color"]').val(),nonce:a("#color-nonce").val()}).done(function(b){b.success&&a("body").removeClass(b.data.previousScheme).addClass(b.data.currentScheme)})}}),f()}),a("#destroy-sessions").on("click",function(b){var c=a(this);wp.ajax.post("destroy-sessions",{nonce:a("#_wpnonce").val(),user_id:a("#user_id").val()}).done(function(a){c.prop("disabled",!0),c.siblings(".notice").remove(),c.before('<div class="notice notice-success inline"><p>'+a.message+"</p></div>")}).fail(function(a){c.siblings(".notice").remove(),c.before('<div class="notice notice-error inline"><p>'+a.message+"</p></div>")}),b.preventDefault()}),window.generatePassword=b,a(window).on("beforeunload",function(){return!0===u?userProfileL10n.warn:void 0})}(jQuery);
\ No newline at end of file
index 000921a0be6b4567c7ec1a6177af5261c935669d..de64533bdfaa3e0f5ffd052d14d6ca1dc7e31d0e 100644 (file)
@@ -80,6 +80,9 @@ wpWidgets = {
                                widget.removeClass( 'open' );
                                wpWidgets.close( widget );
                                e.preventDefault();
+                       } else if ( target.attr( 'id' ) === 'inactive-widgets-control-remove' ) {
+                               wpWidgets.removeInactiveWidgets();
+                               e.preventDefault();
                        }
                });
 
@@ -178,6 +181,7 @@ wpWidgets = {
                                        inside = ui.item.children('.widget-inside');
 
                                if ( inside.css('display') === 'block' ) {
+                                       ui.item.removeClass('open');
                                        inside.hide();
                                        $(this).sortable('refreshPositions');
                                }
@@ -296,7 +300,7 @@ wpWidgets = {
 
                                if ( ui.draggable.hasClass('ui-sortable-helper') ) {
                                        $('#removing-widget').show().children('span')
-                                       .html( ui.draggable.find('div.widget-title').children('h4').html() );
+                                       .html( ui.draggable.find( 'div.widget-title' ).children( 'h3' ).html() );
                                }
                        },
                        out: function(e,ui) {
@@ -309,7 +313,7 @@ wpWidgets = {
                // Area Chooser
                $( '#widgets-right .widgets-holder-wrap' ).each( function( index, element ) {
                        var $element = $( element ),
-                               name = $element.find( '.sidebar-name h3' ).text(),
+                               name = $element.find( '.sidebar-name h2' ).text(),
                                id = $element.find( '.widgets-sortables' ).attr( 'id' ),
                                li = $('<li tabindex="0">').text( $.trim( name ) );
 
@@ -386,6 +390,7 @@ wpWidgets = {
                });
 
                $.post( ajaxurl, data, function() {
+                       $( '#inactive-widgets-control-remove' ).prop( 'disabled' , ! $( '#wp_inactive_widgets .widget' ).length );
                        $( '.spinner' ).removeClass( 'is-active' );
                });
        },
@@ -430,6 +435,10 @@ wpWidgets = {
                                        });
                                } else {
                                        widget.remove();
+
+                                       if ( sidebarId === 'wp_inactive_widgets' ) {
+                                               $( '#inactive-widgets-control-remove' ).prop( 'disabled' , ! $( '#wp_inactive_widgets .widget' ).length );
+                                       }
                                }
                        } else {
                                $( '.spinner' ).removeClass( 'is-active' );
@@ -437,14 +446,38 @@ wpWidgets = {
                                        $( 'div.widget-content', widget ).html( r );
                                        wpWidgets.appendTitle( widget );
                                        $document.trigger( 'widget-updated', [ widget ] );
+
+                                       if ( sidebarId === 'wp_inactive_widgets' ) {
+                                               $( '#inactive-widgets-control-remove' ).prop( 'disabled' , ! $( '#wp_inactive_widgets .widget' ).length );
+                                       }
                                }
                        }
+
                        if ( order ) {
                                wpWidgets.saveOrder();
                        }
                });
        },
 
+       removeInactiveWidgets : function() {
+               var $element = $( '.remove-inactive-widgets' ), a, data;
+
+               $( '.spinner', $element ).addClass( 'is-active' );
+
+               a = {
+                       action : 'delete-inactive-widgets',
+                       removeinactivewidgets : $( '#_wpnonce_remove_inactive_widgets' ).val()
+               };
+
+               data = $.param( a );
+
+               $.post( ajaxurl, data, function() {
+                       $( '#wp_inactive_widgets .widget' ).remove();
+                       $( '#inactive-widgets-control-remove' ).prop( 'disabled' , true );
+                       $( '.spinner', $element ).removeClass( 'is-active' );
+               } );
+       },
+
        appendTitle : function(widget) {
                var title = $('input[id*="-title"]', widget).val() || '';
 
index efee514180e2c4bee0b8c22a458701ad97543a76..d74660672003839f7642082d5b39a4ae86250a17 100644 (file)
@@ -1 +1 @@
-var wpWidgets;!function(a){var b=a(document);wpWidgets={hoveredSidebar:null,init:function(){var c,d,e=this,f=a(".widgets-chooser"),g=f.find(".widgets-chooser-sidebars"),h=a("div.widgets-sortables"),i=!("undefined"==typeof isRtl||!isRtl);a("#widgets-right .sidebar-name").click(function(){var c=a(this),d=c.closest(".widgets-holder-wrap");d.hasClass("closed")?(d.removeClass("closed"),c.parent().sortable("refresh")):d.addClass("closed"),b.triggerHandler("wp-pin-menu")}),a("#widgets-left .sidebar-name").click(function(){a(this).closest(".widgets-holder-wrap").toggleClass("closed"),b.triggerHandler("wp-pin-menu")}),a(document.body).bind("click.widgets-toggle",function(b){var c,d,e,f,g,h=a(b.target),j={"z-index":100};h.parents(".widget-top").length&&!h.parents("#available-widgets").length?(c=h.closest("div.widget"),d=c.children(".widget-inside"),e=parseInt(c.find("input.widget-width").val(),10),f=c.parent().width(),d.is(":hidden")?(e>250&&e+30>f&&c.closest("div.widgets-sortables").length&&(g=c.closest("div.widget-liquid-right").length?i?"margin-right":"margin-left":i?"margin-left":"margin-right",j[g]=f-(e+30)+"px",c.css(j)),c.addClass("open"),d.slideDown("fast")):d.slideUp("fast",function(){c.attr("style",""),c.removeClass("open")}),b.preventDefault()):h.hasClass("widget-control-save")?(wpWidgets.save(h.closest("div.widget"),0,1,0),b.preventDefault()):h.hasClass("widget-control-remove")?(wpWidgets.save(h.closest("div.widget"),1,1,0),b.preventDefault()):h.hasClass("widget-control-close")&&(c=h.closest("div.widget"),c.removeClass("open"),wpWidgets.close(c),b.preventDefault())}),h.children(".widget").each(function(){var b=a(this);wpWidgets.appendTitle(this),b.find("p.widget-error").length&&b.find("a.widget-action").trigger("click")}),a("#widget-list").children(".widget").draggable({connectToSortable:"div.widgets-sortables",handle:"> .widget-top > .widget-title",distance:2,helper:"clone",zIndex:100,containment:"#wpwrap",refreshPositions:!0,start:function(b,c){var f=a(this).find(".widgets-chooser");c.helper.find("div.widget-description").hide(),d=this.id,f.length&&(a("#wpbody-content").append(f.hide()),c.helper.find(".widgets-chooser").remove(),e.clearWidgetSelection())},stop:function(){c&&a(c).hide(),c=""}}),h.droppable({tolerance:"intersect",over:function(b){var c=a(b.target).parent();wpWidgets.hoveredSidebar&&!c.is(wpWidgets.hoveredSidebar)&&wpWidgets.closeSidebar(b),c.hasClass("closed")&&(wpWidgets.hoveredSidebar=c,c.removeClass("closed")),a(this).sortable("refresh")},out:function(a){wpWidgets.hoveredSidebar&&wpWidgets.closeSidebar(a)}}),h.sortable({placeholder:"widget-placeholder",items:"> .widget",handle:"> .widget-top > .widget-title",cursor:"move",distance:2,containment:"#wpwrap",tolerance:"pointer",refreshPositions:!0,start:function(b,c){var d,e=a(this),f=e.parent(),g=c.item.children(".widget-inside");"block"===g.css("display")&&(g.hide(),a(this).sortable("refreshPositions")),f.hasClass("closed")||(d=c.item.hasClass("ui-draggable")?e.height():1+e.height(),e.css("min-height",d+"px"))},stop:function(e,f){var g,h,i,j,k,l,m=f.item,n=d;return wpWidgets.hoveredSidebar=null,m.hasClass("deleting")?(wpWidgets.save(m,1,0,1),void m.remove()):(g=m.find("input.add_new").val(),h=m.find("input.multi_number").val(),m.attr("style","").removeClass("ui-draggable"),d="",g&&("multi"===g?(m.html(m.html().replace(/<[^<>]+>/g,function(a){return a.replace(/__i__|%i%/g,h)})),m.attr("id",n.replace("__i__",h)),h++,a("div#"+n).find("input.multi_number").val(h)):"single"===g&&(m.attr("id","new-"+n),c="div#"+n),wpWidgets.save(m,0,0,1),m.find("input.add_new").val(""),b.trigger("widget-added",[m])),i=m.parent(),i.parent().hasClass("closed")&&(i.parent().removeClass("closed"),j=i.children(".widget"),j.length>1&&(k=j.get(0),l=m.get(0),k.id&&l.id&&k.id!==l.id&&a(k).before(m))),void(g?m.find("a.widget-action").trigger("click"):wpWidgets.saveOrder(i.attr("id"))))},activate:function(){a(this).parent().addClass("widget-hover")},deactivate:function(){a(this).css("min-height","").parent().removeClass("widget-hover")},receive:function(b,c){var d=a(c.sender);return this.id.indexOf("orphaned_widgets")>-1?void d.sortable("cancel"):void(d.attr("id").indexOf("orphaned_widgets")>-1&&!d.children(".widget").length&&d.parents(".orphan-sidebar").slideUp(400,function(){a(this).remove()}))}}).sortable("option","connectWith","div.widgets-sortables"),a("#available-widgets").droppable({tolerance:"pointer",accept:function(b){return"widget-list"!==a(b).parent().attr("id")},drop:function(b,c){c.draggable.addClass("deleting"),a("#removing-widget").hide().children("span").empty()},over:function(b,c){c.draggable.addClass("deleting"),a("div.widget-placeholder").hide(),c.draggable.hasClass("ui-sortable-helper")&&a("#removing-widget").show().children("span").html(c.draggable.find("div.widget-title").children("h4").html())},out:function(b,c){c.draggable.removeClass("deleting"),a("div.widget-placeholder").show(),a("#removing-widget").hide().children("span").empty()}}),a("#widgets-right .widgets-holder-wrap").each(function(b,c){var d=a(c),e=d.find(".sidebar-name h3").text(),f=d.find(".widgets-sortables").attr("id"),h=a('<li tabindex="0">').text(a.trim(e));0===b&&h.addClass("widgets-chooser-selected"),g.append(h),h.data("sidebarId",f)}),a("#available-widgets .widget .widget-title").on("click.widgets-chooser",function(){var b=a(this).closest(".widget");b.hasClass("widget-in-question")||a("#widgets-left").hasClass("chooser")?e.closeChooser():(e.clearWidgetSelection(),a("#widgets-left").addClass("chooser"),b.addClass("widget-in-question").children(".widget-description").after(f),f.slideDown(300,function(){g.find(".widgets-chooser-selected").focus()}),g.find("li").on("focusin.widgets-chooser",function(){g.find(".widgets-chooser-selected").removeClass("widgets-chooser-selected"),a(this).addClass("widgets-chooser-selected")}))}),f.on("click.widgets-chooser",function(b){var c=a(b.target);c.hasClass("button-primary")?(e.addWidget(f),e.closeChooser()):c.hasClass("button-secondary")&&e.closeChooser()}).on("keyup.widgets-chooser",function(b){b.which===a.ui.keyCode.ENTER?a(b.target).hasClass("button-secondary")?e.closeChooser():(e.addWidget(f),e.closeChooser()):b.which===a.ui.keyCode.ESCAPE&&e.closeChooser()})},saveOrder:function(b){var c={action:"widgets-order",savewidgets:a("#_wpnonce_widgets").val(),sidebars:[]};b&&a("#"+b).find(".spinner:first").addClass("is-active"),a("div.widgets-sortables").each(function(){a(this).sortable&&(c["sidebars["+a(this).attr("id")+"]"]=a(this).sortable("toArray").join(","))}),a.post(ajaxurl,c,function(){a(".spinner").removeClass("is-active")})},save:function(c,d,e,f){var g,h=c.closest("div.widgets-sortables").attr("id"),i=c.find("form").serialize();c=a(c),a(".spinner",c).addClass("is-active"),g={action:"save-widget",savewidgets:a("#_wpnonce_widgets").val(),sidebar:h},d&&(g.delete_widget=1),i+="&"+a.param(g),a.post(ajaxurl,i,function(g){var h;d?(a("input.widget_number",c).val()||(h=a("input.widget-id",c).val(),a("#available-widgets").find("input.widget-id").each(function(){a(this).val()===h&&a(this).closest("div.widget").show()})),e?(f=0,c.slideUp("fast",function(){a(this).remove(),wpWidgets.saveOrder()})):c.remove()):(a(".spinner").removeClass("is-active"),g&&g.length>2&&(a("div.widget-content",c).html(g),wpWidgets.appendTitle(c),b.trigger("widget-updated",[c]))),f&&wpWidgets.saveOrder()})},appendTitle:function(b){var c=a('input[id*="-title"]',b).val()||"";c&&(c=": "+c.replace(/<[^<>]+>/g,"").replace(/</g,"&lt;").replace(/>/g,"&gt;")),a(b).children(".widget-top").children(".widget-title").children().children(".in-widget-title").html(c)},close:function(a){a.children(".widget-inside").slideUp("fast",function(){a.attr("style","")})},addWidget:function(c){var d,e,f,g,h,i,j,k=c.find(".widgets-chooser-selected").data("sidebarId"),l=a("#"+k);d=a("#available-widgets").find(".widget-in-question").clone(),e=d.attr("id"),f=d.find("input.add_new").val(),g=d.find("input.multi_number").val(),d.find(".widgets-chooser").remove(),"multi"===f?(d.html(d.html().replace(/<[^<>]+>/g,function(a){return a.replace(/__i__|%i%/g,g)})),d.attr("id",e.replace("__i__",g)),g++,a("#"+e).find("input.multi_number").val(g)):"single"===f&&(d.attr("id","new-"+e),a("#"+e).hide()),l.closest(".widgets-holder-wrap").removeClass("closed"),l.append(d),l.sortable("refresh"),wpWidgets.save(d,0,0,1),d.find("input.add_new").val(""),b.trigger("widget-added",[d]),h=a(window).scrollTop(),i=h+a(window).height(),j=l.offset(),j.bottom=j.top+l.outerHeight(),(h>j.bottom||i<j.top)&&a("html, body").animate({scrollTop:j.top-130},200),window.setTimeout(function(){d.find(".widget-title").trigger("click")},250)},closeChooser:function(){var b=this;a(".widgets-chooser").slideUp(200,function(){a("#wpbody-content").append(this),b.clearWidgetSelection()})},clearWidgetSelection:function(){a("#widgets-left").removeClass("chooser"),a(".widget-in-question").removeClass("widget-in-question")},closeSidebar:function(b){this.hoveredSidebar.addClass("closed"),a(b.target).css("min-height",""),this.hoveredSidebar=null}},b.ready(function(){wpWidgets.init()})}(jQuery);
\ No newline at end of file
+var wpWidgets;!function(a){var b=a(document);wpWidgets={hoveredSidebar:null,init:function(){var c,d,e=this,f=a(".widgets-chooser"),g=f.find(".widgets-chooser-sidebars"),h=a("div.widgets-sortables"),i=!("undefined"==typeof isRtl||!isRtl);a("#widgets-right .sidebar-name").click(function(){var c=a(this),d=c.closest(".widgets-holder-wrap");d.hasClass("closed")?(d.removeClass("closed"),c.parent().sortable("refresh")):d.addClass("closed"),b.triggerHandler("wp-pin-menu")}),a("#widgets-left .sidebar-name").click(function(){a(this).closest(".widgets-holder-wrap").toggleClass("closed"),b.triggerHandler("wp-pin-menu")}),a(document.body).bind("click.widgets-toggle",function(b){var c,d,e,f,g,h=a(b.target),j={"z-index":100};h.parents(".widget-top").length&&!h.parents("#available-widgets").length?(c=h.closest("div.widget"),d=c.children(".widget-inside"),e=parseInt(c.find("input.widget-width").val(),10),f=c.parent().width(),d.is(":hidden")?(e>250&&e+30>f&&c.closest("div.widgets-sortables").length&&(g=c.closest("div.widget-liquid-right").length?i?"margin-right":"margin-left":i?"margin-left":"margin-right",j[g]=f-(e+30)+"px",c.css(j)),c.addClass("open"),d.slideDown("fast")):d.slideUp("fast",function(){c.attr("style",""),c.removeClass("open")}),b.preventDefault()):h.hasClass("widget-control-save")?(wpWidgets.save(h.closest("div.widget"),0,1,0),b.preventDefault()):h.hasClass("widget-control-remove")?(wpWidgets.save(h.closest("div.widget"),1,1,0),b.preventDefault()):h.hasClass("widget-control-close")?(c=h.closest("div.widget"),c.removeClass("open"),wpWidgets.close(c),b.preventDefault()):"inactive-widgets-control-remove"===h.attr("id")&&(wpWidgets.removeInactiveWidgets(),b.preventDefault())}),h.children(".widget").each(function(){var b=a(this);wpWidgets.appendTitle(this),b.find("p.widget-error").length&&b.find("a.widget-action").trigger("click")}),a("#widget-list").children(".widget").draggable({connectToSortable:"div.widgets-sortables",handle:"> .widget-top > .widget-title",distance:2,helper:"clone",zIndex:100,containment:"#wpwrap",refreshPositions:!0,start:function(b,c){var f=a(this).find(".widgets-chooser");c.helper.find("div.widget-description").hide(),d=this.id,f.length&&(a("#wpbody-content").append(f.hide()),c.helper.find(".widgets-chooser").remove(),e.clearWidgetSelection())},stop:function(){c&&a(c).hide(),c=""}}),h.droppable({tolerance:"intersect",over:function(b){var c=a(b.target).parent();wpWidgets.hoveredSidebar&&!c.is(wpWidgets.hoveredSidebar)&&wpWidgets.closeSidebar(b),c.hasClass("closed")&&(wpWidgets.hoveredSidebar=c,c.removeClass("closed")),a(this).sortable("refresh")},out:function(a){wpWidgets.hoveredSidebar&&wpWidgets.closeSidebar(a)}}),h.sortable({placeholder:"widget-placeholder",items:"> .widget",handle:"> .widget-top > .widget-title",cursor:"move",distance:2,containment:"#wpwrap",tolerance:"pointer",refreshPositions:!0,start:function(b,c){var d,e=a(this),f=e.parent(),g=c.item.children(".widget-inside");"block"===g.css("display")&&(c.item.removeClass("open"),g.hide(),a(this).sortable("refreshPositions")),f.hasClass("closed")||(d=c.item.hasClass("ui-draggable")?e.height():1+e.height(),e.css("min-height",d+"px"))},stop:function(e,f){var g,h,i,j,k,l,m=f.item,n=d;return wpWidgets.hoveredSidebar=null,m.hasClass("deleting")?(wpWidgets.save(m,1,0,1),void m.remove()):(g=m.find("input.add_new").val(),h=m.find("input.multi_number").val(),m.attr("style","").removeClass("ui-draggable"),d="",g&&("multi"===g?(m.html(m.html().replace(/<[^<>]+>/g,function(a){return a.replace(/__i__|%i%/g,h)})),m.attr("id",n.replace("__i__",h)),h++,a("div#"+n).find("input.multi_number").val(h)):"single"===g&&(m.attr("id","new-"+n),c="div#"+n),wpWidgets.save(m,0,0,1),m.find("input.add_new").val(""),b.trigger("widget-added",[m])),i=m.parent(),i.parent().hasClass("closed")&&(i.parent().removeClass("closed"),j=i.children(".widget"),j.length>1&&(k=j.get(0),l=m.get(0),k.id&&l.id&&k.id!==l.id&&a(k).before(m))),void(g?m.find("a.widget-action").trigger("click"):wpWidgets.saveOrder(i.attr("id"))))},activate:function(){a(this).parent().addClass("widget-hover")},deactivate:function(){a(this).css("min-height","").parent().removeClass("widget-hover")},receive:function(b,c){var d=a(c.sender);return this.id.indexOf("orphaned_widgets")>-1?void d.sortable("cancel"):void(d.attr("id").indexOf("orphaned_widgets")>-1&&!d.children(".widget").length&&d.parents(".orphan-sidebar").slideUp(400,function(){a(this).remove()}))}}).sortable("option","connectWith","div.widgets-sortables"),a("#available-widgets").droppable({tolerance:"pointer",accept:function(b){return"widget-list"!==a(b).parent().attr("id")},drop:function(b,c){c.draggable.addClass("deleting"),a("#removing-widget").hide().children("span").empty()},over:function(b,c){c.draggable.addClass("deleting"),a("div.widget-placeholder").hide(),c.draggable.hasClass("ui-sortable-helper")&&a("#removing-widget").show().children("span").html(c.draggable.find("div.widget-title").children("h3").html())},out:function(b,c){c.draggable.removeClass("deleting"),a("div.widget-placeholder").show(),a("#removing-widget").hide().children("span").empty()}}),a("#widgets-right .widgets-holder-wrap").each(function(b,c){var d=a(c),e=d.find(".sidebar-name h2").text(),f=d.find(".widgets-sortables").attr("id"),h=a('<li tabindex="0">').text(a.trim(e));0===b&&h.addClass("widgets-chooser-selected"),g.append(h),h.data("sidebarId",f)}),a("#available-widgets .widget .widget-title").on("click.widgets-chooser",function(){var b=a(this).closest(".widget");b.hasClass("widget-in-question")||a("#widgets-left").hasClass("chooser")?e.closeChooser():(e.clearWidgetSelection(),a("#widgets-left").addClass("chooser"),b.addClass("widget-in-question").children(".widget-description").after(f),f.slideDown(300,function(){g.find(".widgets-chooser-selected").focus()}),g.find("li").on("focusin.widgets-chooser",function(){g.find(".widgets-chooser-selected").removeClass("widgets-chooser-selected"),a(this).addClass("widgets-chooser-selected")}))}),f.on("click.widgets-chooser",function(b){var c=a(b.target);c.hasClass("button-primary")?(e.addWidget(f),e.closeChooser()):c.hasClass("button-secondary")&&e.closeChooser()}).on("keyup.widgets-chooser",function(b){b.which===a.ui.keyCode.ENTER?a(b.target).hasClass("button-secondary")?e.closeChooser():(e.addWidget(f),e.closeChooser()):b.which===a.ui.keyCode.ESCAPE&&e.closeChooser()})},saveOrder:function(b){var c={action:"widgets-order",savewidgets:a("#_wpnonce_widgets").val(),sidebars:[]};b&&a("#"+b).find(".spinner:first").addClass("is-active"),a("div.widgets-sortables").each(function(){a(this).sortable&&(c["sidebars["+a(this).attr("id")+"]"]=a(this).sortable("toArray").join(","))}),a.post(ajaxurl,c,function(){a("#inactive-widgets-control-remove").prop("disabled",!a("#wp_inactive_widgets .widget").length),a(".spinner").removeClass("is-active")})},save:function(c,d,e,f){var g,h=c.closest("div.widgets-sortables").attr("id"),i=c.find("form").serialize();c=a(c),a(".spinner",c).addClass("is-active"),g={action:"save-widget",savewidgets:a("#_wpnonce_widgets").val(),sidebar:h},d&&(g.delete_widget=1),i+="&"+a.param(g),a.post(ajaxurl,i,function(g){var i;d?(a("input.widget_number",c).val()||(i=a("input.widget-id",c).val(),a("#available-widgets").find("input.widget-id").each(function(){a(this).val()===i&&a(this).closest("div.widget").show()})),e?(f=0,c.slideUp("fast",function(){a(this).remove(),wpWidgets.saveOrder()})):(c.remove(),"wp_inactive_widgets"===h&&a("#inactive-widgets-control-remove").prop("disabled",!a("#wp_inactive_widgets .widget").length))):(a(".spinner").removeClass("is-active"),g&&g.length>2&&(a("div.widget-content",c).html(g),wpWidgets.appendTitle(c),b.trigger("widget-updated",[c]),"wp_inactive_widgets"===h&&a("#inactive-widgets-control-remove").prop("disabled",!a("#wp_inactive_widgets .widget").length))),f&&wpWidgets.saveOrder()})},removeInactiveWidgets:function(){var b,c,d=a(".remove-inactive-widgets");a(".spinner",d).addClass("is-active"),b={action:"delete-inactive-widgets",removeinactivewidgets:a("#_wpnonce_remove_inactive_widgets").val()},c=a.param(b),a.post(ajaxurl,c,function(){a("#wp_inactive_widgets .widget").remove(),a("#inactive-widgets-control-remove").prop("disabled",!0),a(".spinner",d).removeClass("is-active")})},appendTitle:function(b){var c=a('input[id*="-title"]',b).val()||"";c&&(c=": "+c.replace(/<[^<>]+>/g,"").replace(/</g,"&lt;").replace(/>/g,"&gt;")),a(b).children(".widget-top").children(".widget-title").children().children(".in-widget-title").html(c)},close:function(a){a.children(".widget-inside").slideUp("fast",function(){a.attr("style","")})},addWidget:function(c){var d,e,f,g,h,i,j,k=c.find(".widgets-chooser-selected").data("sidebarId"),l=a("#"+k);d=a("#available-widgets").find(".widget-in-question").clone(),e=d.attr("id"),f=d.find("input.add_new").val(),g=d.find("input.multi_number").val(),d.find(".widgets-chooser").remove(),"multi"===f?(d.html(d.html().replace(/<[^<>]+>/g,function(a){return a.replace(/__i__|%i%/g,g)})),d.attr("id",e.replace("__i__",g)),g++,a("#"+e).find("input.multi_number").val(g)):"single"===f&&(d.attr("id","new-"+e),a("#"+e).hide()),l.closest(".widgets-holder-wrap").removeClass("closed"),l.append(d),l.sortable("refresh"),wpWidgets.save(d,0,0,1),d.find("input.add_new").val(""),b.trigger("widget-added",[d]),h=a(window).scrollTop(),i=h+a(window).height(),j=l.offset(),j.bottom=j.top+l.outerHeight(),(h>j.bottom||i<j.top)&&a("html, body").animate({scrollTop:j.top-130},200),window.setTimeout(function(){d.find(".widget-title").trigger("click")},250)},closeChooser:function(){var b=this;a(".widgets-chooser").slideUp(200,function(){a("#wpbody-content").append(this),b.clearWidgetSelection()})},clearWidgetSelection:function(){a("#widgets-left").removeClass("chooser"),a(".widget-in-question").removeClass("widget-in-question")},closeSidebar:function(b){this.hoveredSidebar.addClass("closed"),a(b.target).css("min-height",""),this.hoveredSidebar=null}},b.ready(function(){wpWidgets.init()})}(jQuery);
\ No newline at end of file
index 8666f202c4b57b0102b5e3fbe6c9881d6791f9cf..5cf80cdf2cba1daec433689c8fffbaec0703bee9 100644 (file)
@@ -61,6 +61,10 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_list' => __( 'Links list' ),
+) );
+
 include_once( ABSPATH . 'wp-admin/admin-header.php' );
 
 if ( ! current_user_can('manage_links') )
index d6ff5ad5a846ac23625b5c6327b8e862d65e91fa..4c7d40ed61ade248c74f4bfc85f1c09b3f60c4a1 100644 (file)
@@ -11,109 +11,6 @@ error_reporting(0);
 define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
 define( 'WPINC', 'wp-includes' );
 
-/**
- * @ignore
- */
-function __() {}
-
-/**
- * @ignore
- */
-function _x() {}
-
-/**
- * @ignore
- */
-function add_filter() {}
-
-/**
- * @ignore
- */
-function esc_attr() {}
-
-/**
- * @ignore
- */
-function apply_filters() {}
-
-/**
- * @ignore
- */
-function get_option() {}
-
-/**
- * @ignore
- */
-function is_lighttpd_before_150() {}
-
-/**
- * @ignore
- */
-function add_action() {}
-
-/**
- * @ignore
- */
-function did_action() {}
-
-/**
- * @ignore
- */
-function do_action_ref_array() {}
-
-/**
- * @ignore
- */
-function get_bloginfo() {}
-
-/**
- * @ignore
- */
-function is_admin() {return true;}
-
-/**
- * @ignore
- */
-function site_url() {}
-
-/**
- * @ignore
- */
-function admin_url() {}
-
-/**
- * @ignore
- */
-function home_url() {}
-
-/**
- * @ignore
- */
-function includes_url() {}
-
-/**
- * @ignore
- */
-function wp_guess_url() {}
-
-if ( ! function_exists( 'json_encode' ) ) :
-/**
- * @ignore
- */
-function json_encode() {}
-endif;
-
-function get_file($path) {
-
-       if ( function_exists('realpath') )
-               $path = realpath($path);
-
-       if ( ! $path || ! @is_file($path) )
-               return '';
-
-       return @file_get_contents($path);
-}
-
 $load = $_GET['load'];
 if ( is_array( $load ) )
        $load = implode( '', $load );
@@ -124,8 +21,9 @@ $load = array_unique( explode( ',', $load ) );
 if ( empty($load) )
        exit;
 
-require(ABSPATH . WPINC . '/script-loader.php');
-require(ABSPATH . WPINC . '/version.php');
+require( ABSPATH . 'wp-admin/includes/noop.php' );
+require( ABSPATH . WPINC . '/script-loader.php' );
+require( ABSPATH . WPINC . '/version.php' );
 
 $compress = ( isset($_GET['c']) && $_GET['c'] );
 $force_gzip = ( $compress && 'gzip' == $_GET['c'] );
@@ -135,7 +33,7 @@ $out = '';
 $wp_scripts = new WP_Scripts();
 wp_default_scripts($wp_scripts);
 
-foreach( $load as $handle ) {
+foreach ( $load as $handle ) {
        if ( !array_key_exists($handle, $wp_scripts->registered) )
                continue;
 
index 9133be3aa1ef6e8f95a401dc7d06ba9edcf17858..2563e6f6db0a000b0b1cb63c6c54d510097f791a 100644 (file)
@@ -11,92 +11,7 @@ error_reporting(0);
 define( 'ABSPATH', dirname(dirname(__FILE__)) . '/' );
 define( 'WPINC', 'wp-includes' );
 
-/**
- * @ignore
- */
-function __() {}
-
-/**
- * @ignore
- */
-function _x() {}
-
-/**
- * @ignore
- */
-function add_filter() {}
-
-/**
- * @ignore
- */
-function esc_attr() {}
-
-/**
- * @ignore
- */
-function apply_filters() {}
-
-/**
- * @ignore
- */
-function get_option() {}
-
-/**
- * @ignore
- */
-function is_lighttpd_before_150() {}
-
-/**
- * @ignore
- */
-function add_action() {}
-
-/**
- * @ignore
- */
-function do_action_ref_array() {}
-
-/**
- * @ignore
- */
-function get_bloginfo() {}
-
-/**
- * @ignore
- */
-function is_admin() {return true;}
-
-/**
- * @ignore
- */
-function site_url() {}
-
-/**
- * @ignore
- */
-function admin_url() {}
-
-/**
- * @ignore
- */
-function wp_guess_url() {}
-
-/**
- *
- * @param string $path
- * @return string
- */
-function get_file($path) {
-
-       if ( function_exists('realpath') )
-               $path = realpath($path);
-
-       if ( ! $path || ! @is_file($path) )
-               return '';
-
-       return @file_get_contents($path);
-}
-
+require( ABSPATH . 'wp-admin/includes/noop.php' );
 require( ABSPATH . WPINC . '/script-loader.php' );
 require( ABSPATH . WPINC . '/version.php' );
 
@@ -115,7 +30,7 @@ $out = '';
 $wp_styles = new WP_Styles();
 wp_default_styles($wp_styles);
 
-foreach( $load as $handle ) {
+foreach ( $load as $handle ) {
        if ( !array_key_exists($handle, $wp_styles->registered) )
                continue;
 
index 791450258b29f3c7eaa85f3b2931d761bc8c6078..7849ff9494f7ec481ec0f9ee7d169bd58d5113ff 100644 (file)
@@ -16,17 +16,21 @@ header( 'Content-Type: text/html; charset=utf-8' );
 <head>
        <meta name="viewport" content="width=device-width" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+       <meta name="robots" content="noindex,nofollow" />
        <title><?php _e( 'WordPress &rsaquo; Database Repair' ); ?></title>
        <?php
        wp_admin_css( 'install', true );
        ?>
 </head>
 <body class="wp-core-ui">
-<h1 id="logo"><a href="<?php echo esc_url( __( 'https://wordpress.org/' ) ); ?>" tabindex="-1"><?php _e( 'WordPress' ); ?></a></h1>
+<p id="logo"><a href="<?php echo esc_url( __( 'https://wordpress.org/' ) ); ?>" tabindex="-1"><?php _e( 'WordPress' ); ?></a></p>
 
 <?php
 
 if ( ! defined( 'WP_ALLOW_REPAIR' ) ) {
+
+       echo '<h1 class="screen-reader-text">' . __( 'Allow automatic database repair' ) . '</h1>';
+
        echo '<p>' . __( 'To allow use of this page to automatically repair database problems, please add the following line to your <code>wp-config.php</code> file. Once this line is added to your config, reload this page.' ) . "</p><p><code>define('WP_ALLOW_REPAIR', true);</code></p>";
 
        $default_key     = 'put your unique phrase here';
@@ -52,11 +56,17 @@ if ( ! defined( 'WP_ALLOW_REPAIR' ) ) {
        $duplicated_keys = array_filter( $duplicated_keys );
 
        if ( $duplicated_keys || $missing_key ) {
+
+               echo '<h2 class="screen-reader-text">' . __( 'Check secret keys' ) . '</h2>';
+
                // Translators: 1: wp-config.php; 2: Secret key service URL.
                echo '<p>' . sprintf( __( 'While you are editing your %1$s file, take a moment to make sure you have all 8 keys and that they are unique. You can generate these using the <a href="%2$s">WordPress.org secret key service</a>.' ), '<code>wp-config.php</code>', 'https://api.wordpress.org/secret-key/1.1/salt/' ) . '</p>';
        }
 
 } elseif ( isset( $_GET['repair'] ) ) {
+
+       echo '<h1 class="screen-reader-text">' . __( 'Database repair results' ) . '</h1>';
+
        $optimize = 2 == $_GET['repair'];
        $okay = true;
        $problems = array();
@@ -137,6 +147,9 @@ if ( ! defined( 'WP_ALLOW_REPAIR' ) ) {
                echo '<p>' . __( 'Repairs complete. Please remove the following line from wp-config.php to prevent this page from being used by unauthorized users.' ) . "</p><p><code>define('WP_ALLOW_REPAIR', true);</code></p>";
        }
 } else {
+
+       echo '<h1 class="screen-reader-text">' . __( 'WordPress database repair' ) . '</h1>';
+
        if ( isset( $_GET['referrer'] ) && 'is_blog_installed' == $_GET['referrer'] )
                echo '<p>' . __( 'One or more database tables are unavailable. To allow WordPress to attempt to repair these tables, press the &#8220;Repair Database&#8221; button. Repairing can take a while, so please be patient.' ) . '</p>';
        else
index c8263d8ac9b33a288b369d15003d4a08eaca9c83..9d26651e85546b9c6ae70e0aea7b26ee4e8846ca 100644 (file)
@@ -25,15 +25,15 @@ if ( isset( $_REQUEST['post_id'] ) ) {
 }
 
 if ( $_POST ) {
-       $location = 'upload.php';
        if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
                check_admin_referer('media-form');
                // Upload File button was clicked
-               $id = media_handle_upload( 'async-upload', $post_id );
-               if ( is_wp_error( $id ) )
-                       $location .= '?message=3';
+               $upload_id = media_handle_upload( 'async-upload', $post_id );
+               if ( is_wp_error( $upload_id ) ) {
+                       wp_die( $upload_id );
+               }
        }
-       wp_redirect( admin_url( $location ) );
+       wp_redirect( admin_url( 'upload.php' ) );
        exit;
 }
 
index 2792b25f179da592cdfc93d38b765a662d16c782..0c9c5e2554fff0c82134de123b1f4ebb267a479a 100644 (file)
@@ -15,8 +15,9 @@ if ( ! isset( $_GET['inline'] ) )
 /** Load WordPress Administration Bootstrap */
 require_once( dirname( __FILE__ ) . '/admin.php' );
 
-if (!current_user_can('upload_files'))
-       wp_die(__('You do not have permission to upload files.'));
+if ( ! current_user_can( 'upload_files' ) ) {
+       wp_die( __( 'You do not have permission to upload files.' ), 403 );
+}
 
 wp_enqueue_script('plupload-handlers');
 wp_enqueue_script('image-edit');
@@ -31,12 +32,20 @@ $ID = isset($ID) ? (int) $ID : 0;
 $post_id = isset($post_id)? (int) $post_id : 0;
 
 // Require an ID for the edit screen.
-if ( isset($action) && $action == 'edit' && !$ID ) {
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( isset( $action ) && $action == 'edit' && !$ID ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'Invalid item ID.' ) . '</p>',
+               403
+       );
 }
 
 if ( ! empty( $_REQUEST['post_id'] ) && ! current_user_can( 'edit_post' , $_REQUEST['post_id'] ) ) {
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to edit this item.' ) . '</p>',
+               403
+       );
 }
 
 // Upload type: image, video, file, ..?
index 013686106fb4b930e7cf7c1e184ea6d986e43678..db4123c09f42ee154d95c2e4a6796c156ec83034 100644 (file)
@@ -22,8 +22,9 @@ $self = preg_replace('|^.*/mu-plugins/|i', '', $self);
  * @global array  $menu
  * @global array  $submenu
  * @global string $parent_file
+ * @global string $submenu_file
  */
-global $menu, $submenu, $parent_file;
+global $menu, $submenu, $parent_file, $submenu_file;
 
 /**
  * Filter the parent file of an admin menu sub-menu item.
@@ -36,6 +37,16 @@ global $menu, $submenu, $parent_file;
  */
 $parent_file = apply_filters( 'parent_file', $parent_file );
 
+/**
+ * Filter the file of an admin menu sub-menu item.
+ *
+ * @since 4.4.0
+ *
+ * @param string $submenu_file The submenu file.
+ * @param string $parent_file  The submenu item's parent file.
+ */
+$submenu_file = apply_filters( 'submenu_file', $submenu_file, $parent_file );
+
 get_admin_page_parent();
 
 /**
index 17096a97a8757cbe5e00fa2f07e1f249daa35bdd..64f80190cf74e93e4fbd3917298199ac633f73b2 100644 (file)
@@ -44,31 +44,20 @@ if ( ! is_multisite() ) {
 
 $menu[4] = array( '', 'read', 'separator1', '', 'wp-menu-separator' );
 
-$menu[5] = array( __('Posts'), 'edit_posts', 'edit.php', '', 'open-if-no-js menu-top menu-icon-post', 'menu-posts', 'dashicons-admin-post' );
-       $submenu['edit.php'][5]  = array( __('All Posts'), 'edit_posts', 'edit.php' );
-       /* translators: add new post */
-       $submenu['edit.php'][10]  = array( _x('Add New', 'post'), get_post_type_object( 'post' )->cap->create_posts, 'post-new.php' );
-
-       $i = 15;
-       foreach ( get_taxonomies( array(), 'objects' ) as $tax ) {
-               if ( ! $tax->show_ui || ! $tax->show_in_menu || ! in_array('post', (array) $tax->object_type, true) )
-                       continue;
-
-               $submenu['edit.php'][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, 'edit-tags.php?taxonomy=' . $tax->name );
-       }
-       unset($tax);
+// $menu[5] = Posts
 
 $menu[10] = array( __('Media'), 'upload_files', 'upload.php', '', 'menu-top menu-icon-media', 'menu-media', 'dashicons-admin-media' );
        $submenu['upload.php'][5] = array( __('Library'), 'upload_files', 'upload.php');
        /* translators: add new file */
        $submenu['upload.php'][10] = array( _x('Add New', 'file'), 'upload_files', 'media-new.php');
+       $i = 15;
        foreach ( get_taxonomies_for_attachments( 'objects' ) as $tax ) {
                if ( ! $tax->show_ui || ! $tax->show_in_menu )
                        continue;
 
                $submenu['upload.php'][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, 'edit-tags.php?taxonomy=' . $tax->name . '&amp;post_type=attachment' );
        }
-       unset($tax);
+       unset( $tax, $i );
 
 $menu[15] = array( __('Links'), 'manage_links', 'link-manager.php', '', 'menu-top menu-icon-links', 'menu-links', 'dashicons-admin-links' );
        $submenu['link-manager.php'][5] = array( _x('All Links', 'admin menu'), 'manage_links', 'link-manager.php' );
@@ -76,29 +65,31 @@ $menu[15] = array( __('Links'), 'manage_links', 'link-manager.php', '', 'menu-to
        $submenu['link-manager.php'][10] = array( _x('Add New', 'link'), 'manage_links', 'link-add.php' );
        $submenu['link-manager.php'][15] = array( __('Link Categories'), 'manage_categories', 'edit-tags.php?taxonomy=link_category' );
 
-$menu[20] = array( __('Pages'), 'edit_pages', 'edit.php?post_type=page', '', 'menu-top menu-icon-page', 'menu-pages', 'dashicons-admin-page' );
-       $submenu['edit.php?post_type=page'][5] = array( __('All Pages'), 'edit_pages', 'edit.php?post_type=page' );
-       /* translators: add new page */
-       $submenu['edit.php?post_type=page'][10] = array( _x('Add New', 'page'), get_post_type_object( 'page' )->cap->create_posts, 'post-new.php?post_type=page' );
-       $i = 15;
-       foreach ( get_taxonomies( array(), 'objects' ) as $tax ) {
-               if ( ! $tax->show_ui || ! $tax->show_in_menu  || ! in_array('page', (array) $tax->object_type, true) )
-                       continue;
-
-               $submenu['edit.php?post_type=page'][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, 'edit-tags.php?taxonomy=' . $tax->name . '&amp;post_type=page' );
-       }
-       unset($tax);
-
-$awaiting_mod = wp_count_comments();
-$awaiting_mod = $awaiting_mod->moderated;
-$menu[25] = array( sprintf( __('Comments %s'), "<span class='awaiting-mod count-$awaiting_mod'><span class='pending-count'>" . number_format_i18n($awaiting_mod) . "</span></span>" ), 'edit_posts', 'edit-comments.php', '', 'menu-top menu-icon-comments', 'menu-comments', 'dashicons-admin-comments' );
-unset($awaiting_mod);
+// $menu[20] = Pages
+
+// Avoid the comment count query for users who cannot edit_posts.
+if ( current_user_can( 'edit_posts' ) ) {
+       $awaiting_mod = wp_count_comments();
+       $awaiting_mod = $awaiting_mod->moderated;
+       $menu[25] = array(
+               sprintf( __( 'Comments %s' ), '<span class="awaiting-mod count-' . absint( $awaiting_mod ) . '"><span class="pending-count">' . number_format_i18n( $awaiting_mod ) . '</span></span>' ),
+               'edit_posts',
+               'edit-comments.php',
+               '',
+               'menu-top menu-icon-comments',
+               'menu-comments',
+               'dashicons-admin-comments',
+       );
+       unset( $awaiting_mod );
+}
 
 $submenu[ 'edit-comments.php' ][0] = array( __('All Comments'), 'edit_posts', 'edit-comments.php' );
 
 $_wp_last_object_menu = 25; // The index of the last top-level menu in the object menu group
 
-foreach ( (array) get_post_types( array('show_ui' => true, '_builtin' => false, 'show_in_menu' => true ) ) as $ptype ) {
+$types = (array) get_post_types( array('show_ui' => true, '_builtin' => false, 'show_in_menu' => true ) );
+$builtin = array( 'post', 'page' );
+foreach ( array_merge( $builtin, $types ) as $ptype ) {
        $ptype_obj = get_post_type_object( $ptype );
        // Check if it should be a submenu.
        if ( $ptype_obj->show_in_menu !== true )
@@ -106,6 +97,7 @@ foreach ( (array) get_post_types( array('show_ui' => true, '_builtin' => false,
        $ptype_menu_position = is_int( $ptype_obj->menu_position ) ? $ptype_obj->menu_position : ++$_wp_last_object_menu; // If we're to use $_wp_last_object_menu, increment it first.
        $ptype_for_id = sanitize_html_class( $ptype );
 
+       $menu_icon = 'dashicons-admin-post';
        if ( is_string( $ptype_obj->menu_icon ) ) {
                // Special handling for data:image/svg+xml and Dashicons.
                if ( 0 === strpos( $ptype_obj->menu_icon, 'data:image/svg+xml;base64,' ) || 0 === strpos( $ptype_obj->menu_icon, 'dashicons-' ) ) {
@@ -113,12 +105,28 @@ foreach ( (array) get_post_types( array('show_ui' => true, '_builtin' => false,
                } else {
                        $menu_icon = esc_url( $ptype_obj->menu_icon );
                }
-               $ptype_class = $ptype_for_id;
+       } elseif ( in_array( $ptype, $builtin ) ) {
+               $menu_icon = 'dashicons-admin-' . $ptype;
+       }
+
+       $menu_class = 'menu-top menu-icon-' . $ptype_for_id;
+       // 'post' special case
+       if ( 'post' === $ptype ) {
+               $menu_class .= ' open-if-no-js';
+               $ptype_file = "edit.php";
+               $post_new_file = "post-new.php";
+               $edit_tags_file = "edit-tags.php?taxonomy=%s";
        } else {
-               $menu_icon   = 'dashicons-admin-post';
-               $ptype_class = 'post';
+               $ptype_file = "edit.php?post_type=$ptype";
+               $post_new_file = "post-new.php?post_type=$ptype";
+               $edit_tags_file = "edit-tags.php?taxonomy=%s&amp;post_type=$ptype";
        }
 
+       if ( in_array( $ptype, $builtin ) ) {
+               $ptype_menu_id = 'menu-' . $ptype_for_id . 's';
+       } else {
+               $ptype_menu_id = 'menu-posts-' . $ptype_for_id;
+       }
        /*
         * If $ptype_menu_position is already populated or will be populated
         * by a hard-coded value below, increment the position.
@@ -127,19 +135,19 @@ foreach ( (array) get_post_types( array('show_ui' => true, '_builtin' => false,
        while ( isset($menu[$ptype_menu_position]) || in_array($ptype_menu_position, $core_menu_positions) )
                $ptype_menu_position++;
 
-       $menu[$ptype_menu_position] = array( esc_attr( $ptype_obj->labels->menu_name ), $ptype_obj->cap->edit_posts, "edit.php?post_type=$ptype", '', 'menu-top menu-icon-' . $ptype_class, 'menu-posts-' . $ptype_for_id, $menu_icon );
-       $submenu["edit.php?post_type=$ptype"][5]  = array( $ptype_obj->labels->all_items, $ptype_obj->cap->edit_posts,  "edit.php?post_type=$ptype");
-       $submenu["edit.php?post_type=$ptype"][10]  = array( $ptype_obj->labels->add_new, $ptype_obj->cap->create_posts, "post-new.php?post_type=$ptype" );
+       $menu[$ptype_menu_position] = array( esc_attr( $ptype_obj->labels->menu_name ), $ptype_obj->cap->edit_posts, $ptype_file, '', $menu_class, $ptype_menu_id, $menu_icon );
+       $submenu[ $ptype_file ][5]  = array( $ptype_obj->labels->all_items, $ptype_obj->cap->edit_posts,  $ptype_file );
+       $submenu[ $ptype_file ][10]  = array( $ptype_obj->labels->add_new, $ptype_obj->cap->create_posts, $post_new_file );
 
        $i = 15;
        foreach ( get_taxonomies( array(), 'objects' ) as $tax ) {
                if ( ! $tax->show_ui || ! $tax->show_in_menu || ! in_array($ptype, (array) $tax->object_type, true) )
                        continue;
 
-               $submenu["edit.php?post_type=$ptype"][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, "edit-tags.php?taxonomy=$tax->name&amp;post_type=$ptype" );
+               $submenu[ $ptype_file ][$i++] = array( esc_attr( $tax->labels->menu_name ), $tax->cap->manage_terms, sprintf( $edit_tags_file, $tax->name ) );
        }
 }
-unset($ptype, $ptype_obj, $ptype_class, $ptype_for_id, $ptype_menu_position, $menu_icon, $i, $tax);
+unset( $ptype, $ptype_obj, $ptype_for_id, $ptype_menu_position, $menu_icon, $i, $tax, $post_new_file );
 
 $menu[59] = array( '', 'read', 'separator2', '', 'wp-menu-separator' );
 
index fafa232932185ab0a877fe4208b26762e93078e4..8970c9f0ce80e30caf6a4bdb02f9620b59f990da 100644 (file)
@@ -56,7 +56,16 @@ if ( $updated ) { ?>
 <?php } ?>
 
 <div class="wrap">
-<h1><?php echo esc_html( $title ); ?></h1>
+<h1><?php
+echo esc_html( $title );
+
+if ( in_array( get_site_option( 'registration' ), array( 'all', 'blog' ) ) ) {
+       /** This filter is documented in wp-login.php */
+       $sign_up_url = apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) );
+       printf( ' <a href="%s" class="page-title-action">%s</a>', esc_url( $sign_up_url ), esc_html_x( 'Add New', 'site' ) );
+}
+?></h1>
+
 <?php
 if ( empty( $blogs ) ) :
        echo '<p>';
index ed9d0523337016517b56df405c1939a56493665f..6507f0dc5654c5bf734dd743d6ed7f11b63d230f 100644 (file)
@@ -19,8 +19,13 @@ if ( ! current_theme_supports( 'menus' ) && ! current_theme_supports( 'widgets'
        wp_die( __( 'Your theme does not support navigation menus or widgets.' ) );
 
 // Permissions Check
-if ( ! current_user_can('edit_theme_options') )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! current_user_can( 'edit_theme_options' ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to edit theme options on this site.' ) . '</p>',
+               403
+       );
+}
 
 wp_enqueue_script( 'nav-menu' );
 
@@ -67,7 +72,7 @@ switch ( $action ) {
                                // Set up the data we need in one pass through the array of menu items.
                                $dbids_to_orders = array();
                                $orders_to_dbids = array();
-                               foreach( (array) $ordered_menu_items as $ordered_menu_item_object ) {
+                               foreach ( (array) $ordered_menu_items as $ordered_menu_item_object ) {
                                        if ( isset( $ordered_menu_item_object->ID ) ) {
                                                if ( isset( $ordered_menu_item_object->menu_order ) ) {
                                                        $dbids_to_orders[$ordered_menu_item_object->ID] = $ordered_menu_item_object->menu_order;
@@ -140,7 +145,7 @@ switch ( $action ) {
                                // Set up the data we need in one pass through the array of menu items.
                                $dbids_to_orders = array();
                                $orders_to_dbids = array();
-                               foreach( (array) $ordered_menu_items as $ordered_menu_item_object ) {
+                               foreach ( (array) $ordered_menu_items as $ordered_menu_item_object ) {
                                        if ( isset( $ordered_menu_item_object->ID ) ) {
                                                if ( isset( $ordered_menu_item_object->menu_order ) ) {
                                                        $dbids_to_orders[$ordered_menu_item_object->ID] = $ordered_menu_item_object->menu_order;
@@ -460,7 +465,7 @@ if ( ! $nav_menu_selected_title && is_nav_menu( $nav_menu_selected_id ) ) {
 }
 
 // Generate truncated menu names.
-foreach( (array) $nav_menus as $key => $_nav_menu ) {
+foreach ( (array) $nav_menus as $key => $_nav_menu ) {
        $nav_menus[$key]->truncated_name = wp_html_excerpt( $_nav_menu->name, 40, '&hellip;' );
 }
 
@@ -588,7 +593,7 @@ require_once( ABSPATH . 'wp-admin/admin-header.php' );
                ?>
        </h2>
        <?php
-       foreach( $messages as $message ) :
+       foreach ( $messages as $message ) :
                echo $message . "\n";
        endforeach;
        ?>
@@ -668,7 +673,7 @@ require_once( ABSPATH . 'wp-admin/admin-header.php' );
                                <?php if ( $add_new_screen ) : ?>
                                        <option value="0" selected="selected"><?php _e( '&mdash; Select &mdash;' ); ?></option>
                                <?php endif; ?>
-                               <?php foreach( (array) $nav_menus as $_nav_menu ) : ?>
+                               <?php foreach ( (array) $nav_menus as $_nav_menu ) : ?>
                                        <option value="<?php echo esc_attr( $_nav_menu->term_id ); ?>" <?php selected( $_nav_menu->term_id, $nav_menu_selected_id ); ?>>
                                                <?php
                                                echo esc_html( $_nav_menu->truncated_name ) ;
@@ -793,9 +798,15 @@ require_once( ABSPATH . 'wp-admin/admin-header.php' );
                                                                                <dt class="howto"><?php _e( 'Theme locations' ); ?></dt>
                                                                                <?php foreach ( $locations as $location => $description ) : ?>
                                                                                <dd class="checkbox-input">
-                                                                                       <input type="checkbox"<?php checked( isset( $menu_locations[ $location ] ) && $menu_locations[ $location ] == $nav_menu_selected_id ); ?> name="menu-locations[<?php echo esc_attr( $location ); ?>]" id="locations-<?php echo esc_attr( $location ); ?>" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" /> <label for="locations-<?php echo esc_attr( $location ); ?>"><?php echo $description; ?></label>
+                                                                                       <input type="checkbox"<?php checked( isset( $menu_locations[ $location ] ) && $menu_locations[ $location ] == $nav_menu_selected_id ); ?> name="menu-locations[<?php echo esc_attr( $location ); ?>]" id="locations-<?php echo esc_attr( $location ); ?>" value="<?php echo esc_attr( $nav_menu_selected_id ); ?>" />
+                                                                                       <label for="locations-<?php echo esc_attr( $location ); ?>"><?php echo $description; ?></label>
                                                                                        <?php if ( ! empty( $menu_locations[ $location ] ) && $menu_locations[ $location ] != $nav_menu_selected_id ) : ?>
-                                                                                       <span class="theme-location-set"> <?php printf( __( "(Currently set to: %s)" ), wp_get_nav_menu_object( $menu_locations[ $location ] )->name ); ?> </span>
+                                                                                               <span class="theme-location-set"><?php 
+                                                                                                       /* translators: %s: menu name */
+                                                                                                       printf( _x( '(Currently set to: %s)', 'menu location' ),
+                                                                                                               wp_get_nav_menu_object( $menu_locations[ $location ] )->name
+                                                                                                       );
+                                                                                               ?></span>
                                                                                        <?php endif; ?>
                                                                                </dd>
                                                                                <?php endforeach; ?>
index ae3515105a35a24b10b4be54d8d025a4ad02cb10..38f344763f66daa64185a8cda2577f1ba31ae5f3 100644 (file)
@@ -15,102 +15,39 @@ define( 'WP_INSTALLING_NETWORK', true );
 /** WordPress Administration Bootstrap */
 require_once( dirname( __FILE__ ) . '/admin.php' );
 
-if ( ! is_super_admin() )
+if ( ! is_super_admin() ) {
        wp_die( __( 'You do not have sufficient permissions to manage options for this site.' ) );
+}
 
 if ( is_multisite() ) {
        if ( ! is_network_admin() ) {
                wp_redirect( network_admin_url( 'setup.php' ) );
                exit;
        }
-       if ( ! defined( 'MULTISITE' ) )
-               wp_die( __( 'The Network creation panel is not for WordPress MU networks.' ) );
-}
-
-// We need to create references to ms global tables to enable Network.
-foreach ( $wpdb->tables( 'ms_global' ) as $table => $prefixed_table )
-       $wpdb->$table = $prefixed_table;
 
-/**
- * Check for an existing network.
- *
- * @since 3.0.0
- *
- * @global wpdb $wpdb
- *
- * @return Whether a network exists.
- */
-function network_domain_check() {
-       global $wpdb;
-
-       $sql = $wpdb->prepare( "SHOW TABLES LIKE %s", $wpdb->esc_like( $wpdb->site ) );
-       if ( $wpdb->get_var( $sql ) ) {
-               return $wpdb->get_var( "SELECT domain FROM $wpdb->site ORDER BY id ASC LIMIT 1" );
+       if ( ! defined( 'MULTISITE' ) ) {
+               wp_die( __( 'The Network creation panel is not for WordPress MU networks.' ) );
        }
-       return false;
 }
 
-/**
- * Allow subdomain install
- *
- * @since 3.0.0
- * @return bool Whether subdomain install is allowed
- */
-function allow_subdomain_install() {
-       $domain = preg_replace( '|https?://([^/]+)|', '$1', get_option( 'home' ) );
-       if ( parse_url( get_option( 'home' ), PHP_URL_PATH ) || 'localhost' == $domain || preg_match( '|^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$|', $domain ) )
-               return false;
+require_once( dirname( __FILE__ ) . '/includes/network.php' );
 
-       return true;
+// We need to create references to ms global tables to enable Network.
+foreach ( $wpdb->tables( 'ms_global' ) as $table => $prefixed_table ) {
+       $wpdb->$table = $prefixed_table;
 }
-/**
- * Allow subdirectory install.
- *
- * @since 3.0.0
- *
- * @global wpdb $wpdb
- *
- * @return bool Whether subdirectory install is allowed
- */
-function allow_subdirectory_install() {
-       global $wpdb;
-        /**
-         * Filter whether to enable the subdirectory install feature in Multisite.
-         *
-         * @since 3.0.0
-         *
-         * @param bool true Whether to enable the subdirectory install feature in Multisite. Default is false.
-         */
-       if ( apply_filters( 'allow_subdirectory_install', false ) )
-               return true;
 
-       if ( defined( 'ALLOW_SUBDIRECTORY_INSTALL' ) && ALLOW_SUBDIRECTORY_INSTALL )
-               return true;
-
-       $post = $wpdb->get_row( "SELECT ID FROM $wpdb->posts WHERE post_date < DATE_SUB(NOW(), INTERVAL 1 MONTH) AND post_status = 'publish'" );
-       if ( empty( $post ) )
-               return true;
-
-       return false;
-}
-/**
- * Get base domain of network.
- *
- * @since 3.0.0
- * @return string Base domain.
- */
-function get_clean_basedomain() {
-       if ( $existing_domain = network_domain_check() )
-               return $existing_domain;
-       $domain = preg_replace( '|https?://|', '', get_option( 'siteurl' ) );
-       if ( $slash = strpos( $domain, '/' ) )
-               $domain = substr( $domain, 0, $slash );
-       return $domain;
+if ( ! network_domain_check() && ( ! defined( 'WP_ALLOW_MULTISITE' ) || ! WP_ALLOW_MULTISITE ) ) {
+       wp_die(
+               printf(
+                       /* translators: 1: WP_ALLOW_MULTISITE 2: wp-config.php */
+                       __( 'You must define the %1$s constant as true in your %2$s file to allow creation of a Network.' ),
+                       '<code>WP_ALLOW_MULTISITE</code>',
+                       '<code>wp-config.php</code>'
+               )
+       );
 }
 
-if ( ! network_domain_check() && ( ! defined( 'WP_ALLOW_MULTISITE' ) || ! WP_ALLOW_MULTISITE ) )
-       wp_die( __( 'You must define the <code>WP_ALLOW_MULTISITE</code> constant as true in your wp-config.php file to allow creation of a Network.' ) );
-
 if ( is_network_admin() ) {
        $title = __( 'Network Setup' );
        $parent_file = 'settings.php';
@@ -148,419 +85,6 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 <h1><?php echo esc_html( $title ); ?></h1>
 
 <?php
-/**
- * Prints step 1 for Network installation process.
- *
- * @todo Realistically, step 1 should be a welcome screen explaining what a Network is and such. Navigating to Tools > Network
- *     should not be a sudden "Welcome to a new install process! Fill this out and click here." See also contextual help todo.
- *
- * @since 3.0.0
- *
- * @global bool $is_apache
- *
- * @param WP_Error $errors
- */
-function network_step1( $errors = false ) {
-       global $is_apache;
-
-       if ( defined('DO_NOT_UPGRADE_GLOBAL_TABLES') ) {
-               echo '<div class="error"><p><strong>' . __('ERROR:') . '</strong> ' . __( 'The constant DO_NOT_UPGRADE_GLOBAL_TABLES cannot be defined when creating a network.' ) . '</p></div>';
-               echo '</div>';
-               include( ABSPATH . 'wp-admin/admin-footer.php' );
-               die();
-       }
-
-       $active_plugins = get_option( 'active_plugins' );
-       if ( ! empty( $active_plugins ) ) {
-               echo '<div class="updated"><p><strong>' . __('Warning:') . '</strong> ' . sprintf( __( 'Please <a href="%s">deactivate your plugins</a> before enabling the Network feature.' ), admin_url( 'plugins.php?plugin_status=active' ) ) . '</p></div><p>' . __( 'Once the network is created, you may reactivate your plugins.' ) . '</p>';
-               echo '</div>';
-               include( ABSPATH . 'wp-admin/admin-footer.php' );
-               die();
-       }
-
-       $hostname = get_clean_basedomain();
-       $has_ports = strstr( $hostname, ':' );
-       if ( ( false !== $has_ports && ! in_array( $has_ports, array( ':80', ':443' ) ) ) ) {
-               echo '<div class="error"><p><strong>' . __( 'ERROR:') . '</strong> ' . __( 'You cannot install a network of sites with your server address.' ) . '</p></div>';
-               echo '<p>' . sprintf( __( 'You cannot use port numbers such as <code>%s</code>.' ), $has_ports ) . '</p>';
-               echo '<a href="' . esc_url( admin_url() ) . '">' . __( 'Return to Dashboard' ) . '</a>';
-               echo '</div>';
-               include( ABSPATH . 'wp-admin/admin-footer.php' );
-               die();
-       }
-
-       echo '<form method="post">';
-
-       wp_nonce_field( 'install-network-1' );
-
-       $error_codes = array();
-       if ( is_wp_error( $errors ) ) {
-               echo '<div class="error"><p><strong>' . __( 'ERROR: The network could not be created.' ) . '</strong></p>';
-               foreach ( $errors->get_error_messages() as $error )
-                       echo "<p>$error</p>";
-               echo '</div>';
-               $error_codes = $errors->get_error_codes();
-       }
-
-       $site_name = ( ! empty( $_POST['sitename'] ) && ! in_array( 'empty_sitename', $error_codes ) ) ? $_POST['sitename'] : sprintf( _x('%s Sites', 'Default network name' ), get_option( 'blogname' ) );
-       $admin_email = ( ! empty( $_POST['email'] ) && ! in_array( 'invalid_email', $error_codes ) ) ? $_POST['email'] : get_option( 'admin_email' );
-       ?>
-       <p><?php _e( 'Welcome to the Network installation process!' ); ?></p>
-       <p><?php _e( 'Fill in the information below and you&#8217;ll be on your way to creating a network of WordPress sites. We will create configuration files in the next step.' ); ?></p>
-       <?php
-
-       if ( isset( $_POST['subdomain_install'] ) ) {
-               $subdomain_install = (bool) $_POST['subdomain_install'];
-       } elseif ( apache_mod_loaded('mod_rewrite') ) { // assume nothing
-               $subdomain_install = true;
-       } elseif ( !allow_subdirectory_install() ) {
-               $subdomain_install = true;
-       } else {
-               $subdomain_install = false;
-               if ( $got_mod_rewrite = got_mod_rewrite() ) // dangerous assumptions
-                       echo '<div class="updated inline"><p><strong>' . __( 'Note:' ) . '</strong> ' . __( 'Please make sure the Apache <code>mod_rewrite</code> module is installed as it will be used at the end of this installation.' ) . '</p>';
-               elseif ( $is_apache )
-                       echo '<div class="error inline"><p><strong>' . __( 'Warning!' ) . '</strong> ' . __( 'It looks like the Apache <code>mod_rewrite</code> module is not installed.' ) . '</p>';
-               if ( $got_mod_rewrite || $is_apache ) // Protect against mod_rewrite mimicry (but ! Apache)
-                       echo '<p>' . __( 'If <code>mod_rewrite</code> is disabled, ask your administrator to enable that module, or look at the <a href="http://httpd.apache.org/docs/mod/mod_rewrite.html">Apache documentation</a> or <a href="http://www.google.com/search?q=apache+mod_rewrite">elsewhere</a> for help setting it up.' ) . '</p></div>';
-       }
-
-       if ( allow_subdomain_install() && allow_subdirectory_install() ) : ?>
-               <h3><?php esc_html_e( 'Addresses of Sites in your Network' ); ?></h3>
-               <p><?php _e( 'Please choose whether you would like sites in your WordPress network to use sub-domains or sub-directories. <strong>You cannot change this later.</strong>' ); ?></p>
-               <p><?php _e( 'You will need a wildcard DNS record if you are going to use the virtual host (sub-domain) functionality.' ); ?></p>
-               <?php // @todo: Link to an MS readme? ?>
-               <table class="form-table">
-                       <tr>
-                               <th><label><input type="radio" name="subdomain_install" value="1"<?php checked( $subdomain_install ); ?> /> <?php _e( 'Sub-domains' ); ?></label></th>
-                               <td><?php printf(
-                                       /* translators: 1: hostname */
-                                       _x( 'like <code>site1.%1$s</code> and <code>site2.%1$s</code>', 'subdomain examples' ),
-                                       $hostname
-                               ); ?></td>
-                       </tr>
-                       <tr>
-                               <th><label><input type="radio" name="subdomain_install" value="0"<?php checked( ! $subdomain_install ); ?> /> <?php _e( 'Sub-directories' ); ?></label></th>
-                               <td><?php printf(
-                                       /* translators: 1: hostname */
-                                       _x( 'like <code>%1$s/site1</code> and <code>%1$s/site2</code>', 'subdirectory examples' ),
-                                       $hostname
-                               ); ?></td>
-                       </tr>
-               </table>
-
-<?php
-       endif;
-
-               if ( WP_CONTENT_DIR != ABSPATH . 'wp-content' && ( allow_subdirectory_install() || ! allow_subdomain_install() ) )
-                       echo '<div class="error inline"><p><strong>' . __('Warning!') . '</strong> ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</p></div>';
-
-               $is_www = ( 0 === strpos( $hostname, 'www.' ) );
-               if ( $is_www ) :
-               ?>
-               <h3><?php esc_html_e( 'Server Address' ); ?></h3>
-               <p><?php printf( __( 'We recommend you change your siteurl to <code>%1$s</code> before enabling the network feature. It will still be possible to visit your site using the <code>www</code> prefix with an address like <code>%2$s</code> but any links will not have the <code>www</code> prefix.' ), substr( $hostname, 4 ), $hostname ); ?></p>
-               <table class="form-table">
-                       <tr>
-                               <th scope='row'><?php esc_html_e( 'Server Address' ); ?></th>
-                               <td>
-                                       <?php printf( __( 'The internet address of your network will be <code>%s</code>.' ), $hostname ); ?>
-                               </td>
-                       </tr>
-               </table>
-               <?php endif; ?>
-
-               <h3><?php esc_html_e( 'Network Details' ); ?></h3>
-               <table class="form-table">
-               <?php if ( 'localhost' == $hostname ) : ?>
-                       <tr>
-                               <th scope="row"><?php esc_html_e( 'Sub-directory Install' ); ?></th>
-                               <td><?php
-                                       _e( 'Because you are using <code>localhost</code>, the sites in your WordPress network must use sub-directories. Consider using <code>localhost.localdomain</code> if you wish to use sub-domains.' );
-                                       // Uh oh:
-                                       if ( !allow_subdirectory_install() )
-                                               echo ' <strong>' . __( 'Warning!' ) . ' ' . __( 'The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links.' ) . '</strong>';
-                               ?></td>
-                       </tr>
-               <?php elseif ( !allow_subdomain_install() ) : ?>
-                       <tr>
-                               <th scope="row"><?php esc_html_e( 'Sub-directory Install' ); ?></th>
-                               <td><?php
-                                       _e( 'Because your install is in a directory, the sites in your WordPress network must use sub-directories.' );
-                                       // Uh oh:
-                                       if ( !allow_subdirectory_install() )
-                                               echo ' <strong>' . __( 'Warning!' ) . ' ' . __( 'The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links.' ) . '</strong>';
-                               ?></td>
-                       </tr>
-               <?php elseif ( !allow_subdirectory_install() ) : ?>
-                       <tr>
-                               <th scope="row"><?php esc_html_e( 'Sub-domain Install' ); ?></th>
-                               <td><?php _e( 'Because your install is not new, the sites in your WordPress network must use sub-domains.' );
-                                       echo ' <strong>' . __( 'The main site in a sub-directory install will need to use a modified permalink structure, potentially breaking existing links.' ) . '</strong>';
-                               ?></td>
-                       </tr>
-               <?php endif; ?>
-               <?php if ( ! $is_www ) : ?>
-                       <tr>
-                               <th scope='row'><?php esc_html_e( 'Server Address' ); ?></th>
-                               <td>
-                                       <?php printf( __( 'The internet address of your network will be <code>%s</code>.' ), $hostname ); ?>
-                               </td>
-                       </tr>
-               <?php endif; ?>
-                       <tr>
-                               <th scope='row'><?php esc_html_e( 'Network Title' ); ?></th>
-                               <td>
-                                       <input name='sitename' type='text' size='45' value='<?php echo esc_attr( $site_name ); ?>' />
-                                       <p class="description">
-                                               <?php _e( 'What would you like to call your network?' ); ?>
-                                       </p>
-                               </td>
-                       </tr>
-                       <tr>
-                               <th scope='row'><?php esc_html_e( 'Network Admin Email' ); ?></th>
-                               <td>
-                                       <input name='email' type='text' size='45' value='<?php echo esc_attr( $admin_email ); ?>' />
-                                       <p class="description">
-                                               <?php _e( 'Your email address.' ); ?>
-                                       </p>
-                               </td>
-                       </tr>
-               </table>
-               <?php submit_button( __( 'Install' ), 'primary', 'submit' ); ?>
-       </form>
-       <?php
-}
-
-/**
- * Prints step 2 for Network installation process.
- *
- * @since 3.0.0
- *
- * @global wpdb $wpdb
- *
- * @param WP_Error $errors
- */
-function network_step2( $errors = false ) {
-       global $wpdb;
-
-       $hostname          = get_clean_basedomain();
-       $slashed_home      = trailingslashit( get_option( 'home' ) );
-       $base              = parse_url( $slashed_home, PHP_URL_PATH );
-       $document_root_fix = str_replace( '\\', '/', realpath( $_SERVER['DOCUMENT_ROOT'] ) );
-       $abspath_fix       = str_replace( '\\', '/', ABSPATH );
-       $home_path         = 0 === strpos( $abspath_fix, $document_root_fix ) ? $document_root_fix . $base : get_home_path();
-       $wp_siteurl_subdir = preg_replace( '#^' . preg_quote( $home_path, '#' ) . '#', '', $abspath_fix );
-       $rewrite_base      = ! empty( $wp_siteurl_subdir ) ? ltrim( trailingslashit( $wp_siteurl_subdir ), '/' ) : '';
-
-
-       $location_of_wp_config = $abspath_fix;
-       if ( ! file_exists( ABSPATH . 'wp-config.php' ) && file_exists( dirname( ABSPATH ) . '/wp-config.php' ) ) {
-               $location_of_wp_config = dirname( $abspath_fix );
-       }
-       $location_of_wp_config = trailingslashit( $location_of_wp_config );
-
-       // Wildcard DNS message.
-       if ( is_wp_error( $errors ) )
-               echo '<div class="error">' . $errors->get_error_message() . '</div>';
-
-       if ( $_POST ) {
-               if ( allow_subdomain_install() )
-                       $subdomain_install = allow_subdirectory_install() ? ! empty( $_POST['subdomain_install'] ) : true;
-               else
-                       $subdomain_install = false;
-       } else {
-               if ( is_multisite() ) {
-                       $subdomain_install = is_subdomain_install();
-?>
-       <p><?php _e( 'The original configuration steps are shown here for reference.' ); ?></p>
-<?php
-               } else {
-                       $subdomain_install = (bool) $wpdb->get_var( "SELECT meta_value FROM $wpdb->sitemeta WHERE site_id = 1 AND meta_key = 'subdomain_install'" );
-?>
-       <div class="error"><p><strong><?php _e('Warning:'); ?></strong> <?php _e( 'An existing WordPress network was detected.' ); ?></p></div>
-       <p><?php _e( 'Please complete the configuration steps. To create a new network, you will need to empty or remove the network database tables.' ); ?></p>
-<?php
-               }
-       }
-
-       $subdir_match          = $subdomain_install ? '' : '([_0-9a-zA-Z-]+/)?';
-       $subdir_replacement_01 = $subdomain_install ? '' : '$1';
-       $subdir_replacement_12 = $subdomain_install ? '$1' : '$2';
-
-       if ( $_POST || ! is_multisite() ) {
-?>
-               <h3><?php esc_html_e( 'Enabling the Network' ); ?></h3>
-               <p><?php _e( 'Complete the following steps to enable the features for creating a network of sites.' ); ?></p>
-               <div class="updated inline"><p><?php
-                       if ( file_exists( $home_path . '.htaccess' ) )
-                               printf( __( '<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.' ), '.htaccess' );
-                       elseif ( file_exists( $home_path . 'web.config' ) )
-                               printf( __( '<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> and <code>%s</code> files.' ), 'web.config' );
-                       else
-                               _e( '<strong>Caution:</strong> We recommend you back up your existing <code>wp-config.php</code> file.' );
-               ?></p></div>
-<?php
-       }
-?>
-               <ol>
-                       <li><p><?php printf( __( 'Add the following to your <code>wp-config.php</code> file in <code>%s</code> <strong>above</strong> the line reading <code>/* That&#8217;s all, stop editing! Happy blogging. */</code>:' ), $location_of_wp_config ); ?></p>
-                               <textarea class="code" readonly="readonly" cols="100" rows="7">
-define('MULTISITE', true);
-define('SUBDOMAIN_INSTALL', <?php echo $subdomain_install ? 'true' : 'false'; ?>);
-define('DOMAIN_CURRENT_SITE', '<?php echo $hostname; ?>');
-define('PATH_CURRENT_SITE', '<?php echo $base; ?>');
-define('SITE_ID_CURRENT_SITE', 1);
-define('BLOG_ID_CURRENT_SITE', 1);
-</textarea>
-<?php
-       $keys_salts = array( 'AUTH_KEY' => '', 'SECURE_AUTH_KEY' => '', 'LOGGED_IN_KEY' => '', 'NONCE_KEY' => '', 'AUTH_SALT' => '', 'SECURE_AUTH_SALT' => '', 'LOGGED_IN_SALT' => '', 'NONCE_SALT' => '' );
-       foreach ( $keys_salts as $c => $v ) {
-               if ( defined( $c ) )
-                       unset( $keys_salts[ $c ] );
-       }
-
-       if ( ! empty( $keys_salts ) ) {
-               $keys_salts_str = '';
-               $from_api = wp_remote_get( 'https://api.wordpress.org/secret-key/1.1/salt/' );
-               if ( is_wp_error( $from_api ) ) {
-                       foreach ( $keys_salts as $c => $v ) {
-                               $keys_salts_str .= "\ndefine( '$c', '" . wp_generate_password( 64, true, true ) . "' );";
-                       }
-               } else {
-                       $from_api = explode( "\n", wp_remote_retrieve_body( $from_api ) );
-                       foreach ( $keys_salts as $c => $v ) {
-                               $keys_salts_str .= "\ndefine( '$c', '" . substr( array_shift( $from_api ), 28, 64 ) . "' );";
-                       }
-               }
-               $num_keys_salts = count( $keys_salts );
-?>
-       <p>
-               <?php
-                       if ( 1 == $num_keys_salts ) {
-                               _e( 'This unique authentication key is also missing from your <code>wp-config.php</code> file.' );
-                       } else {
-                               _e( 'These unique authentication keys are also missing from your <code>wp-config.php</code> file.' );
-                       }
-               ?>
-               <?php _e( 'To make your installation more secure, you should also add:' ); ?>
-       </p>
-       <textarea class="code" readonly="readonly" cols="100" rows="<?php echo $num_keys_salts; ?>"><?php echo esc_textarea( $keys_salts_str ); ?></textarea>
-<?php
-       }
-?>
-</li>
-<?php
-       if ( iis7_supports_permalinks() ) :
-               // IIS doesn't support RewriteBase, all your RewriteBase are belong to us
-               $iis_subdir_match = ltrim( $base, '/' ) . $subdir_match;
-               $iis_rewrite_base = ltrim( $base, '/' ) . $rewrite_base;
-               $iis_subdir_replacement = $subdomain_install ? '' : '{R:1}';
-
-               $web_config_file = '<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <system.webServer>
-        <rewrite>
-            <rules>
-                <rule name="WordPress Rule 1" stopProcessing="true">
-                    <match url="^index\.php$" ignoreCase="false" />
-                    <action type="None" />
-                </rule>';
-                               if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
-                                       $web_config_file .= '
-                <rule name="WordPress Rule for Files" stopProcessing="true">
-                    <match url="^' . $iis_subdir_match . 'files/(.+)" ignoreCase="false" />
-                    <action type="Rewrite" url="' . $iis_rewrite_base . WPINC . '/ms-files.php?file={R:1}" appendQueryString="false" />
-                </rule>';
-                }
-                $web_config_file .= '
-                <rule name="WordPress Rule 2" stopProcessing="true">
-                    <match url="^' . $iis_subdir_match . 'wp-admin$" ignoreCase="false" />
-                    <action type="Redirect" url="' . $iis_subdir_replacement . 'wp-admin/" redirectType="Permanent" />
-                </rule>
-                <rule name="WordPress Rule 3" stopProcessing="true">
-                    <match url="^" ignoreCase="false" />
-                    <conditions logicalGrouping="MatchAny">
-                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
-                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
-                    </conditions>
-                    <action type="None" />
-                </rule>
-                <rule name="WordPress Rule 4" stopProcessing="true">
-                    <match url="^' . $iis_subdir_match . '(wp-(content|admin|includes).*)" ignoreCase="false" />
-                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:1}" />
-                </rule>
-                <rule name="WordPress Rule 5" stopProcessing="true">
-                    <match url="^' . $iis_subdir_match . '([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
-                    <action type="Rewrite" url="' . $iis_rewrite_base . '{R:2}" />
-                </rule>
-                <rule name="WordPress Rule 6" stopProcessing="true">
-                    <match url="." ignoreCase="false" />
-                    <action type="Rewrite" url="index.php" />
-                </rule>
-            </rules>
-        </rewrite>
-    </system.webServer>
-</configuration>
-';
-
-               echo '<li><p>';
-               /* translators: 1: a filename like .htaccess. 2: a file path. */
-               printf( __( 'Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:' ),
-                       '<code>web.config</code>', '<code>' . $home_path . '</code>' );
-               echo '</p>';
-               if ( ! $subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content' )
-                       echo '<p><strong>' . __('Warning:') . ' ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</strong></p>';
-               ?>
-               <textarea class="code" readonly="readonly" cols="100" rows="20"><?php echo esc_textarea( $web_config_file ); ?>
-               </textarea></li>
-               </ol>
-
-       <?php else : // end iis7_supports_permalinks(). construct an htaccess file instead:
-
-               $ms_files_rewriting = '';
-               if ( is_multisite() && get_site_option( 'ms_files_rewriting' ) ) {
-                       $ms_files_rewriting = "\n# uploaded files\nRewriteRule ^";
-                       $ms_files_rewriting .= $subdir_match . "files/(.+) {$rewrite_base}" . WPINC . "/ms-files.php?file={$subdir_replacement_12} [L]" . "\n";
-               }
-
-               $htaccess_file = <<<EOF
-RewriteEngine On
-RewriteBase {$base}
-RewriteRule ^index\.php$ - [L]
-{$ms_files_rewriting}
-# add a trailing slash to /wp-admin
-RewriteRule ^{$subdir_match}wp-admin$ {$subdir_replacement_01}wp-admin/ [R=301,L]
-
-RewriteCond %{REQUEST_FILENAME} -f [OR]
-RewriteCond %{REQUEST_FILENAME} -d
-RewriteRule ^ - [L]
-RewriteRule ^{$subdir_match}(wp-(content|admin|includes).*) {$rewrite_base}{$subdir_replacement_12} [L]
-RewriteRule ^{$subdir_match}(.*\.php)$ {$rewrite_base}$subdir_replacement_12 [L]
-RewriteRule . index.php [L]
-
-EOF;
-
-               echo '<li><p>';
-               /* translators: 1: a filename like .htaccess. 2: a file path. */
-               printf( __( 'Add the following to your %1$s file in %2$s, <strong>replacing</strong> other WordPress rules:' ),
-                       '<code>.htaccess</code>', '<code>' . $home_path . '</code>' );
-               echo '</p>';
-               if ( ! $subdomain_install && WP_CONTENT_DIR != ABSPATH . 'wp-content' )
-                       echo '<p><strong>' . __('Warning:') . ' ' . __( 'Subdirectory networks may not be fully compatible with custom wp-content directories.' ) . '</strong></p>';
-               ?>
-               <textarea class="code" readonly="readonly" cols="100" rows="<?php echo substr_count( $htaccess_file, "\n" ) + 1; ?>">
-<?php echo esc_textarea( $htaccess_file ); ?></textarea></li>
-               </ol>
-
-       <?php endif; // end IIS/Apache code branches.
-
-       if ( !is_multisite() ) { ?>
-               <p><?php _e( 'Once you complete these steps, your network is enabled and configured. You will have to log in again.' ); ?> <a href="<?php echo esc_url( site_url( 'wp-login.php' ) ); ?>"><?php _e( 'Log In' ); ?></a></p>
-<?php
-       }
-}
-
 if ( $_POST ) {
 
        check_admin_referer( 'install-network-1' );
index 1872eb81c0932c13aa3dfcf543b615c6c5d56b6f..cd8e251d8bfbb2d070f1c31c115c85e17cf3b86a 100644 (file)
@@ -22,27 +22,6 @@ if ( ! current_user_can( 'manage_network_options' ) )
 $title = __( 'Network Settings' );
 $parent_file = 'settings.php';
 
-/**
- * Print JavaScript in the header on the Network Settings screen.
- *
- * @since 4.1.0
-*/
-function network_settings_add_js() {
-?>
-<script type="text/javascript">
-jQuery(document).ready( function($) {
-       var languageSelect = $( '#WPLANG' );
-       $( 'form' ).submit( function() {
-               // Don't show a spinner for English and installed languages,
-               // as there is nothing to download.
-               if ( ! languageSelect.find( 'option:selected' ).data( 'installed' ) ) {
-                       $( '#submit', this ).after( '<span class="spinner language-install-spinner" />' );
-               }
-       });
-});
-</script>
-<?php
-}
 add_action( 'admin_head', 'network_settings_add_js' );
 
 get_current_screen()->add_help_tab( array(
@@ -122,7 +101,7 @@ if ( isset( $_GET['updated'] ) ) {
        <h1><?php echo esc_html( $title ); ?></h1>
        <form method="post" action="settings.php" novalidate="novalidate">
                <?php wp_nonce_field( 'siteoptions' ); ?>
-               <h3><?php _e( 'Operational Settings' ); ?></h3>
+               <h2><?php _e( 'Operational Settings' ); ?></h2>
                <table class="form-table">
                        <tr>
                                <th scope="row"><label for="site_name"><?php _e( 'Network Title' ) ?></label></th>
@@ -141,7 +120,7 @@ if ( isset( $_GET['updated'] ) ) {
                                </td>
                        </tr>
                </table>
-               <h3><?php _e( 'Registration Settings' ); ?></h3>
+               <h2><?php _e( 'Registration Settings' ); ?></h2>
                <table class="form-table">
                        <tr>
                                <th scope="row"><?php _e( 'Allow new registrations' ) ?></th>
@@ -158,7 +137,13 @@ if ( isset( $_GET['updated'] ) ) {
                                        <label><input name="registration" type="radio" id="registration3" value="blog"<?php checked( $reg, 'blog') ?> /> <?php _e( 'Logged in users may register new sites.' ); ?></label><br />
                                        <label><input name="registration" type="radio" id="registration4" value="all"<?php checked( $reg, 'all') ?> /> <?php _e( 'Both sites and user accounts can be registered.' ); ?></label>
                                        <?php if ( is_subdomain_install() ) {
-                                               echo '<p class="description">' . __( 'If registration is disabled, please set <code>NOBLOGREDIRECT</code> in <code>wp-config.php</code> to a URL you will redirect visitors to if they visit a non-existent site.' ) . '</p>';
+                                               echo '<p class="description">';
+                                               /* translators: 1: NOBLOGREDIRECT 2: wp-config.php */
+                                               printf( __( 'If registration is disabled, please set %1$s in %2$s to a URL you will redirect visitors to if they visit a non-existent site.' ),
+                                                       '<code>NOBLOGREDIRECT</code>',
+                                                       '<code>wp-config.php</code>'
+                                               );
+                                               echo '</p>';
                                        } ?>
                                        </fieldset>
                                </td>
@@ -217,7 +202,7 @@ if ( isset( $_GET['updated'] ) ) {
                        </tr>
 
                </table>
-               <h3><?php _e('New Site Settings'); ?></h3>
+               <h2><?php _e( 'New Site Settings' ); ?></h2>
                <table class="form-table">
 
                        <tr>
@@ -289,12 +274,12 @@ if ( isset( $_GET['updated'] ) ) {
                                </td>
                        </tr>
                </table>
-               <h3><?php _e( 'Upload Settings' ); ?></h3>
+               <h2><?php _e( 'Upload Settings' ); ?></h2>
                <table class="form-table">
                        <tr>
                                <th scope="row"><?php _e( 'Site upload space' ) ?></th>
                                <td>
-                                       <label><input type="checkbox" id="upload_space_check_disabled" name="upload_space_check_disabled" value="0"<?php checked( get_site_option( 'upload_space_check_disabled' ), 0 ) ?>/> <?php printf( __( 'Limit total size of files uploaded to %s MB' ), '</label><label><input name="blog_upload_space" type="number" min="0" style="width: 100px" id="blog_upload_space" aria-describedby="blog-upload-space-desc" value="' . esc_attr( get_site_option('blog_upload_space', 100) ) . '" />' ); ?></label><br />
+                                       <label><input type="checkbox" id="upload_space_check_disabled" name="upload_space_check_disabled" value="0"<?php checked( (bool) get_site_option( 'upload_space_check_disabled' ), false ) ?>/> <?php printf( __( 'Limit total size of files uploaded to %s MB' ), '</label><label><input name="blog_upload_space" type="number" min="0" style="width: 100px" id="blog_upload_space" aria-describedby="blog-upload-space-desc" value="' . esc_attr( get_site_option('blog_upload_space', 100) ) . '" />' ); ?></label><br />
                                        <p class="screen-reader-text" id="blog-upload-space-desc">
                                                <?php _e( 'Size in megabytes' ) ?>
                                        </p>
@@ -327,7 +312,7 @@ if ( isset( $_GET['updated'] ) ) {
                $translations = wp_get_available_translations();
                if ( ! empty( $languages ) || ! empty( $translations ) ) {
                        ?>
-                       <h3><?php _e( 'Language Settings' ); ?></h3>
+                       <h2><?php _e( 'Language Settings' ); ?></h2>
                        <table class="form-table">
                                <tr>
                                        <th><label for="WPLANG"><?php _e( 'Default Language' ); ?></label></th>
@@ -354,7 +339,7 @@ if ( isset( $_GET['updated'] ) ) {
                }
                ?>
 
-               <h3><?php _e( 'Menu Settings' ); ?></h3>
+               <h2><?php _e( 'Menu Settings' ); ?></h2>
                <table id="menu" class="form-table">
                        <tr>
                                <th scope="row"><?php _e( 'Enable administration menus' ); ?></th>
index 673367a1709433da23a9d0ecb70c40fc9668ffbc..634e032379299f56764d460bf90997dc5f24385d 100644 (file)
@@ -23,10 +23,10 @@ get_current_screen()->add_help_tab( array(
        'title'   => __( 'Overview' ),
        'content' =>
                '<p>' . __( 'The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.' ) . '</p>' .
-               '<p>' . __( '<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.' ) . '</p>' .
-               '<p>' . __( '<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.' ) . '</p>' .
-               '<p>' . sprintf( __( '<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
-               '<p>' . __( '<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.' ) . '</p>'
+               '<p>' . __( '<strong>Info</strong> &mdash; The site URL is rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.' ) . '</p>' .
+               '<p>' . __( '<strong>Users</strong> &mdash; This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.' ) . '</p>' .
+               '<p>' . sprintf( __( '<strong>Themes</strong> &mdash; This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
+               '<p>' . __( '<strong>Settings</strong> &mdash; This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.' ) . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
@@ -138,7 +138,7 @@ require( ABSPATH . 'wp-admin/admin-header.php' );
 <div class="wrap">
 <h1 id="edit-site"><?php echo $title; ?></h1>
 <p class="edit-site-actions"><a href="<?php echo esc_url( get_home_url( $id, '/' ) ); ?>"><?php _e( 'Visit' ); ?></a> | <a href="<?php echo esc_url( get_admin_url( $id ) ); ?>"><?php _e( 'Dashboard' ); ?></a></p>
-<h3 class="nav-tab-wrapper">
+<h2 class="nav-tab-wrapper nav-tab-small">
 <?php
 $tabs = array(
        'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
@@ -151,7 +151,7 @@ foreach ( $tabs as $tab_id => $tab ) {
        echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
 }
 ?>
-</h3>
+</h2>
 <?php
 if ( ! empty( $messages ) ) {
        foreach ( $messages as $msg ) {
index 582fa5048cfe2da8f414f9c07065d0f891d42658..dac11614a4ac90b1597bf7f660f3a66937f28e25 100644 (file)
 /** Load WordPress Administration Bootstrap */
 require_once( dirname( __FILE__ ) . '/admin.php' );
 
+/** WordPress Translation Install API */
+require_once( ABSPATH . 'wp-admin/includes/translation-install.php' );
+
 if ( ! is_multisite() )
        wp_die( __( 'Multisite support is not enabled.' ) );
 
 if ( ! current_user_can( 'manage_sites' ) )
        wp_die( __( 'You do not have sufficient permissions to add sites to this network.' ) );
 
-       get_current_screen()->add_help_tab( array(
-               'id'      => 'overview',
-               'title'   => __('Overview'),
-               'content' =>
-                       '<p>' . __('This screen is for Super Admins to add new sites to the network. This is not affected by the registration settings.') . '</p>' .
-                       '<p>' . __('If the admin email for the new site does not exist in the database, a new user will also be created.') . '</p>'
+get_current_screen()->add_help_tab( array(
+       'id'      => 'overview',
+       'title'   => __('Overview'),
+       'content' =>
+               '<p>' . __('This screen is for Super Admins to add new sites to the network. This is not affected by the registration settings.') . '</p>' .
+               '<p>' . __('If the admin email for the new site does not exist in the database, a new user will also be created.') . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
@@ -43,14 +46,27 @@ if ( isset($_REQUEST['action']) && 'add-site' == $_REQUEST['action'] ) {
 
        // If not a subdomain install, make sure the domain isn't a reserved word
        if ( ! is_subdomain_install() ) {
-               /** This filter is documented in wp-includes/ms-functions.php */
-               $subdirectory_reserved_names = apply_filters( 'subdirectory_reserved_names', array( 'page', 'comments', 'blog', 'files', 'feed' ) );
-               if ( in_array( $domain, $subdirectory_reserved_names ) )
-                       wp_die( sprintf( __('The following words are reserved for use by WordPress functions and cannot be used as blog names: <code>%s</code>' ), implode( '</code>, <code>', $subdirectory_reserved_names ) ) );
+               $subdirectory_reserved_names = get_subdirectory_reserved_names();
+
+               if ( in_array( $domain, $subdirectory_reserved_names ) ) {
+                       wp_die( sprintf( __( 'The following words are reserved for use by WordPress functions and cannot be used as blog names: <code>%s</code>' ), implode( '</code>, <code>', $subdirectory_reserved_names ) ) );
+               }
        }
 
        $title = $blog['title'];
 
+       $meta = array(
+               'public' => 1
+       );
+
+       // Handle translation install for the new site.
+       if ( ! empty( $_POST['WPLANG'] ) && wp_can_install_language_pack() ) {
+               $language = wp_download_language_pack( wp_unslash( $_POST['WPLANG'] ) );
+               if ( $language ) {
+                       $meta['WPLANG'] = $language;
+               }
+       }
+
        if ( empty( $domain ) )
                wp_die( __( 'Missing or invalid site address.' ) );
 
@@ -74,16 +90,28 @@ if ( isset($_REQUEST['action']) && 'add-site' == $_REQUEST['action'] ) {
        $password = 'N/A';
        $user_id = email_exists($email);
        if ( !$user_id ) { // Create a new user with a random password
+               $user_id = username_exists( $domain );
+               if ( $user_id ) {
+                       wp_die( __( 'The domain or path entered conflicts with an existing username.' ) );
+               }
                $password = wp_generate_password( 12, false );
                $user_id = wpmu_create_user( $domain, $password, $email );
-               if ( false === $user_id )
+               if ( false === $user_id ) {
                        wp_die( __( 'There was an error creating the user.' ) );
-               else
-                       wp_new_user_notification( $user_id, null, 'both' );
+               }
+
+               /**
+                 * Fires after a new user has been created via the network site-new.php page.
+                 *
+                 * @since 4.4.0
+                 *
+                 * @param int $user_id ID of the newly created user.
+                 */
+               do_action( 'network_site_new_created_user', $user_id );
        }
 
        $wpdb->hide_errors();
-       $id = wpmu_create_blog( $newdomain, $path, $title, $user_id , array( 'public' => 1 ), $current_site->id );
+       $id = wpmu_create_blog( $newdomain, $path, $title, $user_id, $meta, $current_site->id );
        $wpdb->show_errors();
        if ( ! is_wp_error( $id ) ) {
                if ( ! is_super_admin( $user_id ) && !get_user_option( 'primary_blog', $user_id ) ) {
@@ -155,6 +183,35 @@ if ( ! empty( $messages ) ) {
                        <th scope="row"><label for="site-title"><?php _e( 'Site Title' ) ?></label></th>
                        <td><input name="blog[title]" type="text" class="regular-text" id="site-title" /></td>
                </tr>
+               <?php
+               $languages    = get_available_languages();
+               $translations = wp_get_available_translations();
+               if ( ! empty( $languages ) || ! empty( $translations ) ) :
+                       ?>
+                       <tr class="form-field form-required">
+                               <th scope="row"><label for="site-language"><?php _e( 'Site Language' ); ?></label></th>
+                               <td>
+                                       <?php
+                                       // Network default.
+                                       $lang = get_site_option( 'WPLANG' );
+
+                                       // Use English if the default isn't available.
+                                       if ( ! in_array( $lang, $languages ) ) {
+                                               $lang = '';
+                                       }
+
+                                       wp_dropdown_languages( array(
+                                               'name'                        => 'WPLANG',
+                                               'id'                          => 'site-language',
+                                               'selected'                    => $lang,
+                                               'languages'                   => $languages,
+                                               'translations'                => $translations,
+                                               'show_available_translations' => wp_can_install_language_pack(),
+                                       ) );
+                                       ?>
+                               </td>
+                       </tr>
+               <?php endif; // Languages. ?>
                <tr class="form-field form-required">
                        <th scope="row"><label for="admin-email"><?php _e( 'Admin Email' ) ?></label></th>
                        <td><input name="blog[email]" type="email" class="regular-text wp-suggest-user" id="admin-email" data-autocomplete-type="search" data-autocomplete-field="user_email" /></td>
index cdb031f515342901dc8c5099d20b35b765f69703..f03803e1b3600e42c2939467e5c12cc653ebdf38 100644 (file)
@@ -21,10 +21,10 @@ get_current_screen()->add_help_tab( array(
        'title'   => __('Overview'),
        'content' =>
                '<p>' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '</p>' .
-               '<p>' . __('<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
-               '<p>' . __('<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
-               '<p>' . sprintf( __('<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
-               '<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
+               '<p>' . __('<strong>Info</strong> &mdash; The site URL is rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
+               '<p>' . __('<strong>Users</strong> &mdash; This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
+               '<p>' . sprintf( __('<strong>Themes</strong> &mdash; This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
+               '<p>' . __('<strong>Settings</strong> &mdash; This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
@@ -62,12 +62,16 @@ if ( isset($_REQUEST['action']) && 'update-site' == $_REQUEST['action'] && is_ar
                update_option( $key, $val );
        }
 
-/**
- * Fires after the site options are updated.
- *
- * @since 3.0.0
- */
-       do_action( 'wpmu_update_blog_options' );
+       /**
+        * Fires after the site options are updated.
+        *
+        * @since 3.0.0
+        * @since 4.4.0 Added `$id` parameter.
+        *
+        * @param int $id The ID of the site being updated.
+        */
+       do_action( 'wpmu_update_blog_options', $id );
+
        restore_current_blog();
        wp_redirect( add_query_arg( array( 'update' => 'updated', 'id' => $id ), 'site-settings.php') );
        exit;
@@ -91,7 +95,7 @@ require( ABSPATH . 'wp-admin/admin-header.php' );
 <div class="wrap">
 <h1 id="edit-site"><?php echo $title; ?></h1>
 <p class="edit-site-actions"><a href="<?php echo esc_url( get_home_url( $id, '/' ) ); ?>"><?php _e( 'Visit' ); ?></a> | <a href="<?php echo esc_url( get_admin_url( $id ) ); ?>"><?php _e( 'Dashboard' ); ?></a></p>
-<h3 class="nav-tab-wrapper">
+<h2 class="nav-tab-wrapper nav-tab-small">
 <?php
 $tabs = array(
        'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
@@ -104,7 +108,7 @@ foreach ( $tabs as $tab_id => $tab ) {
        echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
 }
 ?>
-</h3>
+</h2>
 <?php
 if ( ! empty( $messages ) ) {
        foreach ( $messages as $msg )
index 5209988fb31dc843435d68246861a37132661460..f2e6f584fa23f585dca0c437710586e5a8050e4b 100644 (file)
@@ -21,10 +21,10 @@ get_current_screen()->add_help_tab( array(
        'title'   => __('Overview'),
        'content' =>
                '<p>' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '</p>' .
-               '<p>' . __('<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
-               '<p>' . __('<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
-               '<p>' . sprintf( __('<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
-               '<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
+               '<p>' . __('<strong>Info</strong> &mdash; The site URL is rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
+               '<p>' . __('<strong>Users</strong> &mdash; This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
+               '<p>' . sprintf( __('<strong>Themes</strong> &mdash; This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
+               '<p>' . __('<strong>Settings</strong> &mdash; This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
@@ -33,6 +33,12 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="https://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_views'      => __( 'Filter site themes list' ),
+       'heading_pagination' => __( 'Site themes list navigation' ),
+       'heading_list'       => __( 'Site themes list' ),
+) );
+
 $wp_list_table = _get_list_table('WP_MS_Themes_List_Table');
 
 $action = $wp_list_table->current_action();
@@ -96,7 +102,7 @@ if ( $action ) {
                                $themes = (array) $_POST['checked'];
                                $action = 'enabled';
                                $n = count( $themes );
-                               foreach( (array) $themes as $theme )
+                               foreach ( (array) $themes as $theme )
                                        $allowed_themes[ $theme ] = true;
                        } else {
                                $action = 'error';
@@ -109,7 +115,7 @@ if ( $action ) {
                                $themes = (array) $_POST['checked'];
                                $action = 'disabled';
                                $n = count( $themes );
-                               foreach( (array) $themes as $theme )
+                               foreach ( (array) $themes as $theme )
                                        unset( $allowed_themes[ $theme ] );
                        } else {
                                $action = 'error';
@@ -143,7 +149,7 @@ require( ABSPATH . 'wp-admin/admin-header.php' ); ?>
 <div class="wrap">
 <h1 id="edit-site"><?php echo $title; ?></h1>
 <p class="edit-site-actions"><a href="<?php echo esc_url( get_home_url( $id, '/' ) ); ?>"><?php _e( 'Visit' ); ?></a> | <a href="<?php echo esc_url( get_admin_url( $id ) ); ?>"><?php _e( 'Dashboard' ); ?></a></p>
-<h3 class="nav-tab-wrapper">
+<h2 class="nav-tab-wrapper nav-tab-small">
 <?php
 $tabs = array(
        'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
@@ -156,7 +162,7 @@ foreach ( $tabs as $tab_id => $tab ) {
        echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
 }
 ?>
-</h3><?php
+</h2><?php
 
 if ( isset( $_GET['enabled'] ) ) {
        $enabled = absint( $_GET['enabled'] );
index 6920cb1de656c4e21515c73296e67486c4df1b81..54ba6b68f1cb207d0ca1b4e9f92087d08e465f89 100644 (file)
@@ -24,10 +24,10 @@ get_current_screen()->add_help_tab( array(
        'title'   => __('Overview'),
        'content' =>
                '<p>' . __('The menu is for editing information specific to individual sites, particularly if the admin area of a site is unavailable.') . '</p>' .
-               '<p>' . __('<strong>Info</strong> - The domain and path are rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
-               '<p>' . __('<strong>Users</strong> - This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
-               '<p>' . sprintf( __('<strong>Themes</strong> - This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
-               '<p>' . __('<strong>Settings</strong> - This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
+               '<p>' . __('<strong>Info</strong> &mdash; The site URL is rarely edited as this can cause the site to not work properly. The Registered date and Last Updated date are displayed. Network admins can mark a site as archived, spam, deleted and mature, to remove from public listings or disable.') . '</p>' .
+               '<p>' . __('<strong>Users</strong> &mdash; This displays the users associated with this site. You can also change their role, reset their password, or remove them from the site. Removing the user from the site does not remove the user from the network.') . '</p>' .
+               '<p>' . sprintf( __('<strong>Themes</strong> &mdash; This area shows themes that are not already enabled across the network. Enabling a theme in this menu makes it accessible to this site. It does not activate the theme, but allows it to show in the site&#8217;s Appearance menu. To enable a theme for the entire network, see the <a href="%s">Network Themes</a> screen.' ), network_admin_url( 'themes.php' ) ) . '</p>' .
+               '<p>' . __('<strong>Settings</strong> &mdash; This page shows a list of all settings associated with this site. Some are created by WordPress and others are created by plugins you activate. Note that some fields are grayed out and say Serialized Data. You cannot modify these values due to the way the setting is stored in the database.') . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
@@ -36,6 +36,12 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="https://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_views'      => __( 'Filter site users list' ),
+       'heading_pagination' => __( 'Site users list navigation' ),
+       'heading_list'       => __( 'Site users list' ),
+) );
+
 $_SERVER['REQUEST_URI'] = remove_query_arg( 'update', $_SERVER['REQUEST_URI'] );
 $referer = remove_query_arg( 'update', wp_get_referer() );
 
@@ -77,9 +83,16 @@ if ( $action ) {
                                if ( false === $user_id ) {
                                        $update = 'err_new_dup';
                                } else {
-                                       wp_new_user_notification( $user_id, null, 'both' );
                                        add_user_to_blog( $id, $user_id, $_POST['new_role'] );
                                        $update = 'newuser';
+                                       /**
+                                         * Fires after a user has been created via the network site-users.php page.
+                                         *
+                                         * @since 4.4.0
+                                         *
+                                         * @param int $user_id ID of the newly created user.
+                                         */
+                                       do_action( 'network_site_users_created_user', $user_id );
                                }
                        }
                        break;
@@ -136,8 +149,13 @@ if ( $action ) {
                                        $user_id = (int) $user_id;
 
                                        // If the user doesn't already belong to the blog, bail.
-                                       if ( !is_user_member_of_blog( $user_id ) )
-                                               wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+                                       if ( ! is_user_member_of_blog( $user_id ) ) {
+                                               wp_die(
+                                                       '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                                                       '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
+                                                       403
+                                               );
+                                       }
 
                                        $user = get_userdata( $user_id );
                                        $user->set_role( $_REQUEST['new_role'] );
@@ -186,7 +204,7 @@ var current_site_id = <?php echo $id; ?>;
 <div class="wrap">
 <h1 id="edit-site"><?php echo $title; ?></h1>
 <p class="edit-site-actions"><a href="<?php echo esc_url( get_home_url( $id, '/' ) ); ?>"><?php _e( 'Visit' ); ?></a> | <a href="<?php echo esc_url( get_admin_url( $id ) ); ?>"><?php _e( 'Dashboard' ); ?></a></p>
-<h3 class="nav-tab-wrapper">
+<h2 class="nav-tab-wrapper nav-tab-small">
 <?php
 $tabs = array(
        'site-info'     => array( 'label' => __( 'Info' ),     'url' => 'site-info.php'     ),
@@ -199,7 +217,7 @@ foreach ( $tabs as $tab_id => $tab ) {
        echo '<a href="' . $tab['url'] . '?id=' . $id .'" class="nav-tab' . $class . '">' . esc_html( $tab['label'] ) . '</a>';
 }
 ?>
-</h3><?php
+</h2><?php
 
 if ( isset($_GET['update']) ) :
        switch($_GET['update']) {
@@ -260,7 +278,7 @@ do_action( 'network_site_users_after_list_table' );
 
 /** This filter is documented in wp-admin/network/site-users.php */
 if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_users_add_existing_form', true ) ) : ?>
-<h3 id="add-existing-user"><?php _e( 'Add Existing User' ); ?></h3>
+<h2 id="add-existing-user"><?php _e( 'Add Existing User' ); ?></h2>
 <form action="site-users.php?action=adduser" id="adduser" method="post">
        <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
        <table class="form-table">
@@ -289,7 +307,7 @@ if ( current_user_can( 'promote_users' ) && apply_filters( 'show_network_site_us
  * @param bool $bool Whether to show the Add New User form. Default true.
  */
 if ( current_user_can( 'create_users' ) && apply_filters( 'show_network_site_users_add_new_form', true ) ) : ?>
-<h3 id="add-new-user"><?php _e( 'Add New User' ); ?></h3>
+<h2 id="add-new-user"><?php _e( 'Add New User' ); ?></h2>
 <form action="<?php echo network_admin_url('site-users.php?action=newuser'); ?>" id="newuser" method="post">
        <input type="hidden" name="id" value="<?php echo esc_attr( $id ) ?>" />
        <table class="form-table">
index 733383acad6e5e6b24bc905e2416caa783c3bf05..e0e7e1e9952df6af5c8d5173f35235b9897615a9 100644 (file)
@@ -46,6 +46,11 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="https://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_pagination' => __( 'Sites list navigation' ),
+       'heading_list'       => __( 'Sites list' ),
+) );
+
 $id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0;
 
 if ( isset( $_GET['action'] ) ) {
@@ -102,7 +107,7 @@ if ( isset( $_GET['action'] ) ) {
                                        <input type="hidden" name="_wp_http_referer" value="<?php echo esc_attr( wp_get_referer() ); ?>" />
                                        <?php wp_nonce_field( $site_action . '_' . $id, '_wpnonce', false ); ?>
                                        <p><?php echo sprintf( $manage_actions[ $site_action ], $site_address ); ?></p>
-                                       <?php submit_button( __( 'Confirm' ), 'button' ); ?>
+                                       <?php submit_button( __( 'Confirm' ), 'primary' ); ?>
                                </form>
                        </div>
                <?php
index 2b9132f1c7fe078fd7330026623735b5240cae2d..958bd7e96314392a5e6a38499c18be1b7a7ffa61 100644 (file)
@@ -53,7 +53,7 @@ if ( $action ) {
                                wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
                                exit;
                        }
-                       foreach( (array) $themes as $theme )
+                       foreach ( (array) $themes as $theme )
                                $allowed_themes[ $theme ] = true;
                        update_site_option( 'allowedthemes', $allowed_themes );
                        wp_safe_redirect( add_query_arg( 'enabled', count( $themes ), $referer ) );
@@ -65,7 +65,7 @@ if ( $action ) {
                                wp_safe_redirect( add_query_arg( 'error', 'none', $referer ) );
                                exit;
                        }
-                       foreach( (array) $themes as $theme )
+                       foreach ( (array) $themes as $theme )
                                unset( $allowed_themes[ $theme ] );
                        update_site_option( 'allowedthemes', $allowed_themes );
                        wp_safe_redirect( add_query_arg( 'disabled', count( $themes ), $referer ) );
@@ -251,6 +251,12 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_views'      => __( 'Filter themes list' ),
+       'heading_pagination' => __( 'Themes list navigation' ),
+       'heading_list'       => __( 'Themes list' ),
+) );
+
 $title = __('Themes');
 $parent_file = 'themes.php';
 
index 60d8d8951e6b177b419fa832e39f50185a279e5b..c885a8488911f399e2723ba0f950813585539ec3 100644 (file)
@@ -111,12 +111,12 @@ switch ( $action ) {
        default:
                if ( get_site_option( 'wpmu_upgrade_site' ) != $GLOBALS['wp_db_version'] ) :
                ?>
-               <h3><?php _e( 'Database Upgrade Required' ); ?></h3>
+               <h2><?php _e( 'Database Update Required' ); ?></h2>
                <p><?php _e( 'WordPress has been updated! Before we send you on your way, we need to individually upgrade the sites in your network.' ); ?></p>
                <?php endif; ?>
 
-               <p><?php _e( 'The database upgrade process may take a little while, so please be patient.' ); ?></p>
-               <p><a class="button" href="upgrade.php?action=upgrade"><?php _e( 'Upgrade Network' ); ?></a></p>
+               <p><?php _e( 'The database update process may take a little while, so please be patient.' ); ?></p>
+               <p><a class="button button-primary" href="upgrade.php?action=upgrade"><?php _e( 'Upgrade Network' ); ?></a></p>
                <?php
                /**
                 * Fires before the footer on the network upgrade screen.
index 775e754b2f3aca1c5d330c379053acfe1989ee9e..24d38027ed0cbbe21da3f1ac7a69fc36475f2a4a 100644 (file)
@@ -51,7 +51,14 @@ if ( isset($_REQUEST['action']) && 'add-user' == $_REQUEST['action'] ) {
                if ( ! $user_id ) {
                        $add_user_errors = new WP_Error( 'add_user_fail', __( 'Cannot add user.' ) );
                } else {
-                       wp_new_user_notification( $user_id, null, 'both' );
+                       /**
+                         * Fires after a new user has been created via the network user-new.php page.
+                         *
+                         * @since 4.4.0
+                         *
+                         * @param int $user_id ID of the newly created user.
+                         */
+                       do_action( 'network_user_new_created_user', $user_id );
                        wp_redirect( add_query_arg( array('update' => 'added'), 'user-new.php' ) );
                        exit;
                }
@@ -89,7 +96,7 @@ if ( isset( $add_user_errors ) && is_wp_error( $add_user_errors ) ) { ?>
        <table class="form-table">
                <tr class="form-field form-required">
                        <th scope="row"><label for="username"><?php _e( 'Username' ) ?></label></th>
-                       <td><input type="text" class="regular-text" name="user[username]" id="username" autocapitalize="none" autocorrect="off" /></td>
+                       <td><input type="text" class="regular-text" name="user[username]" id="username" autocapitalize="none" autocorrect="off" maxlength="60" /></td>
                </tr>
                <tr class="form-field form-required">
                        <th scope="row"><label for="email"><?php _e( 'Email' ) ?></label></th>
index effd258cade6ca57b57d5cab2ee38fb31b3f2db2..f55ea6ccab16a328ba7a9adba7d1c7c6c08bd3a9 100644 (file)
@@ -16,115 +16,6 @@ if ( ! is_multisite() )
 if ( ! current_user_can( 'manage_network_users' ) )
        wp_die( __( 'You do not have permission to access this page.' ), 403 );
 
-/**
- *
- * @param array $users
- */
-function confirm_delete_users( $users ) {
-       $current_user = wp_get_current_user();
-       if ( ! is_array( $users ) || empty( $users ) ) {
-               return false;
-       }
-       ?>
-       <h1><?php esc_html_e( 'Users' ); ?></h1>
-
-       <?php if ( 1 == count( $users ) ) : ?>
-               <p><?php _e( 'You have chosen to delete the user from all networks and sites.' ); ?></p>
-       <?php else : ?>
-               <p><?php _e( 'You have chosen to delete the following users from all networks and sites.' ); ?></p>
-       <?php endif; ?>
-
-       <form action="users.php?action=dodelete" method="post">
-       <input type="hidden" name="dodelete" />
-       <?php
-       wp_nonce_field( 'ms-users-delete' );
-       $site_admins = get_super_admins();
-       $admin_out = '<option value="' . esc_attr( $current_user->ID ) . '">' . $current_user->user_login . '</option>'; ?>
-       <table class="form-table">
-       <?php foreach ( ( $allusers = (array) $_POST['allusers'] ) as $user_id ) {
-               if ( $user_id != '' && $user_id != '0' ) {
-                       $delete_user = get_userdata( $user_id );
-
-                       if ( ! current_user_can( 'delete_user', $delete_user->ID ) ) {
-                               wp_die( sprintf( __( 'Warning! User %s cannot be deleted.' ), $delete_user->user_login ) );
-                       }
-
-                       if ( in_array( $delete_user->user_login, $site_admins ) ) {
-                               wp_die( sprintf( __( 'Warning! User cannot be deleted. The user %s is a network administrator.' ), '<em>' . $delete_user->user_login . '</em>' ) );
-                       }
-                       ?>
-                       <tr>
-                               <th scope="row"><?php echo $delete_user->user_login; ?>
-                                       <?php echo '<input type="hidden" name="user[]" value="' . esc_attr( $user_id ) . '" />' . "\n"; ?>
-                               </th>
-                       <?php $blogs = get_blogs_of_user( $user_id, true );
-
-                       if ( ! empty( $blogs ) ) {
-                               ?>
-                               <td><fieldset><p><legend><?php printf(
-                                       /* translators: user login */
-                                       __( 'What should be done with content owned by %s?' ),
-                                       '<em>' . $delete_user->user_login . '</em>'
-                               ); ?></legend></p>
-                               <?php
-                               foreach ( (array) $blogs as $key => $details ) {
-                                       $blog_users = get_users( array( 'blog_id' => $details->userblog_id, 'fields' => array( 'ID', 'user_login' ) ) );
-                                       if ( is_array( $blog_users ) && !empty( $blog_users ) ) {
-                                               $user_site = "<a href='" . esc_url( get_home_url( $details->userblog_id ) ) . "'>{$details->blogname}</a>";
-                                               $user_dropdown = '<label for="reassign_user" class="screen-reader-text">' . __( 'Select a user' ) . '</label>';
-                                               $user_dropdown .= "<select name='blog[$user_id][$key]' id='reassign_user'>";
-                                               $user_list = '';
-                                               foreach ( $blog_users as $user ) {
-                                                       if ( ! in_array( $user->ID, $allusers ) ) {
-                                                               $user_list .= "<option value='{$user->ID}'>{$user->user_login}</option>";
-                                                       }
-                                               }
-                                               if ( '' == $user_list ) {
-                                                       $user_list = $admin_out;
-                                               }
-                                               $user_dropdown .= $user_list;
-                                               $user_dropdown .= "</select>\n";
-                                               ?>
-                                               <ul style="list-style:none;">
-                                                       <li><?php printf( __( 'Site: %s' ), $user_site ); ?></li>
-                                                       <li><label><input type="radio" id="delete_option0" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID ?>]" value="delete" checked="checked" />
-                                                       <?php _e( 'Delete all content.' ); ?></label></li>
-                                                       <li><label><input type="radio" id="delete_option1" name="delete[<?php echo $details->userblog_id . '][' . $delete_user->ID ?>]" value="reassign" />
-                                                       <?php _e( 'Attribute all content to:' ); ?></label>
-                                                       <?php echo $user_dropdown; ?></li>
-                                               </ul>
-                                               <?php
-                                       }
-                               }
-                               echo "</fieldset></td></tr>";
-                       } else {
-                               ?>
-                               <td><fieldset><p><legend><?php _e( 'User has no sites or content and will be deleted.' ); ?></legend></p>
-                       <?php } ?>
-                       </tr>
-               <?php
-               }
-       }
-
-       ?>
-       </table>
-       <?php
-       /** This action is documented in wp-admin/users.php */
-       do_action( 'delete_user_form', $current_user );
-
-       if ( 1 == count( $users ) ) : ?>
-               <p><?php _e( 'Once you hit &#8220;Confirm Deletion&#8221;, the user will be permanently removed.' ); ?></p>
-       <?php else : ?>
-               <p><?php _e( 'Once you hit &#8220;Confirm Deletion&#8221;, these users will be permanently removed.' ); ?></p>
-       <?php endif;
-
-       submit_button( __('Confirm Deletion'), 'delete' );
-       ?>
-       </form>
-       <?php
-       return true;
-}
-
 if ( isset( $_GET['action'] ) ) {
        /** This action is documented in wp-admin/network/edit.php */
        do_action( 'wpmuadminedit' );
@@ -232,7 +123,7 @@ if ( isset( $_GET['action'] ) ) {
                        }
                        $i = 0;
                        if ( is_array( $_POST['user'] ) && ! empty( $_POST['user'] ) )
-                               foreach( $_POST['user'] as $id ) {
+                               foreach ( $_POST['user'] as $id ) {
                                        if ( ! current_user_can( 'delete_user', $id ) )
                                                continue;
                                        wpmu_delete_user( $id );
@@ -281,6 +172,12 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="https://wordpress.org/support/forum/multisite/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_views'      => __( 'Filter users list' ),
+       'heading_pagination' => __( 'Users list navigation' ),
+       'heading_list'       => __( 'Users list' ),
+) );
+
 require_once( ABSPATH . 'wp-admin/admin-header.php' );
 
 if ( isset( $_REQUEST['updated'] ) && $_REQUEST['updated'] == 'true' && ! empty( $_REQUEST['action'] ) ) {
index 2ddaaac3306cc08ba4c0c9b297d1a411b67e1ac8..3d59195fd42a05c27bc8669fb1058ae688b27099 100644 (file)
@@ -14,24 +14,6 @@ if ( ! current_user_can( 'manage_options' ) )
 $title = __('Discussion Settings');
 $parent_file = 'options-general.php';
 
-/**
- * Output JavaScript to toggle display of additional settings if avatars are disabled.
- *
- * @since 4.2.0
- */
-function options_discussion_add_js() {
-?>
-       <script>
-       (function($){
-               var parent = $( '#show_avatars' ),
-                       children = $( '.avatar-settings' );
-               parent.change(function(){
-                       children.toggleClass( 'hide-if-js', ! this.checked );
-               });
-       })(jQuery);
-       </script>
-<?php
-}
 add_action( 'admin_print_footer_scripts', 'options_discussion_add_js' );
 
 get_current_screen()->add_help_tab( array(
@@ -78,7 +60,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 <tr>
 <th scope="row"><?php _e('Other comment settings'); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Other comment settings'); ?></span></legend>
-<label for="require_name_email"><input type="checkbox" name="require_name_email" id="require_name_email" value="1" <?php checked('1', get_option('require_name_email')); ?> /> <?php _e('Comment author must fill out name and e-mail'); ?></label>
+<label for="require_name_email"><input type="checkbox" name="require_name_email" id="require_name_email" value="1" <?php checked('1', get_option('require_name_email')); ?> /> <?php _e('Comment author must fill out name and email'); ?></label>
 <br />
 <label for="comment_registration">
 <input name="comment_registration" type="checkbox" id="comment_registration" value="1" <?php checked('1', get_option('comment_registration')); ?> />
@@ -117,9 +99,8 @@ printf( __('Enable threaded (nested) comments %s levels deep'), $thread_comments
 ?></label>
 <br />
 <label for="page_comments">
-<input name="page_comments" type="checkbox" id="page_comments" value="1" <?php checked('1', get_option('page_comments')); ?> />
+<input name="page_comments" type="checkbox" id="page_comments" value="1" <?php checked( '1', get_option( 'page_comments' ) ); ?> />
 <?php
-
 $default_comments_page = '</label><label for="default_comments_page"><select name="default_comments_page" id="default_comments_page"><option value="newest"';
 if ( 'newest' == get_option('default_comments_page') ) $default_comments_page .= ' selected="selected"';
 $default_comments_page .= '>' . __('last') . '</option><option value="oldest"';
@@ -144,8 +125,8 @@ printf( __('Comments should be displayed with the %s comments at the top of each
 </fieldset></td>
 </tr>
 <tr>
-<th scope="row"><?php _e('E-mail me whenever'); ?></th>
-<td><fieldset><legend class="screen-reader-text"><span><?php _e('E-mail me whenever'); ?></span></legend>
+<th scope="row"><?php _e('Email me whenever'); ?></th>
+<td><fieldset><legend class="screen-reader-text"><span><?php _e('Email me whenever'); ?></span></legend>
 <label for="comments_notify">
 <input name="comments_notify" type="checkbox" id="comments_notify" value="1" <?php checked('1', get_option('comments_notify')); ?> />
 <?php _e('Anyone posts a comment'); ?> </label>
@@ -170,7 +151,7 @@ printf( __('Comments should be displayed with the %s comments at the top of each
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Comment Moderation'); ?></span></legend>
 <p><label for="comment_max_links"><?php printf(__('Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)'), '<input name="comment_max_links" type="number" step="1" min="0" id="comment_max_links" value="' . esc_attr(get_option('comment_max_links')) . '" class="small-text" />' ); ?></label></p>
 
-<p><label for="moderation_keys"><?php _e('When a comment contains any of these words in its content, name, URL, e-mail, or IP, it will be held in the <a href="edit-comments.php?comment_status=moderated">moderation queue</a>. One word or IP per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;.'); ?></label></p>
+<p><label for="moderation_keys"><?php _e('When a comment contains any of these words in its content, name, URL, email, or IP, it will be held in the <a href="edit-comments.php?comment_status=moderated">moderation queue</a>. One word or IP per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;.'); ?></label></p>
 <p>
 <textarea name="moderation_keys" rows="10" cols="50" id="moderation_keys" class="large-text code"><?php echo esc_textarea( get_option( 'moderation_keys' ) ); ?></textarea>
 </p>
@@ -179,7 +160,7 @@ printf( __('Comments should be displayed with the %s comments at the top of each
 <tr>
 <th scope="row"><?php _e('Comment Blacklist'); ?></th>
 <td><fieldset><legend class="screen-reader-text"><span><?php _e('Comment Blacklist'); ?></span></legend>
-<p><label for="blacklist_keys"><?php _e('When a comment contains any of these words in its content, name, URL, e-mail, or IP, it will be marked as spam. One word or IP per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;.'); ?></label></p>
+<p><label for="blacklist_keys"><?php _e('When a comment contains any of these words in its content, name, URL, email, or IP, it will be put in the trash. One word or IP per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;.'); ?></label></p>
 <p>
 <textarea name="blacklist_keys" rows="10" cols="50" id="blacklist_keys" class="large-text code"><?php echo esc_textarea( get_option( 'blacklist_keys' ) ); ?></textarea>
 </p>
@@ -188,7 +169,7 @@ printf( __('Comments should be displayed with the %s comments at the top of each
 <?php do_settings_fields('discussion', 'default'); ?>
 </table>
 
-<h3 class="title"><?php _e('Avatars'); ?></h3>
+<h2 class="title"><?php _e('Avatars'); ?></h2>
 
 <p><?php _e('An avatar is an image that follows you from weblog to weblog appearing beside your name when you comment on avatar enabled sites. Here you can enable the display of avatars for people who comment on your site.'); ?></p>
 
@@ -235,7 +216,7 @@ endforeach;
 <th scope="row"><?php _e('Default Avatar'); ?></th>
 <td class="defaultavatarpicker"><fieldset><legend class="screen-reader-text"><span><?php _e('Default Avatar'); ?></span></legend>
 
-<?php _e('For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their e-mail address.'); ?><br />
+<?php _e('For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their email address.'); ?><br />
 
 <?php
 $avatar_defaults = array(
index 7f2a14ea4f25b0eb07cd8d1104878ac71cb8b8dd..220b07e80c1aa7ce0bf07586fbf607f47ceba553 100644 (file)
@@ -20,65 +20,6 @@ $parent_file = 'options-general.php';
 /* translators: date and time format for exact current time, mainly about timezones, see http://php.net/date */
 $timezone_format = _x('Y-m-d H:i:s', 'timezone date format');
 
-/**
- * Display JavaScript on the page.
- *
- * @since 3.5.0
- */
-function options_general_add_js() {
-?>
-<script type="text/javascript">
-       jQuery(document).ready(function($){
-               var $siteName = $( '#wp-admin-bar-site-name' ).children( 'a' ).first(),
-                       homeURL = ( <?php echo wp_json_encode( get_home_url() ); ?> || '' ).replace( /^(https?:\/\/)?(www\.)?/, '' );
-
-               $( '#blogname' ).on( 'input', function() {
-                       var title = $.trim( $( this ).val() ) || homeURL;
-
-                       // Truncate to 40 characters.
-                       if ( 40 < title.length ) {
-                               title = title.substring( 0, 40 ) + '\u2026';
-                       }
-
-                       $siteName.text( title );
-               });
-
-               $("input[name='date_format']").click(function(){
-                       if ( "date_format_custom_radio" != $(this).attr("id") )
-                               $( "input[name='date_format_custom']" ).val( $( this ).val() ).siblings( '.example' ).text( $( this ).parent( 'label' ).text() );
-               });
-               $("input[name='date_format_custom']").focus(function(){
-                       $( '#date_format_custom_radio' ).prop( 'checked', true );
-               });
-
-               $("input[name='time_format']").click(function(){
-                       if ( "time_format_custom_radio" != $(this).attr("id") )
-                               $( "input[name='time_format_custom']" ).val( $( this ).val() ).siblings( '.example' ).text( $( this ).parent( 'label' ).text() );
-               });
-               $("input[name='time_format_custom']").focus(function(){
-                       $( '#time_format_custom_radio' ).prop( 'checked', true );
-               });
-               $("input[name='date_format_custom'], input[name='time_format_custom']").change( function() {
-                       var format = $(this);
-                       format.siblings( '.spinner' ).addClass( 'is-active' );
-                       $.post(ajaxurl, {
-                                       action: 'date_format_custom' == format.attr('name') ? 'date_format' : 'time_format',
-                                       date : format.val()
-                               }, function(d) { format.siblings( '.spinner' ).removeClass( 'is-active' ); format.siblings('.example').text(d); } );
-               });
-
-               var languageSelect = $( '#WPLANG' );
-               $( 'form' ).submit( function() {
-                       // Don't show a spinner for English and installed languages,
-                       // as there is nothing to download.
-                       if ( ! languageSelect.find( 'option:selected' ).data( 'installed' ) ) {
-                               $( '#submit', this ).after( '<span class="spinner language-install-spinner" />' );
-                       }
-               });
-       });
-</script>
-<?php
-}
 add_action('admin_head', 'options_general_add_js');
 
 $options_help = '<p>' . __('The fields on this screen determine some of the basics of your site setup.') . '</p>' .
@@ -132,10 +73,12 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 <tr>
 <th scope="row"><label for="home"><?php _e('Site Address (URL)') ?></label></th>
 <td><input name="home" type="url" id="home" aria-describedby="home-description" value="<?php form_option( 'home' ); ?>"<?php disabled( defined( 'WP_HOME' ) ); ?> class="regular-text code<?php if ( defined( 'WP_HOME' ) ) echo ' disabled' ?>" />
+<?php if ( ! defined( 'WP_HOME' ) ) : ?> 
 <p class="description" id="home-description"><?php _e( 'Enter the address here if you <a href="https://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">want your site home page to be different from your WordPress installation directory.</a>' ); ?></p></td>
+<?php endif; ?>
 </tr>
 <tr>
-<th scope="row"><label for="admin_email"><?php _e('E-mail Address') ?> </label></th>
+<th scope="row"><label for="admin_email"><?php _e('Email Address') ?> </label></th>
 <td><input name="admin_email" type="email" id="admin_email" aria-describedby="admin-email-description" value="<?php form_option( 'admin_email' ); ?>" class="regular-text ltr" />
 <p class="description" id="admin-email-description"><?php _e( 'This address is used for admin purposes, like new user notification.' ) ?></p></td>
 </tr>
@@ -154,14 +97,20 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 </tr>
 <?php } else { ?>
 <tr>
-<th scope="row"><label for="new_admin_email"><?php _e('E-mail Address') ?> </label></th>
+<th scope="row"><label for="new_admin_email"><?php _e('Email Address') ?> </label></th>
 <td><input name="new_admin_email" type="email" id="new_admin_email" aria-describedby="new-admin-email-description" value="<?php form_option( 'admin_email' ); ?>" class="regular-text ltr" />
-<p class="description" id="new-admin-email-description"><?php _e( 'This address is used for admin purposes. If you change this we will send you an e-mail at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>' ) ?></p>
+<p class="description" id="new-admin-email-description"><?php _e( 'This address is used for admin purposes. If you change this we will send you an email at your new address to confirm it. <strong>The new address will not become active until confirmed.</strong>' ) ?></p>
 <?php
 $new_admin_email = get_option( 'new_admin_email' );
 if ( $new_admin_email && $new_admin_email != get_option('admin_email') ) : ?>
 <div class="updated inline">
-<p><?php printf( __('There is a pending change of the admin e-mail to <code>%1$s</code>. <a href="%2$s">Cancel</a>'), esc_html( $new_admin_email ), esc_url( admin_url( 'options.php?dismiss=new_admin_email' ) ) ); ?></p>
+<p><?php
+       /* translators: 1: new admin email, 2: Cancel link URL */
+       printf( __( 'There is a pending change of the admin email to %1$s. <a href="%2$s">Cancel</a>' ),
+               '<code>' . esc_html( $new_admin_email ) . '</code>',
+               esc_url( admin_url( 'options.php?dismiss=new_admin_email' ) )
+       );
+?></p>
 </div>
 <?php endif; ?>
 </td>
@@ -196,9 +145,19 @@ if ( empty($tzstring) ) { // Create a UTC+- zone if no timezone string exists
 <?php echo wp_timezone_choice($tzstring); ?>
 </select>
 
-       <span id="utc-time"><?php printf(__('<abbr title="Coordinated Universal Time">UTC</abbr> time is <code>%s</code>'), date_i18n($timezone_format, false, 'gmt')); ?></span>
+       <span id="utc-time"><?php
+               /* translators: %s: UTC time */
+               printf( __( '<abbr title="Coordinated Universal Time">UTC</abbr> time is %s' ),
+                       '<code>' . date_i18n( $timezone_format, false, 'gmt' ) . '</code>'
+               );
+       ?></span>
 <?php if ( get_option('timezone_string') || !empty($current_offset) ) : ?>
-       <span id="local-time"><?php printf(__('Local time is <code>%1$s</code>'), date_i18n($timezone_format)); ?></span>
+       <span id="local-time"><?php
+               /* translators: %s: local time */
+               printf( __( 'Local time is %s' ),
+                       '<code>' . date_i18n( $timezone_format ) . '</code>'
+               );
+       ?></span>
 <?php endif; ?>
 <p class="description" id="timezone-description"><?php _e( 'Choose a city in the same timezone as you.' ); ?></p>
 <?php if ($check_zone_info && $tzstring) : ?>
@@ -232,12 +191,19 @@ if ( empty($tzstring) ) { // Create a UTC+- zone if no timezone string exists
                if ( $found ) {
                        echo ' ';
                        $message = $tr['isdst'] ?
-                               __('Daylight saving time begins on: <code>%s</code>.') :
-                               __('Standard time begins on: <code>%s</code>.');
+                               /* translators: %s: date and time  */
+                               __( 'Daylight saving time begins on: %s.')  :
+                               /* translators: %s: date and time  */
+                               __( 'Standard time begins on: %s.' );
                        // Add the difference between the current offset and the new offset to ts to get the correct transition time from date_i18n().
-                       printf( $message, date_i18n(get_option('date_format') . ' ' . get_option('time_format'), $tr['ts'] + ($tz_offset - $tr['offset']) ) );
+                       printf( $message,
+                               '<code>' . date_i18n(
+                                       get_option( 'date_format' ) . ' ' . get_option( 'time_format' ),
+                                       $tr['ts'] + ( $tz_offset - $tr['offset'] )
+                               ) . '</code>'
+                       );
                } else {
-                       _e('This timezone does not observe daylight saving time.');
+                       _e( 'This timezone does not observe daylight saving time.' );
                }
        }
        // Set back to UTC.
index 21b96eddbc51d484b3647e41b7d0c0779c40d956..ec6287de15e94b9dbd7e91c9098287415b080c96 100644 (file)
@@ -45,7 +45,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
 <form action="options.php" method="post">
 <?php settings_fields('media'); ?>
 
-<h3 class="title"><?php _e('Image sizes') ?></h3>
+<h2 class="title"><?php _e('Image sizes') ?></h2>
 <p><?php _e( 'The sizes listed below determine the maximum dimensions in pixels to use when adding an image to the Media Library.' ); ?></p>
 
 <table class="form-table">
@@ -89,14 +89,14 @@ include( ABSPATH . 'wp-admin/admin-header.php' );
  * @global array $wp_settings
  */
 if ( isset( $GLOBALS['wp_settings']['media']['embeds'] ) ) : ?>
-<h3 class="title"><?php _e('Embeds') ?></h3>
+<h2 class="title"><?php _e('Embeds') ?></h2>
 <table class="form-table">
 <?php do_settings_fields( 'media', 'embeds' ); ?>
 </table>
 <?php endif; ?>
 
 <?php if ( !is_multisite() ) : ?>
-<h3 class="title"><?php _e('Uploading Files'); ?></h3>
+<h2 class="title"><?php _e('Uploading Files'); ?></h2>
 <table class="form-table">
 <?php
 // If upload_url_path is not the default (empty), and upload_path is not the default ('wp-content/uploads' or empty)
@@ -105,7 +105,10 @@ if ( get_option('upload_url_path') || ( get_option('upload_path') != 'wp-content
 <tr>
 <th scope="row"><label for="upload_path"><?php _e('Store uploads in this folder'); ?></label></th>
 <td><input name="upload_path" type="text" id="upload_path" value="<?php echo esc_attr(get_option('upload_path')); ?>" class="regular-text code" />
-<p class="description"><?php _e('Default is <code>wp-content/uploads</code>'); ?></p>
+<p class="description"><?php
+       /* translators: %s: wp-content/uploads */
+       printf( __( 'Default is %s' ), '<code>wp-content/uploads</code>' );
+?></p>
 </td>
 </tr>
 
index b1f84cc4ac4e9e2ab1e69fbcabb46d00fd58f5da..4ec1c1b269013e476c7694ad8ec61fc184f0c0c4 100644 (file)
@@ -19,15 +19,15 @@ get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
        'content' => '<p>' . __('Permalinks are the permanent URLs to your individual pages and blog posts, as well as your category and tag archives. A permalink is the web address used to link to your content. The URL to each post should be permanent, and never change &#8212; hence the name permalink.') . '</p>' .
-               '<p>' . __('This screen allows you to choose your default permalink structure. You can choose from common settings or create custom URL structures.') . '</p>' .
+               '<p>' . __( 'This screen allows you to choose your permalink structure. You can choose from common settings or create custom URL structures.' ) . '</p>' .
                '<p>' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '</p>',
 ) );
 
 get_current_screen()->add_help_tab( array(
-       'id'      => 'common-settings',
-       'title'   => __('Common Settings'),
-       'content' => '<p>' . __('Many people choose to use &#8220;pretty permalinks,&#8221; URLs that contain useful information such as the post title rather than generic post ID numbers. You can choose from any of the permalink formats under Common Settings, or can craft your own if you select Custom Structure.') . '</p>' .
-               '<p>' . __('If you pick an option other than Default, your general URL path with structure tags, terms surrounded by <code>%</code>, will also appear in the custom structure field and your path can be further modified there.') . '</p>' .
+       'id'      => 'permalink-settings',
+       'title'   => __('Permalink Settings'),
+       'content' => '<p>' . __( 'Permalinks can contain useful information, such as the post date, title, or other elements. You can choose from any of the suggested permalink formats, or you can craft your own if you select Custom Structure.' ) . '</p>' .
+               '<p>' . __( 'If you pick an option other than Plain, your general URL path with structure tags (terms surrounded by <code>%</code>) will also appear in the custom structure field and your path can be further modified there.' ) . '</p>' .
                '<p>' . __('When you assign multiple categories or tags to a post, only one can show up in the permalink: the lowest numbered category. This applies if your custom structure includes <code>%category%</code> or <code>%tag%</code>.') . '</p>' .
                '<p>' . __('You must click the Save Changes button at the bottom of the screen for new settings to take effect.') . '</p>',
 ) );
@@ -46,37 +46,25 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
-/**
- * Display JavaScript on the page.
- *
- * @since 3.5.0
- */
-function options_permalink_add_js() {
-       ?>
-<script type="text/javascript">
-jQuery(document).ready(function() {
-       jQuery('.permalink-structure input:radio').change(function() {
-               if ( 'custom' == this.value )
-                       return;
-               jQuery('#permalink_structure').val( this.value );
-       });
-       jQuery('#permalink_structure').focus(function() {
-               jQuery("#custom_selection").attr('checked', 'checked');
-       });
-});
-</script>
-<?php
-}
 add_filter('admin_head', 'options_permalink_add_js');
 
 $home_path = get_home_path();
 $iis7_permalinks = iis7_supports_permalinks();
+$permalink_structure = get_option( 'permalink_structure' );
 
 $prefix = $blog_prefix = '';
 if ( ! got_url_rewrite() )
        $prefix = '/index.php';
-if ( is_multisite() && !is_subdomain_install() && is_main_site() )
+
+/**
+ * In a subdirectory configuration of multisite, the `/blog` prefix is used by
+ * default on the main site to avoid collisions with other sites created on that
+ * network. If the `permalink_structure` option has been changed to remove this
+ * base prefix, WordPress core can no longer account for the possible collision.
+ */
+if ( is_multisite() && ! is_subdomain_install() && is_main_site() && 0 === strpos( $permalink_structure, '/blog/' ) ) {
        $blog_prefix = '/blog';
+}
 
 if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) {
        check_admin_referer('update-permalink');
@@ -115,7 +103,6 @@ if ( isset($_POST['permalink_structure']) || isset($_POST['category_base']) ) {
        exit;
 }
 
-$permalink_structure = get_option( 'permalink_structure' );
 $category_base       = get_option( 'category_base' );
 $tag_base            = get_option( 'tag_base' );
 $update_required     = false;
@@ -180,10 +167,10 @@ if ( ! is_multisite() ) {
 <form name="form" action="options-permalink.php" method="post">
 <?php wp_nonce_field('update-permalink') ?>
 
-  <p><?php _e('By default WordPress uses web <abbr title="Universal Resource Locator">URL</abbr>s which have question marks and lots of numbers in them; however, WordPress offers you the ability to create a custom URL structure for your permalinks and archives. This can improve the aesthetics, usability, and forward-compatibility of your links. A <a href="https://codex.wordpress.org/Using_Permalinks">number of tags are available</a>, and here are some examples to get you started.'); ?></p>
+  <p><?php _e( 'WordPress offers you the ability to create a custom URL structure for your permalinks and archives. Custom URL structures can improve the aesthetics, usability, and forward-compatibility of your links. A <a href="https://codex.wordpress.org/Using_Permalinks">number of tags are available</a>, and here are some examples to get you started.' ); ?></p>
 
 <?php
-if ( is_multisite() && !is_subdomain_install() && is_main_site() ) {
+if ( is_multisite() && ! is_subdomain_install() && is_main_site() && 0 === strpos( $permalink_structure, '/blog/' ) ) {
        $permalink_structure = preg_replace( '|^/?blog|', '', $permalink_structure );
        $category_base = preg_replace( '|^/?blog|', '', $category_base );
        $tag_base = preg_replace( '|^/?blog|', '', $tag_base );
@@ -197,10 +184,10 @@ $structures = array(
        4 => $prefix . '/%postname%/',
 );
 ?>
-<h3 class="title"><?php _e('Common Settings'); ?></h3>
+<h2 class="title"><?php _e('Common Settings'); ?></h2>
 <table class="form-table permalink-structure">
        <tr>
-               <th><label><input name="selection" type="radio" value="" <?php checked('', $permalink_structure); ?> /> <?php _e('Default'); ?></label></th>
+               <th><label><input name="selection" type="radio" value="" <?php checked('', $permalink_structure); ?> /> <?php _e( 'Plain' ); ?></label></th>
                <td><code><?php echo get_option('home'); ?>/?p=123</code></td>
        </tr>
        <tr>
@@ -232,7 +219,7 @@ $structures = array(
        </tr>
 </table>
 
-<h3 class="title"><?php _e('Optional'); ?></h3>
+<h2 class="title"><?php _e('Optional'); ?></h2>
 <p><?php
 /* translators: %s is a placeholder that must come at the start of the URL. */
 printf( __('If you like, you may enter custom structures for your category and tag <abbr title="Universal Resource Locator">URL</abbr>s here. For example, using <code>topics</code> as your category base would make your category links like <code>%s/topics/uncategorized/</code>. If you leave these blank the defaults will be used.'), get_option('home') . $blog_prefix . $prefix ); ?></p>
@@ -272,7 +259,9 @@ printf( __('If you like, you may enter custom structures for your category and t
 <p><?php _e('If you temporarily make your site&#8217;s root directory writable for us to generate the <code>web.config</code> file automatically, do not forget to revert the permissions after the file has been created.') ?></p>
                <?php endif; ?>
        <?php endif; ?>
-<?php elseif ( ! $is_nginx ) :
+<?php elseif ( $is_nginx ) : ?>
+       <p><?php _e( '<a href="https://codex.wordpress.org/Nginx">Documentation on Nginx configuration</a>.' ); ?></p>
+<?php else:
        if ( $permalink_structure && ! $usingpi && ! $writable && $update_required ) : ?>
 <p><?php _e('If your <code>.htaccess</code> file were <a href="https://codex.wordpress.org/Changing_File_Permissions">writable</a>, we could do this automatically, but it isn&#8217;t so these are the mod_rewrite rules you should have in your <code>.htaccess</code> file. Click in the field and press <kbd>CTRL + a</kbd> to select all.') ?></p>
 <form action="options-permalink.php" method="post">
index 9341e7fcf42119434956a32dcdc2e21dc13f2d98..d0bc190f78b12370eb85af0ddf0d8137af8a5e82 100644 (file)
@@ -15,39 +15,8 @@ if ( ! current_user_can( 'manage_options' ) )
 $title = __( 'Reading Settings' );
 $parent_file = 'options-general.php';
 
-/**
- * Display JavaScript on the page.
- *
- * @since 3.5.0
- */
-function options_reading_add_js() {
-?>
-<script type="text/javascript">
-       jQuery(document).ready(function($){
-               var section = $('#front-static-pages'),
-                       staticPage = section.find('input:radio[value="page"]'),
-                       selects = section.find('select'),
-                       check_disabled = function(){
-                               selects.prop( 'disabled', ! staticPage.prop('checked') );
-                       };
-               check_disabled();
-               section.find('input:radio').change(check_disabled);
-       });
-</script>
-<?php
-}
 add_action('admin_head', 'options_reading_add_js');
 
-/**
- * Render the blog charset setting.
- *
- * @since 3.5.0
- */
-function options_reading_blog_charset() {
-       echo '<input name="blog_charset" type="text" id="blog_charset" value="' . esc_attr( get_option( 'blog_charset' ) ) . '" class="regular-text" />';
-       echo '<p class="description">' . __( 'The <a href="https://codex.wordpress.org/Glossary#Character_set">character encoding</a> of your site (UTF-8 is recommended)' ) . '</p>';
-}
-
 get_current_screen()->add_help_tab( array(
        'id'      => 'overview',
        'title'   => __('Overview'),
index ba7eeca78dbbd4508b356142d44d0d2c21cc7adb..9fb2db08d6a33f917b90e27c4dbfe219fa9a6d88 100644 (file)
@@ -27,7 +27,7 @@ if ( apply_filters( 'enable_post_by_email_configuration', true ) ) {
        get_current_screen()->add_help_tab( array(
                'id'      => 'options-postemail',
                'title'   => __( 'Post Via Email' ),
-               'content' => '<p>' . __( 'Post via email settings allow you to send your WordPress install an email with the content of your post. You must set up a secret e-mail account with POP3 access to use this, and any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret.' ) . '</p>',
+               'content' => '<p>' . __( 'Post via email settings allow you to send your WordPress install an email with the content of your post. You must set up a secret email account with POP3 access to use this, and any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret.' ) . '</p>',
        ) );
 }
 
@@ -113,8 +113,8 @@ do_settings_fields('writing', 'remote_publishing'); // A deprecated section.
 /** This filter is documented in wp-admin/options.php */
 if ( apply_filters( 'enable_post_by_email_configuration', true ) ) {
 ?>
-<h3 class="title"><?php _e('Post via e-mail') ?></h3>
-<p><?php printf(__('To post to WordPress by e-mail you must set up a secret e-mail account with POP3 access. Any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret. Here are three random strings you could use: <kbd>%s</kbd>, <kbd>%s</kbd>, <kbd>%s</kbd>.'), wp_generate_password(8, false), wp_generate_password(8, false), wp_generate_password(8, false)) ?></p>
+<h2 class="title"><?php _e( 'Post via email' ) ?></h2>
+<p><?php printf(__('To post to WordPress by email you must set up a secret email account with POP3 access. Any mail received at this address will be posted, so it&#8217;s a good idea to keep this address very secret. Here are three random strings you could use: <kbd>%s</kbd>, <kbd>%s</kbd>, <kbd>%s</kbd>.'), wp_generate_password(8, false), wp_generate_password(8, false), wp_generate_password(8, false)) ?></p>
 
 <table class="form-table">
 <tr>
@@ -156,7 +156,7 @@ wp_dropdown_categories(array('hide_empty' => 0, 'name' => 'default_email_categor
  */
 if ( apply_filters( 'enable_update_services_configuration', true ) ) {
 ?>
-<h3 class="title"><?php _e('Update Services') ?></h3>
+<h2 class="title"><?php _e( 'Update Services' ) ?></h2>
 
 <?php if ( 1 == get_option('blog_public') ) : ?>
 
index 752d7b46ffe21a8003271b4eda405746646ceca6..e2bfa90f34c4fead4e284b610594aada1b2ae1e2 100644 (file)
@@ -44,8 +44,13 @@ if ( empty($option_page) ) {
        $capability = apply_filters( "option_page_capability_{$option_page}", $capability );
 }
 
-if ( !current_user_can( $capability ) )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! current_user_can( $capability ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to manage these items.' ) . '</p>',
+               403
+       );
+}
 
 // Handle admin email change requests
 if ( is_multisite() ) {
@@ -68,13 +73,18 @@ if ( is_multisite() ) {
        }
 }
 
-if ( is_multisite() && !is_super_admin() && 'update' != $action )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( is_multisite() && ! is_super_admin() && 'update' != $action ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to delete these items.' ) . '</p>',
+               403
+       );
+}
 
 $whitelist_options = array(
        'general' => array( 'blogname', 'blogdescription', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'timezone_string', 'WPLANG' ),
        'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ),
-       'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type' ),
+       'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'medium_large_size_w', 'medium_large_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type' ),
        'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'show_on_front', 'page_on_front', 'page_for_posts', 'blog_public' ),
        'writing' => array( 'default_category', 'default_email_category', 'default_link_category', 'default_post_format' )
 );
@@ -184,8 +194,15 @@ if ( 'update' == $action ) {
 
        if ( $options ) {
                foreach ( $options as $option ) {
-                       if ( $unregistered )
-                               _deprecated_argument( 'options.php', '2.7', sprintf( __( 'The <code>%1$s</code> setting is unregistered. Unregistered settings are deprecated. See https://codex.wordpress.org/Settings_API' ), $option, $option_page ) );
+                       if ( $unregistered ) {
+                               _deprecated_argument( 'options.php', '2.7',
+                                       sprintf(
+                                               /* translators: %s: the option/setting */
+                                               __( 'The %s setting is unregistered. Unregistered settings are deprecated. See https://codex.wordpress.org/Settings_API' ),
+                                               '<code>' . $option . '</code>'
+                                       )
+                               );
+                       }
 
                        $option = trim( $option );
                        $value = null;
index 6ffadf69c16b5da627bce8b2d62c53a67ce61538..1558164096591b1cb6fce601b35e5308d5d91242 100644 (file)
@@ -71,8 +71,11 @@ case 'update':
                        if ( is_plugin_active($file) )
                                deactivate_plugins($file, true);
 
-                       if ( ! is_network_admin() )
+                       if ( ! is_network_admin() ) {
                                update_option( 'recently_activated', array( $file => time() ) + (array) get_option( 'recently_activated' ) );
+                       } else {
+                               update_site_option( 'recently_activated', array( $file => time() ) + (array) get_site_option( 'recently_activated' ) );
+                       }
 
                        wp_redirect(add_query_arg('_wpnonce', wp_create_nonce('edit-plugin-test_' . $file), "plugin-editor.php?file=$file&liveupdate=1&scrollto=$scrollto&networkwide=" . $network_wide));
                        exit;
@@ -168,8 +171,14 @@ default:
 <?php elseif (isset($_GET['phperror'])) : ?>
  <div id="message" class="updated"><p><?php _e('This plugin has been deactivated because your changes resulted in a <strong>fatal error</strong>.') ?></p>
        <?php
-               if ( wp_verify_nonce($_GET['_error_nonce'], 'plugin-activation-error_' . $file) ) { ?>
-       <iframe style="border:0" width="100%" height="70px" src="<?php bloginfo('wpurl'); ?>/wp-admin/plugins.php?action=error_scrape&amp;plugin=<?php echo esc_attr($file); ?>&amp;_wpnonce=<?php echo esc_attr($_GET['_error_nonce']); ?>"></iframe>
+               if ( wp_verify_nonce( $_GET['_error_nonce'], 'plugin-activation-error_' . $file ) ) {
+                       $iframe_url = add_query_arg( array(
+                               'action'   => 'error_scrape',
+                               'plugin'   => urlencode( $file ),
+                               '_wpnonce' => urlencode( $_GET['_error_nonce'] ),
+                       ), admin_url( 'plugins.php' ) );
+                       ?>
+       <iframe style="border:0" width="100%" height="70px" src="<?php echo esc_url( $iframe_url ); ?>"></iframe>
        <?php } ?>
 </div>
 <?php endif; ?>
@@ -179,16 +188,22 @@ default:
 <div class="fileedit-sub">
 <div class="alignleft">
 <big><?php
-       if ( is_plugin_active($plugin) ) {
-               if ( is_writeable($real_file) )
-                       echo sprintf(__('Editing <strong>%s</strong> (active)'), $file);
-               else
-                       echo sprintf(__('Browsing <strong>%s</strong> (active)'), $file);
+       if ( is_plugin_active( $plugin ) ) {
+               if ( is_writeable( $real_file ) ) {
+                       /* translators: %s: plugin file name */
+                       echo sprintf( __( 'Editing %s (active)' ), '<strong>' . $file . '</strong>' );
+               } else {
+                       /* translators: %s: plugin file name */
+                       echo sprintf( __( 'Browsing %s (active)' ), '<strong>' . $file . '</strong>' );
+               }
        } else {
-               if ( is_writeable($real_file) )
-                       echo sprintf(__('Editing <strong>%s</strong> (inactive)'), $file);
-               else
-                       echo sprintf(__('Browsing <strong>%s</strong> (inactive)'), $file);
+               if ( is_writeable( $real_file ) ) {
+                       /* translators: %s: plugin file name */
+                       echo sprintf( __( 'Editing %s (inactive)' ), '<strong>' . $file . '</strong>' );
+               } else {
+                       /* translators: %s: plugin file name */
+                       echo sprintf( __( 'Browsing %s (inactive)' ), '<strong>' . $file . '</strong>' );
+               }
        }
        ?></big>
 </div>
@@ -216,7 +231,7 @@ default:
 </div>
 
 <div id="templateside">
-       <h3><?php _e('Plugin Files'); ?></h3>
+       <h2><?php _e( 'Plugin Files' ); ?></h2>
 
        <ul>
 <?php
@@ -245,7 +260,7 @@ foreach ( $plugin_files as $plugin_file ) :
                <input type="hidden" name="scrollto" id="scrollto" value="<?php echo $scrollto; ?>" />
                </div>
                <?php if ( !empty( $docs_select ) ) : ?>
-               <div id="documentation" class="hide-if-no-js"><label for="docs-list"><?php _e('Documentation:') ?></label> <?php echo $docs_select ?> <input type="button" class="button" value="<?php esc_attr_e( 'Look Up' ) ?> " onclick="if ( '' != jQuery('#docs-list').val() ) { window.open( 'http://api.wordpress.org/core/handbook/1.0/?function=' + escape( jQuery( '#docs-list' ).val() ) + '&amp;locale=<?php echo urlencode( get_locale() ) ?>&amp;version=<?php echo urlencode( $wp_version ) ?>&amp;redirect=true'); }" /></div>
+               <div id="documentation" class="hide-if-no-js"><label for="docs-list"><?php _e('Documentation:') ?></label> <?php echo $docs_select ?> <input type="button" class="button" value="<?php esc_attr_e( 'Look Up' ) ?> " onclick="if ( '' != jQuery('#docs-list').val() ) { window.open( 'https://api.wordpress.org/core/handbook/1.0/?function=' + escape( jQuery( '#docs-list' ).val() ) + '&amp;locale=<?php echo urlencode( get_locale() ) ?>&amp;version=<?php echo urlencode( $wp_version ) ?>&amp;redirect=true'); }" /></div>
                <?php endif; ?>
 <?php if ( is_writeable($real_file) ) : ?>
        <?php if ( in_array( $file, (array) get_option( 'active_plugins', array() ) ) ) { ?>
index 770572efd7beedc15813bb6b0729bf9d45b632e6..c9f2b50fcba3b259f0d5ca49ddc35f202140379b 100644 (file)
@@ -88,6 +88,12 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_views'      => __( 'Filter plugins list' ),
+       'heading_pagination' => __( 'Plugins list navigation' ),
+       'heading_list'       => __( 'Plugins list' ),
+) );
+
 /**
  * WordPress Administration Template Header.
  */
index 75f2491705ce837da582f4e128440fa997772c35..93aec79d78590a8e8c0f9135d19f862af0e1fb87 100644 (file)
@@ -54,6 +54,10 @@ if ( $action ) {
                                $recent = (array) get_option( 'recently_activated' );
                                unset( $recent[ $plugin ] );
                                update_option( 'recently_activated', $recent );
+                       } else {
+                               $recent = (array) get_site_option( 'recently_activated' );
+                               unset( $recent[ $plugin ] );
+                               update_site_option( 'recently_activated', $recent );
                        }
 
                        if ( isset($_GET['from']) && 'import' == $_GET['from'] ) {
@@ -96,9 +100,18 @@ if ( $action ) {
 
                        if ( ! is_network_admin() ) {
                                $recent = (array) get_option('recently_activated' );
-                               foreach ( $plugins as $plugin )
-                                       unset( $recent[ $plugin ] );
+                       } else {
+                               $recent = (array) get_site_option('recently_activated' );
+                       }
+
+                       foreach ( $plugins as $plugin ) {
+                               unset( $recent[ $plugin ] );
+                       }
+
+                       if ( ! is_network_admin() ) {
                                update_option( 'recently_activated', $recent );
+                       } else {
+                               update_site_option( 'recently_activated', $recent );
                        }
 
                        wp_redirect( self_admin_url("plugins.php?activate-multi=true&plugin_status=$status&paged=$page&s=$s") );
@@ -148,13 +161,6 @@ if ( $action ) {
 
                        @ini_set('display_errors', true); //Ensure that Fatal errors are displayed.
                        // Go back to "sandbox" scope so we get the same errors as before
-                       /**
-                        * @param string $plugin
-                        */
-                       function plugin_sandbox_scrape( $plugin ) {
-                               wp_register_plugin_realpath( WP_PLUGIN_DIR . '/' . $plugin );
-                               include( WP_PLUGIN_DIR . '/' . $plugin );
-                       }
                        plugin_sandbox_scrape( $plugin );
                        /** This action is documented in wp-admin/includes/plugin.php */
                        do_action( "activate_{$plugin}" );
@@ -172,8 +178,13 @@ if ( $action ) {
                        }
 
                        deactivate_plugins( $plugin, false, is_network_admin() );
-                       if ( ! is_network_admin() )
+
+                       if ( ! is_network_admin() ) {
                                update_option( 'recently_activated', array( $plugin => time() ) + (array) get_option( 'recently_activated' ) );
+                       } else {
+                               update_site_option( 'recently_activated', array( $plugin => time() ) + (array) get_site_option( 'recently_activated' ) );
+                       }
+
                        if ( headers_sent() )
                                echo "<meta http-equiv='refresh' content='" . esc_attr( "0;url=plugins.php?deactivate=true&plugin_status=$status&paged=$page&s=$s" ) . "' />";
                        else
@@ -201,11 +212,15 @@ if ( $action ) {
 
                        deactivate_plugins( $plugins, false, is_network_admin() );
 
+                       $deactivated = array();
+                       foreach ( $plugins as $plugin ) {
+                               $deactivated[ $plugin ] = time();
+                       }
+
                        if ( ! is_network_admin() ) {
-                               $deactivated = array();
-                               foreach ( $plugins as $plugin )
-                                       $deactivated[ $plugin ] = time();
                                update_option( 'recently_activated', $deactivated + (array) get_option( 'recently_activated' ) );
+                       } else {
+                               update_site_option( 'recently_activated', $deactivated + (array) get_site_option( 'recently_activated' ) );
                        }
 
                        wp_redirect( self_admin_url("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page&s=$s") );
@@ -265,7 +280,7 @@ if ( $action ) {
 
                                                        // Get plugins list from that folder.
                                                        if ( $folder_plugins = get_plugins( '/' . $plugin_slug ) ) {
-                                                               foreach( $folder_plugins as $plugin_file => $data ) {
+                                                               foreach ( $folder_plugins as $plugin_file => $data ) {
                                                                        $plugin_info[ $plugin_file ] = _get_plugin_data_markup_translate( $plugin_file, $data );
                                                                        $plugin_info[ $plugin_file ]['is_uninstallable'] = is_uninstallable_plugin( $plugin );
                                                                        if ( ! $plugin_info[ $plugin_file ]['Network'] ) {
@@ -306,11 +321,11 @@ if ( $action ) {
                                                foreach ( $plugin_info as $plugin ) {
                                                        if ( $plugin['is_uninstallable'] ) {
                                                                /* translators: 1: plugin name, 2: plugin author */
-                                                               echo '<li>', sprintf( __( '<strong>%1$s</strong> by <em>%2$s</em> (will also <strong>delete its data</strong>)' ), esc_html($plugin['Name']), esc_html($plugin['AuthorName']) ), '</li>';
+                                                               echo '<li>', sprintf( __( '<strong>%1$s</strong> by <em>%2$s</em> (will also <strong>delete its data</strong>)' ), $plugin['Name'], $plugin['AuthorName'] ), '</li>';
                                                                $data_to_delete = true;
                                                        } else {
                                                                /* translators: 1: plugin name, 2: plugin author */
-                                                               echo '<li>', sprintf( __('<strong>%1$s</strong> by <em>%2$s</em>' ), esc_html($plugin['Name']), esc_html($plugin['AuthorName']) ), '</li>';
+                                                               echo '<li>', sprintf( __('<strong>%1$s</strong> by <em>%2$s</em>' ), $plugin['Name'], $plugin['AuthorName'] ), '</li>';
                                                        }
                                                }
                                                ?>
@@ -353,16 +368,22 @@ if ( $action ) {
                                <?php
                                require_once(ABSPATH . 'wp-admin/admin-footer.php');
                                exit;
-                       } //Endif verify-delete
-                       $delete_result = delete_plugins($plugins);
+                       } else {
+                               $plugins_to_delete = count( $plugins );
+                       } // endif verify-delete
+
+                       $delete_result = delete_plugins( $plugins );
 
                        set_transient('plugins_delete_result_' . $user_ID, $delete_result); //Store the result in a cache rather than a URL param due to object type & length
-                       wp_redirect( self_admin_url("plugins.php?deleted=true&plugin_status=$status&paged=$page&s=$s") );
+                       wp_redirect( self_admin_url("plugins.php?deleted=$plugins_to_delete&plugin_status=$status&paged=$page&s=$s") );
                        exit;
 
                case 'clear-recent-list':
-                       if ( ! is_network_admin() )
+                       if ( ! is_network_admin() ) {
                                update_option( 'recently_activated', array() );
+                       } else {
+                               update_site_option( 'recently_activated', array() );
+                       }
                        break;
        }
 }
@@ -379,14 +400,24 @@ get_current_screen()->add_help_tab( array(
 'title'                => __('Overview'),
 'content'      =>
        '<p>' . __('Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.') . '</p>' .
-       '<p>' . sprintf(__('You can find additional plugins for your site by using the <a href="%1$s">Plugin Browser/Installer</a> functionality or by browsing the <a href="%2$s" target="_blank">WordPress Plugin Directory</a> directly and installing new plugins manually. To manually install a plugin you generally just need to upload the plugin file into your <code>/wp-content/plugins</code> directory. Once a plugin has been installed, you can activate it here.'), 'plugin-install.php', 'https://wordpress.org/plugins/') . '</p>'
+       '<p>' . sprintf(
+               /* translators: 1: Plugin Browser/Installer URL, 2: WordPress Plugin Directory URL 3: local plugin directory */
+               __( 'You can find additional plugins for your site by using the <a href="%1$s">Plugin Browser/Installer</a> functionality or by browsing the <a href="%2$s" target="_blank">WordPress Plugin Directory</a> directly and installing new plugins manually. To manually install a plugin you generally just need to upload the plugin file into your %3$s directory. Once a plugin has been installed, you can activate it here.' ),
+               'plugin-install.php',
+               'https://wordpress.org/plugins/',
+               '<code>/wp-content/plugins</code>'
+       ) . '</p>'
 ) );
 get_current_screen()->add_help_tab( array(
 'id'           => 'compatibility-problems',
 'title'                => __('Troubleshooting'),
 'content'      =>
        '<p>' . __('Most of the time, plugins play nicely with the core of WordPress and with other plugins. Sometimes, though, a plugin&#8217;s code will get in the way of another plugin, causing compatibility issues. If your site starts doing strange things, this may be the problem. Try deactivating all your plugins and re-activating them in various combinations until you isolate which one(s) caused the issue.') . '</p>' .
-       '<p>' . sprintf( __('If something goes wrong with a plugin and you can&#8217;t use WordPress, delete or rename that file in the <code>%s</code> directory and it will be automatically deactivated.'), WP_PLUGIN_DIR) . '</p>'
+       '<p>' . sprintf(
+               /* translators: WP_PLUGIN_DIR constant value */
+               __( 'If something goes wrong with a plugin and you can&#8217;t use WordPress, delete or rename that file in the %s directory and it will be automatically deactivated.' ),
+               '<code>' . WP_PLUGIN_DIR . '</code>'
+       ) . '</p>'
 ) );
 
 get_current_screen()->set_help_sidebar(
@@ -395,15 +426,29 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_views'      => __( 'Filter plugins list' ),
+       'heading_pagination' => __( 'Plugins list navigation' ),
+       'heading_list'       => __( 'Plugins list' ),
+) );
+
 $title = __('Plugins');
 $parent_file = 'plugins.php';
 
 require_once(ABSPATH . 'wp-admin/admin-header.php');
 
 $invalid = validate_active_plugins();
-if ( !empty($invalid) )
-       foreach ( $invalid as $plugin_file => $error )
-               echo '<div id="message" class="error"><p>' . sprintf(__('The plugin <code>%s</code> has been <strong>deactivated</strong> due to an error: %s'), esc_html($plugin_file), $error->get_error_message()) . '</p></div>';
+if ( ! empty( $invalid ) ) {
+       foreach ( $invalid as $plugin_file => $error ) {
+               echo '<div id="message" class="error"><p>';
+               printf(
+                       /* translators: 1: plugin file 2: error message */
+                       __( 'The plugin %1$s has been <strong>deactivated</strong> due to an error: %2$s' ),
+                       '<code>' . esc_html( $plugin_file ) . '</code>',
+                       $error->get_error_message() );
+               echo '</p></div>';
+       }
+}
 ?>
 
 <?php if ( isset($_GET['error']) ) :
@@ -417,8 +462,14 @@ if ( !empty($invalid) )
        ?>
        <div id="message" class="error"><p><?php echo $errmsg; ?></p>
        <?php
-               if ( !isset( $_GET['main'] ) && !isset($_GET['charsout']) && wp_verify_nonce($_GET['_error_nonce'], 'plugin-activation-error_' . $plugin) ) { ?>
-       <iframe style="border:0" width="100%" height="70px" src="<?php echo 'plugins.php?action=error_scrape&amp;plugin=' . esc_attr($plugin) . '&amp;_wpnonce=' . esc_attr($_GET['_error_nonce']); ?>"></iframe>
+               if ( ! isset( $_GET['main'] ) && ! isset( $_GET['charsout'] ) && wp_verify_nonce( $_GET['_error_nonce'], 'plugin-activation-error_' . $plugin ) ) {
+                       $iframe_url = add_query_arg( array(
+                               'action'   => 'error_scrape',
+                               'plugin'   => urlencode( $plugin ),
+                               '_wpnonce' => urlencode( $_GET['_error_nonce'] ),
+                       ), admin_url( 'plugins.php' ) );
+               ?>
+               <iframe style="border:0" width="100%" height="70px" src="<?php echo esc_url( $iframe_url ); ?>"></iframe>
        <?php
                }
        ?>
@@ -431,7 +482,17 @@ if ( !empty($invalid) )
                if ( is_wp_error($delete_result) ) : ?>
                <div id="message" class="error notice is-dismissible"><p><?php printf( __('Plugin could not be deleted due to an error: %s'), $delete_result->get_error_message() ); ?></p></div>
                <?php else : ?>
-               <div id="message" class="updated notice is-dismissible"><p><?php _e('The selected plugins have been <strong>deleted</strong>.'); ?></p></div>
+               <div id="message" class="updated notice is-dismissible">
+                       <p>
+                               <?php
+                               if ( 1 == (int) $_GET['deleted'] ) {
+                                       _e( 'The selected plugin has been <strong>deleted</strong>.' );
+                               } else {
+                                       _e( 'The selected plugins have been <strong>deleted</strong>.' );
+                               }
+                               ?>
+                       </p>
+               </div>
                <?php endif; ?>
 <?php elseif ( isset($_GET['activate']) ) : ?>
        <div id="message" class="updated notice is-dismissible"><p><?php _e('Plugin <strong>activated</strong>.') ?></p></div>
@@ -442,7 +503,7 @@ if ( !empty($invalid) )
 <?php elseif (isset($_GET['deactivate-multi'])) : ?>
        <div id="message" class="updated notice is-dismissible"><p><?php _e('Selected plugins <strong>deactivated</strong>.'); ?></p></div>
 <?php elseif ( 'update-selected' == $action ) : ?>
-       <div id="message" class="updated notice is-dismissible"><p><?php _e('No out of date plugins were selected.'); ?></p></div>
+       <div id="message" class="updated notice is-dismissible"><p><?php _e('All selected plugins are up to date.'); ?></p></div>
 <?php endif; ?>
 
 <div class="wrap">
index 74f81fba8974d6330ae8504280ddf3bb4635eae7..0c84608ba296993826c9180bb601633635fc1993 100644 (file)
@@ -54,8 +54,13 @@ $title = $post_type_object->labels->add_new_item;
 
 $editing = true;
 
-if ( ! current_user_can( $post_type_object->cap->edit_posts ) || ! current_user_can( $post_type_object->cap->create_posts ) )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! current_user_can( $post_type_object->cap->edit_posts ) || ! current_user_can( $post_type_object->cap->create_posts ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to create posts as this user.' ) . '</p>',
+               403
+       );
+}
 
 // Schedule auto-draft cleanup
 if ( ! wp_next_scheduled( 'wp_scheduled_auto_draft_delete' ) )
index 89bdc38ce0476ac79469b8921478eea8cd8745c4..5333b5f306bb4c653dea9b31bb80e169dd65ad35 100644 (file)
@@ -38,55 +38,6 @@ if ( $post ) {
        $post_type_object = get_post_type_object( $post_type );
 }
 
-/**
- * Redirect to previous page.
- *
- * @param int $post_id Optional. Post ID.
- */
-function redirect_post($post_id = '') {
-       if ( isset($_POST['save']) || isset($_POST['publish']) ) {
-               $status = get_post_status( $post_id );
-
-               if ( isset( $_POST['publish'] ) ) {
-                       switch ( $status ) {
-                               case 'pending':
-                                       $message = 8;
-                                       break;
-                               case 'future':
-                                       $message = 9;
-                                       break;
-                               default:
-                                       $message = 6;
-                       }
-               } else {
-                       $message = 'draft' == $status ? 10 : 1;
-               }
-
-               $location = add_query_arg( 'message', $message, get_edit_post_link( $post_id, 'url' ) );
-       } elseif ( isset($_POST['addmeta']) && $_POST['addmeta'] ) {
-               $location = add_query_arg( 'message', 2, wp_get_referer() );
-               $location = explode('#', $location);
-               $location = $location[0] . '#postcustom';
-       } elseif ( isset($_POST['deletemeta']) && $_POST['deletemeta'] ) {
-               $location = add_query_arg( 'message', 3, wp_get_referer() );
-               $location = explode('#', $location);
-               $location = $location[0] . '#postcustom';
-       } else {
-               $location = add_query_arg( 'message', 4, get_edit_post_link( $post_id, 'url' ) );
-       }
-
-       /**
-        * Filter the post redirect destination URL.
-        *
-        * @since 2.9.0
-        *
-        * @param string $location The destination URL.
-        * @param int    $post_id  The post ID.
-        */
-       wp_redirect( apply_filters( 'redirect_post_location', $location, $post_id ) );
-       exit;
-}
-
 if ( isset( $_POST['deletepost'] ) )
        $action = 'delete';
 elseif ( isset($_POST['wp-preview']) && 'dopreview' == $_POST['wp-preview'] )
@@ -120,7 +71,7 @@ case 'post-quickdraft-save':
        if ( ! wp_verify_nonce( $nonce, 'add-post' ) )
                $error_msg = __( 'Unable to submit this form, please refresh and try again.' );
 
-       if ( ! current_user_can( 'edit_posts' ) ) {
+       if ( ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) ) {
                exit;
        }
 
@@ -158,6 +109,10 @@ case 'edit':
        if ( ! $post_type_object )
                wp_die( __( 'Unknown post type.' ) );
 
+       if ( ! in_array( $typenow, get_post_types( array( 'show_ui' => true ) ) ) ) {
+               wp_die( __( 'You are not allowed to edit posts in this post type.' ) );
+       }
+
        if ( ! current_user_can( 'edit_post', $post_id ) )
                wp_die( __( 'You are not allowed to edit this item.' ) );
 
@@ -239,7 +194,7 @@ case 'editpost':
 
        // Session cookie flag that the post was saved
        if ( isset( $_COOKIE['wp-saving-post'] ) && $_COOKIE['wp-saving-post'] === $post_id . '-check' ) {
-               setcookie( 'wp-saving-post', $post_id . '-saved', time() + DAY_IN_SECONDS );
+               setcookie( 'wp-saving-post', $post_id . '-saved', time() + DAY_IN_SECONDS, ADMIN_COOKIE_PATH, COOKIE_DOMAIN, is_ssl() );
        }
 
        redirect_post($post_id); // Send user on their way while we keep working
@@ -299,13 +254,12 @@ case 'delete':
        if ( ! current_user_can( 'delete_post', $post_id ) )
                wp_die( __( 'You are not allowed to delete this item.' ) );
 
-       $force = ! EMPTY_TRASH_DAYS;
        if ( $post->post_type == 'attachment' ) {
-               $force = ( $force || ! MEDIA_TRASH );
+               $force = ( ! MEDIA_TRASH );
                if ( ! wp_delete_attachment( $post_id, $force ) )
                        wp_die( __( 'Error in deleting.' ) );
        } else {
-               if ( ! wp_delete_post( $post_id, $force ) )
+               if ( ! wp_delete_post( $post_id, true ) )
                        wp_die( __( 'Error in deleting.' ) );
        }
 
index 6f27a095398d5ce9b89bc59072d38866082fa3be..62da1d3ba79d4806ed20709faa897b4087fa8f19 100644 (file)
@@ -11,8 +11,13 @@ define('IFRAME_REQUEST' , true);
 /** WordPress Administration Bootstrap */
 require_once( dirname( __FILE__ ) . '/admin.php' );
 
-if ( ! current_user_can( 'edit_posts' ) || ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! current_user_can( 'edit_posts' ) || ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to create posts as this user.' ) . '</p>',
+               403
+       );
+}
 
 /**
  * @global WP_Press_This $wp_press_this
index 40328599d4f37b76d22a1a6f39ae3981ddbc4cd4..4d86c536b9a77a370b4277362818d4276e31fa85 100644 (file)
@@ -75,7 +75,7 @@ default :
        $post_edit_link = get_edit_post_link();
        $post_title     = '<a href="' . $post_edit_link . '">' . _draft_or_post_title() . '</a>';
        $h1             = sprintf( __( 'Compare Revisions of &#8220;%1$s&#8221;' ), $post_title );
-       $return_to_post = '<a href="' . $post_edit_link . '">' . __( '&larr; Return to post editor' ) . '</a>';
+       $return_to_post = '<a href="' . $post_edit_link . '">' . __( '&larr; Return to editor' ) . '</a>';
        $title          = __( 'Revisions' );
 
        $redirect = false;
index 7951e9677df8d5169f22e328b51bbb85de9e7e2a..5364fa786cf1a23701d165a668820ae6777e6e56 100644 (file)
@@ -46,15 +46,26 @@ if ( file_exists( ABSPATH . 'wp-config-sample.php' ) )
 elseif ( file_exists( dirname( ABSPATH ) . '/wp-config-sample.php' ) )
        $config_file = file( dirname( ABSPATH ) . '/wp-config-sample.php' );
 else
-       wp_die( __( 'Sorry, I need a wp-config-sample.php file to work from. Please re-upload this file from your WordPress installation.' ) );
+       wp_die( __( 'Sorry, I need a wp-config-sample.php file to work from. Please re-upload this file to your WordPress installation.' ) );
 
 // Check if wp-config.php has been created
 if ( file_exists( ABSPATH . 'wp-config.php' ) )
-       wp_die( '<p>' . sprintf( __( "The file 'wp-config.php' already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='%s'>installing now</a>." ), 'install.php' ) . '</p>' );
+       wp_die( '<p>' . sprintf(
+                       /* translators: %s: install.php */
+                       __( "The file 'wp-config.php' already exists. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='%s'>installing now</a>." ),
+                       'install.php'
+               ) . '</p>'
+       );
 
 // Check if wp-config.php exists above the root directory but is not part of another install
-if ( file_exists(ABSPATH . '../wp-config.php' ) && ! file_exists( ABSPATH . '../wp-settings.php' ) )
-       wp_die( '<p>' . sprintf( __( "The file 'wp-config.php' already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='install.php'>installing now</a>."), 'install.php' ) . '</p>' );
+if ( @file_exists( ABSPATH . '../wp-config.php' ) && ! @file_exists( ABSPATH . '../wp-settings.php' ) ) {
+       wp_die( '<p>' . sprintf(
+                       /* translators: %s: install.php */
+                       __( "The file 'wp-config.php' already exists one level above your WordPress installation. If you need to reset any of the configuration items in this file, please delete it first. You may try <a href='%s'>installing now</a>." ),
+                       'install.php'
+               ) . '</p>'
+       );
+}
 
 $step = isset( $_GET['step'] ) ? (int) $_GET['step'] : -1;
 
@@ -83,11 +94,12 @@ function setup_config_display_header( $body_classes = array() ) {
 <head>
        <meta name="viewport" content="width=device-width" />
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+       <meta name="robots" content="noindex,nofollow" />
        <title><?php _e( 'WordPress &rsaquo; Setup Configuration File' ); ?></title>
        <?php wp_admin_css( 'install', true ); ?>
 </head>
 <body class="<?php echo implode( ' ', $body_classes ); ?>">
-<h1 id="logo"><a href="<?php esc_attr_e( 'https://wordpress.org/' ); ?>" tabindex="-1"><?php _e( 'WordPress' ); ?></a></h1>
+<p id="logo"><a href="<?php esc_attr_e( 'https://wordpress.org/' ); ?>" tabindex="-1"><?php _e( 'WordPress' ); ?></a></p>
 <?php
 } // end function setup_config_display_header();
 
@@ -102,6 +114,7 @@ switch($step) {
        case -1:
                if ( wp_can_install_language_pack() && empty( $language ) && ( $languages = wp_get_available_translations() ) ) {
                        setup_config_display_header( 'language-chooser' );
+                       echo '<h1 class="screen-reader-text">Select a default language</h1>';
                        echo '<form id="setup" method="post" action="?step=0">';
                        wp_install_language_form( $languages );
                        echo '</form>';
@@ -128,7 +141,7 @@ switch($step) {
                        $step_1 .= '&amp;language=' . $loaded_language;
                }
 ?>
-
+<h1 class="screen-reader-text"><?php _e( 'Before getting started' ) ?></h1>
 <p><?php _e( 'Welcome to WordPress. Before getting started, we need some information on the database. You will need to know the following items before proceeding.' ) ?></p>
 <ol>
        <li><?php _e( 'Database name' ); ?></li>
@@ -137,12 +150,26 @@ switch($step) {
        <li><?php _e( 'Database host' ); ?></li>
        <li><?php _e( 'Table prefix (if you want to run more than one WordPress in a single database)' ); ?></li>
 </ol>
-<p>
-       <?php _e( 'We&#8217;re going to use this information to create a <code>wp-config.php</code> file.' ); ?>
-       <strong><?php _e( "If for any reason this automatic file creation doesn&#8217;t work, don&#8217;t worry. All this does is fill in the database information to a configuration file. You may also simply open <code>wp-config-sample.php</code> in a text editor, fill in your information, and save it as <code>wp-config.php</code>." ); ?></strong>
-       <?php _e( "Need more help? <a href='https://codex.wordpress.org/Editing_wp-config.php'>We got it</a>." ); ?>
-</p>
-<p><?php _e( "In all likelihood, these items were supplied to you by your Web Host. If you do not have this information, then you will need to contact them before you can continue. If you&#8217;re all ready&hellip;" ); ?></p>
+<p><?php
+       /* translators: %s: wp-config.php */
+       printf( __( 'We&#8217;re going to use this information to create a %s file.' ),
+               '<code>wp-config.php</code>'
+       );
+       ?>
+       <strong><?php
+               /* translators: 1: wp-config-sample.php, 2: wp-config.php */
+               printf( __( 'If for any reason this automatic file creation doesn&#8217;t work, don&#8217;t worry. All this does is fill in the database information to a configuration file. You may also simply open %1$s in a text editor, fill in your information, and save it as %2$s.' ),
+                       '<code>wp-config-sample.php</code>',
+                       '<code>wp-config.php</code>'
+               );
+       ?></strong>
+       <?php
+       /* translators: %s: Codex URL */
+       printf( __( 'Need more help? <a href="%s">We got it</a>.' ),
+               __( 'https://codex.wordpress.org/Editing_wp-config.php' )
+       );
+?></p>
+<p><?php _e( 'In all likelihood, these items were supplied to you by your Web Host. If you don&#8217;t have this information, then you will need to contact them before you can continue. If you&#8217;re all ready&hellip;' ); ?></p>
 
 <p class="step"><a href="<?php echo $step_1; ?>" class="button button-large"><?php _e( 'Let&#8217;s go!' ); ?></a></p>
 <?php
@@ -154,8 +181,9 @@ switch($step) {
 
                setup_config_display_header();
        ?>
+<h1 class="screen-reader-text"><?php _e( 'Setup your database connection' ) ?></h1>
 <form method="post" action="setup-config.php?step=2">
-       <p><?php _e( "Below you should enter your database connection details. If you&#8217;re not sure about these, contact your host." ); ?></p>
+       <p><?php _e( 'Below you should enter your database connection details. If you&#8217;re not sure about these, contact your host.' ); ?></p>
        <table class="form-table">
                <tr>
                        <th scope="row"><label for="dbname"><?php _e( 'Database Name' ); ?></label></th>
@@ -175,7 +203,10 @@ switch($step) {
                <tr>
                        <th scope="row"><label for="dbhost"><?php _e( 'Database Host' ); ?></label></th>
                        <td><input name="dbhost" id="dbhost" type="text" size="25" value="localhost" /></td>
-                       <td><?php _e( 'You should be able to get this info from your web host, if <code>localhost</code> does not work.' ); ?></td>
+                       <td><?php
+                               /* translators: %s: localhost */
+                               printf( __( 'You should be able to get this info from your web host, if %s doesn&#8217;t work.' ),'<code>localhost</code>' );
+                       ?></td>
                </tr>
                <tr>
                        <th scope="row"><label for="prefix"><?php _e( 'Table Prefix' ); ?></label></th>
@@ -306,10 +337,16 @@ switch($step) {
        if ( ! is_writable(ABSPATH) ) :
                setup_config_display_header();
 ?>
-<p><?php _e( "Sorry, but I can&#8217;t write the <code>wp-config.php</code> file." ); ?></p>
-<p><?php _e( 'You can create the <code>wp-config.php</code> manually and paste the following text into it.' ); ?></p>
+<p><?php
+       /* translators: %s: wp-config.php */
+       printf( __( 'Sorry, but I can&#8217;t write the %s file.' ), '<code>wp-config.php</code>' );
+?></p>
+<p><?php
+       /* translators: %s: wp-config.php */
+       printf( __( 'You can create the %s manually and paste the following text into it.' ), '<code>wp-config.php</code>' );
+?></p>
 <textarea id="wp-config" cols="98" rows="15" class="code" readonly="readonly"><?php
-               foreach( $config_file as $line ) {
+               foreach ( $config_file as $line ) {
                        echo htmlentities($line, ENT_COMPAT, 'UTF-8');
                }
 ?></textarea>
@@ -336,14 +373,15 @@ if ( ! /iPad|iPod|iPhone/.test( navigator.userAgent ) ) {
                        $path_to_wp_config = dirname( ABSPATH ) . '/wp-config.php';
 
                $handle = fopen( $path_to_wp_config, 'w' );
-               foreach( $config_file as $line ) {
+               foreach ( $config_file as $line ) {
                        fwrite( $handle, $line );
                }
                fclose( $handle );
                chmod( $path_to_wp_config, 0666 );
                setup_config_display_header();
 ?>
-<p><?php _e( "All right, sparky! You&#8217;ve made it through this part of the installation. WordPress can now communicate with your database. If you are ready, time now to&hellip;" ); ?></p>
+<h1 class="screen-reader-text"><?php _e( 'Successful database connection' ) ?></h1>
+<p><?php _e( 'All right, sparky! You&#8217;ve made it through this part of the installation. WordPress can now communicate with your database. If you are ready, time now to&hellip;' ); ?></p>
 
 <p class="step"><a href="<?php echo $install; ?>" class="button button-large"><?php _e( 'Run the install' ); ?></a></p>
 <?php
index c858c0bbcf4d13b46b10efd39cd2efa271d19dae..6fae2b7535c867bff80d5c7a860562900c10d836 100644 (file)
@@ -25,7 +25,7 @@ get_current_screen()->add_help_tab( array(
 'title'                => __('Overview'),
 'content'      =>
        '<p>' . __('You can use the Theme Editor to edit the individual CSS and PHP files which make up your theme.') . '</p>
-       <p>' . __('Begin by choosing a theme to edit from the dropdown menu and clicking Select. A list then appears of all the template files. Clicking once on any file name causes the file to appear in the large Editor box.') . '</p>
+       <p>' . __("Begin by choosing a theme to edit from the dropdown menu and clicking Select. A list then appears of the theme's template files. Clicking once on any file name causes the file to appear in the large Editor box.") . '</p>
        <p>' . __('For PHP files, you can use the Documentation dropdown to select from functions recognized in that file. Look Up takes you to a web page with reference material about that particular function.') . '</p>
        <p id="newcontent-description">' . __( 'In the editing area the Tab key enters a tab character. To move below this area by pressing Tab, press the Esc key followed by the Tab key. In some cases the Esc key will need to be pressed twice before the Tab key will allow you to continue.' ) . '</p>
        <p>' . __('After typing in your edits, click Update File.') . '</p>
@@ -45,24 +45,55 @@ get_current_screen()->set_help_sidebar(
 
 wp_reset_vars( array( 'action', 'error', 'file', 'theme' ) );
 
-if ( $theme )
+if ( $theme ) {
        $stylesheet = $theme;
-else
+} else {
        $stylesheet = get_stylesheet();
+}
 
 $theme = wp_get_theme( $stylesheet );
 
-if ( ! $theme->exists() )
+if ( ! $theme->exists() ) {
        wp_die( __( 'The requested theme does not exist.' ) );
+}
 
-if ( $theme->errors() && 'theme_no_stylesheet' == $theme->errors()->get_error_code() )
+if ( $theme->errors() && 'theme_no_stylesheet' == $theme->errors()->get_error_code() ) {
        wp_die( __( 'The requested theme does not exist.' ) . ' ' . $theme->errors()->get_error_message() );
+}
+
+$allowed_files = $style_files = array();
+$has_templates = false;
+$default_types = array( 'php', 'css' );
 
-$allowed_files = $theme->get_files( 'php', 1 );
-$has_templates = ! empty( $allowed_files );
-$style_files = $theme->get_files( 'css' );
-$allowed_files['style.css'] = $style_files['style.css'];
-$allowed_files += $style_files;
+/**
+ * Filter the list of file types allowed for editing in the Theme editor.
+ *
+ * @since 4.4.0
+ *
+ * @param array    $default_types List of file types. Default types include 'php' and 'css'.
+ * @param WP_Theme $theme         The current Theme object.
+ */
+$file_types = apply_filters( 'wp_theme_editor_filetypes', $default_types, $theme );
+
+// Ensure that default types are still there.
+$file_types = array_unique( array_merge( $file_types, $default_types ) );
+
+foreach ( $file_types as $type ) {
+       switch ( $type ) {
+               case 'php':
+                       $allowed_files += $theme->get_files( 'php', 1 );
+                       $has_templates = ! empty( $allowed_files );
+                       break;
+               case 'css':
+                       $style_files = $theme->get_files( 'css' );
+                       $allowed_files['style.css'] = $style_files['style.css'];
+                       $allowed_files += $style_files;
+                       break;
+               default:
+                       $allowed_files += $theme->get_files( $type );
+                       break;
+       }
+}
 
 if ( empty( $file ) ) {
        $relative_file = 'style.css';
@@ -125,7 +156,7 @@ default:
  <div id="message" class="updated notice is-dismissible"><p><?php _e( 'File edited successfully.' ) ?></p></div>
 <?php endif;
 
-$description = get_file_description( $file );
+$description = get_file_description( $relative_file );
 $file_show = array_search( $file, array_filter( $allowed_files ) );
 if ( $description != $file_show )
        $description .= ' <span>(' . $file_show . ')</span>';
@@ -135,7 +166,7 @@ if ( $description != $file_show )
 
 <div class="fileedit-sub">
 <div class="alignleft">
-<h3><?php echo $theme->display('Name'); if ( $description ) echo ': ' . $description; ?></h3>
+<h2><?php echo $theme->display( 'Name' ); if ( $description ) echo ': ' . $description; ?></h2>
 </div>
 <div class="alignright">
        <form action="theme-editor.php" method="post">
@@ -163,26 +194,52 @@ if ( $theme->errors() )
        <div id="templateside">
 <?php
 if ( $allowed_files ) :
-       if ( $has_templates || $theme->parent() ) :
-?>
-       <h3><?php _e('Templates'); ?></h3>
-       <?php if ( $theme->parent() ) : ?>
-       <p class="howto"><?php printf( __( 'This child theme inherits templates from a parent theme, %s.' ), '<a href="' . self_admin_url('theme-editor.php?theme=' . urlencode( $theme->get_template() ) ) . '">' . $theme->parent()->display('Name') . '</a>' ); ?></p>
-       <?php endif; ?>
-       <ul>
-<?php
-       endif;
+       $previous_file_type = '';
 
        foreach ( $allowed_files as $filename => $absolute_filename ) :
-               if ( 'style.css' == $filename )
-                       echo "\t</ul>\n\t<h3>" . _x( 'Styles', 'Theme stylesheets in theme editor' ) . "</h3>\n\t<ul>\n";
+               $file_type = substr( $filename, strrpos( $filename, '.' ) );
 
-               $file_description = get_file_description( $absolute_filename );
-               if ( $file_description != basename( $filename ) )
+               if ( $file_type !== $previous_file_type ) {
+                       if ( '' !== $previous_file_type ) {
+                               echo "\t</ul>\n";
+                       }
+
+                       switch ( $file_type ) {
+                               case '.php':
+                                       if ( $has_templates || $theme->parent() ) :
+                                               echo "\t<h2>" . __( 'Templates' ) . "</h2>\n";
+                                               if ( $theme->parent() ) {
+                                                       echo '<p class="howto">' . sprintf( __( 'This child theme inherits templates from a parent theme, %s.' ),
+                                                               sprintf( '<a href="%s">%s</a>',
+                                                                       self_admin_url( 'theme-editor.php?theme=' . urlencode( $theme->get_template() ) ),
+                                                                       $theme->parent()->display( 'Name' )
+                                                               )
+                                                       ) . "</p>\n";
+                                               }
+                                       endif;
+                                       break;
+                               case '.css':
+                                       echo "\t<h2>" . _x( 'Styles', 'Theme stylesheets in theme editor' ) . "</h2>\n";
+                                       break;
+                               default:
+                                       /* translators: %s: file extension */
+                                       echo "\t<h2>" . sprintf( __( '%s files' ), $file_type ) . "</h2>\n";
+                                       break;
+                       }
+
+                       echo "\t<ul>\n";
+               }
+               
+               $file_description = get_file_description( $filename );
+               if ( $filename !== basename( $absolute_filename ) || $file_description !== $filename ) {
                        $file_description .= '<br /><span class="nonessential">(' . $filename . ')</span>';
+               }
 
-               if ( $absolute_filename == $file )
+               if ( $absolute_filename === $file ) {
                        $file_description = '<span class="highlight">' . $file_description . '</span>';
+               }
+
+               $previous_file_type = $file_type;
 ?>
                <li><a href="theme-editor.php?file=<?php echo urlencode( $filename ) ?>&amp;theme=<?php echo urlencode( $stylesheet ) ?>"><?php echo $file_description; ?></a></li>
 <?php
@@ -206,7 +263,7 @@ else : ?>
                <div id="documentation" class="hide-if-no-js">
                <label for="docs-list"><?php _e('Documentation:') ?></label>
                <?php echo $docs_select; ?>
-               <input type="button" class="button" value=" <?php esc_attr_e( 'Look Up' ); ?> " onclick="if ( '' != jQuery('#docs-list').val() ) { window.open( 'http://api.wordpress.org/core/handbook/1.0/?function=' + escape( jQuery( '#docs-list' ).val() ) + '&amp;locale=<?php echo urlencode( get_locale() ) ?>&amp;version=<?php echo urlencode( $wp_version ) ?>&amp;redirect=true'); }" />
+               <input type="button" class="button" value=" <?php esc_attr_e( 'Look Up' ); ?> " onclick="if ( '' != jQuery('#docs-list').val() ) { window.open( 'https://api.wordpress.org/core/handbook/1.0/?function=' + escape( jQuery( '#docs-list' ).val() ) + '&amp;locale=<?php echo urlencode( get_locale() ) ?>&amp;version=<?php echo urlencode( $wp_version ) ?>&amp;redirect=true'); }" />
                </div>
        <?php endif; ?>
 
index 92fd53ccb1389af85175612b6ff5fb3690f41db6..289f3954c3c2e56efefde8320a0d880e262adfa0 100644 (file)
@@ -128,6 +128,8 @@ include(ABSPATH . 'wp-admin/admin-header.php');
        <?php install_themes_upload(); ?>
        </div>
 
+       <h2 class="screen-reader-text"><?php _e( 'Filter themes list' ); ?></h2>
+
        <div class="wp-filter">
                <div class="filter-count">
                        <span class="count theme-count"></span>
@@ -137,12 +139,27 @@ include(ABSPATH . 'wp-admin/admin-header.php');
                        <li><a href="#" data-sort="featured"><?php _ex( 'Featured', 'themes' ); ?></a></li>
                        <li><a href="#" data-sort="popular"><?php _ex( 'Popular', 'themes' ); ?></a></li>
                        <li><a href="#" data-sort="new"><?php _ex( 'Latest', 'themes' ); ?></a></li>
+                       <li><a href="#" data-sort="favorites"><?php _ex( 'Favorites', 'themes' ); ?></a></li>
                </ul>
 
                <a class="drawer-toggle" href="#"><?php _e( 'Feature Filter' ); ?></a>
 
                <div class="search-form"></div>
 
+               <div class="favorites-form">
+                       <?php
+                       $user = isset( $_GET['user'] ) ? wp_unslash( $_GET['user'] ) : get_user_option( 'wporg_favorites' );
+                       update_user_meta( get_current_user_id(), 'wporg_favorites', $user );
+                       ?>
+                       <p class="install-help"><?php _e( 'If you have marked themes as favorites on WordPress.org, you can browse them here.' ); ?></p>
+
+                       <p>
+                               <label for="user"><?php _e( 'Your WordPress.org username:' ); ?></label>
+                               <input type="search" id="wporg-username-input" value="<?php echo esc_attr( $user ); ?>" />
+                               <input type="button" class="button button-secondary favorites-form-submit" value="<?php esc_attr_e( 'Get Favorites' ); ?>" />
+                       </p>
+               </div>
+
                <div class="filter-drawer">
                        <div class="buttons">
                                <a class="apply-filters button button-secondary" href="#"><?php _e( 'Apply Filters' ); ?><span></span></a>
@@ -151,17 +168,17 @@ include(ABSPATH . 'wp-admin/admin-header.php');
                <?php
                $feature_list = get_theme_feature_list();
                foreach ( $feature_list as $feature_name => $features ) {
-                       echo '<div class="filter-group">';
+                       echo '<fieldset class="filter-group">';
                        $feature_name = esc_html( $feature_name );
-                       echo '<h4>' . $feature_name . '</h4>';
-                       echo '<ol class="feature-group">';
+                       echo '<legend>' . $feature_name . '</legend>';
+                       echo '<div class="filter-group-feature">';
                        foreach ( $features as $feature => $feature_name ) {
                                $feature = esc_attr( $feature );
-                               echo '<li><input type="checkbox" id="filter-id-' . $feature . '" value="' . $feature . '" /> ';
-                               echo '<label for="filter-id-' . $feature . '">' . $feature_name . '</label></li>';
+                               echo '<input type="checkbox" id="filter-id-' . $feature . '" value="' . $feature . '" /> ';
+                               echo '<label for="filter-id-' . $feature . '">' . $feature_name . '</label><br>';
                        }
-                       echo '</ol>';
                        echo '</div>';
+                       echo '</fieldset>';
                }
                ?>
                        <div class="filtered-by">
@@ -171,6 +188,7 @@ include(ABSPATH . 'wp-admin/admin-header.php');
                        </div>
                </div>
        </div>
+       <h2 class="screen-reader-text"><?php _e( 'Themes list' ); ?></h2>
        <div class="theme-browser content-filterable"></div>
        <div class="theme-install-overlay wp-full-overlay expanded"></div>
 
@@ -239,14 +257,12 @@ if ( $tab ) {
 
                                <div class="theme-details">
                                        <# if ( data.rating ) { #>
-                                               <div class="star-rating rating-{{ Math.round( data.rating / 10 ) * 10 }}">
-                                                       <span class="one"></span><span class="two"></span><span class="three"></span><span class="four"></span><span class="five"></span>
-                                                       <small class="ratings">{{ data.num_ratings }}</small>
+                                               <div class="theme-rating">
+                                                       {{{ data.stars }}}
+                                                       <span class="num-ratings">({{ data.num_ratings }})</span>
                                                </div>
                                        <# } else { #>
-                                               <div class="star-rating">
-                                                       <small class="ratings"><?php _e( 'This theme has not been rated yet.' ); ?></small>
-                                               </div>
+                                               <span class="no-rating"><?php _e( 'This theme has not been rated yet.' ); ?></span>
                                        <# } #>
                                        <div class="theme-version"><?php printf( __( 'Version: %s' ), '{{ data.version }}' ); ?></div>
                                        <div class="theme-description">{{{ data.description }}}</div>
index 5c007df79ff5f9fd53231b1cdb3a5fdd74bd21bd..bf65884fb25e0c1d2deb99d536e9cdc5d102fa63 100644 (file)
@@ -9,23 +9,50 @@
 /** WordPress Administration Bootstrap */
 require_once( dirname( __FILE__ ) . '/admin.php' );
 
-if ( !current_user_can('switch_themes') && !current_user_can('edit_theme_options') )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! current_user_can( 'switch_themes' ) && ! current_user_can( 'edit_theme_options' ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to edit theme options on this site.' ) . '</p>',
+               403
+       );
+}
 
 if ( current_user_can( 'switch_themes' ) && isset($_GET['action'] ) ) {
        if ( 'activate' == $_GET['action'] ) {
                check_admin_referer('switch-theme_' . $_GET['stylesheet']);
                $theme = wp_get_theme( $_GET['stylesheet'] );
-               if ( ! $theme->exists() || ! $theme->is_allowed() )
-                       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+
+               if ( ! $theme->exists() || ! $theme->is_allowed() ) {
+                       wp_die(
+                               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                               '<p>' . __( 'The requested theme does not exist.' ) . '</p>',
+                               403
+                       );
+               }
+
                switch_theme( $theme->get_stylesheet() );
                wp_redirect( admin_url('themes.php?activated=true') );
                exit;
        } elseif ( 'delete' == $_GET['action'] ) {
                check_admin_referer('delete-theme_' . $_GET['stylesheet']);
                $theme = wp_get_theme( $_GET['stylesheet'] );
-               if ( !current_user_can('delete_themes') || ! $theme->exists() )
-                       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+
+               if ( ! current_user_can( 'delete_themes' ) ) {
+                       wp_die(
+                               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                               '<p>' . __( 'You are not allowed to delete this item.' ) . '</p>',
+                               403
+                       );
+               }
+
+               if ( ! $theme->exists() ) {
+                       wp_die(
+                               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                               '<p>' . __( 'The requested theme does not exist.' ) . '</p>',
+                               403
+                       );
+               }
+
                $active = wp_get_theme();
                if ( $active->get( 'Template' ) == $_GET['stylesheet'] ) {
                        wp_redirect( admin_url( 'themes.php?delete-active-child=true' ) );
@@ -225,14 +252,14 @@ foreach ( $themes as $theme ) :
        <div class="theme-author"><?php printf( __( 'By %s' ), $theme['author'] ); ?></div>
 
        <?php if ( $theme['active'] ) { ?>
-               <h3 class="theme-name" id="<?php echo $aria_name; ?>">
+               <h2 class="theme-name" id="<?php echo $aria_name; ?>">
                        <?php
                        /* translators: %s: theme name */
                        printf( __( '<span>Active:</span> %s' ), $theme['name'] );
                        ?>
-               </h3>
+               </h2>
        <?php } else { ?>
-               <h3 class="theme-name" id="<?php echo $aria_name; ?>"><?php echo $theme['name']; ?></h3>
+               <h2 class="theme-name" id="<?php echo $aria_name; ?>"><?php echo $theme['name']; ?></h2>
        <?php } ?>
 
        <div class="theme-actions">
@@ -273,6 +300,7 @@ if ( ! is_multisite() && current_user_can('edit_themes') && $broken_themes = wp_
 
 <?php
 $can_delete = current_user_can( 'delete_themes' );
+$can_install = current_user_can( 'install_themes' );
 ?>
 <table>
        <tr>
@@ -281,7 +309,9 @@ $can_delete = current_user_can( 'delete_themes' );
                <?php if ( $can_delete ) { ?>
                        <td></td>
                <?php } ?>
-               </tr>
+               <?php if ( $can_install ) { ?>
+                       <td></td>
+               <?php } ?>
        </tr>
        <?php foreach ( $broken_themes as $broken_theme ) : ?>
                <tr>
@@ -299,6 +329,22 @@ $can_delete = current_user_can( 'delete_themes' );
                                <td><a href="<?php echo esc_url( $delete_url ); ?>" class="button button-secondary delete-theme"><?php _e( 'Delete' ); ?></a></td>
                                <?php
                        }
+
+                       if ( $can_install && 'theme_no_parent' === $broken_theme->errors()->get_error_code() ) {
+                               $parent_theme_name = $broken_theme->get( 'Template' );
+                               $parent_theme = themes_api( 'theme_information', array( 'slug' => urlencode( $parent_theme_name ) ) );
+
+                               if ( ! is_wp_error( $parent_theme ) ) {
+                                       $install_url = add_query_arg( array(
+                                               'action' => 'install-theme',
+                                               'theme'  => urlencode( $parent_theme_name ),
+                                       ), admin_url( 'update.php' ) );
+                                       $install_url = wp_nonce_url( $install_url, 'install-theme_' . $parent_theme_name );
+                                       ?>
+                                       <td><a href="<?php echo esc_url( $install_url ); ?>" class="button button-secondary install-theme"><?php _e( 'Install Parent Theme' ); ?></a></td>
+                                       <?php
+                               }
+                       }
                        ?>
                </tr>
        <?php endforeach; ?>
@@ -327,21 +373,21 @@ $can_delete = current_user_can( 'delete_themes' );
        <div class="theme-author"><?php printf( __( 'By %s' ), '{{{ data.author }}}' ); ?></div>
 
        <# if ( data.active ) { #>
-               <h3 class="theme-name" id="{{ data.id }}-name">
+               <h2 class="theme-name" id="{{ data.id }}-name">
                        <?php
                        /* translators: %s: theme name */
                        printf( __( '<span>Active:</span> %s' ), '{{{ data.name }}}' );
                        ?>
-               </h3>
+               </h2>
        <# } else { #>
-               <h3 class="theme-name" id="{{ data.id }}-name">{{{ data.name }}}</h3>
+               <h2 class="theme-name" id="{{ data.id }}-name">{{{ data.name }}}</h2>
        <# } #>
 
        <div class="theme-actions">
 
        <# if ( data.active ) { #>
                <# if ( data.actions.customize ) { #>
-                       <a class="button button-primary customize load-customize hide-if-no-customize" href="{{ data.actions.customize }}"><?php _e( 'Customize' ); ?></a>
+                       <a class="button button-primary customize load-customize hide-if-no-customize" href="{{{ data.actions.customize }}}"><?php _e( 'Customize' ); ?></a>
                <# } #>
        <# } else { #>
                <a class="button button-secondary activate" href="{{{ data.actions.activate }}}"><?php _e( 'Activate' ); ?></a>
@@ -376,12 +422,12 @@ $can_delete = current_user_can( 'delete_themes' );
                                <# if ( data.active ) { #>
                                        <span class="current-label"><?php _e( 'Current Theme' ); ?></span>
                                <# } #>
-                               <h3 class="theme-name">{{{ data.name }}}<span class="theme-version"><?php printf( __( 'Version: %s' ), '{{ data.version }}' ); ?></span></h3>
-                               <h4 class="theme-author"><?php printf( __( 'By %s' ), '{{{ data.authorAndUri }}}' ); ?></h4>
+                               <h2 class="theme-name">{{{ data.name }}}<span class="theme-version"><?php printf( __( 'Version: %s' ), '{{ data.version }}' ); ?></span></h2>
+                               <p class="theme-author"><?php printf( __( 'By %s' ), '{{{ data.authorAndUri }}}' ); ?></p>
 
                                <# if ( data.hasUpdate ) { #>
-                               <div class="theme-update-message">
-                                       <h4 class="theme-update"><?php _e( 'Update Available' ); ?></h4>
+                               <div class="notice notice-warning notice-alt notice-large">
+                                       <h3 class="notice-title"><?php _e( 'Update Available' ); ?></h3>
                                        {{{ data.update }}}
                                </div>
                                <# } #>
index 726c55b52a1b8342b41fcc352a0e8b1030869fcd..b6de3c8183d52cef32cc07cb7448b071c97980b5 100644 (file)
@@ -37,7 +37,7 @@ require_once( ABSPATH . 'wp-admin/admin-header.php' );
 
 <?php if ( current_user_can('edit_posts') ) : ?>
 <div class="card pressthis">
-       <h3><?php _e('Press This') ?></h3>
+       <h2><?php _e('Press This') ?></h2>
        <p><?php _e( 'Press This is a little tool that lets you grab bits of the web and create new posts with ease.' );?></p>
        <p><?php _e( 'Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your site.' ); ?></p>
 
@@ -100,8 +100,8 @@ $cats = get_taxonomy('category');
 $tags = get_taxonomy('post_tag');
 if ( current_user_can($cats->cap->manage_terms) || current_user_can($tags->cap->manage_terms) ) : ?>
 <div class="card">
-    <h3 class="title"><?php _e( 'Categories and Tags Converter' ) ?></h3>
-    <p><?php printf( __('If you want to convert your categories to tags (or vice versa), use the <a href="%s">Categories and Tags Converter</a> available from the Import screen.'), 'import.php' ); ?></p>
+       <h2 class="title"><?php _e( 'Categories and Tags Converter' ) ?></h2>
+       <p><?php printf( __('If you want to convert your categories to tags (or vice versa), use the <a href="%s">Categories and Tags Converter</a> available from the Import screen.'), 'import.php' ); ?></p>
 </div>
 <?php
 endif;
index 969021696560b410865d94a9b79364446ab99240..0e698a57c266d44f50be3248ca8360ccf7d9f195 100644 (file)
@@ -135,7 +135,7 @@ function dismissed_updates() {
        <?php
                echo '<p class="hide-if-no-js"><a id="show-dismissed" href="#">'.__('Show hidden updates').'</a></p>';
                echo '<ul id="dismissed-updates" class="core-updates dismissed">';
-               foreach( (array) $dismissed as $update) {
+               foreach ( (array) $dismissed as $update) {
                        echo '<li>';
                        list_core_update( $update );
                        echo '</li>';
@@ -159,7 +159,7 @@ function core_upgrade_preamble() {
        $updates = get_core_updates();
 
        if ( !isset($updates[0]->response) || 'latest' == $updates[0]->response ) {
-               echo '<h3>';
+               echo '<h2>';
                _e('You have the latest version of WordPress.');
 
                if ( wp_http_supports( array( 'ssl' ) ) ) {
@@ -175,15 +175,15 @@ function core_upgrade_preamble() {
                        if ( $should_auto_update )
                                echo ' ' . __( 'Future security updates will be applied automatically.' );
                }
-               echo '</h3>';
+               echo '</h2>';
        } else {
                echo '<div class="notice notice-warning"><p>';
                _e('<strong>Important:</strong> before updating, please <a href="https://codex.wordpress.org/WordPress_Backups">back up your database and files</a>. For help with updates, visit the <a href="https://codex.wordpress.org/Updating_WordPress">Updating WordPress</a> Codex page.');
                echo '</p></div>';
 
-               echo '<h3 class="response">';
+               echo '<h2 class="response">';
                _e( 'An updated version of WordPress is available.' );
-               echo '</h3>';
+               echo '</h2>';
        }
 
        if ( isset( $updates[0] ) && $updates[0]->response == 'development' ) {
@@ -197,7 +197,7 @@ function core_upgrade_preamble() {
        }
 
        echo '<ul class="core-updates">';
-       foreach( (array) $updates as $update ) {
+       foreach ( (array) $updates as $update ) {
                echo '<li>';
                list_core_update( $update );
                echo '</li>';
@@ -225,7 +225,7 @@ function list_plugin_updates() {
        require_once(ABSPATH . 'wp-admin/includes/plugin-install.php');
        $plugins = get_plugin_updates();
        if ( empty( $plugins ) ) {
-               echo '<h3>' . __( 'Plugins' ) . '</h3>';
+               echo '<h2>' . __( 'Plugins' ) . '</h2>';
                echo '<p>' . __( 'Your plugins are all up to date.' ) . '</p>';
                return;
        }
@@ -237,7 +237,7 @@ function list_plugin_updates() {
        else
                $core_update_version = $core_updates[0]->current;
        ?>
-<h3><?php _e( 'Plugins' ); ?></h3>
+<h2><?php _e( 'Plugins' ); ?></h2>
 <p><?php _e( 'The following plugins have new versions available. Check the ones you want to update and then click &#8220;Update Plugins&#8221;.' ); ?></p>
 <form method="post" action="<?php echo esc_url( $form_action ); ?>" name="upgrade-plugins" class="upgrade">
 <?php wp_nonce_field('upgrade-core'); ?>
@@ -252,8 +252,25 @@ function list_plugin_updates() {
 
        <tbody class="plugins">
 <?php
-       foreach ( (array) $plugins as $plugin_file => $plugin_data) {
-               $info = plugins_api('plugin_information', array('slug' => $plugin_data->update->slug ));
+       foreach ( (array) $plugins as $plugin_file => $plugin_data ) {
+               $info = plugins_api( 'plugin_information', array(
+                       'slug' => $plugin_data->update->slug,
+                       'fields' => array(
+                               'short_description' => false,
+                               'sections' => false,
+                               'requires' => false,
+                               'rating' => false,
+                               'ratings' => false,
+                               'downloaded' => false,
+                               'downloadlink' => false,
+                               'last_updated' => false,
+                               'added' => false,
+                               'tags' => false,
+                               'homepage' => false,
+                               'donate_link' => false,
+                       ),
+               ) );
+
                if ( is_wp_error( $info ) ) {
                        $info = false;
                }
@@ -269,7 +286,9 @@ function list_plugin_updates() {
                }
                // Get plugin compat for updated version of WordPress.
                if ( $core_update_version ) {
-                       if ( isset($info->compatibility[$core_update_version][$plugin_data->update->new_version]) ) {
+                       if ( isset( $info->tested ) && version_compare( $info->tested, $core_update_version, '>=' ) ) {
+                               $compat .= '<br />' . sprintf( __( 'Compatibility with WordPress %1$s: 100%% (according to its author)' ), $core_update_version );
+                       } elseif ( isset( $info->compatibility[ $core_update_version ][ $plugin_data->update->new_version ] ) ) {
                                $update_compat = $info->compatibility[$core_update_version][$plugin_data->update->new_version];
                                $compat .= '<br />' . sprintf(__('Compatibility with WordPress %1$s: %2$d%% (%3$d "works" votes out of %4$d total)'), $core_update_version, $update_compat[0], $update_compat[2], $update_compat[1]);
                        } else {
@@ -284,8 +303,8 @@ function list_plugin_updates() {
                }
 
                $details_url = self_admin_url('plugin-install.php?tab=plugin-information&plugin=' . $plugin_data->update->slug . '&section=changelog&TB_iframe=true&width=640&height=662');
-               $details_text = sprintf(__('View version %1$s details'), $plugin_data->update->new_version);
-               $details = sprintf('<a href="%1$s" class="thickbox" title="%2$s">%3$s</a>.', esc_url($details_url), esc_attr($plugin_data->Name), $details_text);
+               $details_text = sprintf(__('View version %1$s details.'), $plugin_data->update->new_version);
+               $details = sprintf('<a href="%1$s" class="thickbox" title="%2$s">%3$s</a>', esc_url($details_url), esc_attr($plugin_data->Name), $details_text);
 
                echo "
        <tr>
@@ -314,14 +333,14 @@ function list_plugin_updates() {
 function list_theme_updates() {
        $themes = get_theme_updates();
        if ( empty( $themes ) ) {
-               echo '<h3>' . __( 'Themes' ) . '</h3>';
+               echo '<h2>' . __( 'Themes' ) . '</h2>';
                echo '<p>' . __( 'Your themes are all up to date.' ) . '</p>';
                return;
        }
 
        $form_action = 'update-core.php?action=do-theme-upgrade';
 ?>
-<h3><?php _e( 'Themes' ); ?></h3>
+<h2><?php _e( 'Themes' ); ?></h2>
 <p><?php _e( 'The following themes have new versions available. Check the ones you want to update and then click &#8220;Update Themes&#8221;.' ); ?></p>
 <p><?php printf( __( '<strong>Please Note:</strong> Any customizations you have made to theme files will be lost. Please consider using <a href="%s">child themes</a> for modifications.' ), __( 'https://codex.wordpress.org/Child_Themes' ) ); ?></p>
 <form method="post" action="<?php echo esc_url( $form_action ); ?>" name="upgrade-themes" class="upgrade">
@@ -341,7 +360,7 @@ function list_theme_updates() {
                echo "
        <tr>
                <th scope='row' class='check-column'><input type='checkbox' name='checked[]' value='" . esc_attr( $stylesheet ) . "' /></th>
-               <td class='plugin-title'><img src='" . esc_url( $theme->get_screenshot() ) . "' width='85' height='64' style='float:left; padding: 0 5px 5px' /><strong>" . $theme->display('Name') . '</strong> ' . sprintf( __( 'You have version %1$s installed. Update to %2$s.' ), $theme->display('Version'), $theme->update['new_version'] ) . "</td>
+               <td class='plugin-title'><img src='" . esc_url( $theme->get_screenshot() ) . "' width='85' height='64' style='float:left; padding: 0 5px 5px' alt='' /><strong>" . $theme->display('Name') . '</strong> ' . sprintf( __( 'You have version %1$s installed. Update to %2$s.' ), $theme->display('Version'), $theme->update['new_version'] ) . "</td>
        </tr>";
        }
 ?>
@@ -366,7 +385,7 @@ function list_translation_updates() {
        $updates = wp_get_translation_updates();
        if ( ! $updates ) {
                if ( 'en_US' != get_locale() ) {
-                       echo '<h3>' . __( 'Translations' ) . '</h3>';
+                       echo '<h2>' . __( 'Translations' ) . '</h2>';
                        echo '<p>' . __( 'Your translations are all up to date.' ) . '</p>';
                }
                return;
@@ -374,7 +393,7 @@ function list_translation_updates() {
 
        $form_action = 'update-core.php?action=do-translation-upgrade';
        ?>
-       <h3><?php _e( 'Translations' ); ?></h3>
+       <h2><?php _e( 'Translations' ); ?></h2>
        <form method="post" action="<?php echo esc_url( $form_action ); ?>" name="upgrade-translations" class="upgrade">
                <p><?php _e( 'New translations are available.' ); ?></p>
                <?php wp_nonce_field( 'upgrade-translations' ); ?>
@@ -506,7 +525,7 @@ if ( ( 'do-theme-upgrade' == $action || ( 'do-plugin-upgrade' == $action && ! is
 $title = __('WordPress Updates');
 $parent_file = 'index.php';
 
-$updates_overview  = '<p>' . __( 'On this screen, you can update to the latest version of WordPress, as well as update your themes and plugins from the WordPress.org repositories.' ) . '</p>';
+$updates_overview  = '<p>' . __( 'On this screen, you can update to the latest version of WordPress, as well as update your themes, plugins, and translations from the WordPress.org repositories.' ) . '</p>';
 $updates_overview .= '<p>' . __( 'If an update is available, you&#8127;ll see a notification appear in the Toolbar and navigation menu.' ) . ' ' . __( 'Keeping your site updated is important for security. It also makes the internet a safer place for you and your readers.' ) . '</p>';
 
 get_current_screen()->add_help_tab( array(
index 4cfdeca6c6b6703d2db4214e3bed66fb4f608812..fba26f885a32644b88bface862ba5ae5b2dd3d91 100644 (file)
@@ -97,11 +97,28 @@ if ( isset($_GET['action']) ) {
 
                include_once( ABSPATH . 'wp-admin/includes/plugin-install.php' ); //for plugins_api..
 
-               check_admin_referer('install-plugin_' . $plugin);
-               $api = plugins_api('plugin_information', array('slug' => $plugin, 'fields' => array('sections' => false) ) ); //Save on a bit of bandwidth.
-
-               if ( is_wp_error($api) )
-                       wp_die($api);
+               check_admin_referer( 'install-plugin_' . $plugin );
+               $api = plugins_api( 'plugin_information', array(
+                       'slug' => $plugin,
+                       'fields' => array(
+                               'short_description' => false,
+                               'sections' => false,
+                               'requires' => false,
+                               'rating' => false,
+                               'ratings' => false,
+                               'downloaded' => false,
+                               'last_updated' => false,
+                               'added' => false,
+                               'tags' => false,
+                               'compatibility' => false,
+                               'homepage' => false,
+                               'donate_link' => false,
+                       ),
+               ) );
+
+               if ( is_wp_error( $api ) ) {
+                       wp_die( $api );
+               }
 
                $title = __('Plugin Install');
                $parent_file = 'plugins.php';
index 53c1d17012d1ecaafef87a6450f42d041eb35995..03940b01f53debf4fc282e5fc1866b5a6c6098ac 100644 (file)
@@ -60,6 +60,7 @@ else
 <head>
        <meta name="viewport" content="width=device-width" />
        <meta http-equiv="Content-Type" content="<?php bloginfo( 'html_type' ); ?>; charset=<?php echo get_option( 'blog_charset' ); ?>" />
+       <meta name="robots" content="noindex,nofollow" />
        <title><?php _e( 'WordPress &rsaquo; Update' ); ?></title>
        <?php
        wp_admin_css( 'install', true );
@@ -67,11 +68,11 @@ else
        ?>
 </head>
 <body class="wp-core-ui">
-<h1 id="logo"><a href="<?php echo esc_url( __( 'https://wordpress.org/' ) ); ?>" tabindex="-1"><?php _e( 'WordPress' ); ?></a></h1>
+<p id="logo"><a href="<?php echo esc_url( __( 'https://wordpress.org/' ) ); ?>" tabindex="-1"><?php _e( 'WordPress' ); ?></a></p>
 
 <?php if ( get_option( 'db_version' ) == $wp_db_version || !is_blog_installed() ) : ?>
 
-<h2><?php _e( 'No Update Required' ); ?></h2>
+<h1><?php _e( 'No Update Required' ); ?></h1>
 <p><?php _e( 'Your WordPress database is already up-to-date!' ); ?></p>
 <p class="step"><a class="button button-large" href="<?php echo get_option( 'home' ); ?>/"><?php _e( 'Continue' ); ?></a></p>
 
@@ -92,10 +93,10 @@ switch ( $step ) :
                        $goback = urlencode( $goback );
                }
 ?>
-<h2><?php _e( 'Database Update Required' ); ?></h2>
+<h1><?php _e( 'Database Update Required' ); ?></h1>
 <p><?php _e( 'WordPress has been updated! Before we send you on your way, we have to update your database to the newest version.' ); ?></p>
-<p><?php _e( 'The update process may take a little while, so please be patient.' ); ?></p>
-<p class="step"><a class="button button-large" href="upgrade.php?step=1&amp;backto=<?php echo $goback; ?>"><?php _e( 'Update WordPress Database' ); ?></a></p>
+<p><?php _e( 'The database update process may take a little while, so please be patient.' ); ?></p>
+<p class="step"><a class="button button-large button-primary" href="upgrade.php?step=1&amp;backto=<?php echo $goback; ?>"><?php _e( 'Update WordPress Database' ); ?></a></p>
 <?php
                break;
        case 1:
@@ -105,7 +106,7 @@ switch ( $step ) :
                        $backto = esc_url( $backto );
                        $backto = wp_validate_redirect($backto, __get_option( 'home' ) . '/');
 ?>
-<h2><?php _e( 'Update Complete' ); ?></h2>
+<h1><?php _e( 'Update Complete' ); ?></h1>
        <p><?php _e( 'Your WordPress database has been successfully updated!' ); ?></p>
        <p class="step"><a class="button button-large" href="<?php echo $backto; ?>"><?php _e( 'Continue' ); ?></a></p>
 
index 7154148cdda0d0b819420f22a787994ffc8dabb2..65bb790dae40c0f716e6cb992bd3269a58a7c347 100644 (file)
@@ -25,6 +25,8 @@ if ( 'grid' === $mode ) {
        wp_enqueue_script( 'media-grid' );
        wp_enqueue_script( 'media' );
 
+       remove_action( 'admin_head', 'wp_admin_canonical_url' );
+
        $q = $_GET;
        // let JS handle this
        unset( $q['s'] );
@@ -126,7 +128,7 @@ if ( $doaction ) {
                                break;
                        foreach ( (array) $post_ids as $post_id ) {
                                if ( !current_user_can( 'delete_post', $post_id ) )
-                                       wp_die( __( 'You are not allowed to move this post to the trash.' ) );
+                                       wp_die( __( 'You are not allowed to move this item to the Trash.' ) );
 
                                if ( !wp_trash_post( $post_id ) )
                                        wp_die( __( 'Error in moving to Trash.' ) );
@@ -138,7 +140,7 @@ if ( $doaction ) {
                                break;
                        foreach ( (array) $post_ids as $post_id ) {
                                if ( !current_user_can( 'delete_post', $post_id ) )
-                                       wp_die( __( 'You are not allowed to move this post out of the trash.' ) );
+                                       wp_die( __( 'You are not allowed to move this item out of the Trash.' ) );
 
                                if ( !wp_untrash_post( $post_id ) )
                                        wp_die( __( 'Error in restoring from Trash.' ) );
@@ -150,7 +152,7 @@ if ( $doaction ) {
                                break;
                        foreach ( (array) $post_ids as $post_id_del ) {
                                if ( !current_user_can( 'delete_post', $post_id_del ) )
-                                       wp_die( __( 'You are not allowed to delete this post.' ) );
+                                       wp_die( __( 'You are not allowed to delete this item.' ) );
 
                                if ( !wp_delete_attachment( $post_id_del ) )
                                        wp_die( __( 'Error in deleting.' ) );
@@ -202,6 +204,12 @@ get_current_screen()->set_help_sidebar(
        '<p>' . __( '<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>' ) . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_views'      => __( 'Filter media items list' ),
+       'heading_pagination' => __( 'Media items list navigation' ),
+       'heading_list'       => __( 'Media items list' ),
+) );
+
 require_once( ABSPATH . 'wp-admin/admin-header.php' );
 ?>
 
index 6143514f7224758b7039de5502936b7eafcc4c33..88d4657bba6073235ab76854bd8b092781311df5 100644 (file)
@@ -59,22 +59,6 @@ $wp_http_referer = remove_query_arg(array('update', 'delete_count'), $wp_http_re
 
 $user_can_edit = current_user_can( 'edit_posts' ) || current_user_can( 'edit_pages' );
 
-/**
- * Optional SSL preference that can be turned on by hooking to the 'personal_options' action.
- *
- * @since 2.7.0
- *
- * @param object $user User data object
- */
-function use_ssl_preference($user) {
-?>
-       <tr class="user-use-ssl-wrap">
-               <th scope="row"><?php _e('Use https')?></th>
-               <td><label for="use_ssl"><input name="use_ssl" type="checkbox" id="use_ssl" value="1" <?php checked('1', $user->use_ssl); ?> /> <?php _e('Always use https when visiting the admin'); ?></label></td>
-       </tr>
-<?php
-}
-
 /**
  * Filter whether to allow administrators on Multisite to edit every user.
  *
@@ -230,7 +214,7 @@ if ( ! IS_PROFILE_PAGE ) {
 <input type="hidden" name="checkuser_id" value="<?php echo get_current_user_id(); ?>" />
 </p>
 
-<h3><?php _e('Personal Options'); ?></h3>
+<h2><?php _e( 'Personal Options' ); ?></h2>
 
 <table class="form-table">
 <?php if ( ! ( IS_PROFILE_PAGE && ! $user_can_edit ) ) : ?>
@@ -301,7 +285,7 @@ do_action( 'personal_options', $profileuser );
        }
 ?>
 
-<h3><?php _e('Name') ?></h3>
+<h2><?php _e( 'Name' ); ?></h2>
 
 <table class="form-table">
        <tr class="user-user-login-wrap">
@@ -392,11 +376,11 @@ if ( is_multisite() && is_network_admin() && ! IS_PROFILE_PAGE && current_user_c
 </tr>
 </table>
 
-<h3><?php _e('Contact Info') ?></h3>
+<h2><?php _e( 'Contact Info' ); ?></h2>
 
 <table class="form-table">
 <tr class="user-email-wrap">
-       <th><label for="email"><?php _e('E-mail'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
+       <th><label for="email"><?php _e('Email'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
        <td><input type="email" name="email" id="email" value="<?php echo esc_attr( $profileuser->user_email ) ?>" class="regular-text ltr" />
        <?php
        $new_email = get_option( $current_user->ID . '_new_email' );
@@ -404,7 +388,7 @@ if ( is_multisite() && is_network_admin() && ! IS_PROFILE_PAGE && current_user_c
        <div class="updated inline">
        <p><?php
                printf(
-                       __( 'There is a pending change of your e-mail to %1$s. <a href="%2$s">Cancel</a>' ),
+                       __( 'There is a pending change of your email to %1$s. <a href="%2$s">Cancel</a>' ),
                        '<code>' . $new_email['newemail'] . '</code>',
                        esc_url( self_admin_url( 'profile.php?dismiss=' . $current_user->ID . '_new_email' ) )
        ); ?></p>
@@ -444,7 +428,7 @@ if ( is_multisite() && is_network_admin() && ! IS_PROFILE_PAGE && current_user_c
 ?>
 </table>
 
-<h3><?php IS_PROFILE_PAGE ? _e('About Yourself') : _e('About the user'); ?></h3>
+<h2><?php IS_PROFILE_PAGE ? _e( 'About Yourself' ) : _e( 'About the user' ); ?></h2>
 
 <table class="form-table">
 <tr class="user-description-wrap">
@@ -453,14 +437,50 @@ if ( is_multisite() && is_network_admin() && ! IS_PROFILE_PAGE && current_user_c
        <p class="description"><?php _e('Share a little biographical information to fill out your profile. This may be shown publicly.'); ?></p></td>
 </tr>
 
+<?php if ( get_option( 'show_avatars' ) ) : ?>
+<tr class="user-profile-picture">
+       <th><?php _e( 'Profile Picture' ); ?></th>
+       <td>
+               <?php echo get_avatar( $user_id ); ?>
+               <p class="description"><?php
+                       if ( IS_PROFILE_PAGE ) {
+                               /* translators: %s: Gravatar URL */
+                               $description = sprintf( __( 'You can change your profile picture on <a href="%s">Gravatar</a>.' ),
+                                       __( 'https://en.gravatar.com/' )
+                               );
+                       } else {
+                               $description = '';
+                       }
+
+                       /**
+                        * Filter the user profile picture description displayed under the Gravatar.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param string $description The description that will be printed.
+                        */
+                       echo apply_filters( 'user_profile_picture_description', $description );
+               ?></p>
+       </td>
+</tr>
+<?php endif; ?>
+
 <?php
-/** This filter is documented in wp-admin/user-new.php */
-$show_password_fields = apply_filters( 'show_password_fields', true, $profileuser );
-if ( $show_password_fields ) :
+/**
+ * Filter the display of the password fields.
+ *
+ * @since 1.5.1
+ * @since 2.8.0 Added the `$profileuser` parameter.
+ * @since 4.4.0 Now evaluated only in user-edit.php.
+ *
+ * @param bool    $show        Whether to show the password fields. Default true.
+ * @param WP_User $profileuser User object for the current user to edit.
+ */
+if ( $show_password_fields = apply_filters( 'show_password_fields', true, $profileuser ) ) :
 ?>
 </table>
 
-<h3><?php _e('Account Management'); ?></h3>
+<h2><?php _e( 'Account Management' ); ?></h2>
 <table class="form-table">
 <tr id="password" class="user-pass1-wrap">
        <th><label for="pass1"><?php _e( 'New Password' ); ?></label></th>
@@ -568,7 +588,7 @@ if ( IS_PROFILE_PAGE && count( $sessions->get_all() ) === 1 ) : ?>
  *
  * The 'Additional Capabilities' section will only be enabled if
  * the number of the user's capabilities exceeds their number of
- * of roles.
+ * roles.
  *
  * @since 2.8.0
  *
@@ -578,7 +598,7 @@ if ( IS_PROFILE_PAGE && count( $sessions->get_all() ) === 1 ) : ?>
 if ( count( $profileuser->caps ) > count( $profileuser->roles )
        && apply_filters( 'additional_capabilities_display', true, $profileuser )
 ) : ?>
-<h3><?php _e( 'Additional Capabilities' ); ?></h3>
+<h2><?php _e( 'Additional Capabilities' ); ?></h2>
 <table class="form-table">
 <tr class="user-capabilities-wrap">
        <th scope="row"><?php _e( 'Capabilities' ); ?></th>
index 33fd41d66241fd718bae9cef5196001bb9262a14..ff0bffb8402cd347764dd2a8c338212a22576d6b 100644 (file)
 require_once( dirname( __FILE__ ) . '/admin.php' );
 
 if ( is_multisite() ) {
-       if ( ! current_user_can( 'create_users' ) && ! current_user_can( 'promote_users' ) )
-               wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       if ( ! current_user_can( 'create_users' ) && ! current_user_can( 'promote_users' ) ) {
+               wp_die(
+                       '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                       '<p>' . __( 'You do not have sufficient permissions to add users to this network.' ) . '</p>',
+                       403
+               );
+       }
 } elseif ( ! current_user_can( 'create_users' ) ) {
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to create users.' ) . '</p>',
+               403
+       );
 }
 
 if ( is_multisite() ) {
-       /**
-        *
-        * @param string $text
-        * @return string
-        */
-       function admin_created_user_email( $text ) {
-               $roles = get_editable_roles();
-               $role = $roles[ $_REQUEST['role'] ];
-               /* translators: 1: Site name, 2: site URL, 3: role */
-               return sprintf( __( 'Hi,
-You\'ve been invited to join \'%1$s\' at
-%2$s with the role of %3$s.
-If you do not want to join this site please ignore
-this email. This invitation will expire in a few days.
-
-Please click the following link to activate your user account:
-%%s' ), get_bloginfo( 'name' ), home_url(), wp_specialchars_decode( translate_user_role( $role['name'] ) ) );
-       }
        add_filter( 'wpmu_signup_user_notification_email', 'admin_created_user_email' );
 }
 
@@ -59,8 +50,13 @@ if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) {
                die();
        }
 
-       if ( ! current_user_can('promote_user', $user_details->ID) )
-               wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       if ( ! current_user_can( 'promote_user', $user_details->ID ) ) {
+               wp_die(
+                       '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                       '<p>' . __( 'You do not have sufficient permissions to add users to this network.' ) . '</p>',
+                       403
+               );
+       }
 
        // Adding an existing user to this blog
        $new_user_email = $user_details->user_email;
@@ -70,7 +66,7 @@ if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) {
        if ( ( $username != null && !is_super_admin( $user_id ) ) && ( array_key_exists($blog_id, get_blogs_of_user($user_id)) ) ) {
                $redirect = add_query_arg( array('update' => 'addexisting'), 'user-new.php' );
        } else {
-               if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
+               if ( isset( $_POST[ 'noconfirmation' ] ) && current_user_can( 'manage_network_users' ) ) {
                        add_existing_user_to_blog( array( 'user_id' => $user_id, 'role' => $_REQUEST[ 'role' ] ) );
                        $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' );
                } else {
@@ -79,6 +75,18 @@ if ( isset($_REQUEST['action']) && 'adduser' == $_REQUEST['action'] ) {
 
                        $roles = get_editable_roles();
                        $role = $roles[ $_REQUEST['role'] ];
+
+                       /**
+                        * Fires immediately after a user is invited to join a site, but before the notification is sent.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param int    $user_id     The invited user's ID.
+                        * @param array  $role        The role of invited user.
+                        * @param string $newuser_key The key of the invitation.
+                        */
+                       do_action( 'invite_user', $user_id, $role, $newuser_key );
+
                        /* translators: 1: Site name, 2: site URL, 3: role, 4: activation URL */
                        $message = __( 'Hi,
 
@@ -96,8 +104,13 @@ Please click the following link to confirm the invite:
 } elseif ( isset($_REQUEST['action']) && 'createuser' == $_REQUEST['action'] ) {
        check_admin_referer( 'create-user', '_wpnonce_create-user' );
 
-       if ( ! current_user_can('create_users') )
-               wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+       if ( ! current_user_can( 'create_users' ) ) {
+               wp_die(
+                       '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                       '<p>' . __( 'You are not allowed to create users.' ) . '</p>',
+                       403
+               );
+       }
 
        if ( ! is_multisite() ) {
                $user_id = edit_user();
@@ -127,12 +140,12 @@ Please click the following link to confirm the invite:
                         * @param string $user_login The sanitized username.
                         */
                        $new_user_login = apply_filters( 'pre_user_login', sanitize_user( wp_unslash( $_REQUEST['user_login'] ), true ) );
-                       if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
+                       if ( isset( $_POST[ 'noconfirmation' ] ) && current_user_can( 'manage_network_users' ) ) {
                                add_filter( 'wpmu_signup_user_notification', '__return_false' ); // Disable confirmation email
                                add_filter( 'wpmu_welcome_user_notification', '__return_false' ); // Disable welcome email
                        }
                        wpmu_signup_user( $new_user_login, $new_user_email, array( 'add_to_blog' => $wpdb->blogid, 'new_role' => $_REQUEST['role'] ) );
-                       if ( isset( $_POST[ 'noconfirmation' ] ) && is_super_admin() ) {
+                       if ( isset( $_POST[ 'noconfirmation' ] ) && current_user_can( 'manage_network_users' ) ) {
                                $key = $wpdb->get_var( $wpdb->prepare( "SELECT activation_key FROM {$wpdb->signups} WHERE user_login = %s AND user_email = %s", $new_user_login, $new_user_email ) );
                                wpmu_activate_signup( $key );
                                $redirect = add_query_arg( array('update' => 'addnoconfirmation'), 'user-new.php' );
@@ -274,14 +287,14 @@ if ( ! empty( $messages ) ) {
 <?php
 if ( is_multisite() ) {
        if ( $do_both )
-               echo '<h3 id="add-existing-user">' . __('Add Existing User') . '</h3>';
+               echo '<h2 id="add-existing-user">' . __( 'Add Existing User' ) . '</h2>';
        if ( !is_super_admin() ) {
                echo '<p>' . __( 'Enter the email address of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.' ) . '</p>';
-               $label = __('E-mail');
+               $label = __('Email');
                $type  = 'email';
        } else {
                echo '<p>' . __( 'Enter the email address or username of an existing user on this network to invite them to this site. That person will be sent an email asking them to confirm the invite.' ) . '</p>';
-               $label = __('E-mail or Username');
+               $label = __('Email or Username');
                $type  = 'text';
        }
 ?>
@@ -308,7 +321,7 @@ if ( is_multisite() ) {
                        </select>
                </td>
        </tr>
-<?php if ( is_super_admin() ) { ?>
+<?php if ( current_user_can( 'manage_network_users' ) ) { ?>
        <tr>
                <th scope="row"><label for="adduser-noconfirmation"><?php _e('Skip Confirmation Email') ?></label></th>
                <td><label for="adduser-noconfirmation"><input type="checkbox" name="noconfirmation" id="adduser-noconfirmation" value="1" /> <?php _e( 'Add the user without sending an email that requires their confirmation.' ); ?></label></td>
@@ -336,7 +349,7 @@ do_action( 'user_new_form', 'add-existing-user' );
 
 if ( current_user_can( 'create_users') ) {
        if ( $do_both )
-               echo '<h3 id="create-new-user">' . __( 'Add New User' ) . '</h3>';
+               echo '<h2 id="create-new-user">' . __( 'Add New User' ) . '</h2>';
 ?>
 <p><?php _e('Create a brand new user and add them to this site.'); ?></p>
 <form method="post" name="createuser" id="createuser" class="validate" novalidate="novalidate"<?php
@@ -355,17 +368,17 @@ $new_user_lastname = $creating && isset( $_POST['last_name'] ) ? wp_unslash( $_P
 $new_user_email = $creating && isset( $_POST['email'] ) ? wp_unslash( $_POST['email'] ) : '';
 $new_user_uri = $creating && isset( $_POST['url'] ) ? wp_unslash( $_POST['url'] ) : '';
 $new_user_role = $creating && isset( $_POST['role'] ) ? wp_unslash( $_POST['role'] ) : '';
-$new_user_send_password = $creating && isset( $_POST['send_password'] ) ? wp_unslash( $_POST['send_password'] ) : true;
+$new_user_send_notification = $creating && ! isset( $_POST['send_user_notification'] ) ? false : true;
 $new_user_ignore_pass = $creating && isset( $_POST['noconfirmation'] ) ? wp_unslash( $_POST['noconfirmation'] ) : '';
 
 ?>
 <table class="form-table">
        <tr class="form-field form-required">
                <th scope="row"><label for="user_login"><?php _e('Username'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
-               <td><input name="user_login" type="text" id="user_login" value="<?php echo esc_attr( $new_user_login ); ?>" aria-required="true" autocapitalize="none" autocorrect="off" /></td>
+               <td><input name="user_login" type="text" id="user_login" value="<?php echo esc_attr( $new_user_login ); ?>" aria-required="true" autocapitalize="none" autocorrect="off" maxlength="60" /></td>
        </tr>
        <tr class="form-field form-required">
-               <th scope="row"><label for="email"><?php _e('E-mail'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
+               <th scope="row"><label for="email"><?php _e('Email'); ?> <span class="description"><?php _e('(required)'); ?></span></label></th>
                <td><input name="email" type="email" id="email" value="<?php echo esc_attr( $new_user_email ); ?>" /></td>
        </tr>
 <?php if ( !is_multisite() ) { ?>
@@ -381,15 +394,6 @@ $new_user_ignore_pass = $creating && isset( $_POST['noconfirmation'] ) ? wp_unsl
                <th scope="row"><label for="url"><?php _e('Website') ?></label></th>
                <td><input name="url" type="url" id="url" class="code" value="<?php echo esc_attr( $new_user_uri ); ?>" /></td>
        </tr>
-<?php
-/**
- * Filter the display of the password fields.
- *
- * @since 1.5.1
- *
- * @param bool $show Whether to show the password fields. Default true.
- */
-if ( apply_filters( 'show_password_fields', true ) ) : ?>
        <tr class="form-field form-required user-pass1-wrap">
                <th scope="row">
                        <label for="pass1">
@@ -414,7 +418,6 @@ if ( apply_filters( 'show_password_fields', true ) ) : ?>
                                </button>
                                <div style="display:none" id="pass-strength-result" aria-live="polite"></div>
                        </div>
-                       <p><span class="description"><?php _e( 'A password reset link will be sent to the user via email.' ); ?></span></p>
                </td>
        </tr>
        <tr class="form-field form-required user-pass2-wrap hide-if-js">
@@ -432,7 +435,10 @@ if ( apply_filters( 'show_password_fields', true ) ) : ?>
                        </label>
                </td>
        </tr>
-<?php endif; ?>
+       <tr>
+               <th scope="row"><?php _e( 'Send User Notification' ) ?></th>
+               <td><label for="send_user_notification"><input type="checkbox" name="send_user_notification" id="send_user_notification" value="1" <?php checked( $new_user_send_notification ); ?> /> <?php _e( 'Send the new user an email about their account.' ); ?></label></td>
+       </tr>
 <?php } // !is_multisite ?>
        <tr class="form-field">
                <th scope="row"><label for="role"><?php _e('Role'); ?></label></th>
@@ -445,7 +451,7 @@ if ( apply_filters( 'show_password_fields', true ) ) : ?>
                        </select>
                </td>
        </tr>
-       <?php if ( is_multisite() && is_super_admin() ) { ?>
+       <?php if ( is_multisite() && current_user_can( 'manage_network_users' ) ) { ?>
        <tr>
                <th scope="row"><label for="noconfirmation"><?php _e('Skip Confirmation Email') ?></label></th>
                <td><label for="noconfirmation"><input type="checkbox" name="noconfirmation" id="noconfirmation" value="1" <?php checked( $new_user_ignore_pass ); ?> /> <?php _e( 'Add the user without sending an email that requires their confirmation.' ); ?></label></td>
index df7648b7774a7255ef7ce7d1fe6baef50bd8b2ea..cdf0d8b372e5e2283fe64156d4f1fede91143647 100644 (file)
@@ -1,16 +1,22 @@
 <?php
 /**
- * Users administration panel.
+ * User administration panel
  *
  * @package WordPress
  * @subpackage Administration
+ * @since 1.0.0
  */
 
 /** WordPress Administration Bootstrap */
 require_once( dirname( __FILE__ ) . '/admin.php' );
 
-if ( ! current_user_can( 'list_users' ) )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! current_user_can( 'list_users' ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to browse users.' ) . '</p>',
+               403
+       );
+}
 
 $wp_list_table = _get_list_table('WP_Users_List_Table');
 $pagenum = $wp_list_table->get_pagenum();
@@ -63,6 +69,12 @@ get_current_screen()->set_help_sidebar(
     '<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
+get_current_screen()->set_screen_reader_content( array(
+       'heading_views'      => __( 'Filter users list' ),
+       'heading_pagination' => __( 'Users list navigation' ),
+       'heading_list'       => __( 'Users list' ),
+) );
+
 if ( empty($_REQUEST) ) {
        $referer = '<input type="hidden" name="wp_http_referer" value="'. esc_attr( wp_unslash( $_SERVER['REQUEST_URI'] ) ) . '" />';
 } elseif ( isset($_REQUEST['wp_http_referer']) ) {
@@ -75,25 +87,6 @@ if ( empty($_REQUEST) ) {
 
 $update = '';
 
-/**
- * @since 3.5.0
- * @access private
- */
-function delete_users_add_js() { ?>
-<script>
-jQuery(document).ready( function($) {
-       var submit = $('#submit').prop('disabled', true);
-       $('input[name=delete_option]').one('change', function() {
-               submit.prop('disabled', false);
-       });
-       $('#reassign_user').focus( function() {
-               $('#delete_option1').prop('checked', true).trigger('change');
-       });
-});
-</script>
-<?php
-}
-
 switch ( $wp_list_table->current_action() ) {
 
 /* Bulk Dropdown menu Role changes */
@@ -109,8 +102,16 @@ case 'promote':
        }
 
        $editable_roles = get_editable_roles();
-       if ( empty( $editable_roles[$_REQUEST['new_role']] ) )
-               wp_die(__('You can&#8217;t give users that role.'));
+       $role = false;
+       if ( ! empty( $_REQUEST['new_role2'] ) ) {
+               $role = $_REQUEST['new_role2'];
+       } elseif ( ! empty( $_REQUEST['new_role'] ) ) {
+               $role = $_REQUEST['new_role'];
+       }
+
+       if ( ! $role || empty( $editable_roles[ $role ] ) ) {
+               wp_die( __( 'You can&#8217;t give users that role.' ) );
+       }
 
        $userids = $_REQUEST['users'];
        $update = 'promote';
@@ -120,18 +121,23 @@ case 'promote':
                if ( ! current_user_can('promote_user', $id) )
                        wp_die(__('You can&#8217;t edit that user.'));
                // The new role of the current user must also have the promote_users cap or be a multisite super admin
-               if ( $id == $current_user->ID && ! $wp_roles->role_objects[ $_REQUEST['new_role'] ]->has_cap('promote_users')
+               if ( $id == $current_user->ID && ! $wp_roles->role_objects[ $role ]->has_cap('promote_users')
                        && ! ( is_multisite() && is_super_admin() ) ) {
                                $update = 'err_admin_role';
                                continue;
                }
 
                // If the user doesn't already belong to the blog, bail.
-               if ( is_multisite() && !is_user_member_of_blog( $id ) )
-                       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+               if ( is_multisite() && !is_user_member_of_blog( $id ) ) {
+                       wp_die(
+                               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+                               '<p>' . __( 'One of the selected users is not a member of this site.' ) . '</p>',
+                               403
+                       );
+               }
 
                $user = get_userdata( $id );
-               $user->set_role($_REQUEST['new_role']);
+               $user->set_role( $role );
        }
 
        wp_redirect(add_query_arg('update', $update, $redirect));
@@ -205,7 +211,15 @@ case 'delete':
        else
                $userids = array_map( 'intval', (array) $_REQUEST['users'] );
 
-       add_action( 'admin_head', 'delete_users_add_js' );
+       $users_posts = new WP_Query( array(
+               'post_type' => 'any',
+               'author' => implode( ',', $userids ),
+               'posts_per_page' => 1
+       ) );
+
+       if ( $users_posts->have_posts() ) {
+               add_action( 'admin_head', 'delete_users_add_js' );
+       }
 
        include( ABSPATH . 'wp-admin/admin-header.php' );
 ?>
@@ -241,20 +255,24 @@ case 'delete':
        }
        ?>
        </ul>
-<?php if ( $go_delete ) : ?>
-       <?php if ( 1 == $go_delete ) : ?>
-               <fieldset><p><legend><?php _e( 'What should be done with content owned by this user?' ); ?></legend></p>
-       <?php else : ?>
-               <fieldset><p><legend><?php _e( 'What should be done with content owned by these users?' ); ?></legend></p>
-       <?php endif; ?>
-       <ul style="list-style:none;">
-               <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" />
-               <?php _e('Delete all content.'); ?></label></li>
-               <li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
-               <?php echo '<label for="delete_option1">' . __( 'Attribute all content to:' ) . '</label> ';
-               wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li>
-       </ul></fieldset>
-       <?php
+<?php if ( $go_delete ) :
+
+       if ( ! $users_posts->have_posts() ) : ?>
+               <input type="hidden" name="delete_option" value="delete" />
+       <?php else: ?>
+               <?php if ( 1 == $go_delete ) : ?>
+                       <fieldset><p><legend><?php _e( 'What should be done with content owned by this user?' ); ?></legend></p>
+               <?php else : ?>
+                       <fieldset><p><legend><?php _e( 'What should be done with content owned by these users?' ); ?></legend></p>
+               <?php endif; ?>
+               <ul style="list-style:none;">
+                       <li><label><input type="radio" id="delete_option0" name="delete_option" value="delete" />
+                       <?php _e('Delete all content.'); ?></label></li>
+                       <li><input type="radio" id="delete_option1" name="delete_option" value="reassign" />
+                       <?php echo '<label for="delete_option1">' . __( 'Attribute all content to:' ) . '</label> ';
+                       wp_dropdown_users( array( 'name' => 'reassign_user', 'exclude' => array_diff( $userids, array($current_user->ID) ) ) ); ?></li>
+               </ul></fieldset>
+       <?php endif;
        /**
         * Fires at the end of the delete users form prior to the confirm button.
         *
@@ -265,7 +283,7 @@ case 'delete':
        do_action( 'delete_user_form', $current_user );
        ?>
        <input type="hidden" name="action" value="dodelete" />
-       <?php submit_button( __('Confirm Deletion'), 'secondary' ); ?>
+       <?php submit_button( __('Confirm Deletion'), 'primary' ); ?>
 <?php else : ?>
        <p><?php _e('There are no valid users selected for deletion.'); ?></p>
 <?php endif; ?>
@@ -363,7 +381,7 @@ case 'remove':
 </ul>
 <?php if ( $go_remove ) : ?>
                <input type="hidden" name="action" value="doremove" />
-               <?php submit_button( __('Confirm Removal'), 'secondary' ); ?>
+               <?php submit_button( __('Confirm Removal'), 'primary' ); ?>
 <?php else : ?>
        <p><?php _e('There are no valid users selected for removal.'); ?></p>
 <?php endif; ?>
index 679f1032b04a451cf0190c6303187f5a44677e4f..3b43ac06d2ae1e5775f9349d74b7ecc2992491b9 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Widgets administration panel.
+ * Widget administration panel
  *
  * @package WordPress
  * @subpackage Administration
@@ -12,8 +12,13 @@ require_once( dirname( __FILE__ ) . '/admin.php' );
 /** WordPress Administration Widgets API */
 require_once(ABSPATH . 'wp-admin/includes/widgets.php');
 
-if ( ! current_user_can('edit_theme_options') )
-       wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
+if ( ! current_user_can( 'edit_theme_options' ) ) {
+       wp_die(
+               '<h1>' . __( 'Cheatin&#8217; uh?' ) . '</h1>' .
+               '<p>' . __( 'You are not allowed to edit theme options on this site.' ) . '</p>',
+               403
+       );
+}
 
 $widgets_access = get_user_setting( 'widgets_access' );
 if ( isset($_GET['widgets-access']) ) {
@@ -21,15 +26,6 @@ if ( isset($_GET['widgets-access']) ) {
        set_user_setting( 'widgets_access', $widgets_access );
 }
 
-/**
- *
- * @param string $classes
- * @return string
- */
-function wp_widgets_access_body_class($classes) {
-       return "$classes widgets_access ";
-}
-
 if ( 'on' == $widgets_access ) {
        add_filter( 'admin_body_class', 'wp_widgets_access_body_class' );
 } else {
@@ -93,7 +89,7 @@ foreach ( $sidebars_widgets as $sidebar_id => $widgets ) {
        if ( 'wp_inactive_widgets' == $sidebar_id )
                continue;
 
-       if ( !isset( $wp_registered_sidebars[ $sidebar_id ] ) ) {
+       if ( ! is_registered_sidebar( $sidebar_id ) ) {
                if ( ! empty( $widgets ) ) { // register the inactive_widgets area as sidebar
                        register_sidebar(array(
                                'name' => __( 'Inactive Sidebar (not used)' ),
@@ -156,6 +152,17 @@ if ( isset($_POST['savewidget']) || isset($_POST['removewidget']) ) {
 
                $sidebar = array_diff( $sidebar, array($widget_id) );
                $_POST = array('sidebar' => $sidebar_id, 'widget-' . $id_base => array(), 'the-widget-id' => $widget_id, 'delete_widget' => '1');
+
+               /**
+                * Fires immediately after a widget has been marked for deletion.
+                *
+                * @since 4.4.0
+                *
+                * @param string $widget_id  ID of the widget marked for deletion.
+                * @param string $sidebar_id ID of the sidebar the widget was deleted from.
+                * @param string $id_base    ID base for the widget.
+                */
+               do_action( 'delete_widget', $widget_id, $sidebar_id, $id_base );
        }
 
        $_POST['widget-id'] = $sidebar;
@@ -187,6 +194,28 @@ if ( isset($_POST['savewidget']) || isset($_POST['removewidget']) ) {
        exit;
 }
 
+// Remove inactive widgets without js
+if ( isset( $_POST['removeinactivewidgets'] ) ) {
+       check_admin_referer( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' );
+
+       if ( $_POST['removeinactivewidgets'] ) {
+               foreach ( $sidebars_widgets['wp_inactive_widgets'] as $key => $widget_id ) {
+                       $pieces = explode( '-', $widget_id );
+                       $multi_number = array_pop( $pieces );
+                       $id_base = implode( '-', $pieces );
+                       $widget = get_option( 'widget_' . $id_base );
+                       unset( $widget[$multi_number] );
+                       update_option( 'widget_' . $id_base, $widget );
+                       unset( $sidebars_widgets['wp_inactive_widgets'][$key] );
+               }
+
+               wp_set_sidebars_widgets( $sidebars_widgets );
+       }
+
+       wp_redirect( admin_url( 'widgets.php?message=0' ) );
+       exit;
+}
+
 // Output the widget form without js
 if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) {
        $widget_id = $_GET['editwidget'];
@@ -237,7 +266,7 @@ if ( isset($_GET['editwidget']) && $_GET['editwidget'] ) {
        <div class="wrap">
        <h1><?php echo esc_html( $title ); ?></h1>
        <div class="editwidget"<?php echo $width; ?>>
-       <h3><?php printf( __( 'Widget %s' ), $name ); ?></h3>
+       <h2><?php printf( __( 'Widget %s' ), $name ); ?></h2>
 
        <form action="widgets.php" method="post">
        <div class="widget-inside">
@@ -354,7 +383,7 @@ do_action( 'widgets_admin_page' ); ?>
        <div id="available-widgets" class="widgets-holder-wrap">
                <div class="sidebar-name">
                        <div class="sidebar-name-arrow"><br /></div>
-                       <h3><?php _e('Available Widgets'); ?> <span id="removing-widget"><?php _ex('Deactivate', 'removing-widget'); ?> <span></span></span></h3>
+                       <h2><?php _e( 'Available Widgets' ); ?> <span id="removing-widget"><?php _ex( 'Deactivate', 'removing-widget' ); ?> <span></span></span></h2>
                </div>
                <div class="widget-holder">
                        <div class="sidebar-description">
@@ -381,8 +410,25 @@ foreach ( $wp_registered_sidebars as $sidebar => $registered_sidebar ) {
                <div class="<?php echo esc_attr( $wrap_class ); ?>">
                        <div class="widget-holder inactive">
                                <?php wp_list_widget_controls( $registered_sidebar['id'], $registered_sidebar['name'] ); ?>
-                               <div class="clear"></div>
+                               <div class="remove-inactive-widgets">
+                                       <form action="" method="post">
+                                               <p>
+                                                       <?php
+                                                       $attributes = array( 'id' => 'inactive-widgets-control-remove' );
+
+                                                       if ( empty($sidebars_widgets['wp_inactive_widgets']) ) {
+                                                               $attributes['disabled'] = '';
+                                                       }
+
+                                                       submit_button( __( 'Clear Inactive Widgets' ), 'delete', 'removeinactivewidgets', false, $attributes );
+                                                       ?>
+                                                       <span class="spinner">
+                                               </p>
+                                               <?php wp_nonce_field( 'remove-inactive-widgets', '_wpnonce_remove_inactive_widgets' ); ?>
+                                       </form>
+                               </div>
                        </div>
+                       <p class="description"><?php _e( 'This will clear all items from the inactive widgets list. You will not be able to restore any customizations.' ); ?></p>
                </div>
                <?php
 
index e1e41720a40d81e2bf6c5d2d958a2ef39996d690..2fb148a8dca418ddd9f050e0dc9574b5d25717ad 100644 (file)
@@ -17,149 +17,37 @@ require( dirname(__FILE__) . '/wp-load.php' );
 
 nocache_headers();
 
-$comment_post_ID = isset($_POST['comment_post_ID']) ? (int) $_POST['comment_post_ID'] : 0;
-
-$post = get_post($comment_post_ID);
-
-if ( empty( $post->comment_status ) ) {
-       /**
-        * Fires when a comment is attempted on a post that does not exist.
-        *
-        * @since 1.5.0
-        *
-        * @param int $comment_post_ID Post ID.
-        */
-       do_action( 'comment_id_not_found', $comment_post_ID );
-       exit;
-}
-
-// get_post_status() will get the parent status for attachments.
-$status = get_post_status($post);
-
-$status_obj = get_post_status_object($status);
-
-if ( ! comments_open( $comment_post_ID ) ) {
-       /**
-        * Fires when a comment is attempted on a post that has comments closed.
-        *
-        * @since 1.5.0
-        *
-        * @param int $comment_post_ID Post ID.
-        */
-       do_action( 'comment_closed', $comment_post_ID );
-       wp_die( __( 'Sorry, comments are closed for this item.' ), 403 );
-} elseif ( 'trash' == $status ) {
-       /**
-        * Fires when a comment is attempted on a trashed post.
-        *
-        * @since 2.9.0
-        *
-        * @param int $comment_post_ID Post ID.
-        */
-       do_action( 'comment_on_trash', $comment_post_ID );
-       exit;
-} elseif ( ! $status_obj->public && ! $status_obj->private ) {
-       /**
-        * Fires when a comment is attempted on a post in draft mode.
-        *
-        * @since 1.5.1
-        *
-        * @param int $comment_post_ID Post ID.
-        */
-       do_action( 'comment_on_draft', $comment_post_ID );
-       exit;
-} elseif ( post_password_required( $comment_post_ID ) ) {
-       /**
-        * Fires when a comment is attempted on a password-protected post.
-        *
-        * @since 2.9.0
-        *
-        * @param int $comment_post_ID Post ID.
-        */
-       do_action( 'comment_on_password_protected', $comment_post_ID );
-       exit;
-} else {
-       /**
-        * Fires before a comment is posted.
-        *
-        * @since 2.8.0
-        *
-        * @param int $comment_post_ID Post ID.
-        */
-       do_action( 'pre_comment_on_post', $comment_post_ID );
-}
-
-$comment_author       = ( isset($_POST['author']) )  ? trim(strip_tags($_POST['author'])) : null;
-$comment_author_email = ( isset($_POST['email']) )   ? trim($_POST['email']) : null;
-$comment_author_url   = ( isset($_POST['url']) )     ? trim($_POST['url']) : null;
-$comment_content      = ( isset($_POST['comment']) ) ? trim($_POST['comment']) : null;
-
-// If the user is logged in
-$user = wp_get_current_user();
-if ( $user->exists() ) {
-       if ( empty( $user->display_name ) )
-               $user->display_name=$user->user_login;
-       $comment_author       = wp_slash( $user->display_name );
-       $comment_author_email = wp_slash( $user->user_email );
-       $comment_author_url   = wp_slash( $user->user_url );
-       if ( current_user_can( 'unfiltered_html' ) ) {
-               if ( ! isset( $_POST['_wp_unfiltered_html_comment'] )
-                       || ! wp_verify_nonce( $_POST['_wp_unfiltered_html_comment'], 'unfiltered-html-comment_' . $comment_post_ID )
-               ) {
-                       kses_remove_filters(); // start with a clean slate
-                       kses_init_filters(); // set up the filters
-               }
-       }
-} else {
-       if ( get_option( 'comment_registration' ) || 'private' == $status ) {
-               wp_die( __( 'Sorry, you must be logged in to post a comment.' ), 403 );
+$comment = wp_handle_comment_submission( wp_unslash( $_POST ) );
+if ( is_wp_error( $comment ) ) {
+       $data = $comment->get_error_data();
+       if ( ! empty( $data ) ) {
+               wp_die( $comment->get_error_message(), $data );
+       } else {
+               exit;
        }
 }
 
-$comment_type = '';
-
-if ( get_option('require_name_email') && !$user->exists() ) {
-       if ( 6 > strlen( $comment_author_email ) || '' == $comment_author ) {
-               wp_die( __( '<strong>ERROR</strong>: please fill the required fields (name, email).' ), 200 );
-       } elseif ( ! is_email( $comment_author_email ) ) {
-               wp_die( __( '<strong>ERROR</strong>: please enter a valid email address.' ), 200 );
-       }
-}
-
-if ( '' == $comment_content ) {
-       wp_die( __( '<strong>ERROR</strong>: please type a comment.' ), 200 );
-}
-
-$comment_parent = isset($_POST['comment_parent']) ? absint($_POST['comment_parent']) : 0;
-
-$commentdata = compact('comment_post_ID', 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content', 'comment_type', 'comment_parent', 'user_ID');
-
-$comment_id = wp_new_comment( $commentdata );
-if ( ! $comment_id ) {
-       wp_die( __( "<strong>ERROR</strong>: The comment could not be saved. Please try again later." ) );
-}
-
-$comment = get_comment( $comment_id );
+$user = wp_get_current_user();
 
 /**
  * Perform other actions when comment cookies are set.
  *
  * @since 3.4.0
  *
- * @param object $comment Comment object.
- * @param WP_User $user   User object. The user may not exist.
+ * @param WP_Comment $comment Comment object.
+ * @param WP_User    $user    User object. The user may not exist.
  */
 do_action( 'set_comment_cookies', $comment, $user );
 
-$location = empty($_POST['redirect_to']) ? get_comment_link($comment_id) : $_POST['redirect_to'] . '#comment-' . $comment_id;
+$location = empty( $_POST['redirect_to'] ) ? get_comment_link( $comment ) : $_POST['redirect_to'] . '#comment-' . $comment->comment_ID;
 
 /**
  * Filter the location URI to send the commenter after posting.
  *
  * @since 2.0.5
  *
- * @param string $location The 'redirect_to' URI sent via $_POST.
- * @param object $comment  Comment object.
+ * @param string     $location The 'redirect_to' URI sent via $_POST.
+ * @param WP_Comment $comment  Comment object.
  */
 $location = apply_filters( 'comment_post_redirect', $location, $comment );
 
index b754ec678e9519e79fa5803a90017d8134acbaf4..05e0ab9c20c8f6fbf797a6ad57b56bee63b72f69 100644 (file)
     color: #AAA;
     font-style: italic;
 }
-span.comment-link a {
+table.comments td.comment p a {
     text-decoration: underline;
 }
-span.comment-link:after {
-    content: " "attr(title) " ";
+table.comments td.comment p a:after {
+    content: attr(href);
     color: #aaa;
-    text-decoration: none;
+    display: inline-block; /* Show the URL without the link's underline extending under it. */
+    padding: 0 1ex; /* Because it's inline block, we can't just use spaces in the content: attribute to separate it from the link text. */
 }
 .mshot-arrow {
     width: 0;
@@ -63,6 +64,15 @@ span.comment-link:after {
     border-radius: 6px;
     -webkit-border-radius: 6px;
 }
+.akismet-mshot {
+    position: absolute;
+    z-index: 100;
+}
+.akismet-mshot .mshot-image {
+    margin: 0;
+    height: 338px;
+    width: 450px;
+}
 h2.ak-header {
     padding: 30px;
     background: #649316 url('img/logo-full-2x.png') no-repeat 20px center;
index 5e857d16128bc7d4bbcf8dbaacbde1507ea31c32..fb54f9f1e730d6e9fc004cf8a7553ffc8f6e70cd 100644 (file)
@@ -1,4 +1,8 @@
 jQuery( function ( $ ) {
+       var mshotRemovalTimer = null;
+       var mshotSecondTryTimer = null
+       var mshotThirdTryTimer = null
+       
        $( 'a.activate-option' ).click( function(){
                var link = $( this );
                if ( link.hasClass( 'clicked' ) ) {
@@ -101,30 +105,55 @@ jQuery( function ( $ ) {
 
                return false;
        });
-       $('a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type').mouseover(function () {
-               var wpcomProtocol = ( 'https:' === location.protocol ) ? 'https://' : 'http://';
-               // Need to determine size of author column
-               var thisParentWidth = $(this).parent().width();
-               // It changes based on if there is a gravatar present
-               thisParentWidth = ($(this).parent().find('.grav-hijack').length) ? thisParentWidth - 42 + 'px' : thisParentWidth + 'px';
-               if ($(this).find('.mShot').length == 0 && !$(this).hasClass('akismet_undo_link_removal')) {
-                       var self = $( this );
-                       $('.widefat td').css('overflow', 'visible');
-                       $(this).css('position', 'relative');
-                       var thisHref = $.URLEncode( $(this).attr('href') );
-                       $(this).append('<div class="mShot mshot-container" style="left: '+thisParentWidth+'"><div class="mshot-arrow"></div><img src="//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450" width="450" class="mshot-image" style="margin: 0;" /></div>');
-                       setTimeout(function () {
-                               self.find( '.mshot-image' ).attr('src', '//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=2');
-                       }, 6000);
-                       setTimeout(function () {
-                               self.find( '.mshot-image' ).attr('src', '//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=3');
-                       }, 12000);
-               } else {
-                       $(this).find('.mShot').css('left', thisParentWidth).show();
+
+       // Show a preview image of the hovered URL. Applies to author URLs and URLs inside the comments.
+       $( 'a[id^="author_comment_url"], tr.pingback td.column-author a:first-of-type, table.comments td.comment p a' ).mouseover( function () {
+               clearTimeout( mshotRemovalTimer );
+
+               if ( $( '.akismet-mshot' ).length > 0 ) {
+                       if ( $( '.akismet-mshot:first' ).data( 'link' ) == this ) {
+                               // The preview is already showing for this link.
+                               return;
+                       }
+                       else {
+                               // A new link is being hovered, so remove the old preview.
+                               $( '.akismet-mshot' ).remove();
+                       }
                }
-       }).mouseout(function () {
-               $(this).find('.mShot').hide();
-       });
+
+               clearTimeout( mshotSecondTryTimer );
+               clearTimeout( mshotThirdTryTimer );
+
+               var thisHref = $.URLEncode( $( this ).attr( 'href' ) );
+
+               var mShot = $( '<div class="akismet-mshot mshot-container"><div class="mshot-arrow"></div><img src="//s0.wordpress.com/mshots/v1/' + thisHref + '?w=450" width="450" height="338" class="mshot-image" /></div>' );
+               mShot.data( 'link', this );
+
+               var offset = $( this ).offset();
+
+               mShot.offset( {
+                       left : Math.min( $( window ).width() - 475, offset.left + $( this ).width() + 10 ), // Keep it on the screen if the link is near the edge of the window.
+                       top: offset.top + ( $( this ).height() / 2 ) - 101 // 101 = top offset of the arrow plus the top border thickness
+               } );
+
+               mshotSecondTryTimer = setTimeout( function () {
+                       mShot.find( '.mshot-image' ).attr( 'src', '//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=2' );
+               }, 6000 );
+
+               mshotThirdTryTimer = setTimeout( function () {
+                       mShot.find( '.mshot-image' ).attr( 'src', '//s0.wordpress.com/mshots/v1/'+thisHref+'?w=450&r=3' );
+               }, 12000 );
+
+               $( 'body' ).append( mShot );
+       } ).mouseout( function () {
+               mshotRemovalTimer = setTimeout( function () {
+                       clearTimeout( mshotSecondTryTimer );
+                       clearTimeout( mshotThirdTryTimer );
+
+                       $( '.akismet-mshot' ).remove();
+               }, 200 );
+       } );
+
        $('.checkforspam:not(.button-disabled)').click( function(e) {
                $('.checkforspam:not(.button-disabled)').addClass('button-disabled');
                $('.checkforspam-spinner').addClass( 'spinner' );
index 81b20f04e45656ce2769bd7187fca6bfc7dc8509..7cdd06805d53ad977306f5f200d163a10ef0043e 100644 (file)
@@ -5,8 +5,8 @@
 /*
 Plugin Name: Akismet
 Plugin URI: http://akismet.com/
-Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from comment and trackback spam</strong>. It keeps your site protected from spam even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/">Sign up for an Akismet API key</a>, and 3) Go to your Akismet configuration page, and save your API key.
-Version: 3.1.3
+Description: Used by millions, Akismet is quite possibly the best way in the world to <strong>protect your blog from spam</strong>. It keeps your site protected even while you sleep. To get started: 1) Click the "Activate" link to the left of this description, 2) <a href="http://akismet.com/get/">Sign up for an Akismet plan</a> to get an API key, and 3) Go to your Akismet configuration page, and save your API key.
+Version: 3.1.5
 Author: Automattic
 Author URI: http://automattic.com/wordpress-plugins/
 License: GPLv2 or later
@@ -27,6 +27,8 @@ 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.
+
+Copyright 2005-2015 Automattic, Inc.
 */
 
 // Make sure we don't expose any info if called directly
@@ -35,7 +37,7 @@ if ( !function_exists( 'add_action' ) ) {
        exit;
 }
 
-define( 'AKISMET_VERSION', '3.1.3' );
+define( 'AKISMET_VERSION', '3.1.5' );
 define( 'AKISMET__MINIMUM_WP_VERSION', '3.2' );
 define( 'AKISMET__PLUGIN_URL', plugin_dir_url( __FILE__ ) );
 define( 'AKISMET__PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
index 960739f8f81d5517cbf49654dc2ff30eabc9ab88..6a05b2baa089085b9fdd68739d2901600372be5b 100644 (file)
@@ -41,7 +41,6 @@ class Akismet_Admin {
 
                add_filter( 'plugin_action_links', array( 'Akismet_Admin', 'plugin_action_links' ), 10, 2 );
                add_filter( 'comment_row_actions', array( 'Akismet_Admin', 'comment_row_action' ), 10, 2 );
-               add_filter( 'comment_text', array( 'Akismet_Admin', 'text_add_link_class' ) );
                
                add_filter( 'plugin_action_links_'.plugin_basename( plugin_dir_path( __FILE__ ) . 'akismet.php'), array( 'Akismet_Admin', 'admin_plugin_settings_link' ) );
                
@@ -129,8 +128,8 @@ class Akismet_Admin {
                                                'title'         => __( 'Overview' , 'akismet'),
                                                'content'       =>
                                                        '<p><strong>' . esc_html__( 'Akismet Setup' , 'akismet') . '</strong></p>' .
-                                                       '<p>' . esc_html__( 'Akismet filters out your comment and trackback spam for you, so you can focus on more important things.' , 'akismet') . '</p>' .
-                                                       '<p>' . esc_html__( 'On this page, you are able to setup the Akismet plugin.' , 'akismet') . '</p>',
+                                                       '<p>' . esc_html__( 'Akismet filters out spam, so you can focus on more important things.' , 'akismet') . '</p>' .
+                                                       '<p>' . esc_html__( 'On this page, you are able to set up the Akismet plugin.' , 'akismet') . '</p>',
                                        )
                                );
 
@@ -141,7 +140,7 @@ class Akismet_Admin {
                                                'content'       =>
                                                        '<p><strong>' . esc_html__( 'Akismet Setup' , 'akismet') . '</strong></p>' .
                                                        '<p>' . esc_html__( 'You need to enter an API key to activate the Akismet service on your site.' , 'akismet') . '</p>' .
-                                                       '<p>' . sprintf( __( 'Signup for an account on %s to get an API Key.' , 'akismet'), '<a href="https://akismet.com/plugin-signup/" target="_blank">Akismet.com</a>' ) . '</p>',
+                                                       '<p>' . sprintf( __( 'Sign up for an account on %s to get an API Key.' , 'akismet'), '<a href="https://akismet.com/plugin-signup/" target="_blank">Akismet.com</a>' ) . '</p>',
                                        )
                                );
 
@@ -167,7 +166,7 @@ class Akismet_Admin {
                                                'title'         => __( 'Overview' , 'akismet'),
                                                'content'       =>
                                                        '<p><strong>' . esc_html__( 'Akismet Stats' , 'akismet') . '</strong></p>' .
-                                                       '<p>' . esc_html__( 'Akismet filters out your comment and trackback spam for you, so you can focus on more important things.' , 'akismet') . '</p>' .
+                                                       '<p>' . esc_html__( 'Akismet filters out spam, so you can focus on more important things.' , 'akismet') . '</p>' .
                                                        '<p>' . esc_html__( 'On this page, you are able to view stats on spam filtered on your site.' , 'akismet') . '</p>',
                                        )
                                );
@@ -180,7 +179,7 @@ class Akismet_Admin {
                                                'title'         => __( 'Overview' , 'akismet'),
                                                'content'       =>
                                                        '<p><strong>' . esc_html__( 'Akismet Configuration' , 'akismet') . '</strong></p>' .
-                                                       '<p>' . esc_html__( 'Akismet filters out your comment and trackback spam for you, so you can focus on more important things.' , 'akismet') . '</p>' .
+                                                       '<p>' . esc_html__( 'Akismet filters out spam, so you can focus on more important things.' , 'akismet') . '</p>' .
                                                        '<p>' . esc_html__( 'On this page, you are able to enter/remove an API key, view account information and view spam stats.' , 'akismet') . '</p>',
                                        )
                                );
@@ -592,18 +591,6 @@ class Akismet_Admin {
                return $links;
        }
 
-       public static function text_add_link_callback( $m ) {
-               // bare link?
-               if ( $m[4] == $m[2] )
-                       return '<a '.$m[1].' href="'.$m[2].'" '.$m[3].' class="comment-link">'.$m[4].'</a>';
-               else
-                       return '<span title="'.$m[2].'" class="comment-link"><a '.$m[1].' href="'.$m[2].'" '.$m[3].' class="comment-link">'.$m[4].'</a></span>';
-       }
-
-       public static function text_add_link_class( $comment_text ) {
-               return preg_replace_callback( '#<a ([^>]*)href="([^"]+)"([^>]*)>(.*?)</a>#i', array( 'Akismet_Admin', 'text_add_link_callback' ), $comment_text );
-       }
-
        // Total spam in queue
        // get_option( 'akismet_spam_count' ) is the total caught ever
        public static function get_spam_count( $type = false ) {
@@ -880,11 +867,11 @@ class Akismet_Admin {
                                        $cleaning_up      = __( 'Cleaning up spam takes time.' , 'akismet');
 
                                        if ( $total_in_days > 1 )
-                                               $time_saved = $cleaning_up . ' ' . sprintf( __( 'Since you joined us, Akismet has saved you %s days!' , 'akismet'), number_format_i18n( $total_in_days ) );
+                                               $time_saved = $cleaning_up . ' ' . sprintf( __( 'Akismet has saved you %s days!' , 'akismet'), number_format_i18n( $total_in_days ) );
                                        elseif ( $total_in_hours > 1 )
-                                               $time_saved = $cleaning_up . ' ' . sprintf( __( 'Since you joined us, Akismet has saved you %d hours!' , 'akismet'), $total_in_hours );
+                                               $time_saved = $cleaning_up . ' ' . sprintf( __( 'Akismet has saved you %d hours!' , 'akismet'), $total_in_hours );
                                        elseif ( $total_in_minutes >= 30 )
-                                               $time_saved = $cleaning_up . ' ' . sprintf( __( 'Since you joined us, Akismet has saved you %d minutes!' , 'akismet'), $total_in_minutes );
+                                               $time_saved = $cleaning_up . ' ' . sprintf( __( 'Akismet has saved you %d minutes!' , 'akismet'), $total_in_minutes );
                                }
 
                                Akismet::view( 'notice', array( 'type' => 'active-notice', 'time_saved' => $time_saved ) );
index 7a637386d0674ded435c889389a8fbb12a7480f5..ede1d1b96df21104f2d697cfab98793e7131bbcc 100644 (file)
@@ -708,14 +708,19 @@ class Akismet {
                           isset( $comment1['comment_post_ID'], $comment2['comment_post_ID'] )
                        && intval( $comment1['comment_post_ID'] ) == intval( $comment2['comment_post_ID'] )
                        && (
-                               $comment1['comment_author'] == $comment2['comment_author']
-                               || stripslashes( $comment1['comment_author'] ) == $comment2['comment_author']
-                               || $comment1['comment_author'] == stripslashes( $comment2['comment_author'] )
+                               // The comment author length max is 255 characters, limited by the TINYTEXT column type.
+                               substr( $comment1['comment_author'], 0, 255 ) == substr( $comment2['comment_author'], 0, 255 )
+                               || substr( stripslashes( $comment1['comment_author'] ), 0, 255 ) == substr( $comment2['comment_author'], 0, 255 )
+                               || substr( $comment1['comment_author'], 0, 255 ) == substr( stripslashes( $comment2['comment_author'] ), 0, 255 )
                                )
                        && (
-                               $comment1['comment_author_email'] == $comment2['comment_author_email']
-                               || stripslashes( $comment1['comment_author_email'] ) == $comment2['comment_author_email']
-                               || $comment1['comment_author_email'] == stripslashes( $comment2['comment_author_email'] )
+                               // The email max length is 100 characters, limited by the VARCHAR(100) column type.
+                               substr( $comment1['comment_author_email'], 0, 100 ) == substr( $comment2['comment_author_email'], 0, 100 )
+                               || substr( stripslashes( $comment1['comment_author_email'] ), 0, 100 ) == substr( $comment2['comment_author_email'], 0, 100 )
+                               || substr( $comment1['comment_author_email'], 0, 100 ) == substr( stripslashes( $comment2['comment_author_email'] ), 0, 100 )
+                               // Very long emails can be truncated and then stripped if the [0:100] substring isn't a valid address.
+                               || ( ! $comment1['comment_author_email'] && strlen( $comment2['comment_author_email'] ) > 100 )
+                               || ( ! $comment2['comment_author_email'] && strlen( $comment1['comment_author_email'] ) > 100 )
                        )
                );
        }
index 01d2bc8946ef690f9d39e869f8d79e9f56f7517e..553e292ea7f9a8a64c4413a6648e71072feb377a 100644 (file)
@@ -2,8 +2,8 @@
 Contributors: matt, ryan, andy, mdawaffe, tellyworth, josephscott, lessbloat, eoigal, cfinke, automattic, jgs
 Tags: akismet, comments, spam, antispam, anti-spam, anti spam, comment moderation, comment spam, contact form spam, spam comments
 Requires at least: 3.2
-Tested up to: 4.3
-Stable tag: 3.1.3
+Tested up to: 4.3.1
+Stable tag: 3.1.5
 License: GPLv2 or later
 
 Akismet checks your comments against the Akismet Web service to see if they look like spam or not.
@@ -30,6 +30,19 @@ Upload the Akismet plugin to your blog, Activate it, then enter your [Akismet.co
 
 == Changelog ==
 
+= 3.1.5 =
+*Release Date - 13 October 2015*
+
+* Closes a potential XSS vulnerability.
+
+= 3.1.4 =
+*Release Date - 24 September 2015*
+
+* Fixed a bug that was preventing some users from automatically connecting using Jetpack if they didn't have a current Akismet subscription.
+* Fixed a bug that could cause comments caught as spam to be placed in the Pending queue.
+* Error messages and instructions have been simplified to be more understandable.
+* Link previews are enabled for all links inside comments, not just the author's website link.
+
 = 3.1.3 =
 *Release Date - 6 July 2015*
 
index 70727f6acefea25ce3ae00d70570d5f9dc8ed784..72a3b6ef5876b20002728cc799c54ba40f5340c5 100644 (file)
@@ -1,5 +1,6 @@
 <form name="akismet_activate" action="https://akismet.com/get/" method="POST" target="_blank">
        <input type="hidden" name="passback_url" value="<?php echo esc_url( Akismet_Admin::get_page_url() ); ?>"/>
+       <input type="hidden" name="blog" value="<?php echo esc_url( get_bloginfo('url') ); ?>"/>
        <input type="hidden" name="redirect" value="<?php echo isset( $redirect ) ? $redirect : 'plugin-signup'; ?>"/>
        <input type="submit" class="<?php echo isset( $classes ) && count( $classes ) > 0 ? implode( ' ', $classes ) : 'button button-primary';?>" value="<?php echo esc_attr( $text ); ?>"/>
 </form>
\ No newline at end of file
index 182065edf163336ac1669b77137d898bcb95405f..c3638f88c18a845577e2a2455cf358c17022bbd3 100644 (file)
@@ -11,7 +11,7 @@
                                        <div class="aa_button"><?php esc_html_e('Activate your Akismet account', 'akismet');?></div>
                                </div>
                        </div>
-                       <div class="aa_description"><?php _e('<strong>Almost done</strong> - activate your account and say goodbye to comment spam', 'akismet');?></div>
+                       <div class="aa_description"><?php _e('<strong>Almost done</strong> - activate Akismet and say goodbye to spam', 'akismet');?></div>
                </div>
        </form>
 </div>
 <?php elseif ( $type == 'missing-functions' ) :?>
 <div class="wrap alert critical">
        <h3 class="key-status failed"><?php esc_html_e('Network functions are disabled.', 'akismet'); ?></h3>
-       <p class="description"><?php printf( __('Your web host or server administrator has disabled PHP&#8217;s <code>gethostbynamel</code> functions.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet&#8217;s system requirements</a>.', 'akismet'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
+       <p class="description"><?php printf( __('Your web host or server administrator has disabled PHP&#8217;s <code>gethostbynamel</code> function.  <strong>Akismet cannot work correctly until this is fixed.</strong>  Please contact your web host or firewall administrator and give them <a href="%s" target="_blank">this information about Akismet&#8217;s system requirements</a>.', 'akismet'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
 </div>
 <?php elseif ( $type == 'servers-be-down' ) :?>
 <div class="wrap alert critical">
-       <h3 class="key-status failed"><?php esc_html_e("We can&#8217;t connect to your site.", 'akismet'); ?></h3>
-       <p class="description"><?php printf( __('Your firewall may be blocking us. Please contact your host and refer to <a href="%s" target="_blank">our guide about firewalls</a>.', 'akismet'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
+       <h3 class="key-status failed"><?php esc_html_e("Akismet can&#8217;t connect to your site.", 'akismet'); ?></h3>
+       <p class="description"><?php printf( __('Your firewall may be blocking Akismet. Please contact your host and refer to <a href="%s" target="_blank">our guide about firewalls</a>.', 'akismet'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
 </div>
 <?php elseif ( $type == 'active-dunning' ) :?>
 <div class="wrap alert critical">
-       <h3 class="key-status"><?php esc_html_e("Please update your payment details.", 'akismet'); ?></h3>
-       <p class="description"><?php printf( __('We cannot process your transaction. Please contact your bank for assistance, and <a href="%s" target="_blank">update your payment details</a>.', 'akismet'), 'https://akismet.com/account/'); ?></p>
+       <h3 class="key-status"><?php esc_html_e("Please update your payment information.", 'akismet'); ?></h3>
+       <p class="description"><?php printf( __('We cannot process your payment. Please <a href="%s" target="_blank">update your payment details</a>.', 'akismet'), 'https://akismet.com/account/'); ?></p>
 </div>
 <?php elseif ( $type == 'cancelled' ) :?>
 <div class="wrap alert critical">
-       <h3 class="key-status"><?php esc_html_e("Your subscription is cancelled.", 'akismet'); ?></h3>
-       <p class="description"><?php printf( __('Please visit the <a href="%s" target="_blank">Akismet account page</a> to reactivate your subscription.', 'akismet'), 'https://akismet.com/account/'); ?></p>
+       <h3 class="key-status"><?php esc_html_e("Your Akismet plan has been cancelled.", 'akismet'); ?></h3>
+       <p class="description"><?php printf( __('Please visit your <a href="%s" target="_blank">Akismet account page</a> to reactivate your subscription.', 'akismet'), 'https://akismet.com/account/'); ?></p>
 </div>
 <?php elseif ( $type == 'suspended' ) :?>
 <div class="wrap alert critical">
-       <h3 class="key-status failed"><?php esc_html_e("Your subscription is suspended.", 'akismet'); ?></h3>
+       <h3 class="key-status failed"><?php esc_html_e("Your Akismet subscription is suspended.", 'akismet'); ?></h3>
        <p class="description"><?php printf( __('Please contact <a href="%s" target="_blank">Akismet support</a> for assistance.', 'akismet'), 'https://akismet.com/contact/'); ?></p>
 </div>
 <?php elseif ( $type == 'active-notice' && $time_saved ) :?>
 </div>
 <?php elseif ( $type == 'missing' ) :?>
 <div class="wrap alert critical">
-       <h3 class="key-status failed"><?php esc_html_e( 'There is a problem with your key.', 'akismet'); ?></h3>
+       <h3 class="key-status failed"><?php esc_html_e( 'There is a problem with your API key.', 'akismet'); ?></h3>
        <p class="description"><?php printf( __('Please contact <a href="%s" target="_blank">Akismet support</a> for assistance.', 'akismet'), 'https://akismet.com/contact/'); ?></p>
 </div>
 <?php elseif ( $type == 'no-sub' ) :?>
 <div class="wrap alert critical">
-       <h3 class="key-status failed"><?php esc_html_e( 'Your subscription is missing.', 'akismet'); ?></h3>
+       <h3 class="key-status failed"><?php esc_html_e( 'You don&#8217;t have an Akismet plan.', 'akismet'); ?></h3>
        <p class="description">
-               <?php printf( __( 'Since 2012, Akismet began using subscriptions for all accounts (even free ones). It looks like a subscription has not been assigned to your account, and we’d appreciate it if you’d <a href="%s" target="_blank">sign into your account</a> and choose one.', 'akismet'), 'https://akismet.com/account/upgrade/' ); ?>
+               <?php printf( __( 'In 2012, Akismet began using subscription plans for all accounts (even free ones). A plan has not been assigned to your account, and we&#8217;d appreciate it if you&#8217;d <a href="%s" target="_blank">sign into your account</a> and choose one.', 'akismet'), 'https://akismet.com/account/upgrade/' ); ?>
                <br /><br />
                <?php printf( __( 'Please <a href="%s" target="_blank">contact our support team</a> with any questions.', 'akismet' ), 'https://akismet.com/contact/' ); ?>
        </p>
 </div>
 <?php elseif ( $type == 'new-key-valid' ) :?>
 <div class="wrap alert active">
-       <h3 class="key-status"><?php esc_html_e('Your Akismet account has been successfully set up and activated. Happy blogging!', 'akismet'); ?></h3>
+       <h3 class="key-status"><?php esc_html_e('Akismet is now activated. Happy blogging!', 'akismet'); ?></h3>
 </div>
 <?php elseif ( $type == 'new-key-invalid' ) :?>
 <div class="wrap alert critical">
@@ -95,8 +95,8 @@
 </div>
 <?php elseif ( $type == 'new-key-failed' ) :?>
 <div class="wrap alert critical">
-       <h3 class="key-status"><?php esc_html_e( 'The key you entered could not be verified.' , 'akismet'); ?></h3>
-       <p class="description"><?php printf( __('The connection to akismet.com cannot be established. Please refer to <a href="%s" target="_blank">our guide about firewalls</a> and check your server configuration.', 'akismet'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
+       <h3 class="key-status"><?php esc_html_e( 'The API key you entered could not be verified.' , 'akismet'); ?></h3>
+       <p class="description"><?php printf( __('The connection to akismet.com could not be established. Please refer to <a href="%s" target="_blank">our guide about firewalls</a> and check your server configuration.', 'akismet'), 'http://blog.akismet.com/akismet-hosting-faq/'); ?></p>
 </div>
 <?php elseif ( $type == 'limit-reached' && in_array( $level, array( 'yellow', 'red' ) ) ) :?>
 <div class="wrap alert critical">
index d6221757f3bed7eca439f3100e26e10af36c5c99..75eb03241c46c88f7ce128517b74090da7f9a61d 100644 (file)
@@ -1,21 +1,22 @@
 <div class="no-key config-wrap"><?php
        if ( $akismet_user && in_array( $akismet_user->status, array( 'active', 'active-dunning', 'no-sub', 'missing', 'cancelled', 'suspended' ) ) ) :
-               if ( $akismet_user->status == 'missing' ) :?>
-<p><?php esc_html_e('Akismet eliminates the comment and trackback spam you get on your site. Register your email address below to get started.', 'akismet'); ?></p>
+               if ( in_array( $akismet_user->status, array( 'no-sub', 'missing' ) ) ) :?>
+<p><?php esc_html_e('Akismet eliminates spam from your site. Register below to get started.', 'akismet'); ?></p>
 <div class="activate-highlight activate-option">
        <div class="option-description">
                <strong class="small-heading"><?php esc_html_e('Connected via Jetpack', 'akismet'); ?></strong>
-               <?php echo esc_attr( $akismet_user->user_email ); ?>
+               <?php echo esc_html( $akismet_user->user_email ); ?>
        </div>
        <form name="akismet_activate" id="akismet_activate" action="https://akismet.com/get/" method="post" class="right" target="_blank">
                <input type="hidden" name="passback_url" value="<?php echo esc_url( Akismet_Admin::get_page_url() ); ?>"/>
+               <input type="hidden" name="blog" value="<?php echo esc_url( get_bloginfo('url') ); ?>"/>
                <input type="hidden" name="auto-connect" value="<?php echo $akismet_user->ID;?>"/>
                <input type="hidden" name="redirect" value="plugin-signup"/>
-               <input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Register Akismet' , 'akismet'); ?>"/>
+               <input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Register for Akismet' , 'akismet'); ?>"/>
        </form>
 </div>
 <?php elseif ( $akismet_user->status == 'cancelled' ) :?>
-<p><?php esc_html_e('Akismet eliminates the comment and trackback spam you get on your site.', 'akismet'); ?></p>
+<p><?php esc_html_e('Akismet eliminates spam from your site.', 'akismet'); ?></p>
 <div class="activate-highlight activate-option">
        <div class="option-description" style="width:75%;">
                <strong class="small-heading"><?php esc_html_e('Connected via Jetpack', 'akismet'); ?></strong>
        </div>
        <form name="akismet_activate" id="akismet_activate" action="https://akismet.com/get/" method="post" class="right" target="_blank">
                <input type="hidden" name="passback_url" value="<?php echo esc_url( Akismet_Admin::get_page_url() ); ?>"/>
+               <input type="hidden" name="blog" value="<?php echo esc_url( get_bloginfo('url') ); ?>"/>
                <input type="hidden" name="user_id" value="<?php echo $akismet_user->ID;?>"/>
                <input type="hidden" name="redirect" value="upgrade"/>
                <input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Reactivate Akismet' , 'akismet'); ?>"/>
        </form>
 </div>
 <?php elseif ( $akismet_user->status == 'suspended' ) : ?>
-<p><?php esc_html_e('Akismet eliminates the comment and trackback spam you get on your site.', 'akismet'); ?></p>
+<p><?php esc_html_e('Akismet eliminates spam from your site.', 'akismet'); ?></p>
 <div class="activate-highlight centered activate-option">
        <strong class="small-heading"><?php esc_html_e( 'Connected via Jetpack' , 'akismet'); ?></strong>
        <h3 class="alert-text"><?php printf( esc_html__( 'Your subscription for %s is suspended' , 'akismet'), $akismet_user->user_email ); ?></h3>
-       <p><?php esc_html_e('No worries! Get in touch and we&#8217;ll help sort this out.', 'akismet'); ?></p>
+       <p><?php esc_html_e('No worries! Get in touch and we&#8217;ll sort this out.', 'akismet'); ?></p>
        <a href="https://akismet.com/contact" class="button button-primary"><?php esc_html_e( 'Contact Akismet support' , 'akismet'); ?></a>
 </div>
 <?php else : // ask do they want to use akismet account found using jetpack wpcom connection ?>
-<p style="margin-right:10px"><?php esc_html_e('Akismet eliminates the comment and trackback spam you get on your site. To setup Akismet, select one of the options below.', 'akismet'); ?></p>
+<p style="margin-right:10px"><?php esc_html_e('Akismet eliminates spam from your site. To set up Akismet, select one of the options below.', 'akismet'); ?></p>
 <div class="activate-highlight activate-option">
        <div class="option-description">
                <strong class="small-heading"><?php esc_html_e('Connected via Jetpack', 'akismet'); ?></strong>
-               <?php echo esc_attr( $akismet_user->user_email ); ?>
+               <?php echo esc_html( $akismet_user->user_email ); ?>
        </div>
        <form name="akismet_use_wpcom_key" action="<?php echo esc_url( Akismet_Admin::get_page_url() ); ?>" method="post" id="akismet-activate" class="right">
                <input type="hidden" name="key" value="<?php echo esc_attr( $akismet_user->api_key );?>"/>
                <input type="hidden" name="action" value="enter-key">
                <?php wp_nonce_field( Akismet_Admin::NONCE ) ?>
-               <input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Use this Akismet account' , 'akismet'); ?>"/>
+               <input type="submit" class="button button-primary" value="<?php esc_attr_e( 'Use this account' , 'akismet'); ?>"/>
        </form>
 </div>
 <?php endif;?>
 <div class="activate-highlight secondary activate-option">
        <div class="option-description">
-               <strong><?php esc_html_e('Create a new API key with a different email address', 'akismet'); ?></strong>
-               <p><?php esc_html_e('Use this option if you want to setup a new Akismet account.', 'akismet'); ?></p>
+               <strong><?php esc_html_e('Sign up for a plan with a different email address', 'akismet'); ?></strong>
+               <p><?php esc_html_e('Use this option to use Akismet independently of your Jetpack connection.', 'akismet'); ?></p>
        </div>
-       <?php Akismet::view( 'get', array( 'text' => __( 'Register a different email address' , 'akismet'), 'classes' => array( 'right', 'button', 'button-secondary' ) ) ); ?>
+       <?php Akismet::view( 'get', array( 'text' => __( 'Sign up with a different email address' , 'akismet'), 'classes' => array( 'right', 'button', 'button-secondary' ) ) ); ?>
 </div>
 <div class="activate-highlight secondary activate-option">
        <div class="option-description">
-               <strong><?php esc_html_e('Manually enter an API key', 'akismet'); ?></strong>
-               <p><?php esc_html_e('If you already know your API key.', 'akismet'); ?></p>
+               <strong><?php esc_html_e('Enter an API key', 'akismet'); ?></strong>
+               <p><?php esc_html_e('Already have your key? Enter it here.', 'akismet'); ?></p>
        </div>
        <form action="<?php echo esc_url( Akismet_Admin::get_page_url() ); ?>" method="post" id="akismet-enter-api-key" class="right">
                <input id="key" name="key" type="text" size="15" value="" class="regular-text code">
        </form>
 </div>
 <?php else :?>
-<p><?php esc_html_e('Akismet eliminates the comment and trackback spam you get on your site. To setup Akismet, select one of the options below.', 'akismet'); ?></p>
+<p><?php esc_html_e('Akismet eliminates spam from your site. To set up Akismet, select one of the options below.', 'akismet'); ?></p>
 <div class="activate-highlight activate-option">
        <div class="option-description">
                <strong><?php esc_html_e( 'Activate Akismet' , 'akismet');?></strong>
-               <p><?php esc_html_e('Log in or create an account to get your API key.', 'akismet'); ?></p>
+               <p><?php esc_html_e('Log in or sign up now.', 'akismet'); ?></p>
        </div>
        <?php Akismet::view( 'get', array( 'text' => __( 'Get your API key' , 'akismet'), 'classes' => array( 'right', 'button', 'button-primary' ) ) ); ?>
 </div>
index 3cf197cd86924979f5a8e6d0bac80c44ba2c6096..83d7a505cd836adbb83155686b3e84e45b3b678f 100644 (file)
@@ -1,7 +1,17 @@
-<tr valign="top">
-       <th scope="row"><?php esc_html_e('Akismet anti-spam strictness', 'akismet'); ?></th>
-       <td><fieldset><legend class="screen-reader-text"><span><?php esc_html_e('Akismet anti-spam strictness', 'akismet'); ?></span></legend>
-       <p><label for="akismet_strictness_1"><input type="radio" name="akismet_strictness" id="akismet_strictness_1" value="1" <?php checked('1', get_option('akismet_strictness')); ?> /> <?php esc_html_e('Strict: silently discard the worst and most pervasive spam.', 'akismet'); ?></label></p>
-       <p><label for="akismet_strictness_0"><input type="radio" name="akismet_strictness" id="akismet_strictness_0" value="0" <?php checked('0', get_option('akismet_strictness')); ?> /> <?php esc_html_e('Safe: always put spam in the Spam folder for review.', 'akismet'); ?></label></p>
-       </fieldset></td>
-</tr>
\ No newline at end of file
+<fieldset>
+       <legend class="screen-reader-text">
+               <span><?php esc_html_e( 'Akismet anti-spam strictness', 'akismet' ); ?></span>
+       </legend>
+       <p>
+               <label for="akismet_strictness_1">
+                       <input type="radio" name="akismet_strictness" id="akismet_strictness_1" value="1" <?php checked( '1', get_option( 'akismet_strictness' ) ); ?> />
+                       <?php esc_html_e( 'Strict: silently discard the worst and most pervasive spam.', 'akismet' ); ?>
+               </label>
+       </p>
+       <p>
+               <label for="akismet_strictness_0">
+                       <input type="radio" name="akismet_strictness" id="akismet_strictness_0" value="0" <?php checked( '0', get_option( 'akismet_strictness' ) ); ?> />
+                       <?php esc_html_e( 'Safe: always put spam in the Spam folder for review.', 'akismet' ); ?>
+               </label>
+       </p>
+</fieldset>
index 02e2c76af42457061210744537ec12ac94b4dc8b..93b66e5eaef0e4c54a296882a66bd14f33febb28 100644 (file)
@@ -87,6 +87,27 @@ add_action( 'customize_register', 'twentyfifteen_customize_register', 11 );
  * @return array An associative array of color scheme options.
  */
 function twentyfifteen_get_color_schemes() {
+       /**
+        * Filter the color schemes registered for use with Twenty Fifteen.
+        *
+        * The default schemes include 'default', 'dark', 'yellow', 'pink', 'purple', and 'blue'.
+        *
+        * @since Twenty Fifteen 1.0
+        *
+        * @param array $schemes {
+        *     Associative array of color schemes data.
+        *
+        *     @type array $slug {
+        *         Associative array of information for setting up the color scheme.
+        *
+        *         @type string $label  Color scheme label.
+        *         @type array  $colors HEX codes for default colors prepended with a hash symbol ('#').
+        *                              Colors are defined in the following order: Main background, sidebar
+        *                              background, box background, main text and link, sidebar text and link,
+        *                              meta box background.
+        *     }
+        * }
+        */
        return apply_filters( 'twentyfifteen_color_schemes', array(
                'default' => array(
                        'label'  => __( 'Default', 'twentyfifteen' ),
index 60a5a6348c45d260483f85dd0185734843617ce4..5e948ba20a3ce9dfedf311d39476bbb36a300770 100644 (file)
@@ -2,9 +2,9 @@
 # This file is distributed under the GNU General Public License v2 or later.
 msgid ""
 msgstr ""
-"Project-Id-Version: Twenty Fifteen 1.3\n"
+"Project-Id-Version: Twenty Fifteen 1.4\n"
 "Report-Msgid-Bugs-To: https://wordpress.org/support/theme/twentyfifteen\n"
-"POT-Creation-Date: 2015-07-27 19:47:38+00:00\n"
+"POT-Creation-Date: 2015-12-08 15:14:51+00:00\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -87,7 +87,7 @@ msgid ""
 "searching can help."
 msgstr ""
 
-#. #-#-#-#-#  twentyfifteen.pot (Twenty Fifteen 1.3)  #-#-#-#-#
+#. #-#-#-#-#  twentyfifteen.pot (Twenty Fifteen 1.4)  #-#-#-#-#
 #. Author URI of the plugin/theme
 #: footer.php:25
 msgid "https://wordpress.org/"
@@ -198,27 +198,27 @@ msgstr ""
 msgid "Header and Sidebar Background Color"
 msgstr ""
 
-#: inc/customizer.php:92
+#: inc/customizer.php:113
 msgid "Default"
 msgstr ""
 
-#: inc/customizer.php:103
+#: inc/customizer.php:124
 msgid "Dark"
 msgstr ""
 
-#: inc/customizer.php:114
+#: inc/customizer.php:135
 msgid "Yellow"
 msgstr ""
 
-#: inc/customizer.php:125
+#: inc/customizer.php:146
 msgid "Pink"
 msgstr ""
 
-#: inc/customizer.php:136
+#: inc/customizer.php:157
 msgid "Purple"
 msgstr ""
 
-#: inc/customizer.php:147
+#: inc/customizer.php:168
 msgid "Blue"
 msgstr ""
 
index 540ead0bcae9dc6c97455c2e7cfe288f3373c05e..10ef1bf7f43b6651b81b3f604d9ff74473415160 100644 (file)
@@ -1,8 +1,8 @@
 === Twenty Fifteen ===
 Contributors: the WordPress team
 Requires at least: WordPress 4.1
-Tested up to: WordPress 4.3-trunk
-Version: 1.3
+Tested up to: WordPress 4.5-trunk
+Version: 1.4
 License: GPLv2 or later
 License URI: http://www.gnu.org/licenses/gpl-2.0.html
 Tags: black, blue, gray, pink, purple, white, yellow, dark, light, two-columns, left-sidebar, fixed-layout, responsive-layout, accessibility-ready, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready
@@ -35,7 +35,7 @@ Twenty Fifteen is distributed under the terms of the GNU GPL
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
+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,
@@ -55,6 +55,11 @@ Source: http://www.genericons.com
 
 == Changelog ==
 
+= 1.4 =
+* Released: December 8, 2015
+
+https://codex.wordpress.org/Twenty_Fifteen_Theme_Changelog#Version_1.4
+
 = 1.3 =
 * Released: August 18, 2015
 
index 4f4a471cdd70370e94e2df2de1106ef99972cbf4..809504a53c342f154ef6299782cf1b56cd609c81 100644 (file)
@@ -477,7 +477,7 @@ img.alignleft {
        }
 
        blockquote.alignright,
-       .wp-caption.alignright
+       .wp-caption.alignright,
        img.alignright {
                margin: 0.4118em 0 1.6471em 1.6471em;
        }
@@ -561,7 +561,7 @@ img.alignleft {
        }
 
        blockquote.alignright,
-       .wp-caption.alignright
+       .wp-caption.alignright,
        img.alignright {
                margin: 0.4211em 0 1.6842em 1.6842em;
        }
@@ -721,7 +721,7 @@ img.alignleft {
        }
 
        blockquote.alignright,
-       .wp-caption.alignright
+       .wp-caption.alignright,
        img.alignright {
                margin: 0.4118em 0 1.6471em 1.6471em;
        }
@@ -786,7 +786,7 @@ img.alignleft {
        }
 
        blockquote.alignright,
-       .wp-caption.alignright
+       .wp-caption.alignright,
        img.alignright {
                margin: 0.4211em 0 1.6842em 1.6842em;
        }
index 1e4e8e8895cbcb998c1dd935c543ec17bad6fb6a..141bec426b95f459284245d565323bf56e9701e2 100644 (file)
@@ -4,7 +4,7 @@ Theme URI: https://wordpress.org/themes/twentyfifteen/
 Author: the WordPress team
 Author URI: https://wordpress.org/
 Description: Our 2015 default theme is clean, blog-focused, and designed for clarity. Twenty Fifteen's simple, straightforward typography is readable on a wide variety of screen sizes, and suitable for multiple languages. We designed it using a mobile-first approach, meaning your content takes center-stage, regardless of whether your visitors arrive by smartphone, tablet, laptop, or desktop computer.
-Version: 1.3
+Version: 1.4
 License: GNU General Public License v2 or later
 License URI: http://www.gnu.org/licenses/gpl-2.0.html
 Tags: black, blue, gray, pink, purple, white, yellow, dark, light, two-columns, left-sidebar, fixed-layout, responsive-layout, accessibility-ready, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready
index 1acebad9cc55641f2210c5ab98fec1bc5ca16c38..96ad63628c27d979e2922c1811d1701edd40e18a 100644 (file)
@@ -2,9 +2,9 @@
 # This file is distributed under the GNU General Public License v2 or later.
 msgid ""
 msgstr ""
-"Project-Id-Version: Twenty Fourteen 1.5\n"
+"Project-Id-Version: Twenty Fourteen 1.6\n"
 "Report-Msgid-Bugs-To: https://wordpress.org/support/theme/twentyfourteen\n"
-"POT-Creation-Date: 2015-07-27 19:47:38+00:00\n"
+"POT-Creation-Date: 2015-12-08 15:15:01+00:00\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
@@ -142,7 +142,7 @@ msgid ""
 "searching can help."
 msgstr ""
 
-#. #-#-#-#-#  twentyfourteen.pot (Twenty Fourteen 1.5)  #-#-#-#-#
+#. #-#-#-#-#  twentyfourteen.pot (Twenty Fourteen 1.6)  #-#-#-#-#
 #. Author URI of the plugin/theme
 #: footer.php:21
 msgid "https://wordpress.org/"
@@ -279,7 +279,7 @@ msgstr ""
 msgid "Slider"
 msgstr ""
 
-#. #-#-#-#-#  twentyfourteen.pot (Twenty Fourteen 1.5)  #-#-#-#-#
+#. #-#-#-#-#  twentyfourteen.pot (Twenty Fourteen 1.6)  #-#-#-#-#
 #. Theme Name of the plugin/theme
 #: inc/customizer.php:105
 msgid "Twenty Fourteen"
index 1b69e67ac58c95539d9a7df9be00977351052884..9847e6aa516abfeaeb05989e49978f0f14aeaed2 100644 (file)
@@ -1,8 +1,8 @@
 === Twenty Fourteen ===
 Contributors: the WordPress team
 Requires at least: WordPress 3.6
-Tested up to: WordPress 4.3-trunk
-Stable tag: 1.5
+Tested up to: WordPress 4.5-trunk
+Stable tag: 1.6
 License: GPLv2 or later
 License URI: http://www.gnu.org/licenses/gpl-2.0.html
 Tags: black, green, white, light, dark, two-columns, three-columns, left-sidebar, right-sidebar, fixed-layout, responsive-layout, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready, accessibility-ready
@@ -27,7 +27,7 @@ Twenty Fourteen is Distributed under the terms of the GNU GPL
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
+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,
@@ -50,6 +50,11 @@ Source: http://www.genericons.com
 
 == Changelog ==
 
+= 1.6 =
+* Released: December 8, 2015
+
+https://codex.wordpress.org/Twenty_Fourteen_Theme_Changelog#Version_1.6
+
 = 1.5 =
 * Released: August 18, 2015
 
index 91ce0175d5e7068358d09e513bfad4ffc7f1481a..29aec641fa3ebd4214ffbb1af0d2e271886916f7 100644 (file)
@@ -4,7 +4,7 @@ Theme URI: https://wordpress.org/themes/twentyfourteen/
 Author: the WordPress team
 Author URI: https://wordpress.org/
 Description: In 2014, our default theme lets you create a responsive magazine website with a sleek, modern design. Feature your favorite homepage content in either a grid or a slider. Use the three widget areas to customize your website, and change your content's layout with a full-width page template and a contributor page to show off your authors. Creating a magazine website with WordPress has never been easier.
-Version: 1.5
+Version: 1.6
 License: GNU General Public License v2 or later
 License URI: http://www.gnu.org/licenses/gpl-2.0.html
 Tags: black, green, white, light, dark, two-columns, three-columns, left-sidebar, right-sidebar, fixed-layout, responsive-layout, custom-background, custom-header, custom-menu, editor-style, featured-images, flexible-header, full-width-template, microformats, post-formats, rtl-language-support, sticky-post, theme-options, translation-ready, accessibility-ready
diff --git a/wp-content/themes/twentysixteen/404.php b/wp-content/themes/twentysixteen/404.php
new file mode 100644 (file)
index 0000000..59907be
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+/**
+ * The template for displaying 404 pages (not found)
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="content-area">
+               <main id="main" class="site-main" role="main">
+
+                       <section class="error-404 not-found">
+                               <header class="page-header">
+                                       <h1 class="page-title"><?php _e( 'Oops! That page can&rsquo;t be found.', 'twentysixteen' ); ?></h1>
+                               </header><!-- .page-header -->
+
+                               <div class="page-content">
+                                       <p><?php _e( 'It looks like nothing was found at this location. Maybe try a search?', 'twentysixteen' ); ?></p>
+
+                                       <?php get_search_form(); ?>
+                               </div><!-- .page-content -->
+                       </section><!-- .error-404 -->
+
+               </main><!-- .site-main -->
+
+               <?php get_sidebar( 'content-bottom' ); ?>
+
+       </div><!-- .content-area -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
diff --git a/wp-content/themes/twentysixteen/archive.php b/wp-content/themes/twentysixteen/archive.php
new file mode 100644 (file)
index 0000000..bdd2967
--- /dev/null
@@ -0,0 +1,65 @@
+<?php
+/**
+ * The template for displaying archive pages
+ *
+ * Used to display archive-type pages if nothing more specific matches a query.
+ * For example, puts together date-based pages if no date.php file exists.
+ *
+ * If you'd like to further customize these archive views, you may create a
+ * new template file for each one. For example, tag.php (Tag archives),
+ * category.php (Category archives), author.php (Author archives), etc.
+ *
+ * @link https://codex.wordpress.org/Template_Hierarchy
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="content-area">
+               <main id="main" class="site-main" role="main">
+
+               <?php if ( have_posts() ) : ?>
+
+                       <header class="page-header">
+                               <?php
+                                       the_archive_title( '<h1 class="page-title">', '</h1>' );
+                                       the_archive_description( '<div class="taxonomy-description">', '</div>' );
+                               ?>
+                       </header><!-- .page-header -->
+
+                       <?php
+                       // Start the Loop.
+                       while ( have_posts() ) : the_post();
+
+                               /*
+                                * Include the Post-Format-specific template for the content.
+                                * If you want to override this in a child theme, then include a file
+                                * called content-___.php (where ___ is the Post Format name) and that will be used instead.
+                                */
+                               get_template_part( 'template-parts/content', get_post_format() );
+
+                       // End the loop.
+                       endwhile;
+
+                       // Previous/next page navigation.
+                       the_posts_pagination( array(
+                               'prev_text'          => __( 'Previous page', 'twentysixteen' ),
+                               'next_text'          => __( 'Next page', 'twentysixteen' ),
+                               'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>',
+                       ) );
+
+               // If no content, include the "No posts found" template.
+               else :
+                       get_template_part( 'template-parts/content', 'none' );
+
+               endif;
+               ?>
+
+               </main><!-- .site-main -->
+       </div><!-- .content-area -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
diff --git a/wp-content/themes/twentysixteen/comments.php b/wp-content/themes/twentysixteen/comments.php
new file mode 100644 (file)
index 0000000..5352c91
--- /dev/null
@@ -0,0 +1,79 @@
+<?php
+/**
+ * The template for displaying comments
+ *
+ * The area of the page that contains both current comments
+ * and the comment form.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+/*
+ * If the current post is protected by a password and
+ * the visitor has not yet entered the password we will
+ * return early without loading the comments.
+ */
+if ( post_password_required() ) {
+       return;
+}
+?>
+
+<div id="comments" class="comments-area">
+
+       <?php if ( have_comments() ) : ?>
+               <h2 class="comments-title">
+                       <?php
+                               $comments_number = get_comments_number();
+                               if ( 1 === $comments_number ) {
+                                       /* translators: %s: post title */
+                                       printf( _x( 'One thought on &ldquo;%s&rdquo;', 'comments title', 'twentysixteen' ), get_the_title() );
+                               } else {
+                                       printf(
+                                               /* translators: 1: number of comments, 2: post title */
+                                               _nx(
+                                                       '%1$s thought on &ldquo;%2$s&rdquo;',
+                                                       '%1$s thoughts on &ldquo;%2$s&rdquo;',
+                                                       $comments_number,
+                                                       'comments title',
+                                                       'twentysixteen'
+                                               ),
+                                               number_format_i18n( $comments_number ),
+                                               get_the_title()
+                                       );
+                               }
+                       ?>
+               </h2>
+
+               <?php the_comments_navigation(); ?>
+
+               <ol class="comment-list">
+                       <?php
+                               wp_list_comments( array(
+                                       'style'       => 'ol',
+                                       'short_ping'  => true,
+                                       'avatar_size' => 42,
+                               ) );
+                       ?>
+               </ol><!-- .comment-list -->
+
+               <?php the_comments_navigation(); ?>
+
+       <?php endif; // Check for have_comments(). ?>
+
+       <?php
+               // If comments are closed and there are comments, let's leave a little note, shall we?
+               if ( ! comments_open() && get_comments_number() && post_type_supports( get_post_type(), 'comments' ) ) :
+       ?>
+               <p class="no-comments"><?php _e( 'Comments are closed.', 'twentysixteen' ); ?></p>
+       <?php endif; ?>
+
+       <?php
+               comment_form( array(
+                       'title_reply_before' => '<h2 id="reply-title" class="comment-reply-title">',
+                       'title_reply_after'  => '</h2>',
+               ) );
+       ?>
+
+</div><!-- .comments-area -->
diff --git a/wp-content/themes/twentysixteen/css/editor-style.css b/wp-content/themes/twentysixteen/css/editor-style.css
new file mode 100644 (file)
index 0000000..7b99fa2
--- /dev/null
@@ -0,0 +1,546 @@
+/*
+Theme Name: Twenty Sixteen
+Description: Used to style the TinyMCE editor.
+*/
+
+
+/**
+ * Table of Contents:
+ *
+ * 1.0 - Body
+ * 2.0 - Typography
+ * 3.0 - Elements
+ * 4.0 - Alignment
+ * 5.0 - Caption
+ * 6.0 - Galleries
+ * 7.0 - Audio / Video
+ * 8.0 - RTL
+ */
+
+
+/**
+ * 1.0 - Body
+ */
+
+body {
+       color: #1a1a1a;
+       font-family: Merriweather, Georgia, serif;
+       font-size: 16px;
+       font-weight: 400;
+       line-height: 1.75;
+       margin: 20px 40px;
+       max-width: 600px;
+       vertical-align: baseline;
+}
+
+body.post-type-page {
+       max-width: 840px;
+}
+
+
+/**
+ * 2.0 - Typography
+ */
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+       clear: both;
+       font-weight: 900;
+       margin: 56px 0 28px;
+}
+
+h1 {
+       font-size: 33px;
+       line-height: 1.2727272727;
+}
+
+h2 {
+       font-size: 28px;
+       line-height: 1.25;
+}
+
+h3 {
+       font-size: 23px;
+       line-height: 1.2173913043;
+}
+
+h4,
+h5,
+h6 {
+       font-size: 19px;
+       line-height: 1.1052631579;
+}
+
+h4 {
+       letter-spacing: 0.13333em;
+       text-transform: uppercase;
+}
+
+h6 {
+       font-style: italic;
+}
+
+h1:first-child,
+h2:first-child,
+h3:first-child,
+h4:first-child,
+h5:first-child,
+h6:first-child {
+       margin-top: 0;
+}
+
+p {
+       margin: 0 0 28px;
+}
+
+b,
+strong {
+       font-weight: 700;
+}
+
+dfn,
+cite,
+em,
+i {
+       font-style: italic;
+}
+
+blockquote {
+       border-left: 4px solid #1a1a1a;
+       color: #686868;
+       font-size: 19px;
+       font-style: italic;
+       line-height: 1.4736842105;
+       margin-bottom: 28px;
+       padding: 0 0 0 24px;
+}
+
+blockquote:not(.alignleft):not(.alignright) {
+       margin-left: -28px;
+}
+
+blockquote blockquote:not(.alignleft):not(.alignright) {
+       margin-left: 0;
+}
+
+blockquote:before,
+blockquote:after {
+       content: "";
+       display: table;
+}
+
+blockquote:after {
+       clear: both;
+}
+
+blockquote > :last-child {
+       margin-bottom: 0;
+}
+
+blockquote cite,
+blockquote small {
+       color: #1a1a1a;
+       font-size: 16px;
+       line-height: 1.75;
+}
+
+blockquote em,
+blockquote i,
+blockquote cite {
+       font-style: normal;
+}
+
+blockquote strong,
+blockquote b {
+       font-weight: 400;
+}
+
+blockquote.alignleft,
+blockquote.alignright {
+       border: 0 solid #1a1a1a;
+       border-top-width: 4px;
+       padding: 18px 0 0;
+       width: -webkit-calc(50% - 14px);
+       width: calc(50% - 14px);
+}
+
+address {
+       font-style: italic;
+       margin: 0 0 28px;
+}
+
+code,
+kbd,
+tt,
+var,
+samp,
+pre {
+       font-family: Inconsolata, monospace;
+}
+
+pre {
+       border: 1px solid #d1d1d1;
+       font-size: 16px;
+       line-height: 1.3125;
+       margin: 0 0 28px;
+       max-width: 100%;
+       overflow: auto;
+       padding: 14px;
+       white-space: pre;
+       white-space: pre-wrap;
+       word-wrap: break-word;
+}
+
+code {
+       background-color: #d1d1d1;
+       padding: 2px 4px;
+}
+
+abbr[title] {
+       border-bottom: 1px dotted #d1d1d1;
+       cursor: help;
+}
+
+mark,
+ins {
+       background: #007acc;
+       color: #fff;
+       padding: 2px 4px;
+       text-decoration: none;
+}
+
+sup,
+sub {
+       font-size: 75%;
+       height: 0;
+       line-height: 0;
+       position: relative;
+       vertical-align: baseline;
+}
+
+sub {
+       top: -6px;
+}
+
+sup {
+       bottom: -3px;
+}
+
+small {
+       font-size: 80%;
+}
+
+big {
+       font-size: 125%;
+}
+
+
+/**
+ * 3.0 - Elements
+ */
+
+hr {
+       background-color: #d1d1d1;
+       border: 0;
+       height: 1px;
+       margin-bottom: 28px;
+}
+
+ul,
+ol {
+       margin: 0 0 28px 0;
+       padding: 0;
+}
+
+ul {
+       list-style: disc;
+}
+
+ol {
+       list-style: decimal;
+}
+
+li > ul,
+li > ol {
+       margin-bottom: 0;
+}
+
+li > ul,
+blockquote > ul {
+       margin-left: 20px;
+}
+
+li > ol,
+blockquote > ol {
+       margin-left: 24px;
+}
+
+dl {
+       margin: 0 0 28px;
+}
+
+dt {
+       font-weight: bold;
+}
+
+dd {
+       margin: 0 0 28px;
+}
+
+table,
+th,
+td,
+.mce-item-table,
+.mce-item-table th,
+.mce-item-table td {
+       border: 1px solid #d1d1d1;
+}
+
+table a {
+       color: #007acc;
+}
+
+table,
+.mce-item-table {
+       border-collapse: separate;
+       border-spacing: 0;
+       border-width: 1px 0 0 1px;
+       margin: 0 0 28px;
+       width: 100%;
+}
+
+table th,
+.mce-item-table th,
+table caption {
+       border-width: 0 1px 1px 0;
+       font-size: 16px;
+       font-weight: 700;
+       padding: 7px;
+       text-align: left;
+       vertical-align: baseline;
+}
+
+table td,
+.mce-item-table td {
+       border-width: 0 1px 1px 0;
+       font-size: 16px;
+       padding: 7px;
+       vertical-align: baseline;
+}
+
+img {
+       border: 0;
+       height: auto;
+       max-width: 100%;
+       vertical-align: middle;
+}
+
+a img {
+       display: block;
+}
+
+figure {
+       margin: 0;
+}
+
+del {
+       opacity: 0.8;
+}
+
+a {
+       box-shadow: 0 1px 0 0 currentColor;
+       color: #007acc;
+       text-decoration: none;
+}
+
+fieldset {
+       border: 1px solid #d1d1d1;
+       margin: 0 0 28px;
+       padding: 14px;
+}
+
+
+/**
+ * 4.0 - Alignment
+ */
+
+.alignleft {
+       float: left;
+       margin: 6px 28px 28px 0;
+}
+
+.alignright {
+       float: right;
+       margin: 6px 0 28px 28px;
+}
+
+.aligncenter {
+       clear: both;
+       display: block;
+       margin: 0 auto 28px;
+}
+
+
+/**
+ * 5.0 - Caption
+ */
+
+.wp-caption {
+       background: transparent;
+       border: none;
+       margin-bottom: 28px;
+       max-width: 100%;
+       padding: 0;
+       text-align: inherit;
+}
+
+.wp-caption-text,
+.wp-caption-dd {
+       color: #686868;
+       font-size: 13px;
+       font-style: italic;
+       line-height: 1.6153846154;
+       padding-top: 7px;
+}
+
+
+/**
+ * 6.0 - Galleries
+ */
+
+.mce-content-body .wpview-wrap {
+       margin-bottom: 28px;
+}
+
+.gallery {
+       margin: 0 -1.1666667%;
+       padding: 0;
+}
+
+.gallery .gallery-item {
+       display: inline-block;
+       max-width: 33.33%;
+       padding: 0 1.1400652% 2.2801304%;
+       text-align: center;
+       vertical-align: top;
+       width: 100%;
+}
+
+.gallery-columns-1 .gallery-item {
+       max-width: 100%;
+}
+
+.gallery-columns-2 .gallery-item {
+       max-width: 50%;
+}
+
+.gallery-columns-4 .gallery-item {
+       max-width: 25%;
+}
+
+.gallery-columns-5 .gallery-item {
+       max-width: 20%;
+}
+
+.gallery-columns-6 .gallery-item {
+       max-width: 16.66%;
+}
+
+.gallery-columns-7 .gallery-item {
+       max-width: 14.28%;
+}
+
+.gallery-columns-8 .gallery-item {
+       max-width: 12.5%;
+}
+
+.gallery-columns-9 .gallery-item {
+       max-width: 11.11%;
+}
+
+.gallery .gallery-caption {
+       font-size: 13px;
+       margin: 0;
+}
+
+.gallery-columns-6 .gallery-caption,
+.gallery-columns-7 .gallery-caption,
+.gallery-columns-8 .gallery-caption,
+.gallery-columns-9 .gallery-caption {
+       display: none;
+}
+
+
+/**
+ * 7.0 - Audio / Video
+ */
+
+.wp-audio-shortcode a,
+.wp-playlist a {
+       box-shadow: none;
+}
+
+.mce-content-body .wp-audio-playlist {
+       margin: 0;
+       padding-bottom: 0;
+}
+
+.mce-content-body .wp-playlist-tracks {
+       margin-top: 0;
+}
+
+.mce-content-body  .wp-playlist-item {
+       padding: 10px 0;
+}
+
+.mce-content-body .wp-playlist-item-length {
+       top: 10px;
+}
+
+
+/**
+ * 8.0 - RTL
+ */
+
+.rtl blockquote {
+       border: 0 solid #1a1a1a;
+       border-right-width: 4px;
+}
+
+.rtl blockquote.alignleft,
+.rtl blockquote.alignright {
+       border: 0 solid #1a1a1a;
+       border-top-width: 4px;
+}
+
+.rtl blockquote:not(.alignleft):not(.alignright) {
+       margin-right: -28px;
+       padding: 0 24px 0 0;
+}
+
+.rtl blockquote blockquote:not(.alignleft):not(.alignright) {
+       margin-right: 0;
+       margin-left: auto;
+}
+
+.rtl li > ul,
+.rtl blockquote > ul {
+       margin-right: 20px;
+       margin-left: auto;
+}
+
+.rtl li > ol,
+.rtl blockquote > ol {
+       margin-right: 24px;
+       margin-left: auto;
+}
+
+.rtl table th,
+.rtl .mce-item-table th,
+.rtl table caption {
+       text-align: right;
+}
diff --git a/wp-content/themes/twentysixteen/css/ie.css b/wp-content/themes/twentysixteen/css/ie.css
new file mode 100644 (file)
index 0000000..6aa093a
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+Theme Name: Twenty Sixteen
+Description: Global Styles for older IE versions (previous to IE10).
+*/
+
+.site-header-main:before,
+.site-header-main:after,
+.site-footer:before,
+.site-footer:after {
+       content: "";
+       display: table;
+}
+
+.site-header-main:after,
+.site-footer:after {
+       clear: both;
+}
+
+@media screen and (min-width: 56.875em) {
+       .site-branding,
+       .site-info {
+               float: left;
+       }
+
+       .site-header-menu,
+       .site-footer .social-navigation {
+               float: right;
+       }
+
+       .site-footer .social-navigation {
+               margin-left: 7px;
+       }
+
+       .rtl .site-branding,
+       .rtl .site-info {
+               float: right;
+       }
+
+       .rtl .site-header-menu,
+       .rtl .site-footer .social-navigation {
+               float: left;
+       }
+
+       .rtl .site-footer .social-navigation {
+               margin-right: 7px;
+               margin-left: 0;
+       }
+}
diff --git a/wp-content/themes/twentysixteen/css/ie7.css b/wp-content/themes/twentysixteen/css/ie7.css
new file mode 100644 (file)
index 0000000..6f9ec28
--- /dev/null
@@ -0,0 +1,176 @@
+/*
+Theme Name: Twenty Sixteen
+Description: IE7 specific style.
+*/
+
+.site-inner {
+       max-width: 656px;
+}
+
+.post-navigation,
+.pagination,
+.image-navigation,
+.entry-header,
+.entry-summary,
+.entry-content,
+.entry-footer,
+.page-header,
+.page-content,
+.post-thumbnail,
+.content-bottom-widgets,
+.comments-area {
+       margin-right: 28px;
+       margin-left: 28px;
+       max-width: 100%;
+}
+
+.site-header,
+.sidebar,
+.site-footer,
+.widecolumn {
+       padding-right: 28px;
+       padding-left: 28px;
+}
+
+.search-submit {
+       height: auto;
+       margin-top: 28px;
+       padding: 15px 0 8px;
+       position: relative;
+       width: auto;
+}
+
+.search-submit .screen-reader-text {
+       height: auto;
+       position: relative !important;
+       width: auto;
+}
+
+.image-navigation .nav-previous,
+.image-navigation .nav-next,
+.comment-navigation .nav-previous,
+.comment-navigation .nav-next {
+       *display: inline;
+       zoom: 1;
+}
+
+.image-navigation .nav-previous + .nav-next,
+.comment-navigation .nav-previous + .nav-next {
+       margin-left: 14px;
+}
+
+.pagination .nav-links {
+       padding: 0;
+}
+
+.pagination .page-numbers {
+       line-height: 1;
+       margin: -4px 14px 0;
+       padding: 18px 0;
+}
+
+.pagination .prev,
+.pagination .next {
+       display: inline-block;
+       font-size: 16px;
+       font-weight: 700;
+       height: auto;
+       left: 0;
+       line-height: 1;
+       margin: 0;
+       padding: 18px 14px;
+       position: relative;
+       right: 0;
+       text-transform: none;
+       width: auto;
+}
+
+.dropdown-toggle {
+       display: none;
+}
+
+.main-navigation ul ul {
+       display: block;
+}
+
+.social-navigation {
+       margin-top: 1.75em;
+}
+
+.social-navigation a {
+       height: auto;
+       padding: 3px 7px;
+       width: auto;
+}
+
+.social-navigation .screen-reader-text {
+       height: auto;
+       position: relative !important;
+       width: auto;
+}
+
+.site-header-main {
+       overflow : hidden;
+       zoom : 1;
+}
+
+.entry-footer > span {
+       margin-right: 14px;
+}
+
+.site-info .site-title {
+       font-size: 13px;
+       margin-right: 14px;
+}
+
+.gallery-item {
+       max-width: 30%;
+}
+
+.gallery-columns-1 .gallery-item {
+       max-width: 100%;
+}
+
+.gallery-columns-2 .gallery-item {
+       max-width: 46%;
+}
+
+.gallery-columns-4 .gallery-item {
+       max-width: 22%;
+}
+
+.gallery-columns-5 .gallery-item {
+       max-width: 17%;
+}
+
+.gallery-columns-6 .gallery-item {
+       max-width: 13.5%;
+}
+
+.gallery-columns-7 .gallery-item {
+       max-width: 11%;
+}
+
+.gallery-columns-8 .gallery-item {
+       max-width: 9.5%;
+}
+
+.gallery-columns-9 .gallery-item {
+       max-width: 8%;
+}
+
+.rtl .image-navigation .nav-previous + .nav-next,
+.rtl .comment-navigation .nav-previous + .nav-next {
+       margin-right: 14px;
+       margin-left: 0;
+}
+
+.rtl .entry-footer > span {
+       margin-right: 14px;
+       margin-left: 0;
+}
+
+.rtl .site-info .site-title {
+       margin-right: 0;
+       margin-left: 14px;
+}
diff --git a/wp-content/themes/twentysixteen/css/ie8.css b/wp-content/themes/twentysixteen/css/ie8.css
new file mode 100644 (file)
index 0000000..7b181c1
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+Theme Name: Twenty Sixteen
+Description: IE8 specific style.
+*/
+
+code {
+       background-color: transparent;
+       padding: 0;
+}
+
+.entry-content a,
+.entry-summary a,
+.taxonomy-description a,
+.logged-in-as a,
+.comment-content a,
+.pingback .comment-body > a,
+.textwidget a,
+.entry-footer a:hover,
+.site-info a:hover {
+       text-decoration: underline;
+}
+
+.entry-content a:hover,
+.entry-content a:focus,
+.entry-summary a:hover,
+.entry-summary a:focus,
+.taxonomy-description a:hover,
+.taxonomy-description a:focus,
+.logged-in-as a:hover,
+.logged-in-as a:focus,
+.comment-content a:hover,
+.comment-content a:focus,
+.pingback .comment-body > a:hover,
+.pingback .comment-body > a:focus,
+.textwidget a:hover,
+.textwidget a:focus,
+.entry-content .wp-audio-shortcode a,
+.entry-content .wp-playlist a,
+.page-links a {
+       text-decoration: none;
+}
+
+.site {
+       margin: 21px;
+}
+
+.site-inner {
+       max-width: 710px;
+}
+
+.site-header {
+       padding-top: 3.9375em;
+       padding-bottom: 3.9375em;
+}
+
+.site-branding {
+       float: left;
+       margin-top: 1.3125em;
+       margin-bottom: 1.3125em;
+}
+
+.site-title {
+       font-size: 28px;
+       line-height: 1.25;
+}
+
+.site-description {
+       display: block;
+}
+
+.menu-toggle {
+       float: right;
+       font-size: 16px;
+       margin: 1.3125em 0;
+       padding: 0.8125em 0.875em 0.6875em;
+}
+
+.site-header-menu {
+       clear: both;
+       margin: 0;
+       padding: 1.3125em 0;
+}
+
+.site-header .main-navigation + .social-navigation {
+       margin-top: 2.625em;
+}
+
+.header-image {
+       margin: 1.3125em 0;
+}
+
+.site-main {
+       margin-bottom: 5.25em;
+}
+
+.post-navigation {
+       margin-bottom: 5.25em;
+}
+
+.post-navigation .post-title {
+       font-size: 28px;
+       line-height: 1.25;
+}
+
+.pagination {
+       margin: 0 7.6923% 4.421052632em;
+}
+
+.pagination .nav-links:before,
+.pagination .nav-links:after {
+       display: none;
+}
+
+/* restore screen-reader-text */
+.pagination .current .screen-reader-text {
+       position: absolute !important;
+}
+
+.pagination .page-numbers {
+       display: inline-block;
+       font-weight: 400;
+}
+
+.image-navigation .nav-previous,
+.image-navigation .nav-next,
+.comment-navigation .nav-previous,
+.comment-navigation .nav-next {
+       display: inline-block;
+}
+
+.image-navigation .nav-previous + .nav-next:before,
+.comment-navigation .nav-previous + .nav-next:before {
+       content: "\002f";
+       display: inline-block;
+       opacity: 0.7;
+       padding: 0 0.538461538em;
+}
+
+.site-main > article {
+       margin-bottom: 5.25em;
+}
+
+.entry-title {
+       font-size: 33px;
+       line-height: 1.2727272727;
+       margin-bottom: 0.8484848485em;
+}
+
+.entry-content blockquote.alignleft,
+.entry-content blockquote.alignright {
+       border-width: 4px 0 0 0;
+       padding: 0.9473684211em 0 0;
+       width: 50%;
+}
+
+.entry-footer > span:before {
+       content: "\002f";
+       display: inline-block;
+       opacity: 0.7;
+       padding: 0 0.538461538em;
+}
+
+.entry-footer > span:first-child:before {
+       display: none;
+}
+
+.updated {
+       display: none;
+}
+
+.updated.published {
+       display: inline;
+}
+
+.comment-author {
+       margin-bottom: 0;
+}
+
+.comment-author .avatar {
+       height: 42px;
+       position: relative;
+       top: 0.25em;
+       width: 42px;
+}
+
+.comment-list .children > li {
+       padding-left: 1.75em;
+}
+
+.comment-list + .comment-respond,
+.comment-navigation + .comment-respond {
+       padding-top: 3.5em;
+}
+
+.comment-reply-link {
+       margin-top: 0;
+}
+
+.comments-area,
+.widget,
+.content-bottom-widgets .widget-area {
+       margin-bottom: 5.25em;
+}
+
+.sidebar,
+.widecolumn {
+       margin-bottom: 5.25em;
+}
+
+.site-footer .main-navigation,
+.site-footer .social-navigation {
+       display: none;
+}
+
+.rtl .site-branding {
+       float: right;
+}
+
+.rtl .menu-toggle {
+       float: left;
+}
+
+.rtl .comment-list .children > li {
+       padding-right: 1.75em;
+       padding-left: 0;
+}
diff --git a/wp-content/themes/twentysixteen/footer.php b/wp-content/themes/twentysixteen/footer.php
new file mode 100644 (file)
index 0000000..6c910cf
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+/**
+ * The template for displaying the footer
+ *
+ * Contains the closing of the #content div and all content after
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+?>
+
+               </div><!-- .site-content -->
+
+               <footer id="colophon" class="site-footer" role="contentinfo">
+                       <?php if ( has_nav_menu( 'primary' ) ) : ?>
+                               <nav class="main-navigation" role="navigation" aria-label="<?php _e( 'Footer Primary Menu', 'twentysixteen' ); ?>">
+                                       <?php
+                                               wp_nav_menu( array(
+                                                       'theme_location' => 'primary',
+                                                       'menu_class'     => 'primary-menu',
+                                                ) );
+                                       ?>
+                               </nav><!-- .main-navigation -->
+                       <?php endif; ?>
+
+                       <?php if ( has_nav_menu( 'social' ) ) : ?>
+                               <nav class="social-navigation" role="navigation" aria-label="<?php _e( 'Footer Social Links Menu', 'twentysixteen' ); ?>">
+                                       <?php
+                                               wp_nav_menu( array(
+                                                       'theme_location' => 'social',
+                                                       'menu_class'     => 'social-links-menu',
+                                                       'depth'          => 1,
+                                                       'link_before'    => '<span class="screen-reader-text">',
+                                                       'link_after'     => '</span>',
+                                               ) );
+                                       ?>
+                               </nav><!-- .social-navigation -->
+                       <?php endif; ?>
+
+                       <div class="site-info">
+                               <?php
+                                       /**
+                                        * Fires before the twentysixteen footer text for footer customization.
+                                        *
+                                        * @since Twenty Sixteen 1.0
+                                        */
+                                       do_action( 'twentysixteen_credits' );
+                               ?>
+                               <span class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></span>
+                               <a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentysixteen' ) ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentysixteen' ), 'WordPress' ); ?></a>
+                       </div><!-- .site-info -->
+               </footer><!-- .site-footer -->
+       </div><!-- .site-inner -->
+</div><!-- .site -->
+
+<?php wp_footer(); ?>
+</body>
+</html>
diff --git a/wp-content/themes/twentysixteen/functions.php b/wp-content/themes/twentysixteen/functions.php
new file mode 100644 (file)
index 0000000..1371e2b
--- /dev/null
@@ -0,0 +1,391 @@
+<?php
+/**
+ * Twenty Sixteen functions and definitions
+ *
+ * Set up the theme and provides some helper functions, which are used in the
+ * theme as custom template tags. Others are attached to action and filter
+ * hooks in WordPress to change core functionality.
+ *
+ * When using a child theme you can override certain functions (those wrapped
+ * in a function_exists() call) by defining them first in your child theme's
+ * functions.php file. The child theme's functions.php file is included before
+ * the parent theme's file, so the child theme functions would be used.
+ *
+ * @link https://codex.wordpress.org/Theme_Development
+ * @link https://codex.wordpress.org/Child_Themes
+ *
+ * Functions that are not pluggable (not wrapped in function_exists()) are
+ * instead attached to a filter or action hook.
+ *
+ * For more information on hooks, actions, and filters,
+ * {@link https://codex.wordpress.org/Plugin_API}
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+/**
+ * Twenty Sixteen only works in WordPress 4.4 or later.
+ */
+if ( version_compare( $GLOBALS['wp_version'], '4.4-alpha', '<' ) ) {
+       require get_template_directory() . '/inc/back-compat.php';
+}
+
+if ( ! function_exists( 'twentysixteen_setup' ) ) :
+/**
+ * Sets up theme defaults and registers support for various WordPress features.
+ *
+ * Note that this function is hooked into the after_setup_theme hook, which
+ * runs before the init hook. The init hook is too late for some features, such
+ * as indicating support for post thumbnails.
+ *
+ * Create your own twentysixteen_setup() function to override in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_setup() {
+       /*
+        * Make theme available for translation.
+        * Translations can be filed in the /languages/ directory.
+        * If you're building a theme based on Twenty Sixteen, use a find and replace
+        * to change 'twentysixteen' to the name of your theme in all the template files
+        */
+       load_theme_textdomain( 'twentysixteen', get_template_directory() . '/languages' );
+
+       // Add default posts and comments RSS feed links to head.
+       add_theme_support( 'automatic-feed-links' );
+
+       /*
+        * Let WordPress manage the document title.
+        * By adding theme support, we declare that this theme does not use a
+        * hard-coded <title> tag in the document head, and expect WordPress to
+        * provide it for us.
+        */
+       add_theme_support( 'title-tag' );
+
+       /*
+        * Enable support for Post Thumbnails on posts and pages.
+        *
+        * @link http://codex.wordpress.org/Function_Reference/add_theme_support#Post_Thumbnails
+        */
+       add_theme_support( 'post-thumbnails' );
+       set_post_thumbnail_size( 1200, 0, true );
+
+       // This theme uses wp_nav_menu() in two locations.
+       register_nav_menus( array(
+               'primary' => __( 'Primary Menu', 'twentysixteen' ),
+               'social'  => __( 'Social Links Menu', 'twentysixteen' ),
+       ) );
+
+       /*
+        * Switch default core markup for search form, comment form, and comments
+        * to output valid HTML5.
+        */
+       add_theme_support( 'html5', array(
+               'search-form',
+               'comment-form',
+               'comment-list',
+               'gallery',
+               'caption',
+       ) );
+
+       /*
+        * Enable support for Post Formats.
+        *
+        * See: https://codex.wordpress.org/Post_Formats
+        */
+       add_theme_support( 'post-formats', array(
+               'aside',
+               'image',
+               'video',
+               'quote',
+               'link',
+               'gallery',
+               'status',
+               'audio',
+               'chat',
+       ) );
+
+       /*
+        * This theme styles the visual editor to resemble the theme style,
+        * specifically font, colors, icons, and column width.
+        */
+       add_editor_style( array( 'css/editor-style.css', twentysixteen_fonts_url() ) );
+}
+endif; // twentysixteen_setup
+add_action( 'after_setup_theme', 'twentysixteen_setup' );
+
+/**
+ * Sets the content width in pixels, based on the theme's design and stylesheet.
+ *
+ * Priority 0 to make it available to lower priority callbacks.
+ *
+ * @global int $content_width
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_content_width() {
+       $GLOBALS['content_width'] = apply_filters( 'twentysixteen_content_width', 840 );
+}
+add_action( 'after_setup_theme', 'twentysixteen_content_width', 0 );
+
+/**
+ * Registers a widget area.
+ *
+ * @link https://developer.wordpress.org/reference/functions/register_sidebar/
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_widgets_init() {
+       register_sidebar( array(
+               'name'          => __( 'Sidebar', 'twentysixteen' ),
+               'id'            => 'sidebar-1',
+               'description'   => __( 'Add widgets here to appear in your sidebar.', 'twentysixteen' ),
+               'before_widget' => '<section id="%1$s" class="widget %2$s">',
+               'after_widget'  => '</section>',
+               'before_title'  => '<h2 class="widget-title">',
+               'after_title'   => '</h2>',
+       ) );
+
+       register_sidebar( array(
+               'name'          => __( 'Content Bottom 1', 'twentysixteen' ),
+               'id'            => 'sidebar-2',
+               'description'   => __( 'Appears at the bottom of the content on posts and pages.', 'twentysixteen' ),
+               'before_widget' => '<section id="%1$s" class="widget %2$s">',
+               'after_widget'  => '</section>',
+               'before_title'  => '<h2 class="widget-title">',
+               'after_title'   => '</h2>',
+       ) );
+
+       register_sidebar( array(
+               'name'          => __( 'Content Bottom 2', 'twentysixteen' ),
+               'id'            => 'sidebar-3',
+               'description'   => __( 'Appears at the bottom of the content on posts and pages.', 'twentysixteen' ),
+               'before_widget' => '<section id="%1$s" class="widget %2$s">',
+               'after_widget'  => '</section>',
+               'before_title'  => '<h2 class="widget-title">',
+               'after_title'   => '</h2>',
+       ) );
+}
+add_action( 'widgets_init', 'twentysixteen_widgets_init' );
+
+if ( ! function_exists( 'twentysixteen_fonts_url' ) ) :
+/**
+ * Register Google fonts for Twenty Sixteen.
+ *
+ * Create your own twentysixteen_fonts_url() function to override in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @return string Google fonts URL for the theme.
+ */
+function twentysixteen_fonts_url() {
+       $fonts_url = '';
+       $fonts     = array();
+       $subsets   = 'latin,latin-ext';
+
+       /* translators: If there are characters in your language that are not supported by Merriweather, translate this to 'off'. Do not translate into your own language. */
+       if ( 'off' !== _x( 'on', 'Merriweather font: on or off', 'twentysixteen' ) ) {
+               $fonts[] = 'Merriweather:400,700,900,400italic,700italic,900italic';
+       }
+
+       /* translators: If there are characters in your language that are not supported by Montserrat, translate this to 'off'. Do not translate into your own language. */
+       if ( 'off' !== _x( 'on', 'Montserrat font: on or off', 'twentysixteen' ) ) {
+               $fonts[] = 'Montserrat:400,700';
+       }
+
+       /* translators: If there are characters in your language that are not supported by Inconsolata, translate this to 'off'. Do not translate into your own language. */
+       if ( 'off' !== _x( 'on', 'Inconsolata font: on or off', 'twentysixteen' ) ) {
+               $fonts[] = 'Inconsolata:400';
+       }
+
+       if ( $fonts ) {
+               $fonts_url = add_query_arg( array(
+                       'family' => urlencode( implode( '|', $fonts ) ),
+                       'subset' => urlencode( $subsets ),
+               ), 'https://fonts.googleapis.com/css' );
+       }
+
+       return $fonts_url;
+}
+endif;
+
+/**
+ * Handles JavaScript detection.
+ *
+ * Adds a `js` class to the root `<html>` element when JavaScript is detected.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_javascript_detection() {
+       echo "<script>(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script>\n";
+}
+add_action( 'wp_head', 'twentysixteen_javascript_detection', 0 );
+
+/**
+ * Enqueues scripts and styles.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_scripts() {
+       // Add custom fonts, used in the main stylesheet.
+       wp_enqueue_style( 'twentysixteen-fonts', twentysixteen_fonts_url(), array(), null );
+
+       // Add Genericons, used in the main stylesheet.
+       wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.4.1' );
+
+       // Theme stylesheet.
+       wp_enqueue_style( 'twentysixteen-style', get_stylesheet_uri() );
+
+       // Load the Internet Explorer specific stylesheet.
+       wp_enqueue_style( 'twentysixteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentysixteen-style' ), '20150825' );
+       wp_style_add_data( 'twentysixteen-ie', 'conditional', 'lt IE 10' );
+
+       // Load the Internet Explorer 8 specific stylesheet.
+       wp_enqueue_style( 'twentysixteen-ie8', get_template_directory_uri() . '/css/ie8.css', array( 'twentysixteen-style' ), '20150825' );
+       wp_style_add_data( 'twentysixteen-ie8', 'conditional', 'lt IE 9' );
+
+       // Load the Internet Explorer 7 specific stylesheet.
+       wp_enqueue_style( 'twentysixteen-ie7', get_template_directory_uri() . '/css/ie7.css', array( 'twentysixteen-style' ), '20150825' );
+       wp_style_add_data( 'twentysixteen-ie7', 'conditional', 'lt IE 8' );
+
+       // Load the html5 shiv.
+       wp_enqueue_script( 'twentysixteen-html5', get_template_directory_uri() . '/js/html5.js', array(), '3.7.3' );
+       wp_script_add_data( 'twentysixteen-html5', 'conditional', 'lt IE 9' );
+
+       wp_enqueue_script( 'twentysixteen-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20150825', true );
+
+       if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
+               wp_enqueue_script( 'comment-reply' );
+       }
+
+       if ( is_singular() && wp_attachment_is_image() ) {
+               wp_enqueue_script( 'twentysixteen-keyboard-image-navigation', get_template_directory_uri() . '/js/keyboard-image-navigation.js', array( 'jquery' ), '20150825' );
+       }
+
+       wp_enqueue_script( 'twentysixteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20150825', true );
+
+       wp_localize_script( 'twentysixteen-script', 'screenReaderText', array(
+               'expand'   => __( 'expand child menu', 'twentysixteen' ),
+               'collapse' => __( 'collapse child menu', 'twentysixteen' ),
+       ) );
+}
+add_action( 'wp_enqueue_scripts', 'twentysixteen_scripts' );
+
+/**
+ * Adds custom classes to the array of body classes.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @param array $classes Classes for the body element.
+ * @return array (Maybe) filtered body classes.
+ */
+function twentysixteen_body_classes( $classes ) {
+       // Adds a class of custom-background-image to sites with a custom background image.
+       if ( get_background_image() ) {
+               $classes[] = 'custom-background-image';
+       }
+
+       // Adds a class of group-blog to sites with more than 1 published author.
+       if ( is_multi_author() ) {
+               $classes[] = 'group-blog';
+       }
+
+       // Adds a class of no-sidebar to sites without active sidebar.
+       if ( ! is_active_sidebar( 'sidebar-1' ) ) {
+               $classes[] = 'no-sidebar';
+       }
+
+       // Adds a class of hfeed to non-singular pages.
+       if ( ! is_singular() ) {
+               $classes[] = 'hfeed';
+       }
+
+       return $classes;
+}
+add_filter( 'body_class', 'twentysixteen_body_classes' );
+
+/**
+ * Converts a HEX value to RGB.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @param string $color The original color, in 3- or 6-digit hexadecimal form.
+ * @return array Array containing RGB (red, green, and blue) values for the given
+ *               HEX code, empty array otherwise.
+ */
+function twentysixteen_hex2rgb( $color ) {
+       $color = trim( $color, '#' );
+
+       if ( strlen( $color ) === 3 ) {
+               $r = hexdec( substr( $color, 0, 1 ).substr( $color, 0, 1 ) );
+               $g = hexdec( substr( $color, 1, 1 ).substr( $color, 1, 1 ) );
+               $b = hexdec( substr( $color, 2, 1 ).substr( $color, 2, 1 ) );
+       } else if ( strlen( $color ) === 6 ) {
+               $r = hexdec( substr( $color, 0, 2 ) );
+               $g = hexdec( substr( $color, 2, 2 ) );
+               $b = hexdec( substr( $color, 4, 2 ) );
+       } else {
+               return array();
+       }
+
+       return array( 'red' => $r, 'green' => $g, 'blue' => $b );
+}
+
+/**
+ * Custom template tags for this theme.
+ */
+require get_template_directory() . '/inc/template-tags.php';
+
+/**
+ * Customizer additions.
+ */
+require get_template_directory() . '/inc/customizer.php';
+
+/**
+ * Add custom image sizes attribute to enhance responsive image functionality
+ * for content images
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @param string $sizes A source size value for use in a 'sizes' attribute.
+ * @param array  $size  Image size. Accepts an array of width and height
+ *                      values in pixels (in that order).
+ * @return string A source size value for use in a content image 'sizes' attribute.
+ */
+function twentysixteen_content_image_sizes_attr( $sizes, $size ) {
+       $width = $size[0];
+
+       840 <= $width && $sizes = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px';
+
+       if ( 'page' === get_post_type() ) {
+               840 > $width && $sizes = '(max-width: ' . $width . 'px) 85vw, ' . $width . 'px';
+       } else {
+               840 > $width && 600 <= $width && $sizes = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px';
+               600 > $width && $sizes = '(max-width: ' . $width . 'px) 85vw, ' . $width . 'px';
+       }
+
+       return $sizes;
+}
+add_filter( 'wp_calculate_image_sizes', 'twentysixteen_content_image_sizes_attr', 10 , 2 );
+
+/**
+ * Add custom image sizes attribute to enhance responsive image functionality
+ * for post thumbnails
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @param array $attr Attributes for the image markup.
+ * @param int   $attachment Image attachment ID.
+ * @param array $size Registered image size or flat array of height and width dimensions.
+ * @return string A source size value for use in a post thumbnail 'sizes' attribute.
+ */
+function twentysixteen_post_thumbnail_sizes_attr( $attr, $attachment, $size ) {
+       if ( 'post-thumbnail' === $size ) {
+               is_active_sidebar( 'sidebar-1' ) && $attr['sizes'] = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 60vw, (max-width: 1362px) 62vw, 840px';
+               ! is_active_sidebar( 'sidebar-1' ) && $attr['sizes'] = '(max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 88vw, 1200px';
+       }
+       return $attr;
+}
+add_filter( 'wp_get_attachment_image_attributes', 'twentysixteen_post_thumbnail_sizes_attr', 10 , 3 );
diff --git a/wp-content/themes/twentysixteen/genericons/Genericons.eot b/wp-content/themes/twentysixteen/genericons/Genericons.eot
new file mode 100644 (file)
index 0000000..7322565
Binary files /dev/null and b/wp-content/themes/twentysixteen/genericons/Genericons.eot differ
diff --git a/wp-content/themes/twentysixteen/genericons/Genericons.svg b/wp-content/themes/twentysixteen/genericons/Genericons.svg
new file mode 100644 (file)
index 0000000..4740685
--- /dev/null
@@ -0,0 +1,537 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<!--
+2015-9-18: Created with FontForge (http://fontforge.org)
+-->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
+<metadata>
+Created by FontForge 20150618 at Fri Sep 18 10:24:13 2015
+ By Joen Asmussen
+Copyright (c) 2015, Joen Asmussen
+</metadata>
+<defs>
+<font id="Genericons" horiz-adv-x="2048" >
+  <font-face 
+    font-family="Genericons"
+    font-weight="400"
+    font-stretch="normal"
+    units-per-em="2048"
+    panose-1="2 0 5 3 0 0 0 0 0 0"
+    ascent="2048"
+    descent="0"
+    bbox="-0.0140489 0 2048.01 2048"
+    underline-thickness="102.4"
+    underline-position="-204.8"
+    unicode-range="U+0020-F517"
+  />
+    <missing-glyph />
+    <glyph glyph-name="space" unicode=" " horiz-adv-x="200" 
+ />
+    <glyph glyph-name="uniF413" unicode="&#xf413;" 
+d="M256 1280c565.504 0 1024 -458.496 1024 -1024h-256c0 423.552 -344.448 768 -768 768v256zM256 1792c848.256 0 1536 -687.744 1536 -1536h-256c0 705.792 -574.208 1280 -1280 1280v256zM448 640c106.112 0 192 -86.0156 192 -192s-85.8877 -192 -192 -192
+s-192 86.0156 -192 192s85.8877 192 192 192z" />
+    <glyph glyph-name="uniF462" unicode="&#xf462;" 
+d="M618.502 1337l-213.004 142.004l-303.335 -455.002l303.335 -455.002l213.004 142.004l-208.665 312.998zM1642.5 1479l-213.004 -142.004l208.665 -312.998l-208.665 -312.998l213.004 -142.004l303.335 455.002zM771.821 543.045l248.357 -62.0898l256 1024
+l-248.357 62.0898z" />
+    <glyph glyph-name="uniF457" unicode="&#xf457;" 
+d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768c-424.192 0 -768 343.936 -768 768s343.808 768 768 768zM1024 512c70.6562 0 128 57.4717 128 128s-57.3438 128 -128 128c-70.7842 0 -128 -57.4717 -128 -128s57.2158 -128 128 -128z
+M1342.72 1155.84c24.832 38.9121 37.248 85.1201 37.1201 138.752c0 74.4961 -27.6475 133.504 -83.7119 176.641c-55.9355 43.2637 -133.632 64.7676 -231.936 64.7676c-119.809 0 -234.496 -31.2324 -344.32 -93.9521l91.9043 -180.096
+c89.2158 47.2314 167.168 70.9121 233.983 70.9121c26.752 0 48.5127 -5.37598 65.2803 -16.2559c17.2803 -10.752 25.4717 -25.4727 25.4717 -44.0322c0 -23.2959 -8.06348 -44.0322 -23.5518 -62.208c-16 -18.0479 -41.4717 -38.4004 -77.1836 -60.9277
+c-45.1846 -28.1602 -76.416 -57.0889 -94.3359 -87.04c-17.5361 -29.6963 -26.3682 -66.4326 -26.3682 -109.44v-56.96h203.647v34.0479c0 18.6885 5.50391 35.2002 17.2803 48.8965c12.0322 14.0801 40.96 36.0957 86.9121 66.0479
+c55.04 34.8154 94.5918 71.6797 119.808 110.848z" />
+    <glyph glyph-name="uniF403" unicode="&#xf403;" 
+d="M1541.38 1530.62l506.624 -506.624l-506.624 -506.624c-131.456 -134.272 -314.752 -217.728 -517.376 -217.728c-202.752 0 -386.048 83.4551 -517.504 217.983l-506.496 506.368v0l506.496 506.496c131.456 134.4 314.624 217.984 517.504 217.984
+c202.752 0 385.92 -83.584 517.376 -217.856zM1404.42 651.776l372.096 372.224l-370.943 370.944c-102.528 104.704 -237.568 161.536 -381.568 161.536c-144.128 0 -279.168 -56.9609 -380.288 -160.385l-372.096 -372.096l370.688 -370.56
+c102.528 -104.96 237.696 -161.792 381.824 -161.792c144 0 279.168 56.832 380.288 160.128zM1408 1024zM640 1024c0 212.096 172.032 384 384 384s384 -171.904 384 -384c0 -211.968 -172.032 -384 -384 -384s-384 172.032 -384 384zM768 1152
+c0 -70.6562 57.2158 -128 128 -128c70.6562 0 128 57.3438 128 128s-57.3438 128 -128 128c-70.7842 0 -128 -57.3438 -128 -128z" />
+    <glyph glyph-name="uniF505" unicode="&#xf505;" 
+d="M256 1408v256h256v-256h-256zM768 1664h1024v-256h-1024v256zM256 896v256h256v-256h-256zM1408 1152v-256h-640v256h640zM256 384v256h256v-256h-256zM768 384v256h896v-256h-896z" />
+    <glyph glyph-name="uniF50F" unicode="&#xf50f;" 
+d="M1920 1024l-384 -384v256h-384v-384h256l-384 -384l-384 384h256v384h-384v-256l-384 384l384 384v-256h384v384h-256l384 384l384 -384h-256v-384h384v256z" />
+    <glyph glyph-name="uniF307" unicode="&#xf307;" 
+d="M768 640v128h128v-128h-128zM768 896v128h128v-128h-128zM768 1152v128h128v-128h-128zM512 640v128h128v-128h-128zM512 896v128h128v-128h-128zM1280 896v128h128v-128h-128zM1024 1152v128h128v-128h-128zM1280 1152v128h128v-128h-128zM1408 1664h256v-1280h-1408
+v1280h256v128h128v-128h640v128h128v-128zM1536 640v640c0 70.7842 -57.2158 128 -128 128h-896c-70.6562 0 -128 -57.2158 -128 -128v-640c0 -70.7842 57.3438 -128 128 -128h896c70.7842 0 128 57.2158 128 128zM1024 896v128h128v-128h-128zM1024 640v128h128v-128h-128z
+" />
+    <glyph glyph-name="uniF460" unicode="&#xf460;" 
+d="M1664 1280h128l-256 -768h-768l256 768h128l86.2725 256h339.455zM1300.86 1280h214.271l-43.1357 128h-128zM809.728 1536l86.2725 -256l-256 -768h-128l-256 768h128l86.2725 256h339.455zM532.864 1280h214.271l-43.1357 128h-128z" />
+    <glyph glyph-name="uniF430" unicode="&#xf430;" 
+d="M1024 1453.31l86.6562 -86.6553l-342.656 -342.656h896v-128h-896l342.656 -342.656l-86.6562 -86.6553l-493.312 493.312z" />
+    <glyph glyph-name="uniF515" unicode="&#xf515;" 
+d="M1024 1920c499.2 0 896 -396.8 896 -896s-396.8 -896 -896 -896s-896 396.8 -896 896s396.8 896 896 896zM1382.4 601.6c38.3994 0 64 25.6006 64 51.2002c0 38.4004 -12.8008 51.2002 -38.4004 64c-153.6 89.6006 -332.8 140.8 -524.8 140.8
+c-115.2 0 -217.601 -25.5996 -320 -51.1992c-25.6006 -12.8008 -51.2002 -25.6006 -51.2002 -64c0 -25.6006 12.7998 -51.2002 51.2002 -51.2002c0 0 25.5996 12.7998 38.3994 12.7998c89.6006 12.7998 192 25.5996 281.601 25.5996
+c166.399 0 332.8 -38.3994 460.8 -115.199c12.7998 -12.8008 25.5996 -12.8008 38.4004 -12.8008zM1484.8 832c38.4004 0 64 38.4004 64 76.7998c0 38.4004 -12.7998 64 -38.3994 76.7998c-179.2 102.4 -409.601 166.4 -640 166.4c-153.601 0 -256 -25.5996 -358.4 -51.2002
+c-38.4004 -12.7998 -51.2002 -38.3994 -51.2002 -76.7998s38.4004 -76.7998 76.7998 -89.5996c12.8008 0 25.6006 12.7998 38.4004 12.7998c76.7998 25.5996 179.2 38.3994 294.4 38.3994c217.6 0 422.399 -51.1992 563.199 -140.8
+c25.6006 0 25.6006 -12.7998 51.2002 -12.7998zM1600 1113.6c38.4004 0 76.7998 38.4004 76.7998 89.6006c0 38.3994 -25.5996 64 -51.2002 76.7998c-204.8 128 -473.6 179.2 -742.399 179.2c-153.601 0 -294.4 -12.7998 -422.4 -51.2002
+c-38.3994 -12.7998 -64 -38.4004 -64 -89.5996c0 -51.2002 38.4004 -89.6006 89.6006 -89.6006c25.5996 0 38.3994 12.7998 51.1992 12.7998c115.2 25.6006 230.4 38.4004 358.4 38.4004c243.2 0 486.4 -51.2002 652.8 -153.6
+c25.6006 -12.8008 38.4004 -12.8008 51.2002 -12.8008z" />
+    <glyph glyph-name="uniF448" unicode="&#xf448;" 
+d="M512 384v1280h384v-1280h-384zM1152 1664h384v-1280h-384v1280z" />
+    <glyph glyph-name="uniF453" unicode="&#xf453;" 
+d="M1536 2048c141.312 0 256 -114.688 256 -256v-1536c0 -141.312 -114.688 -256 -256 -256h-1024c-141.312 0 -256 114.688 -256 256v1536c0 141.312 114.688 256 256 256h1024zM1024 128c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128
+c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM1536 512v1280h-1024v-1280h1024z" />
+    <glyph glyph-name="uniF419" unicode="&#xf419;" 
+d="M0 256v256h2048v-256h-2048zM0 1792h2048v-256h-2048v256zM0 896v256h2048v-256h-2048z" />
+    <glyph glyph-name="uniF423" unicode="&#xf423;" 
+d="M567.936 1440.9l-267.136 -480.896h403.2v-384h-128v256h-492.8l372.864 671.104zM1644.8 960h403.2v-384h-128v256h-492.8l372.864 671.104l112 -62.207zM1088 1344c176.768 0 320 -143.232 320 -320s-143.232 -320 -320 -320s-320 143.232 -320 320
+s143.232 320 320 320zM1088 832c105.856 0 192 86.1436 192 192s-86.1436 192 -192 192s-192 -86.1436 -192 -192s86.1436 -192 192 -192z" />
+    <glyph glyph-name="uniF512" unicode="&#xf512;" 
+d="M1920 1280l-555.136 -387.968l212.863 -636.032l-553.728 394.496l-553.728 -394.496l212.991 636.032l-555.264 387.968h685.312l210.688 640l210.688 -640h685.312z" />
+    <glyph glyph-name="uniF417" unicode="&#xf417;" 
+d="M960 1792c318.08 0 576 -257.92 576 -576c0 -159.232 -64.6396 -303.36 -169.088 -407.68l-406.912 -407.04l-406.912 407.04c-104.448 104.319 -169.088 248.447 -169.088 407.68c0 318.08 257.92 576 576 576zM960 896c176.64 0 320 143.36 320 320
+s-143.36 320 -320 320c-176.768 0 -320 -143.36 -320 -320s143.232 -320 320 -320z" />
+    <glyph glyph-name="uniF410" unicode="&#xf410;" 
+d="M256 1536h1536v-128l-768 -384l-768 384v128zM256 1216l768 -384l768 384v-704h-1536v704z" />
+    <glyph glyph-name="uniF449" unicode="&#xf449;" 
+d="M512 512v1024h1024v-1024h-1024z" />
+    <glyph glyph-name="uniF467" unicode="&#xf467;" 
+d="M1280 1280c282.752 0 512 -229.248 512 -512v-299.904l-150.016 149.889c-99.9688 99.9678 -231.04 150.016 -361.984 150.016h-256v-384l-640 640l640 640v-384h256z" />
+    <glyph glyph-name="uniF224" unicode="&#xf224;" 
+d="M1536 1792c141.312 0 256 -114.688 256 -256v-384c0 -424.064 -343.936 -768 -768 -768s-768 343.936 -768 768v384c0 141.312 114.688 256 256 256h1024zM1498.5 1189.5c50.0479 50.0479 50.0479 131.072 0 180.992c-50.0479 50.0479 -130.944 50.0479 -180.992 0
+l-293.504 -293.504l-293.504 293.504c-50.0479 50.0479 -131.072 50.0479 -180.992 0c-50.0479 -49.9199 -50.0479 -130.944 0 -180.992l361.984 -361.984l4.22363 4.22461c22.4004 -37.376 61.5684 -63.7441 108.288 -63.7441s85.8877 26.3682 108.288 63.7441
+l4.22363 -4.22461z" />
+    <glyph glyph-name="uniF203" unicode="&#xf203;" 
+d="M1664 1920c141.312 0 256 -114.688 256 -256v-1280c0 -141.312 -114.688 -256 -256 -256h-281.856v711.168h269.44l12.416 259.456h-281.984v192.384v0.255859v12.0322c0 71.2959 15.2324 114.432 108.544 114.432c86.6562 0 166.017 -0.639648 166.017 -0.639648
+l5.8877 242.304s-77.6963 9.98438 -182.528 9.98438c-259.584 0 -372.096 -159.872 -372.096 -333.952v-236.8h-254.336v-259.328h254.336v-711.296h-723.84c-141.312 0 -256 114.688 -256 256v1280c0 141.312 114.688 256 256 256h1280z" />
+    <glyph glyph-name="uniF502" unicode="&#xf502;" 
+d="M128 2048h1920l-960 -960z" />
+    <glyph glyph-name="uniF412" unicode="&#xf412;" 
+d="M1920 832l-640 -640v448h-1024v704l384 384v-704h640v448z" />
+    <glyph glyph-name="uniF440" unicode="&#xf440;" 
+d="M1152 640v-256h256l-384 -384l-384 384h256v256h256zM1664 1024c141.312 0 256 -114.688 256 -256s-114.688 -256 -256 -256h-384v256h-512v-256h-384c-141.312 0 -256 114.688 -256 256s114.688 256 256 256h6.40039c-4.09668 20.7363 -6.40039 42.1123 -6.40039 64
+c0 176.768 143.232 320 320 320c89.3438 0 169.984 -36.7363 227.968 -95.8721c60.7998 131.84 193.408 223.872 348.032 223.872c211.968 0 384 -171.904 384 -384c0 -45.1836 -9.21582 -87.8076 -23.5518 -128h23.5518z" />
+    <glyph glyph-name="uniF305" unicode="&#xf305;" 
+d="M1408 1664h256v-1280h-1408v1280h256v128h128v-128h640v128h128v-128zM1536 640v640c0 70.7842 -57.2158 128 -128 128h-896c-70.6562 0 -128 -57.2158 -128 -128v-640c0 -70.7842 57.3438 -128 128 -128h896c70.7842 0 128 57.2158 128 128zM960 1280
+c35.3281 0 64 -28.6719 64 -64v-512c0 -35.3281 -28.6719 -64 -64 -64s-64 28.6719 -64 64v448h-64c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64h128z" />
+    <glyph glyph-name="uniF443" unicode="&#xf443;" 
+d="M1152 1664l384 -384v-121.472v-6.52832v-768h-1024v1280h512h128zM1408 512v640h-256h-128v128v256h-384v-1024h768z" />
+    <glyph glyph-name="uniF411" unicode="&#xf411;" 
+d="M1280 1728l448 -448l-896 -896h-448v448zM1280 1536l-594.688 -594.688l96 -96l594.688 594.688zM768 512l128 128l-96 96v0l-64 64v0l-96 96l-128 -128zM845.312 781.312l96 -96l594.688 594.688l-96 96z" />
+    <glyph glyph-name="uniF402" unicode="&#xf402;" 
+d="M896 1536v-256h256v-128h-256v-256h-128v256h-256v128h256v256h128zM1297.15 878.848l494.848 -494.848l-128 -128l-494.848 494.848c-94.8486 -68.9912 -210.816 -110.848 -337.152 -110.848c-318.08 0 -576 257.92 -576 576s257.92 576 576 576s576 -257.92 576 -576
+c0 -126.336 -41.8564 -242.304 -110.848 -337.152zM832 768c247.552 0 448 200.576 448 448s-200.448 448 -448 448c-247.424 0 -448 -200.576 -448 -448s200.576 -448 448 -448z" />
+    <glyph glyph-name="uniF420" unicode="&#xf420;" 
+d="M483.2 1564.8l-227.2 227.2h640v-640l-232.32 232.32c-93.0557 -92.1602 -151.68 -218.88 -151.68 -360.32c0 -238.208 163.584 -436.736 384 -493.824v-262.656c-363.008 61.0566 -640 376.064 -640 756.48c0 212.096 88.0645 402.048 227.2 540.8zM1792 1024
+c0 -212.096 -88.0645 -401.92 -227.2 -540.8l227.2 -227.2h-640v640l18.5596 -18.5596l213.761 -213.761c93.0557 92.1602 151.68 218.88 151.68 360.32c0 238.208 -163.584 436.736 -384 493.824v262.656c363.008 -61.0566 640 -376.064 640 -756.48z" />
+    <glyph glyph-name="uniF425" unicode="&#xf425;" 
+d="M704 1024c35.3281 0 64 -28.6719 64 -64s-28.6719 -64 -64 -64s-64 28.6719 -64 64s28.6719 64 64 64zM704 1280c35.3281 0 64 -28.6719 64 -64s-28.6719 -64 -64 -64s-64 28.6719 -64 64s28.6719 64 64 64zM704 768c35.3281 0 64 -28.6719 64 -64s-28.6719 -64 -64 -64
+s-64 28.6719 -64 64s28.6719 64 64 64zM896 896v128h384v-128h-384zM896 640v128h384v-128h-384zM1280 1664h256v-1280h-1152v1280h256c0 70.7842 57.3438 128 128 128h384c70.7842 0 128 -57.2158 128 -128zM832 1664c-35.3281 0 -64 -28.6719 -64 -64s28.6719 -64 64 -64
+h256c35.3281 0 64 28.6719 64 64s-28.6719 64 -64 64h-256zM1408 512v1024h-128v-128h-640v128h-128v-1024h896zM896 1152v128h384v-128h-384z" />
+    <glyph glyph-name="uniF508" unicode="&#xf508;" 
+d="M1450.5 1395.2c45.6963 -69.376 124.288 -115.2 213.504 -115.2c5.50391 0 10.4961 1.28027 15.8721 1.66406l-399.872 -799.872l-256 512l-256 -512l-128 256l-256 -512l-299.776 599.424l228.992 114.561l70.7842 -141.568l256 512l128 -256l256 512l256 -512z
+M1664 1728c106.112 0 192 -86.0156 192 -192s-85.8877 -192 -192 -192s-192 86.0156 -192 192s85.8877 192 192 192z" />
+    <glyph glyph-name="uniF507" unicode="&#xf507;" 
+d="M1792 604.544c76.2881 -44.416 128 -126.08 128 -220.544c0 -141.312 -114.688 -256 -256 -256s-256 114.688 -256 256c0 94.5918 51.7119 176.128 128 220.544v163.456c0 70.7842 -57.2158 128 -128 128h-256v-291.456c76.2881 -44.416 128 -126.08 128 -220.544
+c0 -141.312 -114.688 -256 -256 -256s-256 114.688 -256 256c0 94.4639 51.8398 176.128 128 220.544v291.456h-256c-70.6562 0 -128 -57.2158 -128 -128v-163.456c76.1602 -44.416 128 -126.08 128 -220.544c0 -141.312 -114.688 -256 -256 -256s-256 114.688 -256 256
+c0 94.4639 51.8398 176.128 128 220.544v163.456c0 212.096 171.904 384 384 384h256v291.456c-76.1602 44.416 -128 126.08 -128 220.544c0 141.312 114.688 256 256 256s256 -114.688 256 -256c0 -94.4639 -51.7119 -176.128 -128 -220.544v-291.456h256
+c211.968 0 384 -171.904 384 -384v-163.456zM1024 1792c-70.6562 0 -128 -57.3438 -128 -128s57.3438 -128 128 -128s128 57.3438 128 128s-57.3438 128 -128 128zM384 256c70.6562 0 128 57.2158 128 128s-57.3438 128 -128 128s-128 -57.2158 -128 -128
+s57.3438 -128 128 -128zM1024 256c70.6562 0 128 57.2158 128 128s-57.3438 128 -128 128s-128 -57.2158 -128 -128s57.3438 -128 128 -128zM1664 256c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128s-128 -57.2158 -128 -128s57.2158 -128 128 -128z" />
+    <glyph glyph-name="uniF306" unicode="&#xf306;" 
+d="M1151.87 1219.46c0.12793 -0.511719 0.12793 -0.896484 0.12793 -1.4082v-1.79199v-0.255859c0 -5.12012 -0.639648 -10.3682 -1.91992 -15.4883l-128 -512c-8.57617 -34.1758 -43.2637 -55.04 -77.5684 -46.5918c-34.3037 8.57617 -55.168 43.2637 -46.5918 77.5684
+l108.16 432.512h-174.08c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64h256h1.53613h1.28027c1.02344 -0.12793 1.91992 -0.12793 2.81543 -0.255859h0.255859c30.3359 -2.68848 54.5283 -26.624 57.8564 -56.96v0c0 -0.768555 0.12793 -1.4082 0.12793 -2.04785
+v-1.28027zM1408 1664h256v-1280h-1408v1280h256v128h128v-128h640v128h128v-128zM1536 640v640c0 70.7842 -57.2158 128 -128 128h-896c-70.6562 0 -128 -57.2158 -128 -128v-640c0 -70.7842 57.3438 -128 128 -128h896c70.7842 0 128 57.2158 128 128z" />
+    <glyph glyph-name="uniF406" unicode="&#xf406;" 
+d="M2048 1920l-832 -832l832 -832l-128 -128l-832 832l-832 -832l-128 128l832 832l-832 832l128 128l832 -832l832 832z" />
+    <glyph glyph-name="uniF215" unicode="&#xf215;" 
+d="M1664 1920c141.312 0 256 -114.688 256 -256v-1280c0 -141.312 -114.688 -256 -256 -256h-1280c-141.312 0 -256 114.688 -256 256v1280c0 141.312 114.688 256 256 256h1280zM1024 1408c-212.096 0 -384 -171.904 -384 -384c0 -211.968 171.904 -384 384 -384
+c211.968 0 384 172.032 384 384c0 212.096 -172.032 384 -384 384zM1792 384v768h-274.176c10.624 -41.0879 18.1758 -83.4561 18.1758 -128c0 -282.752 -229.248 -512 -512 -512s-512 229.248 -512 512c0 44.5439 7.42383 86.9121 18.1758 128h-274.176v-768
+c0 -70.7842 57.3438 -128 128 -128h1280c70.7842 0 128 57.2158 128 128zM1792 1536v128c0 70.6562 -57.2158 128 -128 128h-128c-70.7842 0 -128 -57.3438 -128 -128v-128c0 -70.6562 57.2158 -128 128 -128h128c70.7842 0 128 57.3438 128 128z" />
+    <glyph glyph-name="uniF202" unicode="&#xf202;" 
+d="M1920 1583.74c-49.2803 -73.7285 -111.744 -138.368 -183.552 -190.208c0.767578 -15.7441 1.2793 -31.6162 1.2793 -47.4883c0 -485.76 -369.92 -1046.02 -1046.27 -1046.02c-207.616 0 -400.768 60.7998 -563.456 165.248
+c28.7998 -3.45605 58.1123 -5.24805 87.8076 -5.24805c172.032 0 330.752 58.752 456.448 157.439c-160.768 2.81641 -296.576 108.929 -343.424 255.104c22.5283 -3.96777 45.4404 -6.52832 69.248 -6.52832c33.5361 0 65.9199 4.48047 96.7676 12.7998
+c-168.319 33.792 -294.912 182.272 -294.912 360.448v4.73633c49.6641 -27.5205 106.368 -44.0322 166.528 -45.9521c-98.6875 65.9199 -163.456 178.432 -163.456 305.92c0 67.3281 18.1758 130.688 49.792 184.96c181.376 -222.464 452.353 -368.768 757.889 -384.128
+c-6.27246 26.8799 -9.60059 54.9121 -9.60059 83.7119c0 203.008 164.608 367.616 367.616 367.616c105.855 0 201.472 -44.6719 268.544 -116.096c83.584 16.5117 162.304 47.1035 233.216 89.2158c-27.3916 -85.8887 -85.7598 -157.952 -161.536 -203.393
+c74.3682 8.83203 145.152 28.5439 211.072 57.8564z" />
+    <glyph glyph-name="uniF222" unicode="&#xf222;" 
+d="M1223.94 775.936c20.0967 20.0967 52.0967 19.9688 72.0645 0c19.9678 -19.9678 19.9678 -52.9912 0 -72.96c-56.96 -56.96 -145.92 -86.0156 -270.976 -86.0156c-126.977 0 -216.064 29.0557 -273.024 86.0156c-19.9678 19.9688 -19.9678 52.9922 0 72.96
+c19.9678 19.9688 51.9678 19.9688 71.9355 0c38.0166 -38.0156 103.04 -56.0635 199.04 -56.0635c97.9209 0 162.944 18.0479 200.96 56.0635zM894.976 982.016c0 -61.0557 -49.9199 -112 -112 -112c-60.9277 0 -110.976 50.9443 -110.976 112
+c0 61.9521 49.9199 112 110.976 112c61.9521 0 112 -50.0479 112 -112zM1265.02 1094.02c61.9512 0 112 -50.0479 112 -112c0 -61.0557 -50.0488 -112 -112 -112c-61.9521 0 -112 50.9443 -112 112c0 61.9521 50.0479 112 112 112zM1698.05 1089.02
+c24.96 17.9199 43.0078 45.9512 43.1357 78.9756c0 54.0156 -44.0312 98.0479 -98.0479 98.0479c-32 0 -57.9834 -16 -76.0322 -39.04c53.8887 -39.9355 98.9443 -87.04 130.944 -137.983zM1021.06 500.992c347.904 0 631.937 177.023 632.064 393.983
+c0 219.009 -284.032 396.032 -632.064 396.032c-349.056 0 -632.96 -177.023 -632.96 -395.008s283.904 -395.008 632.96 -395.008zM306.944 1168c0 -30.9756 16 -57.9844 39.9355 -74.8799c32 50.9443 76.9277 97.0234 131.968 136.96
+c-17.9199 22.0156 -43.0078 35.9678 -72.96 35.9678c-54.9121 0 -98.9434 -44.0322 -98.9434 -98.0479zM1600 1805.06c-41.9844 0 -77.0557 -35.0713 -77.0557 -77.0557s35.0713 -77.0557 77.0557 -77.0557s77.0557 34.9434 77.0557 77.0557
+s-35.0713 77.0557 -77.0557 77.0557zM1842.94 1168c0 -75.0078 -41.9844 -137.984 -101.889 -173.056c8.95996 -32 13.9521 -64.8965 13.9521 -98.9443c0 -274.944 -329.088 -498.048 -734.08 -498.048s-734.976 222.976 -734.976 497.023
+c0 35.9688 6.01562 70.0166 16.1279 104.064c-57.9844 34.9443 -97.0244 97.0244 -97.0244 168.96c0 110.976 89.9844 200.96 200.96 200.96c66.0488 0 124.032 -32.8955 160 -82.9443c114.944 60.9287 257.024 99.9688 411.904 105.984l92.0322 456.96
+c3.07227 14.0801 11.0078 25.9844 23.04 33.0244c12.0322 8.06348 25.9834 9.9834 39.04 7.04004l312.96 -72.0645c30.9756 52.9922 88.96 89.9844 155.008 89.9844c98.9443 0 179.072 -80 179.072 -178.944s-80 -178.944 -178.944 -178.944
+c-95.1035 0 -172.032 73.9844 -178.048 167.937l-262.016 60.0322l-77.0566 -386.049c148.992 -7.93555 285.952 -46.9756 397.057 -108.031c35.9678 51.9678 94.9756 86.0156 162.943 86.0156c109.952 0 199.937 -89.9844 199.937 -200.96z" />
+    <glyph glyph-name="uniF214" unicode="&#xf214;" 
+d="M1091.2 1920v-452.992h425.216v-281.216h-425.216v-459.52c0 -103.937 5.50391 -170.624 16.6396 -200.192c10.8799 -29.3125 31.4883 -52.8643 61.3125 -70.5283c39.6797 -23.8076 84.8633 -35.7119 135.936 -35.7119c90.624 0 180.864 29.4404 270.72 88.4482v-282.624
+c-76.6719 -35.9678 -146.048 -61.3125 -208 -75.9043c-61.9512 -14.4639 -129.023 -21.7598 -201.216 -21.7598c-81.9199 0 -154.368 10.3682 -217.344 30.9756c-62.9756 20.6084 -116.608 50.3047 -161.024 88.4482c-44.5439 38.2725 -75.2637 78.9766 -92.416 122.112
+c-17.1514 43.1357 -25.7275 105.6 -25.7275 187.52v628.736h-198.016v253.568c70.3994 22.9121 130.688 55.6797 180.863 98.4316c50.3047 42.624 90.4961 93.8242 120.832 153.856c30.3359 59.7754 51.2002 135.808 62.7207 228.352h254.72z" />
+    <glyph glyph-name="uniF104" unicode="&#xf104;" 
+d="M512 1664l1152 -640l-1152 -640v1280z" />
+    <glyph glyph-name="uniF50B" unicode="&#xf50b;" 
+d="M1408 1152l-384 -384l-384 384h256v512h256v-512h256zM384 640h1280v-256h-1280v256z" />
+    <glyph glyph-name="uniF409" unicode="&#xf409;" 
+d="M1024 1664l640 -512l-128 -128v-512h-1024v512l-128 128zM1152 576v448h-256v-448h256z" />
+    <glyph glyph-name="uniF458" unicode="&#xf458;" 
+d="M1920 1024l-1024 -640v480l-768 -480v1280l768 -480v480z" />
+    <glyph glyph-name="uniF218" unicode="&#xf218;" 
+d="M729.6 1152h550.4s12.7998 -38.4004 12.7998 -89.5996c0 -332.801 -230.399 -563.2 -563.2 -563.2c-320 0 -588.8 268.8 -588.8 588.8s281.601 588.8 588.8 588.8c153.601 0 294.4 -51.2002 384 -153.6l-153.6 -153.601c-38.4004 25.6006 -102.4 76.8008 -230.4 76.8008
+c-204.8 0 -371.199 -166.4 -371.199 -371.2s166.399 -371.2 371.199 -371.2c230.4 0 320 166.4 332.801 243.2h-332.801v204.8zM1664 1152h128v-128h-128v-128h-128v128h-128v128h128v128h128v-128z" />
+    <glyph glyph-name="uniF513" unicode="&#xf513;" 
+d="M1920 1280l-555.136 -387.968l212.863 -636.032l-553.728 394.496l-553.728 -394.496l212.991 636.032l-555.264 387.968h685.312l210.688 640l210.688 -640h685.312zM1024 807.68l307.584 -219.136l-118.4 353.536l300.288 209.92h-371.456l-118.016 358.528v-702.849z
+" />
+    <glyph glyph-name="uniF301" unicode="&#xf301;" 
+d="M704 1152h960l-256 -640h-1024v1024h384l64 -128h448v-128h-640l-128 -256h128z" />
+    <glyph glyph-name="uniF474" unicode="&#xf474;" 
+d="M128 1408v384h384zM640 768v512h768v-512h-768zM1536 1792h384v-384zM128 640l384 -384h-384v384zM1536 256l384 384v-384h-384zM1536 1408l256 384l128 -128zM1536 640l384 -256l-128 -128zM128 384l384 256l-256 -384zM128 1664l128 128l256 -384z" />
+    <glyph glyph-name="uniF438" unicode="&#xf438;" 
+d="M1280 1792c141.312 0 256 -114.688 256 -256v-1024c0 -141.312 -114.688 -256 -256 -256h-512c-141.312 0 -256 114.688 -256 256v384h128v-128h768v768h-768v-128h-128v128c0 141.312 114.688 256 256 256h512zM1024 384c70.7842 0 128 57.2158 128 128
+s-57.2158 128 -128 128c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM768 896v128h-512v256h512v128l384 -256z" />
+    <glyph glyph-name="uniF451" unicode="&#xf451;" 
+d="M256 384v1280l1024 -640zM1408 1664h384v-1280h-384v1280z" />
+    <glyph glyph-name="uniF404" unicode="&#xf404;" 
+d="M1024 640c-19.8398 0 -39.04 2.43164 -57.8564 5.63184l436.225 436.225c3.2002 -18.8164 5.63184 -38.0166 5.63184 -57.8564c0 -211.968 -172.032 -384 -384 -384zM1696.26 1375.74l351.744 -351.744l-506.624 -506.624
+c-131.456 -134.272 -314.752 -217.728 -517.376 -217.728c-117.248 0 -226.944 29.3115 -324.864 79.1035l147.072 146.944c56.7041 -20.6084 115.968 -34.0479 177.92 -34.0479c144 0 279.168 56.832 380.288 160.128l372.096 372.224l-216.063 215.936zM1606.02 1722.11
+l128.641 -129.024l-1279.87 -1279.87l-128.896 128.769l128 128.128l-453.888 453.888v0l506.496 506.496c131.456 134.4 314.624 217.984 517.504 217.984c170.368 0 324.48 -61.8242 448 -160.385zM896 1024c70.6562 0 128 57.3438 128 128s-57.3438 128 -128 128
+c-70.7842 0 -128 -57.3438 -128 -128s57.2158 -128 128 -128zM1229.18 1345.28l105.729 105.728c-90.752 66.8164 -197.12 105.473 -310.912 105.473c-144.128 0 -279.168 -56.9609 -380.288 -160.385l-372.096 -372.096l318.208 -318.336l113.023 113.024
+c-38.6553 59.5195 -62.8477 129.023 -62.8477 205.312c0 212.096 172.032 384 384 384c76.2881 0 145.792 -24.1924 205.184 -62.7197z" />
+    <glyph glyph-name="uniF209" unicode="&#xf209;" 
+d="M1073.15 2048c481.664 0 798.976 -348.672 798.976 -722.944c0 -495.104 -275.328 -865.151 -680.96 -865.151c-136.32 0 -264.448 73.7275 -308.352 157.439c0 0 -73.2168 -290.943 -88.832 -347.136c-26.8809 -97.2803 -79.2324 -194.56 -127.104 -270.208
+l-148.992 54.0156c-3.58398 88.3203 -0.639648 194.049 22.0166 289.92c24.1914 102.4 162.304 687.744 162.304 687.744s-40.3203 80.6406 -40.3203 199.809c0 187.008 108.544 326.784 243.456 326.784c114.816 0 170.24 -86.1445 170.24 -189.44
+c0 -115.328 -73.7275 -288 -111.488 -448c-31.6152 -133.632 67.2002 -242.816 199.168 -242.816c239.232 0 400.128 307.072 400.128 670.977c0 276.607 -186.367 483.712 -525.184 483.712c-382.72 0 -621.312 -285.568 -621.312 -604.544
+c0 -110.08 32.5117 -187.521 83.1992 -247.424c23.5527 -27.7764 26.624 -38.9121 18.3047 -70.6562c-6.0166 -23.04 -19.9688 -78.9766 -25.7285 -101.248c-8.44824 -32 -34.3037 -43.2637 -63.2314 -31.3604c-176.257 71.6807 -258.433 264.96 -258.433 482.048
+c0 358.656 302.336 788.48 902.145 788.48z" />
+    <glyph glyph-name="uniF217" unicode="&#xf217;" 
+d="M1024 1920c494.08 0 896 -402.048 896 -896c0 -494.08 -401.92 -896 -896 -896c-493.952 0 -896 401.92 -896 896c0 493.952 402.048 896 896 896zM1112.83 1769.47c-211.2 10.4961 -420.864 -73.4717 -564.608 -220.16
+c-146.432 -144.256 -216.063 -354.176 -189.695 -551.68c23.4238 -197.248 142.592 -378.496 307.584 -476.032c160.768 -96 365.312 -104.191 530.943 -29.0557c-47.1035 -13.0557 -96.6396 -20.3516 -147.712 -20.3516c-303.487 0 -550.399 246.911 -550.399 550.399
+c0 143.872 55.6797 274.944 146.304 373.12c1.02441 1.02441 1.91992 1.91992 2.81641 2.94434c4.60742 4.73535 9.08789 9.47168 13.6953 14.208c0.512695 0.383789 0.896484 1.02344 1.4082 1.2793c128 148.353 317.056 242.177 528.256 242.177
+c221.057 0 418.176 -102.912 546.048 -263.424c-20.8633 33.5352 -44.0312 65.6631 -69.376 95.6152c-137.983 168.832 -343.68 273.408 -555.264 280.96zM1415.04 1006.21c4.35156 -90.3682 -25.3438 -182.912 -80.7676 -257.152
+c-55.5527 -73.8555 -135.169 -129.664 -225.28 -156.928c-74.8799 -22.7842 -156.544 -25.5996 -234.112 -7.04004c54.0166 -21.6318 112.896 -33.6641 174.464 -33.6641c259.968 0 471.296 211.456 471.296 471.296c0 0.768555 -0.12793 1.66406 -0.12793 2.68848
+c-13.6953 142.336 -88.1914 276.352 -200.319 359.168c-137.345 104.576 -332.288 116.864 -479.232 38.0156c-73.2158 -38.5273 -136.832 -97.1514 -176.896 -166.912c-40.5762 -69.8877 -58.4961 -151.68 -52.2246 -230.912
+c10.624 -158.976 124.8 -305.023 271.616 -345.216c146.432 -44.0322 313.344 19.584 391.936 142.849c82.5605 120.447 62.7207 293.119 -36.3516 391.68c-94.0801 104.192 -260.992 115.968 -367.872 36.8643c-54.0156 -38.6562 -92.5439 -94.3359 -105.344 -157.057
+c-13.3125 -62.0801 -1.66406 -128.64 30.4639 -181.76c32.1279 -53.7598 83.7119 -93.5684 141.952 -108.032c58.2402 -15.1035 121.6 -4.86328 171.52 25.6006c50.5605 30.4639 87.5518 80.1279 97.9199 135.68c11.3926 55.2959 -1.66406 114.432 -34.3037 158.848
+c-32.1279 45.5684 -82.8164 73.3447 -135.936 76.9287c-52.9922 4.0957 -105.856 -17.2803 -141.568 -54.2725c-36.6084 -35.9678 -52.0957 -89.0879 -44.6719 -137.855c7.55176 -48.6406 38.2715 -93.6963 80 -115.584c26.4961 -14.7207 57.4717 -19.8408 86.9121 -16.3848
+c-62.0801 1.53613 -114.177 43.2646 -131.456 100.097c-0.512695 0.767578 -1.02441 1.66406 -1.4082 2.6875c-17.9199 41.4717 -13.0557 94.3359 16.1279 133.376c28.416 38.7842 77.5684 63.3604 128.768 60.7998c51.0723 -1.66406 101.376 -33.0234 128 -78.9756
+c27.3926 -45.8242 32 -106.752 7.80859 -158.336c-24.0645 -51.7119 -73.7285 -90.2402 -131.584 -101.632c-57.4717 -12.416 -122.752 4.73535 -167.68 47.3594c-44.8008 40.96 -72.0645 104.192 -67.4561 168.32c3.83984 133.12 150.911 237.44 287.104 200.96
+c138.368 -31.6162 226.944 -196.736 173.824 -338.304c-48.6406 -142.72 -224.769 -225.536 -373.888 -166.912c-74.1123 27.5195 -134.784 85.8877 -169.729 157.568c-34.9443 72.1914 -42.2402 158.592 -17.9199 237.695c47.8721 161.664 226.176 269.185 398.848 238.464
+c175.36 -25.5996 313.217 -192.64 317.568 -374.016zM1024 207.488c319.232 0 595.968 184.319 730.112 451.712c37.248 84.7354 58.8799 175.744 58.8799 265.728c0 318.977 -247.04 554.368 -553.216 607.616c154.496 -64 279.296 -200.32 331.52 -362.496
+c70.1445 -203.136 20.8643 -447.872 -133.12 -608.896c-148.224 -162.944 -384.384 -245.633 -608.128 -206.208c-226.048 35.584 -422.912 198.271 -517.504 407.936c-97.792 209.408 -90.3682 468.224 26.8799 674.432c116.736 206.337 329.344 354.433 566.272 395.009
+c11.7754 2.17578 23.6797 3.96777 35.584 5.37598c-420.992 -32.1279 -753.664 -384.641 -753.664 -813.696c0 -450.304 366.208 -816.512 816.384 -816.512z" />
+    <glyph glyph-name="uniF469" unicode="&#xf469;" 
+d="M256 1280h1536v-768h-256v384h-1024v-384h-256v768zM1408 1664v-256h-768v256h768zM1408 640c0 -98.3037 37.5039 -196.48 112.512 -271.488l112.513 -112.512h-768l-112.513 112.512c-75.0078 75.0078 -112.512 173.185 -112.512 271.488v128h768v-128z" />
+    <glyph glyph-name="uniF476" unicode="&#xf476;" 
+d="M384 1248c123.776 0 224 -100.224 224 -224c0 -123.648 -100.224 -224 -224 -224s-224 100.352 -224 224c0 123.776 100.224 224 224 224zM1024 1248c123.648 0 224 -100.224 224 -224c0 -123.648 -100.352 -224 -224 -224c-123.776 0 -224 100.352 -224 224
+c0 123.776 100.224 224 224 224zM1664 1248c123.648 0 224 -100.224 224 -224c0 -123.648 -100.352 -224 -224 -224s-224 100.352 -224 224c0 123.776 100.352 224 224 224z" />
+    <glyph glyph-name="uniF211" unicode="&#xf211;" 
+d="M1472 1440c229.888 0 416 -186.24 416 -416s-186.112 -416 -416 -416s-416 186.24 -416 416s186.112 416 416 416zM576 1440c229.76 0 416 -186.24 416 -416s-186.24 -416 -416 -416s-416 186.24 -416 416s186.24 416 416 416z" />
+    <glyph glyph-name="uniF456" unicode="&#xf456;" 
+d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768c-424.192 0 -768 343.936 -768 768s343.808 768 768 768zM1024 512c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM1113.22 896
+l51.584 640h-281.6l51.2002 -640h178.815z" />
+    <glyph glyph-name="uniF471" unicode="&#xf471;" 
+d="M512 1664h358.656c163.328 0 281.855 -23.2959 355.712 -69.7598c73.7275 -46.4639 110.592 -120.448 110.592 -221.824c0 -68.8643 -16.1279 -125.312 -48.3838 -169.344c-32.3838 -44.1602 -75.2646 -70.6562 -128.769 -79.6162v-7.93652
+c72.96 -16.2559 125.568 -46.7197 157.952 -91.3916c32.2559 -44.6719 48.5127 -104.063 48.5127 -178.048c0 -105.088 -38.0166 -187.008 -113.921 -245.888c-76.0312 -58.8809 -178.943 -88.1924 -309.248 -88.1924h-431.104v1152zM768 1207.81h130.176
+c66.3047 0 114.176 10.2402 143.872 30.7207c29.5684 20.4795 44.5439 54.3994 44.5439 101.632c0 44.1602 -16.1279 75.7754 -48.5117 94.9756c-32.3838 19.0723 -83.4561 28.7998 -153.344 28.7998h-116.736v-256.128zM768 1013.89v-300.16h147.456
+c67.2002 0 116.864 12.9287 148.864 38.6562c32.1279 25.7285 48.1279 65.1523 48.1279 118.145c0 95.6152 -68.3525 143.487 -204.929 143.487h-139.52v-0.12793z" />
+    <glyph glyph-name="uniF433" unicode="&#xf433;" 
+d="M0 896l896 -896h-896v896z" />
+    <glyph glyph-name="uniF447" unicode="&#xf447;" 
+d="M1408 512c70.7842 0 128 -57.2158 128 -128s-57.2158 -128 -128 -128s-128 57.2158 -128 128s57.2158 128 128 128zM640 512c70.6562 0 128 -57.2158 128 -128s-57.3438 -128 -128 -128s-128 57.2158 -128 128s57.3438 128 128 128zM1536 896h-896v-128h896v-128h-1024
+v1024h-256v128h384v-256h1152z" />
+    <glyph glyph-name="uniF511" unicode="&#xf511;" 
+d="M1024 1510.53l-118.016 -358.528h-371.328l300.288 -209.92l-118.272 -353.28l307.328 218.88l307.584 -219.136l-118.4 353.536l300.288 209.92h-371.456zM1024 1920v0l210.688 -640h685.312l-555.136 -387.968l212.863 -636.032l-553.728 394.496l-553.728 -394.496
+l212.991 636.032l-555.264 387.968h685.312z" />
+    <glyph glyph-name="uniF427" unicode="&#xf427;" 
+d="M1717.72 1436.21c99.7246 -99.7246 99.7246 -261.281 0 -361.006l-232.861 -232.989c-98.5723 -98.5723 -257.44 -99.3398 -357.421 -2.81543l-455.353 -455.354h-288.036v287.908l455.097 454.969l-0.767578 0.768555c-99.5967 99.5957 -99.5967 261.408 0 361.005
+l232.989 232.989c99.5957 99.7246 261.408 99.7246 361.005 0zM1344.04 1104.01l160.02 160.021l-256.031 256.031l-160.021 -160.02z" />
+    <glyph glyph-name="uniF219" unicode="&#xf219;" 
+d="M1438.08 1832.7c0 0 563.456 -229.376 370.176 -838.4c-267.264 -554.496 -784.64 -349.056 -784.64 -349.056v-277.504s-19.7119 -153.344 -202.88 -220.288c-183.296 -66.6885 -351.616 59.5195 -351.616 59.5195v279.809
+c83.584 -85.5039 195.712 -134.272 240.128 -9.98438v945.92h311.68v-537.472s460.416 -138.496 522.368 289.792c9.85645 475.392 -546.944 472.832 -546.944 472.832s-349.184 22.2715 -522.495 -257.536c-131.2 -222.848 37.1191 -423.424 37.1191 -423.424
+l-225.279 -200.448s-339.2 418.433 -7.42383 871.552c430.848 487.681 1159.81 194.688 1159.81 194.688z" />
+    <glyph glyph-name="uniF100" unicode="&#xf100;" 
+d="M512 1408h1024v-128h-1024v128zM1152 1152v-128h-640v128h640zM1280 1024v128h256v-128h-256zM896 768v128h640v-128h-640zM768 896v-128h-256v128h256zM512 512v128h768v-128h-768z" />
+    <glyph glyph-name="uniF400" unicode="&#xf400;" 
+d="M1792 384l-128 -128l-494.848 494.848c-94.8486 -68.9912 -210.816 -110.848 -337.152 -110.848c-318.08 0 -576 257.92 -576 576s257.92 576 576 576s576 -257.92 576 -576c0 -126.336 -41.8564 -242.304 -110.848 -337.152zM384 1216c0 -247.424 200.576 -448 448 -448
+c247.552 0 448 200.576 448 448s-200.448 448 -448 448c-247.424 0 -448 -200.576 -448 -448z" />
+    <glyph glyph-name="uniF439" unicode="&#xf439;" 
+d="M896 1664v-384h-256v384c0 70.7842 57.3438 128 128 128s128 -57.2158 128 -128zM1408 1664v-384h-256v384c0 70.7842 57.2158 128 128 128s128 -57.2158 128 -128zM384 1152h1280c0 -309.632 -219.904 -567.68 -512 -627.072v-268.928h-256v268.928
+c-292.096 59.2646 -512 317.44 -512 627.072z" />
+    <glyph glyph-name="uniF509" unicode="&#xf509;" 
+d="M1534.21 717.824l147.712 -88.5762c-134.4 -223.36 -378.24 -373.248 -657.92 -373.248c-279.552 0 -523.52 149.888 -657.92 373.248l147.712 88.7041c92.1602 -98.1758 226.816 -168.96 382.208 -194.688v500.736h-128v128h128v163.456
+c-76.1602 44.416 -128 126.08 -128 220.544c0 141.312 114.688 256 256 256s256 -114.688 256 -256c0 -94.4639 -51.7119 -176.128 -128 -220.544v-163.456h128v-128h-128v-500.864c155.52 25.7285 289.92 96.3838 382.208 194.688zM1024 1664
+c-70.6562 0 -128 -57.3438 -128 -128s57.3438 -128 128 -128c70.7842 0 128 57.3438 128 128s-57.2158 128 -128 128z" />
+    <glyph glyph-name="uniF510" unicode="&#xf510;" 
+d="M1664 1152v-256h-512v-512h-256v512h-512v256h512v512h256v-512h512z" />
+    <glyph glyph-name="uniF445" unicode="&#xf445;" 
+d="M1888 748.032l-57.5996 -139.648l-305.408 21.8887c-31.3604 -39.9365 -66.9443 -75.6484 -106.88 -107.009l21.7598 -305.536l-139.264 -57.5996l-200.704 231.552c-25.2158 -3.07129 -49.9199 -7.67969 -75.9043 -7.67969c-25.7275 0 -50.1758 4.6084 -75.1357 7.67969
+l-200.96 -231.808l-139.393 57.7275l21.7607 305.408c-39.9365 31.3604 -75.5205 66.9443 -107.009 106.88l-305.536 -21.7598l-57.7275 139.264l231.68 200.832c-3.07129 25.0879 -7.67969 49.792 -7.67969 75.7764c0 25.7275 4.6084 50.1758 7.55176 75.1357
+l-231.552 200.96l57.7275 139.393l305.28 -21.7607c31.4883 39.9365 67.2002 75.7764 107.265 107.265l-21.7607 305.408l139.137 57.5996l200.96 -231.68c24.96 2.94336 49.5352 7.67969 75.3916 7.67969s50.4316 -4.73633 75.3916 -7.67969l200.96 231.68
+l139.265 -57.5996l-21.8887 -305.408c39.9365 -31.3604 75.6484 -67.0723 107.137 -107.008l305.408 21.6318l57.5996 -139.136l-231.552 -200.832c3.07129 -25.0889 7.67969 -49.6641 7.67969 -75.6484c0 -25.7275 -4.6084 -50.3037 -7.67969 -75.2637zM1280 1024
+c0 141.312 -114.688 256 -256 256s-256 -114.688 -256 -256s114.688 -256 256 -256s256 114.688 256 256z" />
+    <glyph glyph-name="uniF516" unicode="&#xf516;" 
+d="M1024 1452.42v-467.328h-155.776v467.328h155.776zM1408 1452.42v-467.328h-155.776v467.328h155.776zM323.2 1920h1596.8v-1090.82l-467.456 -445.184h-350.464l-233.6 -256h-228.48v256h-512v1224.32zM1764.22 907.136v857.088h-1285.5v-1129.73h350.977v-211.328
+l233.472 211.328h428.16z" />
+    <glyph glyph-name="uniF435" unicode="&#xf435;" 
+d="M384 512l640 640l640 -640h-1280zM384 1408h1280v-128h-1280v128z" />
+    <glyph glyph-name="uniF300" unicode="&#xf300;" 
+d="M1536 1536c141.312 0 256 -114.688 256 -256v-384c0 -141.312 -114.688 -256 -256 -256h-448l-448 -448v448h-128c-141.312 0 -256 114.688 -256 256v384c0 141.312 114.688 256 256 256h1024z" />
+    <glyph glyph-name="uniF514" unicode="&#xf514;" 
+d="M1664 768v128l256 -256l-256 -256v128h-256c-282.752 0 -512 229.248 -512 512c0 141.312 -114.688 256 -256 256h-384v256h384c282.752 0 512 -229.248 512 -512c0 -141.312 114.688 -256 256 -256h256zM1408 1280c-61.8242 0 -117.888 -22.9121 -162.176 -59.3916
+c-27.3926 83.9678 -70.7842 160 -128 224.768c82.5596 56.96 182.271 90.624 290.176 90.624h256v128l256 -256l-256 -256v128h-256zM640 768c61.8242 0 117.888 22.9121 162.176 59.3916c27.3926 -83.9678 70.7842 -160 128 -224.768
+c-82.5596 -56.832 -182.271 -90.624 -290.176 -90.624h-384v256h384z" />
+    <glyph glyph-name="uniF102" unicode="&#xf102;" 
+d="M1408 1408l512 -128v-896h-1792v896l512 128l128 256h512zM1024 512.256c247.552 0 448 200.448 448 448c0 247.424 -200.448 448 -448 448c-247.424 0 -448 -200.576 -448 -448c0 -247.552 200.576 -448 448 -448zM512 1600v-96.1279l-256 -64v160.128h256z
+M1024 1280.13c176.768 0 320 -143.231 320 -320c0 -176.768 -143.232 -320 -320 -320s-320 143.232 -320 320c0 176.769 143.232 320 320 320z" />
+    <glyph glyph-name="uniF466" unicode="&#xf466;" 
+d="M640 1344l-320 -320l320 -320v-320l-640 640l640 640v-320zM1408 1280c282.752 0 512 -229.248 512 -512v-299.904l-150.016 149.889c-99.9688 99.9678 -231.04 150.016 -361.984 150.016h-256v-384l-640 640l640 640v-384h256z" />
+    <glyph glyph-name="uniF463" unicode="&#xf463;" 
+d="M1536 1408l-768 -384l-768 384v128h1536v-128zM0 1216l768 -384l256 128v-448h-1024v704zM1920 1152c70.7842 0 128 -57.3438 128 -128v-640c0 -70.7842 -57.2158 -128 -128 -128h-640c-70.7842 0 -128 57.2158 -128 128v640c0 70.6562 57.2158 128 128 128h640z
+M1920 640v128h-256v256h-128v-256h-256v-128h256v-256h128v256h256z" />
+    <glyph glyph-name="uniF422" unicode="&#xf422;" 
+d="M384 1536h1152v-1024h-1152v1024zM1408 640v640h-896v-640h896z" />
+    <glyph glyph-name="uniF201" unicode="&#xf201;" 
+d="M1024 128c128 0 256 32 368 80c-16 144 -64 368 -208 688c-288 -96 -560 -304 -704 -576c144 -128 336 -192 544 -192zM1536 288c208 144 352 384 384 640c-192 32 -368 32 -576 0c16 -32 128 -304 192 -640zM128 1088v-64c0 -224 80 -432 224 -592
+c176 288 496 496 784 592c-16 48 -48 112 -80 176c-368 -112 -592 -144 -928 -112zM1760 1536c-160 -128 -368 -192 -560 -288c48 -64 64 -112 96 -176c208 48 480 32 624 0c-16 176 -64 336 -160 464zM672 1856c-256 -112 -448 -336 -512 -624c288 -32 688 48 832 96
+c-96 192 -192 352 -320 528zM1024 1920c-64 0 -128 -16 -192 -16c128 -208 192 -320 304 -512c128 48 384 128 528 256c-160 160 -384 272 -640 272zM1024 2048c560 0 1024 -464 1024 -1024s-464 -1024 -1024 -1024s-1024 464 -1024 1024s464 1024 1024 1024z" />
+    <glyph glyph-name="uniF426" unicode="&#xf426;" 
+d="M1664 1024c141.312 0 256 -114.688 256 -256s-114.688 -256 -256 -256h-1280c-141.312 0 -256 114.688 -256 256s114.688 256 256 256h6.52832c-4.35254 20.8643 -6.52832 41.9844 -6.52832 64c0 176.768 143.232 320 320 320
+c89.3438 0 169.984 -36.8643 227.968 -95.8721c60.7998 131.84 193.408 223.872 348.032 223.872c211.968 0 384 -171.904 384 -384c0 -45.1836 -9.21582 -87.8076 -23.5518 -128h23.5518z" />
+    <glyph glyph-name="uniF446" unicode="&#xf446;" 
+d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768s-768 343.936 -768 768s343.936 768 768 768zM1536 1024c0 282.752 -229.248 512 -512 512c-94.8477 0 -182.528 -27.5195 -258.688 -72.4482l698.368 -698.24
+c44.8008 76.1602 72.3203 163.969 72.3203 258.688zM512 1024c0 -282.752 229.248 -512 512 -512c94.7197 0 182.4 27.5195 258.56 72.3203l-698.239 698.239c-44.8008 -76.1592 -72.3203 -163.84 -72.3203 -258.56z" />
+    <glyph glyph-name="uniF504" unicode="&#xf504;" 
+d="M1664 1536c0 -94.4639 -51.7119 -176.128 -128 -220.544v-163.456c0 -282.752 -229.248 -512 -512 -512c-141.312 0 -256 -114.688 -256 -256v-128h-256v1059.46c-76.1602 44.416 -128 126.08 -128 220.544c0 141.312 114.688 256 256 256s256 -114.688 256 -256
+c0 -94.4639 -51.8398 -176.128 -128 -220.544v-490.496c75.5195 44.0322 162.304 71.04 256 71.04c141.312 0 256 114.688 256 256v163.456c-76.2881 44.416 -128 126.08 -128 220.544c0 141.312 114.688 256 256 256s256 -114.688 256 -256zM640 1664
+c-70.6562 0 -128 -57.3438 -128 -128s57.3438 -128 128 -128s128 57.3438 128 128s-57.3438 128 -128 128zM1408 1408c70.7842 0 128 57.3438 128 128s-57.2158 128 -128 128s-128 -57.3438 -128 -128s57.2158 -128 128 -128z" />
+    <glyph glyph-name="uniF465" unicode="&#xf465;" 
+d="M1536 1408l-768 -384l-768 384v128h1536v-128zM0 1216l768 -384l256 128v-448h-1024v704zM1920 1152c70.7842 0 128 -57.3438 128 -128v-640c0 -70.7842 -57.2158 -128 -128 -128h-640c-70.7842 0 -128 57.2158 -128 128v640c0 70.6562 57.2158 128 128 128h640z
+M1531.52 384l452.48 452.48l-90.4961 90.4951l-361.984 -361.983l-180.991 180.992l-90.4961 -90.4961z" />
+    <glyph glyph-name="uniF424" unicode="&#xf424;" 
+d="M1408 1792l384 -384v-768l-384 -384h-768l-384 384v768l384 384h768zM1024 512c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM1113.22 896l51.584 640h-281.6l51.2002 -640h178.815z" />
+    <glyph glyph-name="uniF418" unicode="&#xf418;" 
+d="M1408 1504l128 -96l-512 -768h-128l-288 416l128 128l224 -192z" />
+    <glyph glyph-name="uniF429" unicode="&#xf429;" 
+d="M1024 1453.31l493.312 -493.312l-493.312 -493.312l-86.6562 86.6553l342.656 342.656h-896v128h896l-342.656 342.656z" />
+    <glyph glyph-name="uniF308" unicode="&#xf308;" 
+d="M477.696 568.192l543.104 543.104l90.3682 -90.624l-542.976 -542.976c-100.225 -100.353 -152.32 -115.84 -226.305 -135.809c20.0967 74.1123 35.584 126.08 135.809 226.305zM1189.5 1732.61l180.992 180.991l542.976 -543.104l-180.991 -180.992
+c-50.0488 50.0479 -130.944 50.0479 -180.992 0l-180.992 -180.992c-50.0479 -50.0479 -50.0479 -130.943 0 -180.992l-180.992 -180.991l-543.104 542.976l180.991 180.992c50.0488 -50.0479 131.072 -50.0479 181.12 0l180.992 181.12
+c50.0479 50.0479 50.0479 130.943 0 180.992z" />
+    <glyph glyph-name="uniF226" unicode="&#xf226;" 
+d="M1477.76 1792c120.32 0 152.576 -68.6084 126.464 -195.584l-51.8398 -258.688c-40.96 -206.848 -88.0635 -445.695 -94.0801 -470.144c-11.0078 -44.1602 -27.9033 -119.168 -132.992 -119.168h-250.367c-9.98438 0 -9.98438 0 -20.0967 -10.1123
+c-6.65527 -6.65527 -393.344 -455.424 -393.344 -455.424c-30.208 -34.6875 -80.3838 -28.5439 -98.6875 -21.1201c-18.3047 7.2959 -50.6885 29.6963 -50.6885 89.9844v1301.63s33.2803 138.624 146.304 138.624h819.328zM1394.94 1391.1l34.3037 179.2
+c6.27148 29.6963 -16.3838 52.4805 -40.5762 52.4805h-657.536c-29.8242 0 -49.792 -26.8799 -49.792 -49.792v-1015.68c0 -3.19922 2.43262 -3.83984 4.86426 -1.15137c0 0 242.304 290.815 269.184 324.352c26.8809 33.4082 39.168 38.6562 79.3604 38.6562h221.184
+c30.208 0 47.2324 25.3438 50.3047 40.1924c3.2002 14.8477 28.9277 149.12 34.4316 176.256s-19.3281 54.9121 -44.7998 54.9121h-270.976c-35.9688 0 -61.8242 25.4717 -61.8242 61.3115v39.04c0 35.9678 25.7275 60.416 61.5674 60.416h319.232
+s46.9756 20.4805 51.0723 39.8076z" />
+    <glyph glyph-name="uniF205" unicode="&#xf205;" 
+d="M1024 1920c493.952 0 896 -401.92 896 -896c0 -493.952 -402.048 -896 -896 -896c-494.08 0 -896 402.048 -896 896c0 494.08 401.92 896 896 896zM218.496 1024c0 -318.848 185.216 -594.432 454.016 -724.992l-384.256 1052.93
+c-44.6719 -100.224 -69.7598 -211.071 -69.7598 -327.936zM1024 218.496c93.8242 0 183.808 16.1279 267.648 45.5684c-2.17676 3.45508 -4.09668 7.16797 -5.76074 11.2637l-247.552 678.271l-241.92 -702.336c72.1924 -21.248 148.48 -32.7676 227.584 -32.7676z
+M1134.98 1401.73l291.072 -866.176l80.3838 268.544c34.9443 111.488 61.3125 191.488 61.3125 260.48c0 99.584 -35.8398 168.576 -66.4326 222.08c-40.7031 66.4316 -78.9756 122.624 -78.9756 189.056c0 74.1123 56.1924 142.977 135.168 142.977
+c3.58398 0 7.04004 -0.384766 10.4961 -0.640625c-143.36 131.328 -334.208 211.456 -544 211.456c-281.472 0 -529.024 -144.256 -673.024 -363.008c18.9443 -0.639648 36.7363 -0.896484 51.8408 -0.896484c84.2236 0 214.655 10.2402 214.655 10.2402
+c43.3926 2.56055 48.5127 -61.3115 5.24805 -66.4316c0 0 -43.7754 -5.12012 -92.1602 -7.68066l293.12 -872.575l176.256 528.64l-125.439 343.936c-43.3926 2.56055 -84.4805 7.68066 -84.4805 7.68066c-43.2637 2.55957 -38.2715 68.9922 5.12012 66.4316
+c0 0 132.992 -10.2402 212.225 -10.2402c84.2236 0 214.783 10.2402 214.783 10.2402c43.3926 2.56055 48.5127 -61.3115 5.12012 -66.4316c0 0 -43.6475 -5.12012 -92.2881 -7.68066zM1730.82 1410.56c3.58398 -25.7275 5.50391 -53.248 5.63184 -82.8154
+c0 -81.792 -15.4883 -173.696 -61.3125 -288.512l-246.144 -711.425c239.488 139.521 400.512 399.104 400.512 696.192c0 140.16 -35.8398 271.872 -98.6875 386.56z" />
+    <glyph glyph-name="uniF472" unicode="&#xf472;" 
+d="M1368.06 1408h-128l-240.129 -768h128l-39.9355 -128h-448l39.9355 128h128l240.129 768h-128l39.9355 128h448z" />
+    <glyph glyph-name="uniF216" unicode="&#xf216;" 
+d="M1791.62 1265.92c0.383789 -2.94434 0.639648 -5.75977 0.639648 -8.7041v-466.943c0 -2.94434 -0.255859 -5.76074 -0.511719 -8.96094c-0.12793 -0.767578 -0.383789 -1.79199 -0.511719 -2.81543c-0.384766 -1.79199 -0.640625 -3.58398 -1.15234 -5.50391
+c-0.255859 -1.02441 -0.768555 -2.04785 -1.02441 -3.07227c-0.639648 -1.66406 -1.15137 -3.2002 -1.79199 -4.86426c-0.511719 -1.02344 -1.02344 -2.04785 -1.53613 -3.07129c-0.639648 -1.53613 -1.40723 -2.94434 -2.30371 -4.48047
+c-0.511719 -0.895508 -1.28027 -1.91992 -1.91992 -2.94434c-0.767578 -1.2793 -1.66406 -2.55957 -2.6875 -3.96777c-0.768555 -0.895508 -1.53613 -1.79199 -2.30469 -2.81543c-1.02344 -1.02441 -2.04785 -2.30469 -3.32812 -3.45605
+c-0.767578 -0.896484 -1.66406 -1.79199 -2.6875 -2.68848c-1.02441 -0.895508 -2.30371 -2.04785 -3.71191 -3.07227c-0.768555 -0.767578 -1.79199 -1.53516 -2.81641 -2.30371l-1.15137 -0.767578l-702.208 -467.072
+c-11.1367 -7.42383 -23.8086 -11.0078 -36.6084 -11.0078s-25.4717 3.58398 -36.7363 11.2637l-702.208 467.072c-0.255859 0.255859 -0.639648 0.511719 -1.02344 0.767578l-2.94434 2.30469c-1.28027 0.895508 -2.55957 2.04785 -3.71191 3.07129
+c-0.895508 0.896484 -1.79199 1.79199 -2.6875 2.68848c-1.02441 1.02344 -2.17676 2.30371 -3.2002 3.45605c-0.768555 0.895508 -1.53613 1.79199 -2.30469 2.81543c-0.895508 1.28027 -1.79199 2.56055 -2.6875 3.96875
+c-0.768555 0.895508 -1.4082 1.91992 -1.91992 2.94336c-0.896484 1.53613 -1.66406 2.94434 -2.30371 4.48047c-0.512695 0.895508 -1.02441 1.91992 -1.53613 3.07129c-0.640625 1.66406 -1.15234 3.2002 -1.66406 4.86426
+c-0.383789 0.896484 -0.768555 1.91992 -1.02441 3.07227c-0.511719 1.91992 -0.767578 3.71191 -1.15137 5.50391c-0.128906 1.02441 -0.384766 2.04785 -0.512695 2.94434c-0.383789 2.81543 -0.639648 5.75977 -0.639648 8.57617v466.943
+c0 2.94434 0.255859 5.75977 0.639648 8.7041c0.12793 0.896484 0.383789 1.79199 0.512695 2.81641c0.383789 1.91992 0.639648 3.71191 1.15137 5.50391c0.255859 1.15137 0.640625 2.17578 1.02441 3.2002c0.511719 1.53516 1.02344 3.19922 1.66406 4.86328
+c0.511719 1.02441 1.02344 2.04785 1.53613 3.2002c0.639648 1.53613 1.40723 2.81641 2.30371 4.48047c0.639648 0.895508 1.28027 1.91992 1.91992 2.94336c0.767578 1.28027 1.79199 2.68848 2.6875 3.96875c0.640625 1.02344 1.4082 1.79199 2.30469 2.81543
+c1.02344 1.28027 2.04785 2.43164 3.2002 3.58398c0.895508 0.768555 1.79199 1.66406 2.6875 2.68848c1.15234 1.02344 2.43164 2.04785 3.71191 3.07129l2.94434 2.17676c0.383789 0.255859 0.767578 0.639648 1.15137 0.895508l702.208 466.944
+c22.1445 14.7197 51.0723 14.7197 73.2168 0l702.08 -467.2c0.383789 -0.255859 0.767578 -0.639648 1.15137 -0.896484c0.896484 -0.767578 1.91992 -1.53516 2.81641 -2.30371c1.2793 -0.895508 2.55957 -1.91992 3.71191 -3.07227
+c1.02344 -0.895508 1.91992 -1.79199 2.6875 -2.6875c1.15234 -1.02441 2.17676 -2.17578 3.32812 -3.45605c0.768555 -0.896484 1.53613 -1.79199 2.30469 -2.81641c0.895508 -1.2793 1.79199 -2.55957 2.6875 -3.96777
+c0.639648 -0.895508 1.4082 -1.91992 1.91992 -2.94434c0.896484 -1.53516 1.66406 -2.81543 2.30371 -4.35156c0.512695 -1.02441 1.02441 -2.04785 1.53613 -3.2002c0.640625 -1.66406 1.15234 -3.2002 1.79199 -4.73535
+c0.255859 -1.02441 0.768555 -2.04883 1.02441 -3.2002c0.511719 -1.79199 0.767578 -3.58398 1.15137 -5.50391c0.128906 -0.896484 0.384766 -1.79199 0.512695 -2.81641zM1090.05 1601.28v-307.328l286.208 -190.977l231.168 154.24zM957.952 1601.28l-517.248 -344.064
+l231.04 -154.24l286.208 191.104v307.2zM387.84 1133.95v-220.416l165.12 110.208zM957.952 446.208v307.328l-286.208 190.976l-231.04 -154.111zM1024 867.84l233.472 155.904l-233.472 155.904l-233.472 -155.904zM1090.05 446.208l517.376 344.064l-231.168 154.111
+l-286.208 -190.976v-307.2zM1660.29 913.536v220.416l-165.248 -110.208z" />
+    <glyph glyph-name="uniF475" unicode="&#xf475;" 
+d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768s-768 343.936 -768 768s343.936 768 768 768zM476.16 1340.54l-2.81641 3.96777c-4.60742 -7.93555 -8.83203 -16.1279 -13.1836 -24.3193l4.47949 1.02344l17.5361 6.27246l30.208 2.6875zM1024 384
+c265.088 0 493.056 162.176 590.208 392.576l-6.52832 10.4961l14.9766 50.8154l-34.6885 25.2158l-25.3438 7.55273l-23.5518 19.8398l-55.8086 -21.1201l-52.7354 -3.07227l-39.9365 29.0566l-39.04 53.5039l-0.767578 32.5117l0.895508 54.2725l5.63184 7.55176
+l4.86426 18.1758l22.7842 35.0723l13.3125 13.0557l18.6875 20.7363l13.0557 25.5996l36.8643 34.9443l37.7598 -0.383789l27.6484 9.59961l66.4316 7.16797l25.9844 -36.8643l24.1924 -10.4961c-8.44824 39.4248 -20.2246 77.6963 -35.585 114.049l-5.50391 5.11914
+l-13.4395 -6.65527l-28.9277 -2.68848l-23.8086 -21.248l-25.9834 -35.0723l-50.6885 -11.6475l-23.5518 9.21582l2.6875 40.5762l13.3125 25.2158l46.4639 -2.6875l8.57617 21.8877l-24.0645 26.624l20.6084 8.32031l40.4482 22.0156l14.4639 11.6484
+c-49.1523 77.6953 -113.664 144.256 -190.721 194.688l-4.35156 -1.79199l20.3516 -17.792l-32.8955 5.24805l-4.6084 -9.34375l21.248 -2.56055l-7.93555 -8.95996l-59.9043 -10.3682l-77.3115 -34.3037l-59.9043 -28.9277l-6.27246 59.6475l16.8965 32.6406
+l-12.416 21.7598l-45.9521 19.4561l-22.1436 17.1523l32.1279 7.67969l69.1201 16.8955l29.8232 1.66406c-64.7676 22.1445 -132.991 36.7363 -205.056 36.7363c-146.56 0 -280.064 -51.4561 -388.096 -134.656l38.2715 1.15234l47.7441 -12.2881l32 -8.19238
+l34.8164 7.80859l47.6152 -6.0166l29.9521 7.2959l5.63184 18.0488l28.1602 -2.94434l11.0078 -22.7842l47.6162 4.35254l-74.752 -24.7041l-36.0957 -20.8643l-55.168 -42.2402l13.6963 -14.9756l38.3994 -18.0479l27.3926 -28.0322l33.6641 34.4316l19.4551 37.8887
+l33.0244 22.6553l33.0244 -16.7676l9.08789 -18.4316l28.9277 10.2393l10.2402 -55.168l20.4795 -20.0957l-74.752 -19.0723l-54.7842 -21.5039l42.752 11.7764l-5.24707 -17.1523l13.5674 -15.3604l11.2646 -7.16797l-45.9521 -18.6875l16.1279 18.8154l-25.9844 -5.63184
+l-31.2314 -14.8477l-14.208 -16.5117l-34.9443 -19.3281l-25.6006 -20.2246l-9.72754 -23.4238l-32.7676 -26.752l-25.8564 -59.3916l-8.06348 -25.7285l-23.6807 47.4883l-46.208 -0.12793l-38.3994 0.255859l-49.2803 -39.6797l-6.52832 -43.5205l29.6963 -32.3838
+l57.2158 30.7197l-14.8477 -43.5195l-40.4482 -26.1123l-39.2959 9.47266l-43.5205 18.1758l-49.9199 79.1035l-22.1436 47.2324l-5.24805 16.2559l7.42383 -66.0479l-0.639648 -17.1523l-8.19238 10.2402l-4.99219 16.6396l-9.9834 12.416l-5.12012 22.9121
+l-0.255859 35.9678l-26.752 46.3359c-17.4082 -58.1113 -29.5684 -118.399 -29.5684 -182.144c0 -295.936 202.88 -543.232 476.16 -616.192l-4.0957 12.6729l-9.60059 137.6l-11.1357 62.8477l-67.3281 65.792l-31.7441 56.3203l-10.624 27.9043l7.67969 16.5117
+l14.0801 52.9922l7.55273 61.6953l-8.32031 4.73633l-14.9756 -10.8799l-19.9688 9.34375l13.4404 6.27246l59.9043 13.8242l39.4238 17.6631l-2.43262 -26.752l14.5928 24.1924l19.7119 -6.91211l67.7119 -21.6318l48.5117 -33.6641l34.9443 -19.3281l8.31934 -5.50391
+l-8.19141 -48.7676l33.4082 9.47168l-8.32031 -16.6396l47.3604 -10.1123l48 -3.96777l31.3594 -19.7119l1.28027 -57.3447l-22.7842 -65.4072l-27.6475 -68.0967l-50.1768 -30.8477l-39.9355 -90.8799l-36.0957 5.12012l17.1514 -23.4238l-1.91992 -16.5127
+l-33.2803 -26.4961c19.4561 -1.79199 38.1445 -5.8877 57.9844 -5.8877z" />
+    <glyph glyph-name="uniF432" unicode="&#xf432;" 
+d="M1408 640l-448 448l-448 -448l-128 128l576 576l576 -576z" />
+    <glyph glyph-name="uniF210" unicode="&#xf210;" 
+d="M1024 2048c565.632 0 1024 -458.496 1024 -1024c0 -565.632 -458.368 -1024 -1024 -1024c-100.864 0 -198.016 14.7197 -290.176 42.1123c38.7842 61.4395 81.2793 140.288 103.04 219.264c12.6719 45.5684 72.0635 281.6 72.0635 281.6
+c35.7119 -67.9678 139.648 -127.743 250.24 -127.743c329.088 0 552.448 300.159 552.448 701.823c0 303.744 -257.28 586.624 -648.192 586.624c-486.527 0 -731.904 -348.8 -731.904 -639.744c0 -176.128 66.5605 -332.928 209.664 -391.168
+c23.4248 -9.59961 44.416 -0.511719 51.2002 25.4727c4.73633 18.0479 16 63.4873 20.9922 82.1758c6.78418 25.7275 4.0957 34.6875 -14.8477 57.2158c-41.0879 48.6406 -67.4561 111.488 -67.4561 200.704c0 258.816 193.536 490.496 504.063 490.496
+c274.944 0 426.112 -168.064 426.112 -392.448c0 -295.296 -130.432 -544.384 -324.608 -544.384c-107.136 0 -187.264 88.5762 -161.664 197.12c30.7207 129.664 90.4961 269.824 90.4961 363.392c0 83.8398 -44.9277 153.729 -138.111 153.729
+c-109.44 0 -197.504 -113.28 -197.504 -265.088c0 -96.6406 32.7676 -162.049 32.7676 -162.049s-112.128 -474.88 -131.712 -557.951c-18.4316 -77.8242 -20.7363 -163.456 -17.9199 -235.137c-360.832 158.336 -612.992 518.784 -612.992 937.984
+c0 565.504 458.496 1024 1024 1024z" />
+    <glyph glyph-name="uniF437" unicode="&#xf437;" 
+d="M1280 1792c141.312 0 256 -114.688 256 -256v-1024c0 -141.312 -114.688 -256 -256 -256h-512c-141.312 0 -256 114.688 -256 256v1024c0 141.312 114.688 256 256 256h512zM1024 384c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128
+c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM1408 768v768h-768v-768h768z" />
+    <glyph glyph-name="uniF468" unicode="&#xf468;" 
+d="M256 256v1536h256v-1536h-256zM1536 1664h256v-768h-256c-256 0 -256 128 -512 128s-256 -128 -384 -128v768c128 0 128 128 384 128s256 -128 512 -128z" />
+    <glyph glyph-name="uniF107" unicode="&#xf107;" 
+d="M1088 1792c176.768 0 320 -143.232 320 -320v-384c0 -131.2 -78.9756 -243.584 -192 -292.992v150.912c39.04 35.2002 64 85.6318 64 142.08v384c0 105.856 -86.1436 192 -192 192s-192 -86.1436 -192 -192v-384c0 -56.4482 24.96 -106.88 64 -142.08v-150.912
+c-112.896 49.4082 -192 161.792 -192 292.992v384c0 176.768 143.232 320 320 320zM960 1380.99c112.896 -49.4082 192 -161.792 192 -292.992v-384c0 -176.768 -143.232 -320 -320 -320s-320 143.232 -320 320v384c0 131.2 79.1035 243.584 192 292.992v-150.912
+c-39.04 -35.2002 -64 -85.6318 -64 -142.08v-384c0 -105.856 86.1436 -192 192 -192s192 86.1436 192 192v384c0 56.4482 -24.96 106.88 -64 142.08v150.912z" />
+    <glyph glyph-name="uniF442" unicode="&#xf442;" 
+d="M1280 640v256l128 128v-512h-896v896h512l-128 -128h-256v-640h640zM1024 1664h640v-640h-128v421.504l-549.504 -549.504l-90.4961 90.4961l549.504 549.504h-421.504v128z" />
+    <glyph glyph-name="uniF221" unicode="&#xf221;" 
+d="M1664 1024c0 -55.9355 -35.9678 -102.912 -85.8877 -120.32c13.8232 -20.6074 21.8877 -45.0557 21.8877 -71.6797c0 -55.8076 -35.9678 -102.784 -85.8877 -120.32c13.8232 -20.6074 21.8877 -45.0557 21.8877 -71.6797c0 -70.6562 -57.3438 -128 -128 -128h-64
+c70.6562 0 128 -57.3438 128 -128s-57.3438 -128 -128 -128h-448c-192 0 -256 128 -384 128h-128v640h192c128 0 320 256 320 640c0 0 0 128 64 128s192 -144 192 -320c0 -192 -32 -320 -32 -320h416c70.6562 0 128 -57.3438 128 -128z" />
+    <glyph glyph-name="uniF50A" unicode="&#xf50a;" 
+d="M1856 1024c35.3281 0 64 -28.6719 64 -64s-28.6719 -64 -64 -64h-204.928c-9.85645 -48.7676 -26.624 -94.5918 -46.8486 -138.624c116.608 -134.528 187.776 -309.376 187.776 -501.376v-64c0 -35.2002 -28.6719 -64 -64 -64s-64 28.7998 -64 64v64
+c0 144.896 -48.7676 277.888 -130.048 385.152c-116.736 -155.265 -300.672 -257.152 -509.952 -257.152c-208.768 0 -392.448 101.504 -509.312 256.128c-81.2803 -106.88 -130.688 -239.231 -130.688 -384.128v-64c0 -35.2002 -28.6719 -64 -64 -64s-64 28.7998 -64 64v64
+c0 192 71.2959 366.72 187.904 501.376c-20.3525 44.0322 -36.9922 89.8564 -46.9766 138.624h-204.928c-35.3281 0 -64 28.6719 -64 64s28.6719 64 64 64h192c0 61.6963 12.1602 119.936 29.0557 176c-98.1758 129.024 -157.056 289.408 -157.056 464v64
+c0 35.3281 28.6719 64 64 64s64 -28.6719 64 -64v-64c0 -353.408 286.592 -640 640 -640c353.536 0 640 286.592 640 640v64c0 35.3281 28.6719 64 64 64s64 -28.6719 64 -64v-64c0 -173.952 -58.4961 -333.824 -156.032 -462.592
+c17.2803 -56.3203 28.0322 -115.328 28.0322 -177.408h192zM1024 1152c-208.896 0 -388.352 126.08 -467.84 305.92c116.864 126.08 282.496 206.08 467.84 206.08c185.472 0 350.976 -80 467.84 -206.08c-79.4883 -179.84 -258.815 -305.92 -467.84 -305.92z" />
+    <glyph glyph-name="uniF455" unicode="&#xf455;" 
+d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768c-424.192 0 -768 343.936 -768 768s343.808 768 768 768zM1024 1536c-70.7842 0 -128 -57.3438 -128 -128s57.2158 -128 128 -128c70.6562 0 128 57.3438 128 128s-57.3438 128 -128 128zM1280 512
+v128h-160v512h-320.128v-128h128.128v-384h-160v-128h512z" />
+    <glyph glyph-name="uniF223" unicode="&#xf223;" 
+d="M1105.28 1232.51v92.9287c0 44.1592 -36.4805 79.8711 -81.2803 79.8711s-81.2803 -35.7119 -81.2803 -79.8711l-0.383789 -481.024c-2.55957 -184.192 -155.008 -332.416 -342.912 -332.416c-189.696 0 -343.424 150.912 -343.424 337.28v209.151h262.784v-206.592
+c0 -43.9043 36.3516 -79.7441 81.2803 -79.7441c44.9277 0 81.2793 35.7119 81.2793 79.7441v487.168c6.65625 180.48 157.185 324.992 342.656 324.992c186.112 0 337.152 -145.536 342.656 -327.04v-106.624l-156.416 -45.8242zM1529.22 1058.43h262.784v-209.151
+c0 -186.368 -153.728 -337.28 -343.424 -337.28c-188.544 0 -341.632 149.376 -343.296 334.08v210.304l104.96 -48l156.288 45.8242v-211.84c0 -44.2881 36.3516 -80 81.4072 -80c44.9287 0 81.2803 35.7119 81.2803 80v216.063z" />
+    <glyph glyph-name="uniF212" unicode="&#xf212;" 
+d="M1658.75 1791.87c184.192 -5.37598 270.976 -123.776 260.352 -355.072c-7.93555 -172.928 -129.792 -409.472 -365.439 -710.016c-243.584 -313.729 -449.792 -470.784 -618.368 -470.784c-104.448 0 -192.896 95.6162 -264.96 286.72
+c-48.2559 175.232 -96.5117 350.336 -144.64 525.568c-53.6318 190.976 -111.232 286.592 -172.672 286.592c-13.4404 0 -60.416 -27.7764 -140.673 -83.584l-84.3516 107.648c88.4482 77.0557 175.616 154.111 261.504 231.168
+c117.888 100.991 206.464 154.111 265.472 159.487c139.521 13.3125 225.28 -81.2793 257.536 -283.392c34.8164 -218.24 58.8799 -353.92 72.4482 -407.04c40.1924 -180.992 84.4805 -271.36 132.736 -271.36c37.5039 0 93.8232 58.752 169.088 176.128
+c75.0078 117.376 115.2 206.849 120.576 268.16c10.624 101.376 -29.4404 152.192 -120.576 152.192c-43.0078 0 -87.2959 -9.98438 -132.736 -29.1846c88.0645 285.952 256.512 424.704 504.704 416.769z" />
+    <glyph glyph-name="uniF206" unicode="&#xf206;" 
+d="M729.6 1152h550.4s12.7998 -38.4004 12.7998 -89.5996c0 -332.801 -230.399 -563.2 -563.2 -563.2c-320 0 -588.8 268.8 -588.8 588.8s281.601 588.8 588.8 588.8c153.601 0 294.4 -51.2002 384 -153.6l-153.6 -153.601c-38.4004 25.6006 -102.4 76.8008 -230.4 76.8008
+c-204.8 0 -371.199 -166.4 -371.199 -371.2s166.399 -371.2 371.199 -371.2c230.4 0 320 166.4 332.801 243.2h-332.801v204.8zM1664 1152h128v-128h-128v-128h-128v128h-128v128h128v128h128v-128z" />
+    <glyph glyph-name="uniF407" unicode="&#xf407;" 
+d="M1280 1536l256 -128v-128h-128h-128h-128h-128h-128h-128h-128h-128h-128v128l256 128c0 70.7842 57.3438 128 128 128h384c70.7842 0 128 -57.2158 128 -128zM1088 1408c35.3281 0 64 28.6719 64 64s-28.6719 64 -64 64h-256c-35.3281 0 -64 -28.6719 -64 -64
+s28.6719 -64 64 -64h256zM1280 1216h128v-704c0 -70.7842 -57.2158 -128 -128 -128h-640c-70.6562 0 -128 57.2158 -128 128v704h128v-704h128v704h128v-704h128v704h128v-704h128v704z" />
+    <glyph glyph-name="uniF414" unicode="&#xf414;" 
+d="M1996.03 601.984c116.992 -190.208 29.6953 -345.984 -193.536 -345.984h-1556.99c-223.231 0 -310.528 155.776 -193.536 345.984l759.552 1236.99c116.864 190.336 308.097 190.336 424.961 0zM1024 512c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128
+c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128zM1113.22 896l51.584 640h-281.6l51.2002 -640h178.815z" />
+    <glyph glyph-name="uniF50E" unicode="&#xf50e;" 
+d="M384 896v256h1280v-256h-1280z" />
+    <glyph glyph-name="uniF461" unicode="&#xf461;" 
+d="M1024 384l-647.552 612.992c-149.376 141.312 -161.408 383.231 -27.1367 540.288c134.4 157.184 364.416 169.855 513.792 28.5439l160.896 -152.32l160.768 152.32c149.248 141.184 379.393 128.64 513.792 -28.5439
+c134.656 -157.057 122.368 -398.977 -27.0078 -540.416z" />
+    <glyph glyph-name="uniF470" unicode="&#xf470;" 
+d="M1536 1152c70.7842 0 128 -57.3438 128 -128v-640c0 -70.7842 -57.2158 -128 -128 -128h-1024c-70.6562 0 -128 57.2158 -128 128v640c0 70.6562 57.3438 128 128 128v128c0 282.752 229.248 512 512 512s512 -229.248 512 -512v-128zM768 1152h512v128
+c0 141.312 -114.688 256 -256 256s-256 -114.688 -256 -256v-128z" />
+    <glyph glyph-name="uniF50C" unicode="&#xf50c;" 
+d="M1479.55 819.2c98.5605 -32 203.137 -51.2002 312.448 -51.2002v-512c-848.256 0 -1536 687.744 -1536 1536h512c0 -162.048 38.5283 -314.752 105.856 -450.816l-189.185 -189.184c136.192 -235.008 344.96 -422.4 595.328 -532.224z" />
+    <glyph glyph-name="uniF220" unicode="&#xf220;" 
+d="M1856.77 834.048c32.3848 -65.6641 50.6885 -138.88 50.3047 -217.344c0 -269.696 -218.88 -488.704 -488.576 -488.704c-83.584 0 -161.92 21.376 -230.656 58.1123c-50.4316 -8.83203 -102.016 -13.8242 -154.496 -13.8242
+c-465.279 0 -842.624 377.216 -842.624 842.496c0 58.2402 6.14453 114.688 17.2803 169.6c-42.4961 72.1924 -67.0723 156.8 -67.0723 246.912c0 269.824 218.88 488.704 488.704 488.704c95.7441 0 184.704 -27.3916 260.225 -75.0078
+c46.4639 7.80762 94.5918 12.416 143.871 12.416c465.408 0 842.624 -377.344 842.624 -842.624c0 -62.0801 -6.65527 -122.752 -19.584 -180.736zM1466.11 612.096c38.9121 55.5527 58.624 118.656 58.752 188.16c0 58.2402 -11.2646 107.904 -34.1758 148.353
+c-22.9121 40.3193 -54.7842 73.8555 -95.2324 100.224c-39.168 25.7275 -87.8076 48.1279 -143.744 66.0479c-55.4238 17.9199 -118.271 34.1758 -186.496 48.6396c-53.7598 12.416 -93.0557 21.8887 -116.479 28.6729c-23.04 6.14355 -45.4404 15.2314 -67.8398 26.3672
+c-21.8887 10.624 -38.5283 23.5527 -50.4326 38.0166c-11.1357 13.9521 -16.7676 30.3359 -16.7676 49.2803c0 31.2314 16.8955 57.4717 52.2236 80.5117c36.3525 23.5518 85.6318 35.9678 146.048 35.9678c64.8965 0 112.384 -11.2637 140.544 -32.6396
+c29.1846 -21.6318 54.2725 -53.6318 75.5205 -93.3125c18.5596 -31.3594 34.9434 -53.248 50.6875 -67.2002c16.3838 -14.5918 40.5762 -22.3994 71.9365 -22.3994c34.9434 0 63.8721 12.416 86.9121 36.4795c23.04 23.4248 34.6875 50.8164 34.6875 81.1523
+c0 31.3604 -9.08789 63.3604 -25.2158 95.7441c-17.2803 32.3838 -44.7998 63.1035 -81.9199 92.2881c-36.8643 28.5439 -83.8398 52.0957 -139.008 69.5039c-55.8086 16.7676 -121.729 25.5996 -196.736 25.5996c-94.7197 0 -177.536 -13.1836 -247.424 -39.04
+c-70.5283 -26.3682 -125.952 -64.3838 -163.584 -113.664c-38.0166 -49.2793 -56.96 -106.496 -56.96 -170.239c0 -67.2002 17.792 -123.776 54.2715 -169.217c35.0723 -44.1592 83.9688 -79.8721 144.385 -105.728c58.752 -25.2158 133.247 -47.3604 220.672 -66.0479
+c64.2559 -13.3125 115.712 -26.2402 154.239 -38.0166c36.8643 -11.2637 67.3281 -27.9033 89.9844 -49.2793c22.1436 -20.7363 32.6396 -46.9766 32.6396 -80.1279c0 -42.3682 -20.2236 -76.8008 -62.0801 -105.345c-43.1357 -29.0557 -100.352 -43.9033 -169.728 -43.9033
+c-50.9443 0 -92.416 7.16797 -122.624 21.6318c-30.3359 13.9521 -54.2715 32.5117 -70.5283 54.2715c-17.2793 22.6562 -33.4072 51.4561 -48.6396 85.7607c-13.4404 31.3594 -29.5684 55.8076 -49.2803 72.0635c-20.7354 17.2803 -45.3115 25.7285 -74.4961 25.7285
+c-35.0713 0 -64.7676 -10.3682 -87.8076 -32.3848c-23.5518 -21.8877 -35.3281 -48.6396 -35.3281 -79.6152c0 -48.8965 17.9199 -100.608 53.8877 -152.192c35.0723 -50.9443 82.3047 -92.416 138.752 -123.136c79.3604 -41.8564 180.864 -63.1045 301.696 -63.1045
+c100.736 0 189.44 15.4883 263.04 46.208c75.3926 30.9766 132.225 74.4961 171.648 129.92z" />
+    <glyph glyph-name="uniF415" unicode="&#xf415;" 
+d="M1408 1024h512v-256h-310.016c-98.8164 -225.92 -323.584 -384 -585.984 -384c-176.768 0 -335.488 72.832 -451.072 188.928l0.640625 0.640625c-50.0488 50.0479 -50.0488 130.943 0 180.991c50.0479 50.0488 130.943 50.1768 180.991 0
+c69.376 -69.6318 163.456 -114.56 269.44 -114.56c212.096 0 384 171.904 384 384zM1024 1408c-212.096 0 -384 -171.904 -384 -384h-512v256h310.016c98.8164 225.92 323.712 384 585.984 384c176.896 0 335.488 -72.96 451.072 -188.928
+c50.0479 -50.0479 50.0479 -130.944 0 -180.992s-130.944 -50.0479 -180.992 0l-0.639648 -0.639648c-69.376 69.6318 -163.328 114.56 -269.44 114.56zM832 1024c0 106.112 86.0156 192 192 192c106.112 0 192 -85.8877 192 -192s-85.8877 -192 -192 -192
+c-105.984 0 -192 85.8877 -192 192z" />
+    <glyph glyph-name="uniF207" unicode="&#xf207;" 
+d="M604.672 256h-329.216v990.72h329.216v-990.72zM440.064 1381.89h-2.04883c-110.464 0 -182.016 76.1602 -182.016 171.137c0 97.1514 73.5996 171.136 186.368 171.136c112.512 0 181.888 -74.1123 184.063 -171.136c0 -94.9766 -71.5518 -171.137 -186.367 -171.137z
+M1792 256h-329.216v530.048c0 133.12 -47.3604 224 -166.656 224c-91.1357 0 -145.28 -61.1836 -169.088 -120.32c-8.57617 -21.2471 -10.752 -50.9434 -10.752 -80.5117v-553.216h-329.344s4.35156 897.792 0 990.72h329.344v-140.416
+c43.7764 67.4561 121.984 163.584 296.448 163.584c216.704 0 379.264 -141.567 379.264 -445.823v-568.064z" />
+    <glyph glyph-name="uniF500" unicode="&#xf500;" 
+d="M2048 0h-1920l960 959.872z" />
+    <glyph glyph-name="uniF302" unicode="&#xf302;" 
+d="M1024 1536h512v-512l-768 -768l-512 512zM1280 1152c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128s-128 -57.2158 -128 -128s57.2158 -128 128 -128z" />
+    <glyph glyph-name="uniF108" unicode="&#xf108;" 
+d="M1664 1536c141.312 0 256 -114.688 256 -256v-384c0 -141.312 -114.688 -256 -256 -256h-128v-448l-448 448h-331.008l128 128h395.008c211.712 0 384 172.288 384 384v384zM1280 1792c141.312 0 256 -114.688 256 -256v-384c0 -141.312 -114.688 -256 -256 -256h-448
+l-448 -448v448h-128c-141.312 0 -256 114.688 -256 256v384c0 141.312 114.688 256 256 256h1024z" />
+    <glyph glyph-name="uniF405" unicode="&#xf405;" 
+d="M1536 1408l-320 -320l320 -320l-128 -128l-320 320l-320 -320l-128 128l320 320l-320 320l128 128l320 -320l320 320z" />
+    <glyph glyph-name="uniF501" unicode="&#xf501;" 
+d="M0 128v1920l960 -960z" />
+    <glyph glyph-name="uniF50D" unicode="&#xf50d;" 
+d="M1024.13 896c-105.984 0 -192.128 86.0156 -192.128 192v512c0 105.856 86.1436 192 192.128 192c106.112 0 191.872 -86.1436 191.872 -192v-512c0 -105.984 -85.7598 -192 -191.872 -192zM1401.47 1024h192c-27.3916 -244.48 -206.464 -441.984 -441.472 -496v-272
+h-256v272c-234.88 54.0156 -414.08 251.52 -441.472 496h192c30.5918 -181.504 187.52 -320 377.472 -320c190.208 0 347.008 138.496 377.472 320z" />
+    <glyph glyph-name="uniF503" unicode="&#xf503;" 
+d="M2048 2048v-1920l-960 960z" />
+    <glyph glyph-name="uniF101" unicode="&#xf101;" 
+d="M1024 1792c424.064 0 768 -343.936 768 -768s-343.936 -768 -768 -768s-768 343.936 -768 768s343.936 768 768 768zM1024 768c141.312 0 256 114.688 256 256s-114.688 256 -256 256s-256 -114.688 -256 -256s114.688 -256 256 -256z" />
+    <glyph glyph-name="uniF204" unicode="&#xf204;" 
+d="M1182.21 1271.81h328.704l-14.4639 -302.72h-314.24v-841.088h-320.128v841.088h-222.08v302.72h222.08v258.561c0 203.008 131.456 389.632 434.176 389.632c122.496 0 212.992 -11.6484 212.992 -11.6484l-7.04004 -282.624s-92.5439 0.640625 -193.536 0.640625
+c-108.928 0 -126.464 -50.3037 -126.464 -133.504c0 -12.416 0 -15.3604 0 -13.9521v-207.104z" />
+    <glyph glyph-name="uniF444" unicode="&#xf444;" 
+d="M1600 640c-70.7842 0 -128 -57.2158 -128 -128s57.2158 -128 128 -128h64v-128h-1024c-141.312 0 -256 114.688 -256 256v1024c0 141.312 114.688 256 256 256h1024v-1152h-64zM640 384h817.92c-30.7197 34.0479 -49.9199 78.5918 -49.9199 128
+s19.2002 93.9521 49.9199 128h-817.92c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128z" />
+    <glyph glyph-name="uniF416" unicode="&#xf416;" 
+d="M1088 1792c176.768 0 320 -143.232 320 -320v-640c0 -247.424 -200.576 -448 -448 -448s-448 200.576 -448 448v320h128v-320c0 -176.768 143.232 -320 320 -320c176.64 0 320 143.232 320 320v640c0 105.984 -86.0156 192 -192 192c-106.112 0 -192 -86.0156 -192 -192
+v-512c0 -35.3281 28.6719 -64 64 -64s64 28.6719 64 64v451.968h128v-451.968c0 -105.984 -86.0156 -192 -192 -192c-106.112 0 -192 86.0156 -192 192v512c0 176.768 143.232 320 320 320z" />
+    <glyph glyph-name="uniF459" unicode="&#xf459;" 
+d="M1920 1664v-1280l-768 480v-480l-1024 640l1024 640v-480z" />
+    <glyph glyph-name="uniF441" unicode="&#xf441;" 
+d="M1664 1024c141.312 0 256 -114.688 256 -256s-114.688 -256 -256 -256h-512v256h256l-384 384l-384 -384h256v-256h-512c-141.312 0 -256 114.688 -256 256s114.688 256 256 256h6.40039c-4.09668 20.7363 -6.40039 42.1123 -6.40039 64c0 176.768 143.232 320 320 320
+c89.3438 0 169.984 -36.7363 227.968 -95.8721c60.7998 131.84 193.408 223.872 348.032 223.872c211.968 0 384 -171.904 384 -384c0 -45.1836 -9.21582 -87.8076 -23.5518 -128h23.5518z" />
+    <glyph glyph-name="uniF506" unicode="&#xf506;" 
+d="M768 1920l489.344 -489.472l-640 -640l-268.928 269.056c-49.792 49.792 -49.792 131.2 0 180.992l292.864 292.735l-1.28027 2.68848s128 128 128 384zM1738.24 565.76c33.1514 -32.7676 53.7598 -78.208 53.7598 -128.64c0 -99.9678 -81.1523 -181.12 -181.12 -181.12
+c-50.4316 0 -95.7441 20.6084 -128.64 53.7598l-330.24 330.24v128l-64 64c-35.2002 35.2002 -104.704 23.2959 -154.496 -26.4961l-75.0078 -75.0078c-49.792 -49.792 -131.2 -49.792 -180.992 0l-14.8477 14.8477l640 640l14.8477 -14.8477
+c49.792 -49.792 49.792 -131.2 0 -180.992l-75.0078 -75.0078c-49.792 -49.792 -61.6963 -119.296 -26.4961 -154.496l64 -64h128zM1610.88 373.12c35.3281 0 64 28.6719 64 64s-28.6719 64 -64 64s-64 -28.6719 -64 -64s28.6719 -64 64 -64z" />
+    <glyph glyph-name="uniF105" unicode="&#xf105;" 
+d="M1408 1408c0 -167.04 -107.264 -307.584 -256 -360.448v-535.552l-256 -128v663.552c-148.864 52.8643 -256 193.408 -256 360.448c0 212.096 171.904 384 384 384c211.968 0 384 -171.904 384 -384z" />
+    <glyph glyph-name="uniF473" unicode="&#xf473;" 
+d="M384 1664h1280v-1280h-1280v1280zM768 1408c-70.6562 0 -128 -57.3438 -128 -128s57.3438 -128 128 -128s128 57.3438 128 128s-57.3438 128 -128 128zM1536 512v576l-128 192l-448 -672l-192 288l-256 -384h1024z" />
+    <glyph glyph-name="uniF452" unicode="&#xf452;" 
+d="M512 1664l1024 -640l-1024 -640v1280z" />
+    <glyph glyph-name="uniF408" unicode="&#xf408;" 
+d="M1792 1150.72l-475.904 -329.983l182.528 -535.04l-474.624 331.903l-474.624 -331.903l182.528 535.04l-475.904 329.983l587.52 -1.02344l180.48 535.68l180.48 -535.68z" />
+    <glyph glyph-name="uniF450" unicode="&#xf450;" 
+d="M768 1024l1024 640v-1280zM256 384v1280h384v-1280h-384z" />
+    <glyph glyph-name="uniF517" unicode="&#xf517;" 
+d="M1408 1152l384 384v-1024l-384 384v-256c0 -70.7842 -57.2158 -128 -128 -128h-896c-70.6562 0 -128 57.2158 -128 128v768c0 70.6562 57.3438 128 128 128h896c70.7842 0 128 -57.3438 128 -128v-256z" />
+    <glyph glyph-name="uniF106" unicode="&#xf106;" 
+d="M256 896v640h640v-640c0 -282.752 -229.248 -512 -512 -512v256c141.312 0 256 114.688 256 256h-384zM1152 1536h640v-640c0 -282.752 -229.248 -512 -512 -512v256c141.312 0 256 114.688 256 256h-384v640z" />
+    <glyph glyph-name="uniF208" unicode="&#xf208;" 
+d="M1664 1920c141.312 0 256 -114.688 256 -256v-1280c0 -141.312 -114.688 -256 -256 -256h-1280c-141.312 0 -256 114.688 -256 256v1280c0 141.312 114.688 256 256 256h1280zM663.168 384v792.96h-263.552v-792.96h263.552zM531.328 1285.25
+c91.9043 0 149.12 60.9277 149.12 136.96c-1.66406 77.6963 -57.2158 136.96 -147.328 136.96c-90.2402 0 -149.12 -59.2637 -149.12 -136.96c0 -76.0322 57.2158 -136.96 145.664 -136.96h1.66406zM1613.44 384v454.656c0 243.456 -130.049 356.863 -303.488 356.863
+c-139.776 0 -202.496 -76.9277 -237.44 -130.943v112.384h-263.552c3.45605 -74.3682 0 -792.96 0 -792.96h263.552v442.88c0 23.6797 1.79199 47.3604 8.57617 64.1279c19.0723 47.3604 62.4639 96.3838 135.296 96.3838c95.4883 0 133.504 -72.7031 133.504 -179.199
+v-424.192h263.553z" />
+    <glyph glyph-name="uniF304" unicode="&#xf304;" 
+d="M1024 1152c-141.312 0 -256 114.688 -256 256s114.688 256 256 256s256 -114.688 256 -256s-114.688 -256 -256 -256zM1152 1024c211.968 0 384 -171.904 384 -384v-256h-1024v256c0 212.096 172.032 384 384 384h256z" />
+    <glyph glyph-name="uniF225" unicode="&#xf225;" 
+d="M655.104 1857.54l368.896 -307.968l-531.456 -328.192l-364.544 291.84zM128 929.536l364.544 291.84l531.456 -328.064l-368.896 -308.096zM1024 893.312l531.456 328.064l364.544 -291.84l-527.232 -344.32zM1920 1513.22l-364.544 -291.84l-531.456 328.192
+l368.768 307.968zM1025.02 826.88l369.92 -306.944l158.464 103.297v-115.713l-528.384 -317.056l-528.257 317.056v115.713l158.336 -103.297z" />
+    <glyph glyph-name="uniF103" unicode="&#xf103;" 
+d="M1152 1408h896v-896h-896v896zM128 1024v384h896v-384h-896zM640 512v384h384v-384h-384zM128 512v384h384v-384h-384z" />
+    <glyph glyph-name="uniF431" unicode="&#xf431;" 
+d="M1408 1280l128 -128l-576 -576l-576 576l128 128l448 -448z" />
+    <glyph glyph-name="uniF200" unicode="&#xf200;" 
+d="M1024 2048c565.504 0 1024 -458.496 1024 -1024c0 -452.224 -293.12 -835.712 -699.776 -971.392c-51.9678 -9.98438 -70.3994 21.7598 -70.3994 49.2793c0 33.4082 1.2793 144 1.2793 280.704c0 95.7441 -32.7676 158.208 -69.5039 189.696
+c228.097 25.3438 467.456 112 467.456 505.344c0 111.744 -39.5518 203.136 -105.088 274.688c10.4961 25.8555 45.6963 130.048 -10.2402 270.976c0 0 -85.8877 27.5205 -281.344 -104.96c-81.792 22.7842 -169.344 34.0479 -256.384 34.4316
+c-87.04 -0.383789 -174.592 -11.6475 -256.384 -34.4316c-195.584 132.48 -281.601 104.96 -281.601 104.96c-55.6797 -140.928 -20.4795 -244.992 -9.85547 -270.976c-65.5361 -71.5527 -105.472 -162.944 -105.472 -274.688c0 -392.32 239.104 -480.384 466.432 -506.112
+c-29.3125 -25.7275 -55.6797 -70.6553 -65.0244 -136.96c-58.2393 -26.2393 -206.72 -71.2959 -297.983 85.248c0 0 -54.1445 98.1768 -156.929 105.473c0 0 -100.096 1.2793 -7.04004 -62.208c0 0 67.0723 -31.4883 113.664 -150.017c0 0 60.0322 -198.912 344.96 -137.216
+c0.512695 -85.248 1.4082 -149.76 1.4082 -173.952c0 -27.2637 -18.6875 -58.752 -69.8877 -49.5361c-406.912 135.425 -700.288 519.168 -700.288 971.648c0 565.504 458.496 1024 1024 1024z" />
+    <glyph glyph-name="uniF421" unicode="&#xf421;" 
+d="M384 896v256h1152v-256h-1152z" />
+    <glyph glyph-name="uniF454" unicode="&#xf454;" 
+d="M640 896v128h-512v256h512v128l384 -256zM1536 2048c141.312 0 256 -114.688 256 -256v-1536c0 -141.312 -114.688 -256 -256 -256h-1024c-141.312 0 -256 114.688 -256 256v640h256v-384h1024v1280h-1024v-384h-256v384c0 141.312 114.688 256 256 256h1024zM1024 128
+c70.7842 0 128 57.2158 128 128s-57.2158 128 -128 128c-70.6562 0 -128 -57.2158 -128 -128s57.3438 -128 128 -128z" />
+    <glyph glyph-name="uniF213" unicode="&#xf213;" 
+d="M1536 1664c211.968 0 384 -171.904 384 -384v-512c0 -212.096 -172.032 -384 -384 -384h-1024c-212.096 0 -384 171.904 -384 384v512c0 212.096 171.904 384 384 384h1024zM768 640l640 384l-640 384v-768z" />
+    <glyph glyph-name="uniF401" unicode="&#xf401;" 
+d="M1297.15 878.848l494.848 -494.848l-128 -128l-494.848 494.848c-94.8486 -68.9912 -210.816 -110.848 -337.152 -110.848c-318.08 0 -576 257.92 -576 576s257.92 576 576 576s576 -257.92 576 -576c0 -126.336 -41.8564 -242.304 -110.848 -337.152zM832 768
+c247.552 0 448 200.576 448 448s-200.448 448 -448 448c-247.424 0 -448 -200.576 -448 -448s200.576 -448 448 -448zM512 1152v128h640v-128h-640z" />
+    <glyph glyph-name="uniF436" unicode="&#xf436;" 
+d="M512 1408v128h128v-128h-128zM768 1408v128h128v-128h-128zM1024 1408v128h128v-128h-128zM1280 1536h128v-128h-128v128zM512 1152v128h128v-128h-128zM768 1152v128h128v-128h-128zM1024 1152v128h128v-128h-128zM1280 1152v128h128v-128h-128zM512 896v128h128v-128
+h-128zM768 896v128h128v-128h-128zM1024 896v128h128v-128h-128zM1280 896v128h128v-128h-128zM512 640v128h128v-128h-128zM768 640v128h128v-128h-128zM1024 640v128h128v-128h-128zM1280 640v128h128v-128h-128z" />
+    <glyph glyph-name="uniF434" unicode="&#xf434;" 
+d="M1152 0l896 896v-896h-896z" />
+    <glyph glyph-name="uniF303" unicode="&#xf303;" 
+d="M960 1792c388.736 0 704 -315.136 704 -704c0 -388.736 -315.264 -704 -704 -704c-388.864 0 -704 315.264 -704 704c0 388.864 315.136 704 704 704zM960 512c317.952 0 576 257.92 576 576s-258.048 576 -576 576c-318.08 0 -576 -257.92 -576 -576
+s257.92 -576 576 -576zM1024 1536v-421.504l297.984 -297.984l-90.4961 -90.4961l-335.488 335.488v474.496h128z" />
+    <glyph glyph-name="uniF464" unicode="&#xf464;" 
+d="M1536 1408l-768 -384l-768 384v128h1536v-128zM0 1216l768 -384l256 128v-448h-1024v704zM1920 1152c70.7842 0 128 -57.3438 128 -128v-640c0 -70.7842 -57.2158 -128 -128 -128h-640c-70.7842 0 -128 57.2158 -128 128v640c0 70.6562 57.2158 128 128 128h640z
+M1920 640v128h-640v-128h640z" />
+    <glyph glyph-name="uniF109" unicode="&#xf109;" 
+d="M256 1280h384l384 384v-1280l-384 384h-384v512zM1295.49 1295.62c69.5039 -69.5039 112.512 -165.504 112.512 -271.616s-43.0078 -202.112 -112.512 -271.488l-90.4961 90.4961c46.3359 46.208 75.0078 110.208 75.0078 180.992
+c0 70.6562 -28.6719 134.656 -75.0078 181.12zM1476.61 1476.61c115.712 -115.841 187.392 -275.841 187.392 -452.608c0 -176.896 -71.6797 -336.896 -187.392 -452.608l-90.4961 90.4961c92.6719 92.6719 149.888 220.672 149.888 362.112
+c0 141.312 -57.2158 269.44 -149.888 361.984z" />
+    <glyph glyph-name="uniF428" unicode="&#xf428;" 
+d="M1024 1280c141.312 0 256 -114.688 256 -256s-114.688 -256 -256 -256s-256 114.688 -256 256s114.688 256 256 256z" />
+  </font>
+</defs></svg>
diff --git a/wp-content/themes/twentysixteen/genericons/Genericons.ttf b/wp-content/themes/twentysixteen/genericons/Genericons.ttf
new file mode 100644 (file)
index 0000000..0174438
Binary files /dev/null and b/wp-content/themes/twentysixteen/genericons/Genericons.ttf differ
diff --git a/wp-content/themes/twentysixteen/genericons/Genericons.woff b/wp-content/themes/twentysixteen/genericons/Genericons.woff
new file mode 100644 (file)
index 0000000..0e7212a
Binary files /dev/null and b/wp-content/themes/twentysixteen/genericons/Genericons.woff differ
diff --git a/wp-content/themes/twentysixteen/genericons/LICENSE.txt b/wp-content/themes/twentysixteen/genericons/LICENSE.txt
new file mode 100644 (file)
index 0000000..d159169
--- /dev/null
@@ -0,0 +1,339 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
diff --git a/wp-content/themes/twentysixteen/genericons/README.md b/wp-content/themes/twentysixteen/genericons/README.md
new file mode 100644 (file)
index 0000000..4aa8cc0
--- /dev/null
@@ -0,0 +1,218 @@
+# Genericons
+
+Genericons are vector icons embedded in a webfont designed to be clean and simple keeping with a generic aesthetic.
+
+Use genericons for instant HiDPI, to change icon colors on the fly, or even with CSS effects such as drop-shadows or gradients!
+
+
+## Usage
+
+To use it, place the `genericons` folder in your stylesheet directory and enqueue the genericons.css file. Now you can create an icon like this:
+
+```
+.my-icon:before {
+       content: '\f101';
+       font: normal 16px/1 'Genericons';
+       display: inline-block;
+       -webkit-font-smoothing: antialiased;
+       -moz-osx-font-smoothing: grayscale;
+}
+```
+
+This will output a comment icon before every element with the class "my-icon". The `content: '\f101';` part of this CSS is easily copied from the helper tool at http://genericons.com/, or `example.html` in the `font` directory.
+
+You can also use the bundled example.css if you'd rather insert the icons using HTML tags.
+
+
+## Building your own Genericons
+
+In the `source` directory, you'll find all Genericons source icons in SVG format. This will allow you to bake your own flavor of Genericons using a tool such as FontCustom (http://fontcustom.com) or Fontello (http://fontello.com). Perhaps you need more logos than are available in the base Genericons package? Just add those logos and bake your own expanded set. Maybe you need just a few of the icons Genericons provides, but would like to trim the fat? Remove the ones you won't need!
+
+
+### FontCustom instructions
+
+FontCustom is a powerful commandline tool which which bakes icon fonts from the SVG source files. It's the tool Genericons is built on, and it provides highly accurate and perfectly crisp icons, *provided all SVGs have the same pixel height*.
+
+It's not that hard to use, and once it's installed you'll never think of icon-fonts the same way again. Seriously, you should try it. Icon fonts for everyone!
+
+1. Install FontCustom. Follow the instructions on the website: http://fontcustom.com/
+2. In the `source` directory from the Genericons download, open the file called `fontcustom.yml` in a text editor. Customize the `font_name` and `css_selector`.
+3. Open a terminal. Browse to the `source` directory. Type `fontcustom compile`.
+
+You'll now receive a brand new subdirectory called `fontcustom-webfont`. Inside here you'll find your very own flavor of Genericons, with only the icons you want, including a handy example page that'll help you copy/paste the necessary glyphs or CSS values. 
+
+*Please note*: In the source directory, there's a hidden file called `.fontcustom-manifest.json`. This file is auto-generated by the FontCustom tool, and holds codepoints (unicode addresses) for every glyph, so its address doesn't change when you add or remove icons. If you feel the need to "start fresh" with the unicode addresses, you should delete this file. 
+
+
+### Fontello instructions
+
+Fontello is very easy to use. Just drop the SVG files of the icons you want onto their website and download the font. The downside is that Fontello seems to ignore the 16px pixelgrid, so you'll end up with fuzzy icons. Buyer beware.
+
+
+## Notes
+
+**Photoshop mockups**
+
+The `Genericons.ttf` file can be placed in your system fonts folder and used Photoshop or other graphics apps if you like.
+
+If you're using Genericons in your Photoshop mockups, please remember to delete the old version of the font from Font Book, and grab the new one from the zip file. This also affects using it in your webdesigns: if you have an old version of the font installed locally, that's the font that'll be used in your website as well, so if you're missing icons, check for old versions of the font on your system.
+
+**Pixel grid**
+
+Genericons has been designed for a 16x16px grid. That means it'll look sharp at font-size: 16px exactly. It'll also be crisp at multiples thereof, such as 32px or 64px. It'll look reasonably crisp at in-between font sizes such as 24px or 48px, but not quite as crisp as 16 or 32. Please don't set the font-size to 17px, though, that'll just look terrible blurry.
+
+**Antialiasing**
+
+If you keep intact the `-webkit-font-smoothing: antialiased;` and `-moz-osx-font-smoothing: grayscale;` CSS properties. That'll make the icons look their best possible, in Firefox and WebKit based browsers.
+
+**optimizeLegibility**
+
+Note: On Android browsers with version 4.2, 4.3, and probably later, Genericons will simply not show up if you're using the CSS property "text-rendering" set to "optimizeLegibility.
+
+**Updates**
+
+We don't often update icons, but do very carefully when we get good feedback suggesting improvements. Please be mindful if you upgrade, and check that the updated icons behave as you intended.
+
+**Base64 encoding**
+
+By default, Genericons ships with a stylesheet that includes a base64 encoded version of the font. This is to sidestep issues with cross-origin requests for fonts, that happen when a stylesheet loads a font that's stored on a different domain or subdomain. This is very common when using caching plugins.
+
+Base64 encoding comes with a 25% filesize overhead compared to just loading the WOFF file directly. If you know that you won't be loading fonts across domains, or have the ability to edit your server config files to allow it, you can get slightly faster performance by loading Genericons without the base64 encoding. Simply edit `genericons.css` and edit the `@font-face` declaration to match this:
+
+```
+@font-face {
+       font-family: 'Genericons';
+               src: url('Genericons.woff') format('woff'),
+               url('Genericons.ttf') format('truetype'),
+               url('Genericons.svg#genericonsregular') format('svg');
+       font-weight: normal;
+       font-style: normal;
+}
+```
+
+
+
+## Changelog
+
+**3.4.1**
+
+* IE8 support restored.
+
+**3.4**
+
+* Updated: Update Google Plus icon to new geometric version. This also *retires* the "alt" version, so *please be mindful if you choose to update, make sure you use the `f206` glyph, not the `f218` glyph, as it no longer exists!
+* New: Added helper rotation classes to the base CSS, thanks to geminorum. Apply `genericon-rotate-90` to rotate 90 degrees, -180, -270. Or `genericon-flip-horizontal` or -vertical. 
+
+*Again, it is important if you choose to update to this version, make sure you're not using `genericon-googleplus-alt` or unicode character `f218`, as that has been retired! Use `genericon-googleplus` and glyph `f206` instead!*
+
+**3.3.1**
+
+Security Hardening: Remove Genericons example.html file. Please visit genericons.com instead.
+
+**3.3**
+
+The Open Source release.
+
+You can now build your own flavors of Genericons with all the SVGs provided. 
+
+
+**3.2**
+
+A number of new icons and a couple of quick updates. 
+
+* New: Activity
+* New: HTML anchor
+* New: Bug
+* New: Download
+* New: Handset
+* New: Microphone
+* New: Minus
+* New: Plus
+* New: Move
+* New: Rating stars, empty, half, full
+* New: Shuffle
+* New: video camera
+* New: Spotify
+* New: Twitch
+* Update: Fixed geometry in Edit icon
+* Update: Updated Foursquare icon
+* IE8 bugfix, slipstreamed into this. 
+
+Twitch and Spotify mark the last social icons that will be added to Genericons.
+Future social icons will have to happen in a separate font. 
+
+**3.1**
+
+Genericons is now generated using a commandline tool called FontCustom. This makes it far easier to add new icons to the font, but the switch means the download zip now has a different layout, fonts have different filenames, there's now no .otf font included (but the .ttf should suffice), and the font now has slightly different metrics. I've taken great care to ensure this new version should work as a drop-in replacement, but please be mindful and test carefully if you choose to upgrade.
+
+* Per feedback, the baked-in 16px width and height has been removed from the helper CSS. It wasn't really necessary (the glyph itself has these dimensions naturally), and it caused some headaches.
+* Base64 encoding is now included by default in the helper CSS. This makes it drop-in easy to get Genericons working in Firefox even when using a CDN. 
+* Title attribute on website tool.
+* New: Website.
+* New: Ellipsis.
+* New: Foursquare.
+* New: X-post.
+* New: Sitemap.
+* New: Hierarchy.
+* New: Paintbrush.
+* Updated: Show and Hide icons were updated for clarity.
+
+**3.0.3**
+
+Bunch of updates mostly.
+
+* Two new icons, Dropbox and Fullscreen.
+* Updates to all icons containing an exclamation mark.
+* Updates to Image and Quote.
+* Nicer "Share" icon.
+* Bigger default Linkedin icon.
+
+**3.0.2**
+
+A slew of new stuff and updates.
+
+* Social icons: Skype, Digg, Reddit, Stumbleupon, Pocket.
+* New generic icons: heart, lock and print.
+* New editing icons: code, bold, italic, image
+* New interaction icons: subscribe, unsubscribe, subscribed, reply all, reply, flag.
+* The hyperlink icon has been updated to be clearer, chunkier.
+* The "home" icon has been updated for style, size and clarity.
+* The email icon has been updated for style and clarity, and to fit with the new subscribe icons.
+* The document icon has been updated for style.
+* The "pin" icon has been updated for style and clarity.
+* The Twitter icon has been scaled down to fit with the other social icons.
+
+**3.0.1**
+
+Mostly maintenance. 
+
+* Fixed an issue with the example page that showed an old "top" icon instead of the actual NEW "refresh" icon.
+* Added inverse Google+ and Path.
+* Replaced tabs with spaces in the helper CSS.
+* Changed the Genericons.com copy/paste tool to serve span's instead of div's for casual icon insertion. It's being converted to "inline-block" anyway.
+
+**3.0**
+
+Mainly maintenance and a few new icons.
+
+* Fast forward, rewind, PollDaddy, Notice, Info, Help, Portfolio
+* Updated the feed icon. It's a bit smaller now for consistency, the previous one was rather big.
+* So, the previous version numbering, 2.09, wasn't very PHP version compare friendly. So from now on it'll be 3.0, 3.1 etc. Props Ipstenu.
+* Genericons.com now has a mini release blog.
+* The CSS has prettier formatting, props Konstantin Obenland.
+
+**2.09**
+
+Updated Facebook icon to new version. Updated Instagram logo to use new one-color version. Updated Google+ icon to use same radius as Instagram and Facebook. Added a bunch of new icons, cog, unapprove, cart, media player buttons, tablet, send to tablet.                                            
+
+**2.06**
+
+Included Base64 encoded version. This is necessary for Genericons to work with CDNs in Firefox. Firefox blocks fonts linked from a different domain. A CDN (typically s.example.com) usually puts the font on a subdomain, and is hence blocked in Firefox.
+
+**2.05**
+
+Added a bunch of new icons, including upload to cloud, download to cloud, many more.
+
+**2.0**
+
+Initial public release
diff --git a/wp-content/themes/twentysixteen/genericons/genericons.css b/wp-content/themes/twentysixteen/genericons/genericons.css
new file mode 100644 (file)
index 0000000..87cf754
--- /dev/null
@@ -0,0 +1,263 @@
+/**
+
+       Genericons
+
+*/
+
+
+/* IE8 and below use EOT and allow cross-site embedding. 
+   IE9 uses WOFF which is base64 encoded to allow cross-site embedding.
+   So unfortunately, IE9 will throw a console error, but it'll still work.
+   When the font is base64 encoded, cross-site embedding works in Firefox */
+@font-face {
+  font-family: "Genericons";
+  src: url("./Genericons.eot");
+  src: url("./Genericons.eot?") format("embedded-opentype");
+  font-weight: normal;
+  font-style: normal;
+}
+
+@font-face {
+  font-family: "Genericons";
+  src: url("data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAADakAA0AAAAAVqwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAA2iAAAABoAAAAcdeu6KE9TLzIAAAGgAAAARQAAAGBkLHXFY21hcAAAAogAAACWAAABsqlys6FjdnQgAAADIAAAAAQAAAAEAEQFEWdhc3AAADaAAAAACAAAAAj//wADZ2x5ZgAABFQAAC7AAABIkKrsSc5oZWFkAAABMAAAAC8AAAA2C2BCV2hoZWEAAAFgAAAAHQAAACQQuAgGaG10eAAAAegAAACfAAABOFjwU3Jsb2NhAAADJAAAATAAAAEwy4vdrm1heHAAAAGAAAAAIAAAACAA6QEZbmFtZQAAMxQAAAE5AAACN1KGf59wb3N0AAA0UAAAAjAAAAXo9iKXv3jaY2BkYGAAYqUtWvLx/DZfGbg5GEDgkmLVWhj9/ycDAwcbWJyDgQlEAQABJgkgAHjaY2BkYOBgAIIdHAz/fwLZbAyMDKiAFQBE7gLWAAAAAAEAAACXAOgAEAAAAAAAAgAAAAEAAQAAAEAALgAAAAB42mNgYf/MOIGBlYGB1Zh1JgMDoxyEZr7OkMYkxMDAxMDKzAADjAIMCBCQ5prC0MCg8FWcA8TdwQFVg6REgYERAPvTCMQAAAB42i1PsRXCUAg8SAprl7FN4QZqb2WZGRjAIVLrHj4be4ews7OJHAd54cMBd+Af7JHmt3RPYAOHAYFweFhmYE4jlj+uVb8nshCzd/qVeNUCLysG8lgwrojfSW/pcTK6o7rWX82En6HJwIEv+wbi28IwpndxRu/JaJGStHRDq5EB+OKCNumZLlSVl2TnOFVtl9nR5t7woR0QzVT+D7cKLeIAeNpjYGBgZoBgGQZGBhBYA+QxgvksDBOAtAIQsoDoj5yfOD9JflL7zPGF84vkF80vll88v0R+yfxS9lX8/3+wCoZPDJ8EPil8ZvjC8EXgi8IXgy8OXwK+JHwp+Mrw////x/wsfHx8HHxMvJo8Rjw6PGo8CjxSPCI8fDwc3PVQ2/ECRjYGuDJGJiDBhK4A4pXhDABtHClYAAAARAURAAAALAAsACwALABaAIQAzADyAQABHAFGAZQBzgIIArIDTAOkA+AEEgTCBRYFYgW+BjAGwgbkByQHSAeCB+AI2Ao4CowLGgvQDBwM6g08DX4Nug4kDkYOYg6ADsoO7A8yD4gP8hAwEGYQpBDuEUgRshHUEfYSQBJeEnoSlhLEEtwTIBNYE6oT6hQaFC4UShSQFJ4UtBTyFSAVjBW4FegV+hYUFiwWQBZWFmQWchaIFuYXFhdUF4gXyhgEGCwYThh8GNYZEhlCGVgZZhl8GZIZoBnQGhIaShp8GtIa6Br+GzAbVBt+G8Ib/Bw6HGgciBy8HOwdHh1WHXAdmB3eHvYfIB8uHzofSB9WH6of4CA4IMghACFCIcQh4CIGIjoiSCJ8IpYiyCLmIxAjWiPwJCQkSHja1Xx5YFTVvf/53nUm++zJJJnMkpkJJJkss5GFMIQ9w04IS0BZRSJLMIIo1l4XFETQFkVFBKwVrbuWpRaXPOtalZaCPKu1D2yf28NX21qfQubk9z3nzoSAS//+Mbn3nnvuuWc/n+/n+z3fCxHIaEKEJfJMIhKVhJ4GUtP8jCqRz+ufVuQ/NT8jChgkT4ssWmbRz6gK9DU/Ayw+bPKY/B6TZ7TgpuVwN71Unnnm0dHS24QQRSACUYis8XyzST6xEAch4LF5ZJsnKkc9NsDDj2ETXgUikT4iaClNJEBSGoZIP74qa+l//YRfKB5EAEyj4g/ztWBZbslcIEjucqHATOpjkYBXsYo18DNYeOQI3UMvonuOHIHXj+/YcXyHSs7FLGQp+o7sYA8IFq+BpmqKhtk6SDEZinWVWfMsHlLfIkRCgjdPsLpAtMlRUu8CmzVP8HlDEInJmkC+wcbihT54cN/6cePW79Mv/f1E+MUT2zvCM68cOWt7Rwc2pk8TNQ3IWW0gEbuI3yxI7KW9HdtnjbxyZrhj+xPbWX0EYhjcf9h3Jg9gldjBfhLm1af1ERF7BTAEmoxngQDeU35mB/YPsDiFtU0gxChgX2tn8S6FP3zG38O+zMWEVkU1yaYQRCMxt13WblvTT9bcdgpaTsnahlcqUp9owt0Vr2zYc+oUHwN8S2FjwMYV62PNA5+pPhaFc0EP4JhuPr2la4eQCVCsNRvnLac3A9nRNShIBFZPXpciEmHjareZsEbRWNTEBhVvHDasmyniwP7HJ+4AhlsgbmOP7PUsWVA8DFmHuzoSa3avSXR09XZ0HaZfHa7raOARKjm8kWoLdwfuamwHbcqaNVOo1t54V2D3QtA2nsQL1TYePrwRtMTaWUWYhvI0gGlYz5FeldWtgPiwvfW8bpVgAk/cwxqtR/hwhHxeVq9YWNG6duzo0miCHtBgy55TlN/jbYIHFGwyi6IJ6NVO7RG0c7c7ugBDRITMuMlYqovNAFYeuNg4BWPRSBCDBRhsEaKRQJCl5mOvSfmxpqbY3GQSCmYvXjy7s6bVP2WcjI/P4iEUxG7ddWt0brKrC5/P+Yz2fTans2bNjWMvPTwOi8B2Vhtw5pEr+cpyCWabVVAkVQngpGDFtChYcIsQCIYgT1ADQUUNifmQB7g4HIrN6pIdiponhCAYkoJDMd7ucEkOlxK32q02qxIMlAewtuYWQVwLdsg6+fyNbcufpfRunw+CruicxZMm1JYsV4zGfIuUV9+8OH7VzTdfFV80IpSVVZBvMErLS2rHT140JxrJtYfGjRjrFIyl3liplFNkNDlFY6nTmwuKwx0fu6gZfL67aOrZ5W03Pn/SQNiZfrXlIfr62RfrVXeh9JvpoxY4FUt5/eRFm2bsvTy/YvzFdSDK5jq/F8DrrzMpglAxtSFekt2zZ/rmRZPr/WYl1JmVJxdEq6VcX3GhoGY7zaAUuoZ5pNwhrqF5WabyKXVZhW4l/MJZaHhoC28cdiIDKkJ4nxqIiZQittSTBJlKiL8+LogKUe3+mDleLrvAjLhidsRIPBDMAda9LsERkxwCsETlccHiVXx2S4sUD1SBWyIIewRxjzDgk8iBw54n/0w3db0rjt/1ViE9TY/nNXaeue+KFT+Cxz4uSNCP6Bp5+biD/9dsLw0qj8DEq51nG1+if695Cb68Zevjbs19yW+VvZO2LB9yLT1Er4JdsAEsP/85/ZxupEvw+PznPweLNhWq4MY2evS13r0roL03FCq+m/5W2Jx4iP5u/dsQm1SrddTDuw0Xd7lKw+05HqUYSuGfM+nhE/bxIXBCrGAf3Sc0ultay6/9qXZB5lggL5R1FyAeVyEef0Aa8EZR7Qi4kuRz++3helzyOL0wgJfhOL8YXsXtkgNnaIsQrrc7YvE8UGOqllwpVM/Vnvo9pdvoEdpfVTXzgZ+MuPJ5n99dV/vjhyfPTs6uvwVu+TCrcfGm5OQt4R+tsLY3rFJquycX25Yff/vwfT0jH5QDY+vEbavV3KI3b5QrxfqfXbS445E3s4dUtm1a3Dg8XpRILPfm6vUlKD9UjQQH0MGHKG3xDEcZEXbEAz4UIKUIiyg0zwMI+hHk5dCPKlv3yZOWX/TT2VWUpqrYAxUR4SxB6HwNpN6c5jj8Iyt28drRp2lfqmFHl4xPOLZjufLHWK6b4YPIBAMrI9IiYU+Ugejl5YrSbpiQT1+lvX/+s6N6/EXXtsW7nE51/pKKiNMofU2P9h0SJ0ANCJEFs8bHShVRpB+Z/NVeUTASRJ9M2yyIzB6yhKzi2GA3s0HxeXFFF5hjgDMXFKjHuZsNdgtYYvEWMRphQGBA6AjXOwLlPq+kqPXh+tgIiNkVVVHBIiKOxBz2c3F+HGpVjJmjEbENVsDEL7aN7Nn38idXH6T7v9i27Qv6pzNv0x+PFQO3XC8JX/+j+y/gmypIBXkW1VFoBYdslvMkVZjcCMZV9NN7b6H9R8YXF/lX+Lw2S561qhb8T13bbs23WjdOCVzm82GkrVLwycO/OvSeqmHu+w9e/cnL+3pGbvsCJvLSU3mn6YYlUul9fTUhWREeSo30SHv7dkOOklNXNzZcGJoT9Qp+gzu7JL/Qlt3QAUu6Ox9YJQsilHlFWei7SzDBbFXwuiErE6lWVN68M9XQBT3vH2FzXSC3wj9Rlm4ldWQ4G0W73q8hITOh1ZARh5FBLM5+Me7xh20+my/qi4ajYeE9IZAbGLPkmh3T1723++JF9797+do3WncKVqO9oMjucpWblz66ZMmjS0d2j48VSXS/uE9nVJIWDE/fcc2SMYGLd7+3bu37uy+ePPEeyFVzDdmqURIXP/rbRxeXx8Y0Fb3Nk2M9RZ13Kc8jJzFjXTkjCTJxx4YX4R/FPkZF2FQHFYWyxxz02FoUfCbYhPn0ILQ9KExbumxGvL0KqjrkAnpoWkfluKG52fSQJMGEbJvbUxNuLZ++eVkDEPG/bl40oW1h9aS62kmhszsF8/Ir/WF3cSz1n+L187eaSnzFxZbs+GWPr2ZcKT0/Gct0k+ZBKzC91Bg/saCYDoEPiYTVjhG8moIa9dgLbCrWOs672mbSVyVbeCiGHfSbG0ZPg6mto6ZPGyk1PbSpftowbwH9GgAMhixvg3fMyMwy1ZfkGSIW9X0sbpzS2DxpclPjlL4N8NqTB4sqg4XdHtpz4CAcrrQ5h5Re3E5nY2c+isJhGsqFqazGLkkf9kBQwJURDMQtbALEWKWsrD/ZGsFVEULemYdJkQSpeewvyOeJLNWt++MT2xZEqmdctePgksVPeicUeOffqZb+TMqzb71kxuxAc57j6iVrn1005obXfzT/0ZtXTQjOMKuqaBVUn33munj5xBV3/fIvBhJftGnvgfkbPnxx18rm+Qn6wbAN22MPXy08ZfQsj9x6+LLp4e3/0bD49l9B3cFLn76uLTSt+6a7p965yOYszJmSVWgy+u54rnvS7nu3rp9Vr+N4RvYtzvCJAiFPwGYGY3ELn8/AGiXqjbI77AgbEI8Fgmk0x6nD2CRS7TinOWxuYboywE5yBMiFXCIt5+/YliwZX7J12lW/u31a0+W73u5Zd3T3tVOGdC0zl8iCSZDlvNHjtN41Sx/oGjZ1x0XRdn9Odp1r3KjY3GiBwbjG4pAP0NO7BjMH+hn9iuU/dP1icEaTlx0G8c7Ox+9YnYhfdM3td7bdcmyoIc9iSGRZbaYpVy185uZpzctvm7n96zujndGaXVcObZ01+upk5TSLhfpnLNo8BRyw7sgAQRDIXmGBukDei4srn/PeAuS2BeXpq2yF2V9+SR/+MnVFOiDvZecv03d41eUlUW9Xc4gXbyQR+bkP0TuIkwWpYhx/FrPDjCITQxhlVjaAtSAHlaGfpu5bsco7bZ71qvaN1z0152hdxNo8YdiabkPBpsSYG1VioA/SFB1Oh0AZ3HYtlLWvuKLnboOV/p7+agr9+1NPzbu7FB5nbcjoT/mIDd9af0ZBIag27OnjZ+CanoKsl/J7Ac99nL0SgHeJplTgWvbqWgUqEw47kw9xEwoHnDaMeEZNvihvVFwaBb+gs0wF1c0TN93cM3/+ig0XXzSqNfJqVzIZqjapGm2iH9PIrqoqZ/ls+lHMbi8ra2i8boOwNuVLJObO2cKm52D8cJBqjsEX1J+4lQK7O1aANeKr0c05B9bNHkb2b8J5WQlepRSs9iaojw2GELGMvnSKqVBIzf/XvPk0/ez0ZjP932RUJtFkMqqlT+ejCCWn9Lf6TolkbCMqSKg7NY1JsVekA5l3knxp9QOooPSTbeSnZAe5h9xH7icPkoeZNodNsNUq7M+q1KHOoNQpqpWdFBsDFOxOJR9A8QahtgYCwdpANKB3byAYCfIVGIhiZAS7IFobi8bqIqzPo/VxftV/I6A2DrF6B9Ta62rtYbtj4GdjRy37szqsdXYwyXEjOPyyLQ4mv+qPB1UjBGV/VFVx1Pk/Af+E9BkvqVZThSnVCiLgdBZZrADn/RNgIDGKVuEFTC68AAIM5JHOCDArcH2cujJ19mNwpV59EO6kH34sjPv000+hUpA/ph8KjQ9K/5AlWi2oAkjsHVaowIpM54D5A63OzoFjLPt0TUX+HC+AL+GLEhyTZAFkEPCWHew1ngE7H8vOptXpFop6jqwMlgzfgCn07Rd3wmz68M4X9/5pVeoFiLx47+Rdu3ZhaPbOF+//06rz56oF5dwL5GM2V5GJFaCO5uaqVQsSYVTXBJQPDrsUV9I8AjEVgXUEMEzFFKiHWTgDUxiRRmStjdQhVQuUsyj+aoyBcAgUPUI4B8whIRjggocnY1Qcc2MP2T0TSiIqi0GO1w6XiLfsjfStAPXlOINQiAVZlojhEpYZDJjjMYyPK5KCcG+2SxI5yJgfI2T0Dkb8OAc8tpueWLlyidW075r14N4wIbn6rTtmlSdC2KNGEUb+/OVlD4Brodt/KX3/dnHo0I4tV6xrn7vgyWuT2V3tl9AvV14xvCXLsHPlqv9qanEkQxs3RTsstnBBVbS0am4gEDEYzEUFlfXFzki1udghK5VlFTWh8bmohxlt9jGBwFirTTYbi70V9spOj9cvCh0bW8Mza3Js5qmXrBtWPjJsKjaaHRsebp91+0y64TRsuqRp1o43eibdsNAZG9/TTQ899BD9dFxb7qzZUP2MyXwv/fSNdde9DyGdd+rNZLQzzUDvMqxdfRn945139E8Yn9dgm739re6xm9bWY1uzBEiuaLp1Q7j62jtTWaNuGtYz1FfiTV775ALhshdbJlmbWpZfds3637g80+d3fpgMV1uDwxcsnFlcWaZm5zkc44YMbfc4PBZByHGai9v8/haTXYFhlQKUTSh1eQSo9Pnag1aP0yIZi8rcc2pHXhYy5Yy5aHU00l5tsOfVDC+Pb2ieclU0P2flA303f/3WTTeuPXrvZVb3yq3T7qJPrN/QXer8rz27YOU99/7BJQk5t7xL/7x7H/3D+9f//8R1mT73Y3W4ej25BG9cuAjy5BAqSKY8A858HnIJsTiKJ5eI+ngspPiC3kAeJgOXWAZqSMLF0iK6RIe8Wy2aMGb26CZnXlnlitVXdl86K2E2I+waTFa3P1IaWdU+xmzxjB41rACGKdbEiNmTpo+oyxLKW6Z3zpsx0mKRCsKR5NgZ48aXFBeJJmeR0XhKdTQOKc0eP2rMww899bO7N8xzqkPEnKH1M+ffsO3QojmbZ8Qtcm6uqtD/EVS7w+3yuUqzzUKRKycXCr2VeeXV4jOpjwQ5W5It1aMuGzPx+s62Km++ASFJyS+sCCerqxdMm9hYlZP9htG9fNWD9786b/LlTW4hr6QoKz2GiEFXIAYNIddh79hVbgwNMqiRUCwy5iaivseUAtlmBWapCgz+YRqmD9rTgn3gORITJpusg2SINS3zB57bMnQgpo4Mw6QbDiy5auWUiZe//yukq6ZRdZ3r75y69cq2sYteeHB7z4wqekmT1ze8qX368g6Xu9xtKYjEOxdVDvWUOIpqIj5vkXPYsBkzu7ctXzGsIR7tnL1xXsswr6el9dLJ1aFCp8NWUlYV8/pikVlXHrxnVbfYuuzyJQdumNSYN3zFrmff62mfefnGqXeu76xL5lTN6Nn+4AuL5tPftl86e3hzRbDY6bAYjeZ8zCPkLXe7W0I2e3l5dai+FqmIMzhkQtuCS0a3BgMlVrPJ46ofMbTKbvN4orWFRagDJSdNrBkRCnH+jKyIKMzuGGESHXFX1wbwrFQiS+EcJSRUgomjOO94Zp1Gwe6ptyuaPVhkZ0cymmCsgSZGXjFu7lCtt27VwgSoiACeOWMLDAbYG01KpLiu3OAJ6mdM3ZWsqK0QtIvu/3qzbKr2lLTvnD5zrz+Q1Cn927BVDas93KIVJLVkBBmPesxmrGUMq6UPWwSJAY4VYC3TWqK9nKkzCrvzxzidV+0oE1iQWwesdgmsjhgzlyjEqzCzbsRi1e0/gBKO866MXoTpLCimHHILYgXrCtQSgn7R7mD3LpBezx/qyu949nBHvmto/rDbfkL/1hoKjRwZCrXC6HmtrfNaBU9lw5DqshmpLY+C75FH6AePPkY/eOQR8KU+rKiZWVo1pFGuxoEYUb1vWCjvilfoF/QE/eKVtQWllUXrZtTNKDn03/Nks9kGDYXT69qWL2+rmVIn0jOT/vxkycz62LyYaMh3VeZ3dORXuvKHgRJqxeJbW/VzKDS8rHZIQ3B4alnXgctWHOzqOnjiYJdwb03JxOHlDUJ7qCVUnUg9Fe8srq9b+uzGKVM2/mop6n/hkb4Z66oDC43whj07Rx4/pG75HcurJ4Wa6bU5CypCsXlsfSK/Znq6RnwkjuPBjDBM7RX5loUwHDw23VzOu81hU2VPRscKRh1x/aE0ze63e2sA5t03f4w2LwZqzega+bUtW16X7kMaoc7bPX/+7nmw/D6Mlo7Os/ttIS8tm3vPnGjnj0YfPeKpqfHAx5uef3HTZdU/Ptq5a+6cnZ1/qA0dZ/FEryPbP8B5nU/KM3ybb+Lo+jrbxkF+yPZyHBB3IamOOxRkxpn9GyTW7wWSXX76Hn3P35UMwHLZ1DC6wSSr3Kx+VN/iOcrs6Kl9LAF9H/z8hR1Sqc9XKhHdrvUCcqnWgT0WByFG0WTMiduMEHUIt8Ga1Od0O6wULBTDggVWpv4u5NPtqc9hDb0dLt+d+iL1xW61lb5FD0F56lnw0V/RtyAC4+kH9CFxL/0TTIDI2W/o28t66EvQ0rOMt10ghCpzsO0uMoa3XRUFNU9iKoQKeaBrOEwcMr6F65vtb8TNyLCYcqGzMKaZcMuiBxVo+dXZjdbIHFlWrEU1rjMGWaVX5g11Z1vL8suaK4RTXtlpSa2ylcr/dFpLyz6wFouCS5RcFvr3Yp+vGEZk2wtUsmgRpbTFarVV2MyCgTYU5IqyWlkh2xxVVSV09S/tZW5zn0GRcZ4U5jnzDLtyrT5vcbDYk2PhOMX2R9h+0GDtb9BmCPnezY/0bgfHOgFnLd9TYnsdqPw5PDaPGBZ6xd5+wjRETJ7i8jylIRPW+klmLmHJCmPHOdwqZYTMRqCESyFFKBHf7GKApmAwRdg+U5Ldk8weC5+HZcSftmtm2DQza+q7f4hNeCdZTKhsmcQ6cIH8XHf3c/Qs/ZCefX716ufhjrXv3NvZee87a3fRr3buhKw/wdBO+rRKVj+vJ2LJkefji8+fXd2588RnJ3Z27qRf0dcxuUToXPqfnTAV3tPnB9aJ8L1IE957GY7arSLrVQ/rTKmL72ZqTGs+tUfS+B4m/ezUnn7siD2nCBncrmxSTKp0W53JEw3b8LAw45c+rbj+mh4vNlQ+VlhYRqFzBg9NwM5ORvu4xiniOdXrRKYcSODZqWhn2RLStLOYjCVIsbNwIOCkhD2HXkx5fl1cZChpxLrUoqasioxHxS16iZ4mqK0PowJRAnU/VFUJy1JC4RJ1xRO8DMK0KYebmya/s8bSb0AwqFij4pxQETyNVRLcDtTnDn9X5QnJGajr4H3rYpwblaQJZdwohqdhm5g+MmFPOowc1Wb6oZ7OvHtuO5vVmF+/pwGU6GnYM37Q9DVzFsh3NQWi+qY5Xx8zYaZ6tXo1tseNCAcOQB2tRYA4qAFvPt+jUyFurx+BsAt/Fsrmpk6VNzUGvTnWYcLX+4WyA/6uwIFCs7lwf+rkgQCG/cIwnspfU5pnDIWnS88dSJ3c7/cfKGptLTwglGHwoL9rYG1ynC8gJdh3KqCUZjv15W7JjOyOIM9HBEMJhdhHNGq6+9n0+oFhkLVzdd/q9Ue+PLKenQAb/LfVmSe4dHY9eze8mX64fv2AfTpdFm/pBcWRdFGoXtgtUY9NNsHfvlVmauxAngZBE1dT07fKpd+cq5VhsG2cr7cSUsFtVza2FeOJMjj6gXqIOIw4UGzpCv+mOkomIb6S+jf14vKNQKWBKO+QXKxTKaJbNdv/Z9AWNEIMqyIagXe8EZi2FUNVI8aNjgLnXYifMpyl8hL6JfKeL5dSBc4shRwYCjl+WEu3Tnrl3Zcn0lvh8kmvrFjxypQUYWauU/SlhRxbZXyTypf09CyDM3BmWU9PXyVcAT2TZ0yfTG+lW/EKL+3RXzglRDk6n1dn5ofh46uOgDcIjDWyuiOtjDNLeByCFgcE46whqEtk8N7PmSM2KK7zTYkUeWC/ckoAWMBbcucvdm2/qH3FK0lY+8fQdWfJdRpt5M268//eSG3h1YC3u257eAVvWsuaEaf2rEDIgf2eoj2nhJN0L2vTlO3e6ZPhinfhQ54DvMoauDf1Fm/4V13LeRNfWrNgJQdjEBho6b4S2P/M7IX1MwIKo15IaLSX9mqQ4CdIyBfcayxNen+R29HPz8NA+nrFhNbX29eriQl+EhPqBfcaS8PmqJaWKxbEsyjzcLFVGqJ+ziLsKutBhlWIVHJ4wPgZPveTiQ44mo49ySgg0DCB4OxPA76mg4+eQuGJEYoOIOjiX2+KqyACXjMH5w1QirxhBzGy9WrBP5CLQSW0/BD1U/8hWi5M3L9f+jE9mPoUJtL9ggPaQHCkPmXYovMFDbs2i692BN4gMxqj1Ne0PqKJuGAUBpiUGahTvdBLE+f4MeMLRu6TZAT8M3kYi0jhT8TfGQxzF5pedmJVJRLvv16lF98zkDzGdIwCW90OHIoaQfXjfMQ+6u3TaELUUo8vEGak9moLEgs0mIThBQqW3qdBL7acPetbwJ/lskdp/oS5syE2Ztx8VOQ5jPYgDCVS/E1WFegdjDc5uLY5g+a+Gp6IUO4z1aMYcwLeZEGgCnxmphyhmAWi7zm09ZMjdPfvj8I2mAYlr67qJ/Me/Jx+TA880b23G//kjLvE72HREZGsepX+lT5JLz/6BCSh6PMH5/VpPB2X7f3fADEo6ovYG07uo+JCecJ1UlyiLcgsBpZmMXgs6luVeZErZnxzunVZs8PhE76u7L68u5L+H193f4zQj8LC3LHa/LgvMbNrmPTO2AkTxp45ylcVRNmeAQ5MZp/BhtgQ1nkNQwXUXeJc3+RIhqCG6Oth0GB3sMYH1ZAgcBqleJnHFv1tkv7mpVkPbm0E1AoC0S2TmIMOHqi+JmH4S9d/MofFg2/G4i95YyWcSo8dD7U3AWoT/tjwU0IZ28h47PiSOSwCyutLaS3vPd3fivsxVWa8mPLAyzg9Liu7m7sz+bwDTkt8rXGazJ2XOIJrLLRmytRuXDcauzLXpZR2NcP2qxk2MD8lQZuypntqmmy9TJvZnUA2snUBP1HY3Mgjhbp/HIKnyrA+GjGjClHAii+wi+VccsyZSpfT5VPn7IR9Nz733I2Ys0qYNFl7DB/AXVOPrd0FWSnnc2B4jjlTMTxbwPBMPsmWEJIJH8QdMucl9KR2Uj65IEVgr9aLY4Vz1EAGuBQpwsFi48WuBvI10Q82k3GZ4pHionAQZ7CQIZhHEFd1HrMLO0w4iKwJzALi8JjKcIJxDwMTTn34y18E7ZOa0f4/PnTz6UcXrZc3DVs69i8pzfLO+KlLnljF4pRSvP8k1L1xzNP0b1X0jH3zqyDeugvsdPKlrz48Dt+3vDP215euPbKtFBR8SFNMJxGxrZLGW8OWpcb87tL1ZPjDOoG1j89EfzrFWVRP+vC9PsKd3RjSzBASBtZnKtczy9gq5/wgfQGHlN7vM6fXizCM/gu2a9QCa6UH04HuvlE4Mdgw/H33mjW718j30zLEJyLsSZ3Sry0L2VOcPvTwGpbkPG6icj7L8IW7kg1emTL3HUNVCa+QPLceEYnTsSJ3IBu8GAnLisuUdN4ZphzXmTJJ4475gqs/7f2pM2Vd/Mhc8Hi4EEK1Ecmzz8TSCPu48Bj8B2nnRuZHmRFDNKGrA/ycwMqx5zgI/A3QX6T6ZZ9OjCVOm5lE0nM9yzVK5oTKCB0j4kRlumgJ12d1cRiJNUHajsVtTNw+OWizT1UPb2xdVxV67vI9pwolwvWyHWWejYfD1Us3nNrT0srXpqaCKqf9Ye1Wxr+DbGEEA5ERbCdNRFquHEwmP207mqQN9CS8Bm1tnyaPt83e20/2yruSx/ARjKcN4GaPjuNdW2rHXiAMkIHJLpnRKPVc/4t6RWS9Qtym+Af5f+UnuKwRsPCoByQCn1PLLJjFXFTpL+THqYVaOmCWBrO4HRIX2B8UTX8H1zySWyS1EplFf8G8UGHWLGqRH++gv8B3O+BzrssnFFYPxuiYgASEiFRvCllNr8xksYDUJsHTMSxJsHRYFyMm41YCIYE/jQlsDKZ6B3wJRKwe88bEGSxyd9o+Pg8BVyhWTX+Gc5st0syzNE+QNe6STIwiq7zGSBmbAWeJoDsecx5fwG5kTfm2/ucjQZzZNShz4lwTJBl9jx3xsM03+D48SB/8vnthgEylMqE+7cLAgAN0xgP6e0K8awRuB+G2DFbnb+1iZ5CF4ZisG2T4WbeNMEMJs5718TiJObNo6dUu4qM0jvD8GX4FLsg/zASuzRcdVI4YZYownCtKYxlpmQI5K2NWwEyZqOExxfhcwQeYituv2xAydnCGM8U6FjN5Lqev4LEKCiOAIRBEfIc3iF/6cJBv+vQn/eQnn96kcODglnD9mnrzbvqvX5bSf0Ju6S8hm9FEoq97Ja3FMXxOAwBDq8Eg4IIBFJCwesz1FnDe8NZi43SHX0U5vLGqfVypDgoCVk3HLmBmGyZH8OJ2bzzsqHSlMeIc9pQPYI9ej+8rPe1JSDJ10If1/JI5HOnQ+R1lCtxfn/EqI7fgmdjWlkfl8hqBGDECFy3zLmf6JzNHpN6bKwToXIGNEMV1xy1yKMD38Qfn2bDymZgo5c4cePJFue86MKjFNP2MZbNhuUpNsdXI8gaUm/q6TY+5iY84kxBNyGrTs5nVLRCJc41F4apFIjN1+4hYX1/fd4TZo9hU0vT5fBZLi/80zjRNAdFyj7pAXUCq+M6K6ldUixpkRDFoCQTlINMf48G4HIuLcQeictwh2h1+h2rHseaT216vLmikv6tptm95Y4Sz5Y0ttqZa+rvGTwyGTxqhrrbJtuWNkdaRb9xqb6qFOhZNN3H4FU7fam+uOZdSzyA3O4E5NNfoST/RM771dcy4jGM3ucDGYEV9/rwvH4Ab+VWI+fnOaRyUC7+BkOo3n96yaYNweHwf4aHUmPHf+iAidWTL6c3jU2M2bGJX4fCGb/GH4nNypTyjVyCgstXPlrusc4eUfmEsCGGYsEkj4ezRY/XF/SaTwWx1n5srOo8y6SyRxWZEvUx0qGbceoBz8ZTsyxH965GBbxIyOK+7D4n48AwrnmTwftD+QyYtkiELm576dyB6iSkuIAa+nyCDvp/A0tLfT4jAHbwN34u5ZBDm6kbwNNalQRc7x4AAeEZfsXj+OgO6vKoixyOWv4LaFcNcjqnG84rxpH+DihPS4CoMFAm82rj0M0XzL1Gw/0UtUzy+hO1mrR+oxoXzznLhvJMym3TI1zy2MDK3C+edsExH+720V9v7rQlXz4vpSzJooWk5dl55ju/+wodx1m995ZMazFsvKOjskfP0yPPKCH93GfrONa4qB9+uZkDLfqUQjnIPqO8pH170t7ffsf/n825aUlHkLCyKjC52vmUyj5n+fXUSGhqndSdGXrR/XEFBia+k2Du0umpkg7fUaquOpH3hdZ1Xn9Xsp+K8YYYKjrknqRuHzQ0nL0jLEhpZ2hSOvESYwZ6lZcyHupk9I2MHYUzHTOz4RhgVg7AFj6DPb0HNLlzMggqjGimWeQe00/85UamlPuvgtkitYwTeybwu3I7JE6bDvO7/xPrkKtvYTgbTQFsEexnEW8CF0horv35CU/DGZ1+YcP/9E1741caK5gk4ZZeO+c1r97YMHXP33WOGttz7+ktj2Jwgl8BJdafixhWsfw3F7F8iqBbRwQzaQeGyE/Qo1Jw4Kh09cfToCag52/U1kK/lhm3IoRu2QQO8to2+Rl/bBq/RshaJtDCdjOunaTtQEdv9MQpRFLSoxX3LgTjKtTREubBJNxIpiCqsnX0oqges7lEm33UTrcxhhFnz8IRU9lwKbtMfMPp+ux6lP1wP2w+Xn/p3JWvkO8os+4EyLSj+g+oPldoHL8+lOw50/lDJOH1e7mSJGIqm56iMcgzLNRkF5rRgCqIIY/Y0k8CtngyARYJyaEfbc0v6OR7LCWYdpb18CrMPyujxHW0Tqabfp/0ldFzP4z7Vg3OVL8iLfMf752wPIuuTjCzycgdl0Weq5w4WHD0kPsnHrk4mV48dt6Il3ODzNYRbVozjMcB7SsaVxzRSdogDoUEYx/lRNrPSQBrEeYnMv9kT5Fv1wC0jDLgljS2shmHdKdLtDxcxNS/FxaPE51EfSW6Nr1lTPvfiem0wd+K2hguHlDkEurFzZE+Uf1qncEW4j583nwb76c1slxR5h3TeGGq6J6rG6SbTNwQiz8I2FBAn99f1cJRUVBt3QfF5mCmOQWglFOlBH8qkZV+uXr1w6sqFf/0NnQbk+iVz6uouXbt96YK3FG3smHuW3ZinFt20+r6nhV8NH9daWkpb6PFJU28jaTs6kTP7wz4xrHriYYsv7pFna19oFTRRwS6oXnKFikvOtM1b49wim2EQ6+eMYwmYgswRk7MLOJCWxzhxe/s5Vko6Xel7U0j0phaAm00QI/ezZv3KeIOR5HB/ZxuOIMp+i8ljYR8asNk2BEC3DKt+I6BKr+nKDWjf8DHTzS2gm5i1bzROhPFeThNjiqVnDC9shEHjLErjagYztmnny0kz+Y/zZZgjqKgjuLtlMF4j5EONMEJ1jIAyCNRAvhQcAY54cIQQCKoO/MsXWSK8RVkXR3jmCeP5QhnGYaAM8iGuloEazzcEK/HGEccMJYdaIyvMXdNRI48QkDiPEPBtScWkIuboyMdZd6GIzBPFLNnkEsjLkGhT8n1FhcMiFUEAWXbkWnL9geJRzsJch5xX6nCGC8XcGkOhrSJ/Yo9k9Ug2Q/OkZqUgJ2R3j3FdtuidJwO1bl+NSynJrk2Wx3ODxV6Lx2MszbYmY0PlvOxQgbMsz+fMcjsNhaFgnVLamD8kWIUKowEMcpYMTtc1726SsrJHubPUPIMh35rbHBTyLaPrvEaDx1BTWyY4Suoryk2CRxr6LcH9L0mxIMPum/zHp7LCRQaLTSyNueOq2ZdndfogS/VnNcdkVbD7so0VTtHuNNqz1ycFk5wlGLN8pc0em9VkMIH/ZsgxGBTVLDrkItvQfHOJN+AwmbPiVos9x1SgWixyvsliLXQ2O2srKt2uSqfRPKW2oNWUZcpxlIcWz/gJ7X+mPOeWEa3DSgqiLXK2Uc01Fxepdq9FrjMWZEuWxpGjyzplh8mpcBm6V3SrC6SMDfJbPH6Az/t+fcMNv75BFAdfpJM38Ougv7SfJLO79DJUxzlvIF9rYq84YK/BGwNbKyRqArEXUb8vwd6REnwvC+ORa/BYA+lLcDtOIr3PJXD+wqL1PAfbACpILRmmf6+sey4hJ/Po3y2nv5YxIWOLDYd0VHl6wUtpYodI08i/Ru4njWOZLtwYuPqmrh083KfvRQrJtMPI2LXeB5jc6NIkn3fdGIZ8oY5WB7WP29H1gHftWIyw87QHMoRZGdAtzv/2PS1LMps7me+4gejSpI8wBV5EAU55jMhAgmlOeFCSCQHnYXqY41ucY4BGcvX9EKOIOjEEWyS+Y+rzBiEaDCj5oDBfLodubiyDcyYaAp9igf/0+8EP3MtP/G0M2xGjBxPOTv9Ef5c/X9Dy/RjKdya0p6KBQNSvatSBtDPX3xWAclG2jZu+8QyNTkx2xaBNSzjzMbH+VheGOp2J1L/wJX+UkMHfEo4mE0k7mUeW8D2jtE9gC8SZU6DHNBDDfGzZ8A6KiHLlf2C0mdUHrxlQH/D8ueCqDgx1Mpoe9rGN/Sjx0kG2m5MOMiealD4N+tJq2vmX+fq484nwAJKqD9L3Y9Z5wZeMPpCeJ3j7wJ5TkJk2OJPoB6f2pMXKmeQgZTiZmTsC9skpNaH08v00ou/Lh42CiGzXwbZHM2tWfsS3plXMFmh3v84k6fH/Hsc9A/Cnb0TJPdEWoe+kwGcPqoOzerYxkxi7F36W3sETYBWuqZ/imvLwvRYH9w6Iu8BhYh7XgzrZFrb5TC2Q6WaZ3rGMPkCX0AeW3TH2lR5NS/edpvW8Qn+kd9OROY/+9s1H5rRdYoF/aQ+c64UHNJptWSqm0o0W0nOCkMk4H3SLVyX75tdcCqytwyESZFt85UFlIMIcDwR9ujUsEg+YeC3xoUtwtwjML47dFah2m98bCOreoI48QeWbBG/neucuCkQC18+lX+28h/5rzg14s3iOJ+9t9rS39D68XfrY5yB9/thSDO4qSWk7U8Pn/mNT5+M/aarY8mu+qTCybRnt38rzS5x49MpbNl/52HH9bivAsgmtmGTqgiMg6HHXY1aY5fX6He0/0tmh/WLzwpXhzsTcWyZnbF3aoL1swZNGC1nTTXps3TOeInHGwMaQMgSAAQ7AuI09bPJWAclCLcHqUO3EIb9+371H6eX0SfrXV1cJpOv5S6D+sBgOU7LqVSiBabDt6Ocnnn+a/m06r8OrOBca+f8FUcr9zjhX5CTaGg8rAjOvBoRg2AXumDR1z5o1UyJzws/2Wr98up88/aW11/EOFB8XtTVTBDJlTXhOhJKpBYfoF0PoF1AwBAoObT50KO3TLGJLB++pySS9p3buO2pHxoLDDZ+mwWE13SeDzpxAZc6MOn1XPKTfy+gJvL+zM9+Z6T/mLsDwltnSGbHWQ6y/+TduhNfNyHbRQPTIoh//PCIKMe654JHIOroVqtahHh25Eqro1nXHhMdT77yTOpE68U7qHeFx+WN6zx/onvffh4V/EFENodekboRb6DrhGrgx8917poyMP4SnGFCFH5TJsWOo7g96Mb0ZN7h++YPfFnklL8zjWKaK386MVrD6wbK07x7X1ezI8CuZ/cmIs4vtZnOc9nBvczbv1EAQYZk9hfq43cFs1gof036udnWxweCBueOHzLphj77r20f0O8q4MQcyLpaBpP/TkKZrF3Xq8ZSH4cLv9arJBLLoO7029Z3hgId9i8x2j+3hWJhv3NnjulJSnv5M2Wp31PNHkqPebhl4xp+EM0/s4njohol/27r1b3Q/vZ3uZyGxy+LKN+bn/Z3+NXb1xNEmk6nI6cz95SU//uKiXK2kPLiJPvPIuFunjA6HyhSn0vPLn0OgK8epuWrCd9Dr3+l7JBEO5Lvlx359GGZfXaRqg7OGiby4s8vykRcX5qlbTWaTIbvYbHPlOpsacj6qcTVYJ8/GEk3NJZGs3GDbqFxwRvxh57xZYduYQDg3MCWZc15fidybtIjNdh//TwL4ZrzoyzARWxxn7y6hZFffxcpwWk3v/+yvlChLzpyFiz+Fx+THaDUcYwccP/s8HcUIiPR6apQ45+yOY8c4DqVtSen95cHaJhPPusJznmcmV3XYyuQx/Pz/AAfdhq542o2QsWrDMBCGfyVOSjOUDn4AdSlJiY1sMCTZ0hQHQqcM6RyMahsSKVj2EChd+wgd+wZ9s7xDz4pKl0IrkO7T3a+73wZwhU8wnNcNHhwzDPDiuIMLvDvu4hYnxx4G7M5xD9fsyXGf8q+kZN4l3e7tq5YZfDw77tDcN8ddPOLDsQef+Y574Cxx3Kd8gQU0DjiiQokcBWpwDJFhRDGGQIQEY+IV6SQU0RwGezR0GpvBQh+OVZkXNR9mIx6LKBnzlZaKz82+MUaSZGmV0k7JqJOit1hKJasy04p4TcWcmu6wJRHWMm92W4LUimsbK1JIayskYxwz2r81PlciTBBgSvv7M5BqVae6yiWPQ8Fn/McAXaJJMA1a8/9wu7FFQ2Vtf4mwE0IbW2fYyMqUWnEholAIwf/u+QXtVlqxAAAAeNpt0meTFVUUheH7DhkJEgQJgpIFhdvn7NM9gxKGCZKzKGZyUHJGySAgSq7i5wrFfYdPdFXX+tRP9V61Wl2tt8//rdbh1vueV29eWl2tYXQxjOGMYCSjGM0YxvIB4xjPBCbyIZOYzBSm8hHTmM7HzGAms5jNJ8xhLp/yGfOYzwIWsojFLOFzlrKML/iS5aygTUUiExRqGrrpYSVf8TWrWM0a1tLLOvroZ4BBvmE9G9jIJjazha1sYzs72MkudvMte/iO79nLD/zIT/zML/zKb+xjPwc4yCEOc4SjHOM4v/MHJzjJKU5zhrOc4zwXuMglLnOFq/zJX1zjOje4yS1uc4e73ONv7vOAh/zDI/7lPx7zhKc84zkveDnqwsljg1W7bVZmMrMZZjFrszG7zZ63mfSSXtJLekkv6SW9pJf00pBX6VV6lV6lV+lVepVepVfpVXpJL+klvaSX9JJe6njZu7J3Ze/K3pW9K3tXbg9915id/wid0Amd0Amd0Amd0Il3TueesJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn7CfsJ+wn0h6SS/pZb2sl/WyXtbLelkv62W9rBd6oRd6oRd6oRd6oRd6oVf0il7RK3pFr+gVvaJX9IperVfr1Xq1Xq1X69V6tV6tV+s1eo1eo9foNXqNXtPxijsr7qy4s+LOijsr7qy0h75rzG6zx+w115l9Zr85YA520l0Wd1ncZXGXxV0Wd1ncZama1x+EcTsAAAAB//8AAnjaY2BgYGQAgosrjpwF0ZcUq9bCaABTzgdAAAA=") format("woff"),
+       url("./Genericons.ttf") format("truetype"),
+       url("./Genericons.svg#Genericons") format("svg");
+  font-weight: normal;
+  font-style: normal;
+}
+
+@media screen and (-webkit-min-device-pixel-ratio:0) {
+  @font-face {
+    font-family: "Genericons";
+    src: url("./Genericons.svg#Genericons") format("svg");
+  }
+}
+
+
+/**
+ * All Genericons
+ */
+
+.genericon {
+       font-size: 16px;
+       vertical-align: top;
+       text-align: center;
+       -moz-transition: color .1s ease-in 0;
+       -webkit-transition: color .1s ease-in 0;
+       display: inline-block;
+       font-family: "Genericons";
+       font-style: normal;
+       font-weight: normal;
+       font-variant: normal;
+       line-height: 1;
+       text-decoration: inherit;
+       text-transform: none;
+       -moz-osx-font-smoothing: grayscale;
+       -webkit-font-smoothing: antialiased;
+       speak: none;
+}
+
+
+/**
+ * Helper classes
+ */
+
+.genericon-rotate-90 {
+       -webkit-transform: rotate(90deg);
+       -moz-transform: rotate(90deg);
+       -ms-transform: rotate(90deg);
+       -o-transform: rotate(90deg);
+       transform: rotate(90deg);
+       filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
+}
+
+.genericon-rotate-180 {
+       -webkit-transform: rotate(180deg);
+       -moz-transform: rotate(180deg);
+       -ms-transform: rotate(180deg);
+       -o-transform: rotate(180deg);
+       transform: rotate(180deg);
+       filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
+}
+
+.genericon-rotate-270 {
+       -webkit-transform: rotate(270deg);
+       -moz-transform: rotate(270deg);
+       -ms-transform: rotate(270deg);
+       -o-transform: rotate(270deg);
+       transform: rotate(270deg);
+       filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
+}
+
+.genericon-flip-horizontal {
+       -webkit-transform: scale(-1, 1);
+       -moz-transform: scale(-1, 1);
+       -ms-transform: scale(-1, 1);
+       -o-transform: scale(-1, 1);
+       transform: scale(-1, 1);
+}
+
+.genericon-flip-vertical {
+       -webkit-transform: scale(1, -1);
+       -moz-transform: scale(1, -1);
+       -ms-transform: scale(1, -1);
+       -o-transform: scale(1, -1);
+       transform: scale(1, -1);
+}
+
+
+/**
+ * Individual icons
+ */
+
+.genericon-404:before { content: "\f423"; }
+.genericon-activity:before { content: "\f508"; }
+.genericon-anchor:before { content: "\f509"; }
+.genericon-aside:before { content: "\f101"; }
+.genericon-attachment:before { content: "\f416"; }
+.genericon-audio:before { content: "\f109"; }
+.genericon-bold:before { content: "\f471"; }
+.genericon-book:before { content: "\f444"; }
+.genericon-bug:before { content: "\f50a"; }
+.genericon-cart:before { content: "\f447"; }
+.genericon-category:before { content: "\f301"; }
+.genericon-chat:before { content: "\f108"; }
+.genericon-checkmark:before { content: "\f418"; }
+.genericon-close:before { content: "\f405"; }
+.genericon-close-alt:before { content: "\f406"; }
+.genericon-cloud:before { content: "\f426"; }
+.genericon-cloud-download:before { content: "\f440"; }
+.genericon-cloud-upload:before { content: "\f441"; }
+.genericon-code:before { content: "\f462"; }
+.genericon-codepen:before { content: "\f216"; }
+.genericon-cog:before { content: "\f445"; }
+.genericon-collapse:before { content: "\f432"; }
+.genericon-comment:before { content: "\f300"; }
+.genericon-day:before { content: "\f305"; }
+.genericon-digg:before { content: "\f221"; }
+.genericon-document:before { content: "\f443"; }
+.genericon-dot:before { content: "\f428"; }
+.genericon-downarrow:before { content: "\f502"; }
+.genericon-download:before { content: "\f50b"; }
+.genericon-draggable:before { content: "\f436"; }
+.genericon-dribbble:before { content: "\f201"; }
+.genericon-dropbox:before { content: "\f225"; }
+.genericon-dropdown:before { content: "\f433"; }
+.genericon-dropdown-left:before { content: "\f434"; }
+.genericon-edit:before { content: "\f411"; }
+.genericon-ellipsis:before { content: "\f476"; }
+.genericon-expand:before { content: "\f431"; }
+.genericon-external:before { content: "\f442"; }
+.genericon-facebook:before { content: "\f203"; }
+.genericon-facebook-alt:before { content: "\f204"; }
+.genericon-fastforward:before { content: "\f458"; }
+.genericon-feed:before { content: "\f413"; }
+.genericon-flag:before { content: "\f468"; }
+.genericon-flickr:before { content: "\f211"; }
+.genericon-foursquare:before { content: "\f226"; }
+.genericon-fullscreen:before { content: "\f474"; }
+.genericon-gallery:before { content: "\f103"; }
+.genericon-github:before { content: "\f200"; }
+.genericon-googleplus:before { content: "\f206"; }
+.genericon-googleplus-alt:before { content: "\f218"; }
+.genericon-handset:before { content: "\f50c"; }
+.genericon-heart:before { content: "\f461"; }
+.genericon-help:before { content: "\f457"; }
+.genericon-hide:before { content: "\f404"; }
+.genericon-hierarchy:before { content: "\f505"; }
+.genericon-home:before { content: "\f409"; }
+.genericon-image:before { content: "\f102"; }
+.genericon-info:before { content: "\f455"; }
+.genericon-instagram:before { content: "\f215"; }
+.genericon-italic:before { content: "\f472"; }
+.genericon-key:before { content: "\f427"; }
+.genericon-leftarrow:before { content: "\f503"; }
+.genericon-link:before { content: "\f107"; }
+.genericon-linkedin:before { content: "\f207"; }
+.genericon-linkedin-alt:before { content: "\f208"; }
+.genericon-location:before { content: "\f417"; }
+.genericon-lock:before { content: "\f470"; }
+.genericon-mail:before { content: "\f410"; }
+.genericon-maximize:before { content: "\f422"; }
+.genericon-menu:before { content: "\f419"; }
+.genericon-microphone:before { content: "\f50d"; }
+.genericon-minimize:before { content: "\f421"; }
+.genericon-minus:before { content: "\f50e"; }
+.genericon-month:before { content: "\f307"; }
+.genericon-move:before { content: "\f50f"; }
+.genericon-next:before { content: "\f429"; }
+.genericon-notice:before { content: "\f456"; }
+.genericon-paintbrush:before { content: "\f506"; }
+.genericon-path:before { content: "\f219"; }
+.genericon-pause:before { content: "\f448"; }
+.genericon-phone:before { content: "\f437"; }
+.genericon-picture:before { content: "\f473"; }
+.genericon-pinned:before { content: "\f308"; }
+.genericon-pinterest:before { content: "\f209"; }
+.genericon-pinterest-alt:before { content: "\f210"; }
+.genericon-play:before { content: "\f452"; }
+.genericon-plugin:before { content: "\f439"; }
+.genericon-plus:before { content: "\f510"; }
+.genericon-pocket:before { content: "\f224"; }
+.genericon-polldaddy:before { content: "\f217"; }
+.genericon-portfolio:before { content: "\f460"; }
+.genericon-previous:before { content: "\f430"; }
+.genericon-print:before { content: "\f469"; }
+.genericon-quote:before { content: "\f106"; }
+.genericon-rating-empty:before { content: "\f511"; }
+.genericon-rating-full:before { content: "\f512"; }
+.genericon-rating-half:before { content: "\f513"; }
+.genericon-reddit:before { content: "\f222"; }
+.genericon-refresh:before { content: "\f420"; }
+.genericon-reply:before { content: "\f412"; }
+.genericon-reply-alt:before { content: "\f466"; }
+.genericon-reply-single:before { content: "\f467"; }
+.genericon-rewind:before { content: "\f459"; }
+.genericon-rightarrow:before { content: "\f501"; }
+.genericon-search:before { content: "\f400"; }
+.genericon-send-to-phone:before { content: "\f438"; }
+.genericon-send-to-tablet:before { content: "\f454"; }
+.genericon-share:before { content: "\f415"; }
+.genericon-show:before { content: "\f403"; }
+.genericon-shuffle:before { content: "\f514"; }
+.genericon-sitemap:before { content: "\f507"; }
+.genericon-skip-ahead:before { content: "\f451"; }
+.genericon-skip-back:before { content: "\f450"; }
+.genericon-skype:before { content: "\f220"; }
+.genericon-spam:before { content: "\f424"; }
+.genericon-spotify:before { content: "\f515"; }
+.genericon-standard:before { content: "\f100"; }
+.genericon-star:before { content: "\f408"; }
+.genericon-status:before { content: "\f105"; }
+.genericon-stop:before { content: "\f449"; }
+.genericon-stumbleupon:before { content: "\f223"; }
+.genericon-subscribe:before { content: "\f463"; }
+.genericon-subscribed:before { content: "\f465"; }
+.genericon-summary:before { content: "\f425"; }
+.genericon-tablet:before { content: "\f453"; }
+.genericon-tag:before { content: "\f302"; }
+.genericon-time:before { content: "\f303"; }
+.genericon-top:before { content: "\f435"; }
+.genericon-trash:before { content: "\f407"; }
+.genericon-tumblr:before { content: "\f214"; }
+.genericon-twitch:before { content: "\f516"; }
+.genericon-twitter:before { content: "\f202"; }
+.genericon-unapprove:before { content: "\f446"; }
+.genericon-unsubscribe:before { content: "\f464"; }
+.genericon-unzoom:before { content: "\f401"; }
+.genericon-uparrow:before { content: "\f500"; }
+.genericon-user:before { content: "\f304"; }
+.genericon-video:before { content: "\f104"; }
+.genericon-videocamera:before { content: "\f517"; }
+.genericon-vimeo:before { content: "\f212"; }
+.genericon-warning:before { content: "\f414"; }
+.genericon-website:before { content: "\f475"; }
+.genericon-week:before { content: "\f306"; }
+.genericon-wordpress:before { content: "\f205"; }
+.genericon-xpost:before { content: "\f504"; }
+.genericon-youtube:before { content: "\f213"; }
+.genericon-zoom:before { content: "\f402"; }
+
+
+
+
diff --git a/wp-content/themes/twentysixteen/header.php b/wp-content/themes/twentysixteen/header.php
new file mode 100644 (file)
index 0000000..f20e130
--- /dev/null
@@ -0,0 +1,97 @@
+<?php
+/**
+ * The template for displaying the header
+ *
+ * Displays all of the head element and everything up until the "site-content" div.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+?><!DOCTYPE html>
+<html <?php language_attributes(); ?> class="no-js">
+<head>
+       <meta charset="<?php bloginfo( 'charset' ); ?>">
+       <meta name="viewport" content="width=device-width, initial-scale=1">
+       <link rel="profile" href="http://gmpg.org/xfn/11">
+       <?php if ( is_singular() && pings_open( get_queried_object() ) ) : ?>
+       <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
+       <?php endif; ?>
+       <?php wp_head(); ?>
+</head>
+
+<body <?php body_class(); ?>>
+<div id="page" class="site">
+       <div class="site-inner">
+               <a class="skip-link screen-reader-text" href="#content"><?php _e( 'Skip to content', 'twentysixteen' ); ?></a>
+
+               <header id="masthead" class="site-header" role="banner">
+                       <div class="site-header-main">
+                               <div class="site-branding">
+                                       <?php if ( is_front_page() && is_home() ) : ?>
+                                               <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
+                                       <?php else : ?>
+                                               <p class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></p>
+                                       <?php endif;
+
+                                       $description = get_bloginfo( 'description', 'display' );
+                                       if ( $description || is_customize_preview() ) : ?>
+                                               <p class="site-description"><?php echo $description; ?></p>
+                                       <?php endif; ?>
+                               </div><!-- .site-branding -->
+
+                               <?php if ( has_nav_menu( 'primary' ) || has_nav_menu( 'social' ) ) : ?>
+                                       <button id="menu-toggle" class="menu-toggle"><?php _e( 'Menu', 'twentysixteen' ); ?></button>
+
+                                       <div id="site-header-menu" class="site-header-menu">
+                                               <?php if ( has_nav_menu( 'primary' ) ) : ?>
+                                                       <nav id="site-navigation" class="main-navigation" role="navigation" aria-label="<?php _e( 'Primary Menu', 'twentysixteen' ); ?>">
+                                                               <?php
+                                                                       wp_nav_menu( array(
+                                                                               'theme_location' => 'primary',
+                                                                               'menu_class'     => 'primary-menu',
+                                                                        ) );
+                                                               ?>
+                                                       </nav><!-- .main-navigation -->
+                                               <?php endif; ?>
+
+                                               <?php if ( has_nav_menu( 'social' ) ) : ?>
+                                                       <nav id="social-navigation" class="social-navigation" role="navigation" aria-label="<?php _e( 'Social Links Menu', 'twentysixteen' ); ?>">
+                                                               <?php
+                                                                       wp_nav_menu( array(
+                                                                               'theme_location' => 'social',
+                                                                               'menu_class'     => 'social-links-menu',
+                                                                               'depth'          => 1,
+                                                                               'link_before'    => '<span class="screen-reader-text">',
+                                                                               'link_after'     => '</span>',
+                                                                       ) );
+                                                               ?>
+                                                       </nav><!-- .social-navigation -->
+                                               <?php endif; ?>
+                                       </div><!-- .site-header-menu -->
+                               <?php endif; ?>
+                       </div><!-- .site-header-main -->
+
+                       <?php if ( get_header_image() ) : ?>
+                               <?php
+                                       /**
+                                        * Filter the default twentysixteen custom header sizes attribute.
+                                        *
+                                        * @since Twenty Sixteen 1.0
+                                        *
+                                        * @param string $custom_header_sizes sizes attribute
+                                        * for Custom Header. Default '(max-width: 709px) 85vw,
+                                        * (max-width: 909px) 81vw, (max-width: 1362px) 88vw, 1200px'.
+                                        */
+                                       $custom_header_sizes = apply_filters( 'twentysixteen_custom_header_sizes', '(max-width: 709px) 85vw, (max-width: 909px) 81vw, (max-width: 1362px) 88vw, 1200px' );
+                               ?>
+                               <div class="header-image">
+                                       <a href="<?php echo esc_url( home_url( '/' ) ); ?>" rel="home">
+                                               <img src="<?php header_image(); ?>" srcset="<?php echo esc_attr( wp_get_attachment_image_srcset( get_custom_header()->attachment_id ) ); ?>" sizes="<?php echo esc_attr( $custom_header_sizes ); ?>" width="<?php echo esc_attr( get_custom_header()->width ); ?>" height="<?php echo esc_attr( get_custom_header()->height ); ?>" alt="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>">
+                                       </a>
+                               </div>
+                       <?php endif; // End header image check. ?>
+               </header><!-- .site-header -->
+
+               <div id="content" class="site-content">
diff --git a/wp-content/themes/twentysixteen/image.php b/wp-content/themes/twentysixteen/image.php
new file mode 100644 (file)
index 0000000..434b0b0
--- /dev/null
@@ -0,0 +1,112 @@
+<?php
+/**
+ * The template for displaying image attachments
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="content-area">
+               <main id="main" class="site-main" role="main">
+
+                       <?php
+                               // Start the loop.
+                               while ( have_posts() ) : the_post();
+                       ?>
+
+                               <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+
+                                       <nav id="image-navigation" class="navigation image-navigation">
+                                               <div class="nav-links">
+                                                       <div class="nav-previous"><?php previous_image_link( false, __( 'Previous Image', 'twentysixteen' ) ); ?></div>
+                                                       <div class="nav-next"><?php next_image_link( false, __( 'Next Image', 'twentysixteen' ) ); ?></div>
+                                               </div><!-- .nav-links -->
+                                       </nav><!-- .image-navigation -->
+
+                                       <header class="entry-header">
+                                               <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
+                                       </header><!-- .entry-header -->
+
+                                       <div class="entry-content">
+
+                                               <div class="entry-attachment">
+                                                       <?php
+                                                               /**
+                                                                * Filter the default twentysixteen image attachment size.
+                                                                *
+                                                                * @since Twenty Sixteen 1.0
+                                                                *
+                                                                * @param string $image_size Image size. Default 'large'.
+                                                                */
+                                                               $image_size = apply_filters( 'twentysixteen_attachment_size', 'large' );
+
+                                                               echo wp_get_attachment_image( get_the_ID(), $image_size );
+                                                       ?>
+
+                                                       <?php twentysixteen_excerpt( 'entry-caption' ); ?>
+
+                                               </div><!-- .entry-attachment -->
+
+                                               <?php
+                                                       the_content();
+                                                       wp_link_pages( array(
+                                                               'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentysixteen' ) . '</span>',
+                                                               'after'       => '</div>',
+                                                               'link_before' => '<span>',
+                                                               'link_after'  => '</span>',
+                                                               'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>%',
+                                                               'separator'   => '<span class="screen-reader-text">, </span>',
+                                                       ) );
+                                               ?>
+                                       </div><!-- .entry-content -->
+
+                                       <footer class="entry-footer">
+                                               <?php twentysixteen_entry_meta(); ?>
+                                               <?php
+                                                       // Retrieve attachment metadata.
+                                                       $metadata = wp_get_attachment_metadata();
+                                                       if ( $metadata ) {
+                                                               printf( '<span class="full-size-link"><span class="screen-reader-text">%1$s </span><a href="%2$s">%3$s &times; %4$s</a></span>',
+                                                                       esc_html_x( 'Full size', 'Used before full size attachment link.', 'twentysixteen' ),
+                                                                       esc_url( wp_get_attachment_url() ),
+                                                                       absint( $metadata['width'] ),
+                                                                       absint( $metadata['height'] )
+                                                               );
+                                                       }
+                                               ?>
+                                               <?php
+                                                       edit_post_link(
+                                                               sprintf(
+                                                                       /* translators: %s: Name of current post */
+                                                                       __( 'Edit<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
+                                                                       get_the_title()
+                                                               ),
+                                                               '<span class="edit-link">',
+                                                               '</span>'
+                                                       );
+                                               ?>
+                                       </footer><!-- .entry-footer -->
+                               </article><!-- #post-## -->
+
+                               <?php
+                                       // If comments are open or we have at least one comment, load up the comment template.
+                                       if ( comments_open() || get_comments_number() ) {
+                                               comments_template();
+                                       }
+
+                                       // Parent post navigation.
+                                       the_post_navigation( array(
+                                               'prev_text' => _x( '<span class="meta-nav">Published in</span><span class="post-title">%title</span>', 'Parent post link', 'twentysixteen' ),
+                                       ) );
+                               // End the loop.
+                               endwhile;
+                       ?>
+
+               </main><!-- .site-main -->
+       </div><!-- .content-area -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
diff --git a/wp-content/themes/twentysixteen/inc/back-compat.php b/wp-content/themes/twentysixteen/inc/back-compat.php
new file mode 100644 (file)
index 0000000..7ed4240
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Twenty Sixteen back compat functionality
+ *
+ * Prevents Twenty Sixteen from running on WordPress versions prior to 4.4,
+ * since this theme is not meant to be backward compatible beyond that and
+ * relies on many newer functions and markup changes introduced in 4.4.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+/**
+ * Prevent switching to Twenty Sixteen on old versions of WordPress.
+ *
+ * Switches to the default theme.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_switch_theme() {
+       switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );
+
+       unset( $_GET['activated'] );
+
+       add_action( 'admin_notices', 'twentysixteen_upgrade_notice' );
+}
+add_action( 'after_switch_theme', 'twentysixteen_switch_theme' );
+
+/**
+ * Adds a message for unsuccessful theme switch.
+ *
+ * Prints an update nag after an unsuccessful attempt to switch to
+ * Twenty Sixteen on WordPress versions prior to 4.4.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @global string $wp_version WordPress version.
+ */
+function twentysixteen_upgrade_notice() {
+       $message = sprintf( __( 'Twenty Sixteen requires at least WordPress version 4.4. You are running version %s. Please upgrade and try again.', 'twentysixteen' ), $GLOBALS['wp_version'] );
+       printf( '<div class="error"><p>%s</p></div>', $message );
+}
+
+/**
+ * Prevents the Customizer from being loaded on WordPress versions prior to 4.4.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @global string $wp_version WordPress version.
+ */
+function twentysixteen_customize() {
+       wp_die( sprintf( __( 'Twenty Sixteen requires at least WordPress version 4.4. You are running version %s. Please upgrade and try again.', 'twentysixteen' ), $GLOBALS['wp_version'] ), '', array(
+               'back_link' => true,
+       ) );
+}
+add_action( 'load-customize.php', 'twentysixteen_customize' );
+
+/**
+ * Prevents the Theme Preview from being loaded on WordPress versions prior to 4.4.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @global string $wp_version WordPress version.
+ */
+function twentysixteen_preview() {
+       if ( isset( $_GET['preview'] ) ) {
+               wp_die( sprintf( __( 'Twenty Sixteen requires at least WordPress version 4.4. You are running version %s. Please upgrade and try again.', 'twentysixteen' ), $GLOBALS['wp_version'] ) );
+       }
+}
+add_action( 'template_redirect', 'twentysixteen_preview' );
diff --git a/wp-content/themes/twentysixteen/inc/customizer.php b/wp-content/themes/twentysixteen/inc/customizer.php
new file mode 100644 (file)
index 0000000..bad570b
--- /dev/null
@@ -0,0 +1,1128 @@
+<?php
+/**
+ * Twenty Sixteen Customizer functionality
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+/**
+ * Sets up the WordPress core custom header and custom background features.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @see twentysixteen_header_style()
+ */
+function twentysixteen_custom_header_and_background() {
+       $color_scheme             = twentysixteen_get_color_scheme();
+       $default_background_color = trim( $color_scheme[0], '#' );
+       $default_text_color       = trim( $color_scheme[3], '#' );
+
+       /**
+        * Filter the arguments used when adding 'custom-background' support in Twenty Sixteen.
+        *
+        * @since Twenty Sixteen 1.0
+        *
+        * @param array $args {
+        *     An array of custom-background support arguments.
+        *
+        *     @type string $default-color Default color of the background.
+        * }
+        */
+       add_theme_support( 'custom-background', apply_filters( 'twentysixteen_custom_background_args', array(
+               'default-color' => $default_background_color,
+       ) ) );
+
+       /**
+        * Filter the arguments used when adding 'custom-header' support in Twenty Sixteen.
+        *
+        * @since Twenty Sixteen 1.0
+        *
+        * @param array $args {
+        *     An array of custom-header support arguments.
+        *
+        *     @type string $default-text-color Default color of the header text.
+        *     @type int      $width            Width in pixels of the custom header image. Default 1200.
+        *     @type int      $height           Height in pixels of the custom header image. Default 280.
+        *     @type bool     $flex-height      Whether to allow flexible-height header images. Default true.
+        *     @type callable $wp-head-callback Callback function used to style the header image and text
+        *                                      displayed on the blog.
+        * }
+        */
+       add_theme_support( 'custom-header', apply_filters( 'twentysixteen_custom_header_args', array(
+               'default-text-color'     => $default_text_color,
+               'width'                  => 1200,
+               'height'                 => 280,
+               'flex-height'            => true,
+               'wp-head-callback'       => 'twentysixteen_header_style',
+       ) ) );
+}
+add_action( 'after_setup_theme', 'twentysixteen_custom_header_and_background' );
+
+if ( ! function_exists( 'twentysixteen_header_style' ) ) :
+/**
+ * Styles the header text displayed on the site.
+ *
+ * Create your own twentysixteen_header_style() function to override in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @see twentysixteen_custom_header_and_background().
+ */
+function twentysixteen_header_style() {
+       // If the header text option is untouched, let's bail.
+       if ( display_header_text() ) {
+               return;
+       }
+
+       // If the header text has been hidden.
+       ?>
+       <style type="text/css" id="twentysixteen-header-css">
+               .site-branding {
+                       margin: 0 auto 0 0;
+               }
+
+               .site-branding .site-title,
+               .site-description {
+                       clip: rect(1px, 1px, 1px, 1px);
+                       position: absolute;
+               }
+       </style>
+       <?php
+}
+endif; // twentysixteen_header_style
+
+/**
+ * Adds postMessage support for site title and description for the Customizer.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @param WP_Customize_Manager $wp_customize The Customizer object.
+ */
+function twentysixteen_customize_register( $wp_customize ) {
+       $color_scheme = twentysixteen_get_color_scheme();
+
+       $wp_customize->get_setting( 'blogname' )->transport         = 'postMessage';
+       $wp_customize->get_setting( 'blogdescription' )->transport  = 'postMessage';
+
+       // Add color scheme setting and control.
+       $wp_customize->add_setting( 'color_scheme', array(
+               'default'           => 'default',
+               'sanitize_callback' => 'twentysixteen_sanitize_color_scheme',
+               'transport'         => 'postMessage',
+       ) );
+
+       $wp_customize->add_control( 'color_scheme', array(
+               'label'    => __( 'Base Color Scheme', 'twentysixteen' ),
+               'section'  => 'colors',
+               'type'     => 'select',
+               'choices'  => twentysixteen_get_color_scheme_choices(),
+               'priority' => 1,
+       ) );
+
+       // Add page background color setting and control.
+       $wp_customize->add_setting( 'page_background_color', array(
+               'default'           => $color_scheme[1],
+               'sanitize_callback' => 'sanitize_hex_color',
+               'transport'         => 'postMessage',
+       ) );
+
+       $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'page_background_color', array(
+               'label'       => __( 'Page Background Color', 'twentysixteen' ),
+               'section'     => 'colors',
+       ) ) );
+
+       // Remove the core header textcolor control, as it shares the main text color.
+       $wp_customize->remove_control( 'header_textcolor' );
+
+       // Add link color setting and control.
+       $wp_customize->add_setting( 'link_color', array(
+               'default'           => $color_scheme[2],
+               'sanitize_callback' => 'sanitize_hex_color',
+               'transport'         => 'postMessage',
+       ) );
+
+       $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array(
+               'label'       => __( 'Link Color', 'twentysixteen' ),
+               'section'     => 'colors',
+       ) ) );
+
+       // Add main text color setting and control.
+       $wp_customize->add_setting( 'main_text_color', array(
+               'default'           => $color_scheme[3],
+               'sanitize_callback' => 'sanitize_hex_color',
+               'transport'         => 'postMessage',
+       ) );
+
+       $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'main_text_color', array(
+               'label'       => __( 'Main Text Color', 'twentysixteen' ),
+               'section'     => 'colors',
+       ) ) );
+
+       // Add secondary text color setting and control.
+       $wp_customize->add_setting( 'secondary_text_color', array(
+               'default'           => $color_scheme[4],
+               'sanitize_callback' => 'sanitize_hex_color',
+               'transport'         => 'postMessage',
+       ) );
+
+       $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'secondary_text_color', array(
+               'label'       => __( 'Secondary Text Color', 'twentysixteen' ),
+               'section'     => 'colors',
+       ) ) );
+}
+add_action( 'customize_register', 'twentysixteen_customize_register', 11 );
+
+/**
+ * Registers color schemes for Twenty Sixteen.
+ *
+ * Can be filtered with {@see 'twentysixteen_color_schemes'}.
+ *
+ * The order of colors in a colors array:
+ * 1. Main Background Color.
+ * 2. Page Background Color.
+ * 3. Link Color.
+ * 4. Main Text Color.
+ * 5. Secondary Text Color.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @return array An associative array of color scheme options.
+ */
+function twentysixteen_get_color_schemes() {
+       /**
+        * Filter the color schemes registered for use with Twenty Sixteen.
+        *
+        * The default schemes include 'default', 'dark', 'gray', 'red', and 'yellow'.
+        *
+        * @since Twenty Sixteen 1.0
+        *
+        * @param array $schemes {
+        *     Associative array of color schemes data.
+        *
+        *     @type array $slug {
+        *         Associative array of information for setting up the color scheme.
+        *
+        *         @type string $label  Color scheme label.
+        *         @type array  $colors HEX codes for default colors prepended with a hash symbol ('#').
+        *                              Colors are defined in the following order: Main background, page
+        *                              background, link, main text, secondary text.
+        *     }
+        * }
+        */
+       return apply_filters( 'twentysixteen_color_schemes', array(
+               'default' => array(
+                       'label'  => __( 'Default', 'twentysixteen' ),
+                       'colors' => array(
+                               '#1a1a1a',
+                               '#ffffff',
+                               '#007acc',
+                               '#1a1a1a',
+                               '#686868',
+                       ),
+               ),
+               'dark' => array(
+                       'label'  => __( 'Dark', 'twentysixteen' ),
+                       'colors' => array(
+                               '#262626',
+                               '#1a1a1a',
+                               '#9adffd',
+                               '#e5e5e5',
+                               '#c1c1c1',
+                       ),
+               ),
+               'gray' => array(
+                       'label'  => __( 'Gray', 'twentysixteen' ),
+                       'colors' => array(
+                               '#616a73',
+                               '#4d545c',
+                               '#c7c7c7',
+                               '#f2f2f2',
+                               '#f2f2f2',
+                       ),
+               ),
+               'red' => array(
+                       'label'  => __( 'Red', 'twentysixteen' ),
+                       'colors' => array(
+                               '#ffffff',
+                               '#ff675f',
+                               '#640c1f',
+                               '#402b30',
+                               '#402b30',
+                       ),
+               ),
+               'yellow' => array(
+                       'label'  => __( 'Yellow', 'twentysixteen' ),
+                       'colors' => array(
+                               '#3b3721',
+                               '#ffef8e',
+                               '#774e24',
+                               '#3b3721',
+                               '#5b4d3e',
+                       ),
+               ),
+       ) );
+}
+
+if ( ! function_exists( 'twentysixteen_get_color_scheme' ) ) :
+/**
+ * Retrieves the current Twenty Sixteen color scheme.
+ *
+ * Create your own twentysixteen_get_color_scheme() function to override in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @return array An associative array of either the current or default color scheme HEX values.
+ */
+function twentysixteen_get_color_scheme() {
+       $color_scheme_option = get_theme_mod( 'color_scheme', 'default' );
+       $color_schemes       = twentysixteen_get_color_schemes();
+
+       if ( array_key_exists( $color_scheme_option, $color_schemes ) ) {
+               return $color_schemes[ $color_scheme_option ]['colors'];
+       }
+
+       return $color_schemes['default']['colors'];
+}
+endif; // twentysixteen_get_color_scheme
+
+if ( ! function_exists( 'twentysixteen_get_color_scheme_choices' ) ) :
+/**
+ * Retrieves an array of color scheme choices registered for Twenty Sixteen.
+ *
+ * Create your own twentysixteen_get_color_scheme_choices() function to override
+ * in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @return array Array of color schemes.
+ */
+function twentysixteen_get_color_scheme_choices() {
+       $color_schemes                = twentysixteen_get_color_schemes();
+       $color_scheme_control_options = array();
+
+       foreach ( $color_schemes as $color_scheme => $value ) {
+               $color_scheme_control_options[ $color_scheme ] = $value['label'];
+       }
+
+       return $color_scheme_control_options;
+}
+endif; // twentysixteen_get_color_scheme_choices
+
+
+if ( ! function_exists( 'twentysixteen_sanitize_color_scheme' ) ) :
+/**
+ * Handles sanitization for Twenty Sixteen color schemes.
+ *
+ * Create your own twentysixteen_sanitize_color_scheme() function to override
+ * in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @param string $value Color scheme name value.
+ * @return string Color scheme name.
+ */
+function twentysixteen_sanitize_color_scheme( $value ) {
+       $color_schemes = twentysixteen_get_color_scheme_choices();
+
+       if ( ! array_key_exists( $value, $color_schemes ) ) {
+               return 'default';
+       }
+
+       return $value;
+}
+endif; // twentysixteen_sanitize_color_scheme
+
+/**
+ * Enqueues front-end CSS for color scheme.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @see wp_add_inline_style()
+ */
+function twentysixteen_color_scheme_css() {
+       $color_scheme_option = get_theme_mod( 'color_scheme', 'default' );
+
+       // Don't do anything if the default color scheme is selected.
+       if ( 'default' === $color_scheme_option ) {
+               return;
+       }
+
+       $color_scheme = twentysixteen_get_color_scheme();
+
+       // Convert main text hex color to rgba.
+       $color_textcolor_rgb = twentysixteen_hex2rgb( $color_scheme[3] );
+
+       // If the rgba values are empty return early.
+       if ( empty( $color_textcolor_rgb ) ) {
+               return;
+       }
+
+       // If we get this far, we have a custom color scheme.
+       $colors = array(
+               'background_color'      => $color_scheme[0],
+               'page_background_color' => $color_scheme[1],
+               'link_color'            => $color_scheme[2],
+               'main_text_color'       => $color_scheme[3],
+               'secondary_text_color'  => $color_scheme[4],
+               'border_color'          => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.2)', $color_textcolor_rgb ),
+
+       );
+
+       $color_scheme_css = twentysixteen_get_color_scheme_css( $colors );
+
+       wp_add_inline_style( 'twentysixteen-style', $color_scheme_css );
+}
+add_action( 'wp_enqueue_scripts', 'twentysixteen_color_scheme_css' );
+
+/**
+ * Binds the JS listener to make Customizer color_scheme control.
+ *
+ * Passes color scheme data as colorScheme global.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_customize_control_js() {
+       wp_enqueue_script( 'color-scheme-control', get_template_directory_uri() . '/js/color-scheme-control.js', array( 'customize-controls', 'iris', 'underscore', 'wp-util' ), '20150825', true );
+       wp_localize_script( 'color-scheme-control', 'colorScheme', twentysixteen_get_color_schemes() );
+}
+add_action( 'customize_controls_enqueue_scripts', 'twentysixteen_customize_control_js' );
+
+/**
+ * Binds JS handlers to make the Customizer preview reload changes asynchronously.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_customize_preview_js() {
+       wp_enqueue_script( 'twentysixteen-customize-preview', get_template_directory_uri() . '/js/customize-preview.js', array( 'customize-preview' ), '20150825', true );
+}
+add_action( 'customize_preview_init', 'twentysixteen_customize_preview_js' );
+
+/**
+ * Returns CSS for the color schemes.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @param array $colors Color scheme colors.
+ * @return string Color scheme CSS.
+ */
+function twentysixteen_get_color_scheme_css( $colors ) {
+       $colors = wp_parse_args( $colors, array(
+               'background_color'      => '',
+               'page_background_color' => '',
+               'link_color'            => '',
+               'main_text_color'       => '',
+               'secondary_text_color'  => '',
+               'border_color'          => '',
+       ) );
+
+       return <<<CSS
+       /* Color Scheme */
+
+       /* Background Color */
+       body {
+               background-color: {$colors['background_color']};
+       }
+
+       /* Page Background Color */
+       .site {
+               background-color: {$colors['page_background_color']};
+       }
+
+       mark,
+       ins,
+       button,
+       button[disabled]:hover,
+       button[disabled]:focus,
+       input[type="button"],
+       input[type="button"][disabled]:hover,
+       input[type="button"][disabled]:focus,
+       input[type="reset"],
+       input[type="reset"][disabled]:hover,
+       input[type="reset"][disabled]:focus,
+       input[type="submit"],
+       input[type="submit"][disabled]:hover,
+       input[type="submit"][disabled]:focus,
+       .menu-toggle.toggled-on,
+       .menu-toggle.toggled-on:hover,
+       .menu-toggle.toggled-on:focus,
+       .pagination .prev,
+       .pagination .next,
+       .pagination .prev:hover,
+       .pagination .prev:focus,
+       .pagination .next:hover,
+       .pagination .next:focus,
+       .pagination .nav-links:before,
+       .pagination .nav-links:after,
+       .widget_calendar tbody a,
+       .widget_calendar tbody a:hover,
+       .widget_calendar tbody a:focus,
+       .page-links a,
+       .page-links a:hover,
+       .page-links a:focus {
+               color: {$colors['page_background_color']};
+       }
+
+       /* Link Color */
+       .menu-toggle:hover,
+       .menu-toggle:focus,
+       a,
+       .main-navigation a:hover,
+       .main-navigation a:focus,
+       .dropdown-toggle:hover,
+       .dropdown-toggle:focus,
+       .social-navigation a:hover:before,
+       .social-navigation a:focus:before,
+       .post-navigation a:hover .post-title,
+       .post-navigation a:focus .post-title,
+       .tagcloud a:hover,
+       .tagcloud a:focus,
+       .site-branding .site-title a:hover,
+       .site-branding .site-title a:focus,
+       .entry-title a:hover,
+       .entry-title a:focus,
+       .entry-footer a:hover,
+       .entry-footer a:focus,
+       .comment-metadata a:hover,
+       .comment-metadata a:focus,
+       .pingback .comment-edit-link:hover,
+       .pingback .comment-edit-link:focus,
+       .comment-reply-link,
+       .comment-reply-link:hover,
+       .comment-reply-link:focus,
+       .required,
+       .site-info a:hover,
+       .site-info a:focus {
+               color: {$colors['link_color']};
+       }
+
+       mark,
+       ins,
+       button:hover,
+       button:focus,
+       input[type="button"]:hover,
+       input[type="button"]:focus,
+       input[type="reset"]:hover,
+       input[type="reset"]:focus,
+       input[type="submit"]:hover,
+       input[type="submit"]:focus,
+       .pagination .prev:hover,
+       .pagination .prev:focus,
+       .pagination .next:hover,
+       .pagination .next:focus,
+       .widget_calendar tbody a,
+       .page-links a:hover,
+       .page-links a:focus {
+               background-color: {$colors['link_color']};
+       }
+
+       input[type="text"]:focus,
+       input[type="email"]:focus,
+       input[type="url"]:focus,
+       input[type="password"]:focus,
+       input[type="search"]:focus,
+       textarea:focus,
+       .tagcloud a:hover,
+       .tagcloud a:focus,
+       .menu-toggle:hover,
+       .menu-toggle:focus {
+               border-color: {$colors['link_color']};
+       }
+
+       /* Main Text Color */
+       body,
+       blockquote cite,
+       blockquote small,
+       .main-navigation a,
+       .menu-toggle,
+       .dropdown-toggle,
+       .social-navigation a,
+       .post-navigation a,
+       .pagination a:hover,
+       .pagination a:focus,
+       .widget-title a,
+       .site-branding .site-title a,
+       .entry-title a,
+       .page-links > .page-links-title,
+       .comment-author,
+       .comment-reply-title small a:hover,
+       .comment-reply-title small a:focus {
+               color: {$colors['main_text_color']};
+       }
+
+       blockquote,
+       .menu-toggle.toggled-on,
+       .menu-toggle.toggled-on:hover,
+       .menu-toggle.toggled-on:focus,
+       .post-navigation,
+       .post-navigation div + div,
+       .pagination,
+       .widget,
+       .page-header,
+       .page-links a,
+       .comments-title,
+       .comment-reply-title {
+               border-color: {$colors['main_text_color']};
+       }
+
+       button,
+       button[disabled]:hover,
+       button[disabled]:focus,
+       input[type="button"],
+       input[type="button"][disabled]:hover,
+       input[type="button"][disabled]:focus,
+       input[type="reset"],
+       input[type="reset"][disabled]:hover,
+       input[type="reset"][disabled]:focus,
+       input[type="submit"],
+       input[type="submit"][disabled]:hover,
+       input[type="submit"][disabled]:focus,
+       .menu-toggle.toggled-on,
+       .menu-toggle.toggled-on:hover,
+       .menu-toggle.toggled-on:focus,
+       .pagination:before,
+       .pagination:after,
+       .pagination .prev,
+       .pagination .next,
+       .page-links a {
+               background-color: {$colors['main_text_color']};
+       }
+
+       /* Secondary Text Color */
+
+       /**
+        * IE8 and earlier will drop any block with CSS3 selectors.
+        * Do not combine these styles with the next block.
+        */
+       body:not(.search-results) .entry-summary {
+               color: {$colors['secondary_text_color']};
+       }
+
+       blockquote,
+       .post-password-form label,
+       a:hover,
+       a:focus,
+       a:active,
+       .post-navigation .meta-nav,
+       .image-navigation,
+       .comment-navigation,
+       .widget_recent_entries .post-date,
+       .widget_rss .rss-date,
+       .widget_rss cite,
+       .site-description,
+       .author-bio,
+       .entry-footer,
+       .entry-footer a,
+       .sticky-post,
+       .taxonomy-description,
+       .entry-caption,
+       .comment-metadata,
+       .pingback .edit-link,
+       .comment-metadata a,
+       .pingback .comment-edit-link,
+       .comment-form label,
+       .comment-notes,
+       .comment-awaiting-moderation,
+       .logged-in-as,
+       .form-allowed-tags,
+       .site-info,
+       .site-info a,
+       .wp-caption .wp-caption-text,
+       .gallery-caption,
+       .widecolumn label,
+       .widecolumn .mu_register label {
+               color: {$colors['secondary_text_color']};
+       }
+
+       .widget_calendar tbody a:hover,
+       .widget_calendar tbody a:focus {
+               background-color: {$colors['secondary_text_color']};
+       }
+
+       /* Border Color */
+       fieldset,
+       pre,
+       abbr,
+       acronym,
+       table,
+       th,
+       td,
+       input[type="text"],
+       input[type="email"],
+       input[type="url"],
+       input[type="password"],
+       input[type="search"],
+       textarea,
+       .main-navigation li,
+       .main-navigation .primary-menu,
+       .menu-toggle,
+       .dropdown-toggle:after,
+       .social-navigation a,
+       .image-navigation,
+       .comment-navigation,
+       .tagcloud a,
+       .entry-content,
+       .entry-summary,
+       .page-links a,
+       .page-links > span,
+       .comment-list article,
+       .comment-list .pingback,
+       .comment-list .trackback,
+       .comment-reply-link,
+       .no-comments,
+       .widecolumn .mu_register .mu_alert {
+               border-color: {$colors['main_text_color']}; /* Fallback for IE7 and IE8 */
+               border-color: {$colors['border_color']};
+       }
+
+       hr,
+       code {
+               background-color: {$colors['main_text_color']}; /* Fallback for IE7 and IE8 */
+               background-color: {$colors['border_color']};
+       }
+
+       @media screen and (min-width: 56.875em) {
+               .main-navigation li:hover > a,
+               .main-navigation li.focus > a {
+                       color: {$colors['link_color']};
+               }
+
+               .main-navigation ul ul,
+               .main-navigation ul ul li {
+                       border-color: {$colors['border_color']};
+               }
+
+               .main-navigation ul ul:before {
+                       border-top-color: {$colors['border_color']};
+                       border-bottom-color: {$colors['border_color']};
+               }
+
+               .main-navigation ul ul li {
+                       background-color: {$colors['page_background_color']};
+               }
+
+               .main-navigation ul ul:after {
+                       border-top-color: {$colors['page_background_color']};
+                       border-bottom-color: {$colors['page_background_color']};
+               }
+       }
+
+CSS;
+}
+
+
+/**
+ * Outputs an Underscore template for generating CSS for the color scheme.
+ *
+ * The template generates the css dynamically for instant display in the
+ * Customizer preview.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_color_scheme_css_template() {
+       $colors = array(
+               'background_color'      => '{{ data.background_color }}',
+               'page_background_color' => '{{ data.page_background_color }}',
+               'link_color'            => '{{ data.link_color }}',
+               'main_text_color'       => '{{ data.main_text_color }}',
+               'secondary_text_color'  => '{{ data.secondary_text_color }}',
+               'border_color'          => '{{ data.border_color }}',
+       );
+       ?>
+       <script type="text/html" id="tmpl-twentysixteen-color-scheme">
+               <?php echo twentysixteen_get_color_scheme_css( $colors ); ?>
+       </script>
+       <?php
+}
+add_action( 'customize_controls_print_footer_scripts', 'twentysixteen_color_scheme_css_template' );
+
+/**
+ * Enqueues front-end CSS for the page background color.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @see wp_add_inline_style()
+ */
+function twentysixteen_page_background_color_css() {
+       $color_scheme          = twentysixteen_get_color_scheme();
+       $default_color         = $color_scheme[1];
+       $page_background_color = get_theme_mod( 'page_background_color', $default_color );
+
+       // Don't do anything if the current color is the default.
+       if ( $page_background_color === $default_color ) {
+               return;
+       }
+
+       $css = '
+               /* Custom Page Background Color */
+               .site {
+                       background-color: %1$s;
+               }
+
+               mark,
+               ins,
+               button,
+               button[disabled]:hover,
+               button[disabled]:focus,
+               input[type="button"],
+               input[type="button"][disabled]:hover,
+               input[type="button"][disabled]:focus,
+               input[type="reset"],
+               input[type="reset"][disabled]:hover,
+               input[type="reset"][disabled]:focus,
+               input[type="submit"],
+               input[type="submit"][disabled]:hover,
+               input[type="submit"][disabled]:focus,
+               .menu-toggle.toggled-on,
+               .menu-toggle.toggled-on:hover,
+               .menu-toggle.toggled-on:focus,
+               .pagination .prev,
+               .pagination .next,
+               .pagination .prev:hover,
+               .pagination .prev:focus,
+               .pagination .next:hover,
+               .pagination .next:focus,
+               .pagination .nav-links:before,
+               .pagination .nav-links:after,
+               .widget_calendar tbody a,
+               .widget_calendar tbody a:hover,
+               .widget_calendar tbody a:focus,
+               .page-links a,
+               .page-links a:hover,
+               .page-links a:focus {
+                       color: %1$s;
+               }
+
+               @media screen and (min-width: 56.875em) {
+                       .main-navigation ul ul li {
+                               background-color: %1$s;
+                       }
+
+                       .main-navigation ul ul:after {
+                               border-top-color: %1$s;
+                               border-bottom-color: %1$s;
+                       }
+               }
+       ';
+
+       wp_add_inline_style( 'twentysixteen-style', sprintf( $css, $page_background_color ) );
+}
+add_action( 'wp_enqueue_scripts', 'twentysixteen_page_background_color_css', 11 );
+
+/**
+ * Enqueues front-end CSS for the link color.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @see wp_add_inline_style()
+ */
+function twentysixteen_link_color_css() {
+       $color_scheme    = twentysixteen_get_color_scheme();
+       $default_color   = $color_scheme[2];
+       $link_color = get_theme_mod( 'link_color', $default_color );
+
+       // Don't do anything if the current color is the default.
+       if ( $link_color === $default_color ) {
+               return;
+       }
+
+       $css = '
+               /* Custom Link Color */
+               .menu-toggle:hover,
+               .menu-toggle:focus,
+               a,
+               .main-navigation a:hover,
+               .main-navigation a:focus,
+               .dropdown-toggle:hover,
+               .dropdown-toggle:focus,
+               .social-navigation a:hover:before,
+               .social-navigation a:focus:before,
+               .post-navigation a:hover .post-title,
+               .post-navigation a:focus .post-title,
+               .tagcloud a:hover,
+               .tagcloud a:focus,
+               .site-branding .site-title a:hover,
+               .site-branding .site-title a:focus,
+               .entry-title a:hover,
+               .entry-title a:focus,
+               .entry-footer a:hover,
+               .entry-footer a:focus,
+               .comment-metadata a:hover,
+               .comment-metadata a:focus,
+               .pingback .comment-edit-link:hover,
+               .pingback .comment-edit-link:focus,
+               .comment-reply-link,
+               .comment-reply-link:hover,
+               .comment-reply-link:focus,
+               .required,
+               .site-info a:hover,
+               .site-info a:focus {
+                       color: %1$s;
+               }
+
+               mark,
+               ins,
+               button:hover,
+               button:focus,
+               input[type="button"]:hover,
+               input[type="button"]:focus,
+               input[type="reset"]:hover,
+               input[type="reset"]:focus,
+               input[type="submit"]:hover,
+               input[type="submit"]:focus,
+               .pagination .prev:hover,
+               .pagination .prev:focus,
+               .pagination .next:hover,
+               .pagination .next:focus,
+               .widget_calendar tbody a,
+               .page-links a:hover,
+               .page-links a:focus {
+                       background-color: %1$s;
+               }
+
+               input[type="text"]:focus,
+               input[type="email"]:focus,
+               input[type="url"]:focus,
+               input[type="password"]:focus,
+               input[type="search"]:focus,
+               textarea:focus,
+               .tagcloud a:hover,
+               .tagcloud a:focus,
+               .menu-toggle:hover,
+               .menu-toggle:focus {
+                       border-color: %1$s;
+               }
+
+               @media screen and (min-width: 56.875em) {
+                       .main-navigation li:hover > a,
+                       .main-navigation li.focus > a {
+                               color: %1$s;
+                       }
+               }
+       ';
+
+       wp_add_inline_style( 'twentysixteen-style', sprintf( $css, $link_color ) );
+}
+add_action( 'wp_enqueue_scripts', 'twentysixteen_link_color_css', 11 );
+
+/**
+ * Enqueues front-end CSS for the main text color.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @see wp_add_inline_style()
+ */
+function twentysixteen_main_text_color_css() {
+       $color_scheme    = twentysixteen_get_color_scheme();
+       $default_color   = $color_scheme[3];
+       $main_text_color = get_theme_mod( 'main_text_color', $default_color );
+
+       // Don't do anything if the current color is the default.
+       if ( $main_text_color === $default_color ) {
+               return;
+       }
+
+       // Convert main text hex color to rgba.
+       $main_text_color_rgb = twentysixteen_hex2rgb( $main_text_color );
+
+       // If the rgba values are empty return early.
+       if ( empty( $main_text_color_rgb ) ) {
+               return;
+       }
+
+       // If we get this far, we have a custom color scheme.
+       $border_color = vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.2)', $main_text_color_rgb );
+
+       $css = '
+               /* Custom Main Text Color */
+               body,
+               blockquote cite,
+               blockquote small,
+               .main-navigation a,
+               .menu-toggle,
+               .dropdown-toggle,
+               .social-navigation a,
+               .post-navigation a,
+               .pagination a:hover,
+               .pagination a:focus,
+               .widget-title a,
+               .site-branding .site-title a,
+               .entry-title a,
+               .page-links > .page-links-title,
+               .comment-author,
+               .comment-reply-title small a:hover,
+               .comment-reply-title small a:focus {
+                       color: %1$s
+               }
+
+               blockquote,
+               .menu-toggle.toggled-on,
+               .menu-toggle.toggled-on:hover,
+               .menu-toggle.toggled-on:focus,
+               .post-navigation,
+               .post-navigation div + div,
+               .pagination,
+               .widget,
+               .page-header,
+               .page-links a,
+               .comments-title,
+               .comment-reply-title {
+                       border-color: %1$s;
+               }
+
+               button,
+               button[disabled]:hover,
+               button[disabled]:focus,
+               input[type="button"],
+               input[type="button"][disabled]:hover,
+               input[type="button"][disabled]:focus,
+               input[type="reset"],
+               input[type="reset"][disabled]:hover,
+               input[type="reset"][disabled]:focus,
+               input[type="submit"],
+               input[type="submit"][disabled]:hover,
+               input[type="submit"][disabled]:focus,
+               .menu-toggle.toggled-on,
+               .menu-toggle.toggled-on:hover,
+               .menu-toggle.toggled-on:focus,
+               .pagination:before,
+               .pagination:after,
+               .pagination .prev,
+               .pagination .next,
+               .page-links a {
+                       background-color: %1$s;
+               }
+
+               /* Border Color */
+               fieldset,
+               pre,
+               abbr,
+               acronym,
+               table,
+               th,
+               td,
+               input[type="text"],
+               input[type="email"],
+               input[type="url"],
+               input[type="password"],
+               input[type="search"],
+               textarea,
+               .main-navigation li,
+               .main-navigation .primary-menu,
+               .menu-toggle,
+               .dropdown-toggle:after,
+               .social-navigation a,
+               .image-navigation,
+               .comment-navigation,
+               .tagcloud a,
+               .entry-content,
+               .entry-summary,
+               .page-links a,
+               .page-links > span,
+               .comment-list article,
+               .comment-list .pingback,
+               .comment-list .trackback,
+               .comment-reply-link,
+               .no-comments,
+               .widecolumn .mu_register .mu_alert {
+                       border-color: %1$s; /* Fallback for IE7 and IE8 */
+                       border-color: %2$s;
+               }
+
+               hr,
+               code {
+                       background-color: %1$s; /* Fallback for IE7 and IE8 */
+                       background-color: %2$s;
+               }
+
+               @media screen and (min-width: 56.875em) {
+                       .main-navigation ul ul,
+                       .main-navigation ul ul li {
+                               border-color: %2$s;
+                       }
+
+                       .main-navigation ul ul:before {
+                               border-top-color: %2$s;
+                               border-bottom-color: %2$s;
+                       }
+               }
+       ';
+
+       wp_add_inline_style( 'twentysixteen-style', sprintf( $css, $main_text_color, $border_color ) );
+}
+add_action( 'wp_enqueue_scripts', 'twentysixteen_main_text_color_css', 11 );
+
+/**
+ * Enqueues front-end CSS for the secondary text color.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @see wp_add_inline_style()
+ */
+function twentysixteen_secondary_text_color_css() {
+       $color_scheme    = twentysixteen_get_color_scheme();
+       $default_color   = $color_scheme[4];
+       $secondary_text_color = get_theme_mod( 'secondary_text_color', $default_color );
+
+       // Don't do anything if the current color is the default.
+       if ( $secondary_text_color === $default_color ) {
+               return;
+       }
+
+       $css = '
+               /* Custom Secondary Text Color */
+
+               /**
+                * IE8 and earlier will drop any block with CSS3 selectors.
+                * Do not combine these styles with the next block.
+                */
+               body:not(.search-results) .entry-summary {
+                       color: %1$s;
+               }
+
+               blockquote,
+               .post-password-form label,
+               a:hover,
+               a:focus,
+               a:active,
+               .post-navigation .meta-nav,
+               .image-navigation,
+               .comment-navigation,
+               .widget_recent_entries .post-date,
+               .widget_rss .rss-date,
+               .widget_rss cite,
+               .site-description,
+               .author-bio,
+               .entry-footer,
+               .entry-footer a,
+               .sticky-post,
+               .taxonomy-description,
+               .entry-caption,
+               .comment-metadata,
+               .pingback .edit-link,
+               .comment-metadata a,
+               .pingback .comment-edit-link,
+               .comment-form label,
+               .comment-notes,
+               .comment-awaiting-moderation,
+               .logged-in-as,
+               .form-allowed-tags,
+               .site-info,
+               .site-info a,
+               .wp-caption .wp-caption-text,
+               .gallery-caption,
+               .widecolumn label,
+               .widecolumn .mu_register label {
+                       color: %1$s;
+               }
+
+               .widget_calendar tbody a:hover,
+               .widget_calendar tbody a:focus {
+                       background-color: %1$s;
+               }
+       ';
+
+       wp_add_inline_style( 'twentysixteen-style', sprintf( $css, $secondary_text_color ) );
+}
+add_action( 'wp_enqueue_scripts', 'twentysixteen_secondary_text_color_css', 11 );
diff --git a/wp-content/themes/twentysixteen/inc/template-tags.php b/wp-content/themes/twentysixteen/inc/template-tags.php
new file mode 100644 (file)
index 0000000..74b4d43
--- /dev/null
@@ -0,0 +1,237 @@
+<?php
+/**
+ * Custom Twenty Sixteen template tags
+ *
+ * Eventually, some of the functionality here could be replaced by core features.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+if ( ! function_exists( 'twentysixteen_entry_meta' ) ) :
+/**
+ * Prints HTML with meta information for the categories, tags.
+ *
+ * Create your own twentysixteen_entry_meta() function to override in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_entry_meta() {
+       if ( 'post' === get_post_type() ) {
+               $author_avatar_size = apply_filters( 'twentysixteen_author_avatar_size', 49 );
+               printf( '<span class="byline"><span class="author vcard">%1$s<span class="screen-reader-text">%2$s </span> <a class="url fn n" href="%3$s">%4$s</a></span></span>',
+                       get_avatar( get_the_author_meta( 'user_email' ), $author_avatar_size ),
+                       _x( 'Author', 'Used before post author name.', 'twentysixteen' ),
+                       esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
+                       get_the_author()
+               );
+       }
+
+       if ( in_array( get_post_type(), array( 'post', 'attachment' ) ) ) {
+               twentysixteen_entry_date();
+       }
+
+       $format = get_post_format();
+       if ( current_theme_supports( 'post-formats', $format ) ) {
+               printf( '<span class="entry-format">%1$s<a href="%2$s">%3$s</a></span>',
+                       sprintf( '<span class="screen-reader-text">%s </span>', _x( 'Format', 'Used before post format.', 'twentysixteen' ) ),
+                       esc_url( get_post_format_link( $format ) ),
+                       get_post_format_string( $format )
+               );
+       }
+
+       if ( 'post' === get_post_type() ) {
+               twentysixteen_entry_taxonomies();
+       }
+
+       if ( ! is_singular() && ! post_password_required() && ( comments_open() || get_comments_number() ) ) {
+               echo '<span class="comments-link">';
+               comments_popup_link( sprintf( __( 'Leave a comment<span class="screen-reader-text"> on %s</span>', 'twentysixteen' ), get_the_title() ) );
+               echo '</span>';
+       }
+}
+endif;
+
+if ( ! function_exists( 'twentysixteen_entry_date' ) ) :
+/**
+ * Prints HTML with date information for current post.
+ *
+ * Create your own twentysixteen_entry_date() function to override in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_entry_date() {
+       $time_string = '<time class="entry-date published updated" datetime="%1$s">%2$s</time>';
+
+       if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) ) {
+               $time_string = '<time class="entry-date published" datetime="%1$s">%2$s</time><time class="updated" datetime="%3$s">%4$s</time>';
+       }
+
+       $time_string = sprintf( $time_string,
+               esc_attr( get_the_date( 'c' ) ),
+               get_the_date(),
+               esc_attr( get_the_modified_date( 'c' ) ),
+               get_the_modified_date()
+       );
+
+       printf( '<span class="posted-on"><span class="screen-reader-text">%1$s </span><a href="%2$s" rel="bookmark">%3$s</a></span>',
+               _x( 'Posted on', 'Used before publish date.', 'twentysixteen' ),
+               esc_url( get_permalink() ),
+               $time_string
+       );
+}
+endif;
+
+if ( ! function_exists( 'twentysixteen_entry_taxonomies' ) ) :
+/**
+ * Prints HTML with category and tags for current post.
+ *
+ * Create your own twentysixteen_entry_taxonomies() function to override in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_entry_taxonomies() {
+       $categories_list = get_the_category_list( _x( ', ', 'Used between list items, there is a space after the comma.', 'twentysixteen' ) );
+       if ( $categories_list && twentysixteen_categorized_blog() ) {
+               printf( '<span class="cat-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
+                       _x( 'Categories', 'Used before category names.', 'twentysixteen' ),
+                       $categories_list
+               );
+       }
+
+       $tags_list = get_the_tag_list( '', _x( ', ', 'Used between list items, there is a space after the comma.', 'twentysixteen' ) );
+       if ( $tags_list ) {
+               printf( '<span class="tags-links"><span class="screen-reader-text">%1$s </span>%2$s</span>',
+                       _x( 'Tags', 'Used before tag names.', 'twentysixteen' ),
+                       $tags_list
+               );
+       }
+}
+endif;
+
+if ( ! function_exists( 'twentysixteen_post_thumbnail' ) ) :
+/**
+ * Displays an optional post thumbnail.
+ *
+ * Wraps the post thumbnail in an anchor element on index views, or a div
+ * element when on single views.
+ *
+ * Create your own twentysixteen_post_thumbnail() function to override in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_post_thumbnail() {
+       if ( post_password_required() || is_attachment() || ! has_post_thumbnail() ) {
+               return;
+       }
+
+       if ( is_singular() ) :
+       ?>
+
+       <div class="post-thumbnail">
+               <?php the_post_thumbnail(); ?>
+       </div><!-- .post-thumbnail -->
+
+       <?php else : ?>
+
+       <a class="post-thumbnail" href="<?php the_permalink(); ?>" aria-hidden="true">
+               <?php the_post_thumbnail( 'post-thumbnail', array( 'alt' => the_title_attribute( 'echo=0' ) ) ); ?>
+       </a>
+
+       <?php endif; // End is_singular()
+}
+endif;
+
+if ( ! function_exists( 'twentysixteen_excerpt' ) ) :
+       /**
+        * Displays the optional excerpt.
+        *
+        * Wraps the excerpt in a div element.
+        *
+        * Create your own twentysixteen_excerpt() function to override in a child theme.
+        *
+        * @since Twenty Sixteen 1.0
+        *
+        * @param string $class Optional. Class string of the div element. Defaults to 'entry-summary'.
+        */
+       function twentysixteen_excerpt( $class = 'entry-summary' ) {
+               $class = esc_attr( $class );
+
+               if ( has_excerpt() || is_search() ) : ?>
+                       <div class="<?php echo $class; ?>">
+                               <?php the_excerpt(); ?>
+                       </div><!-- .<?php echo $class; ?> -->
+               <?php endif;
+       }
+endif;
+
+if ( ! function_exists( 'twentysixteen_excerpt_more' ) && ! is_admin() ) :
+/**
+ * Replaces "[...]" (appended to automatically generated excerpts) with ... and
+ * a 'Continue reading' link.
+ *
+ * Create your own twentysixteen_excerpt_more() function to override in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @return string 'Continue reading' link prepended with an ellipsis.
+ */
+function twentysixteen_excerpt_more() {
+       $link = sprintf( '<a href="%1$s" class="more-link">%2$s</a>',
+               esc_url( get_permalink( get_the_ID() ) ),
+               /* translators: %s: Name of current post */
+               sprintf( __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ), get_the_title( get_the_ID() ) )
+       );
+       return ' &hellip; ' . $link;
+}
+add_filter( 'excerpt_more', 'twentysixteen_excerpt_more' );
+endif;
+
+/**
+ * Determines whether blog/site has more than one category.
+ *
+ * Create your own twentysixteen_categorized_blog() function to override in a child theme.
+ *
+ * @since Twenty Sixteen 1.0
+ *
+ * @return bool True if there is more than one category, false otherwise.
+ */
+function twentysixteen_categorized_blog() {
+       if ( false === ( $all_the_cool_cats = get_transient( 'twentysixteen_categories' ) ) ) {
+               // Create an array of all the categories that are attached to posts.
+               $all_the_cool_cats = get_categories( array(
+                       'fields'     => 'ids',
+                       // We only need to know if there is more than one category.
+                       'number'     => 2,
+               ) );
+
+               // Count the number of categories that are attached to the posts.
+               $all_the_cool_cats = count( $all_the_cool_cats );
+
+               set_transient( 'twentysixteen_categories', $all_the_cool_cats );
+       }
+
+       if ( $all_the_cool_cats > 1 ) {
+               // This blog has more than 1 category so twentysixteen_categorized_blog should return true.
+               return true;
+       } else {
+               // This blog has only 1 category so twentysixteen_categorized_blog should return false.
+               return false;
+       }
+}
+
+/**
+ * Flushes out the transients used in twentysixteen_categorized_blog().
+ *
+ * @since Twenty Sixteen 1.0
+ */
+function twentysixteen_category_transient_flusher() {
+       if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
+               return;
+       }
+       // Like, beat it. Dig?
+       delete_transient( 'twentysixteen_categories' );
+}
+add_action( 'edit_category', 'twentysixteen_category_transient_flusher' );
+add_action( 'save_post',     'twentysixteen_category_transient_flusher' );
diff --git a/wp-content/themes/twentysixteen/index.php b/wp-content/themes/twentysixteen/index.php
new file mode 100644 (file)
index 0000000..5e3f290
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+/**
+ * The main template file
+ *
+ * This is the most generic template file in a WordPress theme
+ * and one of the two required files for a theme (the other being style.css).
+ * It is used to display a page when nothing more specific matches a query.
+ * E.g., it puts together the home page when no home.php file exists.
+ *
+ * @link http://codex.wordpress.org/Template_Hierarchy
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+get_header(); ?>
+
+       <div id="primary" class="content-area">
+               <main id="main" class="site-main" role="main">
+
+               <?php if ( have_posts() ) : ?>
+
+                       <?php if ( is_home() && ! is_front_page() ) : ?>
+                               <header>
+                                       <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1>
+                               </header>
+                       <?php endif; ?>
+
+                       <?php
+                       // Start the loop.
+                       while ( have_posts() ) : the_post();
+
+                               /*
+                                * Include the Post-Format-specific template for the content.
+                                * If you want to override this in a child theme, then include a file
+                                * called content-___.php (where ___ is the Post Format name) and that will be used instead.
+                                */
+                               get_template_part( 'template-parts/content', get_post_format() );
+
+                       // End the loop.
+                       endwhile;
+
+                       // Previous/next page navigation.
+                       the_posts_pagination( array(
+                               'prev_text'          => __( 'Previous page', 'twentysixteen' ),
+                               'next_text'          => __( 'Next page', 'twentysixteen' ),
+                               'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>',
+                       ) );
+
+               // If no content, include the "No posts found" template.
+               else :
+                       get_template_part( 'template-parts/content', 'none' );
+
+               endif;
+               ?>
+
+               </main><!-- .site-main -->
+       </div><!-- .content-area -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
diff --git a/wp-content/themes/twentysixteen/js/color-scheme-control.js b/wp-content/themes/twentysixteen/js/color-scheme-control.js
new file mode 100644 (file)
index 0000000..e65b5bd
--- /dev/null
@@ -0,0 +1,96 @@
+/* global colorScheme, Color */
+/**
+ * Add a listener to the Color Scheme control to update other color controls to new values/defaults.
+ * Also trigger an update of the Color Scheme CSS when a color is changed.
+ */
+
+( function( api ) {
+       var cssTemplate = wp.template( 'twentysixteen-color-scheme' ),
+               colorSchemeKeys = [
+                       'background_color',
+                       'page_background_color',
+                       'link_color',
+                       'main_text_color',
+                       'secondary_text_color'
+               ],
+               colorSettings = [
+                       'background_color',
+                       'page_background_color',
+                       'link_color',
+                       'main_text_color',
+                       'secondary_text_color'
+               ];
+
+       api.controlConstructor.select = api.Control.extend( {
+               ready: function() {
+                       if ( 'color_scheme' === this.id ) {
+                               this.setting.bind( 'change', function( value ) {
+                                       var colors = colorScheme[value].colors;
+
+                                       // Update Background Color.
+                                       var color = colors[0];
+                                       api( 'background_color' ).set( color );
+                                       api.control( 'background_color' ).container.find( '.color-picker-hex' )
+                                               .data( 'data-default-color', color )
+                                               .wpColorPicker( 'defaultColor', color );
+
+                                       // Update Page Background Color.
+                                       color = colors[1];
+                                       api( 'page_background_color' ).set( color );
+                                       api.control( 'page_background_color' ).container.find( '.color-picker-hex' )
+                                               .data( 'data-default-color', color )
+                                               .wpColorPicker( 'defaultColor', color );
+
+                                       // Update Link Color.
+                                       color = colors[2];
+                                       api( 'link_color' ).set( color );
+                                       api.control( 'link_color' ).container.find( '.color-picker-hex' )
+                                               .data( 'data-default-color', color )
+                                               .wpColorPicker( 'defaultColor', color );
+
+                                       // Update Main Text Color.
+                                       color = colors[3];
+                                       api( 'main_text_color' ).set( color );
+                                       api.control( 'main_text_color' ).container.find( '.color-picker-hex' )
+                                               .data( 'data-default-color', color )
+                                               .wpColorPicker( 'defaultColor', color );
+
+                                       // Update Secondary Text Color.
+                                       color = colors[4];
+                                       api( 'secondary_text_color' ).set( color );
+                                       api.control( 'secondary_text_color' ).container.find( '.color-picker-hex' )
+                                               .data( 'data-default-color', color )
+                                               .wpColorPicker( 'defaultColor', color );
+                               } );
+                       }
+               }
+       } );
+
+       // Generate the CSS for the current Color Scheme.
+       function updateCSS() {
+               var scheme = api( 'color_scheme' )(),
+                       css,
+                       colors = _.object( colorSchemeKeys, colorScheme[ scheme ].colors );
+
+               // Merge in color scheme overrides.
+               _.each( colorSettings, function( setting ) {
+                       colors[ setting ] = api( setting )();
+               } );
+
+               // Add additional color.
+               // jscs:disable
+               colors.border_color = Color( colors.main_text_color ).toCSS( 'rgba', 0.2 );
+               // jscs:enable
+
+               css = cssTemplate( colors );
+
+               api.previewer.send( 'update-color-scheme-css', css );
+       }
+
+       // Update the CSS whenever a color setting is changed.
+       _.each( colorSettings, function( setting ) {
+               api( setting, function( setting ) {
+                       setting.bind( updateCSS );
+               } );
+       } );
+} )( wp.customize );
diff --git a/wp-content/themes/twentysixteen/js/customize-preview.js b/wp-content/themes/twentysixteen/js/customize-preview.js
new file mode 100644 (file)
index 0000000..fc99333
--- /dev/null
@@ -0,0 +1,41 @@
+/**
+ * Live-update changed settings in real time in the Customizer preview.
+ */
+
+( function( $ ) {
+       var style = $( '#twentysixteen-color-scheme-css' ),
+               api = wp.customize;
+
+       if ( ! style.length ) {
+               style = $( 'head' ).append( '<style type="text/css" id="twentysixteen-color-scheme-css" />' )
+                                   .find( '#twentysixteen-color-scheme-css' );
+       }
+
+       // Site title.
+       api( 'blogname', function( value ) {
+               value.bind( function( to ) {
+                       $( '.site-title a' ).text( to );
+               } );
+       } );
+
+       // Site tagline.
+       api( 'blogdescription', function( value ) {
+               value.bind( function( to ) {
+                       $( '.site-description' ).text( to );
+               } );
+       } );
+
+       // Add custom-background-image body class when background image is added.
+       api( 'background_image', function( value ) {
+               value.bind( function( to ) {
+                       $( 'body' ).toggleClass( 'custom-background-image', '' !== to );
+               } );
+       } );
+
+       // Color Scheme CSS.
+       api.bind( 'preview-ready', function() {
+               api.preview.bind( 'update-color-scheme-css', function( css ) {
+                       style.html( css );
+               } );
+       } );
+} )( jQuery );
diff --git a/wp-content/themes/twentysixteen/js/functions.js b/wp-content/themes/twentysixteen/js/functions.js
new file mode 100644 (file)
index 0000000..9e3b8f5
--- /dev/null
@@ -0,0 +1,200 @@
+/* global screenReaderText */
+/**
+ * Theme functions file.
+ *
+ * Contains handlers for navigation and widget area.
+ */
+
+( function( $ ) {
+       var body, masthead, menuToggle, siteNavigation, socialNavigation, siteHeaderMenu, resizeTimer;
+
+       function initMainNavigation( container ) {
+
+               // Add dropdown toggle that displays child menu items.
+               var dropdownToggle = $( '<button />', {
+                       'class': 'dropdown-toggle',
+                       'aria-expanded': false
+               } ).append( $( '<span />', {
+                       'class': 'screen-reader-text',
+                       text: screenReaderText.expand
+               } ) );
+
+               container.find( '.menu-item-has-children > a' ).after( dropdownToggle );
+
+               // Toggle buttons and submenu items with active children menu items.
+               container.find( '.current-menu-ancestor > button' ).addClass( 'toggled-on' );
+               container.find( '.current-menu-ancestor > .sub-menu' ).addClass( 'toggled-on' );
+
+               // Add menu items with submenus to aria-haspopup="true".
+               container.find( '.menu-item-has-children' ).attr( 'aria-haspopup', 'true' );
+
+               container.find( '.dropdown-toggle' ).click( function( e ) {
+                       var _this            = $( this ),
+                               screenReaderSpan = _this.find( '.screen-reader-text' );
+
+                       e.preventDefault();
+                       _this.toggleClass( 'toggled-on' );
+                       _this.next( '.children, .sub-menu' ).toggleClass( 'toggled-on' );
+
+                       // jscs:disable
+                       _this.attr( 'aria-expanded', _this.attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' );
+                       // jscs:enable
+                       screenReaderSpan.text( screenReaderSpan.text() === screenReaderText.expand ? screenReaderText.collapse : screenReaderText.expand );
+               } );
+       }
+       initMainNavigation( $( '.main-navigation' ) );
+
+       masthead         = $( '#masthead' );
+       menuToggle       = masthead.find( '#menu-toggle' );
+       siteHeaderMenu   = masthead.find( '#site-header-menu' );
+       siteNavigation   = masthead.find( '#site-navigation' );
+       socialNavigation = masthead.find( '#social-navigation' );
+
+       // Enable menuToggle.
+       ( function() {
+
+               // Return early if menuToggle is missing.
+               if ( ! menuToggle.length ) {
+                       return;
+               }
+
+               // Add an initial values for the attribute.
+               menuToggle.add( siteNavigation ).add( socialNavigation ).attr( 'aria-expanded', 'false' );
+
+               menuToggle.on( 'click.twentysixteen', function() {
+                       $( this ).add( siteHeaderMenu ).toggleClass( 'toggled-on' );
+
+                       // jscs:disable
+                       $( this ).add( siteNavigation ).add( socialNavigation ).attr( 'aria-expanded', $( this ).add( siteNavigation ).add( socialNavigation ).attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' );
+                       // jscs:enable
+               } );
+       } )();
+
+       // Fix sub-menus for touch devices and better focus for hidden submenu items for accessibility.
+       ( function() {
+               if ( ! siteNavigation.length || ! siteNavigation.children().length ) {
+                       return;
+               }
+
+               // Toggle `focus` class to allow submenu access on tablets.
+               function toggleFocusClassTouchScreen() {
+                       if ( window.innerWidth >= 910 ) {
+                               $( document.body ).on( 'touchstart.twentysixteen', function( e ) {
+                                       if ( ! $( e.target ).closest( '.main-navigation li' ).length ) {
+                                               $( '.main-navigation li' ).removeClass( 'focus' );
+                                       }
+                               } );
+                               siteNavigation.find( '.menu-item-has-children > a' ).on( 'touchstart.twentysixteen', function( e ) {
+                                       var el = $( this ).parent( 'li' );
+
+                                       if ( ! el.hasClass( 'focus' ) ) {
+                                               e.preventDefault();
+                                               el.toggleClass( 'focus' );
+                                               el.siblings( '.focus' ).removeClass( 'focus' );
+                                       }
+                               } );
+                       } else {
+                               siteNavigation.find( '.menu-item-has-children > a' ).unbind( 'touchstart.twentysixteen' );
+                       }
+               }
+
+               if ( 'ontouchstart' in window ) {
+                       $( window ).on( 'resize.twentysixteen', toggleFocusClassTouchScreen );
+                       toggleFocusClassTouchScreen();
+               }
+
+               siteNavigation.find( 'a' ).on( 'focus.twentysixteen blur.twentysixteen', function() {
+                       $( this ).parents( '.menu-item' ).toggleClass( 'focus' );
+               } );
+       } )();
+
+       // Add the default ARIA attributes for the menu toggle and the navigations.
+       function onResizeARIA() {
+               if ( window.innerWidth < 910 ) {
+                       if ( menuToggle.hasClass( 'toggled-on' ) ) {
+                               menuToggle.attr( 'aria-expanded', 'true' );
+                       } else {
+                               menuToggle.attr( 'aria-expanded', 'false' );
+                       }
+
+                       if ( siteHeaderMenu.hasClass( 'toggled-on' ) ) {
+                               siteNavigation.attr( 'aria-expanded', 'true' );
+                               socialNavigation.attr( 'aria-expanded', 'true' );
+                       } else {
+                               siteNavigation.attr( 'aria-expanded', 'false' );
+                               socialNavigation.attr( 'aria-expanded', 'false' );
+                       }
+
+                       menuToggle.attr( 'aria-controls', 'site-navigation social-navigation' );
+               } else {
+                       menuToggle.removeAttr( 'aria-expanded' );
+                       siteNavigation.removeAttr( 'aria-expanded' );
+                       socialNavigation.removeAttr( 'aria-expanded' );
+                       menuToggle.removeAttr( 'aria-controls' );
+               }
+       }
+
+       // Add 'below-entry-meta' class to elements.
+       function belowEntryMetaClass( param ) {
+               if ( body.hasClass( 'page' ) || body.hasClass( 'search' ) || body.hasClass( 'single-attachment' ) || body.hasClass( 'error404' ) ) {
+                       return;
+               }
+
+               $( '.entry-content' ).find( param ).each( function() {
+                       var element              = $( this ),
+                               elementPos           = element.offset(),
+                               elementPosTop        = elementPos.top,
+                               entryFooter          = element.closest( 'article' ).find( '.entry-footer' ),
+                               entryFooterPos       = entryFooter.offset(),
+                               entryFooterPosBottom = entryFooterPos.top + ( entryFooter.height() + 28 ),
+                               caption              = element.closest( 'figure' ),
+                               newImg;
+
+                       // Add 'below-entry-meta' to elements below the entry meta.
+                       if ( elementPosTop > entryFooterPosBottom ) {
+
+                               // Check if full-size images and captions are larger than or equal to 840px.
+                               if ( 'img.size-full' === param ) {
+
+                                       // Create an image to find native image width of resized images (i.e. max-width: 100%).
+                                       newImg = new Image();
+                                       newImg.src = element.attr( 'src' );
+
+                                       $( newImg ).load( function() {
+                                               if ( newImg.width >= 840  ) {
+                                                       element.addClass( 'below-entry-meta' );
+
+                                                       if ( caption.hasClass( 'wp-caption' ) ) {
+                                                               caption.addClass( 'below-entry-meta' );
+                                                               caption.removeAttr( 'style' );
+                                                       }
+                                               }
+                                       } );
+                               } else {
+                                       element.addClass( 'below-entry-meta' );
+                               }
+                       } else {
+                               element.removeClass( 'below-entry-meta' );
+                               caption.removeClass( 'below-entry-meta' );
+                       }
+               } );
+       }
+
+       $( document ).ready( function() {
+               body = $( document.body );
+
+               $( window )
+                       .on( 'load.twentysixteen', onResizeARIA )
+                       .on( 'resize.twentysixteen', function() {
+                               clearTimeout( resizeTimer );
+                               resizeTimer = setTimeout( function() {
+                                       belowEntryMetaClass( 'img.size-full' );
+                                       belowEntryMetaClass( 'blockquote.alignleft, blockquote.alignright' );
+                               }, 300 );
+                               onResizeARIA();
+                       } );
+
+               belowEntryMetaClass( 'img.size-full' );
+               belowEntryMetaClass( 'blockquote.alignleft, blockquote.alignright' );
+       } );
+} )( jQuery );
diff --git a/wp-content/themes/twentysixteen/js/html5.js b/wp-content/themes/twentysixteen/js/html5.js
new file mode 100644 (file)
index 0000000..9c1f049
--- /dev/null
@@ -0,0 +1,326 @@
+/**
+* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+*/
+;(function(window, document) {
+/*jshint evil:true */
+  /** version */
+  var version = '3.7.3';
+
+  /** Preset options */
+  var options = window.html5 || {};
+
+  /** Used to skip problem elements */
+  var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
+
+  /** Not all elements can be cloned in IE **/
+  var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
+
+  /** Detect whether the browser supports default html5 styles */
+  var supportsHtml5Styles;
+
+  /** Name of the expando, to work with multiple documents or to re-shiv one document */
+  var expando = '_html5shiv';
+
+  /** The id for the the documents expando */
+  var expanID = 0;
+
+  /** Cached data for each document */
+  var expandoData = {};
+
+  /** Detect whether the browser supports unknown elements */
+  var supportsUnknownElements;
+
+  (function() {
+    try {
+        var a = document.createElement('a');
+        a.innerHTML = '<xyz></xyz>';
+        //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
+        supportsHtml5Styles = ('hidden' in a);
+
+        supportsUnknownElements = a.childNodes.length == 1 || (function() {
+          // assign a false positive if unable to shiv
+          (document.createElement)('a');
+          var frag = document.createDocumentFragment();
+          return (
+            typeof frag.cloneNode == 'undefined' ||
+            typeof frag.createDocumentFragment == 'undefined' ||
+            typeof frag.createElement == 'undefined'
+          );
+        }());
+    } catch(e) {
+      // assign a false positive if detection fails => unable to shiv
+      supportsHtml5Styles = true;
+      supportsUnknownElements = true;
+    }
+
+  }());
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * Creates a style sheet with the given CSS text and adds it to the document.
+   * @private
+   * @param {Document} ownerDocument The document.
+   * @param {String} cssText The CSS text.
+   * @returns {StyleSheet} The style element.
+   */
+  function addStyleSheet(ownerDocument, cssText) {
+    var p = ownerDocument.createElement('p'),
+        parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
+
+    p.innerHTML = 'x<style>' + cssText + '</style>';
+    return parent.insertBefore(p.lastChild, parent.firstChild);
+  }
+
+  /**
+   * Returns the value of `html5.elements` as an array.
+   * @private
+   * @returns {Array} An array of shived element node names.
+   */
+  function getElements() {
+    var elements = html5.elements;
+    return typeof elements == 'string' ? elements.split(' ') : elements;
+  }
+
+  /**
+   * Extends the built-in list of html5 elements
+   * @memberOf html5
+   * @param {String|Array} newElements whitespace separated list or array of new element names to shiv
+   * @param {Document} ownerDocument The context document.
+   */
+  function addElements(newElements, ownerDocument) {
+    var elements = html5.elements;
+    if(typeof elements != 'string'){
+      elements = elements.join(' ');
+    }
+    if(typeof newElements != 'string'){
+      newElements = newElements.join(' ');
+    }
+    html5.elements = elements +' '+ newElements;
+    shivDocument(ownerDocument);
+  }
+
+   /**
+   * Returns the data associated to the given document
+   * @private
+   * @param {Document} ownerDocument The document.
+   * @returns {Object} An object of data.
+   */
+  function getExpandoData(ownerDocument) {
+    var data = expandoData[ownerDocument[expando]];
+    if (!data) {
+        data = {};
+        expanID++;
+        ownerDocument[expando] = expanID;
+        expandoData[expanID] = data;
+    }
+    return data;
+  }
+
+  /**
+   * returns a shived element for the given nodeName and document
+   * @memberOf html5
+   * @param {String} nodeName name of the element
+   * @param {Document|DocumentFragment} ownerDocument The context document.
+   * @returns {Object} The shived element.
+   */
+  function createElement(nodeName, ownerDocument, data){
+    if (!ownerDocument) {
+        ownerDocument = document;
+    }
+    if(supportsUnknownElements){
+        return ownerDocument.createElement(nodeName);
+    }
+    if (!data) {
+        data = getExpandoData(ownerDocument);
+    }
+    var node;
+
+    if (data.cache[nodeName]) {
+        node = data.cache[nodeName].cloneNode();
+    } else if (saveClones.test(nodeName)) {
+        node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
+    } else {
+        node = data.createElem(nodeName);
+    }
+
+    // Avoid adding some elements to fragments in IE < 9 because
+    // * Attributes like `name` or `type` cannot be set/changed once an element
+    //   is inserted into a document/fragment
+    // * Link elements with `src` attributes that are inaccessible, as with
+    //   a 403 response, will cause the tab/window to crash
+    // * Script elements appended to fragments will execute when their `src`
+    //   or `text` property is set
+    return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
+  }
+
+  /**
+   * returns a shived DocumentFragment for the given document
+   * @memberOf html5
+   * @param {Document} ownerDocument The context document.
+   * @returns {Object} The shived DocumentFragment.
+   */
+  function createDocumentFragment(ownerDocument, data){
+    if (!ownerDocument) {
+        ownerDocument = document;
+    }
+    if(supportsUnknownElements){
+        return ownerDocument.createDocumentFragment();
+    }
+    data = data || getExpandoData(ownerDocument);
+    var clone = data.frag.cloneNode(),
+        i = 0,
+        elems = getElements(),
+        l = elems.length;
+    for(;i<l;i++){
+        clone.createElement(elems[i]);
+    }
+    return clone;
+  }
+
+  /**
+   * Shivs the `createElement` and `createDocumentFragment` methods of the document.
+   * @private
+   * @param {Document|DocumentFragment} ownerDocument The document.
+   * @param {Object} data of the document.
+   */
+  function shivMethods(ownerDocument, data) {
+    if (!data.cache) {
+        data.cache = {};
+        data.createElem = ownerDocument.createElement;
+        data.createFrag = ownerDocument.createDocumentFragment;
+        data.frag = data.createFrag();
+    }
+
+
+    ownerDocument.createElement = function(nodeName) {
+      //abort shiv
+      if (!html5.shivMethods) {
+          return data.createElem(nodeName);
+      }
+      return createElement(nodeName, ownerDocument, data);
+    };
+
+    ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
+      'var n=f.cloneNode(),c=n.createElement;' +
+      'h.shivMethods&&(' +
+        // unroll the `createElement` calls
+        getElements().join().replace(/[\w\-:]+/g, function(nodeName) {
+          data.createElem(nodeName);
+          data.frag.createElement(nodeName);
+          return 'c("' + nodeName + '")';
+        }) +
+      ');return n}'
+    )(html5, data.frag);
+  }
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * Shivs the given document.
+   * @memberOf html5
+   * @param {Document} ownerDocument The document to shiv.
+   * @returns {Document} The shived document.
+   */
+  function shivDocument(ownerDocument) {
+    if (!ownerDocument) {
+        ownerDocument = document;
+    }
+    var data = getExpandoData(ownerDocument);
+
+    if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
+      data.hasCSS = !!addStyleSheet(ownerDocument,
+        // corrects block display not defined in IE6/7/8/9
+        'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
+        // adds styling not present in IE6/7/8/9
+        'mark{background:#FF0;color:#000}' +
+        // hides non-rendered elements
+        'template{display:none}'
+      );
+    }
+    if (!supportsUnknownElements) {
+      shivMethods(ownerDocument, data);
+    }
+    return ownerDocument;
+  }
+
+  /*--------------------------------------------------------------------------*/
+
+  /**
+   * The `html5` object is exposed so that more elements can be shived and
+   * existing shiving can be detected on iframes.
+   * @type Object
+   * @example
+   *
+   * // options can be changed before the script is included
+   * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
+   */
+  var html5 = {
+
+    /**
+     * An array or space separated string of node names of the elements to shiv.
+     * @memberOf html5
+     * @type Array|String
+     */
+    'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video',
+
+    /**
+     * current version of html5shiv
+     */
+    'version': version,
+
+    /**
+     * A flag to indicate that the HTML5 style sheet should be inserted.
+     * @memberOf html5
+     * @type Boolean
+     */
+    'shivCSS': (options.shivCSS !== false),
+
+    /**
+     * Is equal to true if a browser supports creating unknown/HTML5 elements
+     * @memberOf html5
+     * @type boolean
+     */
+    'supportsUnknownElements': supportsUnknownElements,
+
+    /**
+     * A flag to indicate that the document's `createElement` and `createDocumentFragment`
+     * methods should be overwritten.
+     * @memberOf html5
+     * @type Boolean
+     */
+    'shivMethods': (options.shivMethods !== false),
+
+    /**
+     * A string to describe the type of `html5` object ("default" or "default print").
+     * @memberOf html5
+     * @type String
+     */
+    'type': 'default',
+
+    // shivs the document according to the specified `html5` object options
+    'shivDocument': shivDocument,
+
+    //creates a shived element
+    createElement: createElement,
+
+    //creates a shived documentFragment
+    createDocumentFragment: createDocumentFragment,
+
+    //extends list of elements
+    addElements: addElements
+  };
+
+  /*--------------------------------------------------------------------------*/
+
+  // expose html5
+  window.html5 = html5;
+
+  // shiv the document
+  shivDocument(document);
+
+  if(typeof module == 'object' && module.exports){
+    module.exports = html5;
+  }
+
+}(typeof window !== "undefined" ? window : this, document));
\ No newline at end of file
diff --git a/wp-content/themes/twentysixteen/js/keyboard-image-navigation.js b/wp-content/themes/twentysixteen/js/keyboard-image-navigation.js
new file mode 100644 (file)
index 0000000..b10927c
--- /dev/null
@@ -0,0 +1,26 @@
+/**
+ * Twenty Sixteen keyboard support for image navigation.
+ */
+
+( function( $ ) {
+       $( document ).on( 'keydown.twentysixteen', function( e ) {
+               var url = false;
+
+               // Left arrow key code.
+               if ( 37 === e.which ) {
+                       url = $( '.nav-previous a' ).attr( 'href' );
+
+               // Right arrow key code.
+               } else if ( 39 === e.which ) {
+                       url = $( '.nav-next a' ).attr( 'href' );
+
+               // Other key code.
+               } else {
+                       return;
+               }
+
+               if ( url && ! $( 'textarea, input' ).is( ':focus' ) ) {
+                       window.location = url;
+               }
+       } );
+} )( jQuery );
diff --git a/wp-content/themes/twentysixteen/js/skip-link-focus-fix.js b/wp-content/themes/twentysixteen/js/skip-link-focus-fix.js
new file mode 100644 (file)
index 0000000..ae8a5da
--- /dev/null
@@ -0,0 +1,36 @@
+/**
+ * Makes "skip to content" link work correctly in IE9, Chrome, and Opera
+ * for better accessibility.
+ *
+ * @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/
+ */
+
+ ( function() {
+       var isWebkit = navigator.userAgent.toLowerCase().indexOf( 'webkit' ) > -1,
+               isOpera  = navigator.userAgent.toLowerCase().indexOf( 'opera' )  > -1,
+               isIE     = navigator.userAgent.toLowerCase().indexOf( 'msie' )   > -1;
+
+       if ( ( isWebkit || isOpera || isIE ) && document.getElementById && window.addEventListener ) {
+               window.addEventListener( 'hashchange', function() {
+                       var id = location.hash.substring( 1 ),
+                               element;
+
+                       if ( ! ( /^[A-z0-9_-]+$/.test( id ) ) ) {
+                               return;
+                       }
+
+                       element = document.getElementById( id );
+
+                       if ( element ) {
+                               if ( ! ( /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) ) {
+                                       element.tabIndex = -1;
+                               }
+
+                               element.focus();
+
+                               // Repositions the window on jump-to-anchor to account for admin bar and border height.
+                               window.scrollBy( 0, -53 );
+                       }
+               }, false );
+       }
+} )();
diff --git a/wp-content/themes/twentysixteen/languages/twentysixteen.pot b/wp-content/themes/twentysixteen/languages/twentysixteen.pot
new file mode 100644 (file)
index 0000000..8d4beb1
--- /dev/null
@@ -0,0 +1,346 @@
+# Copyright (C) 2015 the WordPress team
+# This file is distributed under the GNU General Public License v2 or later.
+msgid ""
+msgstr ""
+"Project-Id-Version: Twenty Sixteen 0.1.20150828\n"
+"Report-Msgid-Bugs-To: https://wordpress.org/support/theme/twentysixteen\n"
+"POT-Creation-Date: 2015-11-20 12:58:54+00:00\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+
+#: 404.php:17
+msgid "Oops! That page can&rsquo;t be found."
+msgstr ""
+
+#: 404.php:21
+msgid "It looks like nothing was found at this location. Maybe try a search?"
+msgstr ""
+
+#: archive.php:49 index.php:46 search.php:37
+msgid "Previous page"
+msgstr ""
+
+#: archive.php:50 index.php:47 search.php:38
+msgid "Next page"
+msgstr ""
+
+#: archive.php:51 image.php:60 index.php:48 search.php:39
+#: template-parts/content-page.php:27 template-parts/content-single.php:29
+#: template-parts/content.php:37
+msgid "Page"
+msgstr ""
+
+#. translators: %s: post title
+#: comments.php:31
+msgctxt "comments title"
+msgid "One thought on &ldquo;%s&rdquo;"
+msgstr ""
+
+#. translators: 1: number of comments, 2: post title
+#: comments.php:35
+msgctxt "comments title"
+msgid "%1$s thought on &ldquo;%2$s&rdquo;"
+msgid_plural "%1$s thoughts on &ldquo;%2$s&rdquo;"
+msgstr[0] ""
+msgstr[1] ""
+
+#: comments.php:69
+msgid "Comments are closed."
+msgstr ""
+
+#: footer.php:17
+msgid "Footer Primary Menu"
+msgstr ""
+
+#: footer.php:28
+msgid "Footer Social Links Menu"
+msgstr ""
+
+#. #-#-#-#-#  twentysixteen.pot (Twenty Sixteen 0.1.20150828)  #-#-#-#-#
+#. Author URI of the plugin/theme
+#: footer.php:51
+msgid "https://wordpress.org/"
+msgstr ""
+
+#: footer.php:51
+msgid "Proudly powered by %s"
+msgstr ""
+
+#: functions.php:77 header.php:49
+msgid "Primary Menu"
+msgstr ""
+
+#: functions.php:78 header.php:60
+msgid "Social Links Menu"
+msgstr ""
+
+#: functions.php:142
+msgid "Sidebar"
+msgstr ""
+
+#: functions.php:144
+msgid "Add widgets here to appear in your sidebar."
+msgstr ""
+
+#: functions.php:152
+msgid "Content Bottom 1"
+msgstr ""
+
+#: functions.php:154 functions.php:164
+msgid "Appears at the bottom of the content on posts and pages."
+msgstr ""
+
+#: functions.php:162
+msgid "Content Bottom 2"
+msgstr ""
+
+#. translators: If there are characters in your language that are not supported
+#. by Merriweather, translate this to 'off'. Do not translate into your own
+#. language.
+#: functions.php:189
+msgctxt "Merriweather font: on or off"
+msgid "on"
+msgstr ""
+
+#. translators: If there are characters in your language that are not supported
+#. by Montserrat, translate this to 'off'. Do not translate into your own
+#. language.
+#: functions.php:194
+msgctxt "Montserrat font: on or off"
+msgid "on"
+msgstr ""
+
+#. translators: If there are characters in your language that are not supported
+#. by Inconsolata, translate this to 'off'. Do not translate into your own
+#. language.
+#: functions.php:199
+msgctxt "Inconsolata font: on or off"
+msgid "on"
+msgstr ""
+
+#: functions.php:270
+msgid "expand child menu"
+msgstr ""
+
+#: functions.php:271
+msgid "collapse child menu"
+msgstr ""
+
+#: header.php:27
+msgid "Skip to content"
+msgstr ""
+
+#: header.php:45
+msgid "Menu"
+msgstr ""
+
+#: image.php:24
+msgid "Previous Image"
+msgstr ""
+
+#: image.php:25
+msgid "Next Image"
+msgstr ""
+
+#: image.php:56 template-parts/content-page.php:23
+#: template-parts/content-single.php:25 template-parts/content.php:33
+msgid "Pages:"
+msgstr ""
+
+#: image.php:73
+msgctxt "Used before full size attachment link."
+msgid "Full size"
+msgstr ""
+
+#. translators: %s: Name of current post
+#: image.php:84 template-parts/content-page.php:37
+#: template-parts/content-search.php:28 template-parts/content-search.php:43
+#: template-parts/content-single.php:45 template-parts/content.php:49
+msgid "Edit<span class=\"screen-reader-text\"> \"%s\"</span>"
+msgstr ""
+
+#: image.php:102 single.php:29
+msgctxt "Parent post link"
+msgid ""
+"<span class=\"meta-nav\">Published in</span><span class=\"post-title\">"
+"%title</span>"
+msgstr ""
+
+#: inc/back-compat.php:41 inc/back-compat.php:53 inc/back-compat.php:68
+msgid ""
+"Twenty Sixteen requires at least WordPress version 4.4. You are running "
+"version %s. Please upgrade and try again."
+msgstr ""
+
+#: inc/customizer.php:117
+msgid "Base Color Scheme"
+msgstr ""
+
+#: inc/customizer.php:132
+msgid "Page Background Color"
+msgstr ""
+
+#: inc/customizer.php:147
+msgid "Link Color"
+msgstr ""
+
+#: inc/customizer.php:159
+msgid "Main Text Color"
+msgstr ""
+
+#: inc/customizer.php:171
+msgid "Secondary Text Color"
+msgstr ""
+
+#: inc/customizer.php:216
+msgid "Default"
+msgstr ""
+
+#: inc/customizer.php:226
+msgid "Dark"
+msgstr ""
+
+#: inc/customizer.php:236
+msgid "Gray"
+msgstr ""
+
+#: inc/customizer.php:246
+msgid "Red"
+msgstr ""
+
+#: inc/customizer.php:256
+msgid "Yellow"
+msgstr ""
+
+#: inc/template-tags.php:25
+msgctxt "Used before post author name."
+msgid "Author"
+msgstr ""
+
+#: inc/template-tags.php:38
+msgctxt "Used before post format."
+msgid "Format"
+msgstr ""
+
+#: inc/template-tags.php:50
+msgid "Leave a comment<span class=\"screen-reader-text\"> on %s</span>"
+msgstr ""
+
+#: inc/template-tags.php:79
+msgctxt "Used before publish date."
+msgid "Posted on"
+msgstr ""
+
+#: inc/template-tags.php:95 inc/template-tags.php:103
+msgctxt "Used between list items, there is a space after the comma."
+msgid ", "
+msgstr ""
+
+#: inc/template-tags.php:98
+msgctxt "Used before category names."
+msgid "Categories"
+msgstr ""
+
+#: inc/template-tags.php:106
+msgctxt "Used before tag names."
+msgid "Tags"
+msgstr ""
+
+#. translators: %s: Name of current post
+#: inc/template-tags.php:184 template-parts/content.php:28
+msgid "Continue reading<span class=\"screen-reader-text\"> \"%s\"</span>"
+msgstr ""
+
+#: search.php:18
+msgid "Search Results for: %s"
+msgstr ""
+
+#: searchform.php:13 searchform.php:14
+msgctxt "label"
+msgid "Search for:"
+msgstr ""
+
+#: searchform.php:14
+msgctxt "placeholder"
+msgid "Search &hellip;"
+msgstr ""
+
+#: searchform.php:16
+msgctxt "submit button"
+msgid "Search"
+msgstr ""
+
+#: single.php:34
+msgid "Next"
+msgstr ""
+
+#: single.php:35
+msgid "Next post:"
+msgstr ""
+
+#: single.php:37
+msgid "Previous"
+msgstr ""
+
+#: single.php:38
+msgid "Previous post:"
+msgstr ""
+
+#: template-parts/biography.php:28
+msgid "Author:"
+msgstr ""
+
+#: template-parts/biography.php:33
+msgid "View all posts by %s"
+msgstr ""
+
+#: template-parts/content-none.php:13
+msgid "Nothing Found"
+msgstr ""
+
+#: template-parts/content-none.php:19
+msgid ""
+"Ready to publish your first post? <a href=\"%1$s\">Get started here</a>."
+msgstr ""
+
+#: template-parts/content-none.php:23
+msgid ""
+"Sorry, but nothing matched your search terms. Please try again with some "
+"different keywords."
+msgstr ""
+
+#: template-parts/content-none.php:28
+msgid ""
+"It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps "
+"searching can help."
+msgstr ""
+
+#: template-parts/content.php:14
+msgid "Featured"
+msgstr ""
+
+#. Theme Name of the plugin/theme
+msgid "Twenty Sixteen"
+msgstr ""
+
+#. Theme URI of the plugin/theme
+msgid "https://wordpress.org/themes/twentysixteen/"
+msgstr ""
+
+#. Description of the plugin/theme
+msgid ""
+"Twenty Sixteen is a modernized take on an ever-popular WordPress layout â€” "
+"the horizontal masthead with an optional right sidebar that works perfectly "
+"for blogs and websites. It has custom color options with beautiful default "
+"color schemes, a harmonious fluid grid using a mobile-first approach, and "
+"impeccable polish in every detail. Twenty Sixteen will make your WordPress "
+"look beautiful everywhere."
+msgstr ""
+
+#. Author of the plugin/theme
+msgid "the WordPress team"
+msgstr ""
diff --git a/wp-content/themes/twentysixteen/page.php b/wp-content/themes/twentysixteen/page.php
new file mode 100644 (file)
index 0000000..315a3da
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+/**
+ * The template for displaying pages
+ *
+ * This is the template that displays all pages by default.
+ * Please note that this is the WordPress construct of pages and that
+ * other "pages" on your WordPress site will use a different template.
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+get_header(); ?>
+
+<div id="primary" class="content-area">
+       <main id="main" class="site-main" role="main">
+               <?php
+               // Start the loop.
+               while ( have_posts() ) : the_post();
+
+                       // Include the page content template.
+                       get_template_part( 'template-parts/content', 'page' );
+
+                       // If comments are open or we have at least one comment, load up the comment template.
+                       if ( comments_open() || get_comments_number() ) {
+                               comments_template();
+                       }
+
+                       // End of the loop.
+               endwhile;
+               ?>
+
+       </main><!-- .site-main -->
+
+       <?php get_sidebar( 'content-bottom' ); ?>
+
+</div><!-- .content-area -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
diff --git a/wp-content/themes/twentysixteen/readme.txt b/wp-content/themes/twentysixteen/readme.txt
new file mode 100644 (file)
index 0000000..2850e6f
--- /dev/null
@@ -0,0 +1,59 @@
+=== Twenty Sixteen ===
+Contributors: the WordPress team
+Requires at least: WordPress 4.4
+Tested up to: WordPress 4.4
+Version: 1.0
+License: GPLv2 or later
+License URI: http://www.gnu.org/licenses/gpl-2.0.html
+Tags: black, blue, gray, green, white, yellow, dark, light, one-column, two-columns, right-sidebar, fixed-layout, responsive-layout, accessibility-ready, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-images, flexible-header, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready
+
+== Description ==
+Twenty Sixteen is a modernized take on an ever-popular WordPress layout â€” the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.
+
+* Mobile-first, Responsive Layout
+* Custom Colors
+* Custom Header
+* Social Links
+* Post Formats
+* The GPL v2.0 or later license. :) Use it to make something cool.
+
+For more information about Twenty Sixteen please go to https://codex.wordpress.org/Twenty_Sixteen.
+
+== Installation ==
+
+1. In your admin panel, go to Appearance -> Themes and click the 'Add New' button.
+2. Type in Twenty Sixteen in the search form and press the 'Enter' key on your keyboard.
+3. Click on the 'Activate' button to use your new theme right away.
+4. Go to https://codex.wordpress.org/Twenty_Sixteen for a guide on how to customize this theme.
+5. Navigate to Appearance > Customize in your admin panel and customize to taste.
+
+== Copyright ==
+
+Twenty Sixteen WordPress Theme, Copyright 2014-2015 WordPress.org
+Twenty Sixteen is distributed under the terms of the GNU GPL
+
+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.
+
+Twenty Sixteen Theme bundles the following third-party resources:
+
+HTML5 Shiv v3.7.0, Copyright 2014 Alexander Farkas
+Licenses: MIT/GPL2
+Source: https://github.com/aFarkas/html5shiv
+
+Genericons icon font, Copyright 2013-2015 Automattic.com
+License: GNU GPL, Version 2 (or later)
+Source: http://www.genericons.com
+
+Image used in screenshot.png: A photo by Austin Schmid (https://unsplash.com/schmidy/), licensed under Creative Commons Zero(http://creativecommons.org/publicdomain/zero/1.0/)
+
+== Notes ==
+
+Only the default and dark color schemes are accessibility ready.
diff --git a/wp-content/themes/twentysixteen/rtl.css b/wp-content/themes/twentysixteen/rtl.css
new file mode 100644 (file)
index 0000000..5456c70
--- /dev/null
@@ -0,0 +1,754 @@
+/*
+Theme Name: Twenty Sixteen
+Description: Adds support for languages written in a Right To Left (RTL) direction.
+It's easy, just a matter of overwriting all the horizontal positioning attributes
+of your CSS stylesheet in a separate stylesheet file named rtl.css.
+
+See: https://codex.wordpress.org/Right_to_Left_Language_Support
+*/
+
+/**
+ * Table of Contents:
+ *
+ * 1.0 - Normalize
+ * 2.0 - Typography
+ * 3.0 - Elements
+ * 4.0 - Forms
+ * 5.0 - Navigations
+ * 6.0 - Accessibility
+ * 7.0 - Widgets
+ * 8.0 - Content
+ *   8.1 - Header
+ *   8.2 - Posts and pages
+ *   8.3 - Comments
+ *   8.4 - Footer
+ * 9.0 - Multisites
+ * 10.0 - Media Queries
+ *    10.1 - >= 710px
+ *    10.2 - >= 910px
+ *    10.3 - >= 985px
+ *    10.4 - >= 1200px
+ */
+
+
+/**
+ * 1.0 - Normalize
+ */
+
+body {
+       direction: rtl;
+       unicode-bidi: embed;
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+       margin-right: auto;
+       margin-left: 0.4375em;
+}
+
+
+/**
+ * 2.0 - Typography
+ */
+
+body,
+button,
+button[disabled]:hover,
+button[disabled]:focus,
+input[type="button"],
+input[type="button"][disabled]:hover,
+input[type="button"][disabled]:focus,
+input[type="reset"],
+input[type="reset"][disabled]:hover,
+input[type="reset"][disabled]:focus,
+input[type="submit"],
+input[type="submit"][disabled]:hover,
+input[type="submit"][disabled]:focus,
+input,
+select,
+textarea,
+.post-password-form label,
+.main-navigation,
+.post-navigation,
+.post-navigation .post-title,
+.pagination,
+.image-navigation,
+.comment-navigation,
+.site .skip-link,
+.logged-in .site .skip-link,
+.widget .widget-title,
+.widget_recent_entries .post-date,
+.widget_rss .rss-date,
+.widget_rss cite,
+.tagcloud a,
+.site-title,
+.entry-title,
+.entry-footer,
+.sticky-post,
+.page-title,
+.page-links,
+.comments-title,
+.comment-reply-title,
+.comment-metadata,
+.pingback .edit-link,
+.comment-reply-link,
+.comment-form label,
+.no-comments,
+.required,
+.site-footer .site-title,
+.site-footer .site-title:after,
+.widecolumn label,
+.widecolumn .mu_register label {
+       font-family: Arial, Tahoma, sans-serif;
+}
+
+::-webkit-input-placeholder {
+       font-family: Arial, Tahoma, sans-serif;
+}
+
+:-moz-placeholder {
+       font-family: Arial, Tahoma, sans-serif;
+}
+
+::-moz-placeholder {
+       font-family: Arial, Tahoma, sans-serif;
+}
+
+:-ms-input-placeholder {
+       font-family: Arial, Tahoma, sans-serif;
+}
+
+blockquote {
+       border-right-width: 4px;
+       border-left-width: 0;
+       padding-right: 1.263157895em;
+       padding-left: 0;
+}
+
+.entry-content h1,
+.entry-content h2,
+.entry-content h3,
+.entry-content h4,
+.entry-content h5,
+.entry-content h6,
+.entry-summary h1,
+.entry-summary h2,
+.entry-summary h3,
+.entry-summary h4,
+.entry-summary h5,
+.entry-summary h6,
+.comment-content h1,
+.comment-content h2,
+.comment-content h3,
+.comment-content h4,
+.comment-content h5,
+.comment-content h6,
+.textwidget h1,
+.textwidget h2,
+.textwidget h3,
+.textwidget h4,
+.textwidget h5,
+.textwidget h6,
+.entry-content .author-title,
+.widget_calendar caption,
+.widecolumn h2 {
+       font-weight: 700;
+}
+
+
+/**
+ * 3.0 - Elements
+ */
+
+ul,
+ol {
+       margin: 0 1.25em 1.75em 0;
+}
+
+ol {
+       margin-right: 1.5em;
+       margin-left: 0;
+}
+
+caption,
+th,
+td {
+       text-align: right;
+}
+
+
+/**
+ * 4.0 - Forms
+ */
+
+input[type="search"].search-field {
+       border-radius: 0 2px 2px 0;
+}
+
+.search-submit:before {
+       left: 1px;
+}
+
+.search-submit {
+       border-radius: 2px 0 0 2px;
+       left: 0;
+       right: auto;
+}
+
+
+/**
+ * 5.0 - Navigation
+ */
+
+.main-navigation ul ul {
+       margin-right: 0.875em;
+       margin-left: auto;
+}
+
+.main-navigation .menu-item-has-children > a {
+       margin-right: auto;
+       margin-left: 56px;
+}
+
+.dropdown-toggle {
+       left: 0;
+       right: auto;
+}
+
+.dropdown-toggle:after {
+       border-right-width: 1px;
+       border-left-width: 0;
+       left: auto;
+       right: 1px;
+}
+
+.social-navigation li {
+       float: right;
+       margin: 0 0 0.4375em 0.4375em;
+}
+
+.pagination:before {
+       left: 0;
+       right: auto;
+}
+
+.pagination:after {
+       left: 54px;
+       right: auto;
+}
+
+.pagination .nav-links {
+       padding-right: 0;
+       padding-left: 106px;
+}
+
+.pagination .nav-links:before {
+       content: "\f430";
+       left: -1px;
+       right: auto;
+}
+
+.pagination .nav-links:after {
+       content: "\f429";
+       left: 55px;
+       right: auto;
+}
+
+.pagination .page-numbers {
+       margin: 0 -0.7368421053em 0 0.7368421053em;
+}
+
+.pagination .prev,
+.pagination .next {
+       margin: 0;
+}
+
+.pagination .prev {
+       left: 54px;
+       right: auto;
+}
+
+.pagination .prev:before {
+       content: "\f429";
+       left: auto;
+       right: -1px;
+}
+
+.pagination .next {
+       left: 0;
+       right: auto;
+}
+
+.pagination .next:before {
+       content: "\f430";
+       left: -1px;
+       right: auto;
+}
+
+.comment-navigation {
+       margin-right: 0;
+       margin-left: 0;
+}
+
+
+/**
+ * 6.0 - Accessibility
+ */
+
+.site .skip-link {
+       left: auto;
+       right: -9999em;
+}
+
+.site .skip-link:focus {
+       left: auto;
+       right: 6px;
+}
+
+
+/**
+ * 7.0 - Widgets
+ */
+
+.tagcloud a {
+       margin-right: 0;
+       margin-left: 0.1875em;
+}
+
+
+/**
+ * 8.0 - Content
+ */
+
+
+/**
+ * 8.1 - Header
+ */
+
+.site-branding {
+       margin-right: 0;
+       margin-left: auto;
+}
+
+
+/**
+ * 8.2 - Posts and pages
+ */
+
+.author-avatar .avatar {
+       float: right;
+       margin-right: 0;
+       margin-left: 1.75em;
+}
+
+.entry-footer .avatar {
+       margin-right: 0;
+       margin-left: 0.5384615385em;
+}
+
+.page-links a,
+.page-links > span {
+       margin-right: auto;
+       margin-left: 0.3076923077em;
+}
+
+.page-links > .page-links-title {
+       padding-right: 0;
+       padding-left: 0.6153846154em;
+}
+
+body:not(.search-results) .entry-summary .alignright {
+       margin: 0.2631578947em 0 1.4736842105em 1.4736842105em;
+}
+
+body:not(.search-results) .entry-summary .alignleft {
+       margin: 0.2631578947em 1.4736842105em 1.4736842105em 0;
+}
+
+
+/**
+ * 8.3 - Comments
+ */
+
+.comment-list .children > li {
+       padding-right: 0.875em;
+       padding-left: 0;
+}
+
+.comment-author .avatar {
+       float: right;
+       margin-right: auto;
+       margin-left: 0.875em;
+}
+
+.bypostauthor > article .fn:after {
+       left: auto;
+       right: 3px;
+}
+
+.comment-content ul,
+.comment-content ol {
+       margin: 0 1.25em 1.5em 0;
+}
+
+.comment-reply-title small a {
+       float: left;
+}
+
+
+/**
+ * 8.4 - Footer
+ */
+
+.site-footer .site-title:after {
+       padding-right: 0.538461538em;
+       padding-left: 0.307692308em;
+}
+
+
+/**
+ * 9.0 - Multisites
+ */
+
+.widecolumn .mu_register label {
+       margin-right: 0;
+       margin-left: 0.7692307692em;
+}
+
+
+/**
+ * 10.0 - Media Queries
+ */
+
+
+/**
+ * 10.1 - >= 710px
+ */
+
+@media screen and (min-width: 44.375em) {
+       .pagination {
+               margin: 0 7.6923% 4.421052632em 23.0769%;
+       }
+
+       .entry-header,
+       .post-thumbnail,
+       .entry-content,
+       .entry-summary,
+       .entry-footer,
+       .comments-area,
+       .image-navigation,
+       .post-navigation,
+       .page-header,
+       .page-content,
+       .content-bottom-widgets {
+               margin-right: 7.6923%;
+               margin-left: 23.0769%;
+       }
+
+       .entry-content blockquote:not(.alignright):not(.alignleft),
+       .entry-summary blockquote,
+       .comment-content blockquote {
+               margin-right: -1.473684211em;
+               margin-left: auto;
+       }
+
+       .entry-content blockquote blockquote:not(.alignright):not(.alignleft),
+       .entry-summary blockquote blockquote,
+       .comment-content blockquote blockquote {
+               margin-right: 0;
+               margin-left: auto;
+       }
+
+       .entry-content ul,
+       .entry-summary ul,
+       .comment-content ul,
+       .entry-content ol,
+       .entry-summary ol,
+       .comment-content ol {
+               margin-right: 0;
+               margin-left: auto;
+       }
+
+       .entry-content li > ul,
+       .entry-summary li > ul,
+       .comment-content li > ul,
+       .entry-content blockquote > ul,
+       .entry-summary blockquote > ul,
+       .comment-content blockquote > ul {
+               margin-right: 1.25em;
+               margin-left: auto;
+       }
+
+       .entry-content li > ol,
+       .entry-summary li > ol,
+       .comment-content li > ol,
+       .entry-content blockquote > ol,
+       .entry-summary blockquote > ol,
+       .comment-content blockquote > ol {
+               margin-right: 1.5em;
+               margin-left: auto;
+       }
+
+       .comment-list .children > li {
+               padding-right: 1.75em;
+               padding-left: 0;
+       }
+
+       .sidebar,
+       .widecolumn {
+               padding-right: 7.6923%;
+               padding-left: 23.0769%;
+       }
+
+       body:not(.search-results) .entry-summary li > ul,
+       body:not(.search-results) .entry-summary blockquote > ul {
+               margin-right: 1.157894737em;
+               margin-left: auto;
+       }
+
+       body:not(.search-results) .entry-summary li > ol,
+       body:not(.search-results) .entry-summary blockquote > ol {
+               margin-right: 1.473684211em;
+               margin-left: auto;
+       }
+}
+
+
+/**
+ * 10.2 - >= 910px
+ */
+
+@media screen and (min-width: 56.875em) {
+       .main-navigation .primary-menu > li {
+               float: right;
+       }
+
+       .main-navigation ul ul {
+               left: auto;
+               margin: 0;
+               right: -999em;
+       }
+
+       .main-navigation ul ul:before {
+               left: 9px;
+               right: auto;
+       }
+
+       .main-navigation ul ul:after {
+               left: 11px;
+               right: auto;
+       }
+
+       .main-navigation li:hover > ul,
+       .main-navigation li.focus > ul {
+               left: 0;
+               right: auto;
+       }
+
+       .main-navigation ul ul li:hover > ul,
+       .main-navigation ul ul li.focus > ul {
+               left: 100%;
+               right: auto;
+       }
+
+       .main-navigation .menu-item-has-children > a {
+               margin: 0;
+               padding-right: 0.875em;
+               padding-left: 2.25em;
+       }
+
+       .main-navigation .menu-item-has-children > a:after {
+               left: 0.625em;
+               right: auto;
+       }
+
+       .main-navigation ul ul .menu-item-has-children > a {
+               padding-right: 0.875em;
+               padding-left: 2.0625em;
+       }
+
+       .main-navigation ul ul .menu-item-has-children > a:after {
+               left: 0.5625em;
+               right: auto;
+               top: 0.8125em;
+               -webkit-transform: rotate(-90deg);
+               -moz-transform: rotate(-90deg);
+               -ms-transform: rotate(-90deg);
+               transform: rotate(-90deg);
+       }
+
+       .content-area {
+               float: right;
+               margin-right: auto;
+               margin-left: -100%;
+       }
+
+       .entry-header,
+       .post-thumbnail,
+       .entry-content,
+       .entry-summary,
+       .entry-footer,
+       .comments-area,
+       .image-navigation,
+       .post-navigation,
+       .pagination,
+       .page-header,
+       .page-content,
+       .content-bottom-widgets {
+               margin-right: 0;
+               margin-left: 0;
+       }
+
+       .sidebar {
+               float: right;
+               margin-right: 75%;
+               margin-left: auto;
+               padding: 0;
+       }
+
+       .widget blockquote {
+               padding-right: 1.0625em;
+               padding-left: 0;
+       }
+
+       .widget .alignright {
+               margin: 0.2307692308em 0 1.6153846154em 1.6153846154em;
+       }
+
+       .widget .alignleft {
+               margin: 0.2307692308em 1.6153846154em 1.6153846154em 0;
+       }
+
+       .tagcloud a {
+               margin: 0 0 0.5384615385em 0.2307692308em;
+       }
+
+       .content-bottom-widgets .widget-area:nth-child(1):nth-last-child(2),
+       .content-bottom-widgets .widget-area:nth-child(2):nth-last-child(1) {
+               float: right;
+               margin-right: auto;
+               margin-left: 7.1428571%;
+       }
+
+       .content-bottom-widgets .widget-area:nth-child(2):nth-last-child(1):last-of-type {
+               margin-right: auto;
+               margin-left: 0;
+       }
+
+       .site-info {
+               margin: 0.538461538em 0 0.538461538em auto;
+       }
+
+       .no-sidebar .entry-header,
+       .no-sidebar .entry-content,
+       .no-sidebar .entry-summary,
+       .no-sidebar .entry-footer,
+       .no-sidebar .comments-area,
+       .no-sidebar .image-navigation,
+       .no-sidebar .post-navigation,
+       .no-sidebar .pagination,
+       .no-sidebar .page-header,
+       .no-sidebar .page-content,
+       .no-sidebar .content-bottom-widgets {
+               margin-right: 15%;
+               margin-left: 15%;
+       }
+
+       .no-sidebar .post-thumbnail {
+               margin-right: 0;
+               margin-left: 0;
+       }
+
+       .widecolumn {
+               padding-right: 15%;
+               padding-left: 15%;
+       }
+}
+
+
+/**
+ * 10.3 - >= 985px
+ */
+
+@media screen and (min-width: 61.5625em) {
+       body:not(.search-results) article:not(.type-page) .entry-content {
+               float: left;
+       }
+
+       body:not(.search-results) article:not(.type-page) .entry-content > blockquote.alignleft.below-entry-meta {
+               margin-right: 1.473684211em;
+               margin-left: 0;
+               width: -webkit-calc(50% - 0.736842105em);
+               width: calc(50% - 0.736842105em);;
+       }
+
+       body:not(.search-results) article:not(.type-page) .entry-content > blockquote.alignright.below-entry-meta {
+               margin-right: -40%;
+               margin-left: 1.473684211em;
+               width: -webkit-calc(60% - 1.4736842105em);
+               width: calc(60% - 1.4736842105em);
+       }
+
+       body:not(.search-results) article:not(.type-page) img.below-entry-meta,
+       body:not(.search-results) article:not(.type-page) figure.below-entry-meta {
+               margin-right: -40%;
+               margin-left: 0;
+       }
+
+       body:not(.search-results) article:not(.type-page) .entry-footer {
+               float: right;
+       }
+
+       body.no-sidebar:not(.search-results) article:not(.type-page) .entry-content {
+               float: right;
+               margin-right: 34.99999999%;
+               margin-left: -100%;
+       }
+
+       body.no-sidebar:not(.search-results) article:not(.type-page) .entry-footer {
+               margin-right: 15%;
+               margin-left: -100%;
+       }
+}
+
+
+/**
+ * 10.4 - >= 1200px
+ */
+
+@media screen and (min-width: 75em) {
+       body:not(.search-results) .entry-summary li > ul,
+       body:not(.search-results) .entry-summary blockquote > ul {
+               margin-right: 0.956521739em;
+               margin-left: auto;
+       }
+
+       body:not(.search-results) .entry-summary li > ol,
+       body:not(.search-results) .entry-summary blockquote > ol {
+               margin-right: 1.52173913em;
+               margin-left: auto;
+       }
+
+       body:not(.search-results) .entry-summary blockquote {
+               padding-right: 1.347826087em;
+               padding-left: 0;
+       }
+
+       body:not(.search-results) .entry-summary blockquote:not(.alignright):not(.alignleft) {
+               margin-right: -1.52173913em;
+               margin-left: auto;
+       }
+
+       body:not(.search-results) .entry-summary blockquote blockquote:not(.alignright):not(.alignleft) {
+               margin-right: 0;
+               margin-left: auto;
+       }
+
+       body:not(.search-results) .entry-summary .alignright {
+               margin: 0.2608695652em 0 1.5217391304em 1.5217391304em;
+       }
+
+       body:not(.search-results) .entry-summary .alignleft {
+               margin: 0.2608695652em 1.5217391304em 1.5217391304em 0;
+       }
+}
diff --git a/wp-content/themes/twentysixteen/screenshot.png b/wp-content/themes/twentysixteen/screenshot.png
new file mode 100644 (file)
index 0000000..e4f2b25
Binary files /dev/null and b/wp-content/themes/twentysixteen/screenshot.png differ
diff --git a/wp-content/themes/twentysixteen/search.php b/wp-content/themes/twentysixteen/search.php
new file mode 100644 (file)
index 0000000..4180b5f
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+/**
+ * The template for displaying search results pages
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+get_header(); ?>
+
+       <section id="primary" class="content-area">
+               <main id="main" class="site-main" role="main">
+
+               <?php if ( have_posts() ) : ?>
+
+                       <header class="page-header">
+                               <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'twentysixteen' ), '<span>' . esc_html( get_search_query() ) . '</span>' ); ?></h1>
+                       </header><!-- .page-header -->
+
+                       <?php
+                       // Start the loop.
+                       while ( have_posts() ) : the_post();
+
+                               /**
+                                * Run the loop for the search to output the results.
+                                * If you want to overload this in a child theme then include a file
+                                * called content-search.php and that will be used instead.
+                                */
+                               get_template_part( 'template-parts/content', 'search' );
+
+                       // End the loop.
+                       endwhile;
+
+                       // Previous/next page navigation.
+                       the_posts_pagination( array(
+                               'prev_text'          => __( 'Previous page', 'twentysixteen' ),
+                               'next_text'          => __( 'Next page', 'twentysixteen' ),
+                               'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>',
+                       ) );
+
+               // If no content, include the "No posts found" template.
+               else :
+                       get_template_part( 'template-parts/content', 'none' );
+
+               endif;
+               ?>
+
+               </main><!-- .site-main -->
+       </section><!-- .content-area -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
diff --git a/wp-content/themes/twentysixteen/searchform.php b/wp-content/themes/twentysixteen/searchform.php
new file mode 100644 (file)
index 0000000..a279479
--- /dev/null
@@ -0,0 +1,17 @@
+<?php
+/**
+ * Template for displaying search forms in Twenty Sixteen
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+?>
+
+<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">
+       <label>
+               <span class="screen-reader-text"><?php echo _x( 'Search for:', 'label', 'twentysixteen' ); ?></span>
+               <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search &hellip;', 'placeholder', 'twentysixteen' ); ?>" value="<?php echo get_search_query(); ?>" name="s" title="<?php echo esc_attr_x( 'Search for:', 'label', 'twentysixteen' ); ?>" />
+       </label>
+       <button type="submit" class="search-submit"><span class="screen-reader-text"><?php echo _x( 'Search', 'submit button', 'twentysixteen' ); ?></span></button>
+</form>
diff --git a/wp-content/themes/twentysixteen/sidebar-content-bottom.php b/wp-content/themes/twentysixteen/sidebar-content-bottom.php
new file mode 100644 (file)
index 0000000..d561eb7
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * The template for the content bottom widget areas on posts and pages
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+if ( ! is_active_sidebar( 'sidebar-2' ) && ! is_active_sidebar( 'sidebar-3' ) ) {
+       return;
+}
+
+// If we get this far, we have widgets. Let's do this.
+?>
+<aside id="content-bottom-widgets" class="content-bottom-widgets" role="complementary">
+       <?php if ( is_active_sidebar( 'sidebar-2' ) ) : ?>
+               <div class="widget-area">
+                       <?php dynamic_sidebar( 'sidebar-2' ); ?>
+               </div><!-- .widget-area -->
+       <?php endif; ?>
+
+       <?php if ( is_active_sidebar( 'sidebar-3' ) ) : ?>
+               <div class="widget-area">
+                       <?php dynamic_sidebar( 'sidebar-3' ); ?>
+               </div><!-- .widget-area -->
+       <?php endif; ?>
+</aside><!-- .content-bottom-widgets -->
diff --git a/wp-content/themes/twentysixteen/sidebar.php b/wp-content/themes/twentysixteen/sidebar.php
new file mode 100644 (file)
index 0000000..d4d893e
--- /dev/null
@@ -0,0 +1,15 @@
+<?php
+/**
+ * The template for the sidebar containing the main widget area
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+?>
+
+<?php if ( is_active_sidebar( 'sidebar-1' )  ) : ?>
+       <aside id="secondary" class="sidebar widget-area" role="complementary">
+               <?php dynamic_sidebar( 'sidebar-1' ); ?>
+       </aside><!-- .sidebar .widget-area -->
+<?php endif; ?>
diff --git a/wp-content/themes/twentysixteen/single.php b/wp-content/themes/twentysixteen/single.php
new file mode 100644 (file)
index 0000000..07e0df2
--- /dev/null
@@ -0,0 +1,54 @@
+<?php
+/**
+ * The template for displaying all single posts and attachments
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+
+get_header(); ?>
+
+<div id="primary" class="content-area">
+       <main id="main" class="site-main" role="main">
+               <?php
+               // Start the loop.
+               while ( have_posts() ) : the_post();
+
+                       // Include the single post content template.
+                       get_template_part( 'template-parts/content', 'single' );
+
+                       // If comments are open or we have at least one comment, load up the comment template.
+                       if ( comments_open() || get_comments_number() ) {
+                               comments_template();
+                       }
+
+                       if ( is_singular( 'attachment' ) ) {
+                               // Parent post navigation.
+                               the_post_navigation( array(
+                                       'prev_text' => _x( '<span class="meta-nav">Published in</span><span class="post-title">%title</span>', 'Parent post link', 'twentysixteen' ),
+                               ) );
+                       } elseif ( is_singular( 'post' ) ) {
+                               // Previous/next post navigation.
+                               the_post_navigation( array(
+                                       'next_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Next', 'twentysixteen' ) . '</span> ' .
+                                               '<span class="screen-reader-text">' . __( 'Next post:', 'twentysixteen' ) . '</span> ' .
+                                               '<span class="post-title">%title</span>',
+                                       'prev_text' => '<span class="meta-nav" aria-hidden="true">' . __( 'Previous', 'twentysixteen' ) . '</span> ' .
+                                               '<span class="screen-reader-text">' . __( 'Previous post:', 'twentysixteen' ) . '</span> ' .
+                                               '<span class="post-title">%title</span>',
+                               ) );
+                       }
+
+                       // End of the loop.
+               endwhile;
+               ?>
+
+       </main><!-- .site-main -->
+
+       <?php get_sidebar( 'content-bottom' ); ?>
+
+</div><!-- .content-area -->
+
+<?php get_sidebar(); ?>
+<?php get_footer(); ?>
diff --git a/wp-content/themes/twentysixteen/style.css b/wp-content/themes/twentysixteen/style.css
new file mode 100644 (file)
index 0000000..60a2618
--- /dev/null
@@ -0,0 +1,3920 @@
+/*
+Theme Name: Twenty Sixteen
+Theme URI: https://wordpress.org/themes/twentysixteen/
+Author: the WordPress team
+Author URI: https://wordpress.org/
+Description: Twenty Sixteen is a modernized take on an ever-popular WordPress layout â€” the horizontal masthead with an optional right sidebar that works perfectly for blogs and websites. It has custom color options with beautiful default color schemes, a harmonious fluid grid using a mobile-first approach, and impeccable polish in every detail. Twenty Sixteen will make your WordPress look beautiful everywhere.
+Version: 1.0
+License: GNU General Public License v2 or later
+License URI: http://www.gnu.org/licenses/gpl-2.0.html
+Tags: black, blue, gray, red, white, yellow, dark, light, one-column, two-columns, right-sidebar, fixed-layout, responsive-layout, accessibility-ready, custom-background, custom-colors, custom-header, custom-menu, editor-style, featured-images, flexible-header, microformats, post-formats, rtl-language-support, sticky-post, threaded-comments, translation-ready
+Text Domain: twentysixteen
+
+This theme, like WordPress, is licensed under the GPL.
+Use it to make something cool, have fun, and share what you've learned with others.
+*/
+
+
+/**
+ * Table of Contents
+ *
+ * 1.0 - Normalize
+ * 2.0 - Genericons
+ * 3.0 - Typography
+ * 4.0 - Elements
+ * 5.0 - Forms
+ * 6.0 - Navigation
+ *   6.1 - Links
+ *   6.2 - Menus
+ * 7.0 - Accessibility
+ * 8.0 - Alignments
+ * 9.0 - Clearings
+ * 10.0 - Widgets
+ * 11.0 - Content
+ *    11.1 - Header
+ *    11.2 - Posts and pages
+ *    11.3 - Post Formats
+ *    11.4 - Comments
+ *    11.5 - Sidebar
+ *    11.6 - Footer
+ * 12.0 - Media
+ *    12.1 - Captions
+ *    12.2 - Galleries
+ * 13.0 - Multisite
+ * 14.0 - Media Queries
+ *    14.1 - >= 710px
+ *    14.2 - >= 783px
+ *    14.3 - >= 910px
+ *    14.4 - >= 985px
+ *    14.5 - >= 1200px
+ * 15.0 - Print
+ */
+
+
+/**
+ * 1.0 - Normalize
+ *
+ * Normalizing styles have been helped along thanks to the fine work of
+ * Nicolas Gallagher and Jonathan Neal http://necolas.github.com/normalize.css/
+ */
+
+html {
+       font-family: sans-serif;
+       -webkit-text-size-adjust: 100%;
+       -ms-text-size-adjust: 100%;
+}
+
+body {
+       margin: 0;
+}
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+main,
+menu,
+nav,
+section,
+summary {
+       display: block;
+}
+
+audio,
+canvas,
+progress,
+video {
+       display: inline-block;
+       vertical-align: baseline;
+}
+
+audio:not([controls]) {
+       display: none;
+       height: 0;
+}
+
+[hidden],
+template {
+       display: none;
+}
+
+a {
+       background-color: transparent;
+}
+
+abbr[title] {
+       border-bottom: 1px dotted;
+}
+
+b,
+strong {
+       font-weight: 700;
+}
+
+small {
+       font-size: 80%;
+}
+
+sub,
+sup {
+       font-size: 75%;
+       line-height: 0;
+       position: relative;
+       vertical-align: baseline;
+}
+
+sup {
+       top: -0.5em;
+}
+
+sub {
+       bottom: -0.25em;
+}
+
+img {
+       border: 0;
+}
+
+svg:not(:root) {
+       overflow: hidden;
+}
+
+figure {
+       margin: 0;
+}
+
+hr {
+       -webkit-box-sizing: content-box;
+       -moz-box-sizing: content-box;
+       box-sizing: content-box;
+}
+
+code,
+kbd,
+pre,
+samp {
+       font-size: 1em;
+}
+
+button,
+input,
+optgroup,
+select,
+textarea {
+       color: inherit;
+       font: inherit;
+       margin: 0;
+}
+
+select {
+       text-transform: none;
+}
+
+button {
+       overflow: visible;
+}
+
+button,
+input,
+select,
+textarea {
+       max-width: 100%;
+}
+
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+       -webkit-appearance: button;
+       cursor: pointer;
+}
+
+button[disabled],
+html input[disabled] {
+       cursor: default;
+       opacity: .5;
+}
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+       border: 0;
+       padding: 0;
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+       margin-right: 0.4375em;
+       padding: 0;
+}
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+       height: auto;
+}
+
+input[type="search"] {
+       -webkit-appearance: textfield;
+}
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+       -webkit-appearance: none;
+}
+
+fieldset {
+       border: 1px solid #d1d1d1;
+       margin: 0 0 1.75em;
+       padding: 0.875em;
+}
+
+fieldset > :last-child {
+       margin-bottom: 0;
+}
+
+legend {
+       border: 0;
+       padding: 0;
+}
+
+textarea {
+       overflow: auto;
+       vertical-align: top;
+}
+
+optgroup {
+       font-weight: bold;
+}
+
+
+/**
+ * 2.0 - Genericons
+ */
+
+.menu-item-has-children a:after,
+.social-navigation a:before,
+.dropdown-toggle:after,
+.bypostauthor > article .fn:after,
+.comment-reply-title small a:before,
+.pagination .prev:before,
+.pagination .next:before,
+.pagination .nav-links:before,
+.pagination .nav-links:after,
+.search-submit:before {
+       -moz-osx-font-smoothing: grayscale;
+       -webkit-font-smoothing: antialiased;
+       display: inline-block;
+       font-family: "Genericons";
+       font-size: 16px;
+       font-style: normal;
+       font-variant: normal;
+       font-weight: normal;
+       line-height: 1;
+       speak: none;
+       text-align: center;
+       text-decoration: inherit;
+       text-transform: none;
+       vertical-align: top;
+}
+
+
+/**
+ * 3.0 - Typography
+ */
+
+body,
+button,
+input,
+select,
+textarea {
+       color: #1a1a1a;
+       font-family: Merriweather, Georgia, serif;
+       font-size: 16px;
+       font-size: 1rem;
+       line-height: 1.75;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+       clear: both;
+       font-weight: 700;
+       margin: 0;
+       text-rendering: optimizeLegibility;
+}
+
+p {
+       margin: 0 0 1.75em;
+}
+
+dfn,
+cite,
+em,
+i {
+       font-style: italic;
+}
+
+blockquote {
+       border: 0 solid #1a1a1a;
+       border-left-width: 4px;
+       color: #686868;
+       font-size: 19px;
+       font-size: 1.1875rem;
+       font-style: italic;
+       line-height: 1.4736842105;
+       margin: 0 0 1.4736842105em;
+       padding: 0 0 0 1.263157895em;
+}
+
+blockquote,
+q {
+       quotes: none;
+}
+
+blockquote:before,
+blockquote:after,
+q:before,
+q:after {
+       content: "";
+}
+
+blockquote p {
+       margin-bottom: 1.4736842105em;
+}
+
+blockquote cite,
+blockquote small {
+       color: #1a1a1a;
+       display: block;
+       font-size: 16px;
+       font-size: 1rem;
+       line-height: 1.75;
+}
+
+blockquote cite:before,
+blockquote small:before {
+       content: "\2014\00a0";
+}
+
+blockquote em,
+blockquote i,
+blockquote cite {
+       font-style: normal;
+}
+
+blockquote strong,
+blockquote b {
+       font-weight: 400;
+}
+
+blockquote > :last-child {
+       margin-bottom: 0;
+}
+
+address {
+       font-style: italic;
+       margin: 0 0 1.75em;
+}
+
+code,
+kbd,
+tt,
+var,
+samp,
+pre {
+       font-family: Inconsolata, monospace;
+}
+
+pre {
+       border: 1px solid #d1d1d1;
+       font-size: 16px;
+       font-size: 1rem;
+       line-height: 1.3125;
+       margin: 0 0 1.75em;
+       max-width: 100%;
+       overflow: auto;
+       padding: 1.75em;
+       white-space: pre;
+       white-space: pre-wrap;
+       word-wrap: break-word;
+}
+
+code {
+       background-color: #d1d1d1;
+       padding: 0.125em 0.25em;
+}
+
+abbr,
+acronym {
+       border-bottom: 1px dotted #d1d1d1;
+       cursor: help;
+}
+
+mark,
+ins {
+       background: #007acc;
+       color: #fff;
+       padding: 0.125em 0.25em;
+       text-decoration: none;
+}
+
+big {
+       font-size: 125%;
+}
+
+
+/**
+ * 4.0 - Elements
+ */
+
+html {
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+}
+
+*,
+*:before,
+*:after {
+       /* Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see http://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
+       -webkit-box-sizing: inherit;
+       -moz-box-sizing: inherit;
+       box-sizing: inherit;
+}
+
+body {
+       background: #1a1a1a;
+       /* Fallback for when there is no custom background color defined. */
+}
+
+hr {
+       background-color: #d1d1d1;
+       border: 0;
+       height: 1px;
+       margin: 0 0 1.75em;
+}
+
+ul,
+ol {
+       margin: 0 0 1.75em 1.25em;
+       padding: 0;
+}
+
+ul {
+       list-style: disc;
+}
+
+ol {
+       list-style: decimal;
+       margin-left: 1.5em;
+}
+
+li > ul,
+li > ol {
+       margin-bottom: 0;
+}
+
+dl {
+       margin: 0 0 1.75em;
+}
+
+dt {
+       font-weight: 700;
+}
+
+dd {
+       margin: 0 0 1.75em;
+}
+
+img {
+       height: auto;
+       /* Make sure images are scaled correctly. */
+       max-width: 100%;
+       /* Adhere to container width. */
+       vertical-align: middle;
+}
+
+del {
+       opacity: 0.8;
+}
+
+table,
+th,
+td {
+       border: 1px solid #d1d1d1;
+}
+
+table {
+       border-collapse: separate;
+       border-spacing: 0;
+       border-width: 1px 0 0 1px;
+       margin: 0 0 1.75em;
+       table-layout: fixed;
+       /* Prevents HTML tables from becoming too wide */
+       width: 100%;
+}
+
+caption,
+th,
+td {
+       font-weight: normal;
+       text-align: left;
+}
+
+th {
+       border-width: 0 1px 1px 0;
+       font-weight: 700;
+}
+
+td {
+       border-width: 0 1px 1px 0;
+}
+
+th,
+td {
+       padding: 0.4375em;
+}
+
+/* Placeholder text color -- selectors need to be separate to work. */
+::-webkit-input-placeholder {
+       color: #686868;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+}
+
+:-moz-placeholder {
+       color: #686868;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+}
+
+::-moz-placeholder {
+       color: #686868;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       opacity: 1;
+       /* Since FF19 lowers the opacity of the placeholder by default */
+}
+
+:-ms-input-placeholder {
+       color: #686868;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+}
+
+
+/**
+ * 5.0 - Forms
+ */
+
+input {
+       line-height: normal;
+}
+
+button,
+button[disabled]:hover,
+button[disabled]:focus,
+input[type="button"],
+input[type="button"][disabled]:hover,
+input[type="button"][disabled]:focus,
+input[type="reset"],
+input[type="reset"][disabled]:hover,
+input[type="reset"][disabled]:focus,
+input[type="submit"],
+input[type="submit"][disabled]:hover,
+input[type="submit"][disabled]:focus {
+       background: #1a1a1a;
+       border: 0;
+       border-radius: 2px;
+       color: #fff;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-weight: 700;
+       letter-spacing: 0.046875em;
+       line-height: 1;
+       padding: 0.84375em 0.875em 0.78125em;
+       text-transform: uppercase;
+}
+
+button:hover,
+button:focus,
+input[type="button"]:hover,
+input[type="button"]:focus,
+input[type="reset"]:hover,
+input[type="reset"]:focus,
+input[type="submit"]:hover,
+input[type="submit"]:focus {
+       background: #007acc;
+}
+
+button:focus,
+input[type="button"]:focus,
+input[type="reset"]:focus,
+input[type="submit"]:focus {
+       outline: thin dotted;
+       outline-offset: -4px;
+}
+
+input[type="text"],
+input[type="email"],
+input[type="url"],
+input[type="password"],
+input[type="search"],
+input[type="tel"],
+input[type="number"],
+textarea {
+       background: #f7f7f7;
+       background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0));
+       border: 1px solid #d1d1d1;
+       border-radius: 2px;
+       color: #686868;
+       padding: 0.625em 0.4375em;
+       width: 100%;
+}
+
+input[type="text"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="password"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="number"]:focus,
+textarea:focus {
+       background-color: #fff;
+       border-color: #007acc;
+       color: #1a1a1a;
+       outline: 0;
+}
+
+.post-password-form {
+       margin-bottom: 1.75em;
+}
+
+.post-password-form label {
+       color: #686868;
+       display: block;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       letter-spacing: 0.076923077em;
+       line-height: 1.6153846154;
+       margin-bottom: 1.75em;
+       text-transform: uppercase;
+}
+
+.post-password-form input[type="password"] {
+       margin-top: 0.4375em;
+}
+
+.post-password-form > :last-child {
+       margin-bottom: 0;
+}
+
+.search-form {
+       position: relative;
+}
+
+input[type="search"].search-field {
+       border-radius: 2px 0 0 2px;
+       width: -webkit-calc(100% - 42px);
+       width: calc(100% - 42px);
+}
+
+.search-submit:before {
+       content: "\f400";
+       font-size: 24px;
+       left: 2px;
+       line-height: 42px;
+       position: relative;
+       width: 40px;
+}
+
+.search-submit {
+       border-radius: 0 2px 2px 0;
+       bottom: 0;
+       overflow: hidden;
+       padding: 0;
+       position: absolute;
+       right: 0;
+       top: 0;
+       width: 42px;
+}
+
+
+/**
+ * 6.0 - Navigation
+ */
+
+/**
+ * 6.1 - Links
+ */
+
+a {
+       color: #007acc;
+       text-decoration: none;
+}
+
+a:hover,
+a:focus,
+a:active {
+       color: #686868;
+}
+
+a:focus {
+       outline: thin dotted;
+}
+
+a:hover,
+a:active {
+       outline: 0;
+}
+
+.entry-content a,
+.entry-summary a,
+.taxonomy-description a,
+.logged-in-as a,
+.comment-content a,
+.pingback .comment-body > a,
+.textwidget a,
+.entry-footer a:hover,
+.site-info a:hover {
+       box-shadow: 0 1px 0 0 currentColor;
+}
+
+.entry-content a:hover,
+.entry-content a:focus,
+.entry-summary a:hover,
+.entry-summary a:focus,
+.taxonomy-description a:hover,
+.taxonomy-description a:focus,
+.logged-in-as a:hover,
+.logged-in-as a:focus,
+.comment-content a:hover,
+.comment-content a:focus,
+.pingback .comment-body > a:hover,
+.pingback .comment-body > a:focus,
+.textwidget a:hover,
+.textwidget a:focus {
+       box-shadow: none;
+}
+
+
+/**
+ * 6.2 - Menus
+ */
+
+.site-header-menu {
+       display: none;
+       -webkit-flex: 0 1 100%;
+       -ms-flex: 0 1 100%;
+       flex: 0 1 100%;
+       margin: 0.875em 0;
+}
+
+.site-header-menu.toggled-on,
+.no-js .site-header-menu {
+       display: block;
+}
+
+.main-navigation {
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+}
+
+.site-footer .main-navigation {
+       margin-bottom: 1.75em;
+}
+
+.main-navigation ul {
+       list-style: none;
+       margin: 0;
+}
+
+.main-navigation li {
+       border-top: 1px solid #d1d1d1;
+       position: relative;
+}
+
+.main-navigation a {
+       color: #1a1a1a;
+       display: block;
+       line-height: 1.3125;
+       outline-offset: -1px;
+       padding: 0.84375em 0;
+}
+
+.main-navigation a:hover,
+.main-navigation a:focus {
+       color: #007acc;
+}
+
+.main-navigation .current-menu-item > a,
+.main-navigation .current-menu-ancestor > a {
+       font-weight: 700;
+}
+
+.main-navigation ul ul {
+       display: none;
+       margin-left: 0.875em;
+}
+
+.no-js .main-navigation ul ul {
+       display: block;
+}
+
+.main-navigation ul .toggled-on {
+       display: block;
+}
+
+.main-navigation .primary-menu {
+       border-bottom: 1px solid #d1d1d1;
+}
+
+.main-navigation .menu-item-has-children > a {
+       margin-right: 56px;
+}
+
+.dropdown-toggle {
+       background-color: transparent;
+       border: 0;
+       border-radius: 0;
+       color: #1a1a1a;
+       content: "";
+       height: 48px;
+       padding: 0;
+       position: absolute;
+       right: 0;
+       text-transform: none;
+       top: 0;
+       width: 48px;
+}
+
+.dropdown-toggle:after {
+       border: 0 solid #d1d1d1;
+       border-left-width: 1px;
+       content: "\f431";
+       font-size: 24px;
+       left: 1px;
+       position: relative;
+       width: 48px;
+}
+
+.dropdown-toggle:hover,
+.dropdown-toggle:focus {
+       background-color: transparent;
+       color: #007acc;
+}
+
+.dropdown-toggle:focus {
+       outline: thin dotted;
+       outline-offset: -1px;
+}
+
+.dropdown-toggle:focus:after {
+       border-color: transparent;
+}
+
+.dropdown-toggle.toggled-on:after {
+       content: "\f432";
+}
+
+.site-header .main-navigation + .social-navigation {
+       margin-top: 1.75em;
+}
+
+.site-footer .social-navigation {
+       margin-bottom: 1.75em;
+}
+
+.social-navigation ul {
+       list-style: none;
+       margin: 0 0 -0.4375em;
+}
+
+.social-navigation li {
+       float: left;
+       margin: 0 0.4375em 0.4375em 0;
+}
+
+.social-navigation a {
+       border: 1px solid #d1d1d1;
+       border-radius: 50%;
+       color: #1a1a1a;
+       display: block;
+       height: 35px;
+       position: relative;
+       width: 35px;
+}
+
+.social-navigation a:before {
+       content: "\f415";
+       height: 33px;
+       line-height: 33px;
+       text-align: center;
+       width: 33px;
+}
+
+.social-navigation a:hover:before,
+.social-navigation a:focus:before {
+       color: #007acc;
+}
+
+.social-navigation a[href*="codepen.io"]:before {
+       content: "\f216";
+}
+
+.social-navigation a[href*="digg.com"]:before {
+       content: "\f221";
+}
+
+.social-navigation a[href*="dribbble.com"]:before {
+       content: "\f201";
+}
+
+.social-navigation a[href*="dropbox.com"]:before {
+       content: "\f225";
+}
+
+.social-navigation a[href*="facebook.com"]:before {
+       content: "\f203";
+}
+
+.social-navigation a[href*="flickr.com"]:before {
+       content: "\f211";
+}
+
+.social-navigation a[href*="foursquare.com"]:before {
+       content: "\f226";
+}
+
+.social-navigation a[href*="plus.google.com"]:before {
+       content: "\f206";
+}
+
+.social-navigation a[href*="github.com"]:before {
+       content: "\f200";
+}
+
+.social-navigation a[href*="instagram.com"]:before {
+       content: "\f215";
+}
+
+.social-navigation a[href*="linkedin.com"]:before {
+       content: "\f208";
+}
+
+.social-navigation a[href*="path.com"]:before {
+       content: "\f219";
+}
+
+.social-navigation a[href*="pinterest.com"]:before {
+       content: "\f210";
+}
+
+.social-navigation a[href*="getpocket.com"]:before {
+       content: "\f224";
+}
+
+.social-navigation a[href*="polldaddy.com"]:before {
+       content: "\f217";
+}
+
+.social-navigation a[href*="reddit.com"]:before {
+       content: "\f222";
+}
+
+.social-navigation a[href*="skype.com"]:before {
+       content: "\f220";
+}
+
+.social-navigation a[href*="stumbleupon.com"]:before {
+       content: "\f223";
+}
+
+.social-navigation a[href*="tumblr.com"]:before {
+       content: "\f214";
+}
+
+.social-navigation a[href*="twitter.com"]:before {
+       content: "\f202";
+}
+
+.social-navigation a[href*="vimeo.com"]:before {
+       content: "\f212";
+}
+
+.social-navigation a[href*="wordpress.com"]:before,
+.social-navigation a[href*="wordpress.org"]:before {
+       content: "\f205";
+}
+
+.social-navigation a[href*="youtube.com"]:before {
+       content: "\f213";
+}
+
+.social-navigation a[href^="mailto:"]:before {
+       content: "\f410";
+}
+
+.social-navigation a[href*="spotify.com"]:before {
+       content: "\f515";
+}
+
+.social-navigation a[href*="twitch.tv"]:before {
+       content: "\f516";
+}
+
+.social-navigation a[href$="/feed/"]:before {
+       content: "\f413";
+}
+
+.post-navigation {
+       border-top: 4px solid #1a1a1a;
+       border-bottom: 4px solid #1a1a1a;
+       clear: both;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       margin: 0 7.6923% 3.5em;
+}
+
+.post-navigation a {
+       color: #1a1a1a;
+       display: block;
+       padding: 1.75em 0;
+}
+
+.post-navigation span {
+       display: block;
+}
+
+.post-navigation .meta-nav {
+       color: #686868;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       letter-spacing: 0.076923077em;
+       line-height: 1.6153846154;
+       margin-bottom: 0.5384615385em;
+       text-transform: uppercase;
+}
+
+.post-navigation .post-title {
+       display: inline;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 23px;
+       font-size: 1.4375rem;
+       font-weight: 700;
+       line-height: 1.2173913043;
+       text-rendering: optimizeLegibility;
+}
+
+.post-navigation a:hover .post-title,
+.post-navigation a:focus .post-title {
+       color: #007acc;
+}
+
+.post-navigation div + div {
+       border-top: 4px solid #1a1a1a;
+}
+
+.pagination {
+       border-top: 4px solid #1a1a1a;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 19px;
+       font-size: 1.1875rem;
+       margin: 0 7.6923% 2.947368421em;
+       min-height: 56px;
+       position: relative;
+}
+
+.pagination:before,
+.pagination:after {
+       background-color: #1a1a1a;
+       content: "";
+       height: 52px;
+       position: absolute;
+       top:0;
+       width: 52px;
+       z-index: 0;
+}
+
+.pagination:before {
+       right: 0;
+}
+
+.pagination:after {
+       right: 54px;
+}
+
+.pagination a:hover,
+.pagination a:focus {
+       color: #1a1a1a;
+}
+
+.pagination .nav-links {
+       padding-right: 106px;
+       position: relative;
+}
+
+.pagination .nav-links:before,
+.pagination .nav-links:after {
+       color: #fff;
+       font-size: 32px;
+       line-height: 51px;
+       opacity: 0.3;
+       position: absolute;
+       width: 52px;
+       z-index: 1;
+}
+
+.pagination .nav-links:before {
+       content: "\f429";
+       right: -1px;
+}
+
+.pagination .nav-links:after {
+       content: "\f430";
+       right: 55px;
+}
+
+/* reset screen-reader-text */
+.pagination .current .screen-reader-text {
+       position: static !important;
+}
+
+.pagination .page-numbers {
+       display: none;
+       letter-spacing: 0.013157895em;
+       line-height: 1;
+       margin: 0 0.7368421053em 0 -0.7368421053em;
+       padding: 0.8157894737em 0.7368421053em 0.3947368421em;
+       text-transform: uppercase;
+}
+
+.pagination .current {
+       display: inline-block;
+       font-weight: 700;
+}
+
+.pagination .prev,
+.pagination .next {
+       background-color: #1a1a1a;
+       color: #fff;
+       display: inline-block;
+       height: 52px;
+       margin: 0;
+       overflow: hidden;
+       padding: 0;
+       position: absolute;
+       top: 0;
+       width: 52px;
+       z-index: 2;
+}
+
+.pagination .prev:before,
+.pagination .next:before {
+       font-size: 32px;
+       height: 53px;
+       line-height: 52px;
+       position: relative;
+       width: 53px;
+}
+
+.pagination .prev:hover,
+.pagination .prev:focus,
+.pagination .next:hover,
+.pagination .next:focus {
+       background-color: #007acc;
+       color: #fff;
+}
+
+.pagination .prev:focus,
+.pagination .next:focus {
+       outline: 0;
+}
+
+.pagination .prev {
+       right: 54px;
+}
+
+.pagination .prev:before {
+       content: "\f430";
+       left: -1px;
+       top: -1px;
+}
+
+.pagination .next {
+       right: 0;
+}
+
+.pagination .next:before {
+       content: "\f429";
+       right: -1px;
+       top: -1px;
+}
+
+.image-navigation,
+.comment-navigation {
+       border-top: 1px solid #d1d1d1;
+       border-bottom: 1px solid #d1d1d1;
+       color: #686868;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       line-height: 1.6153846154;
+       margin: 0 7.6923% 2.1538461538em;
+       padding: 1.0769230769em 0;
+}
+
+.comment-navigation {
+       margin-right: 0;
+       margin-left: 0;
+}
+
+.comments-title + .comment-navigation {
+       border-bottom: 0;
+       margin-bottom: 0;
+}
+
+.image-navigation .nav-previous:not(:empty),
+.image-navigation .nav-next:not(:empty),
+.comment-navigation .nav-previous:not(:empty),
+.comment-navigation .nav-next:not(:empty) {
+       display: inline-block;
+}
+
+.image-navigation .nav-previous:not(:empty) + .nav-next:not(:empty):before,
+.comment-navigation .nav-previous:not(:empty) + .nav-next:not(:empty):before {
+       content: "\002f";
+       display: inline-block;
+       opacity: 0.7;
+       padding: 0 0.538461538em;
+}
+
+
+/**
+ * 7.0 - Accessibility
+ */
+
+/* Text meant only for screen readers */
+.says,
+.screen-reader-text {
+       clip: rect(1px, 1px, 1px, 1px);
+       height: 1px;
+       overflow: hidden;
+       position: absolute !important;
+       width: 1px;
+       /* many screen reader and browser combinations announce broken words as they would appear visually */
+       word-wrap: normal !important;
+}
+
+/* must have higher specificity than alternative color schemes inline styles */
+.site .skip-link {
+       background-color: #f1f1f1;
+       box-shadow: 0 0 1px 1px rgba(0, 0, 0, 0.2);
+       color: #21759b;
+       display: block;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 14px;
+       font-weight: 700;
+       left: -9999em;
+       outline: none;
+       padding: 15px 23px 14px;
+       text-decoration: none;
+       text-transform: none;
+       top: -9999em;
+}
+
+.logged-in .site .skip-link {
+       box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.2);
+       font-family: "Open Sans", sans-serif;
+}
+
+.site .skip-link:focus {
+       clip: auto;
+       height: auto;
+       left: 6px;
+       top: 7px;
+       width: auto;
+       z-index: 100000;
+}
+
+
+/**
+ * 8.0 - Alignments
+ */
+
+.alignleft {
+       float: left;
+       margin: 0.375em 1.75em 1.75em 0;
+}
+
+.alignright {
+       float: right;
+       margin: 0.375em 0 1.75em 1.75em;
+}
+
+.aligncenter {
+       clear: both;
+       display: block;
+       margin: 0 auto 1.75em;
+}
+
+blockquote.alignleft {
+       margin: 0.3157894737em 1.4736842105em 1.473684211em 0;
+}
+
+blockquote.alignright {
+       margin: 0.3157894737em 0 1.473684211em 1.4736842105em;
+}
+
+blockquote.aligncenter {
+       margin-bottom: 1.473684211em;
+}
+
+
+/**
+ * 9.0 - Clearings
+ */
+
+.clear:before,
+.clear:after,
+blockquote:before,
+blockquote:after,
+.entry-content:before,
+.entry-content:after,
+.entry-summary:before,
+.entry-summary:after,
+.comment-content:before,
+.comment-content:after,
+.site-content:before,
+.site-content:after,
+.site-main > article:before,
+.site-main > article:after,
+.primary-menu:before,
+.primary-menu:after,
+.social-links-menu:before,
+.social-links-menu:after,
+.textwidget:before,
+.textwidget:after,
+.content-bottom-widgets:before,
+.content-bottom-widgets:after {
+       content: "";
+       display: table;
+}
+
+.clear:after,
+blockquote:after,
+.entry-content:after,
+.entry-summary:after,
+.comment-content:after,
+.site-content:after,
+.site-main > article:after,
+.primary-menu:after,
+.social-links-menu:after,
+.textwidget:after,
+.content-bottom-widgets:after {
+       clear: both;
+}
+
+
+/**
+ * 10.0 - Widgets
+ */
+
+.widget {
+       border-top: 4px solid #1a1a1a;
+       margin-bottom: 3.5em;
+       padding-top: 1.75em;
+}
+
+.widget-area > :last-child,
+.widget > :last-child {
+       margin-bottom: 0;
+}
+
+.widget .widget-title {
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 16px;
+       font-size: 1rem;
+       letter-spacing: 0.046875em;
+       line-height: 1.3125;
+       margin: 0 0 1.75em;
+       text-transform: uppercase;
+}
+
+.widget .widget-title:empty {
+       margin-bottom: 0;
+}
+
+.widget-title a {
+       color: #1a1a1a;
+}
+
+/* Calendar widget */
+.widget.widget_calendar table {
+       margin: 0;
+}
+
+.widget_calendar td,
+.widget_calendar th {
+       line-height: 2.5625;
+       padding: 0;
+       text-align: center;
+}
+
+.widget_calendar caption {
+       font-weight: 900;
+       margin-bottom: 1.75em;
+}
+
+.widget_calendar tbody a {
+       background-color: #007acc;
+       color: #fff;
+       display: block;
+       font-weight: 700;
+}
+
+.widget_calendar tbody a:hover,
+.widget_calendar tbody a:focus {
+       background-color: #686868;
+       color: #fff;
+}
+
+/* Recent Posts widget */
+.widget_recent_entries .post-date {
+       color: #686868;
+       display: block;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       line-height: 1.615384615;
+       margin-bottom: 0.538461538em;
+}
+
+.widget_recent_entries li:last-child .post-date {
+       margin-bottom: 0;
+}
+
+/* RSS widget */
+.widget_rss .rsswidget img {
+       margin-top: -0.375em;
+}
+
+.widget_rss .rss-date,
+.widget_rss cite {
+       color: #686868;
+       display: block;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       font-style: normal;
+       line-height: 1.615384615;
+       margin-bottom: 0.538461538em;
+}
+
+.widget_rss .rssSummary:last-child {
+       margin-bottom: 2.1538461538em;
+}
+
+.widget_rss li:last-child :last-child {
+       margin-bottom: 0;
+}
+
+/* Tag Cloud widget */
+.tagcloud a {
+       border: 1px solid #d1d1d1;
+       border-radius: 2px;
+       display: inline-block;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: inherit !important;
+       line-height: 1;
+       margin: 0 0.1875em 0.4375em 0;
+       padding: 0.5625em 0.4375em 0.5em;
+}
+
+.tagcloud a:hover,
+.tagcloud a:focus {
+       border-color: #007acc;
+       color: #007acc;
+       outline: 0;
+}
+
+
+/**
+ * 11.0 - Content
+ */
+
+.site {
+       background-color: #fff;
+}
+
+.site-inner {
+       margin: 0 auto;
+       max-width: 1320px;
+       position: relative;
+}
+
+.site-content {
+       word-wrap: break-word;
+}
+
+/* Do not show the outline on the skip link target. */
+#content[tabindex="-1"]:focus {
+       outline: 0;
+}
+
+.site-main {
+       margin-bottom: 3.5em;
+}
+
+.site-main > :last-child {
+       margin-bottom: 0;
+}
+
+
+/**
+ * 11.1 - Header
+ */
+
+.site-header {
+       padding: 2.625em 7.6923%;
+}
+
+.site-header-main {
+       -webkit-align-items: center;
+       -ms-flex-align: center;
+       align-items: center;
+       display: -webkit-flex;
+       display: -ms-flexbox;
+       display: flex;
+       -webkit-flex-wrap: wrap;
+       -ms-flex-wrap: wrap;
+       flex-wrap: wrap;
+}
+
+.site-branding {
+       margin: 0.875em auto 0.875em 0;
+}
+
+.site-title {
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 23px;
+       font-size: 1.4375rem;
+       font-weight: 700;
+       line-height: 1.2173913043;
+       margin: 0;
+}
+
+.site-branding .site-title a {
+       color: #1a1a1a;
+}
+
+.site-branding .site-title a:hover,
+.site-branding .site-title a:focus {
+       color: #007acc;
+}
+
+.site-description {
+       color: #686868;
+       display: none;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       font-weight: 400;
+       line-height: 1.0769230769;
+       margin: 0.538461538em 0 0;
+}
+
+.menu-toggle {
+       background-color: transparent;
+       border: 1px solid #d1d1d1;
+       color: #1a1a1a;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       margin: 1.076923077em 0;
+       padding: 0.769230769em;
+}
+
+.no-js .menu-toggle {
+       display: none;
+}
+
+.menu-toggle:hover,
+.menu-toggle:focus {
+       background-color: transparent;
+       border-color: #007acc;
+       color: #007acc;
+}
+
+.menu-toggle.toggled-on,
+.menu-toggle.toggled-on:hover,
+.menu-toggle.toggled-on:focus {
+       background-color: #1a1a1a;
+       border-color: #1a1a1a;
+       color: #fff;
+}
+
+.menu-toggle:focus {
+       outline: 0;
+}
+
+.menu-toggle.toggled-on:focus {
+       outline: thin dotted;
+}
+
+.header-image {
+       clear: both;
+       margin: 0.875em 0;
+}
+
+.header-image a {
+       display: block;
+}
+
+.header-image a:hover img,
+.header-image a:focus img {
+       opacity: 0.85;
+}
+
+
+/**
+ * 11.2 - Posts and pages
+ */
+
+.site-main > article {
+       margin-bottom: 3.5em;
+       position: relative;
+}
+
+.entry-header,
+.entry-summary,
+.entry-content,
+.entry-footer,
+.page-content {
+       margin-right: 7.6923%;
+       margin-left: 7.6923%;
+}
+
+.entry-title {
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 28px;
+       font-size: 1.75rem;
+       font-weight: 700;
+       line-height: 1.25;
+       margin-bottom: 1em;
+}
+
+.entry-title a {
+       color: #1a1a1a;
+}
+
+.entry-title a:hover,
+.entry-title a:focus {
+       color: #007acc;
+}
+
+.post-thumbnail {
+       display: block;
+       margin: 0 7.6923% 1.75em;
+}
+
+.post-thumbnail img {
+       display: block;
+}
+
+.no-sidebar .post-thumbnail img {
+       margin: 0 auto;
+}
+
+a.post-thumbnail:hover,
+a.post-thumbnail:focus {
+       opacity: 0.85;
+}
+
+.entry-content,
+.entry-summary {
+       border-color: #d1d1d1;
+}
+
+.entry-content h1,
+.entry-summary h1,
+.comment-content h1,
+.textwidget h1 {
+       font-size: 28px;
+       font-size: 1.75rem;
+       line-height: 1.25;
+       margin-top: 2em;
+       margin-bottom: 1em;
+}
+
+.entry-content h2,
+.entry-summary h2,
+.comment-content h2,
+.textwidget h2 {
+       font-size: 23px;
+       font-size: 1.4375rem;
+       line-height: 1.2173913043;
+       margin-top: 2.4347826087em;
+       margin-bottom: 1.2173913043em;
+}
+
+.entry-content h3,
+.entry-summary h3,
+.comment-content h3,
+.textwidget h3 {
+       font-size: 19px;
+       font-size: 1.1875rem;
+       line-height: 1.1052631579;
+       margin-top: 2.9473684211em;
+       margin-bottom: 1.4736842105em;
+}
+
+.entry-content h4,
+.entry-content h5,
+.entry-content h6,
+.entry-summary h4,
+.entry-summary h5,
+.entry-summary h6,
+.comment-content h4,
+.comment-content h5,
+.comment-content h6,
+.textwidget h4,
+.textwidget h5,
+.textwidget h6 {
+       font-size: 16px;
+       font-size: 1rem;
+       line-height: 1.3125;
+       margin-top: 3.5em;
+       margin-bottom: 1.75em;
+}
+
+.entry-content h4,
+.entry-summary h4,
+.comment-content h4,
+.textwidget h4 {
+       letter-spacing: 0.140625em;
+       text-transform: uppercase;
+}
+
+.entry-content h6,
+.entry-summary h6,
+.comment-content h6,
+.textwidget h6 {
+       font-style: italic;
+}
+
+.entry-content h1,
+.entry-content h2,
+.entry-content h3,
+.entry-content h4,
+.entry-content h5,
+.entry-content h6,
+.entry-summary h1,
+.entry-summary h2,
+.entry-summary h3,
+.entry-summary h4,
+.entry-summary h5,
+.entry-summary h6,
+.comment-content h1,
+.comment-content h2,
+.comment-content h3,
+.comment-content h4,
+.comment-content h5,
+.comment-content h6,
+.textwidget h1,
+.textwidget h2,
+.textwidget h3,
+.textwidget h4,
+.textwidget h5,
+.textwidget h6 {
+       font-weight: 900;
+}
+
+.entry-content h1:first-child,
+.entry-content h2:first-child,
+.entry-content h3:first-child,
+.entry-content h4:first-child,
+.entry-content h5:first-child,
+.entry-content h6:first-child,
+.entry-summary h1:first-child,
+.entry-summary h2:first-child,
+.entry-summary h3:first-child,
+.entry-summary h4:first-child,
+.entry-summary h5:first-child,
+.entry-summary h6:first-child,
+.comment-content h1:first-child,
+.comment-content h2:first-child,
+.comment-content h3:first-child,
+.comment-content h4:first-child,
+.comment-content h5:first-child,
+.comment-content h6:first-child,
+.textwidget h1:first-child,
+.textwidget h2:first-child,
+.textwidget h3:first-child,
+.textwidget h4:first-child,
+.textwidget h5:first-child,
+.textwidget h6:first-child {
+       margin-top: 0;
+}
+
+.post-navigation .post-title,
+.entry-title,
+.comments-title {
+       -webkit-hyphens: auto;
+       -moz-hyphens: auto;
+       -ms-hyphens: auto;
+       hyphens: auto;
+}
+
+body:not(.search-results) .entry-summary {
+       color: #686868;
+       font-size: 19px;
+       font-size: 1.1875rem;
+       line-height: 1.4736842105;
+       margin-bottom: 1.4736842105em;
+}
+
+body:not(.search-results) .entry-header + .entry-summary {
+       margin-top: -0.736842105em;
+}
+
+body:not(.search-results) .entry-summary p,
+body:not(.search-results) .entry-summary address,
+body:not(.search-results) .entry-summary hr,
+body:not(.search-results) .entry-summary ul,
+body:not(.search-results) .entry-summary ol,
+body:not(.search-results) .entry-summary dl,
+body:not(.search-results) .entry-summary dd,
+body:not(.search-results) .entry-summary table {
+       margin-bottom: 1.4736842105em;
+}
+
+body:not(.search-results) .entry-summary li > ul,
+body:not(.search-results) .entry-summary li > ol {
+       margin-bottom: 0;
+}
+
+body:not(.search-results) .entry-summary th,
+body:not(.search-results) .entry-summary td {
+       padding: 0.3684210526em;
+}
+
+body:not(.search-results) .entry-summary fieldset {
+       margin-bottom: 1.4736842105em;
+       padding: 0.3684210526em;
+}
+
+body:not(.search-results) .entry-summary blockquote {
+       border-color: currentColor;
+}
+
+body:not(.search-results) .entry-summary blockquote > :last-child {
+       margin-bottom: 0;
+}
+
+body:not(.search-results) .entry-summary .alignleft {
+       margin: 0.2631578947em 1.4736842105em 1.4736842105em 0;
+}
+
+body:not(.search-results) .entry-summary .alignright {
+       margin: 0.2631578947em 0 1.4736842105em 1.4736842105em;
+}
+
+body:not(.search-results) .entry-summary .aligncenter {
+       margin-bottom: 1.4736842105em;
+}
+
+.entry-content > :last-child,
+.entry-summary > :last-child,
+body:not(.search-results) .entry-summary > :last-child,
+.page-content > :last-child,
+.comment-content > :last-child,
+.textwidget > :last-child {
+       margin-bottom: 0;
+}
+
+.more-link {
+       white-space: nowrap;
+}
+
+.author-info {
+       border-color: inherit;
+       border-style: solid;
+       border-width: 1px 0 1px 0;
+       clear: both;
+       padding-top: 1.75em;
+       padding-bottom: 1.75em;
+}
+
+.author-avatar .avatar {
+       float: left;
+       height: 42px;
+       margin: 0 1.75em 1.75em 0;
+       width: 42px;
+}
+
+.author-description > :last-child {
+       margin-bottom: 0;
+}
+
+.entry-content .author-title {
+       clear: none;
+       font-size: 16px;
+       font-size: 1rem;
+       font-weight: 900;
+       line-height: 1.75;
+       margin: 0;
+}
+
+.author-bio {
+       color: #686868;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       line-height: 1.6153846154;
+       margin-bottom: 1.6153846154em;
+       overflow: hidden;
+}
+
+.author-link {
+       white-space: nowrap;
+}
+
+.entry-footer {
+       color: #686868;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       line-height: 1.6153846154;
+       margin-top: 2.1538461538em;
+}
+
+.entry-footer:empty {
+       margin: 0;
+}
+
+.entry-footer a {
+       color: #686868;
+}
+
+.entry-footer a:hover,
+.entry-footer a:focus {
+       color: #007acc;
+}
+
+.entry-footer > span:not(:first-child):before {
+       content: "\002f";
+       display: inline-block;
+       opacity: 0.7;
+       padding: 0 0.538461538em;
+}
+
+.entry-footer .avatar {
+       height: 21px;
+       margin: -0.1538461538em 0.5384615385em 0 0;
+       width: 21px;
+}
+
+.sticky-post {
+       color: #686868;
+       display: block;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       letter-spacing: 0.076923077em;
+       line-height: 1.6153846154;
+       margin-bottom: 0.5384615385em;
+       text-transform: uppercase;
+}
+
+/**
+ * IE8 and earlier will drop any block with CSS3 selectors.
+ * Do not combine these styles with the next block.
+ */
+.updated:not(.published) {
+       display: none;
+}
+
+.sticky .posted-on,
+.byline {
+       display: none;
+}
+
+.single .byline,
+.group-blog .byline {
+       display: inline;
+}
+
+.page-header {
+       border-top: 4px solid #1a1a1a;
+       margin: 0 7.6923% 3.5em;
+       padding-top: 1.75em;
+}
+
+body.error404 .page-header,
+body.search-no-results .page-header {
+       border-top: 0;
+       padding-top: 0;
+}
+
+.page-title {
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 23px;
+       font-size: 1.4375rem;
+       line-height: 1.2173913043;
+}
+
+.taxonomy-description {
+       color: #686868;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       line-height: 1.6153846154;
+}
+
+.taxonomy-description p {
+       margin: 0.5384615385em 0 1.6153846154em;
+}
+
+.taxonomy-description > :last-child {
+       margin-bottom: 0;
+}
+
+.page-links {
+       clear: both;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       margin: 0 0 1.75em;
+}
+
+.page-links a,
+.page-links > span {
+       border: 1px solid #d1d1d1;
+       border-radius: 2px;
+       display: inline-block;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       height: 1.8461538462em;
+       line-height: 1.6923076923em;
+       margin-right: 0.3076923077em;
+       text-align: center;
+       width: 1.8461538462em;
+}
+
+.page-links a {
+       background-color: #1a1a1a;
+       border-color: #1a1a1a;
+       color: #fff;
+}
+
+.page-links a:hover,
+.page-links a:focus {
+       background-color: #007acc;
+       border-color: transparent;
+       color: #fff;
+}
+
+.page-links > .page-links-title {
+       border: 0;
+       color: #1a1a1a;
+       height: auto;
+       margin: 0;
+       padding-right: 0.6153846154em;
+       width: auto;
+}
+
+.entry-attachment {
+       margin-bottom: 1.75em;
+}
+
+.entry-caption {
+       color: #686868;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       font-style: italic;
+       line-height: 1.6153846154;
+       padding-top: 1.0769230769em;
+}
+
+.entry-caption > :last-child {
+       margin-bottom: 0;
+}
+
+.content-bottom-widgets {
+       margin: 0 7.6923%;
+}
+
+.content-bottom-widgets .widget-area {
+       margin-bottom: 3.5em;
+}
+
+
+/**
+ * 11.3 - Post Formats
+ */
+
+.format-aside .entry-title,
+.format-image .entry-title,
+.format-video .entry-title,
+.format-quote .entry-title,
+.format-gallery .entry-title,
+.format-status .entry-title,
+.format-link .entry-title,
+.format-audio .entry-title,
+.format-chat .entry-title {
+       font-size: 19px;
+       font-size: 1.1875rem;
+       line-height: 1.473684211;
+       margin-bottom: 1.473684211em;
+}
+
+.blog .format-status .entry-title,
+.archive .format-status .entry-title {
+       display: none;
+}
+
+
+/**
+ * 11.4 - Comments
+ */
+
+.comments-area {
+       margin: 0 7.6923% 3.5em;
+}
+
+.comment-list + .comment-respond,
+.comment-navigation + .comment-respond {
+       padding-top: 1.75em;
+}
+
+.comments-title,
+.comment-reply-title {
+       border-top: 4px solid #1a1a1a;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 23px;
+       font-size: 1.4375rem;
+       font-weight: 700;
+       line-height: 1.3125;
+       padding-top: 1.217391304em;
+}
+
+.comments-title {
+       margin-bottom: 1.217391304em;
+}
+
+.comment-list {
+       list-style: none;
+       margin: 0;
+}
+
+.comment-list article,
+.comment-list .pingback,
+.comment-list .trackback {
+       border-top: 1px solid #d1d1d1;
+       padding: 1.75em 0;
+}
+
+.comment-list .children {
+       list-style: none;
+       margin: 0;
+}
+
+.comment-list .children > li {
+       padding-left: 0.875em;
+}
+
+.comment-author {
+       color: #1a1a1a;
+       margin-bottom: 0.4375em;
+}
+
+.comment-author .avatar {
+       float: left;
+       height: 28px;
+       margin-right: 0.875em;
+       position: relative;
+       width: 28px;
+}
+
+.bypostauthor > article .fn:after {
+       content: "\f304";
+       left: 3px;
+       position: relative;
+       top: 5px;
+}
+
+.comment-metadata,
+.pingback .edit-link {
+       color: #686868;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       line-height: 1.6153846154;
+}
+
+.comment-metadata {
+       margin-bottom: 2.1538461538em;
+}
+
+.comment-metadata a,
+.pingback .comment-edit-link {
+       color: #686868;
+}
+
+.comment-metadata a:hover,
+.comment-metadata a:focus,
+.pingback .comment-edit-link:hover,
+.pingback .comment-edit-link:focus {
+       color: #007acc;
+}
+
+.comment-metadata .edit-link,
+.pingback .edit-link {
+       display: inline-block;
+}
+
+.comment-metadata .edit-link:before,
+.pingback .edit-link:before {
+       content: "\002f";
+       display: inline-block;
+       opacity: 0.7;
+       padding: 0 0.538461538em;
+}
+
+.comment-content ul,
+.comment-content ol {
+       margin: 0 0 1.5em 1.25em;
+}
+
+.comment-content li > ul,
+.comment-content li > ol {
+       margin-bottom: 0;
+}
+
+.comment-reply-link {
+       border: 1px solid #d1d1d1;
+       border-radius: 2px;
+       color: #007acc;
+       display: inline-block;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       line-height: 1;
+       margin-top: 2.1538461538em;
+       padding: 0.5384615385em 0.5384615385em 0.4615384615em;
+}
+
+.comment-reply-link:hover,
+.comment-reply-link:focus {
+       border-color: currentColor;
+       color: #007acc;
+       outline: 0;
+}
+
+.comment-form {
+       padding-top: 1.75em;
+}
+
+.comment-form label {
+       color: #686868;
+       display: block;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       letter-spacing: 0.076923077em;
+       line-height: 1.6153846154;
+       margin-bottom: 0.5384615385em;
+       text-transform: uppercase;
+}
+
+.comment-list .comment-form {
+       padding-bottom: 1.75em;
+}
+
+.comment-notes,
+.comment-awaiting-moderation,
+.logged-in-as,
+.form-allowed-tags {
+       color: #686868;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       line-height: 1.6153846154;
+       margin-bottom: 2.1538461538em;
+}
+
+.no-comments {
+       border-top: 1px solid #d1d1d1;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-weight: 700;
+       margin: 0;
+       padding-top: 1.75em;
+}
+
+.comment-navigation + .no-comments {
+       border-top: 0;
+       padding-top: 0;
+}
+
+.form-allowed-tags code {
+       font-family: Inconsolata, monospace;
+}
+
+.form-submit {
+       margin-bottom: 0;
+}
+
+.required {
+       color: #007acc;
+       font-family: Merriweather, Georgia, serif;
+}
+
+.comment-reply-title small {
+       font-size: 100%;
+}
+
+.comment-reply-title small a {
+       border: 0;
+       float: right;
+       height: 32px;
+       overflow: hidden;
+       width: 26px;
+}
+
+.comment-reply-title small a:hover,
+.comment-reply-title small a:focus {
+       color: #1a1a1a;
+}
+
+.comment-reply-title small a:before {
+       content: "\f405";
+       font-size: 32px;
+       position: relative;
+       top: -5px;
+}
+
+
+/**
+ * 11.5 - Sidebar
+ */
+
+.sidebar {
+       margin-bottom: 3.5em;
+       padding: 0 7.6923%;
+}
+
+
+/**
+ * 11.6 - Footer
+ */
+
+.site-footer {
+       padding: 0 7.6923% 1.75em;
+}
+
+.site-info {
+       color: #686868;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       line-height: 1.6153846154;
+}
+
+.site-info a {
+       color: #686868;
+}
+
+.site-info a:hover,
+.site-info a:focus {
+       color: #007acc;
+}
+
+.site-footer .site-title {
+       font-family: inherit;
+       font-size: inherit;
+       font-weight: 400;
+}
+
+.site-footer .site-title:after {
+       content: "\002f";
+       display: inline-block;
+       font-family: Montserrat, sans-serif;
+       opacity: 0.7;
+       padding: 0 0.307692308em 0 0.538461538em;
+}
+
+
+/**
+ * 12.0 - Media
+ */
+
+.site .avatar {
+       border-radius: 50%;
+}
+
+.entry-content .wp-smiley,
+.entry-summary .wp-smiley,
+.comment-content .wp-smiley,
+.textwidget .wp-smiley {
+       border: none;
+       margin-top: 0;
+       margin-bottom: 0;
+       padding: 0;
+}
+
+.entry-content a img,
+.entry-summary a img,
+.comment-content a img,
+.textwidget a img {
+       display: block;
+}
+
+/* Make sure embeds and iframes fit their containers. */
+embed,
+iframe,
+object,
+video {
+       margin-bottom: 1.75em;
+       max-width: 100%;
+       vertical-align: middle;
+}
+
+p > embed,
+p > iframe,
+p > object,
+p > video {
+       margin-bottom: 0;
+}
+
+.entry-content .wp-audio-shortcode a,
+.entry-content .wp-playlist a {
+       box-shadow: none;
+}
+
+.wp-audio-shortcode,
+.wp-video,
+.wp-playlist.wp-audio-playlist {
+       margin-top: 0;
+       margin-bottom: 1.75em;
+}
+
+.wp-playlist.wp-audio-playlist {
+       padding-bottom: 0;
+}
+
+.wp-playlist .wp-playlist-tracks {
+       margin-top: 0;
+}
+
+.wp-playlist-item .wp-playlist-caption {
+       border-bottom: 0;
+       padding: 0.7142857143em 0;
+}
+
+.wp-playlist-item .wp-playlist-item-length {
+       top: 0.7142857143em;
+}
+
+
+/**
+ * 12.1 - Captions
+ */
+
+.wp-caption {
+       margin-bottom: 1.75em;
+       max-width: 100%;
+}
+
+.wp-caption img[class*="wp-image-"] {
+       display: block;
+       margin: 0;
+}
+
+.wp-caption .wp-caption-text {
+       color: #686868;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       font-style: italic;
+       line-height: 1.6153846154;
+       padding-top: 0.5384615385em;
+}
+
+
+/**
+ * 12.2 - Galleries
+ */
+
+.gallery {
+       margin: 0 -1.1666667% 1.75em;
+}
+
+.gallery-item {
+       display: inline-block;
+       max-width: 33.33%;
+       padding: 0 1.1400652% 2.2801304%;
+       text-align: center;
+       vertical-align: top;
+       width: 100%;
+}
+
+.gallery-columns-1 .gallery-item {
+       max-width: 100%;
+}
+
+.gallery-columns-2 .gallery-item {
+       max-width: 50%;
+}
+
+.gallery-columns-4 .gallery-item {
+       max-width: 25%;
+}
+
+.gallery-columns-5 .gallery-item {
+       max-width: 20%;
+}
+
+.gallery-columns-6 .gallery-item {
+       max-width: 16.66%;
+}
+
+.gallery-columns-7 .gallery-item {
+       max-width: 14.28%;
+}
+
+.gallery-columns-8 .gallery-item {
+       max-width: 12.5%;
+}
+
+.gallery-columns-9 .gallery-item {
+       max-width: 11.11%;
+}
+
+.gallery-icon img {
+       margin: 0 auto;
+}
+
+.gallery-caption {
+       color: #686868;
+       display: block;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       font-style: italic;
+       line-height: 1.6153846154;
+       padding-top: 0.5384615385em;
+}
+
+.gallery-columns-6 .gallery-caption,
+.gallery-columns-7 .gallery-caption,
+.gallery-columns-8 .gallery-caption,
+.gallery-columns-9 .gallery-caption {
+       display: none;
+}
+
+
+/**
+ * 13.0 - Multisites
+ */
+
+.widecolumn {
+       margin-bottom: 3.5em;
+       padding: 0 7.6923%;
+}
+
+.widecolumn .mu_register {
+       width: auto;
+}
+
+.widecolumn .mu_register .mu_alert {
+       background: transparent;
+       border-color: #d1d1d1;
+       color: inherit;
+       margin-bottom: 3.5em;
+       padding: 1.75em;
+}
+
+.widecolumn form,
+.widecolumn .mu_register form {
+       margin-top: 0;
+}
+
+.widecolumn h2 {
+       font-size: 23px;
+       font-size: 1.4375rem;
+       font-weight: 900;
+       line-height: 1.2173913043;
+       margin-bottom: 1.2173913043em;
+}
+
+.widecolumn p {
+       margin: 1.75em 0;
+}
+
+.widecolumn p + h2 {
+       margin-top: 2.4347826087em;
+}
+
+.widecolumn label,
+.widecolumn .mu_register label {
+       color: #686868;
+       font-family: Montserrat, "Helvetica Neue", sans-serif;
+       font-size: 13px;
+       font-size: 0.8125rem;
+       font-weight: 400;
+       letter-spacing: 0.076923077em;
+       line-height: 1.6153846154;
+       text-transform: uppercase;
+}
+
+.widecolumn .mu_register label {
+       margin: 2.1538461538em 0.7692307692em 0.5384615385em 0;
+}
+
+.widecolumn .mu_register label strong {
+       font-weight: 400;
+}
+
+.widecolumn #key,
+.widecolumn .mu_register #blog_title,
+.widecolumn .mu_register #user_email,
+.widecolumn .mu_register #blogname,
+.widecolumn .mu_register #user_name {
+       font-size: 16px;
+       font-size: 1rem;
+       width: 100%;
+}
+
+.widecolumn .mu_register #blogname {
+       margin: 0;
+}
+
+.widecolumn .mu_register #blog_title,
+.widecolumn .mu_register #user_email,
+.widecolumn .mu_register #user_name {
+       margin: 0 0 0.375em;
+}
+
+.widecolumn #submit,
+.widecolumn .mu_register input[type="submit"] {
+       font-size: 16px;
+       font-size: 1rem;
+       margin: 0;
+       width: auto;
+}
+
+.widecolumn .mu_register .prefix_address,
+.widecolumn .mu_register .suffix_address {
+       font-size: inherit;
+}
+
+.widecolumn .mu_register > :last-child,
+.widecolumn form > :last-child {
+       margin-bottom: 0;
+}
+
+
+/**
+ * 14.0 - Media Queries
+ */
+
+/**
+ * Does the same thing as <meta name="viewport" content="width=device-width">,
+ * but in the future W3C standard way. -ms- prefix is required for IE10+ to
+ * render responsive styling in Windows 8 "snapped" views; IE10+ does not honor
+ * the meta tag. See https://core.trac.wordpress.org/ticket/25888.
+ */
+@-ms-viewport {
+       width: device-width;
+}
+
+@viewport {
+       width: device-width;
+}
+
+
+/**
+ * 14.1 - >= 710px
+ */
+
+@media screen and (min-width: 44.375em) {
+       body:not(.custom-background-image):before,
+       body:not(.custom-background-image):after {
+               background: inherit;
+               content: "";
+               display: block;
+               height: 21px;
+               left: 0;
+               position: fixed;
+               width: 100%;
+               z-index: 99;
+       }
+
+       body:not(.custom-background-image):before {
+               top: 0;
+       }
+
+       body:not(.custom-background-image).admin-bar:before {
+               top: 46px;
+       }
+
+       body:not(.custom-background-image):after {
+               bottom: 0;
+       }
+
+       .site {
+               margin: 21px;
+       }
+
+       .site-main {
+               margin-bottom: 5.25em;
+       }
+
+       .site-header {
+               padding: 3.9375em 7.6923%;
+       }
+
+       .site-branding {
+               margin-top: 1.3125em;
+               margin-bottom: 1.3125em;
+       }
+
+       .site-title {
+               font-size: 28px;
+               font-size: 1.75rem;
+               line-height: 1.25;
+       }
+
+       .site-description {
+               display: block;
+       }
+
+       .menu-toggle {
+               font-size: 16px;
+               font-size: 1.0rem;
+               margin: 1.3125em 0;
+               padding: 0.8125em 0.875em 0.6875em;
+       }
+
+       .site-header-menu {
+               margin: 1.3125em 0;
+       }
+
+       .site-header .main-navigation + .social-navigation {
+               margin-top: 2.625em;
+       }
+
+       .header-image {
+               margin: 1.3125em 0;
+       }
+
+       .pagination {
+               margin: 0 23.0769% 4.421052632em 7.6923%
+       }
+
+       .post-navigation {
+               margin-bottom: 5.25em;
+       }
+
+       .post-navigation .post-title {
+               font-size: 28px;
+               font-size: 1.75rem;
+               line-height: 1.25;
+       }
+
+       /* restore screen-reader-text */
+       .pagination .current .screen-reader-text {
+               position: absolute !important;
+       }
+
+       .pagination .page-numbers {
+               display: inline-block;
+       }
+
+       .site-main > article {
+               margin-bottom: 5.25em;
+       }
+
+       .entry-header,
+       .post-thumbnail,
+       .entry-content,
+       .entry-summary,
+       .entry-footer,
+       .comments-area,
+       .image-navigation,
+       .post-navigation,
+       .page-header,
+       .page-content,
+       .content-bottom-widgets {
+               margin-right: 23.0769%;
+       }
+
+       .entry-title {
+               font-size: 33px;
+               font-size: 2.0625rem;
+               line-height: 1.2727272727;
+               margin-bottom: 0.8484848485em;
+       }
+
+       .entry-content blockquote.alignleft,
+       .entry-content blockquote.alignright {
+               border-width: 4px 0 0 0;
+               padding: 0.9473684211em 0 0;
+               width: -webkit-calc(50% - 0.736842105em);
+               width: calc(50% - 0.736842105em);
+       }
+
+       .entry-content blockquote:not(.alignleft):not(.alignright),
+       .entry-summary blockquote,
+       .comment-content blockquote {
+               margin-left: -1.473684211em;
+       }
+
+       .entry-content blockquote blockquote:not(.alignleft):not(.alignright),
+       .entry-summary blockquote blockquote,
+       .comment-content blockquote blockquote {
+               margin-left: 0;
+       }
+
+       .entry-content ul,
+       .entry-summary ul,
+       .comment-content ul,
+       .entry-content ol,
+       .entry-summary ol,
+       .comment-content ol {
+               margin-left: 0;
+       }
+
+       .entry-content li > ul,
+       .entry-summary li > ul,
+       .comment-content li > ul,
+       .entry-content blockquote > ul,
+       .entry-summary blockquote > ul,
+       .comment-content blockquote > ul {
+               margin-left: 1.25em;
+       }
+
+       .entry-content li > ol,
+       .entry-summary li > ol,
+       .comment-content li > ol,
+       .entry-content blockquote > ol,
+       .entry-summary blockquote > ol,
+       .comment-content blockquote > ol {
+               margin-left: 1.5em;
+       }
+
+       .comment-author {
+               margin-bottom: 0;
+       }
+
+       .comment-author .avatar {
+               height: 42px;
+               position: relative;
+               top: 0.25em;
+               width: 42px;
+       }
+
+       .comment-list .children > li {
+               padding-left: 1.75em;
+       }
+
+       .comment-list + .comment-respond,
+       .comment-navigation + .comment-respond {
+               padding-top: 3.5em;
+       }
+
+       .comments-area,
+       .widget,
+       .content-bottom-widgets .widget-area {
+               margin-bottom: 5.25em;
+       }
+
+       .sidebar,
+       .widecolumn {
+               margin-bottom: 5.25em;
+               padding-right: 23.0769%;
+       }
+
+       body:not(.search-results) .entry-summary li > ul,
+       body:not(.search-results) .entry-summary blockquote > ul {
+               margin-left: 1.157894737em;
+       }
+
+       body:not(.search-results) .entry-summary li > ol,
+       body:not(.search-results) .entry-summary blockquote > ol {
+               margin-left: 1.473684211em;
+       }
+}
+
+
+/**
+ * 14.2 - >= 783px
+ */
+
+@media screen and (min-width: 48.9375em) {
+       body:not(.custom-background-image).admin-bar:before {
+               top: 32px;
+       }
+}
+
+
+/**
+ * 14.3 - >= 910px
+ */
+
+@media screen and (min-width: 56.875em) {
+       .site-header {
+               padding-right: 4.5455%;
+               padding-left: 4.5455%;
+       }
+
+       .site-header-main {
+               -webkit-align-items: flex-start;
+               -ms-flex-align: start;
+               align-items: flex-start;
+       }
+
+       .site-header-menu {
+               display: block;
+               -webkit-flex: 0 1 auto;
+               -ms-flex: 0 1 auto;
+               flex: 0 1 auto;
+       }
+
+       .main-navigation {
+               margin: 0 -0.875em;
+       }
+
+       .main-navigation .primary-menu,
+       .main-navigation .primary-menu > li {
+               border: 0;
+       }
+
+       .main-navigation .primary-menu > li {
+               float: left;
+       }
+
+       .main-navigation a {
+               outline-offset: -8px;
+               padding: 0.65625em 0.875em;
+               white-space: nowrap;
+       }
+
+       .main-navigation li:hover > a,
+       .main-navigation li.focus > a {
+               color: #007acc;
+       }
+
+       .main-navigation ul ul {
+               border-bottom: 1px solid #d1d1d1;
+               display: block;
+               left: -999em;
+               margin: 0;
+               position: absolute;
+               z-index: 99999;
+       }
+
+       .main-navigation ul ul ul {
+               top: -1px;
+       }
+
+       .main-navigation ul ul ul:before,
+       .main-navigation ul ul ul:after {
+               border: 0;
+       }
+
+       .main-navigation ul ul li {
+               background-color: #fff;
+               border: 1px solid #d1d1d1;
+               border-bottom-width: 0;
+       }
+
+       .main-navigation ul ul a {
+               white-space: normal;
+               width: 12.6875em;
+       }
+
+       .main-navigation ul ul:before,
+       .main-navigation ul ul:after {
+               border-style: solid;
+               content: "";
+               position: absolute;
+       }
+
+       .main-navigation ul ul:before {
+               border-color: #d1d1d1 transparent;
+               border-width: 0 10px 10px;
+               right: 9px;
+               top: -9px;
+       }
+
+       .main-navigation ul ul:after {
+               border-color: #fff transparent;
+               border-width: 0 8px 8px;
+               right: 11px;
+               top: -7px;
+       }
+
+       .main-navigation li:hover > ul,
+       .main-navigation li.focus > ul {
+               left: auto;
+               right: 0;
+       }
+
+       .main-navigation ul ul li:hover > ul,
+       .main-navigation ul ul li.focus > ul {
+               left: auto;
+               right: 100%;
+       }
+
+       .main-navigation .menu-item-has-children > a {
+               margin: 0;
+               padding-right: 2.25em;
+       }
+
+       .main-navigation .menu-item-has-children > a:after {
+               content: "\f431";
+               position: absolute;
+               right: 0.625em;
+               top: 0.8125em;
+       }
+
+       .main-navigation ul ul .menu-item-has-children > a {
+               padding-right: 2.0625em;
+       }
+
+       .main-navigation ul ul .menu-item-has-children > a:after {
+               right: 0.5625em;
+               top: 0.875em;
+               -webkit-transform: rotate(90deg);
+               -moz-transform: rotate(90deg);
+               -ms-transform: rotate(90deg);
+               transform: rotate(90deg);
+       }
+
+       .dropdown-toggle,
+       .main-navigation ul .dropdown-toggle.toggled-on,
+       .menu-toggle,
+       .site-header .social-navigation,
+       .site-footer .main-navigation {
+               display: none;
+       }
+
+       .site-content {
+               padding: 0 4.5455%;
+       }
+
+       .content-area {
+               float: left;
+               margin-right: -100%;
+               width: 70%;
+       }
+
+       .entry-header,
+       .post-thumbnail,
+       .entry-content,
+       .entry-summary,
+       .entry-footer,
+       .comments-area,
+       .image-navigation,
+       .post-navigation,
+       .pagination,
+       .page-header,
+       .page-content,
+       .content-bottom-widgets {
+               margin-right: 0;
+               margin-left: 0;
+       }
+
+       .sidebar {
+               float: left;
+               margin-left: 75%;
+               padding: 0;
+               width: 25%;
+       }
+
+       .widget {
+               font-size: 13px;
+               font-size: 0.8125rem;
+               line-height: 1.6153846154;
+               margin-bottom: 3.230769231em;
+               padding-top: 1.615384615em;
+       }
+
+       .widget .widget-title {
+               margin-bottom: 1.3125em;
+       }
+
+       .widget p,
+       .widget address,
+       .widget hr,
+       .widget ul,
+       .widget ol,
+       .widget dl,
+       .widget dd,
+       .widget table {
+               margin-bottom: 1.6153846154em;
+       }
+
+       .widget li > ul,
+       .widget li > ol {
+               margin-bottom: 0;
+       }
+
+       .widget blockquote {
+               font-size: 16px;
+               font-size: 1rem;
+               line-height: 1.3125;
+               margin-bottom: 1.3125em;
+               padding-left: 1.0625em;
+       }
+
+       .widget blockquote cite,
+       .widget blockquote small {
+               font-size: 13px;
+               font-size: 0.8125rem;
+               line-height: 1.6153846154;
+       }
+
+       .widget th,
+       .widget td {
+               padding: 0.5384615385em;
+       }
+
+       .widget pre {
+               font-size: 13px;
+               font-size: 0.8125rem;
+               line-height: 1.6153846154;
+               margin-bottom: 1.6153846154em;
+               padding: 0.5384615385em;
+       }
+
+       .widget fieldset {
+               margin-bottom: 1.6153846154em;
+               padding: 0.5384615385em;
+       }
+
+       .widget button,
+       .widget input,
+       .widget select,
+       .widget textarea {
+               font-size: 13px;
+               font-size: 0.8125rem;
+               line-height: 1.6153846154;
+       }
+
+       .widget button,
+       .widget input[type="button"],
+       .widget input[type="reset"],
+       .widget input[type="submit"] {
+               line-height: 1;
+               padding: 0.846153846em;
+       }
+
+       .widget input[type="text"],
+       .widget input[type="email"],
+       .widget input[type="url"],
+       .widget input[type="password"],
+       .widget input[type="search"],
+       .widget input[type="tel"],
+       .widget input[type="number"],
+       .widget textarea {
+               padding: 0.4615384615em 0.5384615385em;
+       }
+
+       .widget h1 {
+               font-size: 23px;
+               font-size: 1.4375rem;
+               line-height: 1.2173913043;
+               margin-bottom: 0.9130434783em;
+       }
+
+       .widget h2 {
+               font-size: 19px;
+               font-size: 1.1875rem;
+               line-height: 1.1052631579;
+               margin-bottom: 1.1052631579em;
+       }
+
+       .widget h3 {
+               font-size: 16px;
+               font-size: 1rem;
+               line-height: 1.3125;
+               margin-bottom: 1.3125em;
+       }
+
+       .widget h4,
+       .widget h5,
+       .widget h6 {
+               font-size: 13px;
+               font-size: 0.8125rem;
+               line-height: 1.6153846154;
+               margin-bottom: 0.9130434783em;
+       }
+
+       .widget .alignleft {
+               margin: 0.2307692308em 1.6153846154em 1.6153846154em 0;
+       }
+
+       .widget .alignright {
+               margin: 0.2307692308em 0 1.6153846154em 1.6153846154em;
+       }
+
+       .widget .aligncenter {
+               margin-bottom: 1.6153846154em;
+       }
+
+       .widget_calendar td,
+       .widget_calendar th {
+               line-height: 2.6923076923;
+               padding: 0;
+       }
+
+       .widget_rss .rssSummary:last-child {
+               margin-bottom: 1.615384615em;
+       }
+
+       .widget input[type="search"].search-field {
+               width: -webkit-calc(100% - 35px);
+               width: calc(100% - 35px);
+       }
+
+       .widget .search-submit:before {
+               font-size: 16px;
+               left: 1px;
+               line-height: 35px;
+               width: 34px;
+       }
+
+       .widget button.search-submit {
+               padding: 0;
+               width: 35px;
+       }
+
+       .tagcloud a {
+               margin: 0 0.2307692308em 0.5384615385em 0;
+               padding: 0.5384615385em 0.4615384615em 0.4615384615em;
+       }
+
+       .textwidget h1 {
+               margin-top: 1.8260869565em;
+       }
+
+       .textwidget h2 {
+               margin-top: 2.2105263158em;
+       }
+
+       .textwidget h3 {
+               margin-top: 2.625em;
+       }
+
+       .textwidget h4 {
+               letter-spacing: 0.153846154em;
+       }
+
+       .textwidget h4,
+       .textwidget h5,
+       .textwidget h6 {
+               margin-top: 3.2307692308em;
+       }
+
+       .content-bottom-widgets .widget-area:nth-child(1):nth-last-child(2),
+       .content-bottom-widgets .widget-area:nth-child(2):nth-last-child(1) {
+               float: left;
+               margin-right: 7.1428571%;
+               width: 46.42857145%;
+       }
+
+       .content-bottom-widgets .widget-area:nth-child(2):nth-last-child(1):last-of-type {
+               margin-right: 0;
+       }
+
+       .site-footer {
+               -webkit-align-items: center;
+               -ms-flex-align: center;
+               align-items: center;
+               display: -webkit-flex;
+               display: -ms-flexbox;
+               display: flex;
+               -webkit-flex-wrap: wrap;
+               -ms-flex-wrap: wrap;
+               flex-wrap: wrap;
+               padding: 0 4.5455% 3.5em;
+       }
+
+       .site-footer .social-navigation {
+               margin: 0;
+               -webkit-order: 2;
+               -ms-flex-order: 2;
+               order: 2;
+       }
+
+       .site-info {
+               margin: 0.538461538em auto 0.538461538em 0;
+               -webkit-order: 1;
+               -ms-flex-order: 1;
+               order: 1;
+       }
+
+       .no-sidebar .content-area {
+               float: none;
+               margin: 0;
+               width: 100%;
+       }
+
+       .no-sidebar .entry-header,
+       .no-sidebar .entry-content,
+       .no-sidebar .entry-summary,
+       .no-sidebar .entry-footer,
+       .no-sidebar .comments-area,
+       .no-sidebar .image-navigation,
+       .no-sidebar .post-navigation,
+       .no-sidebar .pagination,
+       .no-sidebar .page-header,
+       .no-sidebar .page-content,
+       .no-sidebar .content-bottom-widgets {
+               margin-right: 15%;
+               margin-left: 15%;
+       }
+
+       .widecolumn {
+               padding-right: 15%;
+               padding-left: 15%;
+       }
+}
+
+
+/**
+ * 14.4 - >= 985px
+ */
+
+@media screen and (min-width: 61.5625em) {
+       .site-main {
+               margin-bottom: 7.0em;
+       }
+
+       .site-header {
+               padding: 5.25em 4.5455%;
+       }
+
+       .site-branding,
+       .site-header-menu,
+       .header-image {
+               margin-top: 1.75em;
+               margin-bottom: 1.75em;
+       }
+
+       .image-navigation {
+               margin-bottom: 3.230769231em;
+       }
+
+       .post-navigation {
+               margin-bottom: 7.0em;
+       }
+
+       .pagination {
+               margin-bottom: 5.894736842em;
+       }
+
+       .widget {
+               margin-bottom: 4.307692308em;
+       }
+
+       .site-main > article {
+               margin-bottom: 7.0em;
+       }
+
+       .entry-title {
+               font-size: 40px;
+               font-size: 2.5rem;
+               line-height: 1.225;
+               margin-bottom: 1.05em;
+       }
+
+       .format-aside .entry-title,
+       .format-image .entry-title,
+       .format-video .entry-title,
+       .format-quote .entry-title,
+       .format-gallery .entry-title,
+       .format-status .entry-title,
+       .format-link .entry-title,
+       .format-audio .entry-title,
+       .format-chat .entry-title {
+               font-size: 23px;
+               font-size: 1.4375em;
+               line-height: 1.304347826;
+               margin-bottom: 1.826086957em;
+       }
+
+       .post-thumbnail {
+               margin-bottom: 2.625em;
+       }
+
+       .entry-content h1,
+       .entry-summary h1,
+       .comment-content h1 {
+               font-size: 33px;
+               font-size: 2.0625rem;
+               line-height: 1.2727272727;
+               margin-top: 1.696969697em;
+               margin-bottom: 0.8484848485em;
+       }
+
+       .entry-content h2,
+       .entry-summary h2,
+       .comment-content h2 {
+               font-size: 28px;
+               font-size: 1.75rem;
+               line-height: 1.25;
+               margin-top: 2em;
+               margin-bottom: 1em;
+       }
+
+       .entry-content h3,
+       .entry-summary h3,
+       .comment-content h3 {
+               font-size: 23px;
+               font-size: 1.4375rem;
+               line-height: 1.2173913043;
+               margin-top: 2.4347826087em;
+               margin-bottom: 1.2173913043em;
+       }
+
+       .entry-content h4,
+       .entry-summary h4,
+       .entry-intro h4,
+       .comment-content h4 {
+               letter-spacing: 0.131578947em;
+       }
+
+       .entry-content h4,
+       .entry-content h5,
+       .entry-content h6,
+       .entry-summary h4,
+       .entry-summary h5,
+       .entry-summary h6,
+       .comment-content h4,
+       .comment-content h5,
+       .comment-content h6 {
+               font-size: 19px;
+               font-size: 1.1875rem;
+               line-height: 1.1052631579;
+               margin-top: 2.9473684211em;
+               margin-bottom: 1.473684211em;
+       }
+
+       .author-info {
+               border-bottom-width: 0;
+               padding-bottom: 0;
+       }
+
+       .comment-list + .comment-respond,
+       .comment-navigation + .comment-respond {
+               padding-top: 5.25em;
+       }
+
+       .comments-area,
+       .sidebar,
+       .content-bottom-widgets .widget-area,
+       .widecolumn {
+               margin-bottom: 7.0em;
+       }
+
+       body:not(.search-results) .entry-summary {
+               margin-bottom: 2.210526316em;
+       }
+
+       body:not(.search-results) .entry-header + .entry-summary {
+               margin-top: -1.105263158em;
+       }
+
+       body:not(.search-results) article:not(.type-page) .entry-content {
+               float: right;
+               width: 71.42857144%;
+       }
+
+       body:not(.search-results) article:not(.type-page) .entry-content > blockquote.alignleft.below-entry-meta {
+               margin-left: -40%;
+               width: -webkit-calc(60% - 1.4736842105em);
+               width: calc(60% - 1.4736842105em);
+       }
+
+       body:not(.search-results) article:not(.type-page) img.below-entry-meta,
+       body:not(.search-results) article:not(.type-page) figure.below-entry-meta {
+               clear: both;
+               display: block;
+               float: none;
+               margin-right: 0;
+               margin-left: -40%;
+               max-width: 140%;
+       }
+
+       body:not(.search-results) article:not(.type-page) figure.below-entry-meta img.below-entry-meta,
+       body:not(.search-results) article:not(.type-page) table figure.below-entry-meta,
+       body:not(.search-results) article:not(.type-page) table img.below-entry-meta {
+               margin: 0;
+               max-width: 100%;
+       }
+
+       body:not(.search-results) article:not(.type-page) .entry-footer {
+               float: left;
+               margin-top: 0.1538461538em;
+               width: 21.42857143%;
+       }
+
+       body:not(.search-results) article:not(.type-page) .entry-footer > span:not(:first-child):before {
+               display: none;
+       }
+
+       .single .byline,
+       .full-size-link,
+       body:not(.search-results).group-blog .byline,
+       body:not(.search-results) .entry-format,
+       body:not(.search-results) .cat-links,
+       body:not(.search-results) .tags-links,
+       body:not(.search-results) article:not(.sticky) .posted-on,
+       body:not(.search-results) article:not(.type-page) .comments-link,
+       body:not(.search-results) article:not(.type-page) .entry-footer .edit-link {
+               display: block;
+               margin-bottom: 0.5384615385em;
+       }
+
+       body:not(.search-results) article:not(.type-page) .entry-footer > span:last-child {
+               margin-bottom: 0;
+       }
+
+       body:not(.search-results) article:not(.type-page) .entry-footer .avatar {
+               display: block;
+               height: auto;
+               margin: 0 0 0.5384615385em;
+               width: 49px;
+       }
+
+       body.no-sidebar:not(.search-results) article:not(.type-page) .entry-content {
+               float: left;
+               margin-right: -100%;
+               margin-left: 34.99999999%;
+               width: 50.00000001%;
+       }
+
+       body.no-sidebar:not(.search-results) article:not(.type-page) .entry-footer {
+               margin-right: -100%;
+               margin-left: 15%;
+               width: 15%;
+       }
+}
+
+
+/**
+ * 14.5 - >= 1200px
+ */
+
+@media screen and (min-width: 75em) {
+       body:not(.search-results) .entry-summary {
+               font-size: 23px;
+               font-size: 1.4375rem;
+               line-height: 1.5217391304;
+               margin-bottom: 1.826086957em;
+       }
+
+       body:not(.search-results) .entry-header + .entry-summary {
+               margin-top: -0.913043478em;
+       }
+
+       body:not(.search-results) .entry-summary p,
+       body:not(.search-results) .entry-summary address,
+       body:not(.search-results) .entry-summary hr,
+       body:not(.search-results) .entry-summary ul,
+       body:not(.search-results) .entry-summary ol,
+       body:not(.search-results) .entry-summary dl,
+       body:not(.search-results) .entry-summary dd,
+       body:not(.search-results) .entry-summary table {
+               margin-bottom: 1.5217391304em;
+       }
+
+       body:not(.search-results) .entry-summary li > ul,
+       body:not(.search-results) .entry-summary blockquote > ul {
+               margin-left: 0.956521739em;
+       }
+
+       body:not(.search-results) .entry-summary li > ol,
+       body:not(.search-results) .entry-summary blockquote > ol {
+               margin-left: 1.52173913em;
+       }
+
+       body:not(.search-results) .entry-summary blockquote {
+               font-size: 23px;
+               font-size: 1.4375rem;
+               line-height: 1.5217391304;
+               margin: 0 0 1.5217391304em;
+               padding-left: 1.347826087em;
+       }
+
+       body:not(.search-results) .entry-summary blockquote:not(.alignleft):not(.alignright) {
+               margin-left: -1.52173913em;
+       }
+
+       body:not(.search-results) .entry-summary blockquote blockquote:not(.alignleft):not(.alignright) {
+               margin-left: 0;
+       }
+
+       body:not(.search-results) .entry-summary blockquote cite,
+       body:not(.search-results) .entry-summary blockquote small {
+               font-size: 19px;
+               font-size: 1.1875rem;
+               line-height: 1.8421052632;
+       }
+
+       body:not(.search-results) .entry-summary th,
+       body:not(.search-results) .entry-summary td {
+               padding: 0.3043478261em;
+       }
+
+       body:not(.search-results) .entry-summary pre {
+               font-size: 16px;
+               font-size: 1rem;
+               line-height: 1.75;
+               margin-bottom: 1.75em;
+               padding: 1.75em;
+       }
+
+       body:not(.search-results) .entry-summary fieldset {
+               margin-bottom: 1.5217391304em;
+               padding: 0.3043478261em;
+       }
+
+       body:not(.search-results) .entry-summary h1 {
+               margin-top: 2.121212121em;
+               margin-bottom: 1.060606061em;
+       }
+
+       body:not(.search-results) .entry-summary h2 {
+               margin-top: 2.5em;
+               margin-bottom: 1.25em;
+       }
+
+       body:not(.search-results) .entry-summary h3 {
+               margin-top: 3.043478261em;
+               margin-bottom: 1.52173913em;
+       }
+
+       body:not(.search-results) .entry-summary h4,
+       body:not(.search-results) .entry-summary h5,
+       body:not(.search-results) .entry-summary h6 {
+               margin-top: 3.684210526em;
+               margin-bottom: 1.842105263em;
+       }
+
+       body:not(.search-results) .entry-summary h1:first-child,
+       body:not(.search-results) .entry-summary h2:first-child,
+       body:not(.search-results) .entry-summary h3:first-child,
+       body:not(.search-results) .entry-summary h4:first-child,
+       body:not(.search-results) .entry-summary h5:first-child,
+       body:not(.search-results) .entry-summary h6:first-child {
+               margin-top: 0;
+       }
+
+       body:not(.search-results) .entry-summary .alignleft {
+               margin: 0.2608695652em 1.5217391304em 1.5217391304em 0;
+       }
+
+       body:not(.search-results) .entry-summary .alignright {
+               margin: 0.2608695652em 0 1.5217391304em 1.5217391304em;
+       }
+
+       body:not(.search-results) .entry-summary .aligncenter {
+               margin-bottom: 1.5217391304em;
+       }
+}
+
+
+/**
+ * 15.0 - Print
+ */
+
+@media print {
+       form,
+       button,
+       input,
+       select,
+       textarea,
+       .navigation,
+       .main-navigation,
+       .social-navigation,
+       .sidebar,
+       .content-bottom-widgets,
+       .header-image,
+       .page-links,
+       .edit-link,
+       .comment-respond,
+       .comment-edit-link,
+       .comment-reply-link,
+       .comment-metadata .edit-link,
+       .pingback .edit-link {
+               display: none;
+       }
+
+       body,
+       blockquote cite,
+       blockquote small,
+       pre,
+       .entry-content h4,
+       .entry-content h5,
+       .entry-content h6,
+       .entry-summary h4,
+       .entry-summary h5,
+       .entry-summary h6,
+       .comment-content h4,
+       .comment-content h5,
+       .comment-content h6,
+       .entry-content .author-title {
+               font-size: 12pt;
+       }
+
+       blockquote {
+               font-size: 14.25pt;
+       }
+
+       .site-title,
+       .page-title,
+       .comments-title,
+       .entry-content h2,
+       .entry-summary h2,
+       .comment-content h2,
+       .widecolumn h2 {
+               font-size: 17.25pt;
+       }
+
+       .site-description {
+               display: block;
+       }
+
+       .entry-title {
+               font-size: 24.75pt;
+               line-height: 1.2727272727;
+               margin-bottom: 1.696969697em;
+       }
+
+       .format-aside .entry-title,
+       .format-image .entry-title,
+       .format-video .entry-title,
+       .format-quote .entry-title,
+       .format-gallery .entry-title,
+       .format-status .entry-title,
+       .format-link .entry-title,
+       .format-audio .entry-title,
+       .format-chat .entry-title {
+               font-size: 17.25pt;
+               line-height: 1.304347826;
+               margin-bottom: 1.826086957em;
+       }
+
+       .entry-content h1,
+       .entry-summary h1,
+       .comment-content h1 {
+               font-size: 21pt;
+       }
+
+       .entry-content h3,
+       .entry-summary h3,
+       .comment-content h3,
+       body:not(.search-results) .entry-summary {
+               font-size: 14.25pt;
+       }
+
+       .site-description,
+       .author-bio,
+       .entry-footer,
+       .sticky-post,
+       .taxonomy-description,
+       .entry-caption,
+       .comment-metadata,
+       .comment-notes,
+       .comment-awaiting-moderation,
+       .site-info,
+       .wp-caption .wp-caption-text,
+       .gallery-caption {
+               font-size: 9.75pt;
+       }
+
+       body,
+       .site {
+               background: none !important; /* Brute force since user agents all print differently. */
+       }
+
+       body,
+       blockquote cite,
+       blockquote small,
+       .site-branding .site-title a,
+       .entry-title a,
+       .comment-author {
+               color: #1a1a1a !important; /* Make sure color schemes don't affect to print */
+       }
+
+       blockquote,
+       .page-header,
+       .comments-title {
+               border-color: #1a1a1a !important; /* Make sure color schemes don't affect to print */
+       }
+
+       blockquote,
+       .site-description,
+       body:not(.search-results) .entry-summary,
+       body:not(.search-results) .entry-summary blockquote,
+       .author-bio,
+       .entry-footer,
+       .entry-footer a,
+       .sticky-post,
+       .taxonomy-description,
+       .entry-caption,
+       .comment-author,
+       .comment-metadata a,
+       .comment-notes,
+       .comment-awaiting-moderation,
+       .site-info,
+       .site-info a,
+       .wp-caption .wp-caption-text,
+       .gallery-caption {
+               color: #686868 !important; /* Make sure color schemes don't affect to print */
+       }
+
+       code,
+       hr {
+               background-color: #d1d1d1 !important; /* Make sure color schemes don't affect to print */
+       }
+
+       pre,
+       abbr,
+       acronym,
+       table,
+       th,
+       td,
+       .author-info,
+       .comment-list article,
+       .comment-list .pingback,
+       .comment-list .trackback,
+       .no-comments {
+               border-color: #d1d1d1 !important; /* Make sure color schemes don't affect to print */
+       }
+
+       a {
+               color: #007acc !important; /* Make sure color schemes don't affect to print */
+       }
+
+       .entry-content a,
+       .entry-summary a,
+       .taxonomy-description a,
+       .comment-content a,
+       .pingback .comment-body > a {
+               box-shadow: none;
+               border-bottom: 1px solid #007acc !important; /* Make sure color schemes don't affect to print */
+       }
+
+       .site {
+               margin: 5%;
+       }
+
+       .site-inner {
+               max-width: none;
+       }
+
+       .site-header {
+               padding: 0 0 1.75em;
+       }
+
+       .site-branding {
+               margin-top: 0;
+               margin-bottom: 1.75em;
+       }
+
+       .site-main {
+               margin-bottom: 3.5em;
+       }
+
+       .entry-header,
+       .entry-footer,
+       .page-header,
+       .page-content,
+       .entry-content,
+       .entry-summary,
+       .post-thumbnail,
+       .comments-area {
+               margin-right: 0;
+               margin-left: 0;
+       }
+
+       .post-thumbnail,
+       .site-main > article {
+               margin-bottom: 3.5em;
+       }
+
+       .entry-content blockquote.alignleft,
+       .entry-content blockquote.alignright {
+               border-width: 4px 0 0 0;
+               padding: 0.9473684211em 0 0;
+               width: -webkit-calc(50% - 0.736842105em);
+               width: calc(50% - 0.736842105em);
+       }
+
+       body:not(.search-results) .entry-header + .entry-summary {
+               margin-top: -1.473684211em;
+       }
+
+       .site-footer,
+       .widecolumn {
+               padding: 0;
+       }
+}
similarity index 50%
rename from wp-content/themes/twentythirteen/author-bio.php
rename to wp-content/themes/twentysixteen/template-parts/biography.php
index ae2f522b3b5059ec2f7e86d75453907433e0902a..9e2e5b87f9f97ced192f524544a337b373e6f31b 100644 (file)
@@ -1,10 +1,10 @@
 <?php
 /**
- * The template for displaying Author bios
+ * The template part for displaying an Author biography
  *
  * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
  */
 ?>
 
        <div class="author-avatar">
                <?php
                /**
-                * Filter the author bio avatar size.
+                * Filter the Twenty Sixteen author bio avatar size.
                 *
-                * @since Twenty Thirteen 1.0
+                * @since Twenty Sixteen 1.0
                 *
                 * @param int $size The avatar height and width size in pixels.
                 */
-               $author_bio_avatar_size = apply_filters( 'twentythirteen_author_bio_avatar_size', 74 );
+               $author_bio_avatar_size = apply_filters( 'twentysixteen_author_bio_avatar_size', 42 );
+
                echo get_avatar( get_the_author_meta( 'user_email' ), $author_bio_avatar_size );
                ?>
        </div><!-- .author-avatar -->
+
        <div class="author-description">
-               <h2 class="author-title"><?php printf( __( 'About %s', 'twentythirteen' ), get_the_author() ); ?></h2>
+               <h2 class="author-title"><span class="author-heading"><?php _e( 'Author:', 'twentysixteen' ); ?></span> <?php echo get_the_author(); ?></h2>
+
                <p class="author-bio">
                        <?php the_author_meta( 'description' ); ?>
                        <a class="author-link" href="<?php echo esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ); ?>" rel="author">
-                               <?php printf( __( 'View all posts by %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ), get_the_author() ); ?>
+                               <?php printf( __( 'View all posts by %s', 'twentysixteen' ), get_the_author() ); ?>
                        </a>
-               </p>
+               </p><!-- .author-bio -->
        </div><!-- .author-description -->
-</div><!-- .author-info -->
\ No newline at end of file
+</div><!-- .author-info -->
diff --git a/wp-content/themes/twentysixteen/template-parts/content-none.php b/wp-content/themes/twentysixteen/template-parts/content-none.php
new file mode 100644 (file)
index 0000000..b6b7e7c
--- /dev/null
@@ -0,0 +1,33 @@
+<?php
+/**
+ * The template part for displaying a message that posts cannot be found
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+?>
+
+<section class="no-results not-found">
+       <header class="page-header">
+               <h1 class="page-title"><?php _e( 'Nothing Found', 'twentysixteen' ); ?></h1>
+       </header><!-- .page-header -->
+
+       <div class="page-content">
+               <?php if ( is_home() && current_user_can( 'publish_posts' ) ) : ?>
+
+                       <p><?php printf( __( 'Ready to publish your first post? <a href="%1$s">Get started here</a>.', 'twentysixteen' ), esc_url( admin_url( 'post-new.php' ) ) ); ?></p>
+
+               <?php elseif ( is_search() ) : ?>
+
+                       <p><?php _e( 'Sorry, but nothing matched your search terms. Please try again with some different keywords.', 'twentysixteen' ); ?></p>
+                       <?php get_search_form(); ?>
+
+               <?php else : ?>
+
+                       <p><?php _e( 'It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help.', 'twentysixteen' ); ?></p>
+                       <?php get_search_form(); ?>
+
+               <?php endif; ?>
+       </div><!-- .page-content -->
+</section><!-- .no-results -->
diff --git a/wp-content/themes/twentysixteen/template-parts/content-page.php b/wp-content/themes/twentysixteen/template-parts/content-page.php
new file mode 100644 (file)
index 0000000..2b57d2b
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+/**
+ * The template used for displaying page content
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+?>
+
+<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+       <header class="entry-header">
+               <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
+       </header><!-- .entry-header -->
+
+       <?php twentysixteen_post_thumbnail(); ?>
+
+       <div class="entry-content">
+               <?php
+               the_content();
+
+               wp_link_pages( array(
+                       'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentysixteen' ) . '</span>',
+                       'after'       => '</div>',
+                       'link_before' => '<span>',
+                       'link_after'  => '</span>',
+                       'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>%',
+                       'separator'   => '<span class="screen-reader-text">, </span>',
+               ) );
+               ?>
+       </div><!-- .entry-content -->
+
+       <?php
+               edit_post_link(
+                       sprintf(
+                               /* translators: %s: Name of current post */
+                               __( 'Edit<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
+                               get_the_title()
+                       ),
+                       '<footer class="entry-footer"><span class="edit-link">',
+                       '</span></footer><!-- .entry-footer -->'
+               );
+       ?>
+
+</article><!-- #post-## -->
diff --git a/wp-content/themes/twentysixteen/template-parts/content-search.php b/wp-content/themes/twentysixteen/template-parts/content-search.php
new file mode 100644 (file)
index 0000000..c4667c6
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+/**
+ * The template part for displaying results in search pages
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+?>
+
+<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+       <header class="entry-header">
+               <?php the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' ); ?>
+       </header><!-- .entry-header -->
+
+       <?php twentysixteen_post_thumbnail(); ?>
+
+       <?php twentysixteen_excerpt(); ?>
+
+       <?php if ( 'post' === get_post_type() ) : ?>
+
+               <footer class="entry-footer">
+                       <?php twentysixteen_entry_meta(); ?>
+                       <?php
+                               edit_post_link(
+                                       sprintf(
+                                               /* translators: %s: Name of current post */
+                                               __( 'Edit<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
+                                               get_the_title()
+                                       ),
+                                       '<span class="edit-link">',
+                                       '</span>'
+                               );
+                       ?>
+               </footer><!-- .entry-footer -->
+
+       <?php else : ?>
+
+               <?php
+                       edit_post_link(
+                               sprintf(
+                                       /* translators: %s: Name of current post */
+                                       __( 'Edit<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
+                                       get_the_title()
+                               ),
+                               '<footer class="entry-footer"><span class="edit-link">',
+                               '</span></footer><!-- .entry-footer -->'
+                       );
+               ?>
+
+       <?php endif; ?>
+</article><!-- #post-## -->
+
diff --git a/wp-content/themes/twentysixteen/template-parts/content-single.php b/wp-content/themes/twentysixteen/template-parts/content-single.php
new file mode 100644 (file)
index 0000000..241f528
--- /dev/null
@@ -0,0 +1,53 @@
+<?php
+/**
+ * The template part for displaying single posts
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+?>
+
+<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+       <header class="entry-header">
+               <?php the_title( '<h1 class="entry-title">', '</h1>' ); ?>
+       </header><!-- .entry-header -->
+
+       <?php twentysixteen_excerpt(); ?>
+
+       <?php twentysixteen_post_thumbnail(); ?>
+
+       <div class="entry-content">
+               <?php
+                       the_content();
+
+                       wp_link_pages( array(
+                               'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentysixteen' ) . '</span>',
+                               'after'       => '</div>',
+                               'link_before' => '<span>',
+                               'link_after'  => '</span>',
+                               'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>%',
+                               'separator'   => '<span class="screen-reader-text">, </span>',
+                       ) );
+
+                       if ( '' !== get_the_author_meta( 'description' ) ) {
+                               get_template_part( 'template-parts/biography' );
+                       }
+               ?>
+       </div><!-- .entry-content -->
+
+       <footer class="entry-footer">
+               <?php twentysixteen_entry_meta(); ?>
+               <?php
+                       edit_post_link(
+                               sprintf(
+                                       /* translators: %s: Name of current post */
+                                       __( 'Edit<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
+                                       get_the_title()
+                               ),
+                               '<span class="edit-link">',
+                               '</span>'
+                       );
+               ?>
+       </footer><!-- .entry-footer -->
+</article><!-- #post-## -->
diff --git a/wp-content/themes/twentysixteen/template-parts/content.php b/wp-content/themes/twentysixteen/template-parts/content.php
new file mode 100644 (file)
index 0000000..22b0ea4
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+/**
+ * The template part for displaying content
+ *
+ * @package WordPress
+ * @subpackage Twenty_Sixteen
+ * @since Twenty Sixteen 1.0
+ */
+?>
+
+<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
+       <header class="entry-header">
+               <?php if ( is_sticky() && is_home() && ! is_paged() ) : ?>
+                       <span class="sticky-post"><?php _e( 'Featured', 'twentysixteen' ); ?></span>
+               <?php endif; ?>
+
+               <?php the_title( sprintf( '<h2 class="entry-title"><a href="%s" rel="bookmark">', esc_url( get_permalink() ) ), '</a></h2>' ); ?>
+       </header><!-- .entry-header -->
+
+       <?php twentysixteen_excerpt(); ?>
+
+       <?php twentysixteen_post_thumbnail(); ?>
+
+       <div class="entry-content">
+               <?php
+                       /* translators: %s: Name of current post */
+                       the_content( sprintf(
+                               __( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
+                               get_the_title()
+                       ) );
+
+                       wp_link_pages( array(
+                               'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentysixteen' ) . '</span>',
+                               'after'       => '</div>',
+                               'link_before' => '<span>',
+                               'link_after'  => '</span>',
+                               'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>%',
+                               'separator'   => '<span class="screen-reader-text">, </span>',
+                       ) );
+               ?>
+       </div><!-- .entry-content -->
+
+       <footer class="entry-footer">
+               <?php twentysixteen_entry_meta(); ?>
+               <?php
+                       edit_post_link(
+                               sprintf(
+                                       /* translators: %s: Name of current post */
+                                       __( 'Edit<span class="screen-reader-text"> "%s"</span>', 'twentysixteen' ),
+                                       get_the_title()
+                               ),
+                               '<span class="edit-link">',
+                               '</span>'
+                       );
+               ?>
+       </footer><!-- .entry-footer -->
+</article><!-- #post-## -->
diff --git a/wp-content/themes/twentythirteen/404.php b/wp-content/themes/twentythirteen/404.php
deleted file mode 100644 (file)
index eebc34b..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * The template for displaying 404 pages (Not Found)
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-
-                       <header class="page-header">
-                               <h1 class="page-title"><?php _e( 'Not Found', 'twentythirteen' ); ?></h1>
-                       </header>
-
-                       <div class="page-wrapper">
-                               <div class="page-content">
-                                       <h2><?php _e( 'This is somewhat embarrassing, isn&rsquo;t it?', 'twentythirteen' ); ?></h2>
-                                       <p><?php _e( 'It looks like nothing was found at this location. Maybe try a search?', 'twentythirteen' ); ?></p>
-
-                                       <?php get_search_form(); ?>
-                               </div><!-- .page-content -->
-                       </div><!-- .page-wrapper -->
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/archive.php b/wp-content/themes/twentythirteen/archive.php
deleted file mode 100644 (file)
index 445db7e..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?php
-/**
- * The template for displaying Archive pages
- *
- * Used to display archive-type pages if nothing more specific matches a query.
- * For example, puts together date-based pages if no date.php file exists.
- *
- * If you'd like to further customize these archive views, you may create a
- * new template file for each specific one. For example, Twenty Thirteen
- * already has tag.php for Tag archives, category.php for Category archives,
- * and author.php for Author archives.
- *
- * @link https://codex.wordpress.org/Template_Hierarchy
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-
-               <?php if ( have_posts() ) : ?>
-                       <header class="archive-header">
-                               <h1 class="archive-title"><?php
-                                       if ( is_day() ) :
-                                               printf( __( 'Daily Archives: %s', 'twentythirteen' ), get_the_date() );
-                                       elseif ( is_month() ) :
-                                               printf( __( 'Monthly Archives: %s', 'twentythirteen' ), get_the_date( _x( 'F Y', 'monthly archives date format', 'twentythirteen' ) ) );
-                                       elseif ( is_year() ) :
-                                               printf( __( 'Yearly Archives: %s', 'twentythirteen' ), get_the_date( _x( 'Y', 'yearly archives date format', 'twentythirteen' ) ) );
-                                       else :
-                                               _e( 'Archives', 'twentythirteen' );
-                                       endif;
-                               ?></h1>
-                       </header><!-- .archive-header -->
-
-                       <?php /* The loop */ ?>
-                       <?php while ( have_posts() ) : the_post(); ?>
-                               <?php get_template_part( 'content', get_post_format() ); ?>
-                       <?php endwhile; ?>
-
-                       <?php twentythirteen_paging_nav(); ?>
-
-               <?php else : ?>
-                       <?php get_template_part( 'content', 'none' ); ?>
-               <?php endif; ?>
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentythirteen/author.php b/wp-content/themes/twentythirteen/author.php
deleted file mode 100644 (file)
index c7b5d87..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<?php
-/**
- * The template for displaying Author archive pages
- *
- * @link https://codex.wordpress.org/Template_Hierarchy
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-
-               <?php if ( have_posts() ) : ?>
-
-                       <?php
-                               /*
-                                * Queue the first post, that way we know what author
-                                * we're dealing with (if that is the case).
-                                *
-                                * We reset this later so we can run the loop
-                                * properly with a call to rewind_posts().
-                                */
-                               the_post();
-                       ?>
-
-                       <header class="archive-header">
-                               <h1 class="archive-title"><?php printf( __( 'All posts by %s', 'twentythirteen' ), '<span class="vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ) . '" title="' . esc_attr( get_the_author() ) . '" rel="me">' . get_the_author() . '</a></span>' ); ?></h1>
-                       </header><!-- .archive-header -->
-
-                       <?php
-                               /*
-                                * Since we called the_post() above, we need to
-                                * rewind the loop back to the beginning that way
-                                * we can run the loop properly, in full.
-                                */
-                               rewind_posts();
-                       ?>
-
-                       <?php if ( get_the_author_meta( 'description' ) ) : ?>
-                               <?php get_template_part( 'author-bio' ); ?>
-                       <?php endif; ?>
-
-                       <?php /* The loop */ ?>
-                       <?php while ( have_posts() ) : the_post(); ?>
-                               <?php get_template_part( 'content', get_post_format() ); ?>
-                       <?php endwhile; ?>
-
-                       <?php twentythirteen_paging_nav(); ?>
-
-               <?php else : ?>
-                       <?php get_template_part( 'content', 'none' ); ?>
-               <?php endif; ?>
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentythirteen/category.php b/wp-content/themes/twentythirteen/category.php
deleted file mode 100644 (file)
index f82e0ab..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- * The template for displaying Category pages
- *
- * @link https://codex.wordpress.org/Template_Hierarchy
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-
-               <?php if ( have_posts() ) : ?>
-                       <header class="archive-header">
-                               <h1 class="archive-title"><?php printf( __( 'Category Archives: %s', 'twentythirteen' ), single_cat_title( '', false ) ); ?></h1>
-
-                               <?php if ( category_description() ) : // Show an optional category description ?>
-                               <div class="archive-meta"><?php echo category_description(); ?></div>
-                               <?php endif; ?>
-                       </header><!-- .archive-header -->
-
-                       <?php /* The loop */ ?>
-                       <?php while ( have_posts() ) : the_post(); ?>
-                               <?php get_template_part( 'content', get_post_format() ); ?>
-                       <?php endwhile; ?>
-
-                       <?php twentythirteen_paging_nav(); ?>
-
-               <?php else : ?>
-                       <?php get_template_part( 'content', 'none' ); ?>
-               <?php endif; ?>
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentythirteen/comments.php b/wp-content/themes/twentythirteen/comments.php
deleted file mode 100644 (file)
index 3d1aff4..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * The template for displaying Comments
- *
- * The area of the page that contains comments and the comment form.
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-/*
- * If the current post is protected by a password and the visitor has not yet
- * entered the password we will return early without loading the comments.
- */
-if ( post_password_required() )
-       return;
-?>
-
-<div id="comments" class="comments-area">
-
-       <?php if ( have_comments() ) : ?>
-               <h2 class="comments-title">
-                       <?php
-                               printf( _nx( 'One thought on &ldquo;%2$s&rdquo;', '%1$s thoughts on &ldquo;%2$s&rdquo;', get_comments_number(), 'comments title', 'twentythirteen' ),
-                                       number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' );
-                       ?>
-               </h2>
-
-               <ol class="comment-list">
-                       <?php
-                               wp_list_comments( array(
-                                       'style'       => 'ol',
-                                       'short_ping'  => true,
-                                       'avatar_size' => 74,
-                               ) );
-                       ?>
-               </ol><!-- .comment-list -->
-
-               <?php
-                       // Are there comments to navigate through?
-                       if ( get_comment_pages_count() > 1 && get_option( 'page_comments' ) ) :
-               ?>
-               <nav class="navigation comment-navigation" role="navigation">
-                       <h1 class="screen-reader-text section-heading"><?php _e( 'Comment navigation', 'twentythirteen' ); ?></h1>
-                       <div class="nav-previous"><?php previous_comments_link( __( '&larr; Older Comments', 'twentythirteen' ) ); ?></div>
-                       <div class="nav-next"><?php next_comments_link( __( 'Newer Comments &rarr;', 'twentythirteen' ) ); ?></div>
-               </nav><!-- .comment-navigation -->
-               <?php endif; // Check for comment navigation ?>
-
-               <?php if ( ! comments_open() && get_comments_number() ) : ?>
-               <p class="no-comments"><?php _e( 'Comments are closed.' , 'twentythirteen' ); ?></p>
-               <?php endif; ?>
-
-       <?php endif; // have_comments() ?>
-
-       <?php comment_form(); ?>
-
-</div><!-- #comments -->
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/content-aside.php b/wp-content/themes/twentythirteen/content-aside.php
deleted file mode 100644 (file)
index fbc01e6..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- * The template for displaying posts in the Aside post format
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-       <div class="entry-content">
-               <?php
-                       /* translators: %s: Name of current post */
-                       the_content( sprintf(
-                               __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ),
-                               the_title( '<span class="screen-reader-text">', '</span>', false )
-                       ) );
-
-                       wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) );
-               ?>
-       </div><!-- .entry-content -->
-
-       <footer class="entry-meta">
-               <?php if ( is_single() ) : ?>
-                       <?php twentythirteen_entry_meta(); ?>
-                       <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-
-                       <?php if ( get_the_author_meta( 'description' ) && is_multi_author() ) : ?>
-                               <?php get_template_part( 'author-bio' ); ?>
-                       <?php endif; ?>
-
-               <?php else : ?>
-                       <?php twentythirteen_entry_date(); ?>
-                       <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-               <?php endif; // is_single() ?>
-       </footer><!-- .entry-meta -->
-</article><!-- #post -->
diff --git a/wp-content/themes/twentythirteen/content-audio.php b/wp-content/themes/twentythirteen/content-audio.php
deleted file mode 100644 (file)
index 73a0d69..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-<?php
-/**
- * The template for displaying posts in the Audio post format
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-       <header class="entry-header">
-               <?php if ( is_single() ) : ?>
-               <h1 class="entry-title"><?php the_title(); ?></h1>
-               <?php else : ?>
-               <h1 class="entry-title">
-                       <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
-               </h1>
-               <?php endif; // is_single() ?>
-       </header><!-- .entry-header -->
-
-       <div class="entry-content">
-               <div class="audio-content">
-                       <?php
-                       /* translators: %s: Name of current post */
-                       the_content( sprintf(
-                               __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ),
-                               the_title( '<span class="screen-reader-text">', '</span>', false )
-                       ) );
-
-                       wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) );
-               ?>
-               </div><!-- .audio-content -->
-       </div><!-- .entry-content -->
-
-       <footer class="entry-meta">
-               <?php twentythirteen_entry_meta(); ?>
-               <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-
-               <?php if ( is_single() && get_the_author_meta( 'description' ) && is_multi_author() ) : ?>
-                       <?php get_template_part( 'author-bio' ); ?>
-               <?php endif; ?>
-       </footer><!-- .entry-meta -->
-</article><!-- #post -->
diff --git a/wp-content/themes/twentythirteen/content-chat.php b/wp-content/themes/twentythirteen/content-chat.php
deleted file mode 100644 (file)
index 6a40b89..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- * The template for displaying posts in the Chat post format
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-       <header class="entry-header">
-               <?php if ( is_single() ) : ?>
-               <h1 class="entry-title"><?php the_title(); ?></h1>
-               <?php else : ?>
-               <h1 class="entry-title">
-                       <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
-               </h1>
-               <?php endif; // is_single() ?>
-       </header><!-- .entry-header -->
-
-       <div class="entry-content">
-               <?php
-                       /* translators: %s: Name of current post */
-                       the_content( sprintf(
-                               __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ),
-                               the_title( '<span class="screen-reader-text">', '</span>', false )
-                       ) );
-
-                       wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) );
-               ?>
-       </div><!-- .entry-content -->
-
-       <footer class="entry-meta">
-               <?php twentythirteen_entry_meta(); ?>
-               <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-       </footer><!-- .entry-meta -->
-</article><!-- #post -->
diff --git a/wp-content/themes/twentythirteen/content-gallery.php b/wp-content/themes/twentythirteen/content-gallery.php
deleted file mode 100644 (file)
index a43647f..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * The template for displaying posts in the Gallery post format
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-       <header class="entry-header">
-               <?php if ( is_single() ) : ?>
-               <h1 class="entry-title"><?php the_title(); ?></h1>
-               <?php else : ?>
-               <h1 class="entry-title">
-                       <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
-               </h1>
-               <?php endif; // is_single() ?>
-       </header><!-- .entry-header -->
-
-       <div class="entry-content">
-               <?php if ( is_single() || ! get_post_gallery() ) : ?>
-                       <?php
-                       /* translators: %s: Name of current post */
-                       the_content( sprintf(
-                               __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ),
-                               the_title( '<span class="screen-reader-text">', '</span>', false )
-                       ) );
-
-                       wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) );
-               ?>
-               <?php else : ?>
-                       <?php echo get_post_gallery(); ?>
-               <?php endif; // is_single() ?>
-       </div><!-- .entry-content -->
-
-       <footer class="entry-meta">
-               <?php twentythirteen_entry_meta(); ?>
-
-               <?php if ( comments_open() && ! is_single() ) : ?>
-               <span class="comments-link">
-                       <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a comment', 'twentythirteen' ) . '</span>', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?>
-               </span><!-- .comments-link -->
-               <?php endif; // comments_open() ?>
-               <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-
-               <?php if ( is_single() && get_the_author_meta( 'description' ) && is_multi_author() ) : ?>
-                       <?php get_template_part( 'author-bio' ); ?>
-               <?php endif; ?>
-       </footer><!-- .entry-meta -->
-</article><!-- #post -->
diff --git a/wp-content/themes/twentythirteen/content-image.php b/wp-content/themes/twentythirteen/content-image.php
deleted file mode 100644 (file)
index 01e2f34..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/**
- * The template for displaying posts in the Image post format
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-       <header class="entry-header">
-               <?php if ( is_single() ) : ?>
-               <h1 class="entry-title"><?php the_title(); ?></h1>
-               <?php else : ?>
-               <h1 class="entry-title">
-                       <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
-               </h1>
-               <?php endif; // is_single() ?>
-       </header><!-- .entry-header -->
-
-       <div class="entry-content">
-               <?php
-                       /* translators: %s: Name of current post */
-                       the_content( sprintf(
-                               __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ),
-                               the_title( '<span class="screen-reader-text">', '</span>', false )
-                       ) );
-
-                       wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) );
-               ?>
-       </div><!-- .entry-content -->
-
-       <footer class="entry-meta">
-               <?php twentythirteen_entry_meta(); ?>
-
-               <?php if ( comments_open() && ! is_single() ) : ?>
-               <span class="comments-link">
-                       <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a comment', 'twentythirteen' ) . '</span>', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?>
-               </span><!-- .comments-link -->
-               <?php endif; // comments_open() ?>
-               <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-
-               <?php if ( is_single() && get_the_author_meta( 'description' ) && is_multi_author() ) : ?>
-                       <?php get_template_part( 'author-bio' ); ?>
-               <?php endif; ?>
-       </footer><!-- .entry-meta -->
-</article><!-- #post -->
diff --git a/wp-content/themes/twentythirteen/content-link.php b/wp-content/themes/twentythirteen/content-link.php
deleted file mode 100644 (file)
index cc02d82..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * The template for displaying posts in the Link post format
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-       <header class="entry-header">
-               <h1 class="entry-title">
-                       <a href="<?php echo esc_url( twentythirteen_get_link_url() ); ?>"><?php the_title(); ?></a>
-               </h1>
-
-               <div class="entry-meta">
-                       <?php twentythirteen_entry_date(); ?>
-                       <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-               </div><!-- .entry-meta -->
-       </header><!-- .entry-header -->
-
-       <div class="entry-content">
-               <?php
-                       /* translators: %s: Name of current post */
-                       the_content( sprintf(
-                               __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ),
-                               the_title( '<span class="screen-reader-text">', '</span>', false )
-                       ) );
-
-                       wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) );
-               ?>
-       </div><!-- .entry-content -->
-
-       <?php if ( is_single() ) : ?>
-       <footer class="entry-meta">
-               <?php twentythirteen_entry_meta(); ?>
-               <?php if ( get_the_author_meta( 'description' ) && is_multi_author() ) : ?>
-                       <?php get_template_part( 'author-bio' ); ?>
-               <?php endif; ?>
-       </footer><!-- .entry-meta -->
-       <?php endif; // is_single() ?>
-</article><!-- #post -->
diff --git a/wp-content/themes/twentythirteen/content-none.php b/wp-content/themes/twentythirteen/content-none.php
deleted file mode 100644 (file)
index d9549e1..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * The template for displaying a "No posts found" message
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<header class="page-header">
-       <h1 class="page-title"><?php _e( 'Nothing Found', 'twentythirteen' ); ?></h1>
-</header>
-
-<div class="page-content">
-       <?php if ( is_home() && current_user_can( 'publish_posts' ) ) : ?>
-
-       <p><?php printf( __( 'Ready to publish your first post? <a href="%1$s">Get started here</a>.', 'twentythirteen' ), admin_url( 'post-new.php' ) ); ?></p>
-
-       <?php elseif ( is_search() ) : ?>
-
-       <p><?php _e( 'Sorry, but nothing matched your search terms. Please try again with different keywords.', 'twentythirteen' ); ?></p>
-       <?php get_search_form(); ?>
-
-       <?php else : ?>
-
-       <p><?php _e( 'It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps searching can help.', 'twentythirteen' ); ?></p>
-       <?php get_search_form(); ?>
-
-       <?php endif; ?>
-</div><!-- .page-content -->
diff --git a/wp-content/themes/twentythirteen/content-quote.php b/wp-content/themes/twentythirteen/content-quote.php
deleted file mode 100644 (file)
index ac4de67..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-/**
- * The template for displaying posts in the Quote post format
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-       <div class="entry-content">
-               <?php
-                       /* translators: %s: Name of current post */
-                       the_content( sprintf(
-                               __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ),
-                               the_title( '<span class="screen-reader-text">', '</span>', false )
-                       ) );
-
-                       wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) );
-               ?>
-       </div><!-- .entry-content -->
-
-       <footer class="entry-meta">
-               <?php twentythirteen_entry_meta(); ?>
-
-               <?php if ( comments_open() && ! is_single() ) : ?>
-               <span class="comments-link">
-                       <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a comment', 'twentythirteen' ) . '</span>', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?>
-               </span><!-- .comments-link -->
-               <?php endif; // comments_open() ?>
-               <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-       </footer><!-- .entry-meta -->
-</article><!-- #post -->
diff --git a/wp-content/themes/twentythirteen/content-status.php b/wp-content/themes/twentythirteen/content-status.php
deleted file mode 100644 (file)
index e0e51f3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-/**
- * The template for displaying posts in the Status post format
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-       <div class="entry-content">
-               <?php
-                       /* translators: %s: Name of current post */
-                       the_content( sprintf(
-                               __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ),
-                               the_title( '<span class="screen-reader-text">', '</span>', false )
-                       ) );
-
-                       wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) );
-               ?>
-       </div><!-- .entry-content -->
-
-       <footer class="entry-meta">
-               <?php twentythirteen_entry_meta(); ?>
-               <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-
-               <?php if ( is_single() && get_the_author_meta( 'description' ) && is_multi_author() ) : ?>
-                       <?php get_template_part( 'author-bio' ); ?>
-               <?php endif; ?>
-       </footer><!-- .entry-meta -->
-</article><!-- #post -->
diff --git a/wp-content/themes/twentythirteen/content-video.php b/wp-content/themes/twentythirteen/content-video.php
deleted file mode 100644 (file)
index 8118a08..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-/**
- * The template for displaying posts in the Video post format
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-       <header class="entry-header">
-               <?php if ( is_single() ) : ?>
-               <h1 class="entry-title"><?php the_title(); ?></h1>
-               <?php else : ?>
-               <h1 class="entry-title">
-                       <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
-               </h1>
-               <?php endif; // is_single() ?>
-       </header><!-- .entry-header -->
-
-       <div class="entry-content">
-               <?php
-                       /* translators: %s: Name of current post */
-                       the_content( sprintf(
-                               __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ),
-                               the_title( '<span class="screen-reader-text">', '</span>', false )
-                       ) );
-
-                       wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) );
-               ?>
-       </div><!-- .entry-content -->
-
-       <footer class="entry-meta">
-               <?php twentythirteen_entry_meta(); ?>
-
-               <?php if ( comments_open() && ! is_single() ) : ?>
-               <span class="comments-link">
-                       <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a comment', 'twentythirteen' ) . '</span>', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?>
-               </span><!-- .comments-link -->
-               <?php endif; // comments_open() ?>
-               <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-
-               <?php if ( is_single() && get_the_author_meta( 'description' ) && is_multi_author() ) : ?>
-                       <?php get_template_part( 'author-bio' ); ?>
-               <?php endif; ?>
-       </footer><!-- .entry-meta -->
-</article><!-- #post -->
diff --git a/wp-content/themes/twentythirteen/content.php b/wp-content/themes/twentythirteen/content.php
deleted file mode 100644 (file)
index 98b6c31..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-/**
- * The default template for displaying content
- *
- * Used for both single and index/archive/search.
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-       <header class="entry-header">
-               <?php if ( has_post_thumbnail() && ! post_password_required() && ! is_attachment() ) : ?>
-               <div class="entry-thumbnail">
-                       <?php the_post_thumbnail(); ?>
-               </div>
-               <?php endif; ?>
-
-               <?php if ( is_single() ) : ?>
-               <h1 class="entry-title"><?php the_title(); ?></h1>
-               <?php else : ?>
-               <h1 class="entry-title">
-                       <a href="<?php the_permalink(); ?>" rel="bookmark"><?php the_title(); ?></a>
-               </h1>
-               <?php endif; // is_single() ?>
-
-               <div class="entry-meta">
-                       <?php twentythirteen_entry_meta(); ?>
-                       <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-               </div><!-- .entry-meta -->
-       </header><!-- .entry-header -->
-
-       <?php if ( is_search() ) : // Only display Excerpts for Search ?>
-       <div class="entry-summary">
-               <?php the_excerpt(); ?>
-       </div><!-- .entry-summary -->
-       <?php else : ?>
-       <div class="entry-content">
-               <?php
-                       /* translators: %s: Name of current post */
-                       the_content( sprintf(
-                               __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ),
-                               the_title( '<span class="screen-reader-text">', '</span>', false )
-                       ) );
-
-                       wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) );
-               ?>
-       </div><!-- .entry-content -->
-       <?php endif; ?>
-
-       <footer class="entry-meta">
-               <?php if ( comments_open() && ! is_single() ) : ?>
-                       <div class="comments-link">
-                               <?php comments_popup_link( '<span class="leave-reply">' . __( 'Leave a comment', 'twentythirteen' ) . '</span>', __( 'One comment so far', 'twentythirteen' ), __( 'View all % comments', 'twentythirteen' ) ); ?>
-                       </div><!-- .comments-link -->
-               <?php endif; // comments_open() ?>
-
-               <?php if ( is_single() && get_the_author_meta( 'description' ) && is_multi_author() ) : ?>
-                       <?php get_template_part( 'author-bio' ); ?>
-               <?php endif; ?>
-       </footer><!-- .entry-meta -->
-</article><!-- #post -->
diff --git a/wp-content/themes/twentythirteen/css/editor-style.css b/wp-content/themes/twentythirteen/css/editor-style.css
deleted file mode 100644 (file)
index 5684189..0000000
+++ /dev/null
@@ -1,771 +0,0 @@
-/*
-Theme Name: Twenty Thirteen
-Description: Used to style the TinyMCE editor.
-*/
-
-
-/**
- * Table of Contents:
- *
- * 1.0 - Body
- * 2.0 - Headings
- * 3.0 - Text Elements
- * 4.0 - Links
- * 5.0 - Alignment
- * 6.0 - Tables
- * 7.0 - Images
- * 8.0 - Galleries
- * 9.0 - Audio/Video
- * 10.0 - Post Formats
- * 11.0 - RTL
- * ----------------------------------------------------------------------------
- */
-
-
-/**
- * 1.0 Body
- * ----------------------------------------------------------------------------
- */
-
-html .mceContentBody {
-       font-size: 100%;
-       max-width: 604px;
-}
-
-body {
-       color: #141412;
-       font-family: "Source Sans Pro", Helvetica, sans-serif;
-       line-height: 1.5;
-       text-rendering: optimizeLegibility;
-       vertical-align: baseline;
-}
-
-
-/**
- * 2.0 Headings
- * ----------------------------------------------------------------------------
- */
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-       clear: both;
-       font-family: Bitter, Georgia, serif;
-       line-height: 1.3;
-}
-
-h1 {
-       font-size: 48px;
-       margin: 33px 0;
-}
-
-h2 {
-       font-size: 30px;
-       margin: 25px 0;
-}
-
-h3 {
-       font-size: 22px;
-       margin: 22px 0;
-}
-
-h4 {
-       font-size: 20px;
-       margin: 25px 0;
-}
-
-h5 {
-       font-size: 18px;
-       margin: 30px 0;
-}
-
-h6 {
-       font-size: 16px;
-       margin: 36px 0;
-}
-
-hr {
-       background: url(../images/dotted-line.png) repeat center top;
-       background-size: 4px 4px;
-       border: 0;
-       height: 1px;
-       margin: 0 0 24px;
-}
-
-
-/**
- * 3.0 Text Elements
- * ----------------------------------------------------------------------------
- */
-
-p {
-       margin: 0 0 24px;
-}
-
-ol,
-ul {
-       margin: 16px 0;
-       padding: 0 0 0 40px;
-}
-
-ul {
-       list-style-type: square;
-}
-
-ol {
-       list-style: decimal outside;
-}
-
-li > ul,
-li > ol {
-       margin: 0;
-}
-
-dl {
-       margin: 0 20px;
-}
-
-dt {
-       font-weight: bold;
-}
-
-dd {
-       margin: 0 0 20px;
-}
-
-strong {
-       font-weight: bold;
-}
-
-code,
-kbd,
-pre,
-samp {
-       font-family: monospace, serif;
-       font-size: 14px;
-}
-
-pre {
-       background: #f5f5f5;
-       color: #666;
-       font-family: monospace;
-       font-size: 14px;
-       margin: 20px 0;
-       overflow: auto;
-       padding: 20px;
-       white-space: pre;
-       white-space: pre-wrap;
-       word-wrap: break-word;
-}
-
-blockquote,
-q {
-       quotes: none;
-}
-
-blockquote:before,
-blockquote:after,
-q:before,
-q:after {
-       content: "";
-       content: none;
-}
-
-blockquote {
-       font-size: 24px;
-       font-style: italic;
-       font-weight: 300;
-       margin: 24px 40px;
-}
-
-blockquote blockquote {
-       margin-right: 0;
-}
-
-blockquote cite,
-blockquote small {
-       font-size: 14px;
-       font-weight: normal;
-       text-transform: uppercase;
-}
-
-cite {
-       border-bottom: 0;
-}
-
-abbr[title] {
-       border-bottom: 1px dotted;
-}
-
-address {
-       font-style: italic;
-       margin: 0 0 24px;
-}
-
-del {
-       color: #333;
-}
-
-ins {
-       background: #fff9c0;
-       border: none;
-       color: #333;
-       text-decoration: none;
-}
-
-sub,
-sup {
-       font-size: 75%;
-       line-height: 0;
-       position: relative;
-       vertical-align: baseline;
-}
-
-sup {
-       top: -0.5em;
-}
-
-sub {
-       bottom: -0.25em;
-}
-
-
-/**
- * 4.0 Links
- * ----------------------------------------------------------------------------
- */
-
-a {
-       color: #ca3c08;
-       text-decoration: none;
-}
-
-a:visited {
-       color: #ac0404;
-}
-
-a:focus {
-       outline: thin dotted;
-}
-
-a:active,
-a:hover {
-       color: #ea9629;
-       outline: 0;
-}
-
-a:hover {
-       text-decoration: underline;
-}
-
-
-/**
- * 5.0 Alignment
- * ----------------------------------------------------------------------------
- */
-
-.alignleft {
-       float: left;
-       margin: 5px 20px 5px 0;
-}
-
-.alignright {
-       float: right;
-       margin: 5px 0 5px 20px;
-}
-
-.aligncenter {
-       display: block;
-       margin: 5px auto;
-}
-
-img.alignnone {
-       margin: 5px 0;
-}
-
-
-/**
- * 6.0 Tables
- * ----------------------------------------------------------------------------
- */
-
-table {
-       border-bottom: 1px solid #ededed;
-       border-collapse: collapse;
-       border-spacing: 0;
-       font-size: 14px;
-       line-height: 2;
-       margin: 0 0 20px;
-       width: 100%;
-}
-
-caption,
-th,
-td {
-       font-weight: normal;
-       text-align: left;
-}
-
-caption {
-       font-size: 16px;
-       margin: 20px 0;
-}
-
-th {
-       font-weight: bold;
-       text-transform: uppercase;
-}
-
-td {
-       border-top: 1px solid #ededed;
-       padding: 6px 10px 6px 0;
-}
-
-
-/**
- * 7.0 Images
- * ----------------------------------------------------------------------------
- */
-
-img {
-       height: auto;
-       max-width: 100%;
-       vertical-align: middle;
-}
-
-.wp-caption {
-       background: transparent;
-       border: none;
-       margin: 0;
-       padding: 0;
-       text-align: left;
-}
-
-.html5-captions .wp-caption {
-       padding: 0;
-}
-
-.wp-caption.alignleft {
-       margin: 5px 10px 5px 0;
-}
-
-.html5-captions .wp-caption.alignleft {
-       margin-right: 20px;
-}
-
-.wp-caption.alignright {
-       margin: 5px 0 5px 10px;
-}
-
-.wp-caption.alignright img,
-.wp-caption.alignright .wp-caption-dd {
-       padding-left: 10px;
-}
-
-.html5-captions .wp-caption.alignright {
-       margin-left: 20px;
-}
-
-.html5-captions .wp-caption.alignright img,
-.html5-captions .wp-caption.alignright .wp-caption-dd {
-       padding: 0;
-}
-
-.wp-caption-dt {
-       margin: 0;
-}
-
-.wp-caption .wp-caption-text,
-.wp-caption-dd {
-       color: #220e10;
-       font-size: 18px;
-       font-style: italic;
-       font-weight: 300;
-       line-height: 1.5;
-       margin-bottom: 24px;
-       padding: 0;
-}
-
-.mceTemp + ul,
-.mceTemp + ol {
-       list-style-position: inside;
-}
-
-
-/**
- * 8.0 Galleries
- * ----------------------------------------------------------------------------
- */
-
-.gallery .gallery-item {
-       float: left;
-       margin: 0 4px 4px 0;
-       overflow: hidden;
-       padding: 0;
-       position: relative;
-}
-
-.gallery-columns-1 .gallery-item {
-       max-width: 100%;
-       width: auto;
-}
-
-.gallery-columns-2 .gallery-item {
-       max-width: 48%;
-       max-width: -webkit-calc(50% - 14px);
-       max-width:         calc(50% - 14px);
-       width: auto;
-}
-
-.gallery-columns-3 .gallery-item {
-       max-width: 32%;
-       max-width: -webkit-calc(33.3% - 11px);
-       max-width:         calc(33.3% - 11px);
-       width: auto;
-}
-
-.gallery-columns-4 .gallery-item {
-       max-width: 23%;
-       max-width: -webkit-calc(25% - 9px);
-       max-width:         calc(25% - 9px);
-       width: auto;
-}
-
-.gallery-columns-5 .gallery-item {
-       max-width: 19%;
-       max-width: -webkit-calc(20% - 8px);
-       max-width:         calc(20% - 8px);
-       width: auto;
-}
-
-.gallery-columns-6 .gallery-item {
-       max-width: 15%;
-       max-width: -webkit-calc(16.7% - 7px);
-       max-width:         calc(16.7% - 7px);
-       width: auto;
-}
-
-.gallery-columns-7 .gallery-item {
-       max-width: 13%;
-       max-width: -webkit-calc(14.28% - 7px);
-       max-width:         calc(14.28% - 7px);
-       width: auto;
-}
-
-.gallery-columns-8 .gallery-item {
-       max-width: 11%;
-       max-width: -webkit-calc(12.5% - 6px);
-       max-width:         calc(12.5% - 6px);
-       width: auto;
-}
-
-.gallery-columns-9 .gallery-item {
-       max-width: 9%;
-       max-width: -webkit-calc(11.1% - 6px);
-       max-width:         calc(11.1% - 6px);
-       width: auto;
-}
-
-.gallery-columns-1 .gallery-item:nth-of-type(1n),
-.gallery-columns-2 .gallery-item:nth-of-type(2n),
-.gallery-columns-3 .gallery-item:nth-of-type(3n),
-.gallery-columns-4 .gallery-item:nth-of-type(4n),
-.gallery-columns-5 .gallery-item:nth-of-type(5n),
-.gallery-columns-6 .gallery-item:nth-of-type(6n),
-.gallery-columns-7 .gallery-item:nth-of-type(7n),
-.gallery-columns-8 .gallery-item:nth-of-type(8n),
-.gallery-columns-9 .gallery-item:nth-of-type(9n) {
-       margin-right: 0;
-}
-
-.gallery-columns-1 .gallery-item:nth-of-type(1n),
-.gallery-columns-2 .gallery-item:nth-of-type(2n - 1),
-.gallery-columns-3 .gallery-item:nth-of-type(3n - 2),
-.gallery-columns-4 .gallery-item:nth-of-type(4n - 3),
-.gallery-columns-5 .gallery-item:nth-of-type(5n - 4),
-.gallery-columns-6 .gallery-item:nth-of-type(6n - 5),
-.gallery-columns-7 .gallery-item:nth-of-type(7n - 6),
-.gallery-columns-8 .gallery-item:nth-of-type(8n - 7),
-.gallery-columns-9 .gallery-item:nth-of-type(9n - 8) {
-       margin-left: 12px; /* Compensate for the default negative margin on .gallery, which can't be changed. */
-}
-
-.gallery .gallery-caption {
-       background-color: rgba(0, 0, 0, 0.7);
-       box-sizing: border-box;
-       color: #fff;
-       font-size: 14px;
-       line-height: 1.3;
-       margin: 0;
-       max-height: 50%;
-       opacity: 0;
-       padding: 2px 8px;
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       text-align: left;
-       -webkit-transition: opacity 400ms ease;
-       transition:         opacity 400ms ease;
-       width: 100%;
-}
-
-.gallery .gallery-caption:before {
-       box-shadow: 0 -10px 15px #000 inset;
-       content: "";
-       height: 100%;
-       min-height: 49px;
-       position: absolute;
-       left: 0;
-       top: 0;
-       width: 100%;
-}
-
-.gallery-item:hover .gallery-caption {
-       opacity: 1;
-}
-
-.gallery-columns-7 .gallery-caption,
-.gallery-columns-8 .gallery-caption,
-.gallery-columns-9 .gallery-caption {
-       display: none;
-}
-
-
-/**
- * 9.0 Audio/Video
- * ----------------------------------------------------------------------------
- */
-.mejs-mediaelement,
-.mejs-container .mejs-controls {
-       background: #220e10;
-}
-
-.mejs-controls .mejs-time-rail .mejs-time-loaded,
-.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
-       background: #fff;
-}
-
-.mejs-controls .mejs-time-rail .mejs-time-current {
-       background: #ea9629;
-}
-
-.mejs-controls .mejs-time-rail .mejs-time-total,
-.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total {
-       background: #595959;
-}
-
-.mejs-controls .mejs-time-rail span,
-.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total,
-.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
-       border-radius: 0;
-}
-
-
-/**
- * 10.0 Post Formats
- * ----------------------------------------------------------------------------
- */
-
-/* Aside */
-.post-format-aside {
-       background-color: #f7f5e7;
-}
-
-.post-format-aside blockquote {
-       font-size: 100%;
-       font-weight: normal;
-}
-
-.post-format-aside cite {
-       font-size: 100%;
-       text-transform: none;
-}
-
-.post-format-aside cite:before {
-       content: "\2014";
-       margin-right: 5px;
-}
-
-/* Audio */
-.post-format-audio {
-       background-color: #db572f;
-}
-
-.post-format-audio a {
-       color: #fbfaf3;
-}
-
-.post-format-audio:before {
-       background: url(../images/dotted-line.png) repeat-y 85px 0;
-       background-size: 4px 4px;
-       content: "\f109";
-       display: block;
-       float: left;
-       font-family: Genericons;
-       font-size: 64px;
-       -webkit-font-smoothing: antialiased;
-       height: 100%;
-       line-height: 1;
-       width: 120px;
-}
-
-/* Chat */
-.post-format-chat {
-       background-color: #eadaa6;
-}
-
-.post-format-chat a {
-       color: #722d19;
-}
-
-/* Gallery */
-.post-format-gallery {
-       background-color: #fbca3c;
-}
-
-.post-format-gallery a {
-       color: #722d19;
-}
-
-/* Image: same as Standard/Defaults */
-
-/* Link */
-.post-format-link {
-       background-color: #f7f5e7;
-}
-
-/* Quote */
-.post-format-quote {
-       background-color: #210d10;
-       color: #f7f5e7;
-}
-
-.post-format-quote a {
-       color: #e63f2a;
-}
-
-.post-format-quote blockquote {
-       font-size: 28px;
-       font-style: italic;
-       font-weight: 300;
-       margin: 0;
-       padding-left: 75px;
-       position: relative;
-}
-
-.post-format-quote blockquote:before {
-       content: '\201C';
-       font-size: 140px;
-       font-weight: 400;
-       line-height: .8;
-       padding-right: 25px;
-       position: absolute;
-       left: -15px;
-       top: -3px;
-}
-
-.post-format-quote blockquote small,
-.post-format-quote blockquote cite {
-       display: block;
-       font-size: 16px;
-}
-
-.format-quote .entry-content cite a {
-       border-bottom: 1px dotted #fff;
-       color: #fff;
-}
-
-.format-quote .entry-content cite a:hover {
-       text-decoration: none;
-}
-
-
-/* Status */
-.post-format-status {
-       background-color: #722d19;
-       color: #f7f5e7;
-       font-style: italic;
-       font-weight: 300;
-       padding: 0;
-       padding-left: 35px;
-}
-
-.post-format-status.mceContentBody {
-       font-size: 24px;
-}
-
-.post-format-status:before {
-       background: url(../images/dotted-line.png) repeat-y left bottom;
-       background-size: 4px 4px;
-       content: "";
-       display: block;
-       float: left;
-       height: 100%;
-       position: relative;
-       left: -30px;
-       width: 1px;
-}
-
-.post-format-status > p:first-child:before {
-       background-color: rgba(0, 0, 0, 0.65);
-       content: "";
-       height: 3px;
-       width: 13px;
-       margin-top: 13px;
-       position: absolute;
-       left: 9px;
-}
-
-.post-format-status a {
-       color: #eadaa6;
-}
-
-/* Video */
-.post-format-video {
-       background-color: #db572f;
-}
-
-.post-format-video a {
-       color: #fbfaf3;
-}
-
-
-/**
- * 11.0 RTL
- * ----------------------------------------------------------------------------
- */
-
-html .mceContentBody.rtl {
-       direction: rtl;
-       unicode-bidi: embed;
-}
-
-.rtl ol,
-.rtl ul {
-       padding: 0 40px 0 0;
-}
-
-.rtl .wp-caption,
-.rtl tr th {
-       text-align: right;
-}
-
-.rtl td {
-       padding: 6px 0 6px 10px;
-       text-align: right;
-}
-
-.rtl blockquote blockquote {
-       margin-left: 0;
-       margin-right: 24px;
-}
-
-.rtl.post-format-audio:before,
-.rtl.post-format-status:before,
-.rtl.post-format-status > p:first-child:before {
-       background: none;
-       content: none;
-}
diff --git a/wp-content/themes/twentythirteen/css/ie.css b/wp-content/themes/twentythirteen/css/ie.css
deleted file mode 100644 (file)
index da48acd..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
-Styles for older IE versions (previous to IE9).
-*/
-
-
-
-.genericon:before:hover,
-.menu-toggle:after:hover,
-.date a:before:hover,
-.entry-meta .author a:before:hover,
-.format-audio .entry-content:before:hover,
-.comments-link a:before:hover,
-.tags-links a:first-child:before:hover,
-.categories-links a:first-child:before:hover,
-.edit-link > a:before:hover,
-.attachment-meta:before:hover,
-.attachment-meta a:before:hover,
-.comment-awaiting-moderation:before:hover,
-.comment-reply-link:before:hover,
-.comment-reply-title small a:before:hover,
-.bypostauthor > .comment-body .fn:before:hover {
-       text-decoration: none;
-}
-
-.nav-menu .sub-menu ul,
-.nav-menu .children ul {
-       left: 100%;
-}
-
-.site-header .home-link {
-       max-width: 1040px;
-}
-
-.site-header .search-form [type="search"],
-.site-header .search-form [type="text"] {
-       padding-top: 6px;
-}
-
-img.alignright {
-       margin-right: 0;
-}
-
-img.alignleft {
-       margin-left: 0;
-}
-
-.site-main .sidebar-inner {
-       width: 1040px;
-}
-
-.site-main .widget-area {
-       margin-right: 60px;
-}
-
-.format-image .entry-content .size-full {
-       margin: 0;
-       max-width: 604px;
-}
-
-.gallery-columns-1 .gallery-item,
-.gallery-columns-2 .gallery-item,
-.gallery-columns-3 .gallery-item {
-       max-width: none;
-}
-
-.gallery img {
-       width: auto;
-}
-
-.gallery-caption {
-       background: #000;
-       filter: alpha(opacity=0);
-}
-
-.gallery-item:hover .gallery-caption {
-       filter: alpha(opacity=70);
-}
-
-.comment {
-       clear: both;
-}
-
-.comment-meta,
-.comment-content,
-.comment-list .reply {
-       width: 480px;
-}
-
-.depth-2 .comment-meta,
-.depth-2 .comment-content,
-.comment-list .depth-2 .reply {
-       width: 460px;
-}
-
-.depth-3 .comment-meta,
-.depth-3 .comment-content,
-.comment-list .depth-3 .reply {
-       width: 440px;
-}
-
-.depth-4 .comment-meta,
-.depth-4 .comment-content,
-.comment-list .depth-4 .reply {
-       width: 420px;
-}
-
-.depth-5 .comment-meta,
-.depth-5 .comment-content,
-.comment-list .depth-5 .reply {
-       width: 400px;
-}
-
-.comment-meta {
-       margin-bottom: 0;
-}
-
-.widget {
-       background: #f7f5e7;
-}
-
-.site-footer .widget {
-       background: none;
-}
-
-/* Internet Explorer 8 */
-.ie8 .site {
-       border: 0;
-}
-
-.ie8 img.size-full,
-.ie8 img.size-large {
-       height: auto;
-       width: auto;
-}
-
-.ie8 .sidebar .entry-header,
-.ie8 .sidebar .entry-content,
-.ie8 .sidebar .entry-summary,
-.ie8 .sidebar .entry-meta {
-       max-width: 724px;
-}
-
-.ie8 .author-info {
-       margin-left: 0;
-}
-
-.ie8 .paging-navigation .nav-previous .meta-nav {
-       padding: 5px 0 8px;
-       width: 40px;
-}
-
-.ie8 .paging-navigation .nav-next {
-       line-height: 1;
-}
-
-.ie8 .format-status .entry-content:before,
-.ie8 .format-status .entry-meta:before {
-       content: none;
-}
-
-.ie8 .site-main .widget-area {
-       margin-right: 0;
-}
-
-/* Internet Explorer 7 */
-.ie7 audio,
-.ie7 canvas,
-.ie7 video {
-       display: inline;
-       zoom: 1;
-}
-
-.ie7 legend {
-       margin-left: -7px;
-}
-
-.ie7 button,
-.ie7 input,
-.ie7 select,
-.ie7 textarea {
-       vertical-align: middle;
-}
-
-.ie7 button,
-.ie7 input[type="button"],
-.ie7 input[type="reset"],
-.ie7 input[type="submit"] {
-       overflow: visible;
-}
-
-.ie7 input[type="checkbox"],
-.ie7 input[type="radio"] {
-       height: 13px;
-       width: 13px;
-}
-
-.ie7 .screen-reader-text {
-       clip: rect(1px 1px 1px 1px);
-}
-
-.ie7 .site-header {
-       position: relative;
-       z-index: 1;
-}
-
-.ie7 .main-navigation {
-       max-width: 930px;
-       padding-right: 150px;
-}
-
-.ie7 .nav-menu li a,
-.ie7 .nav-menu li {
-       display: block;
-       float: left;
-}
-
-.ie7 .nav-menu ul {
-       top: 40px;
-}
-
-.ie7 .nav-menu .sub-menu,
-.ie7 .nav-menu .children {
-       display: none;
-       overflow: visible;
-}
-
-.ie7 ul.nav-menu li:hover > ul,
-.ie7 .nav-menu ul li:hover > ul {
-       display: block;
-}
-
-.ie7 .site-header .search-form [type="search"],
-.ie7 .site-header .search-form [type="text"] {
-       background-color: #fff;
-       border: 2px solid #c3c0ab;
-       cursor: text;
-       height: 28px;
-       outline: 0;
-       width: 150px;
-}
-
-.ie7 .entry-header,
-.ie7 .entry-content,
-.ie7 .entry-summary,
-.ie7 .entry-meta {
-       width: 604px;
-}
-
-.ie7 .format-status .entry-content,
-.ie7 .format-status .entry-meta {
-       padding-left: 60px;
-}
-
-.ie7 .sidebar .format-status .entry-content,
-.ie7 .sidebar .format-status .entry-meta {
-       padding-left: 60px;
-}
-
-.ie7 .sidebar .post-navigation .nav-links,
-.ie7 .sidebar .paging-navigation .nav-links {
-       width: 604px;
-}
-
-.ie7 .paging-navigation .meta-nav {
-       padding: 0 0 10px;
-       vertical-align: middle;
-       width: 40px;
-}
-
-.ie7 .comments-title,
-.ie7 .comment-list,
-.ie7 .comment-reply-title,
-.ie7 .comment-respond .comment-form {
-       width: 604px;
-}
-
-.ie7 .site-footer .widget-area {
-       max-width: none;
-       left: auto;
-}
-
-/* RTL for Internet Explorer 7 & 8 */
-.rtl .format-audio .entry-content:before,
-.rtl .comment-reply-link:before,
-.rtl .comment-reply-login:before {
-       -ms-filter: "FlipH";
-       filter: FlipH;
-}
diff --git a/wp-content/themes/twentythirteen/footer.php b/wp-content/themes/twentythirteen/footer.php
deleted file mode 100644 (file)
index 6dc4f94..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?php
-/**
- * The template for displaying the footer
- *
- * Contains footer content and the closing of the #main and #page div elements.
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?>
-
-               </div><!-- #main -->
-               <footer id="colophon" class="site-footer" role="contentinfo">
-                       <?php get_sidebar( 'main' ); ?>
-
-                       <div class="site-info">
-                               <?php do_action( 'twentythirteen_credits' ); ?>
-                               <a href="<?php echo esc_url( __( 'https://wordpress.org/', 'twentythirteen' ) ); ?>" title="<?php esc_attr_e( 'Semantic Personal Publishing Platform', 'twentythirteen' ); ?>"><?php printf( __( 'Proudly powered by %s', 'twentythirteen' ), 'WordPress' ); ?></a>
-                       </div><!-- .site-info -->
-               </footer><!-- #colophon -->
-       </div><!-- #page -->
-
-       <?php wp_footer(); ?>
-</body>
-</html>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/functions.php b/wp-content/themes/twentythirteen/functions.php
deleted file mode 100644 (file)
index e87761f..0000000
+++ /dev/null
@@ -1,552 +0,0 @@
-<?php
-/**
- * Twenty Thirteen functions and definitions
- *
- * Sets up the theme and provides some helper functions, which are used in the
- * theme as custom template tags. Others are attached to action and filter
- * hooks in WordPress to change core functionality.
- *
- * When using a child theme (see https://codex.wordpress.org/Theme_Development
- * and https://codex.wordpress.org/Child_Themes), you can override certain
- * functions (those wrapped in a function_exists() call) by defining them first
- * in your child theme's functions.php file. The child theme's functions.php
- * file is included before the parent theme's file, so the child theme
- * functions would be used.
- *
- * Functions that are not pluggable (not wrapped in function_exists()) are
- * instead attached to a filter or action hook.
- *
- * For more information on hooks, actions, and filters, @link https://codex.wordpress.org/Plugin_API
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-/*
- * Set up the content width value based on the theme's design.
- *
- * @see twentythirteen_content_width() for template-specific adjustments.
- */
-if ( ! isset( $content_width ) )
-       $content_width = 604;
-
-/**
- * Add support for a custom header image.
- */
-require get_template_directory() . '/inc/custom-header.php';
-
-/**
- * Twenty Thirteen only works in WordPress 3.6 or later.
- */
-if ( version_compare( $GLOBALS['wp_version'], '3.6-alpha', '<' ) )
-       require get_template_directory() . '/inc/back-compat.php';
-
-/**
- * Twenty Thirteen setup.
- *
- * Sets up theme defaults and registers the various WordPress features that
- * Twenty Thirteen supports.
- *
- * @uses load_theme_textdomain() For translation/localization support.
- * @uses add_editor_style() To add Visual Editor stylesheets.
- * @uses add_theme_support() To add support for automatic feed links, post
- * formats, and post thumbnails.
- * @uses register_nav_menu() To add support for a navigation menu.
- * @uses set_post_thumbnail_size() To set a custom post thumbnail size.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_setup() {
-       /*
-        * Makes Twenty Thirteen available for translation.
-        *
-        * Translations can be added to the /languages/ directory.
-        * If you're building a theme based on Twenty Thirteen, use a find and
-        * replace to change 'twentythirteen' to the name of your theme in all
-        * template files.
-        */
-       load_theme_textdomain( 'twentythirteen', get_template_directory() . '/languages' );
-
-       /*
-        * This theme styles the visual editor to resemble the theme style,
-        * specifically font, colors, icons, and column width.
-        */
-       add_editor_style( array( 'css/editor-style.css', 'genericons/genericons.css', twentythirteen_fonts_url() ) );
-
-       // Adds RSS feed links to <head> for posts and comments.
-       add_theme_support( 'automatic-feed-links' );
-
-       /*
-        * Switches default core markup for search form, comment form,
-        * and comments to output valid HTML5.
-        */
-       add_theme_support( 'html5', array(
-               'search-form', 'comment-form', 'comment-list', 'gallery', 'caption'
-       ) );
-
-       /*
-        * This theme supports all available post formats by default.
-        * See https://codex.wordpress.org/Post_Formats
-        */
-       add_theme_support( 'post-formats', array(
-               'aside', 'audio', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video'
-       ) );
-
-       // This theme uses wp_nav_menu() in one location.
-       register_nav_menu( 'primary', __( 'Navigation Menu', 'twentythirteen' ) );
-
-       /*
-        * This theme uses a custom image size for featured images, displayed on
-        * "standard" posts and pages.
-        */
-       add_theme_support( 'post-thumbnails' );
-       set_post_thumbnail_size( 604, 270, true );
-
-       // This theme uses its own gallery styles.
-       add_filter( 'use_default_gallery_style', '__return_false' );
-}
-add_action( 'after_setup_theme', 'twentythirteen_setup' );
-
-/**
- * Return the Google font stylesheet URL, if available.
- *
- * The use of Source Sans Pro and Bitter by default is localized. For languages
- * that use characters not supported by the font, the font can be disabled.
- *
- * @since Twenty Thirteen 1.0
- *
- * @return string Font stylesheet or empty string if disabled.
- */
-function twentythirteen_fonts_url() {
-       $fonts_url = '';
-
-       /* Translators: If there are characters in your language that are not
-        * supported by Source Sans Pro, translate this to 'off'. Do not translate
-        * into your own language.
-        */
-       $source_sans_pro = _x( 'on', 'Source Sans Pro font: on or off', 'twentythirteen' );
-
-       /* Translators: If there are characters in your language that are not
-        * supported by Bitter, translate this to 'off'. Do not translate into your
-        * own language.
-        */
-       $bitter = _x( 'on', 'Bitter font: on or off', 'twentythirteen' );
-
-       if ( 'off' !== $source_sans_pro || 'off' !== $bitter ) {
-               $font_families = array();
-
-               if ( 'off' !== $source_sans_pro )
-                       $font_families[] = 'Source Sans Pro:300,400,700,300italic,400italic,700italic';
-
-               if ( 'off' !== $bitter )
-                       $font_families[] = 'Bitter:400,700';
-
-               $query_args = array(
-                       'family' => urlencode( implode( '|', $font_families ) ),
-                       'subset' => urlencode( 'latin,latin-ext' ),
-               );
-               $fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' );
-       }
-
-       return $fonts_url;
-}
-
-/**
- * Enqueue scripts and styles for the front end.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_scripts_styles() {
-       /*
-        * Adds JavaScript to pages with the comment form to support
-        * sites with threaded comments (when in use).
-        */
-       if ( is_singular() && comments_open() && get_option( 'thread_comments' ) )
-               wp_enqueue_script( 'comment-reply' );
-
-       // Adds Masonry to handle vertical alignment of footer widgets.
-       if ( is_active_sidebar( 'sidebar-1' ) )
-               wp_enqueue_script( 'jquery-masonry' );
-
-       // Loads JavaScript file with functionality specific to Twenty Thirteen.
-       wp_enqueue_script( 'twentythirteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '20150330', true );
-
-       // Add Source Sans Pro and Bitter fonts, used in the main stylesheet.
-       wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null );
-
-       // Add Genericons font, used in the main stylesheet.
-       wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.03' );
-
-       // Loads our main stylesheet.
-       wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '2013-07-18' );
-
-       // Loads the Internet Explorer specific stylesheet.
-       wp_enqueue_style( 'twentythirteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentythirteen-style' ), '2013-07-18' );
-       wp_style_add_data( 'twentythirteen-ie', 'conditional', 'lt IE 9' );
-}
-add_action( 'wp_enqueue_scripts', 'twentythirteen_scripts_styles' );
-
-/**
- * Filter the page title.
- *
- * Creates a nicely formatted and more specific title element text for output
- * in head of document, based on current view.
- *
- * @since Twenty Thirteen 1.0
- *
- * @param string $title Default title text for current view.
- * @param string $sep   Optional separator.
- * @return string The filtered title.
- */
-function twentythirteen_wp_title( $title, $sep ) {
-       global $paged, $page;
-
-       if ( is_feed() )
-               return $title;
-
-       // Add the site name.
-       $title .= get_bloginfo( 'name', 'display' );
-
-       // Add the site description for the home/front page.
-       $site_description = get_bloginfo( 'description', 'display' );
-       if ( $site_description && ( is_home() || is_front_page() ) )
-               $title = "$title $sep $site_description";
-
-       // Add a page number if necessary.
-       if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() )
-               $title = "$title $sep " . sprintf( __( 'Page %s', 'twentythirteen' ), max( $paged, $page ) );
-
-       return $title;
-}
-add_filter( 'wp_title', 'twentythirteen_wp_title', 10, 2 );
-
-/**
- * Register two widget areas.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_widgets_init() {
-       register_sidebar( array(
-               'name'          => __( 'Main Widget Area', 'twentythirteen' ),
-               'id'            => 'sidebar-1',
-               'description'   => __( 'Appears in the footer section of the site.', 'twentythirteen' ),
-               'before_widget' => '<aside id="%1$s" class="widget %2$s">',
-               'after_widget'  => '</aside>',
-               'before_title'  => '<h3 class="widget-title">',
-               'after_title'   => '</h3>',
-       ) );
-
-       register_sidebar( array(
-               'name'          => __( 'Secondary Widget Area', 'twentythirteen' ),
-               'id'            => 'sidebar-2',
-               'description'   => __( 'Appears on posts and pages in the sidebar.', 'twentythirteen' ),
-               'before_widget' => '<aside id="%1$s" class="widget %2$s">',
-               'after_widget'  => '</aside>',
-               'before_title'  => '<h3 class="widget-title">',
-               'after_title'   => '</h3>',
-       ) );
-}
-add_action( 'widgets_init', 'twentythirteen_widgets_init' );
-
-if ( ! function_exists( 'twentythirteen_paging_nav' ) ) :
-/**
- * Display navigation to next/previous set of posts when applicable.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_paging_nav() {
-       global $wp_query;
-
-       // Don't print empty markup if there's only one page.
-       if ( $wp_query->max_num_pages < 2 )
-               return;
-       ?>
-       <nav class="navigation paging-navigation" role="navigation">
-               <h1 class="screen-reader-text"><?php _e( 'Posts navigation', 'twentythirteen' ); ?></h1>
-               <div class="nav-links">
-
-                       <?php if ( get_next_posts_link() ) : ?>
-                       <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentythirteen' ) ); ?></div>
-                       <?php endif; ?>
-
-                       <?php if ( get_previous_posts_link() ) : ?>
-                       <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?></div>
-                       <?php endif; ?>
-
-               </div><!-- .nav-links -->
-       </nav><!-- .navigation -->
-       <?php
-}
-endif;
-
-if ( ! function_exists( 'twentythirteen_post_nav' ) ) :
-/**
- * Display navigation to next/previous post when applicable.
-*
-* @since Twenty Thirteen 1.0
-*/
-function twentythirteen_post_nav() {
-       global $post;
-
-       // Don't print empty markup if there's nowhere to navigate.
-       $previous = ( is_attachment() ) ? get_post( $post->post_parent ) : get_adjacent_post( false, '', true );
-       $next     = get_adjacent_post( false, '', false );
-
-       if ( ! $next && ! $previous )
-               return;
-       ?>
-       <nav class="navigation post-navigation" role="navigation">
-               <h1 class="screen-reader-text"><?php _e( 'Post navigation', 'twentythirteen' ); ?></h1>
-               <div class="nav-links">
-
-                       <?php previous_post_link( '%link', _x( '<span class="meta-nav">&larr;</span> %title', 'Previous post link', 'twentythirteen' ) ); ?>
-                       <?php next_post_link( '%link', _x( '%title <span class="meta-nav">&rarr;</span>', 'Next post link', 'twentythirteen' ) ); ?>
-
-               </div><!-- .nav-links -->
-       </nav><!-- .navigation -->
-       <?php
-}
-endif;
-
-if ( ! function_exists( 'twentythirteen_entry_meta' ) ) :
-/**
- * Print HTML with meta information for current post: categories, tags, permalink, author, and date.
- *
- * Create your own twentythirteen_entry_meta() to override in a child theme.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_entry_meta() {
-       if ( is_sticky() && is_home() && ! is_paged() )
-               echo '<span class="featured-post">' . esc_html__( 'Sticky', 'twentythirteen' ) . '</span>';
-
-       if ( ! has_post_format( 'link' ) && 'post' == get_post_type() )
-               twentythirteen_entry_date();
-
-       // Translators: used between list items, there is a space after the comma.
-       $categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) );
-       if ( $categories_list ) {
-               echo '<span class="categories-links">' . $categories_list . '</span>';
-       }
-
-       // Translators: used between list items, there is a space after the comma.
-       $tag_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) );
-       if ( $tag_list ) {
-               echo '<span class="tags-links">' . $tag_list . '</span>';
-       }
-
-       // Post author
-       if ( 'post' == get_post_type() ) {
-               printf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>',
-                       esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
-                       esc_attr( sprintf( __( 'View all posts by %s', 'twentythirteen' ), get_the_author() ) ),
-                       get_the_author()
-               );
-       }
-}
-endif;
-
-if ( ! function_exists( 'twentythirteen_entry_date' ) ) :
-/**
- * Print HTML with date information for current post.
- *
- * Create your own twentythirteen_entry_date() to override in a child theme.
- *
- * @since Twenty Thirteen 1.0
- *
- * @param boolean $echo (optional) Whether to echo the date. Default true.
- * @return string The HTML-formatted post date.
- */
-function twentythirteen_entry_date( $echo = true ) {
-       if ( has_post_format( array( 'chat', 'status' ) ) )
-               $format_prefix = _x( '%1$s on %2$s', '1: post format name. 2: date', 'twentythirteen' );
-       else
-               $format_prefix = '%2$s';
-
-       $date = sprintf( '<span class="date"><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a></span>',
-               esc_url( get_permalink() ),
-               esc_attr( sprintf( __( 'Permalink to %s', 'twentythirteen' ), the_title_attribute( 'echo=0' ) ) ),
-               esc_attr( get_the_date( 'c' ) ),
-               esc_html( sprintf( $format_prefix, get_post_format_string( get_post_format() ), get_the_date() ) )
-       );
-
-       if ( $echo )
-               echo $date;
-
-       return $date;
-}
-endif;
-
-if ( ! function_exists( 'twentythirteen_the_attached_image' ) ) :
-/**
- * Print the attached image with a link to the next attached image.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_the_attached_image() {
-       /**
-        * Filter the image attachment size to use.
-        *
-        * @since Twenty thirteen 1.0
-        *
-        * @param array $size {
-        *     @type int The attachment height in pixels.
-        *     @type int The attachment width in pixels.
-        * }
-        */
-       $attachment_size     = apply_filters( 'twentythirteen_attachment_size', array( 724, 724 ) );
-       $next_attachment_url = wp_get_attachment_url();
-       $post                = get_post();
-
-       /*
-        * Grab the IDs of all the image attachments in a gallery so we can get the URL
-        * of the next adjacent image in a gallery, or the first image (if we're
-        * looking at the last image in a gallery), or, in a gallery of one, just the
-        * link to that image file.
-        */
-       $attachment_ids = get_posts( array(
-               'post_parent'    => $post->post_parent,
-               'fields'         => 'ids',
-               'numberposts'    => -1,
-               'post_status'    => 'inherit',
-               'post_type'      => 'attachment',
-               'post_mime_type' => 'image',
-               'order'          => 'ASC',
-               'orderby'        => 'menu_order ID',
-       ) );
-
-       // If there is more than 1 attachment in a gallery...
-       if ( count( $attachment_ids ) > 1 ) {
-               foreach ( $attachment_ids as $attachment_id ) {
-                       if ( $attachment_id == $post->ID ) {
-                               $next_id = current( $attachment_ids );
-                               break;
-                       }
-               }
-
-               // get the URL of the next image attachment...
-               if ( $next_id )
-                       $next_attachment_url = get_attachment_link( $next_id );
-
-               // or get the URL of the first image attachment.
-               else
-                       $next_attachment_url = get_attachment_link( reset( $attachment_ids ) );
-       }
-
-       printf( '<a href="%1$s" title="%2$s" rel="attachment">%3$s</a>',
-               esc_url( $next_attachment_url ),
-               the_title_attribute( array( 'echo' => false ) ),
-               wp_get_attachment_image( $post->ID, $attachment_size )
-       );
-}
-endif;
-
-/**
- * Return the post URL.
- *
- * @uses get_url_in_content() to get the URL in the post meta (if it exists) or
- * the first link found in the post content.
- *
- * Falls back to the post permalink if no URL is found in the post.
- *
- * @since Twenty Thirteen 1.0
- *
- * @return string The Link format URL.
- */
-function twentythirteen_get_link_url() {
-       $content = get_the_content();
-       $has_url = get_url_in_content( $content );
-
-       return ( $has_url ) ? $has_url : apply_filters( 'the_permalink', get_permalink() );
-}
-
-if ( ! function_exists( 'twentythirteen_excerpt_more' ) && ! is_admin() ) :
-/**
- * Replaces "[...]" (appended to automatically generated excerpts) with ...
- * and a Continue reading link.
- *
- * @since Twenty Thirteen 1.4
- *
- * @param string $more Default Read More excerpt link.
- * @return string Filtered Read More excerpt link.
- */
-function twentythirteen_excerpt_more( $more ) {
-       $link = sprintf( '<a href="%1$s" class="more-link">%2$s</a>',
-               esc_url( get_permalink( get_the_ID() ) ),
-                       /* translators: %s: Name of current post */
-                       sprintf( __( 'Continue reading %s <span class="meta-nav">&rarr;</span>', 'twentythirteen' ), '<span class="screen-reader-text">' . get_the_title( get_the_ID() ) . '</span>' )
-               );
-       return ' &hellip; ' . $link;
-}
-add_filter( 'excerpt_more', 'twentythirteen_excerpt_more' );
-endif;
-
-/**
- * Extend the default WordPress body classes.
- *
- * Adds body classes to denote:
- * 1. Single or multiple authors.
- * 2. Active widgets in the sidebar to change the layout and spacing.
- * 3. When avatars are disabled in discussion settings.
- *
- * @since Twenty Thirteen 1.0
- *
- * @param array $classes A list of existing body class values.
- * @return array The filtered body class list.
- */
-function twentythirteen_body_class( $classes ) {
-       if ( ! is_multi_author() )
-               $classes[] = 'single-author';
-
-       if ( is_active_sidebar( 'sidebar-2' ) && ! is_attachment() && ! is_404() )
-               $classes[] = 'sidebar';
-
-       if ( ! get_option( 'show_avatars' ) )
-               $classes[] = 'no-avatars';
-
-       return $classes;
-}
-add_filter( 'body_class', 'twentythirteen_body_class' );
-
-/**
- * Adjust content_width value for video post formats and attachment templates.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_content_width() {
-       global $content_width;
-
-       if ( is_attachment() )
-               $content_width = 724;
-       elseif ( has_post_format( 'audio' ) )
-               $content_width = 484;
-}
-add_action( 'template_redirect', 'twentythirteen_content_width' );
-
-/**
- * Add postMessage support for site title and description for the Customizer.
- *
- * @since Twenty Thirteen 1.0
- *
- * @param WP_Customize_Manager $wp_customize Customizer object.
- */
-function twentythirteen_customize_register( $wp_customize ) {
-       $wp_customize->get_setting( 'blogname' )->transport         = 'postMessage';
-       $wp_customize->get_setting( 'blogdescription' )->transport  = 'postMessage';
-       $wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage';
-}
-add_action( 'customize_register', 'twentythirteen_customize_register' );
-
-/**
- * Enqueue Javascript postMessage handlers for the Customizer.
- *
- * Binds JavaScript handlers to make the Customizer preview
- * reload changes asynchronously.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_customize_preview_js() {
-       wp_enqueue_script( 'twentythirteen-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20141120', true );
-}
-add_action( 'customize_preview_init', 'twentythirteen_customize_preview_js' );
diff --git a/wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf b/wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf
deleted file mode 100644 (file)
index 5cd41e8..0000000
Binary files a/wp-content/themes/twentythirteen/genericons/Genericons-Regular.otf and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/genericons/README.txt b/wp-content/themes/twentythirteen/genericons/README.txt
deleted file mode 100644 (file)
index 7a0a92e..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-  ___  ____  __ _  ____  ____  __  ___  __   __ _  ____ 
- / __)(  __)(  ( \(  __)(  _ \(  )/ __)/  \ (  ( \/ ___)
-( (_ \ ) _) /    / ) _)  )   / )(( (__(  O )/    /\___ \
- \___/(____)\_)__)(____)(__\_)(__)\___)\__/ \_)__)(____/
-
-
-Genericons are vector icons embedded in a webfont designed to be clean and simple keeping with a generic aesthetic.
-
-Use genericons for instant HiDPI, to change icon colors on the fly, or even with CSS effects such as drop-shadows or gradients!
-
-
-_  _ ____ ____ ____ ____ 
-|  | [__  |__| | __ |___ 
-|__| ___] |  | |__] |___ 
-
-
-To use it, place the font folder in your stylesheet directory and paste this in your CSS file:
-
-/* =Genericons, thanks to FontSquirrel.com for conversion!
--------------------------------------------------------------- */
-@font-face {
-    font-family: 'Genericons';
-    src: url('font/genericons-regular-webfont.eot');
-    src: url('font/genericons-regular-webfont.eot?#iefix') format('embedded-opentype'),
-         url('font/genericons-regular-webfont.woff') format('woff'),
-         url('font/genericons-regular-webfont.ttf') format('truetype'),
-         url('font/genericons-regular-webfont.svg#genericonsregular') format('svg');
-    font-weight: normal;
-    font-style: normal;
-
-}
-
-Note: the above only works if you don't use a CDN. If you do, or don't know what that is, you should use the syntax that's embedded in genericons.css.
-
-From then on, you can create an icon like this:
-
-.my-icon:before {
-       content: '\f101';
-       display: inline-block;
-       -webkit-font-smoothing: antialiased;
-       font: normal 16px/1 'Genericons';
-       vertical-align: top;
-}
-
-This will output a comment icon before every element with the class "my-icon". The "content: '\f101';" part of this CSS is easily copied from the helper tool at http://genericons.com/
-
-You can also use the bundled example.css if you'd rather insert the icons using HTML tags.
-
-
-_  _ ____ ___ ____ ____ 
-|\ | |  |  |  |___ [__  
-| \| |__|  |  |___ ___]
-
-
-Photoshop mockups:
-
-Genericons-Regular.otf found in the root directory of this zip has not been web-font-ified. So you can drop it in your system fonts folder and use the font in Photoshop if you like.
-
-For those of you using Genericons in your Photoshop mockup, remember to delete the old version of the font from Font Book, and grab the new one from the zip file. This also affects using it in your webdesigns: if you have an old version of the font installed locally, that's the font that'll be used in your website as well, so if you're missing icons, check for old versions of the font on your system.
-
-Pixel grid:
-
-Note that Genericons has been designed for a 16x16 pixel grid. That means it'll look sharp at font-size: 16px exactly. It'll also be crisp at multiples thereof, such as 32px or 64px. It'll also look reasonably crisp at in-between font sizes such as 24px or 48px, but not quite as crisp as 16 or 32. Please don't set the font-size to 17px, though, that'll just look terrible.
-
-Also note the CSS property "-webkit-font-smoothing: antialiased". That makes the icons look great in WebKit browsers. Please see http://noscope.com/2012/font-smoothing for more info.
-
-Updates:
-
-We don't often update icons, but do very carefully when we get good feedback suggesting improvements. Please be mindful if you upgrade, and check that the updated icons behave as you intended.
-
-
-
-____ _  _ ____ _  _ ____ ____ _    ____ ____ 
-|    |__| |__| |\ | | __ |___ |    |  | | __ 
-|___ |  | |  | | \| |__] |___ |___ |__| |__] 
-
-V3.0.3:
-Bunch of updates mostly.
-- Two new icons, Dropbox and Fullscreen.
-- Updates to all icons containing an exclamation mark.
-- Updates to Image and Quote.
-- Nicer "Share" icon.
-- Bigger default Linkedin icon.
-
-V3.0.2: 
-A slew of new stuff and updates.
-- Social icons: Skype, Digg, Reddit, Stumbleupon, Pocket.
-- New generic icons: heart, lock and print.
-- New editing icons: code, bold, italic, image
-- New interaction icons: subscribe, unsubscribe, subscribed, reply all, reply, flag.
-- The hyperlink icon has been updated to be clearer, chunkier.
-- The "home" icon has been updated for style, size and clarity.
-- The email icon has been updated for style and clarity, and to fit with the new subscribe icons.
-- The document icon has been updated for style.
-- The "pin" icon has been updated for style and clarity.
-- The Twitter icon has been scaled down to fit with the other social icons.
-
-V3.0.1: 
-Mostly maintenance. 
-- Fixed an issue with the example page that showed an old "top" icon instead of the actual NEW "refresh" icon.
-- Added inverse Google+ and Path.
-- Replaced tabs with spaces in the helper CSS.
-- Changed the Genericons.com copy/paste tool to serve span's instead of div's for casual icon insertion. It's being converted to "inline-block" anyway.
-
-V3.0:
-Mainly maintenance and a few new icons.
-- Fast forward, rewind, PollDaddy, Notice, Info, Help, Portfolio
-- Updated the feed icon. It's a bit smaller now for consistency, the previous one was rather big.
-- So, the previous version numbering, 2.09, wasn't very PHP version compare friendly. So from now on it'll be 3.0, 3.1 etc. Props Ipstenu.
-- Genericons.com now has a mini release blog.
-- The CSS has prettier formatting, props Konstantin Obenland.
-
-V2.09:
-Updated Facebook icon to new version. Updated Instagram logo to use new one-color version. Updated Google+ icon to use same radius as Instagram and Facebook. Added a bunch of new icons, cog, unapprove, cart, media player buttons, tablet, send to tablet.                                            
-
-V2.06:
-Included Base64 encoded version. This is necessary for Genericons to work with CDNs in Firefox. Firefox blocks fonts linked from a different domain. A CDN (typically s.example.com) usually puts the font on a subdomain, and is hence blocked in Firefox.
-
-V2.05:
-Added a bunch of new icons, including upload to cloud, download to cloud, many more.
-
-V2:
-Initial public release
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot b/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot
deleted file mode 100644 (file)
index 4657469..0000000
Binary files a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.eot and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg b/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.svg
deleted file mode 100644 (file)
index ef236c1..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="genericonsregular" horiz-adv-x="2048" >
-<font-face units-per-em="2048" ascent="1638" descent="-410" />
-<missing-glyph horiz-adv-x="500" />
-<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#xf100;" d="M512 512v128h768v-128h-768zM512 768v128h256v-128h-256zM512 1024v128h640v-128h-640zM512 1280v128h1024v-128h-1024zM896 768v128h640v-128h-640zM1280 1024v128h256v-128h-256z" />
-<glyph unicode="&#xf101;" d="M256 1024q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM768 1024q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
-<glyph unicode="&#xf102;" d="M128 384v896l512 128l128 256h512l128 -256l512 -128v-896h-1792zM256 1440v160h256v-96zM576 960q0 -185 131.5 -316.5t316.5 -131.5q186 0 317 131.5t131 316.5q0 186 -131 317t-317 131q-185 0 -316.5 -131t-131.5 -317zM704 960q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5q0 -132 -93.5 -226t-226.5 -94t-226.5 94t-93.5 226z" />
-<glyph unicode="&#xf103;" d="M128 512v384h384v-384h-384zM128 1024v384h896v-384h-896zM640 512v384h384v-384h-384zM1152 512v896h896v-896h-896z" />
-<glyph unicode="&#xf104;" d="M512 384v1280l1152 -640z" />
-<glyph unicode="&#xf105;" d="M640 1408q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5q0 -124 -71.5 -222t-184.5 -138v-536l-256 -128v664q-113 40 -184.5 138t-71.5 222z" />
-<glyph unicode="&#xf106;" d="M256 896v640h640v-640q0 -212 -150 -362t-362 -150v256q106 0 181 75t75 181h-384zM1152 896v640h640v-640q0 -212 -150 -362t-362 -150v256q106 0 181 75t75 181h-384z" />
-<glyph unicode="&#xf107;" d="M512 704v384q0 97 53 176.5t139 116.5v-151q-64 -57 -64 -142v-384q0 -80 56 -136t136 -56t136 56t56 136v384q0 85 -64 142v151q86 -37 139 -116.5t53 -176.5v-384q0 -133 -93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5zM768 1088v384q0 133 93.5 226.5 t226.5 93.5t226.5 -93.5t93.5 -226.5v-384q0 -97 -53 -176.5t-139 -116.5v151q64 57 64 142v384q0 80 -56 136t-136 56t-136 -56t-56 -136v-384q0 -85 64 -142v-151q-86 37 -139 116.5t-53 176.5z" />
-<glyph unicode="&#xf108;" d="M0 1152v384q0 96 80 176t176 80h1024q96 0 176 -80t80 -176v-384q0 -96 -80 -176t-176 -80h-448l-448 -448v448h-128q-96 0 -176 80t-80 176zM768 640l128 128h384q168 0 276 108t108 276v384q96 0 176 -80t80 -176v-384q0 -96 -80 -176t-176 -80h-128v-448l-448 448 h-320z" />
-<glyph unicode="&#xf109;" d="M256 768v512h384l384 384v-1280l-384 384h-384zM1205 843q75 75 75 181t-75 181l91 91q26 -27 46.5 -57.5t35 -65t22.5 -72.5t8 -77q0 -78 -29.5 -148t-82.5 -124zM1386 662q71 71 110.5 164.5t39.5 197.5t-39.5 197.5t-110.5 164.5l91 91q88 -89 137.5 -206t49.5 -247 q0 -87 -23 -170t-64.5 -153.5t-99.5 -129.5z" />
-<glyph unicode="&#xf200;" d="M0 1024q0 208 81 398t218.5 327t327 218t397.5 81q209 0 398.5 -81t326.5 -218t218 -326.5t81 -398.5q0 -335 -195.5 -601.5t-504.5 -369.5q-36 -7 -53 8.5t-17 40.5q0 4 0.5 102t0.5 179q0 130 -69 189q77 9 137.5 24.5t124.5 51.5t107 89t70.5 140t27.5 201 q0 161 -105 274q6 15 11 35t9 56t-3.5 83.5t-26.5 96.5q-4 1 -10.5 2t-32 -1t-55.5 -11t-79.5 -33.5t-104.5 -61.5q-118 33 -256 35q-138 -2 -256 -35q-55 37 -104 61.5t-80 33t-54.5 11.5t-33.5 1l-10 -2q-58 -146 -10 -271q-105 -115 -105 -274q0 -114 27.5 -201 t70.5 -140t107 -89t124.5 -52t136.5 -24q-53 -47 -65 -137q-28 -13 -59.5 -20t-75.5 -6.5t-87.5 28.5t-75.5 83q-2 4 -6.5 10.5t-19 24t-31.5 31t-44 25.5t-56 14h-10t-18.5 -3.5t-17 -9t4 -18.5t34.5 -31q3 -1 7.5 -4t19 -14.5t27.5 -27t30 -43.5t30 -61q1 -3 2.5 -7t8 -17 t15.5 -25.5t24.5 -28t33.5 -28t45 -23.5t57.5 -16t71.5 -3.5t87 11.5q0 -50 0.5 -110t0.5 -64q0 -24 -17 -40t-53 -10q-309 103 -504.5 370t-195.5 602z" />
-<glyph unicode="&#xf201;" d="M0 1024q0 206 82 395.5t219.5 327t327 219.5t395.5 82t395.5 -82t327 -219.5t219.5 -327t82 -395.5t-82 -395.5t-219.5 -327t-327 -219.5t-395.5 -82t-395.5 82t-327 219.5t-219.5 327t-82 395.5zM128 1024q0 -167 58 -319.5t166 -272.5q125 205 339 360t445 232 q-16 48 -80 176q-282 -86 -481.5 -111t-446.5 -1v-64zM160 1232q194 -22 444 14t388 82q-141 282 -320 528q-194 -85 -329.5 -247.5t-182.5 -376.5zM480 320q216 -192 544 -192q181 0 368 80q-33 300 -208 688q-222 -74 -410 -225.5t-294 -350.5zM832 1904 q102 -166 304 -512q6 2 86 31t118.5 45t108 47t122 64t93.5 69q-126 126 -290.5 199t-349.5 73q-32 0 -96 -8t-96 -8zM1200 1248q22 -29 36.5 -54.5t34 -67.5t25.5 -54q170 33 336 30t288 -30q-26 285 -160 464q-71 -57 -162 -104.5t-214.5 -100.5t-183.5 -83zM1344 928 q14 -27 43 -103t74.5 -231t74.5 -306q156 108 258 278t126 362q-276 46 -576 0z" />
-<glyph unicode="&#xf202;" d="M128 465q48 -5 88 -5q256 0 456 157q-119 2 -213 73.5t-130 182.5q39 -7 69 -7q47 0 97 13q-127 26 -211 127t-84 233v5q80 -43 167 -46q-76 50 -120 131t-44 175q0 101 50 185q138 -170 335 -271.5t423 -112.5q-10 39 -10 84q0 152 108 259.5t260 107.5q160 0 268 -116 q128 26 233 89q-42 -132 -161 -203q109 13 211 58q-73 -111 -183 -191q0 -7 0.5 -23t0.5 -24q0 -122 -31 -246t-89.5 -241t-149.5 -218.5t-204 -177.5t-260.5 -119.5t-311.5 -43.5q-305 0 -564 165z" />
-<glyph unicode="&#xf203;" d="M128 384v1280q0 106 75 181t181 75h1280q106 0 181 -75t75 -181v-1280q0 -106 -75 -181t-181 -75h-282v711h270l12 260h-282v192v12q0 60 21.5 87.5t87.5 27.5l166 -1l6 242q-78 10 -183 10q-94 0 -167 -27.5t-117 -74.5t-66 -105.5t-22 -126.5v-236h-254v-260h254v-711 h-724q-106 0 -181 75t-75 181z" />
-<glyph unicode="&#xf204;" d="M640 969v303h222v258q0 78 26 147t77 124t136.5 87t194.5 32q55 0 108 -3t79 -6l26 -3l-7 -282h-193q-76 0 -101.5 -32t-25.5 -101v-14v-207h329l-14 -303h-315v-841h-320v841h-222z" />
-<glyph unicode="&#xf205;" d="M128 1024q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348zM218 1024q0 -236 125 -430.5t330 -294.5l-385 1053q-70 -156 -70 -328zM351 1466h52q37 0 91 2.5t89 4.5 l34 3q21 1 30.5 -14.5t2.5 -32.5t-27 -20q-44 -5 -93 -7l294 -873l176 529l-125 344l-85 7q-20 2 -27.5 19t2.5 33t30 15q133 -10 212 -10q38 0 91.5 2.5t88.5 4.5l35 3q16 1 25.5 -8.5t10 -22t-7 -23.5t-23.5 -13q-43 -5 -92 -7l291 -866l81 268q24 79 32.5 107.5 t18.5 74.5t10 79q0 46 -11.5 90.5t-23.5 71t-32 60.5q-2 4 -11.5 19t-12 20t-10.5 18.5t-11 19t-9 17.5t-8.5 19t-6.5 18t-5.5 19.5t-3 18.5t-1.5 20q0 57 39 100t97 43l10 -1q-110 101 -249.5 156.5t-294.5 55.5q-207 0 -385 -98t-288 -266zM796 251q112 -33 228 -33 q138 0 268 46q-4 6 -6 11l-248 679zM1429 328q183 106 292 291.5t109 404.5q0 207 -99 386q5 -40 5 -82q0 -135 -61 -289z" />
-<glyph unicode="&#xf206;" d="M128 486v485q125 -127 330 -127q30 0 59 3q-32 -61 -32 -118q0 -33 13 -63t28.5 -48.5t45.5 -47.5q-18 0 -54.5 -0.5t-55.5 -0.5q-183 0 -334 -83zM128 1599v65q0 106 75 181t181 75h1280q106 0 181 -75t75 -181v-128h-256v256h-128v-256h-256v-128h256v-256h128v256h256 v-1024q0 -106 -75 -181t-181 -75h-507q5 28 5 50q0 143 -46.5 230t-189.5 194q-3 2 -20.5 15t-25 19t-25.5 20t-27.5 22.5t-24 22t-23 23.5t-17 22t-12.5 22.5t-4 20.5q0 52 23 87t99 94q180 141 180 324q0 113 -45 204.5t-128 139.5h160l135 142h-607q-127 0 -241.5 -49 t-194.5 -132zM139 309q57 85 166 137.5t237 51.5q84 -1 158 -26q19 -13 62 -42.5t61 -42t48 -37t44.5 -41.5t29 -41.5t21.5 -49.5q7 -29 7 -66q0 -16 -1 -24h-588q-85 0 -153 50.5t-92 130.5zM228 1307q-21 161 50.5 269.5t194.5 104.5q121 -4 215.5 -118.5t116.5 -277.5 q21 -160 -43 -256t-187 -92q-125 4 -225.5 108t-121.5 262z" />
-<glyph unicode="&#xf207;" d="M256 1553q0 -73 50.5 -122t131.5 -49h2q84 0 135 49t51 122q-1 75 -51 123t-133 48t-134.5 -48.5t-51.5 -122.5zM275 256h330v991h-330v-991zM787 256h329v553q0 54 11 81q20 50 63 85t106 35q58 0 96 -29t54.5 -77.5t16.5 -117.5v-530h329v568q0 112 -28.5 198 t-80 139.5t-120 81t-150.5 27.5q-36 0 -69 -5.5t-58.5 -15t-49 -23t-40 -27t-32.5 -31t-26.5 -31.5t-21.5 -31v141h-329q1 -26 1.5 -138t0.5 -252.5t-0.5 -277.5t-1.5 -230v-93z" />
-<glyph unicode="&#xf208;" d="M128 384v1280q0 106 75 181t181 75h1280q106 0 181 -75t75 -181v-1280q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM384 1422q0 -58 40.5 -97.5t105.5 -39.5h1q67 0 108.5 39.5t41.5 97.5q-2 60 -42 98.5t-106 38.5q-67 0 -108 -39t-41 -98zM400 384h263 v793h-263v-793zM809 384h264v443q0 45 8 64q16 40 50.5 68t85.5 28q133 0 133 -179v-424h264v455q0 175 -83.5 266t-220.5 91q-50 0 -90.5 -12t-68.5 -34t-45 -41t-33 -44v112h-264v-793z" />
-<glyph unicode="&#xf209;" d="M171 1260q0 109 35.5 219t110 213t179 182t254 126.5t323.5 47.5q176 0 327.5 -60.5t253.5 -161t160 -231t58 -270.5q0 -246 -85 -443t-241 -309.5t-355 -112.5q-99 0 -186.5 46.5t-121.5 110.5q-73 -290 -89 -347q-34 -123 -127 -270l-149 54q-7 167 22 290l162 688 q-40 81 -40 200q0 139 70.5 232.5t172.5 93.5q83 0 127 -53.5t44 -135.5q0 -51 -18.5 -124t-49 -170t-44.5 -154q-23 -99 37.5 -171t161.5 -72q117 0 209.5 92t142 244.5t49.5 334.5q0 214 -139 349t-387 135q-139 0 -257.5 -49.5t-197 -133t-122.5 -193t-44 -229.5 q0 -147 83 -247q18 -21 21.5 -34t-3.5 -37q-16 -61 -25 -101q-7 -24 -24.5 -32t-39.5 1q-127 51 -192.5 181.5t-65.5 300.5z" />
-<glyph unicode="&#xf210;" d="M0 1024q0 208 81 398t218.5 327t327 218t397.5 81q209 0 398.5 -81t326.5 -218t218 -326.5t81 -398.5t-81 -398.5t-218 -326.5t-326.5 -218t-398.5 -81q-147 0 -290 42q74 116 103 219l72 282q28 -53 99 -90.5t151 -37.5q162 0 288.5 91.5t195.5 251t69 359.5 q0 114 -47 220t-130 187.5t-206.5 130.5t-265.5 49q-141 0 -262 -38.5t-205.5 -103t-145.5 -147.5t-89.5 -172.5t-28.5 -178.5q0 -138 53 -243.5t156 -147.5q18 -8 32.5 -1t18.5 26q2 9 10 41t11 41q5 19 2.5 30t-16.5 28q-68 78 -68 200q0 97 35.5 186t99.5 156.5t160 108 t209 40.5q201 0 313.5 -109.5t112.5 -283.5q0 -148 -40 -271.5t-115 -198t-169 -74.5q-82 0 -131.5 58.5t-30.5 138.5q11 46 35.5 125t39.5 138t15 101q0 66 -35.5 109.5t-102.5 43.5q-82 0 -139.5 -76t-57.5 -189q0 -43 8 -83.5t16 -59.5l9 -19q-113 -475 -132 -558 q-24 -97 -18 -235q-275 120 -444 374t-169 564z" />
-<glyph unicode="&#xf211;" d="M160 1024q0 -172 122 -294t294 -122t294 122t122 294t-122 294t-294 122t-294 -122t-122 -294zM1056 1024q0 -172 122 -294t294 -122t294 122t122 294t-122 294t-294 122t-294 -122t-122 -294z" />
-<glyph unicode="&#xf212;" d="M128 1379l84 -108q121 84 141 84q92 0 173 -287l144 -525q108 -287 265 -287q253 0 619 471q353 451 365 710q16 347 -260 355q-373 12 -505 -417q69 29 133 29q136 0 120 -152q-8 -92 -120 -268q-113 -176 -169 -176q-73 0 -133 271q-20 79 -72 407q-49 303 -258 284 q-89 -8 -265 -160q-127 -113 -262 -231z" />
-<glyph unicode="&#xf213;" d="M128 768v512q0 159 112.5 271.5t271.5 112.5h1024q159 0 271.5 -112.5t112.5 -271.5v-512q0 -159 -112.5 -271.5t-271.5 -112.5h-1024q-159 0 -271.5 112.5t-112.5 271.5zM768 640l640 384l-640 384v-768z" />
-<glyph unicode="&#xf214;" d="M472 1186h198v-629q0 -121 26 -187q26 -65 92 -122t161 -89q93 -31 218 -31q110 0 201 22q88 20 208 76v282q-134 -88 -271 -88q-76 0 -136 36q-44 25 -61 70q-17 46 -17 200v460h426v281h-426v453h-255q-17 -139 -62 -228q-48 -93 -121 -154q-74 -64 -181 -99v-253z" />
-<glyph unicode="&#xf215;" d="M128 384v1280q0 106 75 181t181 75h1280q106 0 181 -75t75 -181v-1280q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM256 384q0 -53 37.5 -90.5t90.5 -37.5h1280q53 0 90.5 37.5t37.5 90.5v768h-272q16 -66 16 -128q0 -212 -150 -362t-362 -150t-362 150 t-150 362q0 62 16 128h-272v-768zM640 1024q0 -159 112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5zM1408 1536q0 -53 37.5 -90.5t90.5 -37.5h128q53 0 90.5 37.5t37.5 90.5v128q0 53 -37.5 90.5t-90.5 37.5 h-128q-53 0 -90.5 -37.5t-37.5 -90.5v-128z" />
-<glyph unicode="&#xf216;" d="M256 790v467q0 31 29 55l702 467q17 11 37 11t37 -11l702 -467q29 -24 29 -55v-467q0 -32 -29 -54l-702 -468q-17 -11 -37 -11q-18 0 -37 11l-702 468q-29 22 -29 54zM388 914l165 110l-165 110v-220zM441 790l517 -344v308l-286 191zM441 1257l231 -154l286 191v307z M791 1024l233 -156l234 156l-234 156zM1090 446l517 344l-231 155l-286 -191v-308zM1090 1294l286 -191l231 154l-517 344v-307zM1495 1024l165 -110v220z" />
-<glyph unicode="&#xf217;" d="M128 1024q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348zM208 1024q0 -221 109.5 -409t297.5 -297.5t409 -109.5q236 0 432 123.5t298 327.5q59 136 59 266 q0 117 -43.5 221.5t-118.5 182.5t-175.5 131t-215.5 73q116 -48 204 -145t127 -218q54 -151 17.5 -320t-150.5 -289q-111 -123 -276 -179t-332 -27q-168 27 -307 138t-210 270q-74 156 -67.5 338.5t93.5 335.5q88 155 238.5 260t328.5 135q2 0 35 6q-208 -16 -380.5 -128 t-272.5 -293.5t-100 -392.5zM359 998q17 -148 100 -275.5t207 -200.5q120 -71 264 -78.5t267 49.5q-76 -21 -148 -21q-149 0 -275.5 74t-200.5 201t-74 276q0 214 146 373l3 3l14 14l1 1q98 114 235 178t293 64q163 0 306 -70t241 -193q-36 57 -70 96q-104 126 -250 200.5 t-305 80.5q-157 7 -306.5 -51.5t-258.5 -169.5q-109 -107 -159 -254.5t-30 -296.5zM612 1025q8 -119 85 -217t186 -128q110 -33 221.5 8.5t170.5 134.5q61 91 50 204t-86 187q-70 77 -179.5 87t-188.5 -50q-85 -62 -105 -157q-21 -98 30 -182q50 -84 142 -108q92 -23 172 26 q38 23 64 58.5t34 76.5q17 88 -34 159q-52 72 -136 77q-83 6 -142 -54q-57 -55 -45 -138q6 -37 27.5 -68.5t52.5 -47.5q40 -21 87 -16q-46 1 -82 29t-49 71l-2 3q-14 30 -9.5 67t25.5 66q22 30 56.5 46.5t72.5 14.5t73.5 -23.5t54.5 -55.5q46 -76 8 -158 q-18 -39 -53.5 -66.5t-78.5 -35.5q-43 -9 -88.5 3.5t-78.5 43.5q-74 68 -68 169q2 65 45 118.5t109.5 77t132.5 5.5q68 -16 118.5 -70.5t65 -124.5t-9.5 -144q-37 -107 -150 -158.5t-224 -8.5q-114 43 -170 158q-55 117 -17 238q35 121 152 191t246 47q131 -19 223 -128 t95 -246q6 -142 -81 -257q-86 -115 -225 -157q-114 -35 -234 -7q83 -34 174 -34q195 0 333.5 138.5t138.5 333.5v2q-10 107 -63.5 202.5t-137.5 157.5q-102 77 -236 87t-243 -49q-116 -62 -177 -167q-61 -107 -52 -231z" />
-<glyph unicode="&#xf218;" d="M128 464q0 -66 32 -125.5t92.5 -107t159 -75.5t222.5 -28q117 0 218.5 25t174 68t124 99.5t76.5 120.5t25 131q0 40 -6.5 74.5t-22.5 65t-30.5 53t-41.5 50t-45 43t-51 44.5l-85 66q-19 15 -28.5 24.5t-21 31t-11.5 45.5t12 47.5t21.5 34.5t32.5 33q37 29 59 48t52 52 t46 64t28 75.5t12 94.5q0 43 -8 82t-23.5 70.5t-30.5 55.5t-38 47.5t-35 34.5t-32 27h146l151 85h-485q-264 0 -421 -129q-73 -64 -111.5 -147.5t-38.5 -167.5q0 -56 16 -109.5t49.5 -100.5t79.5 -82.5t109 -56.5t136 -21q19 0 75 5q0 -2 -4 -10.5t-4.5 -10.5t-3.5 -9.5 t-4 -11l-3 -10.5t-2.5 -12.5t-1 -13t-0.5 -14.5q0 -26 5 -48t18.5 -45t20.5 -32.5t26 -34.5q-61 -4 -98 -7.5t-107 -14.5t-131.5 -32.5t-112.5 -53.5q-50 -29 -86.5 -66.5t-56.5 -76.5t-29 -74.5t-9 -69.5zM335 514q0 47 17 87.5t38.5 64.5t54 45t50.5 28.5t42 16.5 q35 11 76.5 19.5t77.5 12t58.5 5t34.5 1.5q35 0 54 -3q51 -36 82 -59t63.5 -50.5t50.5 -48.5t33.5 -46t21.5 -50.5t6 -55.5q0 -113 -91 -183.5t-255 -70.5q-187 0 -300.5 80t-113.5 207zM453 1591q0 110 51 174q28 35 73.5 56t91.5 21q56 0 105.5 -28.5t83.5 -74.5 t59 -103.5t36.5 -115.5t11.5 -110q0 -113 -59 -172q-18 -19 -44 -33.5t-56.5 -23.5t-58.5 -9q-58 0 -108 28.5t-83.5 73.5t-57.5 101.5t-34.5 111.5t-10.5 104zM1408 1024v128h256v256h128v-256h256v-128h-256v-256h-128v256h-256z" />
-<glyph unicode="&#xf219;" d="M134.5 1267.5q5.5 80.5 41 179.5t102.5 191q70 78 153.5 135t167 86.5t172 45.5t169 15t156.5 -8t137.5 -21t107.5 -26.5t72 -22.5l25 -9q12 -5 32 -14.5t74.5 -45.5t101 -78.5t97 -114.5t78 -153t27.5 -194.5t-40 -238.5q-43 -89 -97 -157.5t-109.5 -110t-115.5 -69 t-115.5 -37t-107.5 -12t-95.5 4t-76 13t-49.5 13.5l-18 6v-277q-1 -3 -2 -9t-6.5 -23t-14 -34t-24.5 -39.5t-36 -42t-51.5 -39.5t-68.5 -33q-52 -19 -107 -20t-97 11.5t-76.5 27.5t-53.5 27l-18 13v280q33 -34 67 -55.5t67.5 -28.5t61.5 11t44 63v946h312v-538l65 -13 q206 -32 329 60q105 78 128 243q2 76 -15.5 141t-49 110.5t-72.5 82.5t-86.5 59.5t-91.5 39t-87.5 24t-73.5 11.5t-52 5h-19l-66 -2q-217 -16 -359 -141q-57 -50 -97 -115q-27 -45 -39.5 -93t-11 -88t10 -78.5t22 -67.5t25.5 -51t21 -33l9 -12l-225 -201q-7 9 -18.5 25 t-40.5 68.5t-49.5 107.5t-34.5 137.5t-8.5 163z" />
-<glyph unicode="&#xf220;" d="M141 1431q0 133 65.5 245.5t178 178t245.5 65.5q141 0 260 -75q69 12 144 12q171 0 327 -66.5t269 -179.5t179.5 -269t66.5 -327q0 -96 -19 -181q51 -106 50 -217q0 -133 -65.5 -245.5t-178 -178t-244.5 -65.5q-123 0 -231 58q-79 -14 -155 -14q-171 0 -327 67t-269 180 t-179.5 269t-66.5 327q0 86 17 169q-67 116 -67 247zM537 775q0 -75 54 -153q52 -76 139 -123q119 -63 302 -63q150 0 263 46q111 46 171 130q59 85 59 188q0 88 -34 149q-35 62 -96 100q-58 39 -143 66q-77 25 -187 49q-89 20 -116 28q-35 9 -68 27q-33 15 -50 38 q-17 20 -17 49q0 46 52 80q54 36 146 36q97 0 141 -32q43 -32 75 -94q30 -48 51 -67q25 -22 72 -22q53 0 87 36q34 35 34 81t-25 96q-24 47 -82 92q-57 45 -139 70q-86 26 -197 26q-139 0 -247 -40q-107 -39 -164 -113q-57 -73 -57 -170q0 -102 55 -170q52 -65 144 -105 q95 -40 221 -66q93 -20 154 -38q57 -19 90 -50q33 -30 33 -80q0 -64 -62 -105q-65 -44 -170 -44q-78 0 -123 22q-47 22 -70 54q-27 34 -49 86q-21 49 -49 72q-32 26 -75 26q-52 0 -87 -33q-36 -33 -36 -79z" />
-<glyph unicode="&#xf221;" d="M384 384v640h192q49 0 104 47t103.5 127.5t80.5 204.5t32 261q0 5 0.5 13.5t4 31t9.5 39t19 30.5t31 14q33 0 77.5 -42t79.5 -119t35 -159q0 -85 -8 -165t-16 -117l-8 -38h416q53 0 90.5 -37.5t37.5 -90.5q0 -41 -24 -74t-62 -46q22 -33 22 -72q0 -41 -24 -74t-62 -46 q22 -33 22 -72q0 -53 -37.5 -90.5t-90.5 -37.5h-64q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-448q-65 0 -123 20t-93.5 44t-80.5 44t-87 20h-128z" />
-<glyph unicode="&#xf222;" d="M205 1168q0 83 59 142t142 59q100 0 160 -83q183 97 412 106l92 457q5 22 23 33q18 12 39 7l313 -72q24 41 65.5 65.5t89.5 24.5q74 0 126.5 -52.5t52.5 -126.5t-52.5 -126.5t-126.5 -52.5q-71 0 -122 48.5t-56 119.5l-262 60l-77 -386q222 -12 397 -108q60 86 163 86 q83 0 141.5 -59t58.5 -142q0 -55 -28 -100.5t-74 -72.5q14 -50 14 -99q0 -135 -98.5 -250t-267.5 -181.5t-368 -66.5t-368.5 66.5t-268 181t-98.5 249.5q0 50 16 104q-44 27 -70.5 71.5t-26.5 97.5zM307 1168q0 -47 40 -75q47 75 132 137q-29 36 -73 36q-41 0 -70 -28.5 t-29 -69.5zM388 896q0 -107 85 -198t230.5 -144t317.5 -53q171 0 316.5 53t230.5 143.5t85 197.5q0 108 -85 199t-230.5 144t-316.5 53q-172 0 -317.5 -53t-230.5 -144t-85 -198zM672 982q0 46 32.5 79t78.5 33q47 0 79.5 -33t32.5 -79t-33 -79t-79 -33t-78.5 33t-32.5 79z M737 739.5q0 21.5 15 36.5t36 15t36 -15q56 -56 199 -56q145 0 201 56q15 15 36 15t36 -15t15 -36.5t-15 -36.5q-86 -86 -271 -86q-187 0 -273 86q-15 15 -15 36.5zM1153 982q0 46 32.5 79t79.5 33t79.5 -33t32.5 -79t-33 -79t-79 -33t-79 33t-33 79zM1523 1728 q0 -32 22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5t-54.5 -22.5t-22.5 -54.5zM1567 1227q83 -61 131 -138q43 31 43 79q0 40 -28.5 69t-69.5 29q-45 0 -76 -39z" />
-<glyph unicode="&#xf223;" d="M256 849v209h263v-206q0 -33 23.5 -56.5t57.5 -23.5t57.5 23.5t23.5 56.5v487q5 136 104.5 230.5t238.5 94.5t238.5 -95.5t104.5 -231.5v-107l-157 -45l-105 48v92q0 34 -23.5 57t-57.5 23t-57.5 -23t-23.5 -57l-1 -481q-1 -138 -101.5 -235t-241.5 -97q-142 0 -242.5 99 t-100.5 238zM1105 846v210l105 -48l157 46v-212q0 -33 23.5 -56.5t57.5 -23.5t57.5 23.5t23.5 56.5v216h263v-209q0 -139 -100.5 -238t-242.5 -99t-242 97.5t-102 236.5z" />
-<glyph unicode="&#xf224;" d="M256 1152v384q0 106 75 181t181 75h1024q106 0 181 -75t75 -181v-384q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM512 1281q0 -53 38 -91l362 -362l4 4q37 -64 108 -64t108 64l5 -4l362 362q37 38 37 91t-37 90t-91 37 q-53 0 -90 -37l-294 -294l-293 294q-37 37 -91 37t-90 -37q-38 -37 -38 -90z" />
-<glyph unicode="&#xf225;" d="M128 930l365 291l531 -328l-369 -308zM128 1513l527 345l369 -308l-531 -329zM497 508v115l158 -103l370 307l370 -307l158 103v-115l-528 -317zM1024 893l532 328l364 -291l-527 -345zM1024 1550l369 308l527 -345l-364 -292z" />
-<glyph unicode="&#xf300;" d="M256 896v384q0 106 75 181t181 75h1024q106 0 181 -75t75 -181v-384q0 -106 -75 -181t-181 -75h-448l-448 -448v448h-128q-106 0 -181 75t-75 181z" />
-<glyph unicode="&#xf301;" d="M384 512v1024h384l64 -128h448v-128h-640l-128 -256h128l64 128h960l-256 -640h-1024z" />
-<glyph unicode="&#xf302;" d="M256 768l768 768h512v-512l-768 -768zM1152 1280q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf303;" d="M256 1088q0 143 55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5t-55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5zM384 1088q0 -117 45.5 -223.5t123 -184t184 -123t223.5 -45.5 t223.5 45.5t184 123t123 184t45.5 223.5t-45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5zM896 1062v474h128v-421l298 -298l-90 -91z" />
-<glyph unicode="&#xf304;" d="M512 384v256q0 159 112.5 271.5t271.5 112.5h256q159 0 271.5 -112.5t112.5 -271.5v-256h-1024zM768 1408q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181z" />
-<glyph unicode="&#xf305;" d="M256 384v1280h256v128h128v-128h640v128h128v-128h256v-1280h-1408zM384 640q0 -53 37.5 -90.5t90.5 -37.5h896q53 0 90.5 37.5t37.5 90.5v640q0 53 -37.5 90.5t-90.5 37.5h-896q-53 0 -90.5 -37.5t-37.5 -90.5v-640zM768 1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45 v-512q0 -26 -19 -45t-45 -19t-45 19t-19 45v448h-64q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf306;" d="M256 384v1280h256v128h128v-128h640v128h128v-128h256v-1280h-1408zM384 640q0 -53 37.5 -90.5t90.5 -37.5h896q53 0 90.5 37.5t37.5 90.5v640q0 53 -37.5 90.5t-90.5 37.5h-896q-53 0 -90.5 -37.5t-37.5 -90.5v-640zM768 1216q0 26 19 45t45 19h256h2h1h3 q22 -2 38.5 -18t19.5 -39v-2v-2v-1v-2q0 -5 -2 -15l-128 -512q-6 -26 -28.5 -40t-48.5 -7q-26 6 -40 28.5t-7 48.5l108 433h-174q-26 0 -45 19t-19 45z" />
-<glyph unicode="&#xf307;" d="M256 384v1280h256v128h128v-128h640v128h128v-128h256v-1280h-1408zM384 640q0 -53 37.5 -90.5t90.5 -37.5h896q53 0 90.5 37.5t37.5 90.5v640q0 53 -37.5 90.5t-90.5 37.5h-896q-53 0 -90.5 -37.5t-37.5 -90.5v-640zM512 640v128h128v-128h-128zM512 896v128h128v-128 h-128zM768 640v128h128v-128h-128zM768 896v128h128v-128h-128zM768 1152v128h128v-128h-128zM1024 640v128h128v-128h-128zM1024 896v128h128v-128h-128zM1024 1152v128h128v-128h-128zM1280 896v128h128v-128h-128zM1280 1152v128h128v-128h-128z" />
-<glyph unicode="&#xf308;" d="M342 342q12 45 22 71t38 66.5t76 88.5l395 395l-227 227l181 181q37 -37 90.5 -37t91.5 37l181 181q38 38 38 91t-38 90l181 181l543 -543l-181 -181q-37 38 -90 38t-91 -38l-181 -181q-37 -37 -37 -90t37 -91l-181 -181l-227 226l-395 -395q-68 -68 -113.5 -93 t-112.5 -43z" />
-<glyph unicode="&#xf400;" d="M256 1216q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5q0 -184 -111 -337l495 -495l-128 -128l-495 495q-153 -111 -337 -111q-117 0 -223.5 45.5t-184 123t-123 184t-45.5 223.5zM384 1216q0 -185 131.5 -316.5 t316.5 -131.5q186 0 317 131.5t131 316.5t-131 316.5t-317 131.5q-185 0 -316.5 -131.5t-131.5 -316.5z" />
-<glyph unicode="&#xf401;" d="M256 1216q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5q0 -184 -111 -337l495 -495l-128 -128l-495 495q-153 -111 -337 -111q-117 0 -223.5 45.5t-184 123t-123 184t-45.5 223.5zM384 1216q0 -185 131.5 -316.5 t316.5 -131.5q186 0 317 131.5t131 316.5t-131 316.5t-317 131.5q-185 0 -316.5 -131.5t-131.5 -316.5zM512 1152v128h640v-128h-640z" />
-<glyph unicode="&#xf402;" d="M256 1216q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5q0 -184 -111 -337l495 -495l-128 -128l-495 495q-153 -111 -337 -111q-117 0 -223.5 45.5t-184 123t-123 184t-45.5 223.5zM384 1216q0 -185 131.5 -316.5 t316.5 -131.5q186 0 317 131.5t131 316.5t-131 316.5t-317 131.5q-185 0 -316.5 -131.5t-131.5 -316.5zM512 1152v128h256v256h128v-256h256v-128h-256v-256h-128v256h-256z" />
-<glyph unicode="&#xf403;" d="M0 1024l506 506q101 103 234.5 160.5t283.5 57.5t283.5 -57.5t233.5 -159.5l507 -507l-506 -507q-101 -103 -234.5 -160t-283.5 -57t-283.5 57.5t-233.5 160.5zM272 1024l370 -371q77 -78 175.5 -119.5t206.5 -41.5t206 41.5t174 118.5l373 372l-371 371 q-158 161 -382 161q-108 0 -206.5 -41t-173.5 -119zM640 1024q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5zM1024 1152q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf404;" d="M0 1024l506 506q101 103 234.5 160.5t283.5 57.5q193 0 358 -95l-143 -143q-103 46 -215 46q-108 0 -206.5 -41t-173.5 -119l-372 -372l240 -240l-136 -136zM339 429l90 -90l1280 1280l-90 90zM640 1024q0 159 112.5 271.5t271.5 112.5q44 0 98 -14l-468 -468 q-14 54 -14 98zM666 395l143 143q103 -46 215 -46q108 0 206 41.5t174 118.5l373 372l-241 241l136 135l376 -376l-506 -507q-101 -103 -234.5 -160t-283.5 -57q-193 0 -358 95zM926 654l468 468q14 -54 14 -98q0 -159 -112.5 -271.5t-271.5 -112.5q-44 0 -98 14z" />
-<glyph unicode="&#xf405;" d="M640 768l320 320l-320 320l128 128l320 -320l320 320l128 -128l-320 -320l320 -320l-128 -128l-320 320l-320 -320z" />
-<glyph unicode="&#xf406;" d="M128 256l832 832l-832 832l128 128l832 -832l832 832l128 -128l-832 -832l832 -832l-128 -128l-832 832l-832 -832z" />
-<glyph unicode="&#xf407;" d="M384 1280v128l256 128q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5l256 -128v-128h-1152zM512 512v704h128v-704h128v704h128v-704h128v704h128v-704h128v704h128v-704q0 -53 -37.5 -90.5t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5zM768 1472 q0 -26 19 -45t45 -19h256q26 0 45 19t19 45t-19 45t-45 19h-256q-26 0 -45 -19t-19 -45z" />
-<glyph unicode="&#xf408;" d="M256 1151l476 -330l-183 -535l475 332l475 -332l-183 535l476 330l-587 -1l-181 535l-180 -535z" />
-<glyph unicode="&#xf409;" d="M384 1152l640 512l640 -512l-128 -128v-512h-1024v512zM896 576h256v448h-256v-448z" />
-<glyph unicode="&#xf410;" d="M256 512v704l768 -384l768 384v-704h-1536zM256 1408v128h1536v-128l-768 -384z" />
-<glyph unicode="&#xf411;" d="M384 384v448l896 896l448 -448l-896 -896h-448zM512 768l256 -256l128 128l-256 256zM685 941l96 -96l595 595l-96 96zM845 781l96 -96l595 595l-96 96z" />
-<glyph unicode="&#xf412;" d="M256 640v704l384 384v-704h640v448l640 -640l-640 -640v448h-1024z" />
-<glyph unicode="&#xf413;" d="M256 448q0 -80 56 -136t136 -56t136 56t56 136t-56 136t-136 56t-136 -56t-56 -136zM256 1024v256q209 0 398.5 -81t326.5 -218t218 -326.5t81 -398.5h-256q0 209 -103 385.5t-279.5 279.5t-385.5 103zM256 1536v256q209 0 408 -55t367.5 -154t310.5 -241t241 -310.5 t154 -367.5t55 -408h-256q0 260 -101.5 497t-273 408.5t-408.5 273t-497 101.5z" />
-<glyph unicode="&#xf414;" d="M21 358q-57 102 31 244l760 1237q57 93 134.5 126.5t155 0t135.5 -126.5l759 -1237q88 -142 31 -244t-224 -102h-1557q-168 0 -225 102zM883 1536l51 -640h179l52 640h-282zM896 640q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5z" />
-<glyph unicode="&#xf415;" d="M128 1024v256h310q75 172 233.5 278t352.5 106q130 0 246.5 -50t204.5 -139q37 -37 37 -90t-37 -91t-90 -38t-91 38q-116 114 -270 114q-159 0 -271.5 -112.5t-112.5 -271.5h-512zM536 665q0 53 38 90t91 37t90 -37q113 -115 269 -115q159 0 271.5 112.5t112.5 271.5h512 v-256h-310q-75 -172 -233.5 -278t-352.5 -106q-130 0 -246 50t-205 139l1 1q-38 38 -38 91zM832 1024q0 80 56 136t136 56t136 -56t56 -136t-56 -136t-136 -56t-136 56t-56 136z" />
-<glyph unicode="&#xf416;" d="M512 832v320h128v-320q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5v640q0 80 -56 136t-136 56t-136 -56t-56 -136v-512q0 -26 19 -45t45 -19t45 19t19 45v452h128v-452q0 -80 -56 -136t-136 -56t-136 56t-56 136v512q0 133 93.5 226.5t226.5 93.5t226.5 -93.5 t93.5 -226.5v-640q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5z" />
-<glyph unicode="&#xf417;" d="M384 1216q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5t-44.5 -222.5t-124.5 -185.5l-407 -406l-407 406q-80 80 -124.5 185.5t-44.5 222.5zM640 1216q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5t-93.5 226.5 t-226.5 93.5t-226.5 -93.5t-93.5 -226.5z" />
-<glyph unicode="&#xf418;" d="M608 1056l128 128l224 -192l448 512l128 -96l-512 -768h-128z" />
-<glyph unicode="&#xf419;" d="M0 256v256h2048v-256h-2048zM0 896v256h2048v-256h-2048zM0 1536v256h2048v-256h-2048z" />
-<glyph unicode="&#xf420;" d="M256 1024q0 155 60 294.5t167 246.5l-227 227h640v-640l-232 232q-72 -71 -112 -163.5t-40 -196.5q0 -176 108.5 -313.5t275.5 -180.5v-262q-180 30 -326 137t-230 269.5t-84 349.5zM1152 256v640l19 -19l213 -213q71 71 111.5 164t40.5 196q0 176 -108.5 313.5 t-275.5 180.5v263q180 -31 326 -137.5t230 -269.5t84 -350q0 -155 -60 -294.5t-167 -246.5l227 -227h-640z" />
-<glyph unicode="&#xf421;" d="M384 896v256h1152v-256h-1152z" />
-<glyph unicode="&#xf422;" d="M384 512v1024h1152v-1024h-1152zM512 640h896v640h-896v-640z" />
-<glyph unicode="&#xf423;" d="M83 832l373 671l112 -62l-267 -481h403v-384h-128v256h-493zM768 1024q0 87 43 160.5t116.5 116.5t160.5 43t160.5 -43t116.5 -116.5t43 -160.5t-43 -160.5t-116.5 -116.5t-160.5 -43t-160.5 43t-116.5 116.5t-43 160.5zM896 1024q0 -79 56.5 -135.5t135.5 -56.5 t135.5 56.5t56.5 135.5t-56.5 135.5t-135.5 56.5t-135.5 -56.5t-56.5 -135.5zM1427 832l373 671l112 -62l-267 -481h403v-384h-128v256h-493z" />
-<glyph unicode="&#xf424;" d="M256 640v768l384 384h768l384 -384v-768l-384 -384h-768zM883 1536l51 -640h179l52 640h-282zM896 640q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf425;" d="M384 384v1280h256q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5h256v-1280h-1152zM512 512h896v1024h-128v-128h-640v128h-128v-1024zM640 704q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM640 960q0 26 19 45t45 19t45 -19t19 -45 t-19 -45t-45 -19t-45 19t-19 45zM640 1216q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM768 1600q0 -26 19 -45t45 -19h256q26 0 45 19t19 45t-19 45t-45 19h-256q-26 0 -45 -19t-19 -45zM896 640v128h384v-128h-384zM896 896v128h384v-128h-384z M896 1152v128h384v-128h-384z" />
-<glyph unicode="&#xf426;" d="M128 768q0 106 75 181t181 75h7q-7 29 -7 64q0 133 93.5 226.5t226.5 93.5q134 0 228 -96q47 101 140.5 162.5t207.5 61.5q159 0 271.5 -112.5t112.5 -271.5q0 -62 -23 -128h23q106 0 181 -75t75 -181t-75 -181t-181 -75h-1280q-106 0 -181 75t-75 181z" />
-<glyph unicode="&#xf427;" d="M384 384v288l455 455l-1 1q-74 74 -74 180t74 181l233 233q75 74 181 74t180 -74l286 -286q74 -75 74 -180.5t-74 -180.5l-233 -233q-74 -73 -178.5 -74t-179.5 71l-455 -455h-288zM1088 1360l256 -256l160 160l-256 256z" />
-<glyph unicode="&#xf428;" d="M768 1024q0 106 75 181t181 75t181 -75t75 -181t-75 -181t-181 -75t-181 75t-75 181z" />
-<glyph unicode="&#xf429;" d="M384 896v128h896l-343 343l87 86l493 -493l-493 -493l-87 86l343 343h-896z" />
-<glyph unicode="&#xf430;" d="M531 960l493 -493l87 86l-343 343h896v128h-896l343 343l-87 86z" />
-<glyph unicode="&#xf431;" d="M384 1152l128 128l448 -448l448 448l128 -128l-576 -576z" />
-<glyph unicode="&#xf432;" d="M384 768l576 576l576 -576l-128 -128l-448 448l-448 -448z" />
-<glyph unicode="&#xf433;" d="M0 0v896l896 -896h-896z" />
-<glyph unicode="&#xf434;" d="M1152 0l896 896v-896h-896z" />
-<glyph unicode="&#xf435;" d="M384 512l640 640l640 -640h-1280zM384 1280v128h1280v-128h-1280z" />
-<glyph unicode="&#xf436;" d="M512 640v128h128v-128h-128zM512 896v128h128v-128h-128zM512 1152v128h128v-128h-128zM512 1408v128h128v-128h-128zM768 640v128h128v-128h-128zM768 896v128h128v-128h-128zM768 1152v128h128v-128h-128zM768 1408v128h128v-128h-128zM1024 640v128h128v-128h-128z M1024 896v128h128v-128h-128zM1024 1152v128h128v-128h-128zM1024 1408v128h128v-128h-128zM1280 640v128h128v-128h-128zM1280 896v128h128v-128h-128zM1280 1152v128h128v-128h-128zM1280 1408v128h128v-128h-128z" />
-<glyph unicode="&#xf437;" d="M512 512v1024q0 106 75 181t181 75h512q106 0 181 -75t75 -181v-1024q0 -106 -75 -181t-181 -75h-512q-106 0 -181 75t-75 181zM640 768h768v768h-768v-768zM896 512q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z " />
-<glyph unicode="&#xf438;" d="M256 1024v256h512v128l384 -256l-384 -256v128h-512zM512 512v384h128v-128h768v768h-768v-128h-128v128q0 106 75 181t181 75h512q106 0 181 -75t75 -181v-1024q0 -106 -75 -181t-181 -75h-512q-106 0 -181 75t-75 181zM896 512q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf439;" d="M384 1152h1280q0 -231 -145.5 -406.5t-366.5 -220.5v-269h-256v269q-221 45 -366.5 220.5t-145.5 406.5zM640 1280v384q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5v-384h-256zM1152 1280v384q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5v-384h-256z" />
-<glyph unicode="&#xf440;" d="M128 768q0 106 75 181t181 75h6q-6 32 -6 64q0 133 93.5 226.5t226.5 93.5q134 0 228 -96q47 101 140.5 162.5t207.5 61.5q159 0 271.5 -112.5t112.5 -271.5q0 -62 -23 -128h23q106 0 181 -75t75 -181t-75 -181t-181 -75h-384v256h-512v-256h-384q-106 0 -181 75t-75 181 zM640 384h256v256h256v-256h256l-384 -384z" />
-<glyph unicode="&#xf441;" d="M128 768q0 106 75 181t181 75h6q-6 32 -6 64q0 133 93.5 226.5t226.5 93.5q134 0 228 -96q47 101 140.5 162.5t207.5 61.5q159 0 271.5 -112.5t112.5 -271.5q0 -62 -23 -128h23q106 0 181 -75t75 -181t-75 -181t-181 -75h-512v256h256l-384 384l-384 -384h256v-256h-512 q-106 0 -181 75t-75 181z" />
-<glyph unicode="&#xf442;" d="M512 512v896h512l-128 -128h-256v-640h640v256l128 128v-512h-896zM896 987l550 549h-422v128h640v-640h-128v422l-550 -550z" />
-<glyph unicode="&#xf443;" d="M512 384v1280h640l384 -384v-896h-1024zM640 512h768v640h-384v384h-384v-1024z" />
-<glyph unicode="&#xf444;" d="M384 512v1024q0 106 75 181t181 75h1024v-1152h-64q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5h64v-128h-1024q-106 0 -181 75t-75 181zM512 512q0 -53 37.5 -90.5t90.5 -37.5h818q-50 55 -50 128t50 128h-818q-53 0 -90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf445;" d="M160 747l232 201q-8 67 -8 76q0 8 8 75l-232 201l58 139l305 -21q47 60 107 107l-21 305l139 58l201 -232q67 8 75 8t75 -8l201 232l140 -58l-22 -305q56 -44 107 -107l305 22l58 -139l-232 -201q8 -67 8 -76q0 -8 -8 -75l232 -201l-58 -140l-305 22q-44 -56 -107 -107 l22 -305l-139 -58l-201 232q-67 -8 -76 -8q-8 0 -75 8l-201 -232l-139 58l21 305q-56 44 -107 107l-305 -22zM768 1024q0 -106 75 -181t181 -75t181 75t75 181t-75 181t-181 75t-181 -75t-75 -181z" />
-<glyph unicode="&#xf446;" d="M256 1024q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM512 1024q0 -212 150 -362t362 -150q135 0 259 72l-699 699q-72 -126 -72 -259zM765 1464l699 -699 q72 123 72 259q0 212 -150 362t-362 150q-136 0 -259 -72z" />
-<glyph unicode="&#xf447;" d="M256 1664v128h384v-256h1152l-256 -640h-896v-128h896v-128h-1024v1024h-256zM512 384q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5zM1280 384q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5t-37.5 -90.5 t-90.5 -37.5t-90.5 37.5t-37.5 90.5z" />
-<glyph unicode="&#xf448;" d="M512 384v1280h384v-1280h-384zM1152 384v1280h384v-1280h-384z" />
-<glyph unicode="&#xf449;" d="M512 512v1024h1024v-1024h-1024z" />
-<glyph unicode="&#xf450;" d="M256 384v1280h384v-1280h-384zM768 1024l1024 640v-1280z" />
-<glyph unicode="&#xf451;" d="M256 384v1280l1024 -640zM1408 384v1280h384v-1280h-384z" />
-<glyph unicode="&#xf452;" d="M512 384v1280l1024 -640z" />
-<glyph unicode="&#xf453;" d="M256 256v1536q0 106 75 181t181 75h1024q106 0 181 -75t75 -181v-1536q0 -106 -75 -181t-181 -75h-1024q-106 0 -181 75t-75 181zM512 512h1024v1280h-1024v-1280zM896 256q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5z" />
-<glyph unicode="&#xf454;" d="M128 1024v256h512v128l384 -256l-384 -256v128h-512zM256 256v640h256v-384h1024v1280h-1024v-384h-256v384q0 106 75 181t181 75h1024q106 0 181 -75t75 -181v-1536q0 -106 -75 -181t-181 -75h-1024q-106 0 -181 75t-75 181zM896 256q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf455;" d="M256 1024q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM896 1408q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5zM928 512h192v640h-192v-640z" />
-<glyph unicode="&#xf456;" d="M256 1024q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM883 1536l51 -640h179l52 640h-282zM896 640q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5 t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf457;" d="M256 1024q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5zM720 1442l92 -180q134 71 234 71q38 0 65 -16q26 -17 26 -44q0 -35 -24 -63q-24 -27 -77 -61 q-68 -42 -95 -87q-26 -44 -26 -109v-57h204v34q0 29 17 49q18 21 87 66q83 53 120 111t37 139q0 111 -84 176q-85 65 -232 65q-180 0 -344 -94zM896 640q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf458;" d="M128 384v1280l768 -480v480l1024 -640l-1024 -640v480z" />
-<glyph unicode="&#xf459;" d="M128 1024l1024 -640v480l768 -480v1280l-768 -480v480z" />
-<glyph unicode="&#xf460;" d="M256 1280h128l86 256h340l86 -256l-256 -768h-128zM533 1280h214l-43 128h-128zM768 512l256 768h128l86 256h340l86 -256h128l-256 -768h-768zM1301 1280h214l-43 128h-128z" />
-<glyph unicode="&#xf461;" d="M256 1261q8 -158 120 -264l648 -613l648 613q112 106 120 264t-93 276t-251.5 126.5t-262.5 -97.5l-161 -153l-161 153q-112 106 -262.5 97.5t-251.5 -126.5t-93 -276z" />
-<glyph unicode="&#xf462;" d="M102 1024l304 -455l213 142l-209 313l209 313l-213 142zM772 543l248 -62l256 1024l-248 62zM1430 711l213 -142l303 455l-303 455l-213 -142l208 -313z" />
-<glyph unicode="&#xf463;" d="M0 512v704l768 -384l256 128v-448h-1024zM0 1408v128h1536v-128l-768 -384zM1152 384v640q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5zM1280 640h256v-256h128v256h256v128h-256 v256h-128v-256h-256v-128z" />
-<glyph unicode="&#xf464;" d="M0 512v704l768 -384l256 128v-448h-1024zM0 1408v128h1536v-128l-768 -384zM1152 384v640q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5zM1280 640h640v128h-640v-128z" />
-<glyph unicode="&#xf465;" d="M0 512v704l768 -384l256 128v-448h-1024zM0 1408v128h1536v-128l-768 -384zM1152 384v640q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5zM1260 656l272 -272l452 453l-90 90 l-362 -362l-181 181z" />
-<glyph unicode="&#xf466;" d="M0 1024l640 640v-320l-320 -320l320 -320v-320zM512 1024l640 640v-384h256q212 0 362 -150t150 -362v-300l-150 150q-74 74 -168 112t-194 38h-256v-384z" />
-<glyph unicode="&#xf467;" d="M384 1024l640 640v-384h256q212 0 362 -150t150 -362v-300l-150 150q-74 74 -168 112t-194 38h-256v-384z" />
-<glyph unicode="&#xf468;" d="M256 256v1536h256v-1536h-256zM640 896v768q35 0 63.5 13t54 32t56.5 38t85 32t125 13q70 0 125.5 -13t93 -32l75 -38t93 -32t125.5 -13h256v-768h-256q-70 0 -125.5 13t-93 32l-75 38t-93 32t-125.5 13q-71 0 -125 -13t-85 -32t-56.5 -38t-54 -32t-63.5 -13z" />
-<glyph unicode="&#xf469;" d="M256 512v768h1536v-768h-256v384h-1024v-384h-256zM640 640v128h768v-128q0 -158 113 -271l112 -113h-768l-112 113q-113 113 -113 271zM640 1408h768v256h-768v-256z" />
-<glyph unicode="&#xf470;" d="M384 384v640q0 53 37.5 90.5t90.5 37.5v128q0 212 150 362t362 150t362 -150t150 -362v-128q53 0 90.5 -37.5t37.5 -90.5v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-1024q-53 0 -90.5 37.5t-37.5 90.5zM768 1152h512v128q0 106 -75 181t-181 75t-181 -75t-75 -181v-128z" />
-<glyph unicode="&#xf471;" d="M512 512v1024h512q106 0 181 -75t75 -181q0 -87 -57 -159q83 -39 134 -117t51 -172q0 -133 -93.5 -226.5t-226.5 -93.5h-576zM768 640h192q80 0 136 56t56 136t-56 136t-136 56h-192v-384zM768 1152h128q53 0 90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5h-128v-256z" />
-<glyph unicode="&#xf472;" d="M640 512l40 128h128l240 768h-128l40 128h448l-40 -128h-128l-240 -768h128l-40 -128h-448z" />
-<glyph unicode="&#xf473;" d="M384 384v1280h1280v-1280h-1280zM512 512h1024v576l-128 192l-448 -672l-192 288zM640 1280q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5t-37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5z" />
-<glyph unicode="&#xf474;" d="M128 256v384l154 -154l230 154l-154 -230l154 -154h-384zM128 1408v384h384l-154 -154l154 -230l-230 154zM640 768v512h768v-512h-768zM1536 256l154 154l-154 230l230 -154l154 154v-384h-384zM1536 1408l154 230l-154 154h384v-384l-154 154z" />
-<glyph unicode="&#xf500;" d="M128 0l960 960l960 -960h-1920z" />
-<glyph unicode="&#xf501;" d="M0 128l960 960l-960 960v-1920z" />
-<glyph unicode="&#xf502;" d="M128 2048l960 -960l960 960h-1920z" />
-<glyph unicode="&#xf503;" d="M1088 1088l960 960v-1920z" />
-</font>
-</defs></svg> 
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf b/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf
deleted file mode 100644 (file)
index b6f125e..0000000
Binary files a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.ttf and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff b/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff
deleted file mode 100644 (file)
index da8be38..0000000
Binary files a/wp-content/themes/twentythirteen/genericons/font/genericons-regular-webfont.woff and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/genericons/genericons.css b/wp-content/themes/twentythirteen/genericons/genericons.css
deleted file mode 100644 (file)
index b10b86f..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-/**
-
-       Genericons Helper CSS
-
-*/
-
-
-/**
- * The font was graciously generated by Font Squirrel (http://www.fontsquirrel.com). We love those guys.
- */
-
-@font-face {
-    font-family: 'Genericons';
-    src: url('font/genericons-regular-webfont.eot');
-}
-
-@font-face {
-    font-family: 'Genericons';
-    src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAENIABEAAAAAatQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABgAAAABwAAAAcaii0EkdERUYAAAGcAAAAHQAAACAArQAET1MvMgAAAbwAAABCAAAAYJdbaIVjbWFwAAACAAAAAJgAAAGyqWnWY2N2dCAAAAKYAAAADgAAAA4BYgHJZnBnbQAAAqgAAAGxAAACZVO0L6dnYXNwAAAEXAAAAAgAAAAIAAAAEGdseWYAAARkAAA5fgAAWkD4H3YjaGVhZAAAPeQAAAArAAAANgUfUT9oaGVhAAA+EAAAABwAAAAkEAMH3WhtdHgAAD4sAAAAiAAAAQpVkUB7bG9jYQAAPrQAAAECAAABAoDMauhtYXhwAAA/uAAAACAAAAAgAagCQm5hbWUAAD/YAAABYgAAAthC114IcG9zdAAAQTwAAAHUAAAFCuMEJONwcmVwAABDEAAAAC4AAAAusPIrFHdlYmYAAENAAAAABgAAAAbRQFLPAAAAAQAAAADMPaLPAAAAAM71j4QAAAAAzvWBvnjaY2BkYGDgA2IJBhBgYmAEwnogZgHzGAAJvwCyAAAAeNpjYGb/zDiBgZWBhdWY5QwDA8NMCM10hsEIzAdKYQeh3uF+DA6qf74ys6X9S2Ng4GBg0AAKMyIpUWBgBACOigvWAAB42mNgYGBmgGAZBkYGEFgD5DGC+SwME4C0AhCyMDCo/vnI+Ynzk+Qn1c8cXzi/SH7R/GL5xfNL5JfMLyVfmf//B6tg+MTwSeCTwmeGLwxfBL4ofDH44vAl4EvCl4KvDP//32LnZ+Hj4+PgY+LV4DHk0eZR5ZHnkeQR5uHlYeeugdqOFzCyMcCVMTIBCSZ0BQzDHgAA5FwqMwAAAQkARQBBAGYAfwC3AAB42l1Ru05bQRDdDQ8DgcTYIDnaFLOZkMZ7oQUJxNWNYmQ7heUIaTdykYtxAR9AgUQN2q8ZoKGkSJsGIRdIfEI+IRIza4iiNDs7s3POmTNLypGqd+lrz1PnJJDC3QbNNv1OSLWzAPek6+uNjLSDB1psZvTKdfv+Cwab0ZQ7agDlPW8pDxlNO4FatKf+0fwKhvv8H/M7GLQ00/TUOgnpIQTmm3FLg+8ZzbrLD/qC1eFiMDCkmKbiLj+mUv63NOdqy7C1kdG8gzMR+ck0QFNrbQSa/tQh1fNxFEuQy6axNpiYsv4kE8GFyXRVU7XM+NrBXbKz6GCDKs2BB9jDVnkMHg4PJhTStyTKLA0R9mKrxAgRkxwKOeXcyf6kQPlIEsa8SUo744a1BsaR18CgNk+z/zybTW1vHcL4WRzBd78ZSzr4yIbaGBFiO2IpgAlEQkZV+YYaz70sBuRS+89AlIDl8Y9/nQi07thEPJe1dQ4xVgh6ftvc8suKu1a5zotCd2+qaqjSKc37Xs6+xwOeHgvDQWPBm8/7/kqB+jwsrjRoDgRDejd6/6K16oirvBc+sifTv7FaAAAAAAEAAf//AA942q18C3xU1bnvWnvveSaZmT3PZJKZzHtCJpkJ88hkIIQhCAECCAQCCCooggTkjS9q3Vqpioo9tqJVK2hbsdpj90xA2mJrjtVaW0fLFbmt1h6xp1ptPcfe9rSKmc39vrVnQhBsz/39bmBm7732npm1vvU9/t9jLaIh8Ef/yj1DeKIlBlJLzIRMFP1i2Mbb/DXUZeNdIv2r0vPEE166+An4u/MJ7pnyBZeS0+R0+XVymi6HE+X4aaoQSsb9TSREyxEOvlQjwXfrSA18s424yJVEJgmZlmQhIVtSsqYki0lZn5DtKdlQkh1JuTYh15WoXJ+QhRNFoq9NJpOyrlTUCcbYcF7HG/C9xhCTdZaCncZkV6lgsiaTRbsL79sthlihgcZIx0Sa8TvO9+KgO2Xo7GnCSWVJIGWJk07DNUckiY57KZUj4Sjc1cE/GION9BLZmJDNJdkGHYR+2mEwJ6DHcp2lIEJ/dKWCg8YKYp1oHRYMRj7kypGCzQxXVKsjcNUxkVisIZ9gtXCCL0TszmRnOhKg5BW6mj5KV7/yirJfuUTZT5P7ju/bd5xPjG985RXuIWzdhyQWiEQlnaSVGHVdxE+uZ7SFvvkSciMQMyHzpWEj79DH5JqSrIfeBlhva0tyraVQD731lGSPpWCFM22pEIR+11LRWtAbczm5XpS5nOyBUfAOM/RbtoqyBsbS6IOxaKm1FtscYoHT5GBMNuAYv00jIoVtdpJKkkyaBAPEle70OR12rS8iAYHZ/0+ArHmq+8EPqVY59cMfKJ9IR6nx6FHlb0epxCPNTxNpVBJ8B1aV34a7Y0/uPnp09y3PPIPj5oh+PF9Nx3EX9LWpFDKWIYm8BYxVl6SyJSGTE7KQBErIvKWgp4wU2qRcY4GxxoBYOGsEB+AXaeWVghfQVoHuKHCEA0fwUn1XiHprVALRwSYtzgEHFyJcCvABDTAV3sNTCfimjqQJlU2sK9AvTWnYoCEwKcYS8pKhVDAD5Y1EtALFCxoDHPkccnCFdjpRI8bh207SnpN3bz1Ntt6tkfafPLn/C8+3lP8gcfe3PM94FH5JS4iROMhKImsTspgCZpStSeSJGkaZWiCIk/WCUUP9/aKRR8kxakGmgEI1QBRTSTZZZAdyUNFhwrsOEeTKpcoVEMdOgmKyM+M/cwryIynHjw/t46onQDSQr+PKcUr2DY07JRzSjNGlgaTIPoKiDnMSS8he4NA065++VNQT/GG9AN3SWwpu6Fa8VIy7sTE+ERrjlkIdNDpKxToHNtZBF2WHpRCFRn+pGPVjYzQE/c4Add164GtjfS5XqIsD/9a4PDHg30LUAc3e1hzwdawGJVYMTWQySsV0Z9ahdYgonxkxHc14KVwAH+MdmBY412XwTiSAT7kcMENkaDC/5cCW/OAQ42aCfD3WxI1QafX+8H25JYq0YMuWBVRakrsvvH+1IgFjcxqKh91K5RHKHlHUR0DWgbvIiA5pZiVB0kZkf0K2pXCKgMFrU0wThRJy/QmQ6EIY5qkgWICNGmAkDcBGKX+S9Tjop2IwEKFZPw5KbYsB2x5YJZBVBw6sUvJKXlp1gEfN8vivsEVS8sjR7Ca8K3k6ckBZJf3qcSqdaSGEp1U50EAPfWRmRctT7Kj+BOoks6XghKlpKhUCMB9mmI9ho9VWj1rEKRYafDgHFGTgsNZgdjibKrMAHabhznQ06+VRElw9NB2BC+qwm6gOf5TJZaa/f4V7gscyOXNR34UX9q1Ydnl8YBJPkNE+hVd///H+FY1TZsyNzr+z86K+o7882rdi+Qc3L33srslo/uCV1oNGIevIBiJfkZAvKcmtqEGofCXjxs6S3GkpNFKU2MJ66H0n9LPYP29BDvRko/i0xuLovmDJZUzVX3IFcJTlMrjRKuZrjDYPaWlL52cPXooD1VgPBULhjiQbnJi2klAqKRCrw0I02kgm3ZlJR3sEfOMi0Tg1cbpIVKuL82aqdWkddi/v0upMNE6jcSHaSk3U6fIKLq+uM2tHNRENkUepje765TG6i1ofVa5TfhEK0BnzrpMGs+u1Rr3ZJtSlui/PXr1nz9XZy3oSRuOkjvXZQem6uZnapqnLlvo4gyfQ6RFqGwyimzd43IE6ytdZm0OdUxbFaSCk/EK5TiC/pF+AL39U+U9l9zGlUP7jOl1zg/D8wpsnG5pnDT217ZGt5pZZl06knGCdGPZznD88UdRy3D03bN+/7amhWT594qI6E+3KCnXBxnpOV+O2wtiau/y83t3Q3OAEXZS8Vqj3addxTrRxOnxjc2MmjYzzJ5E+soDsIMU6QmJypITao7kkd6nztZDZNwuIhaVwIcxXbxLV6yKYsgtBHvJ1mto6wdnUHGppz0yexearPgLtRgOxtfZMzfcumIvT1Cwe0tMmz2Q877IW/YkLcmjj6ilMmA/mywJqHkw3b7e6Okk2Eq2l0awzlOWiWkKd/mSW47XE5rT1CNlIKBjQUi/n6hRcXNTE2bwUPmPNhr6FM0UfgpftW99SPlR2K2vg9WFox8Yb6Hffs+SVd5Wtf/c9R/+6567h55Q/U/FXdNbho/7v/Va57W9rf649MO+O9RO+qBz5gU+iC5yeqPYJOvd695f7nv77YtOkFZ6HXq5X/sQnz/3+b8HvcrMPKq9eW6Kd8zqkwWT9V5yz4tT9tyXK0U8fGFlA2+gtc5RjmvWPKY9xk3w9vaEv3mMpb/GkFtf6tY3UM5y7dEh5tPF+5ef3baSLR+JMfiTaBjjkN6DNYdgpXxY41JlKwmEKsGicZtJZp+BC/k4lXZ1ZrQ5fyLImXgj6pI4WSn52zTOhqDeRvPHxBUvnLkvuoXveMf7q/gMbpfWt11y1dvYm2rPz6XeUX39LeZUe03yDu3uzrs7981s0MT756CVXLH7iFzXR9vv/9w731Fv66to3L9D59Nd//MEv7l+KfSOAkXQSiZILCKpIUJYBMG9JWUzIvpTsLMlulXVaAHeeQDAKMNRgAVwpuwBLpQoTgHlcgOZkd47BhPHaVPTb/FNQv7qykWDAxHloEMFDICLtG9KQoX37hpR3qalWeTfW+5h2/vpL7lnWpijltqF9iBHw9qfwzr1IhZHa7iz9P8bsJTsv+JMyWs4hwAOLTyTNe9D3BjKf6VMHs+K2ZJFQNG7EBRYPUIVetexupv+5JHZdTBZd9fiMy2GIFesZNq4nYAsbKzY8JaZ7uFTS2Ux54FAP5+fRmHPSb9Nrn7wqO+R26/5tborONikvKCP8SzRBufl7NuW1PK+8m59helU5NnqEn01A21fpawbcsRiQx1qyl8h1CXlpSW5OFMJpwGSNpcKEOKD4RSqh142T0W6Q0QuT8ppSsXsN9rG7H4a0xlJYBe0guFcC7btRcA0ouDbnkuUXM6FtXorCTPUGYrcFsn0rL161BmW1UTzkjM3qR0UsL7IWWjpQaq0WaydIrROkVgtSG0GppVpbKtk5lXY6tTqtjtp40LadLqfa5qVqYw+XSaOuNSDjulCSBYpsHYnytNMKWho4WCft/YjOpRvp3I/27v1IOaR8TTn0UfpUSblx5u50eGMw4LCZ7G0TaUS+YYndbLfvvjCyIRi02KjZEptIgwvrATnU2zmbxqKt1eh5fv4k4ybl/QdfVR6iF27ZsedmgfuY3nrkjcs1U/g5n/kVOOO4Pym71gieh6hJw/G0OcBruNH7OJEu03EBHzVio63ByUHrw7T2wtxKf3x5JiB4jY019SanaDfmBukVm58/9XV/XKvhDpb3DtHtb7463NJ66wOqfzE2tzPIcnIFeYjISxNyS0qeXUK+AxA5HRyNlGwvFafbcfqme2H6GoAX16pzjJ4bOmpg8WV3Ug6Btk4WAyF8NNAF3LgO5lcHHscwb5q5AmctIOaNmhrvhFhv/+LB1WyuZ8NcF0lsJqjgAm+Cc128C+3udPEItfiDockrL2Pm1Cbi5KCZpK6ANhjgM6qkeqhfDIp+hwrrUWrBzIJ51cP9LDtNZf0BLd9DXWBPNS6cVZBgW6TTBd/k1AJrSDeUvB6fu9lrnW07cp8q2uCknGaqDyCtotFcfDcfNIdsHlHUx+ceumjgwK3lR278/YzcG9LiObbBULfHo9PR8qElt01z3L3ruh85HdKuG16i79Lf38hPyfm7wx4qaKehRlD9H/zqUfiVJufdT23g3LVNYqO93mFMz5x815GtRzr2Xnbqm0vWU9pQN7lhYmBigyds0V8hdD7ya0H4/TcPjAjCL4mKycCAap8Br94CunkWQ9owB3wCcEwVaasT5IEJ8pYYUtYBtinUmYDCHrEghhCWhepF6yGLua09rqIyu3MyBQAZp6A6bKA3gMLpbA9NJREjw3mcA2Wo0WX8XmrhAKVdsZBbvJauGRhYZ6NzlKcBls2usQ9OnTTXT2fn1t2+KNSbSvh9jhrlCIU/rTj7sstm969aferb/L+P+rkJnY3JmZNWzyj/J9e15bsbsjW2xsZgk3iX+23lPeU/Lz6LT5sAe2bJDUwDARL2x0DtdDBn0Oc7IcqdKdkG/pdFdsP4u9j4wQO2MCfYy/wG2a9yawwcEkuhTVVDOSCL18NMgOwXC/UuIE7AKmdyckwsdHQiiXxwu9CSUV3h8SYC0PbnkosRixkOoNWYyUCbQMnCaXT6ALegd/oiC9WBF/x1qtdbZqR2U/3B25MLuwIW5ePxRmSfcO2kCy+c1D1v/qdH+IbR9+jRdltL17CyjL74vafr2yINW4AZngRAtQCw1DTyXVJ0In4yJ+QJJaSQFgjSywiSKckZS6EJRg52MmAptDOXuTAdDp3uH/bUfDSHOGJGk9wAVBwp2OkncmRk2GqP2GJFePft8e0JakFMc+SQ1d7gjsTxj447l/NuWmjKgCC7clNQkANiUevswLN2a8E8AanZMQF9NNLco0o2mCoEyk6rw84J4L9EOVDQ0UjWpmIKJ3MGtKi+rSzqYOIcdhBeHaLlaIR7su/eYzT2lEwTL+94QvnZi5d/LzDbErj4Xp3n0Za71g4sC08xua67YucPLlc++PiOD7+xbMCq01kMuqDzxi8Jf7rqN688fOl1Lymf3vk35eqTF+eV3+Z2fbXz4C5OXnjNHUc3LErd81zu8q98n058+gQ1XX7wzWu/usbhrp/SUm8xpKgaXhvDsINkNymakO4AO2Yn5C60kcwmLmWkD5fksKWQAkrPLclzLYWZcDa5JE9W3V/wPZYBI85NAW1iiYHFqC9nikdMGltz1zTLArycbC04pyIBnSb0QhYDTWeDF2IwEps7PCE1eeqCz3geiGSDgWhnFoCpSj4mu+BrOV3OTmDSbGckClRmWAHJDNTPomEErgVVC/ABpsJ1tuOh+gZfvXuOZ1bT3gWPlvdc8tjf9971f75zfW5ondUjcBZeozFd0CeNbH3p5IJ9lyy63FYz0ds3fdF2i96w1VavBbT61Fl+hnIJvP7z0dYd66g703+ETv3ZtuPfvGzeTY8NL9/zWqveZDPkDTanOP/61cVbF7751Nf+fu/OBfGHr27tXXr/1thCm00JD6zecy0dZX70AW6VbpXmAChGM2khTBeyOIlJDRZRNUJjKRiA4nXV4JDV4vR1WiI+oXI88Fe67K9/VR7n7qycCN9VHv9r5ZwdK7iY6G4EF8ZPMgRjnPUl2ZqQTSwOh9E28D7ADZa1GFsrEo0FZcBkHa5r8vhUxncBdzdSaypJic0aDvFwCUyNxi3CowxopcXX2Vcu/MrGb5TpJrq61qL8Sbnjlhn52yz6LVu7Znfb0xOPLZdv1Fy+cbFysvwX5ST93/QnlKcr9LXKgOf+lbJMzRfSWTRh09+/lTD6VGOKZvDjrYRimJMgWsNgKzlXuYUNVDq5XyAYjxqFd45FfdD1xhYF35vRSUd60F8RSdsCejoAnpxsSMC3UjmYkJtOYLTSmSyEkCQWjH/VoZlJiXZmgsGsd2ZFGHUUeVFEoBpEiAYg7Vc/dbtvufTiGzatWHbtl2+f290mivQJZfC02N4xe84G4dHyHdf1Ttvma3bau6h7WaihPf4AfZk20BfuWH7xlHzwLNsRJDEymdzMbAdYCW9CjpbkhoQcSMkJFp4SSrJgAaGlcneFKAhhfcAoquCCp4ADabRgpExOMddzCkhs2AcjCuTkCeKw19PGvMpGjM2QQkMUZLnRF27BtoRYCE04nwEB9z7FAjZ+EEEwcOBP+UMVTgyrxgWckEiMgkieZUWk/oyGZPqVjyzKcWWZctyifERZFPGk8hzX3J+RMv3s7SxDMoSNPOntwXhd2/Ge3mbluZP4oerT/RlQZ4AtKGALhdiJCzzzZqBeFOgXB9+cyglGHowfWjAYL3sZ9GuB9zFz0gF0aXDA6J31Tcjsckg8pNUgnnOhHRgOhFvbEP6xSFyWdiZdFOmho8gGNDKVRm1UDPOusMi7snAe1YiarIG6MpR4uB+LLSL3Y4+n3CvarbZyr+eWb387w2mUd957j3oPvv/BB72c5j3lHep9r/wpvffbvJO+1lxPX6upUdrrm5V2n1Npq6mhx50PbdqkPK48TtPP0q4HnqWp8rMPPfRQOUCXPfgs1/TsA3RZ+dlNvzmLhzJkKXmGPMZ4yF6SexLy90rynETV9fnRONcHsYUaWLoHzq4pydeoxAKm+TGGmNqAaZbm5HvEQ88sX9d7AOlyjbVYJ1yNWqJBzNtqNXZvoCPZ3TNn3qVbbv/6Y/9aHGaAuccOtjUyaTIC5jnguD5N9RZv97zvY7xTswjudSRTuc/xjIRUMoSgOM5FUfJAxwjRSCgasWY7Q1lA1wLHJFLIwjSgYz+V70RD4oqwpwSdltPg/U40G3E0wFoA1U5mR1B44RJvZ+PgUEbQvOCVDo033AS74vJyzGTjBWWP4ldgMIFMwbhXJMSU3nl8rp436bVv/Ynetnby0n0vbd8hRztnb9usPH3wceWDvjl1S5fR9iLn/6Vy8Gf3iY994Vrq2zV31r3lr93Dm+hl1PrQN6n3slDgSuU3+7+hvH7VVWuoqH/gqk3/PnmKs3/mmxcusTtSyZUrF0TSejGVXjwwOVerjTW3JOKz6jiTweGcMbfPFo9Y+2KxFf45Wm5wd+8FV3jqw+9s3taVjQQ/uOlL3+e1Swfv2HbtwIqfUIdxw+K1yl+v2jHlc1y6t5Tb3vz7y7fdvPPYQ0P2jueuu0956tpdWzyNv93/EL3q6w/+L6/W8rZy74dfOz27z5xzfE2598R+GMU26c5duegX79Xqdm7eoPz6+mue9/oHLl7xzpx59u6eSy9bvLjeNdHVN2FZ3yyNtjs7EJ5qcWhoV4z3zvF4/UIsMHdRNKs3NDRfcMW0DQmr5ao752xYF4tt33nddXe6bG/cvnf79tZgU4A6fsJteLZnnn1yz/oNpOoj6gnw/nxyJbmR3EFvIrImIa8tyVJCvjUl31SSdyeL0k3o8kl7DLHiTRKe3vQlcBRvssjXIyoHxBlNyJtSciuIyJ0JOXFCXl8avnB9Qh+TSQkDHxeW5PWWQp6l+2SXRc6W5GwCTgo7oMlXGr7ct0PNcfkshT3QdHNSvr0k35Is3r4Hf+32W+GH99yOp3skcDvvUrGsYevIsIplZ1nkmSOFQe4TednID4UdIy1qc59FnjFSWMp/Ii8fKcyaqYeG4Zl9M2yxQt8MPXxouG/WTFtMHrQMLx1cBq2Dy/TyUsvwsqXLbTFyZMbMvlmDS5ctj1f+6DktDArn14NIZjSbUKxdYnHl2utRcH07QDeK7ihahsKeGtAFE0C0pbXQSgDRoTa4SSw6XUzKo9dDszuxfoeKGuxeQGs94P/GhQSNc2mQPowqxwX0dH0gYBhKBqNqN6G3zLlMvM7EZ9M9fLYHmsEHdoDdAQ+44tMBGNSZABXGeZphTrQDHWopf90LX9j5i39Zl6zzeTpD/iU2m6ve5gq3dfvqLc3eeL39nvuURuXjb8ye55u+8ouzbV16quUESo2NJtuUOXfuSiVnt1hfDcSmheqDA7Paa4O2VM+0UHPt0986+rurU00r4l2XX5B0TbampzRNWjO9w8EfZYAKnGP6y95rLu1KDm6VprfMmNKebfb0mm2xjoTT6Yn09ixPxuZPhQvLkpvyBxd3bbikr1XDiYJZZ6ox69xtcVuDoHPGfJ7++X2WxMKOVrOhRtTxfCiebU2mvFvvOiAc2pQPtuZWbt+R3jrZ5rHmLtq6qXzqjF+uYvovg87vAr6/CP3qvgTLrq5A9V5IA3cBgzYni+ksslw6AbyetSAUAJtQWAnKPU1hzi9cMohznhULgb4cWjorThTv5ZupVwMk16CWFE1qyB/OvBygIL/YAfoT9GtcGw12MBBkovgRXZy/qaZv+syDBwuP3L9rpbuhtuWqi6/ItsQ2br5285VLp4lWytWIvpap4fSmxTNsVv8F07sstGvaK7vWu7jg1EUrVg7k7bbeX+/NtTQ28GJjvcFwUueaNEH45iM/XTl/22QfZ2pqMBo0tllLvvLo725YfvtA1qapq9NplT/ytYFAe7SlzsY1eGvraH0gZgq188Xyu3W+lfO/PffmFXPa/WY95Sw3JKe1r1owb1JbTe1LBt/6TYg37wI6bgc6+sm14JUi3mopFRtakHANDiDchoR8eUlekmApwSXVlCCVr0vI3hPyCnBRS8WAl0WU1oGUewN46iXwyRWWQpyB+GK8jmUNe0D0rwfqB7wgTr5cIb4CjKPgaGjRz9uJAlUnymYQspYGuA1Sd/kGkCpzPMDuLRGH67ykE0/1iNiZV0oxnl1xTHVOHXOPoiA6oQh4SFlw/NH4MfSKmZ3I+H9wH6PhzuoTldvBAE6pw67ewH/wzRXkW71/15dO7r7rmhn9T9Kud3bbUvRLJ2/ZtfHCuU8qP3tntzid3tmZXnrNkX1bN3dPDgSnTFoyb9PyxqDfLwKoXLm6LebzOhoSmUCgoX5SbtHg5js2bsjlsumVl37x4ik5v79n2vr57QlXo9PR5IulgyHNfbtPfqm/dvc7ys+eXLVkaDNcTTJ9+R3a9eTgwI7yX/rnz01MjccXL1m3bEpPJNrYUG/XG6xml90TD4R8vp4OmzMUXJlMtLc3uFuic2avXnvBtJYWN4CyZm8yP6HN6fQF0hNdbr+f+QcgY1rMcSbJCiK3If4uRttYGrcOpzyVkHUnZLFUFHXYKLZiLYjYwN697D0IHKATWaEIBrvTWIihg9l0wLRGEVARllQE7QgThMoOE4laM0Wwbdfqxt5iNOlk2Bu8YSqNTNy0Ok91tW6rf/lMi15PD2T6OyJO+N+fySMeVvLTdvRd1ErB97nkkY9v14jt/qbFDyxaciAc6c9M6K3zR9kbPDrU39LRwsIBJbpXl9JtJxPJJDKbLCJryEayg9xAryaYe5xaki9LyMtLxeWXwWjI8kHg55Usgr4hJc8rFdPrrsG6mK6E/IUUxmEBYTsS8paSvEP1qr6YkNtPyN2l4WR3+5gVTZbkbkuhH2RiQUleYCmshbOhkjxkYcGdSEnehtbYVhq+LjJdj8Gwwo2VoM9P/rJLtYg6i6wfKbiFT+SGkR/++eC/PYLNBXeDHsNB9SOFWrhTN0Ke1ulr6+ob3FXL95lrZve620VrIZEGDdgvDvOaLiZbC6zF1oGlqBbXisNT+5azUP6QdXjCiktYAnW6mDdYHE3eq7Zs3/kFbIhYC6FrMOKxaDlMb3dOnicejrQnQpOnq8m7w+A4kZ3X4QUvFjVNffjdDmtB2wh2c8cW6ILNynyuSnLKBrLq0qBkO5kRjIZ5p0uNMamsgUAZhDdOs3Z4HMMgTrsTYTOGkjFH4GQhKbs2YE+D18KEGy6ZEIfSnexOtegHv5qFUkpXD6zpPvL7lRqr1UFz9QMdc9avn9O3VqOcmvfb73WvG9jZFTe9oDylbFP+9QVLW2ZtS2KJp23CpIVP0OB3n6TBJ55Q3nryu8pb26bFE9N6V3pbzV13/0uXudVrHvzB0UH6L9MugVba0Z5vb8/TgY5YbkK78JWBqwdWG+hLzppazawJE9d/bf3qvm7li7WrBq8eyK5oTE689d3du39/a7KzcXkm0dTfE8q9cuLpoaHDGzbC+ycre3tX9t4f85q7uszemHlw8H3Wwl+PP9Fe/vGUec0dLZMI1qVwGIOWiAd8wzuI3JiQ21KytlTUNqKYaikwdgtj3tpS1XE8U6pTX5Lr1cismKyk7QJqhUer6kLqeZj1RlasVJNjir1Q247soG0EC9sQCrPpFp82mC31zT4/skGtVTbm1PIwtbajh/qcLocummGlHDyLcYUzriy7PYX6WfUS+Lu6xAUJzYvU+aLmG+vhlNKX7tr7Er9w/TfwQveS8h8/4xcee8WfSPjpe7f96NnbNrR3rAzE4wGlec9zP73tf3XEj+O9Xx2746c/qdbr6DCvHSJTmL/oLMkeFm1ATzHMKCGWZFEtPACvMALjbRQxOF+LI/Q4mRVTS1Uq4QKsKOOI3UWzzmTWRTuRt3QGGgnoME0hgHtfLSSjJEKHhPDesIYOhed0ZsLKG8qb4Y0hLPZgeUvpGJab0dX01qGIsk/I5wU6FBmaA8/RSDiMGAhzf8+C39vL6rDU6j5iM2htGZeBZh2UN2glehVnU+4u/5kz063lD4WH6Ta67eHyR5Sz043lPyt3062cWfka/ygNKt9XXuYP0OXKy8qRcnb7OppSSuu2Kz/hfkxnKW8pB/kXaFo5qPwG7QTWwmCtk5U4yLgCGFuiEqSi4rklL5Xxw8iwxgXLk6oDHdqHNSz70P5wwKlarPMLsnyroYR1VMCOHHx7bQLrjUjBgHVaOrU4xQVYmAdQjaZLgi8pS5KU50dOA9ODZwRoUSpX6ge12F+B1JJ6ghWOWBkDU25EZi+YWKcN1C/SM+WAGEIrY+3KEFgNHi4VuBQyeNU/Vm/D+KeZhMnFjIMcjIOQfSIs0KCyDwaogiU5OBZeAPkp+ICRhusEuwf9i4agaD1c69A0hcIsguBxwDVmV/3hasHiWYECK3gNYELTcS5gophLxlKczT+iGvDnNT/avPlHyqfKO8qnPxJXPPj6B68/uEI90G9LtPUivvCZh+CMM5x5Cg7KQ/QNZYVyYgVRa8W0qD+A7MTLZkUoYe4ea0StCbkGa4sKts9MO6koWo6c3E/J/pNlwoopEWBgWPI04fepZZRn6FhDGkkbuapaQRnDqpJirBmVVCwKSqo+AVxQ0BiSrJRQl6RyOxNRtZaSA8qqcWMMAoZKxQmY5CQTPPDJkKWgZYSXDRbsKYa/4tVSukzKwV4irQb5QGb9oIeEdOdkqrJwIJIBFkYuAoABQ/iU9Gd4FogbZcG7iFtyRyLpCFhVCYQS/j6FZ/E+x566KB2JuBUCz7jH1WpVxtxJ7quOOZOQ0ykspjl3rNnzjvWcYXVV8ELDR19CYCCn4yY5NVJo03wit4+QYlt7CtHAMBzTYzhAqwFma4pEWya0MubLmEG+Erl/Sp2UfzLnpS4Pb9eBzo6CQbb9YyKBKaK8089zkrbd7W7SbXzq8+nF+VwcRzmNEcjWpIPnaYHUnkW3asQzQVIkSyaTqWQ6OVKlZFOiEOpIpVgx3kSgoi9RbEl3p6DFD6yRmYLYrS1R6MpDS3upkJsG1+cS/YJxRG8CmeV8cK+5VBACeLRguLzQ0gbn0VKhFQssohZmFNNdcJ4qFTon4ZEVWRS0eTifWiroe/E4NmEz/ikf2qCVh1f1+Hnnn0d56Tx/5yc7Kk+qas1zirDHtzP/mw7SQd31uusBVxDaw2WxAis5lWKlINVFAmaqtbt0UQrqabDW3tVB7/jd4fCGyOFI5DDXfDg8FDkcDh/+nbLzghV0sD29UL0fPhwZCh8un8Sn8JF34H6SjKv/tsGvzWcWx4VzzDStl2laNdbtVvVrM9abYmxbI5gsCDkMiE5IwYUlmaac3CQOU1JjUFVruodLejnw8iiLbcep1YLV0xaCzFxRiZvpf0mK+PXv73z9wfCZwmmhv6I1d37/64oo0f/avOJBjlf2Ysk02FlWOsef1Xc/WVvtvZdVzVXGEDh3DMHKGA7jGLy+84zCKw4TR00Dq5ezygYcVpG67Syy/I9GxWMd/j8e2a2c9M8Gp6iMcPb4JpDhceMLM10WTBa9TIt7W8A5bGaRgmY/qOXK2FvHjb0Fo4koTnIgWYyyGEQ0DJ9qieJpCxa3RMcoFEPpAwrJQk6OikVXE0vfua0FDdZO/P8j1ljE7Z8RrRoe+x+Q7qxYlgAS1KYn2uOkjtVYxpBLahKytYTJuWjFFrIFGUAvcMs9J8YlvMBLbMcclwd4pUbk670sgzNBPGQUrM0BptGjCC90JkeTH9c/YM2Ex4cDFymiCgCLCCqiPOCCZGcW0Cr4VDrO0ulzWrQ+axUQnbqC1tA2WrOGfqpor1D+Wzmu/PeaP9Jt81741fNz6U7lroff3vhCv1DJbu1nsEkg9NS67dvXKhpFs24bYMpTyl3zBwbm0R10+yOL5pc/VB8+yVVhFWDaKi0QzzYCLVIkzzxyoIBBpUA6gXUypNDcCi6GpUnMsenOG4nO7HJ7wpF2LO+VBWtRa7XlquME51LHBkZdZuqiUcr8TRqxZbFsAdUXkiEYsFEni76y8e77t2/fvW4LDEu586PbwhdpyEWj7Sf3t3UqbSY33sCB//k2ei0jyL5/u5QeN8FtddSX3h1fNB8/9yZ+rjyw/6RJaessH7k7juP/863KbUgTehk93tm2/yRR6w05ieHUGkIMHGbTDBS8B06ieWUE3mheUkbYmzLCk7Ov2TNErbdktQ416AvQsS+R+PzoCLzxeWl0hL2NjgDIPeuaPYMyLVUwXw1orHZyC8EqCUR5rmSyaGbCbDaBWIqOBjSkrNC8YAwzm8pkOg4uQbXm3AI8aivJtupqIcwa1LNEbSEBfGsBtFHkAkEMo7vsWMMzQV37YgDGbcPFMJwhx9zFcAVcahyIeMf/U7O0RDWczGwi0OzPUAQeZJRUrB5aOGxAJIJY7DRxoxlkWVWpTLiRcn78C9oFcxpxHbN3hHrB57kXcDAxgGtFeaqpwdbfHKFv0jeP0N+UDx8+JNyoPF1+n85VDnEuOodyrvL7aL9Uv0aCqTWSVpaf0QGVQMQ11fovdLaFEq6IKegxYEYxHm3gdLggBiuWJOQNaRTr7UF1CPCFoEUUcFHU8v8xPx+1iQFXwhgoWwpE0ZHhySm4AyOEMeJ6mnKeB3IoqL8FNtcj2hH4nJ7VqeFnhSzNoozgSwJHbWQUGQ01VvsqbmCVMg/f4ZMjvKTkR+EbMCmg3ivX4XvFR4Rvhm/1MVTGw4gNTNeDx2VE+eWJqEZyKVv0gz0m6kBxSRgu1ygzl64ssSGOszU6tsahF6tHCqbGFKsf0TN30YZpX7bogZ4o6G3AkipSNldX1bDCqka2BgIoPBYIEtkyAH+aC8EpAE03dfgtHAlRsuXAFvivVtacJuC+HztG99KFtOmnm06TXyjfUSKchT2CU6OW3hyjq18Bv4ls+qnyH8r3lG3HqEDfoEt/gWMgYHt1f9Q9xWhdX/FG7Uy7m6HjDQk0b5iLiGRpD3W6qBM9aFvKVu3q/G3LuI9zDz44ifv7sm0HP/kjd0NqOK38helbSl7eK7x+8fTpF38a2/uyhi2tGz1c1a38WG2JlURInFxKEHg0lIoNGLMnDU4wryDoTSU5jnHI1lJloaAZhbpo1uBD5loMBCcScssJuU0NAbW1YJi+IaBhtqapGUQ22qaWUfhR7zpd6AlGWcESVwnJsaVLWlZKlq36ihLt7KdTnrv5/WXhOUORHQ/sP3nl3KHw1of2nwQu/3m/8pPnbv7Dcko5NiGgY8l3j69ZHh6aG9l2cr+yZmhOeDs6lthI6TY2I6SyPoytdYpiVWIEC+2wUNtaKlrZUiYr5jhgCnxqBfpY9KuJrU1DBXZGbemZI88K0s1NoLY07gjaHrtYqG3G5CFYnAYW8NKLhRq2nqbWigqM5tSot2h3+s6sWGKxr1TFvawsaQKu5ghbjgfdB80jwQGvlE8QPvB5VPK4TIlTlyepLuXzSjdecQTvlCW2ZI/VEgFH3qNFeTERJ8w3Lj1D7ewaVwRhV7EUKOSC3YJDEmpzLBdWAUV2LYavquVXVKogoOULlPXK+gUHKwsHxxDPB68tUIbovgW0pPztKN5U7doqtGuat1E9oWJx0SC3SnqbjqB7IfikEY6sKiN/wqTqsb/qukLvuJWqmoqAj4WBcF3VmQWDevIxUV+0srL0zPs4/0EkIfAfqsE9ISkbS0UjW+ZmBHsma6BBNU6+khxKFut9rGy/CW5Zkyz8x9YI8rmCrx6OQXWNoDUb9YtRTOpaXWIkxFGxGSQ3k+aiolPAikmdi5JrN/yOk/4wa8GvDx5SfvM4L9le71sI5zT0ONwRyIPUteF3ZekPfT+4UlY+jCmnvCfojPJRDp/74TqZ2mJU1/y68sOjDyrvb/idmqvhgaYCrsF0VOmEQS0hUdCMLROkkoDqG4lAqnYIJwHp21KN5ejUaJhepQmWWOE3oJY2jH1RmNkgAQwQLrvE4NooOptobQa4vJ5o/h2+0cbQ680Ew0IupjyaWG6kOYlrHUHu/EkMP9eqS+W04wv9zpQqqTIXUIFtuFqkVCtaMeVeCCBaaPI2I48WeBfc0Zsd9erSg2GDyd6gJuCBwxCwd6Z7aNJL7SYaiFRxrKFyb4Du3KL8N/2qNDL41ae+OohvrVsf3rr1Yfpo9Q6f5/b3KM1gMcn6yiODgzSHD21VpLF7Z9klXKGcJEhTdYWykfEtx9Yp47pkdSlyQUMA7uiNcCZUlAPFhXb+RnpG0aMx5NlS1zL5yxkdz401KtLZGt6g4rbKOmnVk6hGRu5ns13L1mm5U3IOy/2wii6Qkqew7FU+Ibem5GklOcJW5iRY700p6Dqu5+1UNcf4gAgMZpgTm0IhVxJtiA8DIXBmwRhUoRujHZNLwwZzTy8+MFldK6oGPAqTu2DgWAOlclcF1zEuCzr8maC1Gj38zNE6DuHZxq8qPwvtAbbBSEaEQbdx/y8ah/suomxhMb4wFoIQ8FNQRYAGRx9jj9PIWYc32GF0XDBErS8FzIXx6kaSIGhVeLY4iGeGhTdgRpQ3ob1sYhoXjUgJK/3RvGN0sbIiiyW7wPtMVXKe0r4hne7o7i9fkji6bf9Jl6tSGcjtO77PE9x9dNUVu07u7+lVF6Gjjsc8hqBG/4GHopH0VLVcz26mJhoFRwKj4y/SOXPe7z8+h3rhOOdYv5KjByg5cBoRpQ/vHu9/f84c5Z3+1/rfn83NUnL8L0+TA8xBpYggNeia6VAn69g4eVVlVMp1q7qiast5Nd5bjfKqueXXNB9q/hVUtHtsbaohoSJBXHYqa9SkELosUabelO8spR8qtqV0Ka5KXzqo2BTbIF0K9sRGX9NK7LuA6bPUD5+KQuOHS5XvoH6iS5fyI+xZ/BjLK+S12H/0LtEjghbAlGB/yiMCAOE8O2PPoZ3K43OAvQ3sgxz4V3klzxMuXwYva0TJj9WU89BJsNciKcIFTDOgUYGRATxOXl2gTkFDQzc/5zmQeVTQ6lL2qp+gkdi2DVZWG43+ri6ByAP9ARa6YQj5U+gjR9RSX2RGC15oJC05a6+H80VJv4/UL1p8HSm2Wr8o+iei4AqJoj2UxjbAeo5wBtv0iWJ9Sxe2GQAkTshhW22i2NTGIql1paKnHSOpFJUHOVEU1L0i+FJRazSxM+b9Fe31TXhlKxWdbi87YzmRYkhVGcFSMYLR0yRmSABQFtNd3UkWQC12TuqBs8K0yn4SZ4Kenw2C/k+uOSL94z9OOnsDijL5f7tmLMGxXBPLC6EOnsryQiD5jVgXUN2zomlc+bJYjeGDFkX470Gbh1Ere+6cTFoggstXqgaCw3X9akoNa43VXTVUG0HUVBuuYNpHh3gyOj5vpfZPC7IcIV8i2JlACZExgqEIA0N6QDwqpGCl2MU6G1vgb0ZdFlXXkyN2kuuSiJSM6qYFLFeMdcahBAbyCj4jrivTaDm1ulgWwGQTIxN0meKlXIdYSo1+G2gGADLYAL8jmDl7yKExe6hu/wC+Jg5VGj/4SpoOvQK4f5qwPSKYaIyRYX/VDWLxDbXOBXNaDVg/ZgSPIIUOokNdx2ms5u60NZhrKWq0SAANNcSKWg3Lm2OBE4AXK9xvKFVXdfrtBD32CMFpwxH4K0c0Mspbb50mbylvsTlib4L0nvJIu/IXWtdOL6XrKAtFoE1Sj5X1AES1Mc0wW4tJMYKrV7zgtqWq1sb7WWsDM+Q/ARPBZiHkB1tbE0G85I0AePL5Q+ih8GKxkQVd/qEpwlL/gIYdKNBbq/2MVcK9OBRpiA5RhrsBFIG29/nG2yi1YBDe1PGcsZkBXA/sYwPxgngki16Gtr1sIF6E4z6LOkRco6AuTfD6YDAuwvpfoM5/2ntM6TJ7em7PWXcRvimqZf1sr1VOw/xnJXZjAI18NbNcGuaR4HYemAUt1rLitloLkt42tsXI+OScheHaosWMD1rAg0a3i+XdipzRipEvtuYC49UCNurVRtwKRhZVAdHhJGRFA9o6DEVjtyT0cDAIFFEugpPyG5yKfShj/ze5MJ4/Vn6D8dFYHlcgRtJVHYdRtcM1n+l2JRKFPZQ56JVRI46JKmXOgOhHg0PBcPEqHZHB4Uri1LUm3JiMiaAFZxIMIjhwmTRKlzY1TguCX6BlmsRWGjZqcVeWehYNMTKoVDCCp1VwNuTOKEMxGNDiogsH6IZORISRdBYjflhfwKrB8qPq0gsebMfoKxlVGX6KGkJCLZC9J8vWIZEDulW6VeAXd+K8Rlh5VqcahckCxDkhd5TkDgurJnWzzGqhg8e0vEZfO6EddVpaHLaE6tjSEbf1sOiob2oOshhIEgTtsIf4Qy24x4ncKQ5TTT1uqCGbrYe1xjqLzaX6KVmsZIpmNZ1ZPusCzJZ18U5X2IV1TjqXLqzV2XRYzhjVRW2RqKaq9w/8Qa//wyQ6MdHtuOOl6ZbpL93p7ErRiZNYs/Jq21QnNBv001+6w9GVUl7lIgyFcX+sNnYnzvcwfony6qTKd0M7Z6yAN/6s/ZfYbKo7MLnHrNnYnkYudQcmnDkXOG2HcQcm0c6o4jYj9bQ6YnWcswsT27EoS7U22skWEJ6zG1OSth2/9QvlGbPK3NFZyvHjt52zL1PyuHJ8Fnf0izRVnrHrtuO07Zx+byIon+D9mJn3Y8QobKW+pIJHm5jmr2Wrprlk0cjKHI2o6o0WNAg65vagodYn2Rh16MKZbKCQRLFgBqll7ipu08SwLC41dWDyyFLBxdUCNNQvAsjvKGK/is0+zA5azLOi/yKQU79gJqu/arjOyDBivCZS9dnVgJWgUv6Mz872E2ABY9XJQcj4qRqPIWNxAO/ZsYPq15XGBRFQflSPX40zs32OJLZfGa5P01U+VMGo+AmbGsmFIai/qwLWcZ/lznyWRw0w9lnKdoFSd9ZSt3Eqs2+o7PNExu/zRKr7PPGUbVSir2KuaZW9Sf7/oS46DnWdKWQaZeuEkTAV+IHICm+cUmGXhpzKjIu9Vvqo4q4bSLEJ+/j/iLx045DX58CuELDkIU6jFZqZ1J0XcdmqiMtf+Xd+xFXdb0tSR3n6rJFzn4VcZdx4ipkBtbDr1HjUdbYsukgH0yF2dY+PsRmqT7C949REkA7tvFkEg5T7nD3b+JQYPHfftiLrV2xk5LMqgn+PdWYU+nlWf8xj/bGx/piYZR/fH5Or2p/a8/VnfHj+3P58+0zs5rM9EpLj4zfj+4R5zytZnxIlrLv2sB2R1OwnatumUrGJ7UHSZMNUugWjkyj+uIFAE+CGw7yxtq6NmamI+LRBMLfGO1JqbVmqOpbW847Fxcriseod/3loCivlqxX0wYD1c8fJrfzymkiju74+c0Gj+2XROmMgHF685KuHas87dP74oT6L2Bhsagy0trdNywU8dkd7ZtKkhZunTTuTsmBreNWcBagrm8jyWgA5VKEDXvPRt1mC6O1znsWkEjwrsN0GcZdB+rbiUz/B8l7VfBnm5KzECTKJ1HawiJcJdD83tilbTRJj5hgXRtWQsvltNGhLRYM2dp6iPJzDbw/SxYMgBo4TMWmkcgmC8Ue41LCYdBmVAOKlsYtKXlHViaCy3Jir7bRGQmYajQgfW7Zwt3G3bbH8XHltyyOPbFFe09yhPD9UfpC7Yoh2/0kc+vrXh0Tmz5C19KTuAW0zKHgD7h9po1nepmbvMPlrW0s7Xj927HW66WNKPqb3vE4TyrHXfykQJbeX5mhu7+iyHoH0jD6+l75IX9yrvFipSQBtVcknNpAw2U5QNtwsWNhUwhC6L1XZqC6IMUJW82hEzizogkkgYBMjoAYVGior/GiTutGFP6lmhDGn35zAckhAB00YDMWwaDAMZzyXY1un0TBLYxrO4wenRBUL+3m2V4dWrdYcq2XK9Et0rNBCzXxKSiXxiVJXfaqfZir7iJw+z7g96B2q4/aoK8e9bJRw7VYLg21qvVGjG/dt1KGf5XZVh2LyIMQ38Ll/NpjM5w+CZUP/Yfel8/S7mZB/8HsYYYt+3i9upBb6/EXKvsP/8FdnKB/RF/AptjdeRe40oNu9LP6vHxfx1luBCryWVGoxUIR5MD1J4hCjcRrEXY9YGQOmawC37ZvzzJrTiDlYXQP+Q/yg4KaGyvF9c+YqUiWeWJUbN8uhYozdlMBELylwtZWlJoazfoee5yfO/tpxuSIeaJgmiIlslV1SixqhGgVgOsFXRT5+/E2NwPYnqSAgMclWt/ApdEDjPG7pwAr0grlUz8a+mZv7+zfPRI5Tz/o29qRyiB5OEQzvY5AaX+Wxs7G9ZHCvUZE4SD/zqNT6aFoqaulYUIIf22NSrSwQ1FwOAPOCoAPDoDfWmK02dT2GbMqNA4tZrMhvpv5ohDn80J3TmObhydYtZbJlK88qCFiUCcgGfw9vhT/+YUrO8vccIDPziGrRCzXOJMv56FXBEU7IzlJRcGJnBeysU/UYakrFGrZFVg0AHSZOLmdVnCpoDNwCH/HQ8ZhMXS+AzEvb6OO0jVU8Eqw15TD8TBm/SjDdMMWV4o9+PsOwCcbpOMLipXWsx0sYDjaxPVvVdQCc2mWgo4m5CyZ1m1bAXm7MjmtUsddYWTE6KThMIq5rkJ0iXMqeSjhbZAubdGyVUzCcQssZo5nKEbswtC83sPbobmVkBFO4I2oxCoLbfUNLZ0UfumT3UUwBS8waYn2Q2ucapHANm38OQ7cFXp9Sly2o2VGsAZ7i/NP7rAaYi8v6uMxZCgbtJ7iTJ6/9hB/meL2hUgGMFM6mbMGsXxfkUzpOapE+klroCDtwhEXRykSq1gVJDPtj5Kx3XDU4VavBAZnUlHBr10oG0QYkqqFqjZ5GLBhMqB9FARFIbS43lluMUp6r4grE+5iJUfIjFVTNPACJy4+UV1EfPYMNNGx/D+Q5DUNxDsD+VlLdv7gpUUm12ERXVufCGIorymQzG3VlRcqyttID7z7wAALWBx54l66FkcIRrh94AFrQMuMlrsiAw+i7WHOjEPUTgsSeY/VWGN8fOW98P4V1VyP4bzSv5gzgUs80JuBvbGW3Vewi5FndFsfqtli7nozm4S4V8pWaLg7zHaIAjfj6WCL/F8P1u2sAAHjaY2BkYGBgZjjy6Mpmh3h+m68M8hwMIHDua+N+ZJqDgQNCMYEoAHf+C1gAeNpjYGRg4GD4fwNEMjD8/w8kgSIogBUAY/wD9XjaNU+7FcJADJNNCvq87MMOvEdNxRyq0mWH1GEWegZhACz54nvnj+yTzvGDLQ8gKr8iEQDBRDKqgmqZMMq7/y5kd/UdCLFiC+ITZiivaz6fR0er6d054SksUgzmU3qFEXdFzV2Ez8Ywlc/m5Pilsr2VWitP/bGJ4wvDWi96P3Not+n2B3lgIYIAAAAmACYAJgAuAJIA3gFaAaABrgHkAjoC1AMkA4IEUAUiBXAFzgYgBw4H7ghiCPYJsgp4Cq4LCAs2C4AMHAyiDiAPnBBAEUYRvBMwE7wUHhRaFIYUshTcFVAVgBX6FpYXXBeSF/AYYBkCGYgaBhooGkoa1BryGyQbQBtsG5Yb+Bw2HLAdLh1yHYYdsh4cHjYeYB7iHyYf3iAgIFIgdCCaILIgxiDcIPAhBiEkIegiOCK6IxAjeCPQJDQkbCS8JVIlriYWJjomWCZ2JpQmoib0J3QnvCgGKJAopii8KQApIilMKcgqJCpiKpwqyCsUK2QrvCwWLFYsnizgLPYtBC0SLSAAAAABAAAAgAC9ABAAAAAAAAIAAQACABYAAAEAAYEAAAAAeNqNkr1OAkEUhc8CmmBhRSysNtFCTfiXqFBZiIkaQzRqZ7KaBYz8CStg4/PpC1j6EJZWfjMMwSCFmczOuWfOPffOzEpa0avi8hJJSZ/MCfaUIprgmFb15XBcZW+qSWjTKzu8pLF36/Ay/IfDSa173w6/aS2WcvhdudiOjlXTmXwNFaqvgR7UVYe4wOzC+AqIX1hboMiq/qpHoEhNUN0yESjUWPd8e0RT3RaaiNFTWVnGyI6MGuw+s5qKDfgWGSa3Q42QmYXtwabxD/SE0vi0YTZUdRWP/tTb5nTGw/Rq/LrW74K4QTVznr6KeOUYRVV0pVPd6By0KC89l7lI489prufu6Xe1mi5hJtGMbaKMnN+Q/bzdy2iPb4UTB3rE02jqsOae7nirjEp27uNR0MG/+j+BD21Xh+y24Qf2tjvcQYjr7CUnPVStm09eYLPycKb/Em9Zoq755u2fk2Pd/QGe+3ARAAB42m3S1XIUURRG4VmDBHd3d5k+Z5/uBIdAcHd3CRI0OBRPyCshmRWu6Kqp/6brm9qrutVujTy/frZS63/Pjz8/Wm3ajGEs4xhPDxOYyCQmM4WpTGM6M5jJLGYzh7nMYz4LWMgiFrOEpSxjOStYySpWs4a1rGM9G9jIJjazha1sYzsdKhKZoFDT0EsfO9jJLnazh73sYz8H6OcghxjgMEc4yjGOc4KTnOI0ZzjLOc5zgYtc4jJXuMo1rnODm9ziNne4yz3u84CHPOIxTxjkKc94zguGeMkrXvOGt7xjmPd84COf+MwXvvKN7z3DQ4OpDPT/3YGq03ErN7nZDbe4tdu4vW7fyCa9pJf0kl7SS3pJL+klvTTqVXqVXqVX6VV6lV6lV+lVepVe0kt6SS/pJb3U9bL3ZO/J3pO9J3tP7oy+X7uN2/3/0Amd0Amd0Amd0Amd+Od07wi7hF3CLmGXsEvYJewSdgm7hF3CLmGXsEvYJewSdomkl/SSXtLLelkv62W9rJf1sl7Wy3pZL/RCL/RCL/RCL/RCL/RCr+gVvaJX9Ipe0St6Ra/oFb1ar9ar9Wq9Wq/Wq/VqvVqv1mv0Gr1Gr9Frul7xuyp+V8XvqnTyb1UoNRm4Af+FsAGNAEuwCFBYsQEBjlmxRgYrWCGwEFlLsBRSWCGwgFkdsAYrXFhZsBQrAAAAAVLP0T8AAA==) format('woff'),
-         url('font/genericons-regular-webfont.ttf') format('truetype'),
-         url('font/genericons-regular-webfont.svg#genericonsregular') format('svg');
-    font-weight: normal;
-    font-style: normal;
-}
-
-
-/**
- * All Genericons
- */
-
-.genericon {
-       display: inline-block;
-       width: 16px;
-       height: 16px;
-       -webkit-font-smoothing: antialiased;
-       -moz-osx-font-smoothing: grayscale;
-       font-size: 16px;
-       line-height: 1;
-       font-family: 'Genericons';
-       text-decoration: inherit;
-       font-weight: normal;
-       font-style: normal;
-       vertical-align: top;
-}
-
-/**
- * IE7 and IE6 hacks
- */
-
-.genericon {
-       *overflow: auto;
-       *zoom: 1;
-       *display: inline;
-}
-
-/**
- * Individual icons
- */
-
-/* Post formats */
-.genericon-standard:before {        content: '\f100'; }
-.genericon-aside:before {           content: '\f101'; }
-.genericon-image:before {           content: '\f102'; }
-.genericon-gallery:before {         content: '\f103'; }
-.genericon-video:before {           content: '\f104'; }
-.genericon-status:before {          content: '\f105'; }
-.genericon-quote:before {           content: '\f106'; }
-.genericon-link:before {            content: '\f107'; }
-.genericon-chat:before {            content: '\f108'; }
-.genericon-audio:before {           content: '\f109'; }
-
-/* Social icons */
-.genericon-github:before {          content: '\f200'; }
-.genericon-dribbble:before {        content: '\f201'; }
-.genericon-twitter:before {         content: '\f202'; }
-.genericon-facebook:before {        content: '\f203'; }
-.genericon-facebook-alt:before {    content: '\f204'; }
-.genericon-wordpress:before {       content: '\f205'; }
-.genericon-googleplus:before {      content: '\f206'; }
-.genericon-linkedin:before {        content: '\f207'; }
-.genericon-linkedin-alt:before {    content: '\f208'; }
-.genericon-pinterest:before {       content: '\f209'; }
-.genericon-pinterest-alt:before {   content: '\f210'; }
-.genericon-flickr:before {          content: '\f211'; }
-.genericon-vimeo:before {           content: '\f212'; }
-.genericon-youtube:before {         content: '\f213'; }
-.genericon-tumblr:before {          content: '\f214'; }
-.genericon-instagram:before {       content: '\f215'; }
-.genericon-codepen:before {         content: '\f216'; }
-.genericon-polldaddy:before {       content: '\f217'; }
-.genericon-googleplus-alt:before {  content: '\f218'; }
-.genericon-path:before {            content: '\f219'; }
-.genericon-skype:before {           content: '\f220'; }
-.genericon-digg:before {            content: '\f221'; }
-.genericon-reddit:before {          content: '\f222'; }
-.genericon-stumbleupon:before {     content: '\f223'; }
-.genericon-pocket:before {          content: '\f224'; }
-.genericon-dropbox:before {         content: '\f225'; }
-
-/* Meta icons */
-.genericon-comment:before {         content: '\f300'; }
-.genericon-category:before {        content: '\f301'; }
-.genericon-tag:before {             content: '\f302'; }
-.genericon-time:before {            content: '\f303'; }
-.genericon-user:before {            content: '\f304'; }
-.genericon-day:before {             content: '\f305'; }
-.genericon-week:before {            content: '\f306'; }
-.genericon-month:before {           content: '\f307'; }
-.genericon-pinned:before {          content: '\f308'; }
-
-/* Other icons */
-.genericon-search:before {          content: '\f400'; }
-.genericon-unzoom:before {          content: '\f401'; }
-.genericon-zoom:before {            content: '\f402'; }
-.genericon-show:before {            content: '\f403'; }
-.genericon-hide:before {            content: '\f404'; }
-.genericon-close:before {           content: '\f405'; }
-.genericon-close-alt:before {       content: '\f406'; }
-.genericon-trash:before {           content: '\f407'; }
-.genericon-star:before {            content: '\f408'; }
-.genericon-home:before {            content: '\f409'; }
-.genericon-mail:before {            content: '\f410'; }
-.genericon-edit:before {            content: '\f411'; }
-.genericon-reply:before {           content: '\f412'; }
-.genericon-feed:before {            content: '\f413'; }
-.genericon-warning:before {         content: '\f414'; }
-.genericon-share:before {           content: '\f415'; }
-.genericon-attachment:before {      content: '\f416'; }
-.genericon-location:before {        content: '\f417'; }
-.genericon-checkmark:before {       content: '\f418'; }
-.genericon-menu:before {            content: '\f419'; }
-.genericon-refresh:before {         content: '\f420'; }
-.genericon-minimize:before {        content: '\f421'; }
-.genericon-maximize:before {        content: '\f422'; }
-.genericon-404:before {             content: '\f423'; }
-.genericon-spam:before {            content: '\f424'; }
-.genericon-summary:before {         content: '\f425'; }
-.genericon-cloud:before {           content: '\f426'; }
-.genericon-key:before {             content: '\f427'; }
-.genericon-dot:before {             content: '\f428'; }
-.genericon-next:before {            content: '\f429'; }
-.genericon-previous:before {        content: '\f430'; }
-.genericon-expand:before {          content: '\f431'; }
-.genericon-collapse:before {        content: '\f432'; }
-.genericon-dropdown:before {        content: '\f433'; }
-.genericon-dropdown-left:before {   content: '\f434'; }
-.genericon-top:before {             content: '\f435'; }
-.genericon-draggable:before {       content: '\f436'; }
-.genericon-phone:before {           content: '\f437'; }
-.genericon-send-to-phone:before {   content: '\f438'; }
-.genericon-plugin:before {          content: '\f439'; }
-.genericon-cloud-download:before {  content: '\f440'; }
-.genericon-cloud-upload:before {    content: '\f441'; }
-.genericon-external:before {        content: '\f442'; }
-.genericon-document:before {        content: '\f443'; }
-.genericon-book:before {            content: '\f444'; }
-.genericon-cog:before {             content: '\f445'; }
-.genericon-unapprove:before {       content: '\f446'; }
-.genericon-cart:before {            content: '\f447'; }
-.genericon-pause:before {           content: '\f448'; }
-.genericon-stop:before {            content: '\f449'; }
-.genericon-skip-back:before {       content: '\f450'; }
-.genericon-skip-ahead:before {      content: '\f451'; }
-.genericon-play:before {            content: '\f452'; }
-.genericon-tablet:before {          content: '\f453'; }
-.genericon-send-to-tablet:before {  content: '\f454'; }
-.genericon-info:before {            content: '\f455'; }
-.genericon-notice:before {          content: '\f456'; }
-.genericon-help:before {            content: '\f457'; }
-.genericon-fastforward:before {     content: '\f458'; }
-.genericon-rewind:before {          content: '\f459'; }
-.genericon-portfolio:before {       content: '\f460'; }
-.genericon-heart:before {           content: '\f461'; }
-.genericon-code:before {            content: '\f462'; }
-.genericon-subscribe:before {       content: '\f463'; }
-.genericon-unsubscribe:before {     content: '\f464'; }
-.genericon-subscribed:before {      content: '\f465'; }
-.genericon-reply-alt:before {       content: '\f466'; }
-.genericon-reply-single:before {    content: '\f467'; }
-.genericon-flag:before {            content: '\f468'; }
-.genericon-print:before {           content: '\f469'; }
-.genericon-lock:before {            content: '\f470'; }
-.genericon-bold:before {            content: '\f471'; }
-.genericon-italic:before {          content: '\f472'; }
-.genericon-picture:before {         content: '\f473'; }
-.genericon-fullscreen:before {      content: '\f474'; }
-
-/* Generic shapes */
-.genericon-uparrow:before {         content: '\f500'; }
-.genericon-rightarrow:before {      content: '\f501'; }
-.genericon-downarrow:before {       content: '\f502'; }
-.genericon-leftarrow:before {       content: '\f503'; }
-
-
-
-
-
diff --git a/wp-content/themes/twentythirteen/header.php b/wp-content/themes/twentythirteen/header.php
deleted file mode 100644 (file)
index 094f74c..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-<?php
-/**
- * The Header template for our theme
- *
- * Displays all of the <head> section and everything up till <div id="main">
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-?><!DOCTYPE html>
-<!--[if IE 7]>
-<html class="ie ie7" <?php language_attributes(); ?>>
-<![endif]-->
-<!--[if IE 8]>
-<html class="ie ie8" <?php language_attributes(); ?>>
-<![endif]-->
-<!--[if !(IE 7) & !(IE 8)]><!-->
-<html <?php language_attributes(); ?>>
-<!--<![endif]-->
-<head>
-       <meta charset="<?php bloginfo( 'charset' ); ?>">
-       <meta name="viewport" content="width=device-width">
-       <title><?php wp_title( '|', true, 'right' ); ?></title>
-       <link rel="profile" href="http://gmpg.org/xfn/11">
-       <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
-       <!--[if lt IE 9]>
-       <script src="<?php echo get_template_directory_uri(); ?>/js/html5.js"></script>
-       <![endif]-->
-       <?php wp_head(); ?>
-</head>
-
-<body <?php body_class(); ?>>
-       <div id="page" class="hfeed site">
-               <header id="masthead" class="site-header" role="banner">
-                       <a class="home-link" href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
-                               <h1 class="site-title"><?php bloginfo( 'name' ); ?></h1>
-                               <h2 class="site-description"><?php bloginfo( 'description' ); ?></h2>
-                       </a>
-
-                       <div id="navbar" class="navbar">
-                               <nav id="site-navigation" class="navigation main-navigation" role="navigation">
-                                       <button class="menu-toggle"><?php _e( 'Menu', 'twentythirteen' ); ?></button>
-                                       <a class="screen-reader-text skip-link" href="#content" title="<?php esc_attr_e( 'Skip to content', 'twentythirteen' ); ?>"><?php _e( 'Skip to content', 'twentythirteen' ); ?></a>
-                                       <?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu', 'menu_id' => 'primary-menu' ) ); ?>
-                                       <?php get_search_form(); ?>
-                               </nav><!-- #site-navigation -->
-                       </div><!-- #navbar -->
-               </header><!-- #masthead -->
-
-               <div id="main" class="site-main">
diff --git a/wp-content/themes/twentythirteen/image.php b/wp-content/themes/twentythirteen/image.php
deleted file mode 100644 (file)
index 9f5f29b..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<?php
-/**
- * The template for displaying image attachments
- *
- * @link https://codex.wordpress.org/Template_Hierarchy
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-                       <article id="post-<?php the_ID(); ?>" <?php post_class( 'image-attachment' ); ?>>
-                               <header class="entry-header">
-                                       <h1 class="entry-title"><?php the_title(); ?></h1>
-
-                                       <div class="entry-meta">
-                                               <?php
-                                                       $published_text = __( '<span class="attachment-meta">Published on <time class="entry-date" datetime="%1$s">%2$s</time> in <a href="%3$s" title="Return to %4$s" rel="gallery">%5$s</a></span>', 'twentythirteen' );
-                                                       $post_title = get_the_title( $post->post_parent );
-                                                       if ( empty( $post_title ) || 0 == $post->post_parent )
-                                                               $published_text = '<span class="attachment-meta"><time class="entry-date" datetime="%1$s">%2$s</time></span>';
-
-                                                       printf( $published_text,
-                                                               esc_attr( get_the_date( 'c' ) ),
-                                                               esc_html( get_the_date() ),
-                                                               esc_url( get_permalink( $post->post_parent ) ),
-                                                               esc_attr( strip_tags( $post_title ) ),
-                                                               $post_title
-                                                       );
-
-                                                       $metadata = wp_get_attachment_metadata();
-                                                       printf( '<span class="attachment-meta full-size-link"><a href="%1$s" title="%2$s">%3$s (%4$s &times; %5$s)</a></span>',
-                                                               esc_url( wp_get_attachment_url() ),
-                                                               esc_attr__( 'Link to full-size image', 'twentythirteen' ),
-                                                               __( 'Full resolution', 'twentythirteen' ),
-                                                               $metadata['width'],
-                                                               $metadata['height']
-                                                       );
-
-                                                       edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' );
-                                               ?>
-                                       </div><!-- .entry-meta -->
-                               </header><!-- .entry-header -->
-
-                               <div class="entry-content">
-                                       <nav id="image-navigation" class="navigation image-navigation" role="navigation">
-                                               <span class="nav-previous"><?php previous_image_link( false, __( '<span class="meta-nav">&larr;</span> Previous', 'twentythirteen' ) ); ?></span>
-                                               <span class="nav-next"><?php next_image_link( false, __( 'Next <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?></span>
-                                       </nav><!-- #image-navigation -->
-
-                                       <div class="entry-attachment">
-                                               <div class="attachment">
-                                                       <?php twentythirteen_the_attached_image(); ?>
-
-                                                       <?php if ( has_excerpt() ) : ?>
-                                                       <div class="entry-caption">
-                                                               <?php the_excerpt(); ?>
-                                                       </div>
-                                                       <?php endif; ?>
-                                               </div><!-- .attachment -->
-                                       </div><!-- .entry-attachment -->
-
-                                       <?php if ( ! empty( $post->post_content ) ) : ?>
-                                       <div class="entry-description">
-                                               <?php the_content(); ?>
-                                               <?php wp_link_pages( array( 'before' => '<div class="page-links">' . __( 'Pages:', 'twentythirteen' ), 'after' => '</div>' ) ); ?>
-                                       </div><!-- .entry-description -->
-                                       <?php endif; ?>
-
-                               </div><!-- .entry-content -->
-                       </article><!-- #post -->
-
-                       <?php comments_template(); ?>
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentythirteen/images/dotted-line-2x.png b/wp-content/themes/twentythirteen/images/dotted-line-2x.png
deleted file mode 100644 (file)
index 07f6c93..0000000
Binary files a/wp-content/themes/twentythirteen/images/dotted-line-2x.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png b/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png
deleted file mode 100644 (file)
index 059d4ec..0000000
Binary files a/wp-content/themes/twentythirteen/images/dotted-line-light-2x.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/dotted-line-light.png b/wp-content/themes/twentythirteen/images/dotted-line-light.png
deleted file mode 100644 (file)
index b7f82cd..0000000
Binary files a/wp-content/themes/twentythirteen/images/dotted-line-light.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/dotted-line.png b/wp-content/themes/twentythirteen/images/dotted-line.png
deleted file mode 100644 (file)
index 115b583..0000000
Binary files a/wp-content/themes/twentythirteen/images/dotted-line.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png b/wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png
deleted file mode 100644 (file)
index 2f9344c..0000000
Binary files a/wp-content/themes/twentythirteen/images/headers/circle-thumbnail.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/headers/circle.png b/wp-content/themes/twentythirteen/images/headers/circle.png
deleted file mode 100644 (file)
index 0bd9401..0000000
Binary files a/wp-content/themes/twentythirteen/images/headers/circle.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png b/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png
deleted file mode 100644 (file)
index 82777a0..0000000
Binary files a/wp-content/themes/twentythirteen/images/headers/diamond-thumbnail.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/headers/diamond.png b/wp-content/themes/twentythirteen/images/headers/diamond.png
deleted file mode 100644 (file)
index a14de61..0000000
Binary files a/wp-content/themes/twentythirteen/images/headers/diamond.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png b/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png
deleted file mode 100644 (file)
index 693bb76..0000000
Binary files a/wp-content/themes/twentythirteen/images/headers/star-thumbnail.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/headers/star.png b/wp-content/themes/twentythirteen/images/headers/star.png
deleted file mode 100644 (file)
index 24ca626..0000000
Binary files a/wp-content/themes/twentythirteen/images/headers/star.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/search-icon-2x.png b/wp-content/themes/twentythirteen/images/search-icon-2x.png
deleted file mode 100644 (file)
index 02b63b8..0000000
Binary files a/wp-content/themes/twentythirteen/images/search-icon-2x.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/images/search-icon.png b/wp-content/themes/twentythirteen/images/search-icon.png
deleted file mode 100644 (file)
index 11d8dc8..0000000
Binary files a/wp-content/themes/twentythirteen/images/search-icon.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/inc/back-compat.php b/wp-content/themes/twentythirteen/inc/back-compat.php
deleted file mode 100644 (file)
index 993ef1c..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-/**
- * Twenty Thirteen back compat functionality
- *
- * Prevents Twenty Thirteen from running on WordPress versions prior to 3.6,
- * since this theme is not meant to be backward compatible and relies on
- * many new functions and markup changes introduced in 3.6.
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-/**
- * Prevent switching to Twenty Thirteen on old versions of WordPress.
- *
- * Switches to the default theme.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_switch_theme() {
-       switch_theme( WP_DEFAULT_THEME, WP_DEFAULT_THEME );
-       unset( $_GET['activated'] );
-       add_action( 'admin_notices', 'twentythirteen_upgrade_notice' );
-}
-add_action( 'after_switch_theme', 'twentythirteen_switch_theme' );
-
-/**
- * Add message for unsuccessful theme switch.
- *
- * Prints an update nag after an unsuccessful attempt to switch to
- * Twenty Thirteen on WordPress versions prior to 3.6.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_upgrade_notice() {
-       $message = sprintf( __( 'Twenty Thirteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again.', 'twentythirteen' ), $GLOBALS['wp_version'] );
-       printf( '<div class="error"><p>%s</p></div>', $message );
-}
-
-/**
- * Prevent the Customizer from being loaded on WordPress versions prior to 3.6.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_customize() {
-       wp_die( sprintf( __( 'Twenty Thirteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again.', 'twentythirteen' ), $GLOBALS['wp_version'] ), '', array(
-               'back_link' => true,
-       ) );
-}
-add_action( 'load-customize.php', 'twentythirteen_customize' );
-
-/**
- * Prevent the Theme Preview from being loaded on WordPress versions prior to 3.4.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_preview() {
-       if ( isset( $_GET['preview'] ) ) {
-               wp_die( sprintf( __( 'Twenty Thirteen requires at least WordPress version 3.6. You are running version %s. Please upgrade and try again.', 'twentythirteen' ), $GLOBALS['wp_version'] ) );
-       }
-}
-add_action( 'template_redirect', 'twentythirteen_preview' );
diff --git a/wp-content/themes/twentythirteen/inc/custom-header.php b/wp-content/themes/twentythirteen/inc/custom-header.php
deleted file mode 100644 (file)
index 6a9a6ad..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-<?php
-/**
- * Implement a custom header for Twenty Thirteen
- *
- * @link https://codex.wordpress.org/Custom_Headers
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-/**
- * Set up the WordPress core custom header arguments and settings.
- *
- * @uses add_theme_support() to register support for 3.4 and up.
- * @uses twentythirteen_header_style() to style front-end.
- * @uses twentythirteen_admin_header_style() to style wp-admin form.
- * @uses twentythirteen_admin_header_image() to add custom markup to wp-admin form.
- * @uses register_default_headers() to set up the bundled header images.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_custom_header_setup() {
-       $args = array(
-               // Text color and image (empty to use none).
-               'default-text-color'     => '220e10',
-               'default-image'          => '%s/images/headers/circle.png',
-
-               // Set height and width, with a maximum value for the width.
-               'height'                 => 230,
-               'width'                  => 1600,
-
-               // Callbacks for styling the header and the admin preview.
-               'wp-head-callback'       => 'twentythirteen_header_style',
-               'admin-head-callback'    => 'twentythirteen_admin_header_style',
-               'admin-preview-callback' => 'twentythirteen_admin_header_image',
-       );
-
-       add_theme_support( 'custom-header', $args );
-
-       /*
-        * Default custom headers packaged with the theme.
-        * %s is a placeholder for the theme template directory URI.
-        */
-       register_default_headers( array(
-               'circle' => array(
-                       'url'           => '%s/images/headers/circle.png',
-                       'thumbnail_url' => '%s/images/headers/circle-thumbnail.png',
-                       'description'   => _x( 'Circle', 'header image description', 'twentythirteen' )
-               ),
-               'diamond' => array(
-                       'url'           => '%s/images/headers/diamond.png',
-                       'thumbnail_url' => '%s/images/headers/diamond-thumbnail.png',
-                       'description'   => _x( 'Diamond', 'header image description', 'twentythirteen' )
-               ),
-               'star' => array(
-                       'url'           => '%s/images/headers/star.png',
-                       'thumbnail_url' => '%s/images/headers/star-thumbnail.png',
-                       'description'   => _x( 'Star', 'header image description', 'twentythirteen' )
-               ),
-       ) );
-}
-add_action( 'after_setup_theme', 'twentythirteen_custom_header_setup', 11 );
-
-/**
- * Load our special font CSS files.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_custom_header_fonts() {
-       // Add Source Sans Pro and Bitter fonts.
-       wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null );
-
-       // Add Genericons font.
-       wp_enqueue_style( 'genericons', get_template_directory_uri() . '/genericons/genericons.css', array(), '3.03' );
-}
-add_action( 'admin_print_styles-appearance_page_custom-header', 'twentythirteen_custom_header_fonts' );
-
-/**
- * Style the header text displayed on the blog.
- *
- * get_header_textcolor() options: Hide text (returns 'blank'), or any hex value.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_header_style() {
-       $header_image = get_header_image();
-       $text_color   = get_header_textcolor();
-
-       // If no custom options for text are set, let's bail.
-       if ( empty( $header_image ) && $text_color == get_theme_support( 'custom-header', 'default-text-color' ) )
-               return;
-
-       // If we get this far, we have custom styles.
-       ?>
-       <style type="text/css" id="twentythirteen-header-css">
-       <?php
-               if ( ! empty( $header_image ) ) :
-       ?>
-               .site-header {
-                       background: url(<?php header_image(); ?>) no-repeat scroll top;
-                       background-size: 1600px auto;
-               }
-               @media (max-width: 767px) {
-                       .site-header {
-                               background-size: 768px auto;
-                       }
-               }
-               @media (max-width: 359px) {
-                       .site-header {
-                               background-size: 360px auto;
-                       }
-               }
-       <?php
-               endif;
-
-               // Has the text been hidden?
-               if ( ! display_header_text() ) :
-       ?>
-               .site-title,
-               .site-description {
-                       position: absolute;
-                       clip: rect(1px 1px 1px 1px); /* IE7 */
-                       clip: rect(1px, 1px, 1px, 1px);
-               }
-       <?php
-                       if ( empty( $header_image ) ) :
-       ?>
-               .site-header .home-link {
-                       min-height: 0;
-               }
-       <?php
-                       endif;
-
-               // If the user has set a custom color for the text, use that.
-               elseif ( $text_color != get_theme_support( 'custom-header', 'default-text-color' ) ) :
-       ?>
-               .site-title,
-               .site-description {
-                       color: #<?php echo esc_attr( $text_color ); ?>;
-               }
-       <?php endif; ?>
-       </style>
-       <?php
-}
-
-/**
- * Style the header image displayed on the Appearance > Header admin panel.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_admin_header_style() {
-       $header_image = get_header_image();
-?>
-       <style type="text/css" id="twentythirteen-admin-header-css">
-       .appearance_page_custom-header #headimg {
-               border: none;
-               -webkit-box-sizing: border-box;
-               -moz-box-sizing:    border-box;
-               box-sizing:         border-box;
-               <?php
-               if ( ! empty( $header_image ) ) {
-                       echo 'background: url(' . esc_url( $header_image ) . ') no-repeat scroll top; background-size: 1600px auto;';
-               } ?>
-               padding: 0 20px;
-       }
-       #headimg .home-link {
-               -webkit-box-sizing: border-box;
-               -moz-box-sizing:    border-box;
-               box-sizing:         border-box;
-               margin: 0 auto;
-               max-width: 1040px;
-               <?php
-               if ( ! empty( $header_image ) || display_header_text() ) {
-                       echo 'min-height: 230px;';
-               } ?>
-               width: 100%;
-       }
-       <?php if ( ! display_header_text() ) : ?>
-       #headimg h1,
-       #headimg h2 {
-               position: absolute !important;
-               clip: rect(1px 1px 1px 1px); /* IE7 */
-               clip: rect(1px, 1px, 1px, 1px);
-       }
-       <?php endif; ?>
-       #headimg h1 {
-               font: bold 60px/1 Bitter, Georgia, serif;
-               margin: 0;
-               padding: 58px 0 10px;
-       }
-       #headimg h1 a {
-               text-decoration: none;
-       }
-       #headimg h1 a:hover {
-               text-decoration: underline;
-       }
-       #headimg h2 {
-               font: 200 italic 24px "Source Sans Pro", Helvetica, sans-serif;
-               margin: 0;
-               text-shadow: none;
-       }
-       .default-header img {
-               max-width: 230px;
-               width: auto;
-       }
-       </style>
-<?php
-}
-
-/**
- * Output markup to be displayed on the Appearance > Header admin panel.
- *
- * This callback overrides the default markup displayed there.
- *
- * @since Twenty Thirteen 1.0
- */
-function twentythirteen_admin_header_image() {
-       $style = 'color: #' . get_header_textcolor() . ';';
-       if ( ! display_header_text() ) {
-               $style = 'display: none;';
-       }
-       ?>
-       <div id="headimg" style="background: url(<?php echo esc_url( get_header_image() ); ?>) no-repeat scroll top; background-size: 1600px auto;">
-               <div class="home-link">
-                       <h1 class="displaying-header-text"><a id="name" style="<?php echo esc_attr( $style ); ?>" onclick="return false;" href="#" tabindex="-1"><?php bloginfo( 'name' ); ?></a></h1>
-                       <h2 id="desc" class="displaying-header-text" style="<?php echo esc_attr( $style ); ?>"><?php bloginfo( 'description' ); ?></h2>
-               </div>
-       </div>
-<?php }
diff --git a/wp-content/themes/twentythirteen/index.php b/wp-content/themes/twentythirteen/index.php
deleted file mode 100644 (file)
index 1fe9b55..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-/**
- * The main template file
- *
- * This is the most generic template file in a WordPress theme and one of the
- * two required files for a theme (the other being style.css).
- * It is used to display a page when nothing more specific matches a query.
- * For example, it puts together the home page when no home.php file exists.
- *
- * @link https://codex.wordpress.org/Template_Hierarchy
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-               <?php if ( have_posts() ) : ?>
-
-                       <?php /* The loop */ ?>
-                       <?php while ( have_posts() ) : the_post(); ?>
-                               <?php get_template_part( 'content', get_post_format() ); ?>
-                       <?php endwhile; ?>
-
-                       <?php twentythirteen_paging_nav(); ?>
-
-               <?php else : ?>
-                       <?php get_template_part( 'content', 'none' ); ?>
-               <?php endif; ?>
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentythirteen/js/functions.js b/wp-content/themes/twentythirteen/js/functions.js
deleted file mode 100644 (file)
index fa8160d..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * Functionality specific to Twenty Thirteen.
- *
- * Provides helper functions to enhance the theme experience.
- */
-
-( function( $ ) {
-       var body    = $( 'body' ),
-           _window = $( window ),
-               nav, button, menu;
-
-       nav = $( '#site-navigation' );
-       button = nav.find( '.menu-toggle' );
-       menu = nav.find( '.nav-menu' );
-
-       /**
-        * Adds a top margin to the footer if the sidebar widget area is higher
-        * than the rest of the page, to help the footer always visually clear
-        * the sidebar.
-        */
-       $( function() {
-               if ( body.is( '.sidebar' ) ) {
-                       var sidebar   = $( '#secondary .widget-area' ),
-                           secondary = ( 0 === sidebar.length ) ? -40 : sidebar.height(),
-                           margin    = $( '#tertiary .widget-area' ).height() - $( '#content' ).height() - secondary;
-
-                       if ( margin > 0 && _window.innerWidth() > 999 ) {
-                               $( '#colophon' ).css( 'margin-top', margin + 'px' );
-                       }
-               }
-       } );
-
-       /**
-        * Enables menu toggle for small screens.
-        */
-       ( function() {
-               if ( ! nav || ! button ) {
-                       return;
-               }
-
-               // Hide button if menu is missing or empty.
-               if ( ! menu || ! menu.children().length ) {
-                       button.hide();
-                       return;
-               }
-
-               button.on( 'click.twentythirteen', function() {
-                       nav.toggleClass( 'toggled-on' );
-                       if ( nav.hasClass( 'toggled-on' ) ) {
-                               $( this ).attr( 'aria-expanded', 'true' );
-                               menu.attr( 'aria-expanded', 'true' );
-                       } else {
-                               $( this ).attr( 'aria-expanded', 'false' );
-                               menu.attr( 'aria-expanded', 'false' );
-                       }
-               } );
-
-               // Fix sub-menus for touch devices.
-               if ( 'ontouchstart' in window ) {
-                       menu.find( '.menu-item-has-children > a, .page_item_has_children > a' ).on( 'touchstart.twentythirteen', function( e ) {
-                               var el = $( this ).parent( 'li' );
-
-                               if ( ! el.hasClass( 'focus' ) ) {
-                                       e.preventDefault();
-                                       el.toggleClass( 'focus' );
-                                       el.siblings( '.focus' ).removeClass( 'focus' );
-                               }
-                       } );
-               }
-
-               // Better focus for hidden submenu items for accessibility.
-               menu.find( 'a' ).on( 'focus.twentythirteen blur.twentythirteen', function() {
-                       $( this ).parents( '.menu-item, .page_item' ).toggleClass( 'focus' );
-               } );
-       } )();
-
-       /**
-        * @summary Add or remove ARIA attributes.
-        * Uses jQuery's width() function to determine the size of the window and add
-        * the default ARIA attributes for the menu toggle if it's visible.
-        * @since Twenty Thirteen 1.5
-        */
-       function onResizeARIA() {
-               if ( 643 > _window.width() ) {
-                       button.attr( 'aria-expanded', 'false' );
-                       menu.attr( 'aria-expanded', 'false' );
-                       button.attr( 'aria-controls', 'primary-menu' );
-               } else {
-                       button.removeAttr( 'aria-expanded' );
-                       menu.removeAttr( 'aria-expanded' );
-                       button.removeAttr( 'aria-controls' );
-               }
-       }
-
-       _window
-               .on( 'load.twentythirteen', onResizeARIA )
-               .on( 'resize.twentythirteen', function() {
-                       onResizeARIA();
-       } );
-
-       /**
-        * Makes "skip to content" link work correctly in IE9 and Chrome for better
-        * accessibility.
-        *
-        * @link http://www.nczonline.net/blog/2013/01/15/fixing-skip-to-content-links/
-        */
-       _window.on( 'hashchange.twentythirteen', function() {
-               var element = document.getElementById( location.hash.substring( 1 ) );
-
-               if ( element ) {
-                       if ( ! /^(?:a|select|input|button|textarea)$/i.test( element.tagName ) ) {
-                               element.tabIndex = -1;
-                       }
-
-                       element.focus();
-               }
-       } );
-
-       /**
-        * Arranges footer widgets vertically.
-        */
-       if ( $.isFunction( $.fn.masonry ) ) {
-               var columnWidth = body.is( '.sidebar' ) ? 228 : 245;
-
-               $( '#secondary .widget-area' ).masonry( {
-                       itemSelector: '.widget',
-                       columnWidth: columnWidth,
-                       gutterWidth: 20,
-                       isRTL: body.is( '.rtl' )
-               } );
-       }
-} )( jQuery );
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/js/html5.js b/wp-content/themes/twentythirteen/js/html5.js
deleted file mode 100644 (file)
index 6168aac..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-/*
- HTML5 Shiv v3.7.0 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
-*/
-(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
-a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/[\w\-]+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}</style>";
-c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
-"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:"3.7.0",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);
-if(g)return a.createDocumentFragment();for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document);
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/js/theme-customizer.js b/wp-content/themes/twentythirteen/js/theme-customizer.js
deleted file mode 100644 (file)
index 6072104..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Customizer enhancements for a better user experience.
- *
- * Contains handlers to make Customizer preview reload changes asynchronously.
- * Things like site title and description changes.
- */
-
-( function( $ ) {
-       // Site title and description.
-       wp.customize( 'blogname', function( value ) {
-               value.bind( function( to ) {
-                       $( '.site-title' ).text( to );
-               } );
-       } );
-       wp.customize( 'blogdescription', function( value ) {
-               value.bind( function( to ) {
-                       $( '.site-description' ).text( to );
-               } );
-       } );
-       // Header text color.
-       wp.customize( 'header_textcolor', function( value ) {
-               value.bind( function( to ) {
-                       if ( 'blank' == to ) {
-                               if ( 'remove-header' == wp.customize.instance( 'header_image' ).get() ) {
-                                       $( '.home-link' ).css( 'min-height', '0' );
-                               }
-                               $( '.site-title, .site-description' ).css( {
-                                       'clip': 'rect(1px, 1px, 1px, 1px)',
-                                       'position': 'absolute'
-                               } );
-                       } else {
-                               $( '.home-link' ).css( 'min-height', '230px' );
-                               $( '.site-title, .site-description' ).css( {
-                                       'clip': 'auto',
-                                       'color': to,
-                                       'position': 'relative'
-                               } );
-                       }
-               } );
-       } );
-} )( jQuery );
diff --git a/wp-content/themes/twentythirteen/languages/twentythirteen.pot b/wp-content/themes/twentythirteen/languages/twentythirteen.pot
deleted file mode 100644 (file)
index 7706373..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-# Copyright (C) 2015 the WordPress team
-# This file is distributed under the GNU General Public License v2 or later.
-msgid ""
-msgstr ""
-"Project-Id-Version: Twenty Thirteen 1.6\n"
-"Report-Msgid-Bugs-To: https://wordpress.org/support/theme/twentythirteen\n"
-"POT-Creation-Date: 2015-07-27 19:47:38+00:00\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"PO-Revision-Date: 2015-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
-"Language-Team: LANGUAGE <LL@li.org>\n"
-
-#: 404.php:16
-msgid "Not Found"
-msgstr ""
-
-#: 404.php:21
-msgid "This is somewhat embarrassing, isn&rsquo;t it?"
-msgstr ""
-
-#: 404.php:22
-msgid "It looks like nothing was found at this location. Maybe try a search?"
-msgstr ""
-
-#: archive.php:29
-msgid "Daily Archives: %s"
-msgstr ""
-
-#: archive.php:31
-msgid "Monthly Archives: %s"
-msgstr ""
-
-#: archive.php:31
-msgctxt "monthly archives date format"
-msgid "F Y"
-msgstr ""
-
-#: archive.php:33
-msgid "Yearly Archives: %s"
-msgstr ""
-
-#: archive.php:33
-msgctxt "yearly archives date format"
-msgid "Y"
-msgstr ""
-
-#: archive.php:35
-msgid "Archives"
-msgstr ""
-
-#: author-bio.php:26
-msgid "About %s"
-msgstr ""
-
-#: author-bio.php:30
-msgid "View all posts by %s <span class=\"meta-nav\">&rarr;</span>"
-msgstr ""
-
-#: author.php:31
-msgid "All posts by %s"
-msgstr ""
-
-#: category.php:19
-msgid "Category Archives: %s"
-msgstr ""
-
-#: comments.php:25
-msgctxt "comments title"
-msgid "One thought on &ldquo;%2$s&rdquo;"
-msgid_plural "%1$s thoughts on &ldquo;%2$s&rdquo;"
-msgstr[0] ""
-msgstr[1] ""
-
-#: comments.php:45
-msgid "Comment navigation"
-msgstr ""
-
-#: comments.php:46
-msgid "&larr; Older Comments"
-msgstr ""
-
-#: comments.php:47
-msgid "Newer Comments &rarr;"
-msgstr ""
-
-#: comments.php:52
-msgid "Comments are closed."
-msgstr ""
-
-#. translators: %s: Name of current post
-#: content-aside.php:16 content-audio.php:27 content-chat.php:26
-#: content-gallery.php:27 content-image.php:26 content-link.php:27
-#: content-quote.php:16 content-status.php:16 content-video.php:26
-#: content.php:44 functions.php:478
-msgid "Continue reading %s <span class=\"meta-nav\">&rarr;</span>"
-msgstr ""
-
-#: content-aside.php:20 content-audio.php:31 content-chat.php:30
-#: content-gallery.php:31 content-image.php:30 content-link.php:31
-#: content-quote.php:20 content-status.php:20 content-video.php:30
-#: content.php:48 image.php:70 page.php:35
-msgid "Pages:"
-msgstr ""
-
-#: content-aside.php:27 content-aside.php:35 content-audio.php:38
-#: content-chat.php:36 content-gallery.php:46 content-image.php:42
-#: content-link.php:19 content-quote.php:32 content-status.php:26
-#: content-video.php:42 content.php:31 image.php:44 page.php:39
-msgid "Edit"
-msgstr ""
-
-#: content-gallery.php:43 content-image.php:39 content-quote.php:29
-#: content-video.php:39 content.php:56
-msgid "Leave a comment"
-msgstr ""
-
-#: content-gallery.php:43 content-image.php:39 content-quote.php:29
-#: content-video.php:39 content.php:56
-msgid "One comment so far"
-msgstr ""
-
-#: content-gallery.php:43 content-image.php:39 content-quote.php:29
-#: content-video.php:39 content.php:56
-msgid "View all % comments"
-msgstr ""
-
-#: content-none.php:12
-msgid "Nothing Found"
-msgstr ""
-
-#: content-none.php:18
-msgid ""
-"Ready to publish your first post? <a href=\"%1$s\">Get started here</a>."
-msgstr ""
-
-#: content-none.php:22
-msgid ""
-"Sorry, but nothing matched your search terms. Please try again with "
-"different keywords."
-msgstr ""
-
-#: content-none.php:27
-msgid ""
-"It seems we can&rsquo;t find what you&rsquo;re looking for. Perhaps "
-"searching can help."
-msgstr ""
-
-#. #-#-#-#-#  twentythirteen.pot (Twenty Thirteen 1.6)  #-#-#-#-#
-#. Author URI of the plugin/theme
-#: footer.php:19
-msgid "https://wordpress.org/"
-msgstr ""
-
-#: footer.php:19
-msgid "Semantic Personal Publishing Platform"
-msgstr ""
-
-#: footer.php:19
-msgid "Proudly powered by %s"
-msgstr ""
-
-#: functions.php:97
-msgid "Navigation Menu"
-msgstr ""
-
-#. Translators: If there are characters in your language that are not supported
-#. by Source Sans Pro, translate this to 'off'. Do not translate into your own
-#. language.
-#: functions.php:128
-msgctxt "Source Sans Pro font: on or off"
-msgid "on"
-msgstr ""
-
-#. Translators: If there are characters in your language that are not supported
-#. by Bitter, translate this to 'off'. Do not translate into your own language.
-#: functions.php:134
-msgctxt "Bitter font: on or off"
-msgid "on"
-msgstr ""
-
-#: functions.php:218
-msgid "Page %s"
-msgstr ""
-
-#: functions.php:231
-msgid "Main Widget Area"
-msgstr ""
-
-#: functions.php:233
-msgid "Appears in the footer section of the site."
-msgstr ""
-
-#: functions.php:241
-msgid "Secondary Widget Area"
-msgstr ""
-
-#: functions.php:243
-msgid "Appears on posts and pages in the sidebar."
-msgstr ""
-
-#: functions.php:266
-msgid "Posts navigation"
-msgstr ""
-
-#: functions.php:270
-msgid "<span class=\"meta-nav\">&larr;</span> Older posts"
-msgstr ""
-
-#: functions.php:274
-msgid "Newer posts <span class=\"meta-nav\">&rarr;</span>"
-msgstr ""
-
-#: functions.php:300
-msgid "Post navigation"
-msgstr ""
-
-#: functions.php:303
-msgctxt "Previous post link"
-msgid "<span class=\"meta-nav\">&larr;</span> %title"
-msgstr ""
-
-#: functions.php:304
-msgctxt "Next post link"
-msgid "%title <span class=\"meta-nav\">&rarr;</span>"
-msgstr ""
-
-#: functions.php:322
-msgid "Sticky"
-msgstr ""
-
-#. Translators: used between list items, there is a space after the comma.
-#: functions.php:328 functions.php:334
-msgid ", "
-msgstr ""
-
-#: functions.php:343
-msgid "View all posts by %s"
-msgstr ""
-
-#: functions.php:363
-msgctxt "1: post format name. 2: date"
-msgid "%1$s on %2$s"
-msgstr ""
-
-#: functions.php:369
-msgid "Permalink to %s"
-msgstr ""
-
-#: header.php:43
-msgid "Menu"
-msgstr ""
-
-#: header.php:44
-msgid "Skip to content"
-msgstr ""
-
-#: image.php:22
-msgid ""
-"<span class=\"attachment-meta\">Published on <time class=\"entry-date\" "
-"datetime=\"%1$s\">%2$s</time> in <a href=\"%3$s\" title=\"Return to %4$s\" "
-"rel=\"gallery\">%5$s</a></span>"
-msgstr ""
-
-#: image.php:38
-msgid "Link to full-size image"
-msgstr ""
-
-#: image.php:39
-msgid "Full resolution"
-msgstr ""
-
-#: image.php:51
-msgid "<span class=\"meta-nav\">&larr;</span> Previous"
-msgstr ""
-
-#: image.php:52
-msgid "Next <span class=\"meta-nav\">&rarr;</span>"
-msgstr ""
-
-#: inc/back-compat.php:37 inc/back-compat.php:47 inc/back-compat.php:60
-msgid ""
-"Twenty Thirteen requires at least WordPress version 3.6. You are running "
-"version %s. Please upgrade and try again."
-msgstr ""
-
-#: inc/custom-header.php:49
-msgctxt "header image description"
-msgid "Circle"
-msgstr ""
-
-#: inc/custom-header.php:54
-msgctxt "header image description"
-msgid "Diamond"
-msgstr ""
-
-#: inc/custom-header.php:59
-msgctxt "header image description"
-msgid "Star"
-msgstr ""
-
-#: search.php:18
-msgid "Search Results for: %s"
-msgstr ""
-
-#: tag.php:21
-msgid "Tag Archives: %s"
-msgstr ""
-
-#: taxonomy-post_format.php:23
-msgid "%s Archives"
-msgstr ""
-
-#. Theme Name of the plugin/theme
-msgid "Twenty Thirteen"
-msgstr ""
-
-#. Theme URI of the plugin/theme
-msgid "https://wordpress.org/themes/twentythirteen/"
-msgstr ""
-
-#. Description of the plugin/theme
-msgid ""
-"The 2013 theme for WordPress takes us back to the blog, featuring a full "
-"range of post formats, each displayed beautifully in their own unique way. "
-"Design details abound, starting with a vibrant color scheme and matching "
-"header images, beautiful typography and icons, and a flexible layout that "
-"looks great on any device, big or small."
-msgstr ""
-
-#. Author of the plugin/theme
-msgid "the WordPress team"
-msgstr ""
diff --git a/wp-content/themes/twentythirteen/page.php b/wp-content/themes/twentythirteen/page.php
deleted file mode 100644 (file)
index 5545367..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<?php
-/**
- * The template for displaying all pages
- *
- * This is the template that displays all pages by default.
- * Please note that this is the WordPress construct of pages and that other
- * 'pages' on your WordPress site will use a different template.
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-
-                       <?php /* The loop */ ?>
-                       <?php while ( have_posts() ) : the_post(); ?>
-
-                               <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
-                                       <header class="entry-header">
-                                               <?php if ( has_post_thumbnail() && ! post_password_required() ) : ?>
-                                               <div class="entry-thumbnail">
-                                                       <?php the_post_thumbnail(); ?>
-                                               </div>
-                                               <?php endif; ?>
-
-                                               <h1 class="entry-title"><?php the_title(); ?></h1>
-                                       </header><!-- .entry-header -->
-
-                                       <div class="entry-content">
-                                               <?php the_content(); ?>
-                                               <?php wp_link_pages( array( 'before' => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentythirteen' ) . '</span>', 'after' => '</div>', 'link_before' => '<span>', 'link_after' => '</span>' ) ); ?>
-                                       </div><!-- .entry-content -->
-
-                                       <footer class="entry-meta">
-                                               <?php edit_post_link( __( 'Edit', 'twentythirteen' ), '<span class="edit-link">', '</span>' ); ?>
-                                       </footer><!-- .entry-meta -->
-                               </article><!-- #post -->
-
-                               <?php comments_template(); ?>
-                       <?php endwhile; ?>
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/readme.txt b/wp-content/themes/twentythirteen/readme.txt
deleted file mode 100644 (file)
index 807443d..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-=== Twenty Thirteen ===
-Contributors: the WordPress team
-Requires at least: WordPress 3.6
-Tested up to: WordPress 4.3-trunk
-Stable tag: 1.6
-License: GPLv2 or later
-License URI: http://www.gnu.org/licenses/gpl-2.0.html
-Tags: black, brown, orange, tan, white, yellow, light, one-column, two-columns, right-sidebar, fluid-layout, responsive-layout, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, translation-ready, accessibility-ready
-
-== Description ==
-The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.
-
-For more information about Twenty Thirteen please go to https://codex.wordpress.org/Twenty_Thirteen.
-
-== Installation ==
-
-1. In your admin panel, go to Appearance -> Themes and click the 'Add New' button.
-2. Type in Twenty Thirteen in the search form and press the 'Enter' key in your keyboard.
-3. Click on the 'Activate' button to use your new theme right away.
-4. Go to https://codex.wordpress.org/Twenty_Thirteen for a guide to customize this theme.
-5. Navigate to Appearance > Customize in your admin panel.
-
-== Copyright ==
-
-Twenty Thirteen WordPress Theme, Copyright 2013-2015 WordPress.org & Automattic.com
-Twenty Thirteen is Distributed under the terms of the GNU GPL
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-Twenty Thirteen Theme bundles the following third-party resources:
-
-HTML5 Shiv v3.7.0, Copyright 2014 Alexander Farkas
-Licenses: MIT/GPL2
-Source: https://github.com/aFarkas/html5shiv
-
-Genericons icon font, Copyright 2013-2015 Automattic.com
-License: GNU GPL, Version 2 (or later)
-Source: http://www.genericons.com
-
-== Changelog ==
-
-= 1.6 =
-* Released: August 18, 2015
-
-https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.6
-
-= 1.5 =
-* Released: April 23, 2015
-
-https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.5
-
-= 1.4 =
-* Released: December 18, 2014
-
-https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.4
-
-= 1.3 =
-* Released: September 4, 2014
-
-https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.3
-
-= 1.2 =
-* Released: May 8, 2014
-
-https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.2
-
-= 1.1 =
-* Released: October 24, 2013
-
-https://codex.wordpress.org/Twenty_Thirteen_Theme_Changelog#Version_1.1
-
-= 1.0 =
-* Released: August 1, 2013
-
-Initial release.
diff --git a/wp-content/themes/twentythirteen/rtl.css b/wp-content/themes/twentythirteen/rtl.css
deleted file mode 100644 (file)
index 447d385..0000000
+++ /dev/null
@@ -1,766 +0,0 @@
-/*
-Theme Name: Twenty Thirteen
-Description: Adds support for languages written in a Right To Left (RTL) direction.
-It's easy, just a matter of overwriting all the horizontal positioning attributes
-of your CSS stylesheet in a separate stylesheet file named rtl.css.
-
-See https://codex.wordpress.org/Right_to_Left_Language_Support
-*/
-
-/**
- * Table of Contents:
- *
- * 1.0 - Reset
- * 4.0 - Header
- *   4.1 - Site Header
- *   4.2 - Navigation
- * 5.0 - Content
- *   5.2 - Entry Meta
- *   5.4 - Galleries
- *   5.5 - Post Formats
- *   5.6 - Attachments
- *   5.7 - Post/Paging Navigation
- *   5.8 - Author Bio
- *   5.9 - Archives
- *   5.10 - Search Results/No posts
- *   5.12 - Comments
- * 6.0 - Sidebar
- *   6.1 - Widgets
- * 7.0 - Footer
- * 8.0 - Media Queries
- * 9.0 - Print
- * ----------------------------------------------------------------------------
- */
-
-
-/**
- * 1.0 Reset
- * ----------------------------------------------------------------------------
- */
-
-body {
-       direction: rtl;
-       unicode-bidi: embed;
-}
-
-a {
-       display: inline-block;
-}
-
-blockquote blockquote {
-       margin-left: 0;
-       margin-right: 24px;
-}
-
-menu,
-ol,
-ul {
-       padding: 0 40px 0 0;
-}
-
-caption,
-th,
-td {
-       text-align: right;
-}
-
-td {
-       padding-left: 10px;
-       padding-right: 0;
-}
-
-.assistive-text:focus {
-       left: auto;
-       right: 5px;
-}
-
-
-/**
- * 4.0 Header
- * ----------------------------------------------------------------------------
- */
-
-/**
- * 4.1 Site Header
- * ----------------------------------------------------------------------------
- */
-
-.site-header > a:first-child {
-       display: inherit;
-}
-
-.site-description {
-       font-style: normal;
-}
-
-
-/**
- * 4.2 Navigation
- * ----------------------------------------------------------------------------
- */
-
-/* Navbar */
-ul.nav-menu,
-div.nav-menu > ul {
-       margin: 0 -20px 0 0;
-       padding: 0 0 0 40px;
-}
-
-.nav-menu .sub-menu,
-.nav-menu .children {
-       float: right;
-       left: auto;
-       right: -2px;
-}
-
-.nav-menu .sub-menu ul,
-.nav-menu .children ul {
-       border-left: 2px solid #f7f5e7;
-       border-right: 0;
-       left: auto;
-       right: 100%;
-}
-
-.main-navigation .search-form {
-       left: 0;
-       right: auto;
-}
-
-.site-header .search-field {
-       background-position: 98% center;
-       padding: 0 34px 0 0;
-}
-
-.nav-menu .current_page_item > a,
-.nav-menu .current_page_ancestor > a,
-.nav-menu .current-menu-item > a,
-.nav-menu .current-menu-ancestor > a {
-       font-style: normal;
-}
-
-.menu-toggle {
-       padding-left: 0;
-       padding-right: 20px;
-}
-
-
-/**
- * 5.0 Content
- * ----------------------------------------------------------------------------
- */
-
-.sidebar .entry-header,
-.sidebar .entry-content,
-.sidebar .entry-summary,
-.sidebar .entry-meta {
-       padding-left: 376px;
-       padding-right: 60px;
-}
-
-
-/**
- * 5.2 Entry Meta
- * ----------------------------------------------------------------------------
- */
-
-.entry-meta > span {
-       margin-left: 20px;
-       margin-right: auto;
-}
-
-.entry-meta > span:last-child {
-       margin-left: 0;
-       margin-right: auto;
-}
-
-.featured-post:before {
-       margin-left: 2px;
-       margin-right: auto;
-}
-
-.entry-meta .date a:before {
-       margin-left: 2px;
-}
-
-.comments-link a:before {
-       margin-left: 2px;
-       margin-right: auto;
-}
-
-.tags-links a:first-child:before {
-       margin-left: 2px;
-}
-
-.edit-link a:before {
-       margin-left: 2px;
-}
-
-.page-links .page-links-title {
-       margin-left: 20px;
-       margin-right: auto;
-}
-
-/**
- * 5.4 Galleries
- * ----------------------------------------------------------------------------
- */
-
-.gallery {
-       margin-left: auto;
-       margin-right: -4px;
-}
-
-.gallery-item {
-       float: right;
-       margin: 0 0 4px 4px;
-}
-
-.gallery-item a {
-       display: inline;
-}
-
-
-/**
- * 5.5 Post Formats
- * ----------------------------------------------------------------------------
- */
-
-.entry-content a {
-       display: inline;
-}
-
-.format-aside cite:before {
-       content: normal;
-       margin-right: auto;
-}
-
-.format-aside cite:after {
-       content: "\2014";
-       margin-left: 5px;
-}
-
-.format-audio .entry-content:before {
-       float: right;
-       -webkit-transform: scaleX(-1);
-       -moz-transform:    scaleX(-1);
-       -ms-transform:     scaleX(-1);
-       -o-transform:      scaleX(-1);
-       transform:         scaleX(-1);
-}
-
-.format-audio .audio-content {
-       background-position: right top;
-       float: left;
-       padding-left: 0;
-       padding-right: 35px;
-}
-
-.format-chat .entry-meta .date a:before {
-       margin-left: 4px;
-       margin-right: auto;
-}
-
-.format-image .wp-caption-text {
-       text-align: right;
-}
-
-.format-link .entry-title {
-       margin-left: 20px;
-       margin-right: auto;
-}
-
-.format-status .entry-content,
-.format-status .entry-meta {
-       padding-left: 0;
-       padding-right: 35px;
-}
-
-.sidebar .format-status .entry-content,
-.sidebar .format-status .entry-meta {
-       padding-left: 376px;
-       padding-right: 95px;
-}
-
-.format-status .entry-content:before,
-.format-status .entry-meta:before {
-       left: auto;
-       right: 10px;
-}
-
-.sidebar .format-status .entry-content:before,
-.sidebar .format-status .entry-meta:before {
-       left: auto;
-       right: 70px;
-}
-
-.format-status .entry-content p:first-child:before {
-       left: auto;
-       right: 4px;
-}
-
-.sidebar .format-status .entry-content p:first-child:before {
-       left: auto;
-       right: 64px;
-}
-
-.format-quote blockquote {
-       padding-left: 0;
-       padding-right: 75px;
-}
-
-.format-quote blockquote:before {
-       content: '\201D';
-       padding-left: 25px;
-       padding-right: 0;
-       left: auto;
-       right: -15px;
-}
-
-
-/**
- * 5.6 Attachments
- * ----------------------------------------------------------------------------
- */
-
-.attachment .entry-title {
-       float: right;
-}
-
-.attachment .entry-title:before {
-       margin-left: 10px;
-       margin-right: auto;
-}
-
-.attachment .entry-meta {
-       float: left;
-}
-
-.image-navigation .nav-previous {
-       left: auto;
-       right: 0;
-}
-
-.image-navigation .nav-next {
-       left: 0;
-       right: auto;
-}
-
-.attachment .entry-caption {
-       text-align: right;
-}
-
-
-/**
- * 5.7 Post/Paging Navigation
- * ----------------------------------------------------------------------------
- */
-
-.navigation .nav-previous {
-       float: right;
-}
-
-.navigation .nav-next {
-       float: left;
-}
-
-.sidebar .paging-navigation .nav-links,
-.sidebar .post-navigation .nav-links {
-       padding-left: 376px;
-       padding-right: 60px;
-}
-
-.paging-navigation .nav-previous .meta-nav {
-       margin-left: 10px;
-       margin-right: auto;
-}
-
-.paging-navigation .nav-next .meta-nav {
-       margin-left: auto;
-       margin-right: 10px;
-}
-
-.post-navigation a[rel="next"] {
-       float: left;
-       text-align: left;
-}
-
-
-/**
- * 5.8 Author Bio
- * ----------------------------------------------------------------------------
- */
-
-.author-info {
-       text-align: right; /* gallery & video post formats */
-}
-
-.author.sidebar .author-info {
-       padding-left: 376px;
-       padding-right: 60px;
-}
-
-.author-avatar .avatar {
-       float: right;
-       margin: 0 0 30px 30px;
-}
-
-.author-link {
-       margin-left: auto;
-       margin-right: 2px;
-}
-
-
-/**
- * 5.9 Archives
- * ----------------------------------------------------------------------------
- */
-
-.sidebar .archive-meta {
-       padding-left: 316px;
-       padding-right: 0;
-}
-
-
-/**
- * 5.10 Search Results/No posts
- * ----------------------------------------------------------------------------
- */
-
-.sidebar .page-content {
-       padding-left: 376px;
-       padding-right: 60px;
-}
-
-/**
- * 5.12 Comments
- * ----------------------------------------------------------------------------
- */
-
-.sidebar .comments-title,
-.sidebar .comment-list,
-.sidebar .comment-reply-title,
-.sidebar .comment-navigation,
-.sidebar .comment-respond .comment-form {
-       padding-left: 376px;
-       padding-right: 60px;
-}
-
-.comment-list .children {
-       margin-left: auto;
-       margin-right: 20px;
-}
-
-.comment-author {
-       float: right;
-       margin-left: 50px;
-       margin-right: auto;
-}
-
-.comment-list .edit-link {
-       margin-left: auto;
-       margin-right: 20px;
-}
-
-.comment-metadata,
-.comment-content,
-.comment-list .reply,
-.comment-awaiting-moderation {
-       float: left;
-}
-
-.comment-awaiting-moderation:before {
-       margin-left: 5px;
-       margin-right: auto;
-}
-
-.comment-reply-link:before,
-.comment-reply-login:before {
-       margin-left: 3px;
-       margin-right: auto;
-       -webkit-transform: scaleX(-1);
-       -moz-transform:    scaleX(-1);
-       -ms-transform:     scaleX(-1);
-       -o-transform:      scaleX(-1);
-       transform:         scaleX(-1);
-}
-
-.comment-reply-title small a {
-       float: left;
-}
-
-.comment-form [for="author"],
-.comment-form [for="email"],
-.comment-form [for="url"],
-.comment-form [for="comment"] {
-       float: right;
-}
-
-.form-allowed-tags code {
-       margin-left: auto;
-       margin-right: 3px;
-}
-
-.sidebar .no-comments {
-       padding-left: 376px;
-       padding-right: 60px;
-}
-
-
-/**
- * 6.0 Sidebar
- * ----------------------------------------------------------------------------
- */
-
-.site-main .widget-area {
-       float: left;
-}
-
-.widget-area a {
-       max-width: 100%;
-}
-
-
-/**
- * 6.1 Widgets
- * ----------------------------------------------------------------------------
- */
-
-.widget .widget-title {
-       font-style: normal;
-}
-
-.widget li > ul,
-.widget li > ol {
-       margin-left: auto;
-       margin-right: 20px;
-}
-
-/**
- * 7.0 Footer
- * ----------------------------------------------------------------------------
- */
-
-.site-footer .widget-area,
-.sidebar .site-footer {
-       text-align: right;
-}
-.sidebar .site-footer .widget-area {
-       left: auto;
-       right: -158px;
-}
-
-.site-footer .widget {
-       float: right;
-       margin-left: 20px;
-       margin-right: auto;
-}
-
-.sidebar .site-footer .widget:nth-of-type(4),
-.sidebar .site-footer .widget:nth-of-type(3) {
-       margin-left: 0;
-       margin-right: auto;
-}
-
-
-/**
- * 8.0 Media Queries
- * ----------------------------------------------------------------------------
- */
-
-@media (max-width: 1069px) {
-       ul.nav-menu,
-       div.nav-menu > ul {
-               margin-left: auto;
-               margin-right: 0;
-       }
-
-       .error404 .page-header,
-       .sidebar .format-image .entry-content img.size-full,
-       .sidebar .format-image .wp-caption:first-child .wp-caption-text {
-               margin-right: auto;
-       }
-
-       .main-navigation .search-form {
-               left: 20px;
-               right: auto;
-       }
-
-       .site-main .widget-area {
-               margin-left: 60px;
-               margin-right: auto;
-       }
-}
-
-@media (max-width: 999px) {
-       .sidebar .entry-header,
-       .sidebar .entry-content,
-       .sidebar .entry-summary,
-       .sidebar .entry-meta,
-       .sidebar .comment-list,
-       .sidebar .comment-reply-title,
-       .sidebar .comment-navigation,
-       .sidebar .comment-respond .comment-form,
-       .sidebar .featured-gallery,
-       .sidebar .post-navigation .nav-links,
-       .author.sidebar .author-info,
-       .sidebar .format-image .entry-content {
-               max-width: 604px;
-               padding-left: 0;
-               padding-right: 0;
-       }
-
-       .site-main .widget-area {
-               float: none;
-               margin-left: auto;
-       }
-
-       .attachment .entry-meta {
-               float: right;
-               text-align: right;
-       }
-
-       .sidebar .format-status .entry-content,
-       .sidebar .format-status .entry-meta {
-               padding-left: 0;
-               padding-right: 35px;
-       }
-
-       .sidebar .format-status .entry-content:before,
-       .sidebar .format-status .entry-meta:before {
-               left: auto;
-               right: 10px;
-       }
-
-       .sidebar .format-status .entry-content p:first-child:before {
-               left: auto;
-               right: 4px;
-       }
-
-       .sidebar .site-footer .widget-area {
-               left: auto;
-               right: 0;
-       }
-
-       .sidebar .paging-navigation .nav-links {
-               padding: 0 60px;
-       }
-}
-
-@media (max-width: 767px) {
-       .format-image .entry-content img:first-of-type,
-       .format-image .wp-caption:first-child .wp-caption-text {
-               margin-right: auto;
-       }
-}
-
-@media (max-width: 643px) {
-       .sidebar .entry-header,
-       .sidebar .entry-content,
-       .sidebar .entry-summary,
-       .sidebar .entry-meta,
-       .sidebar .comment-list,
-       .sidebar .comment-navigation,
-       .sidebar .featured-gallery,
-       .sidebar .post-navigation .nav-links,
-       .sidebar .format-image .entry-content {
-               padding-left: 20px;
-               padding-right: 20px;
-       }
-
-       #content .format-status .entry-content,
-       #content .format-status .entry-met {
-               padding-left: 0;
-               padding-right: 35px;
-       }
-
-       .menu-toggle:after {
-               padding-left: 0;
-               padding-right: 8px;
-       }
-
-       .toggled-on .nav-menu,
-       .toggled-on .nav-menu > ul {
-               margin-left: auto;
-               margin-right: 0;
-       }
-
-       .toggled-on .nav-menu li > ul {
-               margin-left: auto;
-               margin-right: 20px;
-               right: auto;
-       }
-
-       #content .featured-gallery {
-               padding-left: 0;
-               padding-right: 24px;
-       }
-
-       .gallery-columns-1 .gallery-item {
-               margin-left: 0;
-               margin-right: auto;
-       }
-
-       .comment-author {
-               margin-left: 30px;
-               margin-right: auto;
-       }
-
-       .format-audio .audio-content {
-               background: none;
-               float: none;
-               padding-left: 0;
-               padding-right: 0;
-       }
-
-       .gallery-columns-3 .gallery-item:nth-of-type(3n) {
-               margin-left: 4px;
-               margin-right: auto;
-       }
-}
-
-@media (max-width: 359px) {
-       .gallery {
-               margin-left: auto;
-               margin-right: 0;
-       }
-
-       .gallery .gallery-item:nth-of-type(even) {
-               margin-left: 0;
-               margin-right: auto;
-       }
-
-       .gallery .gallery-item,
-       .gallery.gallery-columns-3 .gallery-item:nth-of-type(even),
-       .gallery-columns-3 .gallery-item:nth-of-type(3n),
-       .gallery-columns-5 .gallery-item:nth-of-type(5n),
-       .gallery-columns-7 .gallery-item:nth-of-type(7n),
-       .gallery-columns-9 .gallery-item:nth-of-type(9n) {
-               margin-left: 4px;
-               margin-right: auto;
-       }
-
-       .comment-author .avatar {
-               margin-left: 5px;
-               margin-right: auto;
-       }
-}
-
-
-/**
- * 9.0 Print
- * ----------------------------------------------------------------------------
- */
-
-@media print {
-       .entry-content img.alignleft,
-       .entry-content .wp-caption.alignleft {
-               margin-left: auto;
-               margin-right: 0;
-       }
-
-       .entry-content img.alignright,
-       .entry-content .wp-caption.alignright {
-               margin-left: 0;
-               margin-right: auto;
-       }
-}
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/screenshot.png b/wp-content/themes/twentythirteen/screenshot.png
deleted file mode 100644 (file)
index e53088b..0000000
Binary files a/wp-content/themes/twentythirteen/screenshot.png and /dev/null differ
diff --git a/wp-content/themes/twentythirteen/search.php b/wp-content/themes/twentythirteen/search.php
deleted file mode 100644 (file)
index 1519c13..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-/**
- * The template for displaying Search Results pages
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-
-               <?php if ( have_posts() ) : ?>
-
-                       <header class="page-header">
-                               <h1 class="page-title"><?php printf( __( 'Search Results for: %s', 'twentythirteen' ), get_search_query() ); ?></h1>
-                       </header>
-
-                       <?php /* The loop */ ?>
-                       <?php while ( have_posts() ) : the_post(); ?>
-                               <?php get_template_part( 'content', get_post_format() ); ?>
-                       <?php endwhile; ?>
-
-                       <?php twentythirteen_paging_nav(); ?>
-
-               <?php else : ?>
-                       <?php get_template_part( 'content', 'none' ); ?>
-               <?php endif; ?>
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/sidebar-main.php b/wp-content/themes/twentythirteen/sidebar-main.php
deleted file mode 100644 (file)
index 3c700ad..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-/**
- * The sidebar containing the footer widget area
- *
- * If no active widgets in this sidebar, hide it completely.
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-if ( is_active_sidebar( 'sidebar-1' ) ) : ?>
-       <div id="secondary" class="sidebar-container" role="complementary">
-               <div class="widget-area">
-                       <?php dynamic_sidebar( 'sidebar-1' ); ?>
-               </div><!-- .widget-area -->
-       </div><!-- #secondary -->
-<?php endif; ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/sidebar.php b/wp-content/themes/twentythirteen/sidebar.php
deleted file mode 100644 (file)
index cb5cf98..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php
-/**
- * The sidebar containing the secondary widget area
- *
- * Displays on posts and pages.
- *
- * If no active widgets are in this sidebar, hide it completely.
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-if ( is_active_sidebar( 'sidebar-2' ) ) : ?>
-       <div id="tertiary" class="sidebar-container" role="complementary">
-               <div class="sidebar-inner">
-                       <div class="widget-area">
-                               <?php dynamic_sidebar( 'sidebar-2' ); ?>
-                       </div><!-- .widget-area -->
-               </div><!-- .sidebar-inner -->
-       </div><!-- #tertiary -->
-<?php endif; ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/single.php b/wp-content/themes/twentythirteen/single.php
deleted file mode 100644 (file)
index 1694a0d..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-/**
- * The template for displaying all single posts
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-
-                       <?php /* The loop */ ?>
-                       <?php while ( have_posts() ) : the_post(); ?>
-
-                               <?php get_template_part( 'content', get_post_format() ); ?>
-                               <?php twentythirteen_post_nav(); ?>
-                               <?php comments_template(); ?>
-
-                       <?php endwhile; ?>
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
\ No newline at end of file
diff --git a/wp-content/themes/twentythirteen/style.css b/wp-content/themes/twentythirteen/style.css
deleted file mode 100644 (file)
index d547283..0000000
+++ /dev/null
@@ -1,3227 +0,0 @@
-/*
-Theme Name: Twenty Thirteen
-Theme URI: https://wordpress.org/themes/twentythirteen/
-Author: the WordPress team
-Author URI: https://wordpress.org/
-Description: The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small.
-Version: 1.6
-License: GNU General Public License v2 or later
-License URI: http://www.gnu.org/licenses/gpl-2.0.html
-Tags: black, brown, orange, tan, white, yellow, light, one-column, two-columns, right-sidebar, fluid-layout, responsive-layout, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, translation-ready, accessibility-ready
-Text Domain: twentythirteen
-
-This theme, like WordPress, is licensed under the GPL.
-Use it to make something cool, have fun, and share what you've learned with others.
-*/
-
-
-/**
- * Table of Contents:
- *
- * 1.0 - Reset
- * 2.0 - Repeatable Patterns
- * 3.0 - Basic Structure
- * 4.0 - Header
- *   4.1 - Site Header
- *   4.2 - Navigation
- * 5.0 - Content
- *   5.1 - Entry Header
- *   5.2 - Entry Meta
- *   5.3 - Entry Content
- *   5.4 - Galleries
- *   5.5 - Post Formats
- *   5.6 - Attachments
- *   5.7 - Post/Paging Navigation
- *   5.8 - Author Bio
- *   5.9 - Archives
- *   5.10 - Search Results/No posts
- *   5.11 - 404
- *   5.12 - Comments
- *   5.13 - Multisite
- * 6.0 - Sidebar
- *   6.1 - Widgets
- * 7.0 - Footer
- * 8.0 - Media Queries
- * 9.0 - Print
- * ----------------------------------------------------------------------------
- */
-
-
-/**
- * 1.0 Reset
- *
- * Modified from Normalize.css to provide cross-browser consistency and a smart
- * default styling of HTML elements.
- *
- * @see http://git.io/normalize
- * ----------------------------------------------------------------------------
- */
-
-* {
-       -webkit-box-sizing: border-box;
-       -moz-box-sizing:    border-box;
-       box-sizing:         border-box;
-}
-
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-nav,
-section,
-summary {
-       display: block;
-}
-
-audio,
-canvas,
-video {
-       display: inline-block;
-}
-
-audio:not([controls]) {
-       display: none;
-       height: 0;
-}
-
-[hidden] {
-       display: none;
-}
-
-html {
-       font-size: 100%;
-       overflow-y: scroll;
-       -webkit-text-size-adjust: 100%;
-       -ms-text-size-adjust: 100%;
-}
-
-html,
-button,
-input,
-select,
-textarea {
-       font-family: "Source Sans Pro", Helvetica, sans-serif;
-}
-
-body {
-       color: #141412;
-       line-height: 1.5;
-       margin: 0;
-}
-
-a {
-       color: #ca3c08;
-       text-decoration: none;
-}
-
-a:visited {
-       color: #ac0404;
-}
-
-a:focus {
-       outline: thin dotted;
-}
-
-a:active,
-a:hover {
-       color: #ea9629;
-       outline: 0;
-}
-
-a:hover {
-       text-decoration: underline;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-       clear: both;
-       font-family: Bitter, Georgia, serif;
-       line-height: 1.3;
-}
-
-h1 {
-       font-size: 48px;
-       margin: 33px 0;
-}
-
-h2 {
-       font-size: 30px;
-       margin: 25px 0;
-}
-
-h3 {
-       font-size: 22px;
-       margin: 22px 0;
-}
-
-h4 {
-       font-size: 20px;
-       margin: 25px 0;
-}
-
-h5 {
-       font-size: 18px;
-       margin: 30px 0;
-}
-
-h6 {
-       font-size: 16px;
-       margin: 36px 0;
-}
-
-address {
-       font-style: italic;
-       margin: 0 0 24px;
-}
-
-abbr[title] {
-       border-bottom: 1px dotted;
-}
-
-b,
-strong {
-       font-weight: bold;
-}
-
-dfn {
-       font-style: italic;
-}
-
-mark {
-       background: #ff0;
-       color: #000;
-}
-
-p {
-       margin: 0 0 24px;
-}
-
-code,
-kbd,
-pre,
-samp {
-       font-family: monospace, serif;
-       font-size: 14px;
-       -webkit-hyphens: none;
-       -moz-hyphens:    none;
-       -ms-hyphens:     none;
-       hyphens:         none;
-}
-
-pre {
-       background: #f5f5f5;
-       color: #666;
-       font-family: monospace;
-       font-size: 14px;
-       margin: 20px 0;
-       overflow: auto;
-       padding: 20px;
-       white-space: pre;
-       white-space: pre-wrap;
-       word-wrap: break-word;
-}
-
-blockquote,
-q {
-       -webkit-hyphens: none;
-       -moz-hyphens:    none;
-       -ms-hyphens:     none;
-       hyphens:         none;
-       quotes: none;
-}
-
-blockquote:before,
-blockquote:after,
-q:before,
-q:after {
-       content: "";
-       content: none;
-}
-
-blockquote {
-       font-size: 18px;
-       font-style: italic;
-       font-weight: 300;
-       margin: 24px 40px;
-}
-
-blockquote blockquote {
-       margin-right: 0;
-}
-
-blockquote cite,
-blockquote small {
-       font-size: 14px;
-       font-weight: normal;
-       text-transform: uppercase;
-}
-
-blockquote em,
-blockquote i {
-       font-style: normal;
-       font-weight: 300;
-}
-
-blockquote strong,
-blockquote b {
-       font-weight: 400;
-}
-
-small {
-       font-size: smaller;
-}
-
-sub,
-sup {
-       font-size: 75%;
-       line-height: 0;
-       position: relative;
-       vertical-align: baseline;
-}
-
-sup {
-       top: -0.5em;
-}
-
-sub {
-       bottom: -0.25em;
-}
-
-dl {
-       margin: 0 20px;
-}
-
-dt {
-       font-weight: bold;
-}
-
-dd {
-       margin: 0 0 20px;
-}
-
-menu,
-ol,
-ul {
-       margin: 16px 0;
-       padding: 0 0 0 40px;
-}
-
-ul {
-       list-style-type: square;
-}
-
-nav ul,
-nav ol {
-       list-style: none;
-       list-style-image: none;
-}
-
-li > ul,
-li > ol {
-       margin: 0;
-}
-
-img {
-       -ms-interpolation-mode: bicubic;
-       border: 0;
-       vertical-align: middle;
-}
-
-svg:not(:root) {
-       overflow: hidden;
-}
-
-figure {
-       margin: 0;
-}
-
-form {
-       margin: 0;
-}
-
-fieldset {
-       border: 1px solid #c0c0c0;
-       margin: 0 2px;
-       padding: 0.35em 0.625em 0.75em;
-}
-
-legend {
-       border: 0;
-       padding: 0;
-       white-space: normal;
-}
-
-button,
-input,
-select,
-textarea {
-       font-size: 100%;
-       margin: 0;
-       max-width: 100%;
-       vertical-align: baseline;
-}
-
-button,
-input {
-       line-height: normal;
-}
-
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-       -webkit-appearance: button;
-       cursor: pointer;
-}
-
-button[disabled],
-input[disabled] {
-       cursor: default;
-}
-
-input[type="checkbox"],
-input[type="radio"] {
-       padding: 0;
-}
-
-input[type="search"] {
-       -webkit-appearance: textfield;
-       padding-right: 2px; /* Don't cut off the webkit search cancel button */
-       width: 270px;
-}
-
-input[type="search"]::-webkit-search-decoration {
-       -webkit-appearance: none;
-}
-
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-       border: 0;
-       padding: 0;
-}
-
-textarea {
-       overflow: auto;
-       vertical-align: top;
-}
-
-table {
-       border-bottom: 1px solid #ededed;
-       border-collapse: collapse;
-       border-spacing: 0;
-       font-size: 14px;
-       line-height: 2;
-       margin: 0 0 20px;
-       width: 100%;
-}
-
-caption,
-th,
-td {
-       font-weight: normal;
-       text-align: left;
-}
-
-caption {
-       font-size: 16px;
-       margin: 20px 0;
-}
-
-th {
-       font-weight: bold;
-       text-transform: uppercase;
-}
-
-td {
-       border-top: 1px solid #ededed;
-       padding: 6px 10px 6px 0;
-}
-
-del {
-       color: #333;
-}
-
-ins {
-       background: #fff9c0;
-       text-decoration: none;
-}
-
-hr {
-       background: url(images/dotted-line.png) repeat center top;
-       background-size: 4px 4px;
-       border: 0;
-       height: 1px;
-       margin: 0 0 24px;
-}
-
-
-/**
- * 2.0 Repeatable Patterns
- * ----------------------------------------------------------------------------
- */
-
-.genericon:before,
-.menu-toggle:after,
-.featured-post:before,
-.date a:before,
-.entry-meta .author a:before,
-.format-audio .entry-content:before,
-.comments-link a:before,
-.tags-links a:first-child:before,
-.categories-links a:first-child:before,
-.edit-link a:before,
-.attachment .entry-title:before,
-.attachment-meta:before,
-.attachment-meta a:before,
-.comment-awaiting-moderation:before,
-.comment-reply-link:before,
-.comment-reply-login:before,
-.comment-reply-title small a:before,
-.bypostauthor > .comment-body .fn:before,
-.error404 .page-title:before {
-       -webkit-font-smoothing: antialiased;
-       display: inline-block;
-       font: normal 16px/1 Genericons;
-       vertical-align: text-bottom;
-}
-
-/* Clearing floats */
-.clear:after,
-.attachment .entry-header:after,
-.site-footer .widget-area:after,
-.entry-content:after,
-.page-content:after,
-.navigation:after,
-.nav-links:after,
-.gallery:after,
-.comment-form-author:after,
-.comment-form-email:after,
-.comment-form-url:after,
-.comment-body:after {
-       clear: both;
-}
-
-.clear:before,
-.clear:after,
-.attachment .entry-header:before,
-.attachment .entry-header:after,
-.site-footer .widget-area:before,
-.site-footer .widget-area:after,
-.entry-content:before,
-.entry-content:after,
-.page-content:before,
-.page-content:after,
-.navigation:before,
-.navigation:after,
-.nav-links:before,
-.nav-links:after,
-.gallery:before,
-.gallery:after,
-.comment-form-author:before,
-.comment-form-author:after,
-.comment-form-email:before,
-.comment-form-email:after,
-.comment-form-url:before,
-.comment-form-url:after,
-.comment-body:before,
-.comment-body:after {
-       content: "";
-       display: table;
-}
-
-/* Assistive text */
-.screen-reader-text {
-       clip: rect(1px, 1px, 1px, 1px);
-       overflow: hidden;
-       position: absolute !important;
-       height: 1px;
-       width: 1px;
-}
-
-.screen-reader-text:focus {
-       background-color: #f1f1f1;
-       border-radius: 3px;
-       box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
-       clip: auto !important;
-       color: #21759b;
-       display: block;
-       font-size: 14px;
-       font-weight: bold;
-       height: auto;
-       line-height: normal;
-       padding: 15px 23px 14px;
-       position: absolute;
-       left: 5px;
-       top: 5px;
-       text-decoration: none;
-       width: auto;
-       z-index: 100000; /* Above WP toolbar */
-}
-
-/* Form fields, general styles first. */
-button,
-input,
-textarea {
-       border: 2px solid #d4d0ba;
-       font-family: inherit;
-       padding: 5px;
-}
-
-input,
-textarea {
-       color: #141412;
-}
-
-input:focus,
-textarea:focus {
-       border: 2px solid #c3c0ab;
-       outline: 0;
-}
-
-/* Buttons */
-button,
-input[type="submit"],
-input[type="button"],
-input[type="reset"] {
-       background: #e05d22; /* Old browsers */
-       background: -webkit-linear-gradient(top, #e05d22 0%, #d94412 100%); /* Chrome 10+, Safari 5.1+ */
-       background:   linear-gradient(to bottom, #e05d22 0%, #d94412 100%); /* W3C */
-       border: none;
-       border-bottom: 3px solid #b93207;
-       border-radius: 2px;
-       color: #fff;
-       display: inline-block;
-       padding: 11px 24px 10px;
-       text-decoration: none;
-}
-
-button:hover,
-button:focus,
-input[type="submit"]:hover,
-input[type="button"]:hover,
-input[type="reset"]:hover,
-input[type="submit"]:focus,
-input[type="button"]:focus,
-input[type="reset"]:focus {
-       background: #ed6a31; /* Old browsers */
-       background: -webkit-linear-gradient(top, #ed6a31 0%, #e55627 100%); /* Chrome 10+, Safari 5.1+ */
-       background:   linear-gradient(to bottom, #ed6a31 0%, #e55627 100%); /* W3C */
-       outline: none;
-}
-
-button:active,
-input[type="submit"]:active,
-input[type="button"]:active,
-input[type="reset"]:active {
-       background: #d94412; /* Old browsers */
-       background: -webkit-linear-gradient(top, #d94412 0%, #e05d22 100%); /* Chrome 10+, Safari 5.1+ */
-       background:   linear-gradient(to bottom, #d94412 0%, #e05d22 100%); /* W3C */
-       border: none;
-       border-top: 3px solid #b93207;
-       padding: 10px 24px 11px;
-}
-
-.post-password-required input[type="submit"] {
-       padding: 7px 24px 4px;
-       vertical-align: bottom;
-}
-
-.post-password-required input[type="submit"]:active {
-       padding: 5px 24px 6px;
-}
-
-/* Placeholder text color -- selectors need to be separate to work. */
-::-webkit-input-placeholder {
-       color: #7d7b6d;
-}
-
-:-moz-placeholder {
-       color: #7d7b6d;
-}
-
-::-moz-placeholder {
-       color: #7d7b6d;
-}
-
-:-ms-input-placeholder {
-       color: #7d7b6d;
-}
-
-/*
- * Responsive images
- *
- * Fluid images for posts, comments, and widgets
- */
-.entry-content img,
-.entry-summary img,
-.comment-content img,
-.widget img,
-.wp-caption {
-       max-width: 100%;
-}
-
-/* Make sure images with WordPress-added height and width attributes are scaled correctly. */
-.entry-content img,
-.entry-summary img,
-.comment-content img[height],
-img[class*="align"],
-img[class*="wp-image-"],
-img[class*="attachment-"] {
-       height: auto;
-}
-
-img.size-full,
-img.size-large,
-img.wp-post-image {
-       height: auto;
-       max-width: 100%;
-}
-
-/* Make sure videos and embeds fit their containers. */
-embed,
-iframe,
-object,
-video {
-       max-width: 100%;
-}
-
-/* Override the Twitter embed fixed width. */
-.entry-content .twitter-tweet-rendered {
-       max-width: 100% !important;
-}
-
-/* Images */
-.alignleft {
-       float: left;
-}
-
-.alignright {
-       float: right;
-}
-
-.aligncenter {
-       display: block;
-       margin-left: auto;
-       margin-right: auto;
-}
-
-figure.wp-caption.alignleft,
-img.alignleft {
-       margin: 5px 20px 5px 0;
-}
-
-.wp-caption.alignleft {
-       margin: 5px 10px 5px 0;
-}
-
-figure.wp-caption.alignright,
-img.alignright {
-       margin: 5px 0 5px 20px;
-}
-
-.wp-caption.alignright {
-       margin: 5px 0 5px 10px;
-}
-
-img.aligncenter {
-       margin: 5px auto;
-}
-
-img.alignnone {
-       margin: 5px 0;
-}
-
-.wp-caption .wp-caption-text,
-.entry-caption,
-.gallery-caption {
-       color: #220e10;
-       font-size: 18px;
-       font-style: italic;
-       font-weight: 300;
-       margin: 0 0 24px;
-}
-
-div.wp-caption.alignright img[class*="wp-image-"] {
-       float: right;
-}
-
-div.wp-caption.alignright .wp-caption-text {
-       padding-left: 10px;
-}
-
-img.wp-smiley,
-.rsswidget img {
-       border: 0;
-       border-radius: 0;
-       box-shadow: none;
-       margin-bottom: 0;
-       margin-top: 0;
-       padding: 0;
-}
-
-.wp-caption.alignleft + ul,
-.wp-caption.alignleft + ol {
-       list-style-position: inside;
-}
-
-
-/**
- * 3.0 Basic Structure
- * ----------------------------------------------------------------------------
- */
-
-.site {
-       background-color: #fff;
-       border-left: 1px solid #f2f2f2;
-       border-right: 1px solid #f2f2f2;
-       margin: 0 auto;
-       max-width: 1600px;
-       width: 100%;
-}
-
-.site-main {
-       position: relative;
-}
-
-.site-main .sidebar-container {
-       height: 0;
-       position: absolute;
-       top: 40px;
-       width: 100%;
-       z-index: 1;
-}
-
-.site-main .sidebar-inner {
-       margin: 0 auto;
-       max-width: 1040px;
-}
-
-
-/**
- * 4.0 Header
- * ----------------------------------------------------------------------------
- */
-
-/**
- * 4.1 Site Header
- * ----------------------------------------------------------------------------
- */
-
-.site-header {
-       position: relative;
-}
-
-.site-header .home-link {
-       color: #141412;
-       display: block;
-       margin: 0 auto;
-       max-width: 1080px;
-       min-height: 230px;
-       padding: 0 20px;
-       text-decoration: none;
-       width: 100%;
-}
-
-.site-header .site-title:hover {
-       text-decoration: underline;
-}
-
-.site-title {
-       font-size: 60px;
-       font-weight: bold;
-       line-height: 1;
-       margin: 0;
-       padding: 58px 0 10px;
-}
-
-.site-description {
-       font: 300 italic 24px "Source Sans Pro", Helvetica, sans-serif;
-       margin: 0;
-}
-
-
-/**
- * 4.2 Navigation
- * ----------------------------------------------------------------------------
- */
-
-.main-navigation {
-       clear: both;
-       margin: 0 auto;
-       max-width: 1080px;
-       min-height: 45px;
-       position: relative;
-}
-
-ul.nav-menu,
-div.nav-menu > ul {
-       margin: 0;
-       padding: 0 40px 0 0;
-}
-
-.nav-menu li {
-       display: inline-block;
-       position: relative;
-}
-
-.nav-menu li a {
-       color: #141412;
-       display: block;
-       font-size: 15px;
-       line-height: 1;
-       padding: 15px 20px;
-       text-decoration: none;
-}
-
-.nav-menu li:hover > a,
-.nav-menu li a:hover,
-.nav-menu li:focus > a,
-.nav-menu li a:focus {
-       background-color: #220e10;
-       color: #fff;
-}
-
-.nav-menu .sub-menu,
-.nav-menu .children {
-       background-color: #220e10;
-       border: 2px solid #f7f5e7;
-       border-top: 0;
-       padding: 0;
-       position: absolute;
-       left: -2px;
-       z-index: 99999;
-       height: 1px;
-       width: 1px;
-       overflow: hidden;
-       clip: rect(1px, 1px, 1px, 1px);
-}
-
-.nav-menu .sub-menu ul,
-.nav-menu .children ul {
-       border-left: 0;
-       left: 100%;
-       top: 0;
-}
-
-ul.nav-menu ul a,
-.nav-menu ul ul a {
-       color: #fff;
-       margin: 0;
-       width: 200px;
-}
-
-ul.nav-menu ul a:hover,
-.nav-menu ul ul a:hover,
-ul.nav-menu ul a:focus,
-.nav-menu ul ul a:focus {
-       background-color: #db572f;
-}
-
-ul.nav-menu li:hover > ul,
-.nav-menu ul li:hover > ul,
-ul.nav-menu .focus > ul,
-.nav-menu .focus > ul {
-       clip: inherit;
-       overflow: inherit;
-       height: inherit;
-       width: inherit;
-}
-
-.nav-menu .current_page_item > a,
-.nav-menu .current_page_ancestor > a,
-.nav-menu .current-menu-item > a,
-.nav-menu .current-menu-ancestor > a {
-       color: #bc360a;
-       font-style: italic;
-}
-
-.menu-toggle {
-       display: none;
-}
-
-/* Navbar */
-.navbar {
-       background-color: #f7f5e7;
-       margin: 0 auto;
-       max-width: 1600px;
-       width: 100%;
-}
-
-.site-header .search-form {
-       position: absolute;
-       right: 20px;
-       top: 1px;
-}
-
-.site-header .search-field {
-       background-color: transparent;
-       background-image: url(images/search-icon.png);
-       background-position: 5px center;
-       background-repeat: no-repeat;
-       background-size: 24px 24px;
-       border: none;
-       cursor: pointer;
-       height: 37px;
-       margin: 3px 0;
-       padding: 0 0 0 34px;
-       position: relative;
-       -webkit-transition: width 400ms ease, background 400ms ease;
-       transition:         width 400ms ease, background 400ms ease;
-       width: 1px;
-}
-
-.site-header .search-field:focus {
-       background-color: #fff;
-       border: 2px solid #c3c0ab;
-       cursor: text;
-       outline: 0;
-       width: 230px;
-}
-
-
-/**
- * 5.0 Content
- * ----------------------------------------------------------------------------
- */
-
-.hentry {
-       padding: 40px 0;
-}
-
-.entry-header,
-.entry-content,
-.entry-summary,
-.entry-meta {
-       margin: 0 auto;
-       max-width: 604px;
-       width: 100%;
-}
-
-.sidebar .entry-header,
-.sidebar .entry-content,
-.sidebar .entry-summary,
-.sidebar .entry-meta {
-       max-width: 1040px;
-       padding: 0 376px 0 60px;
-}
-
-
-/**
- * 5.1 Entry Header
- * ----------------------------------------------------------------------------
- */
-
-.sidebar .entry-header .entry-meta {
-       padding: 0;
-}
-
-.entry-thumbnail img {
-       display: block;
-       margin: 0 auto 10px;
-}
-
-.entry-header {
-       margin-bottom: 30px;
-}
-
-.entry-title {
-       font-weight: normal;
-       margin: 0 0 5px;
-}
-
-.entry-title a {
-       color: #141412;
-}
-
-.entry-title a:hover {
-       color: #ea9629;
-}
-
-
-/**
- * 5.2 Entry Meta
- * ----------------------------------------------------------------------------
- */
-
-.entry-meta {
-       clear: both;
-       font-size: 14px;
-}
-
-.entry-meta a {
-       color: #bc360a;
-}
-
-.entry-meta a:hover {
-       color: #bc360a;
-}
-
-.entry-meta > span {
-       margin-right: 20px;
-}
-
-.entry-meta > span:last-child {
-       margin-right: 0;
-}
-
-.featured-post:before {
-       content: "\f308";
-       margin-right: 2px;
-}
-
-.entry-meta .date a:before {
-       content: "\f303";
-}
-
-.comments-link a:before {
-       content: "\f300";
-       margin-right: 2px;
-       position: relative;
-       top: -1px;
-}
-
-.entry-meta .author a:before {
-       content: "\f304";
-       position: relative;
-       top: -1px;
-}
-
-.categories-links a:first-child:before {
-       content: "\f301";
-}
-
-.tags-links a:first-child:before {
-       content: "\f302";
-       position: relative;
-       top: -1px;
-}
-
-.edit-link a:before {
-       content: "\f411";
-       position: relative;
-       top: -1px;
-}
-
-.single-author .entry-meta .author,
-.sticky.format-standard .entry-meta .date,
-.sticky.format-audio .entry-meta .date,
-.sticky.format-chat .entry-meta .date,
-.sticky.format-image .entry-meta .date,
-.sticky.format-gallery .entry-meta .date {
-       display: none;
-}
-
-
-/**
- * 5.3 Entry Content
- * ----------------------------------------------------------------------------
- */
-
-.entry-content {
-       -webkit-hyphens: auto;
-       -moz-hyphens:    auto;
-       -ms-hyphens:     auto;
-       hyphens:         auto;
-       word-wrap: break-word;
-}
-
-.entry-content a,
-.comment-content a {
-       color: #bc360a;
-}
-
-.entry-content a:hover,
-.comment-content a:hover {
-       color: #ea9629;
-}
-
-.entry-content .more-link {
-       white-space: nowrap;
-}
-
-.entry-content blockquote {
-       font-size: 24px;
-}
-
-.entry-content blockquote cite,
-.entry-content blockquote small {
-       font-size: 16px;
-}
-
-.entry-content img.alignleft,
-.entry-content .wp-caption.alignleft {
-       margin-left: -60px;
-}
-
-.entry-content img.alignright,
-.entry-content .wp-caption.alignright {
-       margin-right: -60px;
-}
-
-footer.entry-meta {
-       margin-top: 24px;
-}
-
-.format-standard footer.entry-meta {
-       margin-top: 0;
-}
-
-/* Page links */
-.page-links {
-       clear: both;
-       font-size: 16px;
-       font-style: italic;
-       font-weight: normal;
-       line-height: 2.2;
-       margin: 20px 0;
-       text-transform: uppercase;
-}
-
-.page-links a,
-.page-links > span {
-       background: #fff;
-       border: 1px solid #fff;
-       padding: 5px 10px;
-       text-decoration: none;
-}
-
-.format-status .entry-content .page-links a,
-.format-gallery .entry-content .page-links a,
-.format-chat .entry-content .page-links a,
-.format-quote .entry-content .page-links a,
-.page-links a {
-       background: #e63f2a;
-       border: 1px solid #e63f2a;
-       color: #fff;
-}
-
-.format-gallery .entry-content .page-links a:hover,
-.format-audio .entry-content .page-links a:hover,
-.format-status .entry-content .page-links a:hover,
-.format-video .entry-content .page-links a:hover,
-.format-chat .entry-content .page-links a:hover,
-.format-quote .entry-content .page-links a:hover,
-.page-links a:hover {
-       background: #fff;
-       color: #e63f2a;
-}
-
-.format-status .entry-content .page-links > span,
-.format-quote .entry-content .page-links > span {
-       background: none;
-}
-
-.page-links .page-links-title {
-       background: transparent;
-       border: none;
-       margin-right: 20px;
-       padding: 0;
-}
-
-/* Mediaelements */
-.hentry .mejs-mediaelement,
-.hentry .mejs-container .mejs-controls {
-       background: #220e10;
-}
-
-.hentry .mejs-controls .mejs-time-rail .mejs-time-loaded,
-.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
-       background: #fff;
-}
-
-.hentry .mejs-controls .mejs-time-rail .mejs-time-current {
-       background: #ea9629;
-}
-
-.hentry .mejs-controls .mejs-time-rail .mejs-time-total,
-.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total {
-       background: #595959;
-}
-
-.hentry .mejs-controls .mejs-time-rail span,
-.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total,
-.hentry .mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current {
-       border-radius: 0;
-}
-
-
-/**
- * 5.4 Galleries
- * ----------------------------------------------------------------------------
- */
-
-.gallery {
-       margin-bottom: 20px;
-       margin-left: -4px;
-}
-
-.gallery-item {
-       float: left;
-       margin: 0 4px 4px 0;
-       overflow: hidden;
-       position: relative;
-}
-
-.gallery-columns-1.gallery-size-medium,
-.gallery-columns-1.gallery-size-thumbnail,
-.gallery-columns-2.gallery-size-thumbnail,
-.gallery-columns-3.gallery-size-thumbnail {
-       display: table;
-       margin: 0 auto 20px;
-}
-
-.gallery-columns-1 .gallery-item,
-.gallery-columns-2 .gallery-item,
-.gallery-columns-3 .gallery-item {
-       text-align: center;
-}
-
-.gallery-columns-4 .gallery-item {
-       max-width: 23%;
-       max-width: -webkit-calc(25% - 4px);
-       max-width:         calc(25% - 4px);
-}
-
-.gallery-columns-5 .gallery-item {
-       max-width: 19%;
-       max-width: -webkit-calc(20% - 4px);
-       max-width:         calc(20% - 4px);
-}
-
-.gallery-columns-6 .gallery-item {
-       max-width: 15%;
-       max-width: -webkit-calc(16.7% - 4px);
-       max-width:         calc(16.7% - 4px);
-}
-
-.gallery-columns-7 .gallery-item {
-       max-width: 13%;
-       max-width: -webkit-calc(14.28% - 4px);
-       max-width:         calc(14.28% - 4px);
-}
-
-.gallery-columns-8 .gallery-item {
-       max-width: 11%;
-       max-width: -webkit-calc(12.5% - 4px);
-       max-width:         calc(12.5% - 4px);
-}
-
-.gallery-columns-9 .gallery-item {
-       max-width: 9%;
-       max-width: -webkit-calc(11.1% - 4px);
-       max-width:         calc(11.1% - 4px);
-}
-
-.gallery-columns-1 .gallery-item:nth-of-type(1n),
-.gallery-columns-2 .gallery-item:nth-of-type(2n),
-.gallery-columns-3 .gallery-item:nth-of-type(3n),
-.gallery-columns-4 .gallery-item:nth-of-type(4n),
-.gallery-columns-5 .gallery-item:nth-of-type(5n),
-.gallery-columns-6 .gallery-item:nth-of-type(6n),
-.gallery-columns-7 .gallery-item:nth-of-type(7n),
-.gallery-columns-8 .gallery-item:nth-of-type(8n),
-.gallery-columns-9 .gallery-item:nth-of-type(9n) {
-       margin-right: 0;
-}
-
-.gallery-columns-1.gallery-size-medium figure.gallery-item:nth-of-type(1n+1),
-.gallery-columns-1.gallery-size-thumbnail figure.gallery-item:nth-of-type(1n+1),
-.gallery-columns-2.gallery-size-thumbnail figure.gallery-item:nth-of-type(2n+1),
-.gallery-columns-3.gallery-size-thumbnail figure.gallery-item:nth-of-type(3n+1) {
-       clear: left;
-}
-
-.gallery-caption {
-       background-color: rgba(0, 0, 0, 0.7);
-       box-sizing: border-box;
-       color: #fff;
-       font-size: 14px;
-       line-height: 1.3;
-       margin: 0;
-       max-height: 50%;
-       opacity: 0;
-       padding: 2px 8px;
-       position: absolute;
-       bottom: 0;
-       left: 0;
-       text-align: left;
-       -webkit-transition: opacity 400ms ease;
-       transition:         opacity 400ms ease;
-       width: 100%;
-}
-
-.gallery-caption:before {
-       box-shadow: 0 -10px 15px #000 inset;
-       content: "";
-       height: 100%;
-       min-height: 49px;
-       position: absolute;
-       left: 0;
-       top: 0;
-       width: 100%;
-}
-
-.gallery-item:hover .gallery-caption {
-       opacity: 1;
-}
-
-.gallery-columns-7 .gallery-caption,
-.gallery-columns-8 .gallery-caption,
-.gallery-columns-9 .gallery-caption {
-       display: none;
-}
-
-
-/**
- * 5.5 Post Formats
- * ----------------------------------------------------------------------------
- */
-
-/* Aside */
-.format-aside {
-       background-color: #f7f5e7;
-}
-
-.blog .format-aside:first-of-type,
-.single .format-aside:first-of-type,
-.format-aside + .format-aside,
-.format-aside + .format-link,
-.format-link + .format-aside {
-       box-shadow: inset 0 2px 2px rgba(173, 165, 105, 0.2);
-}
-
-.format-aside .entry-meta {
-       margin-top: 0;
-}
-
-.format-aside blockquote {
-       font-size: 100%;
-       font-weight: normal;
-}
-
-.format-aside cite {
-       font-size: 100%;
-       text-transform: none;
-}
-
-.format-aside cite:before {
-       content: "\2014";
-       margin-right: 5px;
-}
-
-/* Audio */
-.format-audio {
-       background-color: #db572f;
-}
-
-.format-audio .entry-title {
-       font-size: 28px;
-       font-weight: bold;
-}
-
-.format-audio .entry-content:before {
-       content: "\f109";
-       float: left;
-       font-size: 64px;
-       position: relative;
-       top: 4px;
-}
-
-.format-audio .entry-content a,
-.format-audio .entry-meta a,
-.format-audio .entry-content a:hover,
-.format-audio .entry-meta a:hover {
-       color: #fbfaf3;
-}
-
-.format-audio .audio-content {
-       background: url(images/dotted-line.png) repeat-y left top;
-       background-size: 4px 4px;
-       float: right;
-       padding-left: 35px;
-       width: 80%;
-       width: -webkit-calc(100% - 85px);
-       width:         calc(100% - 85px);
-}
-
-.format-audio .wp-audio-shortcode {
-       height: 30px !important; /* Override mediaelement.js style */
-       margin: 20px 0;
-       max-width: 400px !important; /* Override mediaelement.js style */
-}
-
-.format-audio audio {
-       max-width: 100% !important; /* Avoid player width overflow. */
-}
-
-/* Chat */
-.format-chat {
-       background-color: #eadaa6;
-}
-
-.format-chat .entry-title {
-       font-size: 28px;
-       font-weight: bold;
-}
-
-.format-chat .entry-meta a,
-.format-chat .entry-content a {
-       color: #722d19;
-}
-
-.format-chat .entry-meta .date a:before {
-       content: "\f108";
-       margin-right: 2px;
-}
-
-.format-chat .entry-meta .author {
-       display: none;
-}
-
-.format-chat .chat {
-       margin: 0;
-}
-
-.format-chat .chat .chat-timestamp {
-       color: #722d19;
-       float: right;
-       font-size: 12px;
-       font-weight: normal;
-       margin: 5px 10px 0;
-}
-
-.format-chat .chat .fn {
-       font-style: normal;
-}
-
-/* Gallery */
-.format-gallery {
-       background-color: #fbca3c;
-}
-
-.format-gallery .entry-header {
-       margin-bottom: 15px;
-}
-
-.format-gallery .entry-title {
-       font-size: 50px;
-       font-weight: 400;
-       margin: 0;
-}
-
-.format-gallery .entry-meta a,
-.format-gallery .entry-content a {
-       color: #722d19;
-}
-
-/* Image */
-.format-image .entry-title {
-       font-size: 28px;
-       font-weight: bold;
-}
-
-.format-image .categories-links,
-.format-image .tags-links {
-       display: none;
-}
-
-/* Link */
-.format-link {
-       background-color: #f7f5e7;
-}
-
-.blog .format-link:first-of-type,
-.single .format-link:first-of-type {
-       box-shadow: inset 0 2px 2px rgba(173, 165, 105, 0.2);
-}
-
-.format-link .entry-header,
-.format-link .entry-content p:last-child {
-       margin-bottom: 0;
-}
-
-.format-link .entry-title {
-       color: #ca3c08;
-       display: inline;
-       font: 300 italic 20px "Source Sans Pro", Helvetica, sans-serif;
-       margin-right: 20px;
-}
-
-.format-link .entry-title a {
-       color: #bc360a;
-}
-
-.format-link div.entry-meta {
-       display: inline;
-}
-
-/* Standard */
-.format-standard .wp-video,
-.format-standard .wp-audio-shortcode,
-.format-audio .wp-audio-shortcode,
-.format-standard .video-player {
-       margin-bottom: 24px;
-}
-
-/* Quote */
-.format-quote {
-       background-color: #210d10;
-}
-
-.format-quote .entry-content,
-.format-quote .entry-meta {
-       color: #f7f5e7;
-}
-
-.format-quote .entry-content blockquote {
-       font-size: 28px;
-       margin: 0;
-}
-
-.format-quote .entry-content a,
-.format-quote .entry-meta a,
-.format-quote .linked {
-       color: #e63f2a;
-}
-
-.format-quote .entry-content cite a {
-       border-bottom: 1px dotted #fff;
-       color: #fff;
-}
-
-.format-quote .entry-content cite a:hover {
-       text-decoration: none;
-}
-
-.format-quote blockquote small,
-.format-quote blockquote cite {
-       display: block;
-       font-size: 16px;
-}
-
-.format-quote blockquote {
-       font-style: italic;
-       font-weight: 300;
-       padding-left: 75px;
-       position: relative;
-}
-
-.format-quote blockquote:before {
-       content: '\201C';
-       font-size: 140px;
-       font-weight: 400;
-       line-height: .8;
-       padding-right: 25px;
-       position: absolute;
-       left: -15px;
-       top: -3px;
-}
-
-.format-quote .entry-meta .author {
-       display: none;
-}
-
-/* Status */
-.format-status {
-       background-color: #722d19;
-       padding: 0;
-}
-
-.format-status .entry-content,
-.format-status .entry-meta {
-       padding-left: 35px;
-       position: relative;
-}
-
-.format-status .entry-content a {
-       color: #eadaa6;
-}
-
-.format-status .entry-meta a {
-       color: #f7f5e7;
-}
-
-.sidebar .format-status .entry-content,
-.sidebar .format-status .entry-meta {
-       padding-left: 95px;
-}
-
-.format-status .entry-content:before,
-.format-status .entry-meta:before {
-       background: url(images/dotted-line.png) repeat-y left bottom;
-       background-size: 4px 4px;
-       content: "";
-       display: block;
-       height: 100%;
-       position: absolute;
-       left: 10px;
-       top: 0;
-       width: 1px;
-}
-
-.sidebar .format-status .entry-content:before,
-.sidebar .format-status .entry-meta:before {
-       left: 70px;
-}
-
-.format-status .categories-links,
-.format-status .tags-links {
-       display: none;
-}
-
-/* Ensures the dots in the dot background are in lockstep. */
-.format-status .entry-meta:before {
-       background-position: left top;
-}
-
-.format-status .entry-content {
-       color: #f7f5e7;
-       font-size: 24px;
-       font-style: italic;
-       font-weight: 300;
-       padding-bottom: 30px;
-       padding-top: 40px;
-       position: relative;
-}
-
-.format-status .entry-content p:first-child:before {
-       background-color: rgba(0, 0, 0, 0.65);
-       content: "";
-       height: 3px;
-       margin-top: 13px;
-       position: absolute;
-       left: 4px;
-       width: 13px;
-}
-
-.sidebar .format-status .entry-content > p:first-child:before {
-       left: 64px;
-}
-
-.format-status .entry-content p:last-child {
-       margin-bottom: 0;
-}
-
-.format-status .entry-meta {
-       margin-top: 0;
-       padding-bottom: 40px;
-}
-
-.format-status .entry-meta .date a:before {
-       content: "\f105";
-}
-
-/* Video */
-.format-video {
-       background-color: #db572f;
-}
-
-.format-video .entry-content a,
-.format-video .entry-meta a,
-.format-video .entry-content a:hover,
-.format-video .entry-meta a:hover {
-       color: #fbfaf3;
-}
-
-.format-video .entry-title {
-       font-size: 50px;
-       font-weight: 400;
-}
-
-.format-video .entry-meta {
-       color: #220e10;
-}
-
-
-/**
- * 5.6 Attachments
- * ----------------------------------------------------------------------------
- */
-
-.attachment .hentry {
-       background-color: #e8e5ce;
-       margin: 0;
-       padding: 0;
-}
-
-.attachment .entry-header {
-       margin-bottom: 0;
-       max-width: 1040px;
-       padding: 30px 0;
-}
-
-.attachment .entry-title {
-       display: inline-block;
-       float: left;
-       font: 300 italic 30px "Source Sans Pro", Helvetica, sans-serif;
-       margin: 0;
-}
-
-.attachment .entry-title:before {
-       content: "\f416";
-       font-size: 32px;
-       margin-right: 10px;
-}
-
-.attachment .entry-meta {
-       clear: none;
-       color: inherit;
-       float: right;
-       max-width: 604px;
-       padding: 9px 0 0;
-       text-align: right;
-}
-
-.hentry.attachment:not(.image-attachment) .entry-meta {
-       max-width: 104px;
-}
-
-.attachment footer.entry-meta {
-       display: none;
-}
-
-.attachment-meta:before {
-       content: "\f307";
-}
-
-.full-size-link a:before {
-       content: "\f402";
-}
-
-.full-size-link:before {
-       content: none;
-}
-
-.attachment .entry-meta a,
-.attachment .entry-meta .edit-link:before,
-.attachment .full-size-link:before {
-       color: #ca3c08;
-}
-
-.attachment .entry-content {
-       background-color: #fff;
-       max-width: 100%;
-       padding: 40px 0;
-}
-
-.image-navigation {
-       margin: 0 auto;
-       max-width: 1040px;
-       position: relative;
-}
-
-.image-navigation a:hover {
-       text-decoration: none;
-}
-
-.image-navigation .nav-previous,
-.image-navigation .nav-next {
-       position: absolute;
-       top: 50px;
-}
-
-.image-navigation .nav-previous {
-       left: 0;
-}
-
-.image-navigation .nav-next {
-       right: 0;
-}
-
-.image-navigation .meta-nav {
-       font-size: 32px;
-       font-weight: 300;
-       vertical-align: -4px;
-}
-
-.attachment .entry-attachment,
-.attachment .type-attachment p {
-       margin: 0 auto;
-       max-width: 724px;
-       text-align: center;
-}
-
-.attachment .entry-attachment .attachment {
-       display: inline-block;
-}
-
-.attachment .entry-caption {
-       text-align: left;
-}
-
-.attachment .entry-description {
-       margin: 20px auto 0;
-       max-width: 604px;
-}
-
-.attachment .entry-caption p:last-child,
-.attachment .entry-description p:last-child {
-       margin: 0;
-}
-
-.attachment .site-main .sidebar-container {
-       display: none;
-}
-
-.attachment .entry-content .mejs-audio {
-       max-width: 400px;
-       margin: 0 auto;
-}
-
-.attachment .entry-content .wp-video {
-       margin: 0 auto;
-}
-
-.attachment .entry-content .mejs-container {
-       margin-bottom: 24px;
-}
-
-/**
- * 5.7 Post/Paging Navigation
- * ----------------------------------------------------------------------------
- */
-
-.navigation .nav-previous {
-       float: left;
-}
-
-.navigation .nav-next {
-       float: right;
-}
-
-.navigation a {
-       color: #bc360a;
-}
-
-.navigation a:hover {
-       color: #ea9629;
-       text-decoration: none;
-}
-
-.paging-navigation {
-       background-color: #e8e5ce;
-       padding: 40px 0;
-}
-
-.paging-navigation .nav-links {
-       margin: 0 auto;
-       max-width: 604px;
-       width: 100%;
-}
-
-.sidebar .paging-navigation .nav-links {
-       max-width: 1040px;
-       padding: 0 376px 0 60px;
-}
-
-.paging-navigation .nav-next {
-       padding: 13px 0;
-}
-
-.paging-navigation a {
-       font-size: 22px;
-       font-style: italic;
-       font-weight: 300;
-}
-
-.paging-navigation .meta-nav {
-       background-color: #e63f2a;
-       border-radius: 50%;
-       color: #fff;
-       display: inline-block;
-       font-size: 26px;
-       padding: 3px 0 8px;
-       text-align: center;
-       width: 50px;
-}
-
-.paging-navigation .nav-previous .meta-nav {
-       margin-right: 10px;
-       padding: 17px 0 23px;
-       width: 80px;
-}
-
-.paging-navigation .nav-next .meta-nav {
-       margin-left: 10px;
-}
-
-.paging-navigation a:hover .meta-nav {
-       background-color: #ea9629;
-       text-decoration: none;
-}
-
-.post-navigation {
-       background-color: #fff;
-       color: #ca3c08;
-       font-size: 20px;
-       font-style: italic;
-       font-weight: 300;
-       padding: 20px 0;
-}
-
-.post-navigation .nav-links {
-       margin: 0 auto;
-       max-width: 1040px;
-}
-
-.sidebar .post-navigation .nav-links {
-       padding: 0 376px 0 60px;
-}
-
-.post-navigation a[rel="next"] {
-       float: right;
-       text-align: right;
-}
-
-
-/**
- * 5.8 Author Bio
- * ----------------------------------------------------------------------------
- */
-
-.author-info {
-       margin: 0 auto;
-       max-width: 604px;
-       padding: 30px 0 10px;
-       text-align: left; /* gallery & video post formats */
-       width: 100%;
-}
-
-.author.sidebar .author-info {
-       max-width: 1040px;
-       padding: 30px 376px 10px 60px;
-}
-
-.single .author-info {
-       padding: 50px 0 0;
-}
-
-.author-avatar .avatar {
-       float: left;
-       margin: 0 30px 30px 0;
-}
-
-.single-format-status .author-description {
-       color: #f7f5e7;
-}
-
-.author-description .author-title {
-       clear: none;
-       font: 300 italic 20px "Source Sans Pro", Helvetica, sans-serif;
-       margin: 0 0 8px;
-}
-
-.author-link {
-       color: #ca3c08;
-       margin-left: 2px;
-}
-
-.author.archive .author-link {
-       display: none;
-}
-
-
-/**
- * 5.9 Archives
- * ----------------------------------------------------------------------------
- */
-
-.archive-header {
-       background-color: #e8e5ce;
-}
-
-.archive-title,
-.archive-meta {
-       font: 300 italic 30px "Source Sans Pro", Helvetica, sans-serif;
-       margin: 0 auto;
-       max-width: 1040px;
-       padding: 30px 0;
-       width: 100%;
-}
-
-.archive-meta {
-       font-size: 16px;
-       font-style: normal;
-       font-weight: normal;
-       margin-top: -15px;
-       padding: 0 0 11px;
-}
-
-.sidebar .archive-meta {
-       padding-right: 316px;
-}
-
-
-/**
- * 5.10 Search Results/No posts
- * ----------------------------------------------------------------------------
- */
-
-.page-header {
-       background-color: #e8e5ce;
-}
-
-.page-title {
-       font: 300 italic 30px "Source Sans Pro", Helvetica, sans-serif;
-       margin: 0 auto;
-       max-width: 1040px;
-       padding: 30px 0;
-       width: 100%;
-}
-
-.page-content {
-       margin: 0 auto;
-       max-width: 604px;
-       padding: 40px 0;
-       width: 100%;
-}
-
-.sidebar .page-content {
-       margin: 0 auto;
-       max-width: 1040px;
-       padding: 40px 376px 40px 60px;
-}
-
-
-/**
- * 5.11 404
- * ----------------------------------------------------------------------------
- */
-
-.error404 .page-header {
-       background-color: #fff;
-}
-
-.error404 .page-title {
-       line-height: 0.6;
-       margin: 0;
-       padding: 300px;
-       position: relative;
-       text-align: center;
-       width: auto;
-}
-
-.error404 .page-title:before {
-       color: #e8e5ce;
-       content: "\f423";
-       font-size: 964px;
-       line-height: 0.6;
-       overflow: hidden;
-       position: absolute;
-       left: 7px;
-       top: 28px;
-}
-
-.error404 .page-wrapper {
-       background-color: #e8e5ce;
-}
-
-.error404 .page-header,
-.error404 .page-content {
-       margin: 0 auto;
-       max-width: 1040px;
-       padding-bottom: 40px;
-       width: 100%;
-}
-
-
-/**
- * 5.12 Comments
- * ----------------------------------------------------------------------------
- */
-
-.comments-title,
-.comment-list,
-.comment-reply-title,
-.must-log-in,
-.comment-respond .comment-form,
-.comment-respond iframe {
-       display: block;
-       margin-left: auto;
-       margin-right: auto;
-       max-width: 604px;
-       width: 100%;
-}
-
-.sidebar .comments-title,
-.sidebar .comment-list,
-.sidebar .must-log-in,
-.sidebar .comment-reply-title,
-.sidebar .comment-navigation,
-.sidebar .comment-respond .comment-form {
-       max-width: 1040px;
-       padding-left: 60px;
-       padding-right: 376px;
-}
-
-.comments-title {
-       font: 300 italic 28px "Source Sans Pro", Helvetica, sans-serif;
-}
-
-.comment-list,
-.comment-list .children {
-       list-style-type: none;
-       padding: 0;
-}
-
-.comment-list .children {
-       margin-left: 20px;
-}
-
-.comment-list > li:after,
-.comment-list .children > li:before {
-       background: url(images/dotted-line.png) repeat left top;
-       background-size: 4px 4px;
-       content: "";
-       display: block;
-       height: 1px;
-       width: 100%;
-}
-
-.comment-list > li:last-child:after {
-       display: none;
-}
-
-.comment-body {
-       padding: 24px 0;
-       position: relative;
-}
-
-.comment-author {
-       float: left;
-       max-width: 74px;
-}
-
-.comment-author .avatar {
-       display: block;
-       margin-bottom: 10px;
-}
-
-.comment-author .fn {
-       word-wrap: break-word;
-}
-
-.comment-author .fn,
-.comment-author .url,
-.comment-reply-link,
-.comment-reply-login {
-       color: #bc360a;
-       font-size: 14px;
-       font-style: normal;
-       font-weight: normal;
-}
-
-.says {
-       display: none;
-}
-
-.no-avatars .comment-author {
-       margin: 0 0 5px;
-       max-width: 100%;
-       position: relative;
-}
-
-.no-avatars .comment-metadata,
-.no-avatars .comment-content,
-.no-avatars .comment-list .reply {
-       width: 100%;
-}
-
-.bypostauthor > .comment-body .fn:before {
-       content: "\f408";
-       vertical-align: text-top;
-}
-
-.comment-list .edit-link {
-       margin-left: 20px;
-}
-
-.comment-metadata,
-.comment-awaiting-moderation,
-.comment-content,
-.comment-list .reply {
-       float: right;
-       width: 79%;
-       width: -webkit-calc(100% - 124px);
-       width:         calc(100% - 124px);
-       word-wrap: break-word;
-}
-
-.comment-meta,
-.comment-meta a {
-       color: #a2a2a2;
-       font-size: 13px;
-}
-
-.comment-meta a:hover {
-       color: #ea9629;
-}
-
-.comment-metadata {
-       margin-bottom: 20px;
-}
-
-.ping-meta {
-       color: #a2a2a2;
-       font-size: 13px;
-       line-height: 2;
-}
-
-.comment-awaiting-moderation {
-       color: #a2a2a2;
-}
-
-.comment-awaiting-moderation:before {
-       content: "\f414";
-       margin-right: 5px;
-       position: relative;
-       top: -2px;
-}
-
-.comment-reply-link:before,
-.comment-reply-login:before {
-       content: "\f412";
-       margin-right: 3px;
-}
-
-/* Comment form */
-.comment-respond {
-       background-color: #f7f5e7;
-       padding: 30px 0;
-}
-
-.comment .comment-respond {
-       margin-bottom: 20px;
-       padding: 20px;
-}
-
-.comment-reply-title {
-       font: 300 italic 28px "Source Sans Pro", Helvetica, sans-serif;
-}
-
-.comment-reply-title small a {
-       color: #131310;
-       display: inline-block;
-       float: right;
-       height: 16px;
-       overflow: hidden;
-       width: 16px;
-}
-
-.comment-reply-title small a:hover {
-       color: #ed331c;
-       text-decoration: none;
-}
-
-.comment-reply-title small a:before {
-       content: "\f406";
-       vertical-align: top;
-}
-
-.sidebar .comment-list .comment-reply-title,
-.sidebar .comment-list .comment-respond .comment-form {
-       padding: 0;
-}
-
-.comment-form .comment-notes {
-       margin-bottom: 15px;
-}
-
-.comment-form .comment-form-author,
-.comment-form .comment-form-email,
-.comment-form .comment-form-url {
-       margin-bottom: 8px;
-}
-
-.comment-form [for="author"],
-.comment-form [for="email"],
-.comment-form [for="url"],
-.comment-form [for="comment"] {
-       float: left;
-       padding: 5px 0;
-       width: 120px;
-}
-
-.comment-form .required {
-       color: #ed331c;
-}
-
-.comment-form input[type="text"],
-.comment-form input[type="email"],
-.comment-form input[type="url"] {
-       max-width: 270px;
-       width: 60%;
-}
-
-.comment-form textarea {
-       width: 100%;
-}
-
-.form-allowed-tags,
-.form-allowed-tags code {
-       color: #686758;
-       font-size: 12px;
-}
-
-.form-allowed-tags code {
-       font-size: 10px;
-       margin-left: 3px;
-}
-
-.comment-list .pingback,
-.comment-list .trackback {
-       padding-top: 24px;
-}
-
-.comment-navigation {
-       font-size: 20px;
-       font-style: italic;
-       font-weight: 300;
-       margin: 0 auto;
-       max-width: 604px;
-       padding: 20px 0 30px;
-       width: 100%;
-}
-
-.no-comments {
-       background-color: #f7f5e7;
-       font-size: 20px;
-       font-style: italic;
-       font-weight: 300;
-       margin: 0;
-       padding: 40px 0;
-       text-align: center;
-}
-
-.sidebar .no-comments {
-       padding-left: 60px;
-       padding-right: 376px;
-}
-
-
-/**
- * 5.13 Multisite
- * ----------------------------------------------------------------------------
- */
-
-.site-main .mu_register {
-       margin: 0 auto;
-       max-width: 604px;
-       width: 100%;
-}
-
-.mu_alert {
-       margin-top: 25px;
-}
-
-.site-main .mu_register input[type="submit"],
-.site-main .mu_register #blog_title,
-.site-main .mu_register #user_email,
-.site-main .mu_register #blogname,
-.site-main .mu_register #user_name {
-       font-size: inherit;
-       width: 270px;
-}
-
-.site-main .mu_register input[type="submit"] {
-       width: auto;
-}
-
-
-/**
- * 6.0 Sidebar
- * ----------------------------------------------------------------------------
- */
-
-.site-main .widget-area {
-       float: right;
-       width: 300px;
-}
-
-
-/**
- * 6.1 Widgets
- * ----------------------------------------------------------------------------
- */
-
-.widget {
-       background-color: rgba(247, 245, 231, 0.7);
-       font-size: 14px;
-       -webkit-hyphens: auto;
-       -moz-hyphens:    auto;
-       -ms-hyphens:     auto;
-       hyphens:         auto;
-       margin: 0 0 24px;
-       padding: 20px;
-       word-wrap: break-word;
-}
-
-.widget .widget-title {
-       font: 300 italic 20px "Source Sans Pro", Helvetica, sans-serif;
-       margin: 0 0 10px;
-}
-
-.widget ul,
-.widget ol {
-       list-style-type: none;
-       margin: 0;
-       padding: 0;
-}
-
-.widget li {
-       padding: 5px 0;
-}
-
-.widget .children li:last-child {
-       padding-bottom: 0;
-}
-
-.widget li > ul,
-.widget li > ol {
-       margin-left: 20px;
-}
-
-.widget a {
-       color: #bc360a;
-}
-
-.widget a:hover {
-       color: #ea9629;
-}
-
-/* Search widget */
-.search-form .search-submit {
-       display: none;
-}
-
-/* RSS Widget */
-.widget_rss .rss-date {
-       display: block;
-}
-
-.widget_rss .rss-date,
-.widget_rss li > cite {
-       color: #a2a2a2;
-}
-
-/* Calendar Widget */
-.widget_calendar table,
-.widget_calendar td {
-       border: 0;
-       border-collapse: separate;
-       border-spacing: 1px;
-}
-
-.widget_calendar caption {
-       font-size: 14px;
-       margin: 0;
-}
-
-.widget_calendar th,
-.widget_calendar td {
-       padding: 0;
-       text-align: center;
-}
-
-.widget_calendar a {
-       display: block;
-}
-
-.widget_calendar a:hover {
-       background-color: rgba(0, 0, 0, 0.15);
-}
-
-.widget_calendar tbody td {
-       background-color: rgba(255, 255, 255, 0.5);
-}
-
-.site-footer .widget_calendar tbody td {
-       background-color: rgba(255, 255, 255, 0.05);
-}
-
-.widget_calendar tbody .pad, .site-footer .widget_calendar tbody .pad {
-       background-color: transparent;
-}
-
-
-/**
- * 7.0 Footer
- * ----------------------------------------------------------------------------
- */
-
-.site-footer {
-       background-color: #e8e5ce;
-       color: #686758;
-       font-size: 14px;
-       text-align: center;
-}
-
-.site-footer .widget-area,
-.sidebar .site-footer {
-       text-align: left;
-}
-
-.site-footer a {
-       color: #686758;
-}
-
-.site-footer .sidebar-container {
-       background-color: #220e10;
-       padding: 20px 0;
-}
-
-.site-footer .widget-area {
-       margin: 0 auto;
-       max-width: 1040px;
-       width: 100%;
-}
-
-.sidebar .site-footer .widget-area {
-       max-width: 724px;
-       position: relative;
-       left: -158px;
-}
-
-.site-footer .widget {
-       background: transparent;
-       color: #fff;
-       float: left;
-       margin-right: 20px;
-       width: 245px;
-}
-
-.sidebar .site-footer .widget {
-       width: 228px;
-}
-
-.sidebar .site-footer .widget:nth-of-type(4),
-.sidebar .site-footer .widget:nth-of-type(3) {
-       margin-right: 0;
-}
-
-.site-footer .widget a {
-       color: #e6402a;
-}
-
-.site-footer .widget-title,
-.site-footer .widget-title a,
-.site-footer .wp-caption-text {
-       color: #fff;
-}
-
-.site-info {
-       margin: 0 auto;
-       max-width: 1040px;
-       padding: 30px 0;
-       width: 100%;
-}
-
-#wpstats {
-       display: block;
-       margin: -10px auto 0;
-}
-
-
-/**
- * 8.0 Media Queries
- * ----------------------------------------------------------------------------
- */
-
-/* Does the same thing as <meta name="viewport" content="width=device-width">,
- * but in the future W3C standard way. -ms- prefix is required for IE10+ to
- * render responsive styling in Windows 8 "snapped" views; IE10+ does not honor
- * the meta tag. See https://core.trac.wordpress.org/ticket/25888.
- */
-@-ms-viewport {
-       width: device-width;
-}
-@viewport {
-       width: device-width;
-}
-
-@media (max-width: 1599px) {
-       .site {
-               border: 0;
-       }
-}
-
-@media (max-width: 1069px) {
-       .sidebar img.alignleft,
-       .sidebar .wp-caption.alignleft {
-               margin-left: 0;
-       }
-
-       .sidebar img.alignright,
-       .sidebar .wp-caption.alignright {
-               margin-right: 0;
-       }
-
-       .error404 .page-header {
-               margin-left: auto;
-               max-width: 604px;
-               width: 100%;
-       }
-
-       .archive-header,
-       .search .page-header,
-       .archive .page-header,
-       .blog .page-header,
-       .error404 .page-content,
-       .search .page-content,
-       .archive .page-content,
-       .attachment .entry-header,
-       .attachment .entry-content,
-       .post-navigation .nav-links,
-       .sidebar .site-info,
-       .site-footer .widget-area {
-               padding-left: 20px;
-               padding-right: 20px;
-       }
-
-       .error404 .page-title {
-               font-size: 24px;
-               padding: 180px;
-       }
-
-       .error404 .page-title:before {
-               font-size: 554px;
-       }
-
-       .attachment .image-navigation {
-               max-width: 724px;
-       }
-
-       .image-navigation .nav-previous,
-       .image-navigation .nav-next {
-               position: static;
-       }
-
-       .site-main .widget-area {
-               margin-right: 60px;
-       }
-}
-
-@media (max-width: 999px) {
-       .sidebar .entry-header,
-       .sidebar .entry-content,
-       .sidebar .entry-summary,
-       .sidebar .entry-meta,
-       .sidebar .comment-list,
-       .sidebar .comment-reply-title,
-       .sidebar .comment-navigation,
-       .sidebar .comment-respond .comment-form,
-       .sidebar .featured-gallery,
-       .sidebar .post-navigation .nav-links,
-       .author.sidebar .author-info {
-               max-width: 604px;
-               padding-left: 0;
-               padding-right: 0;
-       }
-
-       .sidebar .site-info,
-       .search.sidebar .page-content,
-       .blog.sidebar .page-content,
-       .attachment .entry-header,
-       .sidebar .comments-title {
-               max-width: 604px;
-       }
-
-       .sidebar .archive-meta,
-       .attachment .entry-header,
-       .search.sidebar .page-content,
-       .blog.sidebar .page-content,
-       .sidebar .site-info,
-       .sidebar .comments-title,
-       .sidebar .no-comments {
-               padding-left: 0;
-               padding-right: 0;
-       }
-
-       .attachment .entry-meta {
-               float: left;
-               text-align: left;
-               width: 100%;
-       }
-
-       .attachment .entry-content {
-               max-width: 100%;
-               padding: 40px 0;
-       }
-
-       .format-status .entry-content {
-               padding-top: 40px;
-       }
-
-       .format-status .entry-meta {
-               padding-bottom: 40px;
-       }
-
-       .sidebar .format-status .entry-content,
-       .sidebar .format-status .entry-meta {
-               padding-left: 35px;
-       }
-
-       .sidebar .format-status .entry-content:before,
-       .sidebar .format-status .entry-meta:before {
-               left: 10px;
-       }
-
-       .sidebar .format-status .entry-content p:first-child:before {
-               left: 4px;
-       }
-
-       .sidebar .paging-navigation .nav-links {
-               padding: 0 60px;
-       }
-
-       .site-main .sidebar-container {
-               height: auto;
-               margin: 0 auto;
-               max-width: 604px;
-               position: relative;
-               top: 20px;
-       }
-
-       .site-main .widget-area {
-               float: none;
-               margin: 0;
-               width: 100%;
-       }
-
-       .sidebar .site-footer .widget-area {
-               max-width: 100%;
-               left: 0;
-       }
-}
-
-/* Collapse oversized image and pulled images after iPad breakpoint. */
-@media (max-width: 767px) {
-       .site-header .home-link {
-               min-height: 0;
-       }
-       .site-title {
-               font-size: 36px;
-               padding: 8px 0 10px;
-       }
-       .entry-content img.alignleft,
-       .entry-content .wp-caption.alignleft {
-               margin-left: 0;
-       }
-
-       .entry-content img.alignright,
-       .entry-content .wp-caption.alignright {
-               margin-right: 0;
-       }
-
-       .attachment .image-navigation,
-       .attachment .entry-attachment .attachment {
-               max-width: 604px;
-               padding: 0;
-               width: 100%;
-       }
-
-       .gallery-caption {
-               display: none;
-       }
-}
-
-@media (max-width: 643px) {
-       .site-title {
-               font-size: 30px;
-       }
-
-       #content .entry-header,
-       #content .entry-content,
-       #content .entry-summary,
-       #content footer.entry-meta,
-       #content .featured-gallery,
-       .search.sidebar .page-content,
-       .blog.sidebar .page-content,
-       .sidebar .post-navigation .nav-links,
-       .paging-navigation .nav-links,
-       #content .author-info,
-       .comments-area .comments-title,
-       .comments-area .comment-list,
-       .comments-area .comment-navigation,
-       .comment-respond,
-       .sidebar .site-info,
-       .sidebar .paging-navigation .nav-links {
-               padding-left: 20px;
-               padding-right: 20px;
-       }
-
-       #content .format-status .entry-content,
-       #content .format-status .entry-met {
-               padding-left: 35px;
-       }
-
-       /* Small menu */
-       .menu-toggle {
-               cursor: pointer;
-               display: inline-block;
-               font: bold 16px/1.3 "Source Sans Pro", Helvetica, sans-serif;
-               margin: 0;
-       }
-
-       .menu-toggle,
-       .menu-toggle:hover,
-       .menu-toggle:focus,
-       .menu-toggle:active {
-               background: none;
-               border: none;
-               color: #141412;
-               padding: 12px 0 12px 20px;
-       }
-
-       .menu-toggle:focus {
-               outline: thin dotted;
-       }
-
-       .menu-toggle:after {
-               content: "\f502";
-               font-size: 12px;
-               padding-left: 8px;
-               vertical-align: -4px;
-       }
-
-       .toggled-on .menu-toggle:after {
-               content: "\f500";
-               vertical-align: 2px;
-       }
-
-       .toggled-on .nav-menu,
-       .toggled-on .nav-menu > ul {
-               display: block;
-               margin-left: 0;
-               padding: 0;
-               width: 100%;
-       }
-
-       .toggled-on li,
-       .toggled-on .children {
-               display: block;
-       }
-
-       .toggled-on .nav-menu li > ul {
-               background-color: transparent;
-               display: block;
-               float: none;
-               margin-left: 20px;
-               position: relative;
-               left: auto;
-               top: auto;
-       }
-
-       .toggled-on .nav-menu li > ul a {
-               color: #141412;
-               width: auto;
-       }
-
-       .toggled-on .nav-menu li:hover > a,
-       .toggled-on .nav-menu .children a {
-               background-color: transparent;
-               color: #141412;
-       }
-
-       .toggled-on .nav-menu > li a:hover,
-       .toggled-on .nav-menu > ul a:hover {
-               background-color: #db572f;
-               color: #fff;
-       }
-
-       .toggled-on .nav-menu > li a:focus,
-       .toggled-on .nav-menu > ul a:focus {
-               background-color: #220e10;
-               color: #fff;
-       }
-
-       ul.nav-menu,
-       div.nav-menu > ul {
-               display: none;
-       }
-
-       #content .featured-gallery {
-               padding-left: 24px;
-       }
-
-       .gallery-columns-1 .gallery-item {
-               margin-right: 0;
-               width: 100%;
-       }
-
-       .entry-title,
-       .format-chat .entry-title,
-       .format-image .entry-title,
-       .format-gallery .entry-title,
-       .format-video .entry-title {
-               font-size: 22px;
-               font-weight: bold;
-       }
-
-       .format-quote blockquote,
-       .format-status .entry-content {
-               font-size: 18px;
-       }
-
-       .format-quote blockquote small,
-       .format-quote blockquote cite {
-               font-size: 13px;
-       }
-
-       .error404 .page-title {
-               padding: 40px 0 0;
-       }
-
-       .error404 .page-title:before {
-               content: normal;
-       }
-
-       .comment-author {
-               margin-right: 30px;
-       }
-
-       .comment-author .avatar {
-               height: auto;
-               max-width: 100%;
-       }
-
-       .comment-metadata,
-       .comment-content,
-       .comment-list .reply {
-               width: 70%;
-               width: -webkit-calc(100% - 104px);
-               width:         calc(100% - 104px);
-       }
-
-       .comment-form input[type="text"],
-       .comment-form input[type="email"],
-       .comment-form input[type="url"] {
-               width: -webkit-calc(100% - 120px);
-               width:         calc(100% - 120px);
-       }
-
-       .comment-form textarea {
-               height: 80px; /* Smaller field for mobile. */
-       }
-
-       /* Audio */
-       .format-audio .entry-content:before {
-               display: none;
-       }
-
-       .format-audio .audio-content {
-               background-image: none;
-               float: none;
-               padding-left: 0;
-               width: auto;
-       }
-}
-
-/* Mobile devices */
-@media (max-width: 359px) {
-       .site-title {
-               font-weight: normal;
-       }
-       .site-description {
-           clip: rect(1px, 1px, 1px, 1px);
-           position: absolute;
-       }
-       .gallery {
-               margin-left: 0;
-       }
-
-       .gallery .gallery-item,
-       .gallery-columns-2.gallery-size-thumbnail .gallery-item {
-               max-width: none;
-               width: 49%;
-               width: -webkit-calc(50% - 4px);
-               width:         calc(50% - 4px);
-       }
-
-       .gallery-columns-1.gallery-size-medium,
-       .gallery-columns-1.gallery-size-thumbnail,
-       .gallery-columns-2.gallery-size-thumbnail,
-       .gallery-columns-3.gallery-size-thumbnail {
-               display: block;
-       }
-
-       .gallery-columns-1 .gallery-item,
-       .gallery-columns-1.gallery-size-medium .gallery-item,
-       .gallery-columns-1.gallery-size-thumbnail .gallery-item {
-               text-align: center;
-               width: 98%;
-               width: -webkit-calc(100% - 4px);
-               width:         calc(100% - 4px);
-       }
-
-       .gallery-columns-3 .gallery-item:nth-of-type(3n),
-       .gallery-columns-5 .gallery-item:nth-of-type(5n),
-       .gallery-columns-7 .gallery-item:nth-of-type(7n),
-       .gallery-columns-9 .gallery-item:nth-of-type(9n) {
-               margin-right: 4px;
-       }
-
-       .gallery br {
-               display: none;
-       }
-
-       .gallery .gallery-item:nth-of-type(even) {
-               margin-right: 0;
-       }
-
-       /* Comments */
-       .comment-author {
-               margin: 0 0 5px;
-               max-width: 100%;
-       }
-
-       .comment-author .avatar {
-               display: inline;
-               margin: 0 5px 0 0;
-               max-width: 20px;
-       }
-
-       .comment-metadata,
-       .comment-content,
-       .comment-list .reply {
-               width: 100%;
-       }
-}
-
-
-/**
- * 9.0 Print
- * ----------------------------------------------------------------------------
- */
-
-/* Retina-specific styles. */
-@media print,
-       (-o-min-device-pixel-ratio: 5/4),
-       (-webkit-min-device-pixel-ratio: 1.25),
-       (min-resolution: 120dpi) {
-
-       .site-header .search-field {
-               background-image: url(images/search-icon-2x.png);
-       }
-
-       .format-audio .audio-content,
-       .format-status .entry-content:before,
-       .format-status .entry-meta:before,
-       .comment-list > li:after,
-       .comment-list .children > li:before {
-               background-image: url(images/dotted-line-2x.png);
-       }
-}
-
-@media print {
-       body {
-               background: none !important;
-               color: #000;
-               font-size: 10pt;
-       }
-
-       footer a[rel="bookmark"]:link:after,
-       footer a[rel="bookmark"]:visited:after {
-               content: " [" attr(href) "] "; /* Show URLs */
-       }
-
-       .site {
-               max-width: 98%;
-       }
-
-       .site-header {
-               background-image: none !important;
-       }
-
-       .site-header .home-link {
-               max-width: none;
-               min-height: 0;
-       }
-
-       .site-title {
-               color: #000;
-               font-size: 21pt;
-       }
-
-       .site-description {
-               font-size: 10pt;
-       }
-
-       .author-avatar,
-       .site-footer,
-       .comment-respond,
-       .comments-area .comment-edit-link,
-       .comments-area .reply,
-       .comments-link,
-       .entry-meta .edit-link,
-       .page-links,
-       .site-content nav,
-       .widget-area,
-       .main-navigation,
-       .navbar,
-       .more-link {
-               display: none;
-       }
-
-       .entry-header,
-       .entry-content,
-       .entry-summary,
-       .entry-meta {
-               margin: 0;
-               width: 100%;
-       }
-
-       .page-title,
-       .entry-title {
-               font-size: 21pt;
-       }
-
-       .entry-meta,
-       .entry-meta a {
-               color: #444;
-               font-size: 10pt;
-       }
-
-       .entry-content img.alignleft,
-       .entry-content .wp-caption.alignleft {
-               margin-left: 0;
-       }
-
-       .entry-content img.alignright,
-       .entry-content .wp-caption.alignright {
-               margin-right: 0;
-       }
-
-       .format-image .entry-content .size-full {
-               margin: 0;
-       }
-
-       /* Remove colors from post formats */
-       .hentry {
-               background-color: #fff;
-       }
-
-       /* Comments */
-       .comments-area > li.comment {
-               background: none;
-               position: relative;
-               width: auto;
-       }
-
-       .comment-metadata {
-               float: none;
-       }
-
-       .comment-author .fn,
-       .comment-reply-link,
-       .comment-reply-login {
-               color: #333;
-       }
-}
diff --git a/wp-content/themes/twentythirteen/tag.php b/wp-content/themes/twentythirteen/tag.php
deleted file mode 100644 (file)
index f00180d..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<?php
-/**
- * The template for displaying Tag pages
- *
- * Used to display archive-type pages for posts in a tag.
- *
- * @link https://codex.wordpress.org/Template_Hierarchy
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-
-               <?php if ( have_posts() ) : ?>
-                       <header class="archive-header">
-                               <h1 class="archive-title"><?php printf( __( 'Tag Archives: %s', 'twentythirteen' ), single_tag_title( '', false ) ); ?></h1>
-
-                               <?php if ( tag_description() ) : // Show an optional tag description ?>
-                               <div class="archive-meta"><?php echo tag_description(); ?></div>
-                               <?php endif; ?>
-                       </header><!-- .archive-header -->
-
-                       <?php /* The loop */ ?>
-                       <?php while ( have_posts() ) : the_post(); ?>
-                               <?php get_template_part( 'content', get_post_format() ); ?>
-                       <?php endwhile; ?>
-
-                       <?php twentythirteen_paging_nav(); ?>
-
-               <?php else : ?>
-                       <?php get_template_part( 'content', 'none' ); ?>
-               <?php endif; ?>
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
diff --git a/wp-content/themes/twentythirteen/taxonomy-post_format.php b/wp-content/themes/twentythirteen/taxonomy-post_format.php
deleted file mode 100644 (file)
index 3cf2970..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<?php
-/**
- * The template for displaying Post Format pages
- *
- * Used to display archive-type pages for posts with a post format.
- * If you'd like to further customize these Post Format views, you may create a
- * new template file for each specific one.
- *
- * @link https://codex.wordpress.org/Template_Hierarchy
- *
- * @package WordPress
- * @subpackage Twenty_Thirteen
- * @since Twenty Thirteen 1.0
- */
-
-get_header(); ?>
-
-       <div id="primary" class="content-area">
-               <div id="content" class="site-content" role="main">
-
-               <?php if ( have_posts() ) : ?>
-                       <header class="archive-header">
-                               <h1 class="archive-title"><?php printf( __( '%s Archives', 'twentythirteen' ), '<span>' . esc_html( get_post_format_string( get_post_format() ) ) . '</span>' ); ?></h1>
-                       </header><!-- .archive-header -->
-
-                       <?php /* The loop */ ?>
-                       <?php while ( have_posts() ) : the_post(); ?>
-                               <?php get_template_part( 'content', get_post_format() ); ?>
-                       <?php endwhile; ?>
-
-                       <?php twentythirteen_paging_nav(); ?>
-
-               <?php else : ?>
-                       <?php get_template_part( 'content', 'none' ); ?>
-               <?php endif; ?>
-
-               </div><!-- #content -->
-       </div><!-- #primary -->
-
-<?php get_sidebar(); ?>
-<?php get_footer(); ?>
index d51f500d3f545096dd75a59f07cd724b37ca72dd..88e46e0309b7b9f896a53359db48de7b00a53e73 100644 (file)
@@ -331,6 +331,7 @@ class SimplePie_Parse_Date
                'CCT' => 23400,
                'CDT' => -18000,
                'CEDT' => 7200,
+               'CEST' => 7200,
                'CET' => 3600,
                'CGST' => -7200,
                'CGT' => -10800,
@@ -613,7 +614,7 @@ class SimplePie_Parse_Date
         *
         * @final
         * @access public
-        * @param callback $callback
+        * @param callable $callback
         */
        public function add_callback($callback)
        {
index 0f3b3745a52b88c7cf80b1c21b7201e3e05080d1..76a111158cf706bfcf3bdd00254647737798e8a0 100644 (file)
  * echo $renderer->render($diff);
  * </code>
  *
- * Copyright 2005 Ã–rjan Persson <o@42mm.org>
+ * Copyright 2005 Ã–rjan Persson <o@42mm.org>
  * Copyright 2005-2010 The Horde Project (http://www.horde.org/)
  *
  * See the enclosed file COPYING for license information (LGPL). If you did
  * not receive this file, see http://opensource.org/licenses/lgpl-license.php.
  *
- * @author  Ã–rjan Persson <o@42mm.org>
+ * @author  Ã–rjan Persson <o@42mm.org>
  * @package Text_Diff
  * @since   0.2.0
  */
index de33f54d542bf5ec41ac774a011095a6d075f4c6..2bf56a8630a9479c79af736d6884135f41b82e2e 100644 (file)
@@ -1,8 +1,10 @@
 <?php
 /**
- * Admin Bar
+ * Toolbar API: Top-level Toolbar functionality
  *
- * This code handles the building and rendering of the press bar.
+ * @package WordPress
+ * @subpackage Toolbar
+ * @since 3.1.0
  */
 
 /**
@@ -179,11 +181,18 @@ function wp_admin_bar_sidebar_toggle( $wp_admin_bar ) {
 function wp_admin_bar_my_account_item( $wp_admin_bar ) {
        $user_id      = get_current_user_id();
        $current_user = wp_get_current_user();
-       $profile_url  = get_edit_profile_url( $user_id );
 
        if ( ! $user_id )
                return;
 
+       if ( current_user_can( 'read' ) ) {
+               $profile_url = get_edit_profile_url( $user_id );
+       } elseif ( is_multisite() ) {
+               $profile_url = get_dashboard_url( $user_id, 'profile.php' );
+       } else {
+               $profile_url = false;
+       }
+
        $avatar = get_avatar( $user_id, 26 );
        $howdy  = sprintf( __('Howdy, %1$s'), $current_user->display_name );
        $class  = empty( $avatar ) ? '' : 'with-avatar';
@@ -209,11 +218,18 @@ function wp_admin_bar_my_account_item( $wp_admin_bar ) {
 function wp_admin_bar_my_account_menu( $wp_admin_bar ) {
        $user_id      = get_current_user_id();
        $current_user = wp_get_current_user();
-       $profile_url  = get_edit_profile_url( $user_id );
 
        if ( ! $user_id )
                return;
 
+       if ( current_user_can( 'read' ) ) {
+               $profile_url = get_edit_profile_url( $user_id );
+       } elseif ( is_multisite() ) {
+               $profile_url = get_dashboard_url( $user_id, 'profile.php' );
+       } else {
+               $profile_url = false;
+       }
+
        $wp_admin_bar->add_group( array(
                'parent' => 'my-account',
                'id'     => 'user-actions',
@@ -234,12 +250,16 @@ function wp_admin_bar_my_account_menu( $wp_admin_bar ) {
                        'tabindex' => -1,
                ),
        ) );
-       $wp_admin_bar->add_menu( array(
-               'parent' => 'user-actions',
-               'id'     => 'edit-profile',
-               'title'  => __( 'Edit My Profile' ),
-               'href' => $profile_url,
-       ) );
+
+       if ( false !== $profile_url ) {
+               $wp_admin_bar->add_menu( array(
+                       'parent' => 'user-actions',
+                       'id'     => 'edit-profile',
+                       'title'  => __( 'Edit My Profile' ),
+                       'href'   => $profile_url,
+               ) );
+       }
+
        $wp_admin_bar->add_menu( array(
                'parent' => 'user-actions',
                'id'     => 'logout',
@@ -281,7 +301,7 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) {
        $wp_admin_bar->add_menu( array(
                'id'    => 'site-name',
                'title' => $title,
-               'href'  => is_admin() ? home_url( '/' ) : admin_url(),
+               'href'  => ( is_admin() || ! current_user_can( 'read' ) ) ? home_url( '/' ) : admin_url(),
        ) );
 
        // Create submenu items.
@@ -304,7 +324,7 @@ function wp_admin_bar_site_menu( $wp_admin_bar ) {
                        ) );
                }
 
-       } else {
+       } else if ( current_user_can( 'read' ) ) {
                // We're on the front end, link to the Dashboard.
                $wp_admin_bar->add_menu( array(
                        'parent' => 'site-name',
@@ -416,6 +436,12 @@ function wp_admin_bar_my_sites_menu( $wp_admin_bar ) {
                        'title'  => __( 'Plugins' ),
                        'href'   => network_admin_url( 'plugins.php' ),
                ) );
+               $wp_admin_bar->add_menu( array(
+                       'parent' => 'network-admin',
+                       'id'     => 'network-admin-o',
+                       'title'  => __( 'Settings' ),
+                       'href'   => network_admin_url( 'settings.php' ),
+               ) );
        }
 
        // Add site links
@@ -512,7 +538,7 @@ function wp_admin_bar_shortlink_menu( $wp_admin_bar ) {
  *
  * @since 3.1.0
  *
- * @global object   $tag
+ * @global WP_Term  $tag
  * @global WP_Query $wp_the_query
  *
  * @param WP_Admin_Bar $wp_admin_bar
@@ -532,9 +558,8 @@ function wp_admin_bar_edit_menu( $wp_admin_bar ) {
                        && ( $post_type_object->show_in_admin_bar ) )
                {
                        if ( 'draft' == $post->post_status ) {
-                               $preview_link = set_url_scheme( get_permalink( $post->ID ) );
-                               /** This filter is documented in wp-admin/includes/meta-boxes.php */
-                               $preview_link = apply_filters( 'preview_post_link', add_query_arg( 'preview', 'true', $preview_link ), $post );
+                               $draft_link = set_url_scheme( get_permalink( $post->ID ) );
+                               $preview_link = get_preview_post_link( $post, array(), $draft_link );
                                $wp_admin_bar->add_menu( array(
                                        'id' => 'preview',
                                        'title' => $post_type_object->labels->view_item,
@@ -568,7 +593,7 @@ function wp_admin_bar_edit_menu( $wp_admin_bar ) {
                if ( ! empty( $current_object->post_type )
                        && ( $post_type_object = get_post_type_object( $current_object->post_type ) )
                        && current_user_can( 'edit_post', $current_object->ID )
-                       && $post_type_object->show_ui && $post_type_object->show_in_admin_bar
+                       && $post_type_object->show_in_admin_bar
                        && $edit_post_link = get_edit_post_link( $current_object->ID ) )
                {
                        $wp_admin_bar->add_menu( array(
@@ -579,7 +604,6 @@ function wp_admin_bar_edit_menu( $wp_admin_bar ) {
                } elseif ( ! empty( $current_object->taxonomy )
                        && ( $tax = get_taxonomy( $current_object->taxonomy ) )
                        && current_user_can( $tax->cap->edit_terms )
-                       && $tax->show_ui
                        && $edit_term_link = get_edit_term_link( $current_object->term_id, $current_object->taxonomy ) )
                {
                        $wp_admin_bar->add_menu( array(
@@ -881,6 +905,10 @@ function is_admin_bar_showing() {
        if ( defined('XMLRPC_REQUEST') || defined('DOING_AJAX') || defined('IFRAME_REQUEST') )
                return false;
 
+       if ( is_embed() ) {
+               return false;
+       }
+
        // Integrated into the admin.
        if ( is_admin() )
                return true;
index 36d08bc81e9efafcda5825eba6ee4a7d25184a21..54ad8cada1314e138e9da5b91f56a9f7ffeff2a8 100644 (file)
@@ -56,12 +56,23 @@ function get_the_author($deprecated = '') {
  * @return string|null The author's display name, from get_the_author().
  */
 function the_author( $deprecated = '', $deprecated_echo = true ) {
-       if ( !empty( $deprecated ) )
+       if ( ! empty( $deprecated ) ) {
                _deprecated_argument( __FUNCTION__, '2.1' );
-       if ( $deprecated_echo !== true )
-               _deprecated_argument( __FUNCTION__, '1.5', __('Use <code>get_the_author()</code> instead if you do not want the value echoed.') );
-       if ( $deprecated_echo )
+       }
+
+       if ( true !== $deprecated_echo ) {
+               _deprecated_argument( __FUNCTION__, '1.5',
+                       /* translators: %s: get_the_author() */
+                       sprintf( __( 'Use %s instead if you do not want the value echoed.' ),
+                               '<code>get_the_author()</code>'
+                       )
+               );
+       }
+
+       if ( $deprecated_echo ) {
                echo get_the_author();
+       }
+
        return get_the_author();
 }
 
@@ -223,23 +234,17 @@ function the_author_posts() {
 }
 
 /**
- * Display an HTML link to the author page of the author of the current post.
+ * Retrieves an HTML link to the author page of the current post's author.
  *
- * Does just echo get_author_posts_url() function, like the others do. The
- * reason for this, is that another function is used to help in printing the
- * link to the author's posts.
+ * Returns an HTML-formatted link using get_author_posts_url().
  *
- * @link https://codex.wordpress.org/Template_Tags/the_author_posts_link
- * @since 1.2.0
+ * @since 4.4.0
  *
  * @global object $authordata The current author's DB object.
  *
- * @param string $deprecated Deprecated.
+ * @return string An HTML link to the author page.
  */
-function the_author_posts_link($deprecated = '') {
-       if ( !empty( $deprecated ) )
-               _deprecated_argument( __FUNCTION__, '2.1' );
-
+function get_the_author_posts_link() {
        global $authordata;
        if ( ! is_object( $authordata ) ) {
                return;
@@ -259,7 +264,22 @@ function the_author_posts_link($deprecated = '') {
         *
         * @param string $link HTML link.
         */
-       echo apply_filters( 'the_author_posts_link', $link );
+       return apply_filters( 'the_author_posts_link', $link );
+}
+
+/**
+ * Displays an HTML link to the author page of the current post's author.
+ *
+ * @since 1.2.0
+ * @since 4.4.0 Converted into a wrapper for get_the_author_posts_link()
+ *
+ * @param string $deprecated Unused.
+ */
+function the_author_posts_link( $deprecated = '' ) {
+       if ( ! empty( $deprecated ) ) {
+               _deprecated_argument( __FUNCTION__, '2.1' );
+       }
+       echo get_the_author_posts_link();
 }
 
 /**
@@ -310,7 +330,7 @@ function get_author_posts_url($author_id, $author_nicename = '') {
  *
  * @since 1.2.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string|array $args {
  *     Optional. Array or string of default arguments.
@@ -444,7 +464,7 @@ function wp_list_authors( $args = '' ) {
  *
  * @since 3.2.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @return bool Whether or not we have more than one author
  */
index d89ac7416cc1bef5963c6f1360e8526bfb713beb..9ee0dcddda20a21f190894d9bbc930f5b259b848 100644 (file)
  *
  * @since 2.0.0
  *
- * @global WP_Object_Cache $wp_object_cache
- *
- * @param int|string $key The cache key to use for retrieval later
- * @param mixed $data The data to add to the cache store
- * @param string $group The group to add the cache to
- * @param int $expire When the cache data should be expired
- * @return bool False if cache key and group already exist, true on success
+ * @see WP_Object_Cache::add()
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
+ *
+ * @param int|string $key    The cache key to use for retrieval later.
+ * @param mixed      $data   The data to add to the cache.
+ * @param string     $group  Optional. The group to add the cache to. Enables the same key
+ *                           to be used across groups. Default empty.
+ * @param int        $expire Optional. When the cache data should expire, in seconds.
+ *                           Default 0 (no expiration).
+ * @return bool False if cache key and group already exist, true on success.
  */
 function wp_cache_add( $key, $data, $group = '', $expire = 0 ) {
        global $wp_object_cache;
@@ -31,28 +34,30 @@ function wp_cache_add( $key, $data, $group = '', $expire = 0 ) {
  * Closes the cache.
  *
  * This function has ceased to do anything since WordPress 2.5. The
- * functionality was removed along with the rest of the persistent cache. This
- * does not mean that plugins can't implement this function when they need to
- * make sure that the cache is cleaned up after WordPress no longer needs it.
+ * functionality was removed along with the rest of the persistent cache.
+ *
+ * This does not mean that plugins can't implement this function when they need
+ * to make sure that the cache is cleaned up after WordPress no longer needs it.
  *
  * @since 2.0.0
  *
- * @return true Always returns True
+ * @return true Always returns true.
  */
 function wp_cache_close() {
        return true;
 }
 
 /**
- * Decrement numeric cache item's value
+ * Decrements numeric cache item's value.
  *
  * @since 3.3.0
  *
- * @global WP_Object_Cache $wp_object_cache
+ * @see WP_Object_Cache::decr()
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
  *
- * @param int|string $key The cache key to increment
- * @param int $offset The amount by which to decrement the item's value. Default is 1.
- * @param string $group The group the key is in.
+ * @param int|string $key    The cache key to decrement.
+ * @param int        $offset Optional. The amount by which to decrement the item's value. Default 1.
+ * @param string     $group  Optional. The group the key is in. Default empty.
  * @return false|int False on failure, the item's new value on success.
  */
 function wp_cache_decr( $key, $offset = 1, $group = '' ) {
@@ -66,13 +71,14 @@ function wp_cache_decr( $key, $offset = 1, $group = '' ) {
  *
  * @since 2.0.0
  *
- * @global WP_Object_Cache $wp_object_cache
+ * @see WP_Object_Cache::delete()
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
  *
- * @param int|string $key What the contents in the cache are called
- * @param string $group Where the cache contents are grouped
- * @return bool True on successful removal, false on failure
+ * @param int|string $key   What the contents in the cache are called.
+ * @param string     $group Optional. Where the cache contents are grouped. Default empty.
+ * @return bool True on successful removal, false on failure.
  */
-function wp_cache_delete($key, $group = '') {
+function wp_cache_delete( $key, $group = '' ) {
        global $wp_object_cache;
 
        return $wp_object_cache->delete($key, $group);
@@ -83,7 +89,8 @@ function wp_cache_delete($key, $group = '') {
  *
  * @since 2.0.0
  *
- * @global WP_Object_Cache $wp_object_cache
+ * @see WP_Object_Cache::flush()
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
  *
  * @return bool False on failure, true on success
  */
@@ -98,12 +105,15 @@ function wp_cache_flush() {
  *
  * @since 2.0.0
  *
- * @global WP_Object_Cache $wp_object_cache
+ * @see WP_Object_Cache::get()
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
  *
- * @param int|string $key What the contents in the cache are called
- * @param string $group Where the cache contents are grouped
- * @param bool $force Whether to force an update of the local cache from the persistent cache (default is false)
- * @param bool &$found Whether key was found in the cache. Disambiguates a return of false, a storable value.
+ * @param int|string  $key    The key under which the cache contents are stored.
+ * @param string      $group  Optional. Where the cache contents are grouped. Default empty.
+ * @param bool        $force  Optional. Whether to force an update of the local cache from the persistent
+ *                            cache. Default false.
+ * @param bool        &$found Optional. Whether the key was found in the cache. Disambiguates a return of false,
+ *                            a storable value. Passed by reference. Default null.
  * @return bool|mixed False on failure to retrieve contents or the cache
  *                           contents on success
  */
@@ -118,11 +128,12 @@ function wp_cache_get( $key, $group = '', $force = false, &$found = null ) {
  *
  * @since 3.3.0
  *
- * @global WP_Object_Cache $wp_object_cache
+ * @see WP_Object_Cache::incr()
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
  *
- * @param int|string $key The cache key to increment
- * @param int $offset The amount by which to increment the item's value. Default is 1.
- * @param string $group The group the key is in.
+ * @param int|string $key    The key for the cache contents that should be incremented.
+ * @param int        $offset Optional. The amount by which to increment the item's value. Default 1.
+ * @param string     $group  Optional. The group the key is in. Default empty.
  * @return false|int False on failure, the item's new value on success.
  */
 function wp_cache_incr( $key, $offset = 1, $group = '' ) {
@@ -147,13 +158,16 @@ function wp_cache_init() {
  *
  * @since 2.0.0
  *
- * @global WP_Object_Cache $wp_object_cache
+ * @see WP_Object_Cache::replace()
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
  *
- * @param int|string $key What to call the contents in the cache
- * @param mixed $data The contents to store in the cache
- * @param string $group Where to group the cache contents
- * @param int $expire When to expire the cache contents
- * @return bool False if not exists, true if contents were replaced
+ * @param int|string $key    The key for the cache data that should be replaced.
+ * @param mixed      $data   The new data to store in the cache.
+ * @param string     $group  Optional. The group for the cache data that should be replaced.
+ *                           Default empty.
+ * @param int        $expire Optional. When to expire the cache contents, in seconds.
+ *                           Default 0 (no expiration).
+ * @return bool False if original value does not exist, true if contents were replaced
  */
 function wp_cache_replace( $key, $data, $group = '', $expire = 0 ) {
        global $wp_object_cache;
@@ -164,14 +178,19 @@ function wp_cache_replace( $key, $data, $group = '', $expire = 0 ) {
 /**
  * Saves the data to the cache.
  *
+ * Differs from wp_cache_add() and wp_cache_replace() in that it will always write data.
+ *
  * @since 2.0.0
  *
- * @global WP_Object_Cache $wp_object_cache
+ * @see WP_Object_Cache::set()
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
  *
- * @param int|string $key What to call the contents in the cache
- * @param mixed $data The contents to store in the cache
- * @param string $group Where to group the cache contents
- * @param int $expire When to expire the cache contents
+ * @param int|string $key    The cache key to use for retrieval later.
+ * @param mixed      $data   The contents to store in the cache.
+ * @param string     $group  Optional. Where to group the cache contents. Enables the same key
+ *                           to be used across groups. Default empty.
+ * @param int        $expire Optional. When to expire the cache contents, in seconds.
+ *                           Default 0 (no expiration).
  * @return bool False on failure, true on success
  */
 function wp_cache_set( $key, $data, $group = '', $expire = 0 ) {
@@ -181,15 +200,16 @@ function wp_cache_set( $key, $data, $group = '', $expire = 0 ) {
 }
 
 /**
- * Switch the interal blog id.
+ * Switches the interal blog ID.
  *
  * This changes the blog id used to create keys in blog specific groups.
  *
  * @since 3.5.0
  *
- * @global WP_Object_Cache $wp_object_cache
+ * @see WP_Object_Cache::switch_to_blog()
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
  *
- * @param int $blog_id Blog ID
+ * @param int $blog_id Blog ID.
  */
 function wp_cache_switch_to_blog( $blog_id ) {
        global $wp_object_cache;
@@ -202,9 +222,10 @@ function wp_cache_switch_to_blog( $blog_id ) {
  *
  * @since 2.6.0
  *
- * @global WP_Object_Cache $wp_object_cache
+ * @see WP_Object_Cache::add_global_groups()
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
  *
- * @param string|array $groups A group or an array of groups to add
+ * @param string|array $groups A group or an array of groups to add.
  */
 function wp_cache_add_global_groups( $groups ) {
        global $wp_object_cache;
@@ -217,17 +238,18 @@ function wp_cache_add_global_groups( $groups ) {
  *
  * @since 2.6.0
  *
- * @param string|array $groups A group or an array of groups to add
+ * @param string|array $groups A group or an array of groups to add.
  */
 function wp_cache_add_non_persistent_groups( $groups ) {
        // Default cache doesn't persist so nothing to do here.
 }
 
 /**
- * Reset internal cache keys and structures. If the cache backend uses global
- * blog or site IDs as part of its cache keys, this function instructs the
- * backend to reset those keys and perform any cleanup since blog or site IDs
- * have changed since cache init.
+ * Reset internal cache keys and structures.
+ *
+ * If the cache backend uses global blog or site IDs as part of its cache keys,
+ * this function instructs the backend to reset those keys and perform any cleanup
+ * since blog or site IDs have changed since cache init.
  *
  * This function is deprecated. Use wp_cache_switch_to_blog() instead of this
  * function when preparing the cache for a blog switch. For clearing the cache
@@ -236,9 +258,10 @@ function wp_cache_add_non_persistent_groups( $groups ) {
  * high.
  *
  * @since 2.6.0
- * @deprecated 3.5.0
+ * @deprecated 3.5.0 WP_Object_Cache::reset()
+ * @see WP_Object_Cache::reset()
  *
- * @global WP_Object_Cache $wp_object_cache
+ * @global WP_Object_Cache $wp_object_cache Object cache global instance.
  */
 function wp_cache_reset() {
        _deprecated_function( __FUNCTION__, '3.5' );
@@ -249,7 +272,7 @@ function wp_cache_reset() {
 }
 
 /**
- * WordPress Object Cache
+ * Core class that implements an object cache.
  *
  * The WordPress Object Cache is used to save on trips to the database. The
  * Object Cache stores all of the cache data to memory and makes the cache
@@ -267,11 +290,11 @@ function wp_cache_reset() {
 class WP_Object_Cache {
 
        /**
-        * Holds the cached objects
+        * Holds the cached objects.
         *
-        * @var array
-        * @access private
         * @since 2.0.0
+        * @access private
+        * @var array
         */
        private $cache = array();
 
@@ -285,43 +308,43 @@ class WP_Object_Cache {
        private $cache_hits = 0;
 
        /**
-        * Amount of times the cache did not have the request in cache
+        * Amount of times the cache did not have the request in cache.
         *
-        * @var int
-        * @access public
         * @since 2.0.0
+        * @access public
+        * @var int
         */
        public $cache_misses = 0;
 
        /**
-        * List of global groups
+        * List of global cache groups.
         *
-        * @var array
-        * @access protected
         * @since 3.0.0
+        * @access protected
+        * @var array
         */
        protected $global_groups = array();
 
        /**
         * The blog prefix to prepend to keys in non-global groups.
         *
-        * @var int
-        * @access private
         * @since 3.5.0
+        * @access private
+        * @var int
         */
        private $blog_prefix;
 
        /**
-        * Holds the value of `is_multisite()`
+        * Holds the value of is_multisite().
         *
-        * @var bool
-        * @access private
         * @since 3.5.0
+        * @access private
+        * @var bool
         */
        private $multisite;
 
        /**
-        * Make private properties readable for backwards compatibility.
+        * Makes private properties readable for backwards compatibility.
         *
         * @since 4.0.0
         * @access public
@@ -334,7 +357,7 @@ class WP_Object_Cache {
        }
 
        /**
-        * Make private properties settable for backwards compatibility.
+        * Makes private properties settable for backwards compatibility.
         *
         * @since 4.0.0
         * @access public
@@ -348,7 +371,7 @@ class WP_Object_Cache {
        }
 
        /**
-        * Make private properties checkable for backwards compatibility.
+        * Makes private properties checkable for backwards compatibility.
         *
         * @since 4.0.0
         * @access public
@@ -361,7 +384,7 @@ class WP_Object_Cache {
        }
 
        /**
-        * Make private properties un-settable for backwards compatibility.
+        * Makes private properties un-settable for backwards compatibility.
         *
         * @since 4.0.0
         * @access public
@@ -375,16 +398,17 @@ class WP_Object_Cache {
        /**
         * Adds data to the cache if it doesn't already exist.
         *
-        * @uses WP_Object_Cache::_exists Checks to see if the cache already has data.
-        * @uses WP_Object_Cache::set Sets the data after the checking the cache
-        *              contents existence.
-        *
         * @since 2.0.0
+        * @access public
         *
-        * @param int|string $key What to call the contents in the cache
-        * @param mixed $data The contents to store in the cache
-        * @param string $group Where to group the cache contents
-        * @param int $expire When to expire the cache contents
+        * @uses WP_Object_Cache::_exists() Checks to see if the cache already has data.
+        * @uses WP_Object_Cache::set()     Sets the data after the checking the cache
+        *                                          contents existence.
+        *
+        * @param int|string $key    What to call the contents in the cache.
+        * @param mixed      $data   The contents to store in the cache.
+        * @param string     $group  Optional. Where to group the cache contents. Default 'default'.
+        * @param int        $expire Optional. When to expire the cache contents. Default 0 (no expiration).
         * @return bool False if cache key and group already exist, true on success
         */
        public function add( $key, $data, $group = 'default', $expire = 0 ) {
@@ -405,9 +429,10 @@ class WP_Object_Cache {
        }
 
        /**
-        * Sets the list of global groups.
+        * Sets the list of global cache groups.
         *
         * @since 3.0.0
+        * @access public
         *
         * @param array $groups List of groups that are global.
         */
@@ -419,13 +444,14 @@ class WP_Object_Cache {
        }
 
        /**
-        * Decrement numeric cache item's value
+        * Decrements numeric cache item's value.
         *
         * @since 3.3.0
+        * @access public
         *
-        * @param int|string $key The cache key to increment
-        * @param int $offset The amount by which to decrement the item's value. Default is 1.
-        * @param string $group The group the key is in.
+        * @param int|string $key    The cache key to decrement.
+        * @param int        $offset Optional. The amount by which to decrement the item's value. Default 1.
+        * @param string     $group  Optional. The group the key is in. Default 'default'.
         * @return false|int False on failure, the item's new value on success.
         */
        public function decr( $key, $offset = 1, $group = 'default' ) {
@@ -452,17 +478,17 @@ class WP_Object_Cache {
        }
 
        /**
-        * Remove the contents of the cache key in the group
+        * Removes the contents of the cache key in the group.
         *
         * If the cache key does not exist in the group, then nothing will happen.
         *
         * @since 2.0.0
+        * @access public
         *
-        * @param int|string $key What the contents in the cache are called
-        * @param string $group Where the cache contents are grouped
-        * @param bool $deprecated Deprecated.
-        *
-        * @return bool False if the contents weren't deleted and true on success
+        * @param int|string $key        What the contents in the cache are called.
+        * @param string     $group      Optional. Where the cache contents are grouped. Default 'default'.
+        * @param bool       $deprecated Optional. Unused. Default false.
+        * @return bool False if the contents weren't deleted and true on success.
         */
        public function delete( $key, $group = 'default', $deprecated = false ) {
                if ( empty( $group ) )
@@ -479,11 +505,12 @@ class WP_Object_Cache {
        }
 
        /**
-        * Clears the object cache of all data
+        * Clears the object cache of all data.
         *
         * @since 2.0.0
+        * @access public
         *
-        * @return true Always returns true
+        * @return true Always returns true.
         */
        public function flush() {
                $this->cache = array();
@@ -492,7 +519,7 @@ class WP_Object_Cache {
        }
 
        /**
-        * Retrieves the cache contents, if it exists
+        * Retrieves the cache contents, if it exists.
         *
         * The contents will be first attempted to be retrieved by searching by the
         * key in the cache group. If the cache is hit (success) then the contents
@@ -501,12 +528,15 @@ class WP_Object_Cache {
         * On failure, the number of cache misses will be incremented.
         *
         * @since 2.0.0
+        * @access public
         *
-        * @param int|string $key What the contents in the cache are called
-        * @param string $group Where the cache contents are grouped
-        * @param string $force Whether to force a refetch rather than relying on the local cache (default is false)
-        * @return false|mixed False on failure to retrieve contents or the cache
-        *                             contents on success
+        * @param int|string $key    What the contents in the cache are called.
+        * @param string     $group  Optional. Where the cache contents are grouped. Default 'default'.
+        * @param string     $force  Optional. Unused. Whether to force a refetch rather than relying on the local
+        *                           cache. Default false.
+        * @param bool       &$found Optional. Whether the key was found in the cache. Disambiguates a return of
+        *                           false, a storable value. Passed by reference. Default null.
+        * @return false|mixed False on failure to retrieve contents or the cache contents on success.
         */
        public function get( $key, $group = 'default', $force = false, &$found = null ) {
                if ( empty( $group ) )
@@ -530,13 +560,14 @@ class WP_Object_Cache {
        }
 
        /**
-        * Increment numeric cache item's value
+        * Increments numeric cache item's value.
         *
         * @since 3.3.0
+        * @access public
         *
-        * @param int|string $key The cache key to increment
-        * @param int $offset The amount by which to increment the item's value. Default is 1.
-        * @param string $group The group the key is in.
+        * @param int|string $key    The cache key to increment
+        * @param int        $offset Optional. The amount by which to increment the item's value. Default 1.
+        * @param string     $group  Optional. The group the key is in. Default 'default'.
         * @return false|int False on failure, the item's new value on success.
         */
        public function incr( $key, $offset = 1, $group = 'default' ) {
@@ -563,16 +594,18 @@ class WP_Object_Cache {
        }
 
        /**
-        * Replace the contents in the cache, if contents already exist
+        * Replaces the contents in the cache, if contents already exist.
         *
         * @since 2.0.0
+        * @access public
+        *
         * @see WP_Object_Cache::set()
         *
-        * @param int|string $key What to call the contents in the cache
-        * @param mixed $data The contents to store in the cache
-        * @param string $group Where to group the cache contents
-        * @param int $expire When to expire the cache contents
-        * @return bool False if not exists, true if contents were replaced
+        * @param int|string $key    What to call the contents in the cache.
+        * @param mixed      $data   The contents to store in the cache.
+        * @param string     $group  Optional. Where to group the cache contents. Default 'default'.
+        * @param int        $expire Optional. When to expire the cache contents. Default 0 (no expiration).
+        * @return bool False if not exists, true if contents were replaced.
         */
        public function replace( $key, $data, $group = 'default', $expire = 0 ) {
                if ( empty( $group ) )
@@ -589,10 +622,13 @@ class WP_Object_Cache {
        }
 
        /**
-        * Reset keys
+        * Resets cache keys.
         *
         * @since 3.0.0
-        * @deprecated 3.5.0
+        * @access public
+        *
+        * @deprecated 3.5.0 Use switch_to_blog()
+        * @see switch_to_blog()
         */
        public function reset() {
                _deprecated_function( __FUNCTION__, '3.5', 'switch_to_blog()' );
@@ -605,7 +641,7 @@ class WP_Object_Cache {
        }
 
        /**
-        * Sets the data contents into the cache
+        * Sets the data contents into the cache.
         *
         * The cache contents is grouped by the $group parameter followed by the
         * $key. This allows for duplicate ids in unique groups. Therefore, naming of
@@ -617,12 +653,13 @@ class WP_Object_Cache {
         * more for cache plugins which use files.
         *
         * @since 2.0.0
+        * @access public
         *
-        * @param int|string $key What to call the contents in the cache
-        * @param mixed $data The contents to store in the cache
-        * @param string $group Where to group the cache contents
-        * @param int $expire Not Used
-        * @return true Always returns true
+        * @param int|string $key    What to call the contents in the cache.
+        * @param mixed      $data   The contents to store in the cache.
+        * @param string     $group  Optional. Where to group the cache contents. Default 'default'.
+        * @param int        $expire Not Used.
+        * @return true Always returns true.
         */
        public function set( $key, $data, $group = 'default', $expire = 0 ) {
                if ( empty( $group ) )
@@ -645,6 +682,7 @@ class WP_Object_Cache {
         * key and the data.
         *
         * @since 2.0.0
+        * @access public
         */
        public function stats() {
                echo "<p>";
@@ -653,19 +691,20 @@ class WP_Object_Cache {
                echo "</p>";
                echo '<ul>';
                foreach ($this->cache as $group => $cache) {
-                       echo "<li><strong>Group:</strong> $group - ( " . number_format( strlen( serialize( $cache ) ) / 1024, 2 ) . 'k )</li>';
+                       echo "<li><strong>Group:</strong> $group - ( " . number_format( strlen( serialize( $cache ) ) / KB_IN_BYTES, 2 ) . 'k )</li>';
                }
                echo '</ul>';
        }
 
        /**
-        * Switch the interal blog id.
+        * Switches the interal blog ID.
         *
-        * This changes the blog id used to create keys in blog specific groups.
+        * This changes the blog ID used to create keys in blog specific groups.
         *
         * @since 3.5.0
+        * @access public
         *
-        * @param int $blog_id Blog ID
+        * @param int $blog_id Blog ID.
         */
        public function switch_to_blog( $blog_id ) {
                $blog_id = (int) $blog_id;
@@ -673,25 +712,25 @@ class WP_Object_Cache {
        }
 
        /**
-        * Utility function to determine whether a key exists in the cache.
+        * Serves as a utility function to determine whether a key exists in the cache.
         *
         * @since 3.4.0
-        *
         * @access protected
-        * @param string $key
-        * @param string $group
-        * @return bool
+        *
+        * @param int|string $key   Cache key to check for existence.
+        * @param string     $group Cache group for the key existence check.
+        * @return bool Whether the key exists in the cache for the given group.
         */
        protected function _exists( $key, $group ) {
                return isset( $this->cache[ $group ] ) && ( isset( $this->cache[ $group ][ $key ] ) || array_key_exists( $key, $this->cache[ $group ] ) );
        }
 
        /**
-        * Sets up object properties; PHP 5 style constructor
+        * Sets up object properties; PHP 5 style constructor.
         *
         * @since 2.0.8
         *
-     * @global int $blog_id
+     * @global int $blog_id Global blog ID.
         */
        public function __construct() {
                global $blog_id;
@@ -708,13 +747,13 @@ class WP_Object_Cache {
        }
 
        /**
-        * Will save the object cache before object is completely destroyed.
+        * Saves the object cache before object is completely destroyed.
         *
         * Called upon object destruction, which should be when PHP ends.
         *
-        * @since  2.0.8
+        * @since 2.0.8
         *
-        * @return true True value. Won't be used by PHP
+        * @return true Always returns true.
         */
        public function __destruct() {
                return true;
index f75a72eea39197a5297f0633118bf9470ceaae9b..cacbdaadfe33ed86a100520a4193453e55bbf456 100644 (file)
@@ -31,7 +31,7 @@
  * @global WP_Rewrite $wp_rewrite
  * @global bool $is_IIS
  * @global WP_Query $wp_query
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $requested_url Optional. The URL that was requested, used to
  *             figure if redirect is needed.
@@ -39,7 +39,7 @@
  * @return string|void The string of the URL, if redirect needed.
  */
 function redirect_canonical( $requested_url = null, $do_redirect = true ) {
-       global $wp_rewrite, $is_IIS, $wp_query, $wpdb;
+       global $wp_rewrite, $is_IIS, $wp_query, $wpdb, $wp;
 
        if ( isset( $_SERVER['REQUEST_METHOD'] ) && ! in_array( strtoupper( $_SERVER['REQUEST_METHOD'] ), array( 'GET', 'HEAD' ) ) ) {
                return;
@@ -59,7 +59,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                return;
        }
 
-       if ( !$requested_url ) {
+       if ( ! $requested_url && isset( $_SERVER['HTTP_HOST'] ) ) {
                // build the URL in the address bar
                $requested_url  = is_ssl() ? 'https://' : 'http://';
                $requested_url .= $_SERVER['HTTP_HOST'];
@@ -67,14 +67,9 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
        }
 
        $original = @parse_url($requested_url);
-       if ( false === $original )
+       if ( false === $original ) {
                return;
-
-       // Some PHP setups turn requests for / into /index.php in REQUEST_URI
-       // See: https://core.trac.wordpress.org/ticket/5017
-       // See: https://core.trac.wordpress.org/ticket/7173
-       // Disabled, for now:
-       // $original['path'] = preg_replace('|/index\.php$|', '/', $original['path']);
+       }
 
        $redirect = $original;
        $redirect_url = false;
@@ -122,7 +117,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                $id = max( get_query_var('p'), get_query_var('page_id'), get_query_var('attachment_id') );
                if ( $id && $redirect_post = get_post($id) ) {
                        $post_type_obj = get_post_type_object($redirect_post->post_type);
-                       if ( $post_type_obj->public ) {
+                       if ( $post_type_obj->public && 'auto-draft' != $redirect_post->post_status ) {
                                $redirect_url = get_permalink($redirect_post);
                                $redirect['query'] = _remove_qs_args_if_not_in_url( $redirect['query'], array( 'p', 'page_id', 'attachment_id', 'pagename', 'name', 'post_type' ), $redirect_url );
                        }
@@ -148,11 +143,26 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                        }
                }
 
+               if ( get_query_var( 'page' ) && $wp_query->post &&
+                       false !== strpos( $wp_query->post->post_content, '<!--nextpage-->' ) ) {
+                       $redirect['path'] = rtrim( $redirect['path'], (int) get_query_var( 'page' ) . '/' );
+                       $redirect['query'] = remove_query_arg( 'page', $redirect['query'] );
+                       $redirect_url = get_permalink( $wp_query->post->ID );
+               }
+
        } elseif ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) {
                // rewriting of old ?p=X, ?m=2004, ?m=200401, ?m=20040101
-               if ( is_attachment() && !empty($_GET['attachment_id']) && ! $redirect_url ) {
-                       if ( $redirect_url = get_attachment_link(get_query_var('attachment_id')) )
-                               $redirect['query'] = remove_query_arg('attachment_id', $redirect['query']);
+               if ( is_attachment() &&
+                       ! array_diff( array_keys( $wp->query_vars ), array( 'attachment', 'attachment_id' ) ) &&
+                       ! $redirect_url ) {
+                       if ( ! empty( $_GET['attachment_id'] ) ) {
+                               $redirect_url = get_attachment_link( get_query_var( 'attachment_id' ) );
+                               if ( $redirect_url ) {
+                                       $redirect['query'] = remove_query_arg( 'attachment_id', $redirect['query'] );
+                               }
+                       } else {
+                               $redirect_url = get_attachment_link();
+                       }
                } elseif ( is_single() && !empty($_GET['p']) && ! $redirect_url ) {
                        if ( $redirect_url = get_permalink(get_query_var('p')) )
                                $redirect['query'] = remove_query_arg(array('p', 'post_type'), $redirect['query']);
@@ -308,7 +318,10 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                                }
                        }
 
-                       if ( get_option('page_comments') && ( ( 'newest' == get_option('default_comments_page') && get_query_var('cpage') > 0 ) || ( 'newest' != get_option('default_comments_page') && get_query_var('cpage') > 1 ) ) ) {
+                       if ( get_option( 'page_comments' ) && (
+                               ( 'newest' == get_option( 'default_comments_page' ) && get_query_var( 'cpage' ) > 0 ) ||
+                               ( 'newest' != get_option( 'default_comments_page' ) && get_query_var( 'cpage' ) > 1 )
+                       ) ) {
                                $addl_path = ( !empty( $addl_path ) ? trailingslashit($addl_path) : '' ) . user_trailingslashit( $wp_rewrite->comments_pagination_base . '-' . get_query_var('cpage'), 'commentpaged' );
                                $redirect['query'] = remove_query_arg( 'cpage', $redirect['query'] );
                        }
@@ -326,7 +339,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
                                /** This filter is documented in wp-login.php */
                                $redirect_url = apply_filters( 'wp_signup_location', network_site_url( 'wp-signup.php' ) );
                        } else {
-                               $redirect_url = site_url( 'wp-login.php?action=register' );
+                               $redirect_url = wp_registration_url();
                        }
 
                        wp_redirect( $redirect_url, 301 );
@@ -476,7 +489,7 @@ function redirect_canonical( $requested_url = null, $do_redirect = true ) {
        $redirect_url = apply_filters( 'redirect_canonical', $redirect_url, $requested_url );
 
        // yes, again -- in case the filter aborted the request
-       if ( ! $redirect_url || $redirect_url == $requested_url ) {
+       if ( ! $redirect_url || strip_fragment_from_url( $redirect_url ) == strip_fragment_from_url( $requested_url ) ) {
                return;
        }
 
@@ -521,18 +534,42 @@ function _remove_qs_args_if_not_in_url( $query_string, Array $args_to_check, $ur
        return $query_string;
 }
 
+/**
+ * Strips the #fragment from a URL, if one is present.
+ *
+ * @since 4.4.0
+ *
+ * @param string $url The URL to strip.
+ * @return string The altered URL.
+ */
+function strip_fragment_from_url( $url ) {
+       $parsed_url = @parse_url( $url );
+       if ( ! empty( $parsed_url['host'] ) ) {
+               // This mirrors code in redirect_canonical(). It does not handle every case.
+               $url = $parsed_url['scheme'] . '://' . $parsed_url['host'];
+               if ( ! empty( $parsed_url['port'] ) ) {
+                       $url .= ':' . $parsed_url['port'];
+               }
+               $url .= $parsed_url['path'];
+               if ( ! empty( $parsed_url['query'] ) ) {
+                       $url .= '?' . $parsed_url['query'];
+               }
+       }
+
+       return $url;
+}
+
 /**
  * Attempts to guess the correct URL based on query vars
  *
  * @since 2.3.0
  *
  * @global wpdb $wpdb WordPress database abstraction object.
- * @global WP_Rewrite $wp_rewrite
  *
  * @return false|string The correct URL if one is found. False on failure.
  */
 function redirect_guess_404_permalink() {
-       global $wpdb, $wp_rewrite;
+       global $wpdb;
 
        if ( get_query_var('name') ) {
                $where = $wpdb->prepare("post_name LIKE %s", $wpdb->esc_like( get_query_var('name') ) . '%');
@@ -555,7 +592,7 @@ function redirect_guess_404_permalink() {
                        return false;
                if ( get_query_var( 'feed' ) )
                        return get_post_comments_feed_link( $post_id, get_query_var( 'feed' ) );
-               elseif ( get_query_var( 'page' ) )
+               elseif ( get_query_var( 'page' ) && 1 < get_query_var( 'page' ) )
                        return trailingslashit( get_permalink( $post_id ) ) . user_trailingslashit( get_query_var( 'page' ), 'single_paged' );
                else
                        return get_permalink( $post_id );
@@ -591,7 +628,7 @@ function wp_redirect_admin_locations() {
                site_url( 'login', 'relative' ),
        );
        if ( in_array( untrailingslashit( $_SERVER['REQUEST_URI'] ), $logins ) ) {
-               wp_redirect( site_url( 'wp-login.php', 'login' ) );
+               wp_redirect( wp_login_url() );
                exit;
        }
 }
index 42133f6febe2732465c234941f4daa6d1ddb0c9e..7c570c4a1ddfb5a502bb8582c6a3f7c7683e51fc 100644 (file)
 <?php
 /**
- * WordPress Roles and Capabilities.
+ * Core User Role & Capabilities API
  *
  * @package WordPress
- * @subpackage User
+ * @subpackage Users
  */
 
-/**
- * WordPress User Roles.
- *
- * The role option is simple, the structure is organized by role name that store
- * the name in value of the 'name' key. The capabilities are stored as an array
- * in the value of the 'capability' key.
- *
- *     array (
- *             'rolename' => array (
- *                     'name' => 'rolename',
- *                     'capabilities' => array()
- *             )
- *     )
- *
- * @since 2.0.0
- * @package WordPress
- * @subpackage User
- */
-class WP_Roles {
-       /**
-        * List of roles and capabilities.
-        *
-        * @since 2.0.0
-        * @access public
-        * @var array
-        */
-       public $roles;
-
-       /**
-        * List of the role objects.
-        *
-        * @since 2.0.0
-        * @access public
-        * @var array
-        */
-       public $role_objects = array();
-
-       /**
-        * List of role names.
-        *
-        * @since 2.0.0
-        * @access public
-        * @var array
-        */
-       public $role_names = array();
-
-       /**
-        * Option name for storing role list.
-        *
-        * @since 2.0.0
-        * @access public
-        * @var string
-        */
-       public $role_key;
-
-       /**
-        * Whether to use the database for retrieval and storage.
-        *
-        * @since 2.1.0
-        * @access public
-        * @var bool
-        */
-       public $use_db = true;
-
-       /**
-        * Constructor
-        *
-        * @since 2.0.0
-        */
-       public function __construct() {
-               $this->_init();
-       }
-
-       /**
-        * Make private/protected methods readable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param callable $name      Method to call.
-        * @param array    $arguments Arguments to pass when calling.
-        * @return mixed|false Return value of the callback, false otherwise.
-        */
-       public function __call( $name, $arguments ) {
-               if ( '_init' === $name ) {
-                       return call_user_func_array( array( $this, $name ), $arguments );
-               }
-               return false;
-       }
-
-       /**
-        * Set up the object properties.
-        *
-        * The role key is set to the current prefix for the $wpdb object with
-        * 'user_roles' appended. If the $wp_user_roles global is set, then it will
-        * be used and the role option will not be updated or used.
-        *
-        * @since 2.1.0
-        * @access protected
-        *
-        * @global wpdb  $wpdb          WordPress database abstraction object.
-        * @global array $wp_user_roles Used to set the 'roles' property value.
-        */
-       protected function _init() {
-               global $wpdb, $wp_user_roles;
-               $this->role_key = $wpdb->get_blog_prefix() . 'user_roles';
-               if ( ! empty( $wp_user_roles ) ) {
-                       $this->roles = $wp_user_roles;
-                       $this->use_db = false;
-               } else {
-                       $this->roles = get_option( $this->role_key );
-               }
-
-               if ( empty( $this->roles ) )
-                       return;
-
-               $this->role_objects = array();
-               $this->role_names =  array();
-               foreach ( array_keys( $this->roles ) as $role ) {
-                       $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] );
-                       $this->role_names[$role] = $this->roles[$role]['name'];
-               }
-       }
-
-       /**
-        * Reinitialize the object
-        *
-        * Recreates the role objects. This is typically called only by switch_to_blog()
-        * after switching wpdb to a new blog ID.
-        *
-        * @since 3.5.0
-        * @access public
-        *
-        * @global wpdb $wpdb
-        */
-       public function reinit() {
-               // There is no need to reinit if using the wp_user_roles global.
-               if ( ! $this->use_db )
-                       return;
-
-               global $wpdb;
-
-               // Duplicated from _init() to avoid an extra function call.
-               $this->role_key = $wpdb->get_blog_prefix() . 'user_roles';
-               $this->roles = get_option( $this->role_key );
-               if ( empty( $this->roles ) )
-                       return;
-
-               $this->role_objects = array();
-               $this->role_names =  array();
-               foreach ( array_keys( $this->roles ) as $role ) {
-                       $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] );
-                       $this->role_names[$role] = $this->roles[$role]['name'];
-               }
-       }
-
-       /**
-        * Add role name with capabilities to list.
-        *
-        * Updates the list of roles, if the role doesn't already exist.
-        *
-        * The capabilities are defined in the following format `array( 'read' => true );`
-        * To explicitly deny a role a capability you set the value for that capability to false.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $role Role name.
-        * @param string $display_name Role display name.
-        * @param array $capabilities List of role capabilities in the above format.
-        * @return WP_Role|void WP_Role object, if role is added.
-        */
-       public function add_role( $role, $display_name, $capabilities = array() ) {
-               if ( isset( $this->roles[$role] ) )
-                       return;
-
-               $this->roles[$role] = array(
-                       'name' => $display_name,
-                       'capabilities' => $capabilities
-                       );
-               if ( $this->use_db )
-                       update_option( $this->role_key, $this->roles );
-               $this->role_objects[$role] = new WP_Role( $role, $capabilities );
-               $this->role_names[$role] = $display_name;
-               return $this->role_objects[$role];
-       }
-
-       /**
-        * Remove role by name.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $role Role name.
-        */
-       public function remove_role( $role ) {
-               if ( ! isset( $this->role_objects[$role] ) )
-                       return;
-
-               unset( $this->role_objects[$role] );
-               unset( $this->role_names[$role] );
-               unset( $this->roles[$role] );
-
-               if ( $this->use_db )
-                       update_option( $this->role_key, $this->roles );
-
-               if ( get_option( 'default_role' ) == $role )
-                       update_option( 'default_role', 'subscriber' );
-       }
-
-       /**
-        * Add capability to role.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $role Role name.
-        * @param string $cap Capability name.
-        * @param bool $grant Optional, default is true. Whether role is capable of performing capability.
-        */
-       public function add_cap( $role, $cap, $grant = true ) {
-               if ( ! isset( $this->roles[$role] ) )
-                       return;
-
-               $this->roles[$role]['capabilities'][$cap] = $grant;
-               if ( $this->use_db )
-                       update_option( $this->role_key, $this->roles );
-       }
-
-       /**
-        * Remove capability from role.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $role Role name.
-        * @param string $cap Capability name.
-        */
-       public function remove_cap( $role, $cap ) {
-               if ( ! isset( $this->roles[$role] ) )
-                       return;
-
-               unset( $this->roles[$role]['capabilities'][$cap] );
-               if ( $this->use_db )
-                       update_option( $this->role_key, $this->roles );
-       }
-
-       /**
-        * Retrieve role object by name.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $role Role name.
-        * @return WP_Role|null WP_Role object if found, null if the role does not exist.
-        */
-       public function get_role( $role ) {
-               if ( isset( $this->role_objects[$role] ) )
-                       return $this->role_objects[$role];
-               else
-                       return null;
-       }
-
-       /**
-        * Retrieve list of role names.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @return array List of role names.
-        */
-       public function get_names() {
-               return $this->role_names;
-       }
-
-       /**
-        * Whether role name is currently in the list of available roles.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $role Role name to look up.
-        * @return bool
-        */
-       public function is_role( $role ) {
-               return isset( $this->role_names[$role] );
-       }
-}
-
-/**
- * WordPress Role class.
- *
- * @since 2.0.0
- * @package WordPress
- * @subpackage User
- */
-class WP_Role {
-       /**
-        * Role name.
-        *
-        * @since 2.0.0
-        * @access public
-        * @var string
-        */
-       public $name;
-
-       /**
-        * List of capabilities the role contains.
-        *
-        * @since 2.0.0
-        * @access public
-        * @var array
-        */
-       public $capabilities;
-
-       /**
-        * Constructor - Set up object properties.
-        *
-        * The list of capabilities, must have the key as the name of the capability
-        * and the value a boolean of whether it is granted to the role.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $role Role name.
-        * @param array $capabilities List of capabilities.
-        */
-       public function __construct( $role, $capabilities ) {
-               $this->name = $role;
-               $this->capabilities = $capabilities;
-       }
-
-       /**
-        * Assign role a capability.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $cap Capability name.
-        * @param bool $grant Whether role has capability privilege.
-        */
-       public function add_cap( $cap, $grant = true ) {
-               $this->capabilities[$cap] = $grant;
-               wp_roles()->add_cap( $this->name, $cap, $grant );
-       }
-
-       /**
-        * Remove capability from role.
-        *
-        * This is a container for {@link WP_Roles::remove_cap()} to remove the
-        * capability from the role. That is to say, that {@link
-        * WP_Roles::remove_cap()} implements the functionality, but it also makes
-        * sense to use this class, because you don't need to enter the role name.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $cap Capability name.
-        */
-       public function remove_cap( $cap ) {
-               unset( $this->capabilities[$cap] );
-               wp_roles()->remove_cap( $this->name, $cap );
-       }
-
-       /**
-        * Whether role has capability.
-        *
-        * The capabilities is passed through the 'role_has_cap' filter. The first
-        * parameter for the hook is the list of capabilities the class has
-        * assigned. The second parameter is the capability name to look for. The
-        * third and final parameter for the hook is the role name.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $cap Capability name.
-        * @return bool True, if user has capability. False, if doesn't have capability.
-        */
-       public function has_cap( $cap ) {
-               /**
-                * Filter which capabilities a role has.
-                *
-                * @since 2.0.0
-                *
-                * @param array  $capabilities Array of role capabilities.
-                * @param string $cap          Capability name.
-                * @param string $name         Role name.
-                */
-               $capabilities = apply_filters( 'role_has_cap', $this->capabilities, $cap, $this->name );
-               if ( !empty( $capabilities[$cap] ) )
-                       return $capabilities[$cap];
-               else
-                       return false;
-       }
-
-}
-
-/**
- * WordPress User class.
- *
- * @since 2.0.0
- * @package WordPress
- * @subpackage User
- *
- * @property string $nickname
- * @property string $user_description
- * @property string $user_firstname
- * @property string $user_lastname
- * @property string $user_login
- * @property string $user_pass
- * @property string $user_nicename
- * @property string $user_email
- * @property string $user_url
- * @property string $user_registered
- * @property string $user_activation_key
- * @property string $user_status
- * @property string $display_name
- * @property string $spam
- * @property string $deleted
- */
-class WP_User {
-       /**
-        * User data container.
-        *
-        * @since 2.0.0
-        * @var object
-        */
-       public $data;
-
-       /**
-        * The user's ID.
-        *
-        * @since 2.1.0
-        * @access public
-        * @var int
-        */
-       public $ID = 0;
-
-       /**
-        * The individual capabilities the user has been given.
-        *
-        * @since 2.0.0
-        * @access public
-        * @var array
-        */
-       public $caps = array();
-
-       /**
-        * User metadata option name.
-        *
-        * @since 2.0.0
-        * @access public
-        * @var string
-        */
-       public $cap_key;
-
-       /**
-        * The roles the user is part of.
-        *
-        * @since 2.0.0
-        * @access public
-        * @var array
-        */
-       public $roles = array();
-
-       /**
-        * All capabilities the user has, including individual and role based.
-        *
-        * @since 2.0.0
-        * @access public
-        * @var array
-        */
-       public $allcaps = array();
-
-       /**
-        * The filter context applied to user data fields.
-        *
-        * @since 2.9.0
-        * @access private
-        * @var string
-        */
-       var $filter = null;
-
-       /**
-        * @static
-        * @access private
-        * @var array
-        */
-       private static $back_compat_keys;
-
-       /**
-        * Constructor
-        *
-        * Retrieves the userdata and passes it to {@link WP_User::init()}.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @global wpdb $wpdb
-        *
-        * @param int|string|stdClass|WP_User $id User's ID, a WP_User object, or a user object from the DB.
-        * @param string $name Optional. User's username
-        * @param int $blog_id Optional Blog ID, defaults to current blog.
-        */
-       public function __construct( $id = 0, $name = '', $blog_id = '' ) {
-               if ( ! isset( self::$back_compat_keys ) ) {
-                       $prefix = $GLOBALS['wpdb']->prefix;
-                       self::$back_compat_keys = array(
-                               'user_firstname' => 'first_name',
-                               'user_lastname' => 'last_name',
-                               'user_description' => 'description',
-                               'user_level' => $prefix . 'user_level',
-                               $prefix . 'usersettings' => $prefix . 'user-settings',
-                               $prefix . 'usersettingstime' => $prefix . 'user-settings-time',
-                       );
-               }
-
-               if ( $id instanceof WP_User ) {
-                       $this->init( $id->data, $blog_id );
-                       return;
-               } elseif ( is_object( $id ) ) {
-                       $this->init( $id, $blog_id );
-                       return;
-               }
-
-               if ( ! empty( $id ) && ! is_numeric( $id ) ) {
-                       $name = $id;
-                       $id = 0;
-               }
-
-               if ( $id ) {
-                       $data = self::get_data_by( 'id', $id );
-               } else {
-                       $data = self::get_data_by( 'login', $name );
-               }
-
-               if ( $data ) {
-                       $this->init( $data, $blog_id );
-               } else {
-                       $this->data = new stdClass;
-               }
-       }
-
-       /**
-        * Sets up object properties, including capabilities.
-        *
-        * @param object $data User DB row object
-        * @param int $blog_id Optional. The blog id to initialize for
-        */
-       public function init( $data, $blog_id = '' ) {
-               $this->data = $data;
-               $this->ID = (int) $data->ID;
-
-               $this->for_blog( $blog_id );
-       }
-
-       /**
-        * Return only the main user fields
-        *
-        * @since 3.3.0
-        *
-        * @static
-        *
-        * @global wpdb $wpdb
-        *
-        * @param string $field The field to query against: 'id', 'slug', 'email' or 'login'
-        * @param string|int $value The field value
-        * @return object|false Raw user object
-        */
-       public static function get_data_by( $field, $value ) {
-               global $wpdb;
-
-               if ( 'id' == $field ) {
-                       // Make sure the value is numeric to avoid casting objects, for example,
-                       // to int 1.
-                       if ( ! is_numeric( $value ) )
-                               return false;
-                       $value = intval( $value );
-                       if ( $value < 1 )
-                               return false;
-               } else {
-                       $value = trim( $value );
-               }
-
-               if ( !$value )
-                       return false;
-
-               switch ( $field ) {
-                       case 'id':
-                               $user_id = $value;
-                               $db_field = 'ID';
-                               break;
-                       case 'slug':
-                               $user_id = wp_cache_get($value, 'userslugs');
-                               $db_field = 'user_nicename';
-                               break;
-                       case 'email':
-                               $user_id = wp_cache_get($value, 'useremail');
-                               $db_field = 'user_email';
-                               break;
-                       case 'login':
-                               $value = sanitize_user( $value );
-                               $user_id = wp_cache_get($value, 'userlogins');
-                               $db_field = 'user_login';
-                               break;
-                       default:
-                               return false;
-               }
-
-               if ( false !== $user_id ) {
-                       if ( $user = wp_cache_get( $user_id, 'users' ) )
-                               return $user;
-               }
-
-               if ( !$user = $wpdb->get_row( $wpdb->prepare(
-                       "SELECT * FROM $wpdb->users WHERE $db_field = %s", $value
-               ) ) )
-                       return false;
-
-               update_user_caches( $user );
-
-               return $user;
-       }
-
-       /**
-        * Makes private/protected methods readable for backwards compatibility.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @param callable $name      Method to call.
-        * @param array    $arguments Arguments to pass when calling.
-        * @return mixed|false Return value of the callback, false otherwise.
-        */
-       public function __call( $name, $arguments ) {
-               if ( '_init_caps' === $name ) {
-                       return call_user_func_array( array( $this, $name ), $arguments );
-               }
-               return false;
-       }
-
-       /**
-        * Magic method for checking the existence of a certain custom field
-        *
-        * @since 3.3.0
-        * @param string $key
-        * @return bool
-        */
-       public function __isset( $key ) {
-               if ( 'id' == $key ) {
-                       _deprecated_argument( 'WP_User->id', '2.1', __( 'Use <code>WP_User->ID</code> instead.' ) );
-                       $key = 'ID';
-               }
-
-               if ( isset( $this->data->$key ) )
-                       return true;
-
-               if ( isset( self::$back_compat_keys[ $key ] ) )
-                       $key = self::$back_compat_keys[ $key ];
-
-               return metadata_exists( 'user', $this->ID, $key );
-       }
-
-       /**
-        * Magic method for accessing custom fields
-        *
-        * @since 3.3.0
-        * @param string $key
-        * @return mixed
-        */
-       public function __get( $key ) {
-               if ( 'id' == $key ) {
-                       _deprecated_argument( 'WP_User->id', '2.1', __( 'Use <code>WP_User->ID</code> instead.' ) );
-                       return $this->ID;
-               }
-
-               if ( isset( $this->data->$key ) ) {
-                       $value = $this->data->$key;
-               } else {
-                       if ( isset( self::$back_compat_keys[ $key ] ) )
-                               $key = self::$back_compat_keys[ $key ];
-                       $value = get_user_meta( $this->ID, $key, true );
-               }
-
-               if ( $this->filter ) {
-                       $value = sanitize_user_field( $key, $value, $this->ID, $this->filter );
-               }
-
-               return $value;
-       }
-
-       /**
-        * Magic method for setting custom fields
-        *
-        * @since 3.3.0
-        */
-       public function __set( $key, $value ) {
-               if ( 'id' == $key ) {
-                       _deprecated_argument( 'WP_User->id', '2.1', __( 'Use <code>WP_User->ID</code> instead.' ) );
-                       $this->ID = $value;
-                       return;
-               }
-
-               $this->data->$key = $value;
-       }
-
-       /**
-        * Determine whether the user exists in the database.
-        *
-        * @since 3.4.0
-        * @access public
-        *
-        * @return bool True if user exists in the database, false if not.
-        */
-       public function exists() {
-               return ! empty( $this->ID );
-       }
-
-       /**
-        * Retrieve the value of a property or meta key.
-        *
-        * Retrieves from the users and usermeta table.
-        *
-        * @since 3.3.0
-        *
-        * @param string $key Property
-        * @return mixed
-        */
-       public function get( $key ) {
-               return $this->__get( $key );
-       }
-
-       /**
-        * Determine whether a property or meta key is set
-        *
-        * Consults the users and usermeta tables.
-        *
-        * @since 3.3.0
-        *
-        * @param string $key Property
-        * @return bool
-        */
-       public function has_prop( $key ) {
-               return $this->__isset( $key );
-       }
-
-       /**
-        * Return an array representation.
-        *
-        * @since 3.5.0
-        *
-        * @return array Array representation.
-        */
-       public function to_array() {
-               return get_object_vars( $this->data );
-       }
-
-       /**
-        * Set up capability object properties.
-        *
-        * Will set the value for the 'cap_key' property to current database table
-        * prefix, followed by 'capabilities'. Will then check to see if the
-        * property matching the 'cap_key' exists and is an array. If so, it will be
-        * used.
-        *
-        * @access protected
-        * @since 2.1.0
-        *
-        * @global wpdb $wpdb
-        *
-        * @param string $cap_key Optional capability key
-        */
-       protected function _init_caps( $cap_key = '' ) {
-               global $wpdb;
-
-               if ( empty($cap_key) )
-                       $this->cap_key = $wpdb->get_blog_prefix() . 'capabilities';
-               else
-                       $this->cap_key = $cap_key;
-
-               $this->caps = get_user_meta( $this->ID, $this->cap_key, true );
-
-               if ( ! is_array( $this->caps ) )
-                       $this->caps = array();
-
-               $this->get_role_caps();
-       }
-
-       /**
-        * Retrieve all of the role capabilities and merge with individual capabilities.
-        *
-        * All of the capabilities of the roles the user belongs to are merged with
-        * the users individual roles. This also means that the user can be denied
-        * specific roles that their role might have, but the specific user isn't
-        * granted permission to.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @return array List of all capabilities for the user.
-        */
-       public function get_role_caps() {
-               $wp_roles = wp_roles();
-
-               //Filter out caps that are not role names and assign to $this->roles
-               if ( is_array( $this->caps ) )
-                       $this->roles = array_filter( array_keys( $this->caps ), array( $wp_roles, 'is_role' ) );
-
-               //Build $allcaps from role caps, overlay user's $caps
-               $this->allcaps = array();
-               foreach ( (array) $this->roles as $role ) {
-                       $the_role = $wp_roles->get_role( $role );
-                       $this->allcaps = array_merge( (array) $this->allcaps, (array) $the_role->capabilities );
-               }
-               $this->allcaps = array_merge( (array) $this->allcaps, (array) $this->caps );
-
-               return $this->allcaps;
-       }
-
-       /**
-        * Add role to user.
-        *
-        * Updates the user's meta data option with capabilities and roles.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $role Role name.
-        */
-       public function add_role( $role ) {
-               $this->caps[$role] = true;
-               update_user_meta( $this->ID, $this->cap_key, $this->caps );
-               $this->get_role_caps();
-               $this->update_user_level_from_caps();
-
-               /**
-                * Fires immediately after the user has been given a new role.
-                *
-                * @since 4.3.0
-                *
-                * @param int    $user_id The user ID.
-                * @param string $role    The new role.
-                */
-               do_action( 'add_user_role', $this->ID, $role );
-       }
-
-       /**
-        * Remove role from user.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $role Role name.
-        */
-       public function remove_role( $role ) {
-               if ( !in_array($role, $this->roles) )
-                       return;
-               unset( $this->caps[$role] );
-               update_user_meta( $this->ID, $this->cap_key, $this->caps );
-               $this->get_role_caps();
-               $this->update_user_level_from_caps();
-
-               /**
-                * Fires immediately after a role as been removed from a user.
-                *
-                * @since 4.3.0
-                *
-                * @param int    $user_id The user ID.
-                * @param string $role    The removed role.
-                */
-               do_action( 'remove_user_role', $this->ID, $role );
-       }
-
-       /**
-        * Set the role of the user.
-        *
-        * This will remove the previous roles of the user and assign the user the
-        * new one. You can set the role to an empty string and it will remove all
-        * of the roles from the user.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $role Role name.
-        */
-       public function set_role( $role ) {
-               if ( 1 == count( $this->roles ) && $role == current( $this->roles ) )
-                       return;
-
-               foreach ( (array) $this->roles as $oldrole )
-                       unset( $this->caps[$oldrole] );
-
-               $old_roles = $this->roles;
-               if ( !empty( $role ) ) {
-                       $this->caps[$role] = true;
-                       $this->roles = array( $role => true );
-               } else {
-                       $this->roles = false;
-               }
-               update_user_meta( $this->ID, $this->cap_key, $this->caps );
-               $this->get_role_caps();
-               $this->update_user_level_from_caps();
-
-               /**
-                * Fires after the user's role has changed.
-                *
-                * @since 2.9.0
-                * @since 3.6.0 Added $old_roles to include an array of the user's previous roles.
-                *
-                * @param int    $user_id   The user ID.
-                * @param string $role      The new role.
-                * @param array  $old_roles An array of the user's previous roles.
-                */
-               do_action( 'set_user_role', $this->ID, $role, $old_roles );
-       }
-
-       /**
-        * Choose the maximum level the user has.
-        *
-        * Will compare the level from the $item parameter against the $max
-        * parameter. If the item is incorrect, then just the $max parameter value
-        * will be returned.
-        *
-        * Used to get the max level based on the capabilities the user has. This
-        * is also based on roles, so if the user is assigned the Administrator role
-        * then the capability 'level_10' will exist and the user will get that
-        * value.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param int $max Max level of user.
-        * @param string $item Level capability name.
-        * @return int Max Level.
-        */
-       public function level_reduction( $max, $item ) {
-               if ( preg_match( '/^level_(10|[0-9])$/i', $item, $matches ) ) {
-                       $level = intval( $matches[1] );
-                       return max( $max, $level );
-               } else {
-                       return $max;
-               }
-       }
-
-       /**
-        * Update the maximum user level for the user.
-        *
-        * Updates the 'user_level' user metadata (includes prefix that is the
-        * database table prefix) with the maximum user level. Gets the value from
-        * the all of the capabilities that the user has.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @global wpdb $wpdb
-        */
-       public function update_user_level_from_caps() {
-               global $wpdb;
-               $this->user_level = array_reduce( array_keys( $this->allcaps ), array( $this, 'level_reduction' ), 0 );
-               update_user_meta( $this->ID, $wpdb->get_blog_prefix() . 'user_level', $this->user_level );
-       }
-
-       /**
-        * Add capability and grant or deny access to capability.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $cap Capability name.
-        * @param bool $grant Whether to grant capability to user.
-        */
-       public function add_cap( $cap, $grant = true ) {
-               $this->caps[$cap] = $grant;
-               update_user_meta( $this->ID, $this->cap_key, $this->caps );
-               $this->get_role_caps();
-               $this->update_user_level_from_caps();
-       }
-
-       /**
-        * Remove capability from user.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string $cap Capability name.
-        */
-       public function remove_cap( $cap ) {
-               if ( ! isset( $this->caps[ $cap ] ) ) {
-                       return;
-               }
-               unset( $this->caps[ $cap ] );
-               update_user_meta( $this->ID, $this->cap_key, $this->caps );
-               $this->get_role_caps();
-               $this->update_user_level_from_caps();
-       }
-
-       /**
-        * Remove all of the capabilities of the user.
-        *
-        * @since 2.1.0
-        * @access public
-        *
-        * @global wpdb $wpdb
-        */
-       public function remove_all_caps() {
-               global $wpdb;
-               $this->caps = array();
-               delete_user_meta( $this->ID, $this->cap_key );
-               delete_user_meta( $this->ID, $wpdb->get_blog_prefix() . 'user_level' );
-               $this->get_role_caps();
-       }
-
-       /**
-        * Whether user has capability or role name.
-        *
-        * This is useful for looking up whether the user has a specific role
-        * assigned to the user. The second optional parameter can also be used to
-        * check for capabilities against a specific object, such as a post or user.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param string|int $cap Capability or role name to search.
-        * @return bool True, if user has capability; false, if user does not have capability.
-        */
-       public function has_cap( $cap ) {
-               if ( is_numeric( $cap ) ) {
-                       _deprecated_argument( __FUNCTION__, '2.0', __('Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead.') );
-                       $cap = $this->translate_level_to_cap( $cap );
-               }
-
-               $args = array_slice( func_get_args(), 1 );
-               $args = array_merge( array( $cap, $this->ID ), $args );
-               $caps = call_user_func_array( 'map_meta_cap', $args );
-
-               // Multisite super admin has all caps by definition, Unless specifically denied.
-               if ( is_multisite() && is_super_admin( $this->ID ) ) {
-                       if ( in_array('do_not_allow', $caps) )
-                               return false;
-                       return true;
-               }
-
-               /**
-                * Dynamically filter a user's capabilities.
-                *
-                * @since 2.0.0
-                * @since 3.7.0 Added the user object.
-                *
-                * @param array   $allcaps An array of all the user's capabilities.
-                * @param array   $caps    Actual capabilities for meta capability.
-                * @param array   $args    Optional parameters passed to has_cap(), typically object ID.
-                * @param WP_User $user    The user object.
-                */
-               // Must have ALL requested caps
-               $capabilities = apply_filters( 'user_has_cap', $this->allcaps, $caps, $args, $this );
-               $capabilities['exist'] = true; // Everyone is allowed to exist
-               foreach ( (array) $caps as $cap ) {
-                       if ( empty( $capabilities[ $cap ] ) )
-                               return false;
-               }
-
-               return true;
-       }
-
-       /**
-        * Convert numeric level to level capability name.
-        *
-        * Prepends 'level_' to level number.
-        *
-        * @since 2.0.0
-        * @access public
-        *
-        * @param int $level Level number, 1 to 10.
-        * @return string
-        */
-       public function translate_level_to_cap( $level ) {
-               return 'level_' . $level;
-       }
-
-       /**
-        * Set the blog to operate on. Defaults to the current blog.
-        *
-        * @since 3.0.0
-        *
-        * @global wpdb $wpdb
-        *
-        * @param int $blog_id Optional Blog ID, defaults to current blog.
-        */
-       public function for_blog( $blog_id = '' ) {
-               global $wpdb;
-               if ( ! empty( $blog_id ) )
-                       $cap_key = $wpdb->get_blog_prefix( $blog_id ) . 'capabilities';
-               else
-                       $cap_key = '';
-               $this->_init_caps( $cap_key );
-       }
-}
-
 /**
  * Map meta capabilities to primitive capabilities.
  *
@@ -1114,8 +16,12 @@ class WP_User {
  *
  * @since 2.0.0
  *
- * @param string $cap Capability name.
- * @param int $user_id User ID.
+ * @param string $cap       Capability name.
+ * @param int    $user_id   User ID.
+ * @param int    $object_id Optional. ID of the specific object to check against if `$cap` is a "meta" cap.
+ *                          "Meta" capabilities, e.g. 'edit_post', 'edit_user', etc., are capabilities used
+ *                          by map_meta_cap() to map to other "primitive" capabilities, e.g. 'edit_posts',
+ *                          'edit_others_posts', etc. The parameter is accessed via func_get_args().
  * @return array Actual capabilities for meta capability.
  */
 function map_meta_cap( $cap, $user_id ) {
@@ -1127,6 +33,7 @@ function map_meta_cap( $cap, $user_id ) {
                $caps[] = 'remove_users';
                break;
        case 'promote_user':
+       case 'add_users':
                $caps[] = 'promote_users';
                break;
        case 'edit_user':
@@ -1135,21 +42,36 @@ function map_meta_cap( $cap, $user_id ) {
                if ( 'edit_user' == $cap && isset( $args[0] ) && $user_id == $args[0] )
                        break;
 
-               // If multisite these caps are allowed only for super admins.
-               if ( is_multisite() && !is_super_admin( $user_id ) )
+               // In multisite the user must have manage_network_users caps. If editing a super admin, the user must be a super admin.
+               if ( is_multisite() && ( ( ! is_super_admin( $user_id ) && 'edit_user' === $cap && is_super_admin( $args[0] ) ) || ! user_can( $user_id, 'manage_network_users' ) ) ) {
                        $caps[] = 'do_not_allow';
-               else
+               } else {
                        $caps[] = 'edit_users'; // edit_user maps to edit_users.
+               }
                break;
        case 'delete_post':
        case 'delete_page':
                $post = get_post( $args[0] );
+               if ( ! $post ) {
+                       $caps[] = 'do_not_allow';
+                       break;
+               }
 
                if ( 'revision' == $post->post_type ) {
                        $post = get_post( $post->post_parent );
+                       if ( ! $post ) {
+                               $caps[] = 'do_not_allow';
+                               break;
+                       }
                }
 
                $post_type = get_post_type_object( $post->post_type );
+               if ( ! $post_type ) {
+                       /* translators: 1: post type, 2: capability name */
+                       _doing_it_wrong( __FUNCTION__, sprintf( __( 'The post type %1$s is not registered, so it may not be reliable to check the capability "%2$s" against a post of that type.' ), $post->post_type, $cap ), '4.4.0' );
+                       $caps[] = 'edit_others_posts';
+                       break;
+               }
 
                if ( ! $post_type->map_meta_cap ) {
                        $caps[] = $post_type->cap->$cap;
@@ -1161,12 +83,15 @@ function map_meta_cap( $cap, $user_id ) {
 
                // If the post author is set and the user is the author...
                if ( $post->post_author && $user_id == $post->post_author ) {
-                       // If the post is published...
-                       if ( 'publish' == $post->post_status ) {
+                       // If the post is published or scheduled...
+                       if ( in_array( $post->post_status, array( 'publish', 'future' ), true ) ) {
                                $caps[] = $post_type->cap->delete_published_posts;
                        } elseif ( 'trash' == $post->post_status ) {
-                               if ( 'publish' == get_post_meta( $post->ID, '_wp_trash_meta_status', true ) ) {
+                               $status = get_post_meta( $post->ID, '_wp_trash_meta_status', true );
+                               if ( in_array( $status, array( 'publish', 'future' ), true ) ) {
                                        $caps[] = $post_type->cap->delete_published_posts;
+                               } else {
+                                       $caps[] = $post_type->cap->delete_posts;
                                }
                        } else {
                                // If the post is draft...
@@ -1175,8 +100,8 @@ function map_meta_cap( $cap, $user_id ) {
                } else {
                        // The user is trying to edit someone else's post.
                        $caps[] = $post_type->cap->delete_others_posts;
-                       // The post is published, extra cap required.
-                       if ( 'publish' == $post->post_status ) {
+                       // The post is published or scheduled, extra cap required.
+                       if ( in_array( $post->post_status, array( 'publish', 'future' ), true ) ) {
                                $caps[] = $post_type->cap->delete_published_posts;
                        } elseif ( 'private' == $post->post_status ) {
                                $caps[] = $post_type->cap->delete_private_posts;
@@ -1188,16 +113,26 @@ function map_meta_cap( $cap, $user_id ) {
        case 'edit_post':
        case 'edit_page':
                $post = get_post( $args[0] );
-               if ( empty( $post ) ) {
+               if ( ! $post ) {
                        $caps[] = 'do_not_allow';
                        break;
                }
 
                if ( 'revision' == $post->post_type ) {
                        $post = get_post( $post->post_parent );
+                       if ( ! $post ) {
+                               $caps[] = 'do_not_allow';
+                               break;
+                       }
                }
 
                $post_type = get_post_type_object( $post->post_type );
+               if ( ! $post_type ) {
+                       /* translators: 1: post type, 2: capability name */
+                       _doing_it_wrong( __FUNCTION__, sprintf( __( 'The post type %1$s is not registered, so it may not be reliable to check the capability "%2$s" against a post of that type.' ), $post->post_type, $cap ), '4.4.0' );
+                       $caps[] = 'edit_others_posts';
+                       break;
+               }
 
                if ( ! $post_type->map_meta_cap ) {
                        $caps[] = $post_type->cap->$cap;
@@ -1209,12 +144,15 @@ function map_meta_cap( $cap, $user_id ) {
 
                // If the post author is set and the user is the author...
                if ( $post->post_author && $user_id == $post->post_author ) {
-                       // If the post is published...
-                       if ( 'publish' == $post->post_status ) {
+                       // If the post is published or scheduled...
+                       if ( in_array( $post->post_status, array( 'publish', 'future' ), true ) ) {
                                $caps[] = $post_type->cap->edit_published_posts;
                        } elseif ( 'trash' == $post->post_status ) {
-                               if ( 'publish' == get_post_meta( $post->ID, '_wp_trash_meta_status', true ) ) {
+                               $status = get_post_meta( $post->ID, '_wp_trash_meta_status', true );
+                               if ( in_array( $status, array( 'publish', 'future' ), true ) ) {
                                        $caps[] = $post_type->cap->edit_published_posts;
+                               } else {
+                                       $caps[] = $post_type->cap->edit_posts;
                                }
                        } else {
                                // If the post is draft...
@@ -1223,8 +161,8 @@ function map_meta_cap( $cap, $user_id ) {
                } else {
                        // The user is trying to edit someone else's post.
                        $caps[] = $post_type->cap->edit_others_posts;
-                       // The post is published, extra cap required.
-                       if ( 'publish' == $post->post_status ) {
+                       // The post is published or scheduled, extra cap required.
+                       if ( in_array( $post->post_status, array( 'publish', 'future' ), true ) ) {
                                $caps[] = $post_type->cap->edit_published_posts;
                        } elseif ( 'private' == $post->post_status ) {
                                $caps[] = $post_type->cap->edit_private_posts;
@@ -1234,12 +172,26 @@ function map_meta_cap( $cap, $user_id ) {
        case 'read_post':
        case 'read_page':
                $post = get_post( $args[0] );
+               if ( ! $post ) {
+                       $caps[] = 'do_not_allow';
+                       break;
+               }
 
                if ( 'revision' == $post->post_type ) {
                        $post = get_post( $post->post_parent );
+                       if ( ! $post ) {
+                               $caps[] = 'do_not_allow';
+                               break;
+                       }
                }
 
                $post_type = get_post_type_object( $post->post_type );
+               if ( ! $post_type ) {
+                       /* translators: 1: post type, 2: capability name */
+                       _doing_it_wrong( __FUNCTION__, sprintf( __( 'The post type %1$s is not registered, so it may not be reliable to check the capability "%2$s" against a post of that type.' ), $post->post_type, $cap ), '4.4.0' );
+                       $caps[] = 'edit_others_posts';
+                       break;
+               }
 
                if ( ! $post_type->map_meta_cap ) {
                        $caps[] = $post_type->cap->$cap;
@@ -1265,7 +217,18 @@ function map_meta_cap( $cap, $user_id ) {
                break;
        case 'publish_post':
                $post = get_post( $args[0] );
+               if ( ! $post ) {
+                       $caps[] = 'do_not_allow';
+                       break;
+               }
+
                $post_type = get_post_type_object( $post->post_type );
+               if ( ! $post_type ) {
+                       /* translators: 1: post type, 2: capability name */
+                       _doing_it_wrong( __FUNCTION__, sprintf( __( 'The post type %1$s is not registered, so it may not be reliable to check the capability "%2$s" against a post of that type.' ), $post->post_type, $cap ), '4.4.0' );
+                       $caps[] = 'edit_others_posts';
+                       break;
+               }
 
                $caps[] = $post_type->cap->publish_posts;
                break;
@@ -1273,6 +236,11 @@ function map_meta_cap( $cap, $user_id ) {
        case 'delete_post_meta':
        case 'add_post_meta':
                $post = get_post( $args[0] );
+               if ( ! $post ) {
+                       $caps[] = 'do_not_allow';
+                       break;
+               }
+
                $caps = map_meta_cap( 'edit_post', $user_id, $post->ID );
 
                $meta_key = isset( $args[ 1 ] ) ? $args[ 1 ] : false;
@@ -1302,8 +270,11 @@ function map_meta_cap( $cap, $user_id ) {
                break;
        case 'edit_comment':
                $comment = get_comment( $args[0] );
-               if ( empty( $comment ) )
+               if ( ! $comment ) {
+                       $caps[] = 'do_not_allow';
                        break;
+               }
+
                $post = get_post( $comment->comment_post_ID );
 
                /*
@@ -1430,12 +401,24 @@ function map_meta_cap( $cap, $user_id ) {
 }
 
 /**
- * Whether current user has capability or role.
+ * Whether the current user has a specific capability.
+ *
+ * While checking against particular roles in place of a capability is supported
+ * in part, this practice is discouraged as it may produce unreliable results.
  *
  * @since 2.0.0
  *
- * @param string $capability Capability or role name.
- * @return bool
+ * @see WP_User::has_cap()
+ * @see map_meta_cap()
+ *
+ * @param string $capability Capability name.
+ * @param int    $object_id  Optional. ID of the specific object to check against if `$capability` is a "meta" cap.
+ *                           "Meta" capabilities, e.g. 'edit_post', 'edit_user', etc., are capabilities used
+ *                           by map_meta_cap() to map to other "primitive" capabilities, e.g. 'edit_posts',
+ *                           'edit_others_posts', etc. Accessed via func_get_args() and passed to WP_User::has_cap(),
+ *                           then map_meta_cap().
+ * @return bool Whether the current user has the given capability. If `$capability` is a meta cap and `$object_id` is
+ *              passed, whether the current user has the given meta capability for the given object.
  */
 function current_user_can( $capability ) {
        $current_user = wp_get_current_user();
@@ -1569,6 +552,9 @@ function get_role( $role ) {
  * @return WP_Role|null WP_Role object if role is added, null if already exists.
  */
 function add_role( $role, $display_name, $capabilities = array() ) {
+       if ( empty( $role ) ) {
+               return;
+       }
        return wp_roles()->add_role( $role, $display_name, $capabilities );
 }
 
index 6bac6c11b7ae4adf0b780defc8b1a15108f19172..9b685edb11de719a4d6fba4b9a7649e9fe6b2ca2 100644 (file)
@@ -1,9 +1,10 @@
 <?php
 /**
- * Category Template Tags and API.
+ * Taxonomy API: Core category-specific template tags
  *
  * @package WordPress
  * @subpackage Template
+ * @since 1.2.0
  */
 
 /**
@@ -90,10 +91,12 @@ function get_the_category( $id = false ) {
         * Filter the array of categories to return for a post.
         *
         * @since 3.1.0
+        * @since 4.4.0 Added `$id` parameter.
         *
         * @param array $categories An array of categories to return for the post.
+        * @param int   $id         ID of the post.
         */
-       return apply_filters( 'get_the_categories', $categories );
+       return apply_filters( 'get_the_categories', $categories, $id );
 }
 
 /**
@@ -172,7 +175,17 @@ function get_the_category_list( $separator = '', $parents='', $post_id = false )
                return apply_filters( 'the_category', '', $separator, $parents );
        }
 
-       $categories = get_the_category( $post_id );
+       /**
+        * Filter the categories before building the category list.
+        *
+        * @since 4.4.0
+        *
+        * @param array    $categories An array of the post's categories.
+        * @param int|bool $post_id    ID of the post we're retrieving categories for. When `false`, we assume the
+        *                             current post in the loop.
+        */
+       $categories = apply_filters( 'the_category_list', get_the_category( $post_id ), $post_id );
+
        if ( empty( $categories ) ) {
                /** This filter is documented in wp-includes/category-template.php */
                return apply_filters( 'the_category', __( 'Uncategorized' ), $separator, $parents );
@@ -360,7 +373,13 @@ function wp_dropdown_categories( $args = '' ) {
 
        // Back compat.
        if ( isset( $args['type'] ) && 'link' == $args['type'] ) {
-               _deprecated_argument( __FUNCTION__, '3.0', '' );
+               /* translators: 1: "type => link", 2: "taxonomy => link_category" alternative */
+               _deprecated_argument( __FUNCTION__, '3.0',
+                       sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),
+                               '<code>type => link</code>',
+                               '<code>taxonomy => link_category</code>'
+                       )
+               );
                $args['taxonomy'] = 'link_category';
        }
 
@@ -460,32 +479,48 @@ function wp_dropdown_categories( $args = '' ) {
 /**
  * Display or retrieve the HTML list of categories.
  *
- * The list of arguments is below:
- *     'show_option_all' (string) - Text to display for showing all categories.
- *     'orderby' (string) default is 'ID' - What column to use for ordering the
- * categories.
- *     'order' (string) default is 'ASC' - What direction to order categories.
- *     'show_count' (bool|int) default is 0 - Whether to show how many posts are
- * in the category.
- *     'hide_empty' (bool|int) default is 1 - Whether to hide categories that
- * don't have any posts attached to them.
- *     'use_desc_for_title' (bool|int) default is 1 - Whether to use the
- * category description as the title attribute.
- *     'feed' - See {@link get_categories()}.
- *     'feed_type' - See {@link get_categories()}.
- *     'feed_image' - See {@link get_categories()}.
- *     'child_of' (int) default is 0 - See {@link get_categories()}.
- *     'exclude' (string) - See {@link get_categories()}.
- *     'exclude_tree' (string) - See {@link get_categories()}.
- *     'echo' (bool|int) default is 1 - Whether to display or retrieve content.
- *     'current_category' (int) - See {@link get_categories()}.
- *     'hierarchical' (bool) - See {@link get_categories()}.
- *     'title_li' (string) - See {@link get_categories()}.
- *     'depth' (int) - The max depth.
- *
  * @since 2.1.0
+ * @since 4.4.0 Introduced the `hide_title_if_empty` and `separator` arguments. The `current_category` argument was modified to
+ *              optionally accept an array of values.
  *
- * @param string|array $args Optional. Override default arguments.
+ * @param string|array $args {
+ *     Array of optional arguments.
+ *
+ *     @type string       $show_option_all       Text to display for showing all categories. Default empty string.
+ *     @type string       $show_option_none      Text to display for the 'no categories' option.
+ *                                               Default 'No categories'.
+ *     @type string       $orderby               The column to use for ordering categories. Default 'ID'.
+ *     @type string       $order                 Which direction to order categories. Accepts 'ASC' or 'DESC'.
+ *                                               Default 'ASC'.
+ *     @type bool|int     $show_count            Whether to show how many posts are in the category. Default 0.
+ *     @type bool|int     $hide_empty            Whether to hide categories that don't have any posts attached to them.
+ *                                               Default 1.
+ *     @type bool|int     $use_desc_for_title    Whether to use the category description as the title attribute.
+ *                                               Default 1.
+ *     @type string       $feed                  Text to use for the feed link. Default 'Feed for all posts filed
+ *                                               under [cat name]'.
+ *     @type string       $feed_type             Feed type. Used to build feed link. See {@link get_term_feed_link()}.
+ *                                               Default empty string (default feed).
+ *     @type string       $feed_image            URL of an image to use for the feed link. Default empty string.
+ *     @type int          $child_of              Term ID to retrieve child terms of. See {@link get_terms()}. Default 0.
+ *     @type array|string $exclude               Array or comma/space-separated string of term IDs to exclude.
+ *                                               If `$hierarchical` is true, descendants of `$exclude` terms will also
+ *                                               be excluded; see `$exclude_tree`. See {@link get_terms()}.
+ *                                               Default empty string.
+ *     @type array|string $exclude_tree          Array or comma/space-separated string of term IDs to exclude, along
+ *                                               with their descendants. See {@link get_terms()}. Default empty string.
+ *     @type bool|int     $echo                  True to echo markup, false to return it. Default 1.
+ *     @type int|array    $current_category      ID of category, or array of IDs of categories, that should get the
+ *                                               'current-cat' class. Default 0.
+ *     @type bool         $hierarchical          Whether to include terms that have non-empty descendants.
+ *                                               See {@link get_terms()}. Default true.
+ *     @type string       $title_li              Text to use for the list title `<li>` element. Pass an empty string
+ *                                               to disable. Default 'Categories'.
+ *     @type bool         $hide_title_if_empty   Whether to hide the `$title_li` element if there are no terms in
+ *                                               the list. Default false (title will always be shown).
+ *     @type int          $depth                 Category depth. Used for tab indentation. Default 0.
+ *     @type string       $taxonomy              Taxonomy name. Default 'category'.
+ * }
  * @return false|string HTML content only if 'echo' argument is 0.
  */
 function wp_list_categories( $args = '' ) {
@@ -499,7 +534,9 @@ function wp_list_categories( $args = '' ) {
                'feed_image' => '', 'exclude' => '',
                'exclude_tree' => '', 'current_category' => 0,
                'hierarchical' => true, 'title_li' => __( 'Categories' ),
+               'hide_title_if_empty' => false,
                'echo' => 1, 'depth' => 0,
+               'separator' => '<br />',
                'taxonomy' => 'category'
        );
 
@@ -508,8 +545,19 @@ function wp_list_categories( $args = '' ) {
        if ( !isset( $r['pad_counts'] ) && $r['show_count'] && $r['hierarchical'] )
                $r['pad_counts'] = true;
 
+       // Descendants of exclusions should be excluded too.
        if ( true == $r['hierarchical'] ) {
-               $r['exclude_tree'] = $r['exclude'];
+               $exclude_tree = array();
+
+               if ( $r['exclude_tree'] ) {
+                       $exclude_tree = array_merge( $exclude_tree, (array) $r['exclude_tree'] );
+               }
+
+               if ( $r['exclude'] ) {
+                       $exclude_tree = array_merge( $exclude_tree, (array) $r['exclude'] );
+               }
+
+               $r['exclude_tree'] = $exclude_tree;
                $r['exclude'] = '';
        }
 
@@ -526,7 +574,7 @@ function wp_list_categories( $args = '' ) {
        $categories = get_categories( $r );
 
        $output = '';
-       if ( $r['title_li'] && 'list' == $r['style'] ) {
+       if ( $r['title_li'] && 'list' == $r['style'] && ( ! empty( $categories ) || ! $r['hide_title_if_empty'] ) ) {
                $output = '<li class="' . esc_attr( $r['class'] ) . '">' . $r['title_li'] . '<ul>';
        }
        if ( empty( $categories ) ) {
@@ -556,9 +604,13 @@ function wp_list_categories( $args = '' ) {
                                }
                        }
 
-                       // Fallback for the 'All' link is the front page.
+                       // Fallback for the 'All' link is the posts page.
                        if ( ! $posts_page ) {
-                               $posts_page = 'page' == get_option( 'show_on_front' ) && get_option( 'page_for_posts' ) ? get_permalink( get_option( 'page_for_posts' ) ) : home_url( '/' );
+                               if ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_for_posts' ) ) {
+                                       $posts_page = get_permalink( get_option( 'page_for_posts' ) );
+                               } else {
+                                       $posts_page = home_url( '/' );
+                               }
                        }
 
                        $posts_page = esc_url( $posts_page );
@@ -957,267 +1009,6 @@ function walk_category_dropdown_tree() {
        return call_user_func_array( array( $walker, 'walk' ), $args );
 }
 
-/**
- * Create HTML list of categories.
- *
- * @package WordPress
- * @since 2.1.0
- * @uses Walker
- */
-class Walker_Category extends Walker {
-       /**
-        * What the class handles.
-        *
-        * @see Walker::$tree_type
-        * @since 2.1.0
-        * @var string
-        */
-       public $tree_type = 'category';
-
-       /**
-        * Database fields to use.
-        *
-        * @see Walker::$db_fields
-        * @since 2.1.0
-        * @todo Decouple this
-        * @var array
-        */
-       public $db_fields = array ('parent' => 'parent', 'id' => 'term_id');
-
-       /**
-        * Starts the list before the elements are added.
-        *
-        * @see Walker::start_lvl()
-        *
-        * @since 2.1.0
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param int    $depth  Depth of category. Used for tab indentation.
-        * @param array  $args   An array of arguments. Will only append content if style argument value is 'list'.
-        *                       @see wp_list_categories()
-        */
-       public function start_lvl( &$output, $depth = 0, $args = array() ) {
-               if ( 'list' != $args['style'] )
-                       return;
-
-               $indent = str_repeat("\t", $depth);
-               $output .= "$indent<ul class='children'>\n";
-       }
-
-       /**
-        * Ends the list of after the elements are added.
-        *
-        * @see Walker::end_lvl()
-        *
-        * @since 2.1.0
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param int    $depth  Depth of category. Used for tab indentation.
-        * @param array  $args   An array of arguments. Will only append content if style argument value is 'list'.
-        *                       @wsee wp_list_categories()
-        */
-       public function end_lvl( &$output, $depth = 0, $args = array() ) {
-               if ( 'list' != $args['style'] )
-                       return;
-
-               $indent = str_repeat("\t", $depth);
-               $output .= "$indent</ul>\n";
-       }
-
-       /**
-        * Start the element output.
-        *
-        * @see Walker::start_el()
-        *
-        * @since 2.1.0
-        *
-        * @param string $output   Passed by reference. Used to append additional content.
-        * @param object $category Category data object.
-        * @param int    $depth    Depth of category in reference to parents. Default 0.
-        * @param array  $args     An array of arguments. @see wp_list_categories()
-        * @param int    $id       ID of the current category.
-        */
-       public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
-               /** This filter is documented in wp-includes/category-template.php */
-               $cat_name = apply_filters(
-                       'list_cats',
-                       esc_attr( $category->name ),
-                       $category
-               );
-
-               // Don't generate an element if the category name is empty.
-               if ( ! $cat_name ) {
-                       return;
-               }
-
-               $link = '<a href="' . esc_url( get_term_link( $category ) ) . '" ';
-               if ( $args['use_desc_for_title'] && ! empty( $category->description ) ) {
-                       /**
-                        * Filter the category description for display.
-                        *
-                        * @since 1.2.0
-                        *
-                        * @param string $description Category description.
-                        * @param object $category    Category object.
-                        */
-                       $link .= 'title="' . esc_attr( strip_tags( apply_filters( 'category_description', $category->description, $category ) ) ) . '"';
-               }
-
-               $link .= '>';
-               $link .= $cat_name . '</a>';
-
-               if ( ! empty( $args['feed_image'] ) || ! empty( $args['feed'] ) ) {
-                       $link .= ' ';
-
-                       if ( empty( $args['feed_image'] ) ) {
-                               $link .= '(';
-                       }
-
-                       $link .= '<a href="' . esc_url( get_term_feed_link( $category->term_id, $category->taxonomy, $args['feed_type'] ) ) . '"';
-
-                       if ( empty( $args['feed'] ) ) {
-                               $alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';
-                       } else {
-                               $alt = ' alt="' . $args['feed'] . '"';
-                               $name = $args['feed'];
-                               $link .= empty( $args['title'] ) ? '' : $args['title'];
-                       }
-
-                       $link .= '>';
-
-                       if ( empty( $args['feed_image'] ) ) {
-                               $link .= $name;
-                       } else {
-                               $link .= "<img src='" . $args['feed_image'] . "'$alt" . ' />';
-                       }
-                       $link .= '</a>';
-
-                       if ( empty( $args['feed_image'] ) ) {
-                               $link .= ')';
-                       }
-               }
-
-               if ( ! empty( $args['show_count'] ) ) {
-                       $link .= ' (' . number_format_i18n( $category->count ) . ')';
-               }
-               if ( 'list' == $args['style'] ) {
-                       $output .= "\t<li";
-                       $css_classes = array(
-                               'cat-item',
-                               'cat-item-' . $category->term_id,
-                       );
-
-                       if ( ! empty( $args['current_category'] ) ) {
-                               $_current_category = get_term( $args['current_category'], $category->taxonomy );
-                               if ( $category->term_id == $args['current_category'] ) {
-                                       $css_classes[] = 'current-cat';
-                               } elseif ( $category->term_id == $_current_category->parent ) {
-                                       $css_classes[] = 'current-cat-parent';
-                               }
-                       }
-
-                       /**
-                        * Filter the list of CSS classes to include with each category in the list.
-                        *
-                        * @since 4.2.0
-                        *
-                        * @see wp_list_categories()
-                        *
-                        * @param array  $css_classes An array of CSS classes to be applied to each list item.
-                        * @param object $category    Category data object.
-                        * @param int    $depth       Depth of page, used for padding.
-                        * @param array  $args        An array of wp_list_categories() arguments.
-                        */
-                       $css_classes = implode( ' ', apply_filters( 'category_css_class', $css_classes, $category, $depth, $args ) );
-
-                       $output .=  ' class="' . $css_classes . '"';
-                       $output .= ">$link\n";
-               } else {
-                       $output .= "\t$link<br />\n";
-               }
-       }
-
-       /**
-        * Ends the element output, if needed.
-        *
-        * @see Walker::end_el()
-        *
-        * @since 2.1.0
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param object $page   Not used.
-        * @param int    $depth  Depth of category. Not used.
-        * @param array  $args   An array of arguments. Only uses 'list' for whether should append to output. @see wp_list_categories()
-        */
-       public function end_el( &$output, $page, $depth = 0, $args = array() ) {
-               if ( 'list' != $args['style'] )
-                       return;
-
-               $output .= "</li>\n";
-       }
-
-}
-
-/**
- * Create HTML dropdown list of Categories.
- *
- * @package WordPress
- * @since 2.1.0
- * @uses Walker
- */
-class Walker_CategoryDropdown extends Walker {
-       /**
-        * @see Walker::$tree_type
-        * @since 2.1.0
-        * @var string
-        */
-       public $tree_type = 'category';
-
-       /**
-        * @see Walker::$db_fields
-        * @since 2.1.0
-        * @todo Decouple this
-        * @var array
-        */
-       public $db_fields = array ('parent' => 'parent', 'id' => 'term_id');
-
-       /**
-        * Start the element output.
-        *
-        * @see Walker::start_el()
-        * @since 2.1.0
-        *
-        * @param string $output   Passed by reference. Used to append additional content.
-        * @param object $category Category data object.
-        * @param int    $depth    Depth of category. Used for padding.
-        * @param array  $args     Uses 'selected', 'show_count', and 'value_field' keys, if they exist.
-        *                         See {@see wp_dropdown_categories()}.
-        */
-       public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
-               $pad = str_repeat('&nbsp;', $depth * 3);
-
-               /** This filter is documented in wp-includes/category-template.php */
-               $cat_name = apply_filters( 'list_cats', $category->name, $category );
-
-               if ( isset( $args['value_field'] ) && isset( $category->{$args['value_field']} ) ) {
-                       $value_field = $args['value_field'];
-               } else {
-                       $value_field = 'term_id';
-               }
-
-               $output .= "\t<option class=\"level-$depth\" value=\"" . esc_attr( $category->{$value_field} ) . "\"";
-
-               // Type-juggling causes false matches, so we force everything to a string.
-               if ( (string) $category->{$value_field} === (string) $args['selected'] )
-                       $output .= ' selected="selected"';
-               $output .= '>';
-               $output .= $pad.$cat_name;
-               if ( $args['show_count'] )
-                       $output .= '&nbsp;&nbsp;('. number_format_i18n( $category->count ) .')';
-               $output .= "</option>\n";
-       }
-}
-
 //
 // Tags
 //
@@ -1357,9 +1148,15 @@ function get_the_terms( $post, $taxonomy ) {
        $terms = get_object_term_cache( $post->ID, $taxonomy );
        if ( false === $terms ) {
                $terms = wp_get_object_terms( $post->ID, $taxonomy );
-               wp_cache_add($post->ID, $terms, $taxonomy . '_relationships');
+               $to_cache = array();
+               foreach ( $terms as $key => $term ) {
+                       $to_cache[ $key ] = $term->data;
+               }
+               wp_cache_add( $post->ID, $to_cache, $taxonomy . '_relationships' );
        }
 
+       $terms = array_map( 'get_term', $terms );
+
        /**
         * Filter the list of terms attached to the given post.
         *
index a94baa7c4d4d7140ec3a10a369d4f457d50829a0..9f1064e282a125e6d1cd0a5ef0085dc4f594a12b 100644 (file)
@@ -1,8 +1,9 @@
 <?php
 /**
- * WordPress Category API
+ * Taxonomy API: Core category-specific functionality
  *
  * @package WordPress
+ * @subpackage Taxonomy
  */
 
 /**
@@ -37,7 +38,13 @@ function get_categories( $args = '' ) {
 
        // Back compat
        if ( isset($args['type']) && 'link' == $args['type'] ) {
-               _deprecated_argument( __FUNCTION__, '3.0', '' );
+               /* translators: 1: "type => link", 2: "taxonomy => link_category" alternative */
+               _deprecated_argument( __FUNCTION__, '3.0',
+                       sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),
+                               '<code>type => link</code>',
+                               '<code>taxonomy => link_category</code>'
+                       )
+               );
                $taxonomy = $args['taxonomy'] = 'link_category';
        }
 
@@ -317,18 +324,19 @@ function clean_category_cache( $id ) {
  * pass to it. This is one of the features with using pass by reference in PHP.
  *
  * @since 2.3.0
+ * @since 4.4.0 The `$category` parameter now also accepts a WP_Term object.
  * @access private
  *
- * @param array|object $category Category Row object or array
+ * @param array|object|WP_Term $category Category Row object or array
  */
 function _make_cat_compat( &$category ) {
        if ( is_object( $category ) && ! is_wp_error( $category ) ) {
-               $category->cat_ID = &$category->term_id;
-               $category->category_count = &$category->count;
-               $category->category_description = &$category->description;
-               $category->cat_name = &$category->name;
-               $category->category_nicename = &$category->slug;
-               $category->category_parent = &$category->parent;
+               $category->cat_ID = $category->term_id;
+               $category->category_count = $category->count;
+               $category->category_description = $category->description;
+               $category->cat_name = $category->name;
+               $category->category_nicename = $category->slug;
+               $category->category_parent = $category->parent;
        } elseif ( is_array( $category ) && isset( $category['term_id'] ) ) {
                $category['cat_ID'] = &$category['term_id'];
                $category['category_count'] = &$category['count'];
index d89dd2c8ea74191d9950d532bc9f1ee45abd768f..d02706cab0f03dce7dbc2126ef3bd68ee7f90c40 100644 (file)
@@ -1,19 +1,21 @@
 ##
-## src/wp-includes/certificates/ca-bundle.crt -- Bundle of CA Root Certificates
+## Bundle of CA Root Certificates
 ##
-## Certificate data from Mozilla as of: Tue Jan 28 09:38:07 2014
+## Certificate data from Mozilla as of: Wed Sep 16 08:58:11 2015
 ##
 ## This is a bundle of X.509 certificates of public Certificate Authorities
 ## (CA). These were automatically extracted from Mozilla's root certificates
 ## file (certdata.txt).  This file can be found in the mozilla source tree:
-## http://mxr.mozilla.org/mozilla-release/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1
+## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
 ##
 ## It contains the certificates in PEM format and therefore
 ## can be directly used with curl / libcurl / php_curl, or with
 ## an Apache+mod_ssl webserver for SSL client authentication.
 ## Just configure this file as the SSLCACertificateFile.
 ##
-
+## Conversion done with mk-ca-bundle.pl version 1.25.
+## SHA1: ed3c0bbfb7912bcc00cd2033b0cb85c98d10559c
+##
 
 EE Certification Centre Root CA
 ===============================
@@ -39,61 +41,6 @@ uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
 dcGWxZ0=
 -----END CERTIFICATE-----
 
-GTE CyberTrust Global Root
-==========================
------BEGIN CERTIFICATE-----
-MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
-Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
-A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
-MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
-Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
-IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
-sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
-HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
-AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
-M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
-NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
------END CERTIFICATE-----
-
-Thawte Server CA
-================
------BEGIN CERTIFICATE-----
-MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
-DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
-dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
-AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
-b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
-BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
-c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
-A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
-ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
-/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
-1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
-MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
-GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
-GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
------END CERTIFICATE-----
-
-Thawte Premium Server CA
-========================
------BEGIN CERTIFICATE-----
-MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
-DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
-dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
-AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
-ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
-AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
-VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
-aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
-cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
-aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
-Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
-qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
-SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
-8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
-UCemDaYj+bvLpgcUQg==
------END CERTIFICATE-----
-
 Equifax Secure CA
 =================
 -----BEGIN CERTIFICATE-----
@@ -114,41 +61,6 @@ BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
 70+sB3c4
 -----END CERTIFICATE-----
 
-Verisign Class 3 Public Primary Certification Authority
-=======================================================
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
-f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
-hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
-TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
-WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
-Tqj/ZA1k
------END CERTIFICATE-----
-
-Verisign Class 3 Public Primary Certification Authority - G2
-============================================================
------BEGIN CERTIFICATE-----
-MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
-dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
-MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
-eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
-biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
-dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
-FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
-lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
-MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
-1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
-Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
------END CERTIFICATE-----
-
 GlobalSign Root CA
 ==================
 -----BEGIN CERTIFICATE-----
@@ -192,63 +104,6 @@ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
 TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
 -----END CERTIFICATE-----
 
-ValiCert Class 1 VA
-===================
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
-YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
-MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
-GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
-DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
-lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
-icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
-Orf1LXLI
------END CERTIFICATE-----
-
-ValiCert Class 2 VA
-===================
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
-YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
-MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
-CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
-ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
-SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
-UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
-W9ViH0Pd
------END CERTIFICATE-----
-
-RSA Root Certificate 1
-======================
------BEGIN CERTIFICATE-----
-MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
-b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
-YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
-bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
-MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
-d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
-UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
-LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
-3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
-BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
-3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
-V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
-on+jjBXu
------END CERTIFICATE-----
-
 Verisign Class 3 Public Primary Certification Authority - G3
 ============================================================
 -----BEGIN CERTIFICATE-----
@@ -297,33 +152,6 @@ RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
 UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
 -----END CERTIFICATE-----
 
-Entrust.net Secure Server CA
-============================
------BEGIN CERTIFICATE-----
-MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
-BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
-cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
-ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
-cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
-A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
-eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
-dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
-aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
-aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
-gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
-ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
-CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
-dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
-bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
-cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
-dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
-NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
-HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
-BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
-Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
-n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
------END CERTIFICATE-----
-
 Entrust.net Premium 2048 Secure Server CA
 =========================================
 -----BEGIN CERTIFICATE-----
@@ -369,40 +197,6 @@ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
 RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
 -----END CERTIFICATE-----
 
-Equifax Secure Global eBusiness CA
-==================================
------BEGIN CERTIFICATE-----
-MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
-bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
-HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
-b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
-PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
-qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
-hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
-BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
-MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
-I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
-NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
------END CERTIFICATE-----
-
-Equifax Secure eBusiness CA 1
-=============================
------BEGIN CERTIFICATE-----
-MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
-LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
-ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
-IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
-1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
-IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
-MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
-Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
-AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
-lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
-KpYrtWKmpj29f5JZzVoqgrI3eQ==
------END CERTIFICATE-----
-
 AddTrust Low-Value Services Root
 ================================
 -----BEGIN CERTIFICATE-----
@@ -648,59 +442,6 @@ gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
 X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
 -----END CERTIFICATE-----
 
-America Online Root Certification Authority 1
-=============================================
------BEGIN CERTIFICATE-----
-MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
-Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
-A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
-T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
-ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
-v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
-DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
-sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
-8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
-AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
-o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
-GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
-VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
-3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
-Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
-sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
------END CERTIFICATE-----
-
-America Online Root Certification Authority 2
-=============================================
------BEGIN CERTIFICATE-----
-MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
-QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
-Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG
-A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
-T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD
-ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en
-fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8
-f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO
-qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN
-RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0
-gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn
-6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid
-FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6
-Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj
-B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op
-aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE
-AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY
-T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p
-+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg
-JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy
-zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO
-ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh
-1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf
-GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff
-Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP
-cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
------END CERTIFICATE-----
-
 Visa eCommerce Root
 ===================
 -----BEGIN CERTIFICATE-----
@@ -977,30 +718,6 @@ nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
 iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
 -----END CERTIFICATE-----
 
-TDC Internet Root CA
-====================
------BEGIN CERTIFICATE-----
-MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
-ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
-NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
-ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
-MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
-xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
-znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
-5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
-otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
-AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
-VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
-MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
-AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
-UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
-CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
-gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
-2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
-O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
-Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
------END CERTIFICATE-----
-
 UTN DATACorp SGC Root CA
 ========================
 -----BEGIN CERTIFICATE-----
@@ -1141,64 +858,6 @@ KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
 8CgHrTwXZoi1/baI
 -----END CERTIFICATE-----
 
-NetLock Business (Class B) Root
-===============================
------BEGIN CERTIFICATE-----
-MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
-CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
-BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
-VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
-VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
-bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
-VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
-iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
-o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
-1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
-HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
-RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
-dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
-ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
-c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
-YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
-c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
-Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
-bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
-IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
-YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
-cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
-43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
-stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
------END CERTIFICATE-----
-
-NetLock Express (Class C) Root
-==============================
------BEGIN CERTIFICATE-----
-MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
-CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
-BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
-KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
-BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
-dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
-ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
-jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
-W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
-euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
-DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
-RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
-YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
-IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
-aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
-ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
-ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
-dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
-emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
-IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
-UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
-YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
-xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
-gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
------END CERTIFICATE-----
-
 XRamp Global CA Root
 ====================
 -----BEGIN CERTIFICATE-----
@@ -1342,31 +1001,6 @@ CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy
 +fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS
 -----END CERTIFICATE-----
 
-Firmaprofesional Root CA
-========================
------BEGIN CERTIFICATE-----
-MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
-GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
-Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
-ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
-MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
-OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
-ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
-AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
-j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
-lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
-3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
-NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
-KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
-AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
-DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
-ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
-u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
-wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
-7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
-VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
------END CERTIFICATE-----
-
 Swisscom Root CA 1
 ==================
 -----BEGIN CERTIFICATE-----
@@ -1978,40 +1612,6 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
 WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
 -----END CERTIFICATE-----
 
-AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
-======================================
------BEGIN CERTIFICATE-----
-MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
-AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
-LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
-HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
-U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
-IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
-AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
-yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
-2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
-4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
-2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
-8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
-HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
-Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
-5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
-czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
-AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
-ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
-BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
-cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
-AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
-EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
-/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
-MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
-3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
-eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
-/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
-RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
-Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
------END CERTIFICATE-----
-
 TC TrustCenter Class 2 CA II
 ============================
 -----BEGIN CERTIFICATE-----
@@ -2039,33 +1639,6 @@ JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
 vQ==
 -----END CERTIFICATE-----
 
-TC TrustCenter Class 3 CA II
-============================
------BEGIN CERTIFICATE-----
-MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
-REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
-IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
-MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
-c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
-AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
-yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
-6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
-uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
-2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
-/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
-7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
-Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
-cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
-SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
-TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
-O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
-yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
-IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
-092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
-5A==
------END CERTIFICATE-----
-
 TC TrustCenter Universal CA I
 =============================
 -----BEGIN CERTIFICATE-----
@@ -2659,22 +2232,6 @@ MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o
 tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA==
 -----END CERTIFICATE-----
 
-Verisign Class 3 Public Primary Certification Authority
-=======================================================
------BEGIN CERTIFICATE-----
-MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
-FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
-IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
-XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
-IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
-A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
-f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
-hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
-CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
-bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
-D/xwzoiQ
------END CERTIFICATE-----
-
 Microsec e-Szigno Root CA 2009
 ==============================
 -----BEGIN CERTIFICATE-----
@@ -2699,28 +2256,6 @@ yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
 LXpUq3DDfSJlgnCW
 -----END CERTIFICATE-----
 
-E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
-===================================================
------BEGIN CERTIFICATE-----
-MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
-EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
-ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
-MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
-cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
-aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
-AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
-8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
-jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
-JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
-9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
-AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
-SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
-F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
-D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
-Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
-fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
------END CERTIFICATE-----
-
 GlobalSign Root CA - R3
 =======================
 -----BEGIN CERTIFICATE-----
@@ -3783,3 +3318,670 @@ i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8
 EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3
 zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0=
 -----END CERTIFICATE-----
+
+TeliaSonera Root CA v1
+======================
+-----BEGIN CERTIFICATE-----
+MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE
+CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4
+MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW
+VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+
+6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA
+3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k
+B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn
+Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH
+oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3
+F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ
+oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7
+gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc
+TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB
+AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW
+DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm
+zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx
+0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW
+pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV
+G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc
+c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT
+JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2
+qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6
+Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems
+WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
+-----END CERTIFICATE-----
+
+E-Tugra Certification Authority
+===============================
+-----BEGIN CERTIFICATE-----
+MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w
+DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls
+ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
+ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw
+NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx
+QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl
+cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD
+DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
+MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd
+hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K
+CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g
+ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ
+BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0
+E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz
+rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq
+jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
+rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5
+dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB
+/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG
+MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK
+kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO
+XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807
+VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo
+a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc
+dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV
+KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT
+Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0
+8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G
+C7TbO6Orb1wdtn7os4I07QZcJA==
+-----END CERTIFICATE-----
+
+T-TeleSec GlobalRoot Class 2
+============================
+-----BEGIN CERTIFICATE-----
+MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
+IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
+cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx
+MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
+dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
+ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ
+SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F
+vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970
+2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV
+WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA
+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy
+YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4
+r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf
+vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR
+3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
+9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg==
+-----END CERTIFICATE-----
+
+Atos TrustedRoot 2011
+=====================
+-----BEGIN CERTIFICATE-----
+MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU
+cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4
+MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG
+A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV
+hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr
+54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+
+DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320
+HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR
+z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R
+l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ
+bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
+CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h
+k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
+TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
+61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
+3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
+-----END CERTIFICATE-----
+
+QuoVadis Root CA 1 G3
+=====================
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG
+A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv
+b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN
+MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg
+RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE
+PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm
+PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6
+Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN
+ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l
+g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV
+7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX
+9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f
+iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg
+t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
+AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI
+hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC
+MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3
+GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct
+Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP
++V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh
+3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa
+wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6
+O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0
+FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV
+hMJKzRwuJIczYOXD
+-----END CERTIFICATE-----
+
+QuoVadis Root CA 2 G3
+=====================
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG
+A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv
+b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN
+MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg
+RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh
+ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY
+NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t
+oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o
+MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l
+V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo
+L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ
+sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD
+6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh
+lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
+AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI
+hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66
+AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K
+pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9
+x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz
+dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X
+U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw
+mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD
+zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN
+JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr
+O3jtZsSOeWmD3n+M
+-----END CERTIFICATE-----
+
+QuoVadis Root CA 3 G3
+=====================
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG
+A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv
+b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN
+MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg
+RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286
+IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL
+Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe
+6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3
+I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U
+VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7
+5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi
+Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM
+dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt
+rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
+AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI
+hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px
+KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS
+t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ
+TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du
+DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib
+Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD
+hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX
+0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW
+dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2
+PpxxVJkES/1Y+Zj0
+-----END CERTIFICATE-----
+
+DigiCert Assured ID Root G2
+===========================
+-----BEGIN CERTIFICATE-----
+MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG
+EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
+IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw
+MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
+ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw
+ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH
+35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq
+bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw
+VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP
+YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn
+lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO
+w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv
+0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz
+d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW
+hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M
+jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
+IhNzbM8m9Yop5w==
+-----END CERTIFICATE-----
+
+DigiCert Assured ID Root G3
+===========================
+-----BEGIN CERTIFICATE-----
+MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
+UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
+VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
+MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ
+BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb
+RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs
+KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF
+UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy
+YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy
+1vUhZscv6pZjamVFkpUBtA==
+-----END CERTIFICATE-----
+
+DigiCert Global Root G2
+=======================
+-----BEGIN CERTIFICATE-----
+MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG
+EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
+HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx
+MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
+dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq
+hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ
+kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO
+3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV
+BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM
+UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB
+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu
+5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr
+F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U
+WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH
+QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/
+iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
+MrY=
+-----END CERTIFICATE-----
+
+DigiCert Global Root G3
+=======================
+-----BEGIN CERTIFICATE-----
+MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV
+UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD
+VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw
+MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
+aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C
+AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O
+YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP
+BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp
+Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y
+3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34
+VOKa5Vt8sycX
+-----END CERTIFICATE-----
+
+DigiCert Trusted Root G4
+========================
+-----BEGIN CERTIFICATE-----
+MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG
+EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw
+HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
+MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
+d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G
+CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp
+pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o
+k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa
+vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY
+QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6
+MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm
+mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7
+f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH
+dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8
+oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud
+DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD
+ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY
+ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr
+yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy
+7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah
+ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN
+5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb
+/UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa
+5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK
+G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP
+82Z+
+-----END CERTIFICATE-----
+
+WoSign
+======
+-----BEGIN CERTIFICATE-----
+MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQG
+EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNVBAMTIUNlcnRpZmljYXRpb24g
+QXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJ
+BgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA
+vcqNrLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1UfcIiePyO
+CbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcSccf+Hb0v1naMQFXQoOXXDX
+2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2ZjC1vt7tj/id07sBMOby8w7gLJKA84X5
+KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4Mx1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR
++ScPewavVIMYe+HdVHpRaG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ez
+EC8wQjchzDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDaruHqk
+lWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221KmYo0SLwX3OSACCK2
+8jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvASh0JWzko/amrzgD5LkhLJuYwTKVY
+yrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWvHYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0C
+AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R
+8bNLtwYgFP6HEtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1
+LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJMuYhOZO9sxXq
+T2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2eJXLOC62qx1ViC777Y7NhRCOj
+y+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VNg64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC
+2nz4SNAzqfkHx5Xh9T71XXG68pWpdIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes
+5cVAWubXbHssw1abR80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/
+EaEQPkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGcexGATVdVh
+mVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+J7x6v+Db9NpSvd4MVHAx
+kUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMlOtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGi
+kpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWTee5Ehr7XHuQe+w==
+-----END CERTIFICATE-----
+
+WoSign China
+============
+-----BEGIN CERTIFICATE-----
+MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBGMQswCQYDVQQG
+EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMMEkNBIOayg+mAmuagueiv
+geS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYD
+VQQKExFXb1NpZ24gQ0EgTGltaXRlZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjAN
+BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k
+8H/rD195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld19AXbbQs5
+uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExfv5RxadmWPgxDT74wwJ85
+dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnkUkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5
+Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+LNVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFy
+b7Ao65vh4YOhn0pdr8yb+gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc
+76DbT52VqyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6KyX2m
++Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0GAbQOXDBGVWCvOGU6
+yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaKJ/kR8slC/k7e3x9cxKSGhxYzoacX
+GKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwECAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud
+EwEB/wQFMAMBAf8wHQYDVR0OBBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUA
+A4ICAQBqinA4WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6
+yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj/feTZU7n85iY
+r83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6jBAyvd0zaziGfjk9DgNyp115
+j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0A
+kLppRQjbbpCBhqcqBT/mhDn4t/lXX0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97
+qA4bLJyuQHCH2u2nFoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Y
+jj4Du9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10lO1Hm13ZB
+ONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Leie2uPAmvylezkolwQOQv
+T8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR12KvxAmLBsX5VYc8T1yaw15zLKYs4SgsO
+kI26oQ==
+-----END CERTIFICATE-----
+
+COMODO RSA Certification Authority
+==================================
+-----BEGIN CERTIFICATE-----
+MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE
+BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
+A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC
+R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
+ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB
+dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn
+dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ
+FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+
+5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG
+x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX
+2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL
+OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3
+sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C
+GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5
+WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
+FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
+DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt
+rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+
+nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg
+tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW
+sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp
+pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA
+zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq
+ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52
+7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I
+LaZRfyHBNVOFBkpdn627G190
+-----END CERTIFICATE-----
+
+USERTrust RSA Certification Authority
+=====================================
+-----BEGIN CERTIFICATE-----
+MIIF3jCCA8agAwIBAgIQAf1tMPyjylGoG7xkDjUDLTANBgkqhkiG9w0BAQwFADCBiDELMAkGA1UE
+BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK
+ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UE
+BhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQK
+ExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNh
+dGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCAEmUXNg7D2wiz
+0KxXDXbtzSfTTK1Qg2HiqiBNCS1kCdzOiZ/MPans9s/B3PHTsdZ7NygRK0faOca8Ohm0X6a9fZ2j
+Y0K2dvKpOyuR+OJv0OwWIJAJPuLodMkYtJHUYmTbf6MG8YgYapAiPLz+E/CHFHv25B+O1ORRxhFn
+RghRy4YUVD+8M/5+bJz/Fp0YvVGONaanZshyZ9shZrHUm3gDwFA66Mzw3LyeTP6vBZY1H1dat//O
++T23LLb2VN3I5xI6Ta5MirdcmrS3ID3KfyI0rn47aGYBROcBTkZTmzNg95S+UzeQc0PzMsNT79uq
+/nROacdrjGCT3sTHDN/hMq7MkztReJVni+49Vv4M0GkPGw/zJSZrM233bkf6c0Plfg6lZrEpfDKE
+Y1WJxA3Bk1QwGROs0303p+tdOmw1XNtB1xLaqUkL39iAigmTYo61Zs8liM2EuLE/pDkP2QKe6xJM
+lXzzawWpXhaDzLhn4ugTncxbgtNMs+1b/97lc6wjOy0AvzVVdAlJ2ElYGn+SNuZRkg7zJn0cTRe8
+yexDJtC/QV9AqURE9JnnV4eeUB9XVKg+/XRjL7FQZQnmWEIuQxpMtPAlR1n6BB6T1CZGSlCBst6+
+eLf8ZxXhyVeEHg9j1uliutZfVS7qXMYoCAQlObgOK6nyTJccBz8NUvXt7y+CDwIDAQABo0IwQDAd
+BgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
+MAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAFzUfA3P9wF9QZllDHPFUp/L+M+ZBn8b2kMVn54CVVeW
+FPFSPCeHlCjtHzoBN6J2/FNQwISbxmtOuowhT6KOVWKR82kV2LyI48SqC/3vqOlLVSoGIG1VeCkZ
+7l8wXEskEVX/JJpuXior7gtNn3/3ATiUFJVDBwn7YKnuHKsSjKCaXqeYalltiz8I+8jRRa8YFWSQ
+Eg9zKC7F4iRO/Fjs8PRF/iKz6y+O0tlFYQXBl2+odnKPi4w2r78NBc5xjeambx9spnFixdjQg3IM
+8WcRiQycE0xyNN+81XHfqnHd4blsjDwSXWXavVcStkNr/+XeTWYRUc+ZruwXtuhxkYzeSf7dNXGi
+FSeUHM9h4ya7b6NnJSFd5t0dCy5oGzuCr+yDZ4XUmFF0sbmZgIn/f3gZXHlKYC6SQK5MNyosycdi
+yA5d9zZbyuAlJQG03RoHnHcAP9Dc1ew91Pq7P8yF1m9/qS3fuQL39ZeatTXaw2ewh0qpKJ4jjv9c
+J2vhsE/zB+4ALtRZh8tSQZXq9EfX7mRBVXyNWQKV3WKdwrnuWih0hKWbt5DHDAff9Yk2dDLWKMGw
+sAvgnEzDHNb842m1R0aBL6KCq9NjRHDEjf8tM7qtj3u1cIiuPhnPQCjY/MiQu12ZIvVS5ljFH4gx
+Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9
+-----END CERTIFICATE-----
+
+USERTrust ECC Certification Authority
+=====================================
+-----BEGIN CERTIFICATE-----
+MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
+aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC
+VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
+aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
+biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2
+0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez
+nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV
+HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB
+HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
+9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
+-----END CERTIFICATE-----
+
+GlobalSign ECC Root CA - R4
+===========================
+-----BEGIN CERTIFICATE-----
+MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
+OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
+AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
+MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
+JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
+-----END CERTIFICATE-----
+
+GlobalSign ECC Root CA - R5
+===========================
+-----BEGIN CERTIFICATE-----
+MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
+R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
+EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6
+SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS
+h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
+BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx
+uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
+yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
+-----END CERTIFICATE-----
+
+Staat der Nederlanden Root CA - G3
+==================================
+-----BEGIN CERTIFICATE-----
+MIIFdDCCA1ygAwIBAgIEAJiiOTANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE
+CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
+Um9vdCBDQSAtIEczMB4XDTEzMTExNDExMjg0MloXDTI4MTExMzIzMDAwMFowWjELMAkGA1UEBhMC
+TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l
+ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAL4y
+olQPcPssXFnrbMSkUeiFKrPMSjTysF/zDsccPVMeiAho2G89rcKezIJnByeHaHE6n3WWIkYFsO2t
+x1ueKt6c/DrGlaf1F2cY5y9JCAxcz+bMNO14+1Cx3Gsy8KL+tjzk7FqXxz8ecAgwoNzFs21v0IJy
+EavSgWhZghe3eJJg+szeP4TrjTgzkApyI/o1zCZxMdFyKJLZWyNtZrVtB0LrpjPOktvA9mxjeM3K
+Tj215VKb8b475lRgsGYeCasH/lSJEULR9yS6YHgamPfJEf0WwTUaVHXvQ9Plrk7O53vDxk5hUUur
+mkVLoR9BvUhTFXFkC4az5S6+zqQbwSmEorXLCCN2QyIkHxcE1G6cxvx/K2Ya7Irl1s9N9WMJtxU5
+1nus6+N86U78dULI7ViVDAZCopz35HCz33JvWjdAidiFpNfxC95DGdRKWCyMijmev4SH8RY7Ngzp
+07TKbBlBUgmhHbBqv4LvcFEhMtwFdozL92TkA1CvjJFnq8Xy7ljY3r735zHPbMk7ccHViLVlvMDo
+FxcHErVc0qsgk7TmgoNwNsXNo42ti+yjwUOH5kPiNL6VizXtBznaqB16nzaeErAMZRKQFWDZJkBE
+41ZgpRDUajz9QdwOWke275dhdU/Z/seyHdTtXUmzqWrLZoQT1Vyg3N9udwbRcXXIV2+vD3dbAgMB
+AAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRUrfrHkleu
+yjWcLhL75LpdINyUVzANBgkqhkiG9w0BAQsFAAOCAgEAMJmdBTLIXg47mAE6iqTnB/d6+Oea31BD
+U5cqPco8R5gu4RV78ZLzYdqQJRZlwJ9UXQ4DO1t3ApyEtg2YXzTdO2PCwyiBwpwpLiniyMMB8jPq
+KqrMCQj3ZWfGzd/TtiunvczRDnBfuCPRy5FOCvTIeuXZYzbB1N/8Ipf3YF3qKS9Ysr1YvY2WTxB1
+v0h7PVGHoTx0IsL8B3+A3MSs/mrBcDCw6Y5p4ixpgZQJut3+TcCDjJRYwEYgr5wfAvg1VUkvRtTA
+8KCWAg8zxXHzniN9lLf9OtMJgwYh/WA9rjLA0u6NpvDntIJ8CsxwyXmA+P5M9zWEGYox+wrZ13+b
+8KKaa8MFSu1BYBQw0aoRQm7TIwIEC8Zl3d1Sd9qBa7Ko+gE4uZbqKmxnl4mUnrzhVNXkanjvSr0r
+mj1AfsbAddJu+2gw7OyLnflJNZoaLNmzlTnVHpL3prllL+U9bTpITAjc5CgSKL59NVzq4BZ+Extq
+1z7XnvwtdbLBFNUjA9tbbws+eC8N3jONFrdI54OagQ97wUNNVQQXOEpR1VmiiXTTn74eS9fGbbeI
+JG9gkaSChVtWQbzQRKtqE77RLFi3EjNYsjdj3BP1lB0/QFH1T/U67cjF68IeHRaVesd+QnGTbksV
+tzDfqu1XhUisHWrdOWnk4Xl4vs4Fv6EM94B7IWcnMFk=
+-----END CERTIFICATE-----
+
+Staat der Nederlanden EV Root CA
+================================
+-----BEGIN CERTIFICATE-----
+MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE
+CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
+RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M
+MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl
+cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk
+SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW
+O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r
+0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8
+Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV
+XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr
+08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV
+0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd
+74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx
+fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC
+MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa
+ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI
+eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu
+c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq
+5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN
+b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN
+f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi
+5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4
+WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK
+DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy
+eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg==
+-----END CERTIFICATE-----
+
+IdenTrust Commercial Root CA 1
+==============================
+-----BEGIN CERTIFICATE-----
+MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG
+EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS
+b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES
+MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB
+IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld
+hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/
+mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi
+1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C
+XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl
+3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy
+NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV
+WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg
+xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix
+uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
+AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI
+hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH
+6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg
+ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt
+ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV
+YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX
+feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro
+kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe
+2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz
+Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R
+cGzM7vRX+Bi6hG6H
+-----END CERTIFICATE-----
+
+IdenTrust Public Sector Root CA 1
+=================================
+-----BEGIN CERTIFICATE-----
+MIIFZjCCA06gAwIBAgIQCgFCgAAAAUUjz0Z8AAAAAjANBgkqhkiG9w0BAQsFADBNMQswCQYDVQQG
+EwJVUzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3Rv
+ciBSb290IENBIDEwHhcNMTQwMTE2MTc1MzMyWhcNMzQwMTE2MTc1MzMyWjBNMQswCQYDVQQGEwJV
+UzESMBAGA1UEChMJSWRlblRydXN0MSowKAYDVQQDEyFJZGVuVHJ1c3QgUHVibGljIFNlY3RvciBS
+b290IENBIDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2IpT8pEiv6EdrCvsnduTy
+P4o7ekosMSqMjbCpwzFrqHd2hCa2rIFCDQjrVVi7evi8ZX3yoG2LqEfpYnYeEe4IFNGyRBb06tD6
+Hi9e28tzQa68ALBKK0CyrOE7S8ItneShm+waOh7wCLPQ5CQ1B5+ctMlSbdsHyo+1W/CD80/HLaXI
+rcuVIKQxKFdYWuSNG5qrng0M8gozOSI5Cpcu81N3uURF/YTLNiCBWS2ab21ISGHKTN9T0a9SvESf
+qy9rg3LvdYDaBjMbXcjaY8ZNzaxmMc3R3j6HEDbhuaR672BQssvKplbgN6+rNBM5Jeg5ZuSYeqoS
+mJxZZoY+rfGwyj4GD3vwEUs3oERte8uojHH01bWRNszwFcYr3lEXsZdMUD2xlVl8BX0tIdUAvwFn
+ol57plzy9yLxkA2T26pEUWbMfXYD62qoKjgZl3YNa4ph+bz27nb9cCvdKTz4Ch5bQhyLVi9VGxyh
+LrXHFub4qjySjmm2AcG1hp2JDws4lFTo6tyePSW8Uybt1as5qsVATFSrsrTZ2fjXctscvG29ZV/v
+iDUqZi/u9rNl8DONfJhBaUYPQxxp+pu10GFqzcpL2UyQRqsVWaFHVCkugyhfHMKiq3IXAAaOReyL
+4jM9f9oZRORicsPfIsbyVtTdX5Vy7W1f90gDW/3FKqD2cyOEEBsB5wIDAQABo0IwQDAOBgNVHQ8B
+Af8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU43HgntinQtnbcZFrlJPrw6PRFKMw
+DQYJKoZIhvcNAQELBQADggIBAEf63QqwEZE4rU1d9+UOl1QZgkiHVIyqZJnYWv6IAcVYpZmxI1Qj
+t2odIFflAWJBF9MJ23XLblSQdf4an4EKwt3X9wnQW3IV5B4Jaj0z8yGa5hV+rVHVDRDtfULAj+7A
+mgjVQdZcDiFpboBhDhXAuM/FSRJSzL46zNQuOAXeNf0fb7iAaJg9TaDKQGXSc3z1i9kKlT/YPyNt
+GtEqJBnZhbMX73huqVjRI9PHE+1yJX9dsXNw0H8GlwmEKYBhHfpe/3OsoOOJuBxxFcbeMX8S3OFt
+m6/n6J91eEyrRjuazr8FGF1NFTwWmhlQBJqymm9li1JfPFgEKCXAZmExfrngdbkaqIHWchezxQMx
+NRF4eKLg6TCMf4DfWN88uieW4oA0beOY02QnrEh+KHdcxiVhJfiFDGX6xDIvpZgF5PgLZxYWxoK4
+Mhn5+bl53B/N66+rDt0b20XkeucC4pVd/GnwU2lhlXV5C15V5jgclKlZM57IcXR5f1GJtshquDDI
+ajjDbp7hNxbqBWJMWxJH7ae0s1hWx0nzfxJoCTFx8G34Tkf71oXuxVhAGaQdp/lLQzfcaFpPz+vC
+ZHTetBXZ9FRUGi8c15dxVJCO2SCdUyt/q4/i6jC8UDfv8Ue1fXwsBOxonbRJRBD0ckscZOf85muQ
+3Wl9af0AVqW3rLatt8o+Ae+c
+-----END CERTIFICATE-----
+
+Entrust Root Certification Authority - G2
+=========================================
+-----BEGIN CERTIFICATE-----
+MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV
+BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy
+bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug
+b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw
+HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT
+DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx
+OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s
+eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi
+MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP
+/vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz
+HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU
+s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y
+TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx
+AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6
+0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z
+iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
+Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi
+nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+
+vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO
+e4pIb4tF9g==
+-----END CERTIFICATE-----
+
+Entrust Root Certification Authority - EC1
+==========================================
+-----BEGIN CERTIFICATE-----
+MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx
+FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn
+YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl
+ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
+IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw
+FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs
+LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg
+dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
+IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy
+AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef
+9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
+FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h
+vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8
+kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
+-----END CERTIFICATE-----
+
+CFCA EV ROOT
+============
+-----BEGIN CERTIFICATE-----
+MIIFjTCCA3WgAwIBAgIEGErM1jANBgkqhkiG9w0BAQsFADBWMQswCQYDVQQGEwJDTjEwMC4GA1UE
+CgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQDDAxDRkNB
+IEVWIFJPT1QwHhcNMTIwODA4MDMwNzAxWhcNMjkxMjMxMDMwNzAxWjBWMQswCQYDVQQGEwJDTjEw
+MC4GA1UECgwnQ2hpbmEgRmluYW5jaWFsIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRUwEwYDVQQD
+DAxDRkNBIEVWIFJPT1QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDXXWvNED8fBVnV
+BU03sQ7smCuOFR36k0sXgiFxEFLXUWRwFsJVaU2OFW2fvwwbwuCjZ9YMrM8irq93VCpLTIpTUnrD
+7i7es3ElweldPe6hL6P3KjzJIx1qqx2hp/Hz7KDVRM8Vz3IvHWOX6Jn5/ZOkVIBMUtRSqy5J35DN
+uF++P96hyk0g1CXohClTt7GIH//62pCfCqktQT+x8Rgp7hZZLDRJGqgG16iI0gNyejLi6mhNbiyW
+ZXvKWfry4t3uMCz7zEasxGPrb382KzRzEpR/38wmnvFyXVBlWY9ps4deMm/DGIq1lY+wejfeWkU7
+xzbh72fROdOXW3NiGUgthxwG+3SYIElz8AXSG7Ggo7cbcNOIabla1jj0Ytwli3i/+Oh+uFzJlU9f
+py25IGvPa931DfSCt/SyZi4QKPaXWnuWFo8BGS1sbn85WAZkgwGDg8NNkt0yxoekN+kWzqotaK8K
+gWU6cMGbrU1tVMoqLUuFG7OA5nBFDWteNfB/O7ic5ARwiRIlk9oKmSJgamNgTnYGmE69g60dWIol
+hdLHZR4tjsbftsbhf4oEIRUpdPA+nJCdDC7xij5aqgwJHsfVPKPtl8MeNPo4+QgO48BdK4PRVmrJ
+tqhUUy54Mmc9gn900PvhtgVguXDbjgv5E1hvcWAQUhC5wUEJ73IfZzF4/5YFjQIDAQABo2MwYTAf
+BgNVHSMEGDAWgBTj/i39KNALtbq2osS/BqoFjJP7LzAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB
+/wQEAwIBBjAdBgNVHQ4EFgQU4/4t/SjQC7W6tqLEvwaqBYyT+y8wDQYJKoZIhvcNAQELBQADggIB
+ACXGumvrh8vegjmWPfBEp2uEcwPenStPuiB/vHiyz5ewG5zz13ku9Ui20vsXiObTej/tUxPQ4i9q
+ecsAIyjmHjdXNYmEwnZPNDatZ8POQQaIxffu2Bq41gt/UP+TqhdLjOztUmCypAbqTuv0axn96/Ua
+4CUqmtzHQTb3yHQFhDmVOdYLO6Qn+gjYXB74BGBSESgoA//vU2YApUo0FmZ8/Qmkrp5nGm9BC2sG
+E5uPhnEFtC+NiWYzKXZUmhH4J/qyP5Hgzg0b8zAarb8iXRvTvyUFTeGSGn+ZnzxEk8rUQElsgIfX
+BDrDMlI1Dlb4pd19xIsNER9Tyx6yF7Zod1rg1MvIB671Oi6ON7fQAUtDKXeMOZePglr4UeWJoBjn
+aH9dCi77o0cOPaYjesYBx4/IXr9tgFa+iiS6M+qf4TIRnvHST4D2G0CvOJ4RUHlzEhLN5mydLIhy
+PDCBBpEi6lmt2hkuIsKNuYyH4Ga8cyNfIWRjgEj1oDwYPZTISEEdQLpe/v5WOaHIz16eGWRGENoX
+kbcFgKyLmZJ956LYBws2J+dIeWCKw9cTXPhyQN9Ky8+ZAAoACxGV2lZFA4gKn2fQ1XmxqI1AbQ3C
+ekD6819kR5LLU7m7Wc5P/dAVUwHY3+vZ5nbv0CO7O6l5s9UCKc2Jo5YPSjXnTkLAdc0Hz+Ys63su
+-----END CERTIFICATE-----
index ec3f70ca71f71703dcf96c7ffb715fe02b177f86..cbb65e599aefb3fcb44c60fd051e30a47349c040 100644 (file)
@@ -201,6 +201,7 @@ class IXR_Message
     var $_value;
     var $_currentTag;
     var $_currentTagContents;
+    var $_valueHasType = false;
     // The XML parser
     var $_parser;
 
@@ -268,7 +269,19 @@ class IXR_Message
         xml_set_object($this->_parser, $this);
         xml_set_element_handler($this->_parser, 'tag_open', 'tag_close');
         xml_set_character_data_handler($this->_parser, 'cdata');
-        $chunk_size = 262144; // 256Kb, parse in chunks to avoid the RAM usage on very large messages
+
+        // 256Kb, parse in chunks to avoid the RAM usage on very large messages
+        $chunk_size = 262144;
+
+        /**
+         * Filter the chunk size that can be used to parse an XML-RPC reponse message.
+         *
+         * @since 4.4.0
+         *
+         * @param int $chunk_size Chunk size to parse in bytes.
+         */
+        $chunk_size = apply_filters( 'xmlrpc_chunk_parsing_size', $chunk_size );
+
         $final = false;
         do {
             if (strlen($this->message) <= $chunk_size) {
@@ -312,6 +325,8 @@ class IXR_Message
                 $this->_arraystructstypes[] = 'struct';
                 $this->_arraystructs[] = array();
                 break;
+            case 'value':
+                $this->_valueHasType = false;
         }
     }
 
@@ -343,8 +358,8 @@ class IXR_Message
                 break;
             case 'value':
                 // "If no type is indicated, the type is string."
-                if (trim($this->_currentTagContents) != '') {
-                    $value = (string)$this->_currentTagContents;
+                if ( !$this->_valueHasType ) {
+                    $value = trim( $this->_currentTagContents );
                     $valueFlag = true;
                 }
                 break;
@@ -375,6 +390,8 @@ class IXR_Message
         }
 
         if ($valueFlag) {
+            $this->_valueHasType = true;
+                               
             if (count($this->_arraystructs) > 0) {
                 // Add value to struct or array
                 if ($this->_arraystructstypes[count($this->_arraystructstypes)-1] == 'struct') {
@@ -540,7 +557,6 @@ EOD;
             $xml = '<?xml version="1.0"?>'."\n".$xml;
         $length = strlen($xml);
         header('Connection: close');
-        header('Content-Length: '.$length);
         if ($charset)
             header('Content-Type: text/xml; charset='.$charset);
         else
index 6e109e161616be4e4919d15e555d9c0ffe3a0c05..919440f18e87a93add1b745f53c319e85c2aaa0d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-if ( !class_exists('SimplePie') )
+if ( ! class_exists( 'SimplePie', false ) )
        require_once( ABSPATH . WPINC . '/class-simplepie.php' );
 
 class WP_Feed_Cache extends SimplePie_Cache {
index 5c0829700be416d9f319b4c6debcb365096cc40e..98fda586238284fd309735d593d4e5172198629b 100644 (file)
@@ -1,11 +1,6 @@
 <?php
 /**
- * Simple and uniform HTTP request API.
- *
- * Standardizes the HTTP requests for WordPress. Handles cookies, gzip encoding and decoding, chunk
- * decoding, if HTTP 1.1 and various other difficult HTTP protocol implementations.
- *
- * @link https://core.trac.wordpress.org/ticket/4779 HTTP API Proposal
+ * HTTP API: WP_Http class
  *
  * @package WordPress
  * @subpackage HTTP
@@ -13,7 +8,7 @@
  */
 
 /**
- * WordPress HTTP Class for managing HTTP Transports and making HTTP requests.
+ * Core class used for managing HTTP transports and making HTTP requests.
  *
  * This class is used to consistently make outgoing HTTP requests easy for developers
  * while still being compatible with the many PHP configurations under which
@@ -21,8 +16,6 @@
  *
  * Debugging includes several actions, which pass different variables for debugging the HTTP API.
  *
- * @package WordPress
- * @subpackage HTTP
  * @since 2.7.0
  */
 class WP_Http {
@@ -166,18 +159,25 @@ class WP_Http {
                        $r['_redirection'] = $r['redirection'];
 
                /**
-                * Filter whether to preempt an HTTP request's return.
+                * Filter whether to preempt an HTTP request's return value.
                 *
-                * Returning a truthy value to the filter will short-circuit
-                * the HTTP request and return early with that value.
+                * Returning a non-false value from the filter will short-circuit the HTTP request and return
+                * early with that value. A filter should return either:
+                *
+                *  - An array containing 'headers', 'body', 'response', 'cookies', and 'filename' elements
+                *  - A WP_Error instance
+                *  - boolean false (to avoid short-circuiting the response)
+                *
+                * Returning any other value may result in unexpected behaviour.
                 *
                 * @since 2.9.0
                 *
-                * @param bool   $preempt Whether to preempt an HTTP request return. Default false.
-                * @param array  $r       HTTP request arguments.
-                * @param string $url     The request URL.
+                * @param false|array|WP_Error $preempt Whether to preempt an HTTP request's return value. Default false.
+                * @param array               $r        HTTP request arguments.
+                * @param string              $url      The request URL.
                 */
                $pre = apply_filters( 'pre_http_request', false, $r, $url );
+
                if ( false !== $pre )
                        return $pre;
 
@@ -306,21 +306,25 @@ class WP_Http {
         * @return string|false Class name for the first transport that claims to support the request. False if no transport claims to support the request.
         */
        public function _get_first_available_transport( $args, $url = null ) {
+               $transports = array( 'curl', 'streams' );
                /**
                 * Filter which HTTP transports are available and in what order.
                 *
                 * @since 3.7.0
                 *
-                * @param array  $value Array of HTTP transports to check. Default array contains
-                *                      'curl', and 'streams', in that order.
-                * @param array  $args  HTTP request arguments.
-                * @param string $url   The URL to request.
+                * @param array  $transports Array of HTTP transports to check. Default array contains
+                *                           'curl', and 'streams', in that order.
+                * @param array  $args       HTTP request arguments.
+                * @param string $url        The URL to request.
                 */
-               $request_order = apply_filters( 'http_api_transports', array( 'curl', 'streams' ), $args, $url );
+               $request_order = apply_filters( 'http_api_transports', $transports, $args, $url );
 
                // Loop over each transport on each HTTP request looking for one which will serve this request's needs.
                foreach ( $request_order as $transport ) {
-                       $class = 'WP_HTTP_' . $transport;
+                       if ( in_array( $transport, $transports ) ) {
+                               $transport = ucfirst( $transport );
+                       }
+                       $class = 'WP_Http_' . $transport;
 
                        // Check to see if this transport is a possibility, calls the transport statically.
                        if ( !call_user_func( array( $class, 'test' ), $args, $url ) )
@@ -555,7 +559,7 @@ class WP_Http {
                        // Upgrade any name => value cookie pairs to WP_HTTP_Cookie instances.
                        foreach ( $r['cookies'] as $name => $value ) {
                                if ( ! is_object( $value ) )
-                                       $r['cookies'][ $name ] = new WP_HTTP_Cookie( array( 'name' => $name, 'value' => $value ) );
+                                       $r['cookies'][ $name ] = new WP_Http_Cookie( array( 'name' => $name, 'value' => $value ) );
                        }
 
                        $cookies_header = '';
@@ -682,47 +686,19 @@ class WP_Http {
        }
 
        /**
-        * A wrapper for PHP's parse_url() function that handles edgecases in < PHP 5.4.7
+        * Used as a wrapper for PHP's parse_url() function that handles edgecases in < PHP 5.4.7.
         *
-        * PHP 5.4.7 expanded parse_url()'s ability to handle non-absolute url's, including
-        * schemeless and relative url's with :// in the path, this works around those
-        * limitations providing a standard output on PHP 5.2~5.4+.
-        *
-        * Error suppression is used as prior to PHP 5.3.3, an E_WARNING would be generated
-        * when URL parsing failed.
-        *
-        * @since 4.1.0
-        *
-        * @static
         * @access protected
+        * @deprecated 4.4.0 Use wp_parse_url()
+        * @see wp_parse_url()
         *
         * @param string $url The URL to parse.
         * @return bool|array False on failure; Array of URL components on success;
         *                    See parse_url()'s return values.
         */
        protected static function parse_url( $url ) {
-               $parts = @parse_url( $url );
-               if ( ! $parts ) {
-                       // < PHP 5.4.7 compat, trouble with relative paths including a scheme break in the path
-                       if ( '/' == $url[0] && false !== strpos( $url, '://' ) ) {
-                               // Since we know it's a relative path, prefix with a scheme/host placeholder and try again
-                               if ( ! $parts = @parse_url( 'placeholder://placeholder' . $url ) ) {
-                                       return $parts;
-                               }
-                               // Remove the placeholder values
-                               unset( $parts['scheme'], $parts['host'] );
-                       } else {
-                               return $parts;
-                       }
-               }
-
-               // < PHP 5.4.7 compat, doesn't detect schemeless URL's host field
-               if ( '//' == substr( $url, 0, 2 ) && ! isset( $parts['host'] ) ) {
-                       list( $parts['host'], $slashless_path ) = explode( '/', substr( $parts['path'], 2 ), 2 );
-                       $parts['path'] = "/{$slashless_path}";
-               }
-
-               return $parts;
+               _deprecated_function( __METHOD__, '4.4.0', 'wp_parse_url()' );
+               return wp_parse_url( $url );
        }
 
        /**
@@ -743,11 +719,11 @@ class WP_Http {
                if ( empty( $url ) )
                        return $maybe_relative_path;
 
-               if ( ! $url_parts = WP_HTTP::parse_url( $url ) ) {
+               if ( ! $url_parts = wp_parse_url( $url ) ) {
                        return $maybe_relative_path;
                }
 
-               if ( ! $relative_url_parts = WP_HTTP::parse_url( $maybe_relative_path ) ) {
+               if ( ! $relative_url_parts = wp_parse_url( $maybe_relative_path ) ) {
                        return $maybe_relative_path;
                }
 
@@ -831,7 +807,7 @@ class WP_Http {
                if ( is_array( $redirect_location ) )
                        $redirect_location = array_pop( $redirect_location );
 
-               $redirect_location = WP_HTTP::make_absolute_url( $redirect_location, $url );
+               $redirect_location = WP_Http::make_absolute_url( $redirect_location, $url );
 
                // POST requests should not POST to a redirected location.
                if ( 'POST' == $args['method'] ) {
@@ -877,1430 +853,3 @@ class WP_Http {
        }
 
 }
-
-/**
- * HTTP request method uses PHP Streams to retrieve the url.
- *
- * @since 2.7.0
- * @since 3.7.0 Combined with the fsockopen transport and switched to stream_socket_client().
- */
-class WP_Http_Streams {
-       /**
-        * Send a HTTP request to a URI using PHP Streams.
-        *
-        * @see WP_Http::request For default options descriptions.
-        *
-        * @since 2.7.0
-        * @since 3.7.0 Combined with the fsockopen transport and switched to stream_socket_client().
-        *
-        * @access public
-        * @param string $url The request URL.
-        * @param string|array $args Optional. Override the defaults.
-        * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
-        */
-       public function request($url, $args = array()) {
-               $defaults = array(
-                       'method' => 'GET', 'timeout' => 5,
-                       'redirection' => 5, 'httpversion' => '1.0',
-                       'blocking' => true,
-                       'headers' => array(), 'body' => null, 'cookies' => array()
-               );
-
-               $r = wp_parse_args( $args, $defaults );
-
-               if ( isset( $r['headers']['User-Agent'] ) ) {
-                       $r['user-agent'] = $r['headers']['User-Agent'];
-                       unset( $r['headers']['User-Agent'] );
-               } elseif ( isset( $r['headers']['user-agent'] ) ) {
-                       $r['user-agent'] = $r['headers']['user-agent'];
-                       unset( $r['headers']['user-agent'] );
-               }
-
-               // Construct Cookie: header if any cookies are set.
-               WP_Http::buildCookieHeader( $r );
-
-               $arrURL = parse_url($url);
-
-               $connect_host = $arrURL['host'];
-
-               $secure_transport = ( $arrURL['scheme'] == 'ssl' || $arrURL['scheme'] == 'https' );
-               if ( ! isset( $arrURL['port'] ) ) {
-                       if ( $arrURL['scheme'] == 'ssl' || $arrURL['scheme'] == 'https' ) {
-                               $arrURL['port'] = 443;
-                               $secure_transport = true;
-                       } else {
-                               $arrURL['port'] = 80;
-                       }
-               }
-
-               // Always pass a Path, defaulting to the root in cases such as http://example.com
-               if ( ! isset( $arrURL['path'] ) ) {
-                       $arrURL['path'] = '/';
-               }
-
-               if ( isset( $r['headers']['Host'] ) || isset( $r['headers']['host'] ) ) {
-                       if ( isset( $r['headers']['Host'] ) )
-                               $arrURL['host'] = $r['headers']['Host'];
-                       else
-                               $arrURL['host'] = $r['headers']['host'];
-                       unset( $r['headers']['Host'], $r['headers']['host'] );
-               }
-
-               /*
-                * Certain versions of PHP have issues with 'localhost' and IPv6, It attempts to connect
-                * to ::1, which fails when the server is not set up for it. For compatibility, always
-                * connect to the IPv4 address.
-                */
-               if ( 'localhost' == strtolower( $connect_host ) )
-                       $connect_host = '127.0.0.1';
-
-               $connect_host = $secure_transport ? 'ssl://' . $connect_host : 'tcp://' . $connect_host;
-
-               $is_local = isset( $r['local'] ) && $r['local'];
-               $ssl_verify = isset( $r['sslverify'] ) && $r['sslverify'];
-               if ( $is_local ) {
-                       /**
-                        * Filter whether SSL should be verified for local requests.
-                        *
-                        * @since 2.8.0
-                        *
-                        * @param bool $ssl_verify Whether to verify the SSL connection. Default true.
-                        */
-                       $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify );
-               } elseif ( ! $is_local ) {
-                       /**
-                        * Filter whether SSL should be verified for non-local requests.
-                        *
-                        * @since 2.8.0
-                        *
-                        * @param bool $ssl_verify Whether to verify the SSL connection. Default true.
-                        */
-                       $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify );
-               }
-
-               $proxy = new WP_HTTP_Proxy();
-
-               $context = stream_context_create( array(
-                       'ssl' => array(
-                               'verify_peer' => $ssl_verify,
-                               //'CN_match' => $arrURL['host'], // This is handled by self::verify_ssl_certificate()
-                               'capture_peer_cert' => $ssl_verify,
-                               'SNI_enabled' => true,
-                               'cafile' => $r['sslcertificates'],
-                               'allow_self_signed' => ! $ssl_verify,
-                       )
-               ) );
-
-               $timeout = (int) floor( $r['timeout'] );
-               $utimeout = $timeout == $r['timeout'] ? 0 : 1000000 * $r['timeout'] % 1000000;
-               $connect_timeout = max( $timeout, 1 );
-
-               // Store error number.
-               $connection_error = null;
-
-               // Store error string.
-               $connection_error_str = null;
-
-               if ( !WP_DEBUG ) {
-                       // In the event that the SSL connection fails, silence the many PHP Warnings.
-                       if ( $secure_transport )
-                               $error_reporting = error_reporting(0);
-
-                       if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) )
-                               $handle = @stream_socket_client( 'tcp://' . $proxy->host() . ':' . $proxy->port(), $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
-                       else
-                               $handle = @stream_socket_client( $connect_host . ':' . $arrURL['port'], $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
-
-                       if ( $secure_transport )
-                               error_reporting( $error_reporting );
-
-               } else {
-                       if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) )
-                               $handle = stream_socket_client( 'tcp://' . $proxy->host() . ':' . $proxy->port(), $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
-                       else
-                               $handle = stream_socket_client( $connect_host . ':' . $arrURL['port'], $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
-               }
-
-               if ( false === $handle ) {
-                       // SSL connection failed due to expired/invalid cert, or, OpenSSL configuration is broken.
-                       if ( $secure_transport && 0 === $connection_error && '' === $connection_error_str )
-                               return new WP_Error( 'http_request_failed', __( 'The SSL certificate for the host could not be verified.' ) );
-
-                       return new WP_Error('http_request_failed', $connection_error . ': ' . $connection_error_str );
-               }
-
-               // Verify that the SSL certificate is valid for this request.
-               if ( $secure_transport && $ssl_verify && ! $proxy->is_enabled() ) {
-                       if ( ! self::verify_ssl_certificate( $handle, $arrURL['host'] ) )
-                               return new WP_Error( 'http_request_failed', __( 'The SSL certificate for the host could not be verified.' ) );
-               }
-
-               stream_set_timeout( $handle, $timeout, $utimeout );
-
-               if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) //Some proxies require full URL in this field.
-                       $requestPath = $url;
-               else
-                       $requestPath = $arrURL['path'] . ( isset($arrURL['query']) ? '?' . $arrURL['query'] : '' );
-
-               $strHeaders = strtoupper($r['method']) . ' ' . $requestPath . ' HTTP/' . $r['httpversion'] . "\r\n";
-
-               $include_port_in_host_header = (
-                       ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) ||
-                       ( 'http'  == $arrURL['scheme'] && 80  != $arrURL['port'] ) ||
-                       ( 'https' == $arrURL['scheme'] && 443 != $arrURL['port'] )
-               );
-
-               if ( $include_port_in_host_header ) {
-                       $strHeaders .= 'Host: ' . $arrURL['host'] . ':' . $arrURL['port'] . "\r\n";
-               } else {
-                       $strHeaders .= 'Host: ' . $arrURL['host'] . "\r\n";
-               }
-
-               if ( isset($r['user-agent']) )
-                       $strHeaders .= 'User-agent: ' . $r['user-agent'] . "\r\n";
-
-               if ( is_array($r['headers']) ) {
-                       foreach ( (array) $r['headers'] as $header => $headerValue )
-                               $strHeaders .= $header . ': ' . $headerValue . "\r\n";
-               } else {
-                       $strHeaders .= $r['headers'];
-               }
-
-               if ( $proxy->use_authentication() )
-                       $strHeaders .= $proxy->authentication_header() . "\r\n";
-
-               $strHeaders .= "\r\n";
-
-               if ( ! is_null($r['body']) )
-                       $strHeaders .= $r['body'];
-
-               fwrite($handle, $strHeaders);
-
-               if ( ! $r['blocking'] ) {
-                       stream_set_blocking( $handle, 0 );
-                       fclose( $handle );
-                       return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
-               }
-
-               $strResponse = '';
-               $bodyStarted = false;
-               $keep_reading = true;
-               $block_size = 4096;
-               if ( isset( $r['limit_response_size'] ) )
-                       $block_size = min( $block_size, $r['limit_response_size'] );
-
-               // If streaming to a file setup the file handle.
-               if ( $r['stream'] ) {
-                       if ( ! WP_DEBUG )
-                               $stream_handle = @fopen( $r['filename'], 'w+' );
-                       else
-                               $stream_handle = fopen( $r['filename'], 'w+' );
-                       if ( ! $stream_handle )
-                               return new WP_Error( 'http_request_failed', sprintf( __( 'Could not open handle for fopen() to %s' ), $r['filename'] ) );
-
-                       $bytes_written = 0;
-                       while ( ! feof($handle) && $keep_reading ) {
-                               $block = fread( $handle, $block_size );
-                               if ( ! $bodyStarted ) {
-                                       $strResponse .= $block;
-                                       if ( strpos( $strResponse, "\r\n\r\n" ) ) {
-                                               $process = WP_Http::processResponse( $strResponse );
-                                               $bodyStarted = true;
-                                               $block = $process['body'];
-                                               unset( $strResponse );
-                                               $process['body'] = '';
-                                       }
-                               }
-
-                               $this_block_size = strlen( $block );
-
-                               if ( isset( $r['limit_response_size'] ) && ( $bytes_written + $this_block_size ) > $r['limit_response_size'] ) {
-                                       $this_block_size = ( $r['limit_response_size'] - $bytes_written );
-                                       $block = substr( $block, 0, $this_block_size );
-                               }
-
-                               $bytes_written_to_file = fwrite( $stream_handle, $block );
-
-                               if ( $bytes_written_to_file != $this_block_size ) {
-                                       fclose( $handle );
-                                       fclose( $stream_handle );
-                                       return new WP_Error( 'http_request_failed', __( 'Failed to write request to temporary file.' ) );
-                               }
-
-                               $bytes_written += $bytes_written_to_file;
-
-                               $keep_reading = !isset( $r['limit_response_size'] ) || $bytes_written < $r['limit_response_size'];
-                       }
-
-                       fclose( $stream_handle );
-
-               } else {
-                       $header_length = 0;
-                       while ( ! feof( $handle ) && $keep_reading ) {
-                               $block = fread( $handle, $block_size );
-                               $strResponse .= $block;
-                               if ( ! $bodyStarted && strpos( $strResponse, "\r\n\r\n" ) ) {
-                                       $header_length = strpos( $strResponse, "\r\n\r\n" ) + 4;
-                                       $bodyStarted = true;
-                               }
-                               $keep_reading = ( ! $bodyStarted || !isset( $r['limit_response_size'] ) || strlen( $strResponse ) < ( $header_length + $r['limit_response_size'] ) );
-                       }
-
-                       $process = WP_Http::processResponse( $strResponse );
-                       unset( $strResponse );
-
-               }
-
-               fclose( $handle );
-
-               $arrHeaders = WP_Http::processHeaders( $process['headers'], $url );
-
-               $response = array(
-                       'headers' => $arrHeaders['headers'],
-                       // Not yet processed.
-                       'body' => null,
-                       'response' => $arrHeaders['response'],
-                       'cookies' => $arrHeaders['cookies'],
-                       'filename' => $r['filename']
-               );
-
-               // Handle redirects.
-               if ( false !== ( $redirect_response = WP_HTTP::handle_redirects( $url, $r, $response ) ) )
-                       return $redirect_response;
-
-               // If the body was chunk encoded, then decode it.
-               if ( ! empty( $process['body'] ) && isset( $arrHeaders['headers']['transfer-encoding'] ) && 'chunked' == $arrHeaders['headers']['transfer-encoding'] )
-                       $process['body'] = WP_Http::chunkTransferDecode($process['body']);
-
-               if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($arrHeaders['headers']) )
-                       $process['body'] = WP_Http_Encoding::decompress( $process['body'] );
-
-               if ( isset( $r['limit_response_size'] ) && strlen( $process['body'] ) > $r['limit_response_size'] )
-                       $process['body'] = substr( $process['body'], 0, $r['limit_response_size'] );
-
-               $response['body'] = $process['body'];
-
-               return $response;
-       }
-
-       /**
-        * Verifies the received SSL certificate against it's Common Names and subjectAltName fields
-        *
-        * PHP's SSL verifications only verify that it's a valid Certificate, it doesn't verify if
-        * the certificate is valid for the hostname which was requested.
-        * This function verifies the requested hostname against certificate's subjectAltName field,
-        * if that is empty, or contains no DNS entries, a fallback to the Common Name field is used.
-        *
-        * IP Address support is included if the request is being made to an IP address.
-        *
-        * @since 3.7.0
-        * @static
-        *
-        * @param stream $stream The PHP Stream which the SSL request is being made over
-        * @param string $host The hostname being requested
-        * @return bool If the cerficiate presented in $stream is valid for $host
-        */
-       public static function verify_ssl_certificate( $stream, $host ) {
-               $context_options = stream_context_get_options( $stream );
-
-               if ( empty( $context_options['ssl']['peer_certificate'] ) )
-                       return false;
-
-               $cert = openssl_x509_parse( $context_options['ssl']['peer_certificate'] );
-               if ( ! $cert )
-                       return false;
-
-               /*
-                * If the request is being made to an IP address, we'll validate against IP fields
-                * in the cert (if they exist)
-                */
-               $host_type = ( WP_HTTP::is_ip_address( $host ) ? 'ip' : 'dns' );
-
-               $certificate_hostnames = array();
-               if ( ! empty( $cert['extensions']['subjectAltName'] ) ) {
-                       $match_against = preg_split( '/,\s*/', $cert['extensions']['subjectAltName'] );
-                       foreach ( $match_against as $match ) {
-                               list( $match_type, $match_host ) = explode( ':', $match );
-                               if ( $host_type == strtolower( trim( $match_type ) ) ) // IP: or DNS:
-                                       $certificate_hostnames[] = strtolower( trim( $match_host ) );
-                       }
-               } elseif ( !empty( $cert['subject']['CN'] ) ) {
-                       // Only use the CN when the certificate includes no subjectAltName extension.
-                       $certificate_hostnames[] = strtolower( $cert['subject']['CN'] );
-               }
-
-               // Exact hostname/IP matches.
-               if ( in_array( strtolower( $host ), $certificate_hostnames ) )
-                       return true;
-
-               // IP's can't be wildcards, Stop processing.
-               if ( 'ip' == $host_type )
-                       return false;
-
-               // Test to see if the domain is at least 2 deep for wildcard support.
-               if ( substr_count( $host, '.' ) < 2 )
-                       return false;
-
-               // Wildcard subdomains certs (*.example.com) are valid for a.example.com but not a.b.example.com.
-               $wildcard_host = preg_replace( '/^[^.]+\./', '*.', $host );
-
-               return in_array( strtolower( $wildcard_host ), $certificate_hostnames );
-       }
-
-       /**
-        * Whether this class can be used for retrieving a URL.
-        *
-        * @static
-        * @access public
-        * @since 2.7.0
-        * @since 3.7.0 Combined with the fsockopen transport and switched to stream_socket_client().
-        *
-        * @return bool False means this class can not be used, true means it can.
-        */
-       public static function test( $args = array() ) {
-               if ( ! function_exists( 'stream_socket_client' ) )
-                       return false;
-
-               $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
-
-               if ( $is_ssl ) {
-                       if ( ! extension_loaded( 'openssl' ) )
-                               return false;
-                       if ( ! function_exists( 'openssl_x509_parse' ) )
-                               return false;
-               }
-
-               /**
-                * Filter whether streams can be used as a transport for retrieving a URL.
-                *
-                * @since 2.7.0
-                *
-                * @param bool  $use_class Whether the class can be used. Default true.
-                * @param array $args      Request arguments.
-                */
-               return apply_filters( 'use_streams_transport', true, $args );
-       }
-}
-
-/**
- * Deprecated HTTP Transport method which used fsockopen.
- *
- * This class is not used, and is included for backwards compatibility only.
- * All code should make use of WP_HTTP directly through it's API.
- *
- * @see WP_HTTP::request
- *
- * @since 2.7.0
- * @deprecated 3.7.0 Please use WP_HTTP::request() directly
- */
-class WP_HTTP_Fsockopen extends WP_HTTP_Streams {
-       // For backwards compatibility for users who are using the class directly.
-}
-
-/**
- * HTTP request method uses Curl extension to retrieve the url.
- *
- * Requires the Curl extension to be installed.
- *
- * @package WordPress
- * @subpackage HTTP
- * @since 2.7.0
- */
-class WP_Http_Curl {
-
-       /**
-        * Temporary header storage for during requests.
-        *
-        * @since 3.2.0
-        * @access private
-        * @var string
-        */
-       private $headers = '';
-
-       /**
-        * Temporary body storage for during requests.
-        *
-        * @since 3.6.0
-        * @access private
-        * @var string
-        */
-       private $body = '';
-
-       /**
-        * The maximum amount of data to receive from the remote server.
-        *
-        * @since 3.6.0
-        * @access private
-        * @var int
-        */
-       private $max_body_length = false;
-
-       /**
-        * The file resource used for streaming to file.
-        *
-        * @since 3.6.0
-        * @access private
-        * @var resource
-        */
-       private $stream_handle = false;
-
-       /**
-        * The total bytes written in the current request.
-        *
-        * @since 4.1.0
-        * @access private
-        * @var int
-        */
-       private $bytes_written_total = 0;
-
-       /**
-        * Send a HTTP request to a URI using cURL extension.
-        *
-        * @access public
-        * @since 2.7.0
-        *
-        * @param string $url The request URL.
-        * @param string|array $args Optional. Override the defaults.
-        * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
-        */
-       public function request($url, $args = array()) {
-               $defaults = array(
-                       'method' => 'GET', 'timeout' => 5,
-                       'redirection' => 5, 'httpversion' => '1.0',
-                       'blocking' => true,
-                       'headers' => array(), 'body' => null, 'cookies' => array()
-               );
-
-               $r = wp_parse_args( $args, $defaults );
-
-               if ( isset( $r['headers']['User-Agent'] ) ) {
-                       $r['user-agent'] = $r['headers']['User-Agent'];
-                       unset( $r['headers']['User-Agent'] );
-               } elseif ( isset( $r['headers']['user-agent'] ) ) {
-                       $r['user-agent'] = $r['headers']['user-agent'];
-                       unset( $r['headers']['user-agent'] );
-               }
-
-               // Construct Cookie: header if any cookies are set.
-               WP_Http::buildCookieHeader( $r );
-
-               $handle = curl_init();
-
-               // cURL offers really easy proxy support.
-               $proxy = new WP_HTTP_Proxy();
-
-               if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) {
-
-                       curl_setopt( $handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP );
-                       curl_setopt( $handle, CURLOPT_PROXY, $proxy->host() );
-                       curl_setopt( $handle, CURLOPT_PROXYPORT, $proxy->port() );
-
-                       if ( $proxy->use_authentication() ) {
-                               curl_setopt( $handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY );
-                               curl_setopt( $handle, CURLOPT_PROXYUSERPWD, $proxy->authentication() );
-                       }
-               }
-
-               $is_local = isset($r['local']) && $r['local'];
-               $ssl_verify = isset($r['sslverify']) && $r['sslverify'];
-               if ( $is_local ) {
-                       /** This filter is documented in wp-includes/class-http.php */
-                       $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify );
-               } elseif ( ! $is_local ) {
-                       /** This filter is documented in wp-includes/class-http.php */
-                       $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify );
-               }
-
-               /*
-                * CURLOPT_TIMEOUT and CURLOPT_CONNECTTIMEOUT expect integers. Have to use ceil since.
-                * a value of 0 will allow an unlimited timeout.
-                */
-               $timeout = (int) ceil( $r['timeout'] );
-               curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout );
-               curl_setopt( $handle, CURLOPT_TIMEOUT, $timeout );
-
-               curl_setopt( $handle, CURLOPT_URL, $url);
-               curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true );
-               curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, ( $ssl_verify === true ) ? 2 : false );
-               curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify );
-               curl_setopt( $handle, CURLOPT_CAINFO, $r['sslcertificates'] );
-               curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] );
-
-               /*
-                * The option doesn't work with safe mode or when open_basedir is set, and there's
-                * a bug #17490 with redirected POST requests, so handle redirections outside Curl.
-                */
-               curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, false );
-               if ( defined( 'CURLOPT_PROTOCOLS' ) ) // PHP 5.2.10 / cURL 7.19.4
-                       curl_setopt( $handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS );
-
-               switch ( $r['method'] ) {
-                       case 'HEAD':
-                               curl_setopt( $handle, CURLOPT_NOBODY, true );
-                               break;
-                       case 'POST':
-                               curl_setopt( $handle, CURLOPT_POST, true );
-                               curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
-                               break;
-                       case 'PUT':
-                               curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, 'PUT' );
-                               curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
-                               break;
-                       default:
-                               curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, $r['method'] );
-                               if ( ! is_null( $r['body'] ) )
-                                       curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
-                               break;
-               }
-
-               if ( true === $r['blocking'] ) {
-                       curl_setopt( $handle, CURLOPT_HEADERFUNCTION, array( $this, 'stream_headers' ) );
-                       curl_setopt( $handle, CURLOPT_WRITEFUNCTION, array( $this, 'stream_body' ) );
-               }
-
-               curl_setopt( $handle, CURLOPT_HEADER, false );
-
-               if ( isset( $r['limit_response_size'] ) )
-                       $this->max_body_length = intval( $r['limit_response_size'] );
-               else
-                       $this->max_body_length = false;
-
-               // If streaming to a file open a file handle, and setup our curl streaming handler.
-               if ( $r['stream'] ) {
-                       if ( ! WP_DEBUG )
-                               $this->stream_handle = @fopen( $r['filename'], 'w+' );
-                       else
-                               $this->stream_handle = fopen( $r['filename'], 'w+' );
-                       if ( ! $this->stream_handle )
-                               return new WP_Error( 'http_request_failed', sprintf( __( 'Could not open handle for fopen() to %s' ), $r['filename'] ) );
-               } else {
-                       $this->stream_handle = false;
-               }
-
-               if ( !empty( $r['headers'] ) ) {
-                       // cURL expects full header strings in each element.
-                       $headers = array();
-                       foreach ( $r['headers'] as $name => $value ) {
-                               $headers[] = "{$name}: $value";
-                       }
-                       curl_setopt( $handle, CURLOPT_HTTPHEADER, $headers );
-               }
-
-               if ( $r['httpversion'] == '1.0' )
-                       curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 );
-               else
-                       curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
-
-               /**
-                * Fires before the cURL request is executed.
-                *
-                * Cookies are not currently handled by the HTTP API. This action allows
-                * plugins to handle cookies themselves.
-                *
-                * @since 2.8.0
-                *
-                * @param resource &$handle The cURL handle returned by curl_init().
-                * @param array    $r       The HTTP request arguments.
-                * @param string   $url     The request URL.
-                */
-               do_action_ref_array( 'http_api_curl', array( &$handle, $r, $url ) );
-
-               // We don't need to return the body, so don't. Just execute request and return.
-               if ( ! $r['blocking'] ) {
-                       curl_exec( $handle );
-
-                       if ( $curl_error = curl_error( $handle ) ) {
-                               curl_close( $handle );
-                               return new WP_Error( 'http_request_failed', $curl_error );
-                       }
-                       if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ) ) ) {
-                               curl_close( $handle );
-                               return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
-                       }
-
-                       curl_close( $handle );
-                       return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
-               }
-
-               curl_exec( $handle );
-               $theHeaders = WP_Http::processHeaders( $this->headers, $url );
-               $theBody = $this->body;
-               $bytes_written_total = $this->bytes_written_total;
-
-               $this->headers = '';
-               $this->body = '';
-               $this->bytes_written_total = 0;
-
-               $curl_error = curl_errno( $handle );
-
-               // If an error occurred, or, no response.
-               if ( $curl_error || ( 0 == strlen( $theBody ) && empty( $theHeaders['headers'] ) ) ) {
-                       if ( CURLE_WRITE_ERROR /* 23 */ == $curl_error ) {
-                               if ( ! $this->max_body_length || $this->max_body_length != $bytes_written_total ) {
-                                       if ( $r['stream'] ) {
-                                               curl_close( $handle );
-                                               fclose( $this->stream_handle );
-                                               return new WP_Error( 'http_request_failed', __( 'Failed to write request to temporary file.' ) );
-                                       } else {
-                                               curl_close( $handle );
-                                               return new WP_Error( 'http_request_failed', curl_error( $handle ) );
-                                       }
-                               }
-                       } else {
-                               if ( $curl_error = curl_error( $handle ) ) {
-                                       curl_close( $handle );
-                                       return new WP_Error( 'http_request_failed', $curl_error );
-                               }
-                       }
-                       if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ) ) ) {
-                               curl_close( $handle );
-                               return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
-                       }
-               }
-
-               curl_close( $handle );
-
-               if ( $r['stream'] )
-                       fclose( $this->stream_handle );
-
-               $response = array(
-                       'headers' => $theHeaders['headers'],
-                       'body' => null,
-                       'response' => $theHeaders['response'],
-                       'cookies' => $theHeaders['cookies'],
-                       'filename' => $r['filename']
-               );
-
-               // Handle redirects.
-               if ( false !== ( $redirect_response = WP_HTTP::handle_redirects( $url, $r, $response ) ) )
-                       return $redirect_response;
-
-               if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers']) )
-                       $theBody = WP_Http_Encoding::decompress( $theBody );
-
-               $response['body'] = $theBody;
-
-               return $response;
-       }
-
-       /**
-        * Grab the headers of the cURL request
-        *
-        * Each header is sent individually to this callback, so we append to the $header property for temporary storage
-        *
-        * @since 3.2.0
-        * @access private
-        * @return int
-        */
-       private function stream_headers( $handle, $headers ) {
-               $this->headers .= $headers;
-               return strlen( $headers );
-       }
-
-       /**
-        * Grab the body of the cURL request
-        *
-        * The contents of the document are passed in chunks, so we append to the $body property for temporary storage.
-        * Returning a length shorter than the length of $data passed in will cause cURL to abort the request with CURLE_WRITE_ERROR
-        *
-        * @since 3.6.0
-        * @access private
-        * @return int
-        */
-       private function stream_body( $handle, $data ) {
-               $data_length = strlen( $data );
-
-               if ( $this->max_body_length && ( $this->bytes_written_total + $data_length ) > $this->max_body_length ) {
-                       $data_length = ( $this->max_body_length - $this->bytes_written_total );
-                       $data = substr( $data, 0, $data_length );
-               }
-
-               if ( $this->stream_handle ) {
-                       $bytes_written = fwrite( $this->stream_handle, $data );
-               } else {
-                       $this->body .= $data;
-                       $bytes_written = $data_length;
-               }
-
-               $this->bytes_written_total += $bytes_written;
-
-               // Upon event of this function returning less than strlen( $data ) curl will error with CURLE_WRITE_ERROR.
-               return $bytes_written;
-       }
-
-       /**
-        * Whether this class can be used for retrieving an URL.
-        *
-        * @static
-        * @since 2.7.0
-        *
-        * @return bool False means this class can not be used, true means it can.
-        */
-       public static function test( $args = array() ) {
-               if ( ! function_exists( 'curl_init' ) || ! function_exists( 'curl_exec' ) )
-                       return false;
-
-               $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
-
-               if ( $is_ssl ) {
-                       $curl_version = curl_version();
-                       // Check whether this cURL version support SSL requests.
-                       if ( ! (CURL_VERSION_SSL & $curl_version['features']) )
-                               return false;
-               }
-
-               /**
-                * Filter whether cURL can be used as a transport for retrieving a URL.
-                *
-                * @since 2.7.0
-                *
-                * @param bool  $use_class Whether the class can be used. Default true.
-                * @param array $args      An array of request arguments.
-                */
-               return apply_filters( 'use_curl_transport', true, $args );
-       }
-}
-
-/**
- * Adds Proxy support to the WordPress HTTP API.
- *
- * There are caveats to proxy support. It requires that defines be made in the wp-config.php file to
- * enable proxy support. There are also a few filters that plugins can hook into for some of the
- * constants.
- *
- * Please note that only BASIC authentication is supported by most transports.
- * cURL MAY support more methods (such as NTLM authentication) depending on your environment.
- *
- * The constants are as follows:
- * <ol>
- * <li>WP_PROXY_HOST - Enable proxy support and host for connecting.</li>
- * <li>WP_PROXY_PORT - Proxy port for connection. No default, must be defined.</li>
- * <li>WP_PROXY_USERNAME - Proxy username, if it requires authentication.</li>
- * <li>WP_PROXY_PASSWORD - Proxy password, if it requires authentication.</li>
- * <li>WP_PROXY_BYPASS_HOSTS - Will prevent the hosts in this list from going through the proxy.
- * You do not need to have localhost and the blog host in this list, because they will not be passed
- * through the proxy. The list should be presented in a comma separated list, wildcards using * are supported, eg. *.wordpress.org</li>
- * </ol>
- *
- * An example can be as seen below.
- *
- *     define('WP_PROXY_HOST', '192.168.84.101');
- *     define('WP_PROXY_PORT', '8080');
- *     define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com, *.wordpress.org');
- *
- * @link https://core.trac.wordpress.org/ticket/4011 Proxy support ticket in WordPress.
- * @link https://core.trac.wordpress.org/ticket/14636 Allow wildcard domains in WP_PROXY_BYPASS_HOSTS
- * @since 2.8.0
- */
-class WP_HTTP_Proxy {
-
-       /**
-        * Whether proxy connection should be used.
-        *
-        * @since 2.8.0
-        *
-        * @use WP_PROXY_HOST
-        * @use WP_PROXY_PORT
-        *
-        * @return bool
-        */
-       public function is_enabled() {
-               return defined('WP_PROXY_HOST') && defined('WP_PROXY_PORT');
-       }
-
-       /**
-        * Whether authentication should be used.
-        *
-        * @since 2.8.0
-        *
-        * @use WP_PROXY_USERNAME
-        * @use WP_PROXY_PASSWORD
-        *
-        * @return bool
-        */
-       public function use_authentication() {
-               return defined('WP_PROXY_USERNAME') && defined('WP_PROXY_PASSWORD');
-       }
-
-       /**
-        * Retrieve the host for the proxy server.
-        *
-        * @since 2.8.0
-        *
-        * @return string
-        */
-       public function host() {
-               if ( defined('WP_PROXY_HOST') )
-                       return WP_PROXY_HOST;
-
-               return '';
-       }
-
-       /**
-        * Retrieve the port for the proxy server.
-        *
-        * @since 2.8.0
-        *
-        * @return string
-        */
-       public function port() {
-               if ( defined('WP_PROXY_PORT') )
-                       return WP_PROXY_PORT;
-
-               return '';
-       }
-
-       /**
-        * Retrieve the username for proxy authentication.
-        *
-        * @since 2.8.0
-        *
-        * @return string
-        */
-       public function username() {
-               if ( defined('WP_PROXY_USERNAME') )
-                       return WP_PROXY_USERNAME;
-
-               return '';
-       }
-
-       /**
-        * Retrieve the password for proxy authentication.
-        *
-        * @since 2.8.0
-        *
-        * @return string
-        */
-       public function password() {
-               if ( defined('WP_PROXY_PASSWORD') )
-                       return WP_PROXY_PASSWORD;
-
-               return '';
-       }
-
-       /**
-        * Retrieve authentication string for proxy authentication.
-        *
-        * @since 2.8.0
-        *
-        * @return string
-        */
-       public function authentication() {
-               return $this->username() . ':' . $this->password();
-       }
-
-       /**
-        * Retrieve header string for proxy authentication.
-        *
-        * @since 2.8.0
-        *
-        * @return string
-        */
-       public function authentication_header() {
-               return 'Proxy-Authorization: Basic ' . base64_encode( $this->authentication() );
-       }
-
-       /**
-        * Whether URL should be sent through the proxy server.
-        *
-        * We want to keep localhost and the blog URL from being sent through the proxy server, because
-        * some proxies can not handle this. We also have the constant available for defining other
-        * hosts that won't be sent through the proxy.
-        *
-        * @since 2.8.0
-        *
-        * @staticvar array|null $bypass_hosts
-        * @staticvar array      $wildcard_regex
-        *
-        * @param string $uri URI to check.
-        * @return bool True, to send through the proxy and false if, the proxy should not be used.
-        */
-       public function send_through_proxy( $uri ) {
-               /*
-                * parse_url() only handles http, https type URLs, and will emit E_WARNING on failure.
-                * This will be displayed on blogs, which is not reasonable.
-                */
-               $check = @parse_url($uri);
-
-               // Malformed URL, can not process, but this could mean ssl, so let through anyway.
-               if ( $check === false )
-                       return true;
-
-               $home = parse_url( get_option('siteurl') );
-
-               /**
-                * Filter whether to preempt sending the request through the proxy server.
-                *
-                * Returning false will bypass the proxy; returning true will send
-                * the request through the proxy. Returning null bypasses the filter.
-                *
-                * @since 3.5.0
-                *
-                * @param null   $override Whether to override the request result. Default null.
-                * @param string $uri      URL to check.
-                * @param array  $check    Associative array result of parsing the URI.
-                * @param array  $home     Associative array result of parsing the site URL.
-                */
-               $result = apply_filters( 'pre_http_send_through_proxy', null, $uri, $check, $home );
-               if ( ! is_null( $result ) )
-                       return $result;
-
-               if ( 'localhost' == $check['host'] || ( isset( $home['host'] ) && $home['host'] == $check['host'] ) )
-                       return false;
-
-               if ( !defined('WP_PROXY_BYPASS_HOSTS') )
-                       return true;
-
-               static $bypass_hosts = null;
-               static $wildcard_regex = array();
-               if ( null === $bypass_hosts ) {
-                       $bypass_hosts = preg_split('|,\s*|', WP_PROXY_BYPASS_HOSTS);
-
-                       if ( false !== strpos(WP_PROXY_BYPASS_HOSTS, '*') ) {
-                               $wildcard_regex = array();
-                               foreach ( $bypass_hosts as $host )
-                                       $wildcard_regex[] = str_replace( '\*', '.+', preg_quote( $host, '/' ) );
-                               $wildcard_regex = '/^(' . implode('|', $wildcard_regex) . ')$/i';
-                       }
-               }
-
-               if ( !empty($wildcard_regex) )
-                       return !preg_match($wildcard_regex, $check['host']);
-               else
-                       return !in_array( $check['host'], $bypass_hosts );
-       }
-}
-/**
- * Internal representation of a single cookie.
- *
- * Returned cookies are represented using this class, and when cookies are set, if they are not
- * already a WP_Http_Cookie() object, then they are turned into one.
- *
- * @todo The WordPress convention is to use underscores instead of camelCase for function and method
- * names. Need to switch to use underscores instead for the methods.
- *
- * @package WordPress
- * @subpackage HTTP
- * @since 2.8.0
- */
-class WP_Http_Cookie {
-
-       /**
-        * Cookie name.
-        *
-        * @since 2.8.0
-        * @var string
-        */
-       public $name;
-
-       /**
-        * Cookie value.
-        *
-        * @since 2.8.0
-        * @var string
-        */
-       public $value;
-
-       /**
-        * When the cookie expires.
-        *
-        * @since 2.8.0
-        * @var string
-        */
-       public $expires;
-
-       /**
-        * Cookie URL path.
-        *
-        * @since 2.8.0
-        * @var string
-        */
-       public $path;
-
-       /**
-        * Cookie Domain.
-        *
-        * @since 2.8.0
-        * @var string
-        */
-       public $domain;
-
-       /**
-        * Sets up this cookie object.
-        *
-        * The parameter $data should be either an associative array containing the indices names below
-        * or a header string detailing it.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param string|array $data {
-        *     Raw cookie data as header string or data array.
-        *
-        *     @type string     $name    Cookie name.
-        *     @type mixed      $value   Value. Should NOT already be urlencoded.
-        *     @type string|int $expires Optional. Unix timestamp or formatted date. Default null.
-        *     @type string     $path    Optional. Path. Default '/'.
-        *     @type string     $domain  Optional. Domain. Default host of parsed $requested_url.
-        *     @type int        $port    Optional. Port. Default null.
-        * }
-        * @param string       $requested_url The URL which the cookie was set on, used for default $domain
-        *                                    and $port values.
-        */
-       public function __construct( $data, $requested_url = '' ) {
-               if ( $requested_url )
-                       $arrURL = @parse_url( $requested_url );
-               if ( isset( $arrURL['host'] ) )
-                       $this->domain = $arrURL['host'];
-               $this->path = isset( $arrURL['path'] ) ? $arrURL['path'] : '/';
-               if (  '/' != substr( $this->path, -1 ) )
-                       $this->path = dirname( $this->path ) . '/';
-
-               if ( is_string( $data ) ) {
-                       // Assume it's a header string direct from a previous request.
-                       $pairs = explode( ';', $data );
-
-                       // Special handling for first pair; name=value. Also be careful of "=" in value.
-                       $name  = trim( substr( $pairs[0], 0, strpos( $pairs[0], '=' ) ) );
-                       $value = substr( $pairs[0], strpos( $pairs[0], '=' ) + 1 );
-                       $this->name  = $name;
-                       $this->value = urldecode( $value );
-
-                       // Removes name=value from items.
-                       array_shift( $pairs );
-
-                       // Set everything else as a property.
-                       foreach ( $pairs as $pair ) {
-                               $pair = rtrim($pair);
-
-                               // Handle the cookie ending in ; which results in a empty final pair.
-                               if ( empty($pair) )
-                                       continue;
-
-                               list( $key, $val ) = strpos( $pair, '=' ) ? explode( '=', $pair ) : array( $pair, '' );
-                               $key = strtolower( trim( $key ) );
-                               if ( 'expires' == $key )
-                                       $val = strtotime( $val );
-                               $this->$key = $val;
-                       }
-               } else {
-                       if ( !isset( $data['name'] ) )
-                               return;
-
-                       // Set properties based directly on parameters.
-                       foreach ( array( 'name', 'value', 'path', 'domain', 'port' ) as $field ) {
-                               if ( isset( $data[ $field ] ) )
-                                       $this->$field = $data[ $field ];
-                       }
-
-                       if ( isset( $data['expires'] ) )
-                               $this->expires = is_int( $data['expires'] ) ? $data['expires'] : strtotime( $data['expires'] );
-                       else
-                               $this->expires = null;
-               }
-       }
-
-       /**
-        * Confirms that it's OK to send this cookie to the URL checked against.
-        *
-        * Decision is based on RFC 2109/2965, so look there for details on validity.
-        *
-        * @access public
-        * @since 2.8.0
-        *
-        * @param string $url URL you intend to send this cookie to
-        * @return bool true if allowed, false otherwise.
-        */
-       public function test( $url ) {
-               if ( is_null( $this->name ) )
-                       return false;
-
-               // Expires - if expired then nothing else matters.
-               if ( isset( $this->expires ) && time() > $this->expires )
-                       return false;
-
-               // Get details on the URL we're thinking about sending to.
-               $url = parse_url( $url );
-               $url['port'] = isset( $url['port'] ) ? $url['port'] : ( 'https' == $url['scheme'] ? 443 : 80 );
-               $url['path'] = isset( $url['path'] ) ? $url['path'] : '/';
-
-               // Values to use for comparison against the URL.
-               $path   = isset( $this->path )   ? $this->path   : '/';
-               $port   = isset( $this->port )   ? $this->port   : null;
-               $domain = isset( $this->domain ) ? strtolower( $this->domain ) : strtolower( $url['host'] );
-               if ( false === stripos( $domain, '.' ) )
-                       $domain .= '.local';
-
-               // Host - very basic check that the request URL ends with the domain restriction (minus leading dot).
-               $domain = substr( $domain, 0, 1 ) == '.' ? substr( $domain, 1 ) : $domain;
-               if ( substr( $url['host'], -strlen( $domain ) ) != $domain )
-                       return false;
-
-               // Port - supports "port-lists" in the format: "80,8000,8080".
-               if ( !empty( $port ) && !in_array( $url['port'], explode( ',', $port) ) )
-                       return false;
-
-               // Path - request path must start with path restriction.
-               if ( substr( $url['path'], 0, strlen( $path ) ) != $path )
-                       return false;
-
-               return true;
-       }
-
-       /**
-        * Convert cookie name and value back to header string.
-        *
-        * @access public
-        * @since 2.8.0
-        *
-        * @return string Header encoded cookie name and value.
-        */
-       public function getHeaderValue() {
-               if ( ! isset( $this->name ) || ! isset( $this->value ) )
-                       return '';
-
-               /**
-                * Filter the header-encoded cookie value.
-                *
-                * @since 3.4.0
-                *
-                * @param string $value The cookie value.
-                * @param string $name  The cookie name.
-                */
-               return $this->name . '=' . apply_filters( 'wp_http_cookie_value', $this->value, $this->name );
-       }
-
-       /**
-        * Retrieve cookie header for usage in the rest of the WordPress HTTP API.
-        *
-        * @access public
-        * @since 2.8.0
-        *
-        * @return string
-        */
-       public function getFullHeader() {
-               return 'Cookie: ' . $this->getHeaderValue();
-       }
-}
-
-/**
- * Implementation for deflate and gzip transfer encodings.
- *
- * Includes RFC 1950, RFC 1951, and RFC 1952.
- *
- * @since 2.8.0
- * @package WordPress
- * @subpackage HTTP
- */
-class WP_Http_Encoding {
-
-       /**
-        * Compress raw string using the deflate format.
-        *
-        * Supports the RFC 1951 standard.
-        *
-        * @since 2.8.0
-        *
-        * @static
-        *
-        * @param string $raw String to compress.
-        * @param int $level Optional, default is 9. Compression level, 9 is highest.
-        * @param string $supports Optional, not used. When implemented it will choose the right compression based on what the server supports.
-        * @return string|false False on failure.
-        */
-       public static function compress( $raw, $level = 9, $supports = null ) {
-               return gzdeflate( $raw, $level );
-       }
-
-       /**
-        * Decompression of deflated string.
-        *
-        * Will attempt to decompress using the RFC 1950 standard, and if that fails
-        * then the RFC 1951 standard deflate will be attempted. Finally, the RFC
-        * 1952 standard gzip decode will be attempted. If all fail, then the
-        * original compressed string will be returned.
-        *
-        * @since 2.8.0
-        *
-        * @static
-        *
-        * @param string $compressed String to decompress.
-        * @param int $length The optional length of the compressed data.
-        * @return string|bool False on failure.
-        */
-       public static function decompress( $compressed, $length = null ) {
-
-               if ( empty($compressed) )
-                       return $compressed;
-
-               if ( false !== ( $decompressed = @gzinflate( $compressed ) ) )
-                       return $decompressed;
-
-               if ( false !== ( $decompressed = self::compatible_gzinflate( $compressed ) ) )
-                       return $decompressed;
-
-               if ( false !== ( $decompressed = @gzuncompress( $compressed ) ) )
-                       return $decompressed;
-
-               if ( function_exists('gzdecode') ) {
-                       $decompressed = @gzdecode( $compressed );
-
-                       if ( false !== $decompressed )
-                               return $decompressed;
-               }
-
-               return $compressed;
-       }
-
-       /**
-        * Decompression of deflated string while staying compatible with the majority of servers.
-        *
-        * Certain Servers will return deflated data with headers which PHP's gzinflate()
-        * function cannot handle out of the box. The following function has been created from
-        * various snippets on the gzinflate() PHP documentation.
-        *
-        * Warning: Magic numbers within. Due to the potential different formats that the compressed
-        * data may be returned in, some "magic offsets" are needed to ensure proper decompression
-        * takes place. For a simple progmatic way to determine the magic offset in use, see:
-        * https://core.trac.wordpress.org/ticket/18273
-        *
-        * @since 2.8.1
-        * @link https://core.trac.wordpress.org/ticket/18273
-        * @link http://au2.php.net/manual/en/function.gzinflate.php#70875
-        * @link http://au2.php.net/manual/en/function.gzinflate.php#77336
-        *
-        * @static
-        *
-        * @param string $gzData String to decompress.
-        * @return string|bool False on failure.
-        */
-       public static function compatible_gzinflate($gzData) {
-
-               // Compressed data might contain a full header, if so strip it for gzinflate().
-               if ( substr($gzData, 0, 3) == "\x1f\x8b\x08" ) {
-                       $i = 10;
-                       $flg = ord( substr($gzData, 3, 1) );
-                       if ( $flg > 0 ) {
-                               if ( $flg & 4 ) {
-                                       list($xlen) = unpack('v', substr($gzData, $i, 2) );
-                                       $i = $i + 2 + $xlen;
-                               }
-                               if ( $flg & 8 )
-                                       $i = strpos($gzData, "\0", $i) + 1;
-                               if ( $flg & 16 )
-                                       $i = strpos($gzData, "\0", $i) + 1;
-                               if ( $flg & 2 )
-                                       $i = $i + 2;
-                       }
-                       $decompressed = @gzinflate( substr($gzData, $i, -8) );
-                       if ( false !== $decompressed )
-                               return $decompressed;
-               }
-
-               // Compressed data from java.util.zip.Deflater amongst others.
-               $decompressed = @gzinflate( substr($gzData, 2) );
-               if ( false !== $decompressed )
-                       return $decompressed;
-
-               return false;
-       }
-
-       /**
-        * What encoding types to accept and their priority values.
-        *
-        * @since 2.8.0
-        *
-        * @static
-        *
-        * @param string $url
-        * @param array  $args
-        * @return string Types of encoding to accept.
-        */
-       public static function accept_encoding( $url, $args ) {
-               $type = array();
-               $compression_enabled = self::is_available();
-
-               if ( ! $args['decompress'] ) // Decompression specifically disabled.
-                       $compression_enabled = false;
-               elseif ( $args['stream'] ) // Disable when streaming to file.
-                       $compression_enabled = false;
-               elseif ( isset( $args['limit_response_size'] ) ) // If only partial content is being requested, we won't be able to decompress it.
-                       $compression_enabled = false;
-
-               if ( $compression_enabled ) {
-                       if ( function_exists( 'gzinflate' ) )
-                               $type[] = 'deflate;q=1.0';
-
-                       if ( function_exists( 'gzuncompress' ) )
-                               $type[] = 'compress;q=0.5';
-
-                       if ( function_exists( 'gzdecode' ) )
-                               $type[] = 'gzip;q=0.5';
-               }
-
-               /**
-                * Filter the allowed encoding types.
-                *
-                * @since 3.6.0
-                *
-                * @param array  $type Encoding types allowed. Accepts 'gzinflate',
-                *                     'gzuncompress', 'gzdecode'.
-                * @param string $url  URL of the HTTP request.
-                * @param array  $args HTTP request arguments.
-                */
-               $type = apply_filters( 'wp_http_accept_encoding', $type, $url, $args );
-
-               return implode(', ', $type);
-       }
-
-       /**
-        * What encoding the content used when it was compressed to send in the headers.
-        *
-        * @since 2.8.0
-        *
-        * @static
-        *
-        * @return string Content-Encoding string to send in the header.
-        */
-       public static function content_encoding() {
-               return 'deflate';
-       }
-
-       /**
-        * Whether the content be decoded based on the headers.
-        *
-        * @since 2.8.0
-        *
-        * @static
-        *
-        * @param array|string $headers All of the available headers.
-        * @return bool
-        */
-       public static function should_decode($headers) {
-               if ( is_array( $headers ) ) {
-                       if ( array_key_exists('content-encoding', $headers) && ! empty( $headers['content-encoding'] ) )
-                               return true;
-               } elseif ( is_string( $headers ) ) {
-                       return ( stripos($headers, 'content-encoding:') !== false );
-               }
-
-               return false;
-       }
-
-       /**
-        * Whether decompression and compression are supported by the PHP version.
-        *
-        * Each function is tested instead of checking for the zlib extension, to
-        * ensure that the functions all exist in the PHP version and aren't
-        * disabled.
-        *
-        * @since 2.8.0
-        *
-        * @static
-        *
-        * @return bool
-        */
-       public static function is_available() {
-               return ( function_exists('gzuncompress') || function_exists('gzdeflate') || function_exists('gzinflate') );
-       }
-}
index 1861b5230e6b7158be10cffca15488b0116b9cdd..53b31e3634185a46a186e7ad28539b5f398a1626 100644 (file)
@@ -136,7 +136,7 @@ class Services_JSON
     *                                   from encode() should be checked with isError()
     *                           - SERVICES_JSON_USE_TO_JSON:  call toJSON when serializing objects
     *                                   It serializes the return value from the toJSON call rather 
-    *                                   than the object it'self,  toJSON can return associative arrays, 
+    *                                   than the object itself, toJSON can return associative arrays, 
     *                                   strings or numbers, if you return an object, make sure it does
     *                                   not have a toJSON method, otherwise an error will occur.
     */
index 18c249031ba489e3d5003d13f061937ac79bfb99..e7f72c91e9c84283dbdff5dfff0018e4e96e123b 100644 (file)
@@ -33,47 +33,51 @@ class WP_oEmbed {
         * @since 2.9.0
         */
        public function __construct() {
+               $host = urlencode( home_url() );
                $providers = array(
-                       '#http://((m|www)\.)?youtube\.com/watch.*#i'          => array( 'http://www.youtube.com/oembed',                      true  ),
-                       '#https://((m|www)\.)?youtube\.com/watch.*#i'         => array( 'http://www.youtube.com/oembed?scheme=https',         true  ),
-                       '#http://((m|www)\.)?youtube\.com/playlist.*#i'       => array( 'http://www.youtube.com/oembed',                      true  ),
-                       '#https://((m|www)\.)?youtube\.com/playlist.*#i'      => array( 'http://www.youtube.com/oembed?scheme=https',         true  ),
-                       '#http://youtu\.be/.*#i'                              => array( 'http://www.youtube.com/oembed',                      true  ),
-                       '#https://youtu\.be/.*#i'                             => array( 'http://www.youtube.com/oembed?scheme=https',         true  ),
-                       'http://blip.tv/*'                                    => array( 'http://blip.tv/oembed/',                             false ),
-                       '#https?://(.+\.)?vimeo\.com/.*#i'                    => array( 'http://vimeo.com/api/oembed.{format}',               true  ),
-                       '#https?://(www\.)?dailymotion\.com/.*#i'             => array( 'http://www.dailymotion.com/services/oembed',         true  ),
-                       'http://dai.ly/*'                                     => array( 'http://www.dailymotion.com/services/oembed',         false ),
-                       '#https?://(www\.)?flickr\.com/.*#i'                  => array( 'https://www.flickr.com/services/oembed/',            true  ),
-                       '#https?://flic\.kr/.*#i'                             => array( 'https://www.flickr.com/services/oembed/',            true  ),
-                       '#https?://(.+\.)?smugmug\.com/.*#i'                  => array( 'http://api.smugmug.com/services/oembed/',            true  ),
-                       '#https?://(www\.)?hulu\.com/watch/.*#i'              => array( 'http://www.hulu.com/api/oembed.{format}',            true  ),
-                       'http://i*.photobucket.com/albums/*'                  => array( 'http://photobucket.com/oembed',                      false ),
-                       'http://gi*.photobucket.com/groups/*'                 => array( 'http://photobucket.com/oembed',                      false ),
-                       '#https?://(www\.)?scribd\.com/doc/.*#i'              => array( 'http://www.scribd.com/services/oembed',              true  ),
-                       '#https?://wordpress.tv/.*#i'                         => array( 'http://wordpress.tv/oembed/',                        true  ),
-                       '#https?://(.+\.)?polldaddy\.com/.*#i'                => array( 'https://polldaddy.com/oembed/',                      true  ),
-                       '#https?://poll\.fm/.*#i'                             => array( 'https://polldaddy.com/oembed/',                      true  ),
-                       '#https?://(www\.)?funnyordie\.com/videos/.*#i'       => array( 'http://www.funnyordie.com/oembed',                   true  ),
-                       '#https?://(www\.)?twitter\.com/.+?/status(es)?/.*#i' => array( 'https://api.twitter.com/1/statuses/oembed.{format}', true  ),
-                       '#https?://vine.co/v/.*#i'                            => array( 'https://vine.co/oembed.{format}',                    true  ),
-                       '#https?://(www\.)?soundcloud\.com/.*#i'              => array( 'http://soundcloud.com/oembed',                       true  ),
-                       '#https?://(.+?\.)?slideshare\.net/.*#i'              => array( 'https://www.slideshare.net/api/oembed/2',            true  ),
-                       '#https?://instagr(\.am|am\.com)/p/.*#i'              => array( 'https://api.instagram.com/oembed',                   true  ),
-                       '#https?://(www\.)?rdio\.com/.*#i'                    => array( 'http://www.rdio.com/api/oembed/',                    true  ),
-                       '#https?://rd\.io/x/.*#i'                             => array( 'http://www.rdio.com/api/oembed/',                    true  ),
-                       '#https?://(open|play)\.spotify\.com/.*#i'            => array( 'https://embed.spotify.com/oembed/',                  true  ),
-                       '#https?://(.+\.)?imgur\.com/.*#i'                    => array( 'http://api.imgur.com/oembed',                        true  ),
-                       '#https?://(www\.)?meetu(\.ps|p\.com)/.*#i'           => array( 'http://api.meetup.com/oembed',                       true  ),
-                       '#https?://(www\.)?issuu\.com/.+/docs/.+#i'           => array( 'http://issuu.com/oembed_wp',                         true  ),
-                       '#https?://(www\.)?collegehumor\.com/video/.*#i'      => array( 'http://www.collegehumor.com/oembed.{format}',        true  ),
-                       '#https?://(www\.)?mixcloud\.com/.*#i'                => array( 'http://www.mixcloud.com/oembed',                     true  ),
-                       '#https?://(www\.|embed\.)?ted\.com/talks/.*#i'       => array( 'http://www.ted.com/talks/oembed.{format}',           true  ),
-                       '#https?://(www\.)?(animoto|video214)\.com/play/.*#i' => array( 'http://animoto.com/oembeds/create',                  true  ),
-                       '#https?://(.+)\.tumblr\.com/post/.*#i'               => array( 'https://www.tumblr.com/oembed/1.0',                  true  ),
-                       '#https?://(www\.)?kickstarter\.com/projects/.*#i'    => array( 'https://www.kickstarter.com/services/oembed',        true  ),
-                       '#https?://kck\.st/.*#i'                              => array( 'https://www.kickstarter.com/services/oembed',        true  ),
-                       '#https?://cloudup\.com/.*#i'                         => array( 'https://cloudup.com/oembed', true ),
+                       '#http://((m|www)\.)?youtube\.com/watch.*#i'          => array( 'http://www.youtube.com/oembed',                             true  ),
+                       '#https://((m|www)\.)?youtube\.com/watch.*#i'         => array( 'http://www.youtube.com/oembed?scheme=https',                true  ),
+                       '#http://((m|www)\.)?youtube\.com/playlist.*#i'       => array( 'http://www.youtube.com/oembed',                             true  ),
+                       '#https://((m|www)\.)?youtube\.com/playlist.*#i'      => array( 'http://www.youtube.com/oembed?scheme=https',                true  ),
+                       '#http://youtu\.be/.*#i'                              => array( 'http://www.youtube.com/oembed',                             true  ),
+                       '#https://youtu\.be/.*#i'                             => array( 'http://www.youtube.com/oembed?scheme=https',                true  ),
+                       '#https?://(.+\.)?vimeo\.com/.*#i'                    => array( 'http://vimeo.com/api/oembed.{format}',                      true  ),
+                       '#https?://(www\.)?dailymotion\.com/.*#i'             => array( 'https://www.dailymotion.com/services/oembed',               true  ),
+                       'http://dai.ly/*'                                     => array( 'https://www.dailymotion.com/services/oembed',               false ),
+                       '#https?://(www\.)?flickr\.com/.*#i'                  => array( 'https://www.flickr.com/services/oembed/',                   true  ),
+                       '#https?://flic\.kr/.*#i'                             => array( 'https://www.flickr.com/services/oembed/',                   true  ),
+                       '#https?://(.+\.)?smugmug\.com/.*#i'                  => array( 'http://api.smugmug.com/services/oembed/',                   true  ),
+                       '#https?://(www\.)?hulu\.com/watch/.*#i'              => array( 'http://www.hulu.com/api/oembed.{format}',                   true  ),
+                       'http://i*.photobucket.com/albums/*'                  => array( 'http://api.photobucket.com/oembed',                         false ),
+                       'http://gi*.photobucket.com/groups/*'                 => array( 'http://api.photobucket.com/oembed',                         false ),
+                       '#https?://(www\.)?scribd\.com/doc/.*#i'              => array( 'http://www.scribd.com/services/oembed',                     true  ),
+                       '#https?://wordpress.tv/.*#i'                         => array( 'http://wordpress.tv/oembed/',                               true  ),
+                       '#https?://(.+\.)?polldaddy\.com/.*#i'                => array( 'https://polldaddy.com/oembed/',                             true  ),
+                       '#https?://poll\.fm/.*#i'                             => array( 'https://polldaddy.com/oembed/',                             true  ),
+                       '#https?://(www\.)?funnyordie\.com/videos/.*#i'       => array( 'http://www.funnyordie.com/oembed',                          true  ),
+                       '#https?://(www\.)?twitter\.com/.+?/status(es)?/.*#i' => array( 'https://api.twitter.com/1/statuses/oembed.{format}',        true  ),
+                       '#https?://vine.co/v/.*#i'                            => array( 'https://vine.co/oembed.{format}',                           true  ),
+                       '#https?://(www\.)?soundcloud\.com/.*#i'              => array( 'http://soundcloud.com/oembed',                              true  ),
+                       '#https?://(.+?\.)?slideshare\.net/.*#i'              => array( 'https://www.slideshare.net/api/oembed/2',                   true  ),
+                       '#https?://(www\.)?instagr(\.am|am\.com)/p/.*#i'      => array( 'https://api.instagram.com/oembed',                          true  ),
+                       '#https?://(www\.)?rdio\.com/.*#i'                    => array( 'http://www.rdio.com/api/oembed/',                           true  ),
+                       '#https?://rd\.io/x/.*#i'                             => array( 'http://www.rdio.com/api/oembed/',                           true  ),
+                       '#https?://(open|play)\.spotify\.com/.*#i'            => array( 'https://embed.spotify.com/oembed/',                         true  ),
+                       '#https?://(.+\.)?imgur\.com/.*#i'                    => array( 'http://api.imgur.com/oembed',                               true  ),
+                       '#https?://(www\.)?meetu(\.ps|p\.com)/.*#i'           => array( 'http://api.meetup.com/oembed',                              true  ),
+                       '#https?://(www\.)?issuu\.com/.+/docs/.+#i'           => array( 'http://issuu.com/oembed_wp',                                true  ),
+                       '#https?://(www\.)?collegehumor\.com/video/.*#i'      => array( 'http://www.collegehumor.com/oembed.{format}',               true  ),
+                       '#https?://(www\.)?mixcloud\.com/.*#i'                => array( 'http://www.mixcloud.com/oembed',                            true  ),
+                       '#https?://(www\.|embed\.)?ted\.com/talks/.*#i'       => array( 'http://www.ted.com/talks/oembed.{format}',                  true  ),
+                       '#https?://(www\.)?(animoto|video214)\.com/play/.*#i' => array( 'https://animoto.com/oembeds/create',                        true  ),
+                       '#https?://(.+)\.tumblr\.com/post/.*#i'               => array( 'https://www.tumblr.com/oembed/1.0',                         true  ),
+                       '#https?://(www\.)?kickstarter\.com/projects/.*#i'    => array( 'https://www.kickstarter.com/services/oembed',               true  ),
+                       '#https?://kck\.st/.*#i'                              => array( 'https://www.kickstarter.com/services/oembed',               true  ),
+                       '#https?://cloudup\.com/.*#i'                         => array( 'https://cloudup.com/oembed',                                true  ),
+                       '#https?://(www\.)?reverbnation\.com/.*#i'            => array( 'https://www.reverbnation.com/oembed',                       true  ),
+                       '#https?://videopress.com/v/.*#'                      => array( 'https://public-api.wordpress.com/oembed/1.0/?for=' . $host, true  ),
+                       '#https?://(www\.)?reddit\.com/r/[^/]+/comments/.*#i' => array( 'https://www.reddit.com/oembed',                             true  ),
+                       '#https?://(www\.)?speakerdeck\.com/.*#i'             => array( 'https://speakerdeck.com/oembed.{format}',                   true  ),
                );
 
                if ( ! empty( self::$early_providers['add'] ) ) {
@@ -91,48 +95,41 @@ class WP_oEmbed {
                self::$early_providers = array();
 
                /**
-                * Filter the list of oEmbed providers.
+                * Filter the list of whitelisted oEmbed providers.
                 *
-                * Discovery is disabled for users lacking the unfiltered_html capability.
-                * Only providers in this array will be used for those users.
+                * Since WordPress 4.4, oEmbed discovery is enabled for all users and allows embedding of sanitized
+                * iframes. The providers in this list are whitelisted, meaning they are trusted and allowed to
+                * embed any content, such as iframes, videos, JavaScript, and arbitrary HTML.
                 *
                 * Supported providers:
                 *
-                * | ------------ | -------------------- | ----- | --------- |
-                * |   Provider   |        Flavor        |  SSL  |   Since   |
-                * | ------------ | -------------------- | ----- | --------- |
-                * | Blip         | blip.tv              |   !   | 2.9.0     |
+                * |   Provider   |        Flavor        | HTTPS |   Since   |
+                * | ------------ | -------------------- | :---: | --------- |
                 * | Dailymotion  | dailymotion.com      |  Yes  | 2.9.0     |
                 * | Flickr       | flickr.com           |  Yes  | 2.9.0     |
                 * | Hulu         | hulu.com             |  Yes  | 2.9.0     |
-                * | Photobucket  | photobucket.com      |   !   | 2.9.0     |
+                * | Photobucket  | photobucket.com      |  No   | 2.9.0     |
                 * | Scribd       | scribd.com           |  Yes  | 2.9.0     |
                 * | Vimeo        | vimeo.com            |  Yes  | 2.9.0     |
                 * | WordPress.tv | wordpress.tv         |  Yes  | 2.9.0     |
                 * | YouTube      | youtube.com/watch    |  Yes  | 2.9.0     |
-                * | ------------ | -------------------- | ----- | --------- |
                 * | Funny or Die | funnyordie.com       |  Yes  | 3.0.0     |
                 * | Polldaddy    | polldaddy.com        |  Yes  | 3.0.0     |
                 * | SmugMug      | smugmug.com          |  Yes  | 3.0.0     |
                 * | YouTube      | youtu.be             |  Yes  | 3.0.0     |
-                * | ------------ | -------------------- | ----- | --------- |
                 * | Twitter      | twitter.com          |  Yes  | 3.4.0     |
-                * | ------------ | -------------------- | ----- | --------- |
                 * | Instagram    | instagram.com        |  Yes  | 3.5.0     |
                 * | Instagram    | instagr.am           |  Yes  | 3.5.0     |
                 * | Slideshare   | slideshare.net       |  Yes  | 3.5.0     |
                 * | SoundCloud   | soundcloud.com       |  Yes  | 3.5.0     |
-                * | ------------ | -------------------- | ----- | --------- |
-                * | Dailymotion  | dai.ly               |   !   | 3.6.0     |
+                * | Dailymotion  | dai.ly               |  No   | 3.6.0     |
                 * | Flickr       | flic.kr              |  Yes  | 3.6.0     |
                 * | Rdio         | rdio.com             |  Yes  | 3.6.0     |
                 * | Rdio         | rd.io                |  Yes  | 3.6.0     |
                 * | Spotify      | spotify.com          |  Yes  | 3.6.0     |
-                * | ------------ | -------------------- | ----- | --------- |
                 * | Imgur        | imgur.com            |  Yes  | 3.9.0     |
                 * | Meetup.com   | meetup.com           |  Yes  | 3.9.0     |
                 * | Meetup.com   | meetu.ps             |  Yes  | 3.9.0     |
-                * | ------------ | -------------------- | ----- | --------- |
                 * | Animoto      | animoto.com          |  Yes  | 4.0.0     |
                 * | Animoto      | video214.com         |  Yes  | 4.0.0     |
                 * | CollegeHumor | collegehumor.com     |  Yes  | 4.0.0     |
@@ -141,25 +138,24 @@ class WP_oEmbed {
                 * | Polldaddy    | poll.fm              |  Yes  | 4.0.0     |
                 * | TED          | ted.com              |  Yes  | 4.0.0     |
                 * | YouTube      | youtube.com/playlist |  Yes  | 4.0.0     |
-                * | ------------ | -------------------- | ----- | --------- |
                 * | Vine         | vine.co              |  Yes  | 4.1.0     |
-                * | ------------ | -------------------- | ----- | --------- |
                 * | Tumblr       | tumblr.com           |  Yes  | 4.2.0     |
                 * | Kickstarter  | kickstarter.com      |  Yes  | 4.2.0     |
                 * | Kickstarter  | kck.st               |  Yes  | 4.2.0     |
-                * | ------------ | -------------------- | ----- | --------- |
+                * | Cloudup      | cloudup.com          |  Yes  | 4.4.0     |
+                * | ReverbNation | reverbnation.com     |  Yes  | 4.4.0     |
+                * | VideoPress   | videopress.com       |  Yes  | 4.4.0     |
+                * | Reddit       | reddit.com           |  Yes  | 4.4.0     |
+                * | Speaker Deck | speakerdeck.com      |  Yes  | 4.4.0     |
                 *
                 * No longer supported providers:
                 *
-                * | ------------ | -------------------- | ----- | --------- | --------- |
-                * |   Provider   |        Flavor        |  SSL  |   Since   |  Removed  |
-                * | ------------ | -------------------- | ----- | --------- | --------- |
+                * |   Provider   |        Flavor        | HTTPS |   Since   |  Removed  |
+                * | ------------ | -------------------- | :---: | --------- | --------- |
                 * | Qik          | qik.com              |  Yes  | 2.9.0     | 3.9.0     |
-                * | ------------ | -------------------- | ----- | --------- | --------- |
                 * | Viddler      | viddler.com          |  Yes  | 2.9.0     | 4.0.0     |
-                * | ------------ | -------------------- | ----- | --------- | --------- |
-                * | Revision3    | revision3.com        |   !   | 2.9.0     | 4.2.0     |
-                * | ------------ | -------------------- | ----- | --------- | --------- |
+                * | Revision3    | revision3.com        |  No   | 2.9.0     | 4.2.0     |
+                * | Blip         | blip.tv              |  No   | 2.9.0     | 4.4.0     |
                 *
                 * @see wp_oembed_add_provider()
                 *
@@ -409,7 +405,7 @@ class WP_oEmbed {
                 */
                $provider = apply_filters( 'oembed_fetch_url', $provider, $url, $args );
 
-               foreach( array( 'json', 'xml' ) as $format ) {
+               foreach ( array( 'json', 'xml' ) as $format ) {
                        $result = $this->_fetch_with_format( $provider, $format );
                        if ( is_wp_error( $result ) && 'not-implemented' == $result->get_error_code() )
                                continue;
@@ -490,7 +486,7 @@ class WP_oEmbed {
         * @return object|false
         */
        private function _parse_xml_body( $response_body ) {
-               if ( ! function_exists( 'simplexml_import_dom' ) || ! class_exists( 'DOMDocument' ) )
+               if ( ! function_exists( 'simplexml_import_dom' ) || ! class_exists( 'DOMDocument', false ) )
                        return false;
 
                $dom = new DOMDocument;
index ccd17963098dffd8ef39b78c258c68075d86b020..8b8b113194b71b0c62b19d85380d30f231f93ade 100644 (file)
@@ -273,6 +273,4 @@ class PasswordHash {
 
                return $hash === $stored_hash;
        }
-}
-
-?>
+}
\ No newline at end of file
index 7d641bf07332ac165b5c82484b6fbf0939319cec..ffbc377dafbf1df95a4b5e674f290650e54313a0 100644 (file)
@@ -82,7 +82,7 @@ class POP3 {
         //  Opens a socket to the specified server. Unless overridden,
         //  port defaults to 110. Returns true on success, false on fail
 
-        // If MAILSERVER is set, override $server with it's value
+        // If MAILSERVER is set, override $server with its value.
 
     if (!isset($port) || !$port) {$port = 110;}
         if(!empty($this->MAILSERVER))
index 64f9fa9be4fcdf63f46d9798326424145a4bd9b6..958ba463e9b3d76b00284ec770d89a6f489136d8 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-if ( ! class_exists( 'SimplePie' ) ) :
+if ( ! class_exists( 'SimplePie', false ) ) :
 
 // Load classes we will need.
 require ABSPATH . WPINC . '/SimplePie/Misc.php';
index 2c59c48112cf01e0c0a8c510af5fd878ec3d86a5..e08e732157c35f7a92f7fb3af7b168fe03677911 100644 (file)
@@ -1,11 +1,11 @@
 <?php
 
 /**
- * Deprecated. Use WP_HTTP (http.php, class-http.php) instead.
+ * Deprecated. Use WP_HTTP (http.php) instead.
  */
 _deprecated_file( basename( __FILE__ ), '3.0', WPINC . '/http.php' );
 
-if ( !class_exists( 'Snoopy' ) ) :
+if ( ! class_exists( 'Snoopy', false ) ) :
 /*************************************************
 
 Snoopy - the PHP net client
diff --git a/wp-includes/class-walker-category-dropdown.php b/wp-includes/class-walker-category-dropdown.php
new file mode 100644 (file)
index 0000000..46821fb
--- /dev/null
@@ -0,0 +1,68 @@
+<?php
+/**
+ * Taxonomy API: Walker_CategoryDropdown class
+ *
+ * @package WordPress
+ * @subpackage Template
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to create an HTML dropdown list of Categories.
+ *
+ * @since 2.1.0
+ *
+ * @see Walker
+ */
+class Walker_CategoryDropdown extends Walker {
+       /**
+        * @see Walker::$tree_type
+        * @since 2.1.0
+        * @var string
+        */
+       public $tree_type = 'category';
+
+       /**
+        * @see Walker::$db_fields
+        * @since 2.1.0
+        * @todo Decouple this
+        * @var array
+        */
+       public $db_fields = array ('parent' => 'parent', 'id' => 'term_id');
+
+       /**
+        * Start the element output.
+        *
+        * @see Walker::start_el()
+        * @since 2.1.0
+        *
+        * @param string $output   Passed by reference. Used to append additional content.
+        * @param object $category Category data object.
+        * @param int    $depth    Depth of category. Used for padding.
+        * @param array  $args     Uses 'selected', 'show_count', and 'value_field' keys, if they exist.
+        *                         See {@see wp_dropdown_categories()}.
+        */
+       public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
+               $pad = str_repeat('&nbsp;', $depth * 3);
+
+               /** This filter is documented in wp-includes/category-template.php */
+               $cat_name = apply_filters( 'list_cats', $category->name, $category );
+
+               if ( isset( $args['value_field'] ) && isset( $category->{$args['value_field']} ) ) {
+                       $value_field = $args['value_field'];
+               } else {
+                       $value_field = 'term_id';
+               }
+
+               $output .= "\t<option class=\"level-$depth\" value=\"" . esc_attr( $category->{$value_field} ) . "\"";
+
+               // Type-juggling causes false matches, so we force everything to a string.
+               if ( (string) $category->{$value_field} === (string) $args['selected'] )
+                       $output .= ' selected="selected"';
+               $output .= '>';
+               $output .= $pad.$cat_name;
+               if ( $args['show_count'] )
+                       $output .= '&nbsp;&nbsp;('. number_format_i18n( $category->count ) .')';
+               $output .= "</option>\n";
+       }
+}
diff --git a/wp-includes/class-walker-category.php b/wp-includes/class-walker-category.php
new file mode 100644 (file)
index 0000000..da518c9
--- /dev/null
@@ -0,0 +1,218 @@
+<?php
+/**
+ * Taxonomy API: Walker_Category class
+ *
+ * @package WordPress
+ * @subpackage Template
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to create an HTML list of categories.
+ *
+ * @since 2.1.0
+ *
+ * @see Walker
+ */
+class Walker_Category extends Walker {
+       /**
+        * What the class handles.
+        *
+        * @see Walker::$tree_type
+        * @since 2.1.0
+        * @var string
+        */
+       public $tree_type = 'category';
+
+       /**
+        * Database fields to use.
+        *
+        * @see Walker::$db_fields
+        * @since 2.1.0
+        * @todo Decouple this
+        * @var array
+        */
+       public $db_fields = array ('parent' => 'parent', 'id' => 'term_id');
+
+       /**
+        * Starts the list before the elements are added.
+        *
+        * @see Walker::start_lvl()
+        *
+        * @since 2.1.0
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param int    $depth  Depth of category. Used for tab indentation.
+        * @param array  $args   An array of arguments. Will only append content if style argument value is 'list'.
+        *                       @see wp_list_categories()
+        */
+       public function start_lvl( &$output, $depth = 0, $args = array() ) {
+               if ( 'list' != $args['style'] )
+                       return;
+
+               $indent = str_repeat("\t", $depth);
+               $output .= "$indent<ul class='children'>\n";
+       }
+
+       /**
+        * Ends the list of after the elements are added.
+        *
+        * @see Walker::end_lvl()
+        *
+        * @since 2.1.0
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param int    $depth  Depth of category. Used for tab indentation.
+        * @param array  $args   An array of arguments. Will only append content if style argument value is 'list'.
+        *                       @wsee wp_list_categories()
+        */
+       public function end_lvl( &$output, $depth = 0, $args = array() ) {
+               if ( 'list' != $args['style'] )
+                       return;
+
+               $indent = str_repeat("\t", $depth);
+               $output .= "$indent</ul>\n";
+       }
+
+       /**
+        * Start the element output.
+        *
+        * @see Walker::start_el()
+        *
+        * @since 2.1.0
+        *
+        * @param string $output   Passed by reference. Used to append additional content.
+        * @param object $category Category data object.
+        * @param int    $depth    Depth of category in reference to parents. Default 0.
+        * @param array  $args     An array of arguments. @see wp_list_categories()
+        * @param int    $id       ID of the current category.
+        */
+       public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
+               /** This filter is documented in wp-includes/category-template.php */
+               $cat_name = apply_filters(
+                       'list_cats',
+                       esc_attr( $category->name ),
+                       $category
+               );
+
+               // Don't generate an element if the category name is empty.
+               if ( ! $cat_name ) {
+                       return;
+               }
+
+               $link = '<a href="' . esc_url( get_term_link( $category ) ) . '" ';
+               if ( $args['use_desc_for_title'] && ! empty( $category->description ) ) {
+                       /**
+                        * Filter the category description for display.
+                        *
+                        * @since 1.2.0
+                        *
+                        * @param string $description Category description.
+                        * @param object $category    Category object.
+                        */
+                       $link .= 'title="' . esc_attr( strip_tags( apply_filters( 'category_description', $category->description, $category ) ) ) . '"';
+               }
+
+               $link .= '>';
+               $link .= $cat_name . '</a>';
+
+               if ( ! empty( $args['feed_image'] ) || ! empty( $args['feed'] ) ) {
+                       $link .= ' ';
+
+                       if ( empty( $args['feed_image'] ) ) {
+                               $link .= '(';
+                       }
+
+                       $link .= '<a href="' . esc_url( get_term_feed_link( $category->term_id, $category->taxonomy, $args['feed_type'] ) ) . '"';
+
+                       if ( empty( $args['feed'] ) ) {
+                               $alt = ' alt="' . sprintf(__( 'Feed for all posts filed under %s' ), $cat_name ) . '"';
+                       } else {
+                               $alt = ' alt="' . $args['feed'] . '"';
+                               $name = $args['feed'];
+                               $link .= empty( $args['title'] ) ? '' : $args['title'];
+                       }
+
+                       $link .= '>';
+
+                       if ( empty( $args['feed_image'] ) ) {
+                               $link .= $name;
+                       } else {
+                               $link .= "<img src='" . $args['feed_image'] . "'$alt" . ' />';
+                       }
+                       $link .= '</a>';
+
+                       if ( empty( $args['feed_image'] ) ) {
+                               $link .= ')';
+                       }
+               }
+
+               if ( ! empty( $args['show_count'] ) ) {
+                       $link .= ' (' . number_format_i18n( $category->count ) . ')';
+               }
+               if ( 'list' == $args['style'] ) {
+                       $output .= "\t<li";
+                       $css_classes = array(
+                               'cat-item',
+                               'cat-item-' . $category->term_id,
+                       );
+
+                       if ( ! empty( $args['current_category'] ) ) {
+                               // 'current_category' can be an array, so we use `get_terms()`.
+                               $_current_terms = get_terms( $category->taxonomy, array(
+                                       'include' => $args['current_category'],
+                                       'hide_empty' => false,
+                               ) );
+
+                               foreach ( $_current_terms as $_current_term ) {
+                                       if ( $category->term_id == $_current_term->term_id ) {
+                                               $css_classes[] = 'current-cat';
+                                       } elseif ( $category->term_id == $_current_term->parent ) {
+                                               $css_classes[] = 'current-cat-parent';
+                                       }
+                               }
+                       }
+
+                       /**
+                        * Filter the list of CSS classes to include with each category in the list.
+                        *
+                        * @since 4.2.0
+                        *
+                        * @see wp_list_categories()
+                        *
+                        * @param array  $css_classes An array of CSS classes to be applied to each list item.
+                        * @param object $category    Category data object.
+                        * @param int    $depth       Depth of page, used for padding.
+                        * @param array  $args        An array of wp_list_categories() arguments.
+                        */
+                       $css_classes = implode( ' ', apply_filters( 'category_css_class', $css_classes, $category, $depth, $args ) );
+
+                       $output .=  ' class="' . $css_classes . '"';
+                       $output .= ">$link\n";
+               } elseif ( isset( $args['separator'] ) ) {
+                       $output .= "\t$link" . $args['separator'] . "\n";
+               } else {
+                       $output .= "\t$link<br />\n";
+               }
+       }
+
+       /**
+        * Ends the element output, if needed.
+        *
+        * @see Walker::end_el()
+        *
+        * @since 2.1.0
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param object $page   Not used.
+        * @param int    $depth  Depth of category. Not used.
+        * @param array  $args   An array of arguments. Only uses 'list' for whether should append to output. @see wp_list_categories()
+        */
+       public function end_el( &$output, $page, $depth = 0, $args = array() ) {
+               if ( 'list' != $args['style'] )
+                       return;
+
+               $output .= "</li>\n";
+       }
+
+}
diff --git a/wp-includes/class-walker-comment.php b/wp-includes/class-walker-comment.php
new file mode 100644 (file)
index 0000000..e82ec66
--- /dev/null
@@ -0,0 +1,355 @@
+<?php
+/**
+ * Comment API: Walker_Comment class
+ *
+ * @package WordPress
+ * @subpackage Comments
+ * @since 4.4.0
+ */
+
+/**
+ * HTML comment list class.
+ *
+ * @uses Walker
+ * @since 2.7.0
+ */
+class Walker_Comment extends Walker {
+       /**
+        * What the class handles.
+        *
+        * @see Walker::$tree_type
+        *
+        * @since 2.7.0
+        * @var string
+        */
+       public $tree_type = 'comment';
+
+       /**
+        * DB fields to use.
+        *
+        * @see Walker::$db_fields
+        *
+        * @since 2.7.0
+        * @var array
+        */
+       public $db_fields = array ('parent' => 'comment_parent', 'id' => 'comment_ID');
+
+       /**
+        * Start the list before the elements are added.
+        *
+        * @see Walker::start_lvl()
+        *
+        * @since 2.7.0
+        *
+        * @global int $comment_depth
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param int $depth Depth of comment.
+        * @param array $args Uses 'style' argument for type of HTML list.
+        */
+       public function start_lvl( &$output, $depth = 0, $args = array() ) {
+               $GLOBALS['comment_depth'] = $depth + 1;
+
+               switch ( $args['style'] ) {
+                       case 'div':
+                               break;
+                       case 'ol':
+                               $output .= '<ol class="children">' . "\n";
+                               break;
+                       case 'ul':
+                       default:
+                               $output .= '<ul class="children">' . "\n";
+                               break;
+               }
+       }
+
+       /**
+        * End the list of items after the elements are added.
+        *
+        * @see Walker::end_lvl()
+        *
+        * @since 2.7.0
+        *
+        * @global int $comment_depth
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param int    $depth  Depth of comment.
+        * @param array  $args   Will only append content if style argument value is 'ol' or 'ul'.
+        */
+       public function end_lvl( &$output, $depth = 0, $args = array() ) {
+               $GLOBALS['comment_depth'] = $depth + 1;
+
+               switch ( $args['style'] ) {
+                       case 'div':
+                               break;
+                       case 'ol':
+                               $output .= "</ol><!-- .children -->\n";
+                               break;
+                       case 'ul':
+                       default:
+                               $output .= "</ul><!-- .children -->\n";
+                               break;
+               }
+       }
+
+       /**
+        * Traverse elements to create list from elements.
+        *
+        * This function is designed to enhance Walker::display_element() to
+        * display children of higher nesting levels than selected inline on
+        * the highest depth level displayed. This prevents them being orphaned
+        * at the end of the comment list.
+        *
+        * Example: max_depth = 2, with 5 levels of nested content.
+        *     1
+        *      1.1
+        *        1.1.1
+        *        1.1.1.1
+        *        1.1.1.1.1
+        *        1.1.2
+        *        1.1.2.1
+        *     2
+        *      2.2
+        *
+        * @see Walker::display_element()
+        * @see wp_list_comments()
+        *
+        * @since 2.7.0
+        *
+        * @param object $element           Data object.
+        * @param array  $children_elements List of elements to continue traversing.
+        * @param int    $max_depth         Max depth to traverse.
+        * @param int    $depth             Depth of current element.
+        * @param array  $args              An array of arguments.
+        * @param string $output            Passed by reference. Used to append additional content.
+        */
+       public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {
+               if ( !$element )
+                       return;
+
+               $id_field = $this->db_fields['id'];
+               $id = $element->$id_field;
+
+               parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
+
+               /*
+                * If we're at the max depth, and the current element still has children,
+                * loop over those and display them at this level. This is to prevent them
+                * being orphaned to the end of the list.
+                */
+               if ( $max_depth <= $depth + 1 && isset( $children_elements[$id]) ) {
+                       foreach ( $children_elements[ $id ] as $child )
+                               $this->display_element( $child, $children_elements, $max_depth, $depth, $args, $output );
+
+                       unset( $children_elements[ $id ] );
+               }
+
+       }
+
+       /**
+        * Start the element output.
+        *
+        * @since 2.7.0
+        *
+        * @see Walker::start_el()
+        * @see wp_list_comments()
+        *
+        * @global int        $comment_depth
+        * @global WP_Comment $comment
+        *
+        * @param string $output  Passed by reference. Used to append additional content.
+        * @param object $comment Comment data object.
+        * @param int    $depth   Depth of comment in reference to parents.
+        * @param array  $args    An array of arguments.
+        */
+       public function start_el( &$output, $comment, $depth = 0, $args = array(), $id = 0 ) {
+               $depth++;
+               $GLOBALS['comment_depth'] = $depth;
+               $GLOBALS['comment'] = $comment;
+
+               if ( !empty( $args['callback'] ) ) {
+                       ob_start();
+                       call_user_func( $args['callback'], $comment, $args, $depth );
+                       $output .= ob_get_clean();
+                       return;
+               }
+
+               if ( ( 'pingback' == $comment->comment_type || 'trackback' == $comment->comment_type ) && $args['short_ping'] ) {
+                       ob_start();
+                       $this->ping( $comment, $depth, $args );
+                       $output .= ob_get_clean();
+               } elseif ( 'html5' === $args['format'] ) {
+                       ob_start();
+                       $this->html5_comment( $comment, $depth, $args );
+                       $output .= ob_get_clean();
+               } else {
+                       ob_start();
+                       $this->comment( $comment, $depth, $args );
+                       $output .= ob_get_clean();
+               }
+       }
+
+       /**
+        * Ends the element output, if needed.
+        *
+        * @since 2.7.0
+        *
+        * @see Walker::end_el()
+        * @see wp_list_comments()
+        *
+        * @param string     $output  Passed by reference. Used to append additional content.
+        * @param WP_Comment $comment The comment object. Default current comment.
+        * @param int        $depth   Depth of comment.
+        * @param array      $args    An array of arguments.
+        */
+       public function end_el( &$output, $comment, $depth = 0, $args = array() ) {
+               if ( !empty( $args['end-callback'] ) ) {
+                       ob_start();
+                       call_user_func( $args['end-callback'], $comment, $args, $depth );
+                       $output .= ob_get_clean();
+                       return;
+               }
+               if ( 'div' == $args['style'] )
+                       $output .= "</div><!-- #comment-## -->\n";
+               else
+                       $output .= "</li><!-- #comment-## -->\n";
+       }
+
+       /**
+        * Output a pingback comment.
+        *
+        * @access protected
+        * @since 3.6.0
+        *
+        * @see wp_list_comments()
+        *
+        * @param WP_Comment $comment The comment object.
+        * @param int        $depth   Depth of comment.
+        * @param array      $args    An array of arguments.
+        */
+       protected function ping( $comment, $depth, $args ) {
+               $tag = ( 'div' == $args['style'] ) ? 'div' : 'li';
+?>
+               <<?php echo $tag; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class( '', $comment ); ?>>
+                       <div class="comment-body">
+                               <?php _e( 'Pingback:' ); ?> <?php comment_author_link( $comment ); ?> <?php edit_comment_link( __( 'Edit' ), '<span class="edit-link">', '</span>' ); ?>
+                       </div>
+<?php
+       }
+
+       /**
+        * Output a single comment.
+        *
+        * @access protected
+        * @since 3.6.0
+        *
+        * @see wp_list_comments()
+        *
+        * @param object $comment Comment to display.
+        * @param int    $depth   Depth of comment.
+        * @param array  $args    An array of arguments.
+        */
+       protected function comment( $comment, $depth, $args ) {
+               if ( 'div' == $args['style'] ) {
+                       $tag = 'div';
+                       $add_below = 'comment';
+               } else {
+                       $tag = 'li';
+                       $add_below = 'div-comment';
+               }
+?>
+               <<?php echo $tag; ?> <?php comment_class( $this->has_children ? 'parent' : '', $comment ); ?> id="comment-<?php comment_ID(); ?>">
+               <?php if ( 'div' != $args['style'] ) : ?>
+               <div id="div-comment-<?php comment_ID(); ?>" class="comment-body">
+               <?php endif; ?>
+               <div class="comment-author vcard">
+                       <?php if ( 0 != $args['avatar_size'] ) echo get_avatar( $comment, $args['avatar_size'] ); ?>
+                       <?php printf( __( '<cite class="fn">%s</cite> <span class="says">says:</span>' ), get_comment_author_link( $comment ) ); ?>
+               </div>
+               <?php if ( '0' == $comment->comment_approved ) : ?>
+               <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ) ?></em>
+               <br />
+               <?php endif; ?>
+
+               <div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment, $args ) ); ?>">
+                       <?php
+                               /* translators: 1: comment date, 2: comment time */
+                               printf( __( '%1$s at %2$s' ), get_comment_date( '', $comment ),  get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)' ), '&nbsp;&nbsp;', '' );
+                       ?>
+               </div>
+
+               <?php comment_text( get_comment_id(), array_merge( $args, array( 'add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
+
+               <?php
+               comment_reply_link( array_merge( $args, array(
+                       'add_below' => $add_below,
+                       'depth'     => $depth,
+                       'max_depth' => $args['max_depth'],
+                       'before'    => '<div class="reply">',
+                       'after'     => '</div>'
+               ) ) );
+               ?>
+
+               <?php if ( 'div' != $args['style'] ) : ?>
+               </div>
+               <?php endif; ?>
+<?php
+       }
+
+       /**
+        * Output a comment in the HTML5 format.
+        *
+        * @access protected
+        * @since 3.6.0
+        *
+        * @see wp_list_comments()
+        *
+        * @param object $comment Comment to display.
+        * @param int    $depth   Depth of comment.
+        * @param array  $args    An array of arguments.
+        */
+       protected function html5_comment( $comment, $depth, $args ) {
+               $tag = ( 'div' === $args['style'] ) ? 'div' : 'li';
+?>
+               <<?php echo $tag; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class( $this->has_children ? 'parent' : '', $comment ); ?>>
+                       <article id="div-comment-<?php comment_ID(); ?>" class="comment-body">
+                               <footer class="comment-meta">
+                                       <div class="comment-author vcard">
+                                               <?php if ( 0 != $args['avatar_size'] ) echo get_avatar( $comment, $args['avatar_size'] ); ?>
+                                               <?php printf( __( '%s <span class="says">says:</span>' ), sprintf( '<b class="fn">%s</b>', get_comment_author_link( $comment ) ) ); ?>
+                                       </div><!-- .comment-author -->
+
+                                       <div class="comment-metadata">
+                                               <a href="<?php echo esc_url( get_comment_link( $comment, $args ) ); ?>">
+                                                       <time datetime="<?php comment_time( 'c' ); ?>">
+                                                               <?php
+                                                                       /* translators: 1: comment date, 2: comment time */
+                                                                       printf( __( '%1$s at %2$s' ), get_comment_date( '', $comment ), get_comment_time() );
+                                                               ?>
+                                                       </time>
+                                               </a>
+                                               <?php edit_comment_link( __( 'Edit' ), '<span class="edit-link">', '</span>' ); ?>
+                                       </div><!-- .comment-metadata -->
+
+                                       <?php if ( '0' == $comment->comment_approved ) : ?>
+                                       <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ); ?></p>
+                                       <?php endif; ?>
+                               </footer><!-- .comment-meta -->
+
+                               <div class="comment-content">
+                                       <?php comment_text(); ?>
+                               </div><!-- .comment-content -->
+
+                               <?php
+                               comment_reply_link( array_merge( $args, array(
+                                       'add_below' => 'div-comment',
+                                       'depth'     => $depth,
+                                       'max_depth' => $args['max_depth'],
+                                       'before'    => '<div class="reply">',
+                                       'after'     => '</div>'
+                               ) ) );
+                               ?>
+                       </article><!-- .comment-body -->
+<?php
+       }
+}
diff --git a/wp-includes/class-walker-page-dropdown.php b/wp-includes/class-walker-page-dropdown.php
new file mode 100644 (file)
index 0000000..e9196dd
--- /dev/null
@@ -0,0 +1,74 @@
+<?php
+/**
+ * Post API: Walker_PageDropdown class
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to create an HTML drop-down list of pages.
+ *
+ * @since 2.1.0
+ *
+ * @see Walker
+ */
+class Walker_PageDropdown extends Walker {
+       /**
+        * @see Walker::$tree_type
+        * @since 2.1.0
+        * @var string
+        */
+       public $tree_type = 'page';
+
+       /**
+        * @see Walker::$db_fields
+        * @since 2.1.0
+        * @todo Decouple this
+        * @var array
+        */
+       public $db_fields = array ('parent' => 'post_parent', 'id' => 'ID');
+
+       /**
+        * @see Walker::start_el()
+        * @since 2.1.0
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param object $page   Page data object.
+        * @param int    $depth  Depth of page in reference to parent pages. Used for padding.
+        * @param array  $args   Uses 'selected' argument for selected page to set selected HTML attribute for option
+        *                       element. Uses 'value_field' argument to fill "value" attribute. See {@see wp_dropdown_pages()}.
+        * @param int    $id
+        */
+       public function start_el( &$output, $page, $depth = 0, $args = array(), $id = 0 ) {
+               $pad = str_repeat('&nbsp;', $depth * 3);
+
+               if ( ! isset( $args['value_field'] ) || ! isset( $page->{$args['value_field']} ) ) {
+                       $args['value_field'] = 'ID';
+               }
+
+               $output .= "\t<option class=\"level-$depth\" value=\"" . esc_attr( $page->{$args['value_field']} ) . "\"";
+               if ( $page->ID == $args['selected'] )
+                       $output .= ' selected="selected"';
+               $output .= '>';
+
+               $title = $page->post_title;
+               if ( '' === $title ) {
+                       /* translators: %d: ID of a post */
+                       $title = sprintf( __( '#%d (no title)' ), $page->ID );
+               }
+
+               /**
+                * Filter the page title when creating an HTML drop-down list of pages.
+                *
+                * @since 3.1.0
+                *
+                * @param string $title Page title.
+                * @param object $page  Page data object.
+                */
+               $title = apply_filters( 'list_pages', $title, $page );
+               $output .= $pad . esc_html( $title );
+               $output .= "</option>\n";
+       }
+}
diff --git a/wp-includes/class-walker-page.php b/wp-includes/class-walker-page.php
new file mode 100644 (file)
index 0000000..3b3ca31
--- /dev/null
@@ -0,0 +1,155 @@
+<?php
+/**
+ * Post API: Walker_Page class
+ *
+ * @package WordPress
+ * @subpackage Template
+ * @since 4.4.0
+ */
+
+/**
+ * Core walker class used to create an HTML list of pages.
+ *
+ * @since 2.1.0
+ *
+ * @see Walker
+ */
+class Walker_Page extends Walker {
+       /**
+        * @see Walker::$tree_type
+        * @since 2.1.0
+        * @var string
+        */
+       public $tree_type = 'page';
+
+       /**
+        * @see Walker::$db_fields
+        * @since 2.1.0
+        * @todo Decouple this.
+        * @var array
+        */
+       public $db_fields = array ('parent' => 'post_parent', 'id' => 'ID');
+
+       /**
+        * @see Walker::start_lvl()
+        * @since 2.1.0
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param int    $depth  Depth of page. Used for padding.
+        * @param array  $args
+        */
+       public function start_lvl( &$output, $depth = 0, $args = array() ) {
+               $indent = str_repeat("\t", $depth);
+               $output .= "\n$indent<ul class='children'>\n";
+       }
+
+       /**
+        * @see Walker::end_lvl()
+        * @since 2.1.0
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param int    $depth  Depth of page. Used for padding.
+        * @param array  $args
+        */
+       public function end_lvl( &$output, $depth = 0, $args = array() ) {
+               $indent = str_repeat("\t", $depth);
+               $output .= "$indent</ul>\n";
+       }
+
+       /**
+        * @see Walker::start_el()
+        * @since 2.1.0
+        *
+        * @param string $output       Passed by reference. Used to append additional content.
+        * @param object $page         Page data object.
+        * @param int    $depth        Depth of page. Used for padding.
+        * @param int    $current_page Page ID.
+        * @param array  $args
+        */
+       public function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) {
+               if ( $depth ) {
+                       $indent = str_repeat( "\t", $depth );
+               } else {
+                       $indent = '';
+               }
+
+               $css_class = array( 'page_item', 'page-item-' . $page->ID );
+
+               if ( isset( $args['pages_with_children'][ $page->ID ] ) ) {
+                       $css_class[] = 'page_item_has_children';
+               }
+
+               if ( ! empty( $current_page ) ) {
+                       $_current_page = get_post( $current_page );
+                       if ( $_current_page && in_array( $page->ID, $_current_page->ancestors ) ) {
+                               $css_class[] = 'current_page_ancestor';
+                       }
+                       if ( $page->ID == $current_page ) {
+                               $css_class[] = 'current_page_item';
+                       } elseif ( $_current_page && $page->ID == $_current_page->post_parent ) {
+                               $css_class[] = 'current_page_parent';
+                       }
+               } elseif ( $page->ID == get_option('page_for_posts') ) {
+                       $css_class[] = 'current_page_parent';
+               }
+
+               /**
+                * Filter the list of CSS classes to include with each page item in the list.
+                *
+                * @since 2.8.0
+                *
+                * @see wp_list_pages()
+                *
+                * @param array   $css_class    An array of CSS classes to be applied
+                *                             to each list item.
+                * @param WP_Post $page         Page data object.
+                * @param int     $depth        Depth of page, used for padding.
+                * @param array   $args         An array of arguments.
+                * @param int     $current_page ID of the current page.
+                */
+               $css_classes = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) );
+
+               if ( '' === $page->post_title ) {
+                       /* translators: %d: ID of a post */
+                       $page->post_title = sprintf( __( '#%d (no title)' ), $page->ID );
+               }
+
+               $args['link_before'] = empty( $args['link_before'] ) ? '' : $args['link_before'];
+               $args['link_after'] = empty( $args['link_after'] ) ? '' : $args['link_after'];
+
+               /** This filter is documented in wp-includes/post-template.php */
+               $output .= $indent . sprintf(
+                       '<li class="%s"><a href="%s">%s%s%s</a>',
+                       $css_classes,
+                       get_permalink( $page->ID ),
+                       $args['link_before'],
+                       apply_filters( 'the_title', $page->post_title, $page->ID ),
+                       $args['link_after']
+               );
+
+               if ( ! empty( $args['show_date'] ) ) {
+                       if ( 'modified' == $args['show_date'] ) {
+                               $time = $page->post_modified;
+                       } else {
+                               $time = $page->post_date;
+                       }
+
+                       $date_format = empty( $args['date_format'] ) ? '' : $args['date_format'];
+                       $output .= " " . mysql2date( $date_format, $time );
+               }
+       }
+
+       /**
+        * @see Walker::end_el()
+        * @since 2.1.0
+        *
+        * @param string $output Passed by reference. Used to append additional content.
+        * @param object $page Page data object. Not used.
+        * @param int    $depth Depth of page. Not Used.
+        * @param array  $args
+        */
+       public function end_el( &$output, $page, $depth = 0, $args = array() ) {
+               $output .= "</li>\n";
+       }
+
+}
index f344f3edb7e2a473b324bf8317753073d7535521..f40210085e7fce594da5c2403df5002817c0bec9 100644 (file)
@@ -1,11 +1,16 @@
 <?php
 /**
- * The WordPress Toolbar
- *
- * @since 3.1.0
+ * Toolbar API: WP_Admin_Bar class
  *
  * @package WordPress
  * @subpackage Toolbar
+ * @since 3.1.0
+ */
+
+/**
+ * Core class used to implement the Toolbar API.
+ *
+ * @since 3.1.0
  */
 class WP_Admin_Bar {
        private $nodes = array();
diff --git a/wp-includes/class-wp-comment-query.php b/wp-includes/class-wp-comment-query.php
new file mode 100644 (file)
index 0000000..e30094d
--- /dev/null
@@ -0,0 +1,1047 @@
+<?php
+/**
+ * Comment API: WP_Comment_Query class
+ *
+ * @package WordPress
+ * @subpackage Comments
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used for querying comments.
+ *
+ * @since 3.1.0
+ *
+ * @see WP_Comment_Query::__construct() for accepted arguments.
+ */
+class WP_Comment_Query {
+
+       /**
+        * SQL for database query.
+        *
+        * @since 4.0.1
+        * @access public
+        * @var string
+        */
+       public $request;
+
+       /**
+        * Metadata query container
+        *
+        * @since 3.5.0
+        * @access public
+        * @var object WP_Meta_Query
+        */
+       public $meta_query = false;
+
+       /**
+        * Metadata query clauses.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array
+        */
+       protected $meta_query_clauses;
+
+       /**
+        * SQL query clauses.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array
+        */
+       protected $sql_clauses = array(
+               'select'  => '',
+               'from'    => '',
+               'where'   => array(),
+               'groupby' => '',
+               'orderby' => '',
+               'limits'  => '',
+       );
+
+       /**
+        * Date query container
+        *
+        * @since 3.7.0
+        * @access public
+        * @var object WP_Date_Query
+        */
+       public $date_query = false;
+
+       /**
+        * Query vars set by the user.
+        *
+        * @since 3.1.0
+        * @access public
+        * @var array
+        */
+       public $query_vars;
+
+       /**
+        * Default values for query vars.
+        *
+        * @since 4.2.0
+        * @access public
+        * @var array
+        */
+       public $query_var_defaults;
+
+       /**
+        * List of comments located by the query.
+        *
+        * @since 4.0.0
+        * @access public
+        * @var array
+        */
+       public $comments;
+
+       /**
+        * The amount of found comments for the current query.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $found_comments = 0;
+
+       /**
+        * The number of pages.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $max_num_pages = 0;
+
+       /**
+        * Make private/protected methods readable for backwards compatibility.
+        *
+        * @since 4.0.0
+        * @access public
+        *
+        * @param callable $name      Method to call.
+        * @param array    $arguments Arguments to pass when calling.
+        * @return mixed|false Return value of the callback, false otherwise.
+        */
+       public function __call( $name, $arguments ) {
+               if ( 'get_search_sql' === $name ) {
+                       return call_user_func_array( array( $this, $name ), $arguments );
+               }
+               return false;
+       }
+
+       /**
+        * Constructor.
+        *
+        * Sets up the comment query, based on the query vars passed.
+        *
+        * @since 4.2.0
+        * @since 4.4.0 `$parent__in` and `$parent__not_in` were added.
+        * @since 4.4.0 Order by `comment__in` was added. `$update_comment_meta_cache`, `$no_found_rows`,
+        *              `$hierarchical`, and `$update_comment_post_cache` were added.
+        * @access public
+        *
+        * @param string|array $query {
+        *     Optional. Array or query string of comment query parameters. Default empty.
+        *
+        *     @type string       $author_email              Comment author email address. Default empty.
+        *     @type array        $author__in                Array of author IDs to include comments for. Default empty.
+        *     @type array        $author__not_in            Array of author IDs to exclude comments for. Default empty.
+        *     @type array        $comment__in               Array of comment IDs to include. Default empty.
+        *     @type array        $comment__not_in           Array of comment IDs to exclude. Default empty.
+        *     @type bool         $count                     Whether to return a comment count (true) or array of
+        *                                                   comment objects (false). Default false.
+        *     @type array        $date_query                Date query clauses to limit comments by. See WP_Date_Query.
+        *                                                   Default null.
+        *     @type string       $fields                    Comment fields to return. Accepts 'ids' for comment IDs
+        *                                                   only or empty for all fields. Default empty.
+        *     @type int          $ID                        Currently unused.
+        *     @type array        $include_unapproved        Array of IDs or email addresses of users whose unapproved
+        *                                                   comments will be returned by the query regardless of
+        *                                                   `$status`. Default empty.
+        *     @type int          $karma                     Karma score to retrieve matching comments for.
+        *                                                   Default empty.
+        *     @type string       $meta_key                  Include comments with a matching comment meta key.
+        *                                                   Default empty.
+        *     @type string       $meta_value                Include comments with a matching comment meta value.
+        *                                                   Requires `$meta_key` to be set. Default empty.
+        *     @type array        $meta_query                Meta query clauses to limit retrieved comments by.
+        *                                                   See WP_Meta_Query. Default empty.
+        *     @type int          $number                    Maximum number of comments to retrieve.
+        *                                                   Default null (no limit).
+        *     @type int          $offset                    Number of comments to offset the query. Used to build
+        *                                                   LIMIT clause. Default 0.
+        *     @type bool         $no_found_rows             Whether to disable the `SQL_CALC_FOUND_ROWS` query.
+        *                                                   Default: true.
+        *     @type string|array $orderby                   Comment status or array of statuses. To use 'meta_value'
+        *                                                   or 'meta_value_num', `$meta_key` must also be defined.
+        *                                                   To sort by a specific `$meta_query` clause, use that
+        *                                                   clause's array key. Accepts 'comment_agent',
+        *                                                   'comment_approved', 'comment_author',
+        *                                                   'comment_author_email', 'comment_author_IP',
+        *                                                   'comment_author_url', 'comment_content', 'comment_date',
+        *                                                   'comment_date_gmt', 'comment_ID', 'comment_karma',
+        *                                                   'comment_parent', 'comment_post_ID', 'comment_type',
+        *                                                   'user_id', 'comment__in', 'meta_value', 'meta_value_num',
+        *                                                   the value of $meta_key, and the array keys of
+        *                                                   `$meta_query`. Also accepts false, an empty array, or
+        *                                                   'none' to disable `ORDER BY` clause.
+        *                                                   Default: 'comment_date_gmt'.
+        *     @type string       $order                     How to order retrieved comments. Accepts 'ASC', 'DESC'.
+        *                                                   Default: 'DESC'.
+        *     @type int          $parent                    Parent ID of comment to retrieve children of.
+        *                                                   Default empty.
+        *     @type array        $parent__in                Array of parent IDs of comments to retrieve children for.
+        *                                                   Default empty.
+        *     @type array        $parent__not_in            Array of parent IDs of comments *not* to retrieve
+        *                                                   children for. Default empty.
+        *     @type array        $post_author__in           Array of author IDs to retrieve comments for.
+        *                                                   Default empty.
+        *     @type array        $post_author__not_in       Array of author IDs *not* to retrieve comments for.
+        *                                                   Default empty.
+        *     @type int          $post_ID                   Currently unused.
+        *     @type int          $post_id                   Limit results to those affiliated with a given post ID.
+        *                                                   Default 0.
+        *     @type array        $post__in                  Array of post IDs to include affiliated comments for.
+        *                                                   Default empty.
+        *     @type array        $post__not_in              Array of post IDs to exclude affiliated comments for.
+        *                                                   Default empty.
+        *     @type int          $post_author               Comment author ID to limit results by. Default empty.
+        *     @type string       $post_status               Post status to retrieve affiliated comments for.
+        *                                                   Default empty.
+        *     @type string       $post_type                 Post type to retrieve affiliated comments for.
+        *                                                   Default empty.
+        *     @type string       $post_name                 Post name to retrieve affiliated comments for.
+        *                                                   Default empty.
+        *     @type int          $post_parent               Post parent ID to retrieve affiliated comments for.
+        *                                                   Default empty.
+        *     @type string       $search                    Search term(s) to retrieve matching comments for.
+        *                                                   Default empty.
+        *     @type string       $status                    Comment status to limit results by. Accepts 'hold'
+        *                                                   (`comment_status=0`), 'approve' (`comment_status=1`),
+        *                                                   'all', or a custom comment status. Default 'all'.
+        *     @type string|array $type                      Include comments of a given type, or array of types.
+        *                                                   Accepts 'comment', 'pings' (includes 'pingback' and
+        *                                                   'trackback'), or anycustom type string. Default empty.
+        *     @type array        $type__in                  Include comments from a given array of comment types.
+        *                                                   Default empty.
+        *     @type array        $type__not_in              Exclude comments from a given array of comment types.
+        *                                                   Default empty.
+        *     @type int          $user_id                   Include comments for a specific user ID. Default empty.
+        *     @type bool|string  $hierarchical              Whether to include comment descendants in the results.
+        *                                                   'threaded' returns a tree, with each comment's children
+        *                                                   stored in a `children` property on the `WP_Comment`
+        *                                                   object. 'flat' returns a flat array of found comments plus
+        *                                                   their children. Pass `false` to leave out descendants.
+        *                                                   The parameter is ignored (forced to `false`) when
+        *                                                   `$fields` is 'ids' or 'counts'. Accepts 'threaded',
+        *                                                   'flat', or false. Default: false.
+        *     @type bool         $update_comment_meta_cache Whether to prime the metadata cache for found comments.
+        *                                                   Default true.
+        *     @type bool         $update_comment_post_cache Whether to prime the cache for comment posts.
+        *                                                   Default false.
+        * }
+        */
+       public function __construct( $query = '' ) {
+               $this->query_var_defaults = array(
+                       'author_email' => '',
+                       'author__in' => '',
+                       'author__not_in' => '',
+                       'include_unapproved' => '',
+                       'fields' => '',
+                       'ID' => '',
+                       'comment__in' => '',
+                       'comment__not_in' => '',
+                       'karma' => '',
+                       'number' => '',
+                       'offset' => '',
+                       'no_found_rows' => true,
+                       'orderby' => '',
+                       'order' => 'DESC',
+                       'parent' => '',
+                       'post_author__in' => '',
+                       'post_author__not_in' => '',
+                       'post_ID' => '',
+                       'post_id' => 0,
+                       'post__in' => '',
+                       'post__not_in' => '',
+                       'post_author' => '',
+                       'post_name' => '',
+                       'post_parent' => '',
+                       'post_status' => '',
+                       'post_type' => '',
+                       'status' => 'all',
+                       'type' => '',
+                       'type__in' => '',
+                       'type__not_in' => '',
+                       'user_id' => '',
+                       'search' => '',
+                       'count' => false,
+                       'meta_key' => '',
+                       'meta_value' => '',
+                       'meta_query' => '',
+                       'date_query' => null, // See WP_Date_Query
+                       'hierarchical' => false,
+                       'update_comment_meta_cache' => true,
+                       'update_comment_post_cache' => false,
+               );
+
+               if ( ! empty( $query ) ) {
+                       $this->query( $query );
+               }
+       }
+
+       /**
+        * Parse arguments passed to the comment query with default query parameters.
+        *
+        * @since  4.2.0 Extracted from WP_Comment_Query::query().
+        *
+        * @access public
+        *
+        * @param string|array $query WP_Comment_Query arguments. See WP_Comment_Query::__construct()
+        */
+       public function parse_query( $query = '' ) {
+               if ( empty( $query ) ) {
+                       $query = $this->query_vars;
+               }
+
+               $this->query_vars = wp_parse_args( $query, $this->query_var_defaults );
+               do_action_ref_array( 'parse_comment_query', array( &$this ) );
+       }
+
+       /**
+        * Sets up the WordPress query for retrieving comments.
+        *
+        * @since 3.1.0
+        * @since 4.1.0 Introduced 'comment__in', 'comment__not_in', 'post_author__in',
+        *              'post_author__not_in', 'author__in', 'author__not_in', 'post__in',
+        *              'post__not_in', 'include_unapproved', 'type__in', and 'type__not_in'
+        *              arguments to $query_vars.
+        * @since 4.2.0 Moved parsing to WP_Comment_Query::parse_query().
+        * @access public
+        *
+        * @param string|array $query Array or URL query string of parameters.
+        * @return array|int List of comments, or number of comments when 'count' is passed as a query var.
+        */
+       public function query( $query ) {
+               $this->query_vars = wp_parse_args( $query );
+               return $this->get_comments();
+       }
+
+       /**
+        * Get a list of comments matching the query vars.
+        *
+        * @since 4.2.0
+        * @access public
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @return int|array The list of comments.
+        */
+       public function get_comments() {
+               global $wpdb;
+
+               $this->parse_query();
+
+               // Parse meta query
+               $this->meta_query = new WP_Meta_Query();
+               $this->meta_query->parse_query_vars( $this->query_vars );
+
+               /**
+                * Fires before comments are retrieved.
+                *
+                * @since 3.1.0
+                *
+                * @param WP_Comment_Query &$this Current instance of WP_Comment_Query, passed by reference.
+                */
+               do_action_ref_array( 'pre_get_comments', array( &$this ) );
+
+               // Reparse query vars, in case they were modified in a 'pre_get_comments' callback.
+               $this->meta_query->parse_query_vars( $this->query_vars );
+               if ( ! empty( $this->meta_query->queries ) ) {
+                       $this->meta_query_clauses = $this->meta_query->get_sql( 'comment', $wpdb->comments, 'comment_ID', $this );
+               }
+
+               // $args can include anything. Only use the args defined in the query_var_defaults to compute the key.
+               $key = md5( serialize( wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ) ) );
+               $last_changed = wp_cache_get( 'last_changed', 'comment' );
+               if ( ! $last_changed ) {
+                       $last_changed = microtime();
+                       wp_cache_set( 'last_changed', $last_changed, 'comment' );
+               }
+               $cache_key = "get_comment_ids:$key:$last_changed";
+
+               $comment_ids = wp_cache_get( $cache_key, 'comment' );
+               if ( false === $comment_ids ) {
+                       $comment_ids = $this->get_comment_ids();
+                       wp_cache_add( $cache_key, $comment_ids, 'comment' );
+               }
+
+               // If querying for a count only, there's nothing more to do.
+               if ( $this->query_vars['count'] ) {
+                       // $comment_ids is actually a count in this case.
+                       return intval( $comment_ids );
+               }
+
+               $comment_ids = array_map( 'intval', $comment_ids );
+
+               $this->comment_count = count( $this->comments );
+
+               if ( $comment_ids && $this->query_vars['number'] && ! $this->query_vars['no_found_rows'] ) {
+                       /**
+                        * Filter the query used to retrieve found comment count.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param string           $found_comments_query SQL query. Default 'SELECT FOUND_ROWS()'.
+                        * @param WP_Comment_Query $comment_query        The `WP_Comment_Query` instance.
+                        */
+                       $found_comments_query = apply_filters( 'found_comments_query', 'SELECT FOUND_ROWS()', $this );
+                       $this->found_comments = (int) $wpdb->get_var( $found_comments_query );
+
+                       $this->max_num_pages = ceil( $this->found_comments / $this->query_vars['number'] );
+               }
+
+               if ( 'ids' == $this->query_vars['fields'] ) {
+                       $this->comments = $comment_ids;
+                       return $this->comments;
+               }
+
+               _prime_comment_caches( $comment_ids, $this->query_vars['update_comment_meta_cache'] );
+
+               // Fetch full comment objects from the primed cache.
+               $_comments = array();
+               foreach ( $comment_ids as $comment_id ) {
+                       if ( $_comment = get_comment( $comment_id ) ) {
+                               $_comments[] = $_comment;
+                       }
+               }
+
+               // Prime comment post caches.
+               if ( $this->query_vars['update_comment_post_cache'] ) {
+                       $comment_post_ids = array();
+                       foreach ( $_comments as $_comment ) {
+                               $comment_post_ids[] = $_comment->comment_post_ID;
+                       }
+
+                       _prime_post_caches( $comment_post_ids, false, false );
+               }
+
+               /**
+                * Filter the comment query results.
+                *
+                * @since 3.1.0
+                *
+                * @param array            $results  An array of comments.
+                * @param WP_Comment_Query &$this    Current instance of WP_Comment_Query, passed by reference.
+                */
+               $_comments = apply_filters_ref_array( 'the_comments', array( $_comments, &$this ) );
+
+               // Convert to WP_Comment instances
+               $comments = array_map( 'get_comment', $_comments );
+
+               if ( $this->query_vars['hierarchical'] ) {
+                       $comments = $this->fill_descendants( $comments );
+               }
+
+               $this->comments = $comments;
+               return $this->comments;
+       }
+
+       /**
+        * Used internally to get a list of comment IDs matching the query vars.
+        *
+        * @since 4.4.0
+        * @access protected
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        */
+       protected function get_comment_ids() {
+               global $wpdb;
+
+               // Assemble clauses related to 'comment_approved'.
+               $approved_clauses = array();
+
+               // 'status' accepts an array or a comma-separated string.
+               $status_clauses = array();
+               $statuses = $this->query_vars['status'];
+               if ( ! is_array( $statuses ) ) {
+                       $statuses = preg_split( '/[\s,]+/', $statuses );
+               }
+
+               // 'any' overrides other statuses.
+               if ( ! in_array( 'any', $statuses ) ) {
+                       foreach ( $statuses as $status ) {
+                               switch ( $status ) {
+                                       case 'hold' :
+                                               $status_clauses[] = "comment_approved = '0'";
+                                               break;
+
+                                       case 'approve' :
+                                               $status_clauses[] = "comment_approved = '1'";
+                                               break;
+
+                                       case 'all' :
+                                       case '' :
+                                               $status_clauses[] = "( comment_approved = '0' OR comment_approved = '1' )";
+                                               break;
+
+                                       default :
+                                               $status_clauses[] = $wpdb->prepare( "comment_approved = %s", $status );
+                                               break;
+                               }
+                       }
+
+                       if ( ! empty( $status_clauses ) ) {
+                               $approved_clauses[] = '( ' . implode( ' OR ', $status_clauses ) . ' )';
+                       }
+               }
+
+               // User IDs or emails whose unapproved comments are included, regardless of $status.
+               if ( ! empty( $this->query_vars['include_unapproved'] ) ) {
+                       $include_unapproved = $this->query_vars['include_unapproved'];
+
+                       // Accepts arrays or comma-separated strings.
+                       if ( ! is_array( $include_unapproved ) ) {
+                               $include_unapproved = preg_split( '/[\s,]+/', $include_unapproved );
+                       }
+
+                       $unapproved_ids = $unapproved_emails = array();
+                       foreach ( $include_unapproved as $unapproved_identifier ) {
+                               // Numeric values are assumed to be user ids.
+                               if ( is_numeric( $unapproved_identifier ) ) {
+                                       $approved_clauses[] = $wpdb->prepare( "( user_id = %d AND comment_approved = '0' )", $unapproved_identifier );
+
+                               // Otherwise we match against email addresses.
+                               } else {
+                                       $approved_clauses[] = $wpdb->prepare( "( comment_author_email = %s AND comment_approved = '0' )", $unapproved_identifier );
+                               }
+                       }
+               }
+
+               // Collapse comment_approved clauses into a single OR-separated clause.
+               if ( ! empty( $approved_clauses ) ) {
+                       if ( 1 === count( $approved_clauses ) ) {
+                               $this->sql_clauses['where']['approved'] = $approved_clauses[0];
+                       } else {
+                               $this->sql_clauses['where']['approved'] = '( ' . implode( ' OR ', $approved_clauses ) . ' )';
+                       }
+               }
+
+               $order = ( 'ASC' == strtoupper( $this->query_vars['order'] ) ) ? 'ASC' : 'DESC';
+
+               // Disable ORDER BY with 'none', an empty array, or boolean false.
+               if ( in_array( $this->query_vars['orderby'], array( 'none', array(), false ), true ) ) {
+                       $orderby = '';
+               } elseif ( ! empty( $this->query_vars['orderby'] ) ) {
+                       $ordersby = is_array( $this->query_vars['orderby'] ) ?
+                               $this->query_vars['orderby'] :
+                               preg_split( '/[,\s]/', $this->query_vars['orderby'] );
+
+                       $orderby_array = array();
+                       $found_orderby_comment_ID = false;
+                       foreach ( $ordersby as $_key => $_value ) {
+                               if ( ! $_value ) {
+                                       continue;
+                               }
+
+                               if ( is_int( $_key ) ) {
+                                       $_orderby = $_value;
+                                       $_order = $order;
+                               } else {
+                                       $_orderby = $_key;
+                                       $_order = $_value;
+                               }
+
+                               if ( ! $found_orderby_comment_ID && in_array( $_orderby, array( 'comment_ID', 'comment__in' ) ) ) {
+                                       $found_orderby_comment_ID = true;
+                               }
+
+                               $parsed = $this->parse_orderby( $_orderby );
+
+                               if ( ! $parsed ) {
+                                       continue;
+                               }
+
+                               if ( 'comment__in' === $_orderby ) {
+                                       $orderby_array[] = $parsed;
+                                       continue;
+                               }
+
+                               $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
+                       }
+
+                       // If no valid clauses were found, order by comment_date_gmt.
+                       if ( empty( $orderby_array ) ) {
+                               $orderby_array[] = "$wpdb->comments.comment_date_gmt $order";
+                       }
+
+                       // To ensure determinate sorting, always include a comment_ID clause.
+                       if ( ! $found_orderby_comment_ID ) {
+                               $comment_ID_order = '';
+
+                               // Inherit order from comment_date or comment_date_gmt, if available.
+                               foreach ( $orderby_array as $orderby_clause ) {
+                                       if ( preg_match( '/comment_date(?:_gmt)*\ (ASC|DESC)/', $orderby_clause, $match ) ) {
+                                               $comment_ID_order = $match[1];
+                                               break;
+                                       }
+                               }
+
+                               // If no date-related order is available, use the date from the first available clause.
+                               if ( ! $comment_ID_order ) {
+                                       foreach ( $orderby_array as $orderby_clause ) {
+                                               if ( false !== strpos( 'ASC', $orderby_clause ) ) {
+                                                       $comment_ID_order = 'ASC';
+                                               } else {
+                                                       $comment_ID_order = 'DESC';
+                                               }
+
+                                               break;
+                                       }
+                               }
+
+                               // Default to DESC.
+                               if ( ! $comment_ID_order ) {
+                                       $comment_ID_order = 'DESC';
+                               }
+
+                               $orderby_array[] = "$wpdb->comments.comment_ID $comment_ID_order";
+                       }
+
+                       $orderby = implode( ', ', $orderby_array );
+               } else {
+                       $orderby = "$wpdb->comments.comment_date_gmt $order";
+               }
+
+               $number = absint( $this->query_vars['number'] );
+               $offset = absint( $this->query_vars['offset'] );
+
+               if ( ! empty( $number ) ) {
+                       if ( $offset ) {
+                               $limits = 'LIMIT ' . $offset . ',' . $number;
+                       } else {
+                               $limits = 'LIMIT ' . $number;
+                       }
+               }
+
+               if ( $this->query_vars['count'] ) {
+                       $fields = 'COUNT(*)';
+               } else {
+                       $fields = "$wpdb->comments.comment_ID";
+               }
+
+               $post_id = absint( $this->query_vars['post_id'] );
+               if ( ! empty( $post_id ) ) {
+                       $this->sql_clauses['where']['post_id'] = $wpdb->prepare( 'comment_post_ID = %d', $post_id );
+               }
+
+               // Parse comment IDs for an IN clause.
+               if ( ! empty( $this->query_vars['comment__in'] ) ) {
+                       $this->sql_clauses['where']['comment__in'] = "$wpdb->comments.comment_ID IN ( " . implode( ',', wp_parse_id_list( $this->query_vars['comment__in'] ) ) . ' )';
+               }
+
+               // Parse comment IDs for a NOT IN clause.
+               if ( ! empty( $this->query_vars['comment__not_in'] ) ) {
+                       $this->sql_clauses['where']['comment__not_in'] = "$wpdb->comments.comment_ID NOT IN ( " . implode( ',', wp_parse_id_list( $this->query_vars['comment__not_in'] ) ) . ' )';
+               }
+
+               // Parse comment parent IDs for an IN clause.
+               if ( ! empty( $this->query_vars['parent__in'] ) ) {
+                       $this->sql_clauses['where']['parent__in'] = 'comment_parent IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['parent__in'] ) ) . ' )';
+               }
+
+               // Parse comment parent IDs for a NOT IN clause.
+               if ( ! empty( $this->query_vars['parent__not_in'] ) ) {
+                       $this->sql_clauses['where']['parent__not_in'] = 'comment_parent NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['parent__not_in'] ) ) . ' )';
+               }
+
+               // Parse comment post IDs for an IN clause.
+               if ( ! empty( $this->query_vars['post__in'] ) ) {
+                       $this->sql_clauses['where']['post__in'] = 'comment_post_ID IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post__in'] ) ) . ' )';
+               }
+
+               // Parse comment post IDs for a NOT IN clause.
+               if ( ! empty( $this->query_vars['post__not_in'] ) ) {
+                       $this->sql_clauses['where']['post__not_in'] = 'comment_post_ID NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post__not_in'] ) ) . ' )';
+               }
+
+               if ( '' !== $this->query_vars['author_email'] ) {
+                       $this->sql_clauses['where']['author_email'] = $wpdb->prepare( 'comment_author_email = %s', $this->query_vars['author_email'] );
+               }
+
+               if ( '' !== $this->query_vars['karma'] ) {
+                       $this->sql_clauses['where']['karma'] = $wpdb->prepare( 'comment_karma = %d', $this->query_vars['karma'] );
+               }
+
+               // Filtering by comment_type: 'type', 'type__in', 'type__not_in'.
+               $raw_types = array(
+                       'IN' => array_merge( (array) $this->query_vars['type'], (array) $this->query_vars['type__in'] ),
+                       'NOT IN' => (array) $this->query_vars['type__not_in'],
+               );
+
+               $comment_types = array();
+               foreach ( $raw_types as $operator => $_raw_types ) {
+                       $_raw_types = array_unique( $_raw_types );
+
+                       foreach ( $_raw_types as $type ) {
+                               switch ( $type ) {
+                                       // An empty translates to 'all', for backward compatibility
+                                       case '':
+                                       case 'all' :
+                                               break;
+
+                                       case 'comment':
+                                       case 'comments':
+                                               $comment_types[ $operator ][] = "''";
+                                               break;
+
+                                       case 'pings':
+                                               $comment_types[ $operator ][] = "'pingback'";
+                                               $comment_types[ $operator ][] = "'trackback'";
+                                               break;
+
+                                       default:
+                                               $comment_types[ $operator ][] = $wpdb->prepare( '%s', $type );
+                                               break;
+                               }
+                       }
+
+                       if ( ! empty( $comment_types[ $operator ] ) ) {
+                               $types_sql = implode( ', ', $comment_types[ $operator ] );
+                               $this->sql_clauses['where']['comment_type__' . strtolower( str_replace( ' ', '_', $operator ) ) ] = "comment_type $operator ($types_sql)";
+                       }
+               }
+
+               if ( $this->query_vars['hierarchical'] && ! $this->query_vars['parent'] ) {
+                       $this->query_vars['parent'] = 0;
+               }
+
+               if ( '' !== $this->query_vars['parent'] ) {
+                       $this->sql_clauses['where']['parent'] = $wpdb->prepare( 'comment_parent = %d', $this->query_vars['parent'] );
+               }
+
+               if ( is_array( $this->query_vars['user_id'] ) ) {
+                       $this->sql_clauses['where']['user_id'] = 'user_id IN (' . implode( ',', array_map( 'absint', $this->query_vars['user_id'] ) ) . ')';
+               } elseif ( '' !== $this->query_vars['user_id'] ) {
+                       $this->sql_clauses['where']['user_id'] = $wpdb->prepare( 'user_id = %d', $this->query_vars['user_id'] );
+               }
+
+               if ( '' !== $this->query_vars['search'] ) {
+                       $search_sql = $this->get_search_sql(
+                               $this->query_vars['search'],
+                               array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_content' )
+                       );
+
+                       // Strip leading 'AND'.
+                       $this->sql_clauses['where']['search'] = preg_replace( '/^\s*AND\s*/', '', $search_sql );
+               }
+
+               // If any post-related query vars are passed, join the posts table.
+               $join_posts_table = false;
+               $plucked = wp_array_slice_assoc( $this->query_vars, array( 'post_author', 'post_name', 'post_parent', 'post_status', 'post_type' ) );
+               $post_fields = array_filter( $plucked );
+
+               if ( ! empty( $post_fields ) ) {
+                       $join_posts_table = true;
+                       foreach ( $post_fields as $field_name => $field_value ) {
+                               // $field_value may be an array.
+                               $esses = array_fill( 0, count( (array) $field_value ), '%s' );
+                               $this->sql_clauses['where']['post_fields'] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
+                       }
+               }
+
+               // Comment author IDs for an IN clause.
+               if ( ! empty( $this->query_vars['author__in'] ) ) {
+                       $this->sql_clauses['where']['author__in'] = 'user_id IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['author__in'] ) ) . ' )';
+               }
+
+               // Comment author IDs for a NOT IN clause.
+               if ( ! empty( $this->query_vars['author__not_in'] ) ) {
+                       $this->sql_clauses['where']['author__not_in'] = 'user_id NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['author__not_in'] ) ) . ' )';
+               }
+
+               // Post author IDs for an IN clause.
+               if ( ! empty( $this->query_vars['post_author__in'] ) ) {
+                       $join_posts_table = true;
+                       $this->sql_clauses['where']['post_author__in'] = 'post_author IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post_author__in'] ) ) . ' )';
+               }
+
+               // Post author IDs for a NOT IN clause.
+               if ( ! empty( $this->query_vars['post_author__not_in'] ) ) {
+                       $join_posts_table = true;
+                       $this->sql_clauses['where']['post_author__not_in'] = 'post_author NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post_author__not_in'] ) ) . ' )';
+               }
+
+               $join = '';
+
+               if ( $join_posts_table ) {
+                       $join .= "JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->comments.comment_post_ID";
+               }
+
+               if ( ! empty( $this->meta_query_clauses ) ) {
+                       $join .= $this->meta_query_clauses['join'];
+
+                       // Strip leading 'AND'.
+                       $this->sql_clauses['where']['meta_query'] = preg_replace( '/^\s*AND\s*/', '', $this->meta_query_clauses['where'] );
+
+                       if ( ! $this->query_vars['count'] ) {
+                               $groupby = "{$wpdb->comments}.comment_ID";
+                       }
+               }
+
+               $date_query = $this->query_vars['date_query'];
+               if ( ! empty( $date_query ) && is_array( $date_query ) ) {
+                       $date_query_object = new WP_Date_Query( $date_query, 'comment_date' );
+                       $this->sql_clauses['where']['date_query'] = preg_replace( '/^\s*AND\s*/', '', $date_query_object->get_sql() );
+               }
+
+               $where = implode( ' AND ', $this->sql_clauses['where'] );
+
+               $pieces = array( 'fields', 'join', 'where', 'orderby', 'limits', 'groupby' );
+               /**
+                * Filter the comment query clauses.
+                *
+                * @since 3.1.0
+                *
+                * @param array            $pieces A compacted array of comment query clauses.
+                * @param WP_Comment_Query &$this  Current instance of WP_Comment_Query, passed by reference.
+                */
+               $clauses = apply_filters_ref_array( 'comments_clauses', array( compact( $pieces ), &$this ) );
+
+               $fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : '';
+               $join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : '';
+               $where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : '';
+               $orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby' ] : '';
+               $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
+               $groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : '';
+
+               if ( $where ) {
+                       $where = 'WHERE ' . $where;
+               }
+
+               if ( $groupby ) {
+                       $groupby = 'GROUP BY ' . $groupby;
+               }
+
+               if ( $orderby ) {
+                       $orderby = "ORDER BY $orderby";
+               }
+
+               $found_rows = '';
+               if ( ! $this->query_vars['no_found_rows'] ) {
+                       $found_rows = 'SQL_CALC_FOUND_ROWS';
+               }
+
+               $this->sql_clauses['select']  = "SELECT $found_rows $fields";
+               $this->sql_clauses['from']    = "FROM $wpdb->comments $join";
+               $this->sql_clauses['groupby'] = $groupby;
+               $this->sql_clauses['orderby'] = $orderby;
+               $this->sql_clauses['limits']  = $limits;
+
+               $this->request = "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['groupby']} {$this->sql_clauses['orderby']} {$this->sql_clauses['limits']}";
+
+               if ( $this->query_vars['count'] ) {
+                       return intval( $wpdb->get_var( $this->request ) );
+               } else {
+                       $comment_ids = $wpdb->get_col( $this->request );
+                       return array_map( 'intval', $comment_ids );
+               }
+       }
+
+       /**
+        * Fetch descendants for located comments.
+        *
+        * Instead of calling `get_children()` separately on each child comment, we do a single set of queries to fetch
+        * the descendant trees for all matched top-level comments.
+        *
+        * @since 4.4.0
+        *
+        * @param array $comments Array of top-level comments whose descendants should be filled in.
+        * @return array
+        */
+       protected function fill_descendants( $comments ) {
+               global $wpdb;
+
+               $levels = array(
+                       0 => wp_list_pluck( $comments, 'comment_ID' ),
+               );
+
+               $where_clauses = $this->sql_clauses['where'];
+               unset(
+                       $where_clauses['parent'],
+                       $where_clauses['parent__in'],
+                       $where_clauses['parent__not_in']
+               );
+
+               // Fetch an entire level of the descendant tree at a time.
+               $level = 0;
+               do {
+                       $parent_ids = $levels[ $level ];
+                       if ( ! $parent_ids ) {
+                               break;
+                       }
+
+                       $where = 'WHERE ' . implode( ' AND ', $where_clauses ) . ' AND comment_parent IN (' . implode( ',', array_map( 'intval', $parent_ids ) ) . ')';
+                       $comment_ids = $wpdb->get_col( "{$this->sql_clauses['select']} {$this->sql_clauses['from']} {$where} {$this->sql_clauses['groupby']} ORDER BY comment_date_gmt ASC, comment_ID ASC" );
+
+                       $level++;
+                       $levels[ $level ] = $comment_ids;
+               } while ( $comment_ids );
+
+               // Prime comment caches for non-top-level comments.
+               $descendant_ids = array();
+               for ( $i = 1; $i < count( $levels ); $i++ ) {
+                       $descendant_ids = array_merge( $descendant_ids, $levels[ $i ] );
+               }
+
+               _prime_comment_caches( $descendant_ids, $this->query_vars['update_comment_meta_cache'] );
+
+               // Assemble a flat array of all comments + descendants.
+               $all_comments = $comments;
+               foreach ( $descendant_ids as $descendant_id ) {
+                       $all_comments[] = get_comment( $descendant_id );
+               }
+
+               // If a threaded representation was requested, build the tree.
+               if ( 'threaded' === $this->query_vars['hierarchical'] ) {
+                       $threaded_comments = $ref = array();
+                       foreach ( $all_comments as $k => $c ) {
+                               $_c = get_comment( $c->comment_ID );
+
+                               // If the comment isn't in the reference array, it goes in the top level of the thread.
+                               if ( ! isset( $ref[ $c->comment_parent ] ) ) {
+                                       $threaded_comments[ $_c->comment_ID ] = $_c;
+                                       $ref[ $_c->comment_ID ] = $threaded_comments[ $_c->comment_ID ];
+
+                               // Otherwise, set it as a child of its parent.
+                               } else {
+
+                                       $ref[ $_c->comment_parent ]->add_child( $_c );
+                                       $ref[ $_c->comment_ID ] = $ref[ $_c->comment_parent ]->get_child( $_c->comment_ID );
+                               }
+                       }
+
+                       // Set the 'populated_children' flag, to ensure additional database queries aren't run.
+                       foreach ( $ref as $_ref ) {
+                               $_ref->populated_children( true );
+                       }
+
+                       $comments = $threaded_comments;
+               } else {
+                       $comments = $all_comments;
+               }
+
+               return $comments;
+       }
+
+       /**
+        * Used internally to generate an SQL string for searching across multiple columns
+        *
+        * @since 3.1.0
+        * @access protected
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param string $string
+        * @param array $cols
+        * @return string
+        */
+       protected function get_search_sql( $string, $cols ) {
+               global $wpdb;
+
+               $like = '%' . $wpdb->esc_like( $string ) . '%';
+
+               $searches = array();
+               foreach ( $cols as $col ) {
+                       $searches[] = $wpdb->prepare( "$col LIKE %s", $like );
+               }
+
+               return ' AND (' . implode(' OR ', $searches) . ')';
+       }
+
+       /**
+        * Parse and sanitize 'orderby' keys passed to the comment query.
+        *
+        * @since 4.2.0
+        * @access protected
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param string $orderby Alias for the field to order by.
+        * @return string|false Value to used in the ORDER clause. False otherwise.
+        */
+       protected function parse_orderby( $orderby ) {
+               global $wpdb;
+
+               $allowed_keys = array(
+                       'comment_agent',
+                       'comment_approved',
+                       'comment_author',
+                       'comment_author_email',
+                       'comment_author_IP',
+                       'comment_author_url',
+                       'comment_content',
+                       'comment_date',
+                       'comment_date_gmt',
+                       'comment_ID',
+                       'comment_karma',
+                       'comment_parent',
+                       'comment_post_ID',
+                       'comment_type',
+                       'user_id',
+               );
+
+               if ( ! empty( $this->query_vars['meta_key'] ) ) {
+                       $allowed_keys[] = $this->query_vars['meta_key'];
+                       $allowed_keys[] = 'meta_value';
+                       $allowed_keys[] = 'meta_value_num';
+               }
+
+               $meta_query_clauses = $this->meta_query->get_clauses();
+               if ( $meta_query_clauses ) {
+                       $allowed_keys = array_merge( $allowed_keys, array_keys( $meta_query_clauses ) );
+               }
+
+               $parsed = false;
+               if ( $orderby == $this->query_vars['meta_key'] || $orderby == 'meta_value' ) {
+                       $parsed = "$wpdb->commentmeta.meta_value";
+               } elseif ( $orderby == 'meta_value_num' ) {
+                       $parsed = "$wpdb->commentmeta.meta_value+0";
+               } elseif ( $orderby == 'comment__in' ) {
+                       $comment__in = implode( ',', array_map( 'absint', $this->query_vars['comment__in'] ) );
+                       $parsed = "FIELD( {$wpdb->comments}.comment_ID, $comment__in )";
+               } elseif ( in_array( $orderby, $allowed_keys ) ) {
+
+                       if ( isset( $meta_query_clauses[ $orderby ] ) ) {
+                               $meta_clause = $meta_query_clauses[ $orderby ];
+                               $parsed = sprintf( "CAST(%s.meta_value AS %s)", esc_sql( $meta_clause['alias'] ), esc_sql( $meta_clause['cast'] ) );
+                       } else {
+                               $parsed = "$wpdb->comments.$orderby";
+                       }
+               }
+
+               return $parsed;
+       }
+
+       /**
+        * Parse an 'order' query variable and cast it to ASC or DESC as necessary.
+        *
+        * @since 4.2.0
+        * @access protected
+        *
+        * @param string $order The 'order' query variable.
+        * @return string The sanitized 'order' query variable.
+        */
+       protected function parse_order( $order ) {
+               if ( ! is_string( $order ) || empty( $order ) ) {
+                       return 'DESC';
+               }
+
+               if ( 'ASC' === strtoupper( $order ) ) {
+                       return 'ASC';
+               } else {
+                       return 'DESC';
+               }
+       }
+}
diff --git a/wp-includes/class-wp-comment.php b/wp-includes/class-wp-comment.php
new file mode 100644 (file)
index 0000000..6319ad4
--- /dev/null
@@ -0,0 +1,393 @@
+<?php
+/**
+ * Comment API: WP_Comment class
+ *
+ * @package WordPress
+ * @subpackage Comments
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to organize comments as instantiated objects with defined members.
+ *
+ * @since 4.4.0
+ */
+final class WP_Comment {
+
+       /**
+        * Comment ID.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $comment_ID;
+
+       /**
+        * ID of the post the comment is associated with.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $comment_post_ID = 0;
+
+       /**
+        * Comment author ID.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $comment_author = '';
+
+       /**
+        * Comment author email address.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $comment_author_email = '';
+
+       /**
+        * Comment author URL.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $comment_author_url = '';
+
+       /**
+        * Comment author IP address (IPv4 format).
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $comment_author_IP = '';
+
+       /**
+        * Comment date in YYYY-MM-DD HH:MM:SS format.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $comment_date = '0000-00-00 00:00:00';
+
+       /**
+        * Comment GMT date in YYYY-MM-DD HH::MM:SS format.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $comment_date_gmt = '0000-00-00 00:00:00';
+
+       /**
+        * Comment content.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $comment_content;
+
+       /**
+        * Comment karma count.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $comment_karma = 0;
+
+       /**
+        * Comment approval status.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $comment_approved = '1';
+
+       /**
+        * Comment author HTTP user agent.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $comment_agent = '';
+
+       /**
+        * Comment type.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $comment_type = '';
+
+       /**
+        * Parent comment ID.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $comment_parent = 0;
+
+       /**
+        * Comment author ID.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $user_id = 0;
+
+       /**
+        * Comment children.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array
+        */
+       protected $children;
+
+       /**
+        * Whether children have been populated for this comment object.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var bool
+        */
+       protected $populated_children = false;
+
+       /**
+        * Post fields.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array
+        */
+       protected $post_fields = array( 'post_author', 'post_date', 'post_date_gmt', 'post_content', 'post_title', 'post_excerpt', 'post_status', 'comment_status', 'ping_status', 'post_name', 'to_ping', 'pinged', 'post_modified', 'post_modified_gmt', 'post_content_filtered', 'post_parent', 'guid', 'menu_order', 'post_type', 'post_mime_type', 'comment_count' );
+
+       /**
+        * Retrieves a WP_Comment instance.
+        *
+        * @since 4.4.0
+        * @access public
+        * @static
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param int $id Comment ID.
+        * @return WP_Comment|false Comment object, otherwise false.
+        */
+       public static function get_instance( $id ) {
+               global $wpdb;
+
+               $comment_id = (int) $id;
+               if ( ! $comment_id ) {
+                       return false;
+               }
+
+               $_comment = wp_cache_get( $comment_id, 'comment' );
+
+               if ( ! $_comment ) {
+                       $_comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_ID = %d LIMIT 1", $comment_id ) );
+
+                       if ( ! $_comment ) {
+                               return false;
+                       }
+
+                       wp_cache_add( $_comment->comment_ID, $_comment, 'comment' );
+               }
+
+               return new WP_Comment( $_comment );
+       }
+
+       /**
+        * Constructor.
+        *
+        * Populates properties with object vars.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param WP_Comment $comment Comment object.
+        */
+       public function __construct( $comment ) {
+               foreach ( get_object_vars( $comment ) as $key => $value ) {
+                       $this->$key = $value;
+               }
+       }
+
+       /**
+        * Convert object to array.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Object as array.
+        */
+       public function to_array() {
+               return get_object_vars( $this );
+       }
+
+       /**
+        * Get the children of a comment.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $args {
+        *     Array of arguments used to pass to get_comments() and determine format.
+        *
+        *     @type string $format        Return value format. 'tree' for a hierarchical tree, 'flat' for a flattened array.
+        *                                 Default 'tree'.
+        *     @type string $status        Comment status to limit results by. Accepts 'hold' (`comment_status=0`),
+        *                                 'approve' (`comment_status=1`), 'all', or a custom comment status.
+        *                                 Default 'all'.
+        *     @type string $hierarchical  Whether to include comment descendants in the results.
+        *                                 'threaded' returns a tree, with each comment's children
+        *                                 stored in a `children` property on the `WP_Comment` object.
+        *                                 'flat' returns a flat array of found comments plus their children.
+        *                                 Pass `false` to leave out descendants.
+        *                                 The parameter is ignored (forced to `false`) when `$fields` is 'ids' or 'counts'.
+        *                                 Accepts 'threaded', 'flat', or false. Default: 'threaded'.
+        *     @type string|array $orderby Comment status or array of statuses. To use 'meta_value'
+        *                                 or 'meta_value_num', `$meta_key` must also be defined.
+        *                                 To sort by a specific `$meta_query` clause, use that
+        *                                 clause's array key. Accepts 'comment_agent',
+        *                                 'comment_approved', 'comment_author',
+        *                                 'comment_author_email', 'comment_author_IP',
+        *                                 'comment_author_url', 'comment_content', 'comment_date',
+        *                                 'comment_date_gmt', 'comment_ID', 'comment_karma',
+        *                                 'comment_parent', 'comment_post_ID', 'comment_type',
+        *                                 'user_id', 'comment__in', 'meta_value', 'meta_value_num',
+        *                                 the value of $meta_key, and the array keys of
+        *                                 `$meta_query`. Also accepts false, an empty array, or
+        *                                 'none' to disable `ORDER BY` clause.
+        * }
+        * @return array Array of `WP_Comment` objects.
+        */
+       public function get_children( $args = array() ) {
+               $defaults = array(
+                       'format' => 'tree',
+                       'status' => 'all',
+                       'hierarchical' => 'threaded',
+                       'orderby' => '',
+               );
+
+               $_args = wp_parse_args( $args, $defaults );
+               $_args['parent'] = $this->comment_ID;
+
+               if ( is_null( $this->children ) ) {
+                       if ( $this->populated_children ) {
+                               $this->children = array();
+                       } else {
+                               $this->children = get_comments( $_args );
+                       }
+               }
+
+               if ( 'flat' === $_args['format'] ) {
+                       $children = array();
+                       foreach ( $this->children as $child ) {
+                               $child_args = $_args;
+                               $child_args['format'] = 'flat';
+                               // get_children() resets this value automatically.
+                               unset( $child_args['parent'] );
+
+                               $children = array_merge( $children, array( $child ), $child->get_children( $child_args ) );
+                       }
+               } else {
+                       $children = $this->children;
+               }
+
+               return $children;
+       }
+
+       /**
+        * Add a child to the comment.
+        *
+        * Used by `WP_Comment_Query` when bulk-filling descendants.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param WP_Comment $child Child comment.
+        */
+       public function add_child( WP_Comment $child ) {
+               $this->children[ $child->comment_ID ] = $child;
+       }
+
+       /**
+        * Get a child comment by ID.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param int $child_id ID of the child.
+        * @return WP_Comment|bool Returns the comment object if found, otherwise false.
+        */
+       public function get_child( $child_id ) {
+               if ( isset( $this->children[ $child_id ] ) ) {
+                       return $this->children[ $child_id ];
+               }
+
+               return false;
+       }
+
+       /**
+        * Set the 'populated_children' flag.
+        *
+        * This flag is important for ensuring that calling `get_children()` on a childless comment will not trigger
+        * unneeded database queries.
+        *
+        * @since 4.4.0
+        */
+       public function populated_children( $set ) {
+               $this->populated_children = (bool) $set;
+       }
+
+       /**
+        * Check whether a non-public property is set.
+        *
+        * If `$name` matches a post field, the comment post will be loaded and the post's value checked.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $name Property name.
+        * @return bool
+        */
+       public function __isset( $name ) {
+               if ( in_array( $name, $this->post_fields ) && 0 !== (int) $this->comment_post_ID ) {
+                       $post = get_post( $this->comment_post_ID );
+                       return property_exists( $post, $name );
+               }
+       }
+
+       /**
+        * Magic getter.
+        *
+        * If `$name` matches a post field, the comment post will be loaded and the post's value returned.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $name
+        * @return mixed
+        */
+       public function __get( $name ) {
+               if ( in_array( $name, $this->post_fields ) ) {
+                       $post = get_post( $this->comment_post_ID );
+                       return $post->$name;
+               }
+       }
+}
index 1e6214627406297df407a883ba87ce70e4499146..3027a7b55c65a8493a55be62f1313e7687db5085 100644 (file)
@@ -344,7 +344,7 @@ class WP_Customize_Control {
         * @since 3.4.0
         */
        protected function render() {
-               $id    = 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) );
+               $id    = 'customize-control-' . str_replace( array( '[', ']' ), array( '-', '' ), $this->id );
                $class = 'customize-control customize-control-' . $this->type;
 
                ?><li id="<?php echo esc_attr( $id ); ?>" class="<?php echo esc_attr( $class ); ?>">
@@ -386,7 +386,7 @@ class WP_Customize_Control {
         * @access public
         */
        public function input_attrs() {
-               foreach( $this->input_attrs as $attr => $value ) {
+               foreach ( $this->input_attrs as $attr => $value ) {
                        echo $attr . '="' . esc_attr( $value ) . '" ';
                }
        }
@@ -474,7 +474,16 @@ class WP_Customize_Control {
                                <?php
                                break;
                        case 'dropdown-pages':
-                               $dropdown = wp_dropdown_pages(
+                               ?>
+                               <label>
+                               <?php if ( ! empty( $this->label ) ) : ?>
+                                       <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
+                               <?php endif;
+                               if ( ! empty( $this->description ) ) : ?>
+                                       <span class="description customize-control-description"><?php echo $this->description; ?></span>
+                               <?php endif; ?>
+
+                               <?php $dropdown = wp_dropdown_pages(
                                        array(
                                                'name'              => '_customize-dropdown-pages-' . $this->id,
                                                'echo'              => 0,
@@ -486,12 +495,10 @@ class WP_Customize_Control {
 
                                // Hackily add in the data link parameter.
                                $dropdown = str_replace( '<select', '<select ' . $this->get_link(), $dropdown );
-
-                               printf(
-                                       '<label class="customize-control-select"><span class="customize-control-title">%s</span> %s</label>',
-                                       $this->label,
-                                       $dropdown
-                               );
+                               echo $dropdown;
+                               ?>
+                               </label>
+                               <?php
                                break;
                        default:
                                ?>
@@ -542,1430 +549,53 @@ class WP_Customize_Control {
 
 }
 
-/**
- * Customize Color Control class.
- *
- * @since 3.4.0
- *
- * @see WP_Customize_Control
- */
-class WP_Customize_Color_Control extends WP_Customize_Control {
-       /**
-        * @access public
-        * @var string
-        */
-       public $type = 'color';
-
-       /**
-        * @access public
-        * @var array
-        */
-       public $statuses;
-
-       /**
-        * Constructor.
-        *
-        * @since 3.4.0
-        * @uses WP_Customize_Control::__construct()
-        *
-        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
-        * @param string               $id      Control ID.
-        * @param array                $args    Optional. Arguments to override class property defaults.
-        */
-       public function __construct( $manager, $id, $args = array() ) {
-               $this->statuses = array( '' => __('Default') );
-               parent::__construct( $manager, $id, $args );
-       }
-
-       /**
-        * Enqueue scripts/styles for the color picker.
-        *
-        * @since 3.4.0
-        */
-       public function enqueue() {
-               wp_enqueue_script( 'wp-color-picker' );
-               wp_enqueue_style( 'wp-color-picker' );
-       }
-
-       /**
-        * Refresh the parameters passed to the JavaScript via JSON.
-        *
-        * @since 3.4.0
-        * @uses WP_Customize_Control::to_json()
-        */
-       public function to_json() {
-               parent::to_json();
-               $this->json['statuses'] = $this->statuses;
-               $this->json['defaultValue'] = $this->setting->default;
-       }
-
-       /**
-        * Don't render the control content from PHP, as it's rendered via JS on load.
-        *
-        * @since 3.4.0
-        */
-       public function render_content() {}
-
-       /**
-        * Render a JS template for the content of the color picker control.
-        *
-        * @since 4.1.0
-        */
-       public function content_template() {
-               ?>
-               <# var defaultValue = '';
-               if ( data.defaultValue ) {
-                       if ( '#' !== data.defaultValue.substring( 0, 1 ) ) {
-                               defaultValue = '#' + data.defaultValue;
-                       } else {
-                               defaultValue = data.defaultValue;
-                       }
-                       defaultValue = ' data-default-color=' + defaultValue; // Quotes added automatically.
-               } #>
-               <label>
-                       <# if ( data.label ) { #>
-                               <span class="customize-control-title">{{{ data.label }}}</span>
-                       <# } #>
-                       <# if ( data.description ) { #>
-                               <span class="description customize-control-description">{{{ data.description }}}</span>
-                       <# } #>
-                       <div class="customize-control-content">
-                               <input class="color-picker-hex" type="text" maxlength="7" placeholder="<?php esc_attr_e( 'Hex Value' ); ?>" {{ defaultValue }} />
-                       </div>
-               </label>
-               <?php
-       }
-}
-
-/**
- * Customize Media Control class.
- *
- * @since 4.2.0
- *
- * @see WP_Customize_Control
- */
-class WP_Customize_Media_Control extends WP_Customize_Control {
-       /**
-        * Control type.
-        *
-        * @since 4.2.0
-        * @access public
-        * @var string
-        */
-       public $type = 'media';
-
-       /**
-        * Media control mime type.
-        *
-        * @since 4.2.0
-        * @access public
-        * @var string
-        */
-       public $mime_type = '';
-
-       /**
-        * Button labels.
-        *
-        * @since 4.2.0
-        * @access public
-        * @var array
-        */
-       public $button_labels = array();
-
-       /**
-        * Constructor.
-        *
-        * @since 4.1.0
-        * @since 4.2.0 Moved from WP_Customize_Upload_Control.
-        *
-        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
-        * @param string               $id      Control ID.
-        * @param array                $args    Optional. Arguments to override class property defaults.
-        */
-       public function __construct( $manager, $id, $args = array() ) {
-               parent::__construct( $manager, $id, $args );
-
-               $this->button_labels = array(
-                       'select'       => __( 'Select File' ),
-                       'change'       => __( 'Change File' ),
-                       'default'      => __( 'Default' ),
-                       'remove'       => __( 'Remove' ),
-                       'placeholder'  => __( 'No file selected' ),
-                       'frame_title'  => __( 'Select File' ),
-                       'frame_button' => __( 'Choose File' ),
-               );
-       }
-
-       /**
-        * Enqueue control related scripts/styles.
-        *
-        * @since 3.4.0
-        * @since 4.2.0 Moved from WP_Customize_Upload_Control.
-        */
-       public function enqueue() {
-               wp_enqueue_media();
-       }
-
-       /**
-        * Refresh the parameters passed to the JavaScript via JSON.
-        *
-        * @since 3.4.0
-        * @since 4.2.0 Moved from WP_Customize_Upload_Control.
-        *
-        * @see WP_Customize_Control::to_json()
-        */
-       public function to_json() {
-               parent::to_json();
-               $this->json['label'] = html_entity_decode( $this->label, ENT_QUOTES, get_bloginfo( 'charset' ) );
-               $this->json['mime_type'] = $this->mime_type;
-               $this->json['button_labels'] = $this->button_labels;
-               $this->json['canUpload'] = current_user_can( 'upload_files' );
-
-               $value = $this->value();
-
-               if ( is_object( $this->setting ) ) {
-                       if ( $this->setting->default ) {
-                               // Fake an attachment model - needs all fields used by template.
-                               // Note that the default value must be a URL, NOT an attachment ID.
-                               $type = in_array( substr( $this->setting->default, -3 ), array( 'jpg', 'png', 'gif', 'bmp' ) ) ? 'image' : 'document';
-                               $default_attachment = array(
-                                       'id' => 1,
-                                       'url' => $this->setting->default,
-                                       'type' => $type,
-                                       'icon' => wp_mime_type_icon( $type ),
-                                       'title' => basename( $this->setting->default ),
-                               );
-
-                               if ( 'image' === $type ) {
-                                       $default_attachment['sizes'] = array(
-                                               'full' => array( 'url' => $this->setting->default ),
-                                       );
-                               }
-
-                               $this->json['defaultAttachment'] = $default_attachment;
-                       }
-
-                       if ( $value && $this->setting->default && $value === $this->setting->default ) {
-                               // Set the default as the attachment.
-                               $this->json['attachment'] = $this->json['defaultAttachment'];
-                       } elseif ( $value ) {
-                               $this->json['attachment'] = wp_prepare_attachment_for_js( $value );
-                       }
-               }
-       }
-
-       /**
-        * Don't render any content for this control from PHP.
-        *
-        * @since 3.4.0
-        * @since 4.2.0 Moved from WP_Customize_Upload_Control.
-        *
-        * @see WP_Customize_Media_Control::content_template()
-        */
-       public function render_content() {}
-
-       /**
-        * Render a JS template for the content of the media control.
-        *
-        * @since 4.1.0
-        * @since 4.2.0 Moved from WP_Customize_Upload_Control.
-        */
-       public function content_template() {
-               ?>
-               <label for="{{ data.settings['default'] }}-button">
-                       <# if ( data.label ) { #>
-                               <span class="customize-control-title">{{ data.label }}</span>
-                       <# } #>
-                       <# if ( data.description ) { #>
-                               <span class="description customize-control-description">{{{ data.description }}}</span>
-                       <# } #>
-               </label>
-
-               <# if ( data.attachment && data.attachment.id ) { #>
-                       <div class="current">
-                               <div class="container">
-                                       <div class="attachment-media-view attachment-media-view-{{ data.attachment.type }} {{ data.attachment.orientation }}">
-                                               <div class="thumbnail thumbnail-{{ data.attachment.type }}">
-                                                       <# if ( 'image' === data.attachment.type && data.attachment.sizes && data.attachment.sizes.medium ) { #>
-                                                               <img class="attachment-thumb" src="{{ data.attachment.sizes.medium.url }}" draggable="false" />
-                                                       <# } else if ( 'image' === data.attachment.type && data.attachment.sizes && data.attachment.sizes.full ) { #>
-                                                               <img class="attachment-thumb" src="{{ data.attachment.sizes.full.url }}" draggable="false" />
-                                                       <# } else if ( 'audio' === data.attachment.type ) { #>
-                                                               <# if ( data.attachment.image && data.attachment.image.src && data.attachment.image.src !== data.attachment.icon ) { #>
-                                                                       <img src="{{ data.attachment.image.src }}" class="thumbnail" draggable="false" />
-                                                               <# } else { #>
-                                                                       <img src="{{ data.attachment.icon }}" class="attachment-thumb type-icon" draggable="false" />
-                                                               <# } #>
-                                                               <p class="attachment-meta attachment-meta-title">&#8220;{{ data.attachment.title }}&#8221;</p>
-                                                               <# if ( data.attachment.album || data.attachment.meta.album ) { #>
-                                                               <p class="attachment-meta"><em>{{ data.attachment.album || data.attachment.meta.album }}</em></p>
-                                                               <# } #>
-                                                               <# if ( data.attachment.artist || data.attachment.meta.artist ) { #>
-                                                               <p class="attachment-meta">{{ data.attachment.artist || data.attachment.meta.artist }}</p>
-                                                               <# } #>
-                                                               <audio style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none">
-                                                                       <source type="{{ data.attachment.mime }}" src="{{ data.attachment.url }}"/>
-                                                               </audio>
-                                                       <# } else if ( 'video' === data.attachment.type ) { #>
-                                                               <div class="wp-media-wrapper wp-video">
-                                                                       <video controls="controls" class="wp-video-shortcode" preload="metadata"
-                                                                               <# if ( data.attachment.image && data.attachment.image.src !== data.attachment.icon ) { #>poster="{{ data.attachment.image.src }}"<# } #>>
-                                                                               <source type="{{ data.attachment.mime }}" src="{{ data.attachment.url }}"/>
-                                                                       </video>
-                                                               </div>
-                                                       <# } else { #>
-                                                               <img class="attachment-thumb type-icon icon" src="{{ data.attachment.icon }}" draggable="false" />
-                                                               <p class="attachment-title">{{ data.attachment.title }}</p>
-                                                       <# } #>
-                                               </div>
-                                       </div>
-                               </div>
-                       </div>
-                       <div class="actions">
-                               <# if ( data.canUpload ) { #>
-                               <button type="button" class="button remove-button"><?php echo $this->button_labels['remove']; ?></button>
-                               <button type="button" class="button upload-button" id="{{ data.settings['default'] }}-button"><?php echo $this->button_labels['change']; ?></button>
-                               <div style="clear:both"></div>
-                               <# } #>
-                       </div>
-               <# } else { #>
-                       <div class="current">
-                               <div class="container">
-                                       <div class="placeholder">
-                                               <div class="inner">
-                                                       <span>
-                                                               <?php echo $this->button_labels['placeholder']; ?>
-                                                       </span>
-                                               </div>
-                                       </div>
-                               </div>
-                       </div>
-                       <div class="actions">
-                               <# if ( data.defaultAttachment ) { #>
-                                       <button type="button" class="button default-button"><?php echo $this->button_labels['default']; ?></button>
-                               <# } #>
-                               <# if ( data.canUpload ) { #>
-                               <button type="button" class="button upload-button" id="{{ data.settings['default'] }}-button"><?php echo $this->button_labels['select']; ?></button>
-                               <# } #>
-                               <div style="clear:both"></div>
-                       </div>
-               <# } #>
-               <?php
-       }
-}
-
-/**
- * Customize Upload Control Class.
- *
- * @since 3.4.0
- *
- * @see WP_Customize_Media_Control
- */
-class WP_Customize_Upload_Control extends WP_Customize_Media_Control {
-       public $type          = 'upload';
-       public $mime_type     = '';
-       public $button_labels = array();
-       public $removed = ''; // unused
-       public $context; // unused
-       public $extensions = array(); // unused
-
-       /**
-        * Refresh the parameters passed to the JavaScript via JSON.
-        *
-        * @since 3.4.0
-        *
-        * @uses WP_Customize_Media_Control::to_json()
-        */
-       public function to_json() {
-               parent::to_json();
-
-               $value = $this->value();
-               if ( $value ) {
-                       // Get the attachment model for the existing file.
-                       $attachment_id = attachment_url_to_postid( $value );
-                       if ( $attachment_id ) {
-                               $this->json['attachment'] = wp_prepare_attachment_for_js( $attachment_id );
-                       }
-               }
-       }
-}
-
-/**
- * Customize Image Control class.
- *
- * @since 3.4.0
- *
- * @see WP_Customize_Upload_Control
- */
-class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
-       public $type = 'image';
-       public $mime_type = 'image';
-
-       /**
-        * Constructor.
-        *
-        * @since 3.4.0
-        * @uses WP_Customize_Upload_Control::__construct()
-        *
-        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
-        * @param string               $id      Control ID.
-        * @param array                $args    Optional. Arguments to override class property defaults.
-        */
-       public function __construct( $manager, $id, $args = array() ) {
-               parent::__construct( $manager, $id, $args );
-
-               $this->button_labels = array(
-                       'select'       => __( 'Select Image' ),
-                       'change'       => __( 'Change Image' ),
-                       'remove'       => __( 'Remove' ),
-                       'default'      => __( 'Default' ),
-                       'placeholder'  => __( 'No image selected' ),
-                       'frame_title'  => __( 'Select Image' ),
-                       'frame_button' => __( 'Choose Image' ),
-               );
-       }
-
-       /**
-        * @since 3.4.2
-        * @deprecated 4.1.0
-        */
-       public function prepare_control() {}
-
-       /**
-        * @since 3.4.0
-        * @deprecated 4.1.0
-        *
-        * @param string $id
-        * @param string $label
-        * @param mixed $callback
-        */
-       public function add_tab( $id, $label, $callback ) {}
-
-       /**
-        * @since 3.4.0
-        * @deprecated 4.1.0
-        *
-        * @param string $id
-        */
-       public function remove_tab( $id ) {}
+/** WP_Customize_Color_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-color-control.php' );
 
-       /**
-        * @since 3.4.0
-        * @deprecated 4.1.0
-        *
-        * @param string $url
-        * @param string $thumbnail_url
-        */
-       public function print_tab_image( $url, $thumbnail_url = null ) {}
-}
+/** WP_Customize_Media_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-media-control.php' );
 
-/**
- * Customize Background Image Control class.
- *
- * @since 3.4.0
- *
- * @see WP_Customize_Image_Control
- */
-class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control {
-       public $type = 'background';
+/** WP_Customize_Upload_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-upload-control.php' );
 
-       /**
-        * Constructor.
-        *
-        * @since 3.4.0
-        * @uses WP_Customize_Image_Control::__construct()
-        *
-        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
-        */
-       public function __construct( $manager ) {
-               parent::__construct( $manager, 'background_image', array(
-                       'label'    => __( 'Background Image' ),
-                       'section'  => 'background_image',
-               ) );
-       }
+/** WP_Customize_Image_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-image-control.php' );
 
-       /**
-        * Enqueue control related scripts/styles.
-        *
-        * @since 4.1.0
-        */
-       public function enqueue() {
-               parent::enqueue();
-
-               wp_localize_script( 'customize-controls', '_wpCustomizeBackground', array(
-                       'nonces' => array(
-                               'add' => wp_create_nonce( 'background-add' ),
-                       ),
-               ) );
-       }
-}
+/** WP_Customize_Background_Image_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-background-image-control.php' );
 
-/**
- * Customize Cropped Image Control class.
- *
- * @since 4.3.0
- *
- * @see WP_Customize_Media_Control
- */
-class WP_Customize_Cropped_Image_Control extends WP_Customize_Media_Control {
+/** WP_Customize_Cropped_Image_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-cropped-image-control.php' );
 
-       /**
-        * Control type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'cropped_image';
+/** WP_Customize_Site_Icon_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-site-icon-control.php' );
 
-       /**
-        * Suggested width for cropped image.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var int
-        */
-       public $width = 150;
+/** WP_Customize_Header_Image_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-header-image-control.php' );
 
-       /**
-        * Suggested height for cropped image.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var int
-        */
-       public $height = 150;
+/** WP_Customize_Theme_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-theme-control.php' );
 
-       /**
-        * Whether the width is flexible.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var bool
-        */
-       public $flex_width = false;
+/** WP_Widget_Area_Customize_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-widget-area-customize-control.php' );
 
-       /**
-        * Whether the height is flexible.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var bool
-        */
-       public $flex_height = false;
+/** WP_Widget_Form_Customize_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-widget-form-customize-control.php' );
 
-       /**
-        * Enqueue control related scripts/styles.
-        *
-        * @since 4.3.0
-        * @access public
-        */
-       public function enqueue() {
-               wp_enqueue_script( 'customize-views' );
+/** WP_Customize_Nav_Menu_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-control.php' );
 
-               parent::enqueue();
-       }
+/** WP_Customize_Nav_Menu_Item_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-item-control.php' );
 
-       /**
-        * Refresh the parameters passed to the JavaScript via JSON.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see WP_Customize_Control::to_json()
-        */
-       public function to_json() {
-               parent::to_json();
+/** WP_Customize_Nav_Menu_Location_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-location-control.php' );
 
-               $this->json['width']       = absint( $this->width );
-               $this->json['height']      = absint( $this->height );
-               $this->json['flex_width']  = absint( $this->flex_width );
-               $this->json['flex_height'] = absint( $this->flex_height );
-       }
+/** WP_Customize_Nav_Menu_Name_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-name-control.php' );
 
-}
+/** WP_Customize_Nav_Menu_Auto_Add_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-auto-add-control.php' );
 
-/**
- * Customize Site Icon control class.
- *
- * Used only for custom functionality in JavaScript.
- *
- * @since 4.3.0
- *
- * @see WP_Customize_Cropped_Image_Control
- */
-class WP_Customize_Site_Icon_Control extends WP_Customize_Cropped_Image_Control {
-
-       /**
-        * Control type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'site_icon';
-
-       /**
-        * Constructor.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
-        * @param string               $id      Control ID.
-        * @param array                $args    Optional. Arguments to override class property defaults.
-        */
-       public function __construct( $manager, $id, $args = array() ) {
-               parent::__construct( $manager, $id, $args );
-               add_action( 'customize_controls_print_styles', 'wp_site_icon', 99 );
-       }
-}
-
-/**
- * Customize Header Image Control class.
- *
- * @since 3.4.0
- *
- * @see WP_Customize_Image_Control
- */
-class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
-       public $type = 'header';
-       public $uploaded_headers;
-       public $default_headers;
-
-       /**
-        * Constructor.
-        *
-        * @since 3.4.0
-        *
-        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
-        */
-       public function __construct( $manager ) {
-               parent::__construct( $manager, 'header_image', array(
-                       'label'    => __( 'Header Image' ),
-                       'settings' => array(
-                               'default' => 'header_image',
-                               'data'    => 'header_image_data',
-                       ),
-                       'section'  => 'header_image',
-                       'removed'  => 'remove-header',
-                       'get_url'  => 'get_header_image',
-               ) );
-
-       }
-
-       /**
-        * @access public
-        */
-       public function enqueue() {
-               wp_enqueue_media();
-               wp_enqueue_script( 'customize-views' );
-
-               $this->prepare_control();
-
-               wp_localize_script( 'customize-views', '_wpCustomizeHeader', array(
-                       'data' => array(
-                               'width' => absint( get_theme_support( 'custom-header', 'width' ) ),
-                               'height' => absint( get_theme_support( 'custom-header', 'height' ) ),
-                               'flex-width' => absint( get_theme_support( 'custom-header', 'flex-width' ) ),
-                               'flex-height' => absint( get_theme_support( 'custom-header', 'flex-height' ) ),
-                               'currentImgSrc' => $this->get_current_image_src(),
-                       ),
-                       'nonces' => array(
-                               'add' => wp_create_nonce( 'header-add' ),
-                               'remove' => wp_create_nonce( 'header-remove' ),
-                       ),
-                       'uploads' => $this->uploaded_headers,
-                       'defaults' => $this->default_headers
-               ) );
-
-               parent::enqueue();
-       }
-
-       /**
-        *
-        * @global Custom_Image_Header $custom_image_header
-        */
-       public function prepare_control() {
-               global $custom_image_header;
-               if ( empty( $custom_image_header ) ) {
-                       return;
-               }
-
-               // Process default headers and uploaded headers.
-               $custom_image_header->process_default_headers();
-               $this->default_headers = $custom_image_header->get_default_header_images();
-               $this->uploaded_headers = $custom_image_header->get_uploaded_header_images();
-       }
-
-       /**
-        * @access public
-        */
-       public function print_header_image_template() {
-               ?>
-               <script type="text/template" id="tmpl-header-choice">
-                       <# if (data.random) { #>
-                       <button type="button" class="button display-options random">
-                               <span class="dashicons dashicons-randomize dice"></span>
-                               <# if ( data.type === 'uploaded' ) { #>
-                                       <?php _e( 'Randomize uploaded headers' ); ?>
-                               <# } else if ( data.type === 'default' ) { #>
-                                       <?php _e( 'Randomize suggested headers' ); ?>
-                               <# } #>
-                       </button>
-
-                       <# } else { #>
-
-                       <# if (data.type === 'uploaded') { #>
-                               <button type="button" class="dashicons dashicons-no close"><span class="screen-reader-text"><?php _e( 'Remove image' ); ?></span></button>
-                       <# } #>
-
-                       <button type="button" class="choice thumbnail"
-                               data-customize-image-value="{{{data.header.url}}}"
-                               data-customize-header-image-data="{{JSON.stringify(data.header)}}">
-                               <span class="screen-reader-text"><?php _e( 'Set image' ); ?></span>
-                               <img src="{{{data.header.thumbnail_url}}}" alt="{{{data.header.alt_text || data.header.description}}}">
-                       </button>
-
-                       <# } #>
-               </script>
-
-               <script type="text/template" id="tmpl-header-current">
-                       <# if (data.choice) { #>
-                               <# if (data.random) { #>
-
-                       <div class="placeholder">
-                               <div class="inner">
-                                       <span><span class="dashicons dashicons-randomize dice"></span>
-                                       <# if ( data.type === 'uploaded' ) { #>
-                                               <?php _e( 'Randomizing uploaded headers' ); ?>
-                                       <# } else if ( data.type === 'default' ) { #>
-                                               <?php _e( 'Randomizing suggested headers' ); ?>
-                                       <# } #>
-                                       </span>
-                               </div>
-                       </div>
-
-                               <# } else { #>
-
-                       <img src="{{{data.header.thumbnail_url}}}" alt="{{{data.header.alt_text || data.header.description}}}" tabindex="0"/>
-
-                               <# } #>
-                       <# } else { #>
-
-                       <div class="placeholder">
-                               <div class="inner">
-                                       <span>
-                                               <?php _e( 'No image set' ); ?>
-                                       </span>
-                               </div>
-                       </div>
-
-                       <# } #>
-               </script>
-               <?php
-       }
-
-       /**
-        * @return string|void
-        */
-       public function get_current_image_src() {
-               $src = $this->value();
-               if ( isset( $this->get_url ) ) {
-                       $src = call_user_func( $this->get_url, $src );
-                       return $src;
-               }
-       }
-
-       /**
-        * @access public
-        */
-       public function render_content() {
-               $this->print_header_image_template();
-               $visibility = $this->get_current_image_src() ? '' : ' style="display:none" ';
-               $width = absint( get_theme_support( 'custom-header', 'width' ) );
-               $height = absint( get_theme_support( 'custom-header', 'height' ) );
-               ?>
-               <div class="customize-control-content">
-                       <p class="customizer-section-intro">
-                               <?php
-                               if ( $width && $height ) {
-                                       printf( __( 'While you can crop images to your liking after clicking <strong>Add new image</strong>, your theme recommends a header size of <strong>%s &times; %s</strong> pixels.' ), $width, $height );
-                               } elseif ( $width ) {
-                                       printf( __( 'While you can crop images to your liking after clicking <strong>Add new image</strong>, your theme recommends a header width of <strong>%s</strong> pixels.' ), $width );
-                               } else {
-                                       printf( __( 'While you can crop images to your liking after clicking <strong>Add new image</strong>, your theme recommends a header height of <strong>%s</strong> pixels.' ), $height );
-                               }
-                               ?>
-                       </p>
-                       <div class="current">
-                               <span class="customize-control-title">
-                                       <?php _e( 'Current header' ); ?>
-                               </span>
-                               <div class="container">
-                               </div>
-                       </div>
-                       <div class="actions">
-                               <?php if ( current_user_can( 'upload_files' ) ): ?>
-                               <button type="button"<?php echo $visibility; ?> class="button remove" aria-label="<?php esc_attr_e( 'Hide header image' ); ?>"><?php _e( 'Hide image' ); ?></button>
-                               <button type="button" class="button new" aria-label="<?php esc_attr_e( 'Add new header image' ); ?>"><?php _e( 'Add new image' ); ?></button>
-                               <div style="clear:both"></div>
-                               <?php endif; ?>
-                       </div>
-                       <div class="choices">
-                               <span class="customize-control-title header-previously-uploaded">
-                                       <?php _ex( 'Previously uploaded', 'custom headers' ); ?>
-                               </span>
-                               <div class="uploaded">
-                                       <div class="list">
-                                       </div>
-                               </div>
-                               <span class="customize-control-title header-default">
-                                       <?php _ex( 'Suggested', 'custom headers' ); ?>
-                               </span>
-                               <div class="default">
-                                       <div class="list">
-                                       </div>
-                               </div>
-                       </div>
-               </div>
-               <?php
-       }
-}
-
-/**
- * Customize Theme Control class.
- *
- * @since 4.2.0
- *
- * @see WP_Customize_Control
- */
-class WP_Customize_Theme_Control extends WP_Customize_Control {
-
-       /**
-        * Customize control type.
-        *
-        * @since 4.2.0
-        * @access public
-        * @var string
-        */
-       public $type = 'theme';
-
-       /**
-        * Theme object.
-        *
-        * @since 4.2.0
-        * @access public
-        * @var WP_Theme
-        */
-       public $theme;
-
-       /**
-        * Refresh the parameters passed to the JavaScript via JSON.
-        *
-        * @since 4.2.0
-        * @access public
-        *
-        * @see WP_Customize_Control::to_json()
-        */
-       public function to_json() {
-               parent::to_json();
-               $this->json['theme'] = $this->theme;
-       }
-
-       /**
-        * Don't render the control content from PHP, as it's rendered via JS on load.
-        *
-        * @since 4.2.0
-        * @access public
-        */
-       public function render_content() {}
-
-       /**
-        * Render a JS template for theme display.
-        *
-        * @since 4.2.0
-        * @access public
-        */
-       public function content_template() {
-               $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
-               $active_url  = esc_url( remove_query_arg( 'theme', $current_url ) );
-               $preview_url = esc_url( add_query_arg( 'theme', '__THEME__', $current_url ) ); // Token because esc_url() strips curly braces.
-               $preview_url = str_replace( '__THEME__', '{{ data.theme.id }}', $preview_url );
-               ?>
-               <# if ( data.theme.isActiveTheme ) { #>
-                       <div class="theme active" tabindex="0" data-preview-url="<?php echo esc_attr( $active_url ); ?>" aria-describedby="{{ data.theme.id }}-action {{ data.theme.id }}-name">
-               <# } else { #>
-                       <div class="theme" tabindex="0" data-preview-url="<?php echo esc_attr( $preview_url ); ?>" aria-describedby="{{ data.theme.id }}-action {{ data.theme.id }}-name">
-               <# } #>
-
-                       <# if ( data.theme.screenshot[0] ) { #>
-                               <div class="theme-screenshot">
-                                       <img data-src="{{ data.theme.screenshot[0] }}" alt="" />
-                               </div>
-                       <# } else { #>
-                               <div class="theme-screenshot blank"></div>
-                       <# } #>
-
-                       <# if ( data.theme.isActiveTheme ) { #>
-                               <span class="more-details" id="{{ data.theme.id }}-action"><?php _e( 'Customize' ); ?></span>
-                       <# } else { #>
-                               <span class="more-details" id="{{ data.theme.id }}-action"><?php _e( 'Live Preview' ); ?></span>
-                       <# } #>
-
-                       <div class="theme-author"><?php printf( __( 'By %s' ), '{{ data.theme.author }}' ); ?></div>
-
-                       <# if ( data.theme.isActiveTheme ) { #>
-                               <h3 class="theme-name" id="{{ data.theme.id }}-name">
-                                       <?php
-                                       /* translators: %s: theme name */
-                                       printf( __( '<span>Active:</span> %s' ), '{{{ data.theme.name }}}' );
-                                       ?>
-                               </h3>
-                       <# } else { #>
-                               <h3 class="theme-name" id="{{ data.theme.id }}-name">{{{ data.theme.name }}}</h3>
-                               <div class="theme-actions">
-                                       <button type="button" class="button theme-details"><?php _e( 'Theme Details' ); ?></button>
-                               </div>
-                       <# } #>
-               </div>
-       <?php
-       }
-}
-
-/**
- * Widget Area Customize Control class.
- *
- * @since 3.9.0
- *
- * @see WP_Customize_Control
- */
-class WP_Widget_Area_Customize_Control extends WP_Customize_Control {
-       public $type = 'sidebar_widgets';
-       public $sidebar_id;
-
-       public function to_json() {
-               parent::to_json();
-               $exported_properties = array( 'sidebar_id' );
-               foreach ( $exported_properties as $key ) {
-                       $this->json[ $key ] = $this->$key;
-               }
-       }
-
-       /**
-        * @access public
-        */
-       public function render_content() {
-               ?>
-               <span class="button-secondary add-new-widget" tabindex="0">
-                       <?php _e( 'Add a Widget' ); ?>
-               </span>
-
-               <span class="reorder-toggle" tabindex="0">
-                       <span class="reorder"><?php _ex( 'Reorder', 'Reorder widgets in Customizer' ); ?></span>
-                       <span class="reorder-done"><?php _ex( 'Done', 'Cancel reordering widgets in Customizer' ); ?></span>
-               </span>
-               <?php
-       }
-
-}
-
-/**
- * Widget Form Customize Control class.
- *
- * @since 3.9.0
- *
- * @see WP_Customize_Control
- */
-class WP_Widget_Form_Customize_Control extends WP_Customize_Control {
-       public $type = 'widget_form';
-       public $widget_id;
-       public $widget_id_base;
-       public $sidebar_id;
-       public $is_new = false;
-       public $width;
-       public $height;
-       public $is_wide = false;
-
-       public function to_json() {
-               parent::to_json();
-               $exported_properties = array( 'widget_id', 'widget_id_base', 'sidebar_id', 'width', 'height', 'is_wide' );
-               foreach ( $exported_properties as $key ) {
-                       $this->json[ $key ] = $this->$key;
-               }
-       }
-
-       /**
-        *
-        * @global array $wp_registered_widgets
-        */
-       public function render_content() {
-               global $wp_registered_widgets;
-               require_once ABSPATH . '/wp-admin/includes/widgets.php';
-
-               $widget = $wp_registered_widgets[ $this->widget_id ];
-               if ( ! isset( $widget['params'][0] ) ) {
-                       $widget['params'][0] = array();
-               }
-
-               $args = array(
-                       'widget_id' => $widget['id'],
-                       'widget_name' => $widget['name'],
-               );
-
-               $args = wp_list_widget_controls_dynamic_sidebar( array( 0 => $args, 1 => $widget['params'][0] ) );
-               echo $this->manager->widgets->get_widget_control( $args );
-       }
-
-       /**
-        * Whether the current widget is rendered on the page.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @return bool Whether the widget is rendered.
-        */
-       public function active_callback() {
-               return $this->manager->widgets->is_widget_rendered( $this->widget_id );
-       }
-}
-
-/**
- * Customize Nav Menu Control Class.
- *
- * @since 4.3.0
- */
-class WP_Customize_Nav_Menu_Control extends WP_Customize_Control {
-
-       /**
-        * Control type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'nav_menu';
-
-       /**
-        * The nav menu setting.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var WP_Customize_Nav_Menu_Setting
-        */
-       public $setting;
-
-       /**
-        * Don't render the control's content - it uses a JS template instead.
-        *
-        * @since 4.3.0
-        * @access public
-        */
-       public function render_content() {}
-
-       /**
-        * JS/Underscore template for the control UI.
-        *
-        * @since 4.3.0
-        * @access public
-        */
-       public function content_template() {
-               ?>
-               <button type="button" class="button-secondary add-new-menu-item" aria-label="<?php esc_attr_e( 'Add or remove menu items' ); ?>" aria-expanded="false" aria-controls="available-menu-items">
-                       <?php _e( 'Add Items' ); ?>
-               </button>
-               <button type="button" class="not-a-button reorder-toggle" aria-label="<?php esc_attr_e( 'Reorder menu items' ); ?>" aria-describedby="reorder-items-desc-{{ data.menu_id }}">
-                       <span class="reorder"><?php _ex( 'Reorder', 'Reorder menu items in Customizer' ); ?></span>
-                       <span class="reorder-done"><?php _ex( 'Done', 'Cancel reordering menu items in Customizer' ); ?></span>
-               </button>
-               <p class="screen-reader-text" id="reorder-items-desc-{{ data.menu_id }}"><?php _e( 'When in reorder mode, additional controls to reorder menu items will be available in the items list above.' ); ?></p>
-               <span class="add-menu-item-loading spinner"></span>
-               <span class="menu-delete-item">
-                       <button type="button" class="not-a-button menu-delete">
-                               <?php _e( 'Delete menu' ); ?> <span class="screen-reader-text">{{ data.menu_name }}</span>
-                       </button>
-               </span>
-               <?php if ( current_theme_supports( 'menus' ) ) : ?>
-               <ul class="menu-settings">
-                       <li class="customize-control">
-                               <span class="customize-control-title"><?php _e( 'Menu locations' ); ?></span>
-                       </li>
-
-                       <?php foreach ( get_registered_nav_menus() as $location => $description ) : ?>
-                       <li class="customize-control customize-control-checkbox assigned-menu-location">
-                               <label>
-                                       <input type="checkbox" data-menu-id="{{ data.menu_id }}" data-location-id="<?php echo esc_attr( $location ); ?>" class="menu-location" /> <?php echo $description; ?>
-                                       <span class="theme-location-set"><?php printf( _x( '(Current: %s)', 'Current menu location' ), '<span class="current-menu-location-name-' . esc_attr( $location ) . '"></span>' ); ?></span>
-                               </label>
-                       </li>
-                       <?php endforeach; ?>
-
-               </ul>
-               <?php endif;
-       }
-
-       /**
-        * Return parameters for this control.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @return array Exported parameters.
-        */
-       public function json() {
-               $exported            = parent::json();
-               $exported['menu_id'] = $this->setting->term_id;
-
-               return $exported;
-       }
-}
-
-/**
- * Customize control to represent the name field for a given menu.
- *
- * @since 4.3.0
- */
-class WP_Customize_Nav_Menu_Item_Control extends WP_Customize_Control {
-
-       /**
-        * Control type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'nav_menu_item';
-
-       /**
-        * The nav menu item setting.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var WP_Customize_Nav_Menu_Item_Setting
-        */
-       public $setting;
-
-       /**
-        * Constructor.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see WP_Customize_Control::__construct()
-        *
-        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
-        * @param string               $id      The control ID.
-        * @param array                $args    Optional. Overrides class property defaults.
-        */
-       public function __construct( $manager, $id, $args = array() ) {
-               parent::__construct( $manager, $id, $args );
-       }
-
-       /**
-        * Don't render the control's content - it's rendered with a JS template.
-        *
-        * @since 4.3.0
-        * @access public
-        */
-       public function render_content() {}
-
-       /**
-        * JS/Underscore template for the control UI.
-        *
-        * @since 4.3.0
-        * @access public
-        */
-       public function content_template() {
-               ?>
-               <div class="menu-item-bar">
-                       <div class="menu-item-handle">
-                               <span class="item-type" aria-hidden="true">{{ data.item_type_label }}</span>
-                               <span class="item-title" aria-hidden="true">
-                                       <span class="spinner"></span>
-                                       <span class="menu-item-title<# if ( ! data.title ) { #> no-title<# } #>">{{ data.title || wp.customize.Menus.data.l10n.untitled }}</span>
-                               </span>
-                               <span class="item-controls">
-                                       <button type="button" class="not-a-button item-edit" aria-expanded="false"><span class="screen-reader-text"><?php
-                                               /* translators: 1: Title of a menu item, 2: Type of a menu item */
-                                               printf( __( 'Edit menu item: %1$s (%2$s)' ), '{{ data.title || wp.customize.Menus.data.l10n.untitled }}', '{{ data.item_type_label }}' );
-                                       ?></span><span class="toggle-indicator" aria-hidden="true"></span></button>
-                                       <button type="button" class="not-a-button item-delete submitdelete deletion"><span class="screen-reader-text"><?php
-                                               /* translators: 1: Title of a menu item, 2: Type of a menu item */
-                                               printf( __( 'Remove Menu Item: %1$s (%2$s)' ), '{{ data.title || wp.customize.Menus.data.l10n.untitled }}', '{{ data.item_type_label }}' );
-                                       ?></span></button>
-                               </span>
-                       </div>
-               </div>
-
-               <div class="menu-item-settings" id="menu-item-settings-{{ data.menu_item_id }}">
-                       <# if ( 'custom' === data.item_type ) { #>
-                       <p class="field-url description description-thin">
-                               <label for="edit-menu-item-url-{{ data.menu_item_id }}">
-                                       <?php _e( 'URL' ); ?><br />
-                                       <input class="widefat code edit-menu-item-url" type="text" id="edit-menu-item-url-{{ data.menu_item_id }}" name="menu-item-url" />
-                               </label>
-                       </p>
-               <# } #>
-                       <p class="description description-thin">
-                               <label for="edit-menu-item-title-{{ data.menu_item_id }}">
-                                       <?php _e( 'Navigation Label' ); ?><br />
-                                       <input type="text" id="edit-menu-item-title-{{ data.menu_item_id }}" class="widefat edit-menu-item-title" name="menu-item-title" />
-                               </label>
-                       </p>
-                       <p class="field-link-target description description-thin">
-                               <label for="edit-menu-item-target-{{ data.menu_item_id }}">
-                                       <input type="checkbox" id="edit-menu-item-target-{{ data.menu_item_id }}" class="edit-menu-item-target" value="_blank" name="menu-item-target" />
-                                       <?php _e( 'Open link in a new tab' ); ?>
-                               </label>
-                       </p>
-                       <p class="field-attr-title description description-thin">
-                               <label for="edit-menu-item-attr-title-{{ data.menu_item_id }}">
-                                       <?php _e( 'Title Attribute' ); ?><br />
-                                       <input type="text" id="edit-menu-item-attr-title-{{ data.menu_item_id }}" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title" />
-                               </label>
-                       </p>
-                       <p class="field-css-classes description description-thin">
-                               <label for="edit-menu-item-classes-{{ data.menu_item_id }}">
-                                       <?php _e( 'CSS Classes' ); ?><br />
-                                       <input type="text" id="edit-menu-item-classes-{{ data.menu_item_id }}" class="widefat code edit-menu-item-classes" name="menu-item-classes" />
-                               </label>
-                       </p>
-                       <p class="field-xfn description description-thin">
-                               <label for="edit-menu-item-xfn-{{ data.menu_item_id }}">
-                                       <?php _e( 'Link Relationship (XFN)' ); ?><br />
-                                       <input type="text" id="edit-menu-item-xfn-{{ data.menu_item_id }}" class="widefat code edit-menu-item-xfn" name="menu-item-xfn" />
-                               </label>
-                       </p>
-                       <p class="field-description description description-thin">
-                               <label for="edit-menu-item-description-{{ data.menu_item_id }}">
-                                       <?php _e( 'Description' ); ?><br />
-                                       <textarea id="edit-menu-item-description-{{ data.menu_item_id }}" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description">{{ data.description }}</textarea>
-                                       <span class="description"><?php _e( 'The description will be displayed in the menu if the current theme supports it.' ); ?></span>
-                               </label>
-                       </p>
-
-                       <div class="menu-item-actions description-thin submitbox">
-                               <# if ( ( 'post_type' === data.item_type || 'taxonomy' === data.item_type ) && '' !== data.original_title ) { #>
-                               <p class="link-to-original">
-                                       <?php printf( __( 'Original: %s' ), '<a class="original-link" href="{{ data.url }}">{{ data.original_title }}</a>' ); ?>
-                               </p>
-                               <# } #>
-
-                               <button type="button" class="not-a-button item-delete submitdelete deletion"><?php _e( 'Remove' ); ?></button>
-                               <span class="spinner"></span>
-                       </div>
-                       <input type="hidden" name="menu-item-db-id[{{ data.menu_item_id }}]" class="menu-item-data-db-id" value="{{ data.menu_item_id }}" />
-                       <input type="hidden" name="menu-item-parent-id[{{ data.menu_item_id }}]" class="menu-item-data-parent-id" value="{{ data.parent }}" />
-               </div><!-- .menu-item-settings-->
-               <ul class="menu-item-transport"></ul>
-               <?php
-       }
-
-       /**
-        * Return parameters for this control.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @return array Exported parameters.
-        */
-       public function json() {
-               $exported                 = parent::json();
-               $exported['menu_item_id'] = $this->setting->post_id;
-
-               return $exported;
-       }
-}
-
-/**
- * Customize Menu Location Control Class.
- *
- * This custom control is only needed for JS.
- *
- * @since 4.3.0
- *
- * @see WP_Customize_Control
- */
-class WP_Customize_Nav_Menu_Location_Control extends WP_Customize_Control {
-
-       /**
-        * Control type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'nav_menu_location';
-
-       /**
-        * Location ID.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $location_id = '';
-
-       /**
-        * Refresh the parameters passed to JavaScript via JSON.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see WP_Customize_Control::to_json()
-        */
-       public function to_json() {
-               parent::to_json();
-               $this->json['locationId'] = $this->location_id;
-       }
-
-       /**
-        * Render content just like a normal select control.
-        *
-        * @since 4.3.0
-        * @access public
-        */
-       public function render_content() {
-               if ( empty( $this->choices ) ) {
-                       return;
-               }
-               ?>
-               <label>
-                       <?php if ( ! empty( $this->label ) ) : ?>
-                       <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
-                       <?php endif; ?>
-
-                       <?php if ( ! empty( $this->description ) ) : ?>
-                       <span class="description customize-control-description"><?php echo $this->description; ?></span>
-                       <?php endif; ?>
-
-                       <select <?php $this->link(); ?>>
-                               <?php
-                               foreach ( $this->choices as $value => $label ) :
-                                       echo '<option value="' . esc_attr( $value ) . '"' . selected( $this->value(), $value, false ) . '>' . $label . '</option>';
-                               endforeach;
-                               ?>
-                       </select>
-               </label>
-               <?php
-       }
-}
-
-/**
- * Customize control to represent the name field for a given menu.
- *
- * @since 4.3.0
- *
- * @see WP_Customize_Control
- */
-class WP_Customize_Nav_Menu_Name_Control extends WP_Customize_Control {
-
-       /**
-        * Type of control, used by JS.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'nav_menu_name';
-
-       /**
-        * No-op since we're using JS template.
-        *
-        * @since 4.3.0
-        * @access protected
-        */
-       protected function render_content() {}
-
-       /**
-        * Render the Underscore template for this control.
-        *
-        * @since 4.3.0
-        * @access protected
-        */
-       protected function content_template() {
-               ?>
-               <label>
-                       <# if ( data.label ) { #>
-                               <span class="customize-control-title screen-reader-text">{{ data.label }}</span>
-                       <# } #>
-                       <input type="text" class="menu-name-field live-update-section-title" />
-               </label>
-               <?php
-       }
-}
-
-/**
- * Customize control to represent the auto_add field for a given menu.
- *
- * @since 4.3.0
- *
- * @see WP_Customize_Control
- */
-class WP_Customize_Nav_Menu_Auto_Add_Control extends WP_Customize_Control {
-
-       /**
-        * Type of control, used by JS.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'nav_menu_auto_add';
-
-       /**
-        * No-op since we're using JS template.
-        *
-        * @since 4.3.0
-        * @access protected
-        */
-       protected function render_content() {}
-
-       /**
-        * Render the Underscore template for this control.
-        *
-        * @since 4.3.0
-        * @access protected
-        */
-       protected function content_template() {
-               ?>
-               <span class="customize-control-title"><?php _e( 'Menu options' ); ?></span>
-               <label>
-                       <input type="checkbox" class="auto_add" />
-                       <?php _e( 'Automatically add new top-level pages to this menu' ); ?>
-               </label>
-               <?php
-       }
-}
-
-/**
- * Customize control class for new menus.
- *
- * @since 4.3.0
- *
- * @see WP_Customize_Control
- */
-class WP_Customize_New_Menu_Control extends WP_Customize_Control {
-
-       /**
-        * Control type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'new_menu';
-
-       /**
-        * Render the control's content.
-        *
-        * @since 4.3.0
-        * @access public
-        */
-       public function render_content() {
-               ?>
-               <button type="button" class="button button-primary" id="create-new-menu-submit"><?php _e( 'Create Menu' ); ?></button>
-               <span class="spinner"></span>
-               <?php
-       }
-}
+/** WP_Customize_New_Menu_Control class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-new-menu-control.php' );
index 9cac338591189dc687fab0b940466d838c4f36bd..9f15d31f577149c4d546e16530e54c4206e2cd3c 100644 (file)
@@ -24,6 +24,8 @@ final class WP_Customize_Manager {
        /**
         * An instance of the theme being previewed.
         *
+        * @since 3.4.0
+        * @access protected
         * @var WP_Theme
         */
        protected $theme;
@@ -31,6 +33,8 @@ final class WP_Customize_Manager {
        /**
         * The directory name of the previously active theme (within the theme_root).
         *
+        * @since 3.4.0
+        * @access protected
         * @var string
         */
        protected $original_stylesheet;
@@ -38,33 +42,83 @@ final class WP_Customize_Manager {
        /**
         * Whether this is a Customizer pageload.
         *
+        * @since 3.4.0
+        * @access protected
         * @var bool
         */
        protected $previewing = false;
 
        /**
-        * Methods and properties deailing with managing widgets in the Customizer.
+        * Methods and properties dealing with managing widgets in the Customizer.
         *
+        * @since 3.9.0
+        * @access public
         * @var WP_Customize_Widgets
         */
        public $widgets;
 
        /**
-        * Methods and properties deailing with managing nav menus in the Customizer.
+        * Methods and properties dealing with managing nav menus in the Customizer.
         *
+        * @since 4.3.0
+        * @access public
         * @var WP_Customize_Nav_Menus
         */
        public $nav_menus;
 
-       protected $settings   = array();
+       /**
+        * Registered instances of WP_Customize_Setting.
+        *
+        * @since 3.4.0
+        * @access protected
+        * @var array
+        */
+       protected $settings = array();
+
+       /**
+        * Sorted top-level instances of WP_Customize_Panel and WP_Customize_Section.
+        *
+        * @since 4.0.0
+        * @access protected
+        * @var array
+        */
        protected $containers = array();
-       protected $panels     = array();
-       protected $sections   = array();
-       protected $controls   = array();
 
-       protected $nonce_tick;
+       /**
+        * Registered instances of WP_Customize_Panel.
+        *
+        * @since 4.0.0
+        * @access protected
+        * @var array
+        */
+       protected $panels = array();
 
-       protected $customized;
+       /**
+        * Registered instances of WP_Customize_Section.
+        *
+        * @since 3.4.0
+        * @access protected
+        * @var array
+        */
+       protected $sections = array();
+
+       /**
+        * Registered instances of WP_Customize_Control.
+        *
+        * @since 3.4.0
+        * @access protected
+        * @var array
+        */
+       protected $controls = array();
+
+       /**
+        * Return value of check_ajax_referer() in customize_preview_init() method.
+        *
+        * @since 3.5.0
+        * @access protected
+        * @var false|int
+        */
+       protected $nonce_tick;
 
        /**
         * Panel types that may be rendered from JS templates.
@@ -93,6 +147,33 @@ final class WP_Customize_Manager {
         */
        protected $registered_control_types = array();
 
+       /**
+        * Initial URL being previewed.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var string
+        */
+       protected $preview_url;
+
+       /**
+        * URL to link the user to when closing the Customizer.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var string
+        */
+       protected $return_url;
+
+       /**
+        * Mapping of 'panel', 'section', 'control' to the ID which should be autofocused.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array
+        */
+       protected $autofocus = array();
+
        /**
         * Unsanitized values for Customize Settings parsed from $_POST['customized'].
         *
@@ -110,11 +191,63 @@ final class WP_Customize_Manager {
                require_once( ABSPATH . WPINC . '/class-wp-customize-panel.php' );
                require_once( ABSPATH . WPINC . '/class-wp-customize-section.php' );
                require_once( ABSPATH . WPINC . '/class-wp-customize-control.php' );
-               require_once( ABSPATH . WPINC . '/class-wp-customize-widgets.php' );
-               require_once( ABSPATH . WPINC . '/class-wp-customize-nav-menus.php' );
 
-               $this->widgets = new WP_Customize_Widgets( $this );
-               $this->nav_menus = new WP_Customize_Nav_Menus( $this );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-color-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-media-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-upload-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-image-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-background-image-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-cropped-image-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-site-icon-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-header-image-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-theme-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-widget-area-customize-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-widget-form-customize-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-item-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-location-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-name-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-auto-add-control.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-new-menu-control.php' );
+
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menus-panel.php' );
+
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-themes-section.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-sidebar-section.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-section.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-new-menu-section.php' );
+
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-filter-setting.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-header-image-setting.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-background-image-setting.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-item-setting.php' );
+               require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-setting.php' );
+
+               /**
+                * Filter the core Customizer components to load.
+                *
+                * This allows Core components to be excluded from being instantiated by
+                * filtering them out of the array. Note that this filter generally runs
+                * during the <code>plugins_loaded</code> action, so it cannot be added
+                * in a theme.
+                *
+                * @since 4.4.0
+                *
+                * @see WP_Customize_Manager::__construct()
+                *
+                * @param array                $components List of core components to load.
+                * @param WP_Customize_Manager $this       WP_Customize_Manager instance.
+                */
+               $components = apply_filters( 'customize_loaded_components', array( 'widgets', 'nav_menus' ), $this );
+
+               if ( in_array( 'widgets', $components ) ) {
+                       require_once( ABSPATH . WPINC . '/class-wp-customize-widgets.php' );
+                       $this->widgets = new WP_Customize_Widgets( $this );
+               }
+               if ( in_array( 'nav_menus', $components ) ) {
+                       require_once( ABSPATH . WPINC . '/class-wp-customize-nav-menus.php' );
+                       $this->nav_menus = new WP_Customize_Nav_Menus( $this );
+               }
 
                add_filter( 'wp_die_handler', array( $this, 'wp_die_handler' ) );
 
@@ -139,6 +272,14 @@ final class WP_Customize_Manager {
                add_action( 'customize_register',                 array( $this, 'register_dynamic_settings' ), 11 ); // allow code to create settings first
                add_action( 'customize_controls_init',            array( $this, 'prepare_controls' ) );
                add_action( 'customize_controls_enqueue_scripts', array( $this, 'enqueue_control_scripts' ) );
+
+               // Render Panel, Section, and Control templates.
+               add_action( 'customize_controls_print_footer_scripts', array( $this, 'render_panel_templates' ), 1 );
+               add_action( 'customize_controls_print_footer_scripts', array( $this, 'render_section_templates' ), 1 );
+               add_action( 'customize_controls_print_footer_scripts', array( $this, 'render_control_templates' ), 1 );
+
+               // Export the settings to JS via the _wpCustomizeSettings variable.
+               add_action( 'customize_controls_print_footer_scripts', array( $this, 'customize_pane_settings' ), 1000 );
        }
 
        /**
@@ -218,13 +359,13 @@ final class WP_Customize_Manager {
                if ( is_admin() && ! $doing_ajax_or_is_customized ) {
                        auth_redirect();
                } elseif ( $doing_ajax_or_is_customized && ! is_user_logged_in() ) {
-                       $this->wp_die( 0 );
+                       $this->wp_die( 0, __( 'You must be logged in to complete this action.' ) );
                }
 
                show_admin_bar( false );
 
                if ( ! current_user_can( 'customize' ) ) {
-                       $this->wp_die( -1 );
+                       $this->wp_die( -1, __( 'You are not allowed to customize the appearance of this site.' ) );
                }
 
                $this->original_stylesheet = get_stylesheet();
@@ -238,17 +379,17 @@ final class WP_Customize_Manager {
                        // If the requested theme is not the active theme and the user doesn't have the
                        // switch_themes cap, bail.
                        if ( ! current_user_can( 'switch_themes' ) ) {
-                               $this->wp_die( -1 );
+                               $this->wp_die( -1, __( 'You are not allowed to edit theme options on this site.' ) );
                        }
 
                        // If the theme has errors while loading, bail.
                        if ( $this->theme()->errors() ) {
-                               $this->wp_die( -1 );
+                               $this->wp_die( -1, $this->theme()->errors()->get_error_message() );
                        }
 
                        // If the theme isn't allowed per multisite settings, bail.
                        if ( ! $this->theme()->is_allowed() ) {
-                               $this->wp_die( -1 );
+                               $this->wp_die( -1, __( 'The requested theme does not exist.' ) );
                        }
                }
 
@@ -518,6 +659,36 @@ final class WP_Customize_Manager {
        public function set_post_value( $setting_id, $value ) {
                $this->unsanitized_post_values();
                $this->_post_values[ $setting_id ] = $value;
+
+               /**
+                * Announce when a specific setting's unsanitized post value has been set.
+                *
+                * Fires when the {@see WP_Customize_Manager::set_post_value()} method is called.
+                *
+                * The dynamic portion of the hook name, `$setting_id`, refers to the setting ID.
+                *
+                * @since 4.4.0
+                *
+                * @param mixed                $value Unsanitized setting post value.
+                * @param WP_Customize_Manager $this  WP_Customize_Manager instance.
+                */
+               do_action( "customize_post_value_set_{$setting_id}", $value, $this );
+
+               /**
+                * Announce when any setting's unsanitized post value has been set.
+                *
+                * Fires when the {@see WP_Customize_Manager::set_post_value()} method is called.
+                *
+                * This is useful for <code>WP_Customize_Setting</code> instances to watch
+                * in order to update a cached previewed value.
+                *
+                * @since 4.4.0
+                *
+                * @param string               $setting_id Setting ID.
+                * @param mixed                $value      Unsanitized setting post value.
+                * @param WP_Customize_Manager $this       WP_Customize_Manager instance.
+                */
+               do_action( 'customize_post_value_set', $setting_id, $value, $this );
        }
 
        /**
@@ -621,14 +792,10 @@ final class WP_Customize_Manager {
         */
        public function customize_preview_settings() {
                $settings = array(
-                       'values'  => array(),
                        'channel' => wp_unslash( $_POST['customize_messenger_channel'] ),
                        'activePanels' => array(),
                        'activeSections' => array(),
                        'activeControls' => array(),
-                       'l10n' => array(
-                               'loading'  => __( 'Loading ...' ),
-                       ),
                );
 
                if ( 2 == $this->nonce_tick ) {
@@ -638,11 +805,6 @@ final class WP_Customize_Manager {
                        );
                }
 
-               foreach ( $this->settings as $id => $setting ) {
-                       if ( $setting->check_capabilities() ) {
-                               $settings['values'][ $id ] = $setting->js_value();
-                       }
-               }
                foreach ( $this->panels as $panel_id => $panel ) {
                        if ( $panel->check_capabilities() ) {
                                $settings['activePanels'][ $panel_id ] = $panel->active();
@@ -667,6 +829,25 @@ final class WP_Customize_Manager {
                ?>
                <script type="text/javascript">
                        var _wpCustomizeSettings = <?php echo wp_json_encode( $settings ); ?>;
+                       _wpCustomizeSettings.values = {};
+                       (function( v ) {
+                               <?php
+                               /*
+                                * Serialize settings separately from the initial _wpCustomizeSettings
+                                * serialization in order to avoid a peak memory usage spike.
+                                * @todo We may not even need to export the values at all since the pane syncs them anyway.
+                                */
+                               foreach ( $this->settings as $id => $setting ) {
+                                       if ( $setting->check_capabilities() ) {
+                                               printf(
+                                                       "v[%s] = %s;\n",
+                                                       wp_json_encode( $id ),
+                                                       wp_json_encode( $setting->js_value() )
+                                               );
+                                       }
+                               }
+                               ?>
+                       })( _wpCustomizeSettings.values );
                </script>
                <?php
        }
@@ -685,7 +866,8 @@ final class WP_Customize_Manager {
         *
         * @since 3.4.0
         *
-        * @return mixed
+        * @param mixed $return Value passed through for wp_die_handler filter.
+        * @return mixed Value passed through for wp_die_handler filter.
         */
        public function remove_preview_signature( $return = null ) {
                remove_action( 'shutdown', array( $this, 'customize_preview_signature' ), 1000 );
@@ -881,7 +1063,7 @@ final class WP_Customize_Manager {
         * @since 4.2.0
         *
         * @param array $setting_ids The setting IDs to add.
-        * @return WP_Customize_Setting The settings added.
+        * @return array The WP_Customize_Setting objects added.
         */
        public function add_dynamic_settings( $setting_ids ) {
                $new_settings = array();
@@ -1181,7 +1363,7 @@ final class WP_Customize_Manager {
         */
        protected function _cmp_priority( $a, $b ) {
                if ( $a->priority === $b->priority ) {
-                       return $a->instance_number - $a->instance_number;
+                       return $a->instance_number - $b->instance_number;
                } else {
                        return $a->priority - $b->priority;
                }
@@ -1264,6 +1446,285 @@ final class WP_Customize_Manager {
                }
        }
 
+       /**
+        * Determine whether the user agent is iOS.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return bool Whether the user agent is iOS.
+        */
+       public function is_ios() {
+               return wp_is_mobile() && preg_match( '/iPad|iPod|iPhone/', $_SERVER['HTTP_USER_AGENT'] );
+       }
+
+       /**
+        * Get the template string for the Customizer pane document title.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return string The template string for the document title.
+        */
+       public function get_document_title_template() {
+               if ( $this->is_theme_active() ) {
+                       /* translators: %s: document title from the preview */
+                       $document_title_tmpl = __( 'Customize: %s' );
+               } else {
+                       /* translators: %s: document title from the preview */
+                       $document_title_tmpl = __( 'Live Preview: %s' );
+               }
+               $document_title_tmpl = html_entity_decode( $document_title_tmpl, ENT_QUOTES, 'UTF-8' ); // Because exported to JS and assigned to document.title.
+               return $document_title_tmpl;
+       }
+
+       /**
+        * Set the initial URL to be previewed.
+        *
+        * URL is validated.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $preview_url URL to be previewed.
+        */
+       public function set_preview_url( $preview_url ) {
+               $this->preview_url = wp_validate_redirect( $preview_url, home_url( '/' ) );
+       }
+
+       /**
+        * Get the initial URL to be previewed.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return string URL being previewed.
+        */
+       public function get_preview_url() {
+               if ( empty( $this->preview_url ) ) {
+                       $preview_url = home_url( '/' );
+               } else {
+                       $preview_url = $this->preview_url;
+               }
+               return $preview_url;
+       }
+
+       /**
+        * Set URL to link the user to when closing the Customizer.
+        *
+        * URL is validated.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $return_url URL for return link.
+        */
+       public function set_return_url( $return_url ) {
+               $return_url = remove_query_arg( wp_removable_query_args(), $return_url );
+               $return_url = wp_validate_redirect( $return_url );
+               $this->return_url = $return_url;
+       }
+
+       /**
+        * Get URL to link the user to when closing the Customizer.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return string URL for link to close Customizer.
+        */
+       public function get_return_url() {
+               $referer = wp_get_referer();
+               if ( $this->return_url ) {
+                       $return_url = $this->return_url;
+               } else if ( $referer && 'customize.php' !== basename( parse_url( $referer, PHP_URL_PATH ) ) ) {
+                       $return_url = $referer;
+               } else if ( $this->preview_url ) {
+                       $return_url = $this->preview_url;
+               } else {
+                       $return_url = home_url( '/' );
+               }
+               return $return_url;
+       }
+
+       /**
+        * Set the autofocused constructs.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $autofocus {
+        *     Mapping of 'panel', 'section', 'control' to the ID which should be autofocused.
+        *
+        *     @type string [$control]  ID for control to be autofocused.
+        *     @type string [$section]  ID for section to be autofocused.
+        *     @type string [$panel]    ID for panel to be autofocused.
+        * }
+        */
+       public function set_autofocus( $autofocus ) {
+               $this->autofocus = array_filter( wp_array_slice_assoc( $autofocus, array( 'panel', 'section', 'control' ) ), 'is_string' );
+       }
+
+       /**
+        * Get the autofocused constructs.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array {
+        *     Mapping of 'panel', 'section', 'control' to the ID which should be autofocused.
+        *
+        *     @type string [$control]  ID for control to be autofocused.
+        *     @type string [$section]  ID for section to be autofocused.
+        *     @type string [$panel]    ID for panel to be autofocused.
+        * }
+        */
+       public function get_autofocus() {
+               return $this->autofocus;
+       }
+
+       /**
+        * Print JavaScript settings for parent window.
+        *
+        * @since 4.4.0
+        */
+       public function customize_pane_settings() {
+               /*
+                * If the frontend and the admin are served from the same domain, load the
+                * preview over ssl if the Customizer is being loaded over ssl. This avoids
+                * insecure content warnings. This is not attempted if the admin and frontend
+                * are on different domains to avoid the case where the frontend doesn't have
+                * ssl certs. Domain mapping plugins can allow other urls in these conditions
+                * using the customize_allowed_urls filter.
+                */
+
+               $allowed_urls = array( home_url( '/' ) );
+               $admin_origin = parse_url( admin_url() );
+               $home_origin  = parse_url( home_url() );
+               $cross_domain = ( strtolower( $admin_origin['host'] ) !== strtolower( $home_origin['host'] ) );
+
+               if ( is_ssl() && ! $cross_domain ) {
+                       $allowed_urls[] = home_url( '/', 'https' );
+               }
+
+               /**
+                * Filter the list of URLs allowed to be clicked and followed in the Customizer preview.
+                *
+                * @since 3.4.0
+                *
+                * @param array $allowed_urls An array of allowed URLs.
+                */
+               $allowed_urls = array_unique( apply_filters( 'customize_allowed_urls', $allowed_urls ) );
+
+               $login_url = add_query_arg( array(
+                       'interim-login' => 1,
+                       'customize-login' => 1,
+               ), wp_login_url() );
+
+               // Prepare Customizer settings to pass to JavaScript.
+               $settings = array(
+                       'theme'    => array(
+                               'stylesheet' => $this->get_stylesheet(),
+                               'active'     => $this->is_theme_active(),
+                       ),
+                       'url'      => array(
+                               'preview'       => esc_url_raw( $this->get_preview_url() ),
+                               'parent'        => esc_url_raw( admin_url() ),
+                               'activated'     => esc_url_raw( home_url( '/' ) ),
+                               'ajax'          => esc_url_raw( admin_url( 'admin-ajax.php', 'relative' ) ),
+                               'allowed'       => array_map( 'esc_url_raw', $allowed_urls ),
+                               'isCrossDomain' => $cross_domain,
+                               'home'          => esc_url_raw( home_url( '/' ) ),
+                               'login'         => esc_url_raw( $login_url ),
+                       ),
+                       'browser'  => array(
+                               'mobile' => wp_is_mobile(),
+                               'ios'    => $this->is_ios(),
+                       ),
+                       'panels'   => array(),
+                       'sections' => array(),
+                       'nonce'    => array(
+                               'save'    => wp_create_nonce( 'save-customize_' . $this->get_stylesheet() ),
+                               'preview' => wp_create_nonce( 'preview-customize_' . $this->get_stylesheet() ),
+                       ),
+                       'autofocus' => array(),
+                       'documentTitleTmpl' => $this->get_document_title_template(),
+               );
+
+               // Prepare Customize Section objects to pass to JavaScript.
+               foreach ( $this->sections() as $id => $section ) {
+                       if ( $section->check_capabilities() ) {
+                               $settings['sections'][ $id ] = $section->json();
+                       }
+               }
+
+               // Prepare Customize Panel objects to pass to JavaScript.
+               foreach ( $this->panels() as $panel_id => $panel ) {
+                       if ( $panel->check_capabilities() ) {
+                               $settings['panels'][ $panel_id ] = $panel->json();
+                               foreach ( $panel->sections as $section_id => $section ) {
+                                       if ( $section->check_capabilities() ) {
+                                               $settings['sections'][ $section_id ] = $section->json();
+                                       }
+                               }
+                       }
+               }
+
+               // Pass to frontend the Customizer construct being deeplinked.
+               foreach ( $this->get_autofocus() as $type => $id ) {
+                       $can_autofocus = (
+                               ( 'control' === $type && $this->get_control( $id ) && $this->get_control( $id )->check_capabilities() )
+                               ||
+                               ( 'section' === $type && isset( $settings['sections'][ $id ] ) )
+                               ||
+                               ( 'panel' === $type && isset( $settings['panels'][ $id ] ) )
+                       );
+                       if ( $can_autofocus ) {
+                               $settings['autofocus'][ $type ] = $id;
+                       }
+               }
+
+               ?>
+               <script type="text/javascript">
+                       var _wpCustomizeSettings = <?php echo wp_json_encode( $settings ); ?>;
+                       _wpCustomizeSettings.controls = {};
+                       _wpCustomizeSettings.settings = {};
+                       <?php
+
+                       // Serialize settings one by one to improve memory usage.
+                       echo "(function ( s ){\n";
+                       foreach ( $this->settings() as $setting ) {
+                               if ( $setting->check_capabilities() ) {
+                                       printf(
+                                               "s[%s] = %s;\n",
+                                               wp_json_encode( $setting->id ),
+                                               wp_json_encode( array(
+                                                       'value'     => $setting->js_value(),
+                                                       'transport' => $setting->transport,
+                                                       'dirty'     => $setting->dirty,
+                                               ) )
+                                       );
+                               }
+                       }
+                       echo "})( _wpCustomizeSettings.settings );\n";
+
+                       // Serialize controls one by one to improve memory usage.
+                       echo "(function ( c ){\n";
+                       foreach ( $this->controls() as $control ) {
+                               if ( $control->check_capabilities() ) {
+                                       printf(
+                                               "c[%s] = %s;\n",
+                                               wp_json_encode( $control->id ),
+                                               wp_json_encode( $control->json() )
+                                       );
+                               }
+                       }
+                       echo "})( _wpCustomizeSettings.controls );\n";
+               ?>
+               </script>
+               <?php
+       }
+
        /**
         * Register some default controls.
         *
index fb1633bf93b5d98b6ae9e2c396cd4684447434f0..f6be2094061935a4fcf4869bb08c93082a7dff54 100644 (file)
@@ -107,7 +107,8 @@ final class WP_Customize_Nav_Menus {
                $items = array();
 
                if ( 'post_type' === $type ) {
-                       if ( ! get_post_type_object( $object ) ) {
+                       $post_type = get_post_type_object( $object );
+                       if ( ! $post_type ) {
                                return new WP_Error( 'nav_menus_invalid_post_type' );
                        }
 
@@ -121,6 +122,16 @@ final class WP_Customize_Nav_Menus {
                                        'object'     => '',
                                        'url'        => home_url(),
                                );
+                       } elseif ( 'post' !== $object && 0 === $page && $post_type->has_archive ) {
+                               // Add a post type archive link.
+                               $items[] = array(
+                                       'id'         => $object . '-archive',
+                                       'title'      => $post_type->labels->archives,
+                                       'type'       => 'post_type_archive',
+                                       'type_label' => __( 'Post Type Archive' ),
+                                       'object'     => $object,
+                                       'url'        => get_post_type_archive_link( $object ),
+                               );
                        }
 
                        $posts = get_posts( array(
@@ -325,8 +336,8 @@ final class WP_Customize_Nav_Menus {
                                'untitled'          => _x( '(no label)', 'missing menu item navigation label' ),
                                'unnamed'           => _x( '(unnamed)', 'Missing menu name.' ),
                                'custom_label'      => __( 'Custom Link' ),
-                               /* translators: %s: Current menu location */
-                               'menuLocation'      => __( '(Currently set to: %s)' ),
+                               /* translators: %s: menu location slug */
+                               'menuLocation'      => _x( '(Currently set to: %s)', 'menu' ),
                                'menuNameLabel'     => __( 'Menu Name' ),
                                'itemAdded'         => __( 'Menu item added' ),
                                'itemDeleted'       => __( 'Menu item deleted' ),
@@ -342,8 +353,6 @@ final class WP_Customize_Nav_Menus {
                                'invalidTitleTpl'   => __( '%s (Invalid)' ),
                                /* translators: %s: title of menu item in draft status */
                                'pendingTitleTpl'   => __( '%s (Pending)' ),
-                               'taxonomyTermLabel' => __( 'Taxonomy' ),
-                               'postTypeLabel'     => __( 'Post Type' ),
                                'itemsFound'        => __( 'Number of items found: %d' ),
                                'itemsFoundMore'    => __( 'Additional items found: %d' ),
                                'itemsLoadingMore'  => __( 'Loading more results... please wait.' ),
@@ -464,10 +473,14 @@ final class WP_Customize_Nav_Menus {
                ) ) );
                $menus = wp_get_nav_menus();
 
-               // Menu loactions.
+               // Menu locations.
                $locations     = get_registered_nav_menus();
                $num_locations = count( array_keys( $locations ) );
-               $description   = '<p>' . sprintf( _n( 'Your theme contains %s menu location. Select which menu you would like to use.', 'Your theme contains %s menu locations. Select which menu appears in each location.', $num_locations ), number_format_i18n( $num_locations ) );
+               if ( 1 == $num_locations ) {
+                       $description = '<p>' . __( 'Your theme supports one menu. Select which menu you would like to use.' );
+               } else {
+                       $description = '<p>' . sprintf( _n( 'Your theme supports %s menu. Select which menu appears in each location.', 'Your theme supports %s menus. Select which menu appears in each location.', $num_locations ), number_format_i18n( $num_locations ) );
+               }
                $description  .= '</p><p>' . __( 'You can also place menus in widget areas with the Custom Menu widget.' ) . '</p>';
 
                $this->manager->add_section( 'menu_locations', array(
@@ -611,7 +624,7 @@ final class WP_Customize_Nav_Menus {
                if ( $post_types ) {
                        foreach ( $post_types as $slug => $post_type ) {
                                $item_types[] = array(
-                                       'title'  => $post_type->labels->singular_name,
+                                       'title'  => $post_type->labels->name,
                                        'type'   => 'post_type',
                                        'object' => $post_type->name,
                                );
@@ -625,7 +638,7 @@ final class WP_Customize_Nav_Menus {
                                        continue;
                                }
                                $item_types[] = array(
-                                       'title'  => $taxonomy->labels->singular_name,
+                                       'title'  => $taxonomy->labels->name,
                                        'type'   => 'taxonomy',
                                        'object' => $taxonomy->name,
                                );
@@ -662,7 +675,7 @@ final class WP_Customize_Nav_Menus {
                                                <span class="item-title" aria-hidden="true">
                                                        <span class="menu-item-title<# if ( ! data.title ) { #> no-title<# } #>">{{ data.title || wp.customize.Menus.data.l10n.untitled }}</span>
                                                </span>
-                                               <button type="button" class="not-a-button item-add">
+                                               <button type="button" class="button-link item-add">
                                                        <span class="screen-reader-text"><?php
                                                                /* translators: 1: Title of a menu item, 2: Type of a menu item */
                                                                printf( __( 'Add to menu: %1$s (%2$s)' ), '{{ data.title || wp.customize.Menus.data.l10n.untitled }}', '{{ data.type_label }}' );
@@ -725,7 +738,7 @@ final class WP_Customize_Nav_Menus {
                        <div id="new-custom-menu-item" class="accordion-section">
                                <h4 class="accordion-section-title" role="presentation">
                                        <?php _e( 'Custom Links' ); ?>
-                                       <button type="button" class="not-a-button" aria-expanded="false">
+                                       <button type="button" class="button-link" aria-expanded="false">
                                                <span class="screen-reader-text"><?php _e( 'Toggle section: Custom Links' ); ?></span>
                                                <span class="toggle-indicator" aria-hidden="true"></span>
                                        </button>
@@ -762,7 +775,7 @@ final class WP_Customize_Nav_Menus {
                                                <?php echo esc_html( $available_item_type['title'] ); ?>
                                                <span class="spinner"></span>
                                                <span class="no-items"><?php _e( 'No items' ); ?></span>
-                                               <button type="button" class="not-a-button" aria-expanded="false">
+                                               <button type="button" class="button-link" aria-expanded="false">
                                                        <span class="screen-reader-text"><?php
                                                        /* translators: %s: Title of a section with menu items */
                                                        printf( __( 'Toggle section: %s' ), esc_html( $available_item_type['title'] ) ); ?></span>
@@ -930,7 +943,7 @@ final class WP_Customize_Nav_Menus {
                        'renderQueryVar'        => self::RENDER_QUERY_VAR,
                        'renderNonceValue'      => wp_create_nonce( self::RENDER_AJAX_ACTION ),
                        'renderNoncePostKey'    => self::RENDER_NONCE_POST_KEY,
-                       'requestUri'            => '/',
+                       'requestUri'            => empty( $_SERVER['REQUEST_URI'] ) ? home_url( '/' ) : esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ),
                        'theme'                 => array(
                                'stylesheet' => $this->manager->get_stylesheet(),
                                'active'     => $this->manager->is_theme_active(),
@@ -939,10 +952,6 @@ final class WP_Customize_Nav_Menus {
                        'navMenuInstanceArgs'   => $this->preview_nav_menu_instance_args,
                );
 
-               if ( ! empty( $_SERVER['REQUEST_URI'] ) ) {
-                       $exports['requestUri'] = esc_url_raw( home_url( wp_unslash( $_SERVER['REQUEST_URI'] ) ) );
-               }
-
                printf( '<script>var _wpCustomizePreviewNavMenusExports = %s;</script>', wp_json_encode( $exports ) );
        }
 
index 3857d50770387c20721f19599e892e288cb55109..a3f02b2f67b5828685b417206296a31c6493a8ab 100644 (file)
@@ -384,99 +384,5 @@ class WP_Customize_Panel {
        }
 }
 
-/**
- * Customize Nav Menus Panel Class
- *
- * Needed to add screen options.
- *
- * @since 4.3.0
- *
- * @see WP_Customize_Panel
- */
-class WP_Customize_Nav_Menus_Panel extends WP_Customize_Panel {
-
-       /**
-        * Control type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'nav_menus';
-
-       /**
-        * Render screen options for Menus.
-        *
-        * @since 4.3.0
-        * @access public
-        */
-       public function render_screen_options() {
-               // Essentially adds the screen options.
-               add_filter( 'manage_nav-menus_columns', array( $this, 'wp_nav_menu_manage_columns' ) );
-
-               // Display screen options.
-               $screen = WP_Screen::get( 'nav-menus.php' );
-               $screen->render_screen_options();
-       }
-
-       /**
-        * Returns the advanced options for the nav menus page.
-        *
-        * Link title attribute added as it's a relatively advanced concept for new users.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @return array The advanced menu properties.
-        */
-       public function wp_nav_menu_manage_columns() {
-               return array(
-                       '_title'      => __( 'Show advanced menu properties' ),
-                       'cb'          => '<input type="checkbox" />',
-                       'link-target' => __( 'Link Target' ),
-                       'attr-title'  => __( 'Title Attribute' ),
-                       'css-classes' => __( 'CSS Classes' ),
-                       'xfn'         => __( 'Link Relationship (XFN)' ),
-                       'description' => __( 'Description' ),
-               );
-       }
-
-       /**
-        * An Underscore (JS) template for this panel's content (but not its container).
-        *
-        * Class variables for this panel class are available in the `data` JS object;
-        * export custom variables by overriding WP_Customize_Panel::json().
-        *
-        * @since 4.3.0
-        * @access protected
-        *
-        * @see WP_Customize_Panel::print_template()
-        */
-       protected function content_template() {
-               ?>
-               <li class="panel-meta customize-info accordion-section <# if ( ! data.description ) { #> cannot-expand<# } #>">
-                       <button type="button" class="customize-panel-back" tabindex="-1">
-                               <span class="screen-reader-text"><?php _e( 'Back' ); ?></span>
-                       </button>
-                       <div class="accordion-section-title">
-                               <span class="preview-notice">
-                                       <?php
-                                       /* Translators: %s is the site/panel title in the Customizer. */
-                                       printf( __( 'You are customizing %s' ), '<strong class="panel-title">{{ data.title }}</strong>' );
-                                       ?>
-                               </span>
-                               <button type="button" class="customize-help-toggle dashicons dashicons-editor-help" aria-expanded="false">
-                                       <span class="screen-reader-text"><?php _e( 'Help' ); ?></span>
-                               </button>
-                               <button type="button" class="customize-screen-options-toggle" aria-expanded="false">
-                                       <span class="screen-reader-text"><?php _e( 'Menu Options' ); ?></span>
-                               </button>
-                       </div>
-                       <# if ( data.description ) { #>
-                       <div class="description customize-panel-description">{{{ data.description }}}</div>
-                       <# } #>
-                       <?php $this->render_screen_options(); ?>
-               </li>
-       <?php
-       }
-}
+/** WP_Customize_Nav_Menus_Panel class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menus-panel.php' );
index 7f2d52c6bc1fd8ca9452a47ff26a541a663e5f98..81f3ced7501d3d40593c9b4bd6be747f71b6981b 100644 (file)
@@ -347,7 +347,7 @@ class WP_Customize_Section {
                <li id="accordion-section-{{ data.id }}" class="accordion-section control-section control-section-{{ data.type }}">
                        <h3 class="accordion-section-title" tabindex="0">
                                {{ data.title }}
-                               <span class="screen-reader-text"><?php _e( 'Press return or enter to open' ); ?></span>
+                               <span class="screen-reader-text"><?php _e( 'Press return or enter to open this section' ); ?></span>
                        </h3>
                        <ul class="accordion-section-content">
                                <li class="customize-section-description-container">
@@ -374,204 +374,14 @@ class WP_Customize_Section {
        }
 }
 
-/**
- * Customize Themes Section class.
- *
- * A UI container for theme controls, which behaves like a backwards Panel.
- *
- * @since 4.2.0
- *
- * @see WP_Customize_Section
- */
-class WP_Customize_Themes_Section extends WP_Customize_Section {
+/** WP_Customize_Themes_Section class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-themes-section.php' );
 
-       /**
-        * Customize section type.
-        *
-        * @since 4.2.0
-        * @access public
-        * @var string
-        */
-       public $type = 'themes';
+/** WP_Customize_Sidebar_Section class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-sidebar-section.php' );
 
-       /**
-        * Render the themes section, which behaves like a panel.
-        *
-        * @since 4.2.0
-        * @access protected
-        */
-       protected function render() {
-               $classes = 'accordion-section control-section control-section-' . $this->type;
-               ?>
-               <li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
-                       <h3 class="accordion-section-title">
-                               <?php
-                               if ( $this->manager->is_theme_active() ) {
-                                       echo '<span class="customize-action">' . __( 'Active theme' ) . '</span> ' . $this->title;
-                               } else {
-                                       echo '<span class="customize-action">' . __( 'Previewing theme' ) . '</span> ' . $this->title;
-                               }
-                               ?>
-
-                               <button type="button" class="button change-theme" tabindex="0"><?php _ex( 'Change', 'theme' ); ?></button>
-                       </h3>
-                       <div class="customize-themes-panel control-panel-content themes-php">
-                               <h3 class="accordion-section-title customize-section-title">
-                                       <span class="customize-action"><?php _e( 'Customizing' ); ?></span>
-                                       <?php _e( 'Themes' ); ?>
-                                       <span class="title-count theme-count"><?php echo count( $this->controls ) + 1 /* Active theme */; ?></span>
-                               </h3>
-                               <h3 class="accordion-section-title customize-section-title">
-                                       <?php
-                                       if ( $this->manager->is_theme_active() ) {
-                                               echo '<span class="customize-action">' . __( 'Active theme' ) . '</span> ' . $this->title;
-                                       } else {
-                                               echo '<span class="customize-action">' . __( 'Previewing theme' ) . '</span> ' . $this->title;
-                                       }
-                                       ?>
-                                       <button type="button" class="button customize-theme"><?php _e( 'Customize' ); ?></button>
-                               </h3>
-
-                               <div class="theme-overlay" tabindex="0" role="dialog" aria-label="<?php esc_attr_e( 'Theme Details' ); ?>"></div>
-
-                               <div id="customize-container"></div>
-                               <?php if ( count( $this->controls ) > 4 ) : ?>
-                                       <p><label for="themes-filter">
-                                               <span class="screen-reader-text"><?php _e( 'Search installed themes...' ); ?></span>
-                                               <input type="text" id="themes-filter" placeholder="<?php esc_attr_e( 'Search installed themes...' ); ?>" />
-                                       </label></p>
-                               <?php endif; ?>
-                               <div class="theme-browser rendered">
-                                       <ul class="themes accordion-section-content">
-                                       </ul>
-                               </div>
-                       </div>
-               </li>
-<?php }
-}
+/** WP_Customize_Nav_Menu_Section class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-section.php' );
 
-/**
- * Customizer section representing widget area (sidebar).
- *
- * @since 4.1.0
- *
- * @see WP_Customize_Section
- */
-class WP_Customize_Sidebar_Section extends WP_Customize_Section {
-
-       /**
-        * Type of this section.
-        *
-        * @since 4.1.0
-        * @access public
-        * @var string
-        */
-       public $type = 'sidebar';
-
-       /**
-        * Unique identifier.
-        *
-        * @since 4.1.0
-        * @access public
-        * @var string
-        */
-       public $sidebar_id;
-
-       /**
-        * Gather the parameters passed to client JavaScript via JSON.
-        *
-        * @since 4.1.0
-        *
-        * @return array The array to be exported to the client as JSON.
-        */
-       public function json() {
-               $json = parent::json();
-               $json['sidebarId'] = $this->sidebar_id;
-               return $json;
-       }
-
-       /**
-        * Whether the current sidebar is rendered on the page.
-        *
-        * @since 4.1.0
-        * @access public
-        *
-        * @return bool Whether sidebar is rendered.
-        */
-       public function active_callback() {
-               return $this->manager->widgets->is_sidebar_rendered( $this->sidebar_id );
-       }
-}
-
-/**
- * Customize Menu Section Class
- *
- * Custom section only needed in JS.
- *
- * @since 4.3.0
- *
- * @see WP_Customize_Section
- */
-class WP_Customize_Nav_Menu_Section extends WP_Customize_Section {
-
-       /**
-        * Control type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'nav_menu';
-
-       /**
-        * Get section parameters for JS.
-        *
-        * @since 4.3.0
-        * @access public
-        * @return array Exported parameters.
-        */
-       public function json() {
-               $exported = parent::json();
-               $exported['menu_id'] = intval( preg_replace( '/^nav_menu\[(\d+)\]/', '$1', $this->id ) );
-
-               return $exported;
-       }
-}
-
-/**
- * Customize Menu Section Class
- *
- * Implements the new-menu-ui toggle button instead of a regular section.
- *
- * @since 4.3.0
- *
- * @see WP_Customize_Section
- */
-class WP_Customize_New_Menu_Section extends WP_Customize_Section {
-
-       /**
-        * Control type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = 'new_menu';
-
-       /**
-        * Render the section, and the controls that have been added to it.
-        *
-        * @since 4.3.0
-        * @access protected
-        */
-       protected function render() {
-               ?>
-               <li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="accordion-section-new-menu">
-                       <button type="button" class="button-secondary add-new-menu-item add-menu-toggle" aria-expanded="false">
-                               <?php echo esc_html( $this->title ); ?>
-                       </button>
-                       <ul class="new-menu-section-content"></ul>
-               </li>
-               <?php
-       }
-}
+/** WP_Customize_New_Menu_Section class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-new-menu-section.php' );
index d007965e8a5e1d47d12943ef0c480993dde3e369..434dec7c069e60944bec1f0788f854dd61a229cb 100644 (file)
@@ -24,6 +24,8 @@ class WP_Customize_Setting {
        public $manager;
 
        /**
+        * Unique string identifier for the setting.
+        *
         * @access public
         * @var string
         */
@@ -74,8 +76,39 @@ class WP_Customize_Setting {
         */
        public $dirty = false;
 
+       /**
+        * @var array
+        */
        protected $id_data = array();
 
+       /**
+        * Whether or not preview() was called.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var bool
+        */
+       protected $is_previewed = false;
+
+       /**
+        * Cache of multidimensional values to improve performance.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array
+        * @static
+        */
+       protected static $aggregated_multidimensionals = array();
+
+       /**
+        * Whether the multidimensional setting is aggregated.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var bool
+        */
+       protected $is_multidimensional_aggregated = false;
+
        /**
         * Constructor.
         *
@@ -91,27 +124,86 @@ class WP_Customize_Setting {
        public function __construct( $manager, $id, $args = array() ) {
                $keys = array_keys( get_object_vars( $this ) );
                foreach ( $keys as $key ) {
-                       if ( isset( $args[ $key ] ) )
+                       if ( isset( $args[ $key ] ) ) {
                                $this->$key = $args[ $key ];
+                       }
                }
 
                $this->manager = $manager;
                $this->id = $id;
 
                // Parse the ID for array keys.
-               $this->id_data[ 'keys' ] = preg_split( '/\[/', str_replace( ']', '', $this->id ) );
-               $this->id_data[ 'base' ] = array_shift( $this->id_data[ 'keys' ] );
+               $this->id_data['keys'] = preg_split( '/\[/', str_replace( ']', '', $this->id ) );
+               $this->id_data['base'] = array_shift( $this->id_data['keys'] );
 
                // Rebuild the ID.
                $this->id = $this->id_data[ 'base' ];
-               if ( ! empty( $this->id_data[ 'keys' ] ) )
-                       $this->id .= '[' . implode( '][', $this->id_data[ 'keys' ] ) . ']';
+               if ( ! empty( $this->id_data[ 'keys' ] ) ) {
+                       $this->id .= '[' . implode( '][', $this->id_data['keys'] ) . ']';
+               }
 
-               if ( $this->sanitize_callback )
+               if ( $this->sanitize_callback ) {
                        add_filter( "customize_sanitize_{$this->id}", $this->sanitize_callback, 10, 2 );
-
-               if ( $this->sanitize_js_callback )
+               }
+               if ( $this->sanitize_js_callback ) {
                        add_filter( "customize_sanitize_js_{$this->id}", $this->sanitize_js_callback, 10, 2 );
+               }
+
+               if ( 'option' === $this->type || 'theme_mod' === $this->type ) {
+                       // Other setting types can opt-in to aggregate multidimensional explicitly.
+                       $this->aggregate_multidimensional();
+
+                       // Allow option settings to indicate whether they should be autoloaded.
+                       if ( 'option' === $this->type && isset( $args['autoload'] ) ) {
+                               self::$aggregated_multidimensionals[ $this->type ][ $this->id_data['base'] ]['autoload'] = $args['autoload'];
+                       }
+               }
+       }
+
+       /**
+        * Get parsed ID data for multidimensional setting.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array {
+        *     ID data for multidimensional setting.
+        *
+        *     @type string $base ID base
+        *     @type array  $keys Keys for multidimensional array.
+        * }
+        */
+       final public function id_data() {
+               return $this->id_data;
+       }
+
+       /**
+        * Set up the setting for aggregated multidimensional values.
+        *
+        * When a multidimensional setting gets aggregated, all of its preview and update
+        * calls get combined into one call, greatly improving performance.
+        *
+        * @since 4.4.0
+        * @access protected
+        */
+       protected function aggregate_multidimensional() {
+               $id_base = $this->id_data['base'];
+               if ( ! isset( self::$aggregated_multidimensionals[ $this->type ] ) ) {
+                       self::$aggregated_multidimensionals[ $this->type ] = array();
+               }
+               if ( ! isset( self::$aggregated_multidimensionals[ $this->type ][ $id_base ] ) ) {
+                       self::$aggregated_multidimensionals[ $this->type ][ $id_base ] = array(
+                               'previewed_instances'       => array(), // Calling preview() will add the $setting to the array.
+                               'preview_applied_instances' => array(), // Flags for which settings have had their values applied.
+                               'root_value'                => $this->get_root_value( array() ), // Root value for initial state, manipulated by preview and update calls.
+                       );
+               }
+
+               if ( ! empty( $this->id_data['keys'] ) ) {
+                       // Note the preview-applied flag is cleared at priority 9 to ensure it is cleared before a deferred-preview runs.
+                       add_action( "customize_post_value_set_{$this->id}", array( $this, '_clear_aggregated_multidimensional_preview_applied_flag' ), 9 );
+                       $this->is_multidimensional_aggregated = true;
+               }
        }
 
        /**
@@ -148,28 +240,86 @@ class WP_Customize_Setting {
        protected $_original_value;
 
        /**
-        * Handle previewing the setting.
+        * Add filters to supply the setting's value when accessed.
+        *
+        * If the setting already has a pre-existing value and there is no incoming
+        * post value for the setting, then this method will short-circuit since
+        * there is no change to preview.
         *
         * @since 3.4.0
+        * @since 4.4.0 Added boolean return value.
+        * @access public
+        *
+        * @return bool False when preview short-circuits due no change needing to be previewed.
         */
        public function preview() {
-               if ( ! isset( $this->_original_value ) ) {
-                       $this->_original_value = $this->value();
-               }
                if ( ! isset( $this->_previewed_blog_id ) ) {
                        $this->_previewed_blog_id = get_current_blog_id();
                }
 
-               switch( $this->type ) {
+               // Prevent re-previewing an already-previewed setting.
+               if ( $this->is_previewed ) {
+                       return true;
+               }
+
+               $id_base = $this->id_data['base'];
+               $is_multidimensional = ! empty( $this->id_data['keys'] );
+               $multidimensional_filter = array( $this, '_multidimensional_preview_filter' );
+
+               /*
+                * Check if the setting has a pre-existing value (an isset check),
+                * and if doesn't have any incoming post value. If both checks are true,
+                * then the preview short-circuits because there is nothing that needs
+                * to be previewed.
+                */
+               $undefined = new stdClass();
+               $needs_preview = ( $undefined !== $this->post_value( $undefined ) );
+               $value = null;
+
+               // Since no post value was defined, check if we have an initial value set.
+               if ( ! $needs_preview ) {
+                       if ( $this->is_multidimensional_aggregated ) {
+                               $root = self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'];
+                               $value = $this->multidimensional_get( $root, $this->id_data['keys'], $undefined );
+                       } else {
+                               $default = $this->default;
+                               $this->default = $undefined; // Temporarily set default to undefined so we can detect if existing value is set.
+                               $value = $this->value();
+                               $this->default = $default;
+                       }
+                       $needs_preview = ( $undefined === $value ); // Because the default needs to be supplied.
+               }
+
+               // If the setting does not need previewing now, defer to when it has a value to preview.
+               if ( ! $needs_preview ) {
+                       if ( ! has_action( "customize_post_value_set_{$this->id}", array( $this, 'preview' ) ) ) {
+                               add_action( "customize_post_value_set_{$this->id}", array( $this, 'preview' ) );
+                       }
+                       return false;
+               }
+
+               switch ( $this->type ) {
                        case 'theme_mod' :
-                               add_filter( 'theme_mod_' . $this->id_data[ 'base' ], array( $this, '_preview_filter' ) );
+                               if ( ! $is_multidimensional ) {
+                                       add_filter( "theme_mod_{$id_base}", array( $this, '_preview_filter' ) );
+                               } else {
+                                       if ( empty( self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['previewed_instances'] ) ) {
+                                               // Only add this filter once for this ID base.
+                                               add_filter( "theme_mod_{$id_base}", $multidimensional_filter );
+                                       }
+                                       self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['previewed_instances'][ $this->id ] = $this;
+                               }
                                break;
                        case 'option' :
-                               if ( empty( $this->id_data[ 'keys' ] ) )
-                                       add_filter( 'pre_option_' . $this->id_data[ 'base' ], array( $this, '_preview_filter' ) );
-                               else {
-                                       add_filter( 'option_' . $this->id_data[ 'base' ], array( $this, '_preview_filter' ) );
-                                       add_filter( 'default_option_' . $this->id_data[ 'base' ], array( $this, '_preview_filter' ) );
+                               if ( ! $is_multidimensional ) {
+                                       add_filter( "pre_option_{$id_base}", array( $this, '_preview_filter' ) );
+                               } else {
+                                       if ( empty( self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['previewed_instances'] ) ) {
+                                               // Only add these filters once for this ID base.
+                                               add_filter( "option_{$id_base}", $multidimensional_filter );
+                                               add_filter( "default_option_{$id_base}", $multidimensional_filter );
+                                       }
+                                       self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['previewed_instances'][ $this->id ] = $this;
                                }
                                break;
                        default :
@@ -198,17 +348,36 @@ class WP_Customize_Setting {
                                 */
                                do_action( "customize_preview_{$this->type}", $this );
                }
+
+               $this->is_previewed = true;
+
+               return true;
        }
 
        /**
-        * Callback function to filter the theme mods and options.
+        * Clear out the previewed-applied flag for a multidimensional-aggregated value whenever its post value is updated.
+        *
+        * This ensures that the new value will get sanitized and used the next time
+        * that <code>WP_Customize_Setting::_multidimensional_preview_filter()</code>
+        * is called for this setting.
+        *
+        * @since 4.4.0
+        * @access private
+        * @see WP_Customize_Manager::set_post_value()
+        * @see WP_Customize_Setting::_multidimensional_preview_filter()
+        */
+       final public function _clear_aggregated_multidimensional_preview_applied_flag() {
+               unset( self::$aggregated_multidimensionals[ $this->type ][ $this->id_data['base'] ]['preview_applied_instances'][ $this->id ] );
+       }
+
+       /**
+        * Callback function to filter non-multidimensional theme mods and options.
         *
         * If switch_to_blog() was called after the preview() method, and the current
         * blog is now not the same blog, then this method does a no-op and returns
         * the original value.
         *
         * @since 3.4.0
-        * @uses WP_Customize_Setting::multidimensional_replace()
         *
         * @param mixed $original Old value.
         * @return mixed New or old value.
@@ -218,15 +387,63 @@ class WP_Customize_Setting {
                        return $original;
                }
 
-               $undefined = new stdClass(); // symbol hack
+               $undefined = new stdClass(); // Symbol hack.
                $post_value = $this->post_value( $undefined );
-               if ( $undefined === $post_value ) {
-                       $value = $this->_original_value;
-               } else {
+               if ( $undefined !== $post_value ) {
                        $value = $post_value;
+               } else {
+                       /*
+                        * Note that we don't use $original here because preview() will
+                        * not add the filter in the first place if it has an initial value
+                        * and there is no post value.
+                        */
+                       $value = $this->default;
+               }
+               return $value;
+       }
+
+       /**
+        * Callback function to filter multidimensional theme mods and options.
+        *
+        * For all multidimensional settings of a given type, the preview filter for
+        * the first setting previewed will be used to apply the values for the others.
+        *
+        * @since 4.4.0
+        * @access private
+        *
+        * @see WP_Customize_Setting::$aggregated_multidimensionals
+        * @param mixed $original Original root value.
+        * @return mixed New or old value.
+        */
+       final public function _multidimensional_preview_filter( $original ) {
+               if ( ! $this->is_current_blog_previewed() ) {
+                       return $original;
+               }
+
+               $id_base = $this->id_data['base'];
+
+               // If no settings have been previewed yet (which should not be the case, since $this is), just pass through the original value.
+               if ( empty( self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['previewed_instances'] ) ) {
+                       return $original;
                }
 
-               return $this->multidimensional_replace( $original, $this->id_data['keys'], $value );
+               foreach ( self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['previewed_instances'] as $previewed_setting ) {
+                       // Skip applying previewed value for any settings that have already been applied.
+                       if ( ! empty( self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['preview_applied_instances'][ $previewed_setting->id ] ) ) {
+                               continue;
+                       }
+
+                       // Do the replacements of the posted/default sub value into the root value.
+                       $value = $previewed_setting->post_value( $previewed_setting->default );
+                       $root = self::$aggregated_multidimensionals[ $previewed_setting->type ][ $id_base ]['root_value'];
+                       $root = $previewed_setting->multidimensional_replace( $root, $previewed_setting->id_data['keys'], $value );
+                       self::$aggregated_multidimensionals[ $previewed_setting->type ][ $id_base ]['root_value'] = $root;
+
+                       // Mark this setting having been applied so that it will be skipped when the filter is called again.
+                       self::$aggregated_multidimensionals[ $previewed_setting->type ][ $id_base ]['preview_applied_instances'][ $previewed_setting->id ] = true;
+               }
+
+               return self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'];
        }
 
        /**
@@ -293,77 +510,115 @@ class WP_Customize_Setting {
        }
 
        /**
-        * Save the value of the setting, using the related API.
+        * Get the root value for a setting, especially for multidimensional ones.
         *
-        * @since 3.4.0
+        * @since 4.4.0
+        * @access protected
         *
-        * @param mixed $value The value to update.
-        * @return mixed The result of saving the value.
+        * @param mixed $default Value to return if root does not exist.
+        * @return mixed
         */
-       protected function update( $value ) {
-               switch( $this->type ) {
-                       case 'theme_mod' :
-                               return $this->_update_theme_mod( $value );
-
-                       case 'option' :
-                               return $this->_update_option( $value );
-
-                       default :
+       protected function get_root_value( $default = null ) {
+               $id_base = $this->id_data['base'];
+               if ( 'option' === $this->type ) {
+                       return get_option( $id_base, $default );
+               } else if ( 'theme_mod' ) {
+                       return get_theme_mod( $id_base, $default );
+               } else {
+                       /*
+                        * Any WP_Customize_Setting subclass implementing aggregate multidimensional
+                        * will need to override this method to obtain the data from the appropriate
+                        * location.
+                        */
+                       return $default;
+               }
+       }
 
-                               /**
-                                * Fires when the {@see WP_Customize_Setting::update()} method is called for settings
-                                * not handled as theme_mods or options.
-                                *
-                                * The dynamic portion of the hook name, `$this->type`, refers to the type of setting.
-                                *
-                                * @since 3.4.0
-                                *
-                                * @param mixed                $value Value of the setting.
-                                * @param WP_Customize_Setting $this  WP_Customize_Setting instance.
-                                */
-                               return do_action( 'customize_update_' . $this->type, $value, $this );
+       /**
+        * Set the root value for a setting, especially for multidimensional ones.
+        *
+        * @since 4.4.0
+        * @access protected
+        *
+        * @param mixed $value Value to set as root of multidimensional setting.
+        * @return bool Whether the multidimensional root was updated successfully.
+        */
+       protected function set_root_value( $value ) {
+               $id_base = $this->id_data['base'];
+               if ( 'option' === $this->type ) {
+                       $autoload = true;
+                       if ( isset( self::$aggregated_multidimensionals[ $this->type ][ $this->id_data['base'] ]['autoload'] ) ) {
+                               $autoload = self::$aggregated_multidimensionals[ $this->type ][ $this->id_data['base'] ]['autoload'];
+                       }
+                       return update_option( $id_base, $value, $autoload );
+               } else if ( 'theme_mod' ) {
+                       set_theme_mod( $id_base, $value );
+                       return true;
+               } else {
+                       /*
+                        * Any WP_Customize_Setting subclass implementing aggregate multidimensional
+                        * will need to override this method to obtain the data from the appropriate
+                        * location.
+                        */
+                       return false;
                }
        }
 
        /**
-        * Update the theme mod from the value of the parameter.
+        * Save the value of the setting, using the related API.
         *
         * @since 3.4.0
         *
         * @param mixed $value The value to update.
+        * @return bool The result of saving the value.
         */
-       protected function _update_theme_mod( $value ) {
-               // Handle non-array theme mod.
-               if ( empty( $this->id_data[ 'keys' ] ) ) {
-                       set_theme_mod( $this->id_data[ 'base' ], $value );
-                       return;
-               }
-               // Handle array-based theme mod.
-               $mods = get_theme_mod( $this->id_data[ 'base' ] );
-               $mods = $this->multidimensional_replace( $mods, $this->id_data[ 'keys' ], $value );
-               if ( isset( $mods ) ) {
-                       set_theme_mod( $this->id_data[ 'base' ], $mods );
+       protected function update( $value ) {
+               $id_base = $this->id_data['base'];
+               if ( 'option' === $this->type || 'theme_mod' === $this->type ) {
+                       if ( ! $this->is_multidimensional_aggregated ) {
+                               return $this->set_root_value( $value );
+                       } else {
+                               $root = self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'];
+                               $root = $this->multidimensional_replace( $root, $this->id_data['keys'], $value );
+                               self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'] = $root;
+                               return $this->set_root_value( $root );
+                       }
+               } else {
+                       /**
+                        * Fires when the {@see WP_Customize_Setting::update()} method is called for settings
+                        * not handled as theme_mods or options.
+                        *
+                        * The dynamic portion of the hook name, `$this->type`, refers to the type of setting.
+                        *
+                        * @since 3.4.0
+                        *
+                        * @param mixed                $value Value of the setting.
+                        * @param WP_Customize_Setting $this  WP_Customize_Setting instance.
+                        */
+                       do_action( "customize_update_{$this->type}", $value, $this );
+
+                       return has_action( "customize_update_{$this->type}" );
                }
        }
 
        /**
-        * Update the option from the value of the setting.
+        * Deprecated method.
         *
         * @since 3.4.0
+        * @deprecated 4.4.0 Deprecated in favor of update() method.
+        */
+       protected function _update_theme_mod() {
+               _deprecated_function( __METHOD__, '4.4.0', __CLASS__ . '::update()' );
+       }
+
+       /**
+        * Deprecated method.
         *
-        * @param mixed $value The value to update.
-        * @return bool The result of saving the value.
+        * @since 3.4.0
+        * @deprecated 4.4.0 Deprecated in favor of update() method.
         */
-       protected function _update_option( $value ) {
-               // Handle non-array option.
-               if ( empty( $this->id_data[ 'keys' ] ) )
-                       return update_option( $this->id_data[ 'base' ], $value );
-
-               // Handle array-based options.
-               $options = get_option( $this->id_data[ 'base' ] );
-               $options = $this->multidimensional_replace( $options, $this->id_data[ 'keys' ], $value );
-               if ( isset( $options ) )
-                       return update_option( $this->id_data[ 'base' ], $options );
+       protected function _update_option() {
+               _deprecated_function( __METHOD__, '4.4.0', __CLASS__ . '::update()' );
        }
 
        /**
@@ -374,39 +629,33 @@ class WP_Customize_Setting {
         * @return mixed The value.
         */
        public function value() {
-               // Get the callback that corresponds to the setting type.
-               switch( $this->type ) {
-                       case 'theme_mod' :
-                               $function = 'get_theme_mod';
-                               break;
-                       case 'option' :
-                               $function = 'get_option';
-                               break;
-                       default :
-
-                               /**
-                                * Filter a Customize setting value not handled as a theme_mod or option.
-                                *
-                                * The dynamic portion of the hook name, `$this->id_date['base']`, refers to
-                                * the base slug of the setting name.
-                                *
-                                * For settings handled as theme_mods or options, see those corresponding
-                                * functions for available hooks.
-                                *
-                                * @since 3.4.0
-                                *
-                                * @param mixed $default The setting default value. Default empty.
-                                */
-                               return apply_filters( 'customize_value_' . $this->id_data[ 'base' ], $this->default );
+               $id_base = $this->id_data['base'];
+               $is_core_type = ( 'option' === $this->type || 'theme_mod' === $this->type );
+
+               if ( ! $is_core_type && ! $this->is_multidimensional_aggregated ) {
+                       $value = $this->get_root_value( $this->default );
+
+                       /**
+                        * Filter a Customize setting value not handled as a theme_mod or option.
+                        *
+                        * The dynamic portion of the hook name, `$this->id_date['base']`, refers to
+                        * the base slug of the setting name.
+                        *
+                        * For settings handled as theme_mods or options, see those corresponding
+                        * functions for available hooks.
+                        *
+                        * @since 3.4.0
+                        *
+                        * @param mixed $default The setting default value. Default empty.
+                        */
+                       $value = apply_filters( "customize_value_{$id_base}", $value );
+               } else if ( $this->is_multidimensional_aggregated ) {
+                       $root_value = self::$aggregated_multidimensionals[ $this->type ][ $id_base ]['root_value'];
+                       $value = $this->multidimensional_get( $root_value, $this->id_data['keys'], $this->default );
+               } else {
+                       $value = $this->get_root_value( $this->default );
                }
-
-               // Handle non-array value
-               if ( empty( $this->id_data[ 'keys' ] ) )
-                       return $function( $this->id_data[ 'base' ], $this->default );
-
-               // Handle array-based value
-               $values = $function( $this->id_data[ 'base' ] );
-               return $this->multidimensional_get( $values, $this->id_data[ 'keys' ], $this->default );
+               return $value;
        }
 
        /**
@@ -511,7 +760,7 @@ class WP_Customize_Setting {
         * @param $root
         * @param $keys
         * @param mixed $value The value to update.
-        * @return
+        * @return mixed
         */
        final protected function multidimensional_replace( $root, $keys, $value ) {
                if ( ! isset( $value ) )
@@ -560,1490 +809,17 @@ class WP_Customize_Setting {
        }
 }
 
-/**
- * A setting that is used to filter a value, but will not save the results.
- *
- * Results should be properly handled using another setting or callback.
- *
- * @since 3.4.0
- *
- * @see WP_Customize_Setting
- */
-class WP_Customize_Filter_Setting extends WP_Customize_Setting {
-
-       /**
-        * @since 3.4.0
-        */
-       public function update( $value ) {}
-}
-
-/**
- * A setting that is used to filter a value, but will not save the results.
- *
- * Results should be properly handled using another setting or callback.
- *
- * @since 3.4.0
- *
- * @see WP_Customize_Setting
- */
-final class WP_Customize_Header_Image_Setting extends WP_Customize_Setting {
-       public $id = 'header_image_data';
-
-       /**
-        * @since 3.4.0
-        *
-        * @global Custom_Image_Header $custom_image_header
-        *
-        * @param $value
-        */
-       public function update( $value ) {
-               global $custom_image_header;
-
-               // If the value doesn't exist (removed or random),
-               // use the header_image value.
-               if ( ! $value )
-                       $value = $this->manager->get_setting('header_image')->post_value();
-
-               if ( is_array( $value ) && isset( $value['choice'] ) )
-                       $custom_image_header->set_header_image( $value['choice'] );
-               else
-                       $custom_image_header->set_header_image( $value );
-       }
-}
-
-/**
- * Customizer Background Image Setting class.
- *
- * @since 3.4.0
- *
- * @see WP_Customize_Setting
- */
-final class WP_Customize_Background_Image_Setting extends WP_Customize_Setting {
-       public $id = 'background_image_thumb';
-
-       /**
-        * @since 3.4.0
-        *
-        * @param $value
-        */
-       public function update( $value ) {
-               remove_theme_mod( 'background_image_thumb' );
-       }
-}
-
-/**
- * Customize Setting to represent a nav_menu.
- *
- * Subclass of WP_Customize_Setting to represent a nav_menu taxonomy term, and
- * the IDs for the nav_menu_items associated with the nav menu.
- *
- * @since 4.3.0
- *
- * @see WP_Customize_Setting
- */
-class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting {
-
-       const ID_PATTERN = '/^nav_menu_item\[(?P<id>-?\d+)\]$/';
-
-       const POST_TYPE = 'nav_menu_item';
-
-       const TYPE = 'nav_menu_item';
-
-       /**
-        * Setting type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = self::TYPE;
-
-       /**
-        * Default setting value.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var array
-        *
-        * @see wp_setup_nav_menu_item()
-        */
-       public $default = array(
-               // The $menu_item_data for wp_update_nav_menu_item().
-               'object_id'        => 0,
-               'object'           => '', // Taxonomy name.
-               'menu_item_parent' => 0, // A.K.A. menu-item-parent-id; note that post_parent is different, and not included.
-               'position'         => 0, // A.K.A. menu_order.
-               'type'             => 'custom', // Note that type_label is not included here.
-               'title'            => '',
-               'url'              => '',
-               'target'           => '',
-               'attr_title'       => '',
-               'description'      => '',
-               'classes'          => '',
-               'xfn'              => '',
-               'status'           => 'publish',
-               'original_title'   => '',
-               'nav_menu_term_id' => 0, // This will be supplied as the $menu_id arg for wp_update_nav_menu_item().
-               // @todo also expose invalid?
-       );
-
-       /**
-        * Default transport.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $transport = 'postMessage';
+/** WP_Customize_Filter_Setting class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-filter-setting.php' );
 
-       /**
-        * The post ID represented by this setting instance. This is the db_id.
-        *
-        * A negative value represents a placeholder ID for a new menu not yet saved.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var int
-        */
-       public $post_id;
+/** WP_Customize_Header_Image_Setting class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-header-image-setting.php' );
 
-       /**
-        * Storage of pre-setup menu item to prevent wasted calls to wp_setup_nav_menu_item().
-        *
-        * @since 4.3.0
-        * @access protected
-        * @var array
-        */
-       protected $value;
+/** WP_Customize_Background_Image_Setting class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-background-image-setting.php' );
 
-       /**
-        * Previous (placeholder) post ID used before creating a new menu item.
-        *
-        * This value will be exported to JS via the customize_save_response filter
-        * so that JavaScript can update the settings to refer to the newly-assigned
-        * post ID. This value is always negative to indicate it does not refer to
-        * a real post.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var int
-        *
-        * @see WP_Customize_Nav_Menu_Item_Setting::update()
-        * @see WP_Customize_Nav_Menu_Item_Setting::amend_customize_save_response()
-        */
-       public $previous_post_id;
+/** WP_Customize_Nav_Menu_Item_Setting class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-item-setting.php' );
 
-       /**
-        * When previewing or updating a menu item, this stores the previous nav_menu_term_id
-        * which ensures that we can apply the proper filters.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var int
-        */
-       public $original_nav_menu_term_id;
-
-       /**
-        * Whether or not preview() was called.
-        *
-        * @since 4.3.0
-        * @access protected
-        * @var bool
-        */
-       protected $is_previewed = false;
-
-       /**
-        * Whether or not update() was called.
-        *
-        * @since 4.3.0
-        * @access protected
-        * @var bool
-        */
-       protected $is_updated = false;
-
-       /**
-        * Status for calling the update method, used in customize_save_response filter.
-        *
-        * When status is inserted, the placeholder post ID is stored in $previous_post_id.
-        * When status is error, the error is stored in $update_error.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string updated|inserted|deleted|error
-        *
-        * @see WP_Customize_Nav_Menu_Item_Setting::update()
-        * @see WP_Customize_Nav_Menu_Item_Setting::amend_customize_save_response()
-        */
-       public $update_status;
-
-       /**
-        * Any error object returned by wp_update_nav_menu_item() when setting is updated.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var WP_Error
-        *
-        * @see WP_Customize_Nav_Menu_Item_Setting::update()
-        * @see WP_Customize_Nav_Menu_Item_Setting::amend_customize_save_response()
-        */
-       public $update_error;
-
-       /**
-        * Constructor.
-        *
-        * Any supplied $args override class property defaults.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @param WP_Customize_Manager $manager Bootstrap Customizer instance.
-        * @param string               $id      An specific ID of the setting. Can be a
-        *                                      theme mod or option name.
-        * @param array                $args    Optional. Setting arguments.
-        *
-        * @throws Exception If $id is not valid for this setting type.
-        */
-       public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) {
-               if ( empty( $manager->nav_menus ) ) {
-                       throw new Exception( 'Expected WP_Customize_Manager::$nav_menus to be set.' );
-               }
-
-               if ( ! preg_match( self::ID_PATTERN, $id, $matches ) ) {
-                       throw new Exception( "Illegal widget setting ID: $id" );
-               }
-
-               $this->post_id = intval( $matches['id'] );
-               add_action( 'wp_update_nav_menu_item', array( $this, 'flush_cached_value' ), 10, 2 );
-
-               parent::__construct( $manager, $id, $args );
-
-               // Ensure that an initially-supplied value is valid.
-               if ( isset( $this->value ) ) {
-                       $this->populate_value();
-                       foreach ( array_diff( array_keys( $this->default ), array_keys( $this->value ) ) as $missing ) {
-                               throw new Exception( "Supplied nav_menu_item value missing property: $missing" );
-                       }
-               }
-
-       }
-
-       /**
-        * Clear the cached value when this nav menu item is updated.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @param int $menu_id       The term ID for the menu.
-        * @param int $menu_item_id  The post ID for the menu item.
-        */
-       public function flush_cached_value( $menu_id, $menu_item_id ) {
-               unset( $menu_id );
-               if ( $menu_item_id === $this->post_id ) {
-                       $this->value = null;
-               }
-       }
-
-       /**
-        * Get the instance data for a given widget setting.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see wp_setup_nav_menu_item()
-        *
-        * @return array|false Instance data array, or false if the item is marked for deletion.
-        */
-       public function value() {
-               if ( $this->is_previewed && $this->_previewed_blog_id === get_current_blog_id() ) {
-                       $undefined  = new stdClass(); // Symbol.
-                       $post_value = $this->post_value( $undefined );
-
-                       if ( $undefined === $post_value ) {
-                               $value = $this->_original_value;
-                       } else {
-                               $value = $post_value;
-                       }
-               } else if ( isset( $this->value ) ) {
-                       $value = $this->value;
-               } else {
-                       $value = false;
-
-                       // Note that a ID of less than one indicates a nav_menu not yet inserted.
-                       if ( $this->post_id > 0 ) {
-                               $post = get_post( $this->post_id );
-                               if ( $post && self::POST_TYPE === $post->post_type ) {
-                                       $value = (array) wp_setup_nav_menu_item( $post );
-                               }
-                       }
-
-                       if ( ! is_array( $value ) ) {
-                               $value = $this->default;
-                       }
-
-                       // Cache the value for future calls to avoid having to re-call wp_setup_nav_menu_item().
-                       $this->value = $value;
-                       $this->populate_value();
-                       $value = $this->value;
-               }
-
-               return $value;
-       }
-
-       /**
-        * Ensure that the value is fully populated with the necessary properties.
-        *
-        * Translates some properties added by wp_setup_nav_menu_item() and removes others.
-        *
-        * @since 4.3.0
-        * @access protected
-        *
-        * @see WP_Customize_Nav_Menu_Item_Setting::value()
-        */
-       protected function populate_value() {
-               if ( ! is_array( $this->value ) ) {
-                       return;
-               }
-
-               if ( isset( $this->value['menu_order'] ) ) {
-                       $this->value['position'] = $this->value['menu_order'];
-                       unset( $this->value['menu_order'] );
-               }
-               if ( isset( $this->value['post_status'] ) ) {
-                       $this->value['status'] = $this->value['post_status'];
-                       unset( $this->value['post_status'] );
-               }
-
-               if ( ! isset( $this->value['original_title'] ) ) {
-                       $original_title = '';
-                       if ( 'post_type' === $this->value['type'] ) {
-                               $original_title = get_the_title( $this->value['object_id'] );
-                       } elseif ( 'taxonomy' === $this->value['type'] ) {
-                               $original_title = get_term_field( 'name', $this->value['object_id'], $this->value['object'], 'raw' );
-                               if ( is_wp_error( $original_title ) ) {
-                                       $original_title = '';
-                               }
-                       }
-                       $this->value['original_title'] = html_entity_decode( $original_title, ENT_QUOTES, get_bloginfo( 'charset' ) );
-               }
-
-               if ( ! isset( $this->value['nav_menu_term_id'] ) && $this->post_id > 0 ) {
-                       $menus = wp_get_post_terms( $this->post_id, WP_Customize_Nav_Menu_Setting::TAXONOMY, array(
-                               'fields' => 'ids',
-                       ) );
-                       if ( ! empty( $menus ) ) {
-                               $this->value['nav_menu_term_id'] = array_shift( $menus );
-                       } else {
-                               $this->value['nav_menu_term_id'] = 0;
-                       }
-               }
-
-               foreach ( array( 'object_id', 'menu_item_parent', 'nav_menu_term_id' ) as $key ) {
-                       if ( ! is_int( $this->value[ $key ] ) ) {
-                               $this->value[ $key ] = intval( $this->value[ $key ] );
-                       }
-               }
-
-               // Remove remaining properties available on a setup nav_menu_item post object which aren't relevant to the setting value.
-               $irrelevant_properties = array(
-                       'ID',
-                       'comment_count',
-                       'comment_status',
-                       'db_id',
-                       'filter',
-                       'guid',
-                       'ping_status',
-                       'pinged',
-                       'post_author',
-                       'post_content',
-                       'post_content_filtered',
-                       'post_date',
-                       'post_date_gmt',
-                       'post_excerpt',
-                       'post_mime_type',
-                       'post_modified',
-                       'post_modified_gmt',
-                       'post_name',
-                       'post_parent',
-                       'post_password',
-                       'post_title',
-                       'post_type',
-                       'to_ping',
-               );
-               foreach ( $irrelevant_properties as $property ) {
-                       unset( $this->value[ $property ] );
-               }
-       }
-
-       /**
-        * Handle previewing the setting.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see WP_Customize_Manager::post_value()
-        */
-       public function preview() {
-               if ( $this->is_previewed ) {
-                       return;
-               }
-
-               $this->is_previewed              = true;
-               $this->_original_value           = $this->value();
-               $this->original_nav_menu_term_id = $this->_original_value['nav_menu_term_id'];
-               $this->_previewed_blog_id        = get_current_blog_id();
-
-               add_filter( 'wp_get_nav_menu_items', array( $this, 'filter_wp_get_nav_menu_items' ), 10, 3 );
-
-               $sort_callback = array( __CLASS__, 'sort_wp_get_nav_menu_items' );
-               if ( ! has_filter( 'wp_get_nav_menu_items', $sort_callback ) ) {
-                       add_filter( 'wp_get_nav_menu_items', array( __CLASS__, 'sort_wp_get_nav_menu_items' ), 1000, 3 );
-               }
-
-               // @todo Add get_post_metadata filters for plugins to add their data.
-       }
-
-       /**
-        * Filter the wp_get_nav_menu_items() result to supply the previewed menu items.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see wp_get_nav_menu_items()
-        *
-        * @param array  $items An array of menu item post objects.
-        * @param object $menu  The menu object.
-        * @param array  $args  An array of arguments used to retrieve menu item objects.
-        * @return array Array of menu items,
-        */
-       public function filter_wp_get_nav_menu_items( $items, $menu, $args ) {
-               $this_item = $this->value();
-               $current_nav_menu_term_id = $this_item['nav_menu_term_id'];
-               unset( $this_item['nav_menu_term_id'] );
-
-               $should_filter = (
-                       $menu->term_id === $this->original_nav_menu_term_id
-                       ||
-                       $menu->term_id === $current_nav_menu_term_id
-               );
-               if ( ! $should_filter ) {
-                       return $items;
-               }
-
-               // Handle deleted menu item, or menu item moved to another menu.
-               $should_remove = (
-                       false === $this_item
-                       ||
-                       (
-                               $this->original_nav_menu_term_id === $menu->term_id
-                               &&
-                               $current_nav_menu_term_id !== $this->original_nav_menu_term_id
-                       )
-               );
-               if ( $should_remove ) {
-                       $filtered_items = array();
-                       foreach ( $items as $item ) {
-                               if ( $item->db_id !== $this->post_id ) {
-                                       $filtered_items[] = $item;
-                               }
-                       }
-                       return $filtered_items;
-               }
-
-               $mutated = false;
-               $should_update = (
-                       is_array( $this_item )
-                       &&
-                       $current_nav_menu_term_id === $menu->term_id
-               );
-               if ( $should_update ) {
-                       foreach ( $items as $item ) {
-                               if ( $item->db_id === $this->post_id ) {
-                                       foreach ( get_object_vars( $this->value_as_wp_post_nav_menu_item() ) as $key => $value ) {
-                                               $item->$key = $value;
-                                       }
-                                       $mutated = true;
-                               }
-                       }
-
-                       // Not found so we have to append it..
-                       if ( ! $mutated ) {
-                               $items[] = $this->value_as_wp_post_nav_menu_item();
-                       }
-               }
-
-               return $items;
-       }
-
-       /**
-        * Re-apply the tail logic also applied on $items by wp_get_nav_menu_items().
-        *
-        * @since 4.3.0
-        * @access public
-        * @static
-        *
-        * @see wp_get_nav_menu_items()
-        *
-        * @param array  $items An array of menu item post objects.
-        * @param object $menu  The menu object.
-        * @param array  $args  An array of arguments used to retrieve menu item objects.
-        * @return array Array of menu items,
-        */
-       public static function sort_wp_get_nav_menu_items( $items, $menu, $args ) {
-               // @todo We should probably re-apply some constraints imposed by $args.
-               unset( $args['include'] );
-
-               // Remove invalid items only in frontend.
-               if ( ! is_admin() ) {
-                       $items = array_filter( $items, '_is_valid_nav_menu_item' );
-               }
-
-               if ( ARRAY_A === $args['output'] ) {
-                       $GLOBALS['_menu_item_sort_prop'] = $args['output_key'];
-                       usort( $items, '_sort_nav_menu_items' );
-                       $i = 1;
-
-                       foreach ( $items as $k => $item ) {
-                               $items[ $k ]->{$args['output_key']} = $i++;
-                       }
-               }
-
-               return $items;
-       }
-
-       /**
-        * Get the value emulated into a WP_Post and set up as a nav_menu_item.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @return WP_Post With wp_setup_nav_menu_item() applied.
-        */
-       public function value_as_wp_post_nav_menu_item() {
-               $item = (object) $this->value();
-               unset( $item->nav_menu_term_id );
-
-               $item->post_status = $item->status;
-               unset( $item->status );
-
-               $item->post_type = 'nav_menu_item';
-               $item->menu_order = $item->position;
-               unset( $item->position );
-
-               if ( $item->title ) {
-                       $item->post_title = $item->title;
-               }
-
-               $item->ID = $this->post_id;
-               $item->db_id = $this->post_id;
-               $post = new WP_Post( (object) $item );
-
-               if ( empty( $post->post_author ) ) {
-                       $post->post_author = get_current_user_id();
-               }
-
-               if ( ! isset( $post->type_label ) ) {
-                       if ( 'post_type' === $post->type ) {
-                               $object = get_post_type_object( $post->object );
-                               if ( $object ) {
-                                       $post->type_label = $object->labels->singular_name;
-                               } else {
-                                       $post->type_label = $post->object;
-                               }
-                       } elseif ( 'taxonomy' == $post->type ) {
-                               $object = get_taxonomy( $post->object );
-                               if ( $object ) {
-                                       $post->type_label = $object->labels->singular_name;
-                               } else {
-                                       $post->type_label = $post->object;
-                               }
-                       } else {
-                               $post->type_label = __( 'Custom Link' );
-                       }
-               }
-
-               return $post;
-       }
-
-       /**
-        * Sanitize an input.
-        *
-        * Note that parent::sanitize() erroneously does wp_unslash() on $value, but
-        * we remove that in this override.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @param array $menu_item_value The value to sanitize.
-        * @return array|false|null Null if an input isn't valid. False if it is marked for deletion.
-        *                          Otherwise the sanitized value.
-        */
-       public function sanitize( $menu_item_value ) {
-               // Menu is marked for deletion.
-               if ( false === $menu_item_value ) {
-                       return $menu_item_value;
-               }
-
-               // Invalid.
-               if ( ! is_array( $menu_item_value ) ) {
-                       return null;
-               }
-
-               $default = array(
-                       'object_id'        => 0,
-                       'object'           => '',
-                       'menu_item_parent' => 0,
-                       'position'         => 0,
-                       'type'             => 'custom',
-                       'title'            => '',
-                       'url'              => '',
-                       'target'           => '',
-                       'attr_title'       => '',
-                       'description'      => '',
-                       'classes'          => '',
-                       'xfn'              => '',
-                       'status'           => 'publish',
-                       'original_title'   => '',
-                       'nav_menu_term_id' => 0,
-               );
-               $menu_item_value = array_merge( $default, $menu_item_value );
-               $menu_item_value = wp_array_slice_assoc( $menu_item_value, array_keys( $default ) );
-               $menu_item_value['position'] = max( 0, intval( $menu_item_value['position'] ) );
-
-               foreach ( array( 'object_id', 'menu_item_parent', 'nav_menu_term_id' ) as $key ) {
-                       // Note we need to allow negative-integer IDs for previewed objects not inserted yet.
-                       $menu_item_value[ $key ] = intval( $menu_item_value[ $key ] );
-               }
-
-               foreach ( array( 'type', 'object', 'target' ) as $key ) {
-                       $menu_item_value[ $key ] = sanitize_key( $menu_item_value[ $key ] );
-               }
-
-               foreach ( array( 'xfn', 'classes' ) as $key ) {
-                       $value = $menu_item_value[ $key ];
-                       if ( ! is_array( $value ) ) {
-                               $value = explode( ' ', $value );
-                       }
-                       $menu_item_value[ $key ] = implode( ' ', array_map( 'sanitize_html_class', $value ) );
-               }
-
-               foreach ( array( 'title', 'attr_title', 'description', 'original_title' ) as $key ) {
-                       // @todo Should esc_attr() the attr_title as well?
-                       $menu_item_value[ $key ] = sanitize_text_field( $menu_item_value[ $key ] );
-               }
-
-               $menu_item_value['url'] = esc_url_raw( $menu_item_value['url'] );
-               if ( ! get_post_status_object( $menu_item_value['status'] ) ) {
-                       $menu_item_value['status'] = 'publish';
-               }
-
-               /** This filter is documented in wp-includes/class-wp-customize-setting.php */
-               return apply_filters( "customize_sanitize_{$this->id}", $menu_item_value, $this );
-       }
-
-       /**
-        * Create/update the nav_menu_item post for this setting.
-        *
-        * Any created menu items will have their assigned post IDs exported to the client
-        * via the customize_save_response filter. Likewise, any errors will be exported
-        * to the client via the customize_save_response() filter.
-        *
-        * To delete a menu, the client can send false as the value.
-        *
-        * @since 4.3.0
-        * @access protected
-        *
-        * @see wp_update_nav_menu_item()
-        *
-        * @param array|false $value The menu item array to update. If false, then the menu item will be deleted
-        *                           entirely. See WP_Customize_Nav_Menu_Item_Setting::$default for what the value
-        *                           should consist of.
-        * @return null|void
-        */
-       protected function update( $value ) {
-               if ( $this->is_updated ) {
-                       return;
-               }
-
-               $this->is_updated = true;
-               $is_placeholder   = ( $this->post_id < 0 );
-               $is_delete        = ( false === $value );
-
-               // Update the cached value.
-               $this->value = $value;
-
-               add_filter( 'customize_save_response', array( $this, 'amend_customize_save_response' ) );
-
-               if ( $is_delete ) {
-                       // If the current setting post is a placeholder, a delete request is a no-op.
-                       if ( $is_placeholder ) {
-                               $this->update_status = 'deleted';
-                       } else {
-                               $r = wp_delete_post( $this->post_id, true );
-
-                               if ( false === $r ) {
-                                       $this->update_error  = new WP_Error( 'delete_failure' );
-                                       $this->update_status = 'error';
-                               } else {
-                                       $this->update_status = 'deleted';
-                               }
-                               // @todo send back the IDs for all associated nav menu items deleted, so these settings (and controls) can be removed from Customizer?
-                       }
-               } else {
-
-                       // Handle saving menu items for menus that are being newly-created.
-                       if ( $value['nav_menu_term_id'] < 0 ) {
-                               $nav_menu_setting_id = sprintf( 'nav_menu[%s]', $value['nav_menu_term_id'] );
-                               $nav_menu_setting    = $this->manager->get_setting( $nav_menu_setting_id );
-
-                               if ( ! $nav_menu_setting || ! ( $nav_menu_setting instanceof WP_Customize_Nav_Menu_Setting ) ) {
-                                       $this->update_status = 'error';
-                                       $this->update_error  = new WP_Error( 'unexpected_nav_menu_setting' );
-                                       return;
-                               }
-
-                               if ( false === $nav_menu_setting->save() ) {
-                                       $this->update_status = 'error';
-                                       $this->update_error  = new WP_Error( 'nav_menu_setting_failure' );
-                                       return;
-                               }
-
-                               if ( $nav_menu_setting->previous_term_id !== intval( $value['nav_menu_term_id'] ) ) {
-                                       $this->update_status = 'error';
-                                       $this->update_error  = new WP_Error( 'unexpected_previous_term_id' );
-                                       return;
-                               }
-
-                               $value['nav_menu_term_id'] = $nav_menu_setting->term_id;
-                       }
-
-                       // Handle saving a nav menu item that is a child of a nav menu item being newly-created.
-                       if ( $value['menu_item_parent'] < 0 ) {
-                               $parent_nav_menu_item_setting_id = sprintf( 'nav_menu_item[%s]', $value['menu_item_parent'] );
-                               $parent_nav_menu_item_setting    = $this->manager->get_setting( $parent_nav_menu_item_setting_id );
-
-                               if ( ! $parent_nav_menu_item_setting || ! ( $parent_nav_menu_item_setting instanceof WP_Customize_Nav_Menu_Item_Setting ) ) {
-                                       $this->update_status = 'error';
-                                       $this->update_error  = new WP_Error( 'unexpected_nav_menu_item_setting' );
-                                       return;
-                               }
-
-                               if ( false === $parent_nav_menu_item_setting->save() ) {
-                                       $this->update_status = 'error';
-                                       $this->update_error  = new WP_Error( 'nav_menu_item_setting_failure' );
-                                       return;
-                               }
-
-                               if ( $parent_nav_menu_item_setting->previous_post_id !== intval( $value['menu_item_parent'] ) ) {
-                                       $this->update_status = 'error';
-                                       $this->update_error  = new WP_Error( 'unexpected_previous_post_id' );
-                                       return;
-                               }
-
-                               $value['menu_item_parent'] = $parent_nav_menu_item_setting->post_id;
-                       }
-
-                       // Insert or update menu.
-                       $menu_item_data = array(
-                               'menu-item-object-id'   => $value['object_id'],
-                               'menu-item-object'      => $value['object'],
-                               'menu-item-parent-id'   => $value['menu_item_parent'],
-                               'menu-item-position'    => $value['position'],
-                               'menu-item-type'        => $value['type'],
-                               'menu-item-title'       => $value['title'],
-                               'menu-item-url'         => $value['url'],
-                               'menu-item-description' => $value['description'],
-                               'menu-item-attr-title'  => $value['attr_title'],
-                               'menu-item-target'      => $value['target'],
-                               'menu-item-classes'     => $value['classes'],
-                               'menu-item-xfn'         => $value['xfn'],
-                               'menu-item-status'      => $value['status'],
-                       );
-
-                       $r = wp_update_nav_menu_item(
-                               $value['nav_menu_term_id'],
-                               $is_placeholder ? 0 : $this->post_id,
-                               $menu_item_data
-                       );
-
-                       if ( is_wp_error( $r ) ) {
-                               $this->update_status = 'error';
-                               $this->update_error = $r;
-                       } else {
-                               if ( $is_placeholder ) {
-                                       $this->previous_post_id = $this->post_id;
-                                       $this->post_id = $r;
-                                       $this->update_status = 'inserted';
-                               } else {
-                                       $this->update_status = 'updated';
-                               }
-                       }
-               }
-
-       }
-
-       /**
-        * Export data for the JS client.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see WP_Customize_Nav_Menu_Item_Setting::update()
-        *
-        * @param array $data Additional information passed back to the 'saved' event on `wp.customize`.
-        * @return array Save response data.
-        */
-       public function amend_customize_save_response( $data ) {
-               if ( ! isset( $data['nav_menu_item_updates'] ) ) {
-                       $data['nav_menu_item_updates'] = array();
-               }
-
-               $data['nav_menu_item_updates'][] = array(
-                       'post_id'          => $this->post_id,
-                       'previous_post_id' => $this->previous_post_id,
-                       'error'            => $this->update_error ? $this->update_error->get_error_code() : null,
-                       'status'           => $this->update_status,
-               );
-               return $data;
-       }
-}
-
-/**
- * Customize Setting to represent a nav_menu.
- *
- * Subclass of WP_Customize_Setting to represent a nav_menu taxonomy term, and
- * the IDs for the nav_menu_items associated with the nav menu.
- *
- * @since 4.3.0
- *
- * @see wp_get_nav_menu_object()
- * @see WP_Customize_Setting
- */
-class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting {
-
-       const ID_PATTERN = '/^nav_menu\[(?P<id>-?\d+)\]$/';
-
-       const TAXONOMY = 'nav_menu';
-
-       const TYPE = 'nav_menu';
-
-       /**
-        * Setting type.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $type = self::TYPE;
-
-       /**
-        * Default setting value.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var array
-        *
-        * @see wp_get_nav_menu_object()
-        */
-       public $default = array(
-               'name'        => '',
-               'description' => '',
-               'parent'      => 0,
-               'auto_add'    => false,
-       );
-
-       /**
-        * Default transport.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string
-        */
-       public $transport = 'postMessage';
-
-       /**
-        * The term ID represented by this setting instance.
-        *
-        * A negative value represents a placeholder ID for a new menu not yet saved.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var int
-        */
-       public $term_id;
-
-       /**
-        * Previous (placeholder) term ID used before creating a new menu.
-        *
-        * This value will be exported to JS via the customize_save_response filter
-        * so that JavaScript can update the settings to refer to the newly-assigned
-        * term ID. This value is always negative to indicate it does not refer to
-        * a real term.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var int
-        *
-        * @see WP_Customize_Nav_Menu_Setting::update()
-        * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
-        */
-       public $previous_term_id;
-
-       /**
-        * Whether or not preview() was called.
-        *
-        * @since 4.3.0
-        * @access protected
-        * @var bool
-        */
-       protected $is_previewed = false;
-
-       /**
-        * Whether or not update() was called.
-        *
-        * @since 4.3.0
-        * @access protected
-        * @var bool
-        */
-       protected $is_updated = false;
-
-       /**
-        * Status for calling the update method, used in customize_save_response filter.
-        *
-        * When status is inserted, the placeholder term ID is stored in $previous_term_id.
-        * When status is error, the error is stored in $update_error.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var string updated|inserted|deleted|error
-        *
-        * @see WP_Customize_Nav_Menu_Setting::update()
-        * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
-        */
-       public $update_status;
-
-       /**
-        * Any error object returned by wp_update_nav_menu_object() when setting is updated.
-        *
-        * @since 4.3.0
-        * @access public
-        * @var WP_Error
-        *
-        * @see WP_Customize_Nav_Menu_Setting::update()
-        * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
-        */
-       public $update_error;
-
-       /**
-        * Constructor.
-        *
-        * Any supplied $args override class property defaults.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @param WP_Customize_Manager $manager Bootstrap Customizer instance.
-        * @param string               $id      An specific ID of the setting. Can be a
-        *                                      theme mod or option name.
-        * @param array                $args    Optional. Setting arguments.
-        *
-        * @throws Exception If $id is not valid for this setting type.
-        */
-       public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) {
-               if ( empty( $manager->nav_menus ) ) {
-                       throw new Exception( 'Expected WP_Customize_Manager::$nav_menus to be set.' );
-               }
-
-               if ( ! preg_match( self::ID_PATTERN, $id, $matches ) ) {
-                       throw new Exception( "Illegal widget setting ID: $id" );
-               }
-
-               $this->term_id = intval( $matches['id'] );
-
-               parent::__construct( $manager, $id, $args );
-       }
-
-       /**
-        * Get the instance data for a given widget setting.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see wp_get_nav_menu_object()
-        *
-        * @return array Instance data.
-        */
-       public function value() {
-               if ( $this->is_previewed && $this->_previewed_blog_id === get_current_blog_id() ) {
-                       $undefined  = new stdClass(); // Symbol.
-                       $post_value = $this->post_value( $undefined );
-
-                       if ( $undefined === $post_value ) {
-                               $value = $this->_original_value;
-                       } else {
-                               $value = $post_value;
-                       }
-               } else {
-                       $value = false;
-
-                       // Note that a term_id of less than one indicates a nav_menu not yet inserted.
-                       if ( $this->term_id > 0 ) {
-                               $term = wp_get_nav_menu_object( $this->term_id );
-
-                               if ( $term ) {
-                                       $value = wp_array_slice_assoc( (array) $term, array_keys( $this->default ) );
-
-                                       $nav_menu_options  = (array) get_option( 'nav_menu_options', array() );
-                                       $value['auto_add'] = false;
-
-                                       if ( isset( $nav_menu_options['auto_add'] ) && is_array( $nav_menu_options['auto_add'] ) ) {
-                                               $value['auto_add'] = in_array( $term->term_id, $nav_menu_options['auto_add'] );
-                                       }
-                               }
-                       }
-
-                       if ( ! is_array( $value ) ) {
-                               $value = $this->default;
-                       }
-               }
-               return $value;
-       }
-
-       /**
-        * Handle previewing the setting.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see WP_Customize_Manager::post_value()
-        */
-       public function preview() {
-               if ( $this->is_previewed ) {
-                       return;
-               }
-
-               $this->is_previewed       = true;
-               $this->_original_value    = $this->value();
-               $this->_previewed_blog_id = get_current_blog_id();
-
-               add_filter( 'wp_get_nav_menus', array( $this, 'filter_wp_get_nav_menus' ), 10, 2 );
-               add_filter( 'wp_get_nav_menu_object', array( $this, 'filter_wp_get_nav_menu_object' ), 10, 2 );
-               add_filter( 'default_option_nav_menu_options', array( $this, 'filter_nav_menu_options' ) );
-               add_filter( 'option_nav_menu_options', array( $this, 'filter_nav_menu_options' ) );
-       }
-
-       /**
-        * Filter the wp_get_nav_menus() result to ensure the inserted menu object is included, and the deleted one is removed.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see wp_get_nav_menus()
-        *
-        * @param array $menus An array of menu objects.
-        * @param array $args  An array of arguments used to retrieve menu objects.
-        * @return array
-        */
-       public function filter_wp_get_nav_menus( $menus, $args ) {
-               if ( get_current_blog_id() !== $this->_previewed_blog_id ) {
-                       return $menus;
-               }
-
-               $setting_value = $this->value();
-               $is_delete = ( false === $setting_value );
-               $index = -1;
-
-               // Find the existing menu item's position in the list.
-               foreach ( $menus as $i => $menu ) {
-                       if ( (int) $this->term_id === (int) $menu->term_id || (int) $this->previous_term_id === (int) $menu->term_id ) {
-                               $index = $i;
-                               break;
-                       }
-               }
-
-               if ( $is_delete ) {
-                       // Handle deleted menu by removing it from the list.
-                       if ( -1 !== $index ) {
-                               array_splice( $menus, $index, 1 );
-                       }
-               } else {
-                       // Handle menus being updated or inserted.
-                       $menu_obj = (object) array_merge( array(
-                               'term_id'          => $this->term_id,
-                               'term_taxonomy_id' => $this->term_id,
-                               'slug'             => sanitize_title( $setting_value['name'] ),
-                               'count'            => 0,
-                               'term_group'       => 0,
-                               'taxonomy'         => self::TAXONOMY,
-                               'filter'           => 'raw',
-                       ), $setting_value );
-
-                       array_splice( $menus, $index, ( -1 === $index ? 0 : 1 ), array( $menu_obj ) );
-               }
-
-               // Make sure the menu objects get re-sorted after an update/insert.
-               if ( ! $is_delete && ! empty( $args['orderby'] ) ) {
-                       $this->_current_menus_sort_orderby = $args['orderby'];
-                       usort( $menus, array( $this, '_sort_menus_by_orderby' ) );
-               }
-               // @todo add support for $args['hide_empty'] === true
-
-               return $menus;
-       }
-
-       /**
-        * Temporary non-closure passing of orderby value to function.
-        *
-        * @since 4.3.0
-        * @access protected
-        * @var string
-        *
-        * @see WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus()
-        * @see WP_Customize_Nav_Menu_Setting::_sort_menus_by_orderby()
-        */
-       protected $_current_menus_sort_orderby;
-
-       /**
-        * Sort menu objects by the class-supplied orderby property.
-        *
-        * This is a workaround for a lack of closures.
-        *
-        * @since 4.3.0
-        * @access protected
-        * @param object $menu1
-        * @param object $menu2
-        * @return int
-        *
-        * @see WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus()
-        */
-       protected function _sort_menus_by_orderby( $menu1, $menu2 ) {
-               $key = $this->_current_menus_sort_orderby;
-               return strcmp( $menu1->$key, $menu2->$key );
-       }
-
-       /**
-        * Filter the wp_get_nav_menu_object() result to supply the previewed menu object.
-        *
-        * Requesting a nav_menu object by anything but ID is not supported.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see wp_get_nav_menu_object()
-        *
-        * @param object|null $menu_obj Object returned by wp_get_nav_menu_object().
-        * @param string      $menu_id  ID of the nav_menu term. Requests by slug or name will be ignored.
-        * @return object|null
-        */
-       public function filter_wp_get_nav_menu_object( $menu_obj, $menu_id ) {
-               $ok = (
-                       get_current_blog_id() === $this->_previewed_blog_id
-                       &&
-                       is_int( $menu_id )
-                       &&
-                       $menu_id === $this->term_id
-               );
-               if ( ! $ok ) {
-                       return $menu_obj;
-               }
-
-               $setting_value = $this->value();
-
-               // Handle deleted menus.
-               if ( false === $setting_value ) {
-                       return false;
-               }
-
-               // Handle sanitization failure by preventing short-circuiting.
-               if ( null === $setting_value ) {
-                       return $menu_obj;
-               }
-
-               $menu_obj = (object) array_merge( array(
-                               'term_id'          => $this->term_id,
-                               'term_taxonomy_id' => $this->term_id,
-                               'slug'             => sanitize_title( $setting_value['name'] ),
-                               'count'            => 0,
-                               'term_group'       => 0,
-                               'taxonomy'         => self::TAXONOMY,
-                               'filter'           => 'raw',
-                       ), $setting_value );
-
-               return $menu_obj;
-       }
-
-       /**
-        * Filter the nav_menu_options option to include this menu's auto_add preference.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @param array $nav_menu_options Nav menu options including auto_add.
-        * @return array (Kaybe) modified nav menu options.
-        */
-       public function filter_nav_menu_options( $nav_menu_options ) {
-               if ( $this->_previewed_blog_id !== get_current_blog_id() ) {
-                       return $nav_menu_options;
-               }
-
-               $menu = $this->value();
-               $nav_menu_options = $this->filter_nav_menu_options_value(
-                       $nav_menu_options,
-                       $this->term_id,
-                       false === $menu ? false : $menu['auto_add']
-               );
-
-               return $nav_menu_options;
-       }
-
-       /**
-        * Sanitize an input.
-        *
-        * Note that parent::sanitize() erroneously does wp_unslash() on $value, but
-        * we remove that in this override.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @param array $value The value to sanitize.
-        * @return array|false|null Null if an input isn't valid. False if it is marked for deletion.
-        *                          Otherwise the sanitized value.
-        */
-       public function sanitize( $value ) {
-               // Menu is marked for deletion.
-               if ( false === $value ) {
-                       return $value;
-               }
-
-               // Invalid.
-               if ( ! is_array( $value ) ) {
-                       return null;
-               }
-
-               $default = array(
-                       'name'        => '',
-                       'description' => '',
-                       'parent'      => 0,
-                       'auto_add'    => false,
-               );
-               $value = array_merge( $default, $value );
-               $value = wp_array_slice_assoc( $value, array_keys( $default ) );
-
-               $value['name']        = trim( esc_html( $value['name'] ) ); // This sanitization code is used in wp-admin/nav-menus.php.
-               $value['description'] = sanitize_text_field( $value['description'] );
-               $value['parent']      = max( 0, intval( $value['parent'] ) );
-               $value['auto_add']    = ! empty( $value['auto_add'] );
-
-               if ( '' === $value['name'] ) {
-                       $value['name'] = _x( '(unnamed)', 'Missing menu name.' );
-               }
-
-               /** This filter is documented in wp-includes/class-wp-customize-setting.php */
-               return apply_filters( "customize_sanitize_{$this->id}", $value, $this );
-       }
-
-       /**
-        * Storage for data to be sent back to client in customize_save_response filter.
-        *
-        * @access protected
-        * @since 4.3.0
-        * @var array
-        *
-        * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
-        */
-       protected $_widget_nav_menu_updates = array();
-
-       /**
-        * Create/update the nav_menu term for this setting.
-        *
-        * Any created menus will have their assigned term IDs exported to the client
-        * via the customize_save_response filter. Likewise, any errors will be exported
-        * to the client via the customize_save_response() filter.
-        *
-        * To delete a menu, the client can send false as the value.
-        *
-        * @since 4.3.0
-        * @access protected
-        *
-        * @see wp_update_nav_menu_object()
-        *
-        * @param array|false $value {
-        *     The value to update. Note that slug cannot be updated via wp_update_nav_menu_object().
-        *     If false, then the menu will be deleted entirely.
-        *
-        *     @type string $name        The name of the menu to save.
-        *     @type string $description The term description. Default empty string.
-        *     @type int    $parent      The id of the parent term. Default 0.
-        *     @type bool   $auto_add    Whether pages will auto_add to this menu. Default false.
-        * }
-        * @return null|void
-        */
-       protected function update( $value ) {
-               if ( $this->is_updated ) {
-                       return;
-               }
-
-               $this->is_updated = true;
-               $is_placeholder   = ( $this->term_id < 0 );
-               $is_delete        = ( false === $value );
-
-               add_filter( 'customize_save_response', array( $this, 'amend_customize_save_response' ) );
-
-               $auto_add = null;
-               if ( $is_delete ) {
-                       // If the current setting term is a placeholder, a delete request is a no-op.
-                       if ( $is_placeholder ) {
-                               $this->update_status = 'deleted';
-                       } else {
-                               $r = wp_delete_nav_menu( $this->term_id );
-
-                               if ( is_wp_error( $r ) ) {
-                                       $this->update_status = 'error';
-                                       $this->update_error  = $r;
-                               } else {
-                                       $this->update_status = 'deleted';
-                                       $auto_add = false;
-                               }
-                       }
-               } else {
-                       // Insert or update menu.
-                       $menu_data = wp_array_slice_assoc( $value, array( 'description', 'parent' ) );
-                       $menu_data['menu-name'] = $value['name'];
-
-                       $menu_id = $is_placeholder ? 0 : $this->term_id;
-                       $r = wp_update_nav_menu_object( $menu_id, $menu_data );
-                       $original_name = $menu_data['menu-name'];
-                       $name_conflict_suffix = 1;
-                       while ( is_wp_error( $r ) && 'menu_exists' === $r->get_error_code() ) {
-                               $name_conflict_suffix += 1;
-                               /* translators: 1: original menu name, 2: duplicate count */
-                               $menu_data['menu-name'] = sprintf( __( '%1$s (%2$d)' ), $original_name, $name_conflict_suffix );
-                               $r = wp_update_nav_menu_object( $menu_id, $menu_data );
-                       }
-
-                       if ( is_wp_error( $r ) ) {
-                               $this->update_status = 'error';
-                               $this->update_error  = $r;
-                       } else {
-                               if ( $is_placeholder ) {
-                                       $this->previous_term_id = $this->term_id;
-                                       $this->term_id          = $r;
-                                       $this->update_status    = 'inserted';
-                               } else {
-                                       $this->update_status = 'updated';
-                               }
-
-                               $auto_add = $value['auto_add'];
-                       }
-               }
-
-               if ( null !== $auto_add ) {
-                       $nav_menu_options = $this->filter_nav_menu_options_value(
-                               (array) get_option( 'nav_menu_options', array() ),
-                               $this->term_id,
-                               $auto_add
-                       );
-                       update_option( 'nav_menu_options', $nav_menu_options );
-               }
-
-               if ( 'inserted' === $this->update_status ) {
-                       // Make sure that new menus assigned to nav menu locations use their new IDs.
-                       foreach ( $this->manager->settings() as $setting ) {
-                               if ( ! preg_match( '/^nav_menu_locations\[/', $setting->id ) ) {
-                                       continue;
-                               }
-
-                               $post_value = $setting->post_value( null );
-                               if ( ! is_null( $post_value ) && $this->previous_term_id === intval( $post_value ) ) {
-                                       $this->manager->set_post_value( $setting->id, $this->term_id );
-                                       $setting->save();
-                               }
-                       }
-
-                       // Make sure that any nav_menu widgets referencing the placeholder nav menu get updated and sent back to client.
-                       foreach ( array_keys( $this->manager->unsanitized_post_values() ) as $setting_id ) {
-                               $nav_menu_widget_setting = $this->manager->get_setting( $setting_id );
-                               if ( ! $nav_menu_widget_setting || ! preg_match( '/^widget_nav_menu\[/', $nav_menu_widget_setting->id ) ) {
-                                       continue;
-                               }
-
-                               $widget_instance = $nav_menu_widget_setting->post_value(); // Note that this calls WP_Customize_Widgets::sanitize_widget_instance().
-                               if ( empty( $widget_instance['nav_menu'] ) || intval( $widget_instance['nav_menu'] ) !== $this->previous_term_id ) {
-                                       continue;
-                               }
-
-                               $widget_instance['nav_menu'] = $this->term_id;
-                               $updated_widget_instance = $this->manager->widgets->sanitize_widget_js_instance( $widget_instance );
-                               $this->manager->set_post_value( $nav_menu_widget_setting->id, $updated_widget_instance );
-                               $nav_menu_widget_setting->save();
-
-                               $this->_widget_nav_menu_updates[ $nav_menu_widget_setting->id ] = $updated_widget_instance;
-                       }
-               }
-       }
-
-       /**
-        * Updates a nav_menu_options array.
-        *
-        * @since 4.3.0
-        * @access protected
-        *
-        * @see WP_Customize_Nav_Menu_Setting::filter_nav_menu_options()
-        * @see WP_Customize_Nav_Menu_Setting::update()
-        *
-        * @param array $nav_menu_options Array as returned by get_option( 'nav_menu_options' ).
-        * @param int   $menu_id          The term ID for the given menu.
-        * @param bool  $auto_add         Whether to auto-add or not.
-        * @return array (Maybe) modified nav_menu_otions array.
-        */
-       protected function filter_nav_menu_options_value( $nav_menu_options, $menu_id, $auto_add ) {
-               $nav_menu_options = (array) $nav_menu_options;
-               if ( ! isset( $nav_menu_options['auto_add'] ) ) {
-                       $nav_menu_options['auto_add'] = array();
-               }
-
-               $i = array_search( $menu_id, $nav_menu_options['auto_add'] );
-               if ( $auto_add && false === $i ) {
-                       array_push( $nav_menu_options['auto_add'], $this->term_id );
-               } elseif ( ! $auto_add && false !== $i ) {
-                       array_splice( $nav_menu_options['auto_add'], $i, 1 );
-               }
-
-               return $nav_menu_options;
-       }
-
-       /**
-        * Export data for the JS client.
-        *
-        * @since 4.3.0
-        * @access public
-        *
-        * @see WP_Customize_Nav_Menu_Setting::update()
-        *
-        * @param array $data Additional information passed back to the 'saved' event on `wp.customize`.
-        * @return array Export data.
-        */
-       public function amend_customize_save_response( $data ) {
-               if ( ! isset( $data['nav_menu_updates'] ) ) {
-                       $data['nav_menu_updates'] = array();
-               }
-               if ( ! isset( $data['widget_nav_menu_updates'] ) ) {
-                       $data['widget_nav_menu_updates'] = array();
-               }
-
-               $data['nav_menu_updates'][] = array(
-                       'term_id'          => $this->term_id,
-                       'previous_term_id' => $this->previous_term_id,
-                       'error'            => $this->update_error ? $this->update_error->get_error_code() : null,
-                       'status'           => $this->update_status,
-                       'saved_value'      => 'deleted' === $this->update_status ? null : $this->value(),
-               );
-
-               $data['widget_nav_menu_updates'] = array_merge(
-                       $data['widget_nav_menu_updates'],
-                       $this->_widget_nav_menu_updates
-               );
-               $this->_widget_nav_menu_updates = array();
-
-               return $data;
-       }
-}
+/** WP_Customize_Nav_Menu_Setting class */
+require_once( ABSPATH . WPINC . '/customize/class-wp-customize-nav-menu-setting.php' );
index 8569228e4670eafd9d92a16bb86b30cf0bd30ef7..7639d5091cb0ecb9d719aceaea860ce7981b11e6 100644 (file)
@@ -164,8 +164,8 @@ final class WP_Customize_Widgets {
         * @since 4.2.0
         * @access public
         *
-        * @param false|array $setting_args The arguments to the WP_Customize_Setting constructor.
-        * @param string      $setting_id   ID for dynamic setting, usually coming from `$_POST['customized']`.
+        * @param false|array $args       The arguments to the WP_Customize_Setting constructor.
+        * @param string      $setting_id ID for dynamic setting, usually coming from `$_POST['customized']`.
         * @return false|array Setting arguments, false otherwise.
         */
        public function filter_customize_dynamic_setting_args( $args, $setting_id ) {
@@ -355,9 +355,11 @@ final class WP_Customize_Widgets {
                }
 
                $this->manager->add_panel( 'widgets', array(
-                       'title'       => __( 'Widgets' ),
-                       'description' => __( 'Widgets are independent sections of content that can be placed into widgetized areas provided by your theme (commonly called sidebars).' ),
-                       'priority'    => 110,
+                       'type'            => 'widgets',
+                       'title'           => __( 'Widgets' ),
+                       'description'     => __( 'Widgets are independent sections of content that can be placed into widgetized areas provided by your theme (commonly called sidebars).' ),
+                       'priority'        => 110,
+                       'active_callback' => array( $this, 'is_panel_active' ),
                ) );
 
                foreach ( $sidebars_widgets as $sidebar_id => $sidebar_widget_ids ) {
@@ -365,7 +367,7 @@ final class WP_Customize_Widgets {
                                $sidebar_widget_ids = array();
                        }
 
-                       $is_registered_sidebar = isset( $wp_registered_sidebars[ $sidebar_id ] );
+                       $is_registered_sidebar = is_registered_sidebar( $sidebar_id );
                        $is_inactive_widgets   = ( 'wp_inactive_widgets' === $sidebar_id );
                        $is_active_sidebar     = ( $is_registered_sidebar && ! $is_inactive_widgets );
 
@@ -454,6 +456,22 @@ final class WP_Customize_Widgets {
                add_filter( 'sidebars_widgets', array( $this, 'preview_sidebars_widgets' ), 1 );
        }
 
+       /**
+        * Return whether the widgets panel is active, based on whether there are sidebars registered.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @see WP_Customize_Panel::$active_callback
+        *
+        * @global array $wp_registered_sidebars
+        * @return bool Active.
+        */
+       public function is_panel_active() {
+               global $wp_registered_sidebars;
+               return ! empty( $wp_registered_sidebars );
+       }
+
        /**
         * Covert a widget_id into its corresponding Customizer setting ID (option name).
         *
@@ -655,6 +673,11 @@ final class WP_Customize_Widgets {
                                'error'            => __( 'An error has occurred. Please reload the page and try again.' ),
                                'widgetMovedUp'    => __( 'Widget moved up' ),
                                'widgetMovedDown'  => __( 'Widget moved down' ),
+                               'noAreasRendered'  => __( 'There are no widget areas currently rendered in the preview. Navigate in the preview to a template that makes use of a widget area in order to access its widgets here.' ),
+                               'reorderModeOn'    => __( 'Reorder mode enabled' ),
+                               'reorderModeOff'   => __( 'Reorder mode closed' ),
+                               'reorderLabelOn'   => esc_attr__( 'Reorder widgets' ),
+                               'reorderLabelOff'  => esc_attr__( 'Close reorder mode' ),
                        ),
                        'tpl' => array(
                                'widgetReorderNav' => $widget_reorder_nav_tpl,
@@ -898,19 +921,45 @@ final class WP_Customize_Widgets {
         * @return string Widget control form HTML markup.
         */
        public function get_widget_control( $args ) {
+               $args[0]['before_form'] = '<div class="form">';
+               $args[0]['after_form'] = '</div><!-- .form -->';
+               $args[0]['before_widget_content'] = '<div class="widget-content">';
+               $args[0]['after_widget_content'] = '</div><!-- .widget-content -->';
                ob_start();
-
                call_user_func_array( 'wp_widget_control', $args );
-               $replacements = array(
-                       '<form method="post">' => '<div class="form">',
-                       '</form>' => '</div><!-- .form -->',
-               );
-
                $control_tpl = ob_get_clean();
+               return $control_tpl;
+       }
 
-               $control_tpl = str_replace( array_keys( $replacements ), array_values( $replacements ), $control_tpl );
+       /**
+        * Get the widget control markup parts.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $args Widget control arguments.
+        * @return array {
+        *     @type string $control  Markup for widget control wrapping form.
+        *     @type string $content  The contents of the widget form itself.
+        * }
+        */
+       public function get_widget_control_parts( $args ) {
+               $args[0]['before_widget_content'] = '<div class="widget-content">';
+               $args[0]['after_widget_content'] = '</div><!-- .widget-content -->';
+               $control_markup = $this->get_widget_control( $args );
+
+               $content_start_pos = strpos( $control_markup, $args[0]['before_widget_content'] );
+               $content_end_pos = strrpos( $control_markup, $args[0]['after_widget_content'] );
+
+               $control = substr( $control_markup, 0, $content_start_pos + strlen( $args[0]['before_widget_content'] ) );
+               $control .= substr( $control_markup, $content_end_pos );
+               $content = trim( substr(
+                       $control_markup,
+                       $content_start_pos + strlen( $args[0]['before_widget_content'] ),
+                       $content_end_pos - $content_start_pos - strlen( $args[0]['before_widget_content'] )
+               ) );
 
-               return $control_tpl;
+               return compact( 'control', 'content' );
        }
 
        /**
@@ -1076,14 +1125,12 @@ final class WP_Customize_Widgets {
         * @since 3.9.0
         * @access public
         *
-        * @global array $wp_registered_sidebars
-        *
         * @param bool   $is_active  Whether the sidebar is active.
         * @param string $sidebar_id Sidebar ID.
         * @return bool
         */
        public function tally_sidebars_via_is_active_sidebar_calls( $is_active, $sidebar_id ) {
-               if ( isset( $GLOBALS['wp_registered_sidebars'][$sidebar_id] ) ) {
+               if ( is_registered_sidebar( $sidebar_id ) ) {
                        $this->rendered_sidebars[] = $sidebar_id;
                }
                /*
@@ -1104,14 +1151,12 @@ final class WP_Customize_Widgets {
         * @since 3.9.0
         * @access public
         *
-        * @global array $wp_registered_sidebars
-        *
         * @param bool   $has_widgets Whether the current sidebar has widgets.
         * @param string $sidebar_id  Sidebar ID.
         * @return bool
         */
        public function tally_sidebars_via_dynamic_sidebar_calls( $has_widgets, $sidebar_id ) {
-               if ( isset( $GLOBALS['wp_registered_sidebars'][$sidebar_id] ) ) {
+               if ( is_registered_sidebar( $sidebar_id ) ) {
                        $this->rendered_sidebars[] = $sidebar_id;
                }
 
@@ -1335,7 +1380,7 @@ final class WP_Customize_Widgets {
                 * in place from WP_Customize_Setting::preview() will use this value
                 * instead of the default widget instance value (an empty array).
                 */
-               $this->manager->set_post_value( $setting_id, $instance );
+               $this->manager->set_post_value( $setting_id, $this->sanitize_widget_js_instance( $instance ) );
 
                // Obtain the widget control with the updated instance in place.
                ob_start();
index a016df52693b76033391407cca39cc9f9541e599..a6504d4ea95f079bbe737302d6cc7b5807b02954 100644 (file)
@@ -48,10 +48,10 @@ final class _WP_Editors {
         *     @type int        $textarea_rows     Number rows in the editor textarea. Default 20.
         *     @type string|int $tabindex          Tabindex value to use. Default empty.
         *     @type string     $tabfocus_elements The previous and next element ID to move the focus to
-        *                                         when pressing the Tab key in TinyMCE. Defualt ':prev,:next'.
+        *                                         when pressing the Tab key in TinyMCE. Default ':prev,:next'.
         *     @type string     $editor_css        Intended for extra styles for both Visual and Text editors.
         *                                         Should include `<style>` tags, and can use "scoped". Default empty.
-        *     @type string     $editor_class      Extra classes to add to the editor textarea elemen. Default empty.
+        *     @type string     $editor_class      Extra classes to add to the editor textarea element. Default empty.
         *     @type bool       $teeny             Whether to output the minimal editor config. Examples include
         *                                         Press This and the Comment editor. Default false.
         *     @type bool       $dfw               Deprecated in 4.1. Since 4.3 used only to enqueue wp-fullscreen-stub.js for backwards compatibility.
@@ -147,7 +147,7 @@ final class _WP_Editors {
                $editor_class = ' class="' . trim( esc_attr( $set['editor_class'] ) . ' wp-editor-area' ) . '"';
                $tabindex = $set['tabindex'] ? ' tabindex="' . (int) $set['tabindex'] . '"' : '';
                $default_editor = 'html';
-               $toolbar = $buttons = $autocomplete = '';
+               $buttons = $autocomplete = '';
                $editor_id_attr = esc_attr( $editor_id );
 
                if ( $set['drag_drop_upload'] ) {
@@ -297,8 +297,6 @@ final class _WP_Editors {
        public static function editor_settings($editor_id, $set) {
                global $wp_version, $tinymce_version;
 
-               $first_run = false;
-
                if ( empty(self::$first_init) ) {
                        if ( is_admin() ) {
                                add_action( 'admin_print_footer_scripts', array( __CLASS__, 'editor_js' ), 50 );
@@ -351,7 +349,6 @@ final class _WP_Editors {
 
                                /** This filter is documented in wp-admin/includes/media.php */
                                $no_captions = (bool) apply_filters( 'disable_captions', '' );
-                               $first_run = true;
                                $ext_plugins = '';
 
                                if ( $set['teeny'] ) {
@@ -404,7 +401,8 @@ final class _WP_Editors {
                                                'wplink',
                                                'wpdialogs',
                                                'wptextpattern',
-                                               'wpview'
+                                               'wpview',
+                                               'wpembed',
                                        );
 
                                        if ( ! self::$has_medialib ) {
@@ -545,6 +543,7 @@ final class _WP_Editors {
                                        'wpeditimage_disable_captions' => $no_captions,
                                        'wpeditimage_html5_captions' => current_theme_supports( 'html5', 'caption' ),
                                        'plugins' => implode( ',', $plugins ),
+                                       'wp_lang_attr' => get_bloginfo( 'language' )
                                );
 
                                if ( ! empty( $mce_external_plugins ) ) {
@@ -573,7 +572,7 @@ final class _WP_Editors {
                                 *
                                 * @since 2.1.0
                                 *
-                                * @param array $stylesheets Comma-delimited list of stylesheets.
+                                * @param string $stylesheets Comma-delimited list of stylesheets.
                                 */
                                $mce_css = trim( apply_filters( 'mce_css', implode( ',', $mce_css ) ), ' ,' );
 
@@ -596,10 +595,12 @@ final class _WP_Editors {
                        } else {
                                $mce_buttons = array( 'bold', 'italic', 'strikethrough', 'bullist', 'numlist', 'blockquote', 'hr', 'alignleft', 'aligncenter', 'alignright', 'link', 'unlink', 'wp_more', 'spellchecker' );
 
-                               if ( $set['_content_editor_dfw'] ) {
-                                       $mce_buttons[] = 'dfw';
-                               } else {
-                                       $mce_buttons[] = 'fullscreen';
+                               if ( ! wp_is_mobile() ) {
+                                       if ( $set['_content_editor_dfw'] ) {
+                                               $mce_buttons[] = 'dfw';
+                                       } else {
+                                               $mce_buttons[] = 'fullscreen';
+                                       }
                                }
 
                                $mce_buttons[] = 'wp_adv';
@@ -927,7 +928,7 @@ final class _WP_Editors {
 
                        'Color' => __( 'Color' ),
                        'Custom color' => __( 'Custom color' ),
-                       'Custom...' => _x( 'Custom...', 'label for custom color' ),
+                       'Custom...' => _x( 'Custom...', 'label for custom color' ), // no ellipsis
                        'No color' => __( 'No color' ),
 
                        // Spelling, search/replace plugins
@@ -1029,7 +1030,7 @@ final class _WP_Editors {
                        'Toolbar Toggle' => __( 'Toolbar Toggle' ),
                        'Insert Read More tag' => __( 'Insert Read More tag' ),
                        'Insert Page Break tag' => __( 'Insert Page Break tag' ),
-                       'Read more...' => __( 'Read more...' ), // Title on the placeholder inside the editor
+                       'Read more...' => __( 'Read more...' ), // Title on the placeholder inside the editor (no ellipsis)
                        'Distraction-free writing mode' => __( 'Distraction-free writing mode' ),
                        'No alignment' => __( 'No alignment' ), // Tooltip for the 'alignnone' button in the image toolbar
                        'Remove' => __( 'Remove' ), // Tooltip for the 'remove' button in the image toolbar
@@ -1410,7 +1411,7 @@ final class _WP_Editors {
                                        <label><span><?php _e( 'Link Text' ); ?></span><input id="wp-link-text" type="text" /></label>
                                </div>
                                <div class="link-target">
-                                       <label><span>&nbsp;</span><input type="checkbox" id="wp-link-target" /> <?php _e( 'Open link in a new window/tab' ); ?></label>
+                                       <label><span>&nbsp;</span><input type="checkbox" id="wp-link-target" /> <?php _e( 'Open link in a new tab' ); ?></label>
                                </div>
                        </div>
                        <p class="howto"><a href="#" id="wp-link-search-toggle"><?php _e( 'Or link to existing content' ); ?></a></p>
index 74051970948d3b2e790d88f7f313ed8a39808f2d..730fc4fc910481cffe63334ca20f7ed548b61803 100644 (file)
@@ -35,6 +35,7 @@ class WP_Embed {
 
                // After a post is saved, cache oEmbed items via AJAX
                add_action( 'edit_form_advanced', array( $this, 'maybe_run_ajax_cache' ) );
+               add_action( 'edit_page_form', array( $this, 'maybe_run_ajax_cache' ) );
        }
 
        /**
@@ -232,12 +233,13 @@ class WP_Embed {
                         * Filter whether to inspect the given URL for discoverable link tags.
                         *
                         * @since 2.9.0
+                        * @since 4.4.0 The default value changed to true.
                         *
                         * @see WP_oEmbed::discover()
                         *
-                        * @param bool $enable Whether to enable `<link>` tag discovery. Default false.
+                        * @param bool $enable Whether to enable `<link>` tag discovery. Default true.
                         */
-                       $attr['discover'] = ( apply_filters( 'embed_oembed_discover', false ) && author_can( $post_ID, 'unfiltered_html' ) );
+                       $attr['discover'] = ( apply_filters( 'embed_oembed_discover', true ) );
 
                        // Use oEmbed to get the HTML
                        $html = wp_oembed_get( $url, $attr );
@@ -271,7 +273,7 @@ class WP_Embed {
                if ( empty($post_metas) )
                        return;
 
-               foreach( $post_metas as $post_meta_key ) {
+               foreach ( $post_metas as $post_meta_key ) {
                        if ( '_oembed_' == substr( $post_meta_key, 0, 8 ) )
                                delete_post_meta( $post_ID, $post_meta_key );
                }
diff --git a/wp-includes/class-wp-http-cookie.php b/wp-includes/class-wp-http-cookie.php
new file mode 100644 (file)
index 0000000..95148ef
--- /dev/null
@@ -0,0 +1,219 @@
+<?php
+/**
+ * HTTP API: WP_Http_Cookie class
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to encapsulate a single cookie object for internal use.
+ *
+ * Returned cookies are represented using this class, and when cookies are set, if they are not
+ * already a WP_Http_Cookie() object, then they are turned into one.
+ *
+ * @todo The WordPress convention is to use underscores instead of camelCase for function and method
+ * names. Need to switch to use underscores instead for the methods.
+ *
+ * @since 2.8.0
+ */
+class WP_Http_Cookie {
+
+       /**
+        * Cookie name.
+        *
+        * @since 2.8.0
+        * @var string
+        */
+       public $name;
+
+       /**
+        * Cookie value.
+        *
+        * @since 2.8.0
+        * @var string
+        */
+       public $value;
+
+       /**
+        * When the cookie expires.
+        *
+        * @since 2.8.0
+        * @var string
+        */
+       public $expires;
+
+       /**
+        * Cookie URL path.
+        *
+        * @since 2.8.0
+        * @var string
+        */
+       public $path;
+
+       /**
+        * Cookie Domain.
+        *
+        * @since 2.8.0
+        * @var string
+        */
+       public $domain;
+
+       /**
+        * Sets up this cookie object.
+        *
+        * The parameter $data should be either an associative array containing the indices names below
+        * or a header string detailing it.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param string|array $data {
+        *     Raw cookie data as header string or data array.
+        *
+        *     @type string     $name    Cookie name.
+        *     @type mixed      $value   Value. Should NOT already be urlencoded.
+        *     @type string|int $expires Optional. Unix timestamp or formatted date. Default null.
+        *     @type string     $path    Optional. Path. Default '/'.
+        *     @type string     $domain  Optional. Domain. Default host of parsed $requested_url.
+        *     @type int        $port    Optional. Port. Default null.
+        * }
+        * @param string       $requested_url The URL which the cookie was set on, used for default $domain
+        *                                    and $port values.
+        */
+       public function __construct( $data, $requested_url = '' ) {
+               if ( $requested_url )
+                       $arrURL = @parse_url( $requested_url );
+               if ( isset( $arrURL['host'] ) )
+                       $this->domain = $arrURL['host'];
+               $this->path = isset( $arrURL['path'] ) ? $arrURL['path'] : '/';
+               if (  '/' != substr( $this->path, -1 ) )
+                       $this->path = dirname( $this->path ) . '/';
+
+               if ( is_string( $data ) ) {
+                       // Assume it's a header string direct from a previous request.
+                       $pairs = explode( ';', $data );
+
+                       // Special handling for first pair; name=value. Also be careful of "=" in value.
+                       $name  = trim( substr( $pairs[0], 0, strpos( $pairs[0], '=' ) ) );
+                       $value = substr( $pairs[0], strpos( $pairs[0], '=' ) + 1 );
+                       $this->name  = $name;
+                       $this->value = urldecode( $value );
+
+                       // Removes name=value from items.
+                       array_shift( $pairs );
+
+                       // Set everything else as a property.
+                       foreach ( $pairs as $pair ) {
+                               $pair = rtrim($pair);
+
+                               // Handle the cookie ending in ; which results in a empty final pair.
+                               if ( empty($pair) )
+                                       continue;
+
+                               list( $key, $val ) = strpos( $pair, '=' ) ? explode( '=', $pair ) : array( $pair, '' );
+                               $key = strtolower( trim( $key ) );
+                               if ( 'expires' == $key )
+                                       $val = strtotime( $val );
+                               $this->$key = $val;
+                       }
+               } else {
+                       if ( !isset( $data['name'] ) )
+                               return;
+
+                       // Set properties based directly on parameters.
+                       foreach ( array( 'name', 'value', 'path', 'domain', 'port' ) as $field ) {
+                               if ( isset( $data[ $field ] ) )
+                                       $this->$field = $data[ $field ];
+                       }
+
+                       if ( isset( $data['expires'] ) )
+                               $this->expires = is_int( $data['expires'] ) ? $data['expires'] : strtotime( $data['expires'] );
+                       else
+                               $this->expires = null;
+               }
+       }
+
+       /**
+        * Confirms that it's OK to send this cookie to the URL checked against.
+        *
+        * Decision is based on RFC 2109/2965, so look there for details on validity.
+        *
+        * @access public
+        * @since 2.8.0
+        *
+        * @param string $url URL you intend to send this cookie to
+        * @return bool true if allowed, false otherwise.
+        */
+       public function test( $url ) {
+               if ( is_null( $this->name ) )
+                       return false;
+
+               // Expires - if expired then nothing else matters.
+               if ( isset( $this->expires ) && time() > $this->expires )
+                       return false;
+
+               // Get details on the URL we're thinking about sending to.
+               $url = parse_url( $url );
+               $url['port'] = isset( $url['port'] ) ? $url['port'] : ( 'https' == $url['scheme'] ? 443 : 80 );
+               $url['path'] = isset( $url['path'] ) ? $url['path'] : '/';
+
+               // Values to use for comparison against the URL.
+               $path   = isset( $this->path )   ? $this->path   : '/';
+               $port   = isset( $this->port )   ? $this->port   : null;
+               $domain = isset( $this->domain ) ? strtolower( $this->domain ) : strtolower( $url['host'] );
+               if ( false === stripos( $domain, '.' ) )
+                       $domain .= '.local';
+
+               // Host - very basic check that the request URL ends with the domain restriction (minus leading dot).
+               $domain = substr( $domain, 0, 1 ) == '.' ? substr( $domain, 1 ) : $domain;
+               if ( substr( $url['host'], -strlen( $domain ) ) != $domain )
+                       return false;
+
+               // Port - supports "port-lists" in the format: "80,8000,8080".
+               if ( !empty( $port ) && !in_array( $url['port'], explode( ',', $port) ) )
+                       return false;
+
+               // Path - request path must start with path restriction.
+               if ( substr( $url['path'], 0, strlen( $path ) ) != $path )
+                       return false;
+
+               return true;
+       }
+
+       /**
+        * Convert cookie name and value back to header string.
+        *
+        * @access public
+        * @since 2.8.0
+        *
+        * @return string Header encoded cookie name and value.
+        */
+       public function getHeaderValue() {
+               if ( ! isset( $this->name ) || ! isset( $this->value ) )
+                       return '';
+
+               /**
+                * Filter the header-encoded cookie value.
+                *
+                * @since 3.4.0
+                *
+                * @param string $value The cookie value.
+                * @param string $name  The cookie name.
+                */
+               return $this->name . '=' . apply_filters( 'wp_http_cookie_value', $this->value, $this->name );
+       }
+
+       /**
+        * Retrieve cookie header for usage in the rest of the WordPress HTTP API.
+        *
+        * @access public
+        * @since 2.8.0
+        *
+        * @return string
+        */
+       public function getFullHeader() {
+               return 'Cookie: ' . $this->getHeaderValue();
+       }
+}
diff --git a/wp-includes/class-wp-http-curl.php b/wp-includes/class-wp-http-curl.php
new file mode 100644 (file)
index 0000000..d59ddec
--- /dev/null
@@ -0,0 +1,376 @@
+<?php
+/**
+ * HTTP API: WP_Http_Curl class
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to integrate Curl as an HTTP transport.
+ *
+ * HTTP request method uses Curl extension to retrieve the url.
+ *
+ * Requires the Curl extension to be installed.
+ *
+ * @since 2.7.0
+ */
+class WP_Http_Curl {
+
+       /**
+        * Temporary header storage for during requests.
+        *
+        * @since 3.2.0
+        * @access private
+        * @var string
+        */
+       private $headers = '';
+
+       /**
+        * Temporary body storage for during requests.
+        *
+        * @since 3.6.0
+        * @access private
+        * @var string
+        */
+       private $body = '';
+
+       /**
+        * The maximum amount of data to receive from the remote server.
+        *
+        * @since 3.6.0
+        * @access private
+        * @var int
+        */
+       private $max_body_length = false;
+
+       /**
+        * The file resource used for streaming to file.
+        *
+        * @since 3.6.0
+        * @access private
+        * @var resource
+        */
+       private $stream_handle = false;
+
+       /**
+        * The total bytes written in the current request.
+        *
+        * @since 4.1.0
+        * @access private
+        * @var int
+        */
+       private $bytes_written_total = 0;
+
+       /**
+        * Send a HTTP request to a URI using cURL extension.
+        *
+        * @access public
+        * @since 2.7.0
+        *
+        * @param string $url The request URL.
+        * @param string|array $args Optional. Override the defaults.
+        * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
+        */
+       public function request($url, $args = array()) {
+               $defaults = array(
+                       'method' => 'GET', 'timeout' => 5,
+                       'redirection' => 5, 'httpversion' => '1.0',
+                       'blocking' => true,
+                       'headers' => array(), 'body' => null, 'cookies' => array()
+               );
+
+               $r = wp_parse_args( $args, $defaults );
+
+               if ( isset( $r['headers']['User-Agent'] ) ) {
+                       $r['user-agent'] = $r['headers']['User-Agent'];
+                       unset( $r['headers']['User-Agent'] );
+               } elseif ( isset( $r['headers']['user-agent'] ) ) {
+                       $r['user-agent'] = $r['headers']['user-agent'];
+                       unset( $r['headers']['user-agent'] );
+               }
+
+               // Construct Cookie: header if any cookies are set.
+               WP_Http::buildCookieHeader( $r );
+
+               $handle = curl_init();
+
+               // cURL offers really easy proxy support.
+               $proxy = new WP_HTTP_Proxy();
+
+               if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) {
+
+                       curl_setopt( $handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP );
+                       curl_setopt( $handle, CURLOPT_PROXY, $proxy->host() );
+                       curl_setopt( $handle, CURLOPT_PROXYPORT, $proxy->port() );
+
+                       if ( $proxy->use_authentication() ) {
+                               curl_setopt( $handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY );
+                               curl_setopt( $handle, CURLOPT_PROXYUSERPWD, $proxy->authentication() );
+                       }
+               }
+
+               $is_local = isset($r['local']) && $r['local'];
+               $ssl_verify = isset($r['sslverify']) && $r['sslverify'];
+               if ( $is_local ) {
+                       /** This filter is documented in wp-includes/class-wp-http-streams.php */
+                       $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify );
+               } elseif ( ! $is_local ) {
+                       /** This filter is documented in wp-includes/class-wp-http-streams.php */
+                       $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify );
+               }
+
+               /*
+                * CURLOPT_TIMEOUT and CURLOPT_CONNECTTIMEOUT expect integers. Have to use ceil since.
+                * a value of 0 will allow an unlimited timeout.
+                */
+               $timeout = (int) ceil( $r['timeout'] );
+               curl_setopt( $handle, CURLOPT_CONNECTTIMEOUT, $timeout );
+               curl_setopt( $handle, CURLOPT_TIMEOUT, $timeout );
+
+               curl_setopt( $handle, CURLOPT_URL, $url);
+               curl_setopt( $handle, CURLOPT_RETURNTRANSFER, true );
+               curl_setopt( $handle, CURLOPT_SSL_VERIFYHOST, ( $ssl_verify === true ) ? 2 : false );
+               curl_setopt( $handle, CURLOPT_SSL_VERIFYPEER, $ssl_verify );
+
+               if ( $ssl_verify ) {
+                       curl_setopt( $handle, CURLOPT_CAINFO, $r['sslcertificates'] );
+               }
+
+               curl_setopt( $handle, CURLOPT_USERAGENT, $r['user-agent'] );
+
+               /*
+                * The option doesn't work with safe mode or when open_basedir is set, and there's
+                * a bug #17490 with redirected POST requests, so handle redirections outside Curl.
+                */
+               curl_setopt( $handle, CURLOPT_FOLLOWLOCATION, false );
+               if ( defined( 'CURLOPT_PROTOCOLS' ) ) // PHP 5.2.10 / cURL 7.19.4
+                       curl_setopt( $handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS );
+
+               switch ( $r['method'] ) {
+                       case 'HEAD':
+                               curl_setopt( $handle, CURLOPT_NOBODY, true );
+                               break;
+                       case 'POST':
+                               curl_setopt( $handle, CURLOPT_POST, true );
+                               curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
+                               break;
+                       case 'PUT':
+                               curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, 'PUT' );
+                               curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
+                               break;
+                       default:
+                               curl_setopt( $handle, CURLOPT_CUSTOMREQUEST, $r['method'] );
+                               if ( ! is_null( $r['body'] ) )
+                                       curl_setopt( $handle, CURLOPT_POSTFIELDS, $r['body'] );
+                               break;
+               }
+
+               if ( true === $r['blocking'] ) {
+                       curl_setopt( $handle, CURLOPT_HEADERFUNCTION, array( $this, 'stream_headers' ) );
+                       curl_setopt( $handle, CURLOPT_WRITEFUNCTION, array( $this, 'stream_body' ) );
+               }
+
+               curl_setopt( $handle, CURLOPT_HEADER, false );
+
+               if ( isset( $r['limit_response_size'] ) )
+                       $this->max_body_length = intval( $r['limit_response_size'] );
+               else
+                       $this->max_body_length = false;
+
+               // If streaming to a file open a file handle, and setup our curl streaming handler.
+               if ( $r['stream'] ) {
+                       if ( ! WP_DEBUG )
+                               $this->stream_handle = @fopen( $r['filename'], 'w+' );
+                       else
+                               $this->stream_handle = fopen( $r['filename'], 'w+' );
+                       if ( ! $this->stream_handle )
+                               return new WP_Error( 'http_request_failed', sprintf( __( 'Could not open handle for fopen() to %s' ), $r['filename'] ) );
+               } else {
+                       $this->stream_handle = false;
+               }
+
+               if ( !empty( $r['headers'] ) ) {
+                       // cURL expects full header strings in each element.
+                       $headers = array();
+                       foreach ( $r['headers'] as $name => $value ) {
+                               $headers[] = "{$name}: $value";
+                       }
+                       curl_setopt( $handle, CURLOPT_HTTPHEADER, $headers );
+               }
+
+               if ( $r['httpversion'] == '1.0' )
+                       curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 );
+               else
+                       curl_setopt( $handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1 );
+
+               /**
+                * Fires before the cURL request is executed.
+                *
+                * Cookies are not currently handled by the HTTP API. This action allows
+                * plugins to handle cookies themselves.
+                *
+                * @since 2.8.0
+                *
+                * @param resource &$handle The cURL handle returned by curl_init().
+                * @param array    $r       The HTTP request arguments.
+                * @param string   $url     The request URL.
+                */
+               do_action_ref_array( 'http_api_curl', array( &$handle, $r, $url ) );
+
+               // We don't need to return the body, so don't. Just execute request and return.
+               if ( ! $r['blocking'] ) {
+                       curl_exec( $handle );
+
+                       if ( $curl_error = curl_error( $handle ) ) {
+                               curl_close( $handle );
+                               return new WP_Error( 'http_request_failed', $curl_error );
+                       }
+                       if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ) ) ) {
+                               curl_close( $handle );
+                               return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
+                       }
+
+                       curl_close( $handle );
+                       return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
+               }
+
+               curl_exec( $handle );
+               $theHeaders = WP_Http::processHeaders( $this->headers, $url );
+               $theBody = $this->body;
+               $bytes_written_total = $this->bytes_written_total;
+
+               $this->headers = '';
+               $this->body = '';
+               $this->bytes_written_total = 0;
+
+               $curl_error = curl_errno( $handle );
+
+               // If an error occurred, or, no response.
+               if ( $curl_error || ( 0 == strlen( $theBody ) && empty( $theHeaders['headers'] ) ) ) {
+                       if ( CURLE_WRITE_ERROR /* 23 */ == $curl_error ) {
+                               if ( ! $this->max_body_length || $this->max_body_length != $bytes_written_total ) {
+                                       if ( $r['stream'] ) {
+                                               curl_close( $handle );
+                                               fclose( $this->stream_handle );
+                                               return new WP_Error( 'http_request_failed', __( 'Failed to write request to temporary file.' ) );
+                                       } else {
+                                               curl_close( $handle );
+                                               return new WP_Error( 'http_request_failed', curl_error( $handle ) );
+                                       }
+                               }
+                       } else {
+                               if ( $curl_error = curl_error( $handle ) ) {
+                                       curl_close( $handle );
+                                       return new WP_Error( 'http_request_failed', $curl_error );
+                               }
+                       }
+                       if ( in_array( curl_getinfo( $handle, CURLINFO_HTTP_CODE ), array( 301, 302 ) ) ) {
+                               curl_close( $handle );
+                               return new WP_Error( 'http_request_failed', __( 'Too many redirects.' ) );
+                       }
+               }
+
+               curl_close( $handle );
+
+               if ( $r['stream'] )
+                       fclose( $this->stream_handle );
+
+               $response = array(
+                       'headers' => $theHeaders['headers'],
+                       'body' => null,
+                       'response' => $theHeaders['response'],
+                       'cookies' => $theHeaders['cookies'],
+                       'filename' => $r['filename']
+               );
+
+               // Handle redirects.
+               if ( false !== ( $redirect_response = WP_HTTP::handle_redirects( $url, $r, $response ) ) )
+                       return $redirect_response;
+
+               if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($theHeaders['headers']) )
+                       $theBody = WP_Http_Encoding::decompress( $theBody );
+
+               $response['body'] = $theBody;
+
+               return $response;
+       }
+
+       /**
+        * Grab the headers of the cURL request
+        *
+        * Each header is sent individually to this callback, so we append to the $header property for temporary storage
+        *
+        * @since 3.2.0
+        * @access private
+        * @return int
+        */
+       private function stream_headers( $handle, $headers ) {
+               $this->headers .= $headers;
+               return strlen( $headers );
+       }
+
+       /**
+        * Grab the body of the cURL request
+        *
+        * The contents of the document are passed in chunks, so we append to the $body property for temporary storage.
+        * Returning a length shorter than the length of $data passed in will cause cURL to abort the request with CURLE_WRITE_ERROR
+        *
+        * @since 3.6.0
+        * @access private
+        * @return int
+        */
+       private function stream_body( $handle, $data ) {
+               $data_length = strlen( $data );
+
+               if ( $this->max_body_length && ( $this->bytes_written_total + $data_length ) > $this->max_body_length ) {
+                       $data_length = ( $this->max_body_length - $this->bytes_written_total );
+                       $data = substr( $data, 0, $data_length );
+               }
+
+               if ( $this->stream_handle ) {
+                       $bytes_written = fwrite( $this->stream_handle, $data );
+               } else {
+                       $this->body .= $data;
+                       $bytes_written = $data_length;
+               }
+
+               $this->bytes_written_total += $bytes_written;
+
+               // Upon event of this function returning less than strlen( $data ) curl will error with CURLE_WRITE_ERROR.
+               return $bytes_written;
+       }
+
+       /**
+        * Whether this class can be used for retrieving an URL.
+        *
+        * @static
+        * @since 2.7.0
+        *
+        * @return bool False means this class can not be used, true means it can.
+        */
+       public static function test( $args = array() ) {
+               if ( ! function_exists( 'curl_init' ) || ! function_exists( 'curl_exec' ) )
+                       return false;
+
+               $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
+
+               if ( $is_ssl ) {
+                       $curl_version = curl_version();
+                       // Check whether this cURL version support SSL requests.
+                       if ( ! (CURL_VERSION_SSL & $curl_version['features']) )
+                               return false;
+               }
+
+               /**
+                * Filter whether cURL can be used as a transport for retrieving a URL.
+                *
+                * @since 2.7.0
+                *
+                * @param bool  $use_class Whether the class can be used. Default true.
+                * @param array $args      An array of request arguments.
+                */
+               return apply_filters( 'use_curl_transport', true, $args );
+       }
+}
diff --git a/wp-includes/class-wp-http-encoding.php b/wp-includes/class-wp-http-encoding.php
new file mode 100644 (file)
index 0000000..eee8469
--- /dev/null
@@ -0,0 +1,228 @@
+<?php
+/**
+ * HTTP API: WP_Http_Encoding class
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement deflate and gzip transfer encoding support for HTTP requests.
+ *
+ * Includes RFC 1950, RFC 1951, and RFC 1952.
+ *
+ * @since 2.8.0
+ */
+class WP_Http_Encoding {
+
+       /**
+        * Compress raw string using the deflate format.
+        *
+        * Supports the RFC 1951 standard.
+        *
+        * @since 2.8.0
+        *
+        * @static
+        *
+        * @param string $raw String to compress.
+        * @param int $level Optional, default is 9. Compression level, 9 is highest.
+        * @param string $supports Optional, not used. When implemented it will choose the right compression based on what the server supports.
+        * @return string|false False on failure.
+        */
+       public static function compress( $raw, $level = 9, $supports = null ) {
+               return gzdeflate( $raw, $level );
+       }
+
+       /**
+        * Decompression of deflated string.
+        *
+        * Will attempt to decompress using the RFC 1950 standard, and if that fails
+        * then the RFC 1951 standard deflate will be attempted. Finally, the RFC
+        * 1952 standard gzip decode will be attempted. If all fail, then the
+        * original compressed string will be returned.
+        *
+        * @since 2.8.0
+        *
+        * @static
+        *
+        * @param string $compressed String to decompress.
+        * @param int $length The optional length of the compressed data.
+        * @return string|bool False on failure.
+        */
+       public static function decompress( $compressed, $length = null ) {
+
+               if ( empty($compressed) )
+                       return $compressed;
+
+               if ( false !== ( $decompressed = @gzinflate( $compressed ) ) )
+                       return $decompressed;
+
+               if ( false !== ( $decompressed = self::compatible_gzinflate( $compressed ) ) )
+                       return $decompressed;
+
+               if ( false !== ( $decompressed = @gzuncompress( $compressed ) ) )
+                       return $decompressed;
+
+               if ( function_exists('gzdecode') ) {
+                       $decompressed = @gzdecode( $compressed );
+
+                       if ( false !== $decompressed )
+                               return $decompressed;
+               }
+
+               return $compressed;
+       }
+
+       /**
+        * Decompression of deflated string while staying compatible with the majority of servers.
+        *
+        * Certain Servers will return deflated data with headers which PHP's gzinflate()
+        * function cannot handle out of the box. The following function has been created from
+        * various snippets on the gzinflate() PHP documentation.
+        *
+        * Warning: Magic numbers within. Due to the potential different formats that the compressed
+        * data may be returned in, some "magic offsets" are needed to ensure proper decompression
+        * takes place. For a simple progmatic way to determine the magic offset in use, see:
+        * https://core.trac.wordpress.org/ticket/18273
+        *
+        * @since 2.8.1
+        * @link https://core.trac.wordpress.org/ticket/18273
+        * @link http://au2.php.net/manual/en/function.gzinflate.php#70875
+        * @link http://au2.php.net/manual/en/function.gzinflate.php#77336
+        *
+        * @static
+        *
+        * @param string $gzData String to decompress.
+        * @return string|bool False on failure.
+        */
+       public static function compatible_gzinflate($gzData) {
+
+               // Compressed data might contain a full header, if so strip it for gzinflate().
+               if ( substr($gzData, 0, 3) == "\x1f\x8b\x08" ) {
+                       $i = 10;
+                       $flg = ord( substr($gzData, 3, 1) );
+                       if ( $flg > 0 ) {
+                               if ( $flg & 4 ) {
+                                       list($xlen) = unpack('v', substr($gzData, $i, 2) );
+                                       $i = $i + 2 + $xlen;
+                               }
+                               if ( $flg & 8 )
+                                       $i = strpos($gzData, "\0", $i) + 1;
+                               if ( $flg & 16 )
+                                       $i = strpos($gzData, "\0", $i) + 1;
+                               if ( $flg & 2 )
+                                       $i = $i + 2;
+                       }
+                       $decompressed = @gzinflate( substr($gzData, $i, -8) );
+                       if ( false !== $decompressed )
+                               return $decompressed;
+               }
+
+               // Compressed data from java.util.zip.Deflater amongst others.
+               $decompressed = @gzinflate( substr($gzData, 2) );
+               if ( false !== $decompressed )
+                       return $decompressed;
+
+               return false;
+       }
+
+       /**
+        * What encoding types to accept and their priority values.
+        *
+        * @since 2.8.0
+        *
+        * @static
+        *
+        * @param string $url
+        * @param array  $args
+        * @return string Types of encoding to accept.
+        */
+       public static function accept_encoding( $url, $args ) {
+               $type = array();
+               $compression_enabled = self::is_available();
+
+               if ( ! $args['decompress'] ) // Decompression specifically disabled.
+                       $compression_enabled = false;
+               elseif ( $args['stream'] ) // Disable when streaming to file.
+                       $compression_enabled = false;
+               elseif ( isset( $args['limit_response_size'] ) ) // If only partial content is being requested, we won't be able to decompress it.
+                       $compression_enabled = false;
+
+               if ( $compression_enabled ) {
+                       if ( function_exists( 'gzinflate' ) )
+                               $type[] = 'deflate;q=1.0';
+
+                       if ( function_exists( 'gzuncompress' ) )
+                               $type[] = 'compress;q=0.5';
+
+                       if ( function_exists( 'gzdecode' ) )
+                               $type[] = 'gzip;q=0.5';
+               }
+
+               /**
+                * Filter the allowed encoding types.
+                *
+                * @since 3.6.0
+                *
+                * @param array  $type Encoding types allowed. Accepts 'gzinflate',
+                *                     'gzuncompress', 'gzdecode'.
+                * @param string $url  URL of the HTTP request.
+                * @param array  $args HTTP request arguments.
+                */
+               $type = apply_filters( 'wp_http_accept_encoding', $type, $url, $args );
+
+               return implode(', ', $type);
+       }
+
+       /**
+        * What encoding the content used when it was compressed to send in the headers.
+        *
+        * @since 2.8.0
+        *
+        * @static
+        *
+        * @return string Content-Encoding string to send in the header.
+        */
+       public static function content_encoding() {
+               return 'deflate';
+       }
+
+       /**
+        * Whether the content be decoded based on the headers.
+        *
+        * @since 2.8.0
+        *
+        * @static
+        *
+        * @param array|string $headers All of the available headers.
+        * @return bool
+        */
+       public static function should_decode($headers) {
+               if ( is_array( $headers ) ) {
+                       if ( array_key_exists('content-encoding', $headers) && ! empty( $headers['content-encoding'] ) )
+                               return true;
+               } elseif ( is_string( $headers ) ) {
+                       return ( stripos($headers, 'content-encoding:') !== false );
+               }
+
+               return false;
+       }
+
+       /**
+        * Whether decompression and compression are supported by the PHP version.
+        *
+        * Each function is tested instead of checking for the zlib extension, to
+        * ensure that the functions all exist in the PHP version and aren't
+        * disabled.
+        *
+        * @since 2.8.0
+        *
+        * @static
+        *
+        * @return bool
+        */
+       public static function is_available() {
+               return ( function_exists('gzuncompress') || function_exists('gzdeflate') || function_exists('gzinflate') );
+       }
+}
index e0309bf9f46fede1f21d255cfb85cabc92223258..601ca143199523c273ee934a330e06508efbd1ab 100644 (file)
@@ -64,15 +64,27 @@ class WP_HTTP_IXR_Client extends IXR_Client {
                );
 
                // Merge Custom headers ala #8145
-               foreach ( $this->headers as $header => $value )
+               foreach ( $this->headers as $header => $value ) {
                        $args['headers'][$header] = $value;
+               }
+
+               /**
+                * Filter the headers collection to be sent to the XML-RPC server.
+                *
+                * @since 4.4.0
+                *
+                * @param array $headers Array of headers to be sent.
+                */
+               $args['headers'] = apply_filters( 'wp_http_ixr_client_headers', $args['headers'] );
 
-               if ( $this->timeout !== false )
+               if ( $this->timeout !== false ) {
                        $args['timeout'] = $this->timeout;
+               }
 
                // Now send the request
-               if ( $this->debug )
+               if ( $this->debug ) {
                        echo '<pre class="ixr_request">' . htmlspecialchars($xml) . "\n</pre>\n\n";
+               }
 
                $response = wp_remote_post($url, $args);
 
@@ -88,8 +100,9 @@ class WP_HTTP_IXR_Client extends IXR_Client {
                        return false;
                }
 
-               if ( $this->debug )
+               if ( $this->debug ) {
                        echo '<pre class="ixr_response">' . htmlspecialchars( wp_remote_retrieve_body( $response ) ) . "\n</pre>\n\n";
+               }
 
                // Now parse what we've got back
                $this->message = new IXR_Message( wp_remote_retrieve_body( $response ) );
diff --git a/wp-includes/class-wp-http-proxy.php b/wp-includes/class-wp-http-proxy.php
new file mode 100644 (file)
index 0000000..fba0e0e
--- /dev/null
@@ -0,0 +1,219 @@
+<?php
+/**
+ * HTTP API: WP_HTTP_Proxy class
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement HTTP API proxy support.
+ *
+ * There are caveats to proxy support. It requires that defines be made in the wp-config.php file to
+ * enable proxy support. There are also a few filters that plugins can hook into for some of the
+ * constants.
+ *
+ * Please note that only BASIC authentication is supported by most transports.
+ * cURL MAY support more methods (such as NTLM authentication) depending on your environment.
+ *
+ * The constants are as follows:
+ * <ol>
+ * <li>WP_PROXY_HOST - Enable proxy support and host for connecting.</li>
+ * <li>WP_PROXY_PORT - Proxy port for connection. No default, must be defined.</li>
+ * <li>WP_PROXY_USERNAME - Proxy username, if it requires authentication.</li>
+ * <li>WP_PROXY_PASSWORD - Proxy password, if it requires authentication.</li>
+ * <li>WP_PROXY_BYPASS_HOSTS - Will prevent the hosts in this list from going through the proxy.
+ * You do not need to have localhost and the blog host in this list, because they will not be passed
+ * through the proxy. The list should be presented in a comma separated list, wildcards using * are supported, eg. *.wordpress.org</li>
+ * </ol>
+ *
+ * An example can be as seen below.
+ *
+ *     define('WP_PROXY_HOST', '192.168.84.101');
+ *     define('WP_PROXY_PORT', '8080');
+ *     define('WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com, *.wordpress.org');
+ *
+ * @link https://core.trac.wordpress.org/ticket/4011 Proxy support ticket in WordPress.
+ * @link https://core.trac.wordpress.org/ticket/14636 Allow wildcard domains in WP_PROXY_BYPASS_HOSTS
+ *
+ * @since 2.8.0
+ */
+class WP_HTTP_Proxy {
+
+       /**
+        * Whether proxy connection should be used.
+        *
+        * @since 2.8.0
+        *
+        * @use WP_PROXY_HOST
+        * @use WP_PROXY_PORT
+        *
+        * @return bool
+        */
+       public function is_enabled() {
+               return defined('WP_PROXY_HOST') && defined('WP_PROXY_PORT');
+       }
+
+       /**
+        * Whether authentication should be used.
+        *
+        * @since 2.8.0
+        *
+        * @use WP_PROXY_USERNAME
+        * @use WP_PROXY_PASSWORD
+        *
+        * @return bool
+        */
+       public function use_authentication() {
+               return defined('WP_PROXY_USERNAME') && defined('WP_PROXY_PASSWORD');
+       }
+
+       /**
+        * Retrieve the host for the proxy server.
+        *
+        * @since 2.8.0
+        *
+        * @return string
+        */
+       public function host() {
+               if ( defined('WP_PROXY_HOST') )
+                       return WP_PROXY_HOST;
+
+               return '';
+       }
+
+       /**
+        * Retrieve the port for the proxy server.
+        *
+        * @since 2.8.0
+        *
+        * @return string
+        */
+       public function port() {
+               if ( defined('WP_PROXY_PORT') )
+                       return WP_PROXY_PORT;
+
+               return '';
+       }
+
+       /**
+        * Retrieve the username for proxy authentication.
+        *
+        * @since 2.8.0
+        *
+        * @return string
+        */
+       public function username() {
+               if ( defined('WP_PROXY_USERNAME') )
+                       return WP_PROXY_USERNAME;
+
+               return '';
+       }
+
+       /**
+        * Retrieve the password for proxy authentication.
+        *
+        * @since 2.8.0
+        *
+        * @return string
+        */
+       public function password() {
+               if ( defined('WP_PROXY_PASSWORD') )
+                       return WP_PROXY_PASSWORD;
+
+               return '';
+       }
+
+       /**
+        * Retrieve authentication string for proxy authentication.
+        *
+        * @since 2.8.0
+        *
+        * @return string
+        */
+       public function authentication() {
+               return $this->username() . ':' . $this->password();
+       }
+
+       /**
+        * Retrieve header string for proxy authentication.
+        *
+        * @since 2.8.0
+        *
+        * @return string
+        */
+       public function authentication_header() {
+               return 'Proxy-Authorization: Basic ' . base64_encode( $this->authentication() );
+       }
+
+       /**
+        * Whether URL should be sent through the proxy server.
+        *
+        * We want to keep localhost and the blog URL from being sent through the proxy server, because
+        * some proxies can not handle this. We also have the constant available for defining other
+        * hosts that won't be sent through the proxy.
+        *
+        * @since 2.8.0
+        *
+        * @staticvar array|null $bypass_hosts
+        * @staticvar array      $wildcard_regex
+        *
+        * @param string $uri URI to check.
+        * @return bool True, to send through the proxy and false if, the proxy should not be used.
+        */
+       public function send_through_proxy( $uri ) {
+               /*
+                * parse_url() only handles http, https type URLs, and will emit E_WARNING on failure.
+                * This will be displayed on blogs, which is not reasonable.
+                */
+               $check = @parse_url($uri);
+
+               // Malformed URL, can not process, but this could mean ssl, so let through anyway.
+               if ( $check === false )
+                       return true;
+
+               $home = parse_url( get_option('siteurl') );
+
+               /**
+                * Filter whether to preempt sending the request through the proxy server.
+                *
+                * Returning false will bypass the proxy; returning true will send
+                * the request through the proxy. Returning null bypasses the filter.
+                *
+                * @since 3.5.0
+                *
+                * @param null   $override Whether to override the request result. Default null.
+                * @param string $uri      URL to check.
+                * @param array  $check    Associative array result of parsing the URI.
+                * @param array  $home     Associative array result of parsing the site URL.
+                */
+               $result = apply_filters( 'pre_http_send_through_proxy', null, $uri, $check, $home );
+               if ( ! is_null( $result ) )
+                       return $result;
+
+               if ( 'localhost' == $check['host'] || ( isset( $home['host'] ) && $home['host'] == $check['host'] ) )
+                       return false;
+
+               if ( !defined('WP_PROXY_BYPASS_HOSTS') )
+                       return true;
+
+               static $bypass_hosts = null;
+               static $wildcard_regex = array();
+               if ( null === $bypass_hosts ) {
+                       $bypass_hosts = preg_split('|,\s*|', WP_PROXY_BYPASS_HOSTS);
+
+                       if ( false !== strpos(WP_PROXY_BYPASS_HOSTS, '*') ) {
+                               $wildcard_regex = array();
+                               foreach ( $bypass_hosts as $host )
+                                       $wildcard_regex[] = str_replace( '\*', '.+', preg_quote( $host, '/' ) );
+                               $wildcard_regex = '/^(' . implode('|', $wildcard_regex) . ')$/i';
+                       }
+               }
+
+               if ( !empty($wildcard_regex) )
+                       return !preg_match($wildcard_regex, $check['host']);
+               else
+                       return !in_array( $check['host'], $bypass_hosts );
+       }
+}
diff --git a/wp-includes/class-wp-http-response.php b/wp-includes/class-wp-http-response.php
new file mode 100644 (file)
index 0000000..e46b01e
--- /dev/null
@@ -0,0 +1,165 @@
+<?php
+/**
+ * HTTP API: WP_HTTP_Response class
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to prepare HTTP responses.
+ *
+ * @since 4.4.0
+ */
+class WP_HTTP_Response {
+
+       /**
+        * Response data.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var mixed
+        */
+       public $data;
+
+       /**
+        * Response headers.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $headers;
+
+       /**
+        * Response status.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var array
+        */
+       public $status;
+
+       /**
+        * Constructor.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param mixed $data    Response data. Default null.
+        * @param int   $status  Optional. HTTP status code. Default 200.
+        * @param array $headers Optional. HTTP header map. Default empty array.
+        */
+       public function __construct( $data = null, $status = 200, $headers = array() ) {
+               $this->data = $data;
+               $this->set_status( $status );
+               $this->set_headers( $headers );
+       }
+
+       /**
+        * Retrieves headers associated with the response.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Map of header name to header value.
+        */
+       public function get_headers() {
+               return $this->headers;
+       }
+
+       /**
+        * Sets all header values.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $headers Map of header name to header value.
+        */
+       public function set_headers( $headers ) {
+               $this->headers = $headers;
+       }
+
+       /**
+        * Sets a single HTTP header.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $key     Header name.
+        * @param string $value   Header value.
+        * @param bool   $replace Optional. Whether to replace an existing header of the same name.
+        *                        Default true.
+        */
+       public function header( $key, $value, $replace = true ) {
+               if ( $replace || ! isset( $this->headers[ $key ] ) ) {
+                       $this->headers[ $key ] = $value;
+               } else {
+                       $this->headers[ $key ] .= ', ' . $value;
+               }
+       }
+
+       /**
+        * Retrieves the HTTP return code for the response.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return int The 3-digit HTTP status code.
+        */
+       public function get_status() {
+               return $this->status;
+       }
+
+       /**
+        * Sets the 3-digit HTTP status code.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param int $code HTTP status.
+        */
+       public function set_status( $code ) {
+               $this->status = absint( $code );
+       }
+
+       /**
+        * Retrieves the response data.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return mixed Response data.
+        */
+       public function get_data() {
+               return $this->data;
+       }
+
+       /**
+        * Sets the response data.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param mixed $data Response data.
+        */
+       public function set_data( $data ) {
+               $this->data = $data;
+       }
+
+       /**
+        * Retrieves the response data for JSON serialization.
+        *
+        * It is expected that in most implementations, this will return the same as get_data(),
+        * however this may be different if you want to do custom JSON data handling.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return mixed Any JSON-serializable value.
+        */
+       public function jsonSerialize() {
+               return $this->get_data();
+       }
+}
diff --git a/wp-includes/class-wp-http-streams.php b/wp-includes/class-wp-http-streams.php
new file mode 100644 (file)
index 0000000..d2fce4f
--- /dev/null
@@ -0,0 +1,427 @@
+<?php
+/**
+ * HTTP API: WP_Http_Streams class
+ *
+ * @package WordPress
+ * @subpackage HTTP
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to integrate PHP Streams as an HTTP transport.
+ *
+ * @since 2.7.0
+ * @since 3.7.0 Combined with the fsockopen transport and switched to `stream_socket_client()`.
+ */
+class WP_Http_Streams {
+       /**
+        * Send a HTTP request to a URI using PHP Streams.
+        *
+        * @see WP_Http::request For default options descriptions.
+        *
+        * @since 2.7.0
+        * @since 3.7.0 Combined with the fsockopen transport and switched to stream_socket_client().
+        *
+        * @access public
+        * @param string $url The request URL.
+        * @param string|array $args Optional. Override the defaults.
+        * @return array|WP_Error Array containing 'headers', 'body', 'response', 'cookies', 'filename'. A WP_Error instance upon error
+        */
+       public function request($url, $args = array()) {
+               $defaults = array(
+                       'method' => 'GET', 'timeout' => 5,
+                       'redirection' => 5, 'httpversion' => '1.0',
+                       'blocking' => true,
+                       'headers' => array(), 'body' => null, 'cookies' => array()
+               );
+
+               $r = wp_parse_args( $args, $defaults );
+
+               if ( isset( $r['headers']['User-Agent'] ) ) {
+                       $r['user-agent'] = $r['headers']['User-Agent'];
+                       unset( $r['headers']['User-Agent'] );
+               } elseif ( isset( $r['headers']['user-agent'] ) ) {
+                       $r['user-agent'] = $r['headers']['user-agent'];
+                       unset( $r['headers']['user-agent'] );
+               }
+
+               // Construct Cookie: header if any cookies are set.
+               WP_Http::buildCookieHeader( $r );
+
+               $arrURL = parse_url($url);
+
+               $connect_host = $arrURL['host'];
+
+               $secure_transport = ( $arrURL['scheme'] == 'ssl' || $arrURL['scheme'] == 'https' );
+               if ( ! isset( $arrURL['port'] ) ) {
+                       if ( $arrURL['scheme'] == 'ssl' || $arrURL['scheme'] == 'https' ) {
+                               $arrURL['port'] = 443;
+                               $secure_transport = true;
+                       } else {
+                               $arrURL['port'] = 80;
+                       }
+               }
+
+               // Always pass a Path, defaulting to the root in cases such as http://example.com
+               if ( ! isset( $arrURL['path'] ) ) {
+                       $arrURL['path'] = '/';
+               }
+
+               if ( isset( $r['headers']['Host'] ) || isset( $r['headers']['host'] ) ) {
+                       if ( isset( $r['headers']['Host'] ) )
+                               $arrURL['host'] = $r['headers']['Host'];
+                       else
+                               $arrURL['host'] = $r['headers']['host'];
+                       unset( $r['headers']['Host'], $r['headers']['host'] );
+               }
+
+               /*
+                * Certain versions of PHP have issues with 'localhost' and IPv6, It attempts to connect
+                * to ::1, which fails when the server is not set up for it. For compatibility, always
+                * connect to the IPv4 address.
+                */
+               if ( 'localhost' == strtolower( $connect_host ) )
+                       $connect_host = '127.0.0.1';
+
+               $connect_host = $secure_transport ? 'ssl://' . $connect_host : 'tcp://' . $connect_host;
+
+               $is_local = isset( $r['local'] ) && $r['local'];
+               $ssl_verify = isset( $r['sslverify'] ) && $r['sslverify'];
+               if ( $is_local ) {
+                       /**
+                        * Filter whether SSL should be verified for local requests.
+                        *
+                        * @since 2.8.0
+                        *
+                        * @param bool $ssl_verify Whether to verify the SSL connection. Default true.
+                        */
+                       $ssl_verify = apply_filters( 'https_local_ssl_verify', $ssl_verify );
+               } elseif ( ! $is_local ) {
+                       /**
+                        * Filter whether SSL should be verified for non-local requests.
+                        *
+                        * @since 2.8.0
+                        *
+                        * @param bool $ssl_verify Whether to verify the SSL connection. Default true.
+                        */
+                       $ssl_verify = apply_filters( 'https_ssl_verify', $ssl_verify );
+               }
+
+               $proxy = new WP_HTTP_Proxy();
+
+               $context = stream_context_create( array(
+                       'ssl' => array(
+                               'verify_peer' => $ssl_verify,
+                               //'CN_match' => $arrURL['host'], // This is handled by self::verify_ssl_certificate()
+                               'capture_peer_cert' => $ssl_verify,
+                               'SNI_enabled' => true,
+                               'cafile' => $r['sslcertificates'],
+                               'allow_self_signed' => ! $ssl_verify,
+                       )
+               ) );
+
+               $timeout = (int) floor( $r['timeout'] );
+               $utimeout = $timeout == $r['timeout'] ? 0 : 1000000 * $r['timeout'] % 1000000;
+               $connect_timeout = max( $timeout, 1 );
+
+               // Store error number.
+               $connection_error = null;
+
+               // Store error string.
+               $connection_error_str = null;
+
+               if ( !WP_DEBUG ) {
+                       // In the event that the SSL connection fails, silence the many PHP Warnings.
+                       if ( $secure_transport )
+                               $error_reporting = error_reporting(0);
+
+                       if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) )
+                               $handle = @stream_socket_client( 'tcp://' . $proxy->host() . ':' . $proxy->port(), $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
+                       else
+                               $handle = @stream_socket_client( $connect_host . ':' . $arrURL['port'], $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
+
+                       if ( $secure_transport )
+                               error_reporting( $error_reporting );
+
+               } else {
+                       if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) )
+                               $handle = stream_socket_client( 'tcp://' . $proxy->host() . ':' . $proxy->port(), $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
+                       else
+                               $handle = stream_socket_client( $connect_host . ':' . $arrURL['port'], $connection_error, $connection_error_str, $connect_timeout, STREAM_CLIENT_CONNECT, $context );
+               }
+
+               if ( false === $handle ) {
+                       // SSL connection failed due to expired/invalid cert, or, OpenSSL configuration is broken.
+                       if ( $secure_transport && 0 === $connection_error && '' === $connection_error_str )
+                               return new WP_Error( 'http_request_failed', __( 'The SSL certificate for the host could not be verified.' ) );
+
+                       return new WP_Error('http_request_failed', $connection_error . ': ' . $connection_error_str );
+               }
+
+               // Verify that the SSL certificate is valid for this request.
+               if ( $secure_transport && $ssl_verify && ! $proxy->is_enabled() ) {
+                       if ( ! self::verify_ssl_certificate( $handle, $arrURL['host'] ) )
+                               return new WP_Error( 'http_request_failed', __( 'The SSL certificate for the host could not be verified.' ) );
+               }
+
+               stream_set_timeout( $handle, $timeout, $utimeout );
+
+               if ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) //Some proxies require full URL in this field.
+                       $requestPath = $url;
+               else
+                       $requestPath = $arrURL['path'] . ( isset($arrURL['query']) ? '?' . $arrURL['query'] : '' );
+
+               $strHeaders = strtoupper($r['method']) . ' ' . $requestPath . ' HTTP/' . $r['httpversion'] . "\r\n";
+
+               $include_port_in_host_header = (
+                       ( $proxy->is_enabled() && $proxy->send_through_proxy( $url ) ) ||
+                       ( 'http'  == $arrURL['scheme'] && 80  != $arrURL['port'] ) ||
+                       ( 'https' == $arrURL['scheme'] && 443 != $arrURL['port'] )
+               );
+
+               if ( $include_port_in_host_header ) {
+                       $strHeaders .= 'Host: ' . $arrURL['host'] . ':' . $arrURL['port'] . "\r\n";
+               } else {
+                       $strHeaders .= 'Host: ' . $arrURL['host'] . "\r\n";
+               }
+
+               if ( isset($r['user-agent']) )
+                       $strHeaders .= 'User-agent: ' . $r['user-agent'] . "\r\n";
+
+               if ( is_array($r['headers']) ) {
+                       foreach ( (array) $r['headers'] as $header => $headerValue )
+                               $strHeaders .= $header . ': ' . $headerValue . "\r\n";
+               } else {
+                       $strHeaders .= $r['headers'];
+               }
+
+               if ( $proxy->use_authentication() )
+                       $strHeaders .= $proxy->authentication_header() . "\r\n";
+
+               $strHeaders .= "\r\n";
+
+               if ( ! is_null($r['body']) )
+                       $strHeaders .= $r['body'];
+
+               fwrite($handle, $strHeaders);
+
+               if ( ! $r['blocking'] ) {
+                       stream_set_blocking( $handle, 0 );
+                       fclose( $handle );
+                       return array( 'headers' => array(), 'body' => '', 'response' => array('code' => false, 'message' => false), 'cookies' => array() );
+               }
+
+               $strResponse = '';
+               $bodyStarted = false;
+               $keep_reading = true;
+               $block_size = 4096;
+               if ( isset( $r['limit_response_size'] ) )
+                       $block_size = min( $block_size, $r['limit_response_size'] );
+
+               // If streaming to a file setup the file handle.
+               if ( $r['stream'] ) {
+                       if ( ! WP_DEBUG )
+                               $stream_handle = @fopen( $r['filename'], 'w+' );
+                       else
+                               $stream_handle = fopen( $r['filename'], 'w+' );
+                       if ( ! $stream_handle )
+                               return new WP_Error( 'http_request_failed', sprintf( __( 'Could not open handle for fopen() to %s' ), $r['filename'] ) );
+
+                       $bytes_written = 0;
+                       while ( ! feof($handle) && $keep_reading ) {
+                               $block = fread( $handle, $block_size );
+                               if ( ! $bodyStarted ) {
+                                       $strResponse .= $block;
+                                       if ( strpos( $strResponse, "\r\n\r\n" ) ) {
+                                               $process = WP_Http::processResponse( $strResponse );
+                                               $bodyStarted = true;
+                                               $block = $process['body'];
+                                               unset( $strResponse );
+                                               $process['body'] = '';
+                                       }
+                               }
+
+                               $this_block_size = strlen( $block );
+
+                               if ( isset( $r['limit_response_size'] ) && ( $bytes_written + $this_block_size ) > $r['limit_response_size'] ) {
+                                       $this_block_size = ( $r['limit_response_size'] - $bytes_written );
+                                       $block = substr( $block, 0, $this_block_size );
+                               }
+
+                               $bytes_written_to_file = fwrite( $stream_handle, $block );
+
+                               if ( $bytes_written_to_file != $this_block_size ) {
+                                       fclose( $handle );
+                                       fclose( $stream_handle );
+                                       return new WP_Error( 'http_request_failed', __( 'Failed to write request to temporary file.' ) );
+                               }
+
+                               $bytes_written += $bytes_written_to_file;
+
+                               $keep_reading = !isset( $r['limit_response_size'] ) || $bytes_written < $r['limit_response_size'];
+                       }
+
+                       fclose( $stream_handle );
+
+               } else {
+                       $header_length = 0;
+                       while ( ! feof( $handle ) && $keep_reading ) {
+                               $block = fread( $handle, $block_size );
+                               $strResponse .= $block;
+                               if ( ! $bodyStarted && strpos( $strResponse, "\r\n\r\n" ) ) {
+                                       $header_length = strpos( $strResponse, "\r\n\r\n" ) + 4;
+                                       $bodyStarted = true;
+                               }
+                               $keep_reading = ( ! $bodyStarted || !isset( $r['limit_response_size'] ) || strlen( $strResponse ) < ( $header_length + $r['limit_response_size'] ) );
+                       }
+
+                       $process = WP_Http::processResponse( $strResponse );
+                       unset( $strResponse );
+
+               }
+
+               fclose( $handle );
+
+               $arrHeaders = WP_Http::processHeaders( $process['headers'], $url );
+
+               $response = array(
+                       'headers' => $arrHeaders['headers'],
+                       // Not yet processed.
+                       'body' => null,
+                       'response' => $arrHeaders['response'],
+                       'cookies' => $arrHeaders['cookies'],
+                       'filename' => $r['filename']
+               );
+
+               // Handle redirects.
+               if ( false !== ( $redirect_response = WP_Http::handle_redirects( $url, $r, $response ) ) )
+                       return $redirect_response;
+
+               // If the body was chunk encoded, then decode it.
+               if ( ! empty( $process['body'] ) && isset( $arrHeaders['headers']['transfer-encoding'] ) && 'chunked' == $arrHeaders['headers']['transfer-encoding'] )
+                       $process['body'] = WP_Http::chunkTransferDecode($process['body']);
+
+               if ( true === $r['decompress'] && true === WP_Http_Encoding::should_decode($arrHeaders['headers']) )
+                       $process['body'] = WP_Http_Encoding::decompress( $process['body'] );
+
+               if ( isset( $r['limit_response_size'] ) && strlen( $process['body'] ) > $r['limit_response_size'] )
+                       $process['body'] = substr( $process['body'], 0, $r['limit_response_size'] );
+
+               $response['body'] = $process['body'];
+
+               return $response;
+       }
+
+       /**
+        * Verifies the received SSL certificate against its Common Names and subjectAltName fields.
+        *
+        * PHP's SSL verifications only verify that it's a valid Certificate, it doesn't verify if
+        * the certificate is valid for the hostname which was requested.
+        * This function verifies the requested hostname against certificate's subjectAltName field,
+        * if that is empty, or contains no DNS entries, a fallback to the Common Name field is used.
+        *
+        * IP Address support is included if the request is being made to an IP address.
+        *
+        * @since 3.7.0
+        * @static
+        *
+        * @param stream $stream The PHP Stream which the SSL request is being made over
+        * @param string $host The hostname being requested
+        * @return bool If the cerficiate presented in $stream is valid for $host
+        */
+       public static function verify_ssl_certificate( $stream, $host ) {
+               $context_options = stream_context_get_options( $stream );
+
+               if ( empty( $context_options['ssl']['peer_certificate'] ) )
+                       return false;
+
+               $cert = openssl_x509_parse( $context_options['ssl']['peer_certificate'] );
+               if ( ! $cert )
+                       return false;
+
+               /*
+                * If the request is being made to an IP address, we'll validate against IP fields
+                * in the cert (if they exist)
+                */
+               $host_type = ( WP_Http::is_ip_address( $host ) ? 'ip' : 'dns' );
+
+               $certificate_hostnames = array();
+               if ( ! empty( $cert['extensions']['subjectAltName'] ) ) {
+                       $match_against = preg_split( '/,\s*/', $cert['extensions']['subjectAltName'] );
+                       foreach ( $match_against as $match ) {
+                               list( $match_type, $match_host ) = explode( ':', $match );
+                               if ( $host_type == strtolower( trim( $match_type ) ) ) // IP: or DNS:
+                                       $certificate_hostnames[] = strtolower( trim( $match_host ) );
+                       }
+               } elseif ( !empty( $cert['subject']['CN'] ) ) {
+                       // Only use the CN when the certificate includes no subjectAltName extension.
+                       $certificate_hostnames[] = strtolower( $cert['subject']['CN'] );
+               }
+
+               // Exact hostname/IP matches.
+               if ( in_array( strtolower( $host ), $certificate_hostnames ) )
+                       return true;
+
+               // IP's can't be wildcards, Stop processing.
+               if ( 'ip' == $host_type )
+                       return false;
+
+               // Test to see if the domain is at least 2 deep for wildcard support.
+               if ( substr_count( $host, '.' ) < 2 )
+                       return false;
+
+               // Wildcard subdomains certs (*.example.com) are valid for a.example.com but not a.b.example.com.
+               $wildcard_host = preg_replace( '/^[^.]+\./', '*.', $host );
+
+               return in_array( strtolower( $wildcard_host ), $certificate_hostnames );
+       }
+
+       /**
+        * Whether this class can be used for retrieving a URL.
+        *
+        * @static
+        * @access public
+        * @since 2.7.0
+        * @since 3.7.0 Combined with the fsockopen transport and switched to stream_socket_client().
+        *
+        * @return bool False means this class can not be used, true means it can.
+        */
+       public static function test( $args = array() ) {
+               if ( ! function_exists( 'stream_socket_client' ) )
+                       return false;
+
+               $is_ssl = isset( $args['ssl'] ) && $args['ssl'];
+
+               if ( $is_ssl ) {
+                       if ( ! extension_loaded( 'openssl' ) )
+                               return false;
+                       if ( ! function_exists( 'openssl_x509_parse' ) )
+                               return false;
+               }
+
+               /**
+                * Filter whether streams can be used as a transport for retrieving a URL.
+                *
+                * @since 2.7.0
+                *
+                * @param bool  $use_class Whether the class can be used. Default true.
+                * @param array $args      Request arguments.
+                */
+               return apply_filters( 'use_streams_transport', true, $args );
+       }
+}
+
+/**
+ * Deprecated HTTP Transport method which used fsockopen.
+ *
+ * This class is not used, and is included for backwards compatibility only.
+ * All code should make use of WP_Http directly through its API.
+ *
+ * @see WP_HTTP::request
+ *
+ * @since 2.7.0
+ * @deprecated 3.7.0 Please use WP_HTTP::request() directly
+ */
+class WP_HTTP_Fsockopen extends WP_HTTP_Streams {
+       // For backwards compatibility for users who are using the class directly.
+}
index 53f083782acb216efc67388db7726db26aa667ab..2093c6b46269400a55683cb43d8dc3363adb44ab 100644 (file)
@@ -212,16 +212,18 @@ class WP_Image_Editor_GD extends WP_Image_Editor {
         * @access public
         *
         * @param array $sizes {
-        *     An array of image size arrays. Default sizes are 'small', 'medium', 'large'.
+        *     An array of image size arrays. Default sizes are 'small', 'medium', 'medium_large', 'large'.
         *
         *     Either a height or width must be provided.
         *     If one of the two is set to null, the resize will
         *     maintain aspect ratio according to the provided dimension.
         *
         *     @type array $size {
-        *         @type int  ['width']  Optional. Image width.
-        *         @type int  ['height'] Optional. Image height.
-        *         @type bool ['crop']   Optional. Whether to crop the image. Default false.
+        *         Array of height, width values, and whether to crop.
+        *
+        *         @type int  $width  Image width. Optional if `$height` is specified.
+        *         @type int  $height Image height. Optional if `$width` is specified.
+        *         @type bool $crop   Optional. Whether to crop the image. Default false.
         *     }
         * }
         * @return array An array of resized images' metadata by size.
index bcfb576433d0b3426bed2a102aa3a90acf52e647..a14fa406578f0dae6716ce1c244fd1e6975262ec 100644 (file)
@@ -48,7 +48,7 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
        public static function test( $args = array() ) {
 
                // First, test Imagick's extension and classes.
-               if ( ! extension_loaded( 'imagick' ) || ! class_exists( 'Imagick' ) || ! class_exists( 'ImagickPixel' ) )
+               if ( ! extension_loaded( 'imagick' ) || ! class_exists( 'Imagick', false ) || ! class_exists( 'ImagickPixel', false ) )
                        return false;
 
                if ( version_compare( phpversion( 'imagick' ), '2.2.0', '<' ) )
@@ -208,7 +208,7 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
                                $size = $this->image->getImageGeometry();
                        }
                        catch ( Exception $e ) {
-                               return new WP_Error( 'invalid_image', __('Could not read image size'), $this->file );
+                               return new WP_Error( 'invalid_image', __( 'Could not read image size.' ), $this->file );
                        }
                }
 
@@ -270,15 +270,17 @@ class WP_Image_Editor_Imagick extends WP_Image_Editor {
         * @access public
         *
         * @param array $sizes {
-        *     An array of image size arrays. Default sizes are 'small', 'medium', 'large'.
+        *     An array of image size arrays. Default sizes are 'small', 'medium', 'medium_large', 'large'.
         *
         *     Either a height or width must be provided.
         *     If one of the two is set to null, the resize will
         *     maintain aspect ratio according to the provided dimension.
         *
         *     @type array $size {
-        *         @type int  ['width']  Optional. Image width.
-        *         @type int  ['height'] Optional. Image height.
+        *         Array of height, width values, and whether to crop.
+        *
+        *         @type int  $width  Image width. Optional if `$height` is specified.
+        *         @type int  $height Image height. Optional if `$width` is specified.
         *         @type bool $crop   Optional. Whether to crop the image. Default false.
         *     }
         * }
index f88493712651f3f37787676607880f7847633fd1..8dc90c602d6dc941024dc6f6d9bc91f9c786a88d 100644 (file)
@@ -460,7 +460,7 @@ abstract class WP_Image_Editor {
                $mime_types = wp_get_mime_types();
                $extensions = array_keys( $mime_types );
 
-               foreach( $extensions as $_extension ) {
+               foreach ( $extensions as $_extension ) {
                        if ( preg_match( "/{$extension}/i", $_extension ) ) {
                                return $mime_types[$_extension];
                        }
diff --git a/wp-includes/class-wp-meta-query.php b/wp-includes/class-wp-meta-query.php
new file mode 100644 (file)
index 0000000..d9419e7
--- /dev/null
@@ -0,0 +1,748 @@
+<?php
+/**
+ * Meta API: WP_Meta_Query class
+ *
+ * @package WordPress
+ * @subpackage Meta
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement meta queries for the Meta API.
+ *
+ * Used for generating SQL clauses that filter a primary query according to metadata keys and values.
+ *
+ * `WP_Meta_Query` is a helper that allows primary query classes, such as {@see WP_Query} and {@see WP_User_Query},
+ * to filter their results by object metadata, by generating `JOIN` and `WHERE` subclauses to be attached
+ * to the primary SQL query string.
+ *
+ * @since 3.2.0
+ * @package WordPress
+ * @subpackage Meta
+ */
+class WP_Meta_Query {
+       /**
+        * Array of metadata queries.
+        *
+        * See {@see WP_Meta_Query::__construct()} for information on meta query arguments.
+        *
+        * @since 3.2.0
+        * @access public
+        * @var array
+        */
+       public $queries = array();
+
+       /**
+        * The relation between the queries. Can be one of 'AND' or 'OR'.
+        *
+        * @since 3.2.0
+        * @access public
+        * @var string
+        */
+       public $relation;
+
+       /**
+        * Database table to query for the metadata.
+        *
+        * @since 4.1.0
+        * @access public
+        * @var string
+        */
+       public $meta_table;
+
+       /**
+        * Column in meta_table that represents the ID of the object the metadata belongs to.
+        *
+        * @since 4.1.0
+        * @access public
+        * @var string
+        */
+       public $meta_id_column;
+
+       /**
+        * Database table that where the metadata's objects are stored (eg $wpdb->users).
+        *
+        * @since 4.1.0
+        * @access public
+        * @var string
+        */
+       public $primary_table;
+
+       /**
+        * Column in primary_table that represents the ID of the object.
+        *
+        * @since 4.1.0
+        * @access public
+        * @var string
+        */
+       public $primary_id_column;
+
+       /**
+        * A flat list of table aliases used in JOIN clauses.
+        *
+        * @since 4.1.0
+        * @access protected
+        * @var array
+        */
+       protected $table_aliases = array();
+
+       /**
+        * A flat list of clauses, keyed by clause 'name'.
+        *
+        * @since 4.2.0
+        * @access protected
+        * @var array
+        */
+       protected $clauses = array();
+
+       /**
+        * Whether the query contains any OR relations.
+        *
+        * @since 4.3.0
+        * @access protected
+        * @var bool
+        */
+       protected $has_or_relation = false;
+
+       /**
+        * Constructor.
+        *
+        * @since 3.2.0
+        * @since 4.2.0 Introduced support for naming query clauses by associative array keys.
+        *
+        * @access public
+        *
+        * @param array $meta_query {
+        *     Array of meta query clauses. When first-order clauses use strings as their array keys, they may be
+        *     referenced in the 'orderby' parameter of the parent query.
+        *
+        *     @type string $relation Optional. The MySQL keyword used to join
+        *                            the clauses of the query. Accepts 'AND', or 'OR'. Default 'AND'.
+        *     @type array {
+        *         Optional. An array of first-order clause parameters, or another fully-formed meta query.
+        *
+        *         @type string $key     Meta key to filter by.
+        *         @type string $value   Meta value to filter by.
+        *         @type string $compare MySQL operator used for comparing the $value. Accepts '=',
+        *                               '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN',
+        *                               'BETWEEN', 'NOT BETWEEN', 'REGEXP', 'NOT REGEXP', or 'RLIKE'.
+        *                               Default is 'IN' when `$value` is an array, '=' otherwise.
+        *         @type string $type    MySQL data type that the meta_value column will be CAST to for
+        *                               comparisons. Accepts 'NUMERIC', 'BINARY', 'CHAR', 'DATE',
+        *                               'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', or 'UNSIGNED'.
+        *                               Default is 'CHAR'.
+        *     }
+        * }
+        */
+       public function __construct( $meta_query = false ) {
+               if ( !$meta_query )
+                       return;
+
+               if ( isset( $meta_query['relation'] ) && strtoupper( $meta_query['relation'] ) == 'OR' ) {
+                       $this->relation = 'OR';
+               } else {
+                       $this->relation = 'AND';
+               }
+
+               $this->queries = $this->sanitize_query( $meta_query );
+       }
+
+       /**
+        * Ensure the 'meta_query' argument passed to the class constructor is well-formed.
+        *
+        * Eliminates empty items and ensures that a 'relation' is set.
+        *
+        * @since 4.1.0
+        * @access public
+        *
+        * @param array $queries Array of query clauses.
+        * @return array Sanitized array of query clauses.
+        */
+       public function sanitize_query( $queries ) {
+               $clean_queries = array();
+
+               if ( ! is_array( $queries ) ) {
+                       return $clean_queries;
+               }
+
+               foreach ( $queries as $key => $query ) {
+                       if ( 'relation' === $key ) {
+                               $relation = $query;
+
+                       } elseif ( ! is_array( $query ) ) {
+                               continue;
+
+                       // First-order clause.
+                       } elseif ( $this->is_first_order_clause( $query ) ) {
+                               if ( isset( $query['value'] ) && array() === $query['value'] ) {
+                                       unset( $query['value'] );
+                               }
+
+                               $clean_queries[ $key ] = $query;
+
+                       // Otherwise, it's a nested query, so we recurse.
+                       } else {
+                               $cleaned_query = $this->sanitize_query( $query );
+
+                               if ( ! empty( $cleaned_query ) ) {
+                                       $clean_queries[ $key ] = $cleaned_query;
+                               }
+                       }
+               }
+
+               if ( empty( $clean_queries ) ) {
+                       return $clean_queries;
+               }
+
+               // Sanitize the 'relation' key provided in the query.
+               if ( isset( $relation ) && 'OR' === strtoupper( $relation ) ) {
+                       $clean_queries['relation'] = 'OR';
+                       $this->has_or_relation = true;
+
+               /*
+                * If there is only a single clause, call the relation 'OR'.
+                * This value will not actually be used to join clauses, but it
+                * simplifies the logic around combining key-only queries.
+                */
+               } elseif ( 1 === count( $clean_queries ) ) {
+                       $clean_queries['relation'] = 'OR';
+
+               // Default to AND.
+               } else {
+                       $clean_queries['relation'] = 'AND';
+               }
+
+               return $clean_queries;
+       }
+
+       /**
+        * Determine whether a query clause is first-order.
+        *
+        * A first-order meta query clause is one that has either a 'key' or
+        * a 'value' array key.
+        *
+        * @since 4.1.0
+        * @access protected
+        *
+        * @param array $query Meta query arguments.
+        * @return bool Whether the query clause is a first-order clause.
+        */
+       protected function is_first_order_clause( $query ) {
+               return isset( $query['key'] ) || isset( $query['value'] );
+       }
+
+       /**
+        * Constructs a meta query based on 'meta_*' query vars
+        *
+        * @since 3.2.0
+        * @access public
+        *
+        * @param array $qv The query variables
+        */
+       public function parse_query_vars( $qv ) {
+               $meta_query = array();
+
+               /*
+                * For orderby=meta_value to work correctly, simple query needs to be
+                * first (so that its table join is against an unaliased meta table) and
+                * needs to be its own clause (so it doesn't interfere with the logic of
+                * the rest of the meta_query).
+                */
+               $primary_meta_query = array();
+               foreach ( array( 'key', 'compare', 'type' ) as $key ) {
+                       if ( ! empty( $qv[ "meta_$key" ] ) ) {
+                               $primary_meta_query[ $key ] = $qv[ "meta_$key" ];
+                       }
+               }
+
+               // WP_Query sets 'meta_value' = '' by default.
+               if ( isset( $qv['meta_value'] ) && '' !== $qv['meta_value'] && ( ! is_array( $qv['meta_value'] ) || $qv['meta_value'] ) ) {
+                       $primary_meta_query['value'] = $qv['meta_value'];
+               }
+
+               $existing_meta_query = isset( $qv['meta_query'] ) && is_array( $qv['meta_query'] ) ? $qv['meta_query'] : array();
+
+               if ( ! empty( $primary_meta_query ) && ! empty( $existing_meta_query ) ) {
+                       $meta_query = array(
+                               'relation' => 'AND',
+                               $primary_meta_query,
+                               $existing_meta_query,
+                       );
+               } elseif ( ! empty( $primary_meta_query ) ) {
+                       $meta_query = array(
+                               $primary_meta_query,
+                       );
+               } elseif ( ! empty( $existing_meta_query ) ) {
+                       $meta_query = $existing_meta_query;
+               }
+
+               $this->__construct( $meta_query );
+       }
+
+       /**
+        * Return the appropriate alias for the given meta type if applicable.
+        *
+        * @since 3.7.0
+        * @access public
+        *
+        * @param string $type MySQL type to cast meta_value.
+        * @return string MySQL type.
+        */
+       public function get_cast_for_type( $type = '' ) {
+               if ( empty( $type ) )
+                       return 'CHAR';
+
+               $meta_type = strtoupper( $type );
+
+               if ( ! preg_match( '/^(?:BINARY|CHAR|DATE|DATETIME|SIGNED|UNSIGNED|TIME|NUMERIC(?:\(\d+(?:,\s?\d+)?\))?|DECIMAL(?:\(\d+(?:,\s?\d+)?\))?)$/', $meta_type ) )
+                       return 'CHAR';
+
+               if ( 'NUMERIC' == $meta_type )
+                       $meta_type = 'SIGNED';
+
+               return $meta_type;
+       }
+
+       /**
+        * Generates SQL clauses to be appended to a main query.
+        *
+        * @since 3.2.0
+        * @access public
+        *
+        * @param string $type              Type of meta, eg 'user', 'post'.
+        * @param string $primary_table     Database table where the object being filtered is stored (eg wp_users).
+        * @param string $primary_id_column ID column for the filtered object in $primary_table.
+        * @param object $context           Optional. The main query object.
+        * @return false|array {
+        *     Array containing JOIN and WHERE SQL clauses to append to the main query.
+        *
+        *     @type string $join  SQL fragment to append to the main JOIN clause.
+        *     @type string $where SQL fragment to append to the main WHERE clause.
+        * }
+        */
+       public function get_sql( $type, $primary_table, $primary_id_column, $context = null ) {
+               if ( ! $meta_table = _get_meta_table( $type ) ) {
+                       return false;
+               }
+
+               $this->meta_table     = $meta_table;
+               $this->meta_id_column = sanitize_key( $type . '_id' );
+
+               $this->primary_table     = $primary_table;
+               $this->primary_id_column = $primary_id_column;
+
+               $sql = $this->get_sql_clauses();
+
+               /*
+                * If any JOINs are LEFT JOINs (as in the case of NOT EXISTS), then all JOINs should
+                * be LEFT. Otherwise posts with no metadata will be excluded from results.
+                */
+               if ( false !== strpos( $sql['join'], 'LEFT JOIN' ) ) {
+                       $sql['join'] = str_replace( 'INNER JOIN', 'LEFT JOIN', $sql['join'] );
+               }
+
+               /**
+                * Filter the meta query's generated SQL.
+                *
+                * @since 3.1.0
+                *
+                * @param array $args {
+                *     An array of meta query SQL arguments.
+                *
+                *     @type array  $clauses           Array containing the query's JOIN and WHERE clauses.
+                *     @type array  $queries           Array of meta queries.
+                *     @type string $type              Type of meta.
+                *     @type string $primary_table     Primary table.
+                *     @type string $primary_id_column Primary column ID.
+                *     @type object $context           The main query object.
+                * }
+                */
+               return apply_filters_ref_array( 'get_meta_sql', array( $sql, $this->queries, $type, $primary_table, $primary_id_column, $context ) );
+       }
+
+       /**
+        * Generate SQL clauses to be appended to a main query.
+        *
+        * Called by the public {@see WP_Meta_Query::get_sql()}, this method
+        * is abstracted out to maintain parity with the other Query classes.
+        *
+        * @since 4.1.0
+        * @access protected
+        *
+        * @return array {
+        *     Array containing JOIN and WHERE SQL clauses to append to the main query.
+        *
+        *     @type string $join  SQL fragment to append to the main JOIN clause.
+        *     @type string $where SQL fragment to append to the main WHERE clause.
+        * }
+        */
+       protected function get_sql_clauses() {
+               /*
+                * $queries are passed by reference to get_sql_for_query() for recursion.
+                * To keep $this->queries unaltered, pass a copy.
+                */
+               $queries = $this->queries;
+               $sql = $this->get_sql_for_query( $queries );
+
+               if ( ! empty( $sql['where'] ) ) {
+                       $sql['where'] = ' AND ' . $sql['where'];
+               }
+
+               return $sql;
+       }
+
+       /**
+        * Generate SQL clauses for a single query array.
+        *
+        * If nested subqueries are found, this method recurses the tree to
+        * produce the properly nested SQL.
+        *
+        * @since 4.1.0
+        * @access protected
+        *
+        * @param array $query Query to parse, passed by reference.
+        * @param int   $depth Optional. Number of tree levels deep we currently are.
+        *                     Used to calculate indentation. Default 0.
+        * @return array {
+        *     Array containing JOIN and WHERE SQL clauses to append to a single query array.
+        *
+        *     @type string $join  SQL fragment to append to the main JOIN clause.
+        *     @type string $where SQL fragment to append to the main WHERE clause.
+        * }
+        */
+       protected function get_sql_for_query( &$query, $depth = 0 ) {
+               $sql_chunks = array(
+                       'join'  => array(),
+                       'where' => array(),
+               );
+
+               $sql = array(
+                       'join'  => '',
+                       'where' => '',
+               );
+
+               $indent = '';
+               for ( $i = 0; $i < $depth; $i++ ) {
+                       $indent .= "  ";
+               }
+
+               foreach ( $query as $key => &$clause ) {
+                       if ( 'relation' === $key ) {
+                               $relation = $query['relation'];
+                       } elseif ( is_array( $clause ) ) {
+
+                               // This is a first-order clause.
+                               if ( $this->is_first_order_clause( $clause ) ) {
+                                       $clause_sql = $this->get_sql_for_clause( $clause, $query, $key );
+
+                                       $where_count = count( $clause_sql['where'] );
+                                       if ( ! $where_count ) {
+                                               $sql_chunks['where'][] = '';
+                                       } elseif ( 1 === $where_count ) {
+                                               $sql_chunks['where'][] = $clause_sql['where'][0];
+                                       } else {
+                                               $sql_chunks['where'][] = '( ' . implode( ' AND ', $clause_sql['where'] ) . ' )';
+                                       }
+
+                                       $sql_chunks['join'] = array_merge( $sql_chunks['join'], $clause_sql['join'] );
+                               // This is a subquery, so we recurse.
+                               } else {
+                                       $clause_sql = $this->get_sql_for_query( $clause, $depth + 1 );
+
+                                       $sql_chunks['where'][] = $clause_sql['where'];
+                                       $sql_chunks['join'][]  = $clause_sql['join'];
+                               }
+                       }
+               }
+
+               // Filter to remove empties.
+               $sql_chunks['join']  = array_filter( $sql_chunks['join'] );
+               $sql_chunks['where'] = array_filter( $sql_chunks['where'] );
+
+               if ( empty( $relation ) ) {
+                       $relation = 'AND';
+               }
+
+               // Filter duplicate JOIN clauses and combine into a single string.
+               if ( ! empty( $sql_chunks['join'] ) ) {
+                       $sql['join'] = implode( ' ', array_unique( $sql_chunks['join'] ) );
+               }
+
+               // Generate a single WHERE clause with proper brackets and indentation.
+               if ( ! empty( $sql_chunks['where'] ) ) {
+                       $sql['where'] = '( ' . "\n  " . $indent . implode( ' ' . "\n  " . $indent . $relation . ' ' . "\n  " . $indent, $sql_chunks['where'] ) . "\n" . $indent . ')';
+               }
+
+               return $sql;
+       }
+
+       /**
+        * Generate SQL JOIN and WHERE clauses for a first-order query clause.
+        *
+        * "First-order" means that it's an array with a 'key' or 'value'.
+        *
+        * @since 4.1.0
+        * @access public
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param array  $clause       Query clause, passed by reference.
+        * @param array  $parent_query Parent query array.
+        * @param string $clause_key   Optional. The array key used to name the clause in the original `$meta_query`
+        *                             parameters. If not provided, a key will be generated automatically.
+        * @return array {
+        *     Array containing JOIN and WHERE SQL clauses to append to a first-order query.
+        *
+        *     @type string $join  SQL fragment to append to the main JOIN clause.
+        *     @type string $where SQL fragment to append to the main WHERE clause.
+        * }
+        */
+       public function get_sql_for_clause( &$clause, $parent_query, $clause_key = '' ) {
+               global $wpdb;
+
+               $sql_chunks = array(
+                       'where' => array(),
+                       'join' => array(),
+               );
+
+               if ( isset( $clause['compare'] ) ) {
+                       $clause['compare'] = strtoupper( $clause['compare'] );
+               } else {
+                       $clause['compare'] = isset( $clause['value'] ) && is_array( $clause['value'] ) ? 'IN' : '=';
+               }
+
+               if ( ! in_array( $clause['compare'], array(
+                       '=', '!=', '>', '>=', '<', '<=',
+                       'LIKE', 'NOT LIKE',
+                       'IN', 'NOT IN',
+                       'BETWEEN', 'NOT BETWEEN',
+                       'EXISTS', 'NOT EXISTS',
+                       'REGEXP', 'NOT REGEXP', 'RLIKE'
+               ) ) ) {
+                       $clause['compare'] = '=';
+               }
+
+               $meta_compare = $clause['compare'];
+
+               // First build the JOIN clause, if one is required.
+               $join = '';
+
+               // We prefer to avoid joins if possible. Look for an existing join compatible with this clause.
+               $alias = $this->find_compatible_table_alias( $clause, $parent_query );
+               if ( false === $alias ) {
+                       $i = count( $this->table_aliases );
+                       $alias = $i ? 'mt' . $i : $this->meta_table;
+
+                       // JOIN clauses for NOT EXISTS have their own syntax.
+                       if ( 'NOT EXISTS' === $meta_compare ) {
+                               $join .= " LEFT JOIN $this->meta_table";
+                               $join .= $i ? " AS $alias" : '';
+                               $join .= $wpdb->prepare( " ON ($this->primary_table.$this->primary_id_column = $alias.$this->meta_id_column AND $alias.meta_key = %s )", $clause['key'] );
+
+                       // All other JOIN clauses.
+                       } else {
+                               $join .= " INNER JOIN $this->meta_table";
+                               $join .= $i ? " AS $alias" : '';
+                               $join .= " ON ( $this->primary_table.$this->primary_id_column = $alias.$this->meta_id_column )";
+                       }
+
+                       $this->table_aliases[] = $alias;
+                       $sql_chunks['join'][] = $join;
+               }
+
+               // Save the alias to this clause, for future siblings to find.
+               $clause['alias'] = $alias;
+
+               // Determine the data type.
+               $_meta_type = isset( $clause['type'] ) ? $clause['type'] : '';
+               $meta_type  = $this->get_cast_for_type( $_meta_type );
+               $clause['cast'] = $meta_type;
+
+               // Fallback for clause keys is the table alias. Key must be a string.
+               if ( is_int( $clause_key ) || ! $clause_key ) {
+                       $clause_key = $clause['alias'];
+               }
+
+               // Ensure unique clause keys, so none are overwritten.
+               $iterator = 1;
+               $clause_key_base = $clause_key;
+               while ( isset( $this->clauses[ $clause_key ] ) ) {
+                       $clause_key = $clause_key_base . '-' . $iterator;
+                       $iterator++;
+               }
+
+               // Store the clause in our flat array.
+               $this->clauses[ $clause_key ] =& $clause;
+
+               // Next, build the WHERE clause.
+
+               // meta_key.
+               if ( array_key_exists( 'key', $clause ) ) {
+                       if ( 'NOT EXISTS' === $meta_compare ) {
+                               $sql_chunks['where'][] = $alias . '.' . $this->meta_id_column . ' IS NULL';
+                       } else {
+                               $sql_chunks['where'][] = $wpdb->prepare( "$alias.meta_key = %s", trim( $clause['key'] ) );
+                       }
+               }
+
+               // meta_value.
+               if ( array_key_exists( 'value', $clause ) ) {
+                       $meta_value = $clause['value'];
+
+                       if ( in_array( $meta_compare, array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) {
+                               if ( ! is_array( $meta_value ) ) {
+                                       $meta_value = preg_split( '/[,\s]+/', $meta_value );
+                               }
+                       } else {
+                               $meta_value = trim( $meta_value );
+                       }
+
+                       switch ( $meta_compare ) {
+                               case 'IN' :
+                               case 'NOT IN' :
+                                       $meta_compare_string = '(' . substr( str_repeat( ',%s', count( $meta_value ) ), 1 ) . ')';
+                                       $where = $wpdb->prepare( $meta_compare_string, $meta_value );
+                                       break;
+
+                               case 'BETWEEN' :
+                               case 'NOT BETWEEN' :
+                                       $meta_value = array_slice( $meta_value, 0, 2 );
+                                       $where = $wpdb->prepare( '%s AND %s', $meta_value );
+                                       break;
+
+                               case 'LIKE' :
+                               case 'NOT LIKE' :
+                                       $meta_value = '%' . $wpdb->esc_like( $meta_value ) . '%';
+                                       $where = $wpdb->prepare( '%s', $meta_value );
+                                       break;
+
+                               // EXISTS with a value is interpreted as '='.
+                               case 'EXISTS' :
+                                       $meta_compare = '=';
+                                       $where = $wpdb->prepare( '%s', $meta_value );
+                                       break;
+
+                               // 'value' is ignored for NOT EXISTS.
+                               case 'NOT EXISTS' :
+                                       $where = '';
+                                       break;
+
+                               default :
+                                       $where = $wpdb->prepare( '%s', $meta_value );
+                                       break;
+
+                       }
+
+                       if ( $where ) {
+                               $sql_chunks['where'][] = "CAST($alias.meta_value AS {$meta_type}) {$meta_compare} {$where}";
+                       }
+               }
+
+               /*
+                * Multiple WHERE clauses (for meta_key and meta_value) should
+                * be joined in parentheses.
+                */
+               if ( 1 < count( $sql_chunks['where'] ) ) {
+                       $sql_chunks['where'] = array( '( ' . implode( ' AND ', $sql_chunks['where'] ) . ' )' );
+               }
+
+               return $sql_chunks;
+       }
+
+       /**
+        * Get a flattened list of sanitized meta clauses.
+        *
+        * This array should be used for clause lookup, as when the table alias and CAST type must be determined for
+        * a value of 'orderby' corresponding to a meta clause.
+        *
+        * @since 4.2.0
+        * @access public
+        *
+        * @return array Meta clauses.
+        */
+       public function get_clauses() {
+               return $this->clauses;
+       }
+
+       /**
+        * Identify an existing table alias that is compatible with the current
+        * query clause.
+        *
+        * We avoid unnecessary table joins by allowing each clause to look for
+        * an existing table alias that is compatible with the query that it
+        * needs to perform.
+        *
+        * An existing alias is compatible if (a) it is a sibling of `$clause`
+        * (ie, it's under the scope of the same relation), and (b) the combination
+        * of operator and relation between the clauses allows for a shared table join.
+        * In the case of {@see WP_Meta_Query}, this only applies to 'IN' clauses that
+        * are connected by the relation 'OR'.
+        *
+        * @since 4.1.0
+        * @access protected
+        *
+        * @param  array       $clause       Query clause.
+        * @param  array       $parent_query Parent query of $clause.
+        * @return string|bool Table alias if found, otherwise false.
+        */
+       protected function find_compatible_table_alias( $clause, $parent_query ) {
+               $alias = false;
+
+               foreach ( $parent_query as $sibling ) {
+                       // If the sibling has no alias yet, there's nothing to check.
+                       if ( empty( $sibling['alias'] ) ) {
+                               continue;
+                       }
+
+                       // We're only interested in siblings that are first-order clauses.
+                       if ( ! is_array( $sibling ) || ! $this->is_first_order_clause( $sibling ) ) {
+                               continue;
+                       }
+
+                       $compatible_compares = array();
+
+                       // Clauses connected by OR can share joins as long as they have "positive" operators.
+                       if ( 'OR' === $parent_query['relation'] ) {
+                               $compatible_compares = array( '=', 'IN', 'BETWEEN', 'LIKE', 'REGEXP', 'RLIKE', '>', '>=', '<', '<=' );
+
+                       // Clauses joined by AND with "negative" operators share a join only if they also share a key.
+                       } elseif ( isset( $sibling['key'] ) && isset( $clause['key'] ) && $sibling['key'] === $clause['key'] ) {
+                               $compatible_compares = array( '!=', 'NOT IN', 'NOT LIKE' );
+                       }
+
+                       $clause_compare  = strtoupper( $clause['compare'] );
+                       $sibling_compare = strtoupper( $sibling['compare'] );
+                       if ( in_array( $clause_compare, $compatible_compares ) && in_array( $sibling_compare, $compatible_compares ) ) {
+                               $alias = $sibling['alias'];
+                               break;
+                       }
+               }
+
+               /**
+                * Filter the table alias identified as compatible with the current clause.
+                *
+                * @since 4.1.0
+                *
+                * @param string|bool $alias        Table alias, or false if none was found.
+                * @param array       $clause       First-order query clause.
+                * @param array       $parent_query Parent of $clause.
+                * @param object      $this         WP_Meta_Query object.
+                */
+               return apply_filters( 'meta_query_find_compatible_table_alias', $alias, $clause, $parent_query, $this ) ;
+       }
+
+       /**
+        * Checks whether the current query has any OR relations.
+        *
+        * In some cases, the presence of an OR relation somewhere in the query will require
+        * the use of a `DISTINCT` or `GROUP BY` keyword in the `SELECT` clause. The current
+        * method can be used in these cases to determine whether such a clause is necessary.
+        *
+        * @since 4.3.0
+        *
+        * @return bool True if the query contains any `OR` relations, otherwise false.
+        */
+       public function has_or_relation() {
+               return $this->has_or_relation;
+       }
+}
diff --git a/wp-includes/class-wp-network.php b/wp-includes/class-wp-network.php
new file mode 100644 (file)
index 0000000..0ccafaf
--- /dev/null
@@ -0,0 +1,331 @@
+<?php
+/**
+ * Network API: WP_Network class
+ *
+ * @package WordPress
+ * @subpackage Multisite
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used for interacting with a multisite network.
+ *
+ * This class is used during load to populate the `$current_site` global and
+ * setup the current network.
+ *
+ * This class is most useful in WordPress multi-network installations where the
+ * ability to interact with any network of sites is required.
+ *
+ * @since 4.4.0
+ */
+class WP_Network {
+
+       /**
+        * Network ID.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $id;
+
+       /**
+        * Domain of the network.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $domain = '';
+
+       /**
+        * Path of the network.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $path = '';
+
+       /**
+        * The ID of the network's main site.
+        *
+        * Named "blog" vs. "site" for legacy reasons. A main site is mapped to
+        * the network when the network is created.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $blog_id = 0;
+
+       /**
+        * Domain used to set cookies for this network.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $cookie_domain = '';
+
+       /**
+        * Name of this network.
+        *
+        * Named "site" vs. "network" for legacy reasons.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $site_name = '';
+
+       /**
+        * Retrieve a network from the database by its ID.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param int $network_id The ID of the network to retrieve.
+        * @return WP_Network|bool The network's object if found. False if not.
+        */
+       public static function get_instance( $network_id ) {
+               global $wpdb;
+
+               $network_id = (int) $network_id;
+               if ( ! $network_id ) {
+                       return false;
+               }
+
+               $_network = wp_cache_get( $network_id, 'networks' );
+
+               if ( ! $_network ) {
+                       $_network = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->site} WHERE id = %d LIMIT 1", $network_id ) );
+
+                       if ( empty( $_network ) || is_wp_error( $_network ) ) {
+                               return false;
+                       }
+
+                       wp_cache_add( $network_id, $_network, 'networks' );
+               }
+
+               return new WP_Network( $_network );
+       }
+
+       /**
+        * Create a new WP_Network object.
+        *
+        * Will populate object properties from the object provided and assign other
+        * default properties based on that information.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param WP_Network|object $network A network object.
+        */
+       public function __construct( $network ) {
+               foreach( get_object_vars( $network ) as $key => $value ) {
+                       $this->$key = $value;
+               }
+
+               $this->_set_site_name();
+               $this->_set_cookie_domain();
+       }
+
+       /**
+        * Set the site name assigned to the network if one has not been populated.
+        *
+        * @since 4.4.0
+        * @access private
+        */
+       private function _set_site_name() {
+               if ( ! empty( $this->site_name ) ) {
+                       return;
+               }
+
+               $default = ucfirst( $this->domain );
+               $this->site_name = get_network_option( $this->id, 'site_name', $default );
+       }
+
+       /**
+        * Set the cookie domain based on the network domain if one has
+        * not been populated.
+        *
+        * @todo What if the domain of the network doesn't match the current site?
+        *
+        * @since 4.4.0
+        * @access private
+        */
+       private function _set_cookie_domain() {
+               if ( ! empty( $this->cookie_domain ) ) {
+                       return;
+               }
+
+               $this->cookie_domain = $this->domain;
+               if ( 'www.' === substr( $this->cookie_domain, 0, 4 ) ) {
+                       $this->cookie_domain = substr( $this->cookie_domain, 4 );
+               }
+       }
+
+       /**
+        * Retrieve the closest matching network for a domain and path.
+        *
+        * This will not necessarily return an exact match for a domain and path. Instead, it
+        * breaks the domain and path into pieces that are then used to match the closest
+        * possibility from a query.
+        *
+        * The intent of this method is to match a network during bootstrap for a
+        * requested site address.
+        *
+        * @since 4.4.0
+        * @access public
+        * @static
+        *
+        * @param string   $domain   Domain to check.
+        * @param string   $path     Path to check.
+        * @param int|null $segments Path segments to use. Defaults to null, or the full path.
+        * @return WP_Network|bool Network object if successful. False when no network is found.
+        */
+       public static function get_by_path( $domain = '', $path = '', $segments = null ) {
+               global $wpdb;
+
+               $domains = array( $domain );
+               $pieces  = explode( '.', $domain );
+
+               /*
+                * It's possible one domain to search is 'com', but it might as well
+                * be 'localhost' or some other locally mapped domain.
+                */
+               while ( array_shift( $pieces ) ) {
+                       if ( ! empty( $pieces ) ) {
+                               $domains[] = implode( '.', $pieces );
+                       }
+               }
+
+               /*
+                * If we've gotten to this function during normal execution, there is
+                * more than one network installed. At this point, who knows how many
+                * we have. Attempt to optimize for the situation where networks are
+                * only domains, thus meaning paths never need to be considered.
+                *
+                * This is a very basic optimization; anything further could have
+                * drawbacks depending on the setup, so this is best done per-install.
+                */
+               $using_paths = true;
+               if ( wp_using_ext_object_cache() ) {
+                       $using_paths = wp_cache_get( 'networks_have_paths', 'site-options' );
+                       if ( false === $using_paths ) {
+                               $using_paths = (int) $wpdb->get_var( "SELECT id FROM {$wpdb->site} WHERE path <> '/' LIMIT 1" );
+                               wp_cache_add( 'networks_have_paths', $using_paths, 'site-options'  );
+                       }
+               }
+
+               $paths = array();
+               if ( $using_paths ) {
+                       $path_segments = array_filter( explode( '/', trim( $path, '/' ) ) );
+
+                       /**
+                        * Filter the number of path segments to consider when searching for a site.
+                        *
+                        * @since 3.9.0
+                        *
+                        * @param int|null $segments The number of path segments to consider. WordPress by default looks at
+                        *                           one path segment. The function default of null only makes sense when you
+                        *                           know the requested path should match a network.
+                        * @param string   $domain   The requested domain.
+                        * @param string   $path     The requested path, in full.
+                        */
+                       $segments = apply_filters( 'network_by_path_segments_count', $segments, $domain, $path );
+
+                       if ( ( null !== $segments ) && count( $path_segments ) > $segments ) {
+                               $path_segments = array_slice( $path_segments, 0, $segments );
+                       }
+
+                       while ( count( $path_segments ) ) {
+                               $paths[] = '/' . implode( '/', $path_segments ) . '/';
+                               array_pop( $path_segments );
+                       }
+
+                       $paths[] = '/';
+               }
+
+               /**
+                * Determine a network by its domain and path.
+                *
+                * This allows one to short-circuit the default logic, perhaps by
+                * replacing it with a routine that is more optimal for your setup.
+                *
+                * Return null to avoid the short-circuit. Return false if no network
+                * can be found at the requested domain and path. Otherwise, return
+                * an object from wp_get_network().
+                *
+                * @since 3.9.0
+                *
+                * @param null|bool|object $network  Network value to return by path.
+                * @param string           $domain   The requested domain.
+                * @param string           $path     The requested path, in full.
+                * @param int|null         $segments The suggested number of paths to consult.
+                *                                   Default null, meaning the entire path was to be consulted.
+                * @param array            $paths    The paths to search for, based on $path and $segments.
+                */
+               $pre = apply_filters( 'pre_get_network_by_path', null, $domain, $path, $segments, $paths );
+               if ( null !== $pre ) {
+                       return $pre;
+               }
+
+               // @todo Consider additional optimization routes, perhaps as an opt-in for plugins.
+               // We already have paths covered. What about how far domains should be drilled down (including www)?
+
+               $search_domains = "'" . implode( "', '", $wpdb->_escape( $domains ) ) . "'";
+
+               if ( ! $using_paths ) {
+                       $network = $wpdb->get_row( "
+                               SELECT * FROM {$wpdb->site}
+                               WHERE domain IN ({$search_domains})
+                               ORDER BY CHAR_LENGTH(domain)
+                               DESC LIMIT 1
+                       " );
+
+                       if ( ! empty( $network ) && ! is_wp_error( $network ) ) {
+                               return new WP_Network( $network );
+                       }
+
+                       return false;
+
+               } else {
+                       $search_paths = "'" . implode( "', '", $wpdb->_escape( $paths ) ) . "'";
+                       $networks = $wpdb->get_results( "
+                               SELECT * FROM {$wpdb->site}
+                               WHERE domain IN ({$search_domains})
+                               AND path IN ({$search_paths})
+                               ORDER BY CHAR_LENGTH(domain) DESC, CHAR_LENGTH(path) DESC
+                       " );
+               }
+
+               /*
+                * Domains are sorted by length of domain, then by length of path.
+                * The domain must match for the path to be considered. Otherwise,
+                * a network with the path of / will suffice.
+                */
+               $found = false;
+               foreach ( $networks as $network ) {
+                       if ( ( $network->domain === $domain ) || ( "www.{$network->domain}" === $domain ) ) {
+                               if ( in_array( $network->path, $paths, true ) ) {
+                                       $found = true;
+                                       break;
+                               }
+                       }
+                       if ( $network->path === '/' ) {
+                               $found = true;
+                               break;
+                       }
+               }
+
+               if ( true === $found ) {
+                       return new WP_Network( $network );
+               }
+
+               return false;
+       }
+}
diff --git a/wp-includes/class-wp-oembed-controller.php b/wp-includes/class-wp-oembed-controller.php
new file mode 100644 (file)
index 0000000..dbb4e3e
--- /dev/null
@@ -0,0 +1,87 @@
+<?php
+/**
+ * WP_oEmbed_Controller class, used to provide an oEmbed endpoint.
+ *
+ * @package WordPress
+ * @subpackage Embeds
+ * @since 4.4.0
+ */
+
+/**
+ * oEmbed API endpoint controller.
+ *
+ * Registers the API route and delivers the response data.
+ * The output format (XML or JSON) is handled by the REST API.
+ *
+ * @since 4.4.0
+ */
+final class WP_oEmbed_Controller {
+       /**
+        * Register the oEmbed REST API route.
+        *
+        * @since 4.4.0
+        */
+       public function register_routes() {
+               /**
+                * Filter the maxwidth oEmbed parameter.
+                *
+                * @since 4.4.0
+                *
+                * @param int $maxwidth Maximum allowed width. Default 600.
+                */
+               $maxwidth = apply_filters( 'oembed_default_width', 600 );
+
+               register_rest_route( 'oembed/1.0', '/embed', array(
+                       array(
+                               'methods'  => WP_REST_Server::READABLE,
+                               'callback' => array( $this, 'get_item' ),
+                               'args'     => array(
+                                       'url'      => array(
+                                               'required'          => true,
+                                               'sanitize_callback' => 'esc_url_raw',
+                                       ),
+                                       'format'   => array(
+                                               'default'           => 'json',
+                                               'sanitize_callback' => 'wp_oembed_ensure_format',
+                                       ),
+                                       'maxwidth' => array(
+                                               'default'           => $maxwidth,
+                                               'sanitize_callback' => 'absint',
+                                       ),
+                               ),
+                       ),
+               ) );
+       }
+
+       /**
+        * Callback for the API endpoint.
+        *
+        * Returns the JSON object for the post.
+        *
+        * @since 4.4.0
+        *
+        * @param WP_REST_Request $request Full data about the request.
+        * @return WP_Error|array oEmbed response data or WP_Error on failure.
+        */
+       public function get_item( $request ) {
+               $post_id = url_to_postid( $request['url'] );
+
+               /**
+                * Filter the determined post ID.
+                *
+                * @since 4.4.0
+                *
+                * @param int    $post_id The post ID.
+                * @param string $url     The requested URL.
+                */
+               $post_id = apply_filters( 'oembed_request_post_id', $post_id, $request['url'] );
+
+               $data = get_oembed_response_data( $post_id, $request['maxwidth'] );
+
+               if ( ! $data ) {
+                       return new WP_Error( 'oembed_invalid_url', get_status_header_desc( 404 ), array( 'status' => 404 ) );
+               }
+
+               return $data;
+       }
+}
diff --git a/wp-includes/class-wp-post.php b/wp-includes/class-wp-post.php
new file mode 100644 (file)
index 0000000..5904e58
--- /dev/null
@@ -0,0 +1,340 @@
+<?php
+/**
+ * Post API: WP_Post class
+ *
+ * @package WordPress
+ * @subpackage Post
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement the WP_Post object.
+ *
+ * @since 3.5.0
+ *
+ * @property string $page_template
+ *
+ * @property-read array  $ancestors
+ * @property-read int    $post_category
+ * @property-read string $tag_input
+ *
+ */
+final class WP_Post {
+
+       /**
+        * Post ID.
+        *
+        * @var int
+        */
+       public $ID;
+
+       /**
+        * ID of post author.
+        *
+        * A numeric string, for compatibility reasons.
+        *
+        * @var string
+        */
+       public $post_author = 0;
+
+       /**
+        * The post's local publication time.
+        *
+        * @var string
+        */
+       public $post_date = '0000-00-00 00:00:00';
+
+       /**
+        * The post's GMT publication time.
+        *
+        * @var string
+        */
+       public $post_date_gmt = '0000-00-00 00:00:00';
+
+       /**
+        * The post's content.
+        *
+        * @var string
+        */
+       public $post_content = '';
+
+       /**
+        * The post's title.
+        *
+        * @var string
+        */
+       public $post_title = '';
+
+       /**
+        * The post's excerpt.
+        *
+        * @var string
+        */
+       public $post_excerpt = '';
+
+       /**
+        * The post's status.
+        *
+        * @var string
+        */
+       public $post_status = 'publish';
+
+       /**
+        * Whether comments are allowed.
+        *
+        * @var string
+        */
+       public $comment_status = 'open';
+
+       /**
+        * Whether pings are allowed.
+        *
+        * @var string
+        */
+       public $ping_status = 'open';
+
+       /**
+        * The post's password in plain text.
+        *
+        * @var string
+        */
+       public $post_password = '';
+
+       /**
+        * The post's slug.
+        *
+        * @var string
+        */
+       public $post_name = '';
+
+       /**
+        * URLs queued to be pinged.
+        *
+        * @var string
+        */
+       public $to_ping = '';
+
+       /**
+        * URLs that have been pinged.
+        *
+        * @var string
+        */
+       public $pinged = '';
+
+       /**
+        * The post's local modified time.
+        *
+        * @var string
+        */
+       public $post_modified = '0000-00-00 00:00:00';
+
+       /**
+        * The post's GMT modified time.
+        *
+        * @var string
+        */
+       public $post_modified_gmt = '0000-00-00 00:00:00';
+
+       /**
+        * A utility DB field for post content.
+        *
+        *
+        * @var string
+        */
+       public $post_content_filtered = '';
+
+       /**
+        * ID of a post's parent post.
+        *
+        * @var int
+        */
+       public $post_parent = 0;
+
+       /**
+        * The unique identifier for a post, not necessarily a URL, used as the feed GUID.
+        *
+        * @var string
+        */
+       public $guid = '';
+
+       /**
+        * A field used for ordering posts.
+        *
+        * @var int
+        */
+       public $menu_order = 0;
+
+       /**
+        * The post's type, like post or page.
+        *
+        * @var string
+        */
+       public $post_type = 'post';
+
+       /**
+        * An attachment's mime type.
+        *
+        * @var string
+        */
+       public $post_mime_type = '';
+
+       /**
+        * Cached comment count.
+        *
+        * A numeric string, for compatibility reasons.
+        *
+        * @var string
+        */
+       public $comment_count = 0;
+
+       /**
+        * Stores the post object's sanitization level.
+        *
+        * Does not correspond to a DB field.
+        *
+        * @var string
+        */
+       public $filter;
+
+       /**
+        * Retrieve WP_Post instance.
+        *
+        * @static
+        * @access public
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param int $post_id Post ID.
+        * @return WP_Post|false Post object, false otherwise.
+        */
+       public static function get_instance( $post_id ) {
+               global $wpdb;
+
+               $post_id = (int) $post_id;
+               if ( ! $post_id )
+                       return false;
+
+               $_post = wp_cache_get( $post_id, 'posts' );
+
+               if ( ! $_post ) {
+                       $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post_id ) );
+
+                       if ( ! $_post )
+                               return false;
+
+                       $_post = sanitize_post( $_post, 'raw' );
+                       wp_cache_add( $_post->ID, $_post, 'posts' );
+               } elseif ( empty( $_post->filter ) ) {
+                       $_post = sanitize_post( $_post, 'raw' );
+               }
+
+               return new WP_Post( $_post );
+       }
+
+       /**
+        * Constructor.
+        *
+        * @param WP_Post|object $post Post object.
+        */
+       public function __construct( $post ) {
+               foreach ( get_object_vars( $post ) as $key => $value )
+                       $this->$key = $value;
+       }
+
+       /**
+        * Isset-er.
+        *
+        * @param string $key Property to check if set.
+        * @return bool
+        */
+       public function __isset( $key ) {
+               if ( 'ancestors' == $key )
+                       return true;
+
+               if ( 'page_template' == $key )
+                       return ( 'page' == $this->post_type );
+
+               if ( 'post_category' == $key )
+                  return true;
+
+               if ( 'tags_input' == $key )
+                  return true;
+
+               return metadata_exists( 'post', $this->ID, $key );
+       }
+
+       /**
+        * Getter.
+        *
+        * @param string $key Key to get.
+        * @return mixed
+        */
+       public function __get( $key ) {
+               if ( 'page_template' == $key && $this->__isset( $key ) ) {
+                       return get_post_meta( $this->ID, '_wp_page_template', true );
+               }
+
+               if ( 'post_category' == $key ) {
+                       if ( is_object_in_taxonomy( $this->post_type, 'category' ) )
+                               $terms = get_the_terms( $this, 'category' );
+
+                       if ( empty( $terms ) )
+                               return array();
+
+                       return wp_list_pluck( $terms, 'term_id' );
+               }
+
+               if ( 'tags_input' == $key ) {
+                       if ( is_object_in_taxonomy( $this->post_type, 'post_tag' ) )
+                               $terms = get_the_terms( $this, 'post_tag' );
+
+                       if ( empty( $terms ) )
+                               return array();
+
+                       return wp_list_pluck( $terms, 'name' );
+               }
+
+               // Rest of the values need filtering.
+               if ( 'ancestors' == $key )
+                       $value = get_post_ancestors( $this );
+               else
+                       $value = get_post_meta( $this->ID, $key, true );
+
+               if ( $this->filter )
+                       $value = sanitize_post_field( $key, $value, $this->ID, $this->filter );
+
+               return $value;
+       }
+
+       /**
+        * {@Missing Summary}
+        *
+        * @param string $filter Filter.
+        * @return self|array|bool|object|WP_Post
+        */
+       public function filter( $filter ) {
+               if ( $this->filter == $filter )
+                       return $this;
+
+               if ( $filter == 'raw' )
+                       return self::get_instance( $this->ID );
+
+               return sanitize_post( $this, $filter );
+       }
+
+       /**
+        * Convert object to array.
+        *
+        * @return array Object as array.
+        */
+       public function to_array() {
+               $post = get_object_vars( $this );
+
+               foreach ( array( 'ancestors', 'page_template', 'post_category', 'tags_input' ) as $key ) {
+                       if ( $this->__isset( $key ) )
+                               $post[ $key ] = $this->__get( $key );
+               }
+
+               return $post;
+       }
+}
diff --git a/wp-includes/class-wp-rewrite.php b/wp-includes/class-wp-rewrite.php
new file mode 100644 (file)
index 0000000..1773929
--- /dev/null
@@ -0,0 +1,1910 @@
+<?php
+/**
+ * Rewrite API: WP_Rewrite class
+ *
+ * @package WordPress
+ * @subpackage Rewrite
+ * @since 1.5.0
+ */
+
+/**
+ * Core class used to implement a rewrite component API.
+ *
+ * The WordPress Rewrite class writes the rewrite module rules to the .htaccess
+ * file. It also handles parsing the request to get the correct setup for the
+ * WordPress Query class.
+ *
+ * The Rewrite along with WP class function as a front controller for WordPress.
+ * You can add rules to trigger your page view and processing using this
+ * component. The full functionality of a front controller does not exist,
+ * meaning you can't define how the template files load based on the rewrite
+ * rules.
+ *
+ * @since 1.5.0
+ */
+class WP_Rewrite {
+       /**
+        * Permalink structure for posts.
+        *
+        * @since 1.5.0
+        * @var string
+        */
+       public $permalink_structure;
+
+       /**
+        * Whether to add trailing slashes.
+        *
+        * @since 2.2.0
+        * @var bool
+        */
+       public $use_trailing_slashes;
+
+       /**
+        * Base for the author permalink structure (example.com/$author_base/authorname).
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $author_base = 'author';
+
+       /**
+        * Permalink structure for author archives.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $author_structure;
+
+       /**
+        * Permalink structure for date archives.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $date_structure;
+
+       /**
+        * Permalink structure for pages.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $page_structure;
+
+       /**
+        * Base of the search permalink structure (example.com/$search_base/query).
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $search_base = 'search';
+
+       /**
+        * Permalink structure for searches.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $search_structure;
+
+       /**
+        * Comments permalink base.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $comments_base = 'comments';
+
+       /**
+        * Pagination permalink base.
+        *
+        * @since 3.1.0
+        * @var string
+        */
+       public $pagination_base = 'page';
+
+       /**
+        * Comments pagination permalink base.
+        *
+        * @since 4.2.0
+        * @access private
+        * @var string
+        */
+       var $comments_pagination_base = 'comment-page';
+
+       /**
+        * Feed permalink base.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $feed_base = 'feed';
+
+       /**
+        * Comments feed permalink structure.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $comment_feed_structure;
+
+       /**
+        * Feed request permalink structure.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $feed_structure;
+
+       /**
+        * The static portion of the post permalink structure.
+        *
+        * If the permalink structure is "/archive/%post_id%" then the front
+        * is "/archive/". If the permalink structure is "/%year%/%postname%/"
+        * then the front is "/".
+        *
+        * @since 1.5.0
+        * @access public
+        * @var string
+        *
+        * @see WP_Rewrite::init()
+        */
+       public $front;
+
+       /**
+        * The prefix for all permalink structures.
+        *
+        * If PATHINFO/index permalinks are in use then the root is the value of
+        * `WP_Rewrite::$index` with a trailing slash appended. Otherwise the root
+        * will be empty.
+        *
+        * @since 1.5.0
+        * @access public
+        * @var string
+        *
+        * @see WP_Rewrite::init()
+        * @see WP_Rewrite::using_index_permalinks()
+        */
+       public $root = '';
+
+       /**
+        * The name of the index file which is the entry point to all requests.
+        *
+        * @since 1.5.0
+        * @access public
+        * @var string
+        */
+       public $index = 'index.php';
+
+       /**
+        * Variable name to use for regex matches in the rewritten query.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var string
+        */
+       var $matches = '';
+
+       /**
+        * Rewrite rules to match against the request to find the redirect or query.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var array
+        */
+       var $rules;
+
+       /**
+        * Additional rules added external to the rewrite class.
+        *
+        * Those not generated by the class, see add_rewrite_rule().
+        *
+        * @since 2.1.0
+        * @access private
+        * @var array
+        */
+       var $extra_rules = array();
+
+       /**
+        * Additional rules that belong at the beginning to match first.
+        *
+        * Those not generated by the class, see add_rewrite_rule().
+        *
+        * @since 2.3.0
+        * @access private
+        * @var array
+        */
+       var $extra_rules_top = array();
+
+       /**
+        * Rules that don't redirect to WordPress' index.php.
+        *
+        * These rules are written to the mod_rewrite portion of the .htaccess,
+        * and are added by add_external_rule().
+        *
+        * @since 2.1.0
+        * @access private
+        * @var array
+        */
+       var $non_wp_rules = array();
+
+       /**
+        * Extra permalink structures, e.g. categories, added by add_permastruct().
+        *
+        * @since 2.1.0
+        * @access private
+        * @var array
+        */
+       var $extra_permastructs = array();
+
+       /**
+        * Endpoints (like /trackback/) added by add_rewrite_endpoint().
+        *
+        * @since 2.1.0
+        * @access private
+        * @var array
+        */
+       var $endpoints;
+
+       /**
+        * Whether to write every mod_rewrite rule for WordPress into the .htaccess file.
+        *
+        * This is off by default, turning it on might print a lot of rewrite rules
+        * to the .htaccess file.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var bool
+        *
+        * @see WP_Rewrite::mod_rewrite_rules()
+        */
+       public $use_verbose_rules = false;
+
+       /**
+        * Could post permalinks be confused with those of pages?
+        *
+        * If the first rewrite tag in the post permalink structure is one that could
+        * also match a page name (e.g. %postname% or %author%) then this flag is
+        * set to true. Prior to WordPress 3.3 this flag indicated that every page
+        * would have a set of rules added to the top of the rewrite rules array.
+        * Now it tells WP::parse_request() to check if a URL matching the page
+        * permastruct is actually a page before accepting it.
+        *
+        * @since 2.5.0
+        * @access public
+        * @var bool
+        *
+        * @see WP_Rewrite::init()
+        */
+       public $use_verbose_page_rules = true;
+
+       /**
+        * Rewrite tags that can be used in permalink structures.
+        *
+        * These are translated into the regular expressions stored in
+        * `WP_Rewrite::$rewritereplace` and are rewritten to the query
+        * variables listed in WP_Rewrite::$queryreplace.
+        *
+        * Additional tags can be added with add_rewrite_tag().
+        *
+        * @since 1.5.0
+        * @access private
+        * @var array
+        */
+       var $rewritecode = array(
+               '%year%',
+               '%monthnum%',
+               '%day%',
+               '%hour%',
+               '%minute%',
+               '%second%',
+               '%postname%',
+               '%post_id%',
+               '%author%',
+               '%pagename%',
+               '%search%'
+       );
+
+       /**
+        * Regular expressions to be substituted into rewrite rules in place
+        * of rewrite tags, see WP_Rewrite::$rewritecode.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var array
+        */
+       var $rewritereplace = array(
+               '([0-9]{4})',
+               '([0-9]{1,2})',
+               '([0-9]{1,2})',
+               '([0-9]{1,2})',
+               '([0-9]{1,2})',
+               '([0-9]{1,2})',
+               '([^/]+)',
+               '([0-9]+)',
+               '([^/]+)',
+               '([^/]+?)',
+               '(.+)'
+       );
+
+       /**
+        * Query variables that rewrite tags map to, see WP_Rewrite::$rewritecode.
+        *
+        * @since 1.5.0
+        * @access private
+        * @var array
+        */
+       var $queryreplace = array(
+               'year=',
+               'monthnum=',
+               'day=',
+               'hour=',
+               'minute=',
+               'second=',
+               'name=',
+               'p=',
+               'author_name=',
+               'pagename=',
+               's='
+       );
+
+       /**
+        * Supported default feeds.
+        *
+        * @since 1.5.0
+        * @var array
+        */
+       public $feeds = array( 'feed', 'rdf', 'rss', 'rss2', 'atom' );
+
+       /**
+        * Determines whether permalinks are being used.
+        *
+        * This can be either rewrite module or permalink in the HTTP query string.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return bool True, if permalinks are enabled.
+        */
+       public function using_permalinks() {
+               return ! empty($this->permalink_structure);
+       }
+
+       /**
+        * Determines whether permalinks are being used and rewrite module is not enabled.
+        *
+        * Means that permalink links are enabled and index.php is in the URL.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return bool Whether permalink links are enabled and index.php is in the URL.
+        */
+       public function using_index_permalinks() {
+               if ( empty( $this->permalink_structure ) ) {
+                       return false;
+               }
+
+               // If the index is not in the permalink, we're using mod_rewrite.
+               return preg_match( '#^/*' . $this->index . '#', $this->permalink_structure );
+       }
+
+       /**
+        * Determines whether permalinks are being used and rewrite module is enabled.
+        *
+        * Using permalinks and index.php is not in the URL.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return bool Whether permalink links are enabled and index.php is NOT in the URL.
+        */
+       public function using_mod_rewrite_permalinks() {
+               return $this->using_permalinks() && ! $this->using_index_permalinks();
+       }
+
+       /**
+        * Indexes for matches for usage in preg_*() functions.
+        *
+        * The format of the string is, with empty matches property value, '$NUM'.
+        * The 'NUM' will be replaced with the value in the $number parameter. With
+        * the matches property not empty, the value of the returned string will
+        * contain that value of the matches property. The format then will be
+        * '$MATCHES[NUM]', with MATCHES as the value in the property and NUM the
+        * value of the $number parameter.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @param int $number Index number.
+        * @return string
+        */
+       public function preg_index($number) {
+               $match_prefix = '$';
+               $match_suffix = '';
+
+               if ( ! empty($this->matches) ) {
+                       $match_prefix = '$' . $this->matches . '[';
+                       $match_suffix = ']';
+               }
+
+               return "$match_prefix$number$match_suffix";
+       }
+
+       /**
+        * Retrieves all page and attachments for pages URIs.
+        *
+        * The attachments are for those that have pages as parents and will be
+        * retrieved.
+        *
+        * @since 2.5.0
+        * @access public
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @return array Array of page URIs as first element and attachment URIs as second element.
+        */
+       public function page_uri_index() {
+               global $wpdb;
+
+               // Get pages in order of hierarchy, i.e. children after parents.
+               $pages = $wpdb->get_results("SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_type = 'page' AND post_status != 'auto-draft'");
+               $posts = get_page_hierarchy( $pages );
+
+               // If we have no pages get out quick.
+               if ( !$posts )
+                       return array( array(), array() );
+
+               // Now reverse it, because we need parents after children for rewrite rules to work properly.
+               $posts = array_reverse($posts, true);
+
+               $page_uris = array();
+               $page_attachment_uris = array();
+
+               foreach ( $posts as $id => $post ) {
+                       // URL => page name
+                       $uri = get_page_uri($id);
+                       $attachments = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $id ));
+                       if ( !empty($attachments) ) {
+                               foreach ( $attachments as $attachment ) {
+                                       $attach_uri = get_page_uri($attachment->ID);
+                                       $page_attachment_uris[$attach_uri] = $attachment->ID;
+                               }
+                       }
+
+                       $page_uris[$uri] = $id;
+               }
+
+               return array( $page_uris, $page_attachment_uris );
+       }
+
+       /**
+        * Retrieves all of the rewrite rules for pages.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return array Page rewrite rules.
+        */
+       public function page_rewrite_rules() {
+               // The extra .? at the beginning prevents clashes with other regular expressions in the rules array.
+               $this->add_rewrite_tag( '%pagename%', '(.?.+?)', 'pagename=' );
+
+               return $this->generate_rewrite_rules( $this->get_page_permastruct(), EP_PAGES, true, true, false, false );
+       }
+
+       /**
+        * Retrieves date permalink structure, with year, month, and day.
+        *
+        * The permalink structure for the date, if not set already depends on the
+        * permalink structure. It can be one of three formats. The first is year,
+        * month, day; the second is day, month, year; and the last format is month,
+        * day, year. These are matched against the permalink structure for which
+        * one is used. If none matches, then the default will be used, which is
+        * year, month, day.
+        *
+        * Prevents post ID and date permalinks from overlapping. In the case of
+        * post_id, the date permalink will be prepended with front permalink with
+        * 'date/' before the actual permalink to form the complete date permalink
+        * structure.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return string|false False on no permalink structure. Date permalink structure.
+        */
+       public function get_date_permastruct() {
+               if ( isset($this->date_structure) )
+                       return $this->date_structure;
+
+               if ( empty($this->permalink_structure) ) {
+                       $this->date_structure = '';
+                       return false;
+               }
+
+               // The date permalink must have year, month, and day separated by slashes.
+               $endians = array('%year%/%monthnum%/%day%', '%day%/%monthnum%/%year%', '%monthnum%/%day%/%year%');
+
+               $this->date_structure = '';
+               $date_endian = '';
+
+               foreach ( $endians as $endian ) {
+                       if ( false !== strpos($this->permalink_structure, $endian) ) {
+                               $date_endian= $endian;
+                               break;
+                       }
+               }
+
+               if ( empty($date_endian) )
+                       $date_endian = '%year%/%monthnum%/%day%';
+
+               /*
+                * Do not allow the date tags and %post_id% to overlap in the permalink
+                * structure. If they do, move the date tags to $front/date/.
+                */
+               $front = $this->front;
+               preg_match_all('/%.+?%/', $this->permalink_structure, $tokens);
+               $tok_index = 1;
+               foreach ( (array) $tokens[0] as $token) {
+                       if ( '%post_id%' == $token && ($tok_index <= 3) ) {
+                               $front = $front . 'date/';
+                               break;
+                       }
+                       $tok_index++;
+               }
+
+               $this->date_structure = $front . $date_endian;
+
+               return $this->date_structure;
+       }
+
+       /**
+        * Retrieves the year permalink structure without month and day.
+        *
+        * Gets the date permalink structure and strips out the month and day
+        * permalink structures.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return false|string False on failure. Year structure on success.
+        */
+       public function get_year_permastruct() {
+               $structure = $this->get_date_permastruct();
+
+               if ( empty($structure) )
+                       return false;
+
+               $structure = str_replace('%monthnum%', '', $structure);
+               $structure = str_replace('%day%', '', $structure);
+               $structure = preg_replace('#/+#', '/', $structure);
+
+               return $structure;
+       }
+
+       /**
+        * Retrieves the month permalink structure without day and with year.
+        *
+        * Gets the date permalink structure and strips out the day permalink
+        * structures. Keeps the year permalink structure.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return false|string False on failure. Year/Month structure on success.
+        */
+       public function get_month_permastruct() {
+               $structure = $this->get_date_permastruct();
+
+               if ( empty($structure) )
+                       return false;
+
+               $structure = str_replace('%day%', '', $structure);
+               $structure = preg_replace('#/+#', '/', $structure);
+
+               return $structure;
+       }
+
+       /**
+        * Retrieves the day permalink structure with month and year.
+        *
+        * Keeps date permalink structure with all year, month, and day.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return string|false False on failure. Year/Month/Day structure on success.
+        */
+       public function get_day_permastruct() {
+               return $this->get_date_permastruct();
+       }
+
+       /**
+        * Retrieves the permalink structure for categories.
+        *
+        * If the category_base property has no value, then the category structure
+        * will have the front property value, followed by 'category', and finally
+        * '%category%'. If it does, then the root property will be used, along with
+        * the category_base property value.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return string|false False on failure. Category permalink structure.
+        */
+       public function get_category_permastruct() {
+               return $this->get_extra_permastruct('category');
+       }
+
+       /**
+        * Retrieve the permalink structure for tags.
+        *
+        * If the tag_base property has no value, then the tag structure will have
+        * the front property value, followed by 'tag', and finally '%tag%'. If it
+        * does, then the root property will be used, along with the tag_base
+        * property value.
+        *
+        * @since 2.3.0
+        * @access public
+        *
+        * @return string|false False on failure. Tag permalink structure.
+        */
+       public function get_tag_permastruct() {
+               return $this->get_extra_permastruct('post_tag');
+       }
+
+       /**
+        * Retrieves an extra permalink structure by name.
+        *
+        * @since 2.5.0
+        * @access public
+        *
+        * @param string $name Permalink structure name.
+        * @return string|false False if not found. Permalink structure string.
+        */
+       public function get_extra_permastruct($name) {
+               if ( empty($this->permalink_structure) )
+                       return false;
+
+               if ( isset($this->extra_permastructs[$name]) )
+                       return $this->extra_permastructs[$name]['struct'];
+
+               return false;
+       }
+
+       /**
+        * Retrieves the author permalink structure.
+        *
+        * The permalink structure is front property, author base, and finally
+        * '/%author%'. Will set the author_structure property and then return it
+        * without attempting to set the value again.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return string|false False if not found. Permalink structure string.
+        */
+       public function get_author_permastruct() {
+               if ( isset($this->author_structure) )
+                       return $this->author_structure;
+
+               if ( empty($this->permalink_structure) ) {
+                       $this->author_structure = '';
+                       return false;
+               }
+
+               $this->author_structure = $this->front . $this->author_base . '/%author%';
+
+               return $this->author_structure;
+       }
+
+       /**
+        * Retrieves the search permalink structure.
+        *
+        * The permalink structure is root property, search base, and finally
+        * '/%search%'. Will set the search_structure property and then return it
+        * without attempting to set the value again.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return string|false False if not found. Permalink structure string.
+        */
+       public function get_search_permastruct() {
+               if ( isset($this->search_structure) )
+                       return $this->search_structure;
+
+               if ( empty($this->permalink_structure) ) {
+                       $this->search_structure = '';
+                       return false;
+               }
+
+               $this->search_structure = $this->root . $this->search_base . '/%search%';
+
+               return $this->search_structure;
+       }
+
+       /**
+        * Retrieves the page permalink structure.
+        *
+        * The permalink structure is root property, and '%pagename%'. Will set the
+        * page_structure property and then return it without attempting to set the
+        * value again.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return string|false False if not found. Permalink structure string.
+        */
+       public function get_page_permastruct() {
+               if ( isset($this->page_structure) )
+                       return $this->page_structure;
+
+               if (empty($this->permalink_structure)) {
+                       $this->page_structure = '';
+                       return false;
+               }
+
+               $this->page_structure = $this->root . '%pagename%';
+
+               return $this->page_structure;
+       }
+
+       /**
+        * Retrieves the feed permalink structure.
+        *
+        * The permalink structure is root property, feed base, and finally
+        * '/%feed%'. Will set the feed_structure property and then return it
+        * without attempting to set the value again.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return string|false False if not found. Permalink structure string.
+        */
+       public function get_feed_permastruct() {
+               if ( isset($this->feed_structure) )
+                       return $this->feed_structure;
+
+               if ( empty($this->permalink_structure) ) {
+                       $this->feed_structure = '';
+                       return false;
+               }
+
+               $this->feed_structure = $this->root . $this->feed_base . '/%feed%';
+
+               return $this->feed_structure;
+       }
+
+       /**
+        * Retrieves the comment feed permalink structure.
+        *
+        * The permalink structure is root property, comment base property, feed
+        * base and finally '/%feed%'. Will set the comment_feed_structure property
+        * and then return it without attempting to set the value again.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return string|false False if not found. Permalink structure string.
+        */
+       public function get_comment_feed_permastruct() {
+               if ( isset($this->comment_feed_structure) )
+                       return $this->comment_feed_structure;
+
+               if (empty($this->permalink_structure)) {
+                       $this->comment_feed_structure = '';
+                       return false;
+               }
+
+               $this->comment_feed_structure = $this->root . $this->comments_base . '/' . $this->feed_base . '/%feed%';
+
+               return $this->comment_feed_structure;
+       }
+
+       /**
+        * Adds or updates existing rewrite tags (e.g. %postname%).
+        *
+        * If the tag already exists, replace the existing pattern and query for
+        * that tag, otherwise add the new tag.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @see WP_Rewrite::$rewritecode
+        * @see WP_Rewrite::$rewritereplace
+        * @see WP_Rewrite::$queryreplace
+        *
+        * @param string $tag   Name of the rewrite tag to add or update.
+        * @param string $regex Regular expression to substitute the tag for in rewrite rules.
+        * @param string $query String to append to the rewritten query. Must end in '='.
+        */
+       public function add_rewrite_tag( $tag, $regex, $query ) {
+               $position = array_search( $tag, $this->rewritecode );
+               if ( false !== $position && null !== $position ) {
+                       $this->rewritereplace[ $position ] = $regex;
+                       $this->queryreplace[ $position ] = $query;
+               } else {
+                       $this->rewritecode[] = $tag;
+                       $this->rewritereplace[] = $regex;
+                       $this->queryreplace[] = $query;
+               }
+       }
+
+       /**
+        * Generates rewrite rules from a permalink structure.
+        *
+        * The main WP_Rewrite function for building the rewrite rule list. The
+        * contents of the function is a mix of black magic and regular expressions,
+        * so best just ignore the contents and move to the parameters.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @param string $permalink_structure The permalink structure.
+        * @param int    $ep_mask             Optional. Endpoint mask defining what endpoints are added to the structure.
+        *                                    Accepts `EP_NONE`, `EP_PERMALINK`, `EP_ATTACHMENT`, `EP_DATE`, `EP_YEAR`,
+        *                                    `EP_MONTH`, `EP_DAY`, `EP_ROOT`, `EP_COMMENTS`, `EP_SEARCH`, `EP_CATEGORIES`,
+        *                                    `EP_TAGS`, `EP_AUTHORS`, `EP_PAGES`, `EP_ALL_ARCHIVES`, and `EP_ALL`.
+        *                                    Default `EP_NONE`.
+        * @param bool   $paged               Optional. Whether archive pagination rules should be added for the structure.
+        *                                    Default true.
+        * @param bool   $feed                Optional Whether feed rewrite rules should be added for the structure.
+        *                                    Default true.
+        * @param bool   $forcomments         Optional. Whether the feed rules should be a query for a comments feed.
+        *                                    Default false.
+        * @param bool   $walk_dirs           Optional. Whether the 'directories' making up the structure should be walked
+        *                                    over and rewrite rules built for each in-turn. Default true.
+        * @param bool   $endpoints           Optional. Whether endpoints should be applied to the generated rewrite rules.
+        *                                    Default true.
+        * @return array Rewrite rule list.
+        */
+       public function generate_rewrite_rules($permalink_structure, $ep_mask = EP_NONE, $paged = true, $feed = true, $forcomments = false, $walk_dirs = true, $endpoints = true) {
+               // Build a regex to match the feed section of URLs, something like (feed|atom|rss|rss2)/?
+               $feedregex2 = '';
+               foreach ( (array) $this->feeds as $feed_name)
+                       $feedregex2 .= $feed_name . '|';
+               $feedregex2 = '(' . trim($feedregex2, '|') . ')/?$';
+
+               /*
+                * $feedregex is identical but with /feed/ added on as well, so URLs like <permalink>/feed/atom
+                * and <permalink>/atom are both possible
+                */
+               $feedregex = $this->feed_base . '/' . $feedregex2;
+
+               // Build a regex to match the trackback and page/xx parts of URLs.
+               $trackbackregex = 'trackback/?$';
+               $pageregex = $this->pagination_base . '/?([0-9]{1,})/?$';
+               $commentregex = $this->comments_pagination_base . '-([0-9]{1,})/?$';
+               $embedregex = 'embed/?$';
+
+               // Build up an array of endpoint regexes to append => queries to append.
+               if ( $endpoints ) {
+                       $ep_query_append = array ();
+                       foreach ( (array) $this->endpoints as $endpoint) {
+                               // Match everything after the endpoint name, but allow for nothing to appear there.
+                               $epmatch = $endpoint[1] . '(/(.*))?/?$';
+
+                               // This will be appended on to the rest of the query for each dir.
+                               $epquery = '&' . $endpoint[2] . '=';
+                               $ep_query_append[$epmatch] = array ( $endpoint[0], $epquery );
+                       }
+               }
+
+               // Get everything up to the first rewrite tag.
+               $front = substr($permalink_structure, 0, strpos($permalink_structure, '%'));
+
+               // Build an array of the tags (note that said array ends up being in $tokens[0]).
+               preg_match_all('/%.+?%/', $permalink_structure, $tokens);
+
+               $num_tokens = count($tokens[0]);
+
+               $index = $this->index; //probably 'index.php'
+               $feedindex = $index;
+               $trackbackindex = $index;
+               $embedindex = $index;
+
+               /*
+                * Build a list from the rewritecode and queryreplace arrays, that will look something
+                * like tagname=$matches[i] where i is the current $i.
+                */
+               $queries = array();
+               for ( $i = 0; $i < $num_tokens; ++$i ) {
+                       if ( 0 < $i )
+                               $queries[$i] = $queries[$i - 1] . '&';
+                       else
+                               $queries[$i] = '';
+
+                       $query_token = str_replace($this->rewritecode, $this->queryreplace, $tokens[0][$i]) . $this->preg_index($i+1);
+                       $queries[$i] .= $query_token;
+               }
+
+               // Get the structure, minus any cruft (stuff that isn't tags) at the front.
+               $structure = $permalink_structure;
+               if ( $front != '/' )
+                       $structure = str_replace($front, '', $structure);
+
+               /*
+                * Create a list of dirs to walk over, making rewrite rules for each level
+                * so for example, a $structure of /%year%/%monthnum%/%postname% would create
+                * rewrite rules for /%year%/, /%year%/%monthnum%/ and /%year%/%monthnum%/%postname%
+                */
+               $structure = trim($structure, '/');
+               $dirs = $walk_dirs ? explode('/', $structure) : array( $structure );
+               $num_dirs = count($dirs);
+
+               // Strip slashes from the front of $front.
+               $front = preg_replace('|^/+|', '', $front);
+
+               // The main workhorse loop.
+               $post_rewrite = array();
+               $struct = $front;
+               for ( $j = 0; $j < $num_dirs; ++$j ) {
+                       // Get the struct for this dir, and trim slashes off the front.
+                       $struct .= $dirs[$j] . '/'; // Accumulate. see comment near explode('/', $structure) above.
+                       $struct = ltrim($struct, '/');
+
+                       // Replace tags with regexes.
+                       $match = str_replace($this->rewritecode, $this->rewritereplace, $struct);
+
+                       // Make a list of tags, and store how many there are in $num_toks.
+                       $num_toks = preg_match_all('/%.+?%/', $struct, $toks);
+
+                       // Get the 'tagname=$matches[i]'.
+                       $query = ( ! empty( $num_toks ) && isset( $queries[$num_toks - 1] ) ) ? $queries[$num_toks - 1] : '';
+
+                       // Set up $ep_mask_specific which is used to match more specific URL types.
+                       switch ( $dirs[$j] ) {
+                               case '%year%':
+                                       $ep_mask_specific = EP_YEAR;
+                                       break;
+                               case '%monthnum%':
+                                       $ep_mask_specific = EP_MONTH;
+                                       break;
+                               case '%day%':
+                                       $ep_mask_specific = EP_DAY;
+                                       break;
+                               default:
+                                       $ep_mask_specific = EP_NONE;
+                       }
+
+                       // Create query for /page/xx.
+                       $pagematch = $match . $pageregex;
+                       $pagequery = $index . '?' . $query . '&paged=' . $this->preg_index($num_toks + 1);
+
+                       // Create query for /comment-page-xx.
+                       $commentmatch = $match . $commentregex;
+                       $commentquery = $index . '?' . $query . '&cpage=' . $this->preg_index($num_toks + 1);
+
+                       if ( get_option('page_on_front') ) {
+                               // Create query for Root /comment-page-xx.
+                               $rootcommentmatch = $match . $commentregex;
+                               $rootcommentquery = $index . '?' . $query . '&page_id=' . get_option('page_on_front') . '&cpage=' . $this->preg_index($num_toks + 1);
+                       }
+
+                       // Create query for /feed/(feed|atom|rss|rss2|rdf).
+                       $feedmatch = $match . $feedregex;
+                       $feedquery = $feedindex . '?' . $query . '&feed=' . $this->preg_index($num_toks + 1);
+
+                       // Create query for /(feed|atom|rss|rss2|rdf) (see comment near creation of $feedregex).
+                       $feedmatch2 = $match . $feedregex2;
+                       $feedquery2 = $feedindex . '?' . $query . '&feed=' . $this->preg_index($num_toks + 1);
+
+                       // If asked to, turn the feed queries into comment feed ones.
+                       if ( $forcomments ) {
+                               $feedquery .= '&withcomments=1';
+                               $feedquery2 .= '&withcomments=1';
+                       }
+
+                       // Start creating the array of rewrites for this dir.
+                       $rewrite = array();
+
+                       // ...adding on /feed/ regexes => queries
+                       if ( $feed ) {
+                               $rewrite = array( $feedmatch => $feedquery, $feedmatch2 => $feedquery2 );
+                       }
+
+                       //...and /page/xx ones
+                       if ( $paged ) {
+                               $rewrite = array_merge( $rewrite, array( $pagematch => $pagequery ) );
+                       }
+
+                       // Only on pages with comments add ../comment-page-xx/.
+                       if ( EP_PAGES & $ep_mask || EP_PERMALINK & $ep_mask ) {
+                               $rewrite = array_merge($rewrite, array($commentmatch => $commentquery));
+                       } elseif ( EP_ROOT & $ep_mask && get_option('page_on_front') ) {
+                               $rewrite = array_merge($rewrite, array($rootcommentmatch => $rootcommentquery));
+                       }
+
+                       // Do endpoints.
+                       if ( $endpoints ) {
+                               foreach ( (array) $ep_query_append as $regex => $ep) {
+                                       // Add the endpoints on if the mask fits.
+                                       if ( $ep[0] & $ep_mask || $ep[0] & $ep_mask_specific )
+                                               $rewrite[$match . $regex] = $index . '?' . $query . $ep[1] . $this->preg_index($num_toks + 2);
+                               }
+                       }
+
+                       // If we've got some tags in this dir.
+                       if ( $num_toks ) {
+                               $post = false;
+                               $page = false;
+
+                               /*
+                                * Check to see if this dir is permalink-level: i.e. the structure specifies an
+                                * individual post. Do this by checking it contains at least one of 1) post name,
+                                * 2) post ID, 3) page name, 4) timestamp (year, month, day, hour, second and
+                                * minute all present). Set these flags now as we need them for the endpoints.
+                                */
+                               if ( strpos($struct, '%postname%') !== false
+                                               || strpos($struct, '%post_id%') !== false
+                                               || strpos($struct, '%pagename%') !== false
+                                               || (strpos($struct, '%year%') !== false && strpos($struct, '%monthnum%') !== false && strpos($struct, '%day%') !== false && strpos($struct, '%hour%') !== false && strpos($struct, '%minute%') !== false && strpos($struct, '%second%') !== false)
+                                               ) {
+                                       $post = true;
+                                       if ( strpos($struct, '%pagename%') !== false )
+                                               $page = true;
+                               }
+
+                               if ( ! $post ) {
+                                       // For custom post types, we need to add on endpoints as well.
+                                       foreach ( get_post_types( array('_builtin' => false ) ) as $ptype ) {
+                                               if ( strpos($struct, "%$ptype%") !== false ) {
+                                                       $post = true;
+
+                                                       // This is for page style attachment URLs.
+                                                       $page = is_post_type_hierarchical( $ptype );
+                                                       break;
+                                               }
+                                       }
+                               }
+
+                               // If creating rules for a permalink, do all the endpoints like attachments etc.
+                               if ( $post ) {
+                                       // Create query and regex for trackback.
+                                       $trackbackmatch = $match . $trackbackregex;
+                                       $trackbackquery = $trackbackindex . '?' . $query . '&tb=1';
+
+                                       // Create query and regex for embeds.
+                                       $embedmatch = $match . $embedregex;
+                                       $embedquery = $embedindex . '?' . $query . '&embed=true';
+
+                                       // Trim slashes from the end of the regex for this dir.
+                                       $match = rtrim($match, '/');
+
+                                       // Get rid of brackets.
+                                       $submatchbase = str_replace( array('(', ')'), '', $match);
+
+                                       // Add a rule for at attachments, which take the form of <permalink>/some-text.
+                                       $sub1 = $submatchbase . '/([^/]+)/';
+
+                                       // Add trackback regex <permalink>/trackback/...
+                                       $sub1tb = $sub1 . $trackbackregex;
+
+                                       // And <permalink>/feed/(atom|...)
+                                       $sub1feed = $sub1 . $feedregex;
+
+                                       // And <permalink>/(feed|atom...)
+                                       $sub1feed2 = $sub1 . $feedregex2;
+
+                                       // And <permalink>/comment-page-xx
+                                       $sub1comment = $sub1 . $commentregex;
+
+                                       // And <permalink>/embed/...
+                                       $sub1embed = $sub1 . $embedregex;
+
+                                       /*
+                                        * Add another rule to match attachments in the explicit form:
+                                        * <permalink>/attachment/some-text
+                                        */
+                                       $sub2 = $submatchbase . '/attachment/([^/]+)/';
+
+                                       // And add trackbacks <permalink>/attachment/trackback.
+                                       $sub2tb = $sub2 . $trackbackregex;
+
+                                       // Feeds, <permalink>/attachment/feed/(atom|...)
+                                       $sub2feed = $sub2 . $feedregex;
+
+                                       // And feeds again on to this <permalink>/attachment/(feed|atom...)
+                                       $sub2feed2 = $sub2 . $feedregex2;
+
+                                       // And <permalink>/comment-page-xx
+                                       $sub2comment = $sub2 . $commentregex;
+
+                                       // And <permalink>/embed/...
+                                       $sub2embed = $sub2 . $embedregex;
+
+                                       // Create queries for these extra tag-ons we've just dealt with.
+                                       $subquery = $index . '?attachment=' . $this->preg_index(1);
+                                       $subtbquery = $subquery . '&tb=1';
+                                       $subfeedquery = $subquery . '&feed=' . $this->preg_index(2);
+                                       $subcommentquery = $subquery . '&cpage=' . $this->preg_index(2);
+                                       $subembedquery = $subquery . '&embed=true';
+
+                                       // Do endpoints for attachments.
+                                       if ( !empty($endpoints) ) {
+                                               foreach ( (array) $ep_query_append as $regex => $ep ) {
+                                                       if ( $ep[0] & EP_ATTACHMENT ) {
+                                                               $rewrite[$sub1 . $regex] = $subquery . $ep[1] . $this->preg_index(3);
+                                                               $rewrite[$sub2 . $regex] = $subquery . $ep[1] . $this->preg_index(3);
+                                                       }
+                                               }
+                                       }
+
+                                       /*
+                                        * Now we've finished with endpoints, finish off the $sub1 and $sub2 matches
+                                        * add a ? as we don't have to match that last slash, and finally a $ so we
+                                        * match to the end of the URL
+                                        */
+                                       $sub1 .= '?$';
+                                       $sub2 .= '?$';
+
+                                       /*
+                                        * Post pagination, e.g. <permalink>/2/
+                                        * Previously: '(/[0-9]+)?/?$', which produced '/2' for page.
+                                        * When cast to int, returned 0.
+                                        */
+                                       $match = $match . '(?:/([0-9]+))?/?$';
+                                       $query = $index . '?' . $query . '&page=' . $this->preg_index($num_toks + 1);
+
+                               // Not matching a permalink so this is a lot simpler.
+                               } else {
+                                       // Close the match and finalise the query.
+                                       $match .= '?$';
+                                       $query = $index . '?' . $query;
+                               }
+
+                               /*
+                                * Create the final array for this dir by joining the $rewrite array (which currently
+                                * only contains rules/queries for trackback, pages etc) to the main regex/query for
+                                * this dir
+                                */
+                               $rewrite = array_merge($rewrite, array($match => $query));
+
+                               // If we're matching a permalink, add those extras (attachments etc) on.
+                               if ( $post ) {
+                                       // Add trackback.
+                                       $rewrite = array_merge(array($trackbackmatch => $trackbackquery), $rewrite);
+
+                                       // Add embed.
+                                       $rewrite = array_merge( array( $embedmatch => $embedquery ), $rewrite );
+
+                                       // Add regexes/queries for attachments, attachment trackbacks and so on.
+                                       if ( ! $page ) {
+                                               // Require <permalink>/attachment/stuff form for pages because of confusion with subpages.
+                                               $rewrite = array_merge( $rewrite, array(
+                                                       $sub1        => $subquery,
+                                                       $sub1tb      => $subtbquery,
+                                                       $sub1feed    => $subfeedquery,
+                                                       $sub1feed2   => $subfeedquery,
+                                                       $sub1comment => $subcommentquery,
+                                                       $sub1embed   => $subembedquery
+                                               ) );
+                                       }
+
+                                       $rewrite = array_merge( array( $sub2 => $subquery, $sub2tb => $subtbquery, $sub2feed => $subfeedquery, $sub2feed2 => $subfeedquery, $sub2comment => $subcommentquery, $sub2embed => $subembedquery ), $rewrite );
+                               }
+                       }
+                       // Add the rules for this dir to the accumulating $post_rewrite.
+                       $post_rewrite = array_merge($rewrite, $post_rewrite);
+               }
+
+               // The finished rules. phew!
+               return $post_rewrite;
+       }
+
+       /**
+        * Generates rewrite rules with permalink structure and walking directory only.
+        *
+        * Shorten version of WP_Rewrite::generate_rewrite_rules() that allows for shorter
+        * list of parameters. See the method for longer description of what generating
+        * rewrite rules does.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @see WP_Rewrite::generate_rewrite_rules() See for long description and rest of parameters.
+        *
+        * @param string $permalink_structure The permalink structure to generate rules.
+        * @param bool   $walk_dirs           Optional, default is false. Whether to create list of directories to walk over.
+        * @return array
+        */
+       public function generate_rewrite_rule($permalink_structure, $walk_dirs = false) {
+               return $this->generate_rewrite_rules($permalink_structure, EP_NONE, false, false, false, $walk_dirs);
+       }
+
+       /**
+        * Constructs rewrite matches and queries from permalink structure.
+        *
+        * Runs the action 'generate_rewrite_rules' with the parameter that is an
+        * reference to the current WP_Rewrite instance to further manipulate the
+        * permalink structures and rewrite rules. Runs the 'rewrite_rules_array'
+        * filter on the full rewrite rule array.
+        *
+        * There are two ways to manipulate the rewrite rules, one by hooking into
+        * the 'generate_rewrite_rules' action and gaining full control of the
+        * object or just manipulating the rewrite rule array before it is passed
+        * from the function.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return array An associate array of matches and queries.
+        */
+       public function rewrite_rules() {
+               $rewrite = array();
+
+               if ( empty($this->permalink_structure) )
+                       return $rewrite;
+
+               // robots.txt -only if installed at the root
+               $home_path = parse_url( home_url() );
+               $robots_rewrite = ( empty( $home_path['path'] ) || '/' == $home_path['path'] ) ? array( 'robots\.txt$' => $this->index . '?robots=1' ) : array();
+
+               // Old feed and service files.
+               $deprecated_files = array(
+                       '.*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\.php$' => $this->index . '?feed=old',
+                       '.*wp-app\.php(/.*)?$' => $this->index . '?error=403',
+               );
+
+               // Registration rules.
+               $registration_pages = array();
+               if ( is_multisite() && is_main_site() ) {
+                       $registration_pages['.*wp-signup.php$'] = $this->index . '?signup=true';
+                       $registration_pages['.*wp-activate.php$'] = $this->index . '?activate=true';
+               }
+
+               // Deprecated.
+               $registration_pages['.*wp-register.php$'] = $this->index . '?register=true';
+
+               // Post rewrite rules.
+               $post_rewrite = $this->generate_rewrite_rules( $this->permalink_structure, EP_PERMALINK );
+
+               /**
+                * Filter rewrite rules used for "post" archives.
+                *
+                * @since 1.5.0
+                *
+                * @param array $post_rewrite The rewrite rules for posts.
+                */
+               $post_rewrite = apply_filters( 'post_rewrite_rules', $post_rewrite );
+
+               // Date rewrite rules.
+               $date_rewrite = $this->generate_rewrite_rules($this->get_date_permastruct(), EP_DATE);
+
+               /**
+                * Filter rewrite rules used for date archives.
+                *
+                * Likely date archives would include /yyyy/, /yyyy/mm/, and /yyyy/mm/dd/.
+                *
+                * @since 1.5.0
+                *
+                * @param array $date_rewrite The rewrite rules for date archives.
+                */
+               $date_rewrite = apply_filters( 'date_rewrite_rules', $date_rewrite );
+
+               // Root-level rewrite rules.
+               $root_rewrite = $this->generate_rewrite_rules($this->root . '/', EP_ROOT);
+
+               /**
+                * Filter rewrite rules used for root-level archives.
+                *
+                * Likely root-level archives would include pagination rules for the homepage
+                * as well as site-wide post feeds (e.g. /feed/, and /feed/atom/).
+                *
+                * @since 1.5.0
+                *
+                * @param array $root_rewrite The root-level rewrite rules.
+                */
+               $root_rewrite = apply_filters( 'root_rewrite_rules', $root_rewrite );
+
+               // Comments rewrite rules.
+               $comments_rewrite = $this->generate_rewrite_rules($this->root . $this->comments_base, EP_COMMENTS, false, true, true, false);
+
+               /**
+                * Filter rewrite rules used for comment feed archives.
+                *
+                * Likely comments feed archives include /comments/feed/, and /comments/feed/atom/.
+                *
+                * @since 1.5.0
+                *
+                * @param array $comments_rewrite The rewrite rules for the site-wide comments feeds.
+                */
+               $comments_rewrite = apply_filters( 'comments_rewrite_rules', $comments_rewrite );
+
+               // Search rewrite rules.
+               $search_structure = $this->get_search_permastruct();
+               $search_rewrite = $this->generate_rewrite_rules($search_structure, EP_SEARCH);
+
+               /**
+                * Filter rewrite rules used for search archives.
+                *
+                * Likely search-related archives include /search/search+query/ as well as
+                * pagination and feed paths for a search.
+                *
+                * @since 1.5.0
+                *
+                * @param array $search_rewrite The rewrite rules for search queries.
+                */
+               $search_rewrite = apply_filters( 'search_rewrite_rules', $search_rewrite );
+
+               // Author rewrite rules.
+               $author_rewrite = $this->generate_rewrite_rules($this->get_author_permastruct(), EP_AUTHORS);
+
+               /**
+                * Filter rewrite rules used for author archives.
+                *
+                * Likely author archives would include /author/author-name/, as well as
+                * pagination and feed paths for author archives.
+                *
+                * @since 1.5.0
+                *
+                * @param array $author_rewrite The rewrite rules for author archives.
+                */
+               $author_rewrite = apply_filters( 'author_rewrite_rules', $author_rewrite );
+
+               // Pages rewrite rules.
+               $page_rewrite = $this->page_rewrite_rules();
+
+               /**
+                * Filter rewrite rules used for "page" post type archives.
+                *
+                * @since 1.5.0
+                *
+                * @param array $page_rewrite The rewrite rules for the "page" post type.
+                */
+               $page_rewrite = apply_filters( 'page_rewrite_rules', $page_rewrite );
+
+               // Extra permastructs.
+               foreach ( $this->extra_permastructs as $permastructname => $struct ) {
+                       if ( is_array( $struct ) ) {
+                               if ( count( $struct ) == 2 )
+                                       $rules = $this->generate_rewrite_rules( $struct[0], $struct[1] );
+                               else
+                                       $rules = $this->generate_rewrite_rules( $struct['struct'], $struct['ep_mask'], $struct['paged'], $struct['feed'], $struct['forcomments'], $struct['walk_dirs'], $struct['endpoints'] );
+                       } else {
+                               $rules = $this->generate_rewrite_rules( $struct );
+                       }
+
+                       /**
+                        * Filter rewrite rules used for individual permastructs.
+                        *
+                        * The dynamic portion of the hook name, `$permastructname`, refers
+                        * to the name of the registered permastruct, e.g. 'post_tag' (tags),
+                        * 'category' (categories), etc.
+                        *
+                        * @since 3.1.0
+                        *
+                        * @param array $rules The rewrite rules generated for the current permastruct.
+                        */
+                       $rules = apply_filters( $permastructname . '_rewrite_rules', $rules );
+                       if ( 'post_tag' == $permastructname ) {
+
+                               /**
+                                * Filter rewrite rules used specifically for Tags.
+                                *
+                                * @since 2.3.0
+                                * @deprecated 3.1.0 Use 'post_tag_rewrite_rules' instead
+                                *
+                                * @param array $rules The rewrite rules generated for tags.
+                                */
+                               $rules = apply_filters( 'tag_rewrite_rules', $rules );
+                       }
+
+                       $this->extra_rules_top = array_merge($this->extra_rules_top, $rules);
+               }
+
+               // Put them together.
+               if ( $this->use_verbose_page_rules )
+                       $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $deprecated_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $page_rewrite, $post_rewrite, $this->extra_rules);
+               else
+                       $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $deprecated_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $post_rewrite, $page_rewrite, $this->extra_rules);
+
+               /**
+                * Fires after the rewrite rules are generated.
+                *
+                * @since 1.5.0
+                *
+                * @param WP_Rewrite $this Current WP_Rewrite instance, passed by reference.
+                */
+               do_action_ref_array( 'generate_rewrite_rules', array( &$this ) );
+
+               /**
+                * Filter the full set of generated rewrite rules.
+                *
+                * @since 1.5.0
+                *
+                * @param array $this->rules The compiled array of rewrite rules.
+                */
+               $this->rules = apply_filters( 'rewrite_rules_array', $this->rules );
+
+               return $this->rules;
+       }
+
+       /**
+        * Retrieves the rewrite rules.
+        *
+        * The difference between this method and WP_Rewrite::rewrite_rules() is that
+        * this method stores the rewrite rules in the 'rewrite_rules' option and retrieves
+        * it. This prevents having to process all of the permalinks to get the rewrite rules
+        * in the form of caching.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return array Rewrite rules.
+        */
+       public function wp_rewrite_rules() {
+               $this->rules = get_option('rewrite_rules');
+               if ( empty($this->rules) ) {
+                       $this->matches = 'matches';
+                       $this->rewrite_rules();
+                       update_option('rewrite_rules', $this->rules);
+               }
+
+               return $this->rules;
+       }
+
+       /**
+        * Retrieves mod_rewrite-formatted rewrite rules to write to .htaccess.
+        *
+        * Does not actually write to the .htaccess file, but creates the rules for
+        * the process that will.
+        *
+        * Will add the non_wp_rules property rules to the .htaccess file before
+        * the WordPress rewrite rules one.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @return string
+        */
+       public function mod_rewrite_rules() {
+               if ( ! $this->using_permalinks() )
+                       return '';
+
+               $site_root = parse_url( site_url() );
+               if ( isset( $site_root['path'] ) )
+                       $site_root = trailingslashit($site_root['path']);
+
+               $home_root = parse_url(home_url());
+               if ( isset( $home_root['path'] ) )
+                       $home_root = trailingslashit($home_root['path']);
+               else
+                       $home_root = '/';
+
+               $rules = "<IfModule mod_rewrite.c>\n";
+               $rules .= "RewriteEngine On\n";
+               $rules .= "RewriteBase $home_root\n";
+
+               // Prevent -f checks on index.php.
+               $rules .= "RewriteRule ^index\.php$ - [L]\n";
+
+               // Add in the rules that don't redirect to WP's index.php (and thus shouldn't be handled by WP at all).
+               foreach ( (array) $this->non_wp_rules as $match => $query) {
+                       // Apache 1.3 does not support the reluctant (non-greedy) modifier.
+                       $match = str_replace('.+?', '.+', $match);
+
+                       $rules .= 'RewriteRule ^' . $match . ' ' . $home_root . $query . " [QSA,L]\n";
+               }
+
+               if ( $this->use_verbose_rules ) {
+                       $this->matches = '';
+                       $rewrite = $this->rewrite_rules();
+                       $num_rules = count($rewrite);
+                       $rules .= "RewriteCond %{REQUEST_FILENAME} -f [OR]\n" .
+                               "RewriteCond %{REQUEST_FILENAME} -d\n" .
+                               "RewriteRule ^.*$ - [S=$num_rules]\n";
+
+                       foreach ( (array) $rewrite as $match => $query) {
+                               // Apache 1.3 does not support the reluctant (non-greedy) modifier.
+                               $match = str_replace('.+?', '.+', $match);
+
+                               if ( strpos($query, $this->index) !== false )
+                                       $rules .= 'RewriteRule ^' . $match . ' ' . $home_root . $query . " [QSA,L]\n";
+                               else
+                                       $rules .= 'RewriteRule ^' . $match . ' ' . $site_root . $query . " [QSA,L]\n";
+                       }
+               } else {
+                       $rules .= "RewriteCond %{REQUEST_FILENAME} !-f\n" .
+                               "RewriteCond %{REQUEST_FILENAME} !-d\n" .
+                               "RewriteRule . {$home_root}{$this->index} [L]\n";
+               }
+
+               $rules .= "</IfModule>\n";
+
+               /**
+                * Filter the list of rewrite rules formatted for output to an .htaccess file.
+                *
+                * @since 1.5.0
+                *
+                * @param string $rules mod_rewrite Rewrite rules formatted for .htaccess.
+                */
+               $rules = apply_filters( 'mod_rewrite_rules', $rules );
+
+               /**
+                * Filter the list of rewrite rules formatted for output to an .htaccess file.
+                *
+                * @since 1.5.0
+                * @deprecated 1.5.0 Use the mod_rewrite_rules filter instead.
+                *
+                * @param string $rules mod_rewrite Rewrite rules formatted for .htaccess.
+                */
+               return apply_filters( 'rewrite_rules', $rules );
+       }
+
+       /**
+        * Retrieves IIS7 URL Rewrite formatted rewrite rules to write to web.config file.
+        *
+        * Does not actually write to the web.config file, but creates the rules for
+        * the process that will.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @return string
+        */
+       public function iis7_url_rewrite_rules( $add_parent_tags = false ) {
+               if ( ! $this->using_permalinks() )
+                       return '';
+               $rules = '';
+               if ( $add_parent_tags ) {
+                       $rules .= '<configuration>
+       <system.webServer>
+               <rewrite>
+                       <rules>';
+               }
+
+               $rules .= '
+                       <rule name="wordpress" patternSyntax="Wildcard">
+                               <match url="*" />
+                                       <conditions>
+                                               <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
+                                               <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
+                                       </conditions>
+                               <action type="Rewrite" url="index.php" />
+                       </rule>';
+
+               if ( $add_parent_tags ) {
+                       $rules .= '
+                       </rules>
+               </rewrite>
+       </system.webServer>
+</configuration>';
+               }
+
+               /**
+                * Filter the list of rewrite rules formatted for output to a web.config.
+                *
+                * @since 2.8.0
+                *
+                * @param string $rules Rewrite rules formatted for IIS web.config.
+                */
+               return apply_filters( 'iis7_url_rewrite_rules', $rules );
+       }
+
+       /**
+        * Adds a rewrite rule that transforms a URL structure to a set of query vars.
+        *
+        * Any value in the $after parameter that isn't 'bottom' will result in the rule
+        * being placed at the top of the rewrite rules.
+        *
+        * @since 2.1.0
+        * @since 4.4.0 Array support was added to the `$query` parameter.
+        * @access public
+        *
+        * @param string       $regex Regular expression to match request against.
+        * @param string|array $query The corresponding query vars for this rewrite rule.
+        * @param string       $after Optional. Priority of the new rule. Accepts 'top'
+        *                            or 'bottom'. Default 'bottom'.
+        */
+       public function add_rule( $regex, $query, $after = 'bottom' ) {
+               if ( is_array( $query ) ) {
+                       $external = false;
+                       $query = add_query_arg( $query, 'index.php' );
+               } else {
+                       $index = false === strpos( $query, '?' ) ? strlen( $query ) : strpos( $query, '?' );
+                       $front = substr( $query, 0, $index );
+
+                       $external = $front != $this->index;
+               }
+
+               // "external" = it doesn't correspond to index.php.
+               if ( $external ) {
+                       $this->add_external_rule( $regex, $query );
+               } else {
+                       if ( 'bottom' == $after ) {
+                               $this->extra_rules = array_merge( $this->extra_rules, array( $regex => $query ) );
+                       } else {
+                               $this->extra_rules_top = array_merge( $this->extra_rules_top, array( $regex => $query ) );
+                       }
+               }
+       }
+
+       /**
+        * Adds a rewrite rule that doesn't correspond to index.php.
+        *
+        * @since 2.1.0
+        * @access public
+        *
+        * @param string $regex Regular expression to match request against.
+        * @param string $query The corresponding query vars for this rewrite rule.
+        */
+       public function add_external_rule( $regex, $query ) {
+               $this->non_wp_rules[ $regex ] = $query;
+       }
+
+       /**
+        * Adds an endpoint, like /trackback/.
+        *
+        * @since 2.1.0
+        * @since 3.9.0 $query_var parameter added.
+        * @since 4.3.0 Added support for skipping query var registration by passing `false` to `$query_var`.
+        * @access public
+        *
+        * @see add_rewrite_endpoint() for full documentation.
+        * @global WP $wp
+        *
+        * @param string      $name      Name of the endpoint.
+        * @param int         $places    Endpoint mask describing the places the endpoint should be added.
+        * @param string|bool $query_var Optional. Name of the corresponding query variable. Pass `false` to
+        *                               skip registering a query_var for this endpoint. Defaults to the
+        *                               value of `$name`.
+        */
+       public function add_endpoint( $name, $places, $query_var = true ) {
+               global $wp;
+
+               // For backward compatibility, if null has explicitly been passed as `$query_var`, assume `true`.
+               if ( true === $query_var || null === func_get_arg( 2 ) ) {
+                       $query_var = $name;
+               }
+               $this->endpoints[] = array( $places, $name, $query_var );
+
+               if ( $query_var ) {
+                       $wp->add_query_var( $query_var );
+               }
+       }
+
+       /**
+        * Adds a new permalink structure.
+        *
+        * A permalink structure (permastruct) is an abstract definition of a set of rewrite rules;
+        * it is an easy way of expressing a set of regular expressions that rewrite to a set of
+        * query strings. The new permastruct is added to the WP_Rewrite::$extra_permastructs array.
+        *
+        * When the rewrite rules are built by WP_Rewrite::rewrite_rules(), all of these extra
+        * permastructs are passed to WP_Rewrite::generate_rewrite_rules() which transforms them
+        * into the regular expressions that many love to hate.
+        *
+        * The `$args` parameter gives you control over how WP_Rewrite::generate_rewrite_rules()
+        * works on the new permastruct.
+        *
+        * @since 2.5.0
+        * @access public
+        *
+        * @param string $name   Name for permalink structure.
+        * @param string $struct Permalink structure (e.g. category/%category%)
+        * @param array  $args   {
+        *     Optional. Arguments for building rewrite rules based on the permalink structure.
+        *     Default empty array.
+        *
+        *     @type bool $with_front  Whether the structure should be prepended with `WP_Rewrite::$front`.
+        *                             Default true.
+        *     @type int  $ep_mask     The endpoint mask defining which endpoints are added to the structure.
+        *                             Accepts `EP_NONE`, `EP_PERMALINK`, `EP_ATTACHMENT`, `EP_DATE`, `EP_YEAR`,
+        *                             `EP_MONTH`, `EP_DAY`, `EP_ROOT`, `EP_COMMENTS`, `EP_SEARCH`, `EP_CATEGORIES`,
+        *                             `EP_TAGS`, `EP_AUTHORS`, `EP_PAGES`, `EP_ALL_ARCHIVES`, and `EP_ALL`.
+        *                             Default `EP_NONE`.
+        *     @type bool $paged       Whether archive pagination rules should be added for the structure.
+        *                             Default true.
+        *     @type bool $feed        Whether feed rewrite rules should be added for the structure. Default true.
+        *     @type bool $forcomments Whether the feed rules should be a query for a comments feed. Default false.
+        *     @type bool $walk_dirs   Whether the 'directories' making up the structure should be walked over
+        *                             and rewrite rules built for each in-turn. Default true.
+        *     @type bool $endpoints   Whether endpoints should be applied to the generated rules. Default true.
+        * }
+        */
+       public function add_permastruct( $name, $struct, $args = array() ) {
+               // Backwards compatibility for the old parameters: $with_front and $ep_mask.
+               if ( ! is_array( $args ) )
+                       $args = array( 'with_front' => $args );
+               if ( func_num_args() == 4 )
+                       $args['ep_mask'] = func_get_arg( 3 );
+
+               $defaults = array(
+                       'with_front' => true,
+                       'ep_mask' => EP_NONE,
+                       'paged' => true,
+                       'feed' => true,
+                       'forcomments' => false,
+                       'walk_dirs' => true,
+                       'endpoints' => true,
+               );
+               $args = array_intersect_key( $args, $defaults );
+               $args = wp_parse_args( $args, $defaults );
+
+               if ( $args['with_front'] )
+                       $struct = $this->front . $struct;
+               else
+                       $struct = $this->root . $struct;
+               $args['struct'] = $struct;
+
+               $this->extra_permastructs[ $name ] = $args;
+       }
+
+       /**
+        * Removes rewrite rules and then recreate rewrite rules.
+        *
+        * Calls WP_Rewrite::wp_rewrite_rules() after removing the 'rewrite_rules' option.
+        * If the function named 'save_mod_rewrite_rules' exists, it will be called.
+        *
+        * @since 2.0.1
+        * @access public
+        *
+        * @staticvar bool $do_hard_later
+        *
+        * @param bool $hard Whether to update .htaccess (hard flush) or just update rewrite_rules option (soft flush). Default is true (hard).
+        */
+       public function flush_rules( $hard = true ) {
+               static $do_hard_later = null;
+
+               // Prevent this action from running before everyone has registered their rewrites.
+               if ( ! did_action( 'wp_loaded' ) ) {
+                       add_action( 'wp_loaded', array( $this, 'flush_rules' ) );
+                       $do_hard_later = ( isset( $do_hard_later ) ) ? $do_hard_later || $hard : $hard;
+                       return;
+               }
+
+               if ( isset( $do_hard_later ) ) {
+                       $hard = $do_hard_later;
+                       unset( $do_hard_later );
+               }
+
+               delete_option('rewrite_rules');
+               $this->wp_rewrite_rules();
+
+               /**
+                * Filter whether a "hard" rewrite rule flush should be performed when requested.
+                *
+                * A "hard" flush updates .htaccess (Apache) or web.config (IIS).
+                *
+                * @since 3.7.0
+                *
+                * @param bool $hard Whether to flush rewrite rules "hard". Default true.
+                */
+               if ( ! $hard || ! apply_filters( 'flush_rewrite_rules_hard', true ) ) {
+                       return;
+               }
+               if ( function_exists( 'save_mod_rewrite_rules' ) )
+                       save_mod_rewrite_rules();
+               if ( function_exists( 'iis7_save_url_rewrite_rules' ) )
+                       iis7_save_url_rewrite_rules();
+       }
+
+       /**
+        * Sets up the object's properties.
+        *
+        * The 'use_verbose_page_rules' object property will be set to true if the
+        * permalink structure begins with one of the following: '%postname%', '%category%',
+        * '%tag%', or '%author%'.
+        *
+        * @since 1.5.0
+        * @access public
+        */
+       public function init() {
+               $this->extra_rules = $this->non_wp_rules = $this->endpoints = array();
+               $this->permalink_structure = get_option('permalink_structure');
+               $this->front = substr($this->permalink_structure, 0, strpos($this->permalink_structure, '%'));
+               $this->root = '';
+
+               if ( $this->using_index_permalinks() )
+                       $this->root = $this->index . '/';
+
+               unset($this->author_structure);
+               unset($this->date_structure);
+               unset($this->page_structure);
+               unset($this->search_structure);
+               unset($this->feed_structure);
+               unset($this->comment_feed_structure);
+               $this->use_trailing_slashes = ( '/' == substr($this->permalink_structure, -1, 1) );
+
+               // Enable generic rules for pages if permalink structure doesn't begin with a wildcard.
+               if ( preg_match("/^[^%]*%(?:postname|category|tag|author)%/", $this->permalink_structure) )
+                        $this->use_verbose_page_rules = true;
+               else
+                       $this->use_verbose_page_rules = false;
+       }
+
+       /**
+        * Sets the main permalink structure for the site.
+        *
+        * Will update the 'permalink_structure' option, if there is a difference
+        * between the current permalink structure and the parameter value. Calls
+        * WP_Rewrite::init() after the option is updated.
+        *
+        * Fires the 'permalink_structure_changed' action once the init call has
+        * processed passing the old and new values
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @param string $permalink_structure Permalink structure.
+        */
+       public function set_permalink_structure($permalink_structure) {
+               if ( $permalink_structure != $this->permalink_structure ) {
+                       $old_permalink_structure = $this->permalink_structure;
+                       update_option('permalink_structure', $permalink_structure);
+
+                       $this->init();
+
+                       /**
+                        * Fires after the permalink structure is updated.
+                        *
+                        * @since 2.8.0
+                        *
+                        * @param string $old_permalink_structure The previous permalink structure.
+                        * @param string $permalink_structure     The new permalink structure.
+                        */
+                       do_action( 'permalink_structure_changed', $old_permalink_structure, $permalink_structure );
+               }
+       }
+
+       /**
+        * Sets the category base for the category permalink.
+        *
+        * Will update the 'category_base' option, if there is a difference between
+        * the current category base and the parameter value. Calls WP_Rewrite::init()
+        * after the option is updated.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        * @param string $category_base Category permalink structure base.
+        */
+       public function set_category_base($category_base) {
+               if ( $category_base != get_option('category_base') ) {
+                       update_option('category_base', $category_base);
+                       $this->init();
+               }
+       }
+
+       /**
+        * Sets the tag base for the tag permalink.
+        *
+        * Will update the 'tag_base' option, if there is a difference between the
+        * current tag base and the parameter value. Calls WP_Rewrite::init() after
+        * the option is updated.
+        *
+        * @since 2.3.0
+        * @access public
+        *
+        * @param string $tag_base Tag permalink structure base.
+        */
+       public function set_tag_base( $tag_base ) {
+               if ( $tag_base != get_option( 'tag_base') ) {
+                       update_option( 'tag_base', $tag_base );
+                       $this->init();
+               }
+       }
+
+       /**
+        * Constructor - Calls init(), which runs setup.
+        *
+        * @since 1.5.0
+        * @access public
+        *
+        */
+       public function __construct() {
+               $this->init();
+       }
+}
diff --git a/wp-includes/class-wp-role.php b/wp-includes/class-wp-role.php
new file mode 100644 (file)
index 0000000..59903e3
--- /dev/null
@@ -0,0 +1,114 @@
+<?php
+/**
+ * User API: WP_Role class
+ *
+ * @package WordPress
+ * @subpackage Users
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to extend the user roles API.
+ *
+ * @since 2.0.0
+ */
+class WP_Role {
+       /**
+        * Role name.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var string
+        */
+       public $name;
+
+       /**
+        * List of capabilities the role contains.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var array
+        */
+       public $capabilities;
+
+       /**
+        * Constructor - Set up object properties.
+        *
+        * The list of capabilities, must have the key as the name of the capability
+        * and the value a boolean of whether it is granted to the role.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $role Role name.
+        * @param array $capabilities List of capabilities.
+        */
+       public function __construct( $role, $capabilities ) {
+               $this->name = $role;
+               $this->capabilities = $capabilities;
+       }
+
+       /**
+        * Assign role a capability.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $cap Capability name.
+        * @param bool $grant Whether role has capability privilege.
+        */
+       public function add_cap( $cap, $grant = true ) {
+               $this->capabilities[$cap] = $grant;
+               wp_roles()->add_cap( $this->name, $cap, $grant );
+       }
+
+       /**
+        * Remove capability from role.
+        *
+        * This is a container for {@link WP_Roles::remove_cap()} to remove the
+        * capability from the role. That is to say, that {@link
+        * WP_Roles::remove_cap()} implements the functionality, but it also makes
+        * sense to use this class, because you don't need to enter the role name.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $cap Capability name.
+        */
+       public function remove_cap( $cap ) {
+               unset( $this->capabilities[$cap] );
+               wp_roles()->remove_cap( $this->name, $cap );
+       }
+
+       /**
+        * Whether role has capability.
+        *
+        * The capabilities is passed through the 'role_has_cap' filter. The first
+        * parameter for the hook is the list of capabilities the class has
+        * assigned. The second parameter is the capability name to look for. The
+        * third and final parameter for the hook is the role name.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $cap Capability name.
+        * @return bool True, if user has capability. False, if doesn't have capability.
+        */
+       public function has_cap( $cap ) {
+               /**
+                * Filter which capabilities a role has.
+                *
+                * @since 2.0.0
+                *
+                * @param array  $capabilities Array of role capabilities.
+                * @param string $cap          Capability name.
+                * @param string $name         Role name.
+                */
+               $capabilities = apply_filters( 'role_has_cap', $this->capabilities, $cap, $this->name );
+               if ( !empty( $capabilities[$cap] ) )
+                       return $capabilities[$cap];
+               else
+                       return false;
+       }
+
+}
diff --git a/wp-includes/class-wp-roles.php b/wp-includes/class-wp-roles.php
new file mode 100644 (file)
index 0000000..e850400
--- /dev/null
@@ -0,0 +1,296 @@
+<?php
+/**
+ * User API: WP_Roles class
+ *
+ * @package WordPress
+ * @subpackage Users
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a user roles API.
+ *
+ * The role option is simple, the structure is organized by role name that store
+ * the name in value of the 'name' key. The capabilities are stored as an array
+ * in the value of the 'capability' key.
+ *
+ *     array (
+ *             'rolename' => array (
+ *                     'name' => 'rolename',
+ *                     'capabilities' => array()
+ *             )
+ *     )
+ *
+ * @since 2.0.0
+ */
+class WP_Roles {
+       /**
+        * List of roles and capabilities.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var array
+        */
+       public $roles;
+
+       /**
+        * List of the role objects.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var array
+        */
+       public $role_objects = array();
+
+       /**
+        * List of role names.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var array
+        */
+       public $role_names = array();
+
+       /**
+        * Option name for storing role list.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var string
+        */
+       public $role_key;
+
+       /**
+        * Whether to use the database for retrieval and storage.
+        *
+        * @since 2.1.0
+        * @access public
+        * @var bool
+        */
+       public $use_db = true;
+
+       /**
+        * Constructor
+        *
+        * @since 2.0.0
+        */
+       public function __construct() {
+               $this->_init();
+       }
+
+       /**
+        * Make private/protected methods readable for backwards compatibility.
+        *
+        * @since 4.0.0
+        * @access public
+        *
+        * @param callable $name      Method to call.
+        * @param array    $arguments Arguments to pass when calling.
+        * @return mixed|false Return value of the callback, false otherwise.
+        */
+       public function __call( $name, $arguments ) {
+               if ( '_init' === $name ) {
+                       return call_user_func_array( array( $this, $name ), $arguments );
+               }
+               return false;
+       }
+
+       /**
+        * Set up the object properties.
+        *
+        * The role key is set to the current prefix for the $wpdb object with
+        * 'user_roles' appended. If the $wp_user_roles global is set, then it will
+        * be used and the role option will not be updated or used.
+        *
+        * @since 2.1.0
+        * @access protected
+        *
+        * @global wpdb  $wpdb          WordPress database abstraction object.
+        * @global array $wp_user_roles Used to set the 'roles' property value.
+        */
+       protected function _init() {
+               global $wpdb, $wp_user_roles;
+               $this->role_key = $wpdb->get_blog_prefix() . 'user_roles';
+               if ( ! empty( $wp_user_roles ) ) {
+                       $this->roles = $wp_user_roles;
+                       $this->use_db = false;
+               } else {
+                       $this->roles = get_option( $this->role_key );
+               }
+
+               if ( empty( $this->roles ) )
+                       return;
+
+               $this->role_objects = array();
+               $this->role_names =  array();
+               foreach ( array_keys( $this->roles ) as $role ) {
+                       $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] );
+                       $this->role_names[$role] = $this->roles[$role]['name'];
+               }
+       }
+
+       /**
+        * Reinitialize the object
+        *
+        * Recreates the role objects. This is typically called only by switch_to_blog()
+        * after switching wpdb to a new blog ID.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        */
+       public function reinit() {
+               // There is no need to reinit if using the wp_user_roles global.
+               if ( ! $this->use_db )
+                       return;
+
+               global $wpdb;
+
+               // Duplicated from _init() to avoid an extra function call.
+               $this->role_key = $wpdb->get_blog_prefix() . 'user_roles';
+               $this->roles = get_option( $this->role_key );
+               if ( empty( $this->roles ) )
+                       return;
+
+               $this->role_objects = array();
+               $this->role_names =  array();
+               foreach ( array_keys( $this->roles ) as $role ) {
+                       $this->role_objects[$role] = new WP_Role( $role, $this->roles[$role]['capabilities'] );
+                       $this->role_names[$role] = $this->roles[$role]['name'];
+               }
+       }
+
+       /**
+        * Add role name with capabilities to list.
+        *
+        * Updates the list of roles, if the role doesn't already exist.
+        *
+        * The capabilities are defined in the following format `array( 'read' => true );`
+        * To explicitly deny a role a capability you set the value for that capability to false.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $role Role name.
+        * @param string $display_name Role display name.
+        * @param array $capabilities List of role capabilities in the above format.
+        * @return WP_Role|void WP_Role object, if role is added.
+        */
+       public function add_role( $role, $display_name, $capabilities = array() ) {
+               if ( empty( $role ) || isset( $this->roles[ $role ] ) ) {
+                       return;
+               }
+
+               $this->roles[$role] = array(
+                       'name' => $display_name,
+                       'capabilities' => $capabilities
+                       );
+               if ( $this->use_db )
+                       update_option( $this->role_key, $this->roles );
+               $this->role_objects[$role] = new WP_Role( $role, $capabilities );
+               $this->role_names[$role] = $display_name;
+               return $this->role_objects[$role];
+       }
+
+       /**
+        * Remove role by name.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $role Role name.
+        */
+       public function remove_role( $role ) {
+               if ( ! isset( $this->role_objects[$role] ) )
+                       return;
+
+               unset( $this->role_objects[$role] );
+               unset( $this->role_names[$role] );
+               unset( $this->roles[$role] );
+
+               if ( $this->use_db )
+                       update_option( $this->role_key, $this->roles );
+
+               if ( get_option( 'default_role' ) == $role )
+                       update_option( 'default_role', 'subscriber' );
+       }
+
+       /**
+        * Add capability to role.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $role Role name.
+        * @param string $cap Capability name.
+        * @param bool $grant Optional, default is true. Whether role is capable of performing capability.
+        */
+       public function add_cap( $role, $cap, $grant = true ) {
+               if ( ! isset( $this->roles[$role] ) )
+                       return;
+
+               $this->roles[$role]['capabilities'][$cap] = $grant;
+               if ( $this->use_db )
+                       update_option( $this->role_key, $this->roles );
+       }
+
+       /**
+        * Remove capability from role.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $role Role name.
+        * @param string $cap Capability name.
+        */
+       public function remove_cap( $role, $cap ) {
+               if ( ! isset( $this->roles[$role] ) )
+                       return;
+
+               unset( $this->roles[$role]['capabilities'][$cap] );
+               if ( $this->use_db )
+                       update_option( $this->role_key, $this->roles );
+       }
+
+       /**
+        * Retrieve role object by name.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $role Role name.
+        * @return WP_Role|null WP_Role object if found, null if the role does not exist.
+        */
+       public function get_role( $role ) {
+               if ( isset( $this->role_objects[$role] ) )
+                       return $this->role_objects[$role];
+               else
+                       return null;
+       }
+
+       /**
+        * Retrieve list of role names.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @return array List of role names.
+        */
+       public function get_names() {
+               return $this->role_names;
+       }
+
+       /**
+        * Whether role name is currently in the list of available roles.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $role Role name to look up.
+        * @return bool
+        */
+       public function is_role( $role ) {
+               return isset( $this->role_names[$role] );
+       }
+}
diff --git a/wp-includes/class-wp-tax-query.php b/wp-includes/class-wp-tax-query.php
new file mode 100644 (file)
index 0000000..356b692
--- /dev/null
@@ -0,0 +1,665 @@
+<?php
+/**
+ * Taxonomy API: WP_Tax_Query class
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement taxonomy queries for the Taxonomy API.
+ *
+ * Used for generating SQL clauses that filter a primary query according to object
+ * taxonomy terms.
+ *
+ * WP_Tax_Query is a helper that allows primary query classes, such as WP_Query, to filter
+ * their results by object metadata, by generating `JOIN` and `WHERE` subclauses to be
+ * attached to the primary SQL query string.
+ *
+ * @since 3.1.0
+ */
+class WP_Tax_Query {
+
+       /**
+        * Array of taxonomy queries.
+        *
+        * See {@see WP_Tax_Query::__construct()} for information on tax query arguments.
+        *
+        * @since 3.1.0
+        * @access public
+        * @var array
+        */
+       public $queries = array();
+
+       /**
+        * The relation between the queries. Can be one of 'AND' or 'OR'.
+        *
+        * @since 3.1.0
+        * @access public
+        * @var string
+        */
+       public $relation;
+
+       /**
+        * Standard response when the query should not return any rows.
+        *
+        * @since 3.2.0
+        *
+        * @static
+        * @access private
+        * @var string
+        */
+       private static $no_results = array( 'join' => array( '' ), 'where' => array( '0 = 1' ) );
+
+       /**
+        * A flat list of table aliases used in the JOIN clauses.
+        *
+        * @since 4.1.0
+        * @access protected
+        * @var array
+        */
+       protected $table_aliases = array();
+
+       /**
+        * Terms and taxonomies fetched by this query.
+        *
+        * We store this data in a flat array because they are referenced in a
+        * number of places by WP_Query.
+        *
+        * @since 4.1.0
+        * @access public
+        * @var array
+        */
+       public $queried_terms = array();
+
+       /**
+        * Database table that where the metadata's objects are stored (eg $wpdb->users).
+        *
+        * @since 4.1.0
+        * @access public
+        * @var string
+        */
+       public $primary_table;
+
+       /**
+        * Column in 'primary_table' that represents the ID of the object.
+        *
+        * @since 4.1.0
+        * @access public
+        * @var string
+        */
+       public $primary_id_column;
+
+       /**
+        * Constructor.
+        *
+        * @since 3.1.0
+        * @since 4.1.0 Added support for `$operator` 'NOT EXISTS' and 'EXISTS' values.
+        * @access public
+        *
+        * @param array $tax_query {
+        *     Array of taxonomy query clauses.
+        *
+        *     @type string $relation Optional. The MySQL keyword used to join
+        *                            the clauses of the query. Accepts 'AND', or 'OR'. Default 'AND'.
+        *     @type array {
+        *         Optional. An array of first-order clause parameters, or another fully-formed tax query.
+        *
+        *         @type string           $taxonomy         Taxonomy being queried. Optional when field=term_taxonomy_id.
+        *         @type string|int|array $terms            Term or terms to filter by.
+        *         @type string           $field            Field to match $terms against. Accepts 'term_id', 'slug',
+        *                                                 'name', or 'term_taxonomy_id'. Default: 'term_id'.
+        *         @type string           $operator         MySQL operator to be used with $terms in the WHERE clause.
+        *                                                  Accepts 'AND', 'IN', 'NOT IN', 'EXISTS', 'NOT EXISTS'.
+        *                                                  Default: 'IN'.
+        *         @type bool             $include_children Optional. Whether to include child terms.
+        *                                                  Requires a $taxonomy. Default: true.
+        *     }
+        * }
+        */
+       public function __construct( $tax_query ) {
+               if ( isset( $tax_query['relation'] ) ) {
+                       $this->relation = $this->sanitize_relation( $tax_query['relation'] );
+               } else {
+                       $this->relation = 'AND';
+               }
+
+               $this->queries = $this->sanitize_query( $tax_query );
+       }
+
+       /**
+        * Ensure the 'tax_query' argument passed to the class constructor is well-formed.
+        *
+        * Ensures that each query-level clause has a 'relation' key, and that
+        * each first-order clause contains all the necessary keys from `$defaults`.
+        *
+        * @since 4.1.0
+        * @access public
+        *
+        * @param array $queries Array of queries clauses.
+        * @return array Sanitized array of query clauses.
+        */
+       public function sanitize_query( $queries ) {
+               $cleaned_query = array();
+
+               $defaults = array(
+                       'taxonomy' => '',
+                       'terms' => array(),
+                       'field' => 'term_id',
+                       'operator' => 'IN',
+                       'include_children' => true,
+               );
+
+               foreach ( $queries as $key => $query ) {
+                       if ( 'relation' === $key ) {
+                               $cleaned_query['relation'] = $this->sanitize_relation( $query );
+
+                       // First-order clause.
+                       } elseif ( self::is_first_order_clause( $query ) ) {
+
+                               $cleaned_clause = array_merge( $defaults, $query );
+                               $cleaned_clause['terms'] = (array) $cleaned_clause['terms'];
+                               $cleaned_query[] = $cleaned_clause;
+
+                               /*
+                                * Keep a copy of the clause in the flate
+                                * $queried_terms array, for use in WP_Query.
+                                */
+                               if ( ! empty( $cleaned_clause['taxonomy'] ) && 'NOT IN' !== $cleaned_clause['operator'] ) {
+                                       $taxonomy = $cleaned_clause['taxonomy'];
+                                       if ( ! isset( $this->queried_terms[ $taxonomy ] ) ) {
+                                               $this->queried_terms[ $taxonomy ] = array();
+                                       }
+
+                                       /*
+                                        * Backward compatibility: Only store the first
+                                        * 'terms' and 'field' found for a given taxonomy.
+                                        */
+                                       if ( ! empty( $cleaned_clause['terms'] ) && ! isset( $this->queried_terms[ $taxonomy ]['terms'] ) ) {
+                                               $this->queried_terms[ $taxonomy ]['terms'] = $cleaned_clause['terms'];
+                                       }
+
+                                       if ( ! empty( $cleaned_clause['field'] ) && ! isset( $this->queried_terms[ $taxonomy ]['field'] ) ) {
+                                               $this->queried_terms[ $taxonomy ]['field'] = $cleaned_clause['field'];
+                                       }
+                               }
+
+                       // Otherwise, it's a nested query, so we recurse.
+                       } elseif ( is_array( $query ) ) {
+                               $cleaned_subquery = $this->sanitize_query( $query );
+
+                               if ( ! empty( $cleaned_subquery ) ) {
+                                       // All queries with children must have a relation.
+                                       if ( ! isset( $cleaned_subquery['relation'] ) ) {
+                                               $cleaned_subquery['relation'] = 'AND';
+                                       }
+
+                                       $cleaned_query[] = $cleaned_subquery;
+                               }
+                       }
+               }
+
+               return $cleaned_query;
+       }
+
+       /**
+        * Sanitize a 'relation' operator.
+        *
+        * @since 4.1.0
+        * @access public
+        *
+        * @param string $relation Raw relation key from the query argument.
+        * @return string Sanitized relation ('AND' or 'OR').
+        */
+       public function sanitize_relation( $relation ) {
+               if ( 'OR' === strtoupper( $relation ) ) {
+                       return 'OR';
+               } else {
+                       return 'AND';
+               }
+       }
+
+       /**
+        * Determine whether a clause is first-order.
+        *
+        * A "first-order" clause is one that contains any of the first-order
+        * clause keys ('terms', 'taxonomy', 'include_children', 'field',
+        * 'operator'). An empty clause also counts as a first-order clause,
+        * for backward compatibility. Any clause that doesn't meet this is
+        * determined, by process of elimination, to be a higher-order query.
+        *
+        * @since 4.1.0
+        *
+        * @static
+        * @access protected
+        *
+        * @param array $query Tax query arguments.
+        * @return bool Whether the query clause is a first-order clause.
+        */
+       protected static function is_first_order_clause( $query ) {
+               return is_array( $query ) && ( empty( $query ) || array_key_exists( 'terms', $query ) || array_key_exists( 'taxonomy', $query ) || array_key_exists( 'include_children', $query ) || array_key_exists( 'field', $query ) || array_key_exists( 'operator', $query ) );
+       }
+
+       /**
+        * Generates SQL clauses to be appended to a main query.
+        *
+        * @since 3.1.0
+        *
+        * @static
+        * @access public
+        *
+        * @param string $primary_table     Database table where the object being filtered is stored (eg wp_users).
+        * @param string $primary_id_column ID column for the filtered object in $primary_table.
+        * @return array {
+        *     Array containing JOIN and WHERE SQL clauses to append to the main query.
+        *
+        *     @type string $join  SQL fragment to append to the main JOIN clause.
+        *     @type string $where SQL fragment to append to the main WHERE clause.
+        * }
+        */
+       public function get_sql( $primary_table, $primary_id_column ) {
+               $this->primary_table = $primary_table;
+               $this->primary_id_column = $primary_id_column;
+
+               return $this->get_sql_clauses();
+       }
+
+       /**
+        * Generate SQL clauses to be appended to a main query.
+        *
+        * Called by the public WP_Tax_Query::get_sql(), this method
+        * is abstracted out to maintain parity with the other Query classes.
+        *
+        * @since 4.1.0
+        * @access protected
+        *
+        * @return array {
+        *     Array containing JOIN and WHERE SQL clauses to append to the main query.
+        *
+        *     @type string $join  SQL fragment to append to the main JOIN clause.
+        *     @type string $where SQL fragment to append to the main WHERE clause.
+        * }
+        */
+       protected function get_sql_clauses() {
+               /*
+                * $queries are passed by reference to get_sql_for_query() for recursion.
+                * To keep $this->queries unaltered, pass a copy.
+                */
+               $queries = $this->queries;
+               $sql = $this->get_sql_for_query( $queries );
+
+               if ( ! empty( $sql['where'] ) ) {
+                       $sql['where'] = ' AND ' . $sql['where'];
+               }
+
+               return $sql;
+       }
+
+       /**
+        * Generate SQL clauses for a single query array.
+        *
+        * If nested subqueries are found, this method recurses the tree to
+        * produce the properly nested SQL.
+        *
+        * @since 4.1.0
+        * @access protected
+        *
+        * @param array $query Query to parse, passed by reference.
+        * @param int   $depth Optional. Number of tree levels deep we currently are.
+        *                     Used to calculate indentation. Default 0.
+        * @return array {
+        *     Array containing JOIN and WHERE SQL clauses to append to a single query array.
+        *
+        *     @type string $join  SQL fragment to append to the main JOIN clause.
+        *     @type string $where SQL fragment to append to the main WHERE clause.
+        * }
+        */
+       protected function get_sql_for_query( &$query, $depth = 0 ) {
+               $sql_chunks = array(
+                       'join'  => array(),
+                       'where' => array(),
+               );
+
+               $sql = array(
+                       'join'  => '',
+                       'where' => '',
+               );
+
+               $indent = '';
+               for ( $i = 0; $i < $depth; $i++ ) {
+                       $indent .= "  ";
+               }
+
+               foreach ( $query as $key => &$clause ) {
+                       if ( 'relation' === $key ) {
+                               $relation = $query['relation'];
+                       } elseif ( is_array( $clause ) ) {
+
+                               // This is a first-order clause.
+                               if ( $this->is_first_order_clause( $clause ) ) {
+                                       $clause_sql = $this->get_sql_for_clause( $clause, $query );
+
+                                       $where_count = count( $clause_sql['where'] );
+                                       if ( ! $where_count ) {
+                                               $sql_chunks['where'][] = '';
+                                       } elseif ( 1 === $where_count ) {
+                                               $sql_chunks['where'][] = $clause_sql['where'][0];
+                                       } else {
+                                               $sql_chunks['where'][] = '( ' . implode( ' AND ', $clause_sql['where'] ) . ' )';
+                                       }
+
+                                       $sql_chunks['join'] = array_merge( $sql_chunks['join'], $clause_sql['join'] );
+                               // This is a subquery, so we recurse.
+                               } else {
+                                       $clause_sql = $this->get_sql_for_query( $clause, $depth + 1 );
+
+                                       $sql_chunks['where'][] = $clause_sql['where'];
+                                       $sql_chunks['join'][]  = $clause_sql['join'];
+                               }
+                       }
+               }
+
+               // Filter to remove empties.
+               $sql_chunks['join']  = array_filter( $sql_chunks['join'] );
+               $sql_chunks['where'] = array_filter( $sql_chunks['where'] );
+
+               if ( empty( $relation ) ) {
+                       $relation = 'AND';
+               }
+
+               // Filter duplicate JOIN clauses and combine into a single string.
+               if ( ! empty( $sql_chunks['join'] ) ) {
+                       $sql['join'] = implode( ' ', array_unique( $sql_chunks['join'] ) );
+               }
+
+               // Generate a single WHERE clause with proper brackets and indentation.
+               if ( ! empty( $sql_chunks['where'] ) ) {
+                       $sql['where'] = '( ' . "\n  " . $indent . implode( ' ' . "\n  " . $indent . $relation . ' ' . "\n  " . $indent, $sql_chunks['where'] ) . "\n" . $indent . ')';
+               }
+
+               return $sql;
+       }
+
+       /**
+        * Generate SQL JOIN and WHERE clauses for a "first-order" query clause.
+        *
+        * @since 4.1.0
+        * @access public
+        *
+        * @global wpdb $wpdb The WordPress database abstraction object.
+        *
+        * @param array $clause       Query clause, passed by reference.
+        * @param array $parent_query Parent query array.
+        * @return array {
+        *     Array containing JOIN and WHERE SQL clauses to append to a first-order query.
+        *
+        *     @type string $join  SQL fragment to append to the main JOIN clause.
+        *     @type string $where SQL fragment to append to the main WHERE clause.
+        * }
+        */
+       public function get_sql_for_clause( &$clause, $parent_query ) {
+               global $wpdb;
+
+               $sql = array(
+                       'where' => array(),
+                       'join'  => array(),
+               );
+
+               $join = $where = '';
+
+               $this->clean_query( $clause );
+
+               if ( is_wp_error( $clause ) ) {
+                       return self::$no_results;
+               }
+
+               $terms = $clause['terms'];
+               $operator = strtoupper( $clause['operator'] );
+
+               if ( 'IN' == $operator ) {
+
+                       if ( empty( $terms ) ) {
+                               return self::$no_results;
+                       }
+
+                       $terms = implode( ',', $terms );
+
+                       /*
+                        * Before creating another table join, see if this clause has a
+                        * sibling with an existing join that can be shared.
+                        */
+                       $alias = $this->find_compatible_table_alias( $clause, $parent_query );
+                       if ( false === $alias ) {
+                               $i = count( $this->table_aliases );
+                               $alias = $i ? 'tt' . $i : $wpdb->term_relationships;
+
+                               // Store the alias as part of a flat array to build future iterators.
+                               $this->table_aliases[] = $alias;
+
+                               // Store the alias with this clause, so later siblings can use it.
+                               $clause['alias'] = $alias;
+
+                               $join .= " INNER JOIN $wpdb->term_relationships";
+                               $join .= $i ? " AS $alias" : '';
+                               $join .= " ON ($this->primary_table.$this->primary_id_column = $alias.object_id)";
+                       }
+
+
+                       $where = "$alias.term_taxonomy_id $operator ($terms)";
+
+               } elseif ( 'NOT IN' == $operator ) {
+
+                       if ( empty( $terms ) ) {
+                               return $sql;
+                       }
+
+                       $terms = implode( ',', $terms );
+
+                       $where = "$this->primary_table.$this->primary_id_column NOT IN (
+                               SELECT object_id
+                               FROM $wpdb->term_relationships
+                               WHERE term_taxonomy_id IN ($terms)
+                       )";
+
+               } elseif ( 'AND' == $operator ) {
+
+                       if ( empty( $terms ) ) {
+                               return $sql;
+                       }
+
+                       $num_terms = count( $terms );
+
+                       $terms = implode( ',', $terms );
+
+                       $where = "(
+                               SELECT COUNT(1)
+                               FROM $wpdb->term_relationships
+                               WHERE term_taxonomy_id IN ($terms)
+                               AND object_id = $this->primary_table.$this->primary_id_column
+                       ) = $num_terms";
+
+               } elseif ( 'NOT EXISTS' === $operator || 'EXISTS' === $operator ) {
+
+                       $where = $wpdb->prepare( "$operator (
+                               SELECT 1
+                               FROM $wpdb->term_relationships
+                               INNER JOIN $wpdb->term_taxonomy
+                               ON $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
+                               WHERE $wpdb->term_taxonomy.taxonomy = %s
+                               AND $wpdb->term_relationships.object_id = $this->primary_table.$this->primary_id_column
+                       )", $clause['taxonomy'] );
+
+               }
+
+               $sql['join'][]  = $join;
+               $sql['where'][] = $where;
+               return $sql;
+       }
+
+       /**
+        * Identify an existing table alias that is compatible with the current query clause.
+        *
+        * We avoid unnecessary table joins by allowing each clause to look for
+        * an existing table alias that is compatible with the query that it
+        * needs to perform.
+        *
+        * An existing alias is compatible if (a) it is a sibling of `$clause`
+        * (ie, it's under the scope of the same relation), and (b) the combination
+        * of operator and relation between the clauses allows for a shared table
+        * join. In the case of WP_Tax_Query, this only applies to 'IN'
+        * clauses that are connected by the relation 'OR'.
+        *
+        * @since 4.1.0
+        * @access protected
+        *
+        * @param array       $clause       Query clause.
+        * @param array       $parent_query Parent query of $clause.
+        * @return string|false Table alias if found, otherwise false.
+        */
+       protected function find_compatible_table_alias( $clause, $parent_query ) {
+               $alias = false;
+
+               // Sanity check. Only IN queries use the JOIN syntax .
+               if ( ! isset( $clause['operator'] ) || 'IN' !== $clause['operator'] ) {
+                       return $alias;
+               }
+
+               // Since we're only checking IN queries, we're only concerned with OR relations.
+               if ( ! isset( $parent_query['relation'] ) || 'OR' !== $parent_query['relation'] ) {
+                       return $alias;
+               }
+
+               $compatible_operators = array( 'IN' );
+
+               foreach ( $parent_query as $sibling ) {
+                       if ( ! is_array( $sibling ) || ! $this->is_first_order_clause( $sibling ) ) {
+                               continue;
+                       }
+
+                       if ( empty( $sibling['alias'] ) || empty( $sibling['operator'] ) ) {
+                               continue;
+                       }
+
+                       // The sibling must both have compatible operator to share its alias.
+                       if ( in_array( strtoupper( $sibling['operator'] ), $compatible_operators ) ) {
+                               $alias = $sibling['alias'];
+                               break;
+                       }
+               }
+
+               return $alias;
+       }
+
+       /**
+        * Validates a single query.
+        *
+        * @since 3.2.0
+        * @access private
+        *
+        * @param array &$query The single query.
+        */
+       private function clean_query( &$query ) {
+               if ( empty( $query['taxonomy'] ) ) {
+                       if ( 'term_taxonomy_id' !== $query['field'] ) {
+                               $query = new WP_Error( 'Invalid taxonomy' );
+                               return;
+                       }
+
+                       // so long as there are shared terms, include_children requires that a taxonomy is set
+                       $query['include_children'] = false;
+               } elseif ( ! taxonomy_exists( $query['taxonomy'] ) ) {
+                       $query = new WP_Error( 'Invalid taxonomy' );
+                       return;
+               }
+
+               $query['terms'] = array_unique( (array) $query['terms'] );
+
+               if ( is_taxonomy_hierarchical( $query['taxonomy'] ) && $query['include_children'] ) {
+                       $this->transform_query( $query, 'term_id' );
+
+                       if ( is_wp_error( $query ) )
+                               return;
+
+                       $children = array();
+                       foreach ( $query['terms'] as $term ) {
+                               $children = array_merge( $children, get_term_children( $term, $query['taxonomy'] ) );
+                               $children[] = $term;
+                       }
+                       $query['terms'] = $children;
+               }
+
+               $this->transform_query( $query, 'term_taxonomy_id' );
+       }
+
+       /**
+        * Transforms a single query, from one field to another.
+        *
+        * @since 3.2.0
+        *
+        * @global wpdb $wpdb The WordPress database abstraction object.
+        *
+        * @param array  &$query          The single query.
+        * @param string $resulting_field The resulting field. Accepts 'slug', 'name', 'term_taxonomy_id',
+        *                                or 'term_id'. Default 'term_id'.
+        */
+       public function transform_query( &$query, $resulting_field ) {
+               global $wpdb;
+
+               if ( empty( $query['terms'] ) )
+                       return;
+
+               if ( $query['field'] == $resulting_field )
+                       return;
+
+               $resulting_field = sanitize_key( $resulting_field );
+
+               switch ( $query['field'] ) {
+                       case 'slug':
+                       case 'name':
+                               foreach ( $query['terms'] as &$term ) {
+                                       /*
+                                        * 0 is the $term_id parameter. We don't have a term ID yet, but it doesn't
+                                        * matter because `sanitize_term_field()` ignores the $term_id param when the
+                                        * context is 'db'.
+                                        */
+                                       $term = "'" . esc_sql( sanitize_term_field( $query['field'], $term, 0, $query['taxonomy'], 'db' ) ) . "'";
+                               }
+
+                               $terms = implode( ",", $query['terms'] );
+
+                               $terms = $wpdb->get_col( "
+                                       SELECT $wpdb->term_taxonomy.$resulting_field
+                                       FROM $wpdb->term_taxonomy
+                                       INNER JOIN $wpdb->terms USING (term_id)
+                                       WHERE taxonomy = '{$query['taxonomy']}'
+                                       AND $wpdb->terms.{$query['field']} IN ($terms)
+                               " );
+                               break;
+                       case 'term_taxonomy_id':
+                               $terms = implode( ',', array_map( 'intval', $query['terms'] ) );
+                               $terms = $wpdb->get_col( "
+                                       SELECT $resulting_field
+                                       FROM $wpdb->term_taxonomy
+                                       WHERE term_taxonomy_id IN ($terms)
+                               " );
+                               break;
+                       default:
+                               $terms = implode( ',', array_map( 'intval', $query['terms'] ) );
+                               $terms = $wpdb->get_col( "
+                                       SELECT $resulting_field
+                                       FROM $wpdb->term_taxonomy
+                                       WHERE taxonomy = '{$query['taxonomy']}'
+                                       AND term_id IN ($terms)
+                               " );
+               }
+
+               if ( 'AND' == $query['operator'] && count( $terms ) < count( $query['terms'] ) ) {
+                       $query = new WP_Error( 'Inexistent terms' );
+                       return;
+               }
+
+               $query['terms'] = $terms;
+               $query['field'] = $resulting_field;
+       }
+}
diff --git a/wp-includes/class-wp-term.php b/wp-includes/class-wp-term.php
new file mode 100644 (file)
index 0000000..30a0a8b
--- /dev/null
@@ -0,0 +1,255 @@
+<?php
+/**
+ * Taxonomy API: WP_Term class
+ *
+ * @package WordPress
+ * @subpackage Taxonomy
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement the WP_Term object.
+ *
+ * @since 4.4.0
+ */
+final class WP_Term {
+
+       /**
+        * Term ID.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $term_id;
+
+       /**
+        * The term's name.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $name = '';
+
+       /**
+        * The term's slug.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $slug = '';
+
+       /**
+        * The term's term_group.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $term_group = '';
+
+       /**
+        * Term Taxonomy ID.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $term_taxonomy_id = 0;
+
+       /**
+        * The term's taxonomy name.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $taxonomy = '';
+
+       /**
+        * The term's description.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $description = '';
+
+       /**
+        * ID of a term's parent term.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $parent = 0;
+
+       /**
+        * Cached object count for this term.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var int
+        */
+       public $count = 0;
+
+       /**
+        * Stores the term object's sanitization level.
+        *
+        * Does not correspond to a database field.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $filter = 'raw';
+
+       /**
+        * Retrieve WP_Term instance.
+        *
+        * @since 4.4.0
+        * @access public
+        * @static
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param int    $term_id  Term ID.
+        * @param string $taxonomy Optional. Limit matched terms to those matching `$taxonomy`. Only used for
+        *                         disambiguating potentially shared terms.
+        * @return WP_Term|WP_Error|false Term object, if found. WP_Error if `$term_id` is shared between taxonomies and
+        *                                there's insufficient data to distinguish which term is intended.
+        *                                False for other failures.
+        */
+       public static function get_instance( $term_id, $taxonomy = null ) {
+               global $wpdb;
+
+               $term_id = (int) $term_id;
+               if ( ! $term_id ) {
+                       return false;
+               }
+
+               $_term = wp_cache_get( $term_id, 'terms' );
+
+               // If there isn't a cached version, hit the database.
+               if ( ! $_term || ( $taxonomy && $taxonomy !== $_term->taxonomy ) ) {
+                       // Grab all matching terms, in case any are shared between taxonomies.
+                       $terms = $wpdb->get_results( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE t.term_id = %d", $term_id ) );
+                       if ( ! $terms ) {
+                               return false;
+                       }
+
+                       // If a taxonomy was specified, find a match.
+                       if ( $taxonomy ) {
+                               foreach ( $terms as $match ) {
+                                       if ( $taxonomy === $match->taxonomy ) {
+                                               $_term = $match;
+                                               break;
+                                       }
+                               }
+
+                       // If only one match was found, it's the one we want.
+                       } elseif ( 1 === count( $terms ) ) {
+                               $_term = reset( $terms );
+
+                       // Otherwise, the term must be shared between taxonomies.
+                       } else {
+                               // If the term is shared only with invalid taxonomies, return the one valid term.
+                               foreach ( $terms as $t ) {
+                                       if ( ! taxonomy_exists( $t->taxonomy ) ) {
+                                               continue;
+                                       }
+
+                                       // Only hit if we've already identified a term in a valid taxonomy.
+                                       if ( $_term ) {
+                                               return new WP_Error( 'ambiguous_term_id', __( 'Term ID is shared between multiple taxonomies' ), $term_id );
+                                       }
+
+                                       $_term = $t;
+                               }
+                       }
+
+                       if ( ! $_term ) {
+                               return false;
+                       }
+
+                       // Don't return terms from invalid taxonomies.
+                       if ( ! taxonomy_exists( $_term->taxonomy ) ) {
+                               return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy' ) );
+                       }
+
+                       $_term = sanitize_term( $_term, $_term->taxonomy, 'raw' );
+
+                       // Don't cache terms that are shared between taxonomies.
+                       if ( 1 === count( $terms ) ) {
+                               wp_cache_add( $term_id, $_term, 'terms' );
+                       }
+               }
+
+               $term_obj = new WP_Term( $_term );
+               $term_obj->filter( $term_obj->filter );
+
+               return $term_obj;
+       }
+
+       /**
+        * Constructor.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param WP_Term|object $term Term object.
+        */
+       public function __construct( $term ) {
+               foreach ( get_object_vars( $term ) as $key => $value ) {
+                       $this->$key = $value;
+               }
+       }
+
+       /**
+        * Sanitizes term fields, according to the filter type provided.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $filter Filter context. Accepts 'edit', 'db', 'display', 'attribute', 'js', 'raw'.
+        */
+       public function filter( $filter ) {
+               sanitize_term( $this, $this->taxonomy, $filter );
+       }
+
+       /**
+        * Converts an object to array.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Object as array.
+        */
+       public function to_array() {
+               return get_object_vars( $this );
+       }
+
+       /**
+        * Getter.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return mixed
+        */
+       public function __get( $key ) {
+               switch ( $key ) {
+                       case 'data' :
+                               $data = new stdClass();
+                               $columns = array( 'term_id', 'name', 'slug', 'term_group', 'term_taxonomy_id', 'taxonomy', 'description', 'parent', 'count' );
+                               foreach ( $columns as $column ) {
+                                       $data->{$column} = isset( $this->{$column} ) ? $this->{$column} : null;
+                               }
+
+                               return sanitize_term( $data, $data->taxonomy, 'raw' );
+                               break;
+               }
+       }
+}
index ad70a4bf9e38f789819e2ac40b933c1401df1d9b..2128df230f7f275913039680a56d173260a95d39 100644 (file)
@@ -4,10 +4,21 @@
  *
  * @package WordPress
  * @subpackage Theme
+ * @since 3.4.0
  */
-
 final class WP_Theme implements ArrayAccess {
 
+       /**
+        * Whether the theme has been marked as updateable.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var bool
+        *
+        * @see WP_MS_Themes_List_Table
+        */
+       public $update = false;
+
        /**
         * Headers for style.css files.
         *
@@ -45,6 +56,7 @@ final class WP_Theme implements ArrayAccess {
                'twentythirteen' => 'Twenty Thirteen',
                'twentyfourteen' => 'Twenty Fourteen',
                'twentyfifteen'  => 'Twenty Fifteen',
+               'twentysixteen'  => 'Twenty Sixteen',
        );
 
        /**
@@ -1010,18 +1022,15 @@ final class WP_Theme implements ArrayAccess {
                /**
                 * Filter list of page templates for a theme.
                 *
-                * This filter does not currently allow for page templates to be added.
-                *
                 * @since 3.9.0
+                * @since 4.4.0 Converted to allow complete control over the `$page_templates` array.
                 *
                 * @param array        $page_templates Array of page templates. Keys are filenames,
                 *                                     values are translated names.
                 * @param WP_Theme     $this           The theme object.
                 * @param WP_Post|null $post           The post being edited, provided for context, or null.
                 */
-               $return = apply_filters( 'theme_page_templates', $page_templates, $this, $post );
-
-               return array_intersect_assoc( $return, $page_templates );
+               return (array) apply_filters( 'theme_page_templates', $page_templates, $this, $post );
        }
 
        /**
@@ -1142,6 +1151,23 @@ final class WP_Theme implements ArrayAccess {
                return false;
        }
 
+       /**
+        * Determines the latest WordPress default theme that is installed.
+        *
+        * This hits the filesystem.
+        *
+        * @return WP_Theme|false Object, or false if no theme is installed, which would be bad.
+        */
+       public static function get_core_default_theme() {
+               foreach ( array_reverse( self::$default_themes ) as $slug => $name ) {
+                       $theme = wp_get_theme( $slug );
+                       if ( $theme->exists() ) {
+                               return $theme;
+                       }
+               }
+               return false;
+       }
+
        /**
         * Returns array of stylesheet names of themes allowed on the site or network.
         *
diff --git a/wp-includes/class-wp-user-query.php b/wp-includes/class-wp-user-query.php
new file mode 100644 (file)
index 0000000..a86c9c3
--- /dev/null
@@ -0,0 +1,798 @@
+<?php
+/**
+ * User API: WP_User_Query class
+ *
+ * @package WordPress
+ * @subpackage Users
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used for querying users.
+ *
+ * @since 3.1.0
+ *
+ * @see WP_User_Query::prepare_query() for information on accepted arguments.
+ */
+class WP_User_Query {
+
+       /**
+        * Query vars, after parsing
+        *
+        * @since 3.5.0
+        * @access public
+        * @var array
+        */
+       public $query_vars = array();
+
+       /**
+        * List of found user ids
+        *
+        * @since 3.1.0
+        * @access private
+        * @var array
+        */
+       private $results;
+
+       /**
+        * Total number of found users for the current query
+        *
+        * @since 3.1.0
+        * @access private
+        * @var int
+        */
+       private $total_users = 0;
+
+       /**
+        * Metadata query container.
+        *
+        * @since 4.2.0
+        * @access public
+        * @var WP_Meta_Query
+        */
+       public $meta_query = false;
+
+       /**
+        * The SQL query used to fetch matching users.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $request;
+
+       private $compat_fields = array( 'results', 'total_users' );
+
+       // SQL clauses
+       public $query_fields;
+       public $query_from;
+       public $query_where;
+       public $query_orderby;
+       public $query_limit;
+
+       /**
+        * PHP5 constructor.
+        *
+        * @since 3.1.0
+        *
+        * @param null|string|array $args Optional. The query variables.
+        */
+       public function __construct( $query = null ) {
+               if ( ! empty( $query ) ) {
+                       $this->prepare_query( $query );
+                       $this->query();
+               }
+       }
+
+       /**
+        * Fills in missing query variables with default values.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $args Query vars, as passed to `WP_User_Query`.
+        * @return array Complete query variables with undefined ones filled in with defaults.
+        */
+       public static function fill_query_vars( $args ) {
+               $defaults = array(
+                       'blog_id' => $GLOBALS['blog_id'],
+                       'role' => '',
+                       'role__in' => array(),
+                       'role__not_in' => array(),
+                       'meta_key' => '',
+                       'meta_value' => '',
+                       'meta_compare' => '',
+                       'include' => array(),
+                       'exclude' => array(),
+                       'search' => '',
+                       'search_columns' => array(),
+                       'orderby' => 'login',
+                       'order' => 'ASC',
+                       'offset' => '',
+                       'number' => '',
+                       'paged' => 1,
+                       'count_total' => true,
+                       'fields' => 'all',
+                       'who' => '',
+                       'has_published_posts' => null,
+               );
+
+               return wp_parse_args( $args, $defaults );
+       }
+
+       /**
+        * Prepare the query variables.
+        *
+        * @since 3.1.0
+        * @since 4.1.0 Added the ability to order by the `include` value.
+        * @since 4.2.0 Added 'meta_value_num' support for `$orderby` parameter. Added multi-dimensional array syntax
+        *              for `$orderby` parameter.
+        * @since 4.3.0 Added 'has_published_posts' parameter.
+        * @since 4.4.0 Added 'paged', 'role__in', and 'role__not_in' parameters. The 'role' parameter was updated to
+        *              permit an array or comma-separated list of values. The 'number' parameter was updated to support
+        *              querying for all users with using -1.
+        *
+        * @access public
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        * @global int  $blog_id
+        *
+        * @param string|array $query {
+        *     Optional. Array or string of Query parameters.
+        *
+        *     @type int          $blog_id             The site ID. Default is the global blog id.
+        *     @type string|array $role                An array or a comma-separated list of role names that users must match
+        *                                             to be included in results. Note that this is an inclusive list: users
+        *                                             must match *each* role. Default empty.
+        *     @type array        $role__in            An array of role names. Matched users must have at least one of these
+        *                                             roles. Default empty array.
+        *     @type array        $role__not_in        An array of role names to exclude. Users matching one or more of these
+        *                                             roles will not be included in results. Default empty array.
+        *     @type string       $meta_key            User meta key. Default empty.
+        *     @type string       $meta_value          User meta value. Default empty.
+        *     @type string       $meta_compare        Comparison operator to test the `$meta_value`. Accepts '=', '!=',
+        *                                             '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN',
+        *                                             'BETWEEN', 'NOT BETWEEN', 'EXISTS', 'NOT EXISTS', 'REGEXP',
+        *                                             'NOT REGEXP', or 'RLIKE'. Default '='.
+        *     @type array        $include             An array of user IDs to include. Default empty array.
+        *     @type array        $exclude             An array of user IDs to exclude. Default empty array.
+        *     @type string       $search              Search keyword. Searches for possible string matches on columns.
+        *                                             When `$search_columns` is left empty, it tries to determine which
+        *                                             column to search in based on search string. Default empty.
+        *     @type array        $search_columns      Array of column names to be searched. Accepts 'ID', 'login',
+        *                                             'nicename', 'email', 'url'. Default empty array.
+        *     @type string|array $orderby             Field(s) to sort the retrieved users by. May be a single value,
+        *                                             an array of values, or a multi-dimensional array with fields as
+        *                                             keys and orders ('ASC' or 'DESC') as values. Accepted values are
+        *                                             'ID', 'display_name' (or 'name'), 'include', 'user_login'
+        *                                             (or 'login'), 'user_nicename' (or 'nicename'), 'user_email'
+        *                                             (or 'email'), 'user_url' (or 'url'), 'user_registered'
+        *                                             or 'registered'), 'post_count', 'meta_value', 'meta_value_num',
+        *                                             the value of `$meta_key`, or an array key of `$meta_query`. To use
+        *                                             'meta_value' or 'meta_value_num', `$meta_key` must be also be
+        *                                             defined. Default 'user_login'.
+        *     @type string       $order               Designates ascending or descending order of users. Order values
+        *                                             passed as part of an `$orderby` array take precedence over this
+        *                                             parameter. Accepts 'ASC', 'DESC'. Default 'ASC'.
+        *     @type int          $offset              Number of users to offset in retrieved results. Can be used in
+        *                                             conjunction with pagination. Default 0.
+        *     @type int          $number              Number of users to limit the query for. Can be used in
+        *                                             conjunction with pagination. Value -1 (all) is supported, but
+        *                                             should be used with caution on larger sites.
+        *                                             Default empty (all users).
+        *     @type int          $paged               When used with number, defines the page of results to return.
+        *                                             Default 1.
+        *     @type bool         $count_total         Whether to count the total number of users found. If pagination
+        *                                             is not needed, setting this to false can improve performance.
+        *                                             Default true.
+        *     @type string|array $fields              Which fields to return. Single or all fields (string), or array
+        *                                             of fields. Accepts 'ID', 'display_name', 'user_login',
+        *                                             'user_nicename', 'user_email', 'user_url', 'user_registered'.
+        *                                             Use 'all' for all fields and 'all_with_meta' to include
+        *                                             meta fields. Default 'all'.
+        *     @type string       $who                 Type of users to query. Accepts 'authors'.
+        *                                             Default empty (all users).
+        *     @type bool|array   $has_published_posts Pass an array of post types to filter results to users who have
+        *                                             published posts in those post types. `true` is an alias for all
+        *                                             public post types.
+        * }
+        */
+       public function prepare_query( $query = array() ) {
+               global $wpdb;
+
+               if ( empty( $this->query_vars ) || ! empty( $query ) ) {
+                       $this->query_limit = null;
+                       $this->query_vars = $this->fill_query_vars( $query );
+               }
+
+               /**
+                * Fires before the WP_User_Query has been parsed.
+                *
+                * The passed WP_User_Query object contains the query variables, not
+                * yet passed into SQL.
+                *
+                * @since 4.0.0
+                *
+                * @param WP_User_Query $this The current WP_User_Query instance,
+                *                            passed by reference.
+                */
+               do_action( 'pre_get_users', $this );
+
+               // Ensure that query vars are filled after 'pre_get_users'.
+               $qv =& $this->query_vars;
+               $qv =  $this->fill_query_vars( $qv );
+
+               if ( is_array( $qv['fields'] ) ) {
+                       $qv['fields'] = array_unique( $qv['fields'] );
+
+                       $this->query_fields = array();
+                       foreach ( $qv['fields'] as $field ) {
+                               $field = 'ID' === $field ? 'ID' : sanitize_key( $field );
+                               $this->query_fields[] = "$wpdb->users.$field";
+                       }
+                       $this->query_fields = implode( ',', $this->query_fields );
+               } elseif ( 'all' == $qv['fields'] ) {
+                       $this->query_fields = "$wpdb->users.*";
+               } else {
+                       $this->query_fields = "$wpdb->users.ID";
+               }
+
+               if ( isset( $qv['count_total'] ) && $qv['count_total'] )
+                       $this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields;
+
+               $this->query_from = "FROM $wpdb->users";
+               $this->query_where = "WHERE 1=1";
+
+               // Parse and sanitize 'include', for use by 'orderby' as well as 'include' below.
+               if ( ! empty( $qv['include'] ) ) {
+                       $include = wp_parse_id_list( $qv['include'] );
+               } else {
+                       $include = false;
+               }
+
+               $blog_id = 0;
+               if ( isset( $qv['blog_id'] ) ) {
+                       $blog_id = absint( $qv['blog_id'] );
+               }
+
+               if ( isset( $qv['who'] ) && 'authors' == $qv['who'] && $blog_id ) {
+                       $qv['meta_key'] = $wpdb->get_blog_prefix( $blog_id ) . 'user_level';
+                       $qv['meta_value'] = 0;
+                       $qv['meta_compare'] = '!=';
+                       $qv['blog_id'] = $blog_id = 0; // Prevent extra meta query
+               }
+
+               if ( $qv['has_published_posts'] && $blog_id ) {
+                       if ( true === $qv['has_published_posts'] ) {
+                               $post_types = get_post_types( array( 'public' => true ) );
+                       } else {
+                               $post_types = (array) $qv['has_published_posts'];
+                       }
+
+                       foreach ( $post_types as &$post_type ) {
+                               $post_type = $wpdb->prepare( '%s', $post_type );
+                       }
+
+                       $posts_table = $wpdb->get_blog_prefix( $blog_id ) . 'posts';
+                       $this->query_where .= " AND $wpdb->users.ID IN ( SELECT DISTINCT $posts_table.post_author FROM $posts_table WHERE $posts_table.post_status = 'publish' AND $posts_table.post_type IN ( " . join( ", ", $post_types ) . " ) )";
+               }
+
+               // Meta query.
+               $this->meta_query = new WP_Meta_Query();
+               $this->meta_query->parse_query_vars( $qv );
+
+               $roles = array();
+               if ( isset( $qv['role'] ) ) {
+                       if ( is_array( $qv['role'] ) ) {
+                               $roles = $qv['role'];
+                       } elseif ( is_string( $qv['role'] ) && ! empty( $qv['role'] ) ) {
+                               $roles = array_map( 'trim', explode( ',', $qv['role'] ) );
+                       }
+               }
+
+               $role__in = array();
+               if ( isset( $qv['role__in'] ) ) {
+                       $role__in = (array) $qv['role__in'];
+               }
+
+               $role__not_in = array();
+               if ( isset( $qv['role__not_in'] ) ) {
+                       $role__not_in = (array) $qv['role__not_in'];
+               }
+
+               if ( $blog_id && ( ! empty( $roles ) || ! empty( $role__in ) || ! empty( $role__not_in ) || is_multisite() ) ) {
+                       $role_queries  = array();
+
+                       $roles_clauses = array( 'relation' => 'AND' );
+                       if ( ! empty( $roles ) ) {
+                               foreach ( $roles as $role ) {
+                                       $roles_clauses[] = array(
+                                               'key'     => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities',
+                                               'value'   => '"' . $role . '"',
+                                               'compare' => 'LIKE',
+                                       );
+                               }
+
+                               $role_queries[] = $roles_clauses;
+                       }
+
+                       $role__in_clauses = array( 'relation' => 'OR' );
+                       if ( ! empty( $role__in ) ) {
+                               foreach ( $role__in as $role ) {
+                                       $role__in_clauses[] = array(
+                                               'key'     => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities',
+                                               'value'   => '"' . $role . '"',
+                                               'compare' => 'LIKE',
+                                       );
+                               }
+
+                               $role_queries[] = $role__in_clauses;
+                       }
+
+                       $role__not_in_clauses = array( 'relation' => 'AND' );
+                       if ( ! empty( $role__not_in ) ) {
+                               foreach ( $role__not_in as $role ) {
+                                       $role__not_in_clauses[] = array(
+                                               'key'     => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities',
+                                               'value'   => '"' . $role . '"',
+                                               'compare' => 'NOT LIKE',
+                                       );
+                               }
+
+                               $role_queries[] = $role__not_in_clauses;
+                       }
+
+                       // If there are no specific roles named, make sure the user is a member of the site.
+                       if ( empty( $role_queries ) ) {
+                               $role_queries[] = array(
+                                       'key' => $wpdb->get_blog_prefix( $blog_id ) . 'capabilities',
+                                       'compare' => 'EXISTS',
+                               );
+                       }
+
+                       // Specify that role queries should be joined with AND.
+                       $role_queries['relation'] = 'AND';
+
+                       if ( empty( $this->meta_query->queries ) ) {
+                               $this->meta_query->queries = $role_queries;
+                       } else {
+                               // Append the cap query to the original queries and reparse the query.
+                               $this->meta_query->queries = array(
+                                       'relation' => 'AND',
+                                       array( $this->meta_query->queries, $role_queries ),
+                               );
+                       }
+
+                       $this->meta_query->parse_query_vars( $this->meta_query->queries );
+               }
+
+               if ( ! empty( $this->meta_query->queries ) ) {
+                       $clauses = $this->meta_query->get_sql( 'user', $wpdb->users, 'ID', $this );
+                       $this->query_from .= $clauses['join'];
+                       $this->query_where .= $clauses['where'];
+
+                       if ( $this->meta_query->has_or_relation() ) {
+                               $this->query_fields = 'DISTINCT ' . $this->query_fields;
+                       }
+               }
+
+               // sorting
+               $qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : '';
+               $order = $this->parse_order( $qv['order'] );
+
+               if ( empty( $qv['orderby'] ) ) {
+                       // Default order is by 'user_login'.
+                       $ordersby = array( 'user_login' => $order );
+               } elseif ( is_array( $qv['orderby'] ) ) {
+                       $ordersby = $qv['orderby'];
+               } else {
+                       // 'orderby' values may be a comma- or space-separated list.
+                       $ordersby = preg_split( '/[,\s]+/', $qv['orderby'] );
+               }
+
+               $orderby_array = array();
+               foreach ( $ordersby as $_key => $_value ) {
+                       if ( ! $_value ) {
+                               continue;
+                       }
+
+                       if ( is_int( $_key ) ) {
+                               // Integer key means this is a flat array of 'orderby' fields.
+                               $_orderby = $_value;
+                               $_order = $order;
+                       } else {
+                               // Non-integer key means this the key is the field and the value is ASC/DESC.
+                               $_orderby = $_key;
+                               $_order = $_value;
+                       }
+
+                       $parsed = $this->parse_orderby( $_orderby );
+
+                       if ( ! $parsed ) {
+                               continue;
+                       }
+
+                       $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
+               }
+
+               // If no valid clauses were found, order by user_login.
+               if ( empty( $orderby_array ) ) {
+                       $orderby_array[] = "user_login $order";
+               }
+
+               $this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array );
+
+               // limit
+               if ( isset( $qv['number'] ) && $qv['number'] > 0 ) {
+                       if ( $qv['offset'] ) {
+                               $this->query_limit = $wpdb->prepare("LIMIT %d, %d", $qv['offset'], $qv['number']);
+                       } else {
+                               $this->query_limit = $wpdb->prepare( "LIMIT %d, %d", $qv['number'] * ( $qv['paged'] - 1 ), $qv['number'] );
+                       }
+               }
+
+               $search = '';
+               if ( isset( $qv['search'] ) )
+                       $search = trim( $qv['search'] );
+
+               if ( $search ) {
+                       $leading_wild = ( ltrim($search, '*') != $search );
+                       $trailing_wild = ( rtrim($search, '*') != $search );
+                       if ( $leading_wild && $trailing_wild )
+                               $wild = 'both';
+                       elseif ( $leading_wild )
+                               $wild = 'leading';
+                       elseif ( $trailing_wild )
+                               $wild = 'trailing';
+                       else
+                               $wild = false;
+                       if ( $wild )
+                               $search = trim($search, '*');
+
+                       $search_columns = array();
+                       if ( $qv['search_columns'] )
+                               $search_columns = array_intersect( $qv['search_columns'], array( 'ID', 'user_login', 'user_email', 'user_url', 'user_nicename' ) );
+                       if ( ! $search_columns ) {
+                               if ( false !== strpos( $search, '@') )
+                                       $search_columns = array('user_email');
+                               elseif ( is_numeric($search) )
+                                       $search_columns = array('user_login', 'ID');
+                               elseif ( preg_match('|^https?://|', $search) && ! ( is_multisite() && wp_is_large_network( 'users' ) ) )
+                                       $search_columns = array('user_url');
+                               else
+                                       $search_columns = array('user_login', 'user_url', 'user_email', 'user_nicename', 'display_name');
+                       }
+
+                       /**
+                        * Filter the columns to search in a WP_User_Query search.
+                        *
+                        * The default columns depend on the search term, and include 'user_email',
+                        * 'user_login', 'ID', 'user_url', 'display_name', and 'user_nicename'.
+                        *
+                        * @since 3.6.0
+                        *
+                        * @param array         $search_columns Array of column names to be searched.
+                        * @param string        $search         Text being searched.
+                        * @param WP_User_Query $this           The current WP_User_Query instance.
+                        */
+                       $search_columns = apply_filters( 'user_search_columns', $search_columns, $search, $this );
+
+                       $this->query_where .= $this->get_search_sql( $search, $search_columns, $wild );
+               }
+
+               if ( ! empty( $include ) ) {
+                       // Sanitized earlier.
+                       $ids = implode( ',', $include );
+                       $this->query_where .= " AND $wpdb->users.ID IN ($ids)";
+               } elseif ( ! empty( $qv['exclude'] ) ) {
+                       $ids = implode( ',', wp_parse_id_list( $qv['exclude'] ) );
+                       $this->query_where .= " AND $wpdb->users.ID NOT IN ($ids)";
+               }
+
+               // Date queries are allowed for the user_registered field.
+               if ( ! empty( $qv['date_query'] ) && is_array( $qv['date_query'] ) ) {
+                       $date_query = new WP_Date_Query( $qv['date_query'], 'user_registered' );
+                       $this->query_where .= $date_query->get_sql();
+               }
+
+               /**
+                * Fires after the WP_User_Query has been parsed, and before
+                * the query is executed.
+                *
+                * The passed WP_User_Query object contains SQL parts formed
+                * from parsing the given query.
+                *
+                * @since 3.1.0
+                *
+                * @param WP_User_Query $this The current WP_User_Query instance,
+                *                            passed by reference.
+                */
+               do_action_ref_array( 'pre_user_query', array( &$this ) );
+       }
+
+       /**
+        * Execute the query, with the current variables.
+        *
+        * @since 3.1.0
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        */
+       public function query() {
+               global $wpdb;
+
+               $qv =& $this->query_vars;
+
+               $this->request = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit";
+
+               if ( is_array( $qv['fields'] ) || 'all' == $qv['fields'] ) {
+                       $this->results = $wpdb->get_results( $this->request );
+               } else {
+                       $this->results = $wpdb->get_col( $this->request );
+               }
+
+               /**
+                * Filter SELECT FOUND_ROWS() query for the current WP_User_Query instance.
+                *
+                * @since 3.2.0
+                *
+                * @global wpdb $wpdb WordPress database abstraction object.
+                *
+                * @param string $sql The SELECT FOUND_ROWS() query for the current WP_User_Query.
+                */
+               if ( isset( $qv['count_total'] ) && $qv['count_total'] )
+                       $this->total_users = $wpdb->get_var( apply_filters( 'found_users_query', 'SELECT FOUND_ROWS()' ) );
+
+               if ( !$this->results )
+                       return;
+
+               if ( 'all_with_meta' == $qv['fields'] ) {
+                       cache_users( $this->results );
+
+                       $r = array();
+                       foreach ( $this->results as $userid )
+                               $r[ $userid ] = new WP_User( $userid, '', $qv['blog_id'] );
+
+                       $this->results = $r;
+               } elseif ( 'all' == $qv['fields'] ) {
+                       foreach ( $this->results as $key => $user ) {
+                               $this->results[ $key ] = new WP_User( $user, '', $qv['blog_id'] );
+                       }
+               }
+       }
+
+       /**
+        * Retrieve query variable.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $query_var Query variable key.
+        * @return mixed
+        */
+       public function get( $query_var ) {
+               if ( isset( $this->query_vars[$query_var] ) )
+                       return $this->query_vars[$query_var];
+
+               return null;
+       }
+
+       /**
+        * Set query variable.
+        *
+        * @since 3.5.0
+        * @access public
+        *
+        * @param string $query_var Query variable key.
+        * @param mixed $value Query variable value.
+        */
+       public function set( $query_var, $value ) {
+               $this->query_vars[$query_var] = $value;
+       }
+
+       /**
+        * Used internally to generate an SQL string for searching across multiple columns
+        *
+        * @access protected
+        * @since 3.1.0
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param string $string
+        * @param array  $cols
+        * @param bool   $wild   Whether to allow wildcard searches. Default is false for Network Admin, true for single site.
+        *                       Single site allows leading and trailing wildcards, Network Admin only trailing.
+        * @return string
+        */
+       protected function get_search_sql( $string, $cols, $wild = false ) {
+               global $wpdb;
+
+               $searches = array();
+               $leading_wild = ( 'leading' == $wild || 'both' == $wild ) ? '%' : '';
+               $trailing_wild = ( 'trailing' == $wild || 'both' == $wild ) ? '%' : '';
+               $like = $leading_wild . $wpdb->esc_like( $string ) . $trailing_wild;
+
+               foreach ( $cols as $col ) {
+                       if ( 'ID' == $col ) {
+                               $searches[] = $wpdb->prepare( "$col = %s", $string );
+                       } else {
+                               $searches[] = $wpdb->prepare( "$col LIKE %s", $like );
+                       }
+               }
+
+               return ' AND (' . implode(' OR ', $searches) . ')';
+       }
+
+       /**
+        * Return the list of users.
+        *
+        * @since 3.1.0
+        * @access public
+        *
+        * @return array Array of results.
+        */
+       public function get_results() {
+               return $this->results;
+       }
+
+       /**
+        * Return the total number of users for the current query.
+        *
+        * @since 3.1.0
+        * @access public
+        *
+        * @return int Number of total users.
+        */
+       public function get_total() {
+               return $this->total_users;
+       }
+
+       /**
+        * Parse and sanitize 'orderby' keys passed to the user query.
+        *
+        * @since 4.2.0
+        * @access protected
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param string $orderby Alias for the field to order by.
+        * @return string Value to used in the ORDER clause, if `$orderby` is valid.
+        */
+       protected function parse_orderby( $orderby ) {
+               global $wpdb;
+
+               $meta_query_clauses = $this->meta_query->get_clauses();
+
+               $_orderby = '';
+               if ( in_array( $orderby, array( 'login', 'nicename', 'email', 'url', 'registered' ) ) ) {
+                       $_orderby = 'user_' . $orderby;
+               } elseif ( in_array( $orderby, array( 'user_login', 'user_nicename', 'user_email', 'user_url', 'user_registered' ) ) ) {
+                       $_orderby = $orderby;
+               } elseif ( 'name' == $orderby || 'display_name' == $orderby ) {
+                       $_orderby = 'display_name';
+               } elseif ( 'post_count' == $orderby ) {
+                       // todo: avoid the JOIN
+                       $where = get_posts_by_author_sql( 'post' );
+                       $this->query_from .= " LEFT OUTER JOIN (
+                               SELECT post_author, COUNT(*) as post_count
+                               FROM $wpdb->posts
+                               $where
+                               GROUP BY post_author
+                       ) p ON ({$wpdb->users}.ID = p.post_author)
+                       ";
+                       $_orderby = 'post_count';
+               } elseif ( 'ID' == $orderby || 'id' == $orderby ) {
+                       $_orderby = 'ID';
+               } elseif ( 'meta_value' == $orderby || $this->get( 'meta_key' ) == $orderby ) {
+                       $_orderby = "$wpdb->usermeta.meta_value";
+               } elseif ( 'meta_value_num' == $orderby ) {
+                       $_orderby = "$wpdb->usermeta.meta_value+0";
+               } elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) {
+                       $include = wp_parse_id_list( $this->query_vars['include'] );
+                       $include_sql = implode( ',', $include );
+                       $_orderby = "FIELD( $wpdb->users.ID, $include_sql )";
+               } elseif ( isset( $meta_query_clauses[ $orderby ] ) ) {
+                       $meta_clause = $meta_query_clauses[ $orderby ];
+                       $_orderby = sprintf( "CAST(%s.meta_value AS %s)", esc_sql( $meta_clause['alias'] ), esc_sql( $meta_clause['cast'] ) );
+               }
+
+               return $_orderby;
+       }
+
+       /**
+        * Parse an 'order' query variable and cast it to ASC or DESC as necessary.
+        *
+        * @since 4.2.0
+        * @access protected
+        *
+        * @param string $order The 'order' query variable.
+        * @return string The sanitized 'order' query variable.
+        */
+       protected function parse_order( $order ) {
+               if ( ! is_string( $order ) || empty( $order ) ) {
+                       return 'DESC';
+               }
+
+               if ( 'ASC' === strtoupper( $order ) ) {
+                       return 'ASC';
+               } else {
+                       return 'DESC';
+               }
+       }
+
+       /**
+        * Make private properties readable for backwards compatibility.
+        *
+        * @since 4.0.0
+        * @access public
+        *
+        * @param string $name Property to get.
+        * @return mixed Property.
+        */
+       public function __get( $name ) {
+               if ( in_array( $name, $this->compat_fields ) ) {
+                       return $this->$name;
+               }
+       }
+
+       /**
+        * Make private properties settable for backwards compatibility.
+        *
+        * @since 4.0.0
+        * @access public
+        *
+        * @param string $name  Property to check if set.
+        * @param mixed  $value Property value.
+        * @return mixed Newly-set property.
+        */
+       public function __set( $name, $value ) {
+               if ( in_array( $name, $this->compat_fields ) ) {
+                       return $this->$name = $value;
+               }
+       }
+
+       /**
+        * Make private properties checkable for backwards compatibility.
+        *
+        * @since 4.0.0
+        * @access public
+        *
+        * @param string $name Property to check if set.
+        * @return bool Whether the property is set.
+        */
+       public function __isset( $name ) {
+               if ( in_array( $name, $this->compat_fields ) ) {
+                       return isset( $this->$name );
+               }
+       }
+
+       /**
+        * Make private properties un-settable for backwards compatibility.
+        *
+        * @since 4.0.0
+        * @access public
+        *
+        * @param string $name Property to unset.
+        */
+       public function __unset( $name ) {
+               if ( in_array( $name, $this->compat_fields ) ) {
+                       unset( $this->$name );
+               }
+       }
+
+       /**
+        * Make private/protected methods readable for backwards compatibility.
+        *
+        * @since 4.0.0
+        * @access public
+        *
+        * @param callable $name      Method to call.
+        * @param array    $arguments Arguments to pass when calling.
+        * @return mixed Return value of the callback, false otherwise.
+        */
+       public function __call( $name, $arguments ) {
+               if ( 'get_search_sql' === $name ) {
+                       return call_user_func_array( array( $this, $name ), $arguments );
+               }
+               return false;
+       }
+}
diff --git a/wp-includes/class-wp-user.php b/wp-includes/class-wp-user.php
new file mode 100644 (file)
index 0000000..91dc5a7
--- /dev/null
@@ -0,0 +1,787 @@
+<?php
+/**
+ * User API: WP_User class
+ *
+ * @package WordPress
+ * @subpackage Users
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement the WP_User object.
+ *
+ * @since 2.0.0
+ *
+ * @property string $nickname
+ * @property string $description
+ * @property string $user_description
+ * @property string $first_name
+ * @property string $user_firstname
+ * @property string $last_name
+ * @property string $user_lastname
+ * @property string $user_login
+ * @property string $user_pass
+ * @property string $user_nicename
+ * @property string $user_email
+ * @property string $user_url
+ * @property string $user_registered
+ * @property string $user_activation_key
+ * @property string $user_status
+ * @property string $display_name
+ * @property string $spam
+ * @property string $deleted
+ */
+class WP_User {
+       /**
+        * User data container.
+        *
+        * @since 2.0.0
+        * @var object
+        */
+       public $data;
+
+       /**
+        * The user's ID.
+        *
+        * @since 2.1.0
+        * @access public
+        * @var int
+        */
+       public $ID = 0;
+
+       /**
+        * The individual capabilities the user has been given.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var array
+        */
+       public $caps = array();
+
+       /**
+        * User metadata option name.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var string
+        */
+       public $cap_key;
+
+       /**
+        * The roles the user is part of.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var array
+        */
+       public $roles = array();
+
+       /**
+        * All capabilities the user has, including individual and role based.
+        *
+        * @since 2.0.0
+        * @access public
+        * @var array
+        */
+       public $allcaps = array();
+
+       /**
+        * The filter context applied to user data fields.
+        *
+        * @since 2.9.0
+        * @access private
+        * @var string
+        */
+       var $filter = null;
+
+       /**
+        * @static
+        * @access private
+        * @var array
+        */
+       private static $back_compat_keys;
+
+       /**
+        * Constructor.
+        *
+        * Retrieves the userdata and passes it to WP_User::init().
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param int|string|stdClass|WP_User $id User's ID, a WP_User object, or a user object from the DB.
+        * @param string $name Optional. User's username
+        * @param int $blog_id Optional Blog ID, defaults to current blog.
+        */
+       public function __construct( $id = 0, $name = '', $blog_id = '' ) {
+               if ( ! isset( self::$back_compat_keys ) ) {
+                       $prefix = $GLOBALS['wpdb']->prefix;
+                       self::$back_compat_keys = array(
+                               'user_firstname' => 'first_name',
+                               'user_lastname' => 'last_name',
+                               'user_description' => 'description',
+                               'user_level' => $prefix . 'user_level',
+                               $prefix . 'usersettings' => $prefix . 'user-settings',
+                               $prefix . 'usersettingstime' => $prefix . 'user-settings-time',
+                       );
+               }
+
+               if ( $id instanceof WP_User ) {
+                       $this->init( $id->data, $blog_id );
+                       return;
+               } elseif ( is_object( $id ) ) {
+                       $this->init( $id, $blog_id );
+                       return;
+               }
+
+               if ( ! empty( $id ) && ! is_numeric( $id ) ) {
+                       $name = $id;
+                       $id = 0;
+               }
+
+               if ( $id ) {
+                       $data = self::get_data_by( 'id', $id );
+               } else {
+                       $data = self::get_data_by( 'login', $name );
+               }
+
+               if ( $data ) {
+                       $this->init( $data, $blog_id );
+               } else {
+                       $this->data = new stdClass;
+               }
+       }
+
+       /**
+        * Sets up object properties, including capabilities.
+        *
+        * @param object $data User DB row object
+        * @param int $blog_id Optional. The blog id to initialize for
+        */
+       public function init( $data, $blog_id = '' ) {
+               $this->data = $data;
+               $this->ID = (int) $data->ID;
+
+               $this->for_blog( $blog_id );
+       }
+
+       /**
+        * Return only the main user fields
+        *
+        * @since 3.3.0
+        * @since 4.4.0 Added 'ID' as an alias of 'id' for the `$field` parameter.
+        *
+        * @static
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param string $field The field to query against: 'id', 'ID', 'slug', 'email' or 'login'.
+        * @param string|int $value The field value
+        * @return object|false Raw user object
+        */
+       public static function get_data_by( $field, $value ) {
+               global $wpdb;
+
+               // 'ID' is an alias of 'id'.
+               if ( 'ID' === $field ) {
+                       $field = 'id';
+               }
+
+               if ( 'id' == $field ) {
+                       // Make sure the value is numeric to avoid casting objects, for example,
+                       // to int 1.
+                       if ( ! is_numeric( $value ) )
+                               return false;
+                       $value = intval( $value );
+                       if ( $value < 1 )
+                               return false;
+               } else {
+                       $value = trim( $value );
+               }
+
+               if ( !$value )
+                       return false;
+
+               switch ( $field ) {
+                       case 'id':
+                               $user_id = $value;
+                               $db_field = 'ID';
+                               break;
+                       case 'slug':
+                               $user_id = wp_cache_get($value, 'userslugs');
+                               $db_field = 'user_nicename';
+                               break;
+                       case 'email':
+                               $user_id = wp_cache_get($value, 'useremail');
+                               $db_field = 'user_email';
+                               break;
+                       case 'login':
+                               $value = sanitize_user( $value );
+                               $user_id = wp_cache_get($value, 'userlogins');
+                               $db_field = 'user_login';
+                               break;
+                       default:
+                               return false;
+               }
+
+               if ( false !== $user_id ) {
+                       if ( $user = wp_cache_get( $user_id, 'users' ) )
+                               return $user;
+               }
+
+               if ( !$user = $wpdb->get_row( $wpdb->prepare(
+                       "SELECT * FROM $wpdb->users WHERE $db_field = %s", $value
+               ) ) )
+                       return false;
+
+               update_user_caches( $user );
+
+               return $user;
+       }
+
+       /**
+        * Makes private/protected methods readable for backwards compatibility.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @param callable $name      Method to call.
+        * @param array    $arguments Arguments to pass when calling.
+        * @return mixed|false Return value of the callback, false otherwise.
+        */
+       public function __call( $name, $arguments ) {
+               if ( '_init_caps' === $name ) {
+                       return call_user_func_array( array( $this, $name ), $arguments );
+               }
+               return false;
+       }
+
+       /**
+        * Magic method for checking the existence of a certain custom field.
+        *
+        * @since 3.3.0
+        * @access public
+        *
+        * @param string $key User meta key to check if set.
+        * @return bool Whether the given user meta key is set.
+        */
+       public function __isset( $key ) {
+               if ( 'id' == $key ) {
+                       _deprecated_argument( 'WP_User->id', '2.1',
+                               sprintf(
+                                       /* translators: %s: WP_User->ID */
+                                       __( 'Use %s instead.' ),
+                                       '<code>WP_User->ID</code>'
+                               )
+                       );
+                       $key = 'ID';
+               }
+
+               if ( isset( $this->data->$key ) )
+                       return true;
+
+               if ( isset( self::$back_compat_keys[ $key ] ) )
+                       $key = self::$back_compat_keys[ $key ];
+
+               return metadata_exists( 'user', $this->ID, $key );
+       }
+
+       /**
+        * Magic method for accessing custom fields.
+        *
+        * @since 3.3.0
+        * @access public
+        *
+        * @param string $key User meta key to retrieve.
+        * @return mixed Value of the given user meta key (if set). If `$key` is 'id', the user ID.
+        */
+       public function __get( $key ) {
+               if ( 'id' == $key ) {
+                       _deprecated_argument( 'WP_User->id', '2.1',
+                               sprintf(
+                                       /* translators: %s: WP_User->ID */
+                                       __( 'Use %s instead.' ),
+                                       '<code>WP_User->ID</code>'
+                               )
+                       );
+                       return $this->ID;
+               }
+
+               if ( isset( $this->data->$key ) ) {
+                       $value = $this->data->$key;
+               } else {
+                       if ( isset( self::$back_compat_keys[ $key ] ) )
+                               $key = self::$back_compat_keys[ $key ];
+                       $value = get_user_meta( $this->ID, $key, true );
+               }
+
+               if ( $this->filter ) {
+                       $value = sanitize_user_field( $key, $value, $this->ID, $this->filter );
+               }
+
+               return $value;
+       }
+
+       /**
+        * Magic method for setting custom user fields.
+        *
+        * This method does not update custom fields in the database. It only stores
+        * the value on the WP_User instance.
+        *
+        * @since 3.3.0
+        * @access public
+        *
+        * @param string $key   User meta key.
+        * @param mixed  $value User meta value.
+        */
+       public function __set( $key, $value ) {
+               if ( 'id' == $key ) {
+                       _deprecated_argument( 'WP_User->id', '2.1',
+                               sprintf(
+                                       /* translators: %s: WP_User->ID */
+                                       __( 'Use %s instead.' ),
+                                       '<code>WP_User->ID</code>'
+                               )
+                       );
+                       $this->ID = $value;
+                       return;
+               }
+
+               $this->data->$key = $value;
+       }
+
+       /**
+        * Magic method for unsetting a certain custom field.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $key User meta key to unset.
+        */
+       public function __unset( $key ) {
+               if ( 'id' == $key ) {
+                       _deprecated_argument( 'WP_User->id', '2.1',
+                               sprintf(
+                                       /* translators: %s: WP_User->ID */
+                                       __( 'Use %s instead.' ),
+                                       '<code>WP_User->ID</code>'
+                               )
+                       );
+               }
+
+               if ( isset( $this->data->$key ) ) {
+                       unset( $this->data->$key );
+               }
+
+               if ( isset( self::$back_compat_keys[ $key ] ) ) {
+                       unset( self::$back_compat_keys[ $key ] );
+               }
+       }
+
+       /**
+        * Determine whether the user exists in the database.
+        *
+        * @since 3.4.0
+        * @access public
+        *
+        * @return bool True if user exists in the database, false if not.
+        */
+       public function exists() {
+               return ! empty( $this->ID );
+       }
+
+       /**
+        * Retrieve the value of a property or meta key.
+        *
+        * Retrieves from the users and usermeta table.
+        *
+        * @since 3.3.0
+        *
+        * @param string $key Property
+        * @return mixed
+        */
+       public function get( $key ) {
+               return $this->__get( $key );
+       }
+
+       /**
+        * Determine whether a property or meta key is set
+        *
+        * Consults the users and usermeta tables.
+        *
+        * @since 3.3.0
+        *
+        * @param string $key Property
+        * @return bool
+        */
+       public function has_prop( $key ) {
+               return $this->__isset( $key );
+       }
+
+       /**
+        * Return an array representation.
+        *
+        * @since 3.5.0
+        *
+        * @return array Array representation.
+        */
+       public function to_array() {
+               return get_object_vars( $this->data );
+       }
+
+       /**
+        * Set up capability object properties.
+        *
+        * Will set the value for the 'cap_key' property to current database table
+        * prefix, followed by 'capabilities'. Will then check to see if the
+        * property matching the 'cap_key' exists and is an array. If so, it will be
+        * used.
+        *
+        * @access protected
+        * @since 2.1.0
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param string $cap_key Optional capability key
+        */
+       protected function _init_caps( $cap_key = '' ) {
+               global $wpdb;
+
+               if ( empty($cap_key) )
+                       $this->cap_key = $wpdb->get_blog_prefix() . 'capabilities';
+               else
+                       $this->cap_key = $cap_key;
+
+               $this->caps = get_user_meta( $this->ID, $this->cap_key, true );
+
+               if ( ! is_array( $this->caps ) )
+                       $this->caps = array();
+
+               $this->get_role_caps();
+       }
+
+       /**
+        * Retrieve all of the role capabilities and merge with individual capabilities.
+        *
+        * All of the capabilities of the roles the user belongs to are merged with
+        * the users individual roles. This also means that the user can be denied
+        * specific roles that their role might have, but the specific user isn't
+        * granted permission to.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @return array List of all capabilities for the user.
+        */
+       public function get_role_caps() {
+               $wp_roles = wp_roles();
+
+               //Filter out caps that are not role names and assign to $this->roles
+               if ( is_array( $this->caps ) )
+                       $this->roles = array_filter( array_keys( $this->caps ), array( $wp_roles, 'is_role' ) );
+
+               //Build $allcaps from role caps, overlay user's $caps
+               $this->allcaps = array();
+               foreach ( (array) $this->roles as $role ) {
+                       $the_role = $wp_roles->get_role( $role );
+                       $this->allcaps = array_merge( (array) $this->allcaps, (array) $the_role->capabilities );
+               }
+               $this->allcaps = array_merge( (array) $this->allcaps, (array) $this->caps );
+
+               return $this->allcaps;
+       }
+
+       /**
+        * Add role to user.
+        *
+        * Updates the user's meta data option with capabilities and roles.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $role Role name.
+        */
+       public function add_role( $role ) {
+               if ( empty( $role ) ) {
+                       return;
+               }
+
+               $this->caps[$role] = true;
+               update_user_meta( $this->ID, $this->cap_key, $this->caps );
+               $this->get_role_caps();
+               $this->update_user_level_from_caps();
+
+               /**
+                * Fires immediately after the user has been given a new role.
+                *
+                * @since 4.3.0
+                *
+                * @param int    $user_id The user ID.
+                * @param string $role    The new role.
+                */
+               do_action( 'add_user_role', $this->ID, $role );
+       }
+
+       /**
+        * Remove role from user.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $role Role name.
+        */
+       public function remove_role( $role ) {
+               if ( !in_array($role, $this->roles) )
+                       return;
+               unset( $this->caps[$role] );
+               update_user_meta( $this->ID, $this->cap_key, $this->caps );
+               $this->get_role_caps();
+               $this->update_user_level_from_caps();
+
+               /**
+                * Fires immediately after a role as been removed from a user.
+                *
+                * @since 4.3.0
+                *
+                * @param int    $user_id The user ID.
+                * @param string $role    The removed role.
+                */
+               do_action( 'remove_user_role', $this->ID, $role );
+       }
+
+       /**
+        * Set the role of the user.
+        *
+        * This will remove the previous roles of the user and assign the user the
+        * new one. You can set the role to an empty string and it will remove all
+        * of the roles from the user.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $role Role name.
+        */
+       public function set_role( $role ) {
+               if ( 1 == count( $this->roles ) && $role == current( $this->roles ) )
+                       return;
+
+               foreach ( (array) $this->roles as $oldrole )
+                       unset( $this->caps[$oldrole] );
+
+               $old_roles = $this->roles;
+               if ( !empty( $role ) ) {
+                       $this->caps[$role] = true;
+                       $this->roles = array( $role => true );
+               } else {
+                       $this->roles = false;
+               }
+               update_user_meta( $this->ID, $this->cap_key, $this->caps );
+               $this->get_role_caps();
+               $this->update_user_level_from_caps();
+
+               /**
+                * Fires after the user's role has changed.
+                *
+                * @since 2.9.0
+                * @since 3.6.0 Added $old_roles to include an array of the user's previous roles.
+                *
+                * @param int    $user_id   The user ID.
+                * @param string $role      The new role.
+                * @param array  $old_roles An array of the user's previous roles.
+                */
+               do_action( 'set_user_role', $this->ID, $role, $old_roles );
+       }
+
+       /**
+        * Choose the maximum level the user has.
+        *
+        * Will compare the level from the $item parameter against the $max
+        * parameter. If the item is incorrect, then just the $max parameter value
+        * will be returned.
+        *
+        * Used to get the max level based on the capabilities the user has. This
+        * is also based on roles, so if the user is assigned the Administrator role
+        * then the capability 'level_10' will exist and the user will get that
+        * value.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param int $max Max level of user.
+        * @param string $item Level capability name.
+        * @return int Max Level.
+        */
+       public function level_reduction( $max, $item ) {
+               if ( preg_match( '/^level_(10|[0-9])$/i', $item, $matches ) ) {
+                       $level = intval( $matches[1] );
+                       return max( $max, $level );
+               } else {
+                       return $max;
+               }
+       }
+
+       /**
+        * Update the maximum user level for the user.
+        *
+        * Updates the 'user_level' user metadata (includes prefix that is the
+        * database table prefix) with the maximum user level. Gets the value from
+        * the all of the capabilities that the user has.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        */
+       public function update_user_level_from_caps() {
+               global $wpdb;
+               $this->user_level = array_reduce( array_keys( $this->allcaps ), array( $this, 'level_reduction' ), 0 );
+               update_user_meta( $this->ID, $wpdb->get_blog_prefix() . 'user_level', $this->user_level );
+       }
+
+       /**
+        * Add capability and grant or deny access to capability.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $cap Capability name.
+        * @param bool $grant Whether to grant capability to user.
+        */
+       public function add_cap( $cap, $grant = true ) {
+               $this->caps[$cap] = $grant;
+               update_user_meta( $this->ID, $this->cap_key, $this->caps );
+               $this->get_role_caps();
+               $this->update_user_level_from_caps();
+       }
+
+       /**
+        * Remove capability from user.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param string $cap Capability name.
+        */
+       public function remove_cap( $cap ) {
+               if ( ! isset( $this->caps[ $cap ] ) ) {
+                       return;
+               }
+               unset( $this->caps[ $cap ] );
+               update_user_meta( $this->ID, $this->cap_key, $this->caps );
+               $this->get_role_caps();
+               $this->update_user_level_from_caps();
+       }
+
+       /**
+        * Remove all of the capabilities of the user.
+        *
+        * @since 2.1.0
+        * @access public
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        */
+       public function remove_all_caps() {
+               global $wpdb;
+               $this->caps = array();
+               delete_user_meta( $this->ID, $this->cap_key );
+               delete_user_meta( $this->ID, $wpdb->get_blog_prefix() . 'user_level' );
+               $this->get_role_caps();
+       }
+
+       /**
+        * Whether user has capability or role name.
+        *
+        * While checking against particular roles in place of a capability is supported
+        * in part, this practice is discouraged as it may produce unreliable results.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @see map_meta_cap()
+        *
+        * @param string $cap       Capability name.
+        * @param int    $object_id Optional. ID of the specific object to check against if `$cap` is a "meta" cap.
+        *                          "Meta" capabilities, e.g. 'edit_post', 'edit_user', etc., are capabilities used
+        *                          by map_meta_cap() to map to other "primitive" capabilities, e.g. 'edit_posts',
+        *                          'edit_others_posts', etc. The parameter is accessed via func_get_args() and passed
+        *                          to map_meta_cap().
+        * @return bool Whether the current user has the given capability. If `$cap` is a meta cap and `$object_id` is
+        *              passed, whether the current user has the given meta capability for the given object.
+        */
+       public function has_cap( $cap ) {
+               if ( is_numeric( $cap ) ) {
+                       _deprecated_argument( __FUNCTION__, '2.0', __('Usage of user levels by plugins and themes is deprecated. Use roles and capabilities instead.') );
+                       $cap = $this->translate_level_to_cap( $cap );
+               }
+
+               $args = array_slice( func_get_args(), 1 );
+               $args = array_merge( array( $cap, $this->ID ), $args );
+               $caps = call_user_func_array( 'map_meta_cap', $args );
+
+               // Multisite super admin has all caps by definition, Unless specifically denied.
+               if ( is_multisite() && is_super_admin( $this->ID ) ) {
+                       if ( in_array('do_not_allow', $caps) )
+                               return false;
+                       return true;
+               }
+
+               /**
+                * Dynamically filter a user's capabilities.
+                *
+                * @since 2.0.0
+                * @since 3.7.0 Added the user object.
+                *
+                * @param array   $allcaps An array of all the user's capabilities.
+                * @param array   $caps    Actual capabilities for meta capability.
+                * @param array   $args    Optional parameters passed to has_cap(), typically object ID.
+                * @param WP_User $user    The user object.
+                */
+               $capabilities = apply_filters( 'user_has_cap', $this->allcaps, $caps, $args, $this );
+
+               // Everyone is allowed to exist.
+               $capabilities['exist'] = true;
+
+               // Must have ALL requested caps.
+               foreach ( (array) $caps as $cap ) {
+                       if ( empty( $capabilities[ $cap ] ) )
+                               return false;
+               }
+
+               return true;
+       }
+
+       /**
+        * Convert numeric level to level capability name.
+        *
+        * Prepends 'level_' to level number.
+        *
+        * @since 2.0.0
+        * @access public
+        *
+        * @param int $level Level number, 1 to 10.
+        * @return string
+        */
+       public function translate_level_to_cap( $level ) {
+               return 'level_' . $level;
+       }
+
+       /**
+        * Set the blog to operate on. Defaults to the current blog.
+        *
+        * @since 3.0.0
+        *
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
+        * @param int $blog_id Optional Blog ID, defaults to current blog.
+        */
+       public function for_blog( $blog_id = '' ) {
+               global $wpdb;
+               if ( ! empty( $blog_id ) )
+                       $cap_key = $wpdb->get_blog_prefix( $blog_id ) . 'capabilities';
+               else
+                       $cap_key = '';
+               $this->_init_caps( $cap_key );
+       }
+}
index 65d8a5869a70bc9c57564f0eefe9a85974eccd54..e4890ae5c6666d619fa12fbd77310f421bf77f7d 100644 (file)
@@ -148,7 +148,7 @@ class Walker {
                // descend only when the depth is right and there are childrens for this element
                if ( ($max_depth == 0 || $max_depth > $depth+1 ) && isset( $children_elements[$id]) ) {
 
-                       foreach( $children_elements[ $id ] as $child ){
+                       foreach ( $children_elements[ $id ] as $child ){
 
                                if ( !isset($newlevel) ) {
                                        $newlevel = true;
@@ -250,7 +250,7 @@ class Walker {
                if ( ( $max_depth == 0 ) && count( $children_elements ) > 0 ) {
                        $empty_array = array();
                        foreach ( $children_elements as $orphans )
-                               foreach( $orphans as $op )
+                               foreach ( $orphans as $op )
                                        $this->display_element( $op, $empty_array, 1, 0, $args, $output );
                 }
 
@@ -374,7 +374,7 @@ class Walker {
                if ( $end >= $total_top && count( $children_elements ) > 0 ) {
                        $empty_array = array();
                        foreach ( $children_elements as $orphans )
-                               foreach( $orphans as $op )
+                               foreach ( $orphans as $op )
                                        $this->display_element( $op, $empty_array, 1, 0, $args, $output );
                }
 
@@ -382,9 +382,13 @@ class Walker {
        }
 
        /**
+        * Calculates the total number of root elements.
         *
-        * @param array $elements
-        * @return int
+        * @since 2.7.0
+        * @access public
+        * 
+        * @param array $elements Elements to list.
+        * @return int Number of root elements.
         */
        public function get_number_of_root_elements( $elements ){
                $num = 0;
diff --git a/wp-includes/class-wp-widget-factory.php b/wp-includes/class-wp-widget-factory.php
new file mode 100644 (file)
index 0000000..c7abcc8
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Widget API: WP_Widget_Factory class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Singleton that registers and instantiates WP_Widget classes.
+ *
+ * @since 2.8.0
+ * @since 4.4.0 Moved to its own file from wp-includes/widgets.php
+ */
+class WP_Widget_Factory {
+       public $widgets = array();
+
+       /**
+        * PHP5 constructor.
+        */
+       public function __construct() {
+               add_action( 'widgets_init', array( $this, '_register_widgets' ), 100 );
+       }
+
+       /**
+        * PHP4 constructor.
+        */
+       public function WP_Widget_Factory() {
+               _deprecated_constructor( 'WP_Widget_Factory', '4.2.0' );
+               self::__construct();
+       }
+
+       /**
+        * Register a widget subclass.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param string $widget_class The name of a {@see WP_Widget} subclass.
+        */
+       public function register( $widget_class ) {
+               $this->widgets[$widget_class] = new $widget_class();
+       }
+
+       /**
+        * Un-register a widget subclass.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param string $widget_class The name of a {@see WP_Widget} subclass.
+        */
+       public function unregister( $widget_class ) {
+               unset( $this->widgets[ $widget_class ] );
+       }
+
+       /**
+        * Utility method for adding widgets to the registered widgets global.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @global array $wp_registered_widgets
+        */
+       public function _register_widgets() {
+               global $wp_registered_widgets;
+               $keys = array_keys($this->widgets);
+               $registered = array_keys($wp_registered_widgets);
+               $registered = array_map('_get_widget_id_base', $registered);
+
+               foreach ( $keys as $key ) {
+                       // don't register new widget if old widget with the same id is already registered
+                       if ( in_array($this->widgets[$key]->id_base, $registered, true) ) {
+                               unset($this->widgets[$key]);
+                               continue;
+                       }
+
+                       $this->widgets[$key]->_register();
+               }
+       }
+}
diff --git a/wp-includes/class-wp-widget.php b/wp-includes/class-wp-widget.php
new file mode 100644 (file)
index 0000000..17f7938
--- /dev/null
@@ -0,0 +1,563 @@
+<?php
+/**
+ * Widget API: WP_Widget base class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core base class extended to register widgets.
+ *
+ * This class must be extended for each widget and WP_Widget::widget(), WP_Widget::update()
+ * and WP_Widget::form() need to be overridden.
+ *
+ * @since 2.8.0
+ * @since 4.4.0 Moved to its own file from wp-includes/widgets.php
+ */
+class WP_Widget {
+
+       /**
+        * Root ID for all widgets of this type.
+        *
+        * @since 2.8.0
+        * @access public
+        * @var mixed|string
+        */
+       public $id_base;
+
+       /**
+        * Name for this widget type.
+        *
+        * @since 2.8.0
+        * @access public
+        * @var string
+        */
+       public $name;
+
+       /**
+        * Option array passed to {@see wp_register_sidebar_widget()}.
+        *
+        * @since 2.8.0
+        * @access public
+        * @var array
+        */
+       public $widget_options;
+
+       /**
+        * Option array passed to {@see wp_register_widget_control()}.
+        *
+        * @since 2.8.0
+        * @access public
+        * @var array
+        */
+       public $control_options;
+
+       /**
+        * Unique ID number of the current instance.
+        *
+        * @since 2.8.0
+        * @access public
+        * @var bool|int
+        */
+       public $number = false;
+
+       /**
+        * Unique ID string of the current instance (id_base-number).
+        *
+        * @since 2.8.0
+        * @access public
+        * @var bool|string
+        */
+       public $id = false;
+
+       /**
+        * Whether the widget data has been updated.
+        *
+        * Set to true when the data is updated after a POST submit - ensures it does
+        * not happen twice.
+        *
+        * @since 2.8.0
+        * @access public
+        * @var bool
+        */
+       public $updated = false;
+
+       // Member functions that you must over-ride.
+
+       /**
+        * Echoes the widget content.
+        *
+        * Sub-classes should over-ride this function to generate their widget code.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance The settings for the particular instance of the widget.
+        */
+       public function widget( $args, $instance ) {
+               die('function WP_Widget::widget() must be over-ridden in a sub-class.');
+       }
+
+       /**
+        * Updates a particular instance of a widget.
+        *
+        * This function should check that `$new_instance` is set correctly. The newly-calculated
+        * value of `$instance` should be returned. If false is returned, the instance won't be
+        * saved/updated.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Settings to save or bool false to cancel saving.
+        */
+       public function update( $new_instance, $old_instance ) {
+               return $new_instance;
+       }
+
+       /**
+        * Outputs the settings update form.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        * @return string Default return is 'noform'.
+        */
+       public function form( $instance ) {
+               echo '<p class="no-options-widget">' . __('There are no options for this widget.') . '</p>';
+               return 'noform';
+       }
+
+       // Functions you'll need to call.
+
+       /**
+        * PHP5 constructor.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param string $id_base         Optional Base ID for the widget, lowercase and unique. If left empty,
+        *                                a portion of the widget's class name will be used Has to be unique.
+        * @param string $name            Name for the widget displayed on the configuration page.
+        * @param array  $widget_options  Optional. Widget options. See wp_register_sidebar_widget() for information
+        *                                on accepted arguments. Default empty array.
+        * @param array  $control_options Optional. Widget control options. See wp_register_widget_control() for
+        *                                information on accepted arguments. Default empty array.
+        */
+       public function __construct( $id_base, $name, $widget_options = array(), $control_options = array() ) {
+               $this->id_base = empty($id_base) ? preg_replace( '/(wp_)?widget_/', '', strtolower(get_class($this)) ) : strtolower($id_base);
+               $this->name = $name;
+               $this->option_name = 'widget_' . $this->id_base;
+               $this->widget_options = wp_parse_args( $widget_options, array('classname' => $this->option_name) );
+               $this->control_options = wp_parse_args( $control_options, array('id_base' => $this->id_base) );
+       }
+
+       /**
+        * PHP4 constructor.
+        *
+        * @param string $id_base
+        * @param string $name
+        * @param array  $widget_options
+        * @param array  $control_options
+        */
+       public function WP_Widget( $id_base, $name, $widget_options = array(), $control_options = array() ) {
+               _deprecated_constructor( 'WP_Widget', '4.3.0' );
+               WP_Widget::__construct( $id_base, $name, $widget_options, $control_options );
+       }
+
+       /**
+        * Constructs name attributes for use in form() fields
+        *
+        * This function should be used in form() methods to create name attributes for fields to be saved by update()
+        *
+        * @since 2.8.0
+        * @since 4.4.0 Array format field names are now accepted.
+        *
+        * @param string $field_name Field name
+        * @return string Name attribute for $field_name
+        */
+       public function get_field_name($field_name) {
+               if ( false === $pos = strpos( $field_name, '[' ) ) {
+                       return 'widget-' . $this->id_base . '[' . $this->number . '][' . $field_name . ']';
+               } else {
+                       return 'widget-' . $this->id_base . '[' . $this->number . '][' . substr_replace( $field_name, '][', $pos, strlen( '[' ) );
+               }
+       }
+
+       /**
+        * Constructs id attributes for use in {@see WP_Widget::form()} fields.
+        *
+        * This function should be used in form() methods to create id attributes
+        * for fields to be saved by {@see WP_Widget::update()}.
+        *
+        * @since 2.8.0
+        * @since 4.4.0 Array format field IDs are now accepted.
+        * @access public
+        *
+        * @param string $field_name Field name.
+        * @return string ID attribute for `$field_name`.
+        */
+       public function get_field_id( $field_name ) {
+               return 'widget-' . $this->id_base . '-' . $this->number . '-' . trim( str_replace( array( '[]', '[', ']' ), array( '', '-', '' ), $field_name ), '-' );
+       }
+
+       /**
+        * Register all widget instances of this widget class.
+        *
+        * @since 2.8.0
+        * @access private
+        */
+       public function _register() {
+               $settings = $this->get_settings();
+               $empty = true;
+
+               // When $settings is an array-like object, get an intrinsic array for use with array_keys().
+               if ( $settings instanceof ArrayObject || $settings instanceof ArrayIterator ) {
+                       $settings = $settings->getArrayCopy();
+               }
+
+               if ( is_array( $settings ) ) {
+                       foreach ( array_keys( $settings ) as $number ) {
+                               if ( is_numeric( $number ) ) {
+                                       $this->_set( $number );
+                                       $this->_register_one( $number );
+                                       $empty = false;
+                               }
+                       }
+               }
+
+               if ( $empty ) {
+                       // If there are none, we register the widget's existence with a generic template.
+                       $this->_set( 1 );
+                       $this->_register_one();
+               }
+       }
+
+       /**
+        * Set the internal order number for the widget instance.
+        *
+        * @since 2.8.0
+        * @access private
+        *
+        * @param int $number The unique order number of this widget instance compared to other
+        *                    instances of the same class.
+        */
+       public function _set($number) {
+               $this->number = $number;
+               $this->id = $this->id_base . '-' . $number;
+       }
+
+       /**
+        * @return callback
+        */
+       public function _get_display_callback() {
+               return array($this, 'display_callback');
+       }
+       /**
+        * @return callback
+        */
+       public function _get_update_callback() {
+               return array($this, 'update_callback');
+       }
+       /**
+        * @return callback
+        */
+       public function _get_form_callback() {
+               return array($this, 'form_callback');
+       }
+
+       /**
+        * Determine whether the current request is inside the Customizer preview.
+        *
+        * If true -- the current request is inside the Customizer preview, then
+        * the object cache gets suspended and widgets should check this to decide
+        * whether they should store anything persistently to the object cache,
+        * to transients, or anywhere else.
+        *
+        * @since 3.9.0
+        * @access public
+        *
+        * @global WP_Customize_Manager $wp_customize
+        *
+        * @return bool True if within the Customizer preview, false if not.
+        */
+       public function is_preview() {
+               global $wp_customize;
+               return ( isset( $wp_customize ) && $wp_customize->is_preview() ) ;
+       }
+
+       /**
+        * Generate the actual widget content (Do NOT override).
+        *
+        * Finds the instance and calls {@see WP_Widget::widget()}.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array     $args        Display arguments. See {@see WP_Widget::widget()} for information
+        *                               on accepted arguments.
+        * @param int|array $widget_args {
+        *     Optional. Internal order number of the widget instance, or array of multi-widget arguments.
+        *     Default 1.
+        *
+        *     @type int $number Number increment used for multiples of the same widget.
+        * }
+        */
+       public function display_callback( $args, $widget_args = 1 ) {
+               if ( is_numeric( $widget_args ) ) {
+                       $widget_args = array( 'number' => $widget_args );
+               }
+
+               $widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
+               $this->_set( $widget_args['number'] );
+               $instances = $this->get_settings();
+
+               if ( array_key_exists( $this->number, $instances ) ) {
+                       $instance = $instances[ $this->number ];
+
+                       /**
+                        * Filter the settings for a particular widget instance.
+                        *
+                        * Returning false will effectively short-circuit display of the widget.
+                        *
+                        * @since 2.8.0
+                        *
+                        * @param array     $instance The current widget instance's settings.
+                        * @param WP_Widget $this     The current widget instance.
+                        * @param array     $args     An array of default widget arguments.
+                        */
+                       $instance = apply_filters( 'widget_display_callback', $instance, $this, $args );
+
+                       if ( false === $instance ) {
+                               return;
+                       }
+
+                       $was_cache_addition_suspended = wp_suspend_cache_addition();
+                       if ( $this->is_preview() && ! $was_cache_addition_suspended ) {
+                               wp_suspend_cache_addition( true );
+                       }
+
+                       $this->widget( $args, $instance );
+
+                       if ( $this->is_preview() ) {
+                               wp_suspend_cache_addition( $was_cache_addition_suspended );
+                       }
+               }
+       }
+
+       /**
+        * Deal with changed settings (Do NOT override).
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @global array $wp_registered_widgets
+        *
+        * @param int $deprecated Not used.
+        */
+       public function update_callback( $deprecated = 1 ) {
+               global $wp_registered_widgets;
+
+               $all_instances = $this->get_settings();
+
+               // We need to update the data
+               if ( $this->updated )
+                       return;
+
+               if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) {
+                       // Delete the settings for this instance of the widget
+                       if ( isset($_POST['the-widget-id']) )
+                               $del_id = $_POST['the-widget-id'];
+                       else
+                               return;
+
+                       if ( isset($wp_registered_widgets[$del_id]['params'][0]['number']) ) {
+                               $number = $wp_registered_widgets[$del_id]['params'][0]['number'];
+
+                               if ( $this->id_base . '-' . $number == $del_id )
+                                       unset($all_instances[$number]);
+                       }
+               } else {
+                       if ( isset($_POST['widget-' . $this->id_base]) && is_array($_POST['widget-' . $this->id_base]) ) {
+                               $settings = $_POST['widget-' . $this->id_base];
+                       } elseif ( isset($_POST['id_base']) && $_POST['id_base'] == $this->id_base ) {
+                               $num = $_POST['multi_number'] ? (int) $_POST['multi_number'] : (int) $_POST['widget_number'];
+                               $settings = array( $num => array() );
+                       } else {
+                               return;
+                       }
+
+                       foreach ( $settings as $number => $new_instance ) {
+                               $new_instance = stripslashes_deep($new_instance);
+                               $this->_set($number);
+
+                               $old_instance = isset($all_instances[$number]) ? $all_instances[$number] : array();
+
+                               $was_cache_addition_suspended = wp_suspend_cache_addition();
+                               if ( $this->is_preview() && ! $was_cache_addition_suspended ) {
+                                       wp_suspend_cache_addition( true );
+                               }
+
+                               $instance = $this->update( $new_instance, $old_instance );
+
+                               if ( $this->is_preview() ) {
+                                       wp_suspend_cache_addition( $was_cache_addition_suspended );
+                               }
+
+                               /**
+                                * Filter a widget's settings before saving.
+                                *
+                                * Returning false will effectively short-circuit the widget's ability
+                                * to update settings.
+                                *
+                                * @since 2.8.0
+                                *
+                                * @param array     $instance     The current widget instance's settings.
+                                * @param array     $new_instance Array of new widget settings.
+                                * @param array     $old_instance Array of old widget settings.
+                                * @param WP_Widget $this         The current widget instance.
+                                */
+                               $instance = apply_filters( 'widget_update_callback', $instance, $new_instance, $old_instance, $this );
+                               if ( false !== $instance ) {
+                                       $all_instances[$number] = $instance;
+                               }
+
+                               break; // run only once
+                       }
+               }
+
+               $this->save_settings($all_instances);
+               $this->updated = true;
+       }
+
+       /**
+        * Generate the widget control form (Do NOT override).
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param int|array $widget_args Widget instance number or array of widget arguments.
+        * @return string|null
+        */
+       public function form_callback( $widget_args = 1 ) {
+               if ( is_numeric($widget_args) )
+                       $widget_args = array( 'number' => $widget_args );
+
+               $widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
+               $all_instances = $this->get_settings();
+
+               if ( -1 == $widget_args['number'] ) {
+                       // We echo out a form where 'number' can be set later
+                       $this->_set('__i__');
+                       $instance = array();
+               } else {
+                       $this->_set($widget_args['number']);
+                       $instance = $all_instances[ $widget_args['number'] ];
+               }
+
+               /**
+                * Filter the widget instance's settings before displaying the control form.
+                *
+                * Returning false effectively short-circuits display of the control form.
+                *
+                * @since 2.8.0
+                *
+                * @param array     $instance The current widget instance's settings.
+                * @param WP_Widget $this     The current widget instance.
+                */
+               $instance = apply_filters( 'widget_form_callback', $instance, $this );
+
+               $return = null;
+               if ( false !== $instance ) {
+                       $return = $this->form($instance);
+
+                       /**
+                        * Fires at the end of the widget control form.
+                        *
+                        * Use this hook to add extra fields to the widget form. The hook
+                        * is only fired if the value passed to the 'widget_form_callback'
+                        * hook is not false.
+                        *
+                        * Note: If the widget has no form, the text echoed from the default
+                        * form method can be hidden using CSS.
+                        *
+                        * @since 2.8.0
+                        *
+                        * @param WP_Widget $this     The widget instance, passed by reference.
+                        * @param null      $return   Return null if new fields are added.
+                        * @param array     $instance An array of the widget's settings.
+                        */
+                       do_action_ref_array( 'in_widget_form', array( &$this, &$return, $instance ) );
+               }
+               return $return;
+       }
+
+       /**
+        * Register an instance of the widget class.
+        *
+        * @since 2.8.0
+        * @access private
+        *
+        * @param integer $number Optional. The unique order number of this widget instance
+        *                        compared to other instances of the same class. Default -1.
+        */
+       public function _register_one( $number = -1 ) {
+               wp_register_sidebar_widget(     $this->id, $this->name, $this->_get_display_callback(), $this->widget_options, array( 'number' => $number ) );
+               _register_widget_update_callback( $this->id_base, $this->_get_update_callback(), $this->control_options, array( 'number' => -1 ) );
+               _register_widget_form_callback( $this->id, $this->name, $this->_get_form_callback(), $this->control_options, array( 'number' => $number ) );
+       }
+
+       /**
+        * Save the settings for all instances of the widget class.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $settings Multi-dimensional array of widget instance settings.
+        */
+       public function save_settings( $settings ) {
+               $settings['_multiwidget'] = 1;
+               update_option( $this->option_name, $settings );
+       }
+
+       /**
+        * Get the settings for all instances of the widget class.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @return array Multi-dimensional array of widget instance settings.
+        */
+       public function get_settings() {
+
+               $settings = get_option( $this->option_name );
+
+               if ( false === $settings ) {
+                       if ( isset( $this->alt_option_name ) ) {
+                               $settings = get_option( $this->alt_option_name );
+                       } else {
+                               // Save an option so it can be autoloaded next time.
+                               $this->save_settings( array() );
+                       }
+               }
+
+               if ( ! is_array( $settings ) && ! ( $settings instanceof ArrayObject || $settings instanceof ArrayIterator ) ) {
+                       $settings = array();
+               }
+
+               if ( ! empty( $settings ) && ! isset( $settings['_multiwidget'] ) ) {
+                       // Old format, convert if single widget.
+                       $settings = wp_convert_widget_settings( $this->id_base, $this->option_name, $settings );
+               }
+
+               unset( $settings['_multiwidget'], $settings['__i__'] );
+               return $settings;
+       }
+}
index 9121c07a17237578a52b71ff5999b3d4df02826e..08897dc032f12ab4ecca726f38647beea0c412bf 100644 (file)
@@ -45,6 +45,14 @@ class wp_xmlrpc_server extends IXR_Server {
         */
        public $error;
 
+       /**
+        * Flags that the user authentication has failed in this instance of wp_xmlrpc_server.
+        *
+        * @access protected
+        * @var bool
+        */
+       protected $auth_failed = false;
+
        /**
         * Register all of the XMLRPC methods that XMLRPC server understands.
         *
@@ -251,11 +259,18 @@ class wp_xmlrpc_server extends IXR_Server {
                        return false;
                }
 
-               $user = wp_authenticate($username, $password);
+               if ( $this->auth_failed ) {
+                       $user = new WP_Error( 'login_prevented' );
+               } else {
+                       $user = wp_authenticate( $username, $password );
+               }
 
-               if (is_wp_error($user)) {
+               if ( is_wp_error( $user ) ) {
                        $this->error = new IXR_Error( 403, __( 'Incorrect username or password.' ) );
 
+                       // Flag that authentication has failed once on this wp_xmlrpc_server instance
+                       $this->auth_failed = true;
+
                        /**
                         * Filter the XML-RPC user login error message.
                         *
@@ -276,9 +291,8 @@ class wp_xmlrpc_server extends IXR_Server {
         * Check user's credentials. Deprecated.
         *
         * @since 1.5.0
-        * @deprecated 2.8.0
-        * @deprecated use wp_xmlrpc_server::login
-        * @see wp_xmlrpc_server::login
+        * @deprecated 2.8.0 Use wp_xmlrpc_server::login()
+        * @see wp_xmlrpc_server::login()
         *
         * @param string $username User's username.
         * @param string $password User's password.
@@ -499,6 +513,16 @@ class wp_xmlrpc_server extends IXR_Server {
                                'readonly'      => false,
                                'option'        => 'medium_size_h'
                        ),
+                       'medium_large_size_w'   => array(
+                               'desc'          => __( 'Medium-Large size image width' ),
+                               'readonly'      => false,
+                               'option'        => 'medium_large_size_w'
+                       ),
+                       'medium_large_size_h'   => array(
+                               'desc'          => __( 'Medium-Large size image height' ),
+                               'readonly'      => false,
+                               'option'        => 'medium_large_size_h'
+                       ),
                        'large_size_w'      => array(
                                'desc'          => __( 'Large size image width' ),
                                'readonly'      => false,
@@ -544,6 +568,7 @@ class wp_xmlrpc_server extends IXR_Server {
         * }
         * @return array|IXR_Error Array contains:
         *  - 'isAdmin'
+        *  - 'isPrimary' - whether the blog is the user's primary blog
         *  - 'url'
         *  - 'blogid'
         *  - 'blogName'
@@ -579,6 +604,11 @@ class wp_xmlrpc_server extends IXR_Server {
 
                $blogs = (array) get_blogs_of_user( $user->ID );
                $struct = array();
+               $primary_blog_id = 0;
+               $active_blog = get_active_blog_for_user( $user->ID );
+               if ( $active_blog ) {
+                       $primary_blog_id = (int) $active_blog->blog_id;
+               }
 
                foreach ( $blogs as $blog ) {
                        // Don't include blogs that aren't hosted at this site.
@@ -590,13 +620,15 @@ class wp_xmlrpc_server extends IXR_Server {
                        switch_to_blog( $blog_id );
 
                        $is_admin = current_user_can( 'manage_options' );
+                       $is_primary = ( (int) $blog_id === $primary_blog_id );
 
                        $struct[] = array(
-                               'isAdmin'               => $is_admin,
-                               'url'                   => home_url( '/' ),
-                               'blogid'                => (string) $blog_id,
-                               'blogName'              => get_option( 'blogname' ),
-                               'xmlrpc'                => site_url( 'xmlrpc.php', 'rpc' ),
+                               'isAdmin'   => $is_admin,
+                               'isPrimary' => $is_primary,
+                               'url'       => home_url( '/' ),
+                               'blogid'    => (string) $blog_id,
+                               'blogName'  => get_option( 'blogname' ),
+                               'xmlrpc'    => site_url( 'xmlrpc.php', 'rpc' ),
                        );
 
                        restore_current_blog();
@@ -760,7 +792,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        'post_content'      => $post['post_content'],
                        'post_parent'       => strval( $post['post_parent'] ),
                        'post_mime_type'    => $post['post_mime_type'],
-                       'link'              => post_permalink( $post['ID'] ),
+                       'link'              => get_permalink( $post['ID'] ),
                        'guid'              => $post['guid'],
                        'menu_order'        => intval( $post['menu_order'] ),
                        'comment_status'    => $post['comment_status'],
@@ -899,6 +931,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        'caption'          => $media_item->post_excerpt,
                        'description'      => $media_item->post_content,
                        'metadata'         => wp_get_attachment_metadata( $media_item->ID ),
+                       'type'             => $media_item->post_mime_type
                );
 
                $thumbnail_src = image_downsize( $media_item->ID, $thumbnail_size );
@@ -930,7 +963,7 @@ class wp_xmlrpc_server extends IXR_Server {
        protected function _prepare_page( $page ) {
                // Get all of the page content and link.
                $full_page = get_extended( $page->post_content );
-               $link = post_permalink( $page->ID );
+               $link = get_permalink( $page->ID );
 
                // Get info the page parent if there is one.
                $parent_title = "";
@@ -1043,8 +1076,8 @@ class wp_xmlrpc_server extends IXR_Server {
                 *
                 * @since 3.4.0
                 *
-                * @param array  $_comment An array of prepared comment data.
-                * @param object $comment  Comment object.
+                * @param array      $_comment An array of prepared comment data.
+                * @param WP_Comment $comment  Comment object.
                 */
                return apply_filters( 'xmlrpc_prepare_comment', $_comment, $comment );
        }
@@ -1316,8 +1349,8 @@ class wp_xmlrpc_server extends IXR_Server {
                }
 
                if ( ! empty( $dateCreated ) ) {
-                       $post_data['post_date'] = get_date_from_gmt( iso8601_to_datetime( $dateCreated ) );
-                       $post_data['post_date_gmt'] = iso8601_to_datetime( $dateCreated, 'GMT' );
+                       $post_data['post_date'] = iso8601_to_datetime( $dateCreated );
+                       $post_data['post_date_gmt'] = get_gmt_from_date( $post_data['post_date'] );
                }
 
                if ( ! isset( $post_data['ID'] ) )
@@ -1574,16 +1607,19 @@ class wp_xmlrpc_server extends IXR_Server {
                do_action( 'xmlrpc_call', 'wp.deletePost' );
 
                $post = get_post( $post_id, ARRAY_A );
-               if ( empty( $post['ID'] ) )
+               if ( empty( $post['ID'] ) ) {
                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+               }
 
-               if ( ! current_user_can( 'delete_post', $post_id ) )
-                       return new IXR_Error( 401, __( 'Sorry, you are not allowed to delete this post.' ) );
+               if ( ! current_user_can( 'delete_post', $post_id ) ) {
+                       return new IXR_Error( 401, __( 'Sorry, you do not have the right to delete this post.' ) );
+               }
 
                $result = wp_delete_post( $post_id );
 
-               if ( ! $result )
+               if ( ! $result ) {
                        return new IXR_Error( 500, __( 'The post cannot be deleted.' ) );
+               }
 
                return true;
        }
@@ -1694,7 +1730,7 @@ class wp_xmlrpc_server extends IXR_Server {
         *     @type string $username Username.
         *     @type string $password Password.
         *     @type array  $filter   Optional. Modifies the query used to retrieve posts. Accepts 'post_type',
-        *                            'post_status', 'number', 'offset', 'orderby', and 'order'.
+        *                            'post_status', 'number', 'offset', 'orderby', 's', and 'order'.
         *                            Default empty array.
         *     @type array  $fields   Optional. The subset of post type fields to return in the response array.
         * }
@@ -1734,7 +1770,7 @@ class wp_xmlrpc_server extends IXR_Server {
                }
 
                if ( ! current_user_can( $post_type->cap->edit_posts ) )
-                       return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit posts in this post type' ));
+                       return new IXR_Error( 401, __( 'You are not allowed to edit posts in this post type.' ));
 
                $query['post_type'] = $post_type->name;
 
@@ -1926,7 +1962,7 @@ class wp_xmlrpc_server extends IXR_Server {
                                return new IXR_Error( 403, __( 'The term name cannot be empty.' ) );
                }
 
-               if ( isset( $content_struct['parent'] ) ) {
+               if ( ! empty( $content_struct['parent'] ) ) {
                        if ( ! $taxonomy['hierarchical'] )
                                return new IXR_Error( 403, __( "This taxonomy is not hierarchical so you can't set a parent." ) );
 
@@ -2412,7 +2448,7 @@ class wp_xmlrpc_server extends IXR_Server {
                do_action( 'xmlrpc_call', 'wp.getUsers' );
 
                if ( ! current_user_can( 'list_users' ) )
-                       return new IXR_Error( 401, __( 'Sorry, you cannot list users.' ) );
+                       return new IXR_Error( 401, __( 'You are not allowed to browse users.' ) );
 
                $query = array( 'fields' => 'all_with_meta' );
 
@@ -2821,7 +2857,7 @@ class wp_xmlrpc_server extends IXR_Server {
         *
         * @since 2.2.0
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param array  $args {
         *     Method arguments. Note: arguments must be ordered as documented.
@@ -2949,7 +2985,7 @@ class wp_xmlrpc_server extends IXR_Server {
                $tags = array();
 
                if ( $all_tags = get_tags() ) {
-                       foreach( (array) $all_tags as $tag ) {
+                       foreach ( (array) $all_tags as $tag ) {
                                $struct = array();
                                $struct['tag_id']                       = $tag->term_id;
                                $struct['name']                         = $tag->name;
@@ -3156,17 +3192,20 @@ class wp_xmlrpc_server extends IXR_Server {
                $password       = $args[2];
                $comment_id     = (int) $args[3];
 
-               if ( !$user = $this->login($username, $password) )
+               if ( ! $user = $this->login( $username, $password ) ) {
                        return $this->error;
-
-               if ( !current_user_can( 'moderate_comments' ) )
-                       return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
+               }
 
                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
                do_action( 'xmlrpc_call', 'wp.getComment' );
 
-               if ( ! $comment = get_comment($comment_id) )
+               if ( ! $comment = get_comment( $comment_id ) ) {
                        return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
+               }
+
+               if ( ! current_user_can( 'edit_comment', $comment_id ) ) {
+                       return new IXR_Error( 403, __( 'You are not allowed to moderate or edit this comment.' ) );
+               }
 
                return $this->_prepare_comment( $comment );
        }
@@ -3204,33 +3243,54 @@ class wp_xmlrpc_server extends IXR_Server {
                $password = $args[2];
                $struct   = isset( $args[3] ) ? $args[3] : array();
 
-               if ( !$user = $this->login($username, $password) )
+               if ( ! $user = $this->login( $username, $password ) ) {
                        return $this->error;
-
-               if ( !current_user_can( 'moderate_comments' ) )
-                       return new IXR_Error( 401, __( 'Sorry, you cannot edit comments.' ) );
+               }
 
                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
                do_action( 'xmlrpc_call', 'wp.getComments' );
 
-               if ( isset($struct['status']) )
+               if ( isset( $struct['status'] ) ) {
                        $status = $struct['status'];
-               else
+               } else {
                        $status = '';
+               }
+
+               if ( ! current_user_can( 'moderate_comments' ) && 'approve' !== $status ) {
+                       return new IXR_Error( 401, __( 'Invalid comment status.' ) );
+               }
 
                $post_id = '';
-               if ( isset($struct['post_id']) )
-                       $post_id = absint($struct['post_id']);
+               if ( isset( $struct['post_id'] ) ) {
+                       $post_id = absint( $struct['post_id'] );
+               }
+
+               $post_type = '';
+               if ( isset( $struct['post_type'] ) ) {
+                       $post_type_object = get_post_type_object( $struct['post_type'] );
+                       if ( ! $post_type_object || ! post_type_supports( $post_type_object->name, 'comments' ) ) {
+                               return new IXR_Error( 404, __( 'Invalid post type.' ) );
+                       }
+                       $post_type = $struct['post_type'];
+               }
 
                $offset = 0;
-               if ( isset($struct['offset']) )
-                       $offset = absint($struct['offset']);
+               if ( isset( $struct['offset'] ) ) {
+                       $offset = absint( $struct['offset'] );
+               }
 
                $number = 10;
-               if ( isset($struct['number']) )
-                       $number = absint($struct['number']);
+               if ( isset( $struct['number'] ) ) {
+                       $number = absint( $struct['number'] );
+               }
 
-               $comments = get_comments( array( 'status' => $status, 'post_id' => $post_id, 'offset' => $offset, 'number' => $number ) );
+               $comments = get_comments( array(
+                       'status' => $status,
+                       'post_id' => $post_id,
+                       'offset' => $offset,
+                       'number' => $number,
+                       'post_type' => $post_type,
+               ) );
 
                $comments_struct = array();
                if ( is_array( $comments ) ) {
@@ -3261,24 +3321,24 @@ class wp_xmlrpc_server extends IXR_Server {
         * }
         * @return bool|IXR_Error {@link wp_delete_comment()}
         */
-       public function wp_deleteComment($args) {
+       public function wp_deleteComment( $args ) {
                $this->escape($args);
 
                $username       = $args[1];
                $password       = $args[2];
                $comment_ID     = (int) $args[3];
 
-               if ( !$user = $this->login($username, $password) )
+               if ( ! $user = $this->login( $username, $password ) ) {
                        return $this->error;
+               }
 
-               if ( !current_user_can( 'moderate_comments' ) )
-                       return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
-
-               if ( ! get_comment($comment_ID) )
+               if ( ! get_comment( $comment_ID ) ) {
                        return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
+               }
 
-               if ( !current_user_can( 'edit_comment', $comment_ID ) )
-                       return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
+               if ( !current_user_can( 'edit_comment', $comment_ID ) ) {
+                       return new IXR_Error( 403, __( 'You are not allowed to moderate or edit this comment.' ) );
+               }
 
                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
                do_action( 'xmlrpc_call', 'wp.deleteComment' );
@@ -3335,17 +3395,17 @@ class wp_xmlrpc_server extends IXR_Server {
                $comment_ID     = (int) $args[3];
                $content_struct = $args[4];
 
-               if ( !$user = $this->login($username, $password) )
+               if ( !$user = $this->login( $username, $password ) ) {
                        return $this->error;
+               }
 
-               if ( !current_user_can( 'moderate_comments' ) )
-                       return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
-
-               if ( ! get_comment($comment_ID) )
+               if ( ! get_comment( $comment_ID ) ) {
                        return new IXR_Error( 404, __( 'Invalid comment ID.' ) );
+               }
 
-               if ( !current_user_can( 'edit_comment', $comment_ID ) )
-                       return new IXR_Error( 403, __( 'You are not allowed to moderate comments on this site.' ) );
+               if ( ! current_user_can( 'edit_comment', $comment_ID ) ) {
+                       return new IXR_Error( 403, __( 'You are not allowed to moderate or edit this comment.' ) );
+               }
 
                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
                do_action( 'xmlrpc_call', 'wp.editComment' );
@@ -3363,8 +3423,8 @@ class wp_xmlrpc_server extends IXR_Server {
                if ( !empty( $content_struct['date_created_gmt'] ) ) {
                        // We know this is supposed to be GMT, so we're going to slap that Z on there by force
                        $dateCreated = rtrim( $content_struct['date_created_gmt']->getIso(), 'Z' ) . 'Z';
-                       $comment_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
-                       $comment_date_gmt = iso8601_to_datetime($dateCreated, 'GMT');
+                       $comment_date = iso8601_to_datetime( $dateCreated );
+                       $comment_date_gmt = get_gmt_from_date( $comment_date );
                }
 
                if ( isset($content_struct['content']) )
@@ -3454,19 +3514,29 @@ class wp_xmlrpc_server extends IXR_Server {
                else
                        $post_id = url_to_postid($post);
 
-               if ( ! $post_id )
+               if ( ! $post_id ) {
                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+               }
 
-               if ( ! get_post($post_id) )
+               if ( ! get_post( $post_id ) ) {
                        return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+               }
+
+               if ( ! comments_open( $post_id ) ) {
+                       return new IXR_Error( 403, __( 'Sorry, comments are closed for this item.' ) );
+               }
 
                $comment = array();
                $comment['comment_post_ID'] = $post_id;
 
                if ( $logged_in ) {
-                       $comment['comment_author'] = $this->escape( $user->display_name );
-                       $comment['comment_author_email'] = $this->escape( $user->user_email );
-                       $comment['comment_author_url'] = $this->escape( $user->user_url );
+                       $display_name = $user->display_name;
+                       $user_email = $user->user_email;
+                       $user_url = $user->user_url;
+
+                       $comment['comment_author'] = $this->escape( $display_name );
+                       $comment['comment_author_email'] = $this->escape( $user_email );
+                       $comment['comment_author_url'] = $this->escape( $user_url );
                        $comment['user_ID'] = $user->ID;
                } else {
                        $comment['comment_author'] = '';
@@ -3527,17 +3597,19 @@ class wp_xmlrpc_server extends IXR_Server {
         * }
         * @return array|IXR_Error
         */
-       public function wp_getCommentStatusList($args) {
+       public function wp_getCommentStatusList( $args ) {
                $this->escape( $args );
 
                $username = $args[1];
                $password = $args[2];
 
-               if ( !$user = $this->login($username, $password) )
+               if ( ! $user = $this->login( $username, $password ) ) {
                        return $this->error;
+               }
 
-               if ( !current_user_can( 'moderate_comments' ) )
+               if ( ! current_user_can( 'publish_posts' ) ) {
                        return new IXR_Error( 403, __( 'You are not allowed access to details about this site.' ) );
+               }
 
                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
                do_action( 'xmlrpc_call', 'wp.getCommentStatusList' );
@@ -3567,16 +3639,24 @@ class wp_xmlrpc_server extends IXR_Server {
                $password       = $args[2];
                $post_id        = (int) $args[3];
 
-               if ( !$user = $this->login($username, $password) )
+               if ( ! $user = $this->login( $username, $password ) ) {
                        return $this->error;
+               }
 
-               if ( !current_user_can( 'edit_posts' ) )
-                       return new IXR_Error( 403, __( 'You are not allowed access to details about comments.' ) );
+               $post = get_post( $post_id, ARRAY_A );
+               if ( empty( $post['ID'] ) ) {
+                       return new IXR_Error( 404, __( 'Invalid post ID.' ) );
+               }
+
+               if ( ! current_user_can( 'edit_post', $post_id ) ) {
+                       return new IXR_Error( 403, __( 'You are not allowed access to details of this post.' ) );
+               }
 
                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
                do_action( 'xmlrpc_call', 'wp.getCommentCount' );
 
                $count = wp_count_comments( $post_id );
+
                return array(
                        'approved' => $count->approved,
                        'awaiting_moderation' => $count->moderated,
@@ -4049,7 +4129,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                $struct = array();
 
-               foreach( $post_types as $post_type ) {
+               foreach ( $post_types as $post_type ) {
                        if ( ! current_user_can( $post_type->cap->edit_posts ) )
                                continue;
 
@@ -4540,6 +4620,7 @@ class wp_xmlrpc_server extends IXR_Server {
         *     @type string $username
         *     @type string $password
         *     @type string $content
+        *     @type bool   $publish
         * }
         * @return true|IXR_Error true when done.
         */
@@ -4551,6 +4632,7 @@ class wp_xmlrpc_server extends IXR_Server {
                $username = $args[2];
                $password = $args[3];
                $content  = $args[4];
+               $publish  = $args[5];
 
                if ( ! $user = $this->login( $username, $password ) ) {
                        return $this->error;
@@ -4581,6 +4663,7 @@ class wp_xmlrpc_server extends IXR_Server {
                $postdata['post_category'] = xmlrpc_getpostcategory( $content );
                $postdata['post_status'] = $actual_post['post_status'];
                $postdata['post_excerpt'] = $actual_post['post_excerpt'];
+               $postdata['post_status'] = $publish ? 'publish' : 'draft';
 
                $result = wp_update_post( $postdata );
 
@@ -4630,18 +4713,21 @@ class wp_xmlrpc_server extends IXR_Server {
                /** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
                do_action( 'xmlrpc_call', 'blogger.deletePost' );
 
-               $actual_post = get_post($post_ID,ARRAY_A);
+               $actual_post = get_post( $post_ID, ARRAY_A );
 
-               if ( !$actual_post || $actual_post['post_type'] != 'post' )
-                       return new IXR_Error(404, __('Sorry, no such post.'));
+               if ( ! $actual_post || $actual_post['post_type'] != 'post' ) {
+                       return new IXR_Error( 404, __( 'Sorry, no such post.' ) );
+               }
 
-               if ( !current_user_can('delete_post', $post_ID) )
-                       return new IXR_Error(401, __('Sorry, you do not have the right to delete this post.'));
+               if ( ! current_user_can( 'delete_post', $post_ID ) ) {
+                       return new IXR_Error( 401, __( 'Sorry, you do not have the right to delete this post.' ) );
+               }
 
-               $result = wp_delete_post($post_ID);
+               $result = wp_delete_post( $post_ID );
 
-               if ( !$result )
-                       return new IXR_Error(500, __('For some strange yet very annoying reason, this post could not be deleted.'));
+               if ( ! $result ) {
+                       return new IXR_Error( 500, __( 'The post cannot be deleted.' ) );
+               }
 
                /**
                 * Fires after a post has been successfully deleted via the XML-RPC Blogger API.
@@ -4905,11 +4991,11 @@ class wp_xmlrpc_server extends IXR_Server {
                        $dateCreated = $content_struct['dateCreated']->getIso();
 
                if ( !empty( $dateCreated ) ) {
-                       $post_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
-                       $post_date_gmt = iso8601_to_datetime($dateCreated, 'GMT');
+                       $post_date = iso8601_to_datetime( $dateCreated );
+                       $post_date_gmt = get_gmt_from_date( $post_date );
                } else {
-                       $post_date = current_time('mysql');
-                       $post_date_gmt = current_time('mysql', 1);
+                       $post_date = '';
+                       $post_date_gmt = '';
                }
 
                $post_category = array();
@@ -5005,7 +5091,7 @@ class wp_xmlrpc_server extends IXR_Server {
         *
         * @since 2.1.0
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param int $post_ID Post ID.
         * @param string $post_content Post Content for attachment.
@@ -5133,7 +5219,6 @@ class wp_xmlrpc_server extends IXR_Server {
                                                break;
                                        default:
                                                return new IXR_Error( 401, __( 'Invalid post type' ) );
-                                               break;
                                }
                                $post_author = $content_struct['wp_author_id'];
                        }
@@ -5260,8 +5345,8 @@ class wp_xmlrpc_server extends IXR_Server {
                        $dateCreated = $content_struct['dateCreated']->getIso();
 
                if ( !empty( $dateCreated ) ) {
-                       $post_date = get_date_from_gmt(iso8601_to_datetime($dateCreated));
-                       $post_date_gmt = iso8601_to_datetime($dateCreated, 'GMT');
+                       $post_date = iso8601_to_datetime( $dateCreated );
+                       $post_date_gmt = get_gmt_from_date( $post_date, 'GMT' );
                } else {
                        $post_date     = $postdata['post_date'];
                        $post_date_gmt = $postdata['post_date_gmt'];
@@ -5369,7 +5454,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                        $categories = array();
                        $catids = wp_get_post_categories($post_ID);
-                       foreach($catids as $catid)
+                       foreach ($catids as $catid)
                                $categories[] = get_cat_name($catid);
 
                        $tagnames = array();
@@ -5383,7 +5468,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        }
 
                        $post = get_extended($postdata['post_content']);
-                       $link = post_permalink($postdata['ID']);
+                       $link = get_permalink($postdata['ID']);
 
                        // Get the author info.
                        $author = get_userdata($postdata['post_author']);
@@ -5508,7 +5593,7 @@ class wp_xmlrpc_server extends IXR_Server {
 
                        $categories = array();
                        $catids = wp_get_post_categories($entry['ID']);
-                       foreach( $catids as $catid )
+                       foreach ( $catids as $catid )
                                $categories[] = get_cat_name($catid);
 
                        $tagnames = array();
@@ -5523,7 +5608,7 @@ class wp_xmlrpc_server extends IXR_Server {
                        }
 
                        $post = get_extended($entry['post_content']);
-                       $link = post_permalink($entry['ID']);
+                       $link = get_permalink($entry['ID']);
 
                        // Get the post author info.
                        $author = get_userdata($entry['post_author']);
@@ -5633,7 +5718,7 @@ class wp_xmlrpc_server extends IXR_Server {
         *
         * @since 1.5.0
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param array  $args {
         *     Method arguments. Note: arguments must be ordered as documented.
@@ -5667,6 +5752,11 @@ class wp_xmlrpc_server extends IXR_Server {
                        return $this->error;
                }
 
+               if ( is_multisite() && upload_is_user_over_quota( false ) ) {
+                       $this->error = new IXR_Error( 401, __( 'Sorry, you have used your space allocation.' ) );
+                       return $this->error;
+               }
+
                /**
                 * Filter whether to preempt the XML-RPC media upload.
                 *
@@ -5681,24 +5771,6 @@ class wp_xmlrpc_server extends IXR_Server {
                        return new IXR_Error( 500, $upload_err );
                }
 
-               if ( !empty($data['overwrite']) && ($data['overwrite'] == true) ) {
-                       // Get postmeta info on the object.
-                       $old_file = $wpdb->get_row("
-                               SELECT ID
-                               FROM {$wpdb->posts}
-                               WHERE post_title = '{$name}'
-                                       AND post_type = 'attachment'
-                       ");
-
-                       // Delete previous file.
-                       wp_delete_attachment($old_file->ID);
-
-                       // Make sure the new name is different by pre-pending the
-                       // previous post id.
-                       $filename = preg_replace('/^wpid\d+-/', '', $name);
-                       $name = "wpid{$old_file->ID}-{$filename}";
-               }
-
                $upload = wp_upload_bits($name, null, $bits);
                if ( ! empty($upload['error']) ) {
                        $errorString = sprintf(__('Could not write file %1$s (%2$s)'), $name, $upload['error']);
@@ -5735,15 +5807,14 @@ class wp_xmlrpc_server extends IXR_Server {
                 */
                do_action( 'xmlrpc_call_success_mw_newMediaObject', $id, $args );
 
-               $struct = array(
-                       'id'   => strval( $id ),
-                       'file' => $name,
-                       'url'  => $upload[ 'url' ],
-                       'type' => $type
-               );
+               $struct = $this->_prepare_media_item( get_post( $id ) );
 
-               /** This filter is documented in wp-admin/includes/file.php */
-               return apply_filters( 'wp_handle_upload', $struct, 'upload' );
+               // Deprecated values
+               $struct['id']   = $struct['attachment_id'];
+               $struct['file'] = $struct['title'];
+               $struct['url']  = $struct['link'];
+
+               return $struct;
        }
 
        /* MovableType API functions
@@ -5986,7 +6057,7 @@ class wp_xmlrpc_server extends IXR_Server {
         *
         * @since 1.5.0
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param int $post_ID
         * @return array|IXR_Error
@@ -6076,7 +6147,7 @@ class wp_xmlrpc_server extends IXR_Server {
         *
         * @since 1.5.0
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         * @global string $wp_version
         *
         * @param array  $args {
@@ -6287,7 +6358,7 @@ class wp_xmlrpc_server extends IXR_Server {
         *
         * @since 1.5.0
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param string $url
         * @return array|IXR_Error
index b5d9f91c24d147b94faf9a46790710b2b1ae3cf5..555167b1ea2b34e994c4b167e1e8f57b492b969d 100644 (file)
@@ -15,7 +15,7 @@ class WP {
         * @access public
         * @var array
         */
-       public $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type');
+       public $public_query_vars = array('m', 'p', 'posts', 'w', 'cat', 'withcomments', 'withoutcomments', 's', 'search', 'exact', 'sentence', 'calendar', 'page', 'paged', 'more', 'tb', 'pb', 'author', 'order', 'orderby', 'year', 'monthnum', 'day', 'hour', 'minute', 'second', 'name', 'category_name', 'tag', 'feed', 'author_name', 'static', 'pagename', 'page_id', 'error', 'comments_popup', 'attachment', 'attachment_id', 'subpost', 'subpost_id', 'preview', 'robots', 'taxonomy', 'term', 'cpage', 'post_type', 'title', 'embed' );
 
        /**
         * Private query variables.
@@ -209,8 +209,16 @@ class WP {
 
                                                if ( $wp_rewrite->use_verbose_page_rules && preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch ) ) {
                                                        // This is a verbose page match, let's check to be sure about it.
-                                                       if ( ! get_page_by_path( $matches[ $varmatch[1] ] ) )
+                                                       $page = get_page_by_path( $matches[ $varmatch[1] ] );
+                                                       if ( ! $page ) {
                                                                continue;
+                                                       }
+
+                                                       $post_status_obj = get_post_status_object( $page->post_status );
+                                                       if ( ! $post_status_obj->public && ! $post_status_obj->protected
+                                                               && ! $post_status_obj->private && $post_status_obj->exclude_from_search ) {
+                                                               continue;
+                                                       }
                                                }
 
                                                // Got a match.
@@ -261,9 +269,11 @@ class WP {
                 */
                $this->public_query_vars = apply_filters( 'query_vars', $this->public_query_vars );
 
-               foreach ( get_post_types( array(), 'objects' ) as $post_type => $t )
-                       if ( $t->query_var )
+               foreach ( get_post_types( array(), 'objects' ) as $post_type => $t ) {
+                       if ( is_post_type_viewable( $t ) && $t->query_var ) {
                                $post_type_query_vars[$t->query_var] = $post_type;
+                       }
+               }
 
                foreach ( $this->public_query_vars as $wpvar ) {
                        if ( isset( $this->extra_query_vars[$wpvar] ) )
@@ -298,6 +308,19 @@ class WP {
                        if ( $t->query_var && isset( $this->query_vars[$t->query_var] ) )
                                $this->query_vars[$t->query_var] = str_replace( ' ', '+', $this->query_vars[$t->query_var] );
 
+               // Don't allow non-public taxonomies to be queried from the front-end.
+               if ( ! is_admin() ) {
+                       foreach ( get_taxonomies( array( 'public' => false ), 'objects' ) as $taxonomy => $t ) {
+                               /*
+                                * Disallow when set to the 'taxonomy' query var.
+                                * Non-public taxonomies cannot register custom query vars. See register_taxonomy().
+                                */
+                               if ( isset( $this->query_vars['taxonomy'] ) && $taxonomy === $this->query_vars['taxonomy'] ) {
+                                       unset( $this->query_vars['taxonomy'], $this->query_vars['term'] );
+                               }
+                       }
+               }
+
                // Limit publicly queried post_types to those that are publicly_queryable
                if ( isset( $this->query_vars['post_type']) ) {
                        $queryable_post_types = get_post_types( array('publicly_queryable' => true) );
@@ -340,15 +363,16 @@ class WP {
        }
 
        /**
-        * Send additional HTTP headers for caching, content type, etc.
+        * Sends additional HTTP headers for caching, content type, etc.
         *
-        * Sets the X-Pingback header, 404 status (if 404), Content-type. If showing
-        * a feed, it will also send last-modified, etag, and 304 status if needed.
+        * Sets the Content-Type header. Sets the 'error' status (if passed) and optionally exits.
+        * If showing a feed, it will also send Last-Modified, ETag, and 304 status if needed.
         *
         * @since 2.0.0
+        * @since 4.4.0 `X-Pingback` header is added conditionally after posts have been queried in handle_404().
         */
        public function send_headers() {
-               $headers = array('X-Pingback' => get_bloginfo('pingback_url'));
+               $headers = array();
                $status = null;
                $exit_required = false;
 
@@ -366,6 +390,13 @@ class WP {
                } elseif ( empty( $this->query_vars['feed'] ) ) {
                        $headers['Content-Type'] = get_option('html_type') . '; charset=' . get_option('blog_charset');
                } else {
+                       // Set the correct content type for feeds
+                       $type = $this->query_vars['feed'];
+                       if ( 'feed' == $this->query_vars['feed'] ) {
+                               $type = get_default_feed();
+                       }
+                       $headers['Content-Type'] = feed_content_type( $type ) . '; charset=' . get_option( 'blog_charset' );
+
                        // We're showing a feed, so WP is indeed the only thing that last changed
                        if ( !empty($this->query_vars['withcomments'])
                                || false !== strpos( $this->query_vars['feed'], 'comments-' )
@@ -438,7 +469,7 @@ class WP {
                        }
                }
 
-               foreach( (array) $headers as $name => $field_value )
+               foreach ( (array) $headers as $name => $field_value )
                        @header("{$name}: {$field_value}");
 
                if ( $exit_required )
@@ -558,6 +589,10 @@ class WP {
         *
         * Otherwise, issue a 200.
         *
+        * This sets headers after posts have been queried. handle_404() really means "handle status."
+        * By inspecting the result of querying posts, seemingly successful requests can be switched to
+        * a 404 so that canonical redirection logic can kick in.
+        *
         * @since 2.0.0
         *
         * @global WP_Query $wp_query
@@ -571,8 +606,27 @@ class WP {
 
                // Never 404 for the admin, robots, or if we found posts.
                if ( is_admin() || is_robots() || $wp_query->posts ) {
-                       status_header( 200 );
-                       return;
+
+                       $success = true;
+                       if ( is_singular() ) {
+                               $p = clone $wp_query->post;
+                               // Only set X-Pingback for single posts that allow pings.
+                               if ( $p && pings_open( $p ) ) {
+                                       @header( 'X-Pingback: ' . get_bloginfo( 'pingback_url' ) );
+                               }
+
+                               // check for paged content that exceeds the max number of pages
+                               $next = '<!--nextpage-->';
+                               if ( $p && false !== strpos( $p->post_content, $next ) && ! empty( $this->query_vars['page'] ) ) {
+                                       $page = trim( $this->query_vars['page'], '/' );
+                                       $success = (int) $page <= ( substr_count( $p->post_content, $next ) + 1 );
+                               }
+                       }
+
+                       if ( $success ) {
+                               status_header( 200 );
+                               return;
+                       }
                }
 
                // We will 404 for paged queries, as no posts were found.
index 918c53156f9214ffb12c052db981b10cc79d9942..c051770b12e1434730e0a0fb9241ac6ad95e0612 100644 (file)
@@ -96,7 +96,7 @@ class WP_Dependencies {
                $handles = false === $handles ? $this->queue : (array) $handles;
                $this->all_deps( $handles );
 
-               foreach( $this->to_do as $key => $handle ) {
+               foreach ( $this->to_do as $key => $handle ) {
                        if ( !in_array($handle, $this->done, true) && isset($this->registered[$handle]) ) {
 
                                /*
index 2cca26c691b4f4f680ef84871f11f6932fd76551..52c6824b5a3c8b6bd16289f34fe515200866a814 100644 (file)
@@ -247,7 +247,7 @@ class WP_Scripts extends WP_Dependencies {
         * @return bool Not already in the group or a lower group
         */
        public function set_group( $handle, $recursion, $group = false ) {
-               if ( $this->registered[$handle]->args === 1 )
+               if ( isset( $this->registered[$handle]->args ) && $this->registered[$handle]->args === 1 )
                        $grp = 1;
                else
                        $grp = (int) $this->get_data( $handle, 'group' );
index 78635778f2d982a6369a5ad55aed767b521fb06c..ada53c899771e1201f1e090619c18ef3c16d0a2e 100644 (file)
  * assumed.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID Optional. The ID of the comment for which to retrieve the author. Default current comment.
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to retrieve the author.
+ *                                                                      Default current comment.
  * @return string The comment author
  */
 function get_comment_author( $comment_ID = 0 ) {
@@ -37,22 +39,25 @@ function get_comment_author( $comment_ID = 0 ) {
         * @since 1.5.0
         * @since 4.1.0 The `$comment_ID` and `$comment` parameters were added.
         *
-        * @param string $author     The comment author's username.
-        * @param int    $comment_ID The comment ID.
-        * @param object $comment    The comment object.
+        * @param string     $author     The comment author's username.
+        * @param int        $comment_ID The comment ID.
+        * @param WP_Comment $comment    The comment object.
         */
-       return apply_filters( 'get_comment_author', $author, $comment_ID, $comment );
+       return apply_filters( 'get_comment_author', $author, $comment->comment_ID, $comment );
 }
 
 /**
  * Displays the author of the current comment.
  *
  * @since 0.71
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID Optional. The ID of the comment for which to print the author. Default current comment.
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to print the author.
+ *                                                                      Default current comment.
  */
 function comment_author( $comment_ID = 0 ) {
-       $author = get_comment_author( $comment_ID );
+       $comment = get_comment( $comment_ID );
+       $author  = get_comment_author( $comment );
 
        /**
         * Filter the comment author's name for display.
@@ -63,15 +68,17 @@ function comment_author( $comment_ID = 0 ) {
         * @param string $author     The comment author's username.
         * @param int    $comment_ID The comment ID.
         */
-       echo apply_filters( 'comment_author', $author, $comment_ID );
+       echo apply_filters( 'comment_author', $author, $comment->comment_ID );
 }
 
 /**
  * Retrieve the email of the author of the current comment.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID Optional. The ID of the comment for which to get the author's email. Default current comment.
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to get the author's email.
+ *                                                                      Default current comment.
  * @return string The current comment author's email
  */
 function get_comment_author_email( $comment_ID = 0 ) {
@@ -83,11 +90,11 @@ function get_comment_author_email( $comment_ID = 0 ) {
         * @since 1.5.0
         * @since 4.1.0 The `$comment_ID` and `$comment` parameters were added.
         *
-        * @param string $comment_author_email The comment author's email address.
-        * @param int    $comment_ID           The comment ID.
-        * @param object $comment              The comment object.
+        * @param string     $comment_author_email The comment author's email address.
+        * @param int        $comment_ID           The comment ID.
+        * @param WP_Comment $comment              The comment object.
         */
-       return apply_filters( 'get_comment_author_email', $comment->comment_author_email, $comment_ID, $comment );
+       return apply_filters( 'get_comment_author_email', $comment->comment_author_email, $comment->comment_ID, $comment );
 }
 
 /**
@@ -100,11 +107,14 @@ function get_comment_author_email( $comment_ID = 0 ) {
  * address and use it for their own means good and bad.
  *
  * @since 0.71
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID Optional. The ID of the comment for which to print the author's email. Default current comment.
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to print the author's email.
+ *                                                                      Default current comment.
  */
 function comment_author_email( $comment_ID = 0 ) {
-       $author_email = get_comment_author_email( $comment_ID );
+       $comment      = get_comment( $comment_ID );
+       $author_email = get_comment_author_email( $comment );
 
        /**
         * Filter the comment author's email for display.
@@ -115,7 +125,7 @@ function comment_author_email( $comment_ID = 0 ) {
         * @param string $author_email The comment author's email address.
         * @param int    $comment_ID   The comment ID.
         */
-       echo apply_filters( 'author_email', $author_email, $comment_ID );
+       echo apply_filters( 'author_email', $author_email, $comment->comment_ID );
 }
 
 /**
@@ -148,8 +158,6 @@ function comment_author_email_link( $linktext = '', $before = '', $after = '' )
  * enable anyone, including those that people don't want to get the email
  * address and use it for their own means good and bad.
  *
- * @global object $comment The current Comment row object.
- *
  * @since 2.7.0
  *
  * @param string $linktext Optional. Text to display instead of the comment author's email address.
@@ -159,8 +167,7 @@ function comment_author_email_link( $linktext = '', $before = '', $after = '' )
  * @return string
  */
 function get_comment_author_email_link( $linktext = '', $before = '', $after = '' ) {
-       global $comment;
-
+       $comment = get_comment();
        /**
         * Filter the comment author's email for display.
         *
@@ -170,14 +177,14 @@ function get_comment_author_email_link( $linktext = '', $before = '', $after = '
         * @since 1.2.0
         * @since 4.1.0 The `$comment` parameter was added.
         *
-        * @param string $comment_author_email The comment author's email address.
-        * @param object $comment              The comment object.
+        * @param string     $comment_author_email The comment author's email address.
+        * @param WP_Comment $comment              The comment object.
         */
        $email = apply_filters( 'comment_email', $comment->comment_author_email, $comment );
        if ((!empty($email)) && ($email != '@')) {
        $display = ($linktext != '') ? $linktext : $email;
                $return  = $before;
-               $return .= "<a href='mailto:$email'>$display</a>";
+               $return .= sprintf( '<a href="%1$s">%2$s</a>', esc_url( 'mailto:' . $email ), esc_html( $display ) );
                $return .= $after;
                return $return;
        } else {
@@ -192,14 +199,16 @@ function get_comment_author_email_link( $linktext = '', $before = '', $after = '
  * which falls back to the global comment variable if the $comment_ID argument is empty.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID ID of the comment for which to get the author's link.
- *                        Default current comment.
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to get the author's link.
+ *                                                                      Default current comment.
  * @return string The comment author name or HTML link for author's URL.
  */
 function get_comment_author_link( $comment_ID = 0 ) {
-       $url    = get_comment_author_url( $comment_ID );
-       $author = get_comment_author( $comment_ID );
+       $comment = get_comment( $comment_ID );
+       $url     = get_comment_author_url( $comment );
+       $author  = get_comment_author( $comment );
 
        if ( empty( $url ) || 'http://' == $url )
                $return = $author;
@@ -217,16 +226,17 @@ function get_comment_author_link( $comment_ID = 0 ) {
         * @param string $author     The comment author's username.
         * @param int    $comment_ID The comment ID.
         */
-       return apply_filters( 'get_comment_author_link', $return, $author, $comment_ID );
+       return apply_filters( 'get_comment_author_link', $return, $author, $comment->comment_ID );
 }
 
 /**
  * Display the html link to the url of the author of the current comment.
  *
  * @since 0.71
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID ID of the comment for which to print the author's
- *                        link. Default current comment.
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to print the author's link.
+ *                                                                      Default current comment.
  */
 function comment_author_link( $comment_ID = 0 ) {
        echo get_comment_author_link( $comment_ID );
@@ -236,9 +246,10 @@ function comment_author_link( $comment_ID = 0 ) {
  * Retrieve the IP address of the author of the current comment.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID ID of the comment for which to get the author's IP
- *                        address. Default current comment.
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to get the author's IP address.
+ *                                                                      Default current comment.
  * @return string Comment author's IP address.
  */
 function get_comment_author_IP( $comment_ID = 0 ) {
@@ -250,33 +261,35 @@ function get_comment_author_IP( $comment_ID = 0 ) {
         * @since 1.5.0
         * @since 4.1.0 The `$comment_ID` and `$comment` parameters were added.
         *
-        * @param string $comment_author_IP The comment author's IP address.
-        * @param int    $comment_ID        The comment ID.
-        * @param object $comment           The comment object.
+        * @param string     $comment_author_IP The comment author's IP address.
+        * @param int        $comment_ID        The comment ID.
+        * @param WP_Comment $comment           The comment object.
         */
-       return apply_filters( 'get_comment_author_IP', $comment->comment_author_IP, $comment_ID, $comment );
+       return apply_filters( 'get_comment_author_IP', $comment->comment_author_IP, $comment->comment_ID, $comment );
 }
 
 /**
  * Display the IP address of the author of the current comment.
  *
  * @since 0.71
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID ID of the comment for which to print the author's IP
- *                        address. Default current comment.
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to print the author's IP address.
+ *                                                                      Default current comment.
  */
 function comment_author_IP( $comment_ID = 0 ) {
-       echo get_comment_author_IP( $comment_ID );
+       echo esc_html( get_comment_author_IP( $comment_ID ) );
 }
 
 /**
  * Retrieve the url of the author of the current comment.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID ID of the comment for which to get the author's URL.
- *                        Default current comment.
- * @return string
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to get the author's URL.
+ *                                                                      Default current comment.
+ * @return string Comment author URL.
  */
 function get_comment_author_url( $comment_ID = 0 ) {
        $comment = get_comment( $comment_ID );
@@ -289,23 +302,25 @@ function get_comment_author_url( $comment_ID = 0 ) {
         * @since 1.5.0
         * @since 4.1.0 The `$comment_ID` and `$comment` parameters were added.
         *
-        * @param string $url        The comment author's URL.
-        * @param int    $comment_ID The comment ID.
-        * @param object $comment    The comment object.
+        * @param string     $url        The comment author's URL.
+        * @param int        $comment_ID The comment ID.
+        * @param WP_Comment $comment    The comment object.
         */
-       return apply_filters( 'get_comment_author_url', $url, $comment_ID, $comment );
+       return apply_filters( 'get_comment_author_url', $url, $comment->comment_ID, $comment );
 }
 
 /**
  * Display the url of the author of the current comment.
  *
  * @since 0.71
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID ID of the comment for which to print the author's URL.
- *                        Default current comment.
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or the ID of the comment for which to print the author's URL.
+ *                                                                      Default current comment.
  */
 function comment_author_url( $comment_ID = 0 ) {
-       $author_url = get_comment_author_url( $comment_ID );
+       $comment    = get_comment( $comment_ID );
+       $author_url = get_comment_author_url( $comment );
 
        /**
         * Filter the comment author's URL for display.
@@ -316,7 +331,7 @@ function comment_author_url( $comment_ID = 0 ) {
         * @param string $author_url The comment author's URL.
         * @param int    $comment_ID The comment ID.
         */
-       echo apply_filters( 'comment_url', $author_url, $comment_ID );
+       echo apply_filters( 'comment_url', $author_url, $comment->comment_ID );
 }
 
 /**
@@ -381,18 +396,19 @@ function comment_author_url_link( $linktext = '', $before = '', $after = '' ) {
  * Generates semantic classes for each comment element.
  *
  * @since 2.7.0
+ * @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object.
  *
- * @param string|array $class      Optional. One or more classes to add to the class list.
+ * @param string|array   $class    Optional. One or more classes to add to the class list.
  *                                 Default empty.
- * @param int          $comment_id Comment ID. Default current comment.
- * @param int|WP_Post  $post_id    Post ID or WP_Post object. Default current post.
- * @param bool         $echo       Optional. Whether to cho or return the output.
+ * @param int|WP_Comment $comment  Comment ID or WP_Comment object. Default current comment.
+ * @param int|WP_Post    $post_id  Post ID or WP_Post object. Default current post.
+ * @param bool           $echo     Optional. Whether to cho or return the output.
  *                                 Default true.
- * @return string|void
+ * @return string If `$echo` is false, the class will be returned. Void otherwise.
  */
-function comment_class( $class = '', $comment_id = null, $post_id = null, $echo = true ) {
+function comment_class( $class = '', $comment = null, $post_id = null, $echo = true ) {
        // Separates classes with a single space, collates classes for comment DIV
-       $class = 'class="' . join( ' ', get_comment_class( $class, $comment_id, $post_id ) ) . '"';
+       $class = 'class="' . join( ' ', get_comment_class( $class, $comment, $post_id ) ) . '"';
        if ( $echo)
                echo $class;
        else
@@ -403,23 +419,27 @@ function comment_class( $class = '', $comment_id = null, $post_id = null, $echo
  * Returns the classes for the comment div as an array.
  *
  * @since 2.7.0
+ * @since 4.4.0 Added the ability for `$comment_id` to also accept a WP_Comment object.
  *
  * @global int $comment_alt
  * @global int $comment_depth
  * @global int $comment_thread_alt
  *
- * @param string|array $class      Optional. One or more classes to add to the class list. Default empty.
- * @param int          $comment_id Comment ID. Default current comment.
- * @param int|WP_Post  $post_id    Post ID or WP_Post object. Default current post.
+ * @param string|array   $class      Optional. One or more classes to add to the class list. Default empty.
+ * @param int|WP_Comment $comment_id Comment ID or WP_Comment object. Default current comment.
+ * @param int|WP_Post    $post_id    Post ID or WP_Post object. Default current post.
  * @return array An array of classes.
  */
 function get_comment_class( $class = '', $comment_id = null, $post_id = null ) {
        global $comment_alt, $comment_depth, $comment_thread_alt;
 
-       $comment = get_comment($comment_id);
-
        $classes = array();
 
+       $comment = get_comment( $comment_id );
+       if ( ! $comment ) {
+               return $classes;
+       }
+
        // Get the comment type (comment, trackback),
        $classes[] = ( empty( $comment->comment_type ) ) ? 'comment' : $comment->comment_type;
 
@@ -480,19 +500,21 @@ function get_comment_class( $class = '', $comment_id = null, $post_id = null ) {
         * @param array       $classes    An array of comment classes.
         * @param string      $class      A comma-separated list of additional classes added to the list.
         * @param int         $comment_id The comment id.
-        * @param object          $comment    The comment
+        * @param WP_Comment  $comment    The comment object.
         * @param int|WP_Post $post_id    The post ID or WP_Post object.
         */
-       return apply_filters( 'comment_class', $classes, $class, $comment_id, $comment, $post_id );
+       return apply_filters( 'comment_class', $classes, $class, $comment->comment_ID, $comment, $post_id );
 }
 
 /**
  * Retrieve the comment date of the current comment.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param string $d          Optional. The format of the date. Default user's setting.
- * @param int    $comment_ID ID of the comment for which to get the date. Default current comment.
+ * @param string          $d          Optional. The format of the date. Default user's setting.
+ * @param int|WP_Comment  $comment_ID WP_Comment or ID of the comment for which to get the date.
+ *                                    Default current comment.
  * @return string The comment's date.
  */
 function get_comment_date( $d = '', $comment_ID = 0 ) {
@@ -508,7 +530,7 @@ function get_comment_date( $d = '', $comment_ID = 0 ) {
         *
         * @param string|int $date    Formatted date string or Unix timestamp.
         * @param string     $d       The format of the date.
-        * @param object     $comment The comment object.
+        * @param WP_Comment $comment The comment object.
         */
        return apply_filters( 'get_comment_date', $date, $d, $comment );
 }
@@ -517,9 +539,11 @@ function get_comment_date( $d = '', $comment_ID = 0 ) {
  * Display the comment date of the current comment.
  *
  * @since 0.71
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param string $d          Optional. The format of the date. Default user's settings.
- * @param int    $comment_ID ID of the comment for which to print the date. Default current comment.
+ * @param string         $d          Optional. The format of the date. Default user's settings.
+ * @param int|WP_Comment $comment_ID WP_Comment or ID of the comment for which to print the date.
+ *                                   Default current comment.
  */
 function comment_date( $d = '', $comment_ID = 0 ) {
        echo get_comment_date( $d, $comment_ID );
@@ -533,53 +557,60 @@ function comment_date( $d = '', $comment_ID = 0 ) {
  * will appear.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID ID of the comment for which to get the excerpt.
- *                        Default current comment.
+ * @param int|WP_Comment $comment_ID  WP_Comment or ID of the comment for which to get the excerpt.
+ *                                    Default current comment.
  * @return string The maybe truncated comment with 20 words or less.
  */
 function get_comment_excerpt( $comment_ID = 0 ) {
        $comment = get_comment( $comment_ID );
-       $comment_text = strip_tags($comment->comment_content);
-       $blah = explode(' ', $comment_text);
+       $comment_text = strip_tags( str_replace( array( "\n", "\r" ), ' ', $comment->comment_content ) );
+       $words = explode( ' ', $comment_text );
 
-       if (count($blah) > 20) {
-               $k = 20;
-               $use_dotdotdot = 1;
-       } else {
-               $k = count($blah);
-               $use_dotdotdot = 0;
-       }
+       /**
+        * Filter the amount of words used in the comment excerpt.
+        *
+        * @since 4.4.0
+        *
+        * @param int $comment_excerpt_length The amount of words you want to display in the comment excerpt.
+        */
+       $comment_excerpt_length = apply_filters( 'comment_excerpt_length', 20 );
 
-       $excerpt = '';
-       for ($i=0; $i<$k; $i++) {
-               $excerpt .= $blah[$i] . ' ';
+       $use_ellipsis = count( $words ) > $comment_excerpt_length;
+       if ( $use_ellipsis ) {
+               $words = array_slice( $words, 0, $comment_excerpt_length );
        }
-       $excerpt .= ($use_dotdotdot) ? '&hellip;' : '';
 
+       $excerpt = trim( join( ' ', $words ) );
+       if ( $use_ellipsis ) {
+               $excerpt .= '&hellip;';
+       }
        /**
         * Filter the retrieved comment excerpt.
         *
         * @since 1.5.0
         * @since 4.1.0 The `$comment_ID` and `$comment` parameters were added.
         *
-        * @param string $excerpt    The comment excerpt text.
-        * @param int    $comment_ID The comment ID.
-        * @param object $comment    The comment object.
+        * @param string     $excerpt    The comment excerpt text.
+        * @param int        $comment_ID The comment ID.
+        * @param WP_Comment $comment    The comment object.
         */
-       return apply_filters( 'get_comment_excerpt', $excerpt, $comment_ID, $comment );
+       return apply_filters( 'get_comment_excerpt', $excerpt, $comment->comment_ID, $comment );
 }
 
 /**
  * Display the excerpt of the current comment.
  *
  * @since 1.2.0
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID ID of the comment for which to print the excerpt.
- *                        Default current comment.
+ * @param int|WP_Comment $comment_ID  WP_Comment or ID of the comment for which to print the excerpt.
+ *                                    Default current comment.
  */
 function comment_excerpt( $comment_ID = 0 ) {
-       $comment_excerpt = get_comment_excerpt($comment_ID);
+       $comment         = get_comment( $comment_ID );
+       $comment_excerpt = get_comment_excerpt( $comment );
 
        /**
         * Filter the comment excerpt for display.
@@ -590,7 +621,7 @@ function comment_excerpt( $comment_ID = 0 ) {
         * @param string $comment_excerpt The comment excerpt text.
         * @param int    $comment_ID      The comment ID.
         */
-       echo apply_filters( 'comment_excerpt', $comment_excerpt, $comment_ID );
+       echo apply_filters( 'comment_excerpt', $comment_excerpt, $comment->comment_ID );
 }
 
 /**
@@ -598,12 +629,10 @@ function comment_excerpt( $comment_ID = 0 ) {
  *
  * @since 1.5.0
  *
- * @global object $comment
- *
  * @return int The comment ID.
  */
 function get_comment_ID() {
-       global $comment;
+       $comment = get_comment();
 
        /**
         * Filter the returned comment ID.
@@ -611,8 +640,8 @@ function get_comment_ID() {
         * @since 1.5.0
         * @since 4.1.0 The `$comment_ID` parameter was added.
         *
-        * @param int    $comment_ID The current comment ID.
-        * @param object $comment    The comment object.
+        * @param int        $comment_ID The current comment ID.
+        * @param WP_Comment $comment    The comment object.
         */
        return apply_filters( 'get_comment_ID', $comment->comment_ID, $comment );
 }
@@ -630,14 +659,24 @@ function comment_ID() {
  * Retrieve the link to a given comment.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object. Added `$cpage` argument.
  *
  * @see get_page_of_comment()
  *
  * @global WP_Rewrite $wp_rewrite
  * @global bool       $in_comment_loop
  *
- * @param mixed $comment Comment to retrieve. Default current comment.
- * @param array $args    Optional. An array of arguments to override the defaults.
+ * @param WP_Comment|int|null $comment Comment to retrieve. Default current comment.
+ * @param array               $args {
+ *     An array of optional arguments to override the defaults.
+ *
+ *     @type string     $type      Passed to {@see get_page_of_comment()}.
+ *     @type int        $page      Current page of comments, for calculating comment pagination.
+ *     @type int        $per_page  Per-page value for comment pagination.
+ *     @type int        $max_depth Passed to {@see get_page_of_comment()}.
+ *     @type int|string $cpage     Value to use for the comment's "comment-page" or "cpage" value. If provided, this
+ *                                 value overrides any value calculated from `$page` and `$per_page`.
+ * }
  * @return string The permalink to the given comment.
  */
 function get_comment_link( $comment = null, $args = array() ) {
@@ -650,46 +689,90 @@ function get_comment_link( $comment = null, $args = array() ) {
                $args = array( 'page' => $args );
        }
 
-       $defaults = array( 'type' => 'all', 'page' => '', 'per_page' => '', 'max_depth' => '' );
+       $defaults = array(
+               'type'      => 'all',
+               'page'      => '',
+               'per_page'  => '',
+               'max_depth' => '',
+               'cpage'     => null,
+       );
        $args = wp_parse_args( $args, $defaults );
 
-       if ( '' === $args['per_page'] && get_option('page_comments') )
-               $args['per_page'] = get_option('comments_per_page');
+       $link = get_permalink( $comment->comment_post_ID );
 
-       if ( empty($args['per_page']) ) {
-               $args['per_page'] = 0;
-               $args['page'] = 0;
+       // The 'cpage' param takes precedence.
+       if ( ! is_null( $args['cpage'] ) ) {
+               $cpage = $args['cpage'];
+
+       // No 'cpage' is provided, so we calculate one.
+       } else {
+               if ( '' === $args['per_page'] && get_option( 'page_comments' ) ) {
+                       $args['per_page'] = get_option('comments_per_page');
+               }
+
+               if ( empty( $args['per_page'] ) ) {
+                       $args['per_page'] = 0;
+                       $args['page'] = 0;
+               }
+
+               $cpage = $args['page'];
+
+               if ( '' == $cpage ) {
+                       if ( ! empty( $in_comment_loop ) ) {
+                               $cpage = get_query_var( 'cpage' );
+                       } else {
+                               // Requires a database hit, so we only do it when we can't figure out from context.
+                               $cpage = get_page_of_comment( $comment->comment_ID, $args );
+                       }
+               }
+
+               /*
+                * If the default page displays the oldest comments, the permalinks for comments on the default page
+                * do not need a 'cpage' query var.
+                */
+               $default_comments_page = get_option( 'default_comments_page' );
+               if ( 'oldest' === get_option( 'default_comments_page' ) && 1 === $cpage ) {
+                       $cpage = '';
+               }
        }
 
-       if ( $args['per_page'] ) {
-               if ( '' == $args['page'] )
-                       $args['page'] = ( !empty($in_comment_loop) ) ? get_query_var('cpage') : get_page_of_comment( $comment->comment_ID, $args );
+       if ( $cpage ) {
+               if ( $wp_rewrite->using_permalinks() ) {
+                       if ( $cpage ) {
+                               $link = trailingslashit( $link ) . $wp_rewrite->comments_pagination_base . '-' . $cpage;
+                       }
+
+                       $link = user_trailingslashit( $link, 'comment' );
+               } elseif ( $cpage ) {
+                       $link = add_query_arg( 'cpage', $cpage, $link );
+               }
 
-               if ( $wp_rewrite->using_permalinks() )
-                       $link = user_trailingslashit( trailingslashit( get_permalink( $comment->comment_post_ID ) ) . $wp_rewrite->comments_pagination_base . '-' . $args['page'], 'comment' );
-               else
-                       $link = add_query_arg( 'cpage', $args['page'], get_permalink( $comment->comment_post_ID ) );
-       } else {
-               $link = get_permalink( $comment->comment_post_ID );
+       }
+
+       if ( $wp_rewrite->using_permalinks() ) {
+               $link = user_trailingslashit( $link, 'comment' );
        }
 
        $link = $link . '#comment-' . $comment->comment_ID;
+
        /**
         * Filter the returned single comment permalink.
         *
         * @since 2.8.0
+        * @since 4.4.0 Added the `$cpage` parameter.
         *
         * @see get_page_of_comment()
         *
-        * @param string $link    The comment permalink with '#comment-$id' appended.
-        * @param object $comment The current comment object.
-        * @param array  $args    An array of arguments to override the defaults.
+        * @param string     $link    The comment permalink with '#comment-$id' appended.
+        * @param WP_Comment $comment The current comment object.
+        * @param array      $args    An array of arguments to override the defaults.
+        * @param int        $cpage   The calculated 'cpage' value.
         */
-       return apply_filters( 'get_comment_link', $link, $comment, $args );
+       return apply_filters( 'get_comment_link', $link, $comment, $args, $cpage );
 }
 
 /**
- * Retrieve the link to the current post comments.
+ * Retrieves the link to the current post comments.
  *
  * @since 1.5.0
  *
@@ -697,7 +780,9 @@ function get_comment_link( $comment = null, $args = array() ) {
  * @return string The link to the comments.
  */
 function get_comments_link( $post_id = 0 ) {
-       $comments_link = get_permalink( $post_id ) . '#comments';
+       $hash = get_comments_number( $post_id ) ? '#comments' : '#respond';
+       $comments_link = get_permalink( $post_id ) . $hash;
+
        /**
         * Filter the returned post comments permalink.
         *
@@ -784,7 +869,13 @@ function get_comments_number_text( $zero = false, $one = false, $more = false )
        $number = get_comments_number();
 
        if ( $number > 1 ) {
-               $output = str_replace( '%', number_format_i18n( $number ), ( false === $more ) ? __( '% Comments' ) : $more );
+               if ( false === $more ) {
+                       /* translators: %s: number of comments */
+                       $output = sprintf( _n( '%s Comment', '%s Comments', $number ), number_format_i18n( $number ) );
+               } else {
+                       // % Comments
+                       $output = str_replace( '%', number_format_i18n( $number ), $more );
+               }
        } elseif ( $number == 0 ) {
                $output = ( false === $zero ) ? __( 'No Comments' ) : $zero;
        } else { // must be one
@@ -808,11 +899,13 @@ function get_comments_number_text( $zero = false, $one = false, $more = false )
  * Retrieve the text of the current comment.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
  * @see Walker_Comment::comment()
  *
- * @param int   $comment_ID ID of the comment for which to get the text. Default current comment.
- * @param array $args       Optional. An array of arguments. Default empty.
+ * @param int|WP_Comment  $comment_ID WP_Comment or ID of the comment for which to get the text.
+ *                                    Default current comment.
+ * @param array           $args       Optional. An array of arguments. Default empty.
  * @return string The comment content.
  */
 function get_comment_text( $comment_ID = 0, $args = array() ) {
@@ -825,9 +918,9 @@ function get_comment_text( $comment_ID = 0, $args = array() ) {
         *
         * @see Walker_Comment::comment()
         *
-        * @param string $comment_content Text of the comment.
-        * @param object $comment         The comment object.
-        * @param array  $args            An array of arguments.
+        * @param string     $comment_content Text of the comment.
+        * @param WP_Comment $comment         The comment object.
+        * @param array      $args            An array of arguments.
         */
        return apply_filters( 'get_comment_text', $comment->comment_content, $comment, $args );
 }
@@ -836,16 +929,18 @@ function get_comment_text( $comment_ID = 0, $args = array() ) {
  * Display the text of the current comment.
  *
  * @since 0.71
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
  * @see Walker_Comment::comment()
  *
- * @param int   $comment_ID ID of the comment for which to print the text. Default 0.
- * @param array $args       Optional. An array of arguments. Default empty array. Default empty.
+ * @param int|WP_Comment  $comment_ID WP_Comment or ID of the comment for which to print the text.
+ *                                    Default current comment.
+ * @param array           $args       Optional. An array of arguments. Default empty array. Default empty.
  */
 function comment_text( $comment_ID = 0, $args = array() ) {
        $comment = get_comment( $comment_ID );
 
-       $comment_text = get_comment_text( $comment_ID , $args );
+       $comment_text = get_comment_text( $comment, $args );
        /**
         * Filter the text of a comment to be displayed.
         *
@@ -853,9 +948,9 @@ function comment_text( $comment_ID = 0, $args = array() ) {
         *
         * @see Walker_Comment::comment()
         *
-        * @param string $comment_text Text of the current comment.
-        * @param object $comment      The comment object.
-        * @param array  $args         An array of arguments.
+        * @param string     $comment_text Text of the current comment.
+        * @param WP_Comment $comment      The comment object.
+        * @param array      $args         An array of arguments.
         */
        echo apply_filters( 'comment_text', $comment_text, $comment, $args );
 }
@@ -865,8 +960,6 @@ function comment_text( $comment_ID = 0, $args = array() ) {
  *
  * @since 1.5.0
  *
- * @global object $comment
- *
  * @param string $d         Optional. The format of the time. Default user's settings.
  * @param bool   $gmt       Optional. Whether to use the GMT date. Default false.
  * @param bool   $translate Optional. Whether to translate the time (for use in feeds).
@@ -874,7 +967,8 @@ function comment_text( $comment_ID = 0, $args = array() ) {
  * @return string The formatted time.
  */
 function get_comment_time( $d = '', $gmt = false, $translate = true ) {
-       global $comment;
+       $comment = get_comment();
+
        $comment_date = $gmt ? $comment->comment_date_gmt : $comment->comment_date;
        if ( '' == $d )
                $date = mysql2date(get_option('time_format'), $comment_date, $translate);
@@ -890,7 +984,7 @@ function get_comment_time( $d = '', $gmt = false, $translate = true ) {
         * @param string     $d         Date format.
         * @param bool       $gmt       Whether the GMT date is in use.
         * @param bool       $translate Whether the time is translated.
-        * @param object     $comment   The comment object.
+        * @param WP_Comment $comment   The comment object.
         */
        return apply_filters( 'get_comment_time', $date, $d, $gmt, $translate, $comment );
 }
@@ -910,8 +1004,10 @@ function comment_time( $d = '' ) {
  * Retrieve the comment type of the current comment.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability for `$comment_ID` to also accept a WP_Comment object.
  *
- * @param int $comment_ID ID of the comment for which to get the type. Default current comment.
+ * @param int|WP_Comment $comment_ID Optional. WP_Comment or ID of the comment for which to get the type.
+ *                                   Default current comment.
  * @return string The comment type.
  */
 function get_comment_type( $comment_ID = 0 ) {
@@ -925,11 +1021,11 @@ function get_comment_type( $comment_ID = 0 ) {
         * @since 1.5.0
         * @since 4.1.0 The `$comment_ID` and `$comment` parameters were added.
         *
-        * @param string $comment_type The type of comment, such as 'comment', 'pingback', or 'trackback'.
-        * @param int    $comment_ID   The comment ID.
-        * @param object $comment      The comment object.
+        * @param string     $comment_type The type of comment, such as 'comment', 'pingback', or 'trackback'.
+        * @param int        $comment_ID   The comment ID.
+        * @param WP_Comment $comment      The comment object.
         */
-       return apply_filters( 'get_comment_type', $comment->comment_type, $comment_ID, $comment );
+       return apply_filters( 'get_comment_type', $comment->comment_type, $comment->comment_ID, $comment );
 }
 
 /**
@@ -995,12 +1091,20 @@ function get_trackback_url() {
  *                     for the result instead.
  */
 function trackback_url( $deprecated_echo = true ) {
-       if ( $deprecated_echo !== true )
-               _deprecated_argument( __FUNCTION__, '2.5', __('Use <code>get_trackback_url()</code> instead if you do not want the value echoed.') );
-       if ( $deprecated_echo )
+       if ( true !== $deprecated_echo ) {
+               _deprecated_argument( __FUNCTION__, '2.5',
+                       /* translators: %s: get_trackback_url() */
+                       sprintf( __( 'Use %s instead if you do not want the value echoed.' ),
+                               '<code>get_trackback_url()</code>'
+                       )
+               );
+       }
+
+       if ( $deprecated_echo ) {
                echo get_trackback_url();
-       else
+       } else {
                return get_trackback_url();
+       }
 }
 
 /**
@@ -1129,15 +1233,15 @@ function wp_comment_form_unfiltered_html_nonce() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
- * @global WP_Post  $post
- * @global wpdb     $wpdb
- * @global int      $id
- * @global object   $comment
- * @global string   $user_login
- * @global int      $user_ID
- * @global string   $user_identity
- * @global bool     $overridden_cpage
+ * @global WP_Query   $wp_query
+ * @global WP_Post    $post
+ * @global wpdb       $wpdb
+ * @global int        $id
+ * @global WP_Comment $comment
+ * @global string     $user_login
+ * @global int        $user_ID
+ * @global string     $user_identity
+ * @global bool       $overridden_cpage
  *
  * @param string $file              Optional. The file to load. Default '/comments.php'.
  * @param bool   $separate_comments Optional. Whether to separate the comments by comment type.
@@ -1177,10 +1281,13 @@ function comments_template( $file = '/comments.php', $separate_comments = false
        $comment_author_url = esc_url($commenter['comment_author_url']);
 
        $comment_args = array(
-               'order'   => 'ASC',
                'orderby' => 'comment_date_gmt',
+               'order' => 'ASC',
                'status'  => 'approve',
                'post_id' => $post->ID,
+               'hierarchical' => 'threaded',
+               'no_found_rows' => false,
+               'update_comment_meta_cache' => false, // We lazy-load comment meta for performance.
        );
 
        if ( $user_ID ) {
@@ -1189,7 +1296,46 @@ function comments_template( $file = '/comments.php', $separate_comments = false
                $comment_args['include_unapproved'] = array( $comment_author_email );
        }
 
-       $comments = get_comments( $comment_args );
+       $per_page = 0;
+       if ( get_option( 'page_comments' ) ) {
+               $per_page = (int) get_query_var( 'comments_per_page' );
+               if ( 0 === $per_page ) {
+                       $per_page = (int) get_option( 'comments_per_page' );
+               }
+
+               $comment_args['number'] = $per_page;
+               $page = (int) get_query_var( 'cpage' );
+
+               if ( $page ) {
+                       $comment_args['offset'] = ( $page - 1 ) * $per_page;
+               } elseif ( 'oldest' === get_option( 'default_comments_page' ) ) {
+                       $comment_args['offset'] = 0;
+               } else {
+                       // If fetching the first page of 'newest', we need a top-level comment count.
+                       $top_level_query = new WP_Comment_Query();
+                       $top_level_count = $top_level_query->query( array(
+                               'count'   => true,
+                               'orderby' => false,
+                               'post_id' => $post->ID,
+                               'parent'  => 0,
+                       ) );
+
+                       $comment_args['offset'] = ( ceil( $top_level_count / $per_page ) - 1 ) * $per_page;
+               }
+       }
+
+       $comment_query = new WP_Comment_Query( $comment_args );
+       $_comments = $comment_query->comments;
+
+       // Trees must be flattened before they're passed to the walker.
+       $comments_flat = array();
+       foreach ( $_comments as $_comment ) {
+               $comments_flat = array_merge( $comments_flat, array( $_comment ), $_comment->get_children( array(
+                       'format' => 'flat',
+                       'status' => $comment_args['status'],
+                       'orderby' => $comment_args['orderby']
+               ) ) );
+       }
 
        /**
         * Filter the comments array.
@@ -1199,17 +1345,24 @@ function comments_template( $file = '/comments.php', $separate_comments = false
         * @param array $comments Array of comments supplied to the comments template.
         * @param int   $post_ID  Post ID.
         */
-       $wp_query->comments = apply_filters( 'comments_array', $comments, $post->ID );
+       $wp_query->comments = apply_filters( 'comments_array', $comments_flat, $post->ID );
+
+       // Set up lazy-loading for comment metadata.
+       add_action( 'get_comment_metadata', array( $wp_query, 'lazyload_comment_meta' ), 10, 2 );
+
        $comments = &$wp_query->comments;
        $wp_query->comment_count = count($wp_query->comments);
+       $wp_query->max_num_comment_pages = $comment_query->max_num_pages;
 
        if ( $separate_comments ) {
                $wp_query->comments_by_type = separate_comments($comments);
                $comments_by_type = &$wp_query->comments_by_type;
+       } else {
+               $wp_query->comments_by_type = array();
        }
 
        $overridden_cpage = false;
-       if ( '' == get_query_var('cpage') && get_option('page_comments') ) {
+       if ( '' == get_query_var( 'cpage' ) && $wp_query->max_num_comment_pages > 1 ) {
                set_query_var( 'cpage', 'newest' == get_option('default_comments_page') ? get_comment_pages_count() : 1 );
                $overridden_cpage = true;
        }
@@ -1332,11 +1485,22 @@ function comments_popup_link( $zero = false, $one = false, $more = false, $css_c
                        $home = get_option('siteurl');
                echo $home . '/' . $wpcommentspopupfile . '?comments_popup=' . $id;
                echo '" onclick="wpopen(this.href); return false"';
-       } else { // if comments_popup_script() is not in the template, display simple comment link
-               if ( 0 == $number )
-                       echo get_permalink() . '#respond';
-               else
+       } else {
+               // if comments_popup_script() is not in the template, display simple comment link
+               if ( 0 == $number ) {
+                       $respond_link = get_permalink() . '#respond';
+                       /**
+                        * Filter the respond link when a post has no comments.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param string $respond_link The default response link.
+                        * @param integer $id The post ID.
+                        */
+                       echo apply_filters( 'respond_link', $respond_link, $id );
+               } else {
                        comments_link();
+               }
                echo '"';
        }
 
@@ -1363,6 +1527,7 @@ function comments_popup_link( $zero = false, $one = false, $more = false, $css_c
  * Retrieve HTML content for reply to comment link.
  *
  * @since 2.7.0
+ * @since 4.4.0 Added the ability for `$comment` to also accept a WP_Comment object.
  *
  * @param array $args {
  *     Optional. Override default arguments.
@@ -1380,9 +1545,9 @@ function comments_popup_link( $zero = false, $one = false, $more = false, $css_c
  *     @type string $before     The text or HTML to add before the reply link. Default empty.
  *     @type string $after      The text or HTML to add after the reply link. Default empty.
  * }
- * @param int         $comment Comment being replied to. Default current comment.
- * @param int|WP_Post $post    Post ID or WP_Post object the comment is going to be displayed on.
- *                             Default current post.
+ * @param int|WP_Comment $comment Comment being replied to. Default current comment.
+ * @param int|WP_Post    $post    Post ID or WP_Post object the comment is going to be displayed on.
+ *                                Default current post.
  * @return void|false|string Link to show comment form, if successful. False, if comments are closed.
  */
 function get_comment_reply_link( $args = array(), $comment = null, $post = null ) {
@@ -1420,10 +1585,10 @@ function get_comment_reply_link( $args = array(), $comment = null, $post = null
         *
         * @since 4.1.0
         *
-        * @param array   $args    Comment reply link arguments. See {@see get_comment_reply_link()}
-        *                         for more information on accepted arguments.
-        * @param object  $comment The object of the comment being replied to.
-        * @param WP_Post $post    The {@see WP_Post} object.
+        * @param array      $args    Comment reply link arguments. See get_comment_reply_link()
+        *                            for more information on accepted arguments.
+        * @param WP_Comment $comment The object of the comment being replied to.
+        * @param WP_Post    $post    The WP_Post object.
         */
        $args = apply_filters( 'comment_reply_link_args', $args, $comment, $post );
 
@@ -1444,6 +1609,7 @@ function get_comment_reply_link( $args = array(), $comment = null, $post = null
                        $args['reply_text']
                );
        }
+
        /**
         * Filter the comment reply link.
         *
@@ -1532,6 +1698,7 @@ function get_post_reply_link($args = array(), $post = null) {
                );
        }
        $formatted_link = $args['before'] . $link . $args['after'];
+
        /**
         * Filter the formatted post comments link HTML.
         *
@@ -1575,6 +1742,7 @@ function get_cancel_comment_reply_link( $text = '' ) {
        $link = esc_html( remove_query_arg('replytocom') ) . '#respond';
 
        $formatted_link = '<a rel="nofollow" id="cancel-comment-reply-link" href="' . $link . '"' . $style . '>' . $text . '</a>';
+
        /**
         * Filter the cancel comment reply link HTML.
         *
@@ -1644,8 +1812,6 @@ function comment_id_fields( $id = 0 ) {
  *
  * @since 2.7.0
  *
- * @global object $comment
- *
  * @param string $noreplytext  Optional. Text to display when not replying to a comment.
  *                             Default false.
  * @param string $replytext    Optional. Text to display when replying to a comment.
@@ -1655,7 +1821,7 @@ function comment_id_fields( $id = 0 ) {
  *                             to their comment. Default true.
  */
 function comment_form_title( $noreplytext = false, $replytext = false, $linktoparent = true ) {
-       global $comment;
+       $comment = get_comment();
 
        if ( false === $noreplytext ) $noreplytext = __( 'Leave a Reply' );
        if ( false === $replytext ) $replytext = __( 'Leave a Reply to %s' );
@@ -1666,352 +1832,11 @@ function comment_form_title( $noreplytext = false, $replytext = false, $linktopa
                echo $noreplytext;
        else {
                $comment = get_comment($replytoid);
-               $author = ( $linktoparent ) ? '<a href="#comment-' . get_comment_ID() . '">' . get_comment_author() . '</a>' : get_comment_author();
+               $author = ( $linktoparent ) ? '<a href="#comment-' . get_comment_ID() . '">' . get_comment_author( $comment ) . '</a>' : get_comment_author( $comment );
                printf( $replytext, $author );
        }
 }
 
-/**
- * HTML comment list class.
- *
- * @uses Walker
- * @since 2.7.0
- */
-class Walker_Comment extends Walker {
-       /**
-        * What the class handles.
-        *
-        * @see Walker::$tree_type
-        *
-        * @since 2.7.0
-        * @var string
-        */
-       public $tree_type = 'comment';
-
-       /**
-        * DB fields to use.
-        *
-        * @see Walker::$db_fields
-        *
-        * @since 2.7.0
-        * @var array
-        */
-       public $db_fields = array ('parent' => 'comment_parent', 'id' => 'comment_ID');
-
-       /**
-        * Start the list before the elements are added.
-        *
-        * @see Walker::start_lvl()
-        *
-        * @since 2.7.0
-        *
-        * @global int $comment_depth
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param int $depth Depth of comment.
-        * @param array $args Uses 'style' argument for type of HTML list.
-        */
-       public function start_lvl( &$output, $depth = 0, $args = array() ) {
-               $GLOBALS['comment_depth'] = $depth + 1;
-
-               switch ( $args['style'] ) {
-                       case 'div':
-                               break;
-                       case 'ol':
-                               $output .= '<ol class="children">' . "\n";
-                               break;
-                       case 'ul':
-                       default:
-                               $output .= '<ul class="children">' . "\n";
-                               break;
-               }
-       }
-
-       /**
-        * End the list of items after the elements are added.
-        *
-        * @see Walker::end_lvl()
-        *
-        * @since 2.7.0
-        *
-        * @global int $comment_depth
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param int    $depth  Depth of comment.
-        * @param array  $args   Will only append content if style argument value is 'ol' or 'ul'.
-        */
-       public function end_lvl( &$output, $depth = 0, $args = array() ) {
-               $GLOBALS['comment_depth'] = $depth + 1;
-
-               switch ( $args['style'] ) {
-                       case 'div':
-                               break;
-                       case 'ol':
-                               $output .= "</ol><!-- .children -->\n";
-                               break;
-                       case 'ul':
-                       default:
-                               $output .= "</ul><!-- .children -->\n";
-                               break;
-               }
-       }
-
-       /**
-        * Traverse elements to create list from elements.
-        *
-        * This function is designed to enhance Walker::display_element() to
-        * display children of higher nesting levels than selected inline on
-        * the highest depth level displayed. This prevents them being orphaned
-        * at the end of the comment list.
-        *
-        * Example: max_depth = 2, with 5 levels of nested content.
-        * 1
-        *  1.1
-        *    1.1.1
-        *    1.1.1.1
-        *    1.1.1.1.1
-        *    1.1.2
-        *    1.1.2.1
-        * 2
-        *  2.2
-        *
-        * @see Walker::display_element()
-        * @see wp_list_comments()
-        *
-        * @since 2.7.0
-        *
-        * @param object $element           Data object.
-        * @param array  $children_elements List of elements to continue traversing.
-        * @param int    $max_depth         Max depth to traverse.
-        * @param int    $depth             Depth of current element.
-        * @param array  $args              An array of arguments.
-        * @param string $output            Passed by reference. Used to append additional content.
-        */
-       public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) {
-               if ( !$element )
-                       return;
-
-               $id_field = $this->db_fields['id'];
-               $id = $element->$id_field;
-
-               parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output );
-
-               // If we're at the max depth, and the current element still has children, loop over those and display them at this level
-               // This is to prevent them being orphaned to the end of the list.
-               if ( $max_depth <= $depth + 1 && isset( $children_elements[$id]) ) {
-                       foreach ( $children_elements[ $id ] as $child )
-                               $this->display_element( $child, $children_elements, $max_depth, $depth, $args, $output );
-
-                       unset( $children_elements[ $id ] );
-               }
-
-       }
-
-       /**
-        * Start the element output.
-        *
-        * @since 2.7.0
-        *
-        * @see Walker::start_el()
-        * @see wp_list_comments()
-        *
-        * @global int    $comment_depth
-        * @global object $comment
-        *
-        * @param string $output  Passed by reference. Used to append additional content.
-        * @param object $comment Comment data object.
-        * @param int    $depth   Depth of comment in reference to parents.
-        * @param array  $args    An array of arguments.
-        */
-       public function start_el( &$output, $comment, $depth = 0, $args = array(), $id = 0 ) {
-               $depth++;
-               $GLOBALS['comment_depth'] = $depth;
-               $GLOBALS['comment'] = $comment;
-
-               if ( !empty( $args['callback'] ) ) {
-                       ob_start();
-                       call_user_func( $args['callback'], $comment, $args, $depth );
-                       $output .= ob_get_clean();
-                       return;
-               }
-
-               if ( ( 'pingback' == $comment->comment_type || 'trackback' == $comment->comment_type ) && $args['short_ping'] ) {
-                       ob_start();
-                       $this->ping( $comment, $depth, $args );
-                       $output .= ob_get_clean();
-               } elseif ( 'html5' === $args['format'] ) {
-                       ob_start();
-                       $this->html5_comment( $comment, $depth, $args );
-                       $output .= ob_get_clean();
-               } else {
-                       ob_start();
-                       $this->comment( $comment, $depth, $args );
-                       $output .= ob_get_clean();
-               }
-       }
-
-       /**
-        * Ends the element output, if needed.
-        *
-        * @since 2.7.0
-        *
-        * @see Walker::end_el()
-        * @see wp_list_comments()
-        *
-        * @param string $output  Passed by reference. Used to append additional content.
-        * @param object $comment The comment object. Default current comment.
-        * @param int    $depth   Depth of comment.
-        * @param array  $args    An array of arguments.
-        */
-       public function end_el( &$output, $comment, $depth = 0, $args = array() ) {
-               if ( !empty( $args['end-callback'] ) ) {
-                       ob_start();
-                       call_user_func( $args['end-callback'], $comment, $args, $depth );
-                       $output .= ob_get_clean();
-                       return;
-               }
-               if ( 'div' == $args['style'] )
-                       $output .= "</div><!-- #comment-## -->\n";
-               else
-                       $output .= "</li><!-- #comment-## -->\n";
-       }
-
-       /**
-        * Output a pingback comment.
-        *
-        * @access protected
-        * @since 3.6.0
-        *
-        * @see wp_list_comments()
-        *
-        * @param object $comment The comment object.
-        * @param int    $depth   Depth of comment.
-        * @param array  $args    An array of arguments.
-        */
-       protected function ping( $comment, $depth, $args ) {
-               $tag = ( 'div' == $args['style'] ) ? 'div' : 'li';
-?>
-               <<?php echo $tag; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class(); ?>>
-                       <div class="comment-body">
-                               <?php _e( 'Pingback:' ); ?> <?php comment_author_link(); ?> <?php edit_comment_link( __( 'Edit' ), '<span class="edit-link">', '</span>' ); ?>
-                       </div>
-<?php
-       }
-
-       /**
-        * Output a single comment.
-        *
-        * @access protected
-        * @since 3.6.0
-        *
-        * @see wp_list_comments()
-        *
-        * @param object $comment Comment to display.
-        * @param int    $depth   Depth of comment.
-        * @param array  $args    An array of arguments.
-        */
-       protected function comment( $comment, $depth, $args ) {
-               if ( 'div' == $args['style'] ) {
-                       $tag = 'div';
-                       $add_below = 'comment';
-               } else {
-                       $tag = 'li';
-                       $add_below = 'div-comment';
-               }
-?>
-               <<?php echo $tag; ?> <?php comment_class( $this->has_children ? 'parent' : '' ); ?> id="comment-<?php comment_ID(); ?>">
-               <?php if ( 'div' != $args['style'] ) : ?>
-               <div id="div-comment-<?php comment_ID(); ?>" class="comment-body">
-               <?php endif; ?>
-               <div class="comment-author vcard">
-                       <?php if ( 0 != $args['avatar_size'] ) echo get_avatar( $comment, $args['avatar_size'] ); ?>
-                       <?php printf( __( '<cite class="fn">%s</cite> <span class="says">says:</span>' ), get_comment_author_link() ); ?>
-               </div>
-               <?php if ( '0' == $comment->comment_approved ) : ?>
-               <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ) ?></em>
-               <br />
-               <?php endif; ?>
-
-               <div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID, $args ) ); ?>">
-                       <?php
-                               /* translators: 1: date, 2: time */
-                               printf( __( '%1$s at %2$s' ), get_comment_date(),  get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)' ), '&nbsp;&nbsp;', '' );
-                       ?>
-               </div>
-
-               <?php comment_text( get_comment_id(), array_merge( $args, array( 'add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?>
-
-               <?php
-               comment_reply_link( array_merge( $args, array(
-                       'add_below' => $add_below,
-                       'depth'     => $depth,
-                       'max_depth' => $args['max_depth'],
-                       'before'    => '<div class="reply">',
-                       'after'     => '</div>'
-               ) ) );
-               ?>
-
-               <?php if ( 'div' != $args['style'] ) : ?>
-               </div>
-               <?php endif; ?>
-<?php
-       }
-
-       /**
-        * Output a comment in the HTML5 format.
-        *
-        * @access protected
-        * @since 3.6.0
-        *
-        * @see wp_list_comments()
-        *
-        * @param object $comment Comment to display.
-        * @param int    $depth   Depth of comment.
-        * @param array  $args    An array of arguments.
-        */
-       protected function html5_comment( $comment, $depth, $args ) {
-               $tag = ( 'div' === $args['style'] ) ? 'div' : 'li';
-?>
-               <<?php echo $tag; ?> id="comment-<?php comment_ID(); ?>" <?php comment_class( $this->has_children ? 'parent' : '' ); ?>>
-                       <article id="div-comment-<?php comment_ID(); ?>" class="comment-body">
-                               <footer class="comment-meta">
-                                       <div class="comment-author vcard">
-                                               <?php if ( 0 != $args['avatar_size'] ) echo get_avatar( $comment, $args['avatar_size'] ); ?>
-                                               <?php printf( __( '%s <span class="says">says:</span>' ), sprintf( '<b class="fn">%s</b>', get_comment_author_link() ) ); ?>
-                                       </div><!-- .comment-author -->
-
-                                       <div class="comment-metadata">
-                                               <a href="<?php echo esc_url( get_comment_link( $comment->comment_ID, $args ) ); ?>">
-                                                       <time datetime="<?php comment_time( 'c' ); ?>">
-                                                               <?php printf( _x( '%1$s at %2$s', '1: date, 2: time' ), get_comment_date(), get_comment_time() ); ?>
-                                                       </time>
-                                               </a>
-                                               <?php edit_comment_link( __( 'Edit' ), '<span class="edit-link">', '</span>' ); ?>
-                                       </div><!-- .comment-metadata -->
-
-                                       <?php if ( '0' == $comment->comment_approved ) : ?>
-                                       <p class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ); ?></p>
-                                       <?php endif; ?>
-                               </footer><!-- .comment-meta -->
-
-                               <div class="comment-content">
-                                       <?php comment_text(); ?>
-                               </div><!-- .comment-content -->
-
-                               <?php
-                               comment_reply_link( array_merge( $args, array(
-                                       'add_below' => 'div-comment',
-                                       'depth'     => $depth,
-                                       'max_depth' => $args['max_depth'],
-                                       'before'    => '<div class="reply">',
-                                       'after'     => '</div>'
-                               ) ) );
-                               ?>
-                       </article><!-- .comment-body -->
-<?php
-       }
-}
-
 /**
  * List comments.
  *
@@ -2048,7 +1873,7 @@ class Walker_Comment extends Walker {
  *     @type bool   $short_ping        Whether to output short pings. Default false.
  *     @type bool   $echo              Whether to echo the output or return it. Default true.
  * }
- * @param array $comments Optional. Array of comment objects.
+ * @param array $comments Optional. Array of WP_Comment objects.
  */
 function wp_list_comments( $args = array(), $comments = null ) {
        global $wp_query, $comment_alt, $comment_depth, $comment_thread_alt, $overridden_cpage, $in_comment_loop;
@@ -2113,10 +1938,29 @@ function wp_list_comments( $args = array(), $comments = null ) {
                } else {
                        $_comments = $wp_query->comments;
                }
+
+               // Pagination is already handled by `WP_Comment_Query`, so we tell Walker not to bother.
+               if ( $wp_query->max_num_comment_pages ) {
+                       $default_comments_page = get_option( 'default_comments_page' );
+                       $cpage = get_query_var( 'cpage' );
+                       if ( 'newest' === $default_comments_page ) {
+                               $r['cpage'] = $cpage;
+
+                       // When first page shows oldest comments, post permalink is the same as the comment permalink.
+                       } elseif ( $cpage == 1 ) {
+                               $r['cpage'] = '';
+                       } else {
+                               $r['cpage'] = $cpage;
+                       }
+
+                       $r['page'] = 0;
+                       $r['per_page'] = 0;
+               }
        }
 
-       if ( '' === $r['per_page'] && get_option('page_comments') )
+       if ( '' === $r['per_page'] && get_option( 'page_comments' ) ) {
                $r['per_page'] = get_query_var('comments_per_page');
+       }
 
        if ( empty($r['per_page']) ) {
                $r['per_page'] = 0;
@@ -2154,7 +1998,6 @@ function wp_list_comments( $args = array(), $comments = null ) {
        }
 
        $output = $walker->paged_walk( $_comments, $r['max_depth'], $r['page'], $r['per_page'], $r );
-       $wp_query->max_num_comment_pages = $walker->max_pages;
 
        $in_comment_loop = false;
 
@@ -2177,7 +2020,9 @@ function wp_list_comments( $args = array(), $comments = null ) {
  *
  * @since 3.0.0
  * @since 4.1.0 Introduced the 'class_submit' argument.
- * @since 4.2.0 Introduced 'submit_button' and 'submit_fields' arguments.
+ * @since 4.2.0 Introduced the 'submit_button' and 'submit_fields' arguments.
+ * @since 4.4.0 Introduced the 'class_form', 'title_reply_before', 'title_reply_after',
+ *              'cancel_reply_before', and 'cancel_reply_after' arguments.
  *
  * @param array       $args {
  *     Optional. Default arguments and form fields to override.
@@ -2192,16 +2037,24 @@ function wp_list_comments( $args = array(), $comments = null ) {
  *     @type string $comment_field        The comment textarea field HTML.
  *     @type string $must_log_in          HTML element for a 'must be logged in to comment' message.
  *     @type string $logged_in_as         HTML element for a 'logged in as [user]' message.
- *     @type string $comment_notes_before HTML element for a message displayed before the comment form.
+ *     @type string $comment_notes_before HTML element for a message displayed before the comment fields
+ *                                        if the user is not logged in.
  *                                        Default 'Your email address will not be published.'.
- *     @type string $comment_notes_after  HTML element for a message displayed after the comment form.
+ *     @type string $comment_notes_after  HTML element for a message displayed after the textarea field.
  *     @type string $id_form              The comment form element id attribute. Default 'commentform'.
  *     @type string $id_submit            The comment submit element id attribute. Default 'submit'.
+ *     @type string $class_form           The comment form element class attribute. Default 'comment-form'.
  *     @type string $class_submit         The comment submit element class attribute. Default 'submit'.
  *     @type string $name_submit          The comment submit element name attribute. Default 'submit'.
  *     @type string $title_reply          The translatable 'reply' button label. Default 'Leave a Reply'.
  *     @type string $title_reply_to       The translatable 'reply-to' button label. Default 'Leave a Reply to %s',
  *                                        where %s is the author of the comment being replied to.
+ *     @type string $title_reply_before   HTML displayed before the comment form title.
+ *                                        Default: '<h3 id="reply-title" class="comment-reply-title">'.
+ *     @type string $title_reply_after    HTML displayed after the comment form title.
+ *                                        Default: '</h3>'.
+ *     @type string $cancel_reply_before  HTML displayed before the cancel reply link.
+ *     @type string $cancel_reply_after   HTML displayed after the cancel reply link.
  *     @type string $cancel_reply_link    The translatable 'cancel reply' button label. Default 'Cancel reply'.
  *     @type string $label_submit         The translatable 'submit' button label. Default 'Post a comment'.
  *     @type string $submit_button        HTML format for the Submit button.
@@ -2254,15 +2107,20 @@ function comment_form( $args = array(), $post_id = null ) {
                /** This filter is documented in wp-includes/link-template.php */
                'must_log_in'          => '<p class="must-log-in">' . sprintf( __( 'You must be <a href="%s">logged in</a> to post a comment.' ), wp_login_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
                /** This filter is documented in wp-includes/link-template.php */
-               'logged_in_as'         => '<p class="logged-in-as">' . sprintf( __( 'Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>' ), get_edit_user_link(), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
+               'logged_in_as'         => '<p class="logged-in-as">' . sprintf( __( '<a href="%1$s" aria-label="Logged in as %2$s. Edit your profile.">Logged in as %2$s</a>. <a href="%3$s">Log out?</a>' ), get_edit_user_link(), $user_identity, wp_logout_url( apply_filters( 'the_permalink', get_permalink( $post_id ) ) ) ) . '</p>',
                'comment_notes_before' => '<p class="comment-notes"><span id="email-notes">' . __( 'Your email address will not be published.' ) . '</span>'. ( $req ? $required_text : '' ) . '</p>',
                'comment_notes_after'  => '',
                'id_form'              => 'commentform',
                'id_submit'            => 'submit',
+               'class_form'           => 'comment-form',
                'class_submit'         => 'submit',
                'name_submit'          => 'submit',
                'title_reply'          => __( 'Leave a Reply' ),
                'title_reply_to'       => __( 'Leave a Reply to %s' ),
+               'title_reply_before'   => '<h3 id="reply-title" class="comment-reply-title">',
+               'title_reply_after'    => '</h3>',
+               'cancel_reply_before'  => ' <small>',
+               'cancel_reply_after'   => '</small>',
                'cancel_reply_link'    => __( 'Cancel reply' ),
                'label_submit'         => __( 'Post Comment' ),
                'submit_button'        => '<input name="%1$s" type="submit" id="%2$s" class="%3$s" value="%4$s" />',
@@ -2284,170 +2142,209 @@ function comment_form( $args = array(), $post_id = null ) {
        // Ensure that the filtered args contain all required default values.
        $args = array_merge( $defaults, $args );
 
-               if ( comments_open( $post_id ) ) : ?>
+       if ( comments_open( $post_id ) ) : ?>
+               <?php
+               /**
+                * Fires before the comment form.
+                *
+                * @since 3.0.0
+                */
+               do_action( 'comment_form_before' );
+               ?>
+               <div id="respond" class="comment-respond">
                        <?php
-                       /**
-                        * Fires before the comment form.
-                        *
-                        * @since 3.0.0
-                        */
-                       do_action( 'comment_form_before' );
-                       ?>
-                       <div id="respond" class="comment-respond">
-                               <h3 id="reply-title" class="comment-reply-title"><?php comment_form_title( $args['title_reply'], $args['title_reply_to'] ); ?> <small><?php cancel_comment_reply_link( $args['cancel_reply_link'] ); ?></small></h3>
-                               <?php if ( get_option( 'comment_registration' ) && !is_user_logged_in() ) : ?>
-                                       <?php echo $args['must_log_in']; ?>
+                       echo $args['title_reply_before'];
+
+                       comment_form_title( $args['title_reply'], $args['title_reply_to'] );
+
+                       echo $args['cancel_reply_before'];
+
+                       cancel_comment_reply_link( $args['cancel_reply_link'] );
+
+                       echo $args['cancel_reply_after'];
+
+                       echo $args['title_reply_after'];
+
+                       if ( get_option( 'comment_registration' ) && !is_user_logged_in() ) :
+                               echo $args['must_log_in'];
+                               /**
+                                * Fires after the HTML-formatted 'must log in after' message in the comment form.
+                                *
+                                * @since 3.0.0
+                                */
+                               do_action( 'comment_form_must_log_in_after' );
+                       else : ?>
+                               <form action="<?php echo site_url( '/wp-comments-post.php' ); ?>" method="post" id="<?php echo esc_attr( $args['id_form'] ); ?>" class="<?php echo esc_attr( $args['class_form'] ); ?>"<?php echo $html5 ? ' novalidate' : ''; ?>>
                                        <?php
                                        /**
-                                        * Fires after the HTML-formatted 'must log in after' message in the comment form.
+                                        * Fires at the top of the comment form, inside the form tag.
                                         *
                                         * @since 3.0.0
                                         */
-                                       do_action( 'comment_form_must_log_in_after' );
-                                       ?>
-                               <?php else : ?>
-                                       <form action="<?php echo site_url( '/wp-comments-post.php' ); ?>" method="post" id="<?php echo esc_attr( $args['id_form'] ); ?>" class="comment-form"<?php echo $html5 ? ' novalidate' : ''; ?>>
-                                               <?php
+                                       do_action( 'comment_form_top' );
+
+                                       if ( is_user_logged_in() ) :
                                                /**
-                                                * Fires at the top of the comment form, inside the form tag.
+                                                * Filter the 'logged in' message for the comment form for display.
                                                 *
                                                 * @since 3.0.0
+                                                *
+                                                * @param string $args_logged_in The logged-in-as HTML-formatted message.
+                                                * @param array  $commenter      An array containing the comment author's
+                                                *                               username, email, and URL.
+                                                * @param string $user_identity  If the commenter is a registered user,
+                                                *                               the display name, blank otherwise.
                                                 */
-                                               do_action( 'comment_form_top' );
-                                               ?>
-                                               <?php if ( is_user_logged_in() ) : ?>
-                                                       <?php
+                                               echo apply_filters( 'comment_form_logged_in', $args['logged_in_as'], $commenter, $user_identity );
+
+                                               /**
+                                                * Fires after the is_user_logged_in() check in the comment form.
+                                                *
+                                                * @since 3.0.0
+                                                *
+                                                * @param array  $commenter     An array containing the comment author's
+                                                *                              username, email, and URL.
+                                                * @param string $user_identity If the commenter is a registered user,
+                                                *                              the display name, blank otherwise.
+                                                */
+                                               do_action( 'comment_form_logged_in_after', $commenter, $user_identity );
+
+                                       else :
+
+                                               echo $args['comment_notes_before'];
+
+                                       endif;
+
+                                       // Prepare an array of all fields, including the textarea
+                                       $comment_fields = array( 'comment' => $args['comment_field'] ) + (array) $args['fields'];
+
+                                       /**
+                                        * Filter the comment form fields.
+                                        *
+                                        * @since 4.4.0
+                                        *
+                                        * @param array $comment_fields The comment fields.
+                                        */
+                                       $comment_fields = apply_filters( 'comment_form_fields', $comment_fields );
+
+                                       // Get an array of field names, excluding the textarea
+                                       $comment_field_keys = array_diff( array_keys( $comment_fields ), array( 'comment' ) );
+
+                                       // Get the first and the last field name, excluding the textarea
+                                       $first_field = reset( $comment_field_keys );
+                                       $last_field  = end( $comment_field_keys );
+
+                                       foreach ( $comment_fields as $name => $field ) {
+
+                                               if ( 'comment' === $name ) {
+
                                                        /**
-                                                        * Filter the 'logged in' message for the comment form for display.
+                                                        * Filter the content of the comment textarea field for display.
                                                         *
                                                         * @since 3.0.0
                                                         *
-                                                        * @param string $args_logged_in The logged-in-as HTML-formatted message.
-                                                        * @param array  $commenter      An array containing the comment author's
-                                                        *                               username, email, and URL.
-                                                        * @param string $user_identity  If the commenter is a registered user,
-                                                        *                               the display name, blank otherwise.
+                                                        * @param string $args_comment_field The content of the comment textarea field.
                                                         */
-                                                       echo apply_filters( 'comment_form_logged_in', $args['logged_in_as'], $commenter, $user_identity );
-                                                       ?>
-                                                       <?php
+                                                       echo apply_filters( 'comment_form_field_comment', $field );
+
+                                                       echo $args['comment_notes_after'];
+
+                                               } elseif ( ! is_user_logged_in() ) {
+
+                                                       if ( $first_field === $name ) {
+                                                               /**
+                                                                * Fires before the comment fields in the comment form, excluding the textarea.
+                                                                *
+                                                                * @since 3.0.0
+                                                                */
+                                                               do_action( 'comment_form_before_fields' );
+                                                       }
+
                                                        /**
-                                                        * Fires after the is_user_logged_in() check in the comment form.
-                                                        *
-                                                        * @since 3.0.0
+                                                        * Filter a comment form field for display.
                                                         *
-                                                        * @param array  $commenter     An array containing the comment author's
-                                                        *                              username, email, and URL.
-                                                        * @param string $user_identity If the commenter is a registered user,
-                                                        *                              the display name, blank otherwise.
-                                                        */
-                                                       do_action( 'comment_form_logged_in_after', $commenter, $user_identity );
-                                                       ?>
-                                               <?php else : ?>
-                                                       <?php echo $args['comment_notes_before']; ?>
-                                                       <?php
-                                                       /**
-                                                        * Fires before the comment fields in the comment form.
+                                                        * The dynamic portion of the filter hook, `$name`, refers to the name
+                                                        * of the comment form field. Such as 'author', 'email', or 'url'.
                                                         *
                                                         * @since 3.0.0
+                                                        *
+                                                        * @param string $field The HTML-formatted output of the comment form field.
                                                         */
-                                                       do_action( 'comment_form_before_fields' );
-                                                       foreach ( (array) $args['fields'] as $name => $field ) {
+                                                       echo apply_filters( "comment_form_field_{$name}", $field ) . "\n";
+
+                                                       if ( $last_field === $name ) {
                                                                /**
-                                                                * Filter a comment form field for display.
-                                                                *
-                                                                * The dynamic portion of the filter hook, `$name`, refers to the name
-                                                                * of the comment form field. Such as 'author', 'email', or 'url'.
+                                                                * Fires after the comment fields in the comment form, excluding the textarea.
                                                                 *
                                                                 * @since 3.0.0
-                                                                *
-                                                                * @param string $field The HTML-formatted output of the comment form field.
                                                                 */
-                                                               echo apply_filters( "comment_form_field_{$name}", $field ) . "\n";
+                                                               do_action( 'comment_form_after_fields' );
                                                        }
-                                                       /**
-                                                        * Fires after the comment fields in the comment form.
-                                                        *
-                                                        * @since 3.0.0
-                                                        */
-                                                       do_action( 'comment_form_after_fields' );
-                                                       ?>
-                                               <?php endif; ?>
-                                               <?php
-                                               /**
-                                                * Filter the content of the comment textarea field for display.
-                                                *
-                                                * @since 3.0.0
-                                                *
-                                                * @param string $args_comment_field The content of the comment textarea field.
-                                                */
-                                               echo apply_filters( 'comment_form_field_comment', $args['comment_field'] );
-                                               ?>
-                                               <?php echo $args['comment_notes_after']; ?>
-
-                                               <?php
-                                               $submit_button = sprintf(
-                                                       $args['submit_button'],
-                                                       esc_attr( $args['name_submit'] ),
-                                                       esc_attr( $args['id_submit'] ),
-                                                       esc_attr( $args['class_submit'] ),
-                                                       esc_attr( $args['label_submit'] )
-                                               );
+                                               }
+                                       }
 
-                                               /**
-                                                * Filter the submit button for the comment form to display.
-                                                *
-                                                * @since 4.2.0
-                                                *
-                                                * @param string $submit_button HTML markup for the submit button.
-                                                * @param array  $args          Arguments passed to `comment_form()`.
-                                                */
-                                               $submit_button = apply_filters( 'comment_form_submit_button', $submit_button, $args );
+                                       $submit_button = sprintf(
+                                               $args['submit_button'],
+                                               esc_attr( $args['name_submit'] ),
+                                               esc_attr( $args['id_submit'] ),
+                                               esc_attr( $args['class_submit'] ),
+                                               esc_attr( $args['label_submit'] )
+                                       );
 
-                                               $submit_field = sprintf(
-                                                       $args['submit_field'],
-                                                       $submit_button,
-                                                       get_comment_id_fields( $post_id )
-                                               );
+                                       /**
+                                        * Filter the submit button for the comment form to display.
+                                        *
+                                        * @since 4.2.0
+                                        *
+                                        * @param string $submit_button HTML markup for the submit button.
+                                        * @param array  $args          Arguments passed to `comment_form()`.
+                                        */
+                                       $submit_button = apply_filters( 'comment_form_submit_button', $submit_button, $args );
 
-                                               /**
-                                                * Filter the submit field for the comment form to display.
-                                                *
-                                                * The submit field includes the submit button, hidden fields for the
-                                                * comment form, and any wrapper markup.
-                                                *
-                                                * @since 4.2.0
-                                                *
-                                                * @param string $submit_field HTML markup for the submit field.
-                                                * @param array  $args         Arguments passed to comment_form().
-                                                */
-                                               echo apply_filters( 'comment_form_submit_field', $submit_field, $args );
+                                       $submit_field = sprintf(
+                                               $args['submit_field'],
+                                               $submit_button,
+                                               get_comment_id_fields( $post_id )
+                                       );
 
-                                               /**
-                                                * Fires at the bottom of the comment form, inside the closing </form> tag.
-                                                *
-                                                * @since 1.5.0
-                                                *
-                                                * @param int $post_id The post ID.
-                                                */
-                                               do_action( 'comment_form', $post_id );
-                                               ?>
-                                       </form>
-                               <?php endif; ?>
-                       </div><!-- #respond -->
-                       <?php
-                       /**
-                        * Fires after the comment form.
-                        *
-                        * @since 3.0.0
-                        */
-                       do_action( 'comment_form_after' );
-               else :
-                       /**
-                        * Fires after the comment form if comments are closed.
-                        *
-                        * @since 3.0.0
-                        */
-                       do_action( 'comment_form_comments_closed' );
-               endif;
+                                       /**
+                                        * Filter the submit field for the comment form to display.
+                                        *
+                                        * The submit field includes the submit button, hidden fields for the
+                                        * comment form, and any wrapper markup.
+                                        *
+                                        * @since 4.2.0
+                                        *
+                                        * @param string $submit_field HTML markup for the submit field.
+                                        * @param array  $args         Arguments passed to comment_form().
+                                        */
+                                       echo apply_filters( 'comment_form_submit_field', $submit_field, $args );
+
+                                       /**
+                                        * Fires at the bottom of the comment form, inside the closing </form> tag.
+                                        *
+                                        * @since 1.5.0
+                                        *
+                                        * @param int $post_id The post ID.
+                                        */
+                                       do_action( 'comment_form', $post_id );
+                                       ?>
+                               </form>
+                       <?php endif; ?>
+               </div><!-- #respond -->
+               <?php
+               /**
+                * Fires after the comment form.
+                *
+                * @since 3.0.0
+                */
+               do_action( 'comment_form_after' );
+       else :
+               /**
+                * Fires after the comment form if comments are closed.
+                *
+                * @since 3.0.0
+                */
+               do_action( 'comment_form_comments_closed' );
+       endif;
 }
index 88b7fbb65afdbcfae9a71117b72b0fa71f559fc2..5de9531322a600c77fb17f5300217d79bb82c53c 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Manages WordPress comments
+ * Core Comment API
  *
  * @package WordPress
  * @subpackage Comment
@@ -161,33 +161,27 @@ function get_approved_comments( $post_id, $args = array() ) {
  *
  * @since 2.0.0
  *
- * @global wpdb   $wpdb WordPress database abstraction object.
- * @global object $comment
+ * @global WP_Comment $comment
  *
- * @param object|string|int $comment Comment to retrieve.
+ * @param WP_Comment|string|int $comment Comment to retrieve.
  * @param string $output Optional. OBJECT or ARRAY_A or ARRAY_N constants.
- * @return object|array|null Depends on $output value.
+ * @return WP_Comment|array|null Depends on $output value.
  */
-function get_comment(&$comment, $output = OBJECT) {
-       global $wpdb;
+function get_comment( &$comment = null, $output = OBJECT ) {
+       if ( empty( $comment ) && isset( $GLOBALS['comment'] ) ) {
+               $comment = $GLOBALS['comment'];
+       }
 
-       if ( empty($comment) ) {
-               if ( isset($GLOBALS['comment']) )
-                       $_comment = & $GLOBALS['comment'];
-               else
-                       $_comment = null;
-       } elseif ( is_object($comment) ) {
-               wp_cache_add($comment->comment_ID, $comment, 'comment');
+       if ( $comment instanceof WP_Comment ) {
                $_comment = $comment;
+       } elseif ( is_object( $comment ) ) {
+               $_comment = new WP_Comment( $comment );
        } else {
-               if ( isset($GLOBALS['comment']) && ($GLOBALS['comment']->comment_ID == $comment) ) {
-                       $_comment = & $GLOBALS['comment'];
-               } elseif ( ! $_comment = wp_cache_get($comment, 'comment') ) {
-                       $_comment = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->comments WHERE comment_ID = %d LIMIT 1", $comment));
-                       if ( ! $_comment )
-                               return null;
-                       wp_cache_add($_comment->comment_ID, $_comment, 'comment');
-               }
+               $_comment = WP_Comment::get_instance( $comment );
+       }
+
+       if ( ! $_comment ) {
+               return null;
        }
 
        /**
@@ -202,14 +196,11 @@ function get_comment(&$comment, $output = OBJECT) {
        if ( $output == OBJECT ) {
                return $_comment;
        } elseif ( $output == ARRAY_A ) {
-               $__comment = get_object_vars($_comment);
-               return $__comment;
+               return $_comment->to_array();
        } elseif ( $output == ARRAY_N ) {
-               $__comment = array_values(get_object_vars($_comment));
-               return $__comment;
-       } else {
-               return $_comment;
+               return array_values( $_comment->to_array() );
        }
+       return $_comment;
 }
 
 /**
@@ -228,789 +219,6 @@ function get_comments( $args = '' ) {
        return $query->query( $args );
 }
 
-/**
- * WordPress Comment Query class.
- *
- * See WP_Comment_Query::__construct() for accepted arguments.
- *
- * @since 3.1.0
- */
-class WP_Comment_Query {
-       /**
-        * SQL for database query.
-        *
-        * @since 4.0.1
-        * @access public
-        * @var string
-        */
-       public $request;
-
-       /**
-        * Metadata query container
-        *
-        * @since 3.5.0
-        * @access public
-        * @var object WP_Meta_Query
-        */
-       public $meta_query = false;
-
-       /**
-        * Date query container
-        *
-        * @since 3.7.0
-        * @access public
-        * @var object WP_Date_Query
-        */
-       public $date_query = false;
-
-       /**
-        * Query vars set by the user.
-        *
-        * @since 3.1.0
-        * @access public
-        * @var array
-        */
-       public $query_vars;
-
-       /**
-        * Default values for query vars.
-        *
-        * @since 4.2.0
-        * @access public
-        * @var array
-        */
-       public $query_var_defaults;
-
-       /**
-        * List of comments located by the query.
-        *
-        * @since 4.0.0
-        * @access public
-        * @var array
-        */
-       public $comments;
-
-       /**
-        * Make private/protected methods readable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param callable $name      Method to call.
-        * @param array    $arguments Arguments to pass when calling.
-        * @return mixed|false Return value of the callback, false otherwise.
-        */
-       public function __call( $name, $arguments ) {
-               if ( 'get_search_sql' === $name ) {
-                       return call_user_func_array( array( $this, $name ), $arguments );
-               }
-               return false;
-       }
-
-       /**
-        * Constructor.
-        *
-        * Sets up the comment query, based on the query vars passed.
-        *
-        * @since  4.2.0
-        * @access public
-        *
-        * @param string|array $query {
-        *     Optional. Array or query string of comment query parameters. Default empty.
-        *
-        *     @type string       $author_email        Comment author email address. Default empty.
-        *     @type array        $author__in          Array of author IDs to include comments for. Default empty.
-        *     @type array        $author__not_in      Array of author IDs to exclude comments for. Default empty.
-        *     @type array        $comment__in         Array of comment IDs to include. Default empty.
-        *     @type array        $comment__not_in     Array of comment IDs to exclude. Default empty.
-        *     @type bool         $count               Whether to return a comment count (true) or array of comment
-        *                                             objects (false). Default false.
-        *     @type array        $date_query          Date query clauses to limit comments by. See WP_Date_Query.
-        *                                             Default null.
-        *     @type string       $fields              Comment fields to return. Accepts 'ids' for comment IDs only or
-        *                                             empty for all fields. Default empty.
-        *     @type int          $ID                  Currently unused.
-        *     @type array        $include_unapproved  Array of IDs or email addresses of users whose unapproved comments
-        *                                             will be returned by the query regardless of `$status`. Default empty.
-        *     @type int          $karma               Karma score to retrieve matching comments for. Default empty.
-        *     @type string       $meta_key            Include comments with a matching comment meta key. Default empty.
-        *     @type string       $meta_value          Include comments with a matching comment meta value. Requires
-        *                                             `$meta_key` to be set. Default empty.
-        *     @type array        $meta_query          Meta query clauses to limit retrieved comments by.
-        *                                             See WP_Meta_Query. Default empty.
-        *     @type int          $number              Maximum number of comments to retrieve. Default null (no limit).
-        *     @type int          $offset              Number of comments to offset the query. Used to build LIMIT clause.
-        *                                             Default 0.
-        *     @type string|array $orderby             Comment status or array of statuses. To use 'meta_value' or
-        *                                             'meta_value_num', `$meta_key` must also be defined. To sort by
-        *                                             a specific `$meta_query` clause, use that clause's array key.
-        *                                             Accepts 'comment_agent', 'comment_approved', 'comment_author',
-        *                                             'comment_author_email', 'comment_author_IP',
-        *                                             'comment_author_url', 'comment_content', 'comment_date',
-        *                                             'comment_date_gmt', 'comment_ID', 'comment_karma',
-        *                                             'comment_parent', 'comment_post_ID', 'comment_type', 'user_id',
-        *                                             'meta_value', 'meta_value_num', the value of $meta_key, and the
-        *                                             array keys of `$meta_query`. Also accepts false, an empty array,
-        *                                             or 'none' to disable `ORDER BY` clause.
-        *                                             Default: 'comment_date_gmt'.
-        *     @type string       $order               How to order retrieved comments. Accepts 'ASC', 'DESC'.
-        *                                             Default: 'DESC'.
-        *     @type int          $parent              Parent ID of comment to retrieve children of. Default empty.
-        *     @type array        $post_author__in     Array of author IDs to retrieve comments for. Default empty.
-        *     @type array        $post_author__not_in Array of author IDs *not* to retrieve comments for. Default empty.
-        *     @type int          $post_ID             Currently unused.
-        *     @type int          $post_id             Limit results to those affiliated with a given post ID. Default 0.
-        *     @type array        $post__in            Array of post IDs to include affiliated comments for. Default empty.
-        *     @type array        $post__not_in        Array of post IDs to exclude affiliated comments for. Default empty.
-        *     @type int          $post_author         Comment author ID to limit results by. Default empty.
-        *     @type string       $post_status         Post status to retrieve affiliated comments for. Default empty.
-        *     @type string       $post_type           Post type to retrieve affiliated comments for. Default empty.
-        *     @type string       $post_name           Post name to retrieve affiliated comments for. Default empty.
-        *     @type int          $post_parent         Post parent ID to retrieve affiliated comments for. Default empty.
-        *     @type string       $search              Search term(s) to retrieve matching comments for. Default empty.
-        *     @type string       $status              Comment status to limit results by. Accepts 'hold'
-        *                                             (`comment_status=0`), 'approve' (`comment_status=1`), 'all', or a
-        *                                             custom comment status. Default 'all'.
-        *     @type string|array $type                Include comments of a given type, or array of types. Accepts
-        *                                             'comment', 'pings' (includes 'pingback' and 'trackback'), or any
-        *                                             custom type string. Default empty.
-        *     @type array        $type__in            Include comments from a given array of comment types. Default empty.
-        *     @type array        $type__not_in        Exclude comments from a given array of comment types. Default empty.
-        *     @type int          $user_id             Include comments for a specific user ID. Default empty.
-        * }
-        */
-       public function __construct( $query = '' ) {
-               $this->query_var_defaults = array(
-                       'author_email' => '',
-                       'author__in' => '',
-                       'author__not_in' => '',
-                       'include_unapproved' => '',
-                       'fields' => '',
-                       'ID' => '',
-                       'comment__in' => '',
-                       'comment__not_in' => '',
-                       'karma' => '',
-                       'number' => '',
-                       'offset' => '',
-                       'orderby' => '',
-                       'order' => 'DESC',
-                       'parent' => '',
-                       'post_author__in' => '',
-                       'post_author__not_in' => '',
-                       'post_ID' => '',
-                       'post_id' => 0,
-                       'post__in' => '',
-                       'post__not_in' => '',
-                       'post_author' => '',
-                       'post_name' => '',
-                       'post_parent' => '',
-                       'post_status' => '',
-                       'post_type' => '',
-                       'status' => 'all',
-                       'type' => '',
-                       'type__in' => '',
-                       'type__not_in' => '',
-                       'user_id' => '',
-                       'search' => '',
-                       'count' => false,
-                       'meta_key' => '',
-                       'meta_value' => '',
-                       'meta_query' => '',
-                       'date_query' => null, // See WP_Date_Query
-               );
-
-               if ( ! empty( $query ) ) {
-                       $this->query( $query );
-               }
-       }
-
-       /**
-        * Parse arguments passed to the comment query with default query parameters.
-        *
-        * @since  4.2.0 Extracted from WP_Comment_Query::query().
-        *
-        * @access public
-        *
-        * @param string|array $query WP_Comment_Query arguments. See WP_Comment_Query::__construct()
-        */
-       public function parse_query( $query = '' ) {
-               if ( empty( $query ) ) {
-                       $query = $this->query_vars;
-               }
-
-               $this->query_vars = wp_parse_args( $query, $this->query_var_defaults );
-               do_action_ref_array( 'parse_comment_query', array( &$this ) );
-       }
-
-       /**
-        * Sets up the WordPress query for retrieving comments.
-        *
-        * @since 3.1.0
-        * @since 4.1.0 Introduced 'comment__in', 'comment__not_in', 'post_author__in',
-        *              'post_author__not_in', 'author__in', 'author__not_in', 'post__in',
-        *              'post__not_in', 'include_unapproved', 'type__in', and 'type__not_in'
-        *              arguments to $query_vars.
-        * @since 4.2.0 Moved parsing to WP_Comment_Query::parse_query().
-        * @access public
-        *
-        * @param string|array $query Array or URL query string of parameters.
-        * @return array|int List of comments, or number of comments when 'count' is passed as a query var.
-        */
-       public function query( $query ) {
-               $this->query_vars = wp_parse_args( $query );
-               return $this->get_comments();
-       }
-
-       /**
-        * Get a list of comments matching the query vars.
-        *
-        * @since 4.2.0
-        * @access public
-        *
-        * @global wpdb $wpdb WordPress database abstraction object.
-        *
-        * @return int|array The list of comments.
-        */
-       public function get_comments() {
-               global $wpdb;
-
-               $groupby = '';
-
-               $this->parse_query();
-
-               // Parse meta query
-               $this->meta_query = new WP_Meta_Query();
-               $this->meta_query->parse_query_vars( $this->query_vars );
-
-               /**
-                * Fires before comments are retrieved.
-                *
-                * @since 3.1.0
-                *
-                * @param WP_Comment_Query &$this Current instance of WP_Comment_Query, passed by reference.
-                */
-               do_action_ref_array( 'pre_get_comments', array( &$this ) );
-
-               // Reparse query vars, in case they were modified in a 'pre_get_comments' callback.
-               $this->meta_query->parse_query_vars( $this->query_vars );
-               if ( ! empty( $this->meta_query->queries ) ) {
-                       $meta_query_clauses = $this->meta_query->get_sql( 'comment', $wpdb->comments, 'comment_ID', $this );
-               }
-
-               // $args can include anything. Only use the args defined in the query_var_defaults to compute the key.
-               $key = md5( serialize( wp_array_slice_assoc( $this->query_vars, array_keys( $this->query_var_defaults ) ) ) );
-               $last_changed = wp_cache_get( 'last_changed', 'comment' );
-               if ( ! $last_changed ) {
-                       $last_changed = microtime();
-                       wp_cache_set( 'last_changed', $last_changed, 'comment' );
-               }
-               $cache_key = "get_comments:$key:$last_changed";
-
-               if ( $cache = wp_cache_get( $cache_key, 'comment' ) ) {
-                       $this->comments = $cache;
-                       return $this->comments;
-               }
-
-               $where = array();
-
-               // Assemble clauses related to 'comment_approved'.
-               $approved_clauses = array();
-
-               // 'status' accepts an array or a comma-separated string.
-               $status_clauses = array();
-               $statuses = $this->query_vars['status'];
-               if ( ! is_array( $statuses ) ) {
-                       $statuses = preg_split( '/[\s,]+/', $statuses );
-               }
-
-               // 'any' overrides other statuses.
-               if ( ! in_array( 'any', $statuses ) ) {
-                       foreach ( $statuses as $status ) {
-                               switch ( $status ) {
-                                       case 'hold' :
-                                               $status_clauses[] = "comment_approved = '0'";
-                                               break;
-
-                                       case 'approve' :
-                                               $status_clauses[] = "comment_approved = '1'";
-                                               break;
-
-                                       case 'all' :
-                                       case '' :
-                                               $status_clauses[] = "( comment_approved = '0' OR comment_approved = '1' )";
-                                               break;
-
-                                       default :
-                                               $status_clauses[] = $wpdb->prepare( "comment_approved = %s", $status );
-                                               break;
-                               }
-                       }
-
-                       if ( ! empty( $status_clauses ) ) {
-                               $approved_clauses[] = '( ' . implode( ' OR ', $status_clauses ) . ' )';
-                       }
-               }
-
-               // User IDs or emails whose unapproved comments are included, regardless of $status.
-               if ( ! empty( $this->query_vars['include_unapproved'] ) ) {
-                       $include_unapproved = $this->query_vars['include_unapproved'];
-
-                       // Accepts arrays or comma-separated strings.
-                       if ( ! is_array( $include_unapproved ) ) {
-                               $include_unapproved = preg_split( '/[\s,]+/', $include_unapproved );
-                       }
-
-                       $unapproved_ids = $unapproved_emails = array();
-                       foreach ( $include_unapproved as $unapproved_identifier ) {
-                               // Numeric values are assumed to be user ids.
-                               if ( is_numeric( $unapproved_identifier ) ) {
-                                       $approved_clauses[] = $wpdb->prepare( "( user_id = %d AND comment_approved = '0' )", $unapproved_identifier );
-
-                               // Otherwise we match against email addresses.
-                               } else {
-                                       $approved_clauses[] = $wpdb->prepare( "( comment_author_email = %s AND comment_approved = '0' )", $unapproved_identifier );
-                               }
-                       }
-               }
-
-               // Collapse comment_approved clauses into a single OR-separated clause.
-               if ( ! empty( $approved_clauses ) ) {
-                       if ( 1 === count( $approved_clauses ) ) {
-                               $where[] = $approved_clauses[0];
-                       } else {
-                               $where[] = '( ' . implode( ' OR ', $approved_clauses ) . ' )';
-                       }
-               }
-
-               $order = ( 'ASC' == strtoupper( $this->query_vars['order'] ) ) ? 'ASC' : 'DESC';
-
-               // Disable ORDER BY with 'none', an empty array, or boolean false.
-               if ( in_array( $this->query_vars['orderby'], array( 'none', array(), false ), true ) ) {
-                       $orderby = '';
-               } elseif ( ! empty( $this->query_vars['orderby'] ) ) {
-                       $ordersby = is_array( $this->query_vars['orderby'] ) ?
-                               $this->query_vars['orderby'] :
-                               preg_split( '/[,\s]/', $this->query_vars['orderby'] );
-
-                       $orderby_array = array();
-                       $found_orderby_comment_ID = false;
-                       foreach ( $ordersby as $_key => $_value ) {
-                               if ( ! $_value ) {
-                                       continue;
-                               }
-
-                               if ( is_int( $_key ) ) {
-                                       $_orderby = $_value;
-                                       $_order = $order;
-                               } else {
-                                       $_orderby = $_key;
-                                       $_order = $_value;
-                               }
-
-                               if ( ! $found_orderby_comment_ID && 'comment_ID' === $_orderby ) {
-                                       $found_orderby_comment_ID = true;
-                               }
-
-                               $parsed = $this->parse_orderby( $_orderby );
-
-                               if ( ! $parsed ) {
-                                       continue;
-                               }
-
-                               $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
-                       }
-
-                       // If no valid clauses were found, order by comment_date_gmt.
-                       if ( empty( $orderby_array ) ) {
-                               $orderby_array[] = "$wpdb->comments.comment_date_gmt $order";
-                       }
-
-                       // To ensure determinate sorting, always include a comment_ID clause.
-                       if ( ! $found_orderby_comment_ID ) {
-                               $comment_ID_order = '';
-
-                               // Inherit order from comment_date or comment_date_gmt, if available.
-                               foreach ( $orderby_array as $orderby_clause ) {
-                                       if ( preg_match( '/comment_date(?:_gmt)*\ (ASC|DESC)/', $orderby_clause, $match ) ) {
-                                               $comment_ID_order = $match[1];
-                                               break;
-                                       }
-                               }
-
-                               // If no date-related order is available, use the date from the first available clause.
-                               if ( ! $comment_ID_order ) {
-                                       foreach ( $orderby_array as $orderby_clause ) {
-                                               if ( false !== strpos( 'ASC', $orderby_clause ) ) {
-                                                       $comment_ID_order = 'ASC';
-                                               } else {
-                                                       $comment_ID_order = 'DESC';
-                                               }
-
-                                               break;
-                                       }
-                               }
-
-                               // Default to DESC.
-                               if ( ! $comment_ID_order ) {
-                                       $comment_ID_order = 'DESC';
-                               }
-
-                               $orderby_array[] = "$wpdb->comments.comment_ID $comment_ID_order";
-                       }
-
-                       $orderby = implode( ', ', $orderby_array );
-               } else {
-                       $orderby = "$wpdb->comments.comment_date_gmt $order";
-               }
-
-               $number = absint( $this->query_vars['number'] );
-               $offset = absint( $this->query_vars['offset'] );
-
-               if ( ! empty( $number ) ) {
-                       if ( $offset ) {
-                               $limits = 'LIMIT ' . $offset . ',' . $number;
-                       } else {
-                               $limits = 'LIMIT ' . $number;
-                       }
-               } else {
-                       $limits = '';
-               }
-
-               if ( $this->query_vars['count'] ) {
-                       $fields = 'COUNT(*)';
-               } else {
-                       switch ( strtolower( $this->query_vars['fields'] ) ) {
-                               case 'ids':
-                                       $fields = "$wpdb->comments.comment_ID";
-                                       break;
-                               default:
-                                       $fields = "*";
-                                       break;
-                       }
-               }
-
-               $join = '';
-
-               $post_id = absint( $this->query_vars['post_id'] );
-               if ( ! empty( $post_id ) ) {
-                       $where[] = $wpdb->prepare( 'comment_post_ID = %d', $post_id );
-               }
-
-               // Parse comment IDs for an IN clause.
-               if ( ! empty( $this->query_vars['comment__in'] ) ) {
-                       $where[] = "$wpdb->comments.comment_ID IN ( " . implode( ',', wp_parse_id_list( $this->query_vars['comment__in'] ) ) . ' )';
-               }
-
-               // Parse comment IDs for a NOT IN clause.
-               if ( ! empty( $this->query_vars['comment__not_in'] ) ) {
-                       $where[] = "$wpdb->comments.comment_ID NOT IN ( " . implode( ',', wp_parse_id_list( $this->query_vars['comment__not_in'] ) ) . ' )';
-               }
-
-               // Parse comment post IDs for an IN clause.
-               if ( ! empty( $this->query_vars['post__in'] ) ) {
-                       $where[] = 'comment_post_ID IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post__in'] ) ) . ' )';
-               }
-
-               // Parse comment post IDs for a NOT IN clause.
-               if ( ! empty( $this->query_vars['post__not_in'] ) ) {
-                       $where[] = 'comment_post_ID NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post__not_in'] ) ) . ' )';
-               }
-
-               if ( '' !== $this->query_vars['author_email'] ) {
-                       $where[] = $wpdb->prepare( 'comment_author_email = %s', $this->query_vars['author_email'] );
-               }
-
-               if ( '' !== $this->query_vars['karma'] ) {
-                       $where[] = $wpdb->prepare( 'comment_karma = %d', $this->query_vars['karma'] );
-               }
-
-               // Filtering by comment_type: 'type', 'type__in', 'type__not_in'.
-               $raw_types = array(
-                       'IN' => array_merge( (array) $this->query_vars['type'], (array) $this->query_vars['type__in'] ),
-                       'NOT IN' => (array) $this->query_vars['type__not_in'],
-               );
-
-               $comment_types = array();
-               foreach ( $raw_types as $operator => $_raw_types ) {
-                       $_raw_types = array_unique( $_raw_types );
-
-                       foreach ( $_raw_types as $type ) {
-                               switch ( $type ) {
-                                       // An empty translates to 'all', for backward compatibility
-                                       case '':
-                                       case 'all' :
-                                               break;
-
-                                       case 'comment':
-                                       case 'comments':
-                                               $comment_types[ $operator ][] = "''";
-                                               break;
-
-                                       case 'pings':
-                                               $comment_types[ $operator ][] = "'pingback'";
-                                               $comment_types[ $operator ][] = "'trackback'";
-                                               break;
-
-                                       default:
-                                               $comment_types[ $operator ][] = $wpdb->prepare( '%s', $type );
-                                               break;
-                               }
-                       }
-
-                       if ( ! empty( $comment_types[ $operator ] ) ) {
-                               $types_sql = implode( ', ', $comment_types[ $operator ] );
-                               $where[] = "comment_type $operator ($types_sql)";
-                       }
-               }
-
-               if ( '' !== $this->query_vars['parent'] ) {
-                       $where[] = $wpdb->prepare( 'comment_parent = %d', $this->query_vars['parent'] );
-               }
-
-               if ( is_array( $this->query_vars['user_id'] ) ) {
-                       $where[] = 'user_id IN (' . implode( ',', array_map( 'absint', $this->query_vars['user_id'] ) ) . ')';
-               } elseif ( '' !== $this->query_vars['user_id'] ) {
-                       $where[] = $wpdb->prepare( 'user_id = %d', $this->query_vars['user_id'] );
-               }
-
-               if ( '' !== $this->query_vars['search'] ) {
-                       $search_sql = $this->get_search_sql(
-                               $this->query_vars['search'],
-                               array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_author_IP', 'comment_content' )
-                       );
-
-                       // Strip leading 'AND'.
-                       $where[] = preg_replace( '/^\s*AND\s*/', '', $search_sql );
-               }
-
-               // If any post-related query vars are passed, join the posts table.
-               $join_posts_table = false;
-               $plucked = wp_array_slice_assoc( $this->query_vars, array( 'post_author', 'post_name', 'post_parent', 'post_status', 'post_type' ) );
-               $post_fields = array_filter( $plucked );
-
-               if ( ! empty( $post_fields ) ) {
-                       $join_posts_table = true;
-                       foreach ( $post_fields as $field_name => $field_value ) {
-                               // $field_value may be an array.
-                               $esses = array_fill( 0, count( (array) $field_value ), '%s' );
-                               $where[] = $wpdb->prepare( " {$wpdb->posts}.{$field_name} IN (" . implode( ',', $esses ) . ')', $field_value );
-                       }
-               }
-
-               // Comment author IDs for an IN clause.
-               if ( ! empty( $this->query_vars['author__in'] ) ) {
-                       $where[] = 'user_id IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['author__in'] ) ) . ' )';
-               }
-
-               // Comment author IDs for a NOT IN clause.
-               if ( ! empty( $this->query_vars['author__not_in'] ) ) {
-                       $where[] = 'user_id NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['author__not_in'] ) ) . ' )';
-               }
-
-               // Post author IDs for an IN clause.
-               if ( ! empty( $this->query_vars['post_author__in'] ) ) {
-                       $join_posts_table = true;
-                       $where[] = 'post_author IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post_author__in'] ) ) . ' )';
-               }
-
-               // Post author IDs for a NOT IN clause.
-               if ( ! empty( $this->query_vars['post_author__not_in'] ) ) {
-                       $join_posts_table = true;
-                       $where[] = 'post_author NOT IN ( ' . implode( ',', wp_parse_id_list( $this->query_vars['post_author__not_in'] ) ) . ' )';
-               }
-
-               if ( $join_posts_table ) {
-                       $join = "JOIN $wpdb->posts ON $wpdb->posts.ID = $wpdb->comments.comment_post_ID";
-               }
-
-               if ( ! empty( $meta_query_clauses ) ) {
-                       $join .= $meta_query_clauses['join'];
-
-                       // Strip leading 'AND'.
-                       $where[] = preg_replace( '/^\s*AND\s*/', '', $meta_query_clauses['where'] );
-
-                       if ( ! $this->query_vars['count'] ) {
-                               $groupby = "{$wpdb->comments}.comment_ID";
-                       }
-               }
-
-               $date_query = $this->query_vars['date_query'];
-               if ( ! empty( $date_query ) && is_array( $date_query ) ) {
-                       $date_query_object = new WP_Date_Query( $date_query, 'comment_date' );
-                       $where[] = preg_replace( '/^\s*AND\s*/', '', $date_query_object->get_sql() );
-               }
-
-               $where = implode( ' AND ', $where );
-
-               $pieces = array( 'fields', 'join', 'where', 'orderby', 'limits', 'groupby' );
-               /**
-                * Filter the comment query clauses.
-                *
-                * @since 3.1.0
-                *
-                * @param array            $pieces A compacted array of comment query clauses.
-                * @param WP_Comment_Query &$this  Current instance of WP_Comment_Query, passed by reference.
-                */
-               $clauses = apply_filters_ref_array( 'comments_clauses', array( compact( $pieces ), &$this ) );
-
-               $fields = isset( $clauses[ 'fields' ] ) ? $clauses[ 'fields' ] : '';
-               $join = isset( $clauses[ 'join' ] ) ? $clauses[ 'join' ] : '';
-               $where = isset( $clauses[ 'where' ] ) ? $clauses[ 'where' ] : '';
-               $orderby = isset( $clauses[ 'orderby' ] ) ? $clauses[ 'orderby' ] : '';
-               $limits = isset( $clauses[ 'limits' ] ) ? $clauses[ 'limits' ] : '';
-               $groupby = isset( $clauses[ 'groupby' ] ) ? $clauses[ 'groupby' ] : '';
-
-               if ( $where ) {
-                       $where = 'WHERE ' . $where;
-               }
-
-               if ( $groupby ) {
-                       $groupby = 'GROUP BY ' . $groupby;
-               }
-
-               if ( $orderby ) {
-                       $orderby = "ORDER BY $orderby";
-               }
-
-               $this->request = "SELECT $fields FROM $wpdb->comments $join $where $groupby $orderby $limits";
-
-               if ( $this->query_vars['count'] ) {
-                       return $wpdb->get_var( $this->request );
-               }
-
-               if ( 'ids' == $this->query_vars['fields'] ) {
-                       $this->comments = $wpdb->get_col( $this->request );
-                       return array_map( 'intval', $this->comments );
-               }
-
-               $results = $wpdb->get_results( $this->request );
-               /**
-                * Filter the comment query results.
-                *
-                * @since 3.1.0
-                *
-                * @param array            $results  An array of comments.
-                * @param WP_Comment_Query &$this    Current instance of WP_Comment_Query, passed by reference.
-                */
-               $comments = apply_filters_ref_array( 'the_comments', array( $results, &$this ) );
-
-               wp_cache_add( $cache_key, $comments, 'comment' );
-               if ( '*' === $fields ) {
-                       update_comment_cache( $comments );
-               }
-
-               $this->comments = $comments;
-               return $this->comments;
-       }
-
-       /**
-        * Used internally to generate an SQL string for searching across multiple columns
-        *
-        * @since 3.1.0
-        * @access protected
-        *
-        * @global wpdb $wpdb
-        *
-        * @param string $string
-        * @param array $cols
-        * @return string
-        */
-       protected function get_search_sql( $string, $cols ) {
-               global $wpdb;
-
-               $like = '%' . $wpdb->esc_like( $string ) . '%';
-
-               $searches = array();
-               foreach ( $cols as $col ) {
-                       $searches[] = $wpdb->prepare( "$col LIKE %s", $like );
-               }
-
-               return ' AND (' . implode(' OR ', $searches) . ')';
-       }
-
-       /**
-        * Parse and sanitize 'orderby' keys passed to the comment query.
-        *
-        * @since 4.2.0
-        * @access protected
-        *
-        * @global wpdb $wpdb WordPress database abstraction object.
-        *
-        * @param string $orderby Alias for the field to order by.
-        * @return string|false Value to used in the ORDER clause. False otherwise.
-        */
-       protected function parse_orderby( $orderby ) {
-               global $wpdb;
-
-               $allowed_keys = array(
-                       'comment_agent',
-                       'comment_approved',
-                       'comment_author',
-                       'comment_author_email',
-                       'comment_author_IP',
-                       'comment_author_url',
-                       'comment_content',
-                       'comment_date',
-                       'comment_date_gmt',
-                       'comment_ID',
-                       'comment_karma',
-                       'comment_parent',
-                       'comment_post_ID',
-                       'comment_type',
-                       'user_id',
-               );
-
-               if ( ! empty( $this->query_vars['meta_key'] ) ) {
-                       $allowed_keys[] = $this->query_vars['meta_key'];
-                       $allowed_keys[] = 'meta_value';
-                       $allowed_keys[] = 'meta_value_num';
-               }
-
-               $meta_query_clauses = $this->meta_query->get_clauses();
-               if ( $meta_query_clauses ) {
-                       $allowed_keys = array_merge( $allowed_keys, array_keys( $meta_query_clauses ) );
-               }
-
-               $parsed = false;
-               if ( $orderby == $this->query_vars['meta_key'] || $orderby == 'meta_value' ) {
-                       $parsed = "$wpdb->commentmeta.meta_value";
-               } elseif ( $orderby == 'meta_value_num' ) {
-                       $parsed = "$wpdb->commentmeta.meta_value+0";
-               } elseif ( in_array( $orderby, $allowed_keys ) ) {
-
-                       if ( isset( $meta_query_clauses[ $orderby ] ) ) {
-                               $meta_clause = $meta_query_clauses[ $orderby ];
-                               $parsed = sprintf( "CAST(%s.meta_value AS %s)", esc_sql( $meta_clause['alias'] ), esc_sql( $meta_clause['cast'] ) );
-                       } else {
-                               $parsed = "$wpdb->comments.$orderby";
-                       }
-               }
-
-               return $parsed;
-       }
-
-       /**
-        * Parse an 'order' query variable and cast it to ASC or DESC as necessary.
-        *
-        * @since 4.2.0
-        * @access protected
-        *
-        * @param string $order The 'order' query variable.
-        * @return string The sanitized 'order' query variable.
-        */
-       protected function parse_order( $order ) {
-               if ( ! is_string( $order ) || empty( $order ) ) {
-                       return 'DESC';
-               }
-
-               if ( 'ASC' === strtoupper( $order ) ) {
-                       return 'ASC';
-               } else {
-                       return 'DESC';
-               }
-       }
-}
-
 /**
  * Retrieve all of the WordPress supported comment statuses.
  *
@@ -1028,6 +236,8 @@ function get_comment_statuses() {
                'approve'       => _x('Approved', 'adjective'),
                /* translators: comment status */
                'spam'          => _x('Spam', 'adjective'),
+               /* translators: comment status */
+               'trash'         => _x('Trash', 'adjective'),
        );
 
        return $status;
@@ -1146,25 +356,36 @@ function get_comment_count( $post_id = 0 ) {
        ", ARRAY_A);
 
        $comment_count = array(
-               "approved"              => 0,
-               "awaiting_moderation"   => 0,
-               "spam"                  => 0,
-               "total_comments"        => 0
+               'approved'            => 0,
+               'awaiting_moderation' => 0,
+               'spam'                => 0,
+               'trash'               => 0,
+               'post-trashed'        => 0,
+               'total_comments'      => 0,
+               'all'                 => 0,
        );
 
        foreach ( $totals as $row ) {
                switch ( $row['comment_approved'] ) {
+                       case 'trash':
+                               $comment_count['trash'] = $row['total'];
+                               break;
+                       case 'post-trashed':
+                               $comment_count['post-trashed'] = $row['total'];
+                               break;
                        case 'spam':
                                $comment_count['spam'] = $row['total'];
-                               $comment_count["total_comments"] += $row['total'];
+                               $comment_count['total_comments'] += $row['total'];
                                break;
-                       case 1:
+                       case '1':
                                $comment_count['approved'] = $row['total'];
                                $comment_count['total_comments'] += $row['total'];
+                               $comment_count['all'] += $row['total'];
                                break;
-                       case 0:
+                       case '0':
                                $comment_count['awaiting_moderation'] = $row['total'];
                                $comment_count['total_comments'] += $row['total'];
+                               $comment_count['all'] += $row['total'];
                                break;
                        default:
                                break;
@@ -1254,8 +475,8 @@ function update_comment_meta($comment_id, $meta_key, $meta_value, $prev_value =
  * Sets the cookies used to store an unauthenticated commentator's identity. Typically used
  * to recall previous comments by this commentator that are still held in moderation.
  *
- * @param object $comment Comment object.
- * @param object $user Comment author's object.
+ * @param WP_Comment $comment Comment object.
+ * @param object     $user    Comment author's object.
  *
  * @since 3.4.0
  */
@@ -1368,7 +589,22 @@ function wp_allow_comment( $commentdata ) {
                ") AND comment_content = %s LIMIT 1",
                wp_unslash( $commentdata['comment_content'] )
        );
-       if ( $wpdb->get_var( $dupe ) ) {
+
+       $dupe_id = $wpdb->get_var( $dupe );
+
+       /**
+        * Filters the ID, if any, of the duplicate comment found when creating a new comment.
+        *
+        * Return an empty value from this filter to allow what WP considers a duplicate comment.
+        *
+        * @since 4.4.0
+        *
+        * @param int   $dupe_id     ID of the comment identified as a duplicate.
+        * @param array $commentdata Data for the comment being created.
+        */
+       $dupe_id = apply_filters( 'duplicate_comment_id', $dupe_id, $commentdata );
+
+       if ( $dupe_id ) {
                /**
                 * Fires immediately after a duplicate comment is detected.
                 *
@@ -1436,7 +672,7 @@ function wp_allow_comment( $commentdata ) {
                        $commentdata['comment_author_IP'],
                        $commentdata['comment_agent']
                ) ) {
-                       $approved = 'spam';
+                       $approved = EMPTY_TRASH_DAYS ? 'trash' : 'spam';
                }
        }
 
@@ -1468,10 +704,28 @@ function wp_allow_comment( $commentdata ) {
  */
 function check_comment_flood_db( $ip, $email, $date ) {
        global $wpdb;
-       if ( current_user_can( 'manage_options' ) )
-               return; // don't throttle admins
+       // don't throttle admins or moderators
+       if ( current_user_can( 'manage_options' ) || current_user_can( 'moderate_comments' ) ) {
+               return;
+       }
        $hour_ago = gmdate( 'Y-m-d H:i:s', time() - HOUR_IN_SECONDS );
-       if ( $lasttime = $wpdb->get_var( $wpdb->prepare( "SELECT `comment_date_gmt` FROM `$wpdb->comments` WHERE `comment_date_gmt` >= %s AND ( `comment_author_IP` = %s OR `comment_author_email` = %s ) ORDER BY `comment_date_gmt` DESC LIMIT 1", $hour_ago, $ip, $email ) ) ) {
+
+       if ( is_user_logged_in() ) {
+               $user = get_current_user_id();
+               $check_column = '`user_id`';
+       } else {
+               $user = $ip;
+               $check_column = '`comment_author_IP`';
+       }
+
+       $sql = $wpdb->prepare(
+               "SELECT `comment_date_gmt` FROM `$wpdb->comments` WHERE `comment_date_gmt` >= %s AND ( $check_column = %s OR `comment_author_email` = %s ) ORDER BY `comment_date_gmt` DESC LIMIT 1",
+               $hour_ago,
+               $user,
+               $email
+       );
+       $lasttime = $wpdb->get_var( $sql );
+       if ( $lasttime ) {
                $time_lastcomment = mysql2date('U', $lasttime, false);
                $time_newcomment  = mysql2date('U', $date, false);
                /**
@@ -1535,7 +789,7 @@ function separate_comments(&$comments) {
  *
  * @global WP_Query $wp_query
  *
- * @param array $comments Optional array of comment objects. Defaults to $wp_query->comments
+ * @param array $comments Optional array of WP_Comment objects. Defaults to $wp_query->comments
  * @param int   $per_page Optional comments per page.
  * @param bool  $threaded Optional control over flat or threaded comments.
  * @return int Number of comment pages.
@@ -1552,8 +806,9 @@ function get_comment_pages_count( $comments = null, $per_page = null, $threaded
        if ( empty($comments) )
                return 0;
 
-       if ( ! get_option( 'page_comments' ) )
+       if ( ! get_option( 'page_comments' ) ) {
                return 1;
+       }
 
        if ( !isset($per_page) )
                $per_page = (int) get_query_var('comments_per_page');
@@ -1580,58 +835,119 @@ function get_comment_pages_count( $comments = null, $per_page = null, $threaded
  *
  * @since 2.7.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param int $comment_ID Comment ID.
- * @param array $args Optional args.
+ * @param int   $comment_ID Comment ID.
+ * @param array $args {
+ *      Array of optional arguments.
+ *      @type string     $type      Limit paginated comments to those matching a given type. Accepts 'comment',
+ *                                  'trackback', 'pingback', 'pings' (trackbacks and pingbacks), or 'all'.
+ *                                  Default is 'all'.
+ *      @type int        $per_page  Per-page count to use when calculating pagination. Defaults to the value of the
+ *                                  'comments_per_page' option.
+ *      @type int|string $max_depth If greater than 1, comment page will be determined for the top-level parent of
+ *                                  `$comment_ID`. Defaults to the value of the 'thread_comments_depth' option.
+ * } *
  * @return int|null Comment page number or null on error.
  */
 function get_page_of_comment( $comment_ID, $args = array() ) {
        global $wpdb;
 
+       $page = null;
+
        if ( !$comment = get_comment( $comment_ID ) )
                return;
 
        $defaults = array( 'type' => 'all', 'page' => '', 'per_page' => '', 'max_depth' => '' );
        $args = wp_parse_args( $args, $defaults );
+       $original_args = $args;
+
+       // Order of precedence: 1. `$args['per_page']`, 2. 'comments_per_page' query_var, 3. 'comments_per_page' option.
+       if ( get_option( 'page_comments' ) ) {
+               if ( '' === $args['per_page'] ) {
+                       $args['per_page'] = get_query_var( 'comments_per_page' );
+               }
+
+               if ( '' === $args['per_page'] ) {
+                       $args['per_page'] = get_option( 'comments_per_page' );
+               }
+       }
 
-       if ( '' === $args['per_page'] && get_option('page_comments') )
-               $args['per_page'] = get_query_var('comments_per_page');
        if ( empty($args['per_page']) ) {
                $args['per_page'] = 0;
                $args['page'] = 0;
        }
-       if ( $args['per_page'] < 1 )
-               return 1;
 
-       if ( '' === $args['max_depth'] ) {
-               if ( get_option('thread_comments') )
-                       $args['max_depth'] = get_option('thread_comments_depth');
-               else
-                       $args['max_depth'] = -1;
+       if ( $args['per_page'] < 1 ) {
+               $page = 1;
        }
 
-       // Find this comment's top level parent if threading is enabled
-       if ( $args['max_depth'] > 1 && 0 != $comment->comment_parent )
-               return get_page_of_comment( $comment->comment_parent, $args );
+       if ( null === $page ) {
+               if ( '' === $args['max_depth'] ) {
+                       if ( get_option('thread_comments') )
+                               $args['max_depth'] = get_option('thread_comments_depth');
+                       else
+                               $args['max_depth'] = -1;
+               }
 
-       $allowedtypes = array(
-               'comment' => '',
-               'pingback' => 'pingback',
-               'trackback' => 'trackback',
-       );
+               // Find this comment's top level parent if threading is enabled
+               if ( $args['max_depth'] > 1 && 0 != $comment->comment_parent )
+                       return get_page_of_comment( $comment->comment_parent, $args );
+
+               $comment_args = array(
+                       'type'       => $args['type'],
+                       'post_id'    => $comment->comment_post_ID,
+                       'fields'     => 'ids',
+                       'count'      => true,
+                       'status'     => 'approve',
+                       'parent'     => 0,
+                       'date_query' => array(
+                               array(
+                                       'column' => "$wpdb->comments.comment_date_gmt",
+                                       'before' => $comment->comment_date_gmt,
+                               )
+                       ),
+               );
 
-       $comtypewhere = ( 'all' != $args['type'] && isset($allowedtypes[$args['type']]) ) ? " AND comment_type = '" . $allowedtypes[$args['type']] . "'" : '';
+               $comment_query = new WP_Comment_Query();
+               $older_comment_count = $comment_query->query( $comment_args );
 
-       // Count comments older than this one
-       $oldercoms = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_parent = 0 AND comment_approved = '1' AND comment_date_gmt < '%s'" . $comtypewhere, $comment->comment_post_ID, $comment->comment_date_gmt ) );
+               // No older comments? Then it's page #1.
+               if ( 0 == $older_comment_count ) {
+                       $page = 1;
 
-       // No older comments? Then it's page #1.
-       if ( 0 == $oldercoms )
-               return 1;
+               // Divide comments older than this one by comments per page to get this comment's page number
+               } else {
+                       $page = ceil( ( $older_comment_count + 1 ) / $args['per_page'] );
+               }
+       }
 
-       // Divide comments older than this one by comments per page to get this comment's page number
-       return ceil( ( $oldercoms + 1 ) / $args['per_page'] );
+       /**
+        * Filters the calculated page on which a comment appears.
+        *
+        * @since 4.4.0
+        *
+        * @param int   $page          Comment page.
+        * @param array $args {
+        *     Arguments used to calculate pagination. These include arguments auto-detected by the function,
+        *     based on query vars, system settings, etc. For pristine arguments passed to the function,
+        *     see `$original_args`.
+        *
+        *     @type string $type      Type of comments to count.
+        *     @type int    $page      Calculated current page.
+        *     @type int    $per_page  Calculated number of comments per page.
+        *     @type int    $max_depth Maximum comment threading depth allowed.
+        * }
+        * @param array $original_args {
+        *     Array of arguments passed to the function. Some or all of these may not be set.
+        *
+        *     @type string $type      Type of comments to count.
+        *     @type int    $page      Current comment page.
+        *     @type int    $per_page  Number of comments per page.
+        *     @type int    $max_depth Maximum comment threading depth allowed.
+        * }
+        */
+       return apply_filters( 'get_page_of_comment', (int) $page, $args, $original_args );
 }
 
 /**
@@ -1704,14 +1020,10 @@ function wp_blacklist_check($author, $email, $url, $comment, $user_ip, $user_age
  *
  * @since 2.5.0
  *
- * @global wpdb $wpdb
- *
  * @param int $post_id Optional. Post ID.
  * @return object|array Comment stats.
  */
 function wp_count_comments( $post_id = 0 ) {
-       global $wpdb;
-
        $post_id = (int) $post_id;
 
        /**
@@ -1722,41 +1034,24 @@ function wp_count_comments( $post_id = 0 ) {
         * @param array $count   An empty array.
         * @param int   $post_id The post ID.
         */
-       $stats = apply_filters( 'wp_count_comments', array(), $post_id );
-       if ( !empty($stats) )
-               return $stats;
-
-       $count = wp_cache_get("comments-{$post_id}", 'counts');
+       $filtered = apply_filters( 'wp_count_comments', array(), $post_id );
+       if ( ! empty( $filtered ) ) {
+               return $filtered;
+       }
 
-       if ( false !== $count )
+       $count = wp_cache_get( "comments-{$post_id}", 'counts' );
+       if ( false !== $count ) {
                return $count;
-
-       $where = '';
-       if ( $post_id > 0 )
-               $where = $wpdb->prepare( "WHERE comment_post_ID = %d", $post_id );
-
-       $count = $wpdb->get_results( "SELECT comment_approved, COUNT( * ) AS num_comments FROM {$wpdb->comments} {$where} GROUP BY comment_approved", ARRAY_A );
-
-       $total = 0;
-       $approved = array('0' => 'moderated', '1' => 'approved', 'spam' => 'spam', 'trash' => 'trash', 'post-trashed' => 'post-trashed');
-       foreach ( (array) $count as $row ) {
-               // Don't count post-trashed toward totals
-               if ( 'post-trashed' != $row['comment_approved'] && 'trash' != $row['comment_approved'] )
-                       $total += $row['num_comments'];
-               if ( isset( $approved[$row['comment_approved']] ) )
-                       $stats[$approved[$row['comment_approved']]] = $row['num_comments'];
        }
 
-       $stats['total_comments'] = $total;
-       foreach ( $approved as $key ) {
-               if ( empty($stats[$key]) )
-                       $stats[$key] = 0;
-       }
+       $stats = get_comment_count( $post_id );
+       $stats['moderated'] = $stats['awaiting_moderation'];
+       unset( $stats['awaiting_moderation'] );
 
-       $stats = (object) $stats;
-       wp_cache_set("comments-{$post_id}", $stats, 'counts');
+       $stats_object = (object) $stats;
+       wp_cache_set( "comments-{$post_id}", $stats_object, 'counts' );
 
-       return $stats;
+       return $stats_object;
 }
 
 /**
@@ -1772,8 +1067,8 @@ function wp_count_comments( $post_id = 0 ) {
  *
  * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param int $comment_id Comment ID
- * @param bool $force_delete Whether to bypass trash and force deletion. Default is false.
+ * @param int|WP_Comment $comment_id   Comment ID or WP_Comment object.
+ * @param bool           $force_delete Whether to bypass trash and force deletion. Default is false.
  * @return bool True on success, false on failure.
  */
 function wp_delete_comment($comment_id, $force_delete = false) {
@@ -1781,7 +1076,7 @@ function wp_delete_comment($comment_id, $force_delete = false) {
        if (!$comment = get_comment($comment_id))
                return false;
 
-       if ( !$force_delete && EMPTY_TRASH_DAYS && !in_array( wp_get_comment_status($comment_id), array( 'trash', 'spam' ) ) )
+       if ( !$force_delete && EMPTY_TRASH_DAYS && !in_array( wp_get_comment_status( $comment ), array( 'trash', 'spam' ) ) )
                return wp_trash_comment($comment_id);
 
        /**
@@ -1791,21 +1086,21 @@ function wp_delete_comment($comment_id, $force_delete = false) {
         *
         * @param int $comment_id The comment ID.
         */
-       do_action( 'delete_comment', $comment_id );
+       do_action( 'delete_comment', $comment->comment_ID );
 
        // Move children up a level.
-       $children = $wpdb->get_col( $wpdb->prepare("SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment_id) );
+       $children = $wpdb->get_col( $wpdb->prepare("SELECT comment_ID FROM $wpdb->comments WHERE comment_parent = %d", $comment->comment_ID) );
        if ( !empty($children) ) {
-               $wpdb->update($wpdb->comments, array('comment_parent' => $comment->comment_parent), array('comment_parent' => $comment_id));
+               $wpdb->update($wpdb->comments, array('comment_parent' => $comment->comment_parent), array('comment_parent' => $comment->comment_ID));
                clean_comment_cache($children);
        }
 
        // Delete metadata
-       $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->commentmeta WHERE comment_id = %d", $comment_id ) );
+       $meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->commentmeta WHERE comment_id = %d", $comment->comment_ID ) );
        foreach ( $meta_ids as $mid )
                delete_metadata_by_mid( 'comment', $mid );
 
-       if ( ! $wpdb->delete( $wpdb->comments, array( 'comment_ID' => $comment_id ) ) )
+       if ( ! $wpdb->delete( $wpdb->comments, array( 'comment_ID' => $comment->comment_ID ) ) )
                return false;
 
        /**
@@ -1815,16 +1110,16 @@ function wp_delete_comment($comment_id, $force_delete = false) {
         *
         * @param int $comment_id The comment ID.
         */
-       do_action( 'deleted_comment', $comment_id );
+       do_action( 'deleted_comment', $comment->comment_ID );
 
        $post_id = $comment->comment_post_ID;
        if ( $post_id && $comment->comment_approved == 1 )
                wp_update_comment_count($post_id);
 
-       clean_comment_cache($comment_id);
+       clean_comment_cache( $comment->comment_ID );
 
        /** This action is documented in wp-includes/comment.php */
-       do_action( 'wp_set_comment_status', $comment_id, 'delete' );
+       do_action( 'wp_set_comment_status', $comment->comment_ID, 'delete' );
 
        wp_transition_comment_status('delete', $comment->comment_approved, $comment);
        return true;
@@ -1837,7 +1132,7 @@ function wp_delete_comment($comment_id, $force_delete = false) {
  *
  * @since 2.9.0
  *
- * @param int $comment_id Comment ID.
+ * @param int|WP_Comment $comment_id Comment ID or WP_Comment object.
  * @return bool True on success, false on failure.
  */
 function wp_trash_comment($comment_id) {
@@ -1854,11 +1149,13 @@ function wp_trash_comment($comment_id) {
         *
         * @param int $comment_id The comment ID.
         */
-       do_action( 'trash_comment', $comment_id );
+       do_action( 'trash_comment', $comment->comment_ID );
 
-       if ( wp_set_comment_status($comment_id, 'trash') ) {
-               add_comment_meta($comment_id, '_wp_trash_meta_status', $comment->comment_approved);
-               add_comment_meta($comment_id, '_wp_trash_meta_time', time() );
+       if ( wp_set_comment_status( $comment, 'trash' ) ) {
+               delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_status' );
+               delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_time' );
+               add_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', $comment->comment_approved );
+               add_comment_meta( $comment->comment_ID, '_wp_trash_meta_time', time() );
 
                /**
                 * Fires immediately after a comment is sent to Trash.
@@ -1867,7 +1164,7 @@ function wp_trash_comment($comment_id) {
                 *
                 * @param int $comment_id The comment ID.
                 */
-               do_action( 'trashed_comment', $comment_id );
+               do_action( 'trashed_comment', $comment->comment_ID );
                return true;
        }
 
@@ -1879,12 +1176,14 @@ function wp_trash_comment($comment_id) {
  *
  * @since 2.9.0
  *
- * @param int $comment_id Comment ID.
+ * @param int|WP_Comment $comment_id Comment ID or WP_Comment object.
  * @return bool True on success, false on failure.
  */
 function wp_untrash_comment($comment_id) {
-       if ( ! (int)$comment_id )
+       $comment = get_comment( $comment_id );
+       if ( ! $comment ) {
                return false;
+       }
 
        /**
         * Fires immediately before a comment is restored from the Trash.
@@ -1893,15 +1192,15 @@ function wp_untrash_comment($comment_id) {
         *
         * @param int $comment_id The comment ID.
         */
-       do_action( 'untrash_comment', $comment_id );
+       do_action( 'untrash_comment', $comment->comment_ID );
 
-       $status = (string) get_comment_meta($comment_id, '_wp_trash_meta_status', true);
+       $status = (string) get_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', true );
        if ( empty($status) )
                $status = '0';
 
-       if ( wp_set_comment_status($comment_id, $status) ) {
-               delete_comment_meta($comment_id, '_wp_trash_meta_time');
-               delete_comment_meta($comment_id, '_wp_trash_meta_status');
+       if ( wp_set_comment_status( $comment, $status ) ) {
+               delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_time' );
+               delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_status' );
                /**
                 * Fires immediately after a comment is restored from the Trash.
                 *
@@ -1909,7 +1208,7 @@ function wp_untrash_comment($comment_id) {
                 *
                 * @param int $comment_id The comment ID.
                 */
-               do_action( 'untrashed_comment', $comment_id );
+               do_action( 'untrashed_comment', $comment->comment_ID );
                return true;
        }
 
@@ -1921,12 +1220,14 @@ function wp_untrash_comment($comment_id) {
  *
  * @since 2.9.0
  *
- * @param int $comment_id Comment ID.
+ * @param int|WP_Comment $comment_id Comment ID or WP_Comment object.
  * @return bool True on success, false on failure.
  */
-function wp_spam_comment($comment_id) {
-       if ( !$comment = get_comment($comment_id) )
+function wp_spam_comment( $comment_id ) {
+       $comment = get_comment( $comment_id );
+       if ( ! $comment ) {
                return false;
+       }
 
        /**
         * Fires immediately before a comment is marked as Spam.
@@ -1935,10 +1236,13 @@ function wp_spam_comment($comment_id) {
         *
         * @param int $comment_id The comment ID.
         */
-       do_action( 'spam_comment', $comment_id );
+       do_action( 'spam_comment', $comment->comment_ID );
 
-       if ( wp_set_comment_status($comment_id, 'spam') ) {
-               add_comment_meta($comment_id, '_wp_trash_meta_status', $comment->comment_approved);
+       if ( wp_set_comment_status( $comment, 'spam' ) ) {
+               delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_status' );
+               delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_time' );
+               add_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', $comment->comment_approved );
+               add_comment_meta( $comment->comment_ID, '_wp_trash_meta_time', time() );
                /**
                 * Fires immediately after a comment is marked as Spam.
                 *
@@ -1946,7 +1250,7 @@ function wp_spam_comment($comment_id) {
                 *
                 * @param int $comment_id The comment ID.
                 */
-               do_action( 'spammed_comment', $comment_id );
+               do_action( 'spammed_comment', $comment->comment_ID );
                return true;
        }
 
@@ -1958,12 +1262,14 @@ function wp_spam_comment($comment_id) {
  *
  * @since 2.9.0
  *
- * @param int $comment_id Comment ID.
+ * @param int|WP_Comment $comment_id Comment ID or WP_Comment object.
  * @return bool True on success, false on failure.
  */
-function wp_unspam_comment($comment_id) {
-       if ( ! (int)$comment_id )
+function wp_unspam_comment( $comment_id ) {
+       $comment = get_comment( $comment_id );
+       if ( ! $comment ) {
                return false;
+       }
 
        /**
         * Fires immediately before a comment is unmarked as Spam.
@@ -1972,14 +1278,15 @@ function wp_unspam_comment($comment_id) {
         *
         * @param int $comment_id The comment ID.
         */
-       do_action( 'unspam_comment', $comment_id );
+       do_action( 'unspam_comment', $comment->comment_ID );
 
-       $status = (string) get_comment_meta($comment_id, '_wp_trash_meta_status', true);
+       $status = (string) get_comment_meta( $comment->comment_ID, '_wp_trash_meta_status', true );
        if ( empty($status) )
                $status = '0';
 
-       if ( wp_set_comment_status($comment_id, $status) ) {
-               delete_comment_meta($comment_id, '_wp_trash_meta_status');
+       if ( wp_set_comment_status( $comment, $status ) ) {
+               delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_status' );
+               delete_comment_meta( $comment->comment_ID, '_wp_trash_meta_time' );
                /**
                 * Fires immediately after a comment is unmarked as Spam.
                 *
@@ -1987,7 +1294,7 @@ function wp_unspam_comment($comment_id) {
                 *
                 * @param int $comment_id The comment ID.
                 */
-               do_action( 'unspammed_comment', $comment_id );
+               do_action( 'unspammed_comment', $comment->comment_ID );
                return true;
        }
 
@@ -1999,7 +1306,7 @@ function wp_unspam_comment($comment_id) {
  *
  * @since 1.0.0
  *
- * @param int $comment_id Comment ID
+ * @param int|WP_Comment $comment_id Comment ID or WP_Comment object
  * @return false|string Status might be 'trash', 'approved', 'unapproved', 'spam'. False on failure.
  */
 function wp_get_comment_status($comment_id) {
@@ -2078,7 +1385,7 @@ function wp_transition_comment_status($new_status, $old_status, $comment) {
                 *
                 * @since 2.7.0
                 *
-                * @param object $comment Comment object.
+                * @param WP_Comment $comment Comment object.
                 */
                do_action( "comment_{$old_status}_to_{$new_status}", $comment );
        }
@@ -2093,8 +1400,8 @@ function wp_transition_comment_status($new_status, $old_status, $comment) {
         *
         * @since 2.7.0
         *
-        * @param int $comment_ID The comment ID.
-        * @param obj $comment    Comment object.
+        * @param int        $comment_ID The comment ID.
+        * @param WP_Comment $comment    Comment object.
         */
        do_action( "comment_{$new_status}_{$comment->comment_type}", $comment->comment_ID, $comment );
 }
@@ -2131,9 +1438,13 @@ function wp_get_current_commenter() {
         *
         * @since 3.1.0
         *
-        * @param string $comment_author       Comment author's name.
-        * @param string $comment_author_email Comment author's email.
-        * @param string $comment_author_url   Comment author's URL.
+        * @param array $comment_author_data {
+        *     An array of current commenter variables.
+        *
+        *     @type string $comment_author       The name of the author of the comment. Default empty.
+        *     @type string $comment_author_email The email address of the `$comment_author`. Default empty.
+        *     @type string $comment_author_url   The URL address of the `$comment_author`. Default empty.
+        * }
         */
        return apply_filters( 'wp_get_current_commenter', compact('comment_author', 'comment_author_email', 'comment_author_url') );
 }
@@ -2142,6 +1453,7 @@ function wp_get_current_commenter() {
  * Inserts a comment into the database.
  *
  * @since 2.0.0
+ * @since 4.4.0 Introduced `$comment_meta` argument.
  *
  * @global wpdb $wpdb WordPress database abstraction object.
  *
@@ -2166,6 +1478,8 @@ function wp_get_current_commenter() {
  *     @type int        $comment_post_ID      ID of the post that relates to the comment, if any.
  *                                            Default empty.
  *     @type string     $comment_type         Comment type. Default empty.
+ *     @type array      $comment_meta         Optional. Array of key/value pairs to be stored in commentmeta for the
+ *                                            new comment.
  *     @type int        $user_id              ID of the user who submitted the comment. Default 0.
  * }
  * @return int|false The new comment's ID on success, false on failure.
@@ -2204,13 +1518,20 @@ function wp_insert_comment( $commentdata ) {
        }
        $comment = get_comment( $id );
 
+       // If metadata is provided, store it.
+       if ( isset( $commentdata['comment_meta'] ) && is_array( $commentdata['comment_meta'] ) ) {
+               foreach ( $commentdata['comment_meta'] as $meta_key => $meta_value ) {
+                       add_comment_meta( $comment->comment_ID, $meta_key, $meta_value, true );
+               }
+       }
+
        /**
         * Fires immediately after a comment is inserted into the database.
         *
         * @since 2.8.0
         *
-        * @param int $id      The comment ID.
-        * @param obj $comment Comment object.
+        * @param int        $id      The comment ID.
+        * @param WP_Comment $comment Comment object.
         */
        do_action( 'wp_insert_comment', $id, $comment );
 
@@ -2317,11 +1638,27 @@ function wp_throttle_comment_flood($block, $time_lastcomment, $time_newcomment)
  * @since 4.3.0 'comment_agent' and 'comment_author_IP' can be set via `$commentdata`.
  *
  * @see wp_insert_comment()
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @global wpdb $wpdb
- *
- * @param array $commentdata Contains information on the comment. See wp_insert_comment()
- *                           for information on accepted arguments.
+ * @param array $commentdata {
+ *     Comment data.
+ *
+ *     @type string $comment_author       The name of the comment author.
+ *     @type string $comment_author_email The comment author email address.
+ *     @type string $comment_author_url   The comment author URL.
+ *     @type string $comment_content      The content of the comment.
+ *     @type string $comment_date         The date the comment was submitted. Default is the current time.
+ *     @type string $comment_date_gmt     The date the comment was submitted in the GMT timezone.
+ *                                        Default is `$comment_date` in the GMT timezone.
+ *     @type int    $comment_parent       The ID of this comment's parent, if any. Default 0.
+ *     @type int    $comment_post_ID      The ID of the post that relates to the comment.
+ *     @type int    $user_id              The ID of the user who submitted the comment. Default 0.
+ *     @type int    $user_ID              Kept for backward-compatibility. Use `$user_id` instead.
+ *     @type string $comment_agent        Comment author user agent. Default is the value of 'HTTP_USER_AGENT'
+ *                                        in the `$_SERVER` superglobal sent in the original request.
+ *     @type string $comment_author_IP    Comment author IP address in IPv4 format. Default is the value of
+ *                                        'REMOTE_ADDR' in the `$_SERVER` superglobal sent in the original request.
+ * }
  * @return int|false The ID of the comment on success, false on failure.
  */
 function wp_new_comment( $commentdata ) {
@@ -2379,7 +1716,7 @@ function wp_new_comment( $commentdata ) {
        if ( ! $comment_ID ) {
                $fields = array( 'comment_author', 'comment_author_email', 'comment_author_url', 'comment_content' );
 
-               foreach( $fields as $field ) {
+               foreach ( $fields as $field ) {
                        if ( isset( $commentdata[ $field ] ) ) {
                                $commentdata[ $field ] = $wpdb->strip_invalid_text_for_column( $wpdb->comments, $field, $commentdata[ $field ] );
                        }
@@ -2400,24 +1737,79 @@ function wp_new_comment( $commentdata ) {
         *
         * @since 1.2.0
         *
-        * @param int $comment_ID       The comment ID.
-        * @param int $comment_approved 1 (true) if the comment is approved, 0 (false) if not.
+        * @param int        $comment_ID       The comment ID.
+        * @param int|string $comment_approved 1 if the comment is approved, 0 if not, 'spam' if spam.
         */
        do_action( 'comment_post', $comment_ID, $commentdata['comment_approved'] );
 
-       if ( 'spam' !== $commentdata['comment_approved'] ) { // If it's spam save it silently for later crunching
-               if ( '0' == $commentdata['comment_approved'] ) {
-                       wp_notify_moderator( $comment_ID );
-               }
+       return $comment_ID;
+}
 
-               // wp_notify_postauthor() checks if notifying the author of their own comment.
-               // By default, it won't, but filters can override this.
-               if ( get_option( 'comments_notify' ) && $commentdata['comment_approved'] ) {
-                       wp_notify_postauthor( $comment_ID );
-               }
+/**
+ * Send a comment moderation notification to the comment moderator.
+ *
+ * @since 4.4.0
+ *
+ * @param int $comment_ID ID of the comment.
+ * @return bool True on success, false on failure.
+ */
+function wp_new_comment_notify_moderator( $comment_ID ) {
+       $comment = get_comment( $comment_ID );
+
+       // Only send notifications for pending comments.
+       $maybe_notify = ( '0' == $comment->comment_approved );
+
+       /** This filter is documented in wp-includes/comment.php */
+       $maybe_notify = apply_filters( 'notify_moderator', $maybe_notify, $comment_ID );
+
+       if ( ! $maybe_notify ) {
+               return false;
        }
 
-       return $comment_ID;
+       return wp_notify_moderator( $comment_ID );
+}
+
+/**
+ * Send a notification of a new comment to the post author.
+ *
+ * @since 4.4.0
+ *
+ * Uses the {@see 'notify_post_author'} filter to determine whether the post author
+ * should be notified when a new comment is added, overriding site setting.
+ *
+ * @param int $comment_ID Comment ID.
+ * @return bool True on success, false on failure.
+ */
+function wp_new_comment_notify_postauthor( $comment_ID ) {
+       $comment = get_comment( $comment_ID );
+
+       $maybe_notify = get_option( 'comments_notify' );
+
+       /**
+        * Filter whether to send the post author new comment notification emails,
+        * overriding the site setting.
+        *
+        * @since 4.4.0
+        *
+        * @param bool $maybe_notify Whether to notify the post author about the new comment.
+        * @param int  $comment_ID   The ID of the comment for the notification.
+        */
+       $maybe_notify = apply_filters( 'notify_post_author', $maybe_notify, $comment_ID );
+
+       /*
+        * wp_notify_postauthor() checks if notifying the author of their own comment.
+        * By default, it won't, but filters can override this.
+        */
+       if ( ! $maybe_notify ) {
+               return false;
+       }
+
+       // Only send notifications for approved comments.
+       if ( ! isset( $comment->comment_approved ) || 'spam' === $comment->comment_approved || ! $comment->comment_approved ) {
+               return false;
+       }
+
+       return wp_notify_postauthor( $comment_ID );
 }
 
 /**
@@ -2428,11 +1820,11 @@ function wp_new_comment( $commentdata ) {
  *
  * @since 1.0.0
  *
- * global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param int $comment_id Comment ID.
- * @param string $comment_status New comment status, either 'hold', 'approve', 'spam', or 'trash'.
- * @param bool $wp_error Whether to return a WP_Error object if there is a failure. Default is false.
+ * @param int|WP_Comment $comment_id     Comment ID or WP_Comment object.
+ * @param string         $comment_status New comment status, either 'hold', 'approve', 'spam', or 'trash'.
+ * @param bool           $wp_error       Whether to return a WP_Error object if there is a failure. Default is false.
  * @return bool|WP_Error True on success, false or WP_Error on failure.
  */
 function wp_set_comment_status($comment_id, $comment_status, $wp_error = false) {
@@ -2446,9 +1838,7 @@ function wp_set_comment_status($comment_id, $comment_status, $wp_error = false)
                case 'approve':
                case '1':
                        $status = '1';
-                       if ( get_option('comments_notify') ) {
-                               wp_notify_postauthor( $comment_id );
-                       }
+                       add_action( 'wp_set_comment_status', 'wp_new_comment_notify_postauthor' );
                        break;
                case 'spam':
                        $status = 'spam';
@@ -2462,16 +1852,16 @@ function wp_set_comment_status($comment_id, $comment_status, $wp_error = false)
 
        $comment_old = clone get_comment($comment_id);
 
-       if ( !$wpdb->update( $wpdb->comments, array('comment_approved' => $status), array('comment_ID' => $comment_id) ) ) {
+       if ( !$wpdb->update( $wpdb->comments, array('comment_approved' => $status), array( 'comment_ID' => $comment_old->comment_ID ) ) ) {
                if ( $wp_error )
                        return new WP_Error('db_update_error', __('Could not update comment status'), $wpdb->last_error);
                else
                        return false;
        }
 
-       clean_comment_cache($comment_id);
+       clean_comment_cache( $comment_old->comment_ID );
 
-       $comment = get_comment($comment_id);
+       $comment = get_comment( $comment_old->comment_ID );
 
        /**
         * Fires immediately before transitioning a comment's status from one to another
@@ -2483,7 +1873,7 @@ function wp_set_comment_status($comment_id, $comment_status, $wp_error = false)
         * @param string|bool $comment_status Current comment status. Possible values include
         *                                    'hold', 'approve', 'spam', 'trash', or false.
         */
-       do_action( 'wp_set_comment_status', $comment_id, $comment_status );
+       do_action( 'wp_set_comment_status', $comment->comment_ID, $comment_status );
 
        wp_transition_comment_status($comment_status, $comment_old->comment_approved, $comment);
 
@@ -2656,6 +2046,10 @@ function wp_update_comment_count_now($post_id) {
        $post_id = (int) $post_id;
        if ( !$post_id )
                return false;
+
+       wp_cache_delete( 'comments-0', 'counts' );
+       wp_cache_delete( "comments-{$post_id}", 'counts' );
+
        if ( !$post = get_post($post_id) )
                return false;
 
@@ -2984,7 +2378,7 @@ function trackback($trackback_url, $title, $excerpt, $ID) {
                return;
 
        $options = array();
-       $options['timeout'] = 4;
+       $options['timeout'] = 10;
        $options['body'] = array(
                'title' => $title,
                'url' => get_permalink($ID),
@@ -3071,8 +2465,9 @@ function xmlrpc_pingback_error( $ixr_error ) {
  * @param int|array $ids Comment ID or array of comment IDs to remove from cache
  */
 function clean_comment_cache($ids) {
-       foreach ( (array) $ids as $id )
-               wp_cache_delete($id, 'comment');
+       foreach ( (array) $ids as $id ) {
+               wp_cache_delete( $id, 'comment' );
+       }
 
        wp_cache_set( 'last_changed', microtime(), 'comment' );
 }
@@ -3085,12 +2480,46 @@ function clean_comment_cache($ids) {
  * cache using the comment group with the key using the ID of the comments.
  *
  * @since 2.3.0
+ * @since 4.4.0 Introduced the `$update_meta_cache` parameter.
  *
- * @param array $comments Array of comment row objects
+ * @param array $comments          Array of comment row objects
+ * @param bool  $update_meta_cache Whether to update commentmeta cache. Default true.
  */
-function update_comment_cache($comments) {
+function update_comment_cache( $comments, $update_meta_cache = true ) {
        foreach ( (array) $comments as $comment )
                wp_cache_add($comment->comment_ID, $comment, 'comment');
+
+       if ( $update_meta_cache ) {
+               // Avoid `wp_list_pluck()` in case `$comments` is passed by reference.
+               $comment_ids = array();
+               foreach ( $comments as $comment ) {
+                       $comment_ids[] = $comment->comment_ID;
+               }
+               update_meta_cache( 'comment', $comment_ids );
+       }
+}
+
+/**
+ * Adds any comments from the given IDs to the cache that do not already exist in cache.
+ *
+ * @since 4.4.0
+ * @access private
+ *
+ * @see update_comment_cache()
+ * @global wpdb $wpdb WordPress database abstraction object.
+ *
+ * @param array $comment_ids       Array of comment IDs.
+ * @param bool  $update_meta_cache Optional. Whether to update the meta cache. Default true.
+ */
+function _prime_comment_caches( $comment_ids, $update_meta_cache = true ) {
+       global $wpdb;
+
+       $non_cached_ids = _get_non_cached_ids( $comment_ids, 'comment' );
+       if ( !empty( $non_cached_ids ) ) {
+               $fresh_comments = $wpdb->get_results( sprintf( "SELECT $wpdb->comments.* FROM $wpdb->comments WHERE comment_ID IN (%s)", join( ",", array_map( 'intval', $non_cached_ids ) ) ) );
+
+               update_comment_cache( $fresh_comments, $update_meta_cache );
+       }
 }
 
 //
@@ -3162,8 +2591,210 @@ function _close_comments_for_old_post( $open, $post_id ) {
        if ( ! in_array( $post->post_type, $post_types ) )
                return $open;
 
+       // Undated drafts should not show up as comments closed.
+       if ( '0000-00-00 00:00:00' === $post->post_date_gmt ) {
+               return $open;
+       }
+
        if ( time() - strtotime( $post->post_date_gmt ) > ( $days_old * DAY_IN_SECONDS ) )
                return false;
 
        return $open;
 }
+
+/**
+ * Handles the submission of a comment, usually posted to wp-comments-post.php via a comment form.
+ *
+ * This function expects unslashed data, as opposed to functions such as `wp_new_comment()` which
+ * expect slashed data.
+ *
+ * @since 4.4.0
+ *
+ * @param array $comment_data {
+ *     Comment data.
+ *
+ *     @type string|int $comment_post_ID             The ID of the post that relates to the comment.
+ *     @type string     $author                      The name of the comment author.
+ *     @type string     $email                       The comment author email address.
+ *     @type string     $url                         The comment author URL.
+ *     @type string     $comment                     The content of the comment.
+ *     @type string|int $comment_parent              The ID of this comment's parent, if any. Default 0.
+ *     @type string     $_wp_unfiltered_html_comment The nonce value for allowing unfiltered HTML.
+ * }
+ * @return WP_Comment|WP_Error A WP_Comment object on success, a WP_Error object on failure.
+ */
+function wp_handle_comment_submission( $comment_data ) {
+
+       $comment_post_ID = $comment_parent = 0;
+       $comment_author = $comment_author_email = $comment_author_url = $comment_content = $_wp_unfiltered_html_comment = null;
+
+       if ( isset( $comment_data['comment_post_ID'] ) ) {
+               $comment_post_ID = (int) $comment_data['comment_post_ID'];
+       }
+       if ( isset( $comment_data['author'] ) && is_string( $comment_data['author'] ) ) {
+               $comment_author = trim( strip_tags( $comment_data['author'] ) );
+       }
+       if ( isset( $comment_data['email'] ) && is_string( $comment_data['email'] ) ) {
+               $comment_author_email = trim( $comment_data['email'] );
+       }
+       if ( isset( $comment_data['url'] ) && is_string( $comment_data['url'] ) ) {
+               $comment_author_url = trim( $comment_data['url'] );
+       }
+       if ( isset( $comment_data['comment'] ) && is_string( $comment_data['comment'] ) ) {
+               $comment_content = trim( $comment_data['comment'] );
+       }
+       if ( isset( $comment_data['comment_parent'] ) ) {
+               $comment_parent = absint( $comment_data['comment_parent'] );
+       }
+       if ( isset( $comment_data['_wp_unfiltered_html_comment'] ) && is_string( $comment_data['_wp_unfiltered_html_comment'] ) ) {
+               $_wp_unfiltered_html_comment = trim( $comment_data['_wp_unfiltered_html_comment'] );
+       }
+
+       $post = get_post( $comment_post_ID );
+
+       if ( empty( $post->comment_status ) ) {
+
+               /**
+                * Fires when a comment is attempted on a post that does not exist.
+                *
+                * @since 1.5.0
+                *
+                * @param int $comment_post_ID Post ID.
+                */
+               do_action( 'comment_id_not_found', $comment_post_ID );
+
+               return new WP_Error( 'comment_id_not_found' );
+
+       }
+
+       // get_post_status() will get the parent status for attachments.
+       $status = get_post_status( $post );
+
+       if ( ( 'private' == $status ) && ! current_user_can( 'read_post', $comment_post_ID ) ) {
+               return new WP_Error( 'comment_id_not_found' );
+       }
+
+       $status_obj = get_post_status_object( $status );
+
+       if ( ! comments_open( $comment_post_ID ) ) {
+
+               /**
+                * Fires when a comment is attempted on a post that has comments closed.
+                *
+                * @since 1.5.0
+                *
+                * @param int $comment_post_ID Post ID.
+                */
+               do_action( 'comment_closed', $comment_post_ID );
+
+               return new WP_Error( 'comment_closed', __( 'Sorry, comments are closed for this item.' ), 403 );
+
+       } elseif ( 'trash' == $status ) {
+
+               /**
+                * Fires when a comment is attempted on a trashed post.
+                *
+                * @since 2.9.0
+                *
+                * @param int $comment_post_ID Post ID.
+                */
+               do_action( 'comment_on_trash', $comment_post_ID );
+
+               return new WP_Error( 'comment_on_trash' );
+
+       } elseif ( ! $status_obj->public && ! $status_obj->private ) {
+
+               /**
+                * Fires when a comment is attempted on a post in draft mode.
+                *
+                * @since 1.5.1
+                *
+                * @param int $comment_post_ID Post ID.
+                */
+               do_action( 'comment_on_draft', $comment_post_ID );
+
+               return new WP_Error( 'comment_on_draft' );
+
+       } elseif ( post_password_required( $comment_post_ID ) ) {
+
+               /**
+                * Fires when a comment is attempted on a password-protected post.
+                *
+                * @since 2.9.0
+                *
+                * @param int $comment_post_ID Post ID.
+                */
+               do_action( 'comment_on_password_protected', $comment_post_ID );
+
+               return new WP_Error( 'comment_on_password_protected' );
+
+       } else {
+
+               /**
+                * Fires before a comment is posted.
+                *
+                * @since 2.8.0
+                *
+                * @param int $comment_post_ID Post ID.
+                */
+               do_action( 'pre_comment_on_post', $comment_post_ID );
+
+       }
+
+       // If the user is logged in
+       $user = wp_get_current_user();
+       if ( $user->exists() ) {
+               if ( empty( $user->display_name ) ) {
+                       $user->display_name=$user->user_login;
+               }
+               $comment_author       = $user->display_name;
+               $comment_author_email = $user->user_email;
+               $comment_author_url   = $user->user_url;
+               $user_id              = $user->ID;
+               if ( current_user_can( 'unfiltered_html' ) ) {
+                       if ( ! isset( $comment_data['_wp_unfiltered_html_comment'] )
+                               || ! wp_verify_nonce( $comment_data['_wp_unfiltered_html_comment'], 'unfiltered-html-comment_' . $comment_post_ID )
+                       ) {
+                               kses_remove_filters(); // start with a clean slate
+                               kses_init_filters(); // set up the filters
+                       }
+               }
+       } else {
+               if ( get_option( 'comment_registration' ) ) {
+                       return new WP_Error( 'not_logged_in', __( 'Sorry, you must be logged in to post a comment.' ), 403 );
+               }
+       }
+
+       $comment_type = '';
+
+       if ( get_option( 'require_name_email' ) && ! $user->exists() ) {
+               if ( 6 > strlen( $comment_author_email ) || '' == $comment_author ) {
+                       return new WP_Error( 'require_name_email', __( '<strong>ERROR</strong>: please fill the required fields (name, email).' ), 200 );
+               } elseif ( ! is_email( $comment_author_email ) ) {
+                       return new WP_Error( 'require_valid_email', __( '<strong>ERROR</strong>: please enter a valid email address.' ), 200 );
+               }
+       }
+
+       if ( '' == $comment_content ) {
+               return new WP_Error( 'require_valid_comment', __( '<strong>ERROR</strong>: please type a comment.' ), 200 );
+       }
+
+       $commentdata = compact(
+               'comment_post_ID',
+               'comment_author',
+               'comment_author_email',
+               'comment_author_url',
+               'comment_content',
+               'comment_type',
+               'comment_parent',
+               'user_id'
+       );
+
+       $comment_id = wp_new_comment( wp_slash( $commentdata ) );
+       if ( ! $comment_id ) {
+               return new WP_Error( 'comment_save_error', __( '<strong>ERROR</strong>: The comment could not be saved. Please try again later.' ), 500 );
+       }
+
+       return get_comment( $comment_id );
+
+}
index 553faeb1d8fd471e4d46c9ee21a512a00831ef96..24da0adc3e167f2a8ec3ffd61af902e2d68ae22f 100644 (file)
@@ -260,3 +260,80 @@ endif;
 if ( ! defined( 'JSON_PRETTY_PRINT' ) ) {
        define( 'JSON_PRETTY_PRINT', 128 );
 }
+
+if ( ! function_exists( 'json_last_error_msg' ) ) :
+       /**
+        * Retrieves the error string of the last json_encode() or json_decode() call.
+        *
+        * @since 4.4.0
+        *
+        * @internal This is a compatibility function for PHP <5.5
+        *
+        * @return bool|string Returns the error message on success, "No Error" if no error has occurred,
+        *                     or false on failure.
+        */
+       function json_last_error_msg() {
+               // See https://core.trac.wordpress.org/ticket/27799.
+               if ( ! function_exists( 'json_last_error' ) ) {
+                       return false;
+               }
+
+               $last_error_code = json_last_error();
+
+               // Just in case JSON_ERROR_NONE is not defined.
+               $error_code_none = defined( 'JSON_ERROR_NONE' ) ? JSON_ERROR_NONE : 0;
+
+               switch ( true ) {
+                       case $last_error_code === $error_code_none:
+                               return 'No error';
+
+                       case defined( 'JSON_ERROR_DEPTH' ) && JSON_ERROR_DEPTH === $last_error_code:
+                               return 'Maximum stack depth exceeded';
+
+                       case defined( 'JSON_ERROR_STATE_MISMATCH' ) && JSON_ERROR_STATE_MISMATCH === $last_error_code:
+                               return 'State mismatch (invalid or malformed JSON)';
+
+                       case defined( 'JSON_ERROR_CTRL_CHAR' ) && JSON_ERROR_CTRL_CHAR === $last_error_code:
+                               return 'Control character error, possibly incorrectly encoded';
+
+                       case defined( 'JSON_ERROR_SYNTAX' ) && JSON_ERROR_SYNTAX === $last_error_code:
+                               return 'Syntax error';
+
+                       case defined( 'JSON_ERROR_UTF8' ) && JSON_ERROR_UTF8 === $last_error_code:
+                               return 'Malformed UTF-8 characters, possibly incorrectly encoded';
+
+                       case defined( 'JSON_ERROR_RECURSION' ) && JSON_ERROR_RECURSION === $last_error_code:
+                               return 'Recursion detected';
+
+                       case defined( 'JSON_ERROR_INF_OR_NAN' ) && JSON_ERROR_INF_OR_NAN === $last_error_code:
+                               return 'Inf and NaN cannot be JSON encoded';
+
+                       case defined( 'JSON_ERROR_UNSUPPORTED_TYPE' ) && JSON_ERROR_UNSUPPORTED_TYPE === $last_error_code:
+                               return 'Type is not supported';
+
+                       default:
+                               return 'An unknown error occurred';
+               }
+       }
+endif;
+
+if ( ! interface_exists( 'JsonSerializable' ) ) {
+       define( 'WP_JSON_SERIALIZE_COMPATIBLE', true );
+       /**
+        * JsonSerializable interface.
+        *
+        * Compatibility shim for PHP <5.4
+        *
+     * @link http://php.net/jsonserializable
+        *
+        * @since 4.4.0
+        */
+       interface JsonSerializable {
+               public function jsonSerialize();
+       }
+}
+
+// random_int was introduced in PHP 7.0
+if ( ! function_exists( 'random_int' ) ) {
+       require ABSPATH . WPINC . '/random_compat/random.php';
+}
index 8b88c1220be96e42b22aa8a53968588e0d82537c..60492c5d045a97391afe096989c4aeb675250592 100644 (file)
  * @param int $timestamp Timestamp for when to run the event.
  * @param string $hook Action hook to execute when cron is run.
  * @param array $args Optional. Arguments to pass to the hook's callback function.
- * @return void|false
+ * @return false|void False when an event is not scheduled.
  */
 function wp_schedule_single_event( $timestamp, $hook, $args = array()) {
-       // don't schedule a duplicate if there's already an identical event due within 10 minutes of it
+       // Make sure timestamp is a positive integer
+       if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) {
+               return false;
+       }
+
+       // Don't schedule a duplicate if there's already an identical event due within 10 minutes of it
        $next = wp_next_scheduled($hook, $args);
        if ( $next && abs( $next - $timestamp ) <= 10 * MINUTE_IN_SECONDS ) {
-               return;
+               return false;
        }
 
        $crons = _get_cron_array();
@@ -67,9 +72,14 @@ function wp_schedule_single_event( $timestamp, $hook, $args = array()) {
  * @param string $recurrence How often the event should recur.
  * @param string $hook Action hook to execute when cron is run.
  * @param array $args Optional. Arguments to pass to the hook's callback function.
- * @return false|void False when does not schedule event.
+ * @return false|void False when an event is not scheduled.
  */
 function wp_schedule_event( $timestamp, $recurrence, $hook, $args = array()) {
+       // Make sure timestamp is a positive integer
+       if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) {
+               return false;
+       }
+
        $crons = _get_cron_array();
        $schedules = wp_get_schedules();
 
@@ -100,9 +110,14 @@ function wp_schedule_event( $timestamp, $recurrence, $hook, $args = array()) {
  * @param string $recurrence How often the event should recur.
  * @param string $hook Action hook to execute when cron is run.
  * @param array $args Optional. Arguments to pass to the hook's callback function.
- * @return false|void False when does not schedule event.
+ * @return false|void False when an event is not scheduled.
  */
 function wp_reschedule_event( $timestamp, $recurrence, $hook, $args = array() ) {
+       // Make sure timestamp is a positive integer
+       if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) {
+               return false;
+       }
+
        $crons = _get_cron_array();
        $schedules = wp_get_schedules();
        $key = md5( serialize( $args ) );
@@ -146,8 +161,14 @@ function wp_reschedule_event( $timestamp, $recurrence, $hook, $args = array() )
  * Although not passed to a callback function, these arguments are used
  * to uniquely identify the scheduled event, so they should be the same
  * as those used when originally scheduling the event.
+ * @return false|void False when an event is not unscheduled.
  */
 function wp_unschedule_event( $timestamp, $hook, $args = array() ) {
+       // Make sure timestamp is a positive integer
+       if ( ! is_numeric( $timestamp ) || $timestamp <= 0 ) {
+               return false;
+       }
+
        $crons = _get_cron_array();
        $key = md5(serialize($args));
        unset( $crons[$timestamp][$hook][$key] );
@@ -248,7 +269,7 @@ function spawn_cron( $gmt_time = 0 ) {
                return;
 
        if ( defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) {
-               if ( ! empty( $_POST ) || defined( 'DOING_AJAX' ) ||  defined( 'XMLRPC_REQUEST' ) ) {
+               if ( 'GET' !== $_SERVER['REQUEST_METHOD'] || defined( 'DOING_AJAX' ) ||  defined( 'XMLRPC_REQUEST' ) ) {
                        return;
                }
 
@@ -296,7 +317,7 @@ function spawn_cron( $gmt_time = 0 ) {
                'args' => array(
                        'timeout'   => 0.01,
                        'blocking'  => false,
-                       /** This filter is documented in wp-includes/class-http.php */
+                       /** This filter is documented in wp-includes/class-wp-http-streams.php */
                        'sslverify' => apply_filters( 'https_local_ssl_verify', false )
                )
        ) );
index fff45052a64e3e0e92bc6e863f29c3b61c888290..46bc3f87a8ba34a6ac03e1ffd9d768ccdf028000 100644 (file)
@@ -27,6 +27,11 @@ html:lang(he-il) .rtl #wpadminbar *  {
        font-family: Arial, sans-serif;
 }
 
+#wpadminbar .ab-empty-item {
+       cursor: default;
+}
+
+#wpadminbar .ab-empty-item,
 #wpadminbar a.ab-item,
 #wpadminbar > #wp-toolbar span.ab-label,
 #wpadminbar > #wp-toolbar span.noticon {
@@ -226,7 +231,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 #wpadminbar .ab-item:before {
        position: relative;
        float: right;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        padding: 4px 0;
        -webkit-font-smoothing: antialiased;
@@ -272,6 +277,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -300,7 +306,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 #wpadminbar .menupop .menupop > .ab-item:before,
 #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before {
        position: absolute;
-       font: normal 17px/1 'dashicons';
+       font: normal 17px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -314,7 +320,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 #wpadminbar .menupop .menupop > .ab-item:before {
        top: 1px;
        left: 4px;
-       content: '\f139';
+       content: "\f141";
        color: inherit;
 }
 
@@ -324,9 +330,9 @@ html:lang(he-il) .rtl #wpadminbar *  {
 }
 
 #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before {
-       top: 5px;
-       right: 3px;
-       content: '\f141';
+       top: 1px;
+       right: 6px;
+       content: "\f139";
 }
 
 #wpadminbar .quicklinks .menupop ul.ab-sub-secondary {
@@ -451,6 +457,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
        font-size: 11px;
 }
 
+#wpadminbar #wp-admin-bar-my-account.with-avatar > .ab-empty-item img,
 #wpadminbar #wp-admin-bar-my-account.with-avatar > a img {
        width: auto;
        height: 16px;
@@ -464,6 +471,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
        display: inline;
 }
 
+#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar > .ab-empty-item img,
 #wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar > a img {
        width: auto;
 }
@@ -483,7 +491,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 }
 
 #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before {
-       content: '\f120';
+       content: "\f120";
        top: 2px;
 }
 
@@ -492,19 +500,21 @@ html:lang(he-il) .rtl #wpadminbar *  {
  */
 #wpadminbar .quicklinks li .blavatar {
        float: right;
-       font: normal 16px/1 'dashicons' !important;
+       font: normal 16px/1 dashicons !important;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        color: #eee;
 }
 
-#wpadminbar .quicklinks li a:hover .blavatar {
+#wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar {
        color: #00b9eb;
 }
 
 #wpadminbar .quicklinks li .blavatar:before {
-       content: '\f120';
+       content: "\f120";
        height: 16px;
        width: 16px;
        display: inline-block;
@@ -517,18 +527,18 @@ html:lang(he-il) .rtl #wpadminbar *  {
 
 #wpadminbar #wp-admin-bar-my-sites > .ab-item:before,
 #wpadminbar #wp-admin-bar-site-name > .ab-item:before {
-       content: '\f112';
+       content: "\f112";
        top: 2px;
 }
 
 #wpadminbar #wp-admin-bar-customize > .ab-item:before {
-       content: '\f540';
+       content: "\f540";
        top: 2px;
 }
 
 
 #wpadminbar #wp-admin-bar-edit > .ab-item:before {
-       content: '\f464';
+       content: "\f464";
        top: 2px;
 }
 
@@ -550,7 +560,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 }
 
 #wpadminbar #wp-admin-bar-comments .ab-icon:before {
-       content: '\f101';
+       content: "\f101";
        top: 3px;
 }
 
@@ -562,7 +572,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
  * New Content
  */
 #wpadminbar #wp-admin-bar-new-content .ab-icon:before {
-       content: '\f132';
+       content: "\f132";
        top: 4px;
 }
 
@@ -570,7 +580,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
  * Updates
  */
 #wpadminbar #wp-admin-bar-updates .ab-icon:before {
-       content: '\f463';
+       content: "\f463";
        top: 2px;
 }
 
@@ -598,8 +608,8 @@ html:lang(he-il) .rtl #wpadminbar *  {
        top: 6px;
        right: 5px;
        z-index: 20;
-       font: normal 20px/1 'dashicons' !important;
-       content: '\f179';
+       font: normal 20px/1 dashicons !important;
+       content: "\f179";
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -653,7 +663,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 
 /* IE8 doesn't redraw the pseudo elements unless you make a change to the content */
 #wpadminbar.ie8 #adminbarsearch.adminbar-focused:before {
-       content: '\f179 '; /* extra space */
+       content: "\f179 "; /* extra space */
 }
 
 #wpadminbar.ie8 > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus {
@@ -718,7 +728,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
        font-weight: bold;
        padding: 15px 23px 14px;
        background: #f1f1f1;
-       color: #21759b;
+       color: #0073aa;
        z-index: 100000;
        line-height: normal;
        text-decoration: none;
@@ -855,7 +865,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 
        #wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper .ab-item {
                font-size: 16px;
-               padding: 6px 15px 12px;
+               padding: 8px 16px;
        }
 
        #wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper a:empty {
@@ -876,7 +886,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
        }
 
        #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before {
-               font: 28px/1 'dashicons' !important;
+               font: 28px/1 dashicons !important;
                top: -3px;
        }
 
@@ -914,7 +924,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
        #wpadminbar #wp-admin-bar-my-account > .ab-item:before {
                display: block;
                text-indent: 0;
-               font: normal 32px/1 'dashicons';
+               font: normal 32px/1 dashicons;
                speak: none;
                top: 7px;
                width: 52px;
index a521ad6c12fd75c5d1a456d4aca7304bbeb51883..cccc808cc261017cd4c18e5d2b9b3a1ec0fe15b6 100644 (file)
@@ -1 +1 @@
-#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font:400 13px/32px "Open Sans",sans-serif;-webkit-border-radius:0;border-radius:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transition:none;transition:none;-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.rtl #wpadminbar *{font-family:Tahoma,sans-serif}html:lang(he-il) .rtl #wpadminbar *{font-family:Arial,sans-serif}#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#eee}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{outline:0;border:none;text-decoration:none;background:0 0}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=text],#wpadminbar input[type=password],#wpadminbar input[type=number],#wpadminbar input[type=search],#wpadminbar input[type=email],#wpadminbar input[type=url],#wpadminbar select,#wpadminbar textarea{-webkit-box-shadow:none;box-shadow:none;outline:0}#wpadminbar{direction:rtl;color:#ccc;font:400 13px/32px "Open Sans",sans-serif;height:32px;position:fixed;top:0;right:0;width:100%;min-width:600px;z-index:99999;background:#23282d}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0 0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar ul#wp-admin-bar-root-default>li{margin-left:0}#wpadminbar .quicklinks ul{text-align:right}#wpadminbar li{float:right}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks .ab-top-secondary>li{float:left}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks a,#wpadminbar .shortlink-input{height:32px;display:block;padding:0 10px;margin:0}#wpadminbar .quicklinks>ul>li>a{padding:0 7px 0 8px}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0;padding:0;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2);background:#32373c;display:none;position:absolute;float:none}#wpadminbar .selected .shortlink-input,#wpadminbar li.hover>.ab-sub-wrapper,#wpadminbar.nojs li:hover>.ab-sub-wrapper{display:block}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:32px;right:0}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:100%}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{left:0;right:auto}#wpadminbar .ab-submenu{padding:6px 0}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:700}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:26px;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-right:100%;margin-top:-32px}#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper{margin-right:0;right:inherit;left:100%}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{background:#32373c;color:#00b9eb}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label,#wpadminbar>#wp-toolbar li.hover span.ab-label{color:#00b9eb}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{position:relative;float:right;font:400 20px/1 dashicons;speak:none;padding:4px 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important;margin-left:6px}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{color:#a0a5aa;color:rgba(240,245,250,.6);position:relative;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#wpadminbar .ab-label{display:inline-block;height:32px}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#b4b9be;color:rgba(240,245,250,.7)}#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#00b9eb}#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#b4b9be}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#00b9eb}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before,#wpadminbar .menupop .menupop>.ab-item:before{position:absolute;font:400 17px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar .menupop .menupop>.ab-item{display:block;padding-left:2em}#wpadminbar .menupop .menupop>.ab-item:before{top:1px;left:4px;content:'\f139';color:inherit}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{padding-right:2em;padding-left:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:5px;right:3px;content:'\f141'}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;left:auto;margin:0;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#464b50}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus a,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li>a:hover{color:#00b9eb}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#32373c;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:left}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{-webkit-box-shadow:none;box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account>.ab-item:before{content:"\f110";top:2px;float:left;margin-right:6px;margin-left:0}#wp-admin-bar-my-account.with-avatar>.ab-item:before{display:none;content:none}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar .ab-item{white-space:nowrap}#wpadminbar #wp-admin-bar-user-actions>li{margin-right:16px;margin-left:16px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:6px 0 12px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-right:88px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0 0}#wp-admin-bar-user-info .avatar{position:absolute;right:-72px;top:4px;width:64px;height:64px}#wpadminbar #wp-admin-bar-user-info a{background:0 0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0 0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{display:block}#wpadminbar #wp-admin-bar-user-info .username{color:#999;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #82878c;background:#eee;line-height:24px;vertical-align:middle;margin:-4px 6px 0 0;float:none;display:inline}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>a img{width:auto}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{width:15px;height:20px;margin-left:0;padding:6px 0 5px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0 7px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{content:'\f120';top:2px}#wpadminbar .quicklinks li .blavatar{float:right;font:400 16px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#eee}#wpadminbar .quicklinks li a:hover .blavatar{color:#00b9eb}#wpadminbar .quicklinks li .blavatar:before{content:'\f120';height:16px;width:16px;display:inline-block;margin:6px -2px 0 8px}#wpadminbar #wp-admin-bar-appearance{margin-top:-12px}#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:'\f112';top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:'\f540';top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:'\f464';top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-left:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:'\f101';top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:'\f132';top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:'\f463';top:2px}#wpadminbar.ie8 #wp-admin-bar-search{display:block;min-width:32px}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;right:5px;z-index:20;font:400 20px/1 dashicons!important;content:'\f179';speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{position:relative;z-index:30;font:13px/24px "Open Sans",sans-serif;height:24px;width:24px;max-width:none;padding:0 24px 0 3px;margin:0;color:#ccc;background-color:rgba(255,255,255,0);border:none;outline:0;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:400ms;transition-duration:400ms;-webkit-transition-property:width,background;transition-property:width,background;-webkit-transition-timing-function:ease;transition-timing-function:ease}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{z-index:10;color:#000;width:200px;background-color:rgba(255,255,255,.9);cursor:text;border:0}#wpadminbar.ie7>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{margin-top:3px;width:120px}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7) 100% 0}#wpadminbar.ie8 #adminbarsearch.adminbar-focused:before{content:'\f179 '}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{background:#fff;z-index:-1}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-button,.customize-support #wpadminbar .hide-if-customize,.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support #wpadminbar .hide-if-no-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#wpadminbar .screen-reader-text,#wpadminbar .screen-reader-text span{position:absolute;right:-1000em;top:-1000em;height:1px;width:1px;overflow:hidden}#wpadminbar .screen-reader-shortcut{position:absolute;top:-1000em}#wpadminbar .screen-reader-shortcut:focus{right:6px;top:7px;height:auto;width:auto;display:block;font-size:14px;font-weight:700;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;z-index:100000;line-height:normal;text-decoration:none;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6)}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:right}* html #wpadminbar .menupop a span{background-image:none}.no-font-face #wpadminbar ul.ab-top-menu>li>a.ab-item{display:block;width:45px;text-align:center;overflow:hidden;margin:0 3px}.no-font-face #wpadminbar #wp-admin-bar-edit>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-my-sites>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:0}.no-font-face #wpadminbar #wp-admin-bar-wp-logo>.ab-item,.no-font-face #wpadminbar .ab-icon,.no-font-face #wpadminbar .ab-icon:before,.no-font-face #wpadminbar a.ab-item:before{display:none!important}.no-font-face #wpadminbar ul.ab-top-menu>li>a>span.ab-label{display:inline}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon{display:inline!important}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon:before{content:"Menu";font:14px/45px sans-serif!important;display:inline-block!important;color:#fff}.no-font-face #wpadminbar #wp-admin-bar-site-name a.ab-item{color:#fff}@media screen and (max-width:782px){#wpadminbar .ab-label,#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar ul#wp-admin-bar-root-default>li,.network-admin #wpadminbar ul#wp-admin-bar-top-secondary>li#wp-admin-bar-my-account{margin-left:0}html #wpadminbar{height:46px;min-width:300px}#wpadminbar *{font:400 14px/32px "Open Sans",sans-serif}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar #wp-admin-bar-comments .ab-icon,#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin:0}#wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .menupop>.ab-item{padding-left:30px}#wpadminbar .menupop .menupop>.ab-item:before{top:10px;left:6px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 15px 12px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{font:28px/1 dashicons!important;top:-3px}#wpadminbar .ab-icon,#wpadminbar .ab-item:before{padding:0}#wpadminbar #wp-admin-bar-customize>.ab-item,#wpadminbar #wp-admin-bar-edit>.ab-item,#wpadminbar #wp-admin-bar-my-account>.ab-item,#wpadminbar #wp-admin-bar-my-sites>.ab-item,#wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:100%;white-space:nowrap;overflow:hidden;width:52px;padding:0;color:#999;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-left:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font:400 32px/1 dashicons;speak:none;top:7px;width:52px;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar #wp-admin-bar-appearance{margin-top:0}#wpadminbar #wp-admin-bar-search,#wpadminbar .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:53px;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{display:block;font-size:34px;height:46px;line-height:47px;top:0}#wp-toolbar>ul>li,#wpadminbar #wp-admin-bar-user-actions.ab-submenu img.avatar{display:none}#wpadminbar #wp-admin-bar-my-account>a{position:relative;white-space:nowrap;text-indent:150%;width:28px;padding:0 10px;overflow:hidden}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{position:absolute;top:13px;left:10px;width:26px;height:26px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:0}#wpadminbar #wp-admin-bar-user-info .display-name{height:auto;font-size:16px;line-height:24px;color:#eee}#wpadminbar #wp-admin-bar-user-info a{padding-top:4px}#wpadminbar #wp-admin-bar-user-info .username{line-height:.8!important;margin-bottom:-2px}#wpadminbar li#wp-admin-bar-comments,#wpadminbar li#wp-admin-bar-customize,#wpadminbar li#wp-admin-bar-edit,#wpadminbar li#wp-admin-bar-menu-toggle,#wpadminbar li#wp-admin-bar-my-account,#wpadminbar li#wp-admin-bar-my-sites,#wpadminbar li#wp-admin-bar-new-content,#wpadminbar li#wp-admin-bar-site-name,#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:block}#wpadminbar li.hover ul li,#wpadminbar li:hover ul li,#wpadminbar li:hover ul li:hover ul li{display:list-item}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}#wpadminbar #wp-admin-bar-comments,#wpadminbar #wp-admin-bar-edit,#wpadminbar #wp-admin-bar-my-account,#wpadminbar #wp-admin-bar-my-sites,#wpadminbar #wp-admin-bar-new-content,#wpadminbar #wp-admin-bar-site-name,#wpadminbar #wp-admin-bar-updates,#wpadminbar #wp-admin-bar-wp-logo,#wpadminbar .ab-top-menu,#wpadminbar .ab-top-secondary{position:static}#wpadminbar #wp-admin-bar-my-account{float:left}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:10px;right:0}}@media screen and (max-width:600px){#wpadminbar{position:absolute}#wp-responsive-overlay{position:fixed;top:0;right:0;width:100%;height:100%;z-index:400}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{width:100%;right:0}#wpadminbar .menupop .menupop>.ab-item:before{display:none}#wpadminbar #wp-admin-bar-wp-logo.menupop .ab-sub-wrapper{margin-right:0}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{margin:0;width:100%;top:auto;right:auto;position:static;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 30px 19px 15px}#wpadminbar li:hover ul li ul li{display:list-item}#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:none}}@media screen and (max-width:400px){#wpadminbar li#wp-admin-bar-comments{display:none}}
\ No newline at end of file
+#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font:400 13px/32px "Open Sans",sans-serif;-webkit-border-radius:0;border-radius:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transition:none;transition:none;-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.rtl #wpadminbar *{font-family:Tahoma,sans-serif}html:lang(he-il) .rtl #wpadminbar *{font-family:Arial,sans-serif}#wpadminbar .ab-empty-item{cursor:default;outline:0}#wpadminbar .ab-empty-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#eee}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{outline:0;border:none;text-decoration:none;background:0 0}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=text],#wpadminbar input[type=password],#wpadminbar input[type=number],#wpadminbar input[type=search],#wpadminbar input[type=email],#wpadminbar input[type=url],#wpadminbar select,#wpadminbar textarea{-webkit-box-shadow:none;box-shadow:none;outline:0}#wpadminbar{direction:rtl;color:#ccc;font:400 13px/32px "Open Sans",sans-serif;height:32px;position:fixed;top:0;right:0;width:100%;min-width:600px;z-index:99999;background:#23282d}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0 0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar ul#wp-admin-bar-root-default>li{margin-left:0}#wpadminbar .quicklinks ul{text-align:right}#wpadminbar li{float:right}#wpadminbar .quicklinks .ab-top-secondary>li{float:left}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks a,#wpadminbar .shortlink-input{height:32px;display:block;padding:0 10px;margin:0}#wpadminbar .quicklinks>ul>li>a{padding:0 7px 0 8px}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0;padding:0;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2);background:#32373c;display:none;position:absolute;float:none}#wpadminbar .selected .shortlink-input,#wpadminbar li.hover>.ab-sub-wrapper,#wpadminbar.nojs li:hover>.ab-sub-wrapper{display:block}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:32px;right:0}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:100%}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{left:0;right:auto}#wpadminbar .ab-submenu{padding:6px 0}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:700}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:26px;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-right:100%;margin-top:-32px}#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper{margin-right:0;right:inherit;left:100%}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{background:#32373c;color:#00b9eb}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label,#wpadminbar>#wp-toolbar li.hover span.ab-label{color:#00b9eb}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{position:relative;float:right;font:400 20px/1 dashicons;speak:none;padding:4px 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important;margin-left:6px}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{color:#a0a5aa;color:rgba(240,245,250,.6);position:relative;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#wpadminbar .ab-label{display:inline-block;height:32px}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#b4b9be;color:rgba(240,245,250,.7)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#00b9eb}#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#b4b9be}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#00b9eb}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before,#wpadminbar .menupop .menupop>.ab-item:before{position:absolute;font:400 17px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar .menupop .menupop>.ab-item{display:block;padding-left:2em}#wpadminbar .menupop .menupop>.ab-item:before{top:1px;left:4px;content:"\f141";color:inherit}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{padding-right:2em;padding-left:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:1px;right:6px;content:"\f139"}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;left:auto;margin:0;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#464b50}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus a,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li>a:hover{color:#00b9eb}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#32373c;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:left}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{-webkit-box-shadow:none;box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account>.ab-item:before{content:"\f110";top:2px;float:left;margin-right:6px;margin-left:0}#wp-admin-bar-my-account.with-avatar>.ab-item:before{display:none;content:none}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar .ab-item{white-space:nowrap}#wpadminbar #wp-admin-bar-user-actions>li{margin-right:16px;margin-left:16px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:6px 0 12px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-right:88px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0 0}#wp-admin-bar-user-info .avatar{position:absolute;right:-72px;top:4px;width:64px;height:64px}#wpadminbar #wp-admin-bar-user-info a{background:0 0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0 0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{display:block}#wpadminbar #wp-admin-bar-user-info .username{color:#999;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #82878c;background:#eee;line-height:24px;vertical-align:middle;margin:-4px 6px 0 0;float:none;display:inline}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>a img{width:auto}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{width:15px;height:20px;margin-left:0;padding:6px 0 5px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0 7px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{content:"\f120";top:2px}#wpadminbar .quicklinks li .blavatar{float:right;font:400 16px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#eee}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar{color:#00b9eb}#wpadminbar .quicklinks li .blavatar:before{content:"\f120";height:16px;width:16px;display:inline-block;margin:6px -2px 0 8px}#wpadminbar #wp-admin-bar-appearance{margin-top:-12px}#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f112";top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:"\f540";top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:"\f464";top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-left:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:"\f101";top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:"\f132";top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:"\f463";top:2px}#wpadminbar.ie8 #wp-admin-bar-search{display:block;min-width:32px}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;right:5px;z-index:20;font:400 20px/1 dashicons!important;content:"\f179";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{position:relative;z-index:30;font:13px/24px "Open Sans",sans-serif;height:24px;width:24px;max-width:none;padding:0 24px 0 3px;margin:0;color:#ccc;background-color:rgba(255,255,255,0);border:none;outline:0;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:.4s;transition-duration:.4s;-webkit-transition-property:width,background;transition-property:width,background;-webkit-transition-timing-function:ease;transition-timing-function:ease}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{z-index:10;color:#000;width:200px;background-color:rgba(255,255,255,.9);cursor:text;border:0}#wpadminbar.ie7>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{margin-top:3px;width:120px}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7) 100% 0}#wpadminbar.ie8 #adminbarsearch.adminbar-focused:before{content:"\f179 "}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{background:#fff;z-index:-1}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-button,.customize-support #wpadminbar .hide-if-customize,.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support #wpadminbar .hide-if-no-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#wpadminbar .screen-reader-text,#wpadminbar .screen-reader-text span{position:absolute;right:-1000em;top:-1000em;height:1px;width:1px;overflow:hidden}#wpadminbar .screen-reader-shortcut{position:absolute;top:-1000em}#wpadminbar .screen-reader-shortcut:focus{right:6px;top:7px;height:auto;width:auto;display:block;font-size:14px;font-weight:700;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;z-index:100000;line-height:normal;text-decoration:none;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6)}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:right}* html #wpadminbar .menupop a span{background-image:none}.no-font-face #wpadminbar ul.ab-top-menu>li>a.ab-item{display:block;width:45px;text-align:center;overflow:hidden;margin:0 3px}.no-font-face #wpadminbar #wp-admin-bar-edit>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-my-sites>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:0}.no-font-face #wpadminbar #wp-admin-bar-wp-logo>.ab-item,.no-font-face #wpadminbar .ab-icon,.no-font-face #wpadminbar .ab-icon:before,.no-font-face #wpadminbar a.ab-item:before{display:none!important}.no-font-face #wpadminbar ul.ab-top-menu>li>a>span.ab-label{display:inline}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon{display:inline!important}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon:before{content:"Menu";font:14px/45px sans-serif!important;display:inline-block!important;color:#fff}.no-font-face #wpadminbar #wp-admin-bar-site-name a.ab-item{color:#fff}@media screen and (max-width:782px){#wpadminbar ul#wp-admin-bar-root-default>li,.network-admin #wpadminbar ul#wp-admin-bar-top-secondary>li#wp-admin-bar-my-account{margin-left:0}html #wpadminbar{height:46px;min-width:300px}#wpadminbar *{font:400 14px/32px "Open Sans",sans-serif}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;padding:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .ab-label{display:none}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar #wp-admin-bar-comments .ab-icon,#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin:0}#wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .menupop>.ab-item{padding-left:30px}#wpadminbar .menupop .menupop>.ab-item:before{top:10px;left:6px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper .ab-item{font-size:16px;padding:8px 16px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{font:28px/1 dashicons!important;top:-3px}#wpadminbar .ab-icon,#wpadminbar .ab-item:before{padding:0}#wpadminbar #wp-admin-bar-customize>.ab-item,#wpadminbar #wp-admin-bar-edit>.ab-item,#wpadminbar #wp-admin-bar-my-account>.ab-item,#wpadminbar #wp-admin-bar-my-sites>.ab-item,#wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:100%;white-space:nowrap;overflow:hidden;width:52px;padding:0;color:#999;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-left:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font:400 32px/1 dashicons;speak:none;top:7px;width:52px;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar #wp-admin-bar-appearance{margin-top:0}#wpadminbar .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-search{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:53px;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{display:block;font-size:34px;height:46px;line-height:47px;top:0}#wp-toolbar>ul>li,#wpadminbar #wp-admin-bar-user-actions.ab-submenu img.avatar{display:none}#wpadminbar #wp-admin-bar-my-account>a{position:relative;white-space:nowrap;text-indent:150%;width:28px;padding:0 10px;overflow:hidden}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{position:absolute;top:13px;left:10px;width:26px;height:26px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:0}#wpadminbar #wp-admin-bar-user-info .display-name{height:auto;font-size:16px;line-height:24px;color:#eee}#wpadminbar #wp-admin-bar-user-info a{padding-top:4px}#wpadminbar #wp-admin-bar-user-info .username{line-height:.8!important;margin-bottom:-2px}#wpadminbar li#wp-admin-bar-comments,#wpadminbar li#wp-admin-bar-customize,#wpadminbar li#wp-admin-bar-edit,#wpadminbar li#wp-admin-bar-menu-toggle,#wpadminbar li#wp-admin-bar-my-account,#wpadminbar li#wp-admin-bar-my-sites,#wpadminbar li#wp-admin-bar-new-content,#wpadminbar li#wp-admin-bar-site-name,#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:block}#wpadminbar li.hover ul li,#wpadminbar li:hover ul li,#wpadminbar li:hover ul li:hover ul li{display:list-item}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}#wpadminbar #wp-admin-bar-comments,#wpadminbar #wp-admin-bar-edit,#wpadminbar #wp-admin-bar-my-account,#wpadminbar #wp-admin-bar-my-sites,#wpadminbar #wp-admin-bar-new-content,#wpadminbar #wp-admin-bar-site-name,#wpadminbar #wp-admin-bar-updates,#wpadminbar #wp-admin-bar-wp-logo,#wpadminbar .ab-top-menu,#wpadminbar .ab-top-secondary{position:static}#wpadminbar #wp-admin-bar-my-account{float:left}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:10px;right:0}}@media screen and (max-width:600px){#wpadminbar{position:absolute}#wp-responsive-overlay{position:fixed;top:0;right:0;width:100%;height:100%;z-index:400}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{width:100%;right:0}#wpadminbar .menupop .menupop>.ab-item:before{display:none}#wpadminbar #wp-admin-bar-wp-logo.menupop .ab-sub-wrapper{margin-right:0}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{margin:0;width:100%;top:auto;right:auto;position:static;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 30px 19px 15px}#wpadminbar li:hover ul li ul li{display:list-item}#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:none}}@media screen and (max-width:400px){#wpadminbar li#wp-admin-bar-comments{display:none}}
\ No newline at end of file
index ff4bbbfed720dbf34ea52b6d7e018b0faa5c14e8..ab88981c22c4ca04bad07faaf1b0fcfc2258a833 100644 (file)
@@ -27,6 +27,11 @@ html:lang(he-il) .rtl #wpadminbar *  {
        font-family: Arial, sans-serif;
 }
 
+#wpadminbar .ab-empty-item {
+       cursor: default;
+}
+
+#wpadminbar .ab-empty-item,
 #wpadminbar a.ab-item,
 #wpadminbar > #wp-toolbar span.ab-label,
 #wpadminbar > #wp-toolbar span.noticon {
@@ -226,7 +231,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 #wpadminbar .ab-item:before {
        position: relative;
        float: left;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        padding: 4px 0;
        -webkit-font-smoothing: antialiased;
@@ -272,6 +277,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 #wpadminbar .quicklinks .menupop ul li a:focus,
 #wpadminbar .quicklinks .menupop ul li a:hover strong,
 #wpadminbar .quicklinks .menupop ul li a:focus strong,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a,
 #wpadminbar .quicklinks .menupop.hover ul li a:hover,
 #wpadminbar .quicklinks .menupop.hover ul li a:focus,
 #wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover,
@@ -300,7 +306,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 #wpadminbar .menupop .menupop > .ab-item:before,
 #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before {
        position: absolute;
-       font: normal 17px/1 'dashicons';
+       font: normal 17px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -314,7 +320,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 #wpadminbar .menupop .menupop > .ab-item:before {
        top: 1px;
        right: 4px;
-       content: '\f139';
+       content: "\f139";
        color: inherit;
 }
 
@@ -324,9 +330,9 @@ html:lang(he-il) .rtl #wpadminbar *  {
 }
 
 #wpadminbar .ab-top-secondary .menupop .menupop > .ab-item:before {
-       top: 5px;
-       left: 3px;
-       content: '\f141';
+       top: 1px;
+       left: 6px;
+       content: "\f141";
 }
 
 #wpadminbar .quicklinks .menupop ul.ab-sub-secondary {
@@ -451,6 +457,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
        font-size: 11px;
 }
 
+#wpadminbar #wp-admin-bar-my-account.with-avatar > .ab-empty-item img,
 #wpadminbar #wp-admin-bar-my-account.with-avatar > a img {
        width: auto;
        height: 16px;
@@ -464,6 +471,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
        display: inline;
 }
 
+#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar > .ab-empty-item img,
 #wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar > a img {
        width: auto;
 }
@@ -483,7 +491,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 }
 
 #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before {
-       content: '\f120';
+       content: "\f120";
        top: 2px;
 }
 
@@ -492,19 +500,21 @@ html:lang(he-il) .rtl #wpadminbar *  {
  */
 #wpadminbar .quicklinks li .blavatar {
        float: left;
-       font: normal 16px/1 'dashicons' !important;
+       font: normal 16px/1 dashicons !important;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        color: #eee;
 }
 
-#wpadminbar .quicklinks li a:hover .blavatar {
+#wpadminbar .quicklinks li a:hover .blavatar,
+#wpadminbar .quicklinks li a:focus .blavatar,
+#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover > a .blavatar {
        color: #00b9eb;
 }
 
 #wpadminbar .quicklinks li .blavatar:before {
-       content: '\f120';
+       content: "\f120";
        height: 16px;
        width: 16px;
        display: inline-block;
@@ -517,18 +527,18 @@ html:lang(he-il) .rtl #wpadminbar *  {
 
 #wpadminbar #wp-admin-bar-my-sites > .ab-item:before,
 #wpadminbar #wp-admin-bar-site-name > .ab-item:before {
-       content: '\f112';
+       content: "\f112";
        top: 2px;
 }
 
 #wpadminbar #wp-admin-bar-customize > .ab-item:before {
-       content: '\f540';
+       content: "\f540";
        top: 2px;
 }
 
 
 #wpadminbar #wp-admin-bar-edit > .ab-item:before {
-       content: '\f464';
+       content: "\f464";
        top: 2px;
 }
 
@@ -550,7 +560,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 }
 
 #wpadminbar #wp-admin-bar-comments .ab-icon:before {
-       content: '\f101';
+       content: "\f101";
        top: 3px;
 }
 
@@ -562,7 +572,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
  * New Content
  */
 #wpadminbar #wp-admin-bar-new-content .ab-icon:before {
-       content: '\f132';
+       content: "\f132";
        top: 4px;
 }
 
@@ -570,7 +580,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
  * Updates
  */
 #wpadminbar #wp-admin-bar-updates .ab-icon:before {
-       content: '\f463';
+       content: "\f463";
        top: 2px;
 }
 
@@ -598,8 +608,8 @@ html:lang(he-il) .rtl #wpadminbar *  {
        top: 6px;
        left: 5px;
        z-index: 20;
-       font: normal 20px/1 'dashicons' !important;
-       content: '\f179';
+       font: normal 20px/1 dashicons !important;
+       content: "\f179";
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
@@ -653,7 +663,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 
 /* IE8 doesn't redraw the pseudo elements unless you make a change to the content */
 #wpadminbar.ie8 #adminbarsearch.adminbar-focused:before {
-       content: '\f179 '; /* extra space */
+       content: "\f179 "; /* extra space */
 }
 
 #wpadminbar.ie8 > #wp-toolbar > #wp-admin-bar-top-secondary > #wp-admin-bar-search #adminbarsearch input.adminbar-input:focus {
@@ -718,7 +728,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
        font-weight: bold;
        padding: 15px 23px 14px;
        background: #f1f1f1;
-       color: #21759b;
+       color: #0073aa;
        z-index: 100000;
        line-height: normal;
        text-decoration: none;
@@ -855,7 +865,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
 
        #wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper .ab-item {
                font-size: 16px;
-               padding: 6px 15px 12px;
+               padding: 8px 16px;
        }
 
        #wpadminbar .ab-top-menu > .menupop > .ab-sub-wrapper a:empty {
@@ -876,7 +886,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
        }
 
        #wpadminbar #wp-admin-bar-wp-logo > .ab-item .ab-icon:before {
-               font: 28px/1 'dashicons' !important;
+               font: 28px/1 dashicons !important;
                top: -3px;
        }
 
@@ -914,7 +924,7 @@ html:lang(he-il) .rtl #wpadminbar *  {
        #wpadminbar #wp-admin-bar-my-account > .ab-item:before {
                display: block;
                text-indent: 0;
-               font: normal 32px/1 'dashicons';
+               font: normal 32px/1 dashicons;
                speak: none;
                top: 7px;
                width: 52px;
index a6de96a02123732b7764aa2999148a6007a39b87..0a923de8c649a1abe0fa2953b474b3bf3c50d6cc 100644 (file)
@@ -1 +1 @@
-#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font:400 13px/32px "Open Sans",sans-serif;-webkit-border-radius:0;border-radius:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transition:none;transition:none;-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.rtl #wpadminbar *{font-family:Tahoma,sans-serif}html:lang(he-il) .rtl #wpadminbar *{font-family:Arial,sans-serif}#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#eee}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{outline:0;border:none;text-decoration:none;background:0 0}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=text],#wpadminbar input[type=password],#wpadminbar input[type=number],#wpadminbar input[type=search],#wpadminbar input[type=email],#wpadminbar input[type=url],#wpadminbar select,#wpadminbar textarea{-webkit-box-shadow:none;box-shadow:none;outline:0}#wpadminbar{direction:ltr;color:#ccc;font:400 13px/32px "Open Sans",sans-serif;height:32px;position:fixed;top:0;left:0;width:100%;min-width:600px;z-index:99999;background:#23282d}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0 0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar ul#wp-admin-bar-root-default>li{margin-right:0}#wpadminbar .quicklinks ul{text-align:left}#wpadminbar li{float:left}#wpadminbar .ab-empty-item{outline:0}#wpadminbar .quicklinks .ab-top-secondary>li{float:right}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks a,#wpadminbar .shortlink-input{height:32px;display:block;padding:0 10px;margin:0}#wpadminbar .quicklinks>ul>li>a{padding:0 8px 0 7px}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0;padding:0;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2);background:#32373c;display:none;position:absolute;float:none}#wpadminbar .selected .shortlink-input,#wpadminbar li.hover>.ab-sub-wrapper,#wpadminbar.nojs li:hover>.ab-sub-wrapper{display:block}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:32px;left:0}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:100%}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{right:0;left:auto}#wpadminbar .ab-submenu{padding:6px 0}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:700}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:26px;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-left:100%;margin-top:-32px}#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper{margin-left:0;left:inherit;right:100%}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{background:#32373c;color:#00b9eb}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label,#wpadminbar>#wp-toolbar li.hover span.ab-label{color:#00b9eb}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{position:relative;float:left;font:400 20px/1 dashicons;speak:none;padding:4px 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important;margin-right:6px}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{color:#a0a5aa;color:rgba(240,245,250,.6);position:relative;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#wpadminbar .ab-label{display:inline-block;height:32px}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#b4b9be;color:rgba(240,245,250,.7)}#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#00b9eb}#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#b4b9be}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#00b9eb}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before,#wpadminbar .menupop .menupop>.ab-item:before{position:absolute;font:400 17px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar .menupop .menupop>.ab-item{display:block;padding-right:2em}#wpadminbar .menupop .menupop>.ab-item:before{top:1px;right:4px;content:'\f139';color:inherit}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{padding-left:2em;padding-right:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:5px;left:3px;content:'\f141'}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#464b50}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus a,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li>a:hover{color:#00b9eb}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#32373c;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:right}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{-webkit-box-shadow:none;box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account>.ab-item:before{content:"\f110";top:2px;float:right;margin-left:6px;margin-right:0}#wp-admin-bar-my-account.with-avatar>.ab-item:before{display:none;content:none}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar .ab-item{white-space:nowrap}#wpadminbar #wp-admin-bar-user-actions>li{margin-left:16px;margin-right:16px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:6px 0 12px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-left:88px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0 0}#wp-admin-bar-user-info .avatar{position:absolute;left:-72px;top:4px;width:64px;height:64px}#wpadminbar #wp-admin-bar-user-info a{background:0 0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0 0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{display:block}#wpadminbar #wp-admin-bar-user-info .username{color:#999;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #82878c;background:#eee;line-height:24px;vertical-align:middle;margin:-4px 0 0 6px;float:none;display:inline}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>a img{width:auto}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{width:15px;height:20px;margin-right:0;padding:6px 0 5px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0 7px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{content:'\f120';top:2px}#wpadminbar .quicklinks li .blavatar{float:left;font:400 16px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#eee}#wpadminbar .quicklinks li a:hover .blavatar{color:#00b9eb}#wpadminbar .quicklinks li .blavatar:before{content:'\f120';height:16px;width:16px;display:inline-block;margin:6px 8px 0 -2px}#wpadminbar #wp-admin-bar-appearance{margin-top:-12px}#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:'\f112';top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:'\f540';top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:'\f464';top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-right:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:'\f101';top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:'\f132';top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:'\f463';top:2px}#wpadminbar.ie8 #wp-admin-bar-search{display:block;min-width:32px}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;left:5px;z-index:20;font:400 20px/1 dashicons!important;content:'\f179';speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{position:relative;z-index:30;font:13px/24px "Open Sans",sans-serif;height:24px;width:24px;max-width:none;padding:0 3px 0 24px;margin:0;color:#ccc;background-color:rgba(255,255,255,0);border:none;outline:0;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:400ms;transition-duration:400ms;-webkit-transition-property:width,background;transition-property:width,background;-webkit-transition-timing-function:ease;transition-timing-function:ease}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{z-index:10;color:#000;width:200px;background-color:rgba(255,255,255,.9);cursor:text;border:0}#wpadminbar.ie7>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{margin-top:3px;width:120px}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7)}#wpadminbar.ie8 #adminbarsearch.adminbar-focused:before{content:'\f179 '}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{background:#fff;z-index:-1}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-button,.customize-support #wpadminbar .hide-if-customize,.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support #wpadminbar .hide-if-no-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#wpadminbar .screen-reader-text,#wpadminbar .screen-reader-text span{position:absolute;left:-1000em;top:-1000em;height:1px;width:1px;overflow:hidden}#wpadminbar .screen-reader-shortcut{position:absolute;top:-1000em}#wpadminbar .screen-reader-shortcut:focus{left:6px;top:7px;height:auto;width:auto;display:block;font-size:14px;font-weight:700;padding:15px 23px 14px;background:#f1f1f1;color:#21759b;z-index:100000;line-height:normal;text-decoration:none;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6)}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:left}* html #wpadminbar .menupop a span{background-image:none}.no-font-face #wpadminbar ul.ab-top-menu>li>a.ab-item{display:block;width:45px;text-align:center;overflow:hidden;margin:0 3px}.no-font-face #wpadminbar #wp-admin-bar-edit>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-my-sites>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:0}.no-font-face #wpadminbar #wp-admin-bar-wp-logo>.ab-item,.no-font-face #wpadminbar .ab-icon,.no-font-face #wpadminbar .ab-icon:before,.no-font-face #wpadminbar a.ab-item:before{display:none!important}.no-font-face #wpadminbar ul.ab-top-menu>li>a>span.ab-label{display:inline}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon{display:inline!important}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon:before{content:"Menu";font:14px/45px sans-serif!important;display:inline-block!important;color:#fff}.no-font-face #wpadminbar #wp-admin-bar-site-name a.ab-item{color:#fff}@media screen and (max-width:782px){#wpadminbar .ab-label,#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar ul#wp-admin-bar-root-default>li,.network-admin #wpadminbar ul#wp-admin-bar-top-secondary>li#wp-admin-bar-my-account{margin-right:0}html #wpadminbar{height:46px;min-width:300px}#wpadminbar *{font:400 14px/32px "Open Sans",sans-serif}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar #wp-admin-bar-comments .ab-icon,#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin:0}#wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .menupop>.ab-item{padding-right:30px}#wpadminbar .menupop .menupop>.ab-item:before{top:10px;right:6px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 15px 12px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{font:28px/1 dashicons!important;top:-3px}#wpadminbar .ab-icon,#wpadminbar .ab-item:before{padding:0}#wpadminbar #wp-admin-bar-customize>.ab-item,#wpadminbar #wp-admin-bar-edit>.ab-item,#wpadminbar #wp-admin-bar-my-account>.ab-item,#wpadminbar #wp-admin-bar-my-sites>.ab-item,#wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:100%;white-space:nowrap;overflow:hidden;width:52px;padding:0;color:#999;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-right:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font:400 32px/1 dashicons;speak:none;top:7px;width:52px;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar #wp-admin-bar-appearance{margin-top:0}#wpadminbar #wp-admin-bar-search,#wpadminbar .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:53px;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{display:block;font-size:34px;height:46px;line-height:47px;top:0}#wp-toolbar>ul>li,#wpadminbar #wp-admin-bar-user-actions.ab-submenu img.avatar{display:none}#wpadminbar #wp-admin-bar-my-account>a{position:relative;white-space:nowrap;text-indent:150%;width:28px;padding:0 10px;overflow:hidden}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{position:absolute;top:13px;right:10px;width:26px;height:26px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:0}#wpadminbar #wp-admin-bar-user-info .display-name{height:auto;font-size:16px;line-height:24px;color:#eee}#wpadminbar #wp-admin-bar-user-info a{padding-top:4px}#wpadminbar #wp-admin-bar-user-info .username{line-height:.8!important;margin-bottom:-2px}#wpadminbar li#wp-admin-bar-comments,#wpadminbar li#wp-admin-bar-customize,#wpadminbar li#wp-admin-bar-edit,#wpadminbar li#wp-admin-bar-menu-toggle,#wpadminbar li#wp-admin-bar-my-account,#wpadminbar li#wp-admin-bar-my-sites,#wpadminbar li#wp-admin-bar-new-content,#wpadminbar li#wp-admin-bar-site-name,#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:block}#wpadminbar li.hover ul li,#wpadminbar li:hover ul li,#wpadminbar li:hover ul li:hover ul li{display:list-item}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}#wpadminbar #wp-admin-bar-comments,#wpadminbar #wp-admin-bar-edit,#wpadminbar #wp-admin-bar-my-account,#wpadminbar #wp-admin-bar-my-sites,#wpadminbar #wp-admin-bar-new-content,#wpadminbar #wp-admin-bar-site-name,#wpadminbar #wp-admin-bar-updates,#wpadminbar #wp-admin-bar-wp-logo,#wpadminbar .ab-top-menu,#wpadminbar .ab-top-secondary{position:static}#wpadminbar #wp-admin-bar-my-account{float:right}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:10px;left:0}}@media screen and (max-width:600px){#wpadminbar{position:absolute}#wp-responsive-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:400}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{width:100%;left:0}#wpadminbar .menupop .menupop>.ab-item:before{display:none}#wpadminbar #wp-admin-bar-wp-logo.menupop .ab-sub-wrapper{margin-left:0}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{margin:0;width:100%;top:auto;left:auto;position:static;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 15px 19px 30px}#wpadminbar li:hover ul li ul li{display:list-item}#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:none}}@media screen and (max-width:400px){#wpadminbar li#wp-admin-bar-comments{display:none}}
\ No newline at end of file
+#wpadminbar *{height:auto;width:auto;margin:0;padding:0;position:static;text-shadow:none;text-transform:none;letter-spacing:normal;font:400 13px/32px "Open Sans",sans-serif;-webkit-border-radius:0;border-radius:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-transition:none;transition:none;-webkit-font-smoothing:subpixel-antialiased;-moz-osx-font-smoothing:auto}.rtl #wpadminbar *{font-family:Tahoma,sans-serif}html:lang(he-il) .rtl #wpadminbar *{font-family:Arial,sans-serif}#wpadminbar .ab-empty-item{cursor:default;outline:0}#wpadminbar .ab-empty-item,#wpadminbar a.ab-item,#wpadminbar>#wp-toolbar span.ab-label,#wpadminbar>#wp-toolbar span.noticon{color:#eee}#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wpadminbar ul li:after,#wpadminbar ul li:before{content:normal}#wpadminbar a,#wpadminbar a img,#wpadminbar a img:hover,#wpadminbar a:hover{outline:0;border:none;text-decoration:none;background:0 0}#wpadminbar a:active,#wpadminbar a:focus,#wpadminbar div,#wpadminbar input[type=text],#wpadminbar input[type=password],#wpadminbar input[type=number],#wpadminbar input[type=search],#wpadminbar input[type=email],#wpadminbar input[type=url],#wpadminbar select,#wpadminbar textarea{-webkit-box-shadow:none;box-shadow:none;outline:0}#wpadminbar{direction:ltr;color:#ccc;font:400 13px/32px "Open Sans",sans-serif;height:32px;position:fixed;top:0;left:0;width:100%;min-width:600px;z-index:99999;background:#23282d}#wpadminbar .ab-sub-wrapper,#wpadminbar ul,#wpadminbar ul li{background:0 0;clear:none;list-style:none;margin:0;padding:0;position:relative;text-indent:0;z-index:99999}#wpadminbar ul#wp-admin-bar-root-default>li{margin-right:0}#wpadminbar .quicklinks ul{text-align:left}#wpadminbar li{float:left}#wpadminbar .quicklinks .ab-top-secondary>li{float:right}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks a,#wpadminbar .shortlink-input{height:32px;display:block;padding:0 10px;margin:0}#wpadminbar .quicklinks>ul>li>a{padding:0 8px 0 7px}#wpadminbar .menupop .ab-sub-wrapper,#wpadminbar .shortlink-input{margin:0;padding:0;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2);background:#32373c;display:none;position:absolute;float:none}#wpadminbar .selected .shortlink-input,#wpadminbar li.hover>.ab-sub-wrapper,#wpadminbar.nojs li:hover>.ab-sub-wrapper{display:block}#wpadminbar.ie7 .menupop .ab-sub-wrapper,#wpadminbar.ie7 .shortlink-input{top:32px;left:0}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:100%}#wpadminbar .ab-top-secondary .menupop .ab-sub-wrapper{right:0;left:auto}#wpadminbar .ab-submenu{padding:6px 0}#wpadminbar .quicklinks .menupop ul li{float:none}#wpadminbar .quicklinks .menupop ul li a strong{font-weight:700}#wpadminbar .quicklinks .menupop ul li .ab-item,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li .ab-item,#wpadminbar .shortlink-input,#wpadminbar.nojs .quicklinks .menupop:hover ul li .ab-item{line-height:26px;height:26px;white-space:nowrap;min-width:140px}#wpadminbar .shortlink-input{width:200px}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-left:100%;margin-top:-32px}#wpadminbar .ab-top-secondary .menupop li.hover>.ab-sub-wrapper,#wpadminbar .ab-top-secondary .menupop li:hover>.ab-sub-wrapper{margin-left:0;left:inherit;right:100%}#wpadminbar .ab-top-menu>li.hover>.ab-item,#wpadminbar.nojq .quicklinks .ab-top-menu>li>.ab-item:focus,#wpadminbar:not(.mobile) .ab-top-menu>li:hover>.ab-item,#wpadminbar:not(.mobile) .ab-top-menu>li>.ab-item:focus{background:#32373c;color:#00b9eb}#wpadminbar:not(.mobile)>#wp-toolbar a:focus span.ab-label,#wpadminbar:not(.mobile)>#wp-toolbar li:hover span.ab-label,#wpadminbar>#wp-toolbar li.hover span.ab-label{color:#00b9eb}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{position:relative;float:left;font:400 20px/1 dashicons;speak:none;padding:4px 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:none!important;margin-right:6px}#wpadminbar #adminbarsearch:before,#wpadminbar .ab-icon:before,#wpadminbar .ab-item:before{color:#a0a5aa;color:rgba(240,245,250,.6);position:relative;-webkit-transition:all .1s ease-in-out;transition:all .1s ease-in-out}#wpadminbar .ab-label{display:inline-block;height:32px}#wpadminbar .ab-submenu .ab-item,#wpadminbar .quicklinks .menupop ul li a,#wpadminbar .quicklinks .menupop ul li a strong,#wpadminbar .quicklinks .menupop.hover ul li a,#wpadminbar.nojs .quicklinks .menupop:hover ul li a{color:#b4b9be;color:rgba(240,245,250,.7)}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a,#wpadminbar .quicklinks .menupop ul li a:focus,#wpadminbar .quicklinks .menupop ul li a:focus strong,#wpadminbar .quicklinks .menupop ul li a:hover,#wpadminbar .quicklinks .menupop ul li a:hover strong,#wpadminbar .quicklinks .menupop.hover ul li a:focus,#wpadminbar .quicklinks .menupop.hover ul li a:hover,#wpadminbar li #adminbarsearch.adminbar-focused:before,#wpadminbar li .ab-item:focus:before,#wpadminbar li a:focus .ab-icon:before,#wpadminbar li.hover .ab-icon:before,#wpadminbar li.hover .ab-item:before,#wpadminbar li:hover #adminbarsearch:before,#wpadminbar li:hover .ab-icon:before,#wpadminbar li:hover .ab-item:before,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:focus,#wpadminbar.nojs .quicklinks .menupop:hover ul li a:hover{color:#00b9eb}#wpadminbar.mobile .quicklinks .ab-icon:before,#wpadminbar.mobile .quicklinks .ab-item:before{color:#b4b9be}#wpadminbar.mobile .quicklinks .hover .ab-icon:before,#wpadminbar.mobile .quicklinks .hover .ab-item:before{color:#00b9eb}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before,#wpadminbar .menupop .menupop>.ab-item:before{position:absolute;font:400 17px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar .menupop .menupop>.ab-item{display:block;padding-right:2em}#wpadminbar .menupop .menupop>.ab-item:before{top:1px;right:4px;content:"\f139";color:inherit}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item{padding-left:2em;padding-right:1em}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:1px;left:6px;content:"\f141"}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary{display:block;position:relative;right:auto;margin:0;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .quicklinks .menupop ul.ab-sub-secondary,#wpadminbar .quicklinks .menupop ul.ab-sub-secondary .ab-submenu{background:#464b50}#wpadminbar .quicklinks .menupop .ab-sub-secondary>li .ab-item:focus a,#wpadminbar .quicklinks .menupop .ab-sub-secondary>li>a:hover{color:#00b9eb}#wpadminbar .quicklinks a span#ab-updates{background:#eee;color:#32373c;display:inline;padding:2px 5px;font-size:10px;font-weight:700;-webkit-border-radius:10px;border-radius:10px}#wpadminbar .quicklinks a:hover span#ab-updates{background:#fff;color:#000}#wpadminbar .ab-top-secondary{float:right}#wpadminbar ul li:last-child,#wpadminbar ul li:last-child .ab-item{-webkit-box-shadow:none;box-shadow:none}#wp-admin-bar-my-account>ul{min-width:198px}#wp-admin-bar-my-account>.ab-item:before{content:"\f110";top:2px;float:right;margin-left:6px;margin-right:0}#wp-admin-bar-my-account.with-avatar>.ab-item:before{display:none;content:none}#wp-admin-bar-my-account.with-avatar>ul{min-width:270px}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar .ab-item{white-space:nowrap}#wpadminbar #wp-admin-bar-user-actions>li{margin-left:16px;margin-right:16px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:6px 0 12px}#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin-left:88px}#wpadminbar #wp-admin-bar-user-info{margin-top:6px;margin-bottom:15px;height:auto;background:0 0}#wp-admin-bar-user-info .avatar{position:absolute;left:-72px;top:4px;width:64px;height:64px}#wpadminbar #wp-admin-bar-user-info a{background:0 0;height:auto}#wpadminbar #wp-admin-bar-user-info span{background:0 0;padding:0;height:18px}#wpadminbar #wp-admin-bar-user-info .display-name,#wpadminbar #wp-admin-bar-user-info .username{display:block}#wpadminbar #wp-admin-bar-user-info .username{color:#999;font-size:11px}#wpadminbar #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar #wp-admin-bar-my-account.with-avatar>a img{width:auto;height:16px;padding:0;border:1px solid #82878c;background:#eee;line-height:24px;vertical-align:middle;margin:-4px 0 0 6px;float:none;display:inline}#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>.ab-empty-item img,#wpadminbar.ie8 #wp-admin-bar-my-account.with-avatar>a img{width:auto}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{width:15px;height:20px;margin-right:0;padding:6px 0 5px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0 7px}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{content:"\f120";top:2px}#wpadminbar .quicklinks li .blavatar{float:left;font:400 16px/1 dashicons!important;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#eee}#wpadminbar .quicklinks .ab-sub-wrapper .menupop.hover>a .blavatar,#wpadminbar .quicklinks li a:focus .blavatar,#wpadminbar .quicklinks li a:hover .blavatar{color:#00b9eb}#wpadminbar .quicklinks li .blavatar:before{content:"\f120";height:16px;width:16px;display:inline-block;margin:6px 8px 0 -2px}#wpadminbar #wp-admin-bar-appearance{margin-top:-12px}#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f112";top:2px}#wpadminbar #wp-admin-bar-customize>.ab-item:before{content:"\f540";top:2px}#wpadminbar #wp-admin-bar-edit>.ab-item:before{content:"\f464";top:2px}#wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f226"}.wp-admin #wpadminbar #wp-admin-bar-site-name>.ab-item:before{content:"\f102"}#wpadminbar #wp-admin-bar-comments .ab-icon{margin-right:6px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{content:"\f101";top:3px}#wpadminbar #wp-admin-bar-comments .count-0{opacity:.5}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{content:"\f132";top:4px}#wpadminbar #wp-admin-bar-updates .ab-icon:before{content:"\f463";top:2px}#wpadminbar.ie8 #wp-admin-bar-search{display:block;min-width:32px}#wpadminbar #wp-admin-bar-search .ab-item{padding:0;background:0 0}#wpadminbar #adminbarsearch{position:relative;height:32px;padding:0 2px;z-index:1}#wpadminbar #adminbarsearch:before{position:absolute;top:6px;left:5px;z-index:20;font:400 20px/1 dashicons!important;content:"\f179";speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{position:relative;z-index:30;font:13px/24px "Open Sans",sans-serif;height:24px;width:24px;max-width:none;padding:0 3px 0 24px;margin:0;color:#ccc;background-color:rgba(255,255,255,0);border:none;outline:0;cursor:pointer;-webkit-box-shadow:none;box-shadow:none;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition-duration:.4s;transition-duration:.4s;-webkit-transition-property:width,background;transition-property:width,background;-webkit-transition-timing-function:ease;transition-timing-function:ease}#wpadminbar>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{z-index:10;color:#000;width:200px;background-color:rgba(255,255,255,.9);cursor:text;border:0}#wpadminbar.ie7>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{margin-top:3px;width:120px}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input{background:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBR‌​AA7)}#wpadminbar.ie8 #adminbarsearch.adminbar-focused:before{content:"\f179 "}#wpadminbar.ie8>#wp-toolbar>#wp-admin-bar-top-secondary>#wp-admin-bar-search #adminbarsearch input.adminbar-input:focus{background:#fff;z-index:-1}#wpadminbar #adminbarsearch .adminbar-input::-webkit-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input::-moz-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-input:-ms-input-placeholder{color:#999}#wpadminbar #adminbarsearch .adminbar-button,.customize-support #wpadminbar .hide-if-customize,.customize-support .hide-if-customize,.customize-support .wp-core-ui .hide-if-customize,.customize-support.wp-core-ui .hide-if-customize,.no-customize-support #wpadminbar .hide-if-no-customize,.no-customize-support .hide-if-no-customize,.no-customize-support .wp-core-ui .hide-if-no-customize,.no-customize-support.wp-core-ui .hide-if-no-customize{display:none}#wpadminbar .screen-reader-text,#wpadminbar .screen-reader-text span{position:absolute;left:-1000em;top:-1000em;height:1px;width:1px;overflow:hidden}#wpadminbar .screen-reader-shortcut{position:absolute;top:-1000em}#wpadminbar .screen-reader-shortcut:focus{left:6px;top:7px;height:auto;width:auto;display:block;font-size:14px;font-weight:700;padding:15px 23px 14px;background:#f1f1f1;color:#0073aa;z-index:100000;line-height:normal;text-decoration:none;-webkit-box-shadow:0 0 2px 2px rgba(0,0,0,.6);box-shadow:0 0 2px 2px rgba(0,0,0,.6)}* html #wpadminbar{overflow:hidden;position:absolute}* html #wpadminbar .quicklinks ul li a{float:left}* html #wpadminbar .menupop a span{background-image:none}.no-font-face #wpadminbar ul.ab-top-menu>li>a.ab-item{display:block;width:45px;text-align:center;overflow:hidden;margin:0 3px}.no-font-face #wpadminbar #wp-admin-bar-edit>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-my-sites>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:0}.no-font-face #wpadminbar #wp-admin-bar-wp-logo>.ab-item,.no-font-face #wpadminbar .ab-icon,.no-font-face #wpadminbar .ab-icon:before,.no-font-face #wpadminbar a.ab-item:before{display:none!important}.no-font-face #wpadminbar ul.ab-top-menu>li>a>span.ab-label{display:inline}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon{display:inline!important}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon:before{content:"Menu";font:14px/45px sans-serif!important;display:inline-block!important;color:#fff}.no-font-face #wpadminbar #wp-admin-bar-site-name a.ab-item{color:#fff}@media screen and (max-width:782px){#wpadminbar ul#wp-admin-bar-root-default>li,.network-admin #wpadminbar ul#wp-admin-bar-top-secondary>li#wp-admin-bar-my-account{margin-right:0}html #wpadminbar{height:46px;min-width:300px}#wpadminbar *{font:400 14px/32px "Open Sans",sans-serif}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;padding:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .ab-label{display:none}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar #wp-admin-bar-comments .ab-icon,#wpadminbar #wp-admin-bar-my-account.with-avatar #wp-admin-bar-user-actions>li{margin:0}#wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .menupop>.ab-item{padding-right:30px}#wpadminbar .menupop .menupop>.ab-item:before{top:10px;right:6px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper .ab-item{font-size:16px;padding:8px 16px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{font:28px/1 dashicons!important;top:-3px}#wpadminbar .ab-icon,#wpadminbar .ab-item:before{padding:0}#wpadminbar #wp-admin-bar-customize>.ab-item,#wpadminbar #wp-admin-bar-edit>.ab-item,#wpadminbar #wp-admin-bar-my-account>.ab-item,#wpadminbar #wp-admin-bar-my-sites>.ab-item,#wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:100%;white-space:nowrap;overflow:hidden;width:52px;padding:0;color:#999;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin-right:0}#wpadminbar #wp-admin-bar-customize>.ab-item:before,#wpadminbar #wp-admin-bar-edit>.ab-item:before,#wpadminbar #wp-admin-bar-my-account>.ab-item:before,#wpadminbar #wp-admin-bar-my-sites>.ab-item:before,#wpadminbar #wp-admin-bar-site-name>.ab-item:before{display:block;text-indent:0;font:400 32px/1 dashicons;speak:none;top:7px;width:52px;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#wpadminbar #wp-admin-bar-appearance{margin-top:0}#wpadminbar .quicklinks li .blavatar:before{display:none}#wpadminbar #wp-admin-bar-search{display:none}#wpadminbar #wp-admin-bar-new-content .ab-icon:before{top:0;line-height:53px;height:46px!important;text-align:center;width:52px;display:block}#wpadminbar #wp-admin-bar-updates{text-align:center}#wpadminbar #wp-admin-bar-updates .ab-icon:before{top:3px}#wpadminbar #wp-admin-bar-comments .ab-icon:before{display:block;font-size:34px;height:46px;line-height:47px;top:0}#wp-toolbar>ul>li,#wpadminbar #wp-admin-bar-user-actions.ab-submenu img.avatar{display:none}#wpadminbar #wp-admin-bar-my-account>a{position:relative;white-space:nowrap;text-indent:150%;width:28px;padding:0 10px;overflow:hidden}#wpadminbar .quicklinks li#wp-admin-bar-my-account.with-avatar>a img{position:absolute;top:13px;right:10px;width:26px;height:26px}#wpadminbar #wp-admin-bar-user-actions.ab-submenu{padding:0}#wpadminbar #wp-admin-bar-user-info .display-name{height:auto;font-size:16px;line-height:24px;color:#eee}#wpadminbar #wp-admin-bar-user-info a{padding-top:4px}#wpadminbar #wp-admin-bar-user-info .username{line-height:.8!important;margin-bottom:-2px}#wpadminbar li#wp-admin-bar-comments,#wpadminbar li#wp-admin-bar-customize,#wpadminbar li#wp-admin-bar-edit,#wpadminbar li#wp-admin-bar-menu-toggle,#wpadminbar li#wp-admin-bar-my-account,#wpadminbar li#wp-admin-bar-my-sites,#wpadminbar li#wp-admin-bar-new-content,#wpadminbar li#wp-admin-bar-site-name,#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:block}#wpadminbar li.hover ul li,#wpadminbar li:hover ul li,#wpadminbar li:hover ul li:hover ul li{display:list-item}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{min-width:-webkit-fit-content;min-width:-moz-fit-content;min-width:fit-content}#wpadminbar #wp-admin-bar-comments,#wpadminbar #wp-admin-bar-edit,#wpadminbar #wp-admin-bar-my-account,#wpadminbar #wp-admin-bar-my-sites,#wpadminbar #wp-admin-bar-new-content,#wpadminbar #wp-admin-bar-site-name,#wpadminbar #wp-admin-bar-updates,#wpadminbar #wp-admin-bar-wp-logo,#wpadminbar .ab-top-menu,#wpadminbar .ab-top-secondary{position:static}#wpadminbar #wp-admin-bar-my-account{float:right}#wpadminbar .ab-top-secondary .menupop .menupop>.ab-item:before{top:10px;left:0}}@media screen and (max-width:600px){#wpadminbar{position:absolute}#wp-responsive-overlay{position:fixed;top:0;left:0;width:100%;height:100%;z-index:400}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper{width:100%;left:0}#wpadminbar .menupop .menupop>.ab-item:before{display:none}#wpadminbar #wp-admin-bar-wp-logo.menupop .ab-sub-wrapper{margin-left:0}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper{margin:0;width:100%;top:auto;left:auto;position:static;-webkit-box-shadow:none;box-shadow:none}#wpadminbar .ab-top-menu>.menupop li>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 15px 19px 30px}#wpadminbar li:hover ul li ul li{display:list-item}#wpadminbar li#wp-admin-bar-updates,#wpadminbar li#wp-admin-bar-wp-logo{display:none}}@media screen and (max-width:400px){#wpadminbar li#wp-admin-bar-comments{display:none}}
\ No newline at end of file
index 18dd46e5319da8445463a49738ce0bac98817540..e0d8fc1d4f34cbb27a50b5368d05ed75e97c7fe2 100644 (file)
@@ -100,10 +100,6 @@ TABLE OF CONTENTS:
        outline: none;
 }
 
-.ie8 .wp-core-ui .button-link:focus {
-       outline: #5b9dd9 solid 1px;
-}
-
 .wp-core-ui .button.hidden {
        display: none;
 }
@@ -131,8 +127,8 @@ TABLE OF CONTENTS:
        color: #555;
        border-color: #cccccc;
        background: #f7f7f7;
-       -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 );
-       box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 );
+       -webkit-box-shadow: 0 1px 0 #cccccc;
+       box-shadow: 0 1px 0 #cccccc;
        vertical-align: top;
 }
 
@@ -140,13 +136,6 @@ TABLE OF CONTENTS:
        vertical-align: baseline;
 }
 
-.wp-core-ui .button-link {
-       border: 0;
-       background: none;
-       outline: none;
-       cursor: pointer;
-}
-
 .wp-core-ui .button.hover,
 .wp-core-ui .button:hover,
 .wp-core-ui .button-secondary:hover,
@@ -162,12 +151,9 @@ TABLE OF CONTENTS:
 .wp-core-ui .button:focus,
 .wp-core-ui .button-secondary:focus,
 .wp-core-ui .button-link:focus {
-       -webkit-box-shadow:
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow:
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
+       border-color: #5b9dd9;
+       -webkit-box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
+       box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
 }
 
 .wp-core-ui .button.active,
@@ -176,20 +162,21 @@ TABLE OF CONTENTS:
 .wp-core-ui .button-secondary:active {
        background: #eee;
        border-color: #999;
-       color: #32373c;
        -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
        box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+       -webkit-transform: translateY(1px);
+       -ms-transform: translateY(1px);
+       transform: translateY(1px);
 }
 
 .wp-core-ui .button.active:focus {
+       border-color: #5b9dd9;
        -webkit-box-shadow:
                inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
+               0 0 3px rgba( 0, 115, 170, .8 );
        box-shadow:
                inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
+               0 0 3px rgba( 0, 115, 170, .8 );
 }
 
 .wp-core-ui .button[disabled],
@@ -206,6 +193,27 @@ TABLE OF CONTENTS:
        box-shadow: none !important;
        text-shadow: 0 1px 0 #fff !important;
        cursor: default;
+       -webkit-transform: none !important;
+       -ms-transform: none !important;
+       transform: none !important;
+}
+
+/* Buttons that look like links, for a cross of good semantics with the visual */
+.wp-core-ui .button-link {
+       margin: 0;
+       padding: 0;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       border: 0;
+       -webkit-border-radius: 0;
+       border-radius: 0;
+       background: none;
+       outline: none;
+       cursor: pointer;
+}
+
+.wp-core-ui .button-link:focus {
+       outline: #5b9dd9 solid 1px;
 }
 
 /* ----------------------------------------------------------------------------
@@ -213,36 +221,33 @@ TABLE OF CONTENTS:
 ---------------------------------------------------------------------------- */
 
 .wp-core-ui .button-primary {
-       background: #00a0d2;
-       border-color: #0073aa;
-       -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5), 0 1px 0 rgba( 0, 0, 0, 0.15 );
-       box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5 ), 0 1px 0 rgba( 0, 0, 0, 0.15 );
+       background: #0085ba;
+       border-color: #0073aa #006799 #006799;
+       -webkit-box-shadow: 0 1px 0 #006799;
+       box-shadow: 0 1px 0 #006799;
        color: #fff;
        text-decoration: none;
+       text-shadow: 0 -1px 1px #006799,
+               -1px 0 1px #006799,
+               0 1px 1px #006799,
+               1px 0 1px #006799;
 }
 
 .wp-core-ui .button-primary.hover,
 .wp-core-ui .button-primary:hover,
 .wp-core-ui .button-primary.focus,
 .wp-core-ui .button-primary:focus {
-       background: #0091cd;
-       border-color: #0073aa;
-       -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 );
-       box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 );
+       background: #008ec2;
+       border-color: #006799;
        color: #fff;
 }
 
 .wp-core-ui .button-primary.focus,
 .wp-core-ui .button-primary:focus {
-       border-color: #0e3950;
-       -webkit-box-shadow:
-               inset 0 1px 0 rgba( 120, 200, 230, 0.6 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow:
-               inset 0 1px 0 rgba( 120, 200, 230, 0.6 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
+       -webkit-box-shadow: 0 1px 0 #0073aa,
+               0 0 2px 1px #33b3db;
+       box-shadow: 0 1px 0 #0073aa,
+               0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary.active,
@@ -250,10 +255,9 @@ TABLE OF CONTENTS:
 .wp-core-ui .button-primary.active:focus,
 .wp-core-ui .button-primary:active {
        background: #0073aa;
-       border-color: #005082;
-       color: rgba( 255, 255, 255, 0.95 );
-       -webkit-box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 );
-       box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 );
+       border-color: #006799;
+       -webkit-box-shadow: inset 0 2px 0 #006799;
+       box-shadow: inset 0 2px 0 #006799;
        vertical-align: top;
 }
 
@@ -261,15 +265,28 @@ TABLE OF CONTENTS:
 .wp-core-ui .button-primary:disabled,
 .wp-core-ui .button-primary-disabled,
 .wp-core-ui .button-primary.disabled {
-       color: #94cde7 !important;
-       background: #298cba !important;
-       border-color: #1b607f !important;
+       color: #66c6e4 !important;
+       background: #008ec2 !important;
+       border-color: #007cb2 !important;
        -webkit-box-shadow: none !important;
        box-shadow: none !important;
        text-shadow: 0 -1px 0 rgba( 0, 0, 0, 0.1 ) !important;
        cursor: default;
 }
 
+.wp-core-ui .button.button-primary.button-hero {
+       -webkit-box-shadow: 0 2px 0 #006799;
+       box-shadow: 0 2px 0 #006799;
+}
+
+.wp-core-ui .button.button-primary.button-hero.active,
+.wp-core-ui .button.button-primary.button-hero.active:hover,
+.wp-core-ui .button.button-primary.button-hero.active:focus,
+.wp-core-ui .button.button-primary.button-hero:active {
+       -webkit-box-shadow: inset 0 3px 0 #006799;
+       box-shadow: inset 0 3px 0 #006799;
+}
+
 /* ----------------------------------------------------------------------------
   4.0 - Button Groups
 ---------------------------------------------------------------------------- */
index 4b41b81087afeca163afeb8c2fa8d67ff6ad5c57..b7b29b15282093460509ef469bcab454dee54302 100644 (file)
@@ -1 +1 @@
-.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type=reset]::-moz-focus-inner,.wp-core-ui input[type=button]::-moz-focus-inner,.wp-core-ui input[type=submit]::-moz-focus-inner{border-width:0;border-style:none;padding:0}.wp-core-ui .button-group.button-large .button,.wp-core-ui .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}.wp-core-ui .button-group.button-small .button,.wp-core-ui .button.button-small{height:24px;line-height:22px;padding:0 8px 1px;font-size:11px}.wp-core-ui .button-group.button-hero .button,.wp-core-ui .button.button-hero{font-size:14px;height:46px;line-height:44px;padding:0 36px}.wp-core-ui .button:active,.wp-core-ui .button:focus{outline:0}.ie8 .wp-core-ui .button-link:focus{outline:#5b9dd9 solid 1px}.wp-core-ui .button.hidden{display:none}.wp-core-ui input[type=reset],.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:focus,.wp-core-ui input[type=reset]:hover{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;padding:0 2px 1px;width:auto}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.wp-core-ui p .button{vertical-align:baseline}.wp-core-ui .button-link{border:0;background:0 0;outline:0;cursor:pointer}.wp-core-ui .button-secondary:focus,.wp-core-ui .button-secondary:hover,.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-core-ui .button-link:focus,.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-secondary:active,.wp-core-ui .button.active,.wp-core-ui .button.active:hover,.wp-core-ui .button:active{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.wp-core-ui .button.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-disabled,.wp-core-ui .button-secondary.disabled,.wp-core-ui .button-secondary:disabled,.wp-core-ui .button-secondary[disabled],.wp-core-ui .button.disabled,.wp-core-ui .button:disabled,.wp-core-ui .button[disabled]{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default}.wp-core-ui .button-primary{background:#00a0d2;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary.hover,.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#0091cd;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#0073aa;border-color:#005082;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);vertical-align:top}.wp-core-ui .button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#94cde7!important;background:#298cba!important;border-color:#1b607f!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.wp-core-ui .button-group{position:relative;display:inline-block;white-space:nowrap;font-size:0;vertical-align:middle}.wp-core-ui .button-group>.button{display:inline-block;-webkit-border-radius:0;border-radius:0;margin-left:-1px;z-index:10}.wp-core-ui .button-group>.button-primary{z-index:100}.wp-core-ui .button-group>.button:hover{z-index:20}.wp-core-ui .button-group>.button:first-child{-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.wp-core-ui .button-group>.button:last-child{-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.wp-core-ui .button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:782px){.wp-core-ui .button,.wp-core-ui .button.button-large,.wp-core-ui .button.button-small,a.preview,input#publish,input#save-post{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#media-upload.wp-core-ui .button{padding:0 10px 1px;height:24px;line-height:22px;font-size:13px}.media-frame.mode-grid .bulk-select .button{margin-bottom:0}.wp-core-ui .save-post-status.button{position:relative;margin:0 10px 0 14px}.wp-core-ui.wp-customizer .button{padding:0 10px 1px;font-size:13px;line-height:26px;height:28px;margin:0;vertical-align:inherit}.interim-login .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}}
\ No newline at end of file
+.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type=reset]::-moz-focus-inner,.wp-core-ui input[type=button]::-moz-focus-inner,.wp-core-ui input[type=submit]::-moz-focus-inner{border-width:0;border-style:none;padding:0}.wp-core-ui .button-group.button-large .button,.wp-core-ui .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}.wp-core-ui .button-group.button-small .button,.wp-core-ui .button.button-small{height:24px;line-height:22px;padding:0 8px 1px;font-size:11px}.wp-core-ui .button-group.button-hero .button,.wp-core-ui .button.button-hero{font-size:14px;height:46px;line-height:44px;padding:0 36px}.wp-core-ui .button:active,.wp-core-ui .button:focus{outline:0}.wp-core-ui .button.hidden{display:none}.wp-core-ui input[type=reset],.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:focus,.wp-core-ui input[type=reset]:hover{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;padding:0 2px 1px;width:auto}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc;vertical-align:top}.wp-core-ui p .button{vertical-align:baseline}.wp-core-ui .button-secondary:focus,.wp-core-ui .button-secondary:hover,.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-core-ui .button-link:focus,.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.wp-core-ui .button-secondary:active,.wp-core-ui .button.active,.wp-core-ui .button.active:hover,.wp-core-ui .button:active{background:#eee;border-color:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.wp-core-ui .button.active:focus{border-color:#5b9dd9;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8)}.wp-core-ui .button-disabled,.wp-core-ui .button-secondary.disabled,.wp-core-ui .button-secondary:disabled,.wp-core-ui .button-secondary[disabled],.wp-core-ui .button.disabled,.wp-core-ui .button:disabled,.wp-core-ui .button[disabled]{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.wp-core-ui .button-link{margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;border:0;-webkit-border-radius:0;border-radius:0;background:0 0;outline:0;cursor:pointer}.wp-core-ui .button-link:focus{outline:#5b9dd9 solid 1px}.wp-core-ui .button-primary{background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,-1px 0 1px #006799,0 1px 1px #006799,1px 0 1px #006799}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary.hover,.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.wp-core-ui .button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#66c6e4!important;background:#008ec2!important;border-color:#007cb2!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.wp-core-ui .button.button-primary.button-hero{-webkit-box-shadow:0 2px 0 #006799;box-shadow:0 2px 0 #006799}.wp-core-ui .button.button-primary.button-hero.active,.wp-core-ui .button.button-primary.button-hero.active:focus,.wp-core-ui .button.button-primary.button-hero.active:hover,.wp-core-ui .button.button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #006799;box-shadow:inset 0 3px 0 #006799}.wp-core-ui .button-group{position:relative;display:inline-block;white-space:nowrap;font-size:0;vertical-align:middle}.wp-core-ui .button-group>.button{display:inline-block;-webkit-border-radius:0;border-radius:0;margin-left:-1px;z-index:10}.wp-core-ui .button-group>.button-primary{z-index:100}.wp-core-ui .button-group>.button:hover{z-index:20}.wp-core-ui .button-group>.button:first-child{-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.wp-core-ui .button-group>.button:last-child{-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.wp-core-ui .button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:782px){.wp-core-ui .button,.wp-core-ui .button.button-large,.wp-core-ui .button.button-small,a.preview,input#publish,input#save-post{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#media-upload.wp-core-ui .button{padding:0 10px 1px;height:24px;line-height:22px;font-size:13px}.media-frame.mode-grid .bulk-select .button{margin-bottom:0}.wp-core-ui .save-post-status.button{position:relative;margin:0 10px 0 14px}.wp-core-ui.wp-customizer .button{padding:0 10px 1px;font-size:13px;line-height:26px;height:28px;margin:0;vertical-align:inherit}.interim-login .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}}
\ No newline at end of file
index b34f91a50206dcbc312001f570a8d78b367cba70..433249b904cb85976d2cded732ac39e463314046 100644 (file)
@@ -100,10 +100,6 @@ TABLE OF CONTENTS:
        outline: none;
 }
 
-.ie8 .wp-core-ui .button-link:focus {
-       outline: #5b9dd9 solid 1px;
-}
-
 .wp-core-ui .button.hidden {
        display: none;
 }
@@ -131,8 +127,8 @@ TABLE OF CONTENTS:
        color: #555;
        border-color: #cccccc;
        background: #f7f7f7;
-       -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 );
-       box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba( 0, 0, 0, 0.08 );
+       -webkit-box-shadow: 0 1px 0 #cccccc;
+       box-shadow: 0 1px 0 #cccccc;
        vertical-align: top;
 }
 
@@ -140,13 +136,6 @@ TABLE OF CONTENTS:
        vertical-align: baseline;
 }
 
-.wp-core-ui .button-link {
-       border: 0;
-       background: none;
-       outline: none;
-       cursor: pointer;
-}
-
 .wp-core-ui .button.hover,
 .wp-core-ui .button:hover,
 .wp-core-ui .button-secondary:hover,
@@ -162,12 +151,9 @@ TABLE OF CONTENTS:
 .wp-core-ui .button:focus,
 .wp-core-ui .button-secondary:focus,
 .wp-core-ui .button-link:focus {
-       -webkit-box-shadow:
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow:
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
+       border-color: #5b9dd9;
+       -webkit-box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
+       box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
 }
 
 .wp-core-ui .button.active,
@@ -176,20 +162,21 @@ TABLE OF CONTENTS:
 .wp-core-ui .button-secondary:active {
        background: #eee;
        border-color: #999;
-       color: #32373c;
        -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
        box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+       -webkit-transform: translateY(1px);
+       -ms-transform: translateY(1px);
+       transform: translateY(1px);
 }
 
 .wp-core-ui .button.active:focus {
+       border-color: #5b9dd9;
        -webkit-box-shadow:
                inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
+               0 0 3px rgba( 0, 115, 170, .8 );
        box-shadow:
                inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
+               0 0 3px rgba( 0, 115, 170, .8 );
 }
 
 .wp-core-ui .button[disabled],
@@ -206,6 +193,27 @@ TABLE OF CONTENTS:
        box-shadow: none !important;
        text-shadow: 0 1px 0 #fff !important;
        cursor: default;
+       -webkit-transform: none !important;
+       -ms-transform: none !important;
+       transform: none !important;
+}
+
+/* Buttons that look like links, for a cross of good semantics with the visual */
+.wp-core-ui .button-link {
+       margin: 0;
+       padding: 0;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+       border: 0;
+       -webkit-border-radius: 0;
+       border-radius: 0;
+       background: none;
+       outline: none;
+       cursor: pointer;
+}
+
+.wp-core-ui .button-link:focus {
+       outline: #5b9dd9 solid 1px;
 }
 
 /* ----------------------------------------------------------------------------
@@ -213,36 +221,33 @@ TABLE OF CONTENTS:
 ---------------------------------------------------------------------------- */
 
 .wp-core-ui .button-primary {
-       background: #00a0d2;
-       border-color: #0073aa;
-       -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5), 0 1px 0 rgba( 0, 0, 0, 0.15 );
-       box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.5 ), 0 1px 0 rgba( 0, 0, 0, 0.15 );
+       background: #0085ba;
+       border-color: #0073aa #006799 #006799;
+       -webkit-box-shadow: 0 1px 0 #006799;
+       box-shadow: 0 1px 0 #006799;
        color: #fff;
        text-decoration: none;
+       text-shadow: 0 -1px 1px #006799,
+               1px 0 1px #006799,
+               0 1px 1px #006799,
+               -1px 0 1px #006799;
 }
 
 .wp-core-ui .button-primary.hover,
 .wp-core-ui .button-primary:hover,
 .wp-core-ui .button-primary.focus,
 .wp-core-ui .button-primary:focus {
-       background: #0091cd;
-       border-color: #0073aa;
-       -webkit-box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 );
-       box-shadow: inset 0 1px 0 rgba( 120, 200, 230, 0.6 );
+       background: #008ec2;
+       border-color: #006799;
        color: #fff;
 }
 
 .wp-core-ui .button-primary.focus,
 .wp-core-ui .button-primary:focus {
-       border-color: #0e3950;
-       -webkit-box-shadow:
-               inset 0 1px 0 rgba( 120, 200, 230, 0.6 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
-       box-shadow:
-               inset 0 1px 0 rgba( 120, 200, 230, 0.6 ),
-               0 0 0 1px #5b9dd9,
-               0 0 2px 1px rgba(30, 140, 190, .8);
+       -webkit-box-shadow: 0 1px 0 #0073aa,
+               0 0 2px 1px #33b3db;
+       box-shadow: 0 1px 0 #0073aa,
+               0 0 2px 1px #33b3db;
 }
 
 .wp-core-ui .button-primary.active,
@@ -250,10 +255,9 @@ TABLE OF CONTENTS:
 .wp-core-ui .button-primary.active:focus,
 .wp-core-ui .button-primary:active {
        background: #0073aa;
-       border-color: #005082;
-       color: rgba( 255, 255, 255, 0.95 );
-       -webkit-box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 );
-       box-shadow: inset 0 1px 0 rgba( 0, 0, 0, 0.1 );
+       border-color: #006799;
+       -webkit-box-shadow: inset 0 2px 0 #006799;
+       box-shadow: inset 0 2px 0 #006799;
        vertical-align: top;
 }
 
@@ -261,15 +265,28 @@ TABLE OF CONTENTS:
 .wp-core-ui .button-primary:disabled,
 .wp-core-ui .button-primary-disabled,
 .wp-core-ui .button-primary.disabled {
-       color: #94cde7 !important;
-       background: #298cba !important;
-       border-color: #1b607f !important;
+       color: #66c6e4 !important;
+       background: #008ec2 !important;
+       border-color: #007cb2 !important;
        -webkit-box-shadow: none !important;
        box-shadow: none !important;
        text-shadow: 0 -1px 0 rgba( 0, 0, 0, 0.1 ) !important;
        cursor: default;
 }
 
+.wp-core-ui .button.button-primary.button-hero {
+       -webkit-box-shadow: 0 2px 0 #006799;
+       box-shadow: 0 2px 0 #006799;
+}
+
+.wp-core-ui .button.button-primary.button-hero.active,
+.wp-core-ui .button.button-primary.button-hero.active:hover,
+.wp-core-ui .button.button-primary.button-hero.active:focus,
+.wp-core-ui .button.button-primary.button-hero:active {
+       -webkit-box-shadow: inset 0 3px 0 #006799;
+       box-shadow: inset 0 3px 0 #006799;
+}
+
 /* ----------------------------------------------------------------------------
   4.0 - Button Groups
 ---------------------------------------------------------------------------- */
index 9af9882d732509aa0120fbc3499cd18f06a57103..73090e3fd0de698ac99bdc7ca1f7ee44536a19d7 100644 (file)
@@ -1 +1 @@
-.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type=reset]::-moz-focus-inner,.wp-core-ui input[type=button]::-moz-focus-inner,.wp-core-ui input[type=submit]::-moz-focus-inner{border-width:0;border-style:none;padding:0}.wp-core-ui .button-group.button-large .button,.wp-core-ui .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}.wp-core-ui .button-group.button-small .button,.wp-core-ui .button.button-small{height:24px;line-height:22px;padding:0 8px 1px;font-size:11px}.wp-core-ui .button-group.button-hero .button,.wp-core-ui .button.button-hero{font-size:14px;height:46px;line-height:44px;padding:0 36px}.wp-core-ui .button:active,.wp-core-ui .button:focus{outline:0}.ie8 .wp-core-ui .button-link:focus{outline:#5b9dd9 solid 1px}.wp-core-ui .button.hidden{display:none}.wp-core-ui input[type=reset],.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:focus,.wp-core-ui input[type=reset]:hover{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;padding:0 2px 1px;width:auto}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);vertical-align:top}.wp-core-ui p .button{vertical-align:baseline}.wp-core-ui .button-link{border:0;background:0 0;outline:0;cursor:pointer}.wp-core-ui .button-secondary:focus,.wp-core-ui .button-secondary:hover,.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-core-ui .button-link:focus,.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-secondary:active,.wp-core-ui .button.active,.wp-core-ui .button.active:hover,.wp-core-ui .button:active{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.wp-core-ui .button.active:focus{-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-disabled,.wp-core-ui .button-secondary.disabled,.wp-core-ui .button-secondary:disabled,.wp-core-ui .button-secondary[disabled],.wp-core-ui .button.disabled,.wp-core-ui .button:disabled,.wp-core-ui .button[disabled]{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default}.wp-core-ui .button-primary{background:#00a0d2;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary.hover,.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#0091cd;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#0073aa;border-color:#005082;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);vertical-align:top}.wp-core-ui .button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#94cde7!important;background:#298cba!important;border-color:#1b607f!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.wp-core-ui .button-group{position:relative;display:inline-block;white-space:nowrap;font-size:0;vertical-align:middle}.wp-core-ui .button-group>.button{display:inline-block;-webkit-border-radius:0;border-radius:0;margin-right:-1px;z-index:10}.wp-core-ui .button-group>.button-primary{z-index:100}.wp-core-ui .button-group>.button:hover{z-index:20}.wp-core-ui .button-group>.button:first-child{-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.wp-core-ui .button-group>.button:last-child{-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.wp-core-ui .button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:782px){.wp-core-ui .button,.wp-core-ui .button.button-large,.wp-core-ui .button.button-small,a.preview,input#publish,input#save-post{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#media-upload.wp-core-ui .button{padding:0 10px 1px;height:24px;line-height:22px;font-size:13px}.media-frame.mode-grid .bulk-select .button{margin-bottom:0}.wp-core-ui .save-post-status.button{position:relative;margin:0 14px 0 10px}.wp-core-ui.wp-customizer .button{padding:0 10px 1px;font-size:13px;line-height:26px;height:28px;margin:0;vertical-align:inherit}.interim-login .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}}
\ No newline at end of file
+.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{display:inline-block;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0 10px 1px;cursor:pointer;border-width:1px;border-style:solid;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui button::-moz-focus-inner,.wp-core-ui input[type=reset]::-moz-focus-inner,.wp-core-ui input[type=button]::-moz-focus-inner,.wp-core-ui input[type=submit]::-moz-focus-inner{border-width:0;border-style:none;padding:0}.wp-core-ui .button-group.button-large .button,.wp-core-ui .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}.wp-core-ui .button-group.button-small .button,.wp-core-ui .button.button-small{height:24px;line-height:22px;padding:0 8px 1px;font-size:11px}.wp-core-ui .button-group.button-hero .button,.wp-core-ui .button.button-hero{font-size:14px;height:46px;line-height:44px;padding:0 36px}.wp-core-ui .button:active,.wp-core-ui .button:focus{outline:0}.wp-core-ui .button.hidden{display:none}.wp-core-ui input[type=reset],.wp-core-ui input[type=reset]:active,.wp-core-ui input[type=reset]:focus,.wp-core-ui input[type=reset]:hover{background:0 0;border:none;-webkit-box-shadow:none;box-shadow:none;padding:0 2px 1px;width:auto}.wp-core-ui .button,.wp-core-ui .button-secondary{color:#555;border-color:#ccc;background:#f7f7f7;-webkit-box-shadow:0 1px 0 #ccc;box-shadow:0 1px 0 #ccc;vertical-align:top}.wp-core-ui p .button{vertical-align:baseline}.wp-core-ui .button-secondary:focus,.wp-core-ui .button-secondary:hover,.wp-core-ui .button.focus,.wp-core-ui .button.hover,.wp-core-ui .button:focus,.wp-core-ui .button:hover{background:#fafafa;border-color:#999;color:#23282d}.wp-core-ui .button-link:focus,.wp-core-ui .button-secondary:focus,.wp-core-ui .button.focus,.wp-core-ui .button:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 3px rgba(0,115,170,.8);box-shadow:0 0 3px rgba(0,115,170,.8)}.wp-core-ui .button-secondary:active,.wp-core-ui .button.active,.wp-core-ui .button.active:hover,.wp-core-ui .button:active{background:#eee;border-color:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.wp-core-ui .button.active:focus{border-color:#5b9dd9;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5),0 0 3px rgba(0,115,170,.8)}.wp-core-ui .button-disabled,.wp-core-ui .button-secondary.disabled,.wp-core-ui .button-secondary:disabled,.wp-core-ui .button-secondary[disabled],.wp-core-ui .button.disabled,.wp-core-ui .button:disabled,.wp-core-ui .button[disabled]{color:#a0a5aa!important;border-color:#ddd!important;background:#f7f7f7!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 1px 0 #fff!important;cursor:default;-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.wp-core-ui .button-link{margin:0;padding:0;-webkit-box-shadow:none;box-shadow:none;border:0;-webkit-border-radius:0;border-radius:0;background:0 0;outline:0;cursor:pointer}.wp-core-ui .button-link:focus{outline:#5b9dd9 solid 1px}.wp-core-ui .button-primary{background:#0085ba;border-color:#0073aa #006799 #006799;-webkit-box-shadow:0 1px 0 #006799;box-shadow:0 1px 0 #006799;color:#fff;text-decoration:none;text-shadow:0 -1px 1px #006799,1px 0 1px #006799,0 1px 1px #006799,-1px 0 1px #006799}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary.hover,.wp-core-ui .button-primary:focus,.wp-core-ui .button-primary:hover{background:#008ec2;border-color:#006799;color:#fff}.wp-core-ui .button-primary.focus,.wp-core-ui .button-primary:focus{-webkit-box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db;box-shadow:0 1px 0 #0073aa,0 0 2px 1px #33b3db}.wp-core-ui .button-primary.active,.wp-core-ui .button-primary.active:focus,.wp-core-ui .button-primary.active:hover,.wp-core-ui .button-primary:active{background:#0073aa;border-color:#006799;-webkit-box-shadow:inset 0 2px 0 #006799;box-shadow:inset 0 2px 0 #006799;vertical-align:top}.wp-core-ui .button-primary-disabled,.wp-core-ui .button-primary.disabled,.wp-core-ui .button-primary:disabled,.wp-core-ui .button-primary[disabled]{color:#66c6e4!important;background:#008ec2!important;border-color:#007cb2!important;-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.wp-core-ui .button.button-primary.button-hero{-webkit-box-shadow:0 2px 0 #006799;box-shadow:0 2px 0 #006799}.wp-core-ui .button.button-primary.button-hero.active,.wp-core-ui .button.button-primary.button-hero.active:focus,.wp-core-ui .button.button-primary.button-hero.active:hover,.wp-core-ui .button.button-primary.button-hero:active{-webkit-box-shadow:inset 0 3px 0 #006799;box-shadow:inset 0 3px 0 #006799}.wp-core-ui .button-group{position:relative;display:inline-block;white-space:nowrap;font-size:0;vertical-align:middle}.wp-core-ui .button-group>.button{display:inline-block;-webkit-border-radius:0;border-radius:0;margin-right:-1px;z-index:10}.wp-core-ui .button-group>.button-primary{z-index:100}.wp-core-ui .button-group>.button:hover{z-index:20}.wp-core-ui .button-group>.button:first-child{-webkit-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px}.wp-core-ui .button-group>.button:last-child{-webkit-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0}.wp-core-ui .button-group>.button:focus{position:relative;z-index:1}@media screen and (max-width:782px){.wp-core-ui .button,.wp-core-ui .button.button-large,.wp-core-ui .button.button-small,a.preview,input#publish,input#save-post{padding:6px 14px;line-height:normal;font-size:14px;vertical-align:middle;height:auto;margin-bottom:4px}#media-upload.wp-core-ui .button{padding:0 10px 1px;height:24px;line-height:22px;font-size:13px}.media-frame.mode-grid .bulk-select .button{margin-bottom:0}.wp-core-ui .save-post-status.button{position:relative;margin:0 14px 0 10px}.wp-core-ui.wp-customizer .button{padding:0 10px 1px;font-size:13px;line-height:26px;height:28px;margin:0;vertical-align:inherit}.interim-login .button.button-large{height:30px;line-height:28px;padding:0 12px 2px}}
\ No newline at end of file
index 33cf28781f718ce0e524426de9c10d2fb8e4a1b5..fe52fd94ca9901aeeb40d7f3eed45e4538b01bfe 100644 (file)
@@ -1,10 +1,10 @@
 @font-face {
-       font-family: "dashicons";
+       font-family: dashicons;
        src: url(../fonts/dashicons.eot);
 }
 
 @font-face {
-       font-family: "dashicons";
+       font-family: dashicons;
     src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAGW8AA4AAAAAo7wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABRAAAABwAAAAcb+kWhkdERUYAAAFgAAAAHwAAACABMQAET1MvMgAAAYAAAABAAAAAYJYFachjbWFwAAABwAAAATwAAAKatulUimdhc3AAAAL8AAAACAAAAAgAAAAQZ2x5ZgAAAwQAAFl6AACLYEUhCQtoZWFkAABcgAAAAC4AAAA2Cpn6WGhoZWEAAFywAAAAGwAAACQPogitaG10eAAAXMwAAAEvAAAEENEK6Wlsb2NhAABd/AAAAgoAAAIKw8CgEm1heHAAAGAIAAAAHwAAACABVwCzbmFtZQAAYCgAAAGdAAADWi+oduNwb3N0AABhyAAAA+oAAAoztf4M13dlYmYAAGW0AAAABgAAAAYlmlWwAAAAAQAAAADMPaLPAAAAANHVnZ0AAAAA0dXWGXjaY2BkYGDgA2IJBhBgYmBkYGRkBpIsYB4DAAR3ADcAeNpjYGY/xTiBgZWBhVWEZQMDA8M0CM20h8GIKQLIB0phB6He4X4MDqp/vjqzXwDxgaQGkGJEUqLAwAgANkAKxHja3ZA7SwNREIXnJmtkuXfHBbFYsViQFNutTxJsVoMmARUxhSSFxEcTq9iI6dJY2FnY+Gvs1EYbUTBYq5U696GNui4JWNjbeGDOcGD4DgwApKE3I8ASB3acJNbNFttPdg0i6IPh7AfZNEgejVJAIU1Tngo0TyWq0gY1qEUHkklbejKQeRnJOWUrTwUqr8q6rNd0Vdd1Q7f0oT4xlrGNZwIzZnKmEMcACRvIpSHyKZuwxylHUcIuUoXqtEW71JYg09KVvgy7bKZc5atQRbqkV7rsTd3UbX1kwGSMa3wTmgkTxXGnf8DCL/zEd3zDV3zBZ3zCR3zAe7zFG7zCC1zGJSziLM7gFE46e07T2XG2nXVRFzVRFRWxKhbFgoh4h9/xa37Jz/kZP+396q/EMvBTwFKJpX4fwL/XN7iViiEAAQAB//8AD3jarL0HfBRl+jg+78zOzG7aZrMtbTfZbEvZ1G0hZRMg9NBCiwpIWXoxijQJqBgRlRIbNsSGiD0qchaOs52uHbmIp4ce6slx6p16x9eDJPv6e553dpMN4n3v+//8s5l533ln5p133vL05xlO5OCPnOYPcQIncRouhdNyXKXOphP0Nr1ZR2zJRKcnp3sepY9HHqU7yNRHI4/yh6JN5EbuZ9r9M6HRj7ifiYfy3M8c4RL+KjmO58JcVH5R6oE6/RynIcEQMZmtxGwVAkENkSVDHjEZ5DRelmBn5UMkGAiG+GCgCsqrguL+aP2urHW31pQ+OKWkblbLiprow9H6py2WpRZLzohFpmF236QKefTiSy/1FXhTm325lilwaopF2MS/tis31e6ybinLzLWlkpTow/xrT7OzUy05gdHplXbfpZcuHi1XTPQVNOlWDs9hdXKEeLiI1CiruQzoE1uVyagzSCWE6OwFLr/OFyCnhY6WNWtaIjQlAqmsXtMSbWpZQ1PI6TUt/KGWNfDaAvdvqOMT6Rj0ZRqrxyxriFtD/F6RQLfiJjXeuTS6Prp+Kf8j6YxE9/OtvZOEfNqm2nTnUv46Vk7bIndFH4k+xk+jWnKapkC9EW6XvFyu4TI5F1cH9ZrStSSNuEkDCfjcrgItIa4A5PM17FiSiWQwmwIyMUlaIuW7XekNJETMrLRK+semTXe2fLmUSM3NDQ0NzzSMp09ahrTccSVZ0Pctb8rLK2jNi36LSRnZY8UTdPeVyi10XmNjwzPSISy5o2WIlYjjm6GCxsZm+uTSL1vu3NQ7Ayq4MC+ft0a/Yemb5F52YtMmsnAT3GKhcxueaWzgOBXMjzC803JOz+VwRThHiM7nKiFum2wvkKD3TV5bVYCrMhmkApdPtOlYGvBWmXU26ND+Q9FQW/TwtbTt2oeLamuLhFNFtdHGIzfffORm4SA5DcnNi805tBv6VMkLHfyhotpIpLYo2gQ38M9i8RFV78nFeI9IzlJ5CX2AHXB8/5wQYEQ5HD7RZrTpvHyrcKr3gJDflxkhp0VDz3fhiGjA8f+GOyn9RTrFqblszo6z3k0COOvFIJHTiN0mY6Mb4EUDGuWETMQ8eugl0pQ90+XO6HvjIuHatVXfzqXt7Z72Vk97vSCRpiw8lU0PSbnKlXq366J32vo2TK0a1u5phQtJx5zTdC+cyYAz2fQlXII8zJk3pKjUxxk5G7RdUrkJPjxIXBnBgMOs4U0SLjQ2f2A1Sh3z6T+uiH419uitY/ltPt/82US1hv6ZZBNrUXXPbutUi9VqmWq1CD/P9/mil4+99egY3noFyZg/u9pD/0xPkrzVP0fzLJbYhZxAPMQjq6W9sP5LuFHK6NptAyNLvDi0JcSIA1lP7DiatdgzsPTiR348ssSvZEPul9W1RT3f4ViLhqLavswwZsOWYkt/hpw+T1mnqgvzvZNw0C21LbW7jBaLcRdkeBfm6AOJZdFPMcfAI9fJPSCPlFthlnIEhtEl4dIzy9CdKuhK4g6aAri6VIaDfPtvJrw6YlyT3vebH+mpAP0o8LafmH+EwqZxI/TSAwej1x706UeMG/HKxIM/0r8F3g6QUrjgn6yw6VWYbwaYb4dgvmVyFfDsgjJVOXGFBG8VTJQ0UXBCaiFpKntBGV8OnRMiXpVp5uSAJ0snCJJU0rAwtGhrWRpR6TJL/JtI+uV/2Kj1P7T3ywULv3jyJrf78g+vUHld9WPG1Ov1wWXzx5WueXSWnDVq6KQh9K8HtxxdcVbUuq2ZZltBSvLZtvc3KzA8LKuhPW6uHN7eLsnw3pJstPldbtkddLntOm8g6A6aA0G/zWgyB82yyezlqgI+V4FkkNWfZgfvOnpX6yLavaj1ru67gpmffmIeAiXTlhMPKxli/qSv6kxX15kuIX/ZdDgDl3yaGYQzrYtI0YJZUBLIiZXMWkCHduG1rF0RuUCeDDAWRoUzZQAWUbkFUbC5lemdURXwszZIDS+PGDGnjb619SX60S7aHRZyRlWumkP48pUTJqycIJe9TCn9eU6bv5E+l0e3RQRyI2lYNWdE9MSE6iBcgc8ihfJymMc6zgF9UKUyy2UwPyXZqyHeQIZDX+BwB60wRwNBu4bY0wTh1F1EN++x0ItL7/mx4BR9gD5wJPNVUvrE3fSH/lIym8w+krHh4PfS3k1tr7XMef022kY695OMPT0dsQLSSds2fXbfLA5hZQTeV1lLWbCai365mrh8lVlS5TvcARV7b1MVAUjlhx9bL1vZelkH6yVIWohvwwb6Ln2SvrthA//Qmr1r1uyF+evp2Uo8Qj6CNry4LxP2wpg9O3bsge0EXrQmuj8cDkN7UrkIrO3lMC+0AL3NMAZ5MENKYI4EuVquAVb7uPOsd5vOpocmeWNbHLIHoZ1OODfoGM6rEo7l5fAODvYOx4tqexwM5BKP8t+7otgCKzyCHca3IsLsiyaUHBp8BelEsBEDIapPoMATYX80xcKuCocBp3vieTgRyyJMBXwQlvYyGsE6mEqwxagEdxAWBqwSWApAMZyKUQy0GzLC3p6ecPwf6Ye+E3H6QchvWdP3ZMJpxCUcjPkReJYMvZyHuERv1wMt4WCjG/AJTpPZZS9QyS6HvUAOBIVTUVNZpOJW4ZRwqm9oSy1AsTBf2pbpLzxEX5k1i75yqNCf2SacIsW9B1Wra7EvwuzVor//823PyS/s3v2C/NxtCs6Th8trgBrUIQUDRBoiPhvQb4jOZOnO7RYLbek9oCo5YJ0S/SuftSN6apTcuh1oLDq5b4h4/ICF9N3MZ+6I/rWbA7oS/uA9jsBMsXOtsHKXcm1QlM6XEUe+Ko3w6RlWAjM3RGAOmzLSeZzGLigNMJrRJUv2AnfA4YWF55KMBqAgTWYTIA2geUIEAS+7wgWAUjLlEb2GhFRuOM9riIv3+4geb5ePLHjhJ/oBfZF+8NMLCyBPKslIUvnTC71vkJVk/I87dvxIn6U302cxR+rpB0sMaXrj1VNt+pVk3vt3EfNy3yyzKVsUqhry8+mPRpdabdAaDJun2pfYHQbITm0jzxNRUJs0ctLsj3qOk01v/49Q/PXqjYsWCSOURy04pwnijEEPHc8a0lsk+NW8t5wkkX2vrpwvjxtrGVpYpFHN2FJ3oqWF/wdRqwQ+6CPJEi8Qf5Co6ZFoLv+CnNXSctWQR//wJ7pNuLn31Hxy3bfP0neiO4utnBibs8thRslcMluxHK5FAhB70OYR1/VsVTX3nQC6hm18a3S/vPzMGXEdrInugQ1g4jTSKYtyGtAWJVCbz10GeDEj6E5TmRESBgPOXxYJ00dXPTEm6/37H5z33J4VVenZXz16+9x5wlPnK+WPbZ7Z4ErfSYZO/kv5lgPvnb3qD32trbvOV4jTS+ynJVVAeaVw6fiOeqC3bQQACdvgBTXEBsgsur93EvGounonqbqi+6P7hXyEGPLy3knR/eJxeME2BACYktMKHTVAp7oQBxZIlgGuwMtAQD8c0JFYuaq5ZfL1tBs5hRa+tWUNbggJusOQiut2jH2edhPPmhZyGstpG2wpAAz6y2DJMByHz9UAvNVBT2dxFi4f3wuf5oSHiIJXb7MLXhLfYJlqeCBYi2rPnKklL0TCAKbDkTDQQ/EdAvnTyrjWFp19mZdCRbVhfOzABnTtqb5MoYO20TZG/yjvH0YYRJwBIMfgVfNd6YwSF3Vp+MrKgS/Av6SaUFj7Hv38vfduGjO+rz0j0nETy1ZLuyNSQ0mk9x9wTAres/OrIn0dVz3O8kJtoT+BH9AyjmBo/E0Nkj0OXOH9uDh284Vkb/+5KqsqD9Z9lZU3fyGl+caM8Z39J+zFf/ds5Q8pCO4BIiYZLWU1LRUKbisaX+OzZ0mSKr26cXHbouHeZHl57DYfVnH2ZVwOQg9DfLRbnd0yafms2cOLGV4s4g95Rk2bNspkSilaNHEolBjjcyXC8KKeUYvntN8LeI7LD6S78qV08ThxeUIhz9l3cU9cQC130ptJ8zff0APfSI0hT+/80qamUtU9nlCk57tvlBP4DAmesaufb7LD+vMCzuUAdlp5QxoPsLOM94X4jBgNpjonjWNZKZYKOeQuUvPWVT7fVW/RN+hC+oaSl9tbW9tb+ezEJCqx5HcMt8jLh6965MUvX3xk1fB4JmpvZRck/Ec3s6StFu8BHruTnGb4M1nhpuI/aS/iSMSFAIUM8RzjfRUeTLnHjHfZ/ciCARPmDxrtRrvf7vcCPSHthcXV165qBpQNSDssGgCvh3scQkeEHUciyJ8jTyLtBTpKgYUwQn4btkPAVIF/XcDTYUY8HunLxJUCnCODMefcG4Ojyv2Y6jDfX4/QgY0ZWFODqmSMP/7/p3p1sbqLSCzP6sXaxHV97UijYI7VyirDimN1/tp7ZiW0D9b4L16TIPknrhPXwUzmNDweAVBcR1fQVRzhD8G546ou5Zx4HEsRhPKtsXOG+H2iAUuBFLuFbGfnDonHgT1m54Acg1K8Prr/P56TFZpXroH+yGO0pZdRlwx3QX8onKGSGm1GJInqCU5xMSGP/efU2WGvbLDqPGdfJsA0t5JO2PW1K8Qdf0hJSSf0cGeEb8V/qRG6Z1041NoaCrN9D/KEg3c9q3CgwygUi28IM/lh/HBpsvhXpH6ImdhJUBTf2RJ9aQs9tIUQ8a+z+14kb2z8QYEZf+T+KJ2RzihYC/iLARrI78twAE4RTt1HCo62tx+ln9OX6edH27vJEnJ39EXpzEBR+1FScN9HZMnR3uWCml6p8P8RxrtpGY90Lm3FAykpa4hZQxiBUnjsyiuP0T8CefJHzAm/w4kLSwpwGE60iMLNJ15CCtltfV48FRl8+SC8qcH30hCRCPAs4iR6keidop44hVO0GxbDPZfiZGkju2ESdn9DPqSvzqAe6plBXyUfysuj+8fRqugSrJW/nbw/jqyjJTV0dzT6zTdAAoVruAQchc9iTwIqkNVPPHwrDbchnr+Uzudbf1kdthPL2RwUcXaRIkKACspECAQtTIHZDOPK+hN54eVcmsIHmtIZZYmTMUT0MX7TaDCjcMCE3CAxia9vOXx4i825FHDqi5oD18665poXr8mhh+3XZghy/tNW0lQhL/8dPX1YvbT3K/H4TXdH/9Qxc1ZHx6xAJVz0eoZqA1yCQI/sJ/ulQqmIrWVFpBjUoDxP/yf6KL31fbKcPvopmUGWv0dv5de8T1bQR9jh+/RWMv1T+gj3v84HLj9E0stIfhpJN51vQpDhJP3kli0n6Q+wP+9E6F225WT/NQiDOmOyMzOs31Jot3cwNmSynnyTUdCxjtMRd4jE+tBklmHh9XOhRWHEfxHAw8TjcJfDui13O1TNMQleEcrziGffN9/sw0nI6KnuaNPHGWM8uGg9YzI+HkwjIh3l5Jq48YPbVE8SaTqEMv20RkjywjADdZGHWaQyAA2x24xS4+sl9fUlPadL6llGTCmp7/lO1dx7gJxmqI/k82pLfmDI+KK+9uoWl4kQIqRm2Ny1BeXjinJF/uVwfUnfVVKjUkd9yetKHfUlvVNVzTTC8CjtTnIsvnjVlCFIk8NL5eWptEWuMpsZCY9oBczWq0rqgUHVJNBQZkYduBncRJ6cCwIP7k/gyTNiFADy2vx/kWd0JRKNsI8wEkBc13vgx/+YC9cWDdwlNTIqoBZY7bb/lEscq4H34JznSjzibYOh4RPyCmWLD8VHn+09T7MSX0USleciyuo7MZDnOIUHx3YcAX7fyGUOplmQhYJ5ABPFjA8Fcrm77wTKFwDoHAK6G2XOwEyQTiEfs5gyIq+NnYs2AXWDZzlOkYUrPHISPCmTy0U+Ayaiv4Az2jXxh4osQVEJf+i1nXecoj88QyRpKk1BakPIB0gKgJimAO1+Sjx+/Z1H6d8+o0/wX/VspSnCKaCDok3AfgBm/ZXnaeCRnN1YZSKxt9OzREDyrPY10kikZ+gPp+7Y2VOEtWGtDCmE8Wn0CTLlM2I+eieR+9oRdCIZhf3Q1x7vSxXryyMwpslMNwIEMzEqqBz3TpsGBVaijchHaDfU3o10Su9J/hB9gD+EiJg+AH02W9UcQeY0gvxphHRG14R7GJsSeyccK6ShlPpjeB9oRXgNu07QCDBQcB+roQrvhFE5RdukvfEHIl7AhwEhmI2SO5TTMZQOOCbCHZWToP1mpn+RnQDx3S782XUwRlUolpBemjiRfhMM+ubN3dixHV/93RcPbr1B+PxFuvjF1R3bd2zeOG+uPwjPepW8So9NHH/DVqXuN6BudazuQBB+XqyzQJbwB0hFdKUTI1x98MV3kTra3tE+b54vGKTfTBQ+hweMn0iKaYiGiCfonztv4+Yd2ztWv0juYPQFdD8QtACH09kMNkiyDoUnujKUruebVEyY5CoQ1z1yTbiq6ppHENZG97OFIK674VhB9C5PODdXKCs4dgPA2Cy2QNjaUNaoul8iacNFqEB3Jr5HOAoUGrHFV6cjlvKtQkccuEcwQzxFtUD2t/W1tzF4JxxX2I5D2AqYbizB+duWwFrEeKHIOXJI+/n5RiZ5REo9lg4GAT1bUZQo5KNoAJLBIlOFmBfywwqj3KakMboDqSLxOOP2rKjKYM/0BYK4A544xDCMQXzv2oPv3dSXedN7XZulmxdXllX97rJ93whfp71xHfLH176uy85dfLN+/rpv9lUofUuuA5rkDwDRzShhAb7fLMHOHRB9OOXS4FFIY3D5jmAZQXEXcOR+XzCNyCb+Vb6Z/OWKK2hu9ADNveIK4X98hbr8yqZmf2ActZFT5O4lI37YveLv9Jm/r9j9w4gl4h/o0TNn6FFSduaM2tOUwvOqMV5/c3P09n8e2vBY0ep7H/773x++d3XRYxsOKXh0gI7QM+6z8ZeyXjcsOpENv13nNeI2MBoc439N+YLZquh+sLsG93gYl2BvUJWd5wnDnyev92SexyO0Im8M03Pf+GATEANNQVyxTJYbuxOu3AgUKO3eCJfn4e1RPsZS84dWZYbrkTioD2eydUEMhEiHpMOch6vGFZ0hK6LF+E+GzpSUBR77SQ63Kz0YcKiEQLrblS9L6WZTvurwja4lQpa6oDykqrdV2h1mk0oYVlFZ5fN5K20evjQ/M9NwF71j8333LSU5JMe+cOEi+vnCRYsWkgKp7Ea6/l7BJOXke4RSWyVSjaUVwwTBZHTZK211QkNZvtUwxXf1/eSt+5aOGxfNXkRsi+CP/nnRIoR5v+Ad+zGUEE87kINjnCEmqmYEH7gp4j3GasE6An4H5vG6BB7UrNTlBNiJiACoNXu/pPC0cKrnuwjAYBSbdyu1wKIGkByOV6qwubhUAKFL/XpULcDlPIbPSxSIobBwXiChq0yirQz6hNjiSzeRc1N1IZDo+Q6BhW7ngZ30auJJnzZvGp2DhGBfO5KAgE3xH+iMojBQj9Mvu2x6yZAh9JEYETmYSVP3z2N85/SYfM0GlCHnjHH08P6Kktnsh0XsjPHk8U1Wo4gIxYh97cSDiqkTKOdDnBLf8CS8N1xnQHKgux0VXZHImhYULwLFg8LGuK42wsZRUvAWMoFGfPwAge4QTu0kwkuXwLgduuQlGqVf0uhLl1zyEhGEU0rJTujzpp3xUgBHcDXHbAcG3jNZebt4v8pq1g78x2Yi2YqjyGgf4N894nGpEXBpLvYKNKcqqOA8P1LqbpdN0AGIQ+Bjl71VRoMslRC4640P1q7z+lZNW7h6FY2u37rC5529eNd9f/RWLdsPLPV34fnPbBrXnKPR7rr88QkTo1Fiy7eNnTTyT/dfVIKQjpB3YU6r4LnI69iJV7YFvcQetIlvfERPdYeis0LHSOZHIf5BFIPAJOzA+dXJ1kEje0M94zjsqD91oXTAgBok/tfyYYZOwgjiD503KxoUERaQTudmmDwOnp3Nxg7ltD6AJYu4ZUxOJZsBkctA2Rhtgt/uDzK87kfBuF1B7GbE86wD8VBLjOxS6Fg4r5wzMgV5/BpgN11uo8nbPwxwjRnfoXXE1YVlKRk8ycUGb3jcW51m1CSlp9XZLSZdljGnNNNozDSnpEpySnL5fLITr7ra6WyYECzM0RuMNZ6KvDxvptlgLM6xZuVUNU0qLsnOqizMMl+tdADpXOR1JmUU039FwtEnRqoqfPpssznXBpskpKSYA/rkpOSUTK02XZdaGa55LUw/KcvKLqzLEOWyvMxhKSmWfK1WLaeONdlstYWZmRKvyc1tCgMMdpBO6VMYNwOjIAaUBjz/S0VCf5nwXH3JrSHjUzfcuPSlW0frTK/ddNXUKYJzoPAWKHwVC/l9l47329KuIBkjXvPufodGtx74eNzYqy8dH8g/t5D7FXh6jpYEV3tcvheTn+Hq6d/+mzpg4p5QNSu6Fkz/v9Qh7QWSpAPxZCw9t47zyxURsvmZYphtzCBpryJVRIk/bN2oI8AhR+5F0YwiJGdEdlwml85ZORdXw40AHrqVm43SEMCYQZcyrxlpEvRLyoQFqiRAvIJd8Aa9et2guYsZu+zvn96iHVYIVCTGS0oIE1NJFQ57tss+4aLpw4YWFGzraB2dX+xyXFBaXlHZ9+TiE0tPLKr5+ugnC6qrrblDq3JzqwMbJ01rsuRZcuvplCcDZo1WrSFb5jcW5OfnhRbTNLTkCiOrJh1KVusmu53OUU0X37Yne2qSRj0k0Lakri7KVCT7yDPR/WWeljq7PUWlsTu9ExyOM/v0GSVlBsPC3UNLfdlZ28zmMm9mZvRFYLHyw8iBIX0Us3sRWa8bGW0o652yrojo3KKeWRGZnYK5iAQFMajjWzd+Qa/fCAiucyO9/ou+N/nW3gMbydovNtI2VdfGL8jajdJePLMRRwGP+84y5S27LXYhBxgsTgsn4vCcfmwbl582xGYBo4VRlj54O/85m19g80U5Rp2gtBflqBFyOuG/85xiYHxTwjjF8QA1b4AdUxQOONL/BwwrTGDEaoCZW/tLu5UU6bTTyL8AjW3ishEjIHXAeAydwSpUhQS/ji2pyLYlS2+LZA2df2/k/vnDsmF1Ho/+fufdu7fx9dHn6tdumFUz5KIr1tZHUcCg6h+j/vWlh5dM/DF8OGjbG4k3CdtETot/Y/gmCaVIiKf0NrdNL5YcpvNhAR5aRh4ooa/cBpwwioI8d5GTA3YcMEYi4Ao72vhomHYyrq1RLODMUBRMsIEjgj0Z9Xs5BP5Vx4gEvLX6NcaICR21RXcFeicF747Tzthz4fCRlyOoCAkDgu8Oh3F5M4au14hWUA1//0coZgkljGGCiBRgs1MwVXSeie3UAu4vTWhnTETn/IU0D62CBKab8eoGN5K/9u4BKv3uINBEfSdgCgy0raYYzxQXY6OKa2qKlUb+PXoNTg9oUswOT+qCOeBmNgkWYpCJVFDOu+qJL0gQjaLpYzlBGESYbWmVeNvK+vrokron6y6BDH973Yzp9ZTnN1ssxywlxZboJsxMk8RL6mZ0z6iLLqmvX8my9fyu+vreCFw41XrMAtdZp8KF2C86Rmc0Ml3Ur6+v4TH7FwZidQzUxlcTSovlWF48J/1P56RGJLMRNiNV1pcZFk6Fw2iNAykQ3f3785XJ6nC4xxEOoxY/zIxbTrNMpH93vjK0h2X4YyXDzApATmODbEPQDQyQDTggnQHgNb4ocKEM1AunDi8Ij7CtmARrfefNw8Y+tA8I1S8eemhM6FZ6M986daV1eHi+eGD58vdevi403xuJLLj2zoMk+e6779lNzzx3x+alkUgwHLr2t+8vW440ejgBh6HUCGGAlStQ8KEIm2z3o3mtMwE12mMpzOk2RI/hCNLiEeFUXzsCGaawAVSXT7ulxjCz8ImgqCcOdpQFxPgWNdN6LP+156PNG/Hi8+2Jz/f2G1QAnkFwx+yOIqhTR+YDwR0U4xJApB1mz/qVBgzS5WlhjtUzyxmHvUAlAVNgUnmrHMSO/R6M49MC2Z1AVAI2FmKiCFZSIO09RA8f7ucSdh4mw+jI3ZmmYfUGQ26ut7Wt8Zqb140eZcmZGkzX3pLj85bn5uTkzBGKSTsZ/tIA4/ESWVFSXeyuKsnNdjiN+iFXja2pmTustLS+0Gyy03eyKqqqgIQsz8qJyQz4A9IfRTPXxE3gLuBmAY0McwrabFSIWnsM3fvtZrvbLtuDdj+QC2ZvjDbQEq8iFKsyyy63QmbApAMmncheN049t+Q0euNdANUYRbfdqBAbUllhga1wZOs1I2s1szOCQ+Z/vH3Wotq/1CyeNeuaWUtnPvP0qlAwR3212uwINc6Y1WzPctsdUyrsGuKkn2jspb0nMxab+GRVCp9Gnlnrzsq1WofTi5/gfyu8vLguP0+QZTl1avbE4W355ZPKSnt6Hn64J3z2bE+RY7zPrglVjLI7XZNTU5JrPcPD44uryZhAvViQUpRUW/ugoNWXF+sz6BlCCL/fnFlVhn2l8KWKniIXoEsBF+CGcHUMb6PVtyS7G3jF6FtwKzbfvBdVa04SNMsxW2+zVjH1DooaQE16DRGZ0Xdpw0ePxG2+m/cOzStDm++eVpQdR5hOmln9nGgce4Ni8n3jtyPuQIPvBuEsiguQsEQhuZAv/YNZgJflDd0bNwBvfuRYg+fOTQinFPshRj9G3xzx7Y2K8fcNYxvvZJdOVOqABdAJD429M+lk+DgV6CXUzpTBW4e4kQhFAzof73Lkw4Q3psdl/qpzJIqamG1wf0E87VfhrFOd6BpQWvH/ZoiJPqYg0YuUo3FkMtp6jGJHqm+VQkUtQTr/RLIejCvFHqR/FT5i5dsVhQH7p+nkzeh+FDFN+zix+GRcZBq3ZWDwRIecuB1orRBw6oGgLo2U8Ug2eaZ0f3KCrpzy3Z9/fjciHu9xoGAll1gsfE7fCbu6IE+twIROxu/26/dRlK5sin4/vkmNESYRi8Sez7dKe5meXkScroOpgWURpHeFr8ktbOBQ3Q/XdhLCcB3S+qgv5FExZxUB4AeCITGIMgBelW9KR2Mg1Y3Qsd/dv+1SldtQaHGmX2uxXJvutBQa3KpLt90ffYnkvv02/cvbsvp++t2DO87OE2wZTkux8cm5c580FlucGTZh3tkdDxLDxXjV2yS3X24hHeNSgDtEa0t9gn4wrrwiTp3oFHVOUS8aVteNufnIzWPqgox3J8PIaJoZ3c1MSR57gn+Sb7GtHrn45psXj1xtI5cxDp6uu7av/Z13UIawPeoa4G8QvyOsR3lQCcxE5OaZFoFJkKEFNp8LiwikdrQysOsc/ZQR8ReUiXCuMwKETqR3Eppzkc7VfT+GhXxIp6DNZ1i4bd9q1Gd2Lnhk3cqV6x5ZENM2d9NuVJyouta0TFkNKwRJMs+U1Wui0zEbxrvhTLQ3YvM3NvptNCUuA4c5lcy0ZWgj5mJWEnajHYkxP7MLi8tCgELTob4Czf/wDU4D5Rzp2RqJiIbeScIxZu0U7j0Qxtb0ZfKHICvt7T0QiSiKF8CdpJMZVEWr4H0QlwFdksKyitwa13Ejs8HLh1kTEwszOhamG5HPERQL+bVFNKWott5NThfxtzC+prao7wRz5cgvqhWfRdF/cQ1icOgYNM3AU9H9sGc2BuS0vBx4gxh3O7hyYLUI9iT66Sg+Oop48pBijcfWKmmmIej3EMrgYrheyzx3zqnLCW1fvqal5zu8UzS0rOk9gLbGioVvXybsDyLIU/REEekYzCEXsxJQ4FLQKdlj3itOF7NZQS7GLSLeEwPio0wyqKFjL+iAXPvmi8hBDUoUIUfHajTk4AVCPjsusJ+cD5n5Jwvs7BbMYBn2xZvcW2zu5jHfAdTz2IjyLHiIGR9NYqRA0GgSdMSkSN+DbmwJkdXeop4css8IK0PsLB0GJPbC2tZQVq5YtJ3+BkvJg4UVmTn0Zem+meN0PV/w9zvdqGDXGRqqNPzVnrGh1iRNsq5nmOrC6LPKKXm0JYkKim5O4U0RliBs55yJqxmpdsBrgYGCOKA/F+DLalIagPnX4KXzfY2hsPlY2up9q/2l9JhkZmC290aF5ehQlMmqd3MuCuAQ1c7NjK50NVXfWeCcsnr1lMCFOdHvxeMMQEevZMmPio0azmENzIM3md4cB9SURhK0AApVFaOtgAzR2QLB/l9cdxBHO6ILnd76f8GES/2BINyLOob4L/4EabrdvHi93VjgyHMWFhdfOLOkqNBpsxWYMnUkJZl6SZJGKK701jUMHTXy9ttHjhraUOetpAeZH1O0GO69okC511Ex4+IKB96bl5WthXvJe/QnXo7d3Dj+9tvHN7KbxW2+9SPNvjxHgTErXS8b9JqM9CyTrcDmKOR5azHxpKtCld7Ckhxran5+qjWnpNBbGT3InKwe9V0xMjN2Z3qSXp+UjnfmOYrseCft5tNit+ak5+en57Bb2VpT8H0K6hkAMKSp5AzAhwQYX1RbqGQbcIcp06+966rrQyYyjzShNV2kxyE8Rf/xMD2q6gKAUMKnuRqWjyWppMJIqgBG3Rc9omquuAPX4FKikxdKh9ERESgmmOlJRFLZ850mbz5TmAFpWEbqYWxQCxo0qcyxlREISnJAXjhuOZnedZo++ho9QqMVhdzPkbUvOVx55ZVXPjxp+rjWqhvI9V8kfXzHfcs3LStZu0zKaJugzb+FfkL/eaT9IfEefsclcmr22x2qEsF7/+zw1EfeSS513/7x5dkNHSOTmd6Q3BDTh+ShlBqBjGzIMFcxSMPgjl8XywGOPfDkBvLtF3ySwGumt7dPj56w8iGWeVVWb5jRd7kkfEh/lkj7kxvcpHzDk+3vz1BsFxT8+T3wLTkIi5w2XxLhPMSuq0oh2US0+XjOAQcqsylD7MdeJrGb+FZ9AO9yP537yVFyAwl9f030BPHtp1/T9cd2kfRlSy+N/q1148auje2RY+QOcgGxv3spPXr1t/RNuuGDP5CrifkherRt8WL6z5uvmDF9w4bpM66I6c8V3OpItIzVeYHWZ65eLmZZDVR7vy+FTdzp9HqddPGRvO+rRl41bN2ORz78MMo7fQAGvM6eNoePX/7jXbW1f9Q8fMczP0Zv9TnETqeX2d+hzvt2eJYB31vn1dvYM3SxZ+i8wgTi/B8nPVnbcvvF7Q+/+dNPEf5TkntwxAju5+TfP3uU/gX7D3CLIiPSME8IRV4KK57r12PTbvF4X3uEpghq5sSEDF1fJqLKdgVgn+EkooGxfkN6DjBiLvDS1dxorhVnpVXwVoV4pg2QRMlKqkLEjfovzHvjB4I+wC4w65mHEYEMIhK34MLZKjmrTLKAFthufQBAR0Cwy6KjYmxRVWuFOTX90uFNbbQlteCCyy4oSE2bc9kcYTEcVA9Rji4es9EZOnjdB68O2aTb2DxuY/SpZUPb/MOHLtEuq9jbVeRKFiq7Hqpcpl0ydLj/kuErUrUuKaPwolnjykcvXVcx+qKLHghuXbhwa7B+woT6/lxvM3ly0zPzPn2etvibmoSKW7rptXlDysiK3c9Lybrnd9NbyobkkfUf35yhldicGM8dlNdKy5htuZmgR5kGxTqE+Sk6HWarxix9s50+tGNqYC71Rv9pmWJdZ7GoxvyVdpHdP2VVub25Pn0wuUYQW3fQx3a0XL0wuoIWWyzr0RX4xE3CxouTcswlpmr98NRxAsCdO0i1dKv0OFfM1TCNfZoAYDmkCiIRbrYSHuGxqgxHJSTrGbx2+xSYbzYJMwx8piM32eIyN4+9qHlSlvui+bPybOmlFz916Woa/emzLq/FmO4ZNWPRyssvedI656KWOUJq9ryZU2fLvLRHthZVBP3VZl1m1fhRw9NM6ekTho8+TqN9p0aNbcyc9fiqYbtu2nXdleGW4tTooqaUlNHTF9jyh+Zbpswenx7TEZKdjLZCSUS/hbDehoYiNtKpMFXAyKExJRo8AmHXO/EtlBfRFKQiFfk9KWF1pALctXHlwFkOZ3Zwg7gsotAMMMXF/hwJOBpIGuFlCfh130C58zy5c5mtQworRFOUlLzuJCM7O62zfuts6GoIUZNSzLcOTknJZyTzAVLEWK6PH6CnhDYmJayp2RNL6THnUyNGNL5C73Y2NISenhcrLj4nVeSZiu0m+gs6mO7Zy0zI0YWyCmkjKzGi5MaHclckTEoIEEAEgAWUSXvDZ18Obzm5dcnFFy/ZenJL76TIQr69SzjV1c4vpN1hIPR7D8Cih1PFxXBZJLJ3axc9FGnv2ro3QvZd2BGJdHAiCXCTpLtkHbO/dEIbKpl/eB6w7Q0w88uJ7JZJgYKHsB/dBXFCUZTd+qCXmIOC204OBwJvbTh5csNbgUCk/eTXG8n8h7/5dt9D33zzcPtTT515uosIVx2JbuvpfWfjR73besR3T37dDpe+1f71yfa3goFINOmbh+Hih/Z9G35qIyMhV54oj75wnDd+4Y3+9jgHcytRX5wExzqAonFJpwsgmAd9QfVo/oaajCBLnG6gj81umRmNFUGJqJwTgm7RrNMSW0QRvQFDYd1Fu9HpBjLk9K5dPbuIJxJtkhqZbCyTpqg2oZvmrl1kNjsnq+Na+55diowa0m7i2bWrahcyKHiGCTB37aJtu+CPeHp2KXKzmN9T3P7UeI43Bg5+vpWIRhvDfcSfQJEaxeP9hH2LYtcabWKcD8kMDINkWADWVyJrgaPPxh4Kep/4JHN+HdKZdfMzP2G8NOCAocyXD9cu4yO9OugjYMR04vrBCxW6QhHEtEZwHeN65hLrkJQ6lHtjqnyUZqJSAsUvEdXTb+FNChiIxAGDgoOZ3qORebMzAxEzNARd2M++zB+CYQiLhr5M0RBBbm7AxgvtMGu5CUz2qAAJlD3mOwLE4Q5wzjTeZJbKVAgj4WdVybwYKBPdIYFYVWmClpSpAIQu3xn3dtu5M+7t1jecbnl0LLmRcLayjGKfvanS76owtJZVPRMaPfe6CcUpRKJtfE5l/bDayuQknWuYsDmv3Jouq0StWi0bQ7XVpUluoZLVtXNQ/T3uwz+Q6uTgjt13ekWTq9gq6kZMbq02pOrKfWNGVNFjj0/fMrWhyFZoLvaOriNvV8yfPnPkZO+wnMxM7wV11Y0F1w/257HFqZYBP/SY2bKStxeUEZhOGp4v5P/KrE36JUAlG46sX39EeIe5mamhQHFeT3BHL+Knrj/y05H1vZNQIsaeu5J7RxZlEeBEFcNTGUi/OlDUGWSIKiSUAd6XzUQwh4hDxRg7vz2HEGfQJU676f2ZplvP0BP08E03vFG1t+DeVZf8dPy3l2WMvudzSIccojr3M2PPEhsZSo9bVGTuXFJOQ3yq1DX2DP0z/R39/L1ZprGj/rJ90brX64boRu2Buw5fBuklc+m7/MiLoHpz335LsSpFIF/QPPpKNy8DjNXA3HoF6CX016jjxmJ/IeGSAcjVa0OxLRzKoi2kqgW22ExgIVYFgvoAI3LZSS2PVwCKIcpFaGfdSQ9bS1S7X3Coh9h41UhZX0ufyy2VyRswMSS9ISf1I2OVNnp/5XjJWRhU7xcLc+hv3Tl0q9mTlDSKjsoqVN2bqlN9RMfymuwsh/ZrQ4FRK4jHy519WfyJpx0FR8wjCqxbVWkF2aaqrN7N4zxuodnuukXrsmjTduSYo/MaZgrL2GmjxZLMJfrEq4B7wVWkIXGHd1UzgrBok+pVJkdB0IUgKiYxQTl43Bc2A6jAadxMtFmFNcXBmuJ4owEdYb1VDs55XsdX1X9yexVDgo+5vcoZxMXpfEEYDnZ/hnzkXnqa7qBL6XZ6eg/zfX3wHXIZSen9hD62OjPdlHnTTKdxPbnxr4+T4BU1yzTqzCS7KjjSbqcfZhbBEVzROdt9ududaUrPnLlJSEtJNsmaJf94+9+9r35Jvx9NJpF/EP7aG9Yvz31EsJBdWPe97JnvPMicXfeQFKdwi1qo9pNk8uIfr2jTTGvJcGeXp9dIc3YN65k5UxhB1CoVH6olKZIgkLoQUdPHyvKtF03c2PTKqf+hF1/O3xZtXkEOEun1B/sWkfuiI0ttU8jfFRvMuJ/0tPP5GKA+5r8qQyM0/yCvTmZ7gzlZzXwRKKM/0Dn0V4/QeZMdk052jLI/IH+K6bHi2tpiUlyMgUd+/QiwiJJTSgG/KHMmzORSZi4b6NaJ3AzFC1UWbIIXZQiJXgt2vXiu8asfXgtpG4AbwClgyBFYdsBNuEJ8A9Ab7hAJyi63FyaWS9V8e9mM7AvpF98/MpbkoEeqgttow9th8hrmYhhPcNPXLqevXaUZ5m+8Ll8Uk0no+ZYphxqISpIE3rZtqHeo5n+asz7MHqsSRIM7j6RFmyLo5arUAcy785VE5ElTln/yyfJh26qzHdnZo01Dq6qGprldtuRkZ3b1tqGvjNzQPkLgER/dxHXKDXJj3J5FQ0ySTEQ9FwyY0JeJdxMxQiYUEWefK9qyU3ikwr6ZfhKddD3/KNXyXR3RibKBPu1Z5+pz7OS7hMcrnSq6KTr+ev6Fvu38s3Aan/E0t1LOEyOAZS2o++SY/Aw5Ry1RNAyJh1w+p3cz01w5g1+yb3Xu6LBnutGYy783kKfX8mXkjQs7muk11EOvae64UIysnuKrMCSJYoUPyYT+fG8OaSLqss/pDyT98zJ6BukYtDU4Lh7vl/UnWhIdR2t/ZQOsPWD9o/DbCs2rV6jd+DSBnIQyTakx0vMdShtRqMswUjNab3S1q7rau3q2ospiwOdJB33BtAyDa9HHkaAJeFMWCAcrxBQq/DHmU+eJJNSJFvzoPNd7APYJOhFYvxbOi7hO5TUkkTQeyAaZ9wOHHNQDNvADDaGzWYU8IpxKKb3lrpNt49tvu63d7dLkzZm5acXKCZVtXz14ja2AnGaw2jDiN7fflktTctu3XlVcLKvVOSP8JSfoZfTvJ2+co9ertKFxHbf/6V9k2NPoQdN3WpUxYeGLbSptaWlDbrRJqSqmez0t7T1/36PdVL+m5Zy+T3in873Rf3yH/621rP6z5Kz4sfgxtknD9zuEiR/TPWTedrqH3ruDzGU7Mk8cC8d7tseP5+6g95K5Ci+oyOoFrgyojOnchdxsbl4sNkBMSNkArKA/4I7rXNkvL1Gi6a1ihL6bnbWQgWJ2fwj1toqXhF2MKeyZ0l6NNjW9L+jT0pJSVaIoETk5pcDuteRka3VJSTzheV4F+Cs5NUWrN5gzhZ9oSvTkDfV+f67FkG0pchcMC/qqhlRUBXLTHXyqOi/f568RtsRNWNCHU9VFa5NT0zOyk1ONmbxESktLAH+nZBgyM3MynJrkNKuQoQdyUK1xodJhSmu+zecLbhTVUpIsy5IkapJkIUnFbwz6/DbbB8wqIhJmPlYD/BH2WyDWbwu5pUzW9H/pu7gRw/+l/8igPuyz/Nd9WKZ0D33yf+lH/nA8FgCaLwOvC/zIx/9dVxKJddJv/nNnLmMXoe0PdujA+i/ipsLsc7viEnIvc6lBjXf/jxkLxH6EGQHFBejxMxgWSek5s6wzB3XuINTCfyoAXWEyWW1VvvpFTSNMplSBJMmpqcYMS1axu7ysqDgrK9OUkiZrhNuqLHKddWVw2sq2BQsuvXC5p62kIads6LTyZyY+PHzhvKaHPpw8R1ynD/qrK6ocbqO5tm7qtFn6JJfNUQADnW3S642WXJfD6c61Re+fdvVZlYbXAUWlTUlJUevV2Un65LNbJq/yW7IfvpZ2L19OPNc+7KtncPAg8Ks5AGttCAe5fFWG0YBAI43Ae8Y8FH0ud5nK78vQwwRA8gQ3gMhAtggTSRURbi+urTMas+wKQWLPUueM9Ht2tfGt+SVZwfJImS+rJF9efjuld/o6VoUtVtvSIiVCVtFSW7J71dLrfHcSvic8Y4a/rizgL69L4Bn3cmrmscWchomsRmYlrDDfbapmZhpwCFhIJWYEsx1fx2wgFfgkrmM2Rni9eBzZXHY1NwhWQv1Ouw5BmUwG1RhBcT8z34/5y5F+PTarH+5IqFQJARSOuWIPbj/0G8JJNxlUpdDBrB+agEaJ1T+4/XBHQqWIj8lpdvkv2g94Fj2qg2RQlYM765fthzsSKk3oqgQ5PvOdMJ/Xczema9KjGOA8nrt8ecyx8rxeu/QNdlLxBon5PEJ/HRnwF+i3CEX7tCNnKuIb+tIz/+3+PVyfGOsHPYPGAo9zqRKdgkCj0zDQTxmG/AmRmBwhheQ7uIz0JDwe9F5igYwOQjKTyohK0CPIERmpAK+vDNhFdxryPrYAEAe/FmWHv41uovf9vGsX9zOZQzaTORzkf45WkQtJ7V+2bPkL/T3dR3+POX73lNFr7g7O3/wYvXP9Y4/98/HHSLl32LxyCy9cZXJW+v2VzuTPurubVo4CaCkgdJ2alFvTPHG48VejC3l3/Uzv+8XzqxKfSmpZS5yluS9vDM8w3bt4/WPhx//52GPrr3iMJtfqL5g/K8/avHHqMEeWWiAtH36octWOmzx5dFCXvnDvgnEFBhKzW4/NQTP0ezmLtmdTIui5mOKD0awsip7Y76XnC+h/kS9hSmEGU1ASCuXiyGgTqnLv1bSGwqFWzb1w0JeSILzYnhAu7EdFO78idu0KOGDeExYjVmG0oEtFTBbcnZDGTzMrGZTVvicvkqcDd50NGLYB3s9VEAtoGSQBc+KBT09QFYNRqVhoQxSXysSH0fHS0FwF3jygamxt90Tf9njKNpTwAc/3no0l/UclDeQBT+vGEjr7aQy3CKdh3/toQWWlTqf1jBs/JD80WqKteHu7x0Pw/lUeOCrZ6PHwxXD/xug2OhtvIg88DRV5eD8GZIx2l64Kt2Zn583/Y+DClRfAutgDdHSV9CU3mbuIm8+t4jZzO7i7ULdsQG2HIU2Sy0S/IlsPMudBFPMAZ6YYDcTDIMZSZaSUC3BgIUfi8e5M8fBgRDJaCb5/EOgHGFHRxyQwsqTYM4hxTSMcm72Yh2sgL33a2nW2tUCfXe6qt9dpksf7xpUVFLSeuaC1deHyreqMjoX+W5w65NswoBpsmNU57qxc2JGh3lqxJLfvVlcIx5ZsUgb4oJ7P1Yf1ubxeqw1riUavTafd6Vq9xUg8Rgt9APcWI+2G/fowZnEnvNN6tqvVN+zyKc2llSa7pK5wTL7wllZfa2vr2dbhDc9/Ve6/5uuW3Bppzd41VXhTlbKHQ6k+q+Xra/zlXz2fOzSDXF5XWMSAn6Lpp7psfU6O3mhK7jEDRtYBg/K1wqXEorxxMTsQ5HlqueFMVouiAWPAq4tFobQo8r96ItnjoStjaYHbGJMGKtrGuFhIyI88f/lFKzD0UwvOf29lrEWVXgzS1tUe4ctjMXUAX6x6Yfp02o1mOISm4nL6NIM5yUaUfcaninwh3N6F2EgxWmB+SHF5dxJnBChQybUi5CW+fmdR50CWWbfEjFvQtiXxCD1MY++BFI1kj70uu9ds5atCKJ3iWCIE4SQCbL/Oit45Qke4sA67HNqnZGgb6mBwI50DucP3AShQ2zTqAjVk7jt8z978OzvaO+7Mf3BPVNx0/e3OpgWjiy0v0d/SDvrbl5zDNs6w3yntnbm88HKPs6GuMJ6JHiGz0XaIPsAsiAby9Sue9/+EQIWUEEI/wtxP/udXrHzKl9Tocg1N8j5FJ7pDSfrKYf5S2r3i+WXLnl9BPDVjxmclhdAekfkcHGc+0zboyaHcCG4MNx5WLxcDLioWZMaZeKDY7ivdiOvOec4xCRplJ2xiLBWWOby+jAw5s67MNf2Z6XzroMPoKzDWbMCLUCPWn0eXN3STiO5XUnGne+mcaVnZSQVzL1junjdu3Lxzjnt/RjuqRJuqWJ6/GiMlMWtvJUV+91XAI2mykTNwuVwhylfS+IIyoJdg05sQ3ugBASN74pYEAC1upnuWTaqx5PWKQ0ePHD1UQV4d8vmun96c51298Dcv08CsUVPe3L1g66xbesbPG99zy4wLGu4Qi/venrOtsXHbHKFq1lIVcWw/PGmhlX5ZRjMeSb/44JToZ+HpXdMXGFdNjvvdR6R7YSyYdAC4AYx7bCcSkMLIapklDCotyXod2gGHCAuVSmSdnkm2Au6ApLlgfH5j7VvT6Zkl9N/TPqxvzJ9wQdM4XmO4d5m15q2Fz+oNo7tOd4026J9d+EGDY8UDBg0/Rry4bP+rF05ZpKap5F8pi2dc+Or+0gIhVHv1T6HpbnoNH8g91dHxl23b/tLRcSo3+jtylW1u/dnNtQ18QpyVVIyrwLGoIUA6hQQgVGW9U3DHou7cuv+rd571B86+bBj13iHhDL2RrC75MrPvlrI3bWQ13V/Ir+W3y+pFt9zi9aF20dD0eEfP48RBMp2byVM+WnNxHj1Fvyohd9C53DnxdrS/jLfzn2Lt/KcgOxizS+iQGlXNjDJE+9JOFjyvOYK4uov7lNmzlnE13EjAbYoXfBqP+hC/zwHgxIvITHKhZBWVrTbZbor5EsCqcZsCzHwbx1BMiObF0Jm7TAKUhaJvk3BP68i6FY8t3nT0SqJ6Ps2XUm9W50q3v3LJb+aT1xd0TjGUXOW3TXy7daFW29mK+5tUk1jYr74HHt8tqlLNGS6jL6W6+po3HhOaQh3zQ6tmBRs2TLzq96R+aEkJEV7dNuPeueEZllDLdfOLq5y5094U9qy67AGBv+uyVfuGKvHDojVXLjNlpefk6i1pDnUGv31OeDvr90lktHyVtJXTKRZ/qgwzRoZVYsS6Aw59QRnvthNThtmuRIk1Syqh7wlS+mrmETT7P1Xw4z1LXww9No/oLtv8/cENGQDUav5W219Mf5C27qH/2I8mkLe9PqfltbZNPS/Puu+zTaRzGD09LFYEa7eKeKU90v3nk40KMdnoCqItINa+P0e7L+fPuC1Lvo9+eAlfTFfwZcuiH0ob6Q/2eXl9n1/Ol/G9hVaBvhn94BLeH/XxFcujR9i7vgnczHLmm6vEtwPgxqyVfBrCLFZgbruAGzeZyTVi6aFDPX84JLTwDxhTDMZRWdE3om9mjTIaUoxS47N9B599Vhj7bN9evkg3xGaVDXQT2QykjG2ILvE5WhZ3+FyjUYQC8HoMEmAcZuD7gUdTwIGGBOTlraGe6xDoi+tDrddoxdQkupRsyTZoXBo67thHdBxkDNlkC12alCpqC4N8G39pkHcJHXhPXzvshfe09swkuo0utRqTeTVZ/dpr9EY1nww01S5yeVKmXVtYTtXkTDlb7ytkjTwb2mpT2iojroS2BqFPYA2W8YAv84jIQWI2yZo1Lb0TUeirenrK6p3RvdFFcoomWWNLSebXkK9yUxxZNuEyYf4Fk23Ubnvywr49F06ykc9sTwhNfReRd0WtRZuejD7fVzi0yalm9N3v5w9NzHbew+QH52pq9ZLsDBEiutx6K4lbA4tOk1koI6IQCIoANM8b32vsbXNL6Y3+wyo9vbF07m0bDlMV0271PUdWs2NhPlxBVvsPn4/7VE2I3/Vm7KrofqYNey1W7b9itZzL6+Yg/vlllCoHHMJ7wQHBKFEkmXgNACHOG7IKX8Bw//30O2abfj9pS9Pw5FX64dy5RHX+EFby/cSQeBNpSxL5btKAak6SzhczmXCcNsBVZvpllEcWbcRG0Gx/ANd+Hd3PXIEGx7nonRQLtZmi2CsoPNx/rndQIHPV6r5MZtN8bsQSBUSzevv71DKgxVbqRS2YEn8BdWKDnxKLrEFTkObIBNIDrbRrxfreScwpHp/HwrcooRYiSuB9xcEKYyD029wAboh7TZ0vXjKG0zezuD8KYmEkMk1hptmqPYj3wiiFxNCOgIX2nvvNhRjhQvpl2eqYZQ/aREmNkd4DeC3ir7522o3a9Vhsuvj1YlyCrgIAgh7QKKfZj+IfZooei3/Yxhxf+Fa0QGd+Mhi7sD+mRRnjtlEIic5wQOvpmOsNBtsKBtB/qf847v0sHo+a2hcvqauvr1uyaGOJJW9SnhV3FivuFhRardY8WV0XWrTozKLFdfXRxwsxsH6Rqgt4FEteIQy9FVPRYM0thuwgGFDAXcwt49ZyHeddPYGMOFwwssaikj0d0TUSSwp6CjBjbH0Ard7SiCkYsDKrOCPTeckZQXYi4CDeAAAzSUb3Mo4FgUWltLdKTMibhJGkKW7BRQ/Rj9laq4Kf8a21a9+i39L36bdvrb2iKLCYPHF9z4Flyw70XP/+/gk3+w3rLtr8Wbblso2lC92L+eTU6scyUnUZgH5VUjJA+CFXly1whwUhObX4+tlEQxdJPk2SmZcX1PKusrVTg026Au2Kuha+3LQOD+za5XUtQbbkB5pRxJrWc+nat4hxoEV3/vml+uolYja0hP4DWnSpqrm+ZmpX+5WPF+eRP6dpVVodb80lRKUzlwVKBPKvWVD+XkZquipZu2ID/Zg3mxenWGnl5ps/oLcc2doy7uHG6d8sVtLNSvzWc32PlVgrsUDFtnNSFPMjkJAaKQtjCDP5BAYWQXdkxT9/YA+cX5jhzb3n9QHvjw0TT/XnPC/u643RD9F2AdehrO49EO47IathAbVhIDGMqB5B10ppb3+ok5T+6MFKW7rDsb9YLCMPw+VxeSI8QR+LP42e5GEl8gi+Gt6KBhN4oxro2Vnye/IbXBZXBDyYnxvC1TNODP1/QwRnJfuCDEH5jyL8McskyNQHZfhVGUmlmOkGRBm/2zB4U+3bVnXLsrXNZq1W2max9C2xTrH0/WSxCHdYpsyoId/XZGoEKVlVsWBMafkyUlxTM7WmJvrhKH7jyL6fRvLto/p+Yvl/j4rnR8mPbJO0WnPz2mW3VG2zQG2LobYkyxSrcLuF1lBdzbhl5aVjFlSokiVBU4j1Ta0ZOjJ6zSjy/ahox0jyfX+e7a8Zpdh8QfcATZ/CuJ9+bSsy7QZONnoHBHhoQc3FjQfxAiWv6lq9b/WalqmXwzB99XEEzSKZ80xR5Bj9Epnxbx/a9w2mGBloyuq1kxH0rp38GX3G8aEiovvQQSZ8hndghEXmdgPtmkqsUrv0Loyom2nIFWcsn6OBqJiNSoU+Q5aQOa6QeTezNHAIjyqxDHky9qGH+FtPtF1Se5FHN3FGS07OnKdLdWpXiU5HG6V3W9svuKCdtltcoip5qGWk0UDfj0Z18sK776mufoU+mp72UPS7adPGcTF7VkVWg7JxnCP1LCYFdy4vHo9AplCSxrg6JZGmhPUQ/3KCI+69YcoPppF8l6prgP/+MeZ2j0Em542gP42Yx2L7tyDqCvds5VuZHImMUSLrv3U7+eb29C/pu1+itJwh1G7Yk2mKN74b4/7bRsybN8KmfA1gDf8oYp8fB7wHa40TJzZjsCcVrOU0+XfyQS6TaYjqOE6P0u8Q4ULQxZyWlKnF/+JzM3rT25e0WcIk9eS3G9KtNPPk1yptVemIQFNxqfg9/f1zpDbrAqcro++zVmH55ZV/mU2vW1+ybnrJ+lr+h9ipbPp78aqMM5evglq0/+y7T6OjN738O0FtyXRmWVPUy+jvD8KVGS7nBb9f0Xfb5MrG9SXT13nWkXWz/06fILXZcKY1i74O45cSiwmI9lD53GhuAtfKzeHauU5uF3cPt497CkZS8CsMhVGApocIkK8kgCyjSpYwXpdDMJnxg0cSIiMt0ZuBo2RGUWboG1k5dKMoQAwE9WWE6FG1iJyDoDeYUWeI1nS1CBGZBNWu88oicpz5eOQ0w4OxHgHtsezMnkr2YT1OxS05aEBMGQQ8mkMMJjNcIB9ZMGGXJXfUxAU91vkTdlWPmrBQeLXAfuPC3fSjakzvJp7ItY2qzFJNklaj1VSPVRemqdOG2FvTUtKAqL0TDuW0arugH9VFd2b5VaNLyW+OVhpUclqe7ZYHeVJXV1lExh3NWDqcnH15CiztJbnk8SUYtI+Prro1maRm6KsnXFOkkdSaWqdWrZ+Y/9jMS8iDj6fk2g/MbVkpyz6BVi2/hJC62nLxID1JckdPmLArl9CTfDYx547afVsuyeu7bflb+5zBHXcvf3ufI7iDX12xgddkZeY2hIpzxiwgdyQLuSptqkPKkdTqB18ndyvHRA7knhkToCmj36Q3Ejk4JCnrwhkzN5AKeljFGzOs9MFxjZMBTRSiGyOpmHTHqjsRpqhS/u4XMglP7vqObBGINk0klq+aR9Li0id/Clnyc1vXfTpvXzkJGbL1OrqL1NAPiUBi3+b5LcmX9dLjLGpWADjdDLcLpT84QWQpw2zihFM/kCWL5uqndn49//DYsYfnf905VT9/AVlC8heQMb/7DWle+ZwsTGxsnCjIz62kB37zO/obwFT3w7w0y/OA+xzO7K2UaHB2/Nn0MNMAfgDPKdjdEtM6o7Y/rvfHZSbYY77oyBJLimGsEFA+XIHHyk0hIpuHNeWtn5CeKaVI6dHWzwVdqpEeNabqhPAVvLPFPjnLlpczkRc6DCqNVp83/tFxzWu/4mvKpudWXVWzueaKiopA7fpNHdb8YY7iFGt1dkNWjSEzO6lM3PS3j+dcbZZ4PvqpTpeertPxLl5ls01YuXLlbAfP56aoJClJbfIPb4pEfWnViyMzl765sboi3fbw7j92t63lv5KSckdPne1xTE5Vm7NqZk65wO5N9I8dTF8wa/AsYtNhRAR9AoVhUyItnn0ZqGb2jxQ0bugKi8HHlNBCjGZgxgkpStw4DBEDlLqqP4awCp6Xo3wFhQVnI4Iurs9g5LUXY5OJOtmIYXTwg2p4fxhoZNqNtHNeIfFAqgQdaQPqqRGfgIFZlLOxq+rIaRSDcuqE5w6O9aE838xIGGY5ThLMWkQWHwqfD4wDC2yCzBC+cNxGS2HVlBaElTiSA6YQcQsTRiPG7K6Ufo5HPk+wPnKK6H+oY7YlSMozixGdM17ACADsogRrJQd6k6NhuaSJ7s9ITs8LTR5SXT1k8pjqag35V3HRzCFDLps86bL09L5qZQziNCZur7cBFZ5J/WlDqlsmVw+pqASC5RK6Vz+kGm65bBL/TFZ6RvSRGB0qn9P+HBYzw3XOG5zL35aScxurfNEnFiy0nSFOMp4+C/Ok7dz2RRIl3NGmWCQNxRzr/xd+L33QnED/ZgOLnJsPPHUh5+EqWOy3OoyGqYmry0VGTtsZaf1/ySuTCHhpplZn7vksmvB/lU2c4dAJ4YHALudNYjHsEtZZRjzGSXytsUDAsjdo9rrjgiNnjG1IXG4sqo9SM40qLjydOMMHpryy6NiHCuCPeJQQCgrDgO1I+tV1x/iX86w9C29jIaucCUvx/EsQPaSYfwV6SjG/kfMvxNgRyw7YKCX2T3+/JL584ismxD5XAU+WHr/DHXRriE0DUF9WbgVwE2FPw7hC6EjUP3jocc9CRrIQyziLhUFtKE0cHfRQU/0CGvihU1xMJoFHg+BiSpKOrsp1pHuGuAsL3UOG5jUSz4whbndhExQMGizKi7qUFH6ULJfSp2R3cSBYWJg9JEia605mD3G3FbrdxeeMG/oMpbJvGZiAc3MpMa6UlorGoFk2OxP2QhXK/8t5pPDi3mN+X2JbaduBdQcO0O6B/a7GizV8VnLym6WyONvS6PE0ehKbXBUJV4XDiXvaNneYblJ+/srXmmsXf1+al19amp8HMOED7gMZCGIlHj5RviHncLt4/H6catDXSTz3tLXds4deSC/cw3JkH9lHf2Ah8lhkb8lzzknM9ZzFUY1fxPxJFb4fZ0QW9gr7XogXNtFmlt12LHAHzcjzIwRCrjqCVkEYlHhV26IIvh9NgRzpFNfSj2C5sQisnxz4fXQ4HEKqxCaLxwuKfclU54aZR2x6HfOsljEkLNwWPbKdn0sXRyIY8TOCsLTvRJj4oh9u5+dhBIpItEnVDLsE+ynsJb1OCAKaF21Os85mFnR6qE922kS3zia5v8BIdBvJWkD3azH3BYas20ivh4ZfDzmxlKzt2Tr4FABbPLWR3TrI38gMOO8XUuz/jtM8v6/Re/8N+3k+ZyLVqf+WJU2N4b0aaH1hDBs0AV/TzE3ipgJvMxO4m/7vlzDZIBO/KlJCm1ERE9YTJYwTfshkoACO+8PyeY12/ISeeE5etPu9bIt95MTDbFY6WdLXrk0rTtNq04ymVC1/KC29MD0tTVusTYt98QT+cWMx1eM5VC/jkdSI2DhcV+bxlNWFY2mPUQsVGHugOm2qqccA1aUbeoz4iB6tItVm0fLCCfvI4O8wJFBV54vYnRjFODFaN38y+rC4HiMas2RwuP++L/rjG/95IL6x2O/HNfAlLU6vDEOMiiRKsDadEENsYRR82QsqaUVlgR0Dd6FZXkRxRZRu6fGL66ZU2AsKCugB9PhGsViM3EB99Q3yCHkLdyHHBU0hKYjsaqDKik7GbuYWhyLUNAkjWSFTYVXJTFzF2PM0FssqIZ9EIrkdXR998lFXR44j66LR+SPqhg4JBaxlpcaUyrIWz5xUR+ucoUS4cUSWx5GTm54lprcEF44lpLCmoSTZNOHeO4aMnLV/u1ZOTnJqb3h8VMM9V2ilpCRn+uq7dt5wT46udvEV2zuuLKu7++6xRnuF352mzdxQmu02ZUgaonEOmVQ8YqNaMJW4h7vGpf55dEnSlGBeQ2VdYIyzboy2oLT9mdnJDm26nDz76SVr9kxR8pPuoCcpqr6BZvIAcbEX+Pv/NSYl+oyS+ASG7b/KY5RxSHWYV76OpExetsEM/l/zyIAgeYCTE787EItIeZ6krx2XAxwo9CTHLWByCxv3/+q6FuA2ijN8e3fS6WHLOr1j6SRZkvWwZVmWLQk/JL9ix07sEOJHnIdNnDqxE5OWJiQ4DpCAg0kIBdMEY8gAtkmYNn0QGmAMhpI+hgooDJQQk2mnDR3SyQCFBsJAY2vp7p5k7EBHo7ud092edNr99398//dfj0YS8e6nnPzp1Tc9d3ENOl2qpAIyB+mwjpS8dnxvsyf2m1hParOuI9WEZ69+glc2tBaMgCslQbfTnGE3C2Xr11ekmxvWpZtFxcyl/Pzld+xrXLxt3CeiXffNlYh8j5zLbC/1Wv1uoz6P9i9ul3ltuO2SUWL9RjG/CsdxHFQAWcRrKSqcEzZE4wztCbBcmGT7AjJe+Th2qEgMOI5A/DIGfDwAcATUQIDZeGhLjeRg9JqjzKXLHw++NrxMVpB3dPrvlwawFJm7IKkuntkcsMeead3cAKfVvkxkK/NetAWx9je6dAaFS88fG2rIU3o1vEJZqtl+9Xa9iWWdBsO7pzbXKXy8Rq5sSmRXrikYf+sTAAZ3nhm6gbNkE5L5udc3N4QMuWBXtcNXPKNFPaP+M6W82gcPlLpMEpdXL2HN7UV1vFyh9PHrZhrDOtaJBDPLmnbX9qOeFT7NYNrGSOOMMVsEzyHpgpZ0su7q5UCPlD22iVgZOCxF6pDCs6P0vQn4Llq9sao/mtydQFZQfiJVEwL8hJNKY8RiATx+OfliHrC/FunbMf86+x7oQ+pBHxwDF6CdPQXt4EIK8yzaO99eW4zZnnAeMA5M4llAfw3H0BVj6Gp0FeoF9bDoWvTPa8VrE8wlQhCGtvh88Y7Xnpu6DyebM5GbXEI/qS99ixQOG6cYYcwzUuCRQpjA4xkbc5huGE/eVAx4nj83gBFX4rnAKtWpJCLOH40XabgkwJBhpdXhFOP0cVY8TCLtRsP8DdgvZUJtVWPE5Yo0VtUKMpnSqZSptQpNeTCeZy1tXOOXadVq92hhuDVbD+RyRybHa6VCpMDhKIgIUi36VW7tg6XW9BdlVjIqf3T9ttGnRretj/pVDGvTumUSmcffvOb2uo3Hb2w0MjK3W508V7+3Lp6JTE07+pxW+SLr+tZFfCoadYc6rRqqpzD0e4TwrJMaaJhSCkd7iM1Jz3+G5aeIxMaRkytpiyGFxUHv+dzSm9As9SHNYwPOR0l5T40p9ynhs8AeVMIWgpEaDIZqYGeBHGemYC4RjPWKanH0DhhEv2h03jEqwhqwuzyGnq+EJE6mi15wb29uHrNYnC7i+WxuWi5YXI7rtzCfH9IYDMGkOngjf0jjD9L/Meg91ckV9GeCKlN5SFEqJHnBrDzEeY1K+oUwdmq2lpYTr6bNE2osYewljS2a2dN+Wwtj8tvmLtj8ktWi17K5acW82xLdqrmpUQC22V+BgcJgAA1c3l8IDxZ18fBTWYCxwc+UFosAD1osSqBBdwUDBvNszIe9keWlrcQduSWj2gdvxvUfn7ZWrwIjNj+8eMbm9+MxuYU6yK3mbkWaeynS5yhAsGcgLrEiASYHVlbKIflNA7RRATQCSYQKwyPjtAediwsyRokIZJ/XZ2dozUCtzFGZMvUaU5YeiYIpvS+cu0SizSlZY/knvNe3qa0pv69308YqK5jara6utRsPd98s2POzTLNafRZPGzLyFEDjK/DpJAM6s9dlBlqlU6VnWIVapYMqMGWp7Ozu3VrQ1NLrht/ASWFNxMrTZlfYrQdTk8ZMv914X/ctNntNNT93t15tWqKyZHoVQO3hnHpRR6OoD7i3CRdaORpJ/dROisI8AwQnKgaCc8B385m+ZbeqBItynzCEH3N9z+c5hRZegk6WpAjR8FDzxAElEl84uLdXvDK88XGv19ew0zSnYOoUgGbQi5YxGXJVpkZj0GvUqgyFHK0dNKAB0nJstqBgNKkywLNlwcLobfuvCxaazRq6yOuwVZTmecvKbMjSVILaHRMTO/pX5YYDOcPQ3zvS2zsiPT67aviVre3q1hpmj8loNsrUnMyoNGSps2RyuUyVocvSIP1GxrESn89tMSuUfFby8I6iTVZb62qrtTBYvEOikkulnATJKSYzg+EmPpxovq629AfW5cg6xLfopVI5lUrpB1Q11UiYdQmQuzhkZXA5Zw4H7YwY4BSg8bNTIGW0RIOGj9tpl+BK8AZjgMGnudJ5H8y6QkfHDeC6RJtvZduyGP/k668Ola340e9cDnlFOdf9WHttzfbRWpjReSxxblvnWvgK/MrSs//w8s6Tpaa1O3ZV/XhDDcijg4QQUfqByjPzQPOYNrRy3w1da9V18bITx1x9v93troEz8K6L4yB0+Y1hZ9bv+ydvDNRVrNoVszg7D84VE9NKzOWkCAbZQZXguuyLq5+S8CWxeOLAjn+kAADxkqe8FkZ9cTgiDczzbpDSrfAsod+oddng6ZzyismK8pycyHiEbVqYPyyWfevpwRwcO2OPHEokPwrGWsrLyspbYsGQ6fx5U2p9NhAuB1zNIkJUbFakJsSJ8zjTCvNRRTBOC6Dlkv1aZc7LzaQFk4XvKAT+gmhPKKSOWOd+eE4AxQZ1ZPZT7LCh5aqV+dza6zc2ZLnj0QIznJyYdMeZAwJ41W/1JH85dxuxP17jbpI+SZmQ5hugakiGhlEMXmOyo0rg9qCJkBMyIlsQ4IcRJQVnAGbVx/hJTpobNRjRLsfhiaJp40KfO9xyPAelU2pBuPqN0CLwgvDEv2/d88Vl4Hn6xKdCa7LDYXtWt8SjKJr7a99r+5u3P7J3D/uvjY92oFPg+fbu/rjqS/Do1qV7aGnyHbSg7NotHeZRP1ehIOD9+MOffzX2cMVnAlydW5zvPq3lGMDCoy8M7O87MH6Lt71jw8a7TqMzNP2Sz1/a08Em/wJGju/aLdZj3ITsrW2YA3K+oqXT4fLkYowJwXBhGWKU8Ebsa5kGDReHhi7CqelPYP8+wLTBByeBfmICfjw5kmx7Pvmzl+8Ed3Hb7v8CPgdH4HNf3D8zNbbz4AmkU1UA/YnhnQ8n6Jcef+oMktN3UNNcG6en5FS2WFHCbRejeQCTlGCi1YgGyWP0YF04pIfEODbBNJKBVGmhj2b/vKzbo/VFp9/seaC9xbf/yDizYwRUtYRBf1f9+JH9vpZ2yd0nPsZR84/gn7x3Hhmv7+oH4RZQNVKPLkw6Wtof6HlzOurTerrrR+CZRZg2LUYIXovKAdoc86JpEPreLK4KJ3zfeT7XlXuvO9ftPvj9WL336OHkIDzljMWdTqejMuZ0/F+8SbrGDXpLFuy/rWqD8R/gikgMv7Cdrh9LIOjiJp0HN4rmfhmJxYXjbHGItaF/CBs9oBCpcH5V0bHH/rHlSdDV2QUzBnsDa/R6qSqRot5YkkhWJ5fJQ4ZlJhO4TPq7QvVIbuW2kup0fC6D8yCRqGRyGB2SjHSYxxSSOCUSqUxDoHMvGOwC8BdgqdtTB0+CzsFBaS8AAELdQ5tCm47qIITfNMOj4KZmgPqmtfjoQ4vqWS2ok0HwKQveuPRegthNHantCIldXcEQGczwj70FGG8HrmC4DswQ8/xo6j7qj1whh6sLYZkjjjikrVJIXSAqQgQdZMWYIdIc3JyPkaqyTTGtZn1yZm+gNbuw5OU/5A+Dwf8eqlmdaysPLn2mshgsbXr3vLRfbm1YYsyQSgrgPfeUvPhyNKBryR+mS66+k7+1u3ODI5RRG/3bsvpKBYVzlkUbzr6gJoUdfSMf8SOnKsEiY0USduq1JJlcQra5IAWl4yUkQuHUS47ANtjWiN2SPbAf7hIhdQnz/FHmifkmjt8g620Ab5HhzJ5KSDCy/XAjeB4u/xD+HKxfDrrg5FsnT8Lt88cb51uJdP09cX81XXuBepHwGh5P1WqSEnWfFSlkkKzUEOgZ0lXwQwaY649+f6Ech2fTcpz56TkBvonkOKtBXV8rxkEXFuNztwmwDIlxupU5QM1z4h9P4Zgw+VIYMzlJj6dKMGOaXLLH9tL/AIxzQ2cAAHjaY2BkYGBgZOzcvTpCNJ7f5isDN/sFoAjDxavXJJFp9gtgcQ4GJhAPAGEpC8MAAHjaY2BkYGC/8P8GiGRgAJOMDCiAkQUAdcoEZAB42mP8wgAGTLMYGBiBbPYLDCnsFxh1gPR3ID6BxH8F4YPZE4C0CEQOjk8gyTOg0aFoatEw4wSIOnTMrMB+gWkPKgbZweQEpG8g3IfsBsYVUHoCmhwDFjZI/zGgeRFY3HUC4kew+08gaBgG6WE8A3U7CKtguh+uHuTHL1BzvqCGFczvsHBGtwfFzAmoZqKHPcNxNLEsoJ4uVDeDzeQE0r5APAPNLjM0d01AsysPiDmRwhCGJwLxRix+g+GfaOLbkMIQyc/ofJj5cP48JDOAdjEeQgtjkHs3AHEAkG0EDY/jaH78ghnGGPGLnjZDoOLCUDftBeKFiHSGEi9IYtgww3k0+1LQ7ETKQ2AMTaPo7oX75QtUXRpCPYrZIFyHFv6weOqB6tkFEmeKYGAAANkHWesAAAAAJgAmACYALgCGAKgA1AE+AZABqAHuAi4CkgLIAxADXAOSA9QEHASYBM4FCgUyBfIGHAZkBpIGzgcSB0YHqAfaCDgIUgh4CJYIwgjsCQgJFgkkCTIJQAlOCawJwgnuCi4KZAqCCpYK1Ar2Cy4LdgvoDEwMkAzEDPwNNg1mDZYNxA3yDh4OYA6gDswPGg9+D+AQBBA0EH4QxBDyEQ4RShFkEaISQBKIEqoSzBLuExgTqhPmFFIUfBScFLgVDBVUFZgWDhZQFpAW0hc0F8oYRBi4GNwY+BkOGU4ZiBniGigaYBqGGqoa5hs0G4ocPBxsHLwc7h02HWwdjh2yHkAeeB7WHvgfdB+2IAogbiC0INYg+CEQIZAhzCImIpoiuCNiI9IkWCSKJNIk7iUQJUIlkCWsJdwl/iaaJ0InxigSKCwoQihcKHIojCiiKLwo0ikKKSgp5CpKKrQriivmLIwtCC1SLaot5i4SLiAuoi7mLxgvTC+iL+IwSDCaMMYw8jEuMWQxfDGeMeQyujLoMzIzTjPQNBw0YDTWNUA2YDaMNxg3UDeMN8w4LDh0OJY5BDlIOZQ5rDnWOiQ6fjq2Ouo7EjtIO6g8Ojx0PKo9MD2cPhI+pj7OPuw/Cj8gPzY/Sj/CP9A/5kCUQQxBukIoQnZCtEMsQ2hDskPyRCZETkSCRLBE9EVaRZhFsEWwAAB42mNgZGBgZGHYwCDIAAJMQMwIhAwMDmA+AwAVeAEMAHjajVLJTgJBEH0zoJHEcPDgwXiY6EVNWMSALFeXRIkhGsXrIMMSEQYYFhOPfoEf4ne4XLx68RuMH2B81dMQwlxMpadfvX5V1V01AKJ4RghGOALgi8vHBlbo+dik5lvjELL41TiMDSOj8QLGxrXGi+Q/NI5gx/jReBlr5rrGL1g1J7GvSJpFjd+wZD5o/I6o+ejjzxBjn3CMEoqwMISDHvpoooM2/RRXh4wFm/499xaRp1RB9YjIQ4OophiPyMEYN/y69Ca6LWo8mos8ErSRsjjqPB1wl4p18i1GSGybNRyuBFmXbIz5bXSplDx3ZDZxpCseBupt44DqPrWSraOynVNRZy15TQ+7zJSkZVDAJU5RxhlRMCo2FxdUWHOKq7kOzVYq4YKMeLNsg0pP5xtOI+LY57fAt9q4ZU7R1MhKhyqcUhxptbLYo5f7x93LqstV3qKneit3ryrUVHOw1JRtVhxppTtVTiZUpl+ZmbV/V2Gr9E5ULfmHUuosx2kLzqsXCy97Wr1H5uXqXjmM60/nabFLXTJNnkn91h+P6YatAAAAeNptlGV0XFUYRbNDocXd3R0y97v3vTc4FFLc3a3QQilFSilW3N3d3a24u7u7u7uXVbLzj/mRs2bl3X0nJ2dPR2fHf68xoztSx/+86DP2R0cnnYxDH8ZlPPrSj/GZgAmZiImZhEmZjMmZgimZiqmZhmmZjumZgRmZiZmZhVmZjdmZgzmZi7mZh3mZj/lZgAVZiIVZhEXpokUiyBQqahraLMbiLMGSLMXSLMOyLEd/lmcFuhnAiqzEyqzCqqzG6qzBmqzF2qzDuqzH+mzAhmzExmzCpmzG5mzBlmzF1mzDtgxkO7ZnEIPZgR0Zwk4MZWeGsQu7shu7M5w9GMGejGQv9mYf9mU/RrE/B3AgB3Ewh3Aoh3E4R3AkR3E0x3Asx3E8J3AiJ3Eyp3Aqp3E6Z3AmZ3E253Au53E+F3AhF3Exl3Apl3E5V3AlV3E113At13E9N3AjN3Ezo7mFW7mN27mDO7mLu7mHe7mP+3mAB3mIh3mER3mMx3mCJ3mKp3mGZ3mO53mBF3mJl3mFV3mN13mDN3mLt3mHd3mP9/mAD/mIj/mET/mMz/mCL/mKr/mGb/mO7/mBH/mJn/mFX/mN3/mDP/mLv/mHMZ1j//2dfYcPHZxKd/+x2d3q6jJbZjLDzGYxK7M2G7Pdky15LXkteS15LTktOS05LTktOUlOkpPkJDlJTpKT5CQ5SU7ICc+H58O/K+SEnPB8eD57Pvs5spwsJ3s+e3/2fPH3xXuKzxXvKT5fep/3vsr7Ku+r5FRyKjmVnEpOJaeSU3u+9vPWcmo5tZxaTi2nllPLafw8jbxGXiOvkdf08JJ7Su4puaPkjlJX73OVWZuN2XNvckfJHSV3lNxRaslzT8k9JfeU3FNyT8k9JfeU3FNyTynJc1fJXSV3ldxVclfJXaWQ576S+0ruK7mv5L5SyHNnyZ0ld5bcV9hfdPW+DzObxazM2mzMHm7YY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY+hr9Papr5Hl6W1kefob+hu5h5d9n3vfly6zZSYzzGwWszJrU46e58rzep71POt51vOs51nPs57nWo6+Z33P+p71Pet71ves71nfs75nfc/6nvU963vW96zvuZHXyGvkNfLa8try2vLa8try2vLa8try2vLaPbzi90vRj6IfRT+KfhS9KHpR9KLoRdGLohdFL4peFL0oelH0ouhF0YuiF0Uvil4UvSh6UfSi6EXRi6IXRS+KXhS9KHpR9KHoQ9GHog9FH4o+FD0oelD0oOToN3TgiAFDRg4b9C8VmLmgAAAAAVWwJZkAAA==) format('woff'),
                url(../fonts/dashicons.ttf) format("truetype"),
                url(../fonts/dashicons.svg#dashicons) format("svg");
@@ -19,7 +19,7 @@
        height: 20px;
        font-size: 20px;
        line-height: 1;
-       font-family: "dashicons";
+       font-family: dashicons;
        text-decoration: inherit;
        font-weight: normal;
        font-style: normal;
 }
 
 .dashicons-randomize:before {
-       content: "\f503"
+       content: "\f503";
 }
 
 .dashicons-list-view:before {
 /* Media icons */
 
 .dashicons-media-archive:before {
-       content: "\f501"
+       content: "\f501";
 }
 
 .dashicons-media-audio:before {
-       content: "\f500"
+       content: "\f500";
 }
 
 .dashicons-media-code:before {
-       content: "\f499"
+       content: "\f499";
 }
 
 .dashicons-media-default:before {
-       content: "\f498"
+       content: "\f498";
 }
 
 .dashicons-media-document:before {
-       content: "\f497"
+       content: "\f497";
 }
 
 .dashicons-media-interactive:before {
-       content: "\f496"
+       content: "\f496";
 }
 
 .dashicons-media-spreadsheet:before {
-       content: "\f495"
+       content: "\f495";
 }
 
 .dashicons-media-text:before {
-       content: "\f491"
+       content: "\f491";
 }
 
 .dashicons-media-video:before {
-       content: "\f490"
+       content: "\f490";
 }
 
 .dashicons-playlist-audio:before {
-       content: "\f492"
+       content: "\f492";
 }
 
 .dashicons-playlist-video:before {
-       content: "\f493"
+       content: "\f493";
 }
 
 .dashicons-controls-play:before {
-       content: "\f522"
+       content: "\f522";
 }
 
 .dashicons-controls-pause:before {
-       content: "\f523"
+       content: "\f523";
 }
 
 .dashicons-controls-forward:before {
-       content: "\f519"
+       content: "\f519";
 }
 
 .dashicons-controls-skipforward:before {
-       content: "\f517"
+       content: "\f517";
 }
 
 .dashicons-controls-back:before {
-       content: "\f518"
+       content: "\f518";
 }
 
 .dashicons-controls-skipback:before {
-       content: "\f516"
+       content: "\f516";
 }
 
 .dashicons-controls-repeat:before {
-       content: "\f515"
+       content: "\f515";
 }
 
 .dashicons-controls-volumeon:before {
-       content: "\f521"
+       content: "\f521";
 }
 
 .dashicons-controls-volumeoff:before {
-       content: "\f520"
+       content: "\f520";
 }
 
 
 }
 
 .dashicons-plus-alt:before {
-       content: "\f502"
+       content: "\f502";
 }
 
 .dashicons-plus-alt2:before {
-       content: "\f543"
+       content: "\f543";
 }
 
 .dashicons-minus:before {
 
 .dashicons-layout:before {
        content: "\f538";
-}
\ No newline at end of file
+}
index 2c8e0ebadecc229e9041b4d7a71aef023681640b..85167ed77df036210102c8f8e9bb44c6f6676fa7 100644 (file)
@@ -1 +1 @@
-@font-face{font-family:dashicons;src:url(../fonts/dashicons.eot)}@font-face{font-family:dashicons;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAGW8AA4AAAAAo7wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABRAAAABwAAAAcb+kWhkdERUYAAAFgAAAAHwAAACABMQAET1MvMgAAAYAAAABAAAAAYJYFachjbWFwAAABwAAAATwAAAKatulUimdhc3AAAAL8AAAACAAAAAgAAAAQZ2x5ZgAAAwQAAFl6AACLYEUhCQtoZWFkAABcgAAAAC4AAAA2Cpn6WGhoZWEAAFywAAAAGwAAACQPogitaG10eAAAXMwAAAEvAAAEENEK6Wlsb2NhAABd/AAAAgoAAAIKw8CgEm1heHAAAGAIAAAAHwAAACABVwCzbmFtZQAAYCgAAAGdAAADWi+oduNwb3N0AABhyAAAA+oAAAoztf4M13dlYmYAAGW0AAAABgAAAAYlmlWwAAAAAQAAAADMPaLPAAAAANHVnZ0AAAAA0dXWGXjaY2BkYGDgA2IJBhBgYmBkYGRkBpIsYB4DAAR3ADcAeNpjYGY/xTiBgZWBhVWEZQMDA8M0CM20h8GIKQLIB0phB6He4X4MDqp/vjqzXwDxgaQGkGJEUqLAwAgANkAKxHja3ZA7SwNREIXnJmtkuXfHBbFYsViQFNutTxJsVoMmARUxhSSFxEcTq9iI6dJY2FnY+Gvs1EYbUTBYq5U696GNui4JWNjbeGDOcGD4DgwApKE3I8ASB3acJNbNFttPdg0i6IPh7AfZNEgejVJAIU1Tngo0TyWq0gY1qEUHkklbejKQeRnJOWUrTwUqr8q6rNd0Vdd1Q7f0oT4xlrGNZwIzZnKmEMcACRvIpSHyKZuwxylHUcIuUoXqtEW71JYg09KVvgy7bKZc5atQRbqkV7rsTd3UbX1kwGSMa3wTmgkTxXGnf8DCL/zEd3zDV3zBZ3zCR3zAe7zFG7zCC1zGJSziLM7gFE46e07T2XG2nXVRFzVRFRWxKhbFgoh4h9/xa37Jz/kZP+396q/EMvBTwFKJpX4fwL/XN7iViiEAAQAB//8AD3jarL0HfBRl+jg+78zOzG7aZrMtbTfZbEvZ1G0hZRMg9NBCiwpIWXoxijQJqBgRlRIbNsSGiD0qchaOs52uHbmIp4ce6slx6p16x9eDJPv6e553dpMN4n3v+//8s5l533ln5p133vL05xlO5OCPnOYPcQIncRouhdNyXKXOphP0Nr1ZR2zJRKcnp3sepY9HHqU7yNRHI4/yh6JN5EbuZ9r9M6HRj7ifiYfy3M8c4RL+KjmO58JcVH5R6oE6/RynIcEQMZmtxGwVAkENkSVDHjEZ5DRelmBn5UMkGAiG+GCgCsqrguL+aP2urHW31pQ+OKWkblbLiprow9H6py2WpRZLzohFpmF236QKefTiSy/1FXhTm325lilwaopF2MS/tis31e6ybinLzLWlkpTow/xrT7OzUy05gdHplXbfpZcuHi1XTPQVNOlWDs9hdXKEeLiI1CiruQzoE1uVyagzSCWE6OwFLr/OFyCnhY6WNWtaIjQlAqmsXtMSbWpZQ1PI6TUt/KGWNfDaAvdvqOMT6Rj0ZRqrxyxriFtD/F6RQLfiJjXeuTS6Prp+Kf8j6YxE9/OtvZOEfNqm2nTnUv46Vk7bIndFH4k+xk+jWnKapkC9EW6XvFyu4TI5F1cH9ZrStSSNuEkDCfjcrgItIa4A5PM17FiSiWQwmwIyMUlaIuW7XekNJETMrLRK+semTXe2fLmUSM3NDQ0NzzSMp09ahrTccSVZ0Pctb8rLK2jNi36LSRnZY8UTdPeVyi10XmNjwzPSISy5o2WIlYjjm6GCxsZm+uTSL1vu3NQ7Ayq4MC+ft0a/Yemb5F52YtMmsnAT3GKhcxueaWzgOBXMjzC803JOz+VwRThHiM7nKiFum2wvkKD3TV5bVYCrMhmkApdPtOlYGvBWmXU26ND+Q9FQW/TwtbTt2oeLamuLhFNFtdHGIzfffORm4SA5DcnNi805tBv6VMkLHfyhotpIpLYo2gQ38M9i8RFV78nFeI9IzlJ5CX2AHXB8/5wQYEQ5HD7RZrTpvHyrcKr3gJDflxkhp0VDz3fhiGjA8f+GOyn9RTrFqblszo6z3k0COOvFIJHTiN0mY6Mb4EUDGuWETMQ8eugl0pQ90+XO6HvjIuHatVXfzqXt7Z72Vk97vSCRpiw8lU0PSbnKlXq366J32vo2TK0a1u5phQtJx5zTdC+cyYAz2fQlXII8zJk3pKjUxxk5G7RdUrkJPjxIXBnBgMOs4U0SLjQ2f2A1Sh3z6T+uiH419uitY/ltPt/82US1hv6ZZBNrUXXPbutUi9VqmWq1CD/P9/mil4+99egY3noFyZg/u9pD/0xPkrzVP0fzLJbYhZxAPMQjq6W9sP5LuFHK6NptAyNLvDi0JcSIA1lP7DiatdgzsPTiR348ssSvZEPul9W1RT3f4ViLhqLavswwZsOWYkt/hpw+T1mnqgvzvZNw0C21LbW7jBaLcRdkeBfm6AOJZdFPMcfAI9fJPSCPlFthlnIEhtEl4dIzy9CdKuhK4g6aAri6VIaDfPtvJrw6YlyT3vebH+mpAP0o8LafmH+EwqZxI/TSAwej1x706UeMG/HKxIM/0r8F3g6QUrjgn6yw6VWYbwaYb4dgvmVyFfDsgjJVOXGFBG8VTJQ0UXBCaiFpKntBGV8OnRMiXpVp5uSAJ0snCJJU0rAwtGhrWRpR6TJL/JtI+uV/2Kj1P7T3ywULv3jyJrf78g+vUHld9WPG1Ov1wWXzx5WueXSWnDVq6KQh9K8HtxxdcVbUuq2ZZltBSvLZtvc3KzA8LKuhPW6uHN7eLsnw3pJstPldbtkddLntOm8g6A6aA0G/zWgyB82yyezlqgI+V4FkkNWfZgfvOnpX6yLavaj1ru67gpmffmIeAiXTlhMPKxli/qSv6kxX15kuIX/ZdDgDl3yaGYQzrYtI0YJZUBLIiZXMWkCHduG1rF0RuUCeDDAWRoUzZQAWUbkFUbC5lemdURXwszZIDS+PGDGnjb619SX60S7aHRZyRlWumkP48pUTJqycIJe9TCn9eU6bv5E+l0e3RQRyI2lYNWdE9MSE6iBcgc8ihfJymMc6zgF9UKUyy2UwPyXZqyHeQIZDX+BwB60wRwNBu4bY0wTh1F1EN++x0ItL7/mx4BR9gD5wJPNVUvrE3fSH/lIym8w+krHh4PfS3k1tr7XMef022kY695OMPT0dsQLSSds2fXbfLA5hZQTeV1lLWbCai365mrh8lVlS5TvcARV7b1MVAUjlhx9bL1vZelkH6yVIWohvwwb6Ln2SvrthA//Qmr1r1uyF+evp2Uo8Qj6CNry4LxP2wpg9O3bsge0EXrQmuj8cDkN7UrkIrO3lMC+0AL3NMAZ5MENKYI4EuVquAVb7uPOsd5vOpocmeWNbHLIHoZ1OODfoGM6rEo7l5fAODvYOx4tqexwM5BKP8t+7otgCKzyCHca3IsLsiyaUHBp8BelEsBEDIapPoMATYX80xcKuCocBp3vieTgRyyJMBXwQlvYyGsE6mEqwxagEdxAWBqwSWApAMZyKUQy0GzLC3p6ecPwf6Ye+E3H6QchvWdP3ZMJpxCUcjPkReJYMvZyHuERv1wMt4WCjG/AJTpPZZS9QyS6HvUAOBIVTUVNZpOJW4ZRwqm9oSy1AsTBf2pbpLzxEX5k1i75yqNCf2SacIsW9B1Wra7EvwuzVor//823PyS/s3v2C/NxtCs6Th8trgBrUIQUDRBoiPhvQb4jOZOnO7RYLbek9oCo5YJ0S/SuftSN6apTcuh1oLDq5b4h4/ICF9N3MZ+6I/rWbA7oS/uA9jsBMsXOtsHKXcm1QlM6XEUe+Ko3w6RlWAjM3RGAOmzLSeZzGLigNMJrRJUv2AnfA4YWF55KMBqAgTWYTIA2geUIEAS+7wgWAUjLlEb2GhFRuOM9riIv3+4geb5ePLHjhJ/oBfZF+8NMLCyBPKslIUvnTC71vkJVk/I87dvxIn6U302cxR+rpB0sMaXrj1VNt+pVk3vt3EfNy3yyzKVsUqhry8+mPRpdabdAaDJun2pfYHQbITm0jzxNRUJs0ctLsj3qOk01v/49Q/PXqjYsWCSOURy04pwnijEEPHc8a0lsk+NW8t5wkkX2vrpwvjxtrGVpYpFHN2FJ3oqWF/wdRqwQ+6CPJEi8Qf5Co6ZFoLv+CnNXSctWQR//wJ7pNuLn31Hxy3bfP0neiO4utnBibs8thRslcMluxHK5FAhB70OYR1/VsVTX3nQC6hm18a3S/vPzMGXEdrInugQ1g4jTSKYtyGtAWJVCbz10GeDEj6E5TmRESBgPOXxYJ00dXPTEm6/37H5z33J4VVenZXz16+9x5wlPnK+WPbZ7Z4ErfSYZO/kv5lgPvnb3qD32trbvOV4jTS+ynJVVAeaVw6fiOeqC3bQQACdvgBTXEBsgsur93EvGounonqbqi+6P7hXyEGPLy3knR/eJxeME2BACYktMKHTVAp7oQBxZIlgGuwMtAQD8c0JFYuaq5ZfL1tBs5hRa+tWUNbggJusOQiut2jH2edhPPmhZyGstpG2wpAAz6y2DJMByHz9UAvNVBT2dxFi4f3wuf5oSHiIJXb7MLXhLfYJlqeCBYi2rPnKklL0TCAKbDkTDQQ/EdAvnTyrjWFp19mZdCRbVhfOzABnTtqb5MoYO20TZG/yjvH0YYRJwBIMfgVfNd6YwSF3Vp+MrKgS/Av6SaUFj7Hv38vfduGjO+rz0j0nETy1ZLuyNSQ0mk9x9wTAres/OrIn0dVz3O8kJtoT+BH9AyjmBo/E0Nkj0OXOH9uDh284Vkb/+5KqsqD9Z9lZU3fyGl+caM8Z39J+zFf/ds5Q8pCO4BIiYZLWU1LRUKbisaX+OzZ0mSKr26cXHbouHeZHl57DYfVnH2ZVwOQg9DfLRbnd0yafms2cOLGV4s4g95Rk2bNspkSilaNHEolBjjcyXC8KKeUYvntN8LeI7LD6S78qV08ThxeUIhz9l3cU9cQC130ptJ8zff0APfSI0hT+/80qamUtU9nlCk57tvlBP4DAmesaufb7LD+vMCzuUAdlp5QxoPsLOM94X4jBgNpjonjWNZKZYKOeQuUvPWVT7fVW/RN+hC+oaSl9tbW9tb+ezEJCqx5HcMt8jLh6965MUvX3xk1fB4JmpvZRck/Ec3s6StFu8BHruTnGb4M1nhpuI/aS/iSMSFAIUM8RzjfRUeTLnHjHfZ/ciCARPmDxrtRrvf7vcCPSHthcXV165qBpQNSDssGgCvh3scQkeEHUciyJ8jTyLtBTpKgYUwQn4btkPAVIF/XcDTYUY8HunLxJUCnCODMefcG4Ojyv2Y6jDfX4/QgY0ZWFODqmSMP/7/p3p1sbqLSCzP6sXaxHV97UijYI7VyirDimN1/tp7ZiW0D9b4L16TIPknrhPXwUzmNDweAVBcR1fQVRzhD8G546ou5Zx4HEsRhPKtsXOG+H2iAUuBFLuFbGfnDonHgT1m54Acg1K8Prr/P56TFZpXroH+yGO0pZdRlwx3QX8onKGSGm1GJInqCU5xMSGP/efU2WGvbLDqPGdfJsA0t5JO2PW1K8Qdf0hJSSf0cGeEb8V/qRG6Z1041NoaCrN9D/KEg3c9q3CgwygUi28IM/lh/HBpsvhXpH6ImdhJUBTf2RJ9aQs9tIUQ8a+z+14kb2z8QYEZf+T+KJ2RzihYC/iLARrI78twAE4RTt1HCo62tx+ln9OX6edH27vJEnJ39EXpzEBR+1FScN9HZMnR3uWCml6p8P8RxrtpGY90Lm3FAykpa4hZQxiBUnjsyiuP0T8CefJHzAm/w4kLSwpwGE60iMLNJ15CCtltfV48FRl8+SC8qcH30hCRCPAs4iR6keidop44hVO0GxbDPZfiZGkju2ESdn9DPqSvzqAe6plBXyUfysuj+8fRqugSrJW/nbw/jqyjJTV0dzT6zTdAAoVruAQchc9iTwIqkNVPPHwrDbchnr+Uzudbf1kdthPL2RwUcXaRIkKACspECAQtTIHZDOPK+hN54eVcmsIHmtIZZYmTMUT0MX7TaDCjcMCE3CAxia9vOXx4i825FHDqi5oD18665poXr8mhh+3XZghy/tNW0lQhL/8dPX1YvbT3K/H4TXdH/9Qxc1ZHx6xAJVz0eoZqA1yCQI/sJ/ulQqmIrWVFpBjUoDxP/yf6KL31fbKcPvopmUGWv0dv5de8T1bQR9jh+/RWMv1T+gj3v84HLj9E0stIfhpJN51vQpDhJP3kli0n6Q+wP+9E6F225WT/NQiDOmOyMzOs31Jot3cwNmSynnyTUdCxjtMRd4jE+tBklmHh9XOhRWHEfxHAw8TjcJfDui13O1TNMQleEcrziGffN9/sw0nI6KnuaNPHGWM8uGg9YzI+HkwjIh3l5Jq48YPbVE8SaTqEMv20RkjywjADdZGHWaQyAA2x24xS4+sl9fUlPadL6llGTCmp7/lO1dx7gJxmqI/k82pLfmDI+KK+9uoWl4kQIqRm2Ny1BeXjinJF/uVwfUnfVVKjUkd9yetKHfUlvVNVzTTC8CjtTnIsvnjVlCFIk8NL5eWptEWuMpsZCY9oBczWq0rqgUHVJNBQZkYduBncRJ6cCwIP7k/gyTNiFADy2vx/kWd0JRKNsI8wEkBc13vgx/+YC9cWDdwlNTIqoBZY7bb/lEscq4H34JznSjzibYOh4RPyCmWLD8VHn+09T7MSX0USleciyuo7MZDnOIUHx3YcAX7fyGUOplmQhYJ5ABPFjA8Fcrm77wTKFwDoHAK6G2XOwEyQTiEfs5gyIq+NnYs2AXWDZzlOkYUrPHISPCmTy0U+Ayaiv4Az2jXxh4osQVEJf+i1nXecoj88QyRpKk1BakPIB0gKgJimAO1+Sjx+/Z1H6d8+o0/wX/VspSnCKaCDok3AfgBm/ZXnaeCRnN1YZSKxt9OzREDyrPY10kikZ+gPp+7Y2VOEtWGtDCmE8Wn0CTLlM2I+eieR+9oRdCIZhf3Q1x7vSxXryyMwpslMNwIEMzEqqBz3TpsGBVaijchHaDfU3o10Su9J/hB9gD+EiJg+AH02W9UcQeY0gvxphHRG14R7GJsSeyccK6ShlPpjeB9oRXgNu07QCDBQcB+roQrvhFE5RdukvfEHIl7AhwEhmI2SO5TTMZQOOCbCHZWToP1mpn+RnQDx3S782XUwRlUolpBemjiRfhMM+ubN3dixHV/93RcPbr1B+PxFuvjF1R3bd2zeOG+uPwjPepW8So9NHH/DVqXuN6BudazuQBB+XqyzQJbwB0hFdKUTI1x98MV3kTra3tE+b54vGKTfTBQ+hweMn0iKaYiGiCfonztv4+Yd2ztWv0juYPQFdD8QtACH09kMNkiyDoUnujKUruebVEyY5CoQ1z1yTbiq6ppHENZG97OFIK674VhB9C5PODdXKCs4dgPA2Cy2QNjaUNaoul8iacNFqEB3Jr5HOAoUGrHFV6cjlvKtQkccuEcwQzxFtUD2t/W1tzF4JxxX2I5D2AqYbizB+duWwFrEeKHIOXJI+/n5RiZ5REo9lg4GAT1bUZQo5KNoAJLBIlOFmBfywwqj3KakMboDqSLxOOP2rKjKYM/0BYK4A544xDCMQXzv2oPv3dSXedN7XZulmxdXllX97rJ93whfp71xHfLH176uy85dfLN+/rpv9lUofUuuA5rkDwDRzShhAb7fLMHOHRB9OOXS4FFIY3D5jmAZQXEXcOR+XzCNyCb+Vb6Z/OWKK2hu9ADNveIK4X98hbr8yqZmf2ActZFT5O4lI37YveLv9Jm/r9j9w4gl4h/o0TNn6FFSduaM2tOUwvOqMV5/c3P09n8e2vBY0ep7H/773x++d3XRYxsOKXh0gI7QM+6z8ZeyXjcsOpENv13nNeI2MBoc439N+YLZquh+sLsG93gYl2BvUJWd5wnDnyev92SexyO0Im8M03Pf+GATEANNQVyxTJYbuxOu3AgUKO3eCJfn4e1RPsZS84dWZYbrkTioD2eydUEMhEiHpMOch6vGFZ0hK6LF+E+GzpSUBR77SQ63Kz0YcKiEQLrblS9L6WZTvurwja4lQpa6oDykqrdV2h1mk0oYVlFZ5fN5K20evjQ/M9NwF71j8333LSU5JMe+cOEi+vnCRYsWkgKp7Ea6/l7BJOXke4RSWyVSjaUVwwTBZHTZK211QkNZvtUwxXf1/eSt+5aOGxfNXkRsi+CP/nnRIoR5v+Ad+zGUEE87kINjnCEmqmYEH7gp4j3GasE6An4H5vG6BB7UrNTlBNiJiACoNXu/pPC0cKrnuwjAYBSbdyu1wKIGkByOV6qwubhUAKFL/XpULcDlPIbPSxSIobBwXiChq0yirQz6hNjiSzeRc1N1IZDo+Q6BhW7ngZ30auJJnzZvGp2DhGBfO5KAgE3xH+iMojBQj9Mvu2x6yZAh9JEYETmYSVP3z2N85/SYfM0GlCHnjHH08P6Kktnsh0XsjPHk8U1Wo4gIxYh97cSDiqkTKOdDnBLf8CS8N1xnQHKgux0VXZHImhYULwLFg8LGuK42wsZRUvAWMoFGfPwAge4QTu0kwkuXwLgduuQlGqVf0uhLl1zyEhGEU0rJTujzpp3xUgBHcDXHbAcG3jNZebt4v8pq1g78x2Yi2YqjyGgf4N894nGpEXBpLvYKNKcqqOA8P1LqbpdN0AGIQ+Bjl71VRoMslRC4640P1q7z+lZNW7h6FY2u37rC5529eNd9f/RWLdsPLPV34fnPbBrXnKPR7rr88QkTo1Fiy7eNnTTyT/dfVIKQjpB3YU6r4LnI69iJV7YFvcQetIlvfERPdYeis0LHSOZHIf5BFIPAJOzA+dXJ1kEje0M94zjsqD91oXTAgBok/tfyYYZOwgjiD503KxoUERaQTudmmDwOnp3Nxg7ltD6AJYu4ZUxOJZsBkctA2Rhtgt/uDzK87kfBuF1B7GbE86wD8VBLjOxS6Fg4r5wzMgV5/BpgN11uo8nbPwxwjRnfoXXE1YVlKRk8ycUGb3jcW51m1CSlp9XZLSZdljGnNNNozDSnpEpySnL5fLITr7ra6WyYECzM0RuMNZ6KvDxvptlgLM6xZuVUNU0qLsnOqizMMl+tdADpXOR1JmUU039FwtEnRqoqfPpssznXBpskpKSYA/rkpOSUTK02XZdaGa55LUw/KcvKLqzLEOWyvMxhKSmWfK1WLaeONdlstYWZmRKvyc1tCgMMdpBO6VMYNwOjIAaUBjz/S0VCf5nwXH3JrSHjUzfcuPSlW0frTK/ddNXUKYJzoPAWKHwVC/l9l47329KuIBkjXvPufodGtx74eNzYqy8dH8g/t5D7FXh6jpYEV3tcvheTn+Hq6d/+mzpg4p5QNSu6Fkz/v9Qh7QWSpAPxZCw9t47zyxURsvmZYphtzCBpryJVRIk/bN2oI8AhR+5F0YwiJGdEdlwml85ZORdXw40AHrqVm43SEMCYQZcyrxlpEvRLyoQFqiRAvIJd8Aa9et2guYsZu+zvn96iHVYIVCTGS0oIE1NJFQ57tss+4aLpw4YWFGzraB2dX+xyXFBaXlHZ9+TiE0tPLKr5+ugnC6qrrblDq3JzqwMbJ01rsuRZcuvplCcDZo1WrSFb5jcW5OfnhRbTNLTkCiOrJh1KVusmu53OUU0X37Yne2qSRj0k0Lakri7KVCT7yDPR/WWeljq7PUWlsTu9ExyOM/v0GSVlBsPC3UNLfdlZ28zmMm9mZvRFYLHyw8iBIX0Us3sRWa8bGW0o652yrojo3KKeWRGZnYK5iAQFMajjWzd+Qa/fCAiucyO9/ou+N/nW3gMbydovNtI2VdfGL8jajdJePLMRRwGP+84y5S27LXYhBxgsTgsn4vCcfmwbl582xGYBo4VRlj54O/85m19g80U5Rp2gtBflqBFyOuG/85xiYHxTwjjF8QA1b4AdUxQOONL/BwwrTGDEaoCZW/tLu5UU6bTTyL8AjW3ishEjIHXAeAydwSpUhQS/ji2pyLYlS2+LZA2df2/k/vnDsmF1Ho/+fufdu7fx9dHn6tdumFUz5KIr1tZHUcCg6h+j/vWlh5dM/DF8OGjbG4k3CdtETot/Y/gmCaVIiKf0NrdNL5YcpvNhAR5aRh4ooa/cBpwwioI8d5GTA3YcMEYi4Ao72vhomHYyrq1RLODMUBRMsIEjgj0Z9Xs5BP5Vx4gEvLX6NcaICR21RXcFeicF747Tzthz4fCRlyOoCAkDgu8Oh3F5M4au14hWUA1//0coZgkljGGCiBRgs1MwVXSeie3UAu4vTWhnTETn/IU0D62CBKab8eoGN5K/9u4BKv3uINBEfSdgCgy0raYYzxQXY6OKa2qKlUb+PXoNTg9oUswOT+qCOeBmNgkWYpCJVFDOu+qJL0gQjaLpYzlBGESYbWmVeNvK+vrokron6y6BDH973Yzp9ZTnN1ssxywlxZboJsxMk8RL6mZ0z6iLLqmvX8my9fyu+vreCFw41XrMAtdZp8KF2C86Rmc0Ml3Ur6+v4TH7FwZidQzUxlcTSovlWF48J/1P56RGJLMRNiNV1pcZFk6Fw2iNAykQ3f3785XJ6nC4xxEOoxY/zIxbTrNMpH93vjK0h2X4YyXDzApATmODbEPQDQyQDTggnQHgNb4ocKEM1AunDi8Ij7CtmARrfefNw8Y+tA8I1S8eemhM6FZ6M986daV1eHi+eGD58vdevi403xuJLLj2zoMk+e6779lNzzx3x+alkUgwHLr2t+8vW440ejgBh6HUCGGAlStQ8KEIm2z3o3mtMwE12mMpzOk2RI/hCNLiEeFUXzsCGaawAVSXT7ulxjCz8ImgqCcOdpQFxPgWNdN6LP+156PNG/Hi8+2Jz/f2G1QAnkFwx+yOIqhTR+YDwR0U4xJApB1mz/qVBgzS5WlhjtUzyxmHvUAlAVNgUnmrHMSO/R6M49MC2Z1AVAI2FmKiCFZSIO09RA8f7ucSdh4mw+jI3ZmmYfUGQ26ut7Wt8Zqb140eZcmZGkzX3pLj85bn5uTkzBGKSTsZ/tIA4/ESWVFSXeyuKsnNdjiN+iFXja2pmTustLS+0Gyy03eyKqqqgIQsz8qJyQz4A9IfRTPXxE3gLuBmAY0McwrabFSIWnsM3fvtZrvbLtuDdj+QC2ZvjDbQEq8iFKsyyy63QmbApAMmncheN049t+Q0euNdANUYRbfdqBAbUllhga1wZOs1I2s1szOCQ+Z/vH3Wotq/1CyeNeuaWUtnPvP0qlAwR3212uwINc6Y1WzPctsdUyrsGuKkn2jspb0nMxab+GRVCp9Gnlnrzsq1WofTi5/gfyu8vLguP0+QZTl1avbE4W355ZPKSnt6Hn64J3z2bE+RY7zPrglVjLI7XZNTU5JrPcPD44uryZhAvViQUpRUW/ugoNWXF+sz6BlCCL/fnFlVhn2l8KWKniIXoEsBF+CGcHUMb6PVtyS7G3jF6FtwKzbfvBdVa04SNMsxW2+zVjH1DooaQE16DRGZ0Xdpw0ePxG2+m/cOzStDm++eVpQdR5hOmln9nGgce4Ni8n3jtyPuQIPvBuEsiguQsEQhuZAv/YNZgJflDd0bNwBvfuRYg+fOTQinFPshRj9G3xzx7Y2K8fcNYxvvZJdOVOqABdAJD429M+lk+DgV6CXUzpTBW4e4kQhFAzof73Lkw4Q3psdl/qpzJIqamG1wf0E87VfhrFOd6BpQWvH/ZoiJPqYg0YuUo3FkMtp6jGJHqm+VQkUtQTr/RLIejCvFHqR/FT5i5dsVhQH7p+nkzeh+FDFN+zix+GRcZBq3ZWDwRIecuB1orRBw6oGgLo2U8Ug2eaZ0f3KCrpzy3Z9/fjciHu9xoGAll1gsfE7fCbu6IE+twIROxu/26/dRlK5sin4/vkmNESYRi8Sez7dKe5meXkScroOpgWURpHeFr8ktbOBQ3Q/XdhLCcB3S+qgv5FExZxUB4AeCITGIMgBelW9KR2Mg1Y3Qsd/dv+1SldtQaHGmX2uxXJvutBQa3KpLt90ffYnkvv02/cvbsvp++t2DO87OE2wZTkux8cm5c580FlucGTZh3tkdDxLDxXjV2yS3X24hHeNSgDtEa0t9gn4wrrwiTp3oFHVOUS8aVteNufnIzWPqgox3J8PIaJoZ3c1MSR57gn+Sb7GtHrn45psXj1xtI5cxDp6uu7av/Z13UIawPeoa4G8QvyOsR3lQCcxE5OaZFoFJkKEFNp8LiwikdrQysOsc/ZQR8ReUiXCuMwKETqR3Eppzkc7VfT+GhXxIp6DNZ1i4bd9q1Gd2Lnhk3cqV6x5ZENM2d9NuVJyouta0TFkNKwRJMs+U1Wui0zEbxrvhTLQ3YvM3NvptNCUuA4c5lcy0ZWgj5mJWEnajHYkxP7MLi8tCgELTob4Czf/wDU4D5Rzp2RqJiIbeScIxZu0U7j0Qxtb0ZfKHICvt7T0QiSiKF8CdpJMZVEWr4H0QlwFdksKyitwa13Ejs8HLh1kTEwszOhamG5HPERQL+bVFNKWott5NThfxtzC+prao7wRz5cgvqhWfRdF/cQ1icOgYNM3AU9H9sGc2BuS0vBx4gxh3O7hyYLUI9iT66Sg+Oop48pBijcfWKmmmIej3EMrgYrheyzx3zqnLCW1fvqal5zu8UzS0rOk9gLbGioVvXybsDyLIU/REEekYzCEXsxJQ4FLQKdlj3itOF7NZQS7GLSLeEwPio0wyqKFjL+iAXPvmi8hBDUoUIUfHajTk4AVCPjsusJ+cD5n5Jwvs7BbMYBn2xZvcW2zu5jHfAdTz2IjyLHiIGR9NYqRA0GgSdMSkSN+DbmwJkdXeop4css8IK0PsLB0GJPbC2tZQVq5YtJ3+BkvJg4UVmTn0Zem+meN0PV/w9zvdqGDXGRqqNPzVnrGh1iRNsq5nmOrC6LPKKXm0JYkKim5O4U0RliBs55yJqxmpdsBrgYGCOKA/F+DLalIagPnX4KXzfY2hsPlY2up9q/2l9JhkZmC290aF5ehQlMmqd3MuCuAQ1c7NjK50NVXfWeCcsnr1lMCFOdHvxeMMQEevZMmPio0azmENzIM3md4cB9SURhK0AApVFaOtgAzR2QLB/l9cdxBHO6ILnd76f8GES/2BINyLOob4L/4EabrdvHi93VjgyHMWFhdfOLOkqNBpsxWYMnUkJZl6SZJGKK701jUMHTXy9ttHjhraUOetpAeZH1O0GO69okC511Ex4+IKB96bl5WthXvJe/QnXo7d3Dj+9tvHN7KbxW2+9SPNvjxHgTErXS8b9JqM9CyTrcDmKOR5azHxpKtCld7Ckhxran5+qjWnpNBbGT3InKwe9V0xMjN2Z3qSXp+UjnfmOYrseCft5tNit+ak5+en57Bb2VpT8H0K6hkAMKSp5AzAhwQYX1RbqGQbcIcp06+966rrQyYyjzShNV2kxyE8Rf/xMD2q6gKAUMKnuRqWjyWppMJIqgBG3Rc9omquuAPX4FKikxdKh9ERESgmmOlJRFLZ850mbz5TmAFpWEbqYWxQCxo0qcyxlREISnJAXjhuOZnedZo++ho9QqMVhdzPkbUvOVx55ZVXPjxp+rjWqhvI9V8kfXzHfcs3LStZu0zKaJugzb+FfkL/eaT9IfEefsclcmr22x2qEsF7/+zw1EfeSS513/7x5dkNHSOTmd6Q3BDTh+ShlBqBjGzIMFcxSMPgjl8XywGOPfDkBvLtF3ySwGumt7dPj56w8iGWeVVWb5jRd7kkfEh/lkj7kxvcpHzDk+3vz1BsFxT8+T3wLTkIi5w2XxLhPMSuq0oh2US0+XjOAQcqsylD7MdeJrGb+FZ9AO9yP537yVFyAwl9f030BPHtp1/T9cd2kfRlSy+N/q1148auje2RY+QOcgGxv3spPXr1t/RNuuGDP5CrifkherRt8WL6z5uvmDF9w4bpM66I6c8V3OpItIzVeYHWZ65eLmZZDVR7vy+FTdzp9HqddPGRvO+rRl41bN2ORz78MMo7fQAGvM6eNoePX/7jXbW1f9Q8fMczP0Zv9TnETqeX2d+hzvt2eJYB31vn1dvYM3SxZ+i8wgTi/B8nPVnbcvvF7Q+/+dNPEf5TkntwxAju5+TfP3uU/gX7D3CLIiPSME8IRV4KK57r12PTbvF4X3uEpghq5sSEDF1fJqLKdgVgn+EkooGxfkN6DjBiLvDS1dxorhVnpVXwVoV4pg2QRMlKqkLEjfovzHvjB4I+wC4w65mHEYEMIhK34MLZKjmrTLKAFthufQBAR0Cwy6KjYmxRVWuFOTX90uFNbbQlteCCyy4oSE2bc9kcYTEcVA9Rji4es9EZOnjdB68O2aTb2DxuY/SpZUPb/MOHLtEuq9jbVeRKFiq7Hqpcpl0ydLj/kuErUrUuKaPwolnjykcvXVcx+qKLHghuXbhwa7B+woT6/lxvM3ly0zPzPn2etvibmoSKW7rptXlDysiK3c9Lybrnd9NbyobkkfUf35yhldicGM8dlNdKy5htuZmgR5kGxTqE+Sk6HWarxix9s50+tGNqYC71Rv9pmWJdZ7GoxvyVdpHdP2VVub25Pn0wuUYQW3fQx3a0XL0wuoIWWyzr0RX4xE3CxouTcswlpmr98NRxAsCdO0i1dKv0OFfM1TCNfZoAYDmkCiIRbrYSHuGxqgxHJSTrGbx2+xSYbzYJMwx8piM32eIyN4+9qHlSlvui+bPybOmlFz916Woa/emzLq/FmO4ZNWPRyssvedI656KWOUJq9ryZU2fLvLRHthZVBP3VZl1m1fhRw9NM6ekTho8+TqN9p0aNbcyc9fiqYbtu2nXdleGW4tTooqaUlNHTF9jyh+Zbpswenx7TEZKdjLZCSUS/hbDehoYiNtKpMFXAyKExJRo8AmHXO/EtlBfRFKQiFfk9KWF1pALctXHlwFkOZ3Zwg7gsotAMMMXF/hwJOBpIGuFlCfh130C58zy5c5mtQworRFOUlLzuJCM7O62zfuts6GoIUZNSzLcOTknJZyTzAVLEWK6PH6CnhDYmJayp2RNL6THnUyNGNL5C73Y2NISenhcrLj4nVeSZiu0m+gs6mO7Zy0zI0YWyCmkjKzGi5MaHclckTEoIEEAEgAWUSXvDZ18Obzm5dcnFFy/ZenJL76TIQr69SzjV1c4vpN1hIPR7D8Cih1PFxXBZJLJ3axc9FGnv2ro3QvZd2BGJdHAiCXCTpLtkHbO/dEIbKpl/eB6w7Q0w88uJ7JZJgYKHsB/dBXFCUZTd+qCXmIOC204OBwJvbTh5csNbgUCk/eTXG8n8h7/5dt9D33zzcPtTT515uosIVx2JbuvpfWfjR73besR3T37dDpe+1f71yfa3goFINOmbh+Hih/Z9G35qIyMhV54oj75wnDd+4Y3+9jgHcytRX5wExzqAonFJpwsgmAd9QfVo/oaajCBLnG6gj81umRmNFUGJqJwTgm7RrNMSW0QRvQFDYd1Fu9HpBjLk9K5dPbuIJxJtkhqZbCyTpqg2oZvmrl1kNjsnq+Na+55diowa0m7i2bWrahcyKHiGCTB37aJtu+CPeHp2KXKzmN9T3P7UeI43Bg5+vpWIRhvDfcSfQJEaxeP9hH2LYtcabWKcD8kMDINkWADWVyJrgaPPxh4Kep/4JHN+HdKZdfMzP2G8NOCAocyXD9cu4yO9OugjYMR04vrBCxW6QhHEtEZwHeN65hLrkJQ6lHtjqnyUZqJSAsUvEdXTb+FNChiIxAGDgoOZ3qORebMzAxEzNARd2M++zB+CYQiLhr5M0RBBbm7AxgvtMGu5CUz2qAAJlD3mOwLE4Q5wzjTeZJbKVAgj4WdVybwYKBPdIYFYVWmClpSpAIQu3xn3dtu5M+7t1jecbnl0LLmRcLayjGKfvanS76owtJZVPRMaPfe6CcUpRKJtfE5l/bDayuQknWuYsDmv3Jouq0StWi0bQ7XVpUluoZLVtXNQ/T3uwz+Q6uTgjt13ekWTq9gq6kZMbq02pOrKfWNGVNFjj0/fMrWhyFZoLvaOriNvV8yfPnPkZO+wnMxM7wV11Y0F1w/257HFqZYBP/SY2bKStxeUEZhOGp4v5P/KrE36JUAlG46sX39EeIe5mamhQHFeT3BHL+Knrj/y05H1vZNQIsaeu5J7RxZlEeBEFcNTGUi/OlDUGWSIKiSUAd6XzUQwh4hDxRg7vz2HEGfQJU676f2ZplvP0BP08E03vFG1t+DeVZf8dPy3l2WMvudzSIccojr3M2PPEhsZSo9bVGTuXFJOQ3yq1DX2DP0z/R39/L1ZprGj/rJ90brX64boRu2Buw5fBuklc+m7/MiLoHpz335LsSpFIF/QPPpKNy8DjNXA3HoF6CX016jjxmJ/IeGSAcjVa0OxLRzKoi2kqgW22ExgIVYFgvoAI3LZSS2PVwCKIcpFaGfdSQ9bS1S7X3Coh9h41UhZX0ufyy2VyRswMSS9ISf1I2OVNnp/5XjJWRhU7xcLc+hv3Tl0q9mTlDSKjsoqVN2bqlN9RMfymuwsh/ZrQ4FRK4jHy519WfyJpx0FR8wjCqxbVWkF2aaqrN7N4zxuodnuukXrsmjTduSYo/MaZgrL2GmjxZLMJfrEq4B7wVWkIXGHd1UzgrBok+pVJkdB0IUgKiYxQTl43Bc2A6jAadxMtFmFNcXBmuJ4owEdYb1VDs55XsdX1X9yexVDgo+5vcoZxMXpfEEYDnZ/hnzkXnqa7qBL6XZ6eg/zfX3wHXIZSen9hD62OjPdlHnTTKdxPbnxr4+T4BU1yzTqzCS7KjjSbqcfZhbBEVzROdt9ududaUrPnLlJSEtJNsmaJf94+9+9r35Jvx9NJpF/EP7aG9Yvz31EsJBdWPe97JnvPMicXfeQFKdwi1qo9pNk8uIfr2jTTGvJcGeXp9dIc3YN65k5UxhB1CoVH6olKZIgkLoQUdPHyvKtF03c2PTKqf+hF1/O3xZtXkEOEun1B/sWkfuiI0ttU8jfFRvMuJ/0tPP5GKA+5r8qQyM0/yCvTmZ7gzlZzXwRKKM/0Dn0V4/QeZMdk052jLI/IH+K6bHi2tpiUlyMgUd+/QiwiJJTSgG/KHMmzORSZi4b6NaJ3AzFC1UWbIIXZQiJXgt2vXiu8asfXgtpG4AbwClgyBFYdsBNuEJ8A9Ab7hAJyi63FyaWS9V8e9mM7AvpF98/MpbkoEeqgttow9th8hrmYhhPcNPXLqevXaUZ5m+8Ll8Uk0no+ZYphxqISpIE3rZtqHeo5n+asz7MHqsSRIM7j6RFmyLo5arUAcy785VE5ElTln/yyfJh26qzHdnZo01Dq6qGprldtuRkZ3b1tqGvjNzQPkLgER/dxHXKDXJj3J5FQ0ySTEQ9FwyY0JeJdxMxQiYUEWefK9qyU3ikwr6ZfhKddD3/KNXyXR3RibKBPu1Z5+pz7OS7hMcrnSq6KTr+ev6Fvu38s3Aan/E0t1LOEyOAZS2o++SY/Aw5Ry1RNAyJh1w+p3cz01w5g1+yb3Xu6LBnutGYy783kKfX8mXkjQs7muk11EOvae64UIysnuKrMCSJYoUPyYT+fG8OaSLqss/pDyT98zJ6BukYtDU4Lh7vl/UnWhIdR2t/ZQOsPWD9o/DbCs2rV6jd+DSBnIQyTakx0vMdShtRqMswUjNab3S1q7rau3q2ospiwOdJB33BtAyDa9HHkaAJeFMWCAcrxBQq/DHmU+eJJNSJFvzoPNd7APYJOhFYvxbOi7hO5TUkkTQeyAaZ9wOHHNQDNvADDaGzWYU8IpxKKb3lrpNt49tvu63d7dLkzZm5acXKCZVtXz14ja2AnGaw2jDiN7fflktTctu3XlVcLKvVOSP8JSfoZfTvJ2+co9ertKFxHbf/6V9k2NPoQdN3WpUxYeGLbSptaWlDbrRJqSqmez0t7T1/36PdVL+m5Zy+T3in873Rf3yH/621rP6z5Kz4sfgxtknD9zuEiR/TPWTedrqH3ruDzGU7Mk8cC8d7tseP5+6g95K5Ci+oyOoFrgyojOnchdxsbl4sNkBMSNkArKA/4I7rXNkvL1Gi6a1ihL6bnbWQgWJ2fwj1toqXhF2MKeyZ0l6NNjW9L+jT0pJSVaIoETk5pcDuteRka3VJSTzheV4F+Cs5NUWrN5gzhZ9oSvTkDfV+f67FkG0pchcMC/qqhlRUBXLTHXyqOi/f568RtsRNWNCHU9VFa5NT0zOyk1ONmbxESktLAH+nZBgyM3MynJrkNKuQoQdyUK1xodJhSmu+zecLbhTVUpIsy5IkapJkIUnFbwz6/DbbB8wqIhJmPlYD/BH2WyDWbwu5pUzW9H/pu7gRw/+l/8igPuyz/Nd9WKZ0D33yf+lH/nA8FgCaLwOvC/zIx/9dVxKJddJv/nNnLmMXoe0PdujA+i/ipsLsc7viEnIvc6lBjXf/jxkLxH6EGQHFBejxMxgWSek5s6wzB3XuINTCfyoAXWEyWW1VvvpFTSNMplSBJMmpqcYMS1axu7ysqDgrK9OUkiZrhNuqLHKddWVw2sq2BQsuvXC5p62kIads6LTyZyY+PHzhvKaHPpw8R1ynD/qrK6ocbqO5tm7qtFn6JJfNUQADnW3S642WXJfD6c61Re+fdvVZlYbXAUWlTUlJUevV2Un65LNbJq/yW7IfvpZ2L19OPNc+7KtncPAg8Ks5AGttCAe5fFWG0YBAI43Ae8Y8FH0ud5nK78vQwwRA8gQ3gMhAtggTSRURbi+urTMas+wKQWLPUueM9Ht2tfGt+SVZwfJImS+rJF9efjuld/o6VoUtVtvSIiVCVtFSW7J71dLrfHcSvic8Y4a/rizgL69L4Bn3cmrmscWchomsRmYlrDDfbapmZhpwCFhIJWYEsx1fx2wgFfgkrmM2Rni9eBzZXHY1NwhWQv1Ouw5BmUwG1RhBcT8z34/5y5F+PTarH+5IqFQJARSOuWIPbj/0G8JJNxlUpdDBrB+agEaJ1T+4/XBHQqWIj8lpdvkv2g94Fj2qg2RQlYM765fthzsSKk3oqgQ5PvOdMJ/Xczema9KjGOA8nrt8ecyx8rxeu/QNdlLxBon5PEJ/HRnwF+i3CEX7tCNnKuIb+tIz/+3+PVyfGOsHPYPGAo9zqRKdgkCj0zDQTxmG/AmRmBwhheQ7uIz0JDwe9F5igYwOQjKTyohK0CPIERmpAK+vDNhFdxryPrYAEAe/FmWHv41uovf9vGsX9zOZQzaTORzkf45WkQtJ7V+2bPkL/T3dR3+POX73lNFr7g7O3/wYvXP9Y4/98/HHSLl32LxyCy9cZXJW+v2VzuTPurubVo4CaCkgdJ2alFvTPHG48VejC3l3/Uzv+8XzqxKfSmpZS5yluS9vDM8w3bt4/WPhx//52GPrr3iMJtfqL5g/K8/avHHqMEeWWiAtH36octWOmzx5dFCXvnDvgnEFBhKzW4/NQTP0ezmLtmdTIui5mOKD0awsip7Y76XnC+h/kS9hSmEGU1ASCuXiyGgTqnLv1bSGwqFWzb1w0JeSILzYnhAu7EdFO78idu0KOGDeExYjVmG0oEtFTBbcnZDGTzMrGZTVvicvkqcDd50NGLYB3s9VEAtoGSQBc+KBT09QFYNRqVhoQxSXysSH0fHS0FwF3jygamxt90Tf9njKNpTwAc/3no0l/UclDeQBT+vGEjr7aQy3CKdh3/toQWWlTqf1jBs/JD80WqKteHu7x0Pw/lUeOCrZ6PHwxXD/xug2OhtvIg88DRV5eD8GZIx2l64Kt2Zn583/Y+DClRfAutgDdHSV9CU3mbuIm8+t4jZzO7i7ULdsQG2HIU2Sy0S/IlsPMudBFPMAZ6YYDcTDIMZSZaSUC3BgIUfi8e5M8fBgRDJaCb5/EOgHGFHRxyQwsqTYM4hxTSMcm72Yh2sgL33a2nW2tUCfXe6qt9dpksf7xpUVFLSeuaC1deHyreqMjoX+W5w65NswoBpsmNU57qxc2JGh3lqxJLfvVlcIx5ZsUgb4oJ7P1Yf1ubxeqw1riUavTafd6Vq9xUg8Rgt9APcWI+2G/fowZnEnvNN6tqvVN+zyKc2llSa7pK5wTL7wllZfa2vr2dbhDc9/Ve6/5uuW3Bppzd41VXhTlbKHQ6k+q+Xra/zlXz2fOzSDXF5XWMSAn6Lpp7psfU6O3mhK7jEDRtYBg/K1wqXEorxxMTsQ5HlqueFMVouiAWPAq4tFobQo8r96ItnjoStjaYHbGJMGKtrGuFhIyI88f/lFKzD0UwvOf29lrEWVXgzS1tUe4ctjMXUAX6x6Yfp02o1mOISm4nL6NIM5yUaUfcaninwh3N6F2EgxWmB+SHF5dxJnBChQybUi5CW+fmdR50CWWbfEjFvQtiXxCD1MY++BFI1kj70uu9ds5atCKJ3iWCIE4SQCbL/Oit45Qke4sA67HNqnZGgb6mBwI50DucP3AShQ2zTqAjVk7jt8z978OzvaO+7Mf3BPVNx0/e3OpgWjiy0v0d/SDvrbl5zDNs6w3yntnbm88HKPs6GuMJ6JHiGz0XaIPsAsiAby9Sue9/+EQIWUEEI/wtxP/udXrHzKl9Tocg1N8j5FJ7pDSfrKYf5S2r3i+WXLnl9BPDVjxmclhdAekfkcHGc+0zboyaHcCG4MNx5WLxcDLioWZMaZeKDY7ivdiOvOec4xCRplJ2xiLBWWOby+jAw5s67MNf2Z6XzroMPoKzDWbMCLUCPWn0eXN3STiO5XUnGne+mcaVnZSQVzL1junjdu3Lxzjnt/RjuqRJuqWJ6/GiMlMWtvJUV+91XAI2mykTNwuVwhylfS+IIyoJdg05sQ3ugBASN74pYEAC1upnuWTaqx5PWKQ0ePHD1UQV4d8vmun96c51298Dcv08CsUVPe3L1g66xbesbPG99zy4wLGu4Qi/venrOtsXHbHKFq1lIVcWw/PGmhlX5ZRjMeSb/44JToZ+HpXdMXGFdNjvvdR6R7YSyYdAC4AYx7bCcSkMLIapklDCotyXod2gGHCAuVSmSdnkm2Au6ApLlgfH5j7VvT6Zkl9N/TPqxvzJ9wQdM4XmO4d5m15q2Fz+oNo7tOd4026J9d+EGDY8UDBg0/Rry4bP+rF05ZpKap5F8pi2dc+Or+0gIhVHv1T6HpbnoNH8g91dHxl23b/tLRcSo3+jtylW1u/dnNtQ18QpyVVIyrwLGoIUA6hQQgVGW9U3DHou7cuv+rd571B86+bBj13iHhDL2RrC75MrPvlrI3bWQ13V/Ir+W3y+pFt9zi9aF20dD0eEfP48RBMp2byVM+WnNxHj1Fvyohd9C53DnxdrS/jLfzn2Lt/KcgOxizS+iQGlXNjDJE+9JOFjyvOYK4uov7lNmzlnE13EjAbYoXfBqP+hC/zwHgxIvITHKhZBWVrTbZbor5EsCqcZsCzHwbx1BMiObF0Jm7TAKUhaJvk3BP68i6FY8t3nT0SqJ6Ps2XUm9W50q3v3LJb+aT1xd0TjGUXOW3TXy7daFW29mK+5tUk1jYr74HHt8tqlLNGS6jL6W6+po3HhOaQh3zQ6tmBRs2TLzq96R+aEkJEV7dNuPeueEZllDLdfOLq5y5094U9qy67AGBv+uyVfuGKvHDojVXLjNlpefk6i1pDnUGv31OeDvr90lktHyVtJXTKRZ/qgwzRoZVYsS6Aw59QRnvthNThtmuRIk1Syqh7wlS+mrmETT7P1Xw4z1LXww9No/oLtv8/cENGQDUav5W219Mf5C27qH/2I8mkLe9PqfltbZNPS/Puu+zTaRzGD09LFYEa7eKeKU90v3nk40KMdnoCqItINa+P0e7L+fPuC1Lvo9+eAlfTFfwZcuiH0ob6Q/2eXl9n1/Ol/G9hVaBvhn94BLeH/XxFcujR9i7vgnczHLmm6vEtwPgxqyVfBrCLFZgbruAGzeZyTVi6aFDPX84JLTwDxhTDMZRWdE3om9mjTIaUoxS47N9B599Vhj7bN9evkg3xGaVDXQT2QykjG2ILvE5WhZ3+FyjUYQC8HoMEmAcZuD7gUdTwIGGBOTlraGe6xDoi+tDrddoxdQkupRsyTZoXBo67thHdBxkDNlkC12alCpqC4N8G39pkHcJHXhPXzvshfe09swkuo0utRqTeTVZ/dpr9EY1nww01S5yeVKmXVtYTtXkTDlb7ytkjTwb2mpT2iojroS2BqFPYA2W8YAv84jIQWI2yZo1Lb0TUeirenrK6p3RvdFFcoomWWNLSebXkK9yUxxZNuEyYf4Fk23Ubnvywr49F06ykc9sTwhNfReRd0WtRZuejD7fVzi0yalm9N3v5w9NzHbew+QH52pq9ZLsDBEiutx6K4lbA4tOk1koI6IQCIoANM8b32vsbXNL6Y3+wyo9vbF07m0bDlMV0271PUdWs2NhPlxBVvsPn4/7VE2I3/Vm7KrofqYNey1W7b9itZzL6+Yg/vlllCoHHMJ7wQHBKFEkmXgNACHOG7IKX8Bw//30O2abfj9pS9Pw5FX64dy5RHX+EFby/cSQeBNpSxL5btKAak6SzhczmXCcNsBVZvpllEcWbcRG0Gx/ANd+Hd3PXIEGx7nonRQLtZmi2CsoPNx/rndQIHPV6r5MZtN8bsQSBUSzevv71DKgxVbqRS2YEn8BdWKDnxKLrEFTkObIBNIDrbRrxfreScwpHp/HwrcooRYiSuB9xcEKYyD029wAboh7TZ0vXjKG0zezuD8KYmEkMk1hptmqPYj3wiiFxNCOgIX2nvvNhRjhQvpl2eqYZQ/aREmNkd4DeC3ir7522o3a9Vhsuvj1YlyCrgIAgh7QKKfZj+IfZooei3/Yxhxf+Fa0QGd+Mhi7sD+mRRnjtlEIic5wQOvpmOsNBtsKBtB/qf847v0sHo+a2hcvqauvr1uyaGOJJW9SnhV3FivuFhRardY8WV0XWrTozKLFdfXRxwsxsH6Rqgt4FEteIQy9FVPRYM0thuwgGFDAXcwt49ZyHeddPYGMOFwwssaikj0d0TUSSwp6CjBjbH0Ard7SiCkYsDKrOCPTeckZQXYi4CDeAAAzSUb3Mo4FgUWltLdKTMibhJGkKW7BRQ/Rj9laq4Kf8a21a9+i39L36bdvrb2iKLCYPHF9z4Flyw70XP/+/gk3+w3rLtr8Wbblso2lC92L+eTU6scyUnUZgH5VUjJA+CFXly1whwUhObX4+tlEQxdJPk2SmZcX1PKusrVTg026Au2Kuha+3LQOD+za5XUtQbbkB5pRxJrWc+nat4hxoEV3/vml+uolYja0hP4DWnSpqrm+ZmpX+5WPF+eRP6dpVVodb80lRKUzlwVKBPKvWVD+XkZquipZu2ID/Zg3mxenWGnl5ps/oLcc2doy7uHG6d8sVtLNSvzWc32PlVgrsUDFtnNSFPMjkJAaKQtjCDP5BAYWQXdkxT9/YA+cX5jhzb3n9QHvjw0TT/XnPC/u643RD9F2AdehrO49EO47IathAbVhIDGMqB5B10ppb3+ok5T+6MFKW7rDsb9YLCMPw+VxeSI8QR+LP42e5GEl8gi+Gt6KBhN4oxro2Vnye/IbXBZXBDyYnxvC1TNODP1/QwRnJfuCDEH5jyL8McskyNQHZfhVGUmlmOkGRBm/2zB4U+3bVnXLsrXNZq1W2max9C2xTrH0/WSxCHdYpsyoId/XZGoEKVlVsWBMafkyUlxTM7WmJvrhKH7jyL6fRvLto/p+Yvl/j4rnR8mPbJO0WnPz2mW3VG2zQG2LobYkyxSrcLuF1lBdzbhl5aVjFlSokiVBU4j1Ta0ZOjJ6zSjy/ahox0jyfX+e7a8Zpdh8QfcATZ/CuJ9+bSsy7QZONnoHBHhoQc3FjQfxAiWv6lq9b/WalqmXwzB99XEEzSKZ80xR5Bj9Epnxbx/a9w2mGBloyuq1kxH0rp38GX3G8aEiovvQQSZ8hndghEXmdgPtmkqsUrv0Loyom2nIFWcsn6OBqJiNSoU+Q5aQOa6QeTezNHAIjyqxDHky9qGH+FtPtF1Se5FHN3FGS07OnKdLdWpXiU5HG6V3W9svuKCdtltcoip5qGWk0UDfj0Z18sK776mufoU+mp72UPS7adPGcTF7VkVWg7JxnCP1LCYFdy4vHo9AplCSxrg6JZGmhPUQ/3KCI+69YcoPppF8l6prgP/+MeZ2j0Em542gP42Yx2L7tyDqCvds5VuZHImMUSLrv3U7+eb29C/pu1+itJwh1G7Yk2mKN74b4/7bRsybN8KmfA1gDf8oYp8fB7wHa40TJzZjsCcVrOU0+XfyQS6TaYjqOE6P0u8Q4ULQxZyWlKnF/+JzM3rT25e0WcIk9eS3G9KtNPPk1yptVemIQFNxqfg9/f1zpDbrAqcro++zVmH55ZV/mU2vW1+ybnrJ+lr+h9ipbPp78aqMM5evglq0/+y7T6OjN738O0FtyXRmWVPUy+jvD8KVGS7nBb9f0Xfb5MrG9SXT13nWkXWz/06fILXZcKY1i74O45cSiwmI9lD53GhuAtfKzeHauU5uF3cPt497CkZS8CsMhVGApocIkK8kgCyjSpYwXpdDMJnxg0cSIiMt0ZuBo2RGUWboG1k5dKMoQAwE9WWE6FG1iJyDoDeYUWeI1nS1CBGZBNWu88oicpz5eOQ0w4OxHgHtsezMnkr2YT1OxS05aEBMGQQ8mkMMJjNcIB9ZMGGXJXfUxAU91vkTdlWPmrBQeLXAfuPC3fSjakzvJp7ItY2qzFJNklaj1VSPVRemqdOG2FvTUtKAqL0TDuW0arugH9VFd2b5VaNLyW+OVhpUclqe7ZYHeVJXV1lExh3NWDqcnH15CiztJbnk8SUYtI+Prro1maRm6KsnXFOkkdSaWqdWrZ+Y/9jMS8iDj6fk2g/MbVkpyz6BVi2/hJC62nLxID1JckdPmLArl9CTfDYx547afVsuyeu7bflb+5zBHXcvf3ufI7iDX12xgddkZeY2hIpzxiwgdyQLuSptqkPKkdTqB18ndyvHRA7knhkToCmj36Q3Ejk4JCnrwhkzN5AKeljFGzOs9MFxjZMBTRSiGyOpmHTHqjsRpqhS/u4XMglP7vqObBGINk0klq+aR9Li0id/Clnyc1vXfTpvXzkJGbL1OrqL1NAPiUBi3+b5LcmX9dLjLGpWADjdDLcLpT84QWQpw2zihFM/kCWL5uqndn49//DYsYfnf905VT9/AVlC8heQMb/7DWle+ZwsTGxsnCjIz62kB37zO/obwFT3w7w0y/OA+xzO7K2UaHB2/Nn0MNMAfgDPKdjdEtM6o7Y/rvfHZSbYY77oyBJLimGsEFA+XIHHyk0hIpuHNeWtn5CeKaVI6dHWzwVdqpEeNabqhPAVvLPFPjnLlpczkRc6DCqNVp83/tFxzWu/4mvKpudWXVWzueaKiopA7fpNHdb8YY7iFGt1dkNWjSEzO6lM3PS3j+dcbZZ4PvqpTpeertPxLl5ls01YuXLlbAfP56aoJClJbfIPb4pEfWnViyMzl765sboi3fbw7j92t63lv5KSckdPne1xTE5Vm7NqZk65wO5N9I8dTF8wa/AsYtNhRAR9AoVhUyItnn0ZqGb2jxQ0bugKi8HHlNBCjGZgxgkpStw4DBEDlLqqP4awCp6Xo3wFhQVnI4Iurs9g5LUXY5OJOtmIYXTwg2p4fxhoZNqNtHNeIfFAqgQdaQPqqRGfgIFZlLOxq+rIaRSDcuqE5w6O9aE838xIGGY5ThLMWkQWHwqfD4wDC2yCzBC+cNxGS2HVlBaElTiSA6YQcQsTRiPG7K6Ufo5HPk+wPnKK6H+oY7YlSMozixGdM17ACADsogRrJQd6k6NhuaSJ7s9ITs8LTR5SXT1k8pjqag35V3HRzCFDLps86bL09L5qZQziNCZur7cBFZ5J/WlDqlsmVw+pqASC5RK6Vz+kGm65bBL/TFZ6RvSRGB0qn9P+HBYzw3XOG5zL35aScxurfNEnFiy0nSFOMp4+C/Ok7dz2RRIl3NGmWCQNxRzr/xd+L33QnED/ZgOLnJsPPHUh5+EqWOy3OoyGqYmry0VGTtsZaf1/ySuTCHhpplZn7vksmvB/lU2c4dAJ4YHALudNYjHsEtZZRjzGSXytsUDAsjdo9rrjgiNnjG1IXG4sqo9SM40qLjydOMMHpryy6NiHCuCPeJQQCgrDgO1I+tV1x/iX86w9C29jIaucCUvx/EsQPaSYfwV6SjG/kfMvxNgRyw7YKCX2T3+/JL584ismxD5XAU+WHr/DHXRriE0DUF9WbgVwE2FPw7hC6EjUP3jocc9CRrIQyziLhUFtKE0cHfRQU/0CGvihU1xMJoFHg+BiSpKOrsp1pHuGuAsL3UOG5jUSz4whbndhExQMGizKi7qUFH6ULJfSp2R3cSBYWJg9JEia605mD3G3FbrdxeeMG/oMpbJvGZiAc3MpMa6UlorGoFk2OxP2QhXK/8t5pPDi3mN+X2JbaduBdQcO0O6B/a7GizV8VnLym6WyONvS6PE0ehKbXBUJV4XDiXvaNneYblJ+/srXmmsXf1+al19amp8HMOED7gMZCGIlHj5RviHncLt4/H6catDXSTz3tLXds4deSC/cw3JkH9lHf2Ah8lhkb8lzzknM9ZzFUY1fxPxJFb4fZ0QW9gr7XogXNtFmlt12LHAHzcjzIwRCrjqCVkEYlHhV26IIvh9NgRzpFNfSj2C5sQisnxz4fXQ4HEKqxCaLxwuKfclU54aZR2x6HfOsljEkLNwWPbKdn0sXRyIY8TOCsLTvRJj4oh9u5+dhBIpItEnVDLsE+ynsJb1OCAKaF21Os85mFnR6qE922kS3zia5v8BIdBvJWkD3azH3BYas20ivh4ZfDzmxlKzt2Tr4FABbPLWR3TrI38gMOO8XUuz/jtM8v6/Re/8N+3k+ZyLVqf+WJU2N4b0aaH1hDBs0AV/TzE3ipgJvMxO4m/7vlzDZIBO/KlJCm1ERE9YTJYwTfshkoACO+8PyeY12/ISeeE5etPu9bIt95MTDbFY6WdLXrk0rTtNq04ymVC1/KC29MD0tTVusTYt98QT+cWMx1eM5VC/jkdSI2DhcV+bxlNWFY2mPUQsVGHugOm2qqccA1aUbeoz4iB6tItVm0fLCCfvI4O8wJFBV54vYnRjFODFaN38y+rC4HiMas2RwuP++L/rjG/95IL6x2O/HNfAlLU6vDEOMiiRKsDadEENsYRR82QsqaUVlgR0Dd6FZXkRxRZRu6fGL66ZU2AsKCugB9PhGsViM3EB99Q3yCHkLdyHHBU0hKYjsaqDKik7GbuYWhyLUNAkjWSFTYVXJTFzF2PM0FssqIZ9EIrkdXR998lFXR44j66LR+SPqhg4JBaxlpcaUyrIWz5xUR+ucoUS4cUSWx5GTm54lprcEF44lpLCmoSTZNOHeO4aMnLV/u1ZOTnJqb3h8VMM9V2ilpCRn+uq7dt5wT46udvEV2zuuLKu7++6xRnuF352mzdxQmu02ZUgaonEOmVQ8YqNaMJW4h7vGpf55dEnSlGBeQ2VdYIyzboy2oLT9mdnJDm26nDz76SVr9kxR8pPuoCcpqr6BZvIAcbEX+Pv/NSYl+oyS+ASG7b/KY5RxSHWYV76OpExetsEM/l/zyIAgeYCTE787EItIeZ6krx2XAxwo9CTHLWByCxv3/+q6FuA2ijN8e3fS6WHLOr1j6SRZkvWwZVmWLQk/JL9ix07sEOJHnIdNnDqxE5OWJiQ4DpCAg0kIBdMEY8gAtkmYNn0QGmAMhpI+hgooDJQQk2mnDR3SyQCFBsJAY2vp7p5k7EBHo7ud092edNr99398//dfj0YS8e6nnPzp1Tc9d3ENOl2qpAIyB+mwjpS8dnxvsyf2m1hParOuI9WEZ69+glc2tBaMgCslQbfTnGE3C2Xr11ekmxvWpZtFxcyl/Pzld+xrXLxt3CeiXffNlYh8j5zLbC/1Wv1uoz6P9i9ul3ltuO2SUWL9RjG/CsdxHFQAWcRrKSqcEzZE4wztCbBcmGT7AjJe+Th2qEgMOI5A/DIGfDwAcATUQIDZeGhLjeRg9JqjzKXLHw++NrxMVpB3dPrvlwawFJm7IKkuntkcsMeead3cAKfVvkxkK/NetAWx9je6dAaFS88fG2rIU3o1vEJZqtl+9Xa9iWWdBsO7pzbXKXy8Rq5sSmRXrikYf+sTAAZ3nhm6gbNkE5L5udc3N4QMuWBXtcNXPKNFPaP+M6W82gcPlLpMEpdXL2HN7UV1vFyh9PHrZhrDOtaJBDPLmnbX9qOeFT7NYNrGSOOMMVsEzyHpgpZ0su7q5UCPlD22iVgZOCxF6pDCs6P0vQn4Llq9sao/mtydQFZQfiJVEwL8hJNKY8RiATx+OfliHrC/FunbMf86+x7oQ+pBHxwDF6CdPQXt4EIK8yzaO99eW4zZnnAeMA5M4llAfw3H0BVj6Gp0FeoF9bDoWvTPa8VrE8wlQhCGtvh88Y7Xnpu6DyebM5GbXEI/qS99ixQOG6cYYcwzUuCRQpjA4xkbc5huGE/eVAx4nj83gBFX4rnAKtWpJCLOH40XabgkwJBhpdXhFOP0cVY8TCLtRsP8DdgvZUJtVWPE5Yo0VtUKMpnSqZSptQpNeTCeZy1tXOOXadVq92hhuDVbD+RyRybHa6VCpMDhKIgIUi36VW7tg6XW9BdlVjIqf3T9ttGnRretj/pVDGvTumUSmcffvOb2uo3Hb2w0MjK3W508V7+3Lp6JTE07+pxW+SLr+tZFfCoadYc6rRqqpzD0e4TwrJMaaJhSCkd7iM1Jz3+G5aeIxMaRkytpiyGFxUHv+dzSm9As9SHNYwPOR0l5T40p9ynhs8AeVMIWgpEaDIZqYGeBHGemYC4RjPWKanH0DhhEv2h03jEqwhqwuzyGnq+EJE6mi15wb29uHrNYnC7i+WxuWi5YXI7rtzCfH9IYDMGkOngjf0jjD9L/Meg91ckV9GeCKlN5SFEqJHnBrDzEeY1K+oUwdmq2lpYTr6bNE2osYewljS2a2dN+Wwtj8tvmLtj8ktWi17K5acW82xLdqrmpUQC22V+BgcJgAA1c3l8IDxZ18fBTWYCxwc+UFosAD1osSqBBdwUDBvNszIe9keWlrcQduSWj2gdvxvUfn7ZWrwIjNj+8eMbm9+MxuYU6yK3mbkWaeynS5yhAsGcgLrEiASYHVlbKIflNA7RRATQCSYQKwyPjtAediwsyRokIZJ/XZ2dozUCtzFGZMvUaU5YeiYIpvS+cu0SizSlZY/knvNe3qa0pv69308YqK5jara6utRsPd98s2POzTLNafRZPGzLyFEDjK/DpJAM6s9dlBlqlU6VnWIVapYMqMGWp7Ozu3VrQ1NLrht/ASWFNxMrTZlfYrQdTk8ZMv914X/ctNntNNT93t15tWqKyZHoVQO3hnHpRR6OoD7i3CRdaORpJ/dROisI8AwQnKgaCc8B385m+ZbeqBItynzCEH3N9z+c5hRZegk6WpAjR8FDzxAElEl84uLdXvDK88XGv19ew0zSnYOoUgGbQi5YxGXJVpkZj0GvUqgyFHK0dNKAB0nJstqBgNKkywLNlwcLobfuvCxaazRq6yOuwVZTmecvKbMjSVILaHRMTO/pX5YYDOcPQ3zvS2zsiPT67aviVre3q1hpmj8loNsrUnMyoNGSps2RyuUyVocvSIP1GxrESn89tMSuUfFby8I6iTVZb62qrtTBYvEOikkulnATJKSYzg+EmPpxovq629AfW5cg6xLfopVI5lUrpB1Q11UiYdQmQuzhkZXA5Zw4H7YwY4BSg8bNTIGW0RIOGj9tpl+BK8AZjgMGnudJ5H8y6QkfHDeC6RJtvZduyGP/k668Ola340e9cDnlFOdf9WHttzfbRWpjReSxxblvnWvgK/MrSs//w8s6Tpaa1O3ZV/XhDDcijg4QQUfqByjPzQPOYNrRy3w1da9V18bITx1x9v93troEz8K6L4yB0+Y1hZ9bv+ydvDNRVrNoVszg7D84VE9NKzOWkCAbZQZXguuyLq5+S8CWxeOLAjn+kAADxkqe8FkZ9cTgiDczzbpDSrfAsod+oddng6ZzyismK8pycyHiEbVqYPyyWfevpwRwcO2OPHEokPwrGWsrLyspbYsGQ6fx5U2p9NhAuB1zNIkJUbFakJsSJ8zjTCvNRRTBOC6Dlkv1aZc7LzaQFk4XvKAT+gmhPKKSOWOd+eE4AxQZ1ZPZT7LCh5aqV+dza6zc2ZLnj0QIznJyYdMeZAwJ41W/1JH85dxuxP17jbpI+SZmQ5hugakiGhlEMXmOyo0rg9qCJkBMyIlsQ4IcRJQVnAGbVx/hJTpobNRjRLsfhiaJp40KfO9xyPAelU2pBuPqN0CLwgvDEv2/d88Vl4Hn6xKdCa7LDYXtWt8SjKJr7a99r+5u3P7J3D/uvjY92oFPg+fbu/rjqS/Do1qV7aGnyHbSg7NotHeZRP1ehIOD9+MOffzX2cMVnAlydW5zvPq3lGMDCoy8M7O87MH6Lt71jw8a7TqMzNP2Sz1/a08Em/wJGju/aLdZj3ITsrW2YA3K+oqXT4fLkYowJwXBhGWKU8Ebsa5kGDReHhi7CqelPYP8+wLTBByeBfmICfjw5kmx7Pvmzl+8Ed3Hb7v8CPgdH4HNf3D8zNbbz4AmkU1UA/YnhnQ8n6Jcef+oMktN3UNNcG6en5FS2WFHCbRejeQCTlGCi1YgGyWP0YF04pIfEODbBNJKBVGmhj2b/vKzbo/VFp9/seaC9xbf/yDizYwRUtYRBf1f9+JH9vpZ2yd0nPsZR84/gn7x3Hhmv7+oH4RZQNVKPLkw6Wtof6HlzOurTerrrR+CZRZg2LUYIXovKAdoc86JpEPreLK4KJ3zfeT7XlXuvO9ftPvj9WL336OHkIDzljMWdTqejMuZ0/F+8SbrGDXpLFuy/rWqD8R/gikgMv7Cdrh9LIOjiJp0HN4rmfhmJxYXjbHGItaF/CBs9oBCpcH5V0bHH/rHlSdDV2QUzBnsDa/R6qSqRot5YkkhWJ5fJQ4ZlJhO4TPq7QvVIbuW2kup0fC6D8yCRqGRyGB2SjHSYxxSSOCUSqUxDoHMvGOwC8BdgqdtTB0+CzsFBaS8AAELdQ5tCm47qIITfNMOj4KZmgPqmtfjoQ4vqWS2ok0HwKQveuPRegthNHantCIldXcEQGczwj70FGG8HrmC4DswQ8/xo6j7qj1whh6sLYZkjjjikrVJIXSAqQgQdZMWYIdIc3JyPkaqyTTGtZn1yZm+gNbuw5OU/5A+Dwf8eqlmdaysPLn2mshgsbXr3vLRfbm1YYsyQSgrgPfeUvPhyNKBryR+mS66+k7+1u3ODI5RRG/3bsvpKBYVzlkUbzr6gJoUdfSMf8SOnKsEiY0USduq1JJlcQra5IAWl4yUkQuHUS47ANtjWiN2SPbAf7hIhdQnz/FHmifkmjt8g620Ab5HhzJ5KSDCy/XAjeB4u/xD+HKxfDrrg5FsnT8Lt88cb51uJdP09cX81XXuBepHwGh5P1WqSEnWfFSlkkKzUEOgZ0lXwQwaY649+f6Ech2fTcpz56TkBvonkOKtBXV8rxkEXFuNztwmwDIlxupU5QM1z4h9P4Zgw+VIYMzlJj6dKMGOaXLLH9tL/AIxzQ2cAAHjaY2BkYGBgZOzcvTpCNJ7f5isDN/sFoAjDxavXJJFp9gtgcQ4GJhAPAGEpC8MAAHjaY2BkYGC/8P8GiGRgAJOMDCiAkQUAdcoEZAB42mP8wgAGTLMYGBiBbPYLDCnsFxh1gPR3ID6BxH8F4YPZE4C0CEQOjk8gyTOg0aFoatEw4wSIOnTMrMB+gWkPKgbZweQEpG8g3IfsBsYVUHoCmhwDFjZI/zGgeRFY3HUC4kew+08gaBgG6WE8A3U7CKtguh+uHuTHL1BzvqCGFczvsHBGtwfFzAmoZqKHPcNxNLEsoJ4uVDeDzeQE0r5APAPNLjM0d01AsysPiDmRwhCGJwLxRix+g+GfaOLbkMIQyc/ofJj5cP48JDOAdjEeQgtjkHs3AHEAkG0EDY/jaH78ghnGGPGLnjZDoOLCUDftBeKFiHSGEi9IYtgww3k0+1LQ7ETKQ2AMTaPo7oX75QtUXRpCPYrZIFyHFv6weOqB6tkFEmeKYGAAANkHWesAAAAAJgAmACYALgCGAKgA1AE+AZABqAHuAi4CkgLIAxADXAOSA9QEHASYBM4FCgUyBfIGHAZkBpIGzgcSB0YHqAfaCDgIUgh4CJYIwgjsCQgJFgkkCTIJQAlOCawJwgnuCi4KZAqCCpYK1Ar2Cy4LdgvoDEwMkAzEDPwNNg1mDZYNxA3yDh4OYA6gDswPGg9+D+AQBBA0EH4QxBDyEQ4RShFkEaISQBKIEqoSzBLuExgTqhPmFFIUfBScFLgVDBVUFZgWDhZQFpAW0hc0F8oYRBi4GNwY+BkOGU4ZiBniGigaYBqGGqoa5hs0G4ocPBxsHLwc7h02HWwdjh2yHkAeeB7WHvgfdB+2IAogbiC0INYg+CEQIZAhzCImIpoiuCNiI9IkWCSKJNIk7iUQJUIlkCWsJdwl/iaaJ0InxigSKCwoQihcKHIojCiiKLwo0ikKKSgp5CpKKrQriivmLIwtCC1SLaot5i4SLiAuoi7mLxgvTC+iL+IwSDCaMMYw8jEuMWQxfDGeMeQyujLoMzIzTjPQNBw0YDTWNUA2YDaMNxg3UDeMN8w4LDh0OJY5BDlIOZQ5rDnWOiQ6fjq2Ouo7EjtIO6g8Ojx0PKo9MD2cPhI+pj7OPuw/Cj8gPzY/Sj/CP9A/5kCUQQxBukIoQnZCtEMsQ2hDskPyRCZETkSCRLBE9EVaRZhFsEWwAAB42mNgZGBgZGHYwCDIAAJMQMwIhAwMDmA+AwAVeAEMAHjajVLJTgJBEH0zoJHEcPDgwXiY6EVNWMSALFeXRIkhGsXrIMMSEQYYFhOPfoEf4ne4XLx68RuMH2B81dMQwlxMpadfvX5V1V01AKJ4RghGOALgi8vHBlbo+dik5lvjELL41TiMDSOj8QLGxrXGi+Q/NI5gx/jReBlr5rrGL1g1J7GvSJpFjd+wZD5o/I6o+ejjzxBjn3CMEoqwMISDHvpoooM2/RRXh4wFm/499xaRp1RB9YjIQ4OophiPyMEYN/y69Ca6LWo8mos8ErSRsjjqPB1wl4p18i1GSGybNRyuBFmXbIz5bXSplDx3ZDZxpCseBupt44DqPrWSraOynVNRZy15TQ+7zJSkZVDAJU5RxhlRMCo2FxdUWHOKq7kOzVYq4YKMeLNsg0pP5xtOI+LY57fAt9q4ZU7R1MhKhyqcUhxptbLYo5f7x93LqstV3qKneit3ryrUVHOw1JRtVhxppTtVTiZUpl+ZmbV/V2Gr9E5ULfmHUuosx2kLzqsXCy97Wr1H5uXqXjmM60/nabFLXTJNnkn91h+P6YatAAAAeNptlGV0XFUYRbNDocXd3R0y97v3vTc4FFLc3a3QQilFSilW3N3d3a24u7u7u7uXVbLzj/mRs2bl3X0nJ2dPR2fHf68xoztSx/+86DP2R0cnnYxDH8ZlPPrSj/GZgAmZiImZhEmZjMmZgimZiqmZhmmZjumZgRmZiZmZhVmZjdmZgzmZi7mZh3mZj/lZgAVZiIVZhEXpokUiyBQqahraLMbiLMGSLMXSLMOyLEd/lmcFuhnAiqzEyqzCqqzG6qzBmqzF2qzDuqzH+mzAhmzExmzCpmzG5mzBlmzF1mzDtgxkO7ZnEIPZgR0Zwk4MZWeGsQu7shu7M5w9GMGejGQv9mYf9mU/RrE/B3AgB3Ewh3Aoh3E4R3AkR3E0x3Asx3E8J3AiJ3Eyp3Aqp3E6Z3AmZ3E253Au53E+F3AhF3Exl3Apl3E5V3AlV3E113At13E9N3AjN3Ezo7mFW7mN27mDO7mLu7mHe7mP+3mAB3mIh3mER3mMx3mCJ3mKp3mGZ3mO53mBF3mJl3mFV3mN13mDN3mLt3mHd3mP9/mAD/mIj/mET/mMz/mCL/mKr/mGb/mO7/mBH/mJn/mFX/mN3/mDP/mLv/mHMZ1j//2dfYcPHZxKd/+x2d3q6jJbZjLDzGYxK7M2G7Pdky15LXkteS15LTktOS05LTktOUlOkpPkJDlJTpKT5CQ5SU7ICc+H58O/K+SEnPB8eD57Pvs5spwsJ3s+e3/2fPH3xXuKzxXvKT5fep/3vsr7Ku+r5FRyKjmVnEpOJaeSU3u+9vPWcmo5tZxaTi2nllPLafw8jbxGXiOvkdf08JJ7Su4puaPkjlJX73OVWZuN2XNvckfJHSV3lNxRaslzT8k9JfeU3FNyT8k9JfeU3FNyTynJc1fJXSV3ldxVclfJXaWQ576S+0ruK7mv5L5SyHNnyZ0ld5bcV9hfdPW+DzObxazM2mzMHm7YY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY+hr9Papr5Hl6W1kefob+hu5h5d9n3vfly6zZSYzzGwWszJrU46e58rzep71POt51vOs51nPs57nWo6+Z33P+p71Pet71ves71nfs75nfc/6nvU963vW96zvuZHXyGvkNfLa8try2vLa8try2vLa8try2vLaPbzi90vRj6IfRT+KfhS9KHpR9KLoRdGLohdFL4peFL0oelH0ouhF0YuiF0Uvil4UvSh6UfSi6EXRi6IXRS+KXhS9KHpR9KHoQ9GHog9FH4o+FD0oelD0oOToN3TgiAFDRg4b9C8VmLmgAAAAAVWwJZkAAA==) format('woff'),url(../fonts/dashicons.ttf) format("truetype"),url(../fonts/dashicons.svg#dashicons) format("svg");font-weight:400;font-style:normal}.dashicons,.dashicons-before:before{display:inline-block;width:20px;height:20px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dashicons-menu:before{content:"\f333"}.dashicons-admin-site:before{content:"\f319"}.dashicons-dashboard:before{content:"\f226"}.dashicons-admin-media:before{content:"\f104"}.dashicons-admin-page:before{content:"\f105"}.dashicons-admin-comments:before{content:"\f101"}.dashicons-admin-appearance:before{content:"\f100"}.dashicons-admin-plugins:before{content:"\f106"}.dashicons-admin-users:before{content:"\f110"}.dashicons-admin-tools:before{content:"\f107"}.dashicons-admin-settings:before{content:"\f108"}.dashicons-admin-network:before{content:"\f112"}.dashicons-admin-generic:before{content:"\f111"}.dashicons-admin-home:before{content:"\f102"}.dashicons-admin-collapse:before{content:"\f148"}.dashicons-filter:before{content:"\f536"}.dashicons-admin-customizer:before{content:"\f540"}.dashicons-admin-multisite:before{content:"\f541"}.dashicons-admin-links:before,.dashicons-format-links:before{content:"\f103"}.dashicons-admin-post:before,.dashicons-format-standard:before{content:"\f109"}.dashicons-format-image:before{content:"\f128"}.dashicons-format-gallery:before{content:"\f161"}.dashicons-format-audio:before{content:"\f127"}.dashicons-format-video:before{content:"\f126"}.dashicons-format-chat:before{content:"\f125"}.dashicons-format-status:before{content:"\f130"}.dashicons-format-aside:before{content:"\f123"}.dashicons-format-quote:before{content:"\f122"}.dashicons-welcome-edit-page:before,.dashicons-welcome-write-blog:before{content:"\f119"}.dashicons-welcome-add-page:before{content:"\f133"}.dashicons-welcome-view-site:before{content:"\f115"}.dashicons-welcome-widgets-menus:before{content:"\f116"}.dashicons-welcome-comments:before{content:"\f117"}.dashicons-welcome-learn-more:before{content:"\f118"}.dashicons-image-crop:before{content:"\f165"}.dashicons-image-rotate:before{content:"\f531"}.dashicons-image-rotate-left:before{content:"\f166"}.dashicons-image-rotate-right:before{content:"\f167"}.dashicons-image-flip-vertical:before{content:"\f168"}.dashicons-image-flip-horizontal:before{content:"\f169"}.dashicons-image-filter:before{content:"\f533"}.dashicons-undo:before{content:"\f171"}.dashicons-redo:before{content:"\f172"}.dashicons-editor-bold:before{content:"\f200"}.dashicons-editor-italic:before{content:"\f201"}.dashicons-editor-ul:before{content:"\f203"}.dashicons-editor-ol:before{content:"\f204"}.dashicons-editor-quote:before{content:"\f205"}.dashicons-editor-alignleft:before{content:"\f206"}.dashicons-editor-aligncenter:before{content:"\f207"}.dashicons-editor-alignright:before{content:"\f208"}.dashicons-editor-insertmore:before{content:"\f209"}.dashicons-editor-spellcheck:before{content:"\f210"}.dashicons-editor-distractionfree:before,.dashicons-editor-expand:before{content:"\f211"}.dashicons-editor-contract:before{content:"\f506"}.dashicons-editor-kitchensink:before{content:"\f212"}.dashicons-editor-underline:before{content:"\f213"}.dashicons-editor-justify:before{content:"\f214"}.dashicons-editor-textcolor:before{content:"\f215"}.dashicons-editor-paste-word:before{content:"\f216"}.dashicons-editor-paste-text:before{content:"\f217"}.dashicons-editor-removeformatting:before{content:"\f218"}.dashicons-editor-video:before{content:"\f219"}.dashicons-editor-customchar:before{content:"\f220"}.dashicons-editor-outdent:before{content:"\f221"}.dashicons-editor-indent:before{content:"\f222"}.dashicons-editor-help:before{content:"\f223"}.dashicons-editor-strikethrough:before{content:"\f224"}.dashicons-editor-unlink:before{content:"\f225"}.dashicons-editor-rtl:before{content:"\f320"}.dashicons-editor-break:before{content:"\f474"}.dashicons-editor-code:before{content:"\f475"}.dashicons-editor-paragraph:before{content:"\f476"}.dashicons-editor-table:before{content:"\f535"}.dashicons-align-left:before{content:"\f135"}.dashicons-align-right:before{content:"\f136"}.dashicons-align-center:before{content:"\f134"}.dashicons-align-none:before{content:"\f138"}.dashicons-lock:before{content:"\f160"}.dashicons-unlock:before{content:"\f528"}.dashicons-calendar:before{content:"\f145"}.dashicons-calendar-alt:before{content:"\f508"}.dashicons-visibility:before{content:"\f177"}.dashicons-hidden:before{content:"\f530"}.dashicons-post-status:before{content:"\f173"}.dashicons-edit:before{content:"\f464"}.dashicons-post-trash:before,.dashicons-trash:before{content:"\f182"}.dashicons-sticky:before{content:"\f537"}.dashicons-external:before{content:"\f504"}.dashicons-arrow-up:before{content:"\f142"}.dashicons-arrow-down:before{content:"\f140"}.dashicons-arrow-left:before{content:"\f141"}.dashicons-arrow-right:before{content:"\f139"}.dashicons-arrow-up-alt:before{content:"\f342"}.dashicons-arrow-down-alt:before{content:"\f346"}.dashicons-arrow-left-alt:before{content:"\f340"}.dashicons-arrow-right-alt:before{content:"\f344"}.dashicons-arrow-up-alt2:before{content:"\f343"}.dashicons-arrow-down-alt2:before{content:"\f347"}.dashicons-arrow-left-alt2:before{content:"\f341"}.dashicons-arrow-right-alt2:before{content:"\f345"}.dashicons-leftright:before{content:"\f229"}.dashicons-sort:before{content:"\f156"}.dashicons-randomize:before{content:"\f503"}.dashicons-list-view:before{content:"\f163"}.dashicons-excerpt-view:before,.dashicons-exerpt-view:before{content:"\f164"}.dashicons-grid-view:before{content:"\f509"}.dashicons-hammer:before{content:"\f308"}.dashicons-art:before{content:"\f309"}.dashicons-migrate:before{content:"\f310"}.dashicons-performance:before{content:"\f311"}.dashicons-universal-access:before{content:"\f483"}.dashicons-universal-access-alt:before{content:"\f507"}.dashicons-tickets:before{content:"\f486"}.dashicons-nametag:before{content:"\f484"}.dashicons-clipboard:before{content:"\f481"}.dashicons-heart:before{content:"\f487"}.dashicons-megaphone:before{content:"\f488"}.dashicons-schedule:before{content:"\f489"}.dashicons-wordpress:before{content:"\f120"}.dashicons-wordpress-alt:before{content:"\f324"}.dashicons-pressthis:before{content:"\f157"}.dashicons-update:before{content:"\f463"}.dashicons-screenoptions:before{content:"\f180"}.dashicons-cart:before{content:"\f174"}.dashicons-feedback:before{content:"\f175"}.dashicons-cloud:before{content:"\f176"}.dashicons-translation:before{content:"\f326"}.dashicons-tag:before{content:"\f323"}.dashicons-category:before{content:"\f318"}.dashicons-archive:before{content:"\f480"}.dashicons-tagcloud:before{content:"\f479"}.dashicons-text:before{content:"\f478"}.dashicons-media-archive:before{content:"\f501"}.dashicons-media-audio:before{content:"\f500"}.dashicons-media-code:before{content:"\f499"}.dashicons-media-default:before{content:"\f498"}.dashicons-media-document:before{content:"\f497"}.dashicons-media-interactive:before{content:"\f496"}.dashicons-media-spreadsheet:before{content:"\f495"}.dashicons-media-text:before{content:"\f491"}.dashicons-media-video:before{content:"\f490"}.dashicons-playlist-audio:before{content:"\f492"}.dashicons-playlist-video:before{content:"\f493"}.dashicons-controls-play:before{content:"\f522"}.dashicons-controls-pause:before{content:"\f523"}.dashicons-controls-forward:before{content:"\f519"}.dashicons-controls-skipforward:before{content:"\f517"}.dashicons-controls-back:before{content:"\f518"}.dashicons-controls-skipback:before{content:"\f516"}.dashicons-controls-repeat:before{content:"\f515"}.dashicons-controls-volumeon:before{content:"\f521"}.dashicons-controls-volumeoff:before{content:"\f520"}.dashicons-yes:before{content:"\f147"}.dashicons-no:before{content:"\f158"}.dashicons-no-alt:before{content:"\f335"}.dashicons-plus:before{content:"\f132"}.dashicons-plus-alt:before{content:"\f502"}.dashicons-plus-alt2:before{content:"\f543"}.dashicons-minus:before{content:"\f460"}.dashicons-dismiss:before{content:"\f153"}.dashicons-marker:before{content:"\f159"}.dashicons-star-filled:before{content:"\f155"}.dashicons-star-half:before{content:"\f459"}.dashicons-star-empty:before{content:"\f154"}.dashicons-flag:before{content:"\f227"}.dashicons-info:before{content:"\f348"}.dashicons-warning:before{content:"\f534"}.dashicons-share1:before,.dashicons-share:before{content:"\f237"}.dashicons-share-alt:before{content:"\f240"}.dashicons-share-alt2:before{content:"\f242"}.dashicons-twitter:before{content:"\f301"}.dashicons-rss:before{content:"\f303"}.dashicons-email:before{content:"\f465"}.dashicons-email-alt:before{content:"\f466"}.dashicons-facebook:before{content:"\f304"}.dashicons-facebook-alt:before{content:"\f305"}.dashicons-networking:before{content:"\f325"}.dashicons-googleplus:before{content:"\f462"}.dashicons-location:before{content:"\f230"}.dashicons-location-alt:before{content:"\f231"}.dashicons-camera:before{content:"\f306"}.dashicons-images-alt:before{content:"\f232"}.dashicons-images-alt2:before{content:"\f233"}.dashicons-video-alt:before{content:"\f234"}.dashicons-video-alt2:before{content:"\f235"}.dashicons-video-alt3:before{content:"\f236"}.dashicons-vault:before{content:"\f178"}.dashicons-shield:before{content:"\f332"}.dashicons-shield-alt:before{content:"\f334"}.dashicons-sos:before{content:"\f468"}.dashicons-search:before{content:"\f179"}.dashicons-slides:before{content:"\f181"}.dashicons-analytics:before{content:"\f183"}.dashicons-chart-pie:before{content:"\f184"}.dashicons-chart-bar:before{content:"\f185"}.dashicons-chart-line:before{content:"\f238"}.dashicons-chart-area:before{content:"\f239"}.dashicons-groups:before{content:"\f307"}.dashicons-businessman:before{content:"\f338"}.dashicons-id:before{content:"\f336"}.dashicons-id-alt:before{content:"\f337"}.dashicons-products:before{content:"\f312"}.dashicons-awards:before{content:"\f313"}.dashicons-forms:before{content:"\f314"}.dashicons-testimonial:before{content:"\f473"}.dashicons-portfolio:before{content:"\f322"}.dashicons-book:before{content:"\f330"}.dashicons-book-alt:before{content:"\f331"}.dashicons-download:before{content:"\f316"}.dashicons-upload:before{content:"\f317"}.dashicons-backup:before{content:"\f321"}.dashicons-clock:before{content:"\f469"}.dashicons-lightbulb:before{content:"\f339"}.dashicons-microphone:before{content:"\f482"}.dashicons-desktop:before{content:"\f472"}.dashicons-tablet:before{content:"\f471"}.dashicons-smartphone:before{content:"\f470"}.dashicons-phone:before{content:"\f525"}.dashicons-smiley:before{content:"\f328"}.dashicons-index-card:before{content:"\f510"}.dashicons-carrot:before{content:"\f511"}.dashicons-building:before{content:"\f512"}.dashicons-store:before{content:"\f513"}.dashicons-album:before{content:"\f514"}.dashicons-palmtree:before{content:"\f527"}.dashicons-tickets-alt:before{content:"\f524"}.dashicons-money:before{content:"\f526"}.dashicons-thumbs-up:before{content:"\f529"}.dashicons-thumbs-down:before{content:"\f542"}.dashicons-layout:before{content:"\f538"}
\ No newline at end of file
+@font-face{font-family:dashicons;src:url(../fonts/dashicons.eot)}@font-face{font-family:dashicons;src:url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAGW8AA4AAAAAo7wAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABRAAAABwAAAAcb+kWhkdERUYAAAFgAAAAHwAAACABMQAET1MvMgAAAYAAAABAAAAAYJYFachjbWFwAAABwAAAATwAAAKatulUimdhc3AAAAL8AAAACAAAAAgAAAAQZ2x5ZgAAAwQAAFl6AACLYEUhCQtoZWFkAABcgAAAAC4AAAA2Cpn6WGhoZWEAAFywAAAAGwAAACQPogitaG10eAAAXMwAAAEvAAAEENEK6Wlsb2NhAABd/AAAAgoAAAIKw8CgEm1heHAAAGAIAAAAHwAAACABVwCzbmFtZQAAYCgAAAGdAAADWi+oduNwb3N0AABhyAAAA+oAAAoztf4M13dlYmYAAGW0AAAABgAAAAYlmlWwAAAAAQAAAADMPaLPAAAAANHVnZ0AAAAA0dXWGXjaY2BkYGDgA2IJBhBgYmBkYGRkBpIsYB4DAAR3ADcAeNpjYGY/xTiBgZWBhVWEZQMDA8M0CM20h8GIKQLIB0phB6He4X4MDqp/vjqzXwDxgaQGkGJEUqLAwAgANkAKxHja3ZA7SwNREIXnJmtkuXfHBbFYsViQFNutTxJsVoMmARUxhSSFxEcTq9iI6dJY2FnY+Gvs1EYbUTBYq5U696GNui4JWNjbeGDOcGD4DgwApKE3I8ASB3acJNbNFttPdg0i6IPh7AfZNEgejVJAIU1Tngo0TyWq0gY1qEUHkklbejKQeRnJOWUrTwUqr8q6rNd0Vdd1Q7f0oT4xlrGNZwIzZnKmEMcACRvIpSHyKZuwxylHUcIuUoXqtEW71JYg09KVvgy7bKZc5atQRbqkV7rsTd3UbX1kwGSMa3wTmgkTxXGnf8DCL/zEd3zDV3zBZ3zCR3zAe7zFG7zCC1zGJSziLM7gFE46e07T2XG2nXVRFzVRFRWxKhbFgoh4h9/xa37Jz/kZP+396q/EMvBTwFKJpX4fwL/XN7iViiEAAQAB//8AD3jarL0HfBRl+jg+78zOzG7aZrMtbTfZbEvZ1G0hZRMg9NBCiwpIWXoxijQJqBgRlRIbNsSGiD0qchaOs52uHbmIp4ce6slx6p16x9eDJPv6e553dpMN4n3v+//8s5l533ln5p133vL05xlO5OCPnOYPcQIncRouhdNyXKXOphP0Nr1ZR2zJRKcnp3sepY9HHqU7yNRHI4/yh6JN5EbuZ9r9M6HRj7ifiYfy3M8c4RL+KjmO58JcVH5R6oE6/RynIcEQMZmtxGwVAkENkSVDHjEZ5DRelmBn5UMkGAiG+GCgCsqrguL+aP2urHW31pQ+OKWkblbLiprow9H6py2WpRZLzohFpmF236QKefTiSy/1FXhTm325lilwaopF2MS/tis31e6ybinLzLWlkpTow/xrT7OzUy05gdHplXbfpZcuHi1XTPQVNOlWDs9hdXKEeLiI1CiruQzoE1uVyagzSCWE6OwFLr/OFyCnhY6WNWtaIjQlAqmsXtMSbWpZQ1PI6TUt/KGWNfDaAvdvqOMT6Rj0ZRqrxyxriFtD/F6RQLfiJjXeuTS6Prp+Kf8j6YxE9/OtvZOEfNqm2nTnUv46Vk7bIndFH4k+xk+jWnKapkC9EW6XvFyu4TI5F1cH9ZrStSSNuEkDCfjcrgItIa4A5PM17FiSiWQwmwIyMUlaIuW7XekNJETMrLRK+semTXe2fLmUSM3NDQ0NzzSMp09ahrTccSVZ0Pctb8rLK2jNi36LSRnZY8UTdPeVyi10XmNjwzPSISy5o2WIlYjjm6GCxsZm+uTSL1vu3NQ7Ayq4MC+ft0a/Yemb5F52YtMmsnAT3GKhcxueaWzgOBXMjzC803JOz+VwRThHiM7nKiFum2wvkKD3TV5bVYCrMhmkApdPtOlYGvBWmXU26ND+Q9FQW/TwtbTt2oeLamuLhFNFtdHGIzfffORm4SA5DcnNi805tBv6VMkLHfyhotpIpLYo2gQ38M9i8RFV78nFeI9IzlJ5CX2AHXB8/5wQYEQ5HD7RZrTpvHyrcKr3gJDflxkhp0VDz3fhiGjA8f+GOyn9RTrFqblszo6z3k0COOvFIJHTiN0mY6Mb4EUDGuWETMQ8eugl0pQ90+XO6HvjIuHatVXfzqXt7Z72Vk97vSCRpiw8lU0PSbnKlXq366J32vo2TK0a1u5phQtJx5zTdC+cyYAz2fQlXII8zJk3pKjUxxk5G7RdUrkJPjxIXBnBgMOs4U0SLjQ2f2A1Sh3z6T+uiH419uitY/ltPt/82US1hv6ZZBNrUXXPbutUi9VqmWq1CD/P9/mil4+99egY3noFyZg/u9pD/0xPkrzVP0fzLJbYhZxAPMQjq6W9sP5LuFHK6NptAyNLvDi0JcSIA1lP7DiatdgzsPTiR348ssSvZEPul9W1RT3f4ViLhqLavswwZsOWYkt/hpw+T1mnqgvzvZNw0C21LbW7jBaLcRdkeBfm6AOJZdFPMcfAI9fJPSCPlFthlnIEhtEl4dIzy9CdKuhK4g6aAri6VIaDfPtvJrw6YlyT3vebH+mpAP0o8LafmH+EwqZxI/TSAwej1x706UeMG/HKxIM/0r8F3g6QUrjgn6yw6VWYbwaYb4dgvmVyFfDsgjJVOXGFBG8VTJQ0UXBCaiFpKntBGV8OnRMiXpVp5uSAJ0snCJJU0rAwtGhrWRpR6TJL/JtI+uV/2Kj1P7T3ywULv3jyJrf78g+vUHld9WPG1Ov1wWXzx5WueXSWnDVq6KQh9K8HtxxdcVbUuq2ZZltBSvLZtvc3KzA8LKuhPW6uHN7eLsnw3pJstPldbtkddLntOm8g6A6aA0G/zWgyB82yyezlqgI+V4FkkNWfZgfvOnpX6yLavaj1ru67gpmffmIeAiXTlhMPKxli/qSv6kxX15kuIX/ZdDgDl3yaGYQzrYtI0YJZUBLIiZXMWkCHduG1rF0RuUCeDDAWRoUzZQAWUbkFUbC5lemdURXwszZIDS+PGDGnjb619SX60S7aHRZyRlWumkP48pUTJqycIJe9TCn9eU6bv5E+l0e3RQRyI2lYNWdE9MSE6iBcgc8ihfJymMc6zgF9UKUyy2UwPyXZqyHeQIZDX+BwB60wRwNBu4bY0wTh1F1EN++x0ItL7/mx4BR9gD5wJPNVUvrE3fSH/lIym8w+krHh4PfS3k1tr7XMef022kY695OMPT0dsQLSSds2fXbfLA5hZQTeV1lLWbCai365mrh8lVlS5TvcARV7b1MVAUjlhx9bL1vZelkH6yVIWohvwwb6Ln2SvrthA//Qmr1r1uyF+evp2Uo8Qj6CNry4LxP2wpg9O3bsge0EXrQmuj8cDkN7UrkIrO3lMC+0AL3NMAZ5MENKYI4EuVquAVb7uPOsd5vOpocmeWNbHLIHoZ1OODfoGM6rEo7l5fAODvYOx4tqexwM5BKP8t+7otgCKzyCHca3IsLsiyaUHBp8BelEsBEDIapPoMATYX80xcKuCocBp3vieTgRyyJMBXwQlvYyGsE6mEqwxagEdxAWBqwSWApAMZyKUQy0GzLC3p6ecPwf6Ye+E3H6QchvWdP3ZMJpxCUcjPkReJYMvZyHuERv1wMt4WCjG/AJTpPZZS9QyS6HvUAOBIVTUVNZpOJW4ZRwqm9oSy1AsTBf2pbpLzxEX5k1i75yqNCf2SacIsW9B1Wra7EvwuzVor//823PyS/s3v2C/NxtCs6Th8trgBrUIQUDRBoiPhvQb4jOZOnO7RYLbek9oCo5YJ0S/SuftSN6apTcuh1oLDq5b4h4/ICF9N3MZ+6I/rWbA7oS/uA9jsBMsXOtsHKXcm1QlM6XEUe+Ko3w6RlWAjM3RGAOmzLSeZzGLigNMJrRJUv2AnfA4YWF55KMBqAgTWYTIA2geUIEAS+7wgWAUjLlEb2GhFRuOM9riIv3+4geb5ePLHjhJ/oBfZF+8NMLCyBPKslIUvnTC71vkJVk/I87dvxIn6U302cxR+rpB0sMaXrj1VNt+pVk3vt3EfNy3yyzKVsUqhry8+mPRpdabdAaDJun2pfYHQbITm0jzxNRUJs0ctLsj3qOk01v/49Q/PXqjYsWCSOURy04pwnijEEPHc8a0lsk+NW8t5wkkX2vrpwvjxtrGVpYpFHN2FJ3oqWF/wdRqwQ+6CPJEi8Qf5Co6ZFoLv+CnNXSctWQR//wJ7pNuLn31Hxy3bfP0neiO4utnBibs8thRslcMluxHK5FAhB70OYR1/VsVTX3nQC6hm18a3S/vPzMGXEdrInugQ1g4jTSKYtyGtAWJVCbz10GeDEj6E5TmRESBgPOXxYJ00dXPTEm6/37H5z33J4VVenZXz16+9x5wlPnK+WPbZ7Z4ErfSYZO/kv5lgPvnb3qD32trbvOV4jTS+ynJVVAeaVw6fiOeqC3bQQACdvgBTXEBsgsur93EvGounonqbqi+6P7hXyEGPLy3knR/eJxeME2BACYktMKHTVAp7oQBxZIlgGuwMtAQD8c0JFYuaq5ZfL1tBs5hRa+tWUNbggJusOQiut2jH2edhPPmhZyGstpG2wpAAz6y2DJMByHz9UAvNVBT2dxFi4f3wuf5oSHiIJXb7MLXhLfYJlqeCBYi2rPnKklL0TCAKbDkTDQQ/EdAvnTyrjWFp19mZdCRbVhfOzABnTtqb5MoYO20TZG/yjvH0YYRJwBIMfgVfNd6YwSF3Vp+MrKgS/Av6SaUFj7Hv38vfduGjO+rz0j0nETy1ZLuyNSQ0mk9x9wTAres/OrIn0dVz3O8kJtoT+BH9AyjmBo/E0Nkj0OXOH9uDh284Vkb/+5KqsqD9Z9lZU3fyGl+caM8Z39J+zFf/ds5Q8pCO4BIiYZLWU1LRUKbisaX+OzZ0mSKr26cXHbouHeZHl57DYfVnH2ZVwOQg9DfLRbnd0yafms2cOLGV4s4g95Rk2bNspkSilaNHEolBjjcyXC8KKeUYvntN8LeI7LD6S78qV08ThxeUIhz9l3cU9cQC130ptJ8zff0APfSI0hT+/80qamUtU9nlCk57tvlBP4DAmesaufb7LD+vMCzuUAdlp5QxoPsLOM94X4jBgNpjonjWNZKZYKOeQuUvPWVT7fVW/RN+hC+oaSl9tbW9tb+ezEJCqx5HcMt8jLh6965MUvX3xk1fB4JmpvZRck/Ec3s6StFu8BHruTnGb4M1nhpuI/aS/iSMSFAIUM8RzjfRUeTLnHjHfZ/ciCARPmDxrtRrvf7vcCPSHthcXV165qBpQNSDssGgCvh3scQkeEHUciyJ8jTyLtBTpKgYUwQn4btkPAVIF/XcDTYUY8HunLxJUCnCODMefcG4Ojyv2Y6jDfX4/QgY0ZWFODqmSMP/7/p3p1sbqLSCzP6sXaxHV97UijYI7VyirDimN1/tp7ZiW0D9b4L16TIPknrhPXwUzmNDweAVBcR1fQVRzhD8G546ou5Zx4HEsRhPKtsXOG+H2iAUuBFLuFbGfnDonHgT1m54Acg1K8Prr/P56TFZpXroH+yGO0pZdRlwx3QX8onKGSGm1GJInqCU5xMSGP/efU2WGvbLDqPGdfJsA0t5JO2PW1K8Qdf0hJSSf0cGeEb8V/qRG6Z1041NoaCrN9D/KEg3c9q3CgwygUi28IM/lh/HBpsvhXpH6ImdhJUBTf2RJ9aQs9tIUQ8a+z+14kb2z8QYEZf+T+KJ2RzihYC/iLARrI78twAE4RTt1HCo62tx+ln9OX6edH27vJEnJ39EXpzEBR+1FScN9HZMnR3uWCml6p8P8RxrtpGY90Lm3FAykpa4hZQxiBUnjsyiuP0T8CefJHzAm/w4kLSwpwGE60iMLNJ15CCtltfV48FRl8+SC8qcH30hCRCPAs4iR6keidop44hVO0GxbDPZfiZGkju2ESdn9DPqSvzqAe6plBXyUfysuj+8fRqugSrJW/nbw/jqyjJTV0dzT6zTdAAoVruAQchc9iTwIqkNVPPHwrDbchnr+Uzudbf1kdthPL2RwUcXaRIkKACspECAQtTIHZDOPK+hN54eVcmsIHmtIZZYmTMUT0MX7TaDCjcMCE3CAxia9vOXx4i825FHDqi5oD18665poXr8mhh+3XZghy/tNW0lQhL/8dPX1YvbT3K/H4TXdH/9Qxc1ZHx6xAJVz0eoZqA1yCQI/sJ/ulQqmIrWVFpBjUoDxP/yf6KL31fbKcPvopmUGWv0dv5de8T1bQR9jh+/RWMv1T+gj3v84HLj9E0stIfhpJN51vQpDhJP3kli0n6Q+wP+9E6F225WT/NQiDOmOyMzOs31Jot3cwNmSynnyTUdCxjtMRd4jE+tBklmHh9XOhRWHEfxHAw8TjcJfDui13O1TNMQleEcrziGffN9/sw0nI6KnuaNPHGWM8uGg9YzI+HkwjIh3l5Jq48YPbVE8SaTqEMv20RkjywjADdZGHWaQyAA2x24xS4+sl9fUlPadL6llGTCmp7/lO1dx7gJxmqI/k82pLfmDI+KK+9uoWl4kQIqRm2Ny1BeXjinJF/uVwfUnfVVKjUkd9yetKHfUlvVNVzTTC8CjtTnIsvnjVlCFIk8NL5eWptEWuMpsZCY9oBczWq0rqgUHVJNBQZkYduBncRJ6cCwIP7k/gyTNiFADy2vx/kWd0JRKNsI8wEkBc13vgx/+YC9cWDdwlNTIqoBZY7bb/lEscq4H34JznSjzibYOh4RPyCmWLD8VHn+09T7MSX0USleciyuo7MZDnOIUHx3YcAX7fyGUOplmQhYJ5ABPFjA8Fcrm77wTKFwDoHAK6G2XOwEyQTiEfs5gyIq+NnYs2AXWDZzlOkYUrPHISPCmTy0U+Ayaiv4Az2jXxh4osQVEJf+i1nXecoj88QyRpKk1BakPIB0gKgJimAO1+Sjx+/Z1H6d8+o0/wX/VspSnCKaCDok3AfgBm/ZXnaeCRnN1YZSKxt9OzREDyrPY10kikZ+gPp+7Y2VOEtWGtDCmE8Wn0CTLlM2I+eieR+9oRdCIZhf3Q1x7vSxXryyMwpslMNwIEMzEqqBz3TpsGBVaijchHaDfU3o10Su9J/hB9gD+EiJg+AH02W9UcQeY0gvxphHRG14R7GJsSeyccK6ShlPpjeB9oRXgNu07QCDBQcB+roQrvhFE5RdukvfEHIl7AhwEhmI2SO5TTMZQOOCbCHZWToP1mpn+RnQDx3S782XUwRlUolpBemjiRfhMM+ubN3dixHV/93RcPbr1B+PxFuvjF1R3bd2zeOG+uPwjPepW8So9NHH/DVqXuN6BudazuQBB+XqyzQJbwB0hFdKUTI1x98MV3kTra3tE+b54vGKTfTBQ+hweMn0iKaYiGiCfonztv4+Yd2ztWv0juYPQFdD8QtACH09kMNkiyDoUnujKUruebVEyY5CoQ1z1yTbiq6ppHENZG97OFIK674VhB9C5PODdXKCs4dgPA2Cy2QNjaUNaoul8iacNFqEB3Jr5HOAoUGrHFV6cjlvKtQkccuEcwQzxFtUD2t/W1tzF4JxxX2I5D2AqYbizB+duWwFrEeKHIOXJI+/n5RiZ5REo9lg4GAT1bUZQo5KNoAJLBIlOFmBfywwqj3KakMboDqSLxOOP2rKjKYM/0BYK4A544xDCMQXzv2oPv3dSXedN7XZulmxdXllX97rJ93whfp71xHfLH176uy85dfLN+/rpv9lUofUuuA5rkDwDRzShhAb7fLMHOHRB9OOXS4FFIY3D5jmAZQXEXcOR+XzCNyCb+Vb6Z/OWKK2hu9ADNveIK4X98hbr8yqZmf2ActZFT5O4lI37YveLv9Jm/r9j9w4gl4h/o0TNn6FFSduaM2tOUwvOqMV5/c3P09n8e2vBY0ep7H/773x++d3XRYxsOKXh0gI7QM+6z8ZeyXjcsOpENv13nNeI2MBoc439N+YLZquh+sLsG93gYl2BvUJWd5wnDnyev92SexyO0Im8M03Pf+GATEANNQVyxTJYbuxOu3AgUKO3eCJfn4e1RPsZS84dWZYbrkTioD2eydUEMhEiHpMOch6vGFZ0hK6LF+E+GzpSUBR77SQ63Kz0YcKiEQLrblS9L6WZTvurwja4lQpa6oDykqrdV2h1mk0oYVlFZ5fN5K20evjQ/M9NwF71j8333LSU5JMe+cOEi+vnCRYsWkgKp7Ea6/l7BJOXke4RSWyVSjaUVwwTBZHTZK211QkNZvtUwxXf1/eSt+5aOGxfNXkRsi+CP/nnRIoR5v+Ad+zGUEE87kINjnCEmqmYEH7gp4j3GasE6An4H5vG6BB7UrNTlBNiJiACoNXu/pPC0cKrnuwjAYBSbdyu1wKIGkByOV6qwubhUAKFL/XpULcDlPIbPSxSIobBwXiChq0yirQz6hNjiSzeRc1N1IZDo+Q6BhW7ngZ30auJJnzZvGp2DhGBfO5KAgE3xH+iMojBQj9Mvu2x6yZAh9JEYETmYSVP3z2N85/SYfM0GlCHnjHH08P6Kktnsh0XsjPHk8U1Wo4gIxYh97cSDiqkTKOdDnBLf8CS8N1xnQHKgux0VXZHImhYULwLFg8LGuK42wsZRUvAWMoFGfPwAge4QTu0kwkuXwLgduuQlGqVf0uhLl1zyEhGEU0rJTujzpp3xUgBHcDXHbAcG3jNZebt4v8pq1g78x2Yi2YqjyGgf4N894nGpEXBpLvYKNKcqqOA8P1LqbpdN0AGIQ+Bjl71VRoMslRC4640P1q7z+lZNW7h6FY2u37rC5529eNd9f/RWLdsPLPV34fnPbBrXnKPR7rr88QkTo1Fiy7eNnTTyT/dfVIKQjpB3YU6r4LnI69iJV7YFvcQetIlvfERPdYeis0LHSOZHIf5BFIPAJOzA+dXJ1kEje0M94zjsqD91oXTAgBok/tfyYYZOwgjiD503KxoUERaQTudmmDwOnp3Nxg7ltD6AJYu4ZUxOJZsBkctA2Rhtgt/uDzK87kfBuF1B7GbE86wD8VBLjOxS6Fg4r5wzMgV5/BpgN11uo8nbPwxwjRnfoXXE1YVlKRk8ycUGb3jcW51m1CSlp9XZLSZdljGnNNNozDSnpEpySnL5fLITr7ra6WyYECzM0RuMNZ6KvDxvptlgLM6xZuVUNU0qLsnOqizMMl+tdADpXOR1JmUU039FwtEnRqoqfPpssznXBpskpKSYA/rkpOSUTK02XZdaGa55LUw/KcvKLqzLEOWyvMxhKSmWfK1WLaeONdlstYWZmRKvyc1tCgMMdpBO6VMYNwOjIAaUBjz/S0VCf5nwXH3JrSHjUzfcuPSlW0frTK/ddNXUKYJzoPAWKHwVC/l9l47329KuIBkjXvPufodGtx74eNzYqy8dH8g/t5D7FXh6jpYEV3tcvheTn+Hq6d/+mzpg4p5QNSu6Fkz/v9Qh7QWSpAPxZCw9t47zyxURsvmZYphtzCBpryJVRIk/bN2oI8AhR+5F0YwiJGdEdlwml85ZORdXw40AHrqVm43SEMCYQZcyrxlpEvRLyoQFqiRAvIJd8Aa9et2guYsZu+zvn96iHVYIVCTGS0oIE1NJFQ57tss+4aLpw4YWFGzraB2dX+xyXFBaXlHZ9+TiE0tPLKr5+ugnC6qrrblDq3JzqwMbJ01rsuRZcuvplCcDZo1WrSFb5jcW5OfnhRbTNLTkCiOrJh1KVusmu53OUU0X37Yne2qSRj0k0Lakri7KVCT7yDPR/WWeljq7PUWlsTu9ExyOM/v0GSVlBsPC3UNLfdlZ28zmMm9mZvRFYLHyw8iBIX0Us3sRWa8bGW0o652yrojo3KKeWRGZnYK5iAQFMajjWzd+Qa/fCAiucyO9/ou+N/nW3gMbydovNtI2VdfGL8jajdJePLMRRwGP+84y5S27LXYhBxgsTgsn4vCcfmwbl582xGYBo4VRlj54O/85m19g80U5Rp2gtBflqBFyOuG/85xiYHxTwjjF8QA1b4AdUxQOONL/BwwrTGDEaoCZW/tLu5UU6bTTyL8AjW3ishEjIHXAeAydwSpUhQS/ji2pyLYlS2+LZA2df2/k/vnDsmF1Ho/+fufdu7fx9dHn6tdumFUz5KIr1tZHUcCg6h+j/vWlh5dM/DF8OGjbG4k3CdtETot/Y/gmCaVIiKf0NrdNL5YcpvNhAR5aRh4ooa/cBpwwioI8d5GTA3YcMEYi4Ao72vhomHYyrq1RLODMUBRMsIEjgj0Z9Xs5BP5Vx4gEvLX6NcaICR21RXcFeicF747Tzthz4fCRlyOoCAkDgu8Oh3F5M4au14hWUA1//0coZgkljGGCiBRgs1MwVXSeie3UAu4vTWhnTETn/IU0D62CBKab8eoGN5K/9u4BKv3uINBEfSdgCgy0raYYzxQXY6OKa2qKlUb+PXoNTg9oUswOT+qCOeBmNgkWYpCJVFDOu+qJL0gQjaLpYzlBGESYbWmVeNvK+vrokron6y6BDH973Yzp9ZTnN1ssxywlxZboJsxMk8RL6mZ0z6iLLqmvX8my9fyu+vreCFw41XrMAtdZp8KF2C86Rmc0Ml3Ur6+v4TH7FwZidQzUxlcTSovlWF48J/1P56RGJLMRNiNV1pcZFk6Fw2iNAykQ3f3785XJ6nC4xxEOoxY/zIxbTrNMpH93vjK0h2X4YyXDzApATmODbEPQDQyQDTggnQHgNb4ocKEM1AunDi8Ij7CtmARrfefNw8Y+tA8I1S8eemhM6FZ6M986daV1eHi+eGD58vdevi403xuJLLj2zoMk+e6779lNzzx3x+alkUgwHLr2t+8vW440ejgBh6HUCGGAlStQ8KEIm2z3o3mtMwE12mMpzOk2RI/hCNLiEeFUXzsCGaawAVSXT7ulxjCz8ImgqCcOdpQFxPgWNdN6LP+156PNG/Hi8+2Jz/f2G1QAnkFwx+yOIqhTR+YDwR0U4xJApB1mz/qVBgzS5WlhjtUzyxmHvUAlAVNgUnmrHMSO/R6M49MC2Z1AVAI2FmKiCFZSIO09RA8f7ucSdh4mw+jI3ZmmYfUGQ26ut7Wt8Zqb140eZcmZGkzX3pLj85bn5uTkzBGKSTsZ/tIA4/ESWVFSXeyuKsnNdjiN+iFXja2pmTustLS+0Gyy03eyKqqqgIQsz8qJyQz4A9IfRTPXxE3gLuBmAY0McwrabFSIWnsM3fvtZrvbLtuDdj+QC2ZvjDbQEq8iFKsyyy63QmbApAMmncheN049t+Q0euNdANUYRbfdqBAbUllhga1wZOs1I2s1szOCQ+Z/vH3Wotq/1CyeNeuaWUtnPvP0qlAwR3212uwINc6Y1WzPctsdUyrsGuKkn2jspb0nMxab+GRVCp9Gnlnrzsq1WofTi5/gfyu8vLguP0+QZTl1avbE4W355ZPKSnt6Hn64J3z2bE+RY7zPrglVjLI7XZNTU5JrPcPD44uryZhAvViQUpRUW/ugoNWXF+sz6BlCCL/fnFlVhn2l8KWKniIXoEsBF+CGcHUMb6PVtyS7G3jF6FtwKzbfvBdVa04SNMsxW2+zVjH1DooaQE16DRGZ0Xdpw0ePxG2+m/cOzStDm++eVpQdR5hOmln9nGgce4Ni8n3jtyPuQIPvBuEsiguQsEQhuZAv/YNZgJflDd0bNwBvfuRYg+fOTQinFPshRj9G3xzx7Y2K8fcNYxvvZJdOVOqABdAJD429M+lk+DgV6CXUzpTBW4e4kQhFAzof73Lkw4Q3psdl/qpzJIqamG1wf0E87VfhrFOd6BpQWvH/ZoiJPqYg0YuUo3FkMtp6jGJHqm+VQkUtQTr/RLIejCvFHqR/FT5i5dsVhQH7p+nkzeh+FDFN+zix+GRcZBq3ZWDwRIecuB1orRBw6oGgLo2U8Ug2eaZ0f3KCrpzy3Z9/fjciHu9xoGAll1gsfE7fCbu6IE+twIROxu/26/dRlK5sin4/vkmNESYRi8Sez7dKe5meXkScroOpgWURpHeFr8ktbOBQ3Q/XdhLCcB3S+qgv5FExZxUB4AeCITGIMgBelW9KR2Mg1Y3Qsd/dv+1SldtQaHGmX2uxXJvutBQa3KpLt90ffYnkvv02/cvbsvp++t2DO87OE2wZTkux8cm5c580FlucGTZh3tkdDxLDxXjV2yS3X24hHeNSgDtEa0t9gn4wrrwiTp3oFHVOUS8aVteNufnIzWPqgox3J8PIaJoZ3c1MSR57gn+Sb7GtHrn45psXj1xtI5cxDp6uu7av/Z13UIawPeoa4G8QvyOsR3lQCcxE5OaZFoFJkKEFNp8LiwikdrQysOsc/ZQR8ReUiXCuMwKETqR3Eppzkc7VfT+GhXxIp6DNZ1i4bd9q1Gd2Lnhk3cqV6x5ZENM2d9NuVJyouta0TFkNKwRJMs+U1Wui0zEbxrvhTLQ3YvM3NvptNCUuA4c5lcy0ZWgj5mJWEnajHYkxP7MLi8tCgELTob4Czf/wDU4D5Rzp2RqJiIbeScIxZu0U7j0Qxtb0ZfKHICvt7T0QiSiKF8CdpJMZVEWr4H0QlwFdksKyitwa13Ejs8HLh1kTEwszOhamG5HPERQL+bVFNKWott5NThfxtzC+prao7wRz5cgvqhWfRdF/cQ1icOgYNM3AU9H9sGc2BuS0vBx4gxh3O7hyYLUI9iT66Sg+Oop48pBijcfWKmmmIej3EMrgYrheyzx3zqnLCW1fvqal5zu8UzS0rOk9gLbGioVvXybsDyLIU/REEekYzCEXsxJQ4FLQKdlj3itOF7NZQS7GLSLeEwPio0wyqKFjL+iAXPvmi8hBDUoUIUfHajTk4AVCPjsusJ+cD5n5Jwvs7BbMYBn2xZvcW2zu5jHfAdTz2IjyLHiIGR9NYqRA0GgSdMSkSN+DbmwJkdXeop4css8IK0PsLB0GJPbC2tZQVq5YtJ3+BkvJg4UVmTn0Zem+meN0PV/w9zvdqGDXGRqqNPzVnrGh1iRNsq5nmOrC6LPKKXm0JYkKim5O4U0RliBs55yJqxmpdsBrgYGCOKA/F+DLalIagPnX4KXzfY2hsPlY2up9q/2l9JhkZmC290aF5ehQlMmqd3MuCuAQ1c7NjK50NVXfWeCcsnr1lMCFOdHvxeMMQEevZMmPio0azmENzIM3md4cB9SURhK0AApVFaOtgAzR2QLB/l9cdxBHO6ILnd76f8GES/2BINyLOob4L/4EabrdvHi93VjgyHMWFhdfOLOkqNBpsxWYMnUkJZl6SZJGKK701jUMHTXy9ttHjhraUOetpAeZH1O0GO69okC511Ex4+IKB96bl5WthXvJe/QnXo7d3Dj+9tvHN7KbxW2+9SPNvjxHgTErXS8b9JqM9CyTrcDmKOR5azHxpKtCld7Ckhxran5+qjWnpNBbGT3InKwe9V0xMjN2Z3qSXp+UjnfmOYrseCft5tNit+ak5+en57Bb2VpT8H0K6hkAMKSp5AzAhwQYX1RbqGQbcIcp06+966rrQyYyjzShNV2kxyE8Rf/xMD2q6gKAUMKnuRqWjyWppMJIqgBG3Rc9omquuAPX4FKikxdKh9ERESgmmOlJRFLZ850mbz5TmAFpWEbqYWxQCxo0qcyxlREISnJAXjhuOZnedZo++ho9QqMVhdzPkbUvOVx55ZVXPjxp+rjWqhvI9V8kfXzHfcs3LStZu0zKaJugzb+FfkL/eaT9IfEefsclcmr22x2qEsF7/+zw1EfeSS513/7x5dkNHSOTmd6Q3BDTh+ShlBqBjGzIMFcxSMPgjl8XywGOPfDkBvLtF3ySwGumt7dPj56w8iGWeVVWb5jRd7kkfEh/lkj7kxvcpHzDk+3vz1BsFxT8+T3wLTkIi5w2XxLhPMSuq0oh2US0+XjOAQcqsylD7MdeJrGb+FZ9AO9yP537yVFyAwl9f030BPHtp1/T9cd2kfRlSy+N/q1148auje2RY+QOcgGxv3spPXr1t/RNuuGDP5CrifkherRt8WL6z5uvmDF9w4bpM66I6c8V3OpItIzVeYHWZ65eLmZZDVR7vy+FTdzp9HqddPGRvO+rRl41bN2ORz78MMo7fQAGvM6eNoePX/7jXbW1f9Q8fMczP0Zv9TnETqeX2d+hzvt2eJYB31vn1dvYM3SxZ+i8wgTi/B8nPVnbcvvF7Q+/+dNPEf5TkntwxAju5+TfP3uU/gX7D3CLIiPSME8IRV4KK57r12PTbvF4X3uEpghq5sSEDF1fJqLKdgVgn+EkooGxfkN6DjBiLvDS1dxorhVnpVXwVoV4pg2QRMlKqkLEjfovzHvjB4I+wC4w65mHEYEMIhK34MLZKjmrTLKAFthufQBAR0Cwy6KjYmxRVWuFOTX90uFNbbQlteCCyy4oSE2bc9kcYTEcVA9Rji4es9EZOnjdB68O2aTb2DxuY/SpZUPb/MOHLtEuq9jbVeRKFiq7Hqpcpl0ydLj/kuErUrUuKaPwolnjykcvXVcx+qKLHghuXbhwa7B+woT6/lxvM3ly0zPzPn2etvibmoSKW7rptXlDysiK3c9Lybrnd9NbyobkkfUf35yhldicGM8dlNdKy5htuZmgR5kGxTqE+Sk6HWarxix9s50+tGNqYC71Rv9pmWJdZ7GoxvyVdpHdP2VVub25Pn0wuUYQW3fQx3a0XL0wuoIWWyzr0RX4xE3CxouTcswlpmr98NRxAsCdO0i1dKv0OFfM1TCNfZoAYDmkCiIRbrYSHuGxqgxHJSTrGbx2+xSYbzYJMwx8piM32eIyN4+9qHlSlvui+bPybOmlFz916Woa/emzLq/FmO4ZNWPRyssvedI656KWOUJq9ryZU2fLvLRHthZVBP3VZl1m1fhRw9NM6ekTho8+TqN9p0aNbcyc9fiqYbtu2nXdleGW4tTooqaUlNHTF9jyh+Zbpswenx7TEZKdjLZCSUS/hbDehoYiNtKpMFXAyKExJRo8AmHXO/EtlBfRFKQiFfk9KWF1pALctXHlwFkOZ3Zwg7gsotAMMMXF/hwJOBpIGuFlCfh130C58zy5c5mtQworRFOUlLzuJCM7O62zfuts6GoIUZNSzLcOTknJZyTzAVLEWK6PH6CnhDYmJayp2RNL6THnUyNGNL5C73Y2NISenhcrLj4nVeSZiu0m+gs6mO7Zy0zI0YWyCmkjKzGi5MaHclckTEoIEEAEgAWUSXvDZ18Obzm5dcnFFy/ZenJL76TIQr69SzjV1c4vpN1hIPR7D8Cih1PFxXBZJLJ3axc9FGnv2ro3QvZd2BGJdHAiCXCTpLtkHbO/dEIbKpl/eB6w7Q0w88uJ7JZJgYKHsB/dBXFCUZTd+qCXmIOC204OBwJvbTh5csNbgUCk/eTXG8n8h7/5dt9D33zzcPtTT515uosIVx2JbuvpfWfjR73besR3T37dDpe+1f71yfa3goFINOmbh+Hih/Z9G35qIyMhV54oj75wnDd+4Y3+9jgHcytRX5wExzqAonFJpwsgmAd9QfVo/oaajCBLnG6gj81umRmNFUGJqJwTgm7RrNMSW0QRvQFDYd1Fu9HpBjLk9K5dPbuIJxJtkhqZbCyTpqg2oZvmrl1kNjsnq+Na+55diowa0m7i2bWrahcyKHiGCTB37aJtu+CPeHp2KXKzmN9T3P7UeI43Bg5+vpWIRhvDfcSfQJEaxeP9hH2LYtcabWKcD8kMDINkWADWVyJrgaPPxh4Kep/4JHN+HdKZdfMzP2G8NOCAocyXD9cu4yO9OugjYMR04vrBCxW6QhHEtEZwHeN65hLrkJQ6lHtjqnyUZqJSAsUvEdXTb+FNChiIxAGDgoOZ3qORebMzAxEzNARd2M++zB+CYQiLhr5M0RBBbm7AxgvtMGu5CUz2qAAJlD3mOwLE4Q5wzjTeZJbKVAgj4WdVybwYKBPdIYFYVWmClpSpAIQu3xn3dtu5M+7t1jecbnl0LLmRcLayjGKfvanS76owtJZVPRMaPfe6CcUpRKJtfE5l/bDayuQknWuYsDmv3Jouq0StWi0bQ7XVpUluoZLVtXNQ/T3uwz+Q6uTgjt13ekWTq9gq6kZMbq02pOrKfWNGVNFjj0/fMrWhyFZoLvaOriNvV8yfPnPkZO+wnMxM7wV11Y0F1w/257HFqZYBP/SY2bKStxeUEZhOGp4v5P/KrE36JUAlG46sX39EeIe5mamhQHFeT3BHL+Knrj/y05H1vZNQIsaeu5J7RxZlEeBEFcNTGUi/OlDUGWSIKiSUAd6XzUQwh4hDxRg7vz2HEGfQJU676f2ZplvP0BP08E03vFG1t+DeVZf8dPy3l2WMvudzSIccojr3M2PPEhsZSo9bVGTuXFJOQ3yq1DX2DP0z/R39/L1ZprGj/rJ90brX64boRu2Buw5fBuklc+m7/MiLoHpz335LsSpFIF/QPPpKNy8DjNXA3HoF6CX016jjxmJ/IeGSAcjVa0OxLRzKoi2kqgW22ExgIVYFgvoAI3LZSS2PVwCKIcpFaGfdSQ9bS1S7X3Coh9h41UhZX0ufyy2VyRswMSS9ISf1I2OVNnp/5XjJWRhU7xcLc+hv3Tl0q9mTlDSKjsoqVN2bqlN9RMfymuwsh/ZrQ4FRK4jHy519WfyJpx0FR8wjCqxbVWkF2aaqrN7N4zxuodnuukXrsmjTduSYo/MaZgrL2GmjxZLMJfrEq4B7wVWkIXGHd1UzgrBok+pVJkdB0IUgKiYxQTl43Bc2A6jAadxMtFmFNcXBmuJ4owEdYb1VDs55XsdX1X9yexVDgo+5vcoZxMXpfEEYDnZ/hnzkXnqa7qBL6XZ6eg/zfX3wHXIZSen9hD62OjPdlHnTTKdxPbnxr4+T4BU1yzTqzCS7KjjSbqcfZhbBEVzROdt9ududaUrPnLlJSEtJNsmaJf94+9+9r35Jvx9NJpF/EP7aG9Yvz31EsJBdWPe97JnvPMicXfeQFKdwi1qo9pNk8uIfr2jTTGvJcGeXp9dIc3YN65k5UxhB1CoVH6olKZIgkLoQUdPHyvKtF03c2PTKqf+hF1/O3xZtXkEOEun1B/sWkfuiI0ttU8jfFRvMuJ/0tPP5GKA+5r8qQyM0/yCvTmZ7gzlZzXwRKKM/0Dn0V4/QeZMdk052jLI/IH+K6bHi2tpiUlyMgUd+/QiwiJJTSgG/KHMmzORSZi4b6NaJ3AzFC1UWbIIXZQiJXgt2vXiu8asfXgtpG4AbwClgyBFYdsBNuEJ8A9Ab7hAJyi63FyaWS9V8e9mM7AvpF98/MpbkoEeqgttow9th8hrmYhhPcNPXLqevXaUZ5m+8Ll8Uk0no+ZYphxqISpIE3rZtqHeo5n+asz7MHqsSRIM7j6RFmyLo5arUAcy785VE5ElTln/yyfJh26qzHdnZo01Dq6qGprldtuRkZ3b1tqGvjNzQPkLgER/dxHXKDXJj3J5FQ0ySTEQ9FwyY0JeJdxMxQiYUEWefK9qyU3ikwr6ZfhKddD3/KNXyXR3RibKBPu1Z5+pz7OS7hMcrnSq6KTr+ev6Fvu38s3Aan/E0t1LOEyOAZS2o++SY/Aw5Ry1RNAyJh1w+p3cz01w5g1+yb3Xu6LBnutGYy783kKfX8mXkjQs7muk11EOvae64UIysnuKrMCSJYoUPyYT+fG8OaSLqss/pDyT98zJ6BukYtDU4Lh7vl/UnWhIdR2t/ZQOsPWD9o/DbCs2rV6jd+DSBnIQyTakx0vMdShtRqMswUjNab3S1q7rau3q2ospiwOdJB33BtAyDa9HHkaAJeFMWCAcrxBQq/DHmU+eJJNSJFvzoPNd7APYJOhFYvxbOi7hO5TUkkTQeyAaZ9wOHHNQDNvADDaGzWYU8IpxKKb3lrpNt49tvu63d7dLkzZm5acXKCZVtXz14ja2AnGaw2jDiN7fflktTctu3XlVcLKvVOSP8JSfoZfTvJ2+co9ertKFxHbf/6V9k2NPoQdN3WpUxYeGLbSptaWlDbrRJqSqmez0t7T1/36PdVL+m5Zy+T3in873Rf3yH/621rP6z5Kz4sfgxtknD9zuEiR/TPWTedrqH3ruDzGU7Mk8cC8d7tseP5+6g95K5Ci+oyOoFrgyojOnchdxsbl4sNkBMSNkArKA/4I7rXNkvL1Gi6a1ihL6bnbWQgWJ2fwj1toqXhF2MKeyZ0l6NNjW9L+jT0pJSVaIoETk5pcDuteRka3VJSTzheV4F+Cs5NUWrN5gzhZ9oSvTkDfV+f67FkG0pchcMC/qqhlRUBXLTHXyqOi/f568RtsRNWNCHU9VFa5NT0zOyk1ONmbxESktLAH+nZBgyM3MynJrkNKuQoQdyUK1xodJhSmu+zecLbhTVUpIsy5IkapJkIUnFbwz6/DbbB8wqIhJmPlYD/BH2WyDWbwu5pUzW9H/pu7gRw/+l/8igPuyz/Nd9WKZ0D33yf+lH/nA8FgCaLwOvC/zIx/9dVxKJddJv/nNnLmMXoe0PdujA+i/ipsLsc7viEnIvc6lBjXf/jxkLxH6EGQHFBejxMxgWSek5s6wzB3XuINTCfyoAXWEyWW1VvvpFTSNMplSBJMmpqcYMS1axu7ysqDgrK9OUkiZrhNuqLHKddWVw2sq2BQsuvXC5p62kIads6LTyZyY+PHzhvKaHPpw8R1ynD/qrK6ocbqO5tm7qtFn6JJfNUQADnW3S642WXJfD6c61Re+fdvVZlYbXAUWlTUlJUevV2Un65LNbJq/yW7IfvpZ2L19OPNc+7KtncPAg8Ks5AGttCAe5fFWG0YBAI43Ae8Y8FH0ud5nK78vQwwRA8gQ3gMhAtggTSRURbi+urTMas+wKQWLPUueM9Ht2tfGt+SVZwfJImS+rJF9efjuld/o6VoUtVtvSIiVCVtFSW7J71dLrfHcSvic8Y4a/rizgL69L4Bn3cmrmscWchomsRmYlrDDfbapmZhpwCFhIJWYEsx1fx2wgFfgkrmM2Rni9eBzZXHY1NwhWQv1Ouw5BmUwG1RhBcT8z34/5y5F+PTarH+5IqFQJARSOuWIPbj/0G8JJNxlUpdDBrB+agEaJ1T+4/XBHQqWIj8lpdvkv2g94Fj2qg2RQlYM765fthzsSKk3oqgQ5PvOdMJ/Xczema9KjGOA8nrt8ecyx8rxeu/QNdlLxBon5PEJ/HRnwF+i3CEX7tCNnKuIb+tIz/+3+PVyfGOsHPYPGAo9zqRKdgkCj0zDQTxmG/AmRmBwhheQ7uIz0JDwe9F5igYwOQjKTyohK0CPIERmpAK+vDNhFdxryPrYAEAe/FmWHv41uovf9vGsX9zOZQzaTORzkf45WkQtJ7V+2bPkL/T3dR3+POX73lNFr7g7O3/wYvXP9Y4/98/HHSLl32LxyCy9cZXJW+v2VzuTPurubVo4CaCkgdJ2alFvTPHG48VejC3l3/Uzv+8XzqxKfSmpZS5yluS9vDM8w3bt4/WPhx//52GPrr3iMJtfqL5g/K8/avHHqMEeWWiAtH36octWOmzx5dFCXvnDvgnEFBhKzW4/NQTP0ezmLtmdTIui5mOKD0awsip7Y76XnC+h/kS9hSmEGU1ASCuXiyGgTqnLv1bSGwqFWzb1w0JeSILzYnhAu7EdFO78idu0KOGDeExYjVmG0oEtFTBbcnZDGTzMrGZTVvicvkqcDd50NGLYB3s9VEAtoGSQBc+KBT09QFYNRqVhoQxSXysSH0fHS0FwF3jygamxt90Tf9njKNpTwAc/3no0l/UclDeQBT+vGEjr7aQy3CKdh3/toQWWlTqf1jBs/JD80WqKteHu7x0Pw/lUeOCrZ6PHwxXD/xug2OhtvIg88DRV5eD8GZIx2l64Kt2Zn583/Y+DClRfAutgDdHSV9CU3mbuIm8+t4jZzO7i7ULdsQG2HIU2Sy0S/IlsPMudBFPMAZ6YYDcTDIMZSZaSUC3BgIUfi8e5M8fBgRDJaCb5/EOgHGFHRxyQwsqTYM4hxTSMcm72Yh2sgL33a2nW2tUCfXe6qt9dpksf7xpUVFLSeuaC1deHyreqMjoX+W5w65NswoBpsmNU57qxc2JGh3lqxJLfvVlcIx5ZsUgb4oJ7P1Yf1ubxeqw1riUavTafd6Vq9xUg8Rgt9APcWI+2G/fowZnEnvNN6tqvVN+zyKc2llSa7pK5wTL7wllZfa2vr2dbhDc9/Ve6/5uuW3Bppzd41VXhTlbKHQ6k+q+Xra/zlXz2fOzSDXF5XWMSAn6Lpp7psfU6O3mhK7jEDRtYBg/K1wqXEorxxMTsQ5HlqueFMVouiAWPAq4tFobQo8r96ItnjoStjaYHbGJMGKtrGuFhIyI88f/lFKzD0UwvOf29lrEWVXgzS1tUe4ctjMXUAX6x6Yfp02o1mOISm4nL6NIM5yUaUfcaninwh3N6F2EgxWmB+SHF5dxJnBChQybUi5CW+fmdR50CWWbfEjFvQtiXxCD1MY++BFI1kj70uu9ds5atCKJ3iWCIE4SQCbL/Oit45Qke4sA67HNqnZGgb6mBwI50DucP3AShQ2zTqAjVk7jt8z978OzvaO+7Mf3BPVNx0/e3OpgWjiy0v0d/SDvrbl5zDNs6w3yntnbm88HKPs6GuMJ6JHiGz0XaIPsAsiAby9Sue9/+EQIWUEEI/wtxP/udXrHzKl9Tocg1N8j5FJ7pDSfrKYf5S2r3i+WXLnl9BPDVjxmclhdAekfkcHGc+0zboyaHcCG4MNx5WLxcDLioWZMaZeKDY7ivdiOvOec4xCRplJ2xiLBWWOby+jAw5s67MNf2Z6XzroMPoKzDWbMCLUCPWn0eXN3STiO5XUnGne+mcaVnZSQVzL1junjdu3Lxzjnt/RjuqRJuqWJ6/GiMlMWtvJUV+91XAI2mykTNwuVwhylfS+IIyoJdg05sQ3ugBASN74pYEAC1upnuWTaqx5PWKQ0ePHD1UQV4d8vmun96c51298Dcv08CsUVPe3L1g66xbesbPG99zy4wLGu4Qi/venrOtsXHbHKFq1lIVcWw/PGmhlX5ZRjMeSb/44JToZ+HpXdMXGFdNjvvdR6R7YSyYdAC4AYx7bCcSkMLIapklDCotyXod2gGHCAuVSmSdnkm2Au6ApLlgfH5j7VvT6Zkl9N/TPqxvzJ9wQdM4XmO4d5m15q2Fz+oNo7tOd4026J9d+EGDY8UDBg0/Rry4bP+rF05ZpKap5F8pi2dc+Or+0gIhVHv1T6HpbnoNH8g91dHxl23b/tLRcSo3+jtylW1u/dnNtQ18QpyVVIyrwLGoIUA6hQQgVGW9U3DHou7cuv+rd571B86+bBj13iHhDL2RrC75MrPvlrI3bWQ13V/Ir+W3y+pFt9zi9aF20dD0eEfP48RBMp2byVM+WnNxHj1Fvyohd9C53DnxdrS/jLfzn2Lt/KcgOxizS+iQGlXNjDJE+9JOFjyvOYK4uov7lNmzlnE13EjAbYoXfBqP+hC/zwHgxIvITHKhZBWVrTbZbor5EsCqcZsCzHwbx1BMiObF0Jm7TAKUhaJvk3BP68i6FY8t3nT0SqJ6Ps2XUm9W50q3v3LJb+aT1xd0TjGUXOW3TXy7daFW29mK+5tUk1jYr74HHt8tqlLNGS6jL6W6+po3HhOaQh3zQ6tmBRs2TLzq96R+aEkJEV7dNuPeueEZllDLdfOLq5y5094U9qy67AGBv+uyVfuGKvHDojVXLjNlpefk6i1pDnUGv31OeDvr90lktHyVtJXTKRZ/qgwzRoZVYsS6Aw59QRnvthNThtmuRIk1Syqh7wlS+mrmETT7P1Xw4z1LXww9No/oLtv8/cENGQDUav5W219Mf5C27qH/2I8mkLe9PqfltbZNPS/Puu+zTaRzGD09LFYEa7eKeKU90v3nk40KMdnoCqItINa+P0e7L+fPuC1Lvo9+eAlfTFfwZcuiH0ob6Q/2eXl9n1/Ol/G9hVaBvhn94BLeH/XxFcujR9i7vgnczHLmm6vEtwPgxqyVfBrCLFZgbruAGzeZyTVi6aFDPX84JLTwDxhTDMZRWdE3om9mjTIaUoxS47N9B599Vhj7bN9evkg3xGaVDXQT2QykjG2ILvE5WhZ3+FyjUYQC8HoMEmAcZuD7gUdTwIGGBOTlraGe6xDoi+tDrddoxdQkupRsyTZoXBo67thHdBxkDNlkC12alCpqC4N8G39pkHcJHXhPXzvshfe09swkuo0utRqTeTVZ/dpr9EY1nww01S5yeVKmXVtYTtXkTDlb7ytkjTwb2mpT2iojroS2BqFPYA2W8YAv84jIQWI2yZo1Lb0TUeirenrK6p3RvdFFcoomWWNLSebXkK9yUxxZNuEyYf4Fk23Ubnvywr49F06ykc9sTwhNfReRd0WtRZuejD7fVzi0yalm9N3v5w9NzHbew+QH52pq9ZLsDBEiutx6K4lbA4tOk1koI6IQCIoANM8b32vsbXNL6Y3+wyo9vbF07m0bDlMV0271PUdWs2NhPlxBVvsPn4/7VE2I3/Vm7KrofqYNey1W7b9itZzL6+Yg/vlllCoHHMJ7wQHBKFEkmXgNACHOG7IKX8Bw//30O2abfj9pS9Pw5FX64dy5RHX+EFby/cSQeBNpSxL5btKAak6SzhczmXCcNsBVZvpllEcWbcRG0Gx/ANd+Hd3PXIEGx7nonRQLtZmi2CsoPNx/rndQIHPV6r5MZtN8bsQSBUSzevv71DKgxVbqRS2YEn8BdWKDnxKLrEFTkObIBNIDrbRrxfreScwpHp/HwrcooRYiSuB9xcEKYyD029wAboh7TZ0vXjKG0zezuD8KYmEkMk1hptmqPYj3wiiFxNCOgIX2nvvNhRjhQvpl2eqYZQ/aREmNkd4DeC3ir7522o3a9Vhsuvj1YlyCrgIAgh7QKKfZj+IfZooei3/Yxhxf+Fa0QGd+Mhi7sD+mRRnjtlEIic5wQOvpmOsNBtsKBtB/qf847v0sHo+a2hcvqauvr1uyaGOJJW9SnhV3FivuFhRardY8WV0XWrTozKLFdfXRxwsxsH6Rqgt4FEteIQy9FVPRYM0thuwgGFDAXcwt49ZyHeddPYGMOFwwssaikj0d0TUSSwp6CjBjbH0Ard7SiCkYsDKrOCPTeckZQXYi4CDeAAAzSUb3Mo4FgUWltLdKTMibhJGkKW7BRQ/Rj9laq4Kf8a21a9+i39L36bdvrb2iKLCYPHF9z4Flyw70XP/+/gk3+w3rLtr8Wbblso2lC92L+eTU6scyUnUZgH5VUjJA+CFXly1whwUhObX4+tlEQxdJPk2SmZcX1PKusrVTg026Au2Kuha+3LQOD+za5XUtQbbkB5pRxJrWc+nat4hxoEV3/vml+uolYja0hP4DWnSpqrm+ZmpX+5WPF+eRP6dpVVodb80lRKUzlwVKBPKvWVD+XkZquipZu2ID/Zg3mxenWGnl5ps/oLcc2doy7uHG6d8sVtLNSvzWc32PlVgrsUDFtnNSFPMjkJAaKQtjCDP5BAYWQXdkxT9/YA+cX5jhzb3n9QHvjw0TT/XnPC/u643RD9F2AdehrO49EO47IathAbVhIDGMqB5B10ppb3+ok5T+6MFKW7rDsb9YLCMPw+VxeSI8QR+LP42e5GEl8gi+Gt6KBhN4oxro2Vnye/IbXBZXBDyYnxvC1TNODP1/QwRnJfuCDEH5jyL8McskyNQHZfhVGUmlmOkGRBm/2zB4U+3bVnXLsrXNZq1W2max9C2xTrH0/WSxCHdYpsyoId/XZGoEKVlVsWBMafkyUlxTM7WmJvrhKH7jyL6fRvLto/p+Yvl/j4rnR8mPbJO0WnPz2mW3VG2zQG2LobYkyxSrcLuF1lBdzbhl5aVjFlSokiVBU4j1Ta0ZOjJ6zSjy/ahox0jyfX+e7a8Zpdh8QfcATZ/CuJ9+bSsy7QZONnoHBHhoQc3FjQfxAiWv6lq9b/WalqmXwzB99XEEzSKZ80xR5Bj9Epnxbx/a9w2mGBloyuq1kxH0rp38GX3G8aEiovvQQSZ8hndghEXmdgPtmkqsUrv0Loyom2nIFWcsn6OBqJiNSoU+Q5aQOa6QeTezNHAIjyqxDHky9qGH+FtPtF1Se5FHN3FGS07OnKdLdWpXiU5HG6V3W9svuKCdtltcoip5qGWk0UDfj0Z18sK776mufoU+mp72UPS7adPGcTF7VkVWg7JxnCP1LCYFdy4vHo9AplCSxrg6JZGmhPUQ/3KCI+69YcoPppF8l6prgP/+MeZ2j0Em542gP42Yx2L7tyDqCvds5VuZHImMUSLrv3U7+eb29C/pu1+itJwh1G7Yk2mKN74b4/7bRsybN8KmfA1gDf8oYp8fB7wHa40TJzZjsCcVrOU0+XfyQS6TaYjqOE6P0u8Q4ULQxZyWlKnF/+JzM3rT25e0WcIk9eS3G9KtNPPk1yptVemIQFNxqfg9/f1zpDbrAqcro++zVmH55ZV/mU2vW1+ybnrJ+lr+h9ipbPp78aqMM5evglq0/+y7T6OjN738O0FtyXRmWVPUy+jvD8KVGS7nBb9f0Xfb5MrG9SXT13nWkXWz/06fILXZcKY1i74O45cSiwmI9lD53GhuAtfKzeHauU5uF3cPt497CkZS8CsMhVGApocIkK8kgCyjSpYwXpdDMJnxg0cSIiMt0ZuBo2RGUWboG1k5dKMoQAwE9WWE6FG1iJyDoDeYUWeI1nS1CBGZBNWu88oicpz5eOQ0w4OxHgHtsezMnkr2YT1OxS05aEBMGQQ8mkMMJjNcIB9ZMGGXJXfUxAU91vkTdlWPmrBQeLXAfuPC3fSjakzvJp7ItY2qzFJNklaj1VSPVRemqdOG2FvTUtKAqL0TDuW0arugH9VFd2b5VaNLyW+OVhpUclqe7ZYHeVJXV1lExh3NWDqcnH15CiztJbnk8SUYtI+Prro1maRm6KsnXFOkkdSaWqdWrZ+Y/9jMS8iDj6fk2g/MbVkpyz6BVi2/hJC62nLxID1JckdPmLArl9CTfDYx547afVsuyeu7bflb+5zBHXcvf3ufI7iDX12xgddkZeY2hIpzxiwgdyQLuSptqkPKkdTqB18ndyvHRA7knhkToCmj36Q3Ejk4JCnrwhkzN5AKeljFGzOs9MFxjZMBTRSiGyOpmHTHqjsRpqhS/u4XMglP7vqObBGINk0klq+aR9Li0id/Clnyc1vXfTpvXzkJGbL1OrqL1NAPiUBi3+b5LcmX9dLjLGpWADjdDLcLpT84QWQpw2zihFM/kCWL5uqndn49//DYsYfnf905VT9/AVlC8heQMb/7DWle+ZwsTGxsnCjIz62kB37zO/obwFT3w7w0y/OA+xzO7K2UaHB2/Nn0MNMAfgDPKdjdEtM6o7Y/rvfHZSbYY77oyBJLimGsEFA+XIHHyk0hIpuHNeWtn5CeKaVI6dHWzwVdqpEeNabqhPAVvLPFPjnLlpczkRc6DCqNVp83/tFxzWu/4mvKpudWXVWzueaKiopA7fpNHdb8YY7iFGt1dkNWjSEzO6lM3PS3j+dcbZZ4PvqpTpeertPxLl5ls01YuXLlbAfP56aoJClJbfIPb4pEfWnViyMzl765sboi3fbw7j92t63lv5KSckdPne1xTE5Vm7NqZk65wO5N9I8dTF8wa/AsYtNhRAR9AoVhUyItnn0ZqGb2jxQ0bugKi8HHlNBCjGZgxgkpStw4DBEDlLqqP4awCp6Xo3wFhQVnI4Iurs9g5LUXY5OJOtmIYXTwg2p4fxhoZNqNtHNeIfFAqgQdaQPqqRGfgIFZlLOxq+rIaRSDcuqE5w6O9aE838xIGGY5ThLMWkQWHwqfD4wDC2yCzBC+cNxGS2HVlBaElTiSA6YQcQsTRiPG7K6Ufo5HPk+wPnKK6H+oY7YlSMozixGdM17ACADsogRrJQd6k6NhuaSJ7s9ITs8LTR5SXT1k8pjqag35V3HRzCFDLps86bL09L5qZQziNCZur7cBFZ5J/WlDqlsmVw+pqASC5RK6Vz+kGm65bBL/TFZ6RvSRGB0qn9P+HBYzw3XOG5zL35aScxurfNEnFiy0nSFOMp4+C/Ok7dz2RRIl3NGmWCQNxRzr/xd+L33QnED/ZgOLnJsPPHUh5+EqWOy3OoyGqYmry0VGTtsZaf1/ySuTCHhpplZn7vksmvB/lU2c4dAJ4YHALudNYjHsEtZZRjzGSXytsUDAsjdo9rrjgiNnjG1IXG4sqo9SM40qLjydOMMHpryy6NiHCuCPeJQQCgrDgO1I+tV1x/iX86w9C29jIaucCUvx/EsQPaSYfwV6SjG/kfMvxNgRyw7YKCX2T3+/JL584ismxD5XAU+WHr/DHXRriE0DUF9WbgVwE2FPw7hC6EjUP3jocc9CRrIQyziLhUFtKE0cHfRQU/0CGvihU1xMJoFHg+BiSpKOrsp1pHuGuAsL3UOG5jUSz4whbndhExQMGizKi7qUFH6ULJfSp2R3cSBYWJg9JEia605mD3G3FbrdxeeMG/oMpbJvGZiAc3MpMa6UlorGoFk2OxP2QhXK/8t5pPDi3mN+X2JbaduBdQcO0O6B/a7GizV8VnLym6WyONvS6PE0ehKbXBUJV4XDiXvaNneYblJ+/srXmmsXf1+al19amp8HMOED7gMZCGIlHj5RviHncLt4/H6catDXSTz3tLXds4deSC/cw3JkH9lHf2Ah8lhkb8lzzknM9ZzFUY1fxPxJFb4fZ0QW9gr7XogXNtFmlt12LHAHzcjzIwRCrjqCVkEYlHhV26IIvh9NgRzpFNfSj2C5sQisnxz4fXQ4HEKqxCaLxwuKfclU54aZR2x6HfOsljEkLNwWPbKdn0sXRyIY8TOCsLTvRJj4oh9u5+dhBIpItEnVDLsE+ynsJb1OCAKaF21Os85mFnR6qE922kS3zia5v8BIdBvJWkD3azH3BYas20ivh4ZfDzmxlKzt2Tr4FABbPLWR3TrI38gMOO8XUuz/jtM8v6/Re/8N+3k+ZyLVqf+WJU2N4b0aaH1hDBs0AV/TzE3ipgJvMxO4m/7vlzDZIBO/KlJCm1ERE9YTJYwTfshkoACO+8PyeY12/ISeeE5etPu9bIt95MTDbFY6WdLXrk0rTtNq04ymVC1/KC29MD0tTVusTYt98QT+cWMx1eM5VC/jkdSI2DhcV+bxlNWFY2mPUQsVGHugOm2qqccA1aUbeoz4iB6tItVm0fLCCfvI4O8wJFBV54vYnRjFODFaN38y+rC4HiMas2RwuP++L/rjG/95IL6x2O/HNfAlLU6vDEOMiiRKsDadEENsYRR82QsqaUVlgR0Dd6FZXkRxRZRu6fGL66ZU2AsKCugB9PhGsViM3EB99Q3yCHkLdyHHBU0hKYjsaqDKik7GbuYWhyLUNAkjWSFTYVXJTFzF2PM0FssqIZ9EIrkdXR998lFXR44j66LR+SPqhg4JBaxlpcaUyrIWz5xUR+ucoUS4cUSWx5GTm54lprcEF44lpLCmoSTZNOHeO4aMnLV/u1ZOTnJqb3h8VMM9V2ilpCRn+uq7dt5wT46udvEV2zuuLKu7++6xRnuF352mzdxQmu02ZUgaonEOmVQ8YqNaMJW4h7vGpf55dEnSlGBeQ2VdYIyzboy2oLT9mdnJDm26nDz76SVr9kxR8pPuoCcpqr6BZvIAcbEX+Pv/NSYl+oyS+ASG7b/KY5RxSHWYV76OpExetsEM/l/zyIAgeYCTE787EItIeZ6krx2XAxwo9CTHLWByCxv3/+q6FuA2ijN8e3fS6WHLOr1j6SRZkvWwZVmWLQk/JL9ix07sEOJHnIdNnDqxE5OWJiQ4DpCAg0kIBdMEY8gAtkmYNn0QGmAMhpI+hgooDJQQk2mnDR3SyQCFBsJAY2vp7p5k7EBHo7ud092edNr99398//dfj0YS8e6nnPzp1Tc9d3ENOl2qpAIyB+mwjpS8dnxvsyf2m1hParOuI9WEZ69+glc2tBaMgCslQbfTnGE3C2Xr11ekmxvWpZtFxcyl/Pzld+xrXLxt3CeiXffNlYh8j5zLbC/1Wv1uoz6P9i9ul3ltuO2SUWL9RjG/CsdxHFQAWcRrKSqcEzZE4wztCbBcmGT7AjJe+Th2qEgMOI5A/DIGfDwAcATUQIDZeGhLjeRg9JqjzKXLHw++NrxMVpB3dPrvlwawFJm7IKkuntkcsMeead3cAKfVvkxkK/NetAWx9je6dAaFS88fG2rIU3o1vEJZqtl+9Xa9iWWdBsO7pzbXKXy8Rq5sSmRXrikYf+sTAAZ3nhm6gbNkE5L5udc3N4QMuWBXtcNXPKNFPaP+M6W82gcPlLpMEpdXL2HN7UV1vFyh9PHrZhrDOtaJBDPLmnbX9qOeFT7NYNrGSOOMMVsEzyHpgpZ0su7q5UCPlD22iVgZOCxF6pDCs6P0vQn4Llq9sao/mtydQFZQfiJVEwL8hJNKY8RiATx+OfliHrC/FunbMf86+x7oQ+pBHxwDF6CdPQXt4EIK8yzaO99eW4zZnnAeMA5M4llAfw3H0BVj6Gp0FeoF9bDoWvTPa8VrE8wlQhCGtvh88Y7Xnpu6DyebM5GbXEI/qS99ixQOG6cYYcwzUuCRQpjA4xkbc5huGE/eVAx4nj83gBFX4rnAKtWpJCLOH40XabgkwJBhpdXhFOP0cVY8TCLtRsP8DdgvZUJtVWPE5Yo0VtUKMpnSqZSptQpNeTCeZy1tXOOXadVq92hhuDVbD+RyRybHa6VCpMDhKIgIUi36VW7tg6XW9BdlVjIqf3T9ttGnRretj/pVDGvTumUSmcffvOb2uo3Hb2w0MjK3W508V7+3Lp6JTE07+pxW+SLr+tZFfCoadYc6rRqqpzD0e4TwrJMaaJhSCkd7iM1Jz3+G5aeIxMaRkytpiyGFxUHv+dzSm9As9SHNYwPOR0l5T40p9ynhs8AeVMIWgpEaDIZqYGeBHGemYC4RjPWKanH0DhhEv2h03jEqwhqwuzyGnq+EJE6mi15wb29uHrNYnC7i+WxuWi5YXI7rtzCfH9IYDMGkOngjf0jjD9L/Meg91ckV9GeCKlN5SFEqJHnBrDzEeY1K+oUwdmq2lpYTr6bNE2osYewljS2a2dN+Wwtj8tvmLtj8ktWi17K5acW82xLdqrmpUQC22V+BgcJgAA1c3l8IDxZ18fBTWYCxwc+UFosAD1osSqBBdwUDBvNszIe9keWlrcQduSWj2gdvxvUfn7ZWrwIjNj+8eMbm9+MxuYU6yK3mbkWaeynS5yhAsGcgLrEiASYHVlbKIflNA7RRATQCSYQKwyPjtAediwsyRokIZJ/XZ2dozUCtzFGZMvUaU5YeiYIpvS+cu0SizSlZY/knvNe3qa0pv69308YqK5jara6utRsPd98s2POzTLNafRZPGzLyFEDjK/DpJAM6s9dlBlqlU6VnWIVapYMqMGWp7Ozu3VrQ1NLrht/ASWFNxMrTZlfYrQdTk8ZMv914X/ctNntNNT93t15tWqKyZHoVQO3hnHpRR6OoD7i3CRdaORpJ/dROisI8AwQnKgaCc8B385m+ZbeqBItynzCEH3N9z+c5hRZegk6WpAjR8FDzxAElEl84uLdXvDK88XGv19ew0zSnYOoUgGbQi5YxGXJVpkZj0GvUqgyFHK0dNKAB0nJstqBgNKkywLNlwcLobfuvCxaazRq6yOuwVZTmecvKbMjSVILaHRMTO/pX5YYDOcPQ3zvS2zsiPT67aviVre3q1hpmj8loNsrUnMyoNGSps2RyuUyVocvSIP1GxrESn89tMSuUfFby8I6iTVZb62qrtTBYvEOikkulnATJKSYzg+EmPpxovq629AfW5cg6xLfopVI5lUrpB1Q11UiYdQmQuzhkZXA5Zw4H7YwY4BSg8bNTIGW0RIOGj9tpl+BK8AZjgMGnudJ5H8y6QkfHDeC6RJtvZduyGP/k668Ola340e9cDnlFOdf9WHttzfbRWpjReSxxblvnWvgK/MrSs//w8s6Tpaa1O3ZV/XhDDcijg4QQUfqByjPzQPOYNrRy3w1da9V18bITx1x9v93troEz8K6L4yB0+Y1hZ9bv+ydvDNRVrNoVszg7D84VE9NKzOWkCAbZQZXguuyLq5+S8CWxeOLAjn+kAADxkqe8FkZ9cTgiDczzbpDSrfAsod+oddng6ZzyismK8pycyHiEbVqYPyyWfevpwRwcO2OPHEokPwrGWsrLyspbYsGQ6fx5U2p9NhAuB1zNIkJUbFakJsSJ8zjTCvNRRTBOC6Dlkv1aZc7LzaQFk4XvKAT+gmhPKKSOWOd+eE4AxQZ1ZPZT7LCh5aqV+dza6zc2ZLnj0QIznJyYdMeZAwJ41W/1JH85dxuxP17jbpI+SZmQ5hugakiGhlEMXmOyo0rg9qCJkBMyIlsQ4IcRJQVnAGbVx/hJTpobNRjRLsfhiaJp40KfO9xyPAelU2pBuPqN0CLwgvDEv2/d88Vl4Hn6xKdCa7LDYXtWt8SjKJr7a99r+5u3P7J3D/uvjY92oFPg+fbu/rjqS/Do1qV7aGnyHbSg7NotHeZRP1ehIOD9+MOffzX2cMVnAlydW5zvPq3lGMDCoy8M7O87MH6Lt71jw8a7TqMzNP2Sz1/a08Em/wJGju/aLdZj3ITsrW2YA3K+oqXT4fLkYowJwXBhGWKU8Ebsa5kGDReHhi7CqelPYP8+wLTBByeBfmICfjw5kmx7Pvmzl+8Ed3Hb7v8CPgdH4HNf3D8zNbbz4AmkU1UA/YnhnQ8n6Jcef+oMktN3UNNcG6en5FS2WFHCbRejeQCTlGCi1YgGyWP0YF04pIfEODbBNJKBVGmhj2b/vKzbo/VFp9/seaC9xbf/yDizYwRUtYRBf1f9+JH9vpZ2yd0nPsZR84/gn7x3Hhmv7+oH4RZQNVKPLkw6Wtof6HlzOurTerrrR+CZRZg2LUYIXovKAdoc86JpEPreLK4KJ3zfeT7XlXuvO9ftPvj9WL336OHkIDzljMWdTqejMuZ0/F+8SbrGDXpLFuy/rWqD8R/gikgMv7Cdrh9LIOjiJp0HN4rmfhmJxYXjbHGItaF/CBs9oBCpcH5V0bHH/rHlSdDV2QUzBnsDa/R6qSqRot5YkkhWJ5fJQ4ZlJhO4TPq7QvVIbuW2kup0fC6D8yCRqGRyGB2SjHSYxxSSOCUSqUxDoHMvGOwC8BdgqdtTB0+CzsFBaS8AAELdQ5tCm47qIITfNMOj4KZmgPqmtfjoQ4vqWS2ok0HwKQveuPRegthNHantCIldXcEQGczwj70FGG8HrmC4DswQ8/xo6j7qj1whh6sLYZkjjjikrVJIXSAqQgQdZMWYIdIc3JyPkaqyTTGtZn1yZm+gNbuw5OU/5A+Dwf8eqlmdaysPLn2mshgsbXr3vLRfbm1YYsyQSgrgPfeUvPhyNKBryR+mS66+k7+1u3ODI5RRG/3bsvpKBYVzlkUbzr6gJoUdfSMf8SOnKsEiY0USduq1JJlcQra5IAWl4yUkQuHUS47ANtjWiN2SPbAf7hIhdQnz/FHmifkmjt8g620Ab5HhzJ5KSDCy/XAjeB4u/xD+HKxfDrrg5FsnT8Lt88cb51uJdP09cX81XXuBepHwGh5P1WqSEnWfFSlkkKzUEOgZ0lXwQwaY649+f6Ech2fTcpz56TkBvonkOKtBXV8rxkEXFuNztwmwDIlxupU5QM1z4h9P4Zgw+VIYMzlJj6dKMGOaXLLH9tL/AIxzQ2cAAHjaY2BkYGBgZOzcvTpCNJ7f5isDN/sFoAjDxavXJJFp9gtgcQ4GJhAPAGEpC8MAAHjaY2BkYGC/8P8GiGRgAJOMDCiAkQUAdcoEZAB42mP8wgAGTLMYGBiBbPYLDCnsFxh1gPR3ID6BxH8F4YPZE4C0CEQOjk8gyTOg0aFoatEw4wSIOnTMrMB+gWkPKgbZweQEpG8g3IfsBsYVUHoCmhwDFjZI/zGgeRFY3HUC4kew+08gaBgG6WE8A3U7CKtguh+uHuTHL1BzvqCGFczvsHBGtwfFzAmoZqKHPcNxNLEsoJ4uVDeDzeQE0r5APAPNLjM0d01AsysPiDmRwhCGJwLxRix+g+GfaOLbkMIQyc/ofJj5cP48JDOAdjEeQgtjkHs3AHEAkG0EDY/jaH78ghnGGPGLnjZDoOLCUDftBeKFiHSGEi9IYtgww3k0+1LQ7ETKQ2AMTaPo7oX75QtUXRpCPYrZIFyHFv6weOqB6tkFEmeKYGAAANkHWesAAAAAJgAmACYALgCGAKgA1AE+AZABqAHuAi4CkgLIAxADXAOSA9QEHASYBM4FCgUyBfIGHAZkBpIGzgcSB0YHqAfaCDgIUgh4CJYIwgjsCQgJFgkkCTIJQAlOCawJwgnuCi4KZAqCCpYK1Ar2Cy4LdgvoDEwMkAzEDPwNNg1mDZYNxA3yDh4OYA6gDswPGg9+D+AQBBA0EH4QxBDyEQ4RShFkEaISQBKIEqoSzBLuExgTqhPmFFIUfBScFLgVDBVUFZgWDhZQFpAW0hc0F8oYRBi4GNwY+BkOGU4ZiBniGigaYBqGGqoa5hs0G4ocPBxsHLwc7h02HWwdjh2yHkAeeB7WHvgfdB+2IAogbiC0INYg+CEQIZAhzCImIpoiuCNiI9IkWCSKJNIk7iUQJUIlkCWsJdwl/iaaJ0InxigSKCwoQihcKHIojCiiKLwo0ikKKSgp5CpKKrQriivmLIwtCC1SLaot5i4SLiAuoi7mLxgvTC+iL+IwSDCaMMYw8jEuMWQxfDGeMeQyujLoMzIzTjPQNBw0YDTWNUA2YDaMNxg3UDeMN8w4LDh0OJY5BDlIOZQ5rDnWOiQ6fjq2Ouo7EjtIO6g8Ojx0PKo9MD2cPhI+pj7OPuw/Cj8gPzY/Sj/CP9A/5kCUQQxBukIoQnZCtEMsQ2hDskPyRCZETkSCRLBE9EVaRZhFsEWwAAB42mNgZGBgZGHYwCDIAAJMQMwIhAwMDmA+AwAVeAEMAHjajVLJTgJBEH0zoJHEcPDgwXiY6EVNWMSALFeXRIkhGsXrIMMSEQYYFhOPfoEf4ne4XLx68RuMH2B81dMQwlxMpadfvX5V1V01AKJ4RghGOALgi8vHBlbo+dik5lvjELL41TiMDSOj8QLGxrXGi+Q/NI5gx/jReBlr5rrGL1g1J7GvSJpFjd+wZD5o/I6o+ejjzxBjn3CMEoqwMISDHvpoooM2/RRXh4wFm/499xaRp1RB9YjIQ4OophiPyMEYN/y69Ca6LWo8mos8ErSRsjjqPB1wl4p18i1GSGybNRyuBFmXbIz5bXSplDx3ZDZxpCseBupt44DqPrWSraOynVNRZy15TQ+7zJSkZVDAJU5RxhlRMCo2FxdUWHOKq7kOzVYq4YKMeLNsg0pP5xtOI+LY57fAt9q4ZU7R1MhKhyqcUhxptbLYo5f7x93LqstV3qKneit3ryrUVHOw1JRtVhxppTtVTiZUpl+ZmbV/V2Gr9E5ULfmHUuosx2kLzqsXCy97Wr1H5uXqXjmM60/nabFLXTJNnkn91h+P6YatAAAAeNptlGV0XFUYRbNDocXd3R0y97v3vTc4FFLc3a3QQilFSilW3N3d3a24u7u7u7uXVbLzj/mRs2bl3X0nJ2dPR2fHf68xoztSx/+86DP2R0cnnYxDH8ZlPPrSj/GZgAmZiImZhEmZjMmZgimZiqmZhmmZjumZgRmZiZmZhVmZjdmZgzmZi7mZh3mZj/lZgAVZiIVZhEXpokUiyBQqahraLMbiLMGSLMXSLMOyLEd/lmcFuhnAiqzEyqzCqqzG6qzBmqzF2qzDuqzH+mzAhmzExmzCpmzG5mzBlmzF1mzDtgxkO7ZnEIPZgR0Zwk4MZWeGsQu7shu7M5w9GMGejGQv9mYf9mU/RrE/B3AgB3Ewh3Aoh3E4R3AkR3E0x3Asx3E8J3AiJ3Eyp3Aqp3E6Z3AmZ3E253Au53E+F3AhF3Exl3Apl3E5V3AlV3E113At13E9N3AjN3Ezo7mFW7mN27mDO7mLu7mHe7mP+3mAB3mIh3mER3mMx3mCJ3mKp3mGZ3mO53mBF3mJl3mFV3mN13mDN3mLt3mHd3mP9/mAD/mIj/mET/mMz/mCL/mKr/mGb/mO7/mBH/mJn/mFX/mN3/mDP/mLv/mHMZ1j//2dfYcPHZxKd/+x2d3q6jJbZjLDzGYxK7M2G7Pdky15LXkteS15LTktOS05LTktOUlOkpPkJDlJTpKT5CQ5SU7ICc+H58O/K+SEnPB8eD57Pvs5spwsJ3s+e3/2fPH3xXuKzxXvKT5fep/3vsr7Ku+r5FRyKjmVnEpOJaeSU3u+9vPWcmo5tZxaTi2nllPLafw8jbxGXiOvkdf08JJ7Su4puaPkjlJX73OVWZuN2XNvckfJHSV3lNxRaslzT8k9JfeU3FNyT8k9JfeU3FNyTynJc1fJXSV3ldxVclfJXaWQ576S+0ruK7mv5L5SyHNnyZ0ld5bcV9hfdPW+DzObxazM2mzMHm7YY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY9hj2GPYY+hr9Papr5Hl6W1kefob+hu5h5d9n3vfly6zZSYzzGwWszJrU46e58rzep71POt51vOs51nPs57nWo6+Z33P+p71Pet71ves71nfs75nfc/6nvU963vW96zvuZHXyGvkNfLa8try2vLa8try2vLa8try2vLaPbzi90vRj6IfRT+KfhS9KHpR9KLoRdGLohdFL4peFL0oelH0ouhF0YuiF0Uvil4UvSh6UfSi6EXRi6IXRS+KXhS9KHpR9KHoQ9GHog9FH4o+FD0oelD0oOToN3TgiAFDRg4b9C8VmLmgAAAAAVWwJZkAAA==) format('woff'),url(../fonts/dashicons.ttf) format("truetype"),url(../fonts/dashicons.svg#dashicons) format("svg");font-weight:400;font-style:normal}.dashicons,.dashicons-before:before{display:inline-block;width:20px;height:20px;font-size:20px;line-height:1;font-family:dashicons;text-decoration:inherit;font-weight:400;font-style:normal;vertical-align:top;text-align:center;-webkit-transition:color .1s ease-in 0;transition:color .1s ease-in 0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.dashicons-menu:before{content:"\f333"}.dashicons-admin-site:before{content:"\f319"}.dashicons-dashboard:before{content:"\f226"}.dashicons-admin-media:before{content:"\f104"}.dashicons-admin-page:before{content:"\f105"}.dashicons-admin-comments:before{content:"\f101"}.dashicons-admin-appearance:before{content:"\f100"}.dashicons-admin-plugins:before{content:"\f106"}.dashicons-admin-users:before{content:"\f110"}.dashicons-admin-tools:before{content:"\f107"}.dashicons-admin-settings:before{content:"\f108"}.dashicons-admin-network:before{content:"\f112"}.dashicons-admin-generic:before{content:"\f111"}.dashicons-admin-home:before{content:"\f102"}.dashicons-admin-collapse:before{content:"\f148"}.dashicons-filter:before{content:"\f536"}.dashicons-admin-customizer:before{content:"\f540"}.dashicons-admin-multisite:before{content:"\f541"}.dashicons-admin-links:before,.dashicons-format-links:before{content:"\f103"}.dashicons-admin-post:before,.dashicons-format-standard:before{content:"\f109"}.dashicons-format-image:before{content:"\f128"}.dashicons-format-gallery:before{content:"\f161"}.dashicons-format-audio:before{content:"\f127"}.dashicons-format-video:before{content:"\f126"}.dashicons-format-chat:before{content:"\f125"}.dashicons-format-status:before{content:"\f130"}.dashicons-format-aside:before{content:"\f123"}.dashicons-format-quote:before{content:"\f122"}.dashicons-welcome-edit-page:before,.dashicons-welcome-write-blog:before{content:"\f119"}.dashicons-welcome-add-page:before{content:"\f133"}.dashicons-welcome-view-site:before{content:"\f115"}.dashicons-welcome-widgets-menus:before{content:"\f116"}.dashicons-welcome-comments:before{content:"\f117"}.dashicons-welcome-learn-more:before{content:"\f118"}.dashicons-image-crop:before{content:"\f165"}.dashicons-image-rotate:before{content:"\f531"}.dashicons-image-rotate-left:before{content:"\f166"}.dashicons-image-rotate-right:before{content:"\f167"}.dashicons-image-flip-vertical:before{content:"\f168"}.dashicons-image-flip-horizontal:before{content:"\f169"}.dashicons-image-filter:before{content:"\f533"}.dashicons-undo:before{content:"\f171"}.dashicons-redo:before{content:"\f172"}.dashicons-editor-bold:before{content:"\f200"}.dashicons-editor-italic:before{content:"\f201"}.dashicons-editor-ul:before{content:"\f203"}.dashicons-editor-ol:before{content:"\f204"}.dashicons-editor-quote:before{content:"\f205"}.dashicons-editor-alignleft:before{content:"\f206"}.dashicons-editor-aligncenter:before{content:"\f207"}.dashicons-editor-alignright:before{content:"\f208"}.dashicons-editor-insertmore:before{content:"\f209"}.dashicons-editor-spellcheck:before{content:"\f210"}.dashicons-editor-distractionfree:before,.dashicons-editor-expand:before{content:"\f211"}.dashicons-editor-contract:before{content:"\f506"}.dashicons-editor-kitchensink:before{content:"\f212"}.dashicons-editor-underline:before{content:"\f213"}.dashicons-editor-justify:before{content:"\f214"}.dashicons-editor-textcolor:before{content:"\f215"}.dashicons-editor-paste-word:before{content:"\f216"}.dashicons-editor-paste-text:before{content:"\f217"}.dashicons-editor-removeformatting:before{content:"\f218"}.dashicons-editor-video:before{content:"\f219"}.dashicons-editor-customchar:before{content:"\f220"}.dashicons-editor-outdent:before{content:"\f221"}.dashicons-editor-indent:before{content:"\f222"}.dashicons-editor-help:before{content:"\f223"}.dashicons-editor-strikethrough:before{content:"\f224"}.dashicons-editor-unlink:before{content:"\f225"}.dashicons-editor-rtl:before{content:"\f320"}.dashicons-editor-break:before{content:"\f474"}.dashicons-editor-code:before{content:"\f475"}.dashicons-editor-paragraph:before{content:"\f476"}.dashicons-editor-table:before{content:"\f535"}.dashicons-align-left:before{content:"\f135"}.dashicons-align-right:before{content:"\f136"}.dashicons-align-center:before{content:"\f134"}.dashicons-align-none:before{content:"\f138"}.dashicons-lock:before{content:"\f160"}.dashicons-unlock:before{content:"\f528"}.dashicons-calendar:before{content:"\f145"}.dashicons-calendar-alt:before{content:"\f508"}.dashicons-visibility:before{content:"\f177"}.dashicons-hidden:before{content:"\f530"}.dashicons-post-status:before{content:"\f173"}.dashicons-edit:before{content:"\f464"}.dashicons-post-trash:before,.dashicons-trash:before{content:"\f182"}.dashicons-sticky:before{content:"\f537"}.dashicons-external:before{content:"\f504"}.dashicons-arrow-up:before{content:"\f142"}.dashicons-arrow-down:before{content:"\f140"}.dashicons-arrow-left:before{content:"\f141"}.dashicons-arrow-right:before{content:"\f139"}.dashicons-arrow-up-alt:before{content:"\f342"}.dashicons-arrow-down-alt:before{content:"\f346"}.dashicons-arrow-left-alt:before{content:"\f340"}.dashicons-arrow-right-alt:before{content:"\f344"}.dashicons-arrow-up-alt2:before{content:"\f343"}.dashicons-arrow-down-alt2:before{content:"\f347"}.dashicons-arrow-left-alt2:before{content:"\f341"}.dashicons-arrow-right-alt2:before{content:"\f345"}.dashicons-leftright:before{content:"\f229"}.dashicons-sort:before{content:"\f156"}.dashicons-randomize:before{content:"\f503"}.dashicons-list-view:before{content:"\f163"}.dashicons-excerpt-view:before,.dashicons-exerpt-view:before{content:"\f164"}.dashicons-grid-view:before{content:"\f509"}.dashicons-hammer:before{content:"\f308"}.dashicons-art:before{content:"\f309"}.dashicons-migrate:before{content:"\f310"}.dashicons-performance:before{content:"\f311"}.dashicons-universal-access:before{content:"\f483"}.dashicons-universal-access-alt:before{content:"\f507"}.dashicons-tickets:before{content:"\f486"}.dashicons-nametag:before{content:"\f484"}.dashicons-clipboard:before{content:"\f481"}.dashicons-heart:before{content:"\f487"}.dashicons-megaphone:before{content:"\f488"}.dashicons-schedule:before{content:"\f489"}.dashicons-wordpress:before{content:"\f120"}.dashicons-wordpress-alt:before{content:"\f324"}.dashicons-pressthis:before{content:"\f157"}.dashicons-update:before{content:"\f463"}.dashicons-screenoptions:before{content:"\f180"}.dashicons-cart:before{content:"\f174"}.dashicons-feedback:before{content:"\f175"}.dashicons-cloud:before{content:"\f176"}.dashicons-translation:before{content:"\f326"}.dashicons-tag:before{content:"\f323"}.dashicons-category:before{content:"\f318"}.dashicons-archive:before{content:"\f480"}.dashicons-tagcloud:before{content:"\f479"}.dashicons-text:before{content:"\f478"}.dashicons-media-archive:before{content:"\f501"}.dashicons-media-audio:before{content:"\f500"}.dashicons-media-code:before{content:"\f499"}.dashicons-media-default:before{content:"\f498"}.dashicons-media-document:before{content:"\f497"}.dashicons-media-interactive:before{content:"\f496"}.dashicons-media-spreadsheet:before{content:"\f495"}.dashicons-media-text:before{content:"\f491"}.dashicons-media-video:before{content:"\f490"}.dashicons-playlist-audio:before{content:"\f492"}.dashicons-playlist-video:before{content:"\f493"}.dashicons-controls-play:before{content:"\f522"}.dashicons-controls-pause:before{content:"\f523"}.dashicons-controls-forward:before{content:"\f519"}.dashicons-controls-skipforward:before{content:"\f517"}.dashicons-controls-back:before{content:"\f518"}.dashicons-controls-skipback:before{content:"\f516"}.dashicons-controls-repeat:before{content:"\f515"}.dashicons-controls-volumeon:before{content:"\f521"}.dashicons-controls-volumeoff:before{content:"\f520"}.dashicons-yes:before{content:"\f147"}.dashicons-no:before{content:"\f158"}.dashicons-no-alt:before{content:"\f335"}.dashicons-plus:before{content:"\f132"}.dashicons-plus-alt:before{content:"\f502"}.dashicons-plus-alt2:before{content:"\f543"}.dashicons-minus:before{content:"\f460"}.dashicons-dismiss:before{content:"\f153"}.dashicons-marker:before{content:"\f159"}.dashicons-star-filled:before{content:"\f155"}.dashicons-star-half:before{content:"\f459"}.dashicons-star-empty:before{content:"\f154"}.dashicons-flag:before{content:"\f227"}.dashicons-info:before{content:"\f348"}.dashicons-warning:before{content:"\f534"}.dashicons-share:before{content:"\f237"}.dashicons-share1:before{content:"\f237"}.dashicons-share-alt:before{content:"\f240"}.dashicons-share-alt2:before{content:"\f242"}.dashicons-twitter:before{content:"\f301"}.dashicons-rss:before{content:"\f303"}.dashicons-email:before{content:"\f465"}.dashicons-email-alt:before{content:"\f466"}.dashicons-facebook:before{content:"\f304"}.dashicons-facebook-alt:before{content:"\f305"}.dashicons-networking:before{content:"\f325"}.dashicons-googleplus:before{content:"\f462"}.dashicons-location:before{content:"\f230"}.dashicons-location-alt:before{content:"\f231"}.dashicons-camera:before{content:"\f306"}.dashicons-images-alt:before{content:"\f232"}.dashicons-images-alt2:before{content:"\f233"}.dashicons-video-alt:before{content:"\f234"}.dashicons-video-alt2:before{content:"\f235"}.dashicons-video-alt3:before{content:"\f236"}.dashicons-vault:before{content:"\f178"}.dashicons-shield:before{content:"\f332"}.dashicons-shield-alt:before{content:"\f334"}.dashicons-sos:before{content:"\f468"}.dashicons-search:before{content:"\f179"}.dashicons-slides:before{content:"\f181"}.dashicons-analytics:before{content:"\f183"}.dashicons-chart-pie:before{content:"\f184"}.dashicons-chart-bar:before{content:"\f185"}.dashicons-chart-line:before{content:"\f238"}.dashicons-chart-area:before{content:"\f239"}.dashicons-groups:before{content:"\f307"}.dashicons-businessman:before{content:"\f338"}.dashicons-id:before{content:"\f336"}.dashicons-id-alt:before{content:"\f337"}.dashicons-products:before{content:"\f312"}.dashicons-awards:before{content:"\f313"}.dashicons-forms:before{content:"\f314"}.dashicons-testimonial:before{content:"\f473"}.dashicons-portfolio:before{content:"\f322"}.dashicons-book:before{content:"\f330"}.dashicons-book-alt:before{content:"\f331"}.dashicons-download:before{content:"\f316"}.dashicons-upload:before{content:"\f317"}.dashicons-backup:before{content:"\f321"}.dashicons-clock:before{content:"\f469"}.dashicons-lightbulb:before{content:"\f339"}.dashicons-microphone:before{content:"\f482"}.dashicons-desktop:before{content:"\f472"}.dashicons-tablet:before{content:"\f471"}.dashicons-smartphone:before{content:"\f470"}.dashicons-phone:before{content:"\f525"}.dashicons-smiley:before{content:"\f328"}.dashicons-index-card:before{content:"\f510"}.dashicons-carrot:before{content:"\f511"}.dashicons-building:before{content:"\f512"}.dashicons-store:before{content:"\f513"}.dashicons-album:before{content:"\f514"}.dashicons-palmtree:before{content:"\f527"}.dashicons-tickets-alt:before{content:"\f524"}.dashicons-money:before{content:"\f526"}.dashicons-thumbs-up:before{content:"\f529"}.dashicons-thumbs-down:before{content:"\f542"}.dashicons-layout:before{content:"\f538"}
\ No newline at end of file
index a961b7afd1c6bc4113b61194ebe4f1699bcb601a..93e3bb051de288224349ac0d4768d0526377d69f 100644 (file)
@@ -62,7 +62,7 @@
 }
 
 .mce-window .mce-window-head .mce-close:before {
-       font: normal 20px/36px 'dashicons';
+       font: normal 20px/36px dashicons;
        text-align: center;
        color: #666;
        width: 36px;
@@ -261,7 +261,7 @@ div.mce-inline-toolbar-grp:after {
        height: 0;
        border-style: solid;
        border-color: transparent;
-       content: '';
+       content: "";
 }
 
 div.mce-inline-toolbar-grp.mce-arrow-up:before {
@@ -805,7 +805,7 @@ i.mce-i-hr,
 i.mce-i-wp_code,
 i.mce-i-dashicon,
 .mce-close {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        padding: 0;
        vertical-align: top;
        speak: none;
@@ -816,7 +816,7 @@ i.mce-i-dashicon,
 }
 
 .qt-dfw {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        vertical-align: top;
        speak: none;
        -webkit-font-smoothing: antialiased;
@@ -824,145 +824,145 @@ i.mce-i-dashicon,
 }
 
 i.mce-i-bold:before {
-       content: '\f200';
+       content: "\f200";
 }
 
 i.mce-i-italic:before {
-       content: '\f201';
+       content: "\f201";
 }
 
 i.mce-i-bullist:before {
-       content: '\f203';
+       content: "\f203";
 }
 
 i.mce-i-numlist:before {
-       content: '\f204';
+       content: "\f204";
 }
 
 i.mce-i-blockquote:before {
-       content: '\f205';
+       content: "\f205";
 }
 
 i.mce-i-alignleft:before {
-       content: '\f206';
+       content: "\f206";
 }
 
 i.mce-i-aligncenter:before {
-       content: '\f207';
+       content: "\f207";
 }
 
 i.mce-i-alignright:before {
-       content: '\f208';
+       content: "\f208";
 }
 
 i.mce-i-link:before {
-       content: '\f103';
+       content: "\f103";
 }
 
 i.mce-i-unlink:before {
-       content: '\f225';
+       content: "\f225";
 }
 
 i.mce-i-wp_more:before {
-       content: '\f209';
+       content: "\f209";
 }
 
 i.mce-i-strikethrough:before {
-       content: '\f224';
+       content: "\f224";
 }
 
 i.mce-i-spellchecker:before {
-       content: '\f210';
+       content: "\f210";
 }
 
 i.mce-i-fullscreen:before,
 i.mce-i-wp_fullscreen:before,
 i.mce-i-dfw:before,
 .qt-dfw:before {
-       content: '\f211';
+       content: "\f211";
 }
 
 i.mce-i-wp_adv:before {
-       content: '\f212';
+       content: "\f212";
 }
 
 i.mce-i-underline:before {
-       content: '\f213';
+       content: "\f213";
 }
 
 i.mce-i-alignjustify:before {
-       content: '\f214';
+       content: "\f214";
 }
 
 i.mce-i-forecolor:before,
 i.mce-i-backcolor:before {
-       content: '\f215';
+       content: "\f215";
 }
 
 i.mce-i-pastetext:before {
-       content: '\f217';
+       content: "\f217";
 }
 
 i.mce-i-removeformat:before {
-       content: '\f218';
+       content: "\f218";
 }
 
 i.mce-i-charmap:before {
-       content: '\f220';
+       content: "\f220";
 }
 
 i.mce-i-outdent:before {
-       content: '\f221';
+       content: "\f221";
 }
 
 i.mce-i-indent:before {
-       content: '\f222';
+       content: "\f222";
 }
 
 i.mce-i-undo:before {
-       content: '\f171';
+       content: "\f171";
 }
 
 i.mce-i-redo:before {
-       content: '\f172';
+       content: "\f172";
 }
 
 i.mce-i-help:before,
 i.mce-i-wp_help:before {
-       content: '\f223';
+       content: "\f223";
 }
 
 i.mce-i-wp-media-library:before {
-       content: '\f104';
+       content: "\f104";
 }
 
 i.mce-i-ltr:before {
-       content: '\f320';
+       content: "\f320";
 }
 
 i.mce-i-wp_page:before {
-       content: '\f105';
+       content: "\f105";
 }
 
 i.mce-i-hr:before {
-       content: '\f460';
+       content: "\f460";
 }
 
 .mce-close:before {
-       content: '\f158';
+       content: "\f158";
 }
 
 i.mce-i-wp_code:before {
-       content: '\f475';
+       content: "\f475";
 }
 
 /* RTL button icons */
 .rtl i.mce-i-outdent:before {
-       content: '\f222';
+       content: "\f222";
 }
 
 .rtl i.mce-i-indent:before {
-       content: '\f221';
+       content: "\f221";
 }
 
 /* Editors */
@@ -977,7 +977,7 @@ i.mce-i-wp_code:before {
 
 .wp-editor-tools:after {
        clear: both;
-       content: '';
+       content: "";
        display: table;
 }
 
@@ -1121,14 +1121,14 @@ i.mce-i-wp_code:before {
 }
 
 .wp-media-buttons .add_media span.wp-media-buttons-icon:before {
-       font: normal 18px/1 'dashicons';
+       font: normal 18px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
 }
 
 .wp-media-buttons .add_media span.wp-media-buttons-icon:before {
-       content: '\f104';
+       content: "\f104";
 }
 
 /* Quicktags */
@@ -1331,14 +1331,14 @@ i.mce-i-wp_code:before {
 }
 
 #wp-link-close:before {
-       font: normal 20px/36px 'dashicons';
+       font: normal 20px/36px dashicons;
        vertical-align: top;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        width: 36px;
        height: 36px;
-       content: '\f158';
+       content: "\f158";
 }
 
 #wp-link-close:hover,
@@ -1379,16 +1379,16 @@ i.mce-i-wp_code:before {
 
 #wp-link-search-toggle:after {
        display: inline-block;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        vertical-align: top;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
-       content: '\f140';
+       content: "\f140";
 }
 
 .search-panel-visible #wp-link-search-toggle:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 #wp-link input[type="text"] {
index 012ab17860848d04e500ebac47e52259236de4fd..d52440c92341041c5ad951574537cbdcda789550 100644 (file)
@@ -1 +1 @@
-.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);-webkit-transition:none;transition:none}.mce-window{-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);-webkit-font-smoothing:subpixel-antialiased;-webkit-transition:none;transition:none}.mce-window .mce-container-body.mce-abs-layout{overflow:visible}.mce-window .mce-window-head{background:#fcfcfc;border-bottom:1px solid #dfdfdf;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#444;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 16px 0 36px}.mce-window .mce-window-head .mce-close{color:transparent;top:0;left:0;width:36px;height:36px;line-height:36px;text-align:center}.mce-window .mce-window-head .mce-close:before{font:400 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window .mce-window-head .mce-close:hover:before{color:#00a0d2}.mce-window .mce-window-head .mce-dragh{width:-webkit-calc(100% - 36px);width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #dfdfdf}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);-webkit-transition:.05s all ease-in-out;transition:.05s all ease-in-out}#wp-link .query-results:focus,.mce-checkbox:focus i.mce-i-checkbox,.mce-textbox.mce-focus,.mce-textbox:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}.mce-window .mce-wp-help{height:360px;width:460px;overflow:auto}.mce-window .mce-wp-help *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mce-window .mce-wp-help>.mce-container-body{width:auto!important}.mce-window .wp-editor-help{padding:10px 20px 0 10px}.mce-window .wp-editor-help h2,.mce-window .wp-editor-help p{margin:8px 0;white-space:normal;font-size:14px;font-weight:400}.mce-window .wp-editor-help table{width:100%;margin-bottom:20px}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:700;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:700;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-header td{font-weight:700;padding:0 5px}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}.mce-floatpanel.mce-popover.mce-bottom,.mce-menu{margin-top:2px}.mce-floatpanel .mce-arrow{display:none}.mce-menu .mce-container-body{min-width:160px}.mce-menu-item{border:none;margin-bottom:2px}.mce-menu-has-icons i.mce-ico{line-height:20px}div.mce-panel{border:0;background:#fff}.mce-panel.mce-menu{border:1px solid #ddd}div.mce-tab{line-height:13px}div.mce-toolbar-grp{border-bottom:1px solid #dedede;background:#f5f5f5;padding:0;position:relative}div.mce-inline-toolbar-grp{border:1px solid #a0a5aa;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);box-shadow:0 1px 3px rgba(0,0,0,.15);box-sizing:border-box;margin-bottom:8px;position:absolute;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;max-width:98%;z-index:100100}.wp-editor-area,div.mce-inline-toolbar-grp{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}div.mce-inline-toolbar-grp>div.mce-stack-layout{padding:1px}div.mce-inline-toolbar-grp.mce-arrow-up{margin-bottom:0;margin-top:8px}div.mce-inline-toolbar-grp:after,div.mce-inline-toolbar-grp:before{position:absolute;right:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:''}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a0a5aa;border-width:0 9px 9px;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a0a5aa;border-width:9px 9px 0;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f5f5f5;border-width:0 8px 8px;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f5f5f5;border-width:8px 8px 0;margin-right:-8px}.mce-toolbar .mce-btn-group,div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before,div.mce-path{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{right:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-full{left:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:32px}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;cursor:pointer}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;-webkit-border-radius:2px;border-radius:2px}.mce-toolbar .mce-btn-group .mce-btn:focus,.mce-toolbar .mce-btn-group .mce-btn:hover,.qt-dfw:focus,.qt-dfw:hover{background:#fafafa;border-color:#999;color:#23282d;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);outline:0}.mce-toolbar .mce-btn-group .mce-btn.mce-active,.mce-toolbar .mce-btn-group .mce-btn:active,.qt-dfw.active{background:#ebebeb;border-color:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3)}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#555}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover i.mce-ico{color:#555}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a0a5aa;background:0 0;border-color:#ddd;text-shadow:0 1px 0 #fff;-webkit-box-shadow:none;box-shadow:none}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:20px;padding-right:6px;padding-left:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-left:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;right:3px;height:3px;width:20px}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox{-webkit-border-radius:0;border-radius:0;direction:rtl;background:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #777;margin-right:2px;margin-left:2px}.mce-listbox i.mce-caret{left:4px}.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#32373c}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #32373c;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-left-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item-normal.mce-active,.mce-menu .mce-menu-item-preview.mce-active,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#0073aa}.mce-menu .mce-menu-item-preview.mce-active{border-right:none}.mce-menu .mce-menu-item-preview.mce-active .mce-text{color:#fff}.mce-menu .mce-menu-item.mce-disabled{cursor:default}.mce-menu .mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menubar{border-color:#e5e5e5;background:#fff;border-width:0 0 1px}.mce-menubar .mce-menubtn{margin:2px}.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus,.mce-menubar .mce-menubtn:hover{border-color:transparent;background:0 0}.mce-menubar .mce-menubtn:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-menu-item-sep:hover,div.mce-menu .mce-menu-item-sep{border-bottom:1px solid #ddd;height:0;margin:5px 0}.mce-menubtn span{margin-left:0;padding-right:3px}.mce-menu-has-icons i.mce-ico:before{margin-right:-2px}.mce-primary button,.mce-primary button i{text-align:center;color:#fff;text-shadow:none;padding:0;line-height:26px}.mce-window .mce-btn{color:#555;background:#f7f7f7;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0;cursor:pointer;border:1px solid #ccc;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08)}.mce-window .mce-btn::-moz-focus-inner{border-width:1px 0;border-style:solid none;border-color:transparent;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.mce-window .mce-btn.mce-disabled{color:#a0a5aa;border-color:#ddd;background:#f7f7f7;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default}.mce-window .mce-btn.mce-primary{background:#00a0d2;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#1e8cbe;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.mce-window .mce-btn.mce-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn.mce-primary:active{background:#1b7aa6;border-color:#005684;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#94cde7;background:#298cba;border-color:#1b607f;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 -1px 0 rgba(0,0,0,.1);cursor:default}#wp-link li,#wp-link-close,#wp-link-search-toggle,.mce-charmap td{cursor:pointer}.mce-toolbar .mce-ico,.qt-dfw{text-align:center;text-shadow:none}.mce-menubtn.mce-fixed-width button{overflow-x:hidden;text-overflow:ellipsis;width:110px}.mce-charmap{margin:3px}.mce-charmap td{padding:0;border-color:#dfdfdf}.mce-charmap td:hover{background:#f3f3f3}.mce-charmap td div{width:18px;height:22px;line-height:22px}.mce-toolbar .mce-btn .mce-open,.qt-dfw{line-height:20px}.mce-tooltip{margin-top:2px}.mce-tooltip-inner{-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2);color:#fff;font-size:12px}.mce-ico{font-family:tinymce,Arial}.mce-btn-small .mce-ico{font-family:tinymce-small,Arial}.mce-toolbar .mce-ico{color:#777;line-height:20px;width:20px;height:20px;margin:0;padding:0}.qt-dfw{color:#777;width:28px;height:26px}.mce-toolbar .mce-btn.mce-active .mce-open,.mce-toolbar .mce-btn:focus .mce-open,.mce-toolbar .mce-btn:hover .mce-open{border-right-color:#999}.mce-close,i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font:400 20px/1 dashicons;padding:0 0 0 2px;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:-2px}.qt-dfw{font:400 20px/1 dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}i.mce-i-bold:before{content:'\f200'}i.mce-i-italic:before{content:'\f201'}i.mce-i-bullist:before{content:'\f203'}i.mce-i-numlist:before{content:'\f204'}i.mce-i-blockquote:before{content:'\f205'}i.mce-i-alignleft:before{content:'\f206'}i.mce-i-aligncenter:before{content:'\f207'}i.mce-i-alignright:before{content:'\f208'}i.mce-i-link:before{content:'\f103'}i.mce-i-unlink:before{content:'\f225'}i.mce-i-wp_more:before{content:'\f209'}i.mce-i-strikethrough:before{content:'\f224'}i.mce-i-spellchecker:before{content:'\f210'}.qt-dfw:before,i.mce-i-dfw:before,i.mce-i-fullscreen:before,i.mce-i-wp_fullscreen:before{content:'\f211'}i.mce-i-wp_adv:before{content:'\f212'}i.mce-i-underline:before{content:'\f213'}i.mce-i-alignjustify:before{content:'\f214'}i.mce-i-backcolor:before,i.mce-i-forecolor:before{content:'\f215'}i.mce-i-pastetext:before{content:'\f217'}i.mce-i-removeformat:before{content:'\f218'}i.mce-i-charmap:before{content:'\f220'}i.mce-i-outdent:before{content:'\f221'}i.mce-i-indent:before{content:'\f222'}i.mce-i-undo:before{content:'\f171'}i.mce-i-redo:before{content:'\f172'}i.mce-i-help:before,i.mce-i-wp_help:before{content:'\f223'}i.mce-i-wp-media-library:before{content:'\f104'}i.mce-i-ltr:before{content:'\f320'}i.mce-i-wp_page:before{content:'\f105'}i.mce-i-hr:before{content:'\f460'}.mce-close:before{content:'\f158'}i.mce-i-wp_code:before{content:'\f475'}.rtl i.mce-i-outdent:before{content:'\f222'}.rtl i.mce-i-indent:before{content:'\f221'}.wp-editor-wrap{position:relative}.wp-editor-tools{position:relative;z-index:1}.wp-editor-tools:after{clear:both;content:'';display:table}.wp-editor-container{clear:both}.wp-editor-area{font-family:Consolas,Monaco,monospace;font-size:13px;padding:10px;margin:1px 0 0;line-height:150%;border:0;outline:0;display:block;resize:vertical;box-sizing:border-box}.rtl .wp-editor-area{font-family:Tahoma,Monaco,monospace}.locale-he-il .wp-editor-area{font-family:Arial,Monaco,monospace}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;-webkit-box-shadow:none;box-shadow:none}.wp-editor-tabs{float:left}.wp-switch-editor{float:right;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;position:relative;top:1px;background:#ebebeb;color:#777;cursor:pointer;font:13px/19px "Open Sans",sans-serif;height:20px;margin:5px 5px 0 0;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);outline:0;color:#23282d}.html-active .switch-html:focus,.tmce-active .switch-tmce:focus,.wp-switch-editor:active{-webkit-box-shadow:none;box-shadow:none}.wp-switch-editor:active{background-color:#f5f5f5;-webkit-box-shadow:none;box-shadow:none}.js .tmce-active .wp-editor-area{color:#fff}.tmce-active .quicktags-toolbar{display:none}.html-active .switch-html,.tmce-active .switch-tmce{background:#f5f5f5;color:#555;border-bottom-color:#f5f5f5}.wp-media-buttons{float:right}.wp-media-buttons .button{margin-left:5px;margin-bottom:4px;padding-right:7px;padding-left:7px}.wp-media-buttons .button:active{position:relative;top:1px;margin-top:-1px;margin-bottom:1px}.wp-media-buttons .insert-media{padding-right:5px}.wp-media-buttons a{text-decoration:none;color:#464646;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:18px;height:18px;vertical-align:text-top;margin:0 2px}#wp-link-close:before,#wp-link-search-toggle:after{vertical-align:top;speak:none;-moz-osx-font-smoothing:grayscale}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:'\f104'}.quicktags-toolbar{padding:3px;position:relative;border-bottom:1px solid #dedede;background:#f5f5f5;min-height:30px}.has-dfw .quicktags-toolbar{padding-left:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.quicktags-toolbar input[value=link]{text-decoration:underline}.quicktags-toolbar input[value=del]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:700}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;left:0;margin:5px 0 0 5px}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 0 0 4px}.mce-toolbar .mce-colorbutton .mce-preview{right:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;height:26px;line-height:24px}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px}#wp_delgallery:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_editimgbtn:hover{border-color:#555;background-color:#ccc}#wp-link-wrap{display:none;background-color:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-right:-250px;margin-top:-125px;position:fixed;top:50%;right:50%;z-index:100105;-webkit-transition:height .2s,margin-top .2s;transition:height .2s,margin-top .2s}#wp-link-backdrop{display:none;position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}#wp-link{position:relative;height:100%}#wp-link-wrap.search-panel-visible{height:500px;margin-top:-250px}#wp-link-wrap .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fcfcfc;border-bottom:1px solid #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 16px 0 36px;top:0;left:0;right:0}#wp-link-close{color:#666;padding:0;position:absolute;top:0;left:0;width:36px;height:36px;text-align:center;background:0 0;border:none}#wp-link-close:before{font:400 20px/36px dashicons;-webkit-font-smoothing:antialiased;width:36px;height:36px;content:'\f158'}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#link-selector{padding:0 16px 50px}#wp-link-wrap.search-panel-visible #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:36px;right:0;left:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link-search-toggle:after{display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;content:'\f140'}.search-panel-visible #wp-link-search-toggle:after{content:'\f142'}#wp-link input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wp-link #link-options{padding:8px 0 12px}#wp-link p.howto{margin:3px 0}#wp-link p.howto a{text-decoration:none;color:inherit}#wp-link label input[type=text]{margin-top:5px;width:70%}#wp-link #link-options label span,#wp-link #search-panel label span.search-label{display:inline-block;width:80px;text-align:left;padding-left:5px;max-width:24%;vertical-align:middle;word-wrap:break-word}#wp-link .link-search-field{float:right;width:250px;max-width:70%}#wp-link .link-search-wrapper{margin:5px 0 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:right;margin-top:4px}#wp-link .link-search-wrapper .spinner{margin-top:5px}#wp-link .link-target{padding:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wp-link .link-target label{max-width:70%}#wp-link .query-results{border:1px solid #dfdfdf;margin:0;background:#fff;overflow:auto;position:absolute;right:16px;left:16px;bottom:16px;top:172px}.has-text-field #wp-link .query-results{top:205px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 10px 4px 6px;position:relative}#wp-link .query-notice,#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link .query-notice{padding:0;background-color:#f7fcfe;color:#000}#wp-link .query-notice .query-notice-default,#wp-link .query-notice .query-notice-hint{display:block;padding:6px;border-right:4px solid #00a0d2}#wp-link .unselectable.no-matches-found{padding:0;border-bottom:1px solid #dfdfdf;background-color:#fef7f1}#wp-link .no-matches-found .item-title{display:block;padding:6px;border-right:4px solid #d54e21}#wp-link .query-results em{font-style:normal}#wp-link li:hover{background:#eaf2fa;color:#151515}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#32373c}#wp-link li.selected{background:#ddd;color:#32373c}#wp-link li.selected .item-title{font-weight:700}#wp-link li:last-child{border:none}#wp-link .item-title{display:inline-block;width:80%;width:-webkit-calc(100% - 68px);width:calc(100% - 68px);word-wrap:break-word}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;left:5px;top:5px}#wp-link #search-panel,#wp-link #search-results{display:none}#wp-link-wrap.search-panel-visible #search-panel{display:block}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #dfdfdf;position:absolute;bottom:0;right:0;left:0}#wp-link-cancel{line-height:25px;float:right}#wp-link-update{line-height:23px;float:left}#wp-link-submit{float:left;margin-bottom:0}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap.search-panel-visible .query-results{top:195px}#wp-link-wrap.search-panel-visible.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap.search-panel-visible #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-right:0;right:10px;left:10px;max-width:500px}}@media screen and (max-height:520px){#wp-link-wrap{-webkit-transition:none;transition:none}#wp-link-wrap.search-panel-visible{height:auto;margin-top:0;top:10px;bottom:10px}.search-panel-visible #link-selector{overflow:auto}.search-panel-visible #search-panel .query-results{position:static}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:-webkit-calc(100% - 92px);height:calc(100% - 92px);padding-bottom:2px}#search-panel .query-results{position:static}}div.wp-link-preview{float:right;margin:5px;max-width:694px;overflow:hidden;text-overflow:ellipsis}div.wp-link-preview a{color:#0073aa;text-decoration:underline;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;cursor:pointer}@media screen and (max-width:782px){div.wp-link-preview{margin:8px 5px 8px 0;max-width:70%;max-width:-webkit-calc(100% - 86px);max-width:calc(100% - 86px)}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}}
\ No newline at end of file
+#wp-link-wrap,.mce-window{-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3)}.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);-webkit-transition:none;transition:none}.mce-window{-webkit-border-radius:0;border-radius:0;box-shadow:0 3px 6px rgba(0,0,0,.3);-webkit-font-smoothing:subpixel-antialiased;-webkit-transition:none;transition:none}.mce-window .mce-container-body.mce-abs-layout{overflow:visible}.mce-window .mce-window-head{background:#fcfcfc;border-bottom:1px solid #dfdfdf;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#444;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 16px 0 36px}.mce-window .mce-window-head .mce-close{color:transparent;top:0;left:0;width:36px;height:36px;line-height:36px;text-align:center}.mce-window .mce-window-head .mce-close:before{font:400 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window .mce-window-head .mce-close:hover:before{color:#00a0d2}.mce-window .mce-window-head .mce-dragh{width:-webkit-calc(100% - 36px);width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #dfdfdf}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);-webkit-transition:.05s all ease-in-out;transition:.05s all ease-in-out}#wp-link .query-results:focus,.mce-checkbox:focus i.mce-i-checkbox,.mce-textbox.mce-focus,.mce-textbox:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}.mce-window .mce-wp-help{height:360px;width:460px;overflow:auto}.mce-window .mce-wp-help *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mce-window .mce-wp-help>.mce-container-body{width:auto!important}.mce-window .wp-editor-help{padding:10px 20px 0 10px}.mce-window .wp-editor-help h2,.mce-window .wp-editor-help p{margin:8px 0;white-space:normal;font-size:14px;font-weight:400}.mce-window .wp-editor-help table{width:100%;margin-bottom:20px}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:700;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:700;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-header td{font-weight:700;padding:0 5px}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}.mce-floatpanel.mce-popover.mce-bottom,.mce-menu{margin-top:2px}.mce-floatpanel .mce-arrow{display:none}.mce-menu .mce-container-body{min-width:160px}.mce-menu-item{border:none;margin-bottom:2px}.mce-menu-has-icons i.mce-ico{line-height:20px}div.mce-panel{border:0;background:#fff}.mce-panel.mce-menu{border:1px solid #ddd}div.mce-tab{line-height:13px}div.mce-toolbar-grp{border-bottom:1px solid #dedede;background:#f5f5f5;padding:0;position:relative}div.mce-inline-toolbar-grp{border:1px solid #a0a5aa;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);box-shadow:0 1px 3px rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:8px;position:absolute;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;max-width:98%;z-index:100100}div.mce-inline-toolbar-grp>div.mce-stack-layout{padding:1px}div.mce-inline-toolbar-grp.mce-arrow-up{margin-bottom:0;margin-top:8px}div.mce-inline-toolbar-grp:after,div.mce-inline-toolbar-grp:before{position:absolute;right:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.quicktags-toolbar,.wp-editor-tools,.wp-editor-wrap,.wp-switch-editor{position:relative}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a0a5aa;border-width:0 9px 9px;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a0a5aa;border-width:9px 9px 0;margin-right:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f5f5f5;border-width:0 8px 8px;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f5f5f5;border-width:8px 8px 0;margin-right:-8px}div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{right:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-full{left:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:32px}.mce-toolbar .mce-btn-group{margin:0}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px;margin:0}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;cursor:pointer}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;-webkit-border-radius:2px;border-radius:2px}.mce-toolbar .mce-btn-group .mce-btn:focus,.mce-toolbar .mce-btn-group .mce-btn:hover,.qt-dfw:focus,.qt-dfw:hover{background:#fafafa;border-color:#999;color:#23282d;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);outline:0}.mce-toolbar .mce-btn-group .mce-btn.mce-active,.mce-toolbar .mce-btn-group .mce-btn:active,.qt-dfw.active{background:#ebebeb;border-color:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3)}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#555}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover i.mce-ico{color:#555}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a0a5aa;background:0 0;border-color:#ddd;text-shadow:0 1px 0 #fff;-webkit-box-shadow:none;box-shadow:none}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:20px;padding-right:6px;padding-left:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-left:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;right:3px;height:3px;width:20px}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox{-webkit-border-radius:0;border-radius:0;direction:rtl;background:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #777;margin-right:2px;margin-left:2px}.mce-listbox i.mce-caret{left:4px}.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#32373c}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #32373c;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-left-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item-normal.mce-active,.mce-menu .mce-menu-item-preview.mce-active,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#0073aa}.mce-menu .mce-menu-item-preview.mce-active{border-right:none}.mce-menu .mce-menu-item-preview.mce-active .mce-text{color:#fff}.mce-menu .mce-menu-item.mce-disabled{cursor:default}.mce-menu .mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menubar{border-color:#e5e5e5;background:#fff;border-width:0 0 1px}.mce-menubar .mce-menubtn{margin:2px}.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus,.mce-menubar .mce-menubtn:hover{border-color:transparent;background:0 0}.mce-menubar .mce-menubtn:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-menu-item-sep:hover,div.mce-menu .mce-menu-item-sep{border-bottom:1px solid #ddd;height:0;margin:5px 0}.mce-menubtn span{margin-left:0;padding-right:3px}.mce-menu-has-icons i.mce-ico:before{margin-right:-2px}.mce-primary button,.mce-primary button i{text-align:center;color:#fff;text-shadow:none;padding:0;line-height:26px}.mce-window .mce-btn{color:#555;background:#f7f7f7;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0;cursor:pointer;border:1px solid #ccc;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08)}.mce-window .mce-btn::-moz-focus-inner{border-width:1px 0;border-style:solid none;border-color:transparent;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.mce-window .mce-btn.mce-disabled{color:#a0a5aa;border-color:#ddd;background:#f7f7f7;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default}.mce-window .mce-btn.mce-primary{background:#00a0d2;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#1e8cbe;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.mce-window .mce-btn.mce-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn.mce-primary:active{background:#1b7aa6;border-color:#005684;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#94cde7;background:#298cba;border-color:#1b607f;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 -1px 0 rgba(0,0,0,.1);cursor:default}.mce-toolbar .mce-ico,.qt-dfw{text-shadow:none;text-align:center}#wp-link li,#wp-link-close,#wp-link-search-toggle,.mce-charmap td{cursor:pointer}.mce-menubtn.mce-fixed-width button{overflow-x:hidden;text-overflow:ellipsis;width:110px}.mce-charmap{margin:3px}.mce-charmap td{padding:0;border-color:#dfdfdf}.mce-charmap td:hover{background:#f3f3f3}.mce-charmap td div{width:18px;height:22px;line-height:22px}.mce-toolbar .mce-btn .mce-open,.qt-dfw{line-height:20px}.mce-tooltip{margin-top:2px}.mce-tooltip-inner{-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2);color:#fff;font-size:12px}.mce-ico{font-family:tinymce,Arial}.mce-btn-small .mce-ico{font-family:tinymce-small,Arial}.mce-toolbar .mce-ico{color:#777;line-height:20px;width:20px;height:20px;margin:0;padding:0}.qt-dfw{color:#777;width:28px;height:26px}.mce-toolbar .mce-btn.mce-active .mce-open,.mce-toolbar .mce-btn:focus .mce-open,.mce-toolbar .mce-btn:hover .mce-open{border-right-color:#999}.mce-close,i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font:400 20px/1 dashicons;padding:0 0 0 2px;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:-2px}.qt-dfw{font:400 20px/1 dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}i.mce-i-bold:before{content:"\f200"}i.mce-i-italic:before{content:"\f201"}i.mce-i-bullist:before{content:"\f203"}i.mce-i-numlist:before{content:"\f204"}i.mce-i-blockquote:before{content:"\f205"}i.mce-i-alignleft:before{content:"\f206"}i.mce-i-aligncenter:before{content:"\f207"}i.mce-i-alignright:before{content:"\f208"}i.mce-i-link:before{content:"\f103"}i.mce-i-unlink:before{content:"\f225"}i.mce-i-wp_more:before{content:"\f209"}i.mce-i-strikethrough:before{content:"\f224"}i.mce-i-spellchecker:before{content:"\f210"}.qt-dfw:before,i.mce-i-dfw:before,i.mce-i-fullscreen:before,i.mce-i-wp_fullscreen:before{content:"\f211"}i.mce-i-wp_adv:before{content:"\f212"}i.mce-i-underline:before{content:"\f213"}i.mce-i-alignjustify:before{content:"\f214"}i.mce-i-backcolor:before,i.mce-i-forecolor:before{content:"\f215"}i.mce-i-pastetext:before{content:"\f217"}i.mce-i-removeformat:before{content:"\f218"}i.mce-i-charmap:before{content:"\f220"}i.mce-i-outdent:before{content:"\f221"}i.mce-i-indent:before{content:"\f222"}i.mce-i-undo:before{content:"\f171"}i.mce-i-redo:before{content:"\f172"}i.mce-i-help:before,i.mce-i-wp_help:before{content:"\f223"}i.mce-i-wp-media-library:before{content:"\f104"}i.mce-i-ltr:before{content:"\f320"}i.mce-i-wp_page:before{content:"\f105"}i.mce-i-hr:before{content:"\f460"}.mce-close:before{content:"\f158"}i.mce-i-wp_code:before{content:"\f475"}.rtl i.mce-i-outdent:before{content:"\f222"}.rtl i.mce-i-indent:before{content:"\f221"}.wp-editor-tools{z-index:1}.wp-editor-tools:after{clear:both;content:"";display:table}.wp-editor-container{clear:both}.wp-editor-area{font-family:Consolas,Monaco,monospace;font-size:13px;padding:10px;margin:1px 0 0;line-height:150%;border:0;outline:0;display:block;resize:vertical;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.rtl .wp-editor-area{font-family:Tahoma,Monaco,monospace}.locale-he-il .wp-editor-area{font-family:Arial,Monaco,monospace}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;-webkit-box-shadow:none;box-shadow:none}.wp-editor-tabs{float:left}.wp-switch-editor{float:right;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;top:1px;background:#ebebeb;color:#777;cursor:pointer;font:13px/19px "Open Sans",sans-serif;height:20px;margin:5px 5px 0 0;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);outline:0;color:#23282d}.html-active .switch-html:focus,.tmce-active .switch-tmce:focus,.wp-switch-editor:active{-webkit-box-shadow:none;box-shadow:none}.wp-switch-editor:active{background-color:#f5f5f5;-webkit-box-shadow:none;box-shadow:none}.js .tmce-active .wp-editor-area{color:#fff}.tmce-active .quicktags-toolbar{display:none}.html-active .switch-html,.tmce-active .switch-tmce{background:#f5f5f5;color:#555;border-bottom-color:#f5f5f5}.wp-media-buttons{float:right}.wp-media-buttons .button{margin-left:5px;margin-bottom:4px;padding-right:7px;padding-left:7px}.wp-media-buttons .button:active{position:relative;top:1px;margin-top:-1px;margin-bottom:1px}.wp-media-buttons .insert-media{padding-right:5px}.wp-media-buttons a{text-decoration:none;color:#464646;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:18px;height:18px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f104"}.quicktags-toolbar{padding:3px;border-bottom:1px solid #dedede;background:#f5f5f5;min-height:30px}.has-dfw .quicktags-toolbar{padding-left:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.quicktags-toolbar input[value=link]{text-decoration:underline}.quicktags-toolbar input[value=del]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:700}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;left:0;margin:5px 0 0 5px}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 0 0 4px}.mce-toolbar .mce-colorbutton .mce-preview{right:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-left:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;height:26px;line-height:24px}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px}#wp_delgallery:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_editimgbtn:hover{border-color:#555;background-color:#ccc}#wp-link-wrap{display:none;background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-right:-250px;margin-top:-125px;position:fixed;top:50%;right:50%;z-index:100105;-webkit-transition:height .2s,margin-top .2s;transition:height .2s,margin-top .2s}#wp-link-backdrop{display:none;position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}#wp-link{position:relative;height:100%}#wp-link-wrap.search-panel-visible{height:500px;margin-top:-250px}#wp-link-wrap .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fcfcfc;border-bottom:1px solid #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 16px 0 36px;top:0;left:0;right:0}#wp-link-close{color:#666;padding:0;position:absolute;top:0;left:0;width:36px;height:36px;text-align:center;background:0 0;border:none}#wp-link-close:before{font:400 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:36px;height:36px;content:"\f158"}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#link-selector{padding:0 16px 50px}#wp-link-wrap.search-panel-visible #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:36px;right:0;left:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link-search-toggle:after{display:inline-block;font:400 20px/1 dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f140"}.search-panel-visible #wp-link-search-toggle:after{content:"\f142"}#wp-link input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wp-link #link-options{padding:8px 0 12px}#wp-link p.howto{margin:3px 0}#wp-link p.howto a{text-decoration:none;color:inherit}#wp-link label input[type=text]{margin-top:5px;width:70%}#wp-link #link-options label span,#wp-link #search-panel label span.search-label{display:inline-block;width:80px;text-align:left;padding-left:5px;max-width:24%;vertical-align:middle;word-wrap:break-word}#wp-link .link-search-field{float:right;width:250px;max-width:70%}#wp-link .link-search-wrapper{margin:5px 0 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:right;margin-top:4px}#wp-link .link-search-wrapper .spinner{margin-top:5px}#wp-link .link-target{padding:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wp-link .link-target label{max-width:70%}#wp-link .query-results{border:1px solid #dfdfdf;margin:0;background:#fff;overflow:auto;position:absolute;right:16px;left:16px;bottom:16px;top:172px}.has-text-field #wp-link .query-results{top:205px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 10px 4px 6px;position:relative}#wp-link .query-notice,#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link .query-notice{padding:0;background-color:#f7fcfe;color:#000}#wp-link .query-notice .query-notice-default,#wp-link .query-notice .query-notice-hint{display:block;padding:6px;border-right:4px solid #00a0d2}#wp-link .unselectable.no-matches-found{padding:0;border-bottom:1px solid #dfdfdf;background-color:#fef7f1}#wp-link .no-matches-found .item-title{display:block;padding:6px;border-right:4px solid #d54e21}#wp-link .query-results em{font-style:normal}#wp-link li:hover{background:#eaf2fa;color:#151515}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#32373c}#wp-link li.selected{background:#ddd;color:#32373c}#wp-link li.selected .item-title{font-weight:700}#wp-link li:last-child{border:none}#wp-link .item-title{display:inline-block;width:80%;width:-webkit-calc(100% - 68px);width:calc(100% - 68px);word-wrap:break-word}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;left:5px;top:5px}#wp-link #search-panel,#wp-link #search-results{display:none}#wp-link-wrap.search-panel-visible #search-panel{display:block}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #dfdfdf;position:absolute;bottom:0;right:0;left:0}#wp-link-cancel{line-height:25px;float:right}#wp-link-update{line-height:23px;float:left}#wp-link-submit{float:left;margin-bottom:0}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap.search-panel-visible .query-results{top:195px}#wp-link-wrap.search-panel-visible.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap.search-panel-visible #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-right:0;right:10px;left:10px;max-width:500px}}@media screen and (max-height:520px){#wp-link-wrap{-webkit-transition:none;transition:none}#wp-link-wrap.search-panel-visible{height:auto;margin-top:0;top:10px;bottom:10px}.search-panel-visible #link-selector{overflow:auto}.search-panel-visible #search-panel .query-results{position:static}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:-webkit-calc(100% - 92px);height:calc(100% - 92px);padding-bottom:2px}#search-panel .query-results{position:static}}div.wp-link-preview{float:right;margin:5px;max-width:694px;overflow:hidden;text-overflow:ellipsis}div.wp-link-preview a{color:#0073aa;text-decoration:underline;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;cursor:pointer}@media screen and (max-width:782px){div.wp-link-preview{margin:8px 5px 8px 0;max-width:70%;max-width:-webkit-calc(100% - 86px);max-width:calc(100% - 86px)}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}}
\ No newline at end of file
index b89e93907eb43ada2129cef3a1871ef6b2dff946..6d99c9799b1d925f60740e772b8777eec9045e10 100644 (file)
@@ -62,7 +62,7 @@
 }
 
 .mce-window .mce-window-head .mce-close:before {
-       font: normal 20px/36px 'dashicons';
+       font: normal 20px/36px dashicons;
        text-align: center;
        color: #666;
        width: 36px;
@@ -261,7 +261,7 @@ div.mce-inline-toolbar-grp:after {
        height: 0;
        border-style: solid;
        border-color: transparent;
-       content: '';
+       content: "";
 }
 
 div.mce-inline-toolbar-grp.mce-arrow-up:before {
@@ -805,7 +805,7 @@ i.mce-i-hr,
 i.mce-i-wp_code,
 i.mce-i-dashicon,
 .mce-close {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        padding: 0;
        vertical-align: top;
        speak: none;
@@ -816,7 +816,7 @@ i.mce-i-dashicon,
 }
 
 .qt-dfw {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        vertical-align: top;
        speak: none;
        -webkit-font-smoothing: antialiased;
@@ -824,145 +824,145 @@ i.mce-i-dashicon,
 }
 
 i.mce-i-bold:before {
-       content: '\f200';
+       content: "\f200";
 }
 
 i.mce-i-italic:before {
-       content: '\f201';
+       content: "\f201";
 }
 
 i.mce-i-bullist:before {
-       content: '\f203';
+       content: "\f203";
 }
 
 i.mce-i-numlist:before {
-       content: '\f204';
+       content: "\f204";
 }
 
 i.mce-i-blockquote:before {
-       content: '\f205';
+       content: "\f205";
 }
 
 i.mce-i-alignleft:before {
-       content: '\f206';
+       content: "\f206";
 }
 
 i.mce-i-aligncenter:before {
-       content: '\f207';
+       content: "\f207";
 }
 
 i.mce-i-alignright:before {
-       content: '\f208';
+       content: "\f208";
 }
 
 i.mce-i-link:before {
-       content: '\f103';
+       content: "\f103";
 }
 
 i.mce-i-unlink:before {
-       content: '\f225';
+       content: "\f225";
 }
 
 i.mce-i-wp_more:before {
-       content: '\f209';
+       content: "\f209";
 }
 
 i.mce-i-strikethrough:before {
-       content: '\f224';
+       content: "\f224";
 }
 
 i.mce-i-spellchecker:before {
-       content: '\f210';
+       content: "\f210";
 }
 
 i.mce-i-fullscreen:before,
 i.mce-i-wp_fullscreen:before,
 i.mce-i-dfw:before,
 .qt-dfw:before {
-       content: '\f211';
+       content: "\f211";
 }
 
 i.mce-i-wp_adv:before {
-       content: '\f212';
+       content: "\f212";
 }
 
 i.mce-i-underline:before {
-       content: '\f213';
+       content: "\f213";
 }
 
 i.mce-i-alignjustify:before {
-       content: '\f214';
+       content: "\f214";
 }
 
 i.mce-i-forecolor:before,
 i.mce-i-backcolor:before {
-       content: '\f215';
+       content: "\f215";
 }
 
 i.mce-i-pastetext:before {
-       content: '\f217';
+       content: "\f217";
 }
 
 i.mce-i-removeformat:before {
-       content: '\f218';
+       content: "\f218";
 }
 
 i.mce-i-charmap:before {
-       content: '\f220';
+       content: "\f220";
 }
 
 i.mce-i-outdent:before {
-       content: '\f221';
+       content: "\f221";
 }
 
 i.mce-i-indent:before {
-       content: '\f222';
+       content: "\f222";
 }
 
 i.mce-i-undo:before {
-       content: '\f171';
+       content: "\f171";
 }
 
 i.mce-i-redo:before {
-       content: '\f172';
+       content: "\f172";
 }
 
 i.mce-i-help:before,
 i.mce-i-wp_help:before {
-       content: '\f223';
+       content: "\f223";
 }
 
 i.mce-i-wp-media-library:before {
-       content: '\f104';
+       content: "\f104";
 }
 
 i.mce-i-ltr:before {
-       content: '\f320';
+       content: "\f320";
 }
 
 i.mce-i-wp_page:before {
-       content: '\f105';
+       content: "\f105";
 }
 
 i.mce-i-hr:before {
-       content: '\f460';
+       content: "\f460";
 }
 
 .mce-close:before {
-       content: '\f158';
+       content: "\f158";
 }
 
 i.mce-i-wp_code:before {
-       content: '\f475';
+       content: "\f475";
 }
 
 /* RTL button icons */
 .rtl i.mce-i-outdent:before {
-       content: '\f222';
+       content: "\f222";
 }
 
 .rtl i.mce-i-indent:before {
-       content: '\f221';
+       content: "\f221";
 }
 
 /* Editors */
@@ -977,7 +977,7 @@ i.mce-i-wp_code:before {
 
 .wp-editor-tools:after {
        clear: both;
-       content: '';
+       content: "";
        display: table;
 }
 
@@ -1121,14 +1121,14 @@ i.mce-i-wp_code:before {
 }
 
 .wp-media-buttons .add_media span.wp-media-buttons-icon:before {
-       font: normal 18px/1 'dashicons';
+       font: normal 18px/1 dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
 }
 
 .wp-media-buttons .add_media span.wp-media-buttons-icon:before {
-       content: '\f104';
+       content: "\f104";
 }
 
 /* Quicktags */
@@ -1331,14 +1331,14 @@ i.mce-i-wp_code:before {
 }
 
 #wp-link-close:before {
-       font: normal 20px/36px 'dashicons';
+       font: normal 20px/36px dashicons;
        vertical-align: top;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
        width: 36px;
        height: 36px;
-       content: '\f158';
+       content: "\f158";
 }
 
 #wp-link-close:hover,
@@ -1379,16 +1379,16 @@ i.mce-i-wp_code:before {
 
 #wp-link-search-toggle:after {
        display: inline-block;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        vertical-align: top;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
-       content: '\f140';
+       content: "\f140";
 }
 
 .search-panel-visible #wp-link-search-toggle:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 #wp-link input[type="text"] {
index 7415d7754a6983ec06aacb405cd7fefe8fa3227e..46fe3d823acf68094212766d03b512b199013a8d 100644 (file)
@@ -1 +1 @@
-.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);-webkit-transition:none;transition:none}.mce-window{-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);-webkit-font-smoothing:subpixel-antialiased;-webkit-transition:none;transition:none}.mce-window .mce-container-body.mce-abs-layout{overflow:visible}.mce-window .mce-window-head{background:#fcfcfc;border-bottom:1px solid #dfdfdf;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#444;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}.mce-window .mce-window-head .mce-close{color:transparent;top:0;right:0;width:36px;height:36px;line-height:36px;text-align:center}.mce-window .mce-window-head .mce-close:before{font:400 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window .mce-window-head .mce-close:hover:before{color:#00a0d2}.mce-window .mce-window-head .mce-dragh{width:-webkit-calc(100% - 36px);width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #dfdfdf}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);-webkit-transition:.05s all ease-in-out;transition:.05s all ease-in-out}#wp-link .query-results:focus,.mce-checkbox:focus i.mce-i-checkbox,.mce-textbox.mce-focus,.mce-textbox:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}.mce-window .mce-wp-help{height:360px;width:460px;overflow:auto}.mce-window .mce-wp-help *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mce-window .mce-wp-help>.mce-container-body{width:auto!important}.mce-window .wp-editor-help{padding:10px 10px 0 20px}.mce-window .wp-editor-help h2,.mce-window .wp-editor-help p{margin:8px 0;white-space:normal;font-size:14px;font-weight:400}.mce-window .wp-editor-help table{width:100%;margin-bottom:20px}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:700;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:700;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-header td{font-weight:700;padding:0 5px}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}.mce-floatpanel.mce-popover.mce-bottom,.mce-menu{margin-top:2px}.mce-floatpanel .mce-arrow{display:none}.mce-menu .mce-container-body{min-width:160px}.mce-menu-item{border:none;margin-bottom:2px}.mce-menu-has-icons i.mce-ico{line-height:20px}div.mce-panel{border:0;background:#fff}.mce-panel.mce-menu{border:1px solid #ddd}div.mce-tab{line-height:13px}div.mce-toolbar-grp{border-bottom:1px solid #dedede;background:#f5f5f5;padding:0;position:relative}div.mce-inline-toolbar-grp{border:1px solid #a0a5aa;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);box-shadow:0 1px 3px rgba(0,0,0,.15);box-sizing:border-box;margin-bottom:8px;position:absolute;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;max-width:98%;z-index:100100}.wp-editor-area,div.mce-inline-toolbar-grp{-webkit-box-sizing:border-box;-moz-box-sizing:border-box}div.mce-inline-toolbar-grp>div.mce-stack-layout{padding:1px}div.mce-inline-toolbar-grp.mce-arrow-up{margin-bottom:0;margin-top:8px}div.mce-inline-toolbar-grp:after,div.mce-inline-toolbar-grp:before{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:''}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a0a5aa;border-width:0 9px 9px;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a0a5aa;border-width:9px 9px 0;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f5f5f5;border-width:0 8px 8px;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f5f5f5;border-width:8px 8px 0;margin-left:-8px}.mce-toolbar .mce-btn-group,div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before,div.mce-path{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{left:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-full{right:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:32px}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;cursor:pointer}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;-webkit-border-radius:2px;border-radius:2px}.mce-toolbar .mce-btn-group .mce-btn:focus,.mce-toolbar .mce-btn-group .mce-btn:hover,.qt-dfw:focus,.qt-dfw:hover{background:#fafafa;border-color:#999;color:#23282d;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);outline:0}.mce-toolbar .mce-btn-group .mce-btn.mce-active,.mce-toolbar .mce-btn-group .mce-btn:active,.qt-dfw.active{background:#ebebeb;border-color:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3)}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#555}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover i.mce-ico{color:#555}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a0a5aa;background:0 0;border-color:#ddd;text-shadow:0 1px 0 #fff;-webkit-box-shadow:none;box-shadow:none}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:20px;padding-left:6px;padding-right:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-right:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;left:3px;height:3px;width:20px}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox{-webkit-border-radius:0;border-radius:0;direction:ltr;background:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #777;margin-left:2px;margin-right:2px}.mce-listbox i.mce-caret{right:4px}.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#32373c}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #32373c;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-right-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item-normal.mce-active,.mce-menu .mce-menu-item-preview.mce-active,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#0073aa}.mce-menu .mce-menu-item-preview.mce-active{border-left:none}.mce-menu .mce-menu-item-preview.mce-active .mce-text{color:#fff}.mce-menu .mce-menu-item.mce-disabled{cursor:default}.mce-menu .mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menubar{border-color:#e5e5e5;background:#fff;border-width:0 0 1px}.mce-menubar .mce-menubtn{margin:2px}.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus,.mce-menubar .mce-menubtn:hover{border-color:transparent;background:0 0}.mce-menubar .mce-menubtn:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-menu-item-sep:hover,div.mce-menu .mce-menu-item-sep{border-bottom:1px solid #ddd;height:0;margin:5px 0}.mce-menubtn span{margin-right:0;padding-left:3px}.mce-menu-has-icons i.mce-ico:before{margin-left:-2px}.mce-primary button,.mce-primary button i{text-align:center;color:#fff;text-shadow:none;padding:0;line-height:26px}.mce-window .mce-btn{color:#555;background:#f7f7f7;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0;cursor:pointer;border:1px solid #ccc;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08)}.mce-window .mce-btn::-moz-focus-inner{border-width:1px 0;border-style:solid none;border-color:transparent;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.mce-window .mce-btn.mce-disabled{color:#a0a5aa;border-color:#ddd;background:#f7f7f7;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default}.mce-window .mce-btn.mce-primary{background:#00a0d2;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#1e8cbe;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.mce-window .mce-btn.mce-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn.mce-primary:active{background:#1b7aa6;border-color:#005684;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#94cde7;background:#298cba;border-color:#1b607f;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 -1px 0 rgba(0,0,0,.1);cursor:default}#wp-link li,#wp-link-close,#wp-link-search-toggle,.mce-charmap td{cursor:pointer}.mce-toolbar .mce-ico,.qt-dfw{text-align:center;text-shadow:none}.mce-menubtn.mce-fixed-width button{overflow-x:hidden;text-overflow:ellipsis;width:110px}.mce-charmap{margin:3px}.mce-charmap td{padding:0;border-color:#dfdfdf}.mce-charmap td:hover{background:#f3f3f3}.mce-charmap td div{width:18px;height:22px;line-height:22px}.mce-toolbar .mce-btn .mce-open,.qt-dfw{line-height:20px}.mce-tooltip{margin-top:2px}.mce-tooltip-inner{-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2);color:#fff;font-size:12px}.mce-ico{font-family:tinymce,Arial}.mce-btn-small .mce-ico{font-family:tinymce-small,Arial}.mce-toolbar .mce-ico{color:#777;line-height:20px;width:20px;height:20px;margin:0;padding:0}.qt-dfw{color:#777;width:28px;height:26px}.mce-toolbar .mce-btn.mce-active .mce-open,.mce-toolbar .mce-btn:focus .mce-open,.mce-toolbar .mce-btn:hover .mce-open{border-left-color:#999}.mce-close,i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font:400 20px/1 dashicons;padding:0 2px 0 0;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-left:-2px}.qt-dfw{font:400 20px/1 dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}i.mce-i-bold:before{content:'\f200'}i.mce-i-italic:before{content:'\f201'}i.mce-i-bullist:before{content:'\f203'}i.mce-i-numlist:before{content:'\f204'}i.mce-i-blockquote:before{content:'\f205'}i.mce-i-alignleft:before{content:'\f206'}i.mce-i-aligncenter:before{content:'\f207'}i.mce-i-alignright:before{content:'\f208'}i.mce-i-link:before{content:'\f103'}i.mce-i-unlink:before{content:'\f225'}i.mce-i-wp_more:before{content:'\f209'}i.mce-i-strikethrough:before{content:'\f224'}i.mce-i-spellchecker:before{content:'\f210'}.qt-dfw:before,i.mce-i-dfw:before,i.mce-i-fullscreen:before,i.mce-i-wp_fullscreen:before{content:'\f211'}i.mce-i-wp_adv:before{content:'\f212'}i.mce-i-underline:before{content:'\f213'}i.mce-i-alignjustify:before{content:'\f214'}i.mce-i-backcolor:before,i.mce-i-forecolor:before{content:'\f215'}i.mce-i-pastetext:before{content:'\f217'}i.mce-i-removeformat:before{content:'\f218'}i.mce-i-charmap:before{content:'\f220'}i.mce-i-outdent:before{content:'\f221'}i.mce-i-indent:before{content:'\f222'}i.mce-i-undo:before{content:'\f171'}i.mce-i-redo:before{content:'\f172'}i.mce-i-help:before,i.mce-i-wp_help:before{content:'\f223'}i.mce-i-wp-media-library:before{content:'\f104'}i.mce-i-ltr:before{content:'\f320'}i.mce-i-wp_page:before{content:'\f105'}i.mce-i-hr:before{content:'\f460'}.mce-close:before{content:'\f158'}i.mce-i-wp_code:before{content:'\f475'}.rtl i.mce-i-outdent:before{content:'\f222'}.rtl i.mce-i-indent:before{content:'\f221'}.wp-editor-wrap{position:relative}.wp-editor-tools{position:relative;z-index:1}.wp-editor-tools:after{clear:both;content:'';display:table}.wp-editor-container{clear:both}.wp-editor-area{font-family:Consolas,Monaco,monospace;font-size:13px;padding:10px;margin:1px 0 0;line-height:150%;border:0;outline:0;display:block;resize:vertical;box-sizing:border-box}.rtl .wp-editor-area{font-family:Tahoma,Monaco,monospace}.locale-he-il .wp-editor-area{font-family:Arial,Monaco,monospace}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;-webkit-box-shadow:none;box-shadow:none}.wp-editor-tabs{float:right}.wp-switch-editor{float:left;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;position:relative;top:1px;background:#ebebeb;color:#777;cursor:pointer;font:13px/19px "Open Sans",sans-serif;height:20px;margin:5px 0 0 5px;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);outline:0;color:#23282d}.html-active .switch-html:focus,.tmce-active .switch-tmce:focus,.wp-switch-editor:active{-webkit-box-shadow:none;box-shadow:none}.wp-switch-editor:active{background-color:#f5f5f5;-webkit-box-shadow:none;box-shadow:none}.js .tmce-active .wp-editor-area{color:#fff}.tmce-active .quicktags-toolbar{display:none}.html-active .switch-html,.tmce-active .switch-tmce{background:#f5f5f5;color:#555;border-bottom-color:#f5f5f5}.wp-media-buttons{float:left}.wp-media-buttons .button{margin-right:5px;margin-bottom:4px;padding-left:7px;padding-right:7px}.wp-media-buttons .button:active{position:relative;top:1px;margin-top:-1px;margin-bottom:1px}.wp-media-buttons .insert-media{padding-left:5px}.wp-media-buttons a{text-decoration:none;color:#464646;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:18px;height:18px;vertical-align:text-top;margin:0 2px}#wp-link-close:before,#wp-link-search-toggle:after{vertical-align:top;speak:none;-moz-osx-font-smoothing:grayscale}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:'\f104'}.quicktags-toolbar{padding:3px;position:relative;border-bottom:1px solid #dedede;background:#f5f5f5;min-height:30px}.has-dfw .quicktags-toolbar{padding-right:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.quicktags-toolbar input[value=link]{text-decoration:underline}.quicktags-toolbar input[value=del]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:700}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;right:0;margin:5px 5px 0 0}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 4px 0 0}.mce-toolbar .mce-colorbutton .mce-preview{left:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;height:26px;line-height:24px}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px}#wp_delgallery:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_editimgbtn:hover{border-color:#555;background-color:#ccc}#wp-link-wrap{display:none;background-color:#fff;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-left:-250px;margin-top:-125px;position:fixed;top:50%;left:50%;z-index:100105;-webkit-transition:height .2s,margin-top .2s;transition:height .2s,margin-top .2s}#wp-link-backdrop{display:none;position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}#wp-link{position:relative;height:100%}#wp-link-wrap.search-panel-visible{height:500px;margin-top:-250px}#wp-link-wrap .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fcfcfc;border-bottom:1px solid #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 36px 0 16px;top:0;right:0;left:0}#wp-link-close{color:#666;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center;background:0 0;border:none}#wp-link-close:before{font:400 20px/36px dashicons;-webkit-font-smoothing:antialiased;width:36px;height:36px;content:'\f158'}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#link-selector{padding:0 16px 50px}#wp-link-wrap.search-panel-visible #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:36px;left:0;right:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link-search-toggle:after{display:inline-block;font:400 20px/1 dashicons;-webkit-font-smoothing:antialiased;content:'\f140'}.search-panel-visible #wp-link-search-toggle:after{content:'\f142'}#wp-link input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wp-link #link-options{padding:8px 0 12px}#wp-link p.howto{margin:3px 0}#wp-link p.howto a{text-decoration:none;color:inherit}#wp-link label input[type=text]{margin-top:5px;width:70%}#wp-link #link-options label span,#wp-link #search-panel label span.search-label{display:inline-block;width:80px;text-align:right;padding-right:5px;max-width:24%;vertical-align:middle;word-wrap:break-word}#wp-link .link-search-field{float:left;width:250px;max-width:70%}#wp-link .link-search-wrapper{margin:5px 0 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:left;margin-top:4px}#wp-link .link-search-wrapper .spinner{margin-top:5px}#wp-link .link-target{padding:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wp-link .link-target label{max-width:70%}#wp-link .query-results{border:1px solid #dfdfdf;margin:0;background:#fff;overflow:auto;position:absolute;left:16px;right:16px;bottom:16px;top:172px}.has-text-field #wp-link .query-results{top:205px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 6px 4px 10px;position:relative}#wp-link .query-notice,#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link .query-notice{padding:0;background-color:#f7fcfe;color:#000}#wp-link .query-notice .query-notice-default,#wp-link .query-notice .query-notice-hint{display:block;padding:6px;border-left:4px solid #00a0d2}#wp-link .unselectable.no-matches-found{padding:0;border-bottom:1px solid #dfdfdf;background-color:#fef7f1}#wp-link .no-matches-found .item-title{display:block;padding:6px;border-left:4px solid #d54e21}#wp-link .query-results em{font-style:normal}#wp-link li:hover{background:#eaf2fa;color:#151515}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#32373c}#wp-link li.selected{background:#ddd;color:#32373c}#wp-link li.selected .item-title{font-weight:700}#wp-link li:last-child{border:none}#wp-link .item-title{display:inline-block;width:80%;width:-webkit-calc(100% - 68px);width:calc(100% - 68px);word-wrap:break-word}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;right:5px;top:5px}#wp-link #search-panel,#wp-link #search-results{display:none}#wp-link-wrap.search-panel-visible #search-panel{display:block}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #dfdfdf;position:absolute;bottom:0;left:0;right:0}#wp-link-cancel{line-height:25px;float:left}#wp-link-update{line-height:23px;float:right}#wp-link-submit{float:right;margin-bottom:0}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap.search-panel-visible .query-results{top:195px}#wp-link-wrap.search-panel-visible.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap.search-panel-visible #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-left:0;left:10px;right:10px;max-width:500px}}@media screen and (max-height:520px){#wp-link-wrap{-webkit-transition:none;transition:none}#wp-link-wrap.search-panel-visible{height:auto;margin-top:0;top:10px;bottom:10px}.search-panel-visible #link-selector{overflow:auto}.search-panel-visible #search-panel .query-results{position:static}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:-webkit-calc(100% - 92px);height:calc(100% - 92px);padding-bottom:2px}#search-panel .query-results{position:static}}div.wp-link-preview{float:left;margin:5px;max-width:694px;overflow:hidden;text-overflow:ellipsis}div.wp-link-preview a{color:#0073aa;text-decoration:underline;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;cursor:pointer}@media screen and (max-width:782px){div.wp-link-preview{margin:8px 0 8px 5px;max-width:70%;max-width:-webkit-calc(100% - 86px);max-width:calc(100% - 86px)}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}}
\ No newline at end of file
+#wp-link-wrap,.mce-window{-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3)}.mce-container,.mce-container *,.mce-widget,.mce-widget *{color:inherit;font-family:inherit}#mce-modal-block,#mce-modal-block.mce-fade{opacity:.7;filter:alpha(opacity=70);-webkit-transition:none;transition:none}.mce-window{-webkit-border-radius:0;border-radius:0;box-shadow:0 3px 6px rgba(0,0,0,.3);-webkit-font-smoothing:subpixel-antialiased;-webkit-transition:none;transition:none}.mce-window .mce-container-body.mce-abs-layout{overflow:visible}.mce-window .mce-window-head{background:#fcfcfc;border-bottom:1px solid #dfdfdf;padding:0;min-height:36px}.mce-window .mce-window-head .mce-title{color:#444;font-size:18px;font-weight:600;line-height:36px;margin:0;padding:0 36px 0 16px}.mce-window .mce-window-head .mce-close{color:transparent;top:0;right:0;width:36px;height:36px;line-height:36px;text-align:center}.mce-window .mce-window-head .mce-close:before{font:400 20px/36px dashicons;text-align:center;color:#666;width:36px;height:36px;display:block}.mce-window .mce-window-head .mce-close:hover:before{color:#00a0d2}.mce-window .mce-window-head .mce-dragh{width:-webkit-calc(100% - 36px);width:calc(100% - 36px)}.mce-window .mce-foot{border-top:1px solid #dfdfdf}#wp-link .query-results,.mce-checkbox i.mce-i-checkbox,.mce-textbox{border:1px solid #ddd;-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.07);box-shadow:inset 0 1px 2px rgba(0,0,0,.07);-webkit-transition:.05s all ease-in-out;transition:.05s all ease-in-out}#wp-link .query-results:focus,.mce-checkbox:focus i.mce-i-checkbox,.mce-textbox.mce-focus,.mce-textbox:focus{border-color:#5b9dd9;-webkit-box-shadow:0 0 2px rgba(30,140,190,.8);box-shadow:0 0 2px rgba(30,140,190,.8)}.mce-window .mce-wp-help{height:360px;width:460px;overflow:auto}.mce-window .mce-wp-help *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.mce-window .mce-wp-help>.mce-container-body{width:auto!important}.mce-window .wp-editor-help{padding:10px 10px 0 20px}.mce-window .wp-editor-help h2,.mce-window .wp-editor-help p{margin:8px 0;white-space:normal;font-size:14px;font-weight:400}.mce-window .wp-editor-help table{width:100%;margin-bottom:20px}.mce-window .wp-editor-help td,.mce-window .wp-editor-help th{font-size:13px;padding:5px;vertical-align:middle;word-wrap:break-word;white-space:normal}.mce-window .wp-editor-help th{font-weight:700;padding-bottom:0}.mce-window .wp-editor-help kbd{font-family:monospace;padding:2px 7px 3px;font-weight:700;margin:0;background:#eaeaea;background:rgba(0,0,0,.08)}.mce-window .wp-help-header td{font-weight:700;padding:0 5px}.mce-window .wp-help-th-center td:nth-child(odd),.mce-window .wp-help-th-center th:nth-child(odd){text-align:center}.mce-floatpanel.mce-popover,.mce-menu{border-color:rgba(0,0,0,.15);-webkit-border-radius:0;border-radius:0;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2)}.mce-floatpanel.mce-popover.mce-bottom,.mce-menu{margin-top:2px}.mce-floatpanel .mce-arrow{display:none}.mce-menu .mce-container-body{min-width:160px}.mce-menu-item{border:none;margin-bottom:2px}.mce-menu-has-icons i.mce-ico{line-height:20px}div.mce-panel{border:0;background:#fff}.mce-panel.mce-menu{border:1px solid #ddd}div.mce-tab{line-height:13px}div.mce-toolbar-grp{border-bottom:1px solid #dedede;background:#f5f5f5;padding:0;position:relative}div.mce-inline-toolbar-grp{border:1px solid #a0a5aa;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.15);box-shadow:0 1px 3px rgba(0,0,0,.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin-bottom:8px;position:absolute;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;max-width:98%;z-index:100100}div.mce-inline-toolbar-grp>div.mce-stack-layout{padding:1px}div.mce-inline-toolbar-grp.mce-arrow-up{margin-bottom:0;margin-top:8px}div.mce-inline-toolbar-grp:after,div.mce-inline-toolbar-grp:before{position:absolute;left:50%;display:block;width:0;height:0;border-style:solid;border-color:transparent;content:""}.quicktags-toolbar,.wp-editor-tools,.wp-editor-wrap,.wp-switch-editor{position:relative}div.mce-inline-toolbar-grp.mce-arrow-up:before{top:-9px;border-bottom-color:#a0a5aa;border-width:0 9px 9px;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-down:before{bottom:-9px;border-top-color:#a0a5aa;border-width:9px 9px 0;margin-left:-9px}div.mce-inline-toolbar-grp.mce-arrow-up:after{top:-8px;border-bottom-color:#f5f5f5;border-width:0 8px 8px;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-down:after{bottom:-8px;border-top-color:#f5f5f5;border-width:8px 8px 0;margin-left:-8px}div.mce-inline-toolbar-grp.mce-arrow-left:after,div.mce-inline-toolbar-grp.mce-arrow-left:before{margin:0}div.mce-inline-toolbar-grp.mce-arrow-left:before{left:20px}div.mce-inline-toolbar-grp.mce-arrow-left:after{left:21px}div.mce-inline-toolbar-grp.mce-arrow-right:after,div.mce-inline-toolbar-grp.mce-arrow-right:before{left:auto;margin:0}div.mce-inline-toolbar-grp.mce-arrow-right:before{right:20px}div.mce-inline-toolbar-grp.mce-arrow-right:after{right:21px}div.mce-inline-toolbar-grp.mce-arrow-full{right:0}div.mce-inline-toolbar-grp.mce-arrow-full>div{width:100%;overflow-x:auto}div.mce-toolbar-grp>div{padding:3px}.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:32px}.mce-toolbar .mce-btn-group{margin:0}div.mce-statusbar{border-top:1px solid #e5e5e5}div.mce-path{padding:2px 10px;margin:0}.mce-path,.mce-path .mce-divider,.mce-path-item{font-size:12px}.mce-toolbar .mce-btn,.qt-dfw{border-color:transparent;background:0 0;-webkit-box-shadow:none;box-shadow:none;text-shadow:none;cursor:pointer}.mce-toolbar .mce-btn-group .mce-btn,.qt-dfw{border:1px solid transparent;margin:2px;-webkit-border-radius:2px;border-radius:2px}.mce-toolbar .mce-btn-group .mce-btn:focus,.mce-toolbar .mce-btn-group .mce-btn:hover,.qt-dfw:focus,.qt-dfw:hover{background:#fafafa;border-color:#999;color:#23282d;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);outline:0}.mce-toolbar .mce-btn-group .mce-btn.mce-active,.mce-toolbar .mce-btn-group .mce-btn:active,.qt-dfw.active{background:#ebebeb;border-color:#999;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.3)}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover{border-color:#555}.mce-toolbar .mce-btn-group .mce-btn.mce-active:hover i.mce-ico{color:#555}.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:focus,.mce-toolbar .mce-btn-group .mce-btn.mce-disabled:hover{color:#a0a5aa;background:0 0;border-color:#ddd;text-shadow:0 1px 0 #fff;-webkit-box-shadow:none;box-shadow:none}.mce-toolbar .mce-btn-group .mce-first,.mce-toolbar .mce-btn-group .mce-last{border-color:transparent}.mce-toolbar .mce-btn button,.qt-dfw{padding:2px 3px;line-height:normal}.mce-toolbar .mce-listbox button{font-size:13px;line-height:20px;padding-left:6px;padding-right:20px}.mce-toolbar .mce-btn i{text-shadow:none}.mce-toolbar .mce-btn-group>div{white-space:normal}.mce-toolbar .mce-colorbutton .mce-open{border-right:0}.mce-toolbar .mce-colorbutton .mce-preview{margin:0;padding:0;top:auto;bottom:2px;left:3px;height:3px;width:20px}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox{-webkit-border-radius:0;border-radius:0;direction:ltr;background:#fff;border:1px solid #ddd;-webkit-box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px -1px rgba(0,0,0,.2)}.mce-toolbar .mce-btn-group .mce-btn.mce-listbox:hover{border-color:#b4b9be}.mce-panel .mce-btn i.mce-caret{border-top:6px solid #777;margin-left:2px;margin-right:2px}.mce-listbox i.mce-caret{right:4px}.mce-panel .mce-btn:hover i.mce-caret{border-top-color:#32373c}.mce-panel .mce-active i.mce-caret{border-top:0;border-bottom:6px solid #32373c;margin-top:7px}.mce-listbox.mce-active i.mce-caret{margin-top:-3px}.mce-toolbar .mce-splitbtn:hover .mce-open{border-right-color:transparent}.mce-toolbar .mce-splitbtn .mce-open.mce-active{background:0 0;outline:0}.mce-menu .mce-menu-item-normal.mce-active,.mce-menu .mce-menu-item-preview.mce-active,.mce-menu .mce-menu-item.mce-selected,.mce-menu .mce-menu-item:focus,.mce-menu .mce-menu-item:hover{background:#0073aa}.mce-menu .mce-menu-item-preview.mce-active{border-left:none}.mce-menu .mce-menu-item-preview.mce-active .mce-text{color:#fff}.mce-menu .mce-menu-item.mce-disabled{cursor:default}.mce-menu .mce-menu-item.mce-disabled:hover{background:#ccc}.mce-menubar{border-color:#e5e5e5;background:#fff;border-width:0 0 1px}.mce-menubar .mce-menubtn{margin:2px}.mce-menubar .mce-menubtn.mce-active,.mce-menubar .mce-menubtn:focus,.mce-menubar .mce-menubtn:hover{border-color:transparent;background:0 0}.mce-menubar .mce-menubtn:focus{color:#124964;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-menu-item-sep:hover,div.mce-menu .mce-menu-item-sep{border-bottom:1px solid #ddd;height:0;margin:5px 0}.mce-menubtn span{margin-right:0;padding-left:3px}.mce-menu-has-icons i.mce-ico:before{margin-left:-2px}.mce-primary button,.mce-primary button i{text-align:center;color:#fff;text-shadow:none;padding:0;line-height:26px}.mce-window .mce-btn{color:#555;background:#f7f7f7;text-decoration:none;font-size:13px;line-height:26px;height:28px;margin:0;padding:0;cursor:pointer;border:1px solid #ccc;-webkit-appearance:none;-webkit-border-radius:3px;border-radius:3px;white-space:nowrap;-webkit-box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08);box-shadow:inset 0 1px 0 #fff,0 1px 0 rgba(0,0,0,.08)}.mce-window .mce-btn::-moz-focus-inner{border-width:1px 0;border-style:solid none;border-color:transparent;padding:0}.mce-window .mce-btn:focus,.mce-window .mce-btn:hover{background:#fafafa;border-color:#999;color:#23282d}.mce-window .mce-btn:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn:active{background:#eee;border-color:#999;color:#32373c;-webkit-box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5);box-shadow:inset 0 2px 5px -3px rgba(0,0,0,.5)}.mce-window .mce-btn.mce-disabled{color:#a0a5aa;border-color:#ddd;background:#f7f7f7;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 1px 0 #fff;cursor:default}.mce-window .mce-btn.mce-primary{background:#00a0d2;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);box-shadow:inset 0 1px 0 rgba(120,200,230,.5),0 1px 0 rgba(0,0,0,.15);color:#fff;text-decoration:none}.mce-window .mce-btn.mce-primary:focus,.mce-window .mce-btn.mce-primary:hover{background:#1e8cbe;border-color:#0073aa;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff}.mce-window .mce-btn.mce-primary:focus{border-color:#0e3950;-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:inset 0 1px 0 rgba(120,200,230,.6),0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}.mce-window .mce-btn.mce-primary:active{background:#1b7aa6;border-color:#005684;color:rgba(255,255,255,.95);-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);box-shadow:inset 0 1px 0 rgba(0,0,0,.1);vertical-align:top}.mce-window .mce-btn.mce-primary.mce-disabled{color:#94cde7;background:#298cba;border-color:#1b607f;-webkit-box-shadow:none;box-shadow:none;text-shadow:0 -1px 0 rgba(0,0,0,.1);cursor:default}.mce-toolbar .mce-ico,.qt-dfw{text-shadow:none;text-align:center}#wp-link li,#wp-link-close,#wp-link-search-toggle,.mce-charmap td{cursor:pointer}.mce-menubtn.mce-fixed-width button{overflow-x:hidden;text-overflow:ellipsis;width:110px}.mce-charmap{margin:3px}.mce-charmap td{padding:0;border-color:#dfdfdf}.mce-charmap td:hover{background:#f3f3f3}.mce-charmap td div{width:18px;height:22px;line-height:22px}.mce-toolbar .mce-btn .mce-open,.qt-dfw{line-height:20px}.mce-tooltip{margin-top:2px}.mce-tooltip-inner{-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 3px 5px rgba(0,0,0,.2);box-shadow:0 3px 5px rgba(0,0,0,.2);color:#fff;font-size:12px}.mce-ico{font-family:tinymce,Arial}.mce-btn-small .mce-ico{font-family:tinymce-small,Arial}.mce-toolbar .mce-ico{color:#777;line-height:20px;width:20px;height:20px;margin:0;padding:0}.qt-dfw{color:#777;width:28px;height:26px}.mce-toolbar .mce-btn.mce-active .mce-open,.mce-toolbar .mce-btn:focus .mce-open,.mce-toolbar .mce-btn:hover .mce-open{border-left-color:#999}.mce-close,i.mce-i-aligncenter,i.mce-i-alignjustify,i.mce-i-alignleft,i.mce-i-alignright,i.mce-i-backcolor,i.mce-i-blockquote,i.mce-i-bold,i.mce-i-bullist,i.mce-i-charmap,i.mce-i-dashicon,i.mce-i-dfw,i.mce-i-forecolor,i.mce-i-fullscreen,i.mce-i-help,i.mce-i-hr,i.mce-i-indent,i.mce-i-italic,i.mce-i-link,i.mce-i-ltr,i.mce-i-numlist,i.mce-i-outdent,i.mce-i-pastetext,i.mce-i-pasteword,i.mce-i-redo,i.mce-i-removeformat,i.mce-i-spellchecker,i.mce-i-strikethrough,i.mce-i-underline,i.mce-i-undo,i.mce-i-unlink,i.mce-i-wp-media-library,i.mce-i-wp_adv,i.mce-i-wp_code,i.mce-i-wp_fullscreen,i.mce-i-wp_help,i.mce-i-wp_more,i.mce-i-wp_page{font:400 20px/1 dashicons;padding:0 2px 0 0;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-left:-2px}.qt-dfw{font:400 20px/1 dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}i.mce-i-bold:before{content:"\f200"}i.mce-i-italic:before{content:"\f201"}i.mce-i-bullist:before{content:"\f203"}i.mce-i-numlist:before{content:"\f204"}i.mce-i-blockquote:before{content:"\f205"}i.mce-i-alignleft:before{content:"\f206"}i.mce-i-aligncenter:before{content:"\f207"}i.mce-i-alignright:before{content:"\f208"}i.mce-i-link:before{content:"\f103"}i.mce-i-unlink:before{content:"\f225"}i.mce-i-wp_more:before{content:"\f209"}i.mce-i-strikethrough:before{content:"\f224"}i.mce-i-spellchecker:before{content:"\f210"}.qt-dfw:before,i.mce-i-dfw:before,i.mce-i-fullscreen:before,i.mce-i-wp_fullscreen:before{content:"\f211"}i.mce-i-wp_adv:before{content:"\f212"}i.mce-i-underline:before{content:"\f213"}i.mce-i-alignjustify:before{content:"\f214"}i.mce-i-backcolor:before,i.mce-i-forecolor:before{content:"\f215"}i.mce-i-pastetext:before{content:"\f217"}i.mce-i-removeformat:before{content:"\f218"}i.mce-i-charmap:before{content:"\f220"}i.mce-i-outdent:before{content:"\f221"}i.mce-i-indent:before{content:"\f222"}i.mce-i-undo:before{content:"\f171"}i.mce-i-redo:before{content:"\f172"}i.mce-i-help:before,i.mce-i-wp_help:before{content:"\f223"}i.mce-i-wp-media-library:before{content:"\f104"}i.mce-i-ltr:before{content:"\f320"}i.mce-i-wp_page:before{content:"\f105"}i.mce-i-hr:before{content:"\f460"}.mce-close:before{content:"\f158"}i.mce-i-wp_code:before{content:"\f475"}.rtl i.mce-i-outdent:before{content:"\f222"}.rtl i.mce-i-indent:before{content:"\f221"}.wp-editor-tools{z-index:1}.wp-editor-tools:after{clear:both;content:"";display:table}.wp-editor-container{clear:both}.wp-editor-area{font-family:Consolas,Monaco,monospace;font-size:13px;padding:10px;margin:1px 0 0;line-height:150%;border:0;outline:0;display:block;resize:vertical;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.rtl .wp-editor-area{font-family:Tahoma,Monaco,monospace}.locale-he-il .wp-editor-area{font-family:Arial,Monaco,monospace}.wp-editor-container textarea.wp-editor-area{width:100%;margin:0;-webkit-box-shadow:none;box-shadow:none}.wp-editor-tabs{float:right}.wp-switch-editor{float:left;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;top:1px;background:#ebebeb;color:#777;cursor:pointer;font:13px/19px "Open Sans",sans-serif;height:20px;margin:5px 0 0 5px;padding:3px 8px 4px;border:1px solid #e5e5e5}.wp-switch-editor:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);outline:0;color:#23282d}.html-active .switch-html:focus,.tmce-active .switch-tmce:focus,.wp-switch-editor:active{-webkit-box-shadow:none;box-shadow:none}.wp-switch-editor:active{background-color:#f5f5f5;-webkit-box-shadow:none;box-shadow:none}.js .tmce-active .wp-editor-area{color:#fff}.tmce-active .quicktags-toolbar{display:none}.html-active .switch-html,.tmce-active .switch-tmce{background:#f5f5f5;color:#555;border-bottom-color:#f5f5f5}.wp-media-buttons{float:left}.wp-media-buttons .button{margin-right:5px;margin-bottom:4px;padding-left:7px;padding-right:7px}.wp-media-buttons .button:active{position:relative;top:1px;margin-top:-1px;margin-bottom:1px}.wp-media-buttons .insert-media{padding-left:5px}.wp-media-buttons a{text-decoration:none;color:#464646;font-size:12px}.wp-media-buttons img{padding:0 4px;vertical-align:middle}.wp-media-buttons span.wp-media-buttons-icon{display:inline-block;width:18px;height:18px;vertical-align:text-top;margin:0 2px}.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}.wp-media-buttons .add_media span.wp-media-buttons-icon:before{font:400 18px/1 dashicons;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f104"}.quicktags-toolbar{padding:3px;border-bottom:1px solid #dedede;background:#f5f5f5;min-height:30px}.has-dfw .quicktags-toolbar{padding-right:35px}.wp-core-ui .quicktags-toolbar input.button.button-small{margin:2px}.quicktags-toolbar input[value=link]{text-decoration:underline}.quicktags-toolbar input[value=del]{text-decoration:line-through}.quicktags-toolbar input[value="i"]{font-style:italic}.quicktags-toolbar input[value="b"]{font-weight:700}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw,.qt-dfw{position:absolute;top:0;right:0;margin:5px 5px 0 0}.qt-fullscreen{position:static;margin:2px}@media screen and (max-width:782px){.mce-toolbar .mce-btn button,.qt-dfw{padding:6px 7px}.mce-toolbar .mce-btn-group .mce-btn{margin:1px}.qt-dfw{width:36px;height:34px}.mce-toolbar .mce-btn-group .mce-btn.mce-wp-dfw{margin:4px 4px 0 0}.mce-toolbar .mce-colorbutton .mce-preview{left:8px;bottom:6px}.mce-window .mce-btn{padding:2px 0}.has-dfw .quicktags-toolbar,.has-dfw div.mce-toolbar-grp .mce-toolbar.mce-first{padding-right:40px}}@media screen and (min-width:782px){.wp-core-ui .quicktags-toolbar input.button.button-small{font-size:12px;height:26px;line-height:24px}}#wp_editbtns,#wp_gallerybtns{padding:2px;position:absolute;display:none;z-index:100020}#wp_delgallery,#wp_delimgbtn,#wp_editgallery,#wp_editimgbtn{border-color:#999;background-color:#eee;margin:2px;padding:2px;border-width:1px;border-style:solid;-webkit-border-radius:3px;border-radius:3px}#wp_delgallery:hover,#wp_delimgbtn:hover,#wp_editgallery:hover,#wp_editimgbtn:hover{border-color:#555;background-color:#ccc}#wp-link-wrap{display:none;background-color:#fff;box-shadow:0 3px 6px rgba(0,0,0,.3);width:500px;overflow:hidden;margin-left:-250px;margin-top:-125px;position:fixed;top:50%;left:50%;z-index:100105;-webkit-transition:height .2s,margin-top .2s;transition:height .2s,margin-top .2s}#wp-link-backdrop{display:none;position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:100100}#wp-link{position:relative;height:100%}#wp-link-wrap.search-panel-visible{height:500px;margin-top:-250px}#wp-link-wrap .wp-link-text-field{display:none}#wp-link-wrap.has-text-field .wp-link-text-field{display:block}#link-modal-title{background:#fcfcfc;border-bottom:1px solid #dfdfdf;height:36px;font-size:18px;font-weight:600;line-height:36px;padding:0 36px 0 16px;top:0;right:0;left:0}#wp-link-close{color:#666;padding:0;position:absolute;top:0;right:0;width:36px;height:36px;text-align:center;background:0 0;border:none}#wp-link-close:before{font:400 20px/36px dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:36px;height:36px;content:"\f158"}#wp-link-close:focus,#wp-link-close:hover{color:#00a0d2}#wp-link-close:focus{outline:0;-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8)}#link-selector{padding:0 16px 50px}#wp-link-wrap.search-panel-visible #link-selector{-webkit-overflow-scrolling:touch;padding:0 16px;position:absolute;top:36px;left:0;right:0;bottom:44px}#wp-link ol,#wp-link ul{list-style:none;margin:0;padding:0}#wp-link-search-toggle:after{display:inline-block;font:400 20px/1 dashicons;vertical-align:top;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f140"}.search-panel-visible #wp-link-search-toggle:after{content:"\f142"}#wp-link input[type=text]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#wp-link #link-options{padding:8px 0 12px}#wp-link p.howto{margin:3px 0}#wp-link p.howto a{text-decoration:none;color:inherit}#wp-link label input[type=text]{margin-top:5px;width:70%}#wp-link #link-options label span,#wp-link #search-panel label span.search-label{display:inline-block;width:80px;text-align:right;padding-right:5px;max-width:24%;vertical-align:middle;word-wrap:break-word}#wp-link .link-search-field{float:left;width:250px;max-width:70%}#wp-link .link-search-wrapper{margin:5px 0 9px;display:block;overflow:hidden}#wp-link .link-search-wrapper span{float:left;margin-top:4px}#wp-link .link-search-wrapper .spinner{margin-top:5px}#wp-link .link-target{padding:3px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#wp-link .link-target label{max-width:70%}#wp-link .query-results{border:1px solid #dfdfdf;margin:0;background:#fff;overflow:auto;position:absolute;left:16px;right:16px;bottom:16px;top:172px}.has-text-field #wp-link .query-results{top:205px}#wp-link li{clear:both;margin-bottom:0;border-bottom:1px solid #f1f1f1;color:#32373c;padding:4px 6px 4px 10px;position:relative}#wp-link .query-notice,#wp-link li.unselectable{border-bottom:1px solid #dfdfdf}#wp-link .query-notice{padding:0;background-color:#f7fcfe;color:#000}#wp-link .query-notice .query-notice-default,#wp-link .query-notice .query-notice-hint{display:block;padding:6px;border-left:4px solid #00a0d2}#wp-link .unselectable.no-matches-found{padding:0;border-bottom:1px solid #dfdfdf;background-color:#fef7f1}#wp-link .no-matches-found .item-title{display:block;padding:6px;border-left:4px solid #d54e21}#wp-link .query-results em{font-style:normal}#wp-link li:hover{background:#eaf2fa;color:#151515}#wp-link li.unselectable:hover{background:#fff;cursor:auto;color:#32373c}#wp-link li.selected{background:#ddd;color:#32373c}#wp-link li.selected .item-title{font-weight:700}#wp-link li:last-child{border:none}#wp-link .item-title{display:inline-block;width:80%;width:-webkit-calc(100% - 68px);width:calc(100% - 68px);word-wrap:break-word}#wp-link .item-info{text-transform:uppercase;color:#666;font-size:11px;position:absolute;right:5px;top:5px}#wp-link #search-panel,#wp-link #search-results{display:none}#wp-link-wrap.search-panel-visible #search-panel{display:block}#wp-link .river-waiting{display:none;padding:10px 0}#wp-link .submitbox{padding:8px 16px;background:#fcfcfc;border-top:1px solid #dfdfdf;position:absolute;bottom:0;left:0;right:0}#wp-link-cancel{line-height:25px;float:left}#wp-link-update{line-height:23px;float:right}#wp-link-submit{float:right;margin-bottom:0}@media screen and (max-width:782px){#wp-link-wrap{margin-top:-140px}#wp-link-wrap.search-panel-visible .query-results{top:195px}#wp-link-wrap.search-panel-visible.has-text-field .query-results{top:235px}#link-selector{padding:0 16px 60px}#wp-link-wrap.search-panel-visible #link-selector{bottom:52px}#wp-link-cancel{line-height:32px}}@media screen and (max-width:520px){#wp-link-wrap{width:auto;margin-left:0;left:10px;right:10px;max-width:500px}}@media screen and (max-height:520px){#wp-link-wrap{-webkit-transition:none;transition:none}#wp-link-wrap.search-panel-visible{height:auto;margin-top:0;top:10px;bottom:10px}.search-panel-visible #link-selector{overflow:auto}.search-panel-visible #search-panel .query-results{position:static}}@media screen and (max-height:290px){#wp-link-wrap{height:auto;margin-top:0;top:10px;bottom:10px}#link-selector{overflow:auto;height:-webkit-calc(100% - 92px);height:calc(100% - 92px);padding-bottom:2px}#search-panel .query-results{position:static}}div.wp-link-preview{float:left;margin:5px;max-width:694px;overflow:hidden;text-overflow:ellipsis}div.wp-link-preview a{color:#0073aa;text-decoration:underline;-webkit-transition-property:border,background,color;transition-property:border,background,color;-webkit-transition-duration:.05s;transition-duration:.05s;-webkit-transition-timing-function:ease-in-out;transition-timing-function:ease-in-out;cursor:pointer}@media screen and (max-width:782px){div.wp-link-preview{margin:8px 0 8px 5px;max-width:70%;max-width:-webkit-calc(100% - 86px);max-width:calc(100% - 86px)}}.mce-fullscreen{z-index:100010}.rtl .quicktags-toolbar input,.rtl .wp-switch-editor{font-family:Tahoma,sans-serif}.mce-rtl .mce-flow-layout .mce-flow-layout-item>div{direction:rtl}.mce-rtl .mce-listbox i.mce-caret{left:6px}html:lang(he-il) .rtl .quicktags-toolbar input,html:lang(he-il) .rtl .wp-switch-editor{font-family:Arial,sans-serif}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.wp-media-buttons .add_media span.wp-media-buttons-icon{background:0 0}}
\ No newline at end of file
index 2a6107029dcbff0ea019dd7214f14adcc647b10b..a46ba40f912859b0ef40b8e88e3a78cc98bbcd1c 100644 (file)
 }
 
 .ui-dialog-titlebar-close:before {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        vertical-align: top;
        speak: none;
        -webkit-font-smoothing: antialiased;
index bf7be0aea8eba0ef7b2e99f1b8f679611a68b586..173f26694fba5a4ad5cdaaa58e9f05c6c7bc71d6 100644 (file)
@@ -7,7 +7,7 @@
  * http://jquery.org/license
  *
  * http://api.jqueryui.com/category/theming/
- */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-button,.ui-helper-reset{text-decoration:none;margin:0}.ui-helper-zfix,.ui-widget-overlay{width:100%;height:100%}.ui-helper-reset{padding:0;border:0;outline:0;line-height:1.3;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{top:0;right:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}/*!
+ */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-button,.ui-helper-reset{text-decoration:none;margin:0}.ui-helper-reset{padding:0;border:0;outline:0;line-height:1.3;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;right:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{width:100%;height:100%}/*!
  * jQuery UI Resizable 1.11.4
  * http://jqueryui.com
  *
index 091cb7480c870c7c2b09468c76e11b6f2ae9d980..8b6971d4bc234c3d7b8cf514805174c1db0e0717 100644 (file)
 }
 
 .ui-dialog-titlebar-close:before {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        vertical-align: top;
        speak: none;
        -webkit-font-smoothing: antialiased;
index f60030dfcb45f1b841cb6f150444da134cb94665..61a10bd136797d0c7875d8dbb636eed8a7fc7cc9 100644 (file)
@@ -7,7 +7,7 @@
  * http://jquery.org/license
  *
  * http://api.jqueryui.com/category/theming/
- */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-button,.ui-helper-reset{text-decoration:none;margin:0}.ui-helper-zfix,.ui-widget-overlay{width:100%;height:100%}.ui-helper-reset{padding:0;border:0;outline:0;line-height:1.3;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}/*!
+ */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-button,.ui-helper-reset{text-decoration:none;margin:0}.ui-helper-reset{padding:0;border:0;outline:0;line-height:1.3;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{width:100%;height:100%}/*!
  * jQuery UI Resizable 1.11.4
  * http://jqueryui.com
  *
index abab3daedf103f7079629d45c62ac03beed56bd5..b2d60b81a078a741e27fffb71131c900a5153b15 100644 (file)
@@ -7,12 +7,12 @@
        box-sizing: content-box;
 }
 
-.media-frame input,
-.media-frame select,
-.media-frame textarea {
-    -webkit-box-sizing: border-box;
-    -moz-box-sizing: border-box;
-    box-sizing: border-box;
+.media-modal input,
+.media-modal select,
+.media-modal textarea {
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
 }
 
 .media-modal,
 
 .media-frame a {
        border-bottom: none;
-       color: #21759b;
+       color: #0073aa;
+}
+
+.media-frame a:hover,
+.media-frame a:active {
+       color: #00a0d2;
 }
 
-.media-frame a:hover {
-       color: #d54e21;
+.media-frame a:focus {
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       outline: none;
+       color: #124964;
 }
 
 .media-frame a.button {
 }
 
 .media-modal-close .media-modal-icon:before {
-       content: '\f158';
-       font: normal 20px/1 'dashicons';
+       content: "\f158";
+       font: normal 20px/1 dashicons;
        speak: none;
        vertical-align: middle;
        -webkit-font-smoothing: antialiased;
        -webkit-font-smoothing: subpixel-antialiased;
 }
 
+.media-modal-content .media-frame select.attachment-filters {
+       margin-top: 11px;
+       margin-left: 2%;
+       width: 42%;
+       width: -webkit-calc(48% - 12px);
+       width: calc(48% - 12px);
+}
+
+.media-modal-content .attachments-browser .media-toolbar-secondary {
+       width: 66%;
+}
+
+.media-modal-content .media-toolbar-primary.search-form {
+       width: 33%;
+}
+
+.media-modal-content .media-toolbar-primary .media-button {
+       float: left;
+}
+
+.media-modal-content .attachments-browser .search {
+       width: 100%;
+}
+
 /* higher specificity */
 .wp-core-ui .media-modal-icon {
        background-image: url(../images/uploader-icons.png);
        width: 100%;
 }
 
-.media-sidebar h3,
-.image-details h3 {
+.media-sidebar h3, /* Back-compat for pre-4.4 */
+.image-details h3, /* Back-compat for pre-4.4 */
+.media-sidebar h2,
+.image-details h2 {
        position: relative;
        font-weight: bold;
        text-transform: uppercase;
 }
 
 .media-menu > a:hover {
-       color: #21759B;
+       color: #0073aa;
        background: rgba( 0, 0, 0, 0.04 );
 }
 
 .wp-core-ui .attachment.details {
        -webkit-box-shadow:
                inset 0 0 0 3px #fff,
-               inset 0 0 0 7px #1e8cbe;
+               inset 0 0 0 7px #0073aa;
        box-shadow:
                inset 0 0 0 3px #fff,
-               inset 0 0 0 7px #1e8cbe;
+               inset 0 0 0 7px #0073aa;
 }
 
 .wp-core-ui .attachment-preview {
 }
 
 .wp-core-ui .attachment-preview:before {
-       content: '';
+       content: "";
        display: block;
        padding-top: 100%;
 }
 }
 
 .wp-core-ui .attachment .thumbnail:after {
-       content: '';
+       content: "";
        display: block;
        position: absolute;
        top: 0;
 .wp-core-ui .attachment.details .check,
 .wp-core-ui .attachment.selected .check:focus,
 .wp-core-ui .media-frame.mode-grid .attachment.selected .check {
-       background-color: #1e8cbe;
+       background-color: #0073aa;
        -webkit-box-shadow:
                0 0 0 1px #fff,
-               0 0 0 2px #1e8cbe;
+               0 0 0 2px #0073aa;
        box-shadow:
                0 0 0 1px #fff,
-               0 0 0 2px #1e8cbe;
+               0 0 0 2px #0073aa;
 }
 
 .wp-core-ui .attachment.details .check .media-modal-icon,
 }
 
 .uploader-inline .close:before {
-       font: normal 30px/50px 'dashicons' !important;
+       font: normal 30px/50px dashicons !important;
        color: #777;
        display: inline-block;
-       content: '\f335';
+       content: "\f335";
        font-weight: 300;
 }
 
        height: 10px;
        min-width: 20px;
        width: 0;
-       background: #1e8cbe;
+       background: #0073aa;
        -webkit-border-radius: 10px;
        border-radius: 10px;
        -webkit-transition: width 300ms;
        max-width: 400px;
 }
 
-.uploader-inline .media-uploader-status h3 {
+.uploader-inline .media-uploader-status h3, /* Back-compat for pre-4.4 */
+.uploader-inline .media-uploader-status h2 {
        display: none;
 }
 
        padding: 12px;
        margin-bottom: 12px;
        background: #fff;
-       border-right: 4px solid #dd3d36;
+       border-right: 4px solid #dc3232;
        -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
        box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
 }
 
+.uploader-inline .upload-errors .upload-error {
+       background-color: #fbeaea;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
 .upload-errors .upload-error-filename {
        font-weight: bold;
 }
        border: 1px dashed #fff;
 }
 
-.uploader-window h3 {
+.uploader-window h3, /* Back-compat for pre-4.4 */
+.uploader-window h1 {
        margin: -0.5em 0 0;
        position: absolute;
        top: 50%;
        margin: 0 0 4em;
 }
 
-.uploader-inline h3 {
+.uploader-inline h3, /* Back-compat for pre-4.4 */
+.uploader-inline h2 {
        font-size: 20px;
        line-height: 28px;
        font-weight: 400;
        margin: 1px -8px 1px 8px;
        line-height: 16px;
        border-left: 1px solid #dfdfdf;
-       color: #21759B;
+       color: #0073aa;
 }
 
 .media-selection .button-link:hover,
 .media-selection .button-link:focus {
-       background: #21759B;
-       color: #fff;
-       border-color: transparent;
+       color: #00a0d2;
 }
 
 .media-selection .button-link:last-child {
 }
 
 .selection-info .clear-selection {
-       color: red;
+       color: #bc0b0b;
 }
 
 .selection-info .clear-selection:hover,
 .selection-info .clear-selection:focus {
-       background: red;
-       color: #fff;
+       color: red;
 }
 
 .media-selection .selection-view {
 .wp-core-ui .media-selection .attachment.details {
        -webkit-box-shadow:
                0 0 0 1px #fff,
-               0 0 0 3px #1e8cbe;
+               0 0 0 3px #0073aa;
        box-shadow:
                0 0 0 1px #fff,
-               0 0 0 3px #1e8cbe;
+               0 0 0 3px #0073aa;
 }
 
 .media-selection:after {
-       content: '';
+       content: "";
        display: block;
        position: absolute;
        top: 0;
        width: 25px;
        background-image: -webkit-gradient(linear, left top, right top, from(rgba( 255, 255, 255, 1 )), to(rgba( 255, 255, 255, 0 )));
        background-image: -webkit-linear-gradient(left, rgba( 255, 255, 255, 1 ), rgba( 255, 255, 255, 0 ));
-       background-image: linear-gradient(to right, rgba( 255, 255, 255, 1 ) ,  rgba( 255, 255, 255, 0 ) );
+       background-image: linear-gradient(to right, rgba( 255, 255, 255, 1 ), rgba( 255, 255, 255, 0 ));
 }
 
 .media-selection .attachment .filename {
 }
 
 .attachment-info .thumbnail-image:after {
-       content: '';
+       content: "";
        display: block;
        position: absolute;
        top: 0;
        padding: 0;
 }
 
-.media-modal .imgedit-group-top h3 {
+.media-modal .imgedit-group-top h3, /* Back-compat for pre-4.4 */
+.media-modal .imgedit-group-top h2 {
        text-transform: uppercase;
        font-size: 12px;
        color: #666;
        margin-top: 24px;
 }
 
-.media-modal .imgedit-group-top h3 a {
+.media-modal .imgedit-group-top h3 a, /* Back-compat for pre-4.4 */
+.media-modal .imgedit-group-top h2 a {
        text-decoration: none;
        color: #666;
 }
 }
 
 .media-modal .imgedit-help-toggled span.dashicons:before {
-       content: '\f142';
+       content: "\f142";
 }
 
 .media-modal .imgedit-group img {
        right: 0;
 }
 
-.image-details .column-settings h3 {
+.image-details .column-settings h3, /* Back-compat for pre-4.4 */
+.image-details .column-settings h2 {
        margin: 20px;
        padding-top: 20px;
        border-top: 1px solid #ddd;
+       color: #23282d;
 }
 
 .image-details .column-image {
 }
 
 .image-details .advanced-toggle:after {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        vertical-align: top;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
-       content: '\f140';
+       content: "\f140";
        display: inline-block;
        margin-top: -2px;
 }
 
 .image-details .advanced-visible .advanced-toggle:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 .image-details .embed-media-settings .size {
 }
 
 .image-details .custom-size:after {
-       content: '';
+       content: "";
        display: table;
        clear: both;
 }
 }
 
 .media-embed .thumbnail:after {
-       content: '';
+       content: "";
        display: block;
        position: absolute;
        top: 0;
 
        .media-frame:not(.hide-menu) .media-frame-title {
                right: 0;
-               color: #21759b;
        }
 
        .media-frame:not(.hide-menu) .media-frame-title .dashicons {
        }
 
        .media-frame:not(.hide-menu) .media-frame-title h1 {
+               color: #0073aa;
                line-height: 3;
                font-size: 18px;
                float: right;
index 1f5349f32c770b091dd9576f27c49819fafd3112..b1c89c1922810c5bc60aa4b97d378dfab396f1fc 100644 (file)
@@ -1,8 +1,8 @@
-.media-modal *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.media-frame input,.media-frame select,.media-frame textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.media-frame,.media-modal{font-family:"Open Sans",sans-serif;font-size:12px;-webkit-overflow-scrolling:touch}.media-frame input,.media-frame textarea{padding:6px 8px}.media-frame select,.wp-admin .media-frame select{line-height:28px;margin-top:3px}.media-frame a{border-bottom:none;color:#21759b}.media-frame a:hover{color:#d54e21}.media-frame a.button{color:#32373c}.media-frame a.button:hover{color:#23282d}.media-frame a.button-primary,.media-frame a.button-primary:hover{color:#fff}.media-frame input[type=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-family:"Open Sans",sans-serif;font-size:12px;border-width:1px;border-style:solid;border-color:#dfdfdf}.media-frame input[type=text]:focus,.media-frame input[type=password]:focus,.media-frame input[type=number]:focus,.media-frame input[type=search]:focus,.media-frame input[type=email]:focus,.media-frame input[type=url]:focus,.media-frame select:focus,.media-frame textarea:focus{border-color:#5b9dd9}.media-frame select{height:24px;padding:2px}.media-frame input:disabled,.media-frame input[readonly],.media-frame textarea:disabled,.media-frame textarea[readonly]{background-color:#eee}.media-frame input[type=search]{-webkit-appearance:textfield}.media-frame :-moz-placeholder{color:#a9a9a9}.media-frame .hidden{display:none}/*!
+.media-menu,.media-router{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.media-modal *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.media-modal input,.media-modal select,.media-modal textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.media-frame,.media-modal{font-family:"Open Sans",sans-serif;font-size:12px;-webkit-overflow-scrolling:touch}.media-frame input,.media-frame textarea{padding:6px 8px}.media-frame select,.wp-admin .media-frame select{line-height:28px;margin-top:3px}.media-frame a{border-bottom:none;color:#0073aa}.media-frame a:active,.media-frame a:hover{color:#00a0d2}.media-frame a:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);outline:0;color:#124964}.media-frame a.button{color:#32373c}.media-frame a.button:hover{color:#23282d}.media-frame a.button-primary,.media-frame a.button-primary:hover{color:#fff}.media-frame input[type=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-family:"Open Sans",sans-serif;font-size:12px;border-width:1px;border-style:solid;border-color:#dfdfdf}.media-frame input[type=text]:focus,.media-frame input[type=password]:focus,.media-frame input[type=number]:focus,.media-frame input[type=search]:focus,.media-frame input[type=email]:focus,.media-frame input[type=url]:focus,.media-frame select:focus,.media-frame textarea:focus{border-color:#5b9dd9}.media-frame select{height:24px;padding:2px}.media-frame input:disabled,.media-frame input[readonly],.media-frame textarea:disabled,.media-frame textarea[readonly]{background-color:#eee}.media-frame input[type=search]{-webkit-appearance:textfield}.media-frame :-moz-placeholder{color:#a9a9a9}.media-frame .hidden{display:none}/*!
  * jQuery UI Draggable/Sortable 1.11.4
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
- */.ui-draggable-handle,.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.media-modal{position:fixed;top:30px;right:30px;left:30px;bottom:30px;z-index:160000}.wp-customizer .media-modal{z-index:560000}.media-modal-backdrop{position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.wp-customizer .media-modal-backdrop{z-index:559900}.media-modal-close{position:absolute;top:0;left:0;width:50px;height:50px;padding:0;z-index:1000;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.media-modal-close:active{-webkit-box-shadow:none;box-shadow:none;outline:0}.media-modal-close span.media-modal-icon{background-image:none}.media-modal-close .media-modal-icon:before{content:'\f158';font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#666}.media-modal-close:hover .media-modal-icon:before{color:#00a0d2}.media-modal-content{position:absolute;top:0;right:0;left:0;bottom:0;overflow:auto;min-height:300px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.7);box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fcfcfc;-webkit-font-smoothing:subpixel-antialiased}.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-menu,.media-sidebar{top:0;bottom:0;left:0;background:#f3f3f3}.media-toolbar{position:absolute;top:0;right:0;left:0;z-index:100;height:60px;padding:0 16px;border:0 solid #dfdfdf;overflow:hidden}.media-toolbar-primary{float:left;height:100%}.media-toolbar-secondary{float:right;height:100%}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-right:10px;float:right;margin-top:15px}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-left:10px;margin-top:15px}.media-sidebar{position:absolute;width:267px;padding:0 16px 24px;z-index:75;border-right:1px solid #ddd;overflow:auto;-webkit-overflow-scrolling:touch}.hide-toolbar .media-sidebar{bottom:0}.media-sidebar .sidebar-title{font-size:20px;margin:0;padding:12px 10px 10px;line-height:28px}.media-sidebar .sidebar-content{padding:0 10px;margin-bottom:130px}.media-sidebar .search{display:block;width:100%}.image-details h3,.media-sidebar h3{position:relative;font-weight:700;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}.attachment-details .setting,.media-sidebar .setting{display:block;float:right;width:100%;margin:1px 0}.attachment-details .setting label,.media-sidebar .setting label{display:block}.attachment-details .setting .link-to-custom,.media-sidebar .setting .link-to-custom{margin:3px 2px 0}.attachment-details .setting span,.media-sidebar .setting span{min-width:30%;margin-left:4%;font-size:12px;text-align:left;word-wrap:break-word}.media-sidebar .setting .name{max-width:80px}.attachment-details .setting select,.media-sidebar .setting select{max-width:65%}.attachment-details .field input[type=radio],.attachment-details .field input[type=checkbox],.attachment-details .setting input[type=radio],.attachment-details .setting input[type=checkbox],.media-sidebar .field input[type=radio],.media-sidebar .field input[type=checkbox],.media-sidebar .setting input[type=radio],.media-sidebar .setting input[type=checkbox]{float:none;margin:8px 3px 0;padding:0}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{float:right;min-height:22px;padding-top:8px;line-height:16px;font-weight:400;color:#666}.media-menu>a,.media-router>a{text-decoration:none;line-height:18px;font-size:14px}.compat-item label span{text-align:left}.attachment-details .setting .value,.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting textarea,.media-sidebar .setting .value,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=url],.media-sidebar .setting textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px;width:65%;float:left}.attachment-details .setting .value,.media-sidebar .setting .value{margin:0 1px;text-align:right}.attachment-details .setting textarea,.compat-item .field textarea,.media-sidebar .setting textarea{height:62px;resize:vertical}.attachment-details select,.media-sidebar select{margin-top:3px}.compat-item{float:right;width:100%;overflow:hidden}.compat-item table{width:100%;table-layout:fixed;border-spacing:0;border:0}.compat-item tr{padding:2px 0;display:block;overflow:hidden}.compat-item .field,.compat-item .label{display:block;margin:0;padding:0}.compat-item .label{min-width:30%;margin-left:4%;float:right;text-align:left}.compat-item .label span{display:block;width:100%}.compat-item .field{float:left;width:65%;margin:1px}.compat-item .field input[type=tel],.compat-item .field input[type=text],.compat-item .field input[type=password],.compat-item .field input[type=number],.compat-item .field input[type=search],.compat-item .field input[type=email],.compat-item .field input[type=url],.compat-item .field textarea{width:100%;margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sidebar-for-errors .attachment-details,.sidebar-for-errors .compat-item,.sidebar-for-errors .media-sidebar .media-progress-bar,.sidebar-for-errors .upload-details{display:none!important}.media-menu{position:absolute;right:0;margin:0;padding:10px 0;border-left-width:1px;border-left-style:solid;border-left-color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.media-menu>a{display:block;position:relative;padding:8px 20px;margin:0;color:#0073aa}.media-frame-title .dashicons,.media-frame.hide-router .media-frame-router,.media-router .active:after{display:none}.media-menu>a:hover{color:#21759B;background:rgba(0,0,0,.04)}.media-menu>a:active{outline:0}.media-menu .active,.media-menu .active:hover{color:#23282d;font-weight:700}.media-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #ddd}.media-router{position:relative;padding:0 6px;margin:0;clear:both;user-select:none}.media-router,.wp-core-ui .attachment{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.media-router a{-webkit-transition:none;transition:none}.media-router>a{position:relative;float:right;padding:8px 10px 9px;margin:0;height:18px}.media-router>a:last-child{border-left:0}.media-router>a:active{outline:0}.media-router .active,.media-router .active:hover{color:#32373c}.media-router .active,.media-router>a.active:last-child{margin:-1px -1px 0;background:#fff;border:1px solid #ddd;border-bottom:none}.media-frame{overflow:hidden;position:absolute;top:0;right:0;left:0;bottom:0}.media-frame-menu{position:absolute;top:0;right:0;bottom:0;width:200px;z-index:150}.media-frame-content,.media-frame-router,.media-frame-title,.media-frame-toolbar{left:0;position:absolute;right:200px}.media-frame-title{top:0;height:50px;z-index:200}.media-frame-router{top:50px;height:36px;z-index:200}.media-frame-content{top:84px;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.media-frame-toolbar{bottom:0;height:60px;z-index:100}.media-frame.hide-menu .media-frame-content,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-toolbar{right:0}.media-frame.hide-menu .media-frame-menu{right:-200px}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-toolbar .media-frame-toolbar{bottom:-61px}.media-frame.hide-router .media-frame-content{top:50px}.media-frame.hide-router .media-frame-title{border-bottom:1px solid #dfdfdf;-webkit-box-shadow:0 4px 4px -4px rgba(0,0,0,.1);box-shadow:0 4px 4px -4px rgba(0,0,0,.1)}.media-frame-title h1{padding:0 16px;font-size:22px;line-height:50px;margin:0}.media-frame-title .suggested-dimensions{font-size:14px;float:left;margin-left:20px}.media-frame-content .crop-content{height:100%}.wp-customizer:not(.mobile) .media-frame-content .crop-content.site-icon{margin-left:300px}.media-frame-content .crop-content .crop-image{display:block;margin:auto;max-width:100%;max-height:100%}.media-frame-content .crop-content .upload-errors{position:absolute;width:300px;top:50%;right:50%;margin-right:-150px;margin-left:-150px;z-index:600000}.media-frame .media-iframe{overflow:hidden}.media-frame .media-iframe,.media-frame .media-iframe iframe{height:100%;width:100%;border:0}.media-frame select.attachment-filters{margin-top:11px;margin-left:2%;max-width:42%;max-width:-webkit-calc(48% - 12px);max-width:calc(48% - 12px)}.media-toolbar-primary .search,.wp-core-ui .attachment .portrait img{max-width:100%}.media-frame select.attachment-filters:last-of-type{margin-left:0}.media-frame .search{margin-top:11px;padding:4px;font-size:13px;color:#464646;font-family:"Open Sans",sans-serif;-webkit-appearance:none}.wp-core-ui .attachments{margin:0;-webkit-overflow-scrolling:touch}.wp-core-ui .attachment{position:relative;float:right;padding:8px;margin:0;color:#464646;cursor:pointer;list-style:none;text-align:center;user-select:none;width:25%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui .attachment.details:focus,.wp-core-ui .attachment:focus,.wp-core-ui .selected.attachment:focus{-webkit-box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;outline:0}.wp-core-ui .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc}.wp-core-ui .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #1e8cbe;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #1e8cbe}.wp-core-ui .attachment-preview{position:relative;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);background:#eee;cursor:pointer}.wp-core-ui .attachment-preview:before{content:'';display:block;padding-top:100%}.wp-core-ui .attachment .icon{margin:0 auto;overflow:hidden}.wp-core-ui .attachment .thumbnail{overflow:hidden;position:absolute;top:0;left:0;bottom:0;right:0;opacity:1;-webkit-transition:opacity .1s;transition:opacity .1s}.wp-core-ui .attachment .landscape img{max-height:100%}.wp-core-ui .attachment .thumbnail:after{content:'';display:block;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.wp-core-ui .attachment .thumbnail img{top:0;right:0}.wp-core-ui .attachment .thumbnail .centered{position:absolute;top:0;right:0;width:100%;height:100%;-webkit-transform:translate(-50%,50%);-ms-transform:translate(-50%,50%);transform:translate(-50%,50%)}.wp-core-ui .attachment .thumbnail .centered img{-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon{-webkit-transform:translate(50%,-70%);-ms-transform:translate(50%,-70%);transform:translate(50%,-70%)}.ie8 .wp-core-ui .attachment img.icon{top:20%;position:relative}.wp-core-ui .attachment .filename{position:absolute;right:0;left:0;bottom:0;overflow:hidden;max-height:100%;word-wrap:break-word;text-align:center;font-weight:700;background:rgba(255,255,255,.8);-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}.wp-core-ui .attachment .filename div{padding:5px 10px}.wp-core-ui .attachment .thumbnail img{position:absolute}.wp-core-ui .attachment-close{display:block;position:absolute;top:5px;left:5px;height:22px;width:22px;padding:0;background-color:#fff;background-position:-96px 4px;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.3);box-shadow:0 0 0 1px rgba(0,0,0,.3)}.wp-core-ui .attachment-close:focus,.wp-core-ui .attachment-close:hover{background-position:-36px 4px}.wp-core-ui .attachment .check{display:none;height:24px;width:24px;padding:0;position:absolute;z-index:10;top:0;left:0;outline:0;background:#eee;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15);box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15)}.wp-core-ui .attachment .check .media-modal-icon{display:block;background-position:-1px 0;height:15px;width:15px;margin:5px}.wp-core-ui .attachment .check:hover .media-modal-icon{background-position:-40px 0}.wp-core-ui .attachment.selected .check{display:block}.wp-core-ui .attachment.details .check,.wp-core-ui .attachment.selected .check:focus,.wp-core-ui .media-frame.mode-grid .attachment.selected .check{background-color:#1e8cbe;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #1e8cbe;box-shadow:0 0 0 1px #fff,0 0 0 2px #1e8cbe}.wp-core-ui .attachment.details .check .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check .media-modal-icon{background-position:-21px 0}.wp-core-ui .attachment.details .check:hover .media-modal-icon,.wp-core-ui .attachment.selected .check:focus .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check:hover .media-modal-icon{background-position:-60px 0}.wp-core-ui .media-frame .attachment .describe{position:relative;display:block;width:100%;margin:0;padding:8px;font-size:12px;-webkit-border-radius:0;border-radius:0}.media-frame .attachments-browser{position:relative;width:100%;height:100%;overflow:hidden}.attachments-browser .media-toolbar{left:300px;height:50px}.attachments-browser.hide-sidebar .media-toolbar{left:0}.attachments-browser .media-toolbar-primary>.media-button,.attachments-browser .media-toolbar-primary>.media-button-group,.attachments-browser .media-toolbar-secondary>.media-button,.attachments-browser .media-toolbar-secondary>.media-button-group{margin:11px 0}.attachments-browser .attachments{padding:2px 8px 8px}.attachments-browser .attachments,.attachments-browser .uploader-inline{position:absolute;top:50px;right:0;left:300px;bottom:0;overflow:auto;outline:0}.attachments-browser .uploader-inline.hidden{display:none}.attachments-browser .media-toolbar-primary{max-width:33%}.attachments-browser .media-toolbar-secondary{max-width:66%}.uploader-inline .close{background-color:transparent;border:0;cursor:pointer;height:48px;position:absolute;left:0;text-align:center;top:0;width:50px;z-index:1}.uploader-inline .close:before{font:400 30px/50px dashicons!important;color:#777;display:inline-block;content:'\f335';font-weight:300}.attachments-browser.hide-sidebar .attachments,.attachments-browser.hide-sidebar .uploader-inline{left:0;margin-left:0}.attachments-browser .instructions{display:inline-block;margin-top:16px;line-height:18px;font-size:13px;color:#666;margin-left:.5em}.attachments-browser .no-media{padding:2em 2em 0 0}.media-progress-bar{position:relative;height:10px;width:70%;margin:10px auto;-webkit-border-radius:10px;border-radius:10px;background:#dfdfdf;background:rgba(0,0,0,.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#1e8cbe;-webkit-border-radius:10px;border-radius:10px;-webkit-transition:width 300ms;transition:width 300ms}.media-uploader-status .media-progress-bar{display:none;width:100%}.uploading.media-uploader-status .media-progress-bar{display:block}.attachment-preview .media-progress-bar{position:absolute;top:50%;right:15%;width:70%;margin:-5px 0 0}.media-uploader-status{position:relative;margin:0 auto;padding-bottom:10px;max-width:400px}.uploader-inline .media-uploader-status h3{display:none}.media-uploader-status .upload-details{display:none;font-size:12px;color:#666}.uploading.media-uploader-status .upload-details{display:block}.media-uploader-status .upload-detail-separator{padding:0 4px}.media-uploader-status .upload-count{color:#464646}.media-uploader-status .upload-dismiss-errors,.media-uploader-status .upload-errors{display:none}.errors.media-uploader-status .upload-dismiss-errors,.errors.media-uploader-status .upload-errors{display:block}.media-uploader-status .upload-dismiss-errors{text-decoration:none}.media-sidebar .media-uploader-status .upload-dismiss-errors{position:absolute;top:0;left:0}.upload-errors .upload-error{padding:12px;margin-bottom:12px;background:#fff;border-right:4px solid #dd3d36;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.upload-errors .upload-error-filename{font-weight:700}.upload-errors .upload-error-message{display:block;padding-top:8px;word-wrap:break-word}.uploader-window{position:fixed;top:0;right:0;left:0;bottom:0;background:rgba(0,86,132,.9);z-index:250000;display:none;text-align:center;opacity:0;-webkit-transition:opacity 250ms;transition:opacity 250ms}.uploader-window-content{position:absolute;top:10px;right:10px;left:10px;bottom:10px;border:1px dashed #fff}.uploader-window h3{margin:-.5em 0 0;position:absolute;top:50%;right:0;left:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:40px;color:#fff;padding:0}.uploader-window .media-progress-bar{margin-top:20px;max-width:300px;background:0 0;border-color:#fff;display:none}.uploader-window .media-progress-bar div{background:#fff}.uploading .uploader-window .media-progress-bar{display:block}.media-frame .uploader-inline{margin-bottom:20px;padding:0;text-align:center}.uploader-inline-content{position:absolute;top:30%;right:0;left:0}.uploader-inline-content .upload-ui{margin:2em 0}.uploader-inline-content .post-upload-ui{margin-bottom:2em}.uploader-inline .has-upload-message .upload-ui{margin:0 0 4em}.uploader-inline h3{font-size:20px;line-height:28px;font-weight:400;margin:0}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#464646;font-weight:400}.uploader-inline .drop-instructions{display:none}.supports-drag-drop .uploader-inline .drop-instructions{display:block}.uploader-inline p{font-size:12px;margin:.5em 0}.uploader-inline .media-progress-bar{display:none}.uploading.uploader-inline .media-progress-bar{display:block}.uploader-inline .browser{display:inline-block!important}.media-selection{position:absolute;top:0;right:0;left:350px;height:60px;padding:0 16px 0 0;overflow:hidden;white-space:nowrap}.media-selection .selection-info{display:inline-block;font-size:12px;height:60px;margin-left:10px;vertical-align:top}.media-selection.editing,.media-selection.empty,.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:20px;font-weight:700}.media-selection .attachments,.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .button-link{float:right;padding:1px 8px;margin:1px -8px 1px 8px;line-height:16px;border-left:1px solid #dfdfdf;color:#21759B}.media-selection .button-link:focus,.media-selection .button-link:hover{background:#21759B;color:#fff;border-color:transparent}.media-selection .button-link:last-child{border-left:0;margin-left:0}.selection-info .clear-selection{color:red}.selection-info .clear-selection:focus,.selection-info .clear-selection:hover{background:red;color:#fff}.media-selection .attachments{height:48px;margin:6px;padding:0;overflow:hidden}.media-selection .attachment{width:40px;padding:0;margin:4px}.media-selection .attachment .thumbnail{top:0;left:0;bottom:0;right:0}.media-selection .attachment .icon{width:50%}.media-selection .attachment-preview{-webkit-box-shadow:none;box-shadow:none;background:0 0}.wp-core-ui .media-selection .attachment.details:focus,.wp-core-ui .media-selection .attachment:focus,.wp-core-ui .media-selection .selected.attachment:focus{-webkit-box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9;box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9}.wp-core-ui .media-selection .selected.attachment{-webkit-box-shadow:none;box-shadow:none}.wp-core-ui .media-selection .attachment.details{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #1e8cbe;box-shadow:0 0 0 1px #fff,0 0 0 3px #1e8cbe}.media-selection:after{content:'';display:block;position:absolute;top:0;left:0;bottom:0;width:25px;background-image:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,1)),to(rgba(255,255,255,0)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,1),rgba(255,255,255,0));background-image:linear-gradient(to right,rgba(255,255,255,1) ,rgba(255,255,255,0))}.media-selection .attachment .filename{display:none}.media-frame .spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;float:left;display:inline-block;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:0;vertical-align:middle}.attachment-details.save-waiting .settings-save-status .spinner,.media-frame .embed-loading .embed-url .spinner,.media-frame .spinner.is-active{visibility:visible}.media-toolbar .spinner{margin-top:14px}.attachment-details{position:relative;overflow:auto}.attachment-details .settings-save-status{float:left;text-transform:none;z-index:10}.attachment-details .settings-save-status .spinner{margin-right:5px}.attachment-details .settings-save-status .saved{float:left;display:none}.attachment-details.save-complete .settings-save-status .saved{display:block}.attachment-info{overflow:hidden;min-height:60px;margin-bottom:16px;line-height:18px;color:#666;border-bottom:1px solid #ddd;padding-bottom:11px}.attachment-info .filename{font-weight:700;color:#464646;word-wrap:break-word}.attachment-info .thumbnail{position:relative;float:right;max-width:120px;max-height:120px;margin-top:5px;margin-left:10px;margin-bottom:5px}.uploading .attachment-info .thumbnail{width:120px;height:80px;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1);box-shadow:inset 0 0 15px rgba(0,0,0,.1)}.uploading .attachment-info .media-progress-bar{margin-top:35px}.attachment-info .thumbnail-image:after{content:'';display:block;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);overflow:hidden}.attachment-info .thumbnail img{display:block;max-width:120px;max-height:120px;margin:0 auto}.attachment-info .details{float:right;font-size:12px;max-width:100%}.attachment-info .delete-attachment,.attachment-info .edit-attachment,.attachment-info .trash-attachment,.attachment-info .untrash-attachment{display:block;text-decoration:none;white-space:nowrap}.attachment-details.needs-refresh .attachment-info .edit-attachment{display:none}.attachment-info .edit-attachment{display:block}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment{display:inline;padding:0;color:#bc0b0b}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover{color:red}.attachment-display-settings{width:100%;float:right;overflow:hidden}.attachment-display-settings h4{margin:1.4em 0 .4em}.collection-settings{overflow:hidden}.collection-settings .setting input[type=checkbox]{float:right;margin-left:8px}.collection-settings .setting span{min-width:inherit}.media-modal .imgedit-wrap{position:static}.media-modal .imgedit-wait{height:auto!important;left:0;bottom:0;right:0}.media-modal .imgedit-wrap .imgedit-panel-content{padding:16px;position:absolute;top:0;left:282px;bottom:0;right:0;overflow:auto}.media-modal .imgedit-wrap .imgedit-settings{background:#f3f3f3;border-right:1px solid #ddd;padding:0 16px 16px;position:absolute;top:0;left:0;bottom:0;width:250px;overflow:auto}.media-modal .imgedit-group{background:0 0;border:none;border-bottom:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;margin:0 0 16px;padding:0 0 16px;position:relative}.media-modal .imgedit-group:last-of-type{border:none;margin:0;padding:0}.media-modal .imgedit-group-top h3{text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 0}.media-modal .imgedit-group-top h3 a{text-decoration:none;color:#666}.media-modal .imgedit-help-toggle{margin-top:-2px;cursor:pointer;color:#666}.media-modal .imgedit-help-toggled span.dashicons:before{content:'\f142'}.media-modal .imgedit-group img{margin-top:5px}.media-modal .imgedit-wrap div.updated{margin:0 0 16px}.embed-url{display:block;position:relative;padding:16px;margin:0;z-index:250;background:#fff;font-size:18px}.media-frame .embed-url input{font-size:18px;padding:12px 14px;width:100%;min-width:200px;-webkit-box-shadow:inset -2px 2px 4px -2px rgba(0,0,0,.1);box-shadow:inset -2px 2px 4px -2px rgba(0,0,0,.1)}.media-frame .embed-url .spinner{position:absolute;top:32px;left:26px}.embed-link-settings,.embed-media-settings{position:absolute;top:70px;right:0;left:0;bottom:0;padding:16px 16px 32px;overflow:auto}.media-embed .embed-link-settings{overflow:visible}.embed-preview embed,.embed-preview iframe,.embed-preview img,.mejs-container video{max-width:100%;vertical-align:middle}.embed-preview a{display:inline-block}.embed-preview img{display:block;height:auto}.mejs-container:focus{outline:#5b9dd9 solid 1px;-webkit-box-shadow:0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 2px 1px rgba(30,140,190,.8)}.image-details .media-modal{right:140px;left:140px}.image-details .media-frame-content,.image-details .media-frame-router,.image-details .media-frame-title{right:0}.image-details .embed-media-settings{top:0;overflow:visible;padding:0}.image-details .embed-media-settings,.image-details .embed-media-settings div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.image-details .column-settings{background:#f3f3f3;border-left:1px solid #ddd;min-height:100%;width:55%;position:absolute;top:0;right:0}.image-details .column-settings h3{margin:20px;padding-top:20px;border-top:1px solid #ddd}.image-details .column-image{width:45%;position:absolute;right:55%;top:0}.image-details .image{margin:20px}.image-details .image img{max-width:100%;max-height:500px}.image-details .advanced-toggle{padding:0;color:#666;text-transform:uppercase}.image-details .advanced-toggle:after{font:400 20px/1 dashicons;speak:none;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:'\f140';display:inline-block;margin-top:-2px}.image-details .advanced-visible .advanced-toggle:after{content:'\f142'}.image-details .embed-media-settings .size{margin-bottom:4px}.image-details .custom-size span{display:block}.image-details .custom-size label{display:block;float:right}.image-details .custom-size span small{color:#999;font-size:inherit}.image-details .custom-size input{width:5em}.image-details .custom-size .sep{float:right;margin:26px 6px 0}.image-details .custom-size:after{content:'';display:table;clear:both}.media-embed .thumbnail{max-width:100%;max-height:200px;position:relative;float:right}.media-embed .thumbnail img{max-height:200px;display:block}.media-embed .thumbnail:after{content:'';display:block;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.media-embed .setting{width:100%;margin:10px 0;float:right;display:block;clear:both}.image-details .embed-media-settings .setting{float:none;width:auto}.image-details .actions{margin:10px 0}.image-details .hidden{display:none}.media-embed .setting input[type=text],.media-embed .setting textarea{display:block;width:100%;max-width:400px;margin:1px 0}.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{max-width:inherit;width:70%}.image-details .embed-media-settings .custom-size,.image-details .embed-media-settings .link-target,.image-details .embed-media-settings .setting input.link-to-custom{margin-right:27%;width:70%}.image-details .embed-media-settings .link-target{margin-top:24px}.media-embed .setting input.hidden,.media-embed .setting textarea.hidden{display:none}.media-embed .setting span{display:block;width:200px;font-size:13px;line-height:24px;color:#666}.image-details .embed-media-settings .setting span{float:right;width:25%;text-align:left;margin:8px 1% 0;line-height:1.1}.media-embed .setting .button-group{margin:2px 0}.media-embed-sidebar{position:absolute;top:0;right:440px}.advanced-section,.link-settings{margin-top:10px}.wp-editor-wrap .uploader-editor{background:rgba(150,150,150,.9);position:absolute;top:0;right:0;width:100%;height:100%;z-index:99998;display:none;text-align:center}.wp-editor-wrap .uploader-editor-content{border:1px dashed #fff;position:absolute;top:10px;right:10px;left:10px;bottom:10px}.wp-editor-wrap .uploader-editor .uploader-editor-title{position:absolute;top:50%;right:0;left:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:3em;line-height:1.3;font-weight:700;color:#fff;padding:0;margin:0;display:none}.wp-editor-wrap .uploader-editor.droppable{background:rgba(0,86,132,.9)}.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title{display:block}.ie7 .media-frame .attachments-browser{position:static}.ie7 .media-frame .embed-url input{margin-top:4px;width:90%}.ie7 .compat-item{width:99%}.ie7 .attachment-display-settings{width:auto}.ie7 .attachment-preview,.ie7 .attachment-preview .thumbnail{width:120px;height:120px}.ie7 .media-frame .attachment .describe{width:102px}.ie7 .media-sidebar .setting select{max-width:55%}.ie7 .media-sidebar .setting input[type=tel],.ie7 .media-sidebar .setting input[type=text],.ie7 .media-sidebar .setting input[type=password],.ie7 .media-sidebar .setting input[type=number],.ie7 .media-sidebar .setting input[type=search],.ie7 .media-sidebar .setting input[type=email],.ie7 .media-sidebar .setting input[type=url],.ie7 .media-sidebar .setting textarea{width:55%}.ie7 .media-sidebar .setting .link-to-custom{float:right}.rtl .media-frame,.rtl .media-frame .search,.rtl .media-frame input[type=tel],.rtl .media-frame input[type=text],.rtl .media-frame input[type=password],.rtl .media-frame input[type=number],.rtl .media-frame input[type=search],.rtl .media-frame input[type=email],.rtl .media-frame input[type=url],.rtl .media-frame select,.rtl .media-frame textarea,.rtl .media-modal{font-family:Tahoma,sans-serif}:lang(he-il) .rtl .media-frame,:lang(he-il) .rtl .media-frame .search,:lang(he-il) .rtl .media-frame input[type=text],:lang(he-il) .rtl .media-frame input[type=password],:lang(he-il) .rtl .media-frame input[type=number],:lang(he-il) .rtl .media-frame input[type=search],:lang(he-il) .rtl .media-frame input[type=email],:lang(he-il) .rtl .media-frame input[type=url],:lang(he-il) .rtl .media-frame select,:lang(he-il) .rtl .media-frame textarea,:lang(he-il) .rtl .media-modal{font-family:Arial,sans-serif}@media only screen and (max-width:900px){.media-frame:not(.hide-menu) .media-frame-content,.media-frame:not(.hide-menu) .media-frame-router,.media-frame:not(.hide-menu) .media-frame-title,.media-frame:not(.hide-menu) .media-frame-toolbar{right:0}.media-frame:not(.hide-menu) .media-frame-menu{position:static;width:0}.media-frame:not(.hide-menu) .media-menu{width:auto;max-width:80%;overflow:auto;z-index:2000;top:50px;right:-300px;left:auto;bottom:auto;padding:5px 0;border:1px solid #ccc}.media-frame:not(.hide-menu) .media-menu.visible{right:0}.media-frame:not(.hide-menu) .media-menu>a{padding:12px 16px;font-size:16px}.media-frame:not(.hide-menu) .media-menu>a.active{display:none}.media-frame:not(.hide-menu) .media-menu .separator{margin:5px 10px}.media-frame:not(.hide-menu) .media-frame-title{right:0;color:#21759b}.media-frame:not(.hide-menu) .media-frame-title .dashicons{display:inline-block;line-height:50px}.media-frame:not(.hide-menu) .media-frame-title h1{line-height:3;font-size:18px;float:right;cursor:pointer}.media-sidebar{width:230px}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{left:262px}.attachment-details .setting,.media-sidebar .setting{margin:6px 0}.attachment-details .setting input,.attachment-details .setting span,.attachment-details .setting textarea,.compat-item label span,.media-sidebar .setting input,.media-sidebar .setting span,.media-sidebar .setting textarea{float:none}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{text-align:inherit;min-height:16px;margin:0;padding:8px 2px 0}.attachment-details .setting .value,.media-sidebar .setting .value{float:none;width:auto}.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting select,.attachment-details .setting textarea,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=url],.media-sidebar .setting select,.media-sidebar .setting textarea{float:none;width:98%;max-width:none;height:auto}.attachment-details .setting select.columns,.media-sidebar .setting select.columns{width:auto}.media-frame .search,.media-frame input,.media-frame textarea{padding:3px 6px}.image-details .column-image{width:30%;right:70%}.image-details .column-settings{width:70%}.image-details .media-modal{right:30px;left:30px}.image-details .embed-media-settings .setting{margin:20px}.image-details .embed-media-settings .setting span{float:none;text-align:right;width:100%;margin-bottom:4px}.image-details .embed-media-settings .setting input.link-to-custom,.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{width:100%;margin-right:0}.image-details .embed-media-settings .custom-size{margin-right:20px}.collection-settings .setting input[type=checkbox]{margin-top:0}.media-selection{min-width:120px}.media-selection:after{background:0 0}.media-selection .attachments{display:none}.media-modal .attachments-browser .media-toolbar .search{max-width:100%;height:auto;float:left}.media-modal .attachments-browser .media-toolbar .attachment-filters{height:auto}.media-modal .attachments-browser .media-toolbar .spinner{margin:14px 2px 0}.media-frame input[type=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-size:16px}}@media only screen and (max-width:640px),screen and (max-height:400px){.image-details .media-modal,.media-modal{position:fixed;top:0;right:0;left:0;bottom:0}.media-modal-backdrop{position:fixed}.media-sidebar{z-index:1900;max-width:70%;bottom:120%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding-bottom:0}.media-sidebar.visible{bottom:0}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{left:0}.image-details .media-frame-title{display:block;top:0;font-size:14px}.image-details .column-image,.image-details .column-settings{width:100%;position:relative;right:0}.image-details .column-settings{padding:4px 0}.media-frame-content .media-toolbar .instructions{display:none}}@media screen and (max-height:400px){.media-menu{padding:0}.media-frame-router{top:44px}.media-frame-content{top:78px}.attachments-browser .attachments{top:40px}.embed-link-settings{overflow:visible}}@media only screen and (max-width:480px){.media-modal-close{top:-5px}.media-modal .media-frame-title{height:40px}.wp-core-ui.wp-customizer .media-button{margin-top:13px}.media-frame:not(.hide-menu) .media-frame-title h1,.media-modal .media-frame-title h1{font-size:18px;line-height:40px}.media-frame:not(.hide-menu) .media-frame-title .dashicons{line-height:40px}.media-frame-router,.media-frame:not(.hide-menu) .media-menu{top:40px}.media-frame-content{top:74px}.media-frame.hide-router .media-frame-content{top:40px}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.media-modal-icon{background-image:url(../images/uploader-icons-2x.png);-webkit-background-size:134px 15px;background-size:134px 15px}.media-frame .spinner{background-image:url(../images/spinner-2x.gif)}}.media-frame-content[data-columns="1"] .attachment{width:100%}.media-frame-content[data-columns="2"] .attachment{width:50%}.media-frame-content[data-columns="3"] .attachment{width:33.33%}.media-frame-content[data-columns="4"] .attachment{width:25%}.media-frame-content[data-columns="5"] .attachment{width:20%}.media-frame-content[data-columns="6"] .attachment{width:16.66%}.media-frame-content[data-columns="7"] .attachment{width:14.28%}.media-frame-content[data-columns="8"] .attachment{width:12.5%}.media-frame-content[data-columns="9"] .attachment{width:11.11%}.media-frame-content[data-columns="10"] .attachment{width:10%}.media-frame-content[data-columns="11"] .attachment{width:9.09%}.media-frame-content[data-columns="12"] .attachment{width:8.33%}
\ No newline at end of file
+ */.ui-draggable-handle,.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.media-modal{position:fixed;top:30px;right:30px;left:30px;bottom:30px;z-index:160000}.wp-customizer .media-modal{z-index:560000}.media-modal-backdrop{position:fixed;top:0;right:0;left:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.wp-customizer .media-modal-backdrop{z-index:559900}.media-modal-close{position:absolute;top:0;left:0;width:50px;height:50px;padding:0;z-index:1000;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.media-modal-close:active{-webkit-box-shadow:none;box-shadow:none;outline:0}.media-modal-close span.media-modal-icon{background-image:none}.media-modal-close .media-modal-icon:before{content:"\f158";font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#666}.media-modal-close:hover .media-modal-icon:before{color:#00a0d2}.media-modal-content{position:absolute;top:0;right:0;left:0;bottom:0;overflow:auto;min-height:300px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.7);box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fcfcfc;-webkit-font-smoothing:subpixel-antialiased}.media-modal-content .media-frame select.attachment-filters{margin-top:11px;margin-left:2%;width:42%;width:-webkit-calc(48% - 12px);width:calc(48% - 12px)}.media-modal-content .attachments-browser .media-toolbar-secondary{width:66%}.media-modal-content .media-toolbar-primary.search-form{width:33%}.media-modal-content .media-toolbar-primary .media-button{float:left}.media-modal-content .attachments-browser .search{width:100%}.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-menu,.media-sidebar{top:0;bottom:0;background:#f3f3f3;left:0}.media-toolbar{position:absolute;top:0;right:0;left:0;z-index:100;height:60px;padding:0 16px;border:0 solid #dfdfdf;overflow:hidden}.media-toolbar-primary{float:left;height:100%}.media-toolbar-secondary{float:right;height:100%}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-right:10px;float:right;margin-top:15px}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-left:10px;margin-top:15px}.media-sidebar{position:absolute;width:267px;padding:0 16px 24px;z-index:75;border-right:1px solid #ddd;overflow:auto;-webkit-overflow-scrolling:touch}.hide-toolbar .media-sidebar{bottom:0}.media-sidebar .sidebar-title{font-size:20px;margin:0;padding:12px 10px 10px;line-height:28px}.media-sidebar .sidebar-content{padding:0 10px;margin-bottom:130px}.media-sidebar .search{display:block;width:100%}.image-details h2,.image-details h3,.media-sidebar h2,.media-sidebar h3{position:relative;font-weight:700;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}.attachment-details .setting,.media-sidebar .setting{display:block;float:right;width:100%;margin:1px 0}.attachment-details .setting label,.media-sidebar .setting label{display:block}.attachment-details .setting .link-to-custom,.media-sidebar .setting .link-to-custom{margin:3px 2px 0}.attachment-details .setting span,.media-sidebar .setting span{min-width:30%;margin-left:4%;font-size:12px;text-align:left;word-wrap:break-word}.media-sidebar .setting .name{max-width:80px}.attachment-details .setting select,.media-sidebar .setting select{max-width:65%}.attachment-details .field input[type=checkbox],.attachment-details .field input[type=radio],.attachment-details .setting input[type=checkbox],.attachment-details .setting input[type=radio],.media-sidebar .field input[type=checkbox],.media-sidebar .field input[type=radio],.media-sidebar .setting input[type=checkbox],.media-sidebar .setting input[type=radio]{float:none;margin:8px 3px 0;padding:0}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{float:right;min-height:22px;padding-top:8px;line-height:16px;font-weight:400;color:#666}.media-menu>a,.media-router>a{line-height:18px;font-size:14px;text-decoration:none}.compat-item label span{text-align:left}.attachment-details .setting .value,.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting textarea,.media-sidebar .setting .value,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=url],.media-sidebar .setting textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px;width:65%;float:left}.attachment-details .setting .value,.media-sidebar .setting .value{margin:0 1px;text-align:right}.attachment-details .setting textarea,.compat-item .field textarea,.media-sidebar .setting textarea{height:62px;resize:vertical}.attachment-details select,.media-sidebar select{margin-top:3px}.compat-item{float:right;width:100%;overflow:hidden}.compat-item table{width:100%;table-layout:fixed;border-spacing:0;border:0}.compat-item tr{padding:2px 0;display:block;overflow:hidden}.compat-item .field,.compat-item .label{display:block;margin:0;padding:0}.compat-item .label{min-width:30%;margin-left:4%;float:right;text-align:left}.compat-item .label span{display:block;width:100%}.compat-item .field{float:left;width:65%;margin:1px}.compat-item .field input[type=tel],.compat-item .field input[type=text],.compat-item .field input[type=password],.compat-item .field input[type=number],.compat-item .field input[type=search],.compat-item .field input[type=email],.compat-item .field input[type=url],.compat-item .field textarea{width:100%;margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sidebar-for-errors .attachment-details,.sidebar-for-errors .compat-item,.sidebar-for-errors .media-sidebar .media-progress-bar,.sidebar-for-errors .upload-details{display:none!important}.media-menu{position:absolute;right:0;margin:0;padding:10px 0;border-left-width:1px;border-left-style:solid;border-left-color:#ccc;user-select:none}.media-menu>a{display:block;position:relative;padding:8px 20px;margin:0;color:#0073aa}.media-frame-title .dashicons,.media-frame.hide-router .media-frame-router{display:none}.media-menu>a:hover{color:#0073aa;background:rgba(0,0,0,.04)}.media-menu>a:active{outline:0}.media-menu .active,.media-menu .active:hover{color:#23282d;font-weight:700}.media-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #ddd}.media-router{position:relative;padding:0 6px;margin:0;clear:both;user-select:none}.media-router a{-webkit-transition:none;transition:none}.media-router>a{position:relative;float:right;padding:8px 10px 9px;margin:0;height:18px}.media-frame,.media-frame-menu{position:absolute;right:0;bottom:0;top:0}.media-router>a:last-child{border-left:0}.media-router>a:active{outline:0}.media-router .active,.media-router .active:hover{color:#32373c}.media-router .active,.media-router>a.active:last-child{margin:-1px -1px 0;background:#fff;border:1px solid #ddd;border-bottom:none}.media-router .active:after{display:none}.media-frame{overflow:hidden;left:0}.media-frame-menu{width:200px;z-index:150}.media-frame-router,.media-frame-title{z-index:200;right:200px;position:absolute;left:0}.media-frame-title{top:0;height:50px}.media-frame-router{top:50px;height:36px}.media-frame-content{position:absolute;top:84px;right:200px;left:0;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.media-frame-toolbar{position:absolute;right:200px;left:0;bottom:0;height:60px;z-index:100}.media-frame.hide-menu .media-frame-content,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-toolbar{right:0}.media-frame.hide-menu .media-frame-menu{right:-200px}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-toolbar .media-frame-toolbar{bottom:-61px}.media-frame.hide-router .media-frame-content{top:50px}.media-frame.hide-router .media-frame-title{border-bottom:1px solid #dfdfdf;-webkit-box-shadow:0 4px 4px -4px rgba(0,0,0,.1);box-shadow:0 4px 4px -4px rgba(0,0,0,.1)}.media-frame-title h1{padding:0 16px;font-size:22px;line-height:50px;margin:0}.media-frame-title .suggested-dimensions{font-size:14px;float:left;margin-left:20px}.media-frame-content .crop-content{height:100%}.wp-customizer:not(.mobile) .media-frame-content .crop-content.site-icon{margin-left:300px}.media-frame-content .crop-content .crop-image{display:block;margin:auto;max-width:100%;max-height:100%}.media-frame-content .crop-content .upload-errors{position:absolute;width:300px;top:50%;right:50%;margin-right:-150px;margin-left:-150px;z-index:600000}.media-frame .media-iframe{overflow:hidden}.media-frame .media-iframe,.media-frame .media-iframe iframe{height:100%;width:100%;border:0}.media-frame select.attachment-filters{margin-top:11px;margin-left:2%;max-width:42%;max-width:-webkit-calc(48% - 12px);max-width:calc(48% - 12px)}.media-toolbar-primary .search,.wp-core-ui .attachment .portrait img{max-width:100%}.media-frame select.attachment-filters:last-of-type{margin-left:0}.media-frame .search{margin-top:11px;padding:4px;font-size:13px;color:#464646;font-family:"Open Sans",sans-serif;-webkit-appearance:none}.wp-core-ui .attachments{margin:0;-webkit-overflow-scrolling:touch}.wp-core-ui .attachment{position:relative;float:right;padding:8px;margin:0;color:#464646;cursor:pointer;list-style:none;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:25%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui .attachment.details:focus,.wp-core-ui .attachment:focus,.wp-core-ui .selected.attachment:focus{-webkit-box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;outline:0}.wp-core-ui .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc}.wp-core-ui .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #0073aa;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #0073aa}.wp-core-ui .attachment-preview{position:relative;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);background:#eee;cursor:pointer}.wp-core-ui .attachment-preview:before{content:"";display:block;padding-top:100%}.wp-core-ui .attachment .icon{margin:0 auto;overflow:hidden}.wp-core-ui .attachment .thumbnail{overflow:hidden;position:absolute;top:0;left:0;bottom:0;right:0;opacity:1;-webkit-transition:opacity .1s;transition:opacity .1s}.wp-core-ui .attachment .landscape img{max-height:100%}.wp-core-ui .attachment .thumbnail:after{content:"";display:block;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.wp-core-ui .attachment .thumbnail img{top:0;right:0}.wp-core-ui .attachment .thumbnail .centered{position:absolute;top:0;right:0;width:100%;height:100%;-webkit-transform:translate(-50%,50%);-ms-transform:translate(-50%,50%);transform:translate(-50%,50%)}.wp-core-ui .attachment .thumbnail .centered img{-webkit-transform:translate(50%,-50%);-ms-transform:translate(50%,-50%);transform:translate(50%,-50%)}.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon{-webkit-transform:translate(50%,-70%);-ms-transform:translate(50%,-70%);transform:translate(50%,-70%)}.ie8 .wp-core-ui .attachment img.icon{top:20%;position:relative}.wp-core-ui .attachment .filename{position:absolute;right:0;left:0;bottom:0;overflow:hidden;max-height:100%;word-wrap:break-word;text-align:center;font-weight:700;background:rgba(255,255,255,.8);-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}.wp-core-ui .attachment .filename div{padding:5px 10px}.wp-core-ui .attachment .thumbnail img{position:absolute}.wp-core-ui .attachment-close{display:block;position:absolute;top:5px;left:5px;height:22px;width:22px;padding:0;background-color:#fff;background-position:-96px 4px;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.3);box-shadow:0 0 0 1px rgba(0,0,0,.3)}.wp-core-ui .attachment-close:focus,.wp-core-ui .attachment-close:hover{background-position:-36px 4px}.wp-core-ui .attachment .check{display:none;height:24px;width:24px;padding:0;position:absolute;z-index:10;top:0;left:0;outline:0;background:#eee;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15);box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15)}.wp-core-ui .attachment .check .media-modal-icon{display:block;background-position:-1px 0;height:15px;width:15px;margin:5px}.wp-core-ui .attachment .check:hover .media-modal-icon{background-position:-40px 0}.wp-core-ui .attachment.selected .check{display:block}.wp-core-ui .attachment.details .check,.wp-core-ui .attachment.selected .check:focus,.wp-core-ui .media-frame.mode-grid .attachment.selected .check{background-color:#0073aa;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #0073aa;box-shadow:0 0 0 1px #fff,0 0 0 2px #0073aa}.wp-core-ui .attachment.details .check .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check .media-modal-icon{background-position:-21px 0}.wp-core-ui .attachment.details .check:hover .media-modal-icon,.wp-core-ui .attachment.selected .check:focus .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check:hover .media-modal-icon{background-position:-60px 0}.wp-core-ui .media-frame .attachment .describe{position:relative;display:block;width:100%;margin:0;padding:8px;font-size:12px;-webkit-border-radius:0;border-radius:0}.media-frame .attachments-browser{position:relative;width:100%;height:100%;overflow:hidden}.attachments-browser .media-toolbar{left:300px;height:50px}.attachments-browser.hide-sidebar .media-toolbar{left:0}.attachments-browser .media-toolbar-primary>.media-button,.attachments-browser .media-toolbar-primary>.media-button-group,.attachments-browser .media-toolbar-secondary>.media-button,.attachments-browser .media-toolbar-secondary>.media-button-group{margin:11px 0}.attachments-browser .attachments{padding:2px 8px 8px}.attachments-browser .attachments,.attachments-browser .uploader-inline{position:absolute;top:50px;right:0;left:300px;bottom:0;overflow:auto;outline:0}.attachments-browser .uploader-inline.hidden{display:none}.attachments-browser .media-toolbar-primary{max-width:33%}.attachments-browser .media-toolbar-secondary{max-width:66%}.uploader-inline .close{background-color:transparent;border:0;cursor:pointer;height:48px;position:absolute;left:0;text-align:center;top:0;width:50px;z-index:1}.uploader-inline .close:before{font:400 30px/50px dashicons!important;color:#777;display:inline-block;content:"\f335";font-weight:300}.attachments-browser.hide-sidebar .attachments,.attachments-browser.hide-sidebar .uploader-inline{left:0;margin-left:0}.attachments-browser .instructions{display:inline-block;margin-top:16px;line-height:18px;font-size:13px;color:#666;margin-left:.5em}.attachments-browser .no-media{padding:2em 2em 0 0}.media-progress-bar{position:relative;height:10px;width:70%;margin:10px auto;-webkit-border-radius:10px;border-radius:10px;background:#dfdfdf;background:rgba(0,0,0,.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#0073aa;-webkit-border-radius:10px;border-radius:10px;-webkit-transition:width .3s;transition:width .3s}.media-uploader-status .media-progress-bar{display:none;width:100%}.uploading.media-uploader-status .media-progress-bar{display:block}.attachment-preview .media-progress-bar{position:absolute;top:50%;right:15%;width:70%;margin:-5px 0 0}.media-uploader-status{position:relative;margin:0 auto;padding-bottom:10px;max-width:400px}.uploader-inline .media-uploader-status h2,.uploader-inline .media-uploader-status h3{display:none}.media-uploader-status .upload-details{display:none;font-size:12px;color:#666}.uploading.media-uploader-status .upload-details{display:block}.media-uploader-status .upload-detail-separator{padding:0 4px}.media-uploader-status .upload-count{color:#464646}.media-uploader-status .upload-dismiss-errors,.media-uploader-status .upload-errors{display:none}.errors.media-uploader-status .upload-dismiss-errors,.errors.media-uploader-status .upload-errors{display:block}.media-uploader-status .upload-dismiss-errors{text-decoration:none}.media-sidebar .media-uploader-status .upload-dismiss-errors{position:absolute;top:0;left:0}.upload-errors .upload-error{padding:12px;margin-bottom:12px;background:#fff;border-right:4px solid #dc3232;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.uploader-inline .upload-errors .upload-error{background-color:#fbeaea;-webkit-box-shadow:none;box-shadow:none}.upload-errors .upload-error-filename{font-weight:700}.upload-errors .upload-error-message{display:block;padding-top:8px;word-wrap:break-word}.uploader-window{position:fixed;top:0;right:0;left:0;bottom:0;background:rgba(0,86,132,.9);z-index:250000;display:none;text-align:center;opacity:0;-webkit-transition:opacity 250ms;transition:opacity 250ms}.uploader-window-content{position:absolute;top:10px;right:10px;left:10px;bottom:10px;border:1px dashed #fff}.uploader-window h1,.uploader-window h3{margin:-.5em 0 0;position:absolute;top:50%;right:0;left:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:40px;color:#fff;padding:0}.uploader-window .media-progress-bar{margin-top:20px;max-width:300px;background:0 0;border-color:#fff;display:none}.uploader-window .media-progress-bar div{background:#fff}.uploading .uploader-window .media-progress-bar{display:block}.media-frame .uploader-inline{margin-bottom:20px;padding:0;text-align:center}.uploader-inline-content{position:absolute;top:30%;right:0;left:0}.uploader-inline-content .upload-ui{margin:2em 0}.uploader-inline-content .post-upload-ui{margin-bottom:2em}.uploader-inline .has-upload-message .upload-ui{margin:0 0 4em}.uploader-inline h2,.uploader-inline h3{font-size:20px;line-height:28px;font-weight:400;margin:0}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#464646;font-weight:400}.uploader-inline .drop-instructions{display:none}.supports-drag-drop .uploader-inline .drop-instructions{display:block}.uploader-inline p{font-size:12px;margin:.5em 0}.uploader-inline .media-progress-bar{display:none}.uploading.uploader-inline .media-progress-bar{display:block}.uploader-inline .browser{display:inline-block!important}.media-selection{position:absolute;top:0;right:0;left:350px;height:60px;padding:0 16px 0 0;overflow:hidden;white-space:nowrap}.media-selection .selection-info{display:inline-block;font-size:12px;height:60px;margin-left:10px;vertical-align:top}.media-selection.editing,.media-selection.empty,.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:20px;font-weight:700}.media-selection .attachments,.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .button-link{float:right;padding:1px 8px;margin:1px -8px 1px 8px;line-height:16px;border-left:1px solid #dfdfdf;color:#0073aa}.media-selection .button-link:focus,.media-selection .button-link:hover{color:#00a0d2}.media-selection .button-link:last-child{border-left:0;margin-left:0}.selection-info .clear-selection{color:#bc0b0b}.selection-info .clear-selection:focus,.selection-info .clear-selection:hover{color:red}.media-selection .attachments{height:48px;margin:6px;padding:0;overflow:hidden}.media-selection .attachment{width:40px;padding:0;margin:4px}.media-selection .attachment .thumbnail{top:0;left:0;bottom:0;right:0}.media-selection .attachment .icon{width:50%}.media-selection .attachment-preview{-webkit-box-shadow:none;box-shadow:none;background:0 0}.wp-core-ui .media-selection .attachment.details:focus,.wp-core-ui .media-selection .attachment:focus,.wp-core-ui .media-selection .selected.attachment:focus{-webkit-box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9;box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9}.wp-core-ui .media-selection .selected.attachment{-webkit-box-shadow:none;box-shadow:none}.wp-core-ui .media-selection .attachment.details{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #0073aa;box-shadow:0 0 0 1px #fff,0 0 0 3px #0073aa}.media-selection:after{content:"";display:block;position:absolute;top:0;left:0;bottom:0;width:25px;background-image:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,1)),to(rgba(255,255,255,0)));background-image:-webkit-linear-gradient(left,rgba(255,255,255,1),rgba(255,255,255,0));background-image:linear-gradient(to right,rgba(255,255,255,1),rgba(255,255,255,0))}.media-selection .attachment .filename{display:none}.media-frame .spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;float:left;display:inline-block;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:0;vertical-align:middle}.attachment-details.save-waiting .settings-save-status .spinner,.media-frame .embed-loading .embed-url .spinner,.media-frame .spinner.is-active{visibility:visible}.media-toolbar .spinner{margin-top:14px}.attachment-details{position:relative;overflow:auto}.attachment-details .settings-save-status{float:left;text-transform:none;z-index:10}.attachment-details .settings-save-status .spinner{margin-right:5px}.attachment-details .settings-save-status .saved{float:left;display:none}.attachment-details.save-complete .settings-save-status .saved{display:block}.attachment-info{overflow:hidden;min-height:60px;margin-bottom:16px;line-height:18px;color:#666;border-bottom:1px solid #ddd;padding-bottom:11px}.attachment-info .filename{font-weight:700;color:#464646;word-wrap:break-word}.attachment-info .thumbnail{position:relative;float:right;max-width:120px;max-height:120px;margin-top:5px;margin-left:10px;margin-bottom:5px}.uploading .attachment-info .thumbnail{width:120px;height:80px;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1);box-shadow:inset 0 0 15px rgba(0,0,0,.1)}.uploading .attachment-info .media-progress-bar{margin-top:35px}.attachment-info .thumbnail-image:after{content:"";display:block;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);overflow:hidden}.attachment-info .thumbnail img{display:block;max-width:120px;max-height:120px;margin:0 auto}.attachment-info .details{float:right;font-size:12px;max-width:100%}.attachment-info .delete-attachment,.attachment-info .edit-attachment,.attachment-info .trash-attachment,.attachment-info .untrash-attachment{display:block;text-decoration:none;white-space:nowrap}.attachment-details.needs-refresh .attachment-info .edit-attachment{display:none}.attachment-info .edit-attachment{display:block}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment{display:inline;padding:0;color:#bc0b0b}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover{color:red}.attachment-display-settings{width:100%;float:right;overflow:hidden}.attachment-display-settings h4{margin:1.4em 0 .4em}.collection-settings{overflow:hidden}.collection-settings .setting input[type=checkbox]{float:right;margin-left:8px}.collection-settings .setting span{min-width:inherit}.media-modal .imgedit-wrap{position:static}.media-modal .imgedit-wait{height:auto!important;left:0;bottom:0;right:0}.media-modal .imgedit-wrap .imgedit-panel-content{padding:16px;position:absolute;top:0;left:282px;bottom:0;right:0;overflow:auto}.media-modal .imgedit-wrap .imgedit-settings{background:#f3f3f3;border-right:1px solid #ddd;padding:0 16px 16px;position:absolute;top:0;left:0;bottom:0;width:250px;overflow:auto}.media-modal .imgedit-group{background:0 0;border:none;border-bottom:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;margin:0 0 16px;padding:0 0 16px;position:relative}.media-modal .imgedit-group:last-of-type{border:none;margin:0;padding:0}.media-modal .imgedit-group-top h2,.media-modal .imgedit-group-top h3{text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 0}.media-modal .imgedit-group-top h2 a,.media-modal .imgedit-group-top h3 a{text-decoration:none;color:#666}.media-modal .imgedit-help-toggle{margin-top:-2px;cursor:pointer;color:#666}.media-modal .imgedit-help-toggled span.dashicons:before{content:"\f142"}.media-modal .imgedit-group img{margin-top:5px}.media-modal .imgedit-wrap div.updated{margin:0 0 16px}.embed-url{display:block;position:relative;padding:16px;margin:0;z-index:250;background:#fff;font-size:18px}.media-frame .embed-url input{font-size:18px;padding:12px 14px;width:100%;min-width:200px;-webkit-box-shadow:inset -2px 2px 4px -2px rgba(0,0,0,.1);box-shadow:inset -2px 2px 4px -2px rgba(0,0,0,.1)}.media-frame .embed-url .spinner{position:absolute;top:32px;left:26px}.embed-link-settings,.embed-media-settings{position:absolute;top:70px;right:0;left:0;bottom:0;padding:16px 16px 32px;overflow:auto}.media-embed .embed-link-settings{overflow:visible}.embed-preview embed,.embed-preview iframe,.embed-preview img,.mejs-container video{max-width:100%;vertical-align:middle}.embed-preview a{display:inline-block}.embed-preview img{display:block;height:auto}.mejs-container:focus{outline:#5b9dd9 solid 1px;-webkit-box-shadow:0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 2px 1px rgba(30,140,190,.8)}.image-details .media-modal{right:140px;left:140px}.image-details .media-frame-content,.image-details .media-frame-router,.image-details .media-frame-title{right:0}.image-details .embed-media-settings{top:0;overflow:visible;padding:0}.image-details .embed-media-settings,.image-details .embed-media-settings div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.image-details .column-settings{background:#f3f3f3;border-left:1px solid #ddd;min-height:100%;width:55%;position:absolute;top:0;right:0}.image-details .column-settings h2,.image-details .column-settings h3{margin:20px;padding-top:20px;border-top:1px solid #ddd;color:#23282d}.image-details .column-image{width:45%;position:absolute;right:55%;top:0}.image-details .image{margin:20px}.image-details .image img{max-width:100%;max-height:500px}.image-details .advanced-toggle{padding:0;color:#666;text-transform:uppercase}.image-details .advanced-toggle:after{font:400 20px/1 dashicons;speak:none;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f140";display:inline-block;margin-top:-2px}.image-details .advanced-visible .advanced-toggle:after{content:"\f142"}.image-details .embed-media-settings .size{margin-bottom:4px}.image-details .custom-size span{display:block}.image-details .custom-size label{display:block;float:right}.image-details .custom-size span small{color:#999;font-size:inherit}.image-details .custom-size input{width:5em}.image-details .custom-size .sep{float:right;margin:26px 6px 0}.image-details .custom-size:after{content:"";display:table;clear:both}.media-embed .thumbnail{max-width:100%;max-height:200px;position:relative;float:right}.media-embed .thumbnail img{max-height:200px;display:block}.media-embed .thumbnail:after{content:"";display:block;position:absolute;top:0;right:0;left:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.media-embed .setting{width:100%;margin:10px 0;float:right;display:block;clear:both}.image-details .embed-media-settings .setting{float:none;width:auto}.image-details .actions{margin:10px 0}.image-details .hidden{display:none}.media-embed .setting input[type=text],.media-embed .setting textarea{display:block;width:100%;max-width:400px;margin:1px 0}.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{max-width:inherit;width:70%}.image-details .embed-media-settings .custom-size,.image-details .embed-media-settings .link-target,.image-details .embed-media-settings .setting input.link-to-custom{margin-right:27%;width:70%}.image-details .embed-media-settings .link-target{margin-top:24px}.media-embed .setting input.hidden,.media-embed .setting textarea.hidden{display:none}.media-embed .setting span{display:block;width:200px;font-size:13px;line-height:24px;color:#666}.image-details .embed-media-settings .setting span{float:right;width:25%;text-align:left;margin:8px 1% 0;line-height:1.1}.media-embed .setting .button-group{margin:2px 0}.media-embed-sidebar{position:absolute;top:0;right:440px}.advanced-section,.link-settings{margin-top:10px}.wp-editor-wrap .uploader-editor{background:rgba(150,150,150,.9);position:absolute;top:0;right:0;width:100%;height:100%;z-index:99998;display:none;text-align:center}.wp-editor-wrap .uploader-editor-content{border:1px dashed #fff;position:absolute;top:10px;right:10px;left:10px;bottom:10px}.wp-editor-wrap .uploader-editor .uploader-editor-title{position:absolute;top:50%;right:0;left:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:3em;line-height:1.3;font-weight:700;color:#fff;padding:0;margin:0;display:none}.wp-editor-wrap .uploader-editor.droppable{background:rgba(0,86,132,.9)}.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title{display:block}.ie7 .media-frame .attachments-browser{position:static}.ie7 .media-frame .embed-url input{margin-top:4px;width:90%}.ie7 .compat-item{width:99%}.ie7 .attachment-display-settings{width:auto}.ie7 .attachment-preview,.ie7 .attachment-preview .thumbnail{width:120px;height:120px}.ie7 .media-frame .attachment .describe{width:102px}.ie7 .media-sidebar .setting select{max-width:55%}.ie7 .media-sidebar .setting input[type=tel],.ie7 .media-sidebar .setting input[type=text],.ie7 .media-sidebar .setting input[type=password],.ie7 .media-sidebar .setting input[type=number],.ie7 .media-sidebar .setting input[type=search],.ie7 .media-sidebar .setting input[type=email],.ie7 .media-sidebar .setting input[type=url],.ie7 .media-sidebar .setting textarea{width:55%}.ie7 .media-sidebar .setting .link-to-custom{float:right}.rtl .media-frame,.rtl .media-frame .search,.rtl .media-frame input[type=tel],.rtl .media-frame input[type=text],.rtl .media-frame input[type=password],.rtl .media-frame input[type=number],.rtl .media-frame input[type=search],.rtl .media-frame input[type=email],.rtl .media-frame input[type=url],.rtl .media-frame select,.rtl .media-frame textarea,.rtl .media-modal{font-family:Tahoma,sans-serif}:lang(he-il) .rtl .media-frame,:lang(he-il) .rtl .media-frame .search,:lang(he-il) .rtl .media-frame input[type=text],:lang(he-il) .rtl .media-frame input[type=password],:lang(he-il) .rtl .media-frame input[type=number],:lang(he-il) .rtl .media-frame input[type=search],:lang(he-il) .rtl .media-frame input[type=email],:lang(he-il) .rtl .media-frame input[type=url],:lang(he-il) .rtl .media-frame select,:lang(he-il) .rtl .media-frame textarea,:lang(he-il) .rtl .media-modal{font-family:Arial,sans-serif}@media only screen and (max-width:900px){.media-frame:not(.hide-menu) .media-frame-content,.media-frame:not(.hide-menu) .media-frame-router,.media-frame:not(.hide-menu) .media-frame-title,.media-frame:not(.hide-menu) .media-frame-toolbar{right:0}.media-frame:not(.hide-menu) .media-frame-menu{position:static;width:0}.media-frame:not(.hide-menu) .media-menu{width:auto;max-width:80%;overflow:auto;z-index:2000;top:50px;right:-300px;left:auto;bottom:auto;padding:5px 0;border:1px solid #ccc}.media-frame:not(.hide-menu) .media-menu.visible{right:0}.media-frame:not(.hide-menu) .media-menu>a{padding:12px 16px;font-size:16px}.media-frame:not(.hide-menu) .media-menu>a.active{display:none}.media-frame:not(.hide-menu) .media-menu .separator{margin:5px 10px}.media-frame:not(.hide-menu) .media-frame-title{right:0}.media-frame:not(.hide-menu) .media-frame-title .dashicons{display:inline-block;line-height:50px}.media-frame:not(.hide-menu) .media-frame-title h1{color:#0073aa;line-height:3;font-size:18px;float:right;cursor:pointer}.media-sidebar{width:230px}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{left:262px}.attachment-details .setting,.media-sidebar .setting{margin:6px 0}.attachment-details .setting input,.attachment-details .setting span,.attachment-details .setting textarea,.compat-item label span,.media-sidebar .setting input,.media-sidebar .setting span,.media-sidebar .setting textarea{float:none}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{text-align:inherit;min-height:16px;margin:0;padding:8px 2px 0}.attachment-details .setting .value,.media-sidebar .setting .value{float:none;width:auto}.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting select,.attachment-details .setting textarea,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=url],.media-sidebar .setting select,.media-sidebar .setting textarea{float:none;width:98%;max-width:none;height:auto}.attachment-details .setting select.columns,.media-sidebar .setting select.columns{width:auto}.media-frame .search,.media-frame input,.media-frame textarea{padding:3px 6px}.image-details .column-image{width:30%;right:70%}.image-details .column-settings{width:70%}.image-details .media-modal{right:30px;left:30px}.image-details .embed-media-settings .setting{margin:20px}.image-details .embed-media-settings .setting span{float:none;text-align:right;width:100%;margin-bottom:4px}.image-details .embed-media-settings .setting input.link-to-custom,.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{width:100%;margin-right:0}.image-details .embed-media-settings .custom-size{margin-right:20px}.collection-settings .setting input[type=checkbox]{margin-top:0}.media-selection{min-width:120px}.media-selection:after{background:0 0}.media-selection .attachments{display:none}.media-modal .attachments-browser .media-toolbar .search{max-width:100%;height:auto;float:left}.media-modal .attachments-browser .media-toolbar .attachment-filters{height:auto}.media-modal .attachments-browser .media-toolbar .spinner{margin:14px 2px 0}.media-frame input[type=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-size:16px}}@media only screen and (max-width:640px),screen and (max-height:400px){.image-details .media-modal,.media-modal{position:fixed;top:0;right:0;left:0;bottom:0}.media-modal-backdrop{position:fixed}.media-sidebar{z-index:1900;max-width:70%;bottom:120%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding-bottom:0}.media-sidebar.visible{bottom:0}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{left:0}.image-details .media-frame-title{display:block;top:0;font-size:14px}.image-details .column-image,.image-details .column-settings{width:100%;position:relative;right:0}.image-details .column-settings{padding:4px 0}.media-frame-content .media-toolbar .instructions{display:none}}@media screen and (max-height:400px){.media-menu{padding:0}.media-frame-router{top:44px}.media-frame-content{top:78px}.attachments-browser .attachments{top:40px}.embed-link-settings{overflow:visible}}@media only screen and (max-width:480px){.media-modal-close{top:-5px}.media-modal .media-frame-title{height:40px}.wp-core-ui.wp-customizer .media-button{margin-top:13px}.media-frame:not(.hide-menu) .media-frame-title h1,.media-modal .media-frame-title h1{font-size:18px;line-height:40px}.media-frame:not(.hide-menu) .media-frame-title .dashicons{line-height:40px}.media-frame-router,.media-frame:not(.hide-menu) .media-menu{top:40px}.media-frame-content{top:74px}.media-frame.hide-router .media-frame-content{top:40px}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.media-modal-icon{background-image:url(../images/uploader-icons-2x.png);-webkit-background-size:134px 15px;background-size:134px 15px}.media-frame .spinner{background-image:url(../images/spinner-2x.gif)}}.media-frame-content[data-columns="1"] .attachment{width:100%}.media-frame-content[data-columns="2"] .attachment{width:50%}.media-frame-content[data-columns="3"] .attachment{width:33.33%}.media-frame-content[data-columns="4"] .attachment{width:25%}.media-frame-content[data-columns="5"] .attachment{width:20%}.media-frame-content[data-columns="6"] .attachment{width:16.66%}.media-frame-content[data-columns="7"] .attachment{width:14.28%}.media-frame-content[data-columns="8"] .attachment{width:12.5%}.media-frame-content[data-columns="9"] .attachment{width:11.11%}.media-frame-content[data-columns="10"] .attachment{width:10%}.media-frame-content[data-columns="11"] .attachment{width:9.09%}.media-frame-content[data-columns="12"] .attachment{width:8.33%}
\ No newline at end of file
index 2d4aba74534734663f77670d91423e6a6897ab55..c20c17945cccfe6d019d23fdae33481c8eda6391 100644 (file)
@@ -7,12 +7,12 @@
        box-sizing: content-box;
 }
 
-.media-frame input,
-.media-frame select,
-.media-frame textarea {
-    -webkit-box-sizing: border-box;
-    -moz-box-sizing: border-box;
-    box-sizing: border-box;
+.media-modal input,
+.media-modal select,
+.media-modal textarea {
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
 }
 
 .media-modal,
 
 .media-frame a {
        border-bottom: none;
-       color: #21759b;
+       color: #0073aa;
+}
+
+.media-frame a:hover,
+.media-frame a:active {
+       color: #00a0d2;
 }
 
-.media-frame a:hover {
-       color: #d54e21;
+.media-frame a:focus {
+       -webkit-box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow:
+               0 0 0 1px #5b9dd9,
+               0 0 2px 1px rgba(30, 140, 190, .8);
+       outline: none;
+       color: #124964;
 }
 
 .media-frame a.button {
 }
 
 .media-modal-close .media-modal-icon:before {
-       content: '\f158';
-       font: normal 20px/1 'dashicons';
+       content: "\f158";
+       font: normal 20px/1 dashicons;
        speak: none;
        vertical-align: middle;
        -webkit-font-smoothing: antialiased;
        -webkit-font-smoothing: subpixel-antialiased;
 }
 
+.media-modal-content .media-frame select.attachment-filters {
+       margin-top: 11px;
+       margin-right: 2%;
+       width: 42%;
+       width: -webkit-calc(48% - 12px);
+       width: calc(48% - 12px);
+}
+
+.media-modal-content .attachments-browser .media-toolbar-secondary {
+       width: 66%;
+}
+
+.media-modal-content .media-toolbar-primary.search-form {
+       width: 33%;
+}
+
+.media-modal-content .media-toolbar-primary .media-button {
+       float: right;
+}
+
+.media-modal-content .attachments-browser .search {
+       width: 100%;
+}
+
 /* higher specificity */
 .wp-core-ui .media-modal-icon {
        background-image: url(../images/uploader-icons.png);
        width: 100%;
 }
 
-.media-sidebar h3,
-.image-details h3 {
+.media-sidebar h3, /* Back-compat for pre-4.4 */
+.image-details h3, /* Back-compat for pre-4.4 */
+.media-sidebar h2,
+.image-details h2 {
        position: relative;
        font-weight: bold;
        text-transform: uppercase;
 }
 
 .media-menu > a:hover {
-       color: #21759B;
+       color: #0073aa;
        background: rgba( 0, 0, 0, 0.04 );
 }
 
 .wp-core-ui .attachment.details {
        -webkit-box-shadow:
                inset 0 0 0 3px #fff,
-               inset 0 0 0 7px #1e8cbe;
+               inset 0 0 0 7px #0073aa;
        box-shadow:
                inset 0 0 0 3px #fff,
-               inset 0 0 0 7px #1e8cbe;
+               inset 0 0 0 7px #0073aa;
 }
 
 .wp-core-ui .attachment-preview {
 }
 
 .wp-core-ui .attachment-preview:before {
-       content: '';
+       content: "";
        display: block;
        padding-top: 100%;
 }
 }
 
 .wp-core-ui .attachment .thumbnail:after {
-       content: '';
+       content: "";
        display: block;
        position: absolute;
        top: 0;
 .wp-core-ui .attachment.details .check,
 .wp-core-ui .attachment.selected .check:focus,
 .wp-core-ui .media-frame.mode-grid .attachment.selected .check {
-       background-color: #1e8cbe;
+       background-color: #0073aa;
        -webkit-box-shadow:
                0 0 0 1px #fff,
-               0 0 0 2px #1e8cbe;
+               0 0 0 2px #0073aa;
        box-shadow:
                0 0 0 1px #fff,
-               0 0 0 2px #1e8cbe;
+               0 0 0 2px #0073aa;
 }
 
 .wp-core-ui .attachment.details .check .media-modal-icon,
 }
 
 .uploader-inline .close:before {
-       font: normal 30px/50px 'dashicons' !important;
+       font: normal 30px/50px dashicons !important;
        color: #777;
        display: inline-block;
-       content: '\f335';
+       content: "\f335";
        font-weight: 300;
 }
 
        height: 10px;
        min-width: 20px;
        width: 0;
-       background: #1e8cbe;
+       background: #0073aa;
        -webkit-border-radius: 10px;
        border-radius: 10px;
        -webkit-transition: width 300ms;
        max-width: 400px;
 }
 
-.uploader-inline .media-uploader-status h3 {
+.uploader-inline .media-uploader-status h3, /* Back-compat for pre-4.4 */
+.uploader-inline .media-uploader-status h2 {
        display: none;
 }
 
        padding: 12px;
        margin-bottom: 12px;
        background: #fff;
-       border-left: 4px solid #dd3d36;
+       border-left: 4px solid #dc3232;
        -webkit-box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
        box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.1);
 }
 
+.uploader-inline .upload-errors .upload-error {
+       background-color: #fbeaea;
+       -webkit-box-shadow: none;
+       box-shadow: none;
+}
+
 .upload-errors .upload-error-filename {
        font-weight: bold;
 }
        border: 1px dashed #fff;
 }
 
-.uploader-window h3 {
+.uploader-window h3, /* Back-compat for pre-4.4 */
+.uploader-window h1 {
        margin: -0.5em 0 0;
        position: absolute;
        top: 50%;
        margin: 0 0 4em;
 }
 
-.uploader-inline h3 {
+.uploader-inline h3, /* Back-compat for pre-4.4 */
+.uploader-inline h2 {
        font-size: 20px;
        line-height: 28px;
        font-weight: 400;
        margin: 1px 8px 1px -8px;
        line-height: 16px;
        border-right: 1px solid #dfdfdf;
-       color: #21759B;
+       color: #0073aa;
 }
 
 .media-selection .button-link:hover,
 .media-selection .button-link:focus {
-       background: #21759B;
-       color: #fff;
-       border-color: transparent;
+       color: #00a0d2;
 }
 
 .media-selection .button-link:last-child {
 }
 
 .selection-info .clear-selection {
-       color: red;
+       color: #bc0b0b;
 }
 
 .selection-info .clear-selection:hover,
 .selection-info .clear-selection:focus {
-       background: red;
-       color: #fff;
+       color: red;
 }
 
 .media-selection .selection-view {
 .wp-core-ui .media-selection .attachment.details {
        -webkit-box-shadow:
                0 0 0 1px #fff,
-               0 0 0 3px #1e8cbe;
+               0 0 0 3px #0073aa;
        box-shadow:
                0 0 0 1px #fff,
-               0 0 0 3px #1e8cbe;
+               0 0 0 3px #0073aa;
 }
 
 .media-selection:after {
-       content: '';
+       content: "";
        display: block;
        position: absolute;
        top: 0;
        width: 25px;
        background-image: -webkit-gradient(linear, right top, left top, from(rgba( 255, 255, 255, 1 )), to(rgba( 255, 255, 255, 0 )));
        background-image: -webkit-linear-gradient(right, rgba( 255, 255, 255, 1 ), rgba( 255, 255, 255, 0 ));
-       background-image: linear-gradient(to left, rgba( 255, 255, 255, 1 ) ,  rgba( 255, 255, 255, 0 ) );
+       background-image: linear-gradient(to left, rgba( 255, 255, 255, 1 ), rgba( 255, 255, 255, 0 ));
 }
 
 .media-selection .attachment .filename {
 }
 
 .attachment-info .thumbnail-image:after {
-       content: '';
+       content: "";
        display: block;
        position: absolute;
        top: 0;
        padding: 0;
 }
 
-.media-modal .imgedit-group-top h3 {
+.media-modal .imgedit-group-top h3, /* Back-compat for pre-4.4 */
+.media-modal .imgedit-group-top h2 {
        text-transform: uppercase;
        font-size: 12px;
        color: #666;
        margin-top: 24px;
 }
 
-.media-modal .imgedit-group-top h3 a {
+.media-modal .imgedit-group-top h3 a, /* Back-compat for pre-4.4 */
+.media-modal .imgedit-group-top h2 a {
        text-decoration: none;
        color: #666;
 }
 }
 
 .media-modal .imgedit-help-toggled span.dashicons:before {
-       content: '\f142';
+       content: "\f142";
 }
 
 .media-modal .imgedit-group img {
        left: 0;
 }
 
-.image-details .column-settings h3 {
+.image-details .column-settings h3, /* Back-compat for pre-4.4 */
+.image-details .column-settings h2 {
        margin: 20px;
        padding-top: 20px;
        border-top: 1px solid #ddd;
+       color: #23282d;
 }
 
 .image-details .column-image {
 }
 
 .image-details .advanced-toggle:after {
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        vertical-align: top;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
-       content: '\f140';
+       content: "\f140";
        display: inline-block;
        margin-top: -2px;
 }
 
 .image-details .advanced-visible .advanced-toggle:after {
-       content: '\f142';
+       content: "\f142";
 }
 
 .image-details .embed-media-settings .size {
 }
 
 .image-details .custom-size:after {
-       content: '';
+       content: "";
        display: table;
        clear: both;
 }
 }
 
 .media-embed .thumbnail:after {
-       content: '';
+       content: "";
        display: block;
        position: absolute;
        top: 0;
 
        .media-frame:not(.hide-menu) .media-frame-title {
                left: 0;
-               color: #21759b;
        }
 
        .media-frame:not(.hide-menu) .media-frame-title .dashicons {
        }
 
        .media-frame:not(.hide-menu) .media-frame-title h1 {
+               color: #0073aa;
                line-height: 3;
                font-size: 18px;
                float: left;
index b6d0b5f2f9ff4c4461a5fa4d63a8c3ddb37b2fca..be8ce1cbc65fae6b1b0af15156f3ded07d6ad53e 100644 (file)
@@ -1,8 +1,8 @@
-.media-modal *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.media-frame input,.media-frame select,.media-frame textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.media-frame,.media-modal{font-family:"Open Sans",sans-serif;font-size:12px;-webkit-overflow-scrolling:touch}.media-frame input,.media-frame textarea{padding:6px 8px}.media-frame select,.wp-admin .media-frame select{line-height:28px;margin-top:3px}.media-frame a{border-bottom:none;color:#21759b}.media-frame a:hover{color:#d54e21}.media-frame a.button{color:#32373c}.media-frame a.button:hover{color:#23282d}.media-frame a.button-primary,.media-frame a.button-primary:hover{color:#fff}.media-frame input[type=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-family:"Open Sans",sans-serif;font-size:12px;border-width:1px;border-style:solid;border-color:#dfdfdf}.media-frame input[type=text]:focus,.media-frame input[type=password]:focus,.media-frame input[type=number]:focus,.media-frame input[type=search]:focus,.media-frame input[type=email]:focus,.media-frame input[type=url]:focus,.media-frame select:focus,.media-frame textarea:focus{border-color:#5b9dd9}.media-frame select{height:24px;padding:2px}.media-frame input:disabled,.media-frame input[readonly],.media-frame textarea:disabled,.media-frame textarea[readonly]{background-color:#eee}.media-frame input[type=search]{-webkit-appearance:textfield}.media-frame :-moz-placeholder{color:#a9a9a9}.media-frame .hidden{display:none}/*!
+.media-menu,.media-router{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.media-modal *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.media-modal input,.media-modal select,.media-modal textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.media-frame,.media-modal{font-family:"Open Sans",sans-serif;font-size:12px;-webkit-overflow-scrolling:touch}.media-frame input,.media-frame textarea{padding:6px 8px}.media-frame select,.wp-admin .media-frame select{line-height:28px;margin-top:3px}.media-frame a{border-bottom:none;color:#0073aa}.media-frame a:active,.media-frame a:hover{color:#00a0d2}.media-frame a:focus{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);outline:0;color:#124964}.media-frame a.button{color:#32373c}.media-frame a.button:hover{color:#23282d}.media-frame a.button-primary,.media-frame a.button-primary:hover{color:#fff}.media-frame input[type=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-family:"Open Sans",sans-serif;font-size:12px;border-width:1px;border-style:solid;border-color:#dfdfdf}.media-frame input[type=text]:focus,.media-frame input[type=password]:focus,.media-frame input[type=number]:focus,.media-frame input[type=search]:focus,.media-frame input[type=email]:focus,.media-frame input[type=url]:focus,.media-frame select:focus,.media-frame textarea:focus{border-color:#5b9dd9}.media-frame select{height:24px;padding:2px}.media-frame input:disabled,.media-frame input[readonly],.media-frame textarea:disabled,.media-frame textarea[readonly]{background-color:#eee}.media-frame input[type=search]{-webkit-appearance:textfield}.media-frame :-moz-placeholder{color:#a9a9a9}.media-frame .hidden{display:none}/*!
  * jQuery UI Draggable/Sortable 1.11.4
  * http://jqueryui.com
  *
  * Copyright jQuery Foundation and other contributors
  * Released under the MIT license.
  * http://jquery.org/license
- */.ui-draggable-handle,.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.media-modal{position:fixed;top:30px;left:30px;right:30px;bottom:30px;z-index:160000}.wp-customizer .media-modal{z-index:560000}.media-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.wp-customizer .media-modal-backdrop{z-index:559900}.media-modal-close{position:absolute;top:0;right:0;width:50px;height:50px;padding:0;z-index:1000;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.media-modal-close:active{-webkit-box-shadow:none;box-shadow:none;outline:0}.media-modal-close span.media-modal-icon{background-image:none}.media-modal-close .media-modal-icon:before{content:'\f158';font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#666}.media-modal-close:hover .media-modal-icon:before{color:#00a0d2}.media-modal-content{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto;min-height:300px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.7);box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fcfcfc;-webkit-font-smoothing:subpixel-antialiased}.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-menu,.media-sidebar{top:0;bottom:0;right:0;background:#f3f3f3}.media-toolbar{position:absolute;top:0;left:0;right:0;z-index:100;height:60px;padding:0 16px;border:0 solid #dfdfdf;overflow:hidden}.media-toolbar-primary{float:right;height:100%}.media-toolbar-secondary{float:left;height:100%}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-left:10px;float:left;margin-top:15px}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-right:10px;margin-top:15px}.media-sidebar{position:absolute;width:267px;padding:0 16px 24px;z-index:75;border-left:1px solid #ddd;overflow:auto;-webkit-overflow-scrolling:touch}.hide-toolbar .media-sidebar{bottom:0}.media-sidebar .sidebar-title{font-size:20px;margin:0;padding:12px 10px 10px;line-height:28px}.media-sidebar .sidebar-content{padding:0 10px;margin-bottom:130px}.media-sidebar .search{display:block;width:100%}.image-details h3,.media-sidebar h3{position:relative;font-weight:700;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}.attachment-details .setting,.media-sidebar .setting{display:block;float:left;width:100%;margin:1px 0}.attachment-details .setting label,.media-sidebar .setting label{display:block}.attachment-details .setting .link-to-custom,.media-sidebar .setting .link-to-custom{margin:3px 2px 0}.attachment-details .setting span,.media-sidebar .setting span{min-width:30%;margin-right:4%;font-size:12px;text-align:right;word-wrap:break-word}.media-sidebar .setting .name{max-width:80px}.attachment-details .setting select,.media-sidebar .setting select{max-width:65%}.attachment-details .field input[type=radio],.attachment-details .field input[type=checkbox],.attachment-details .setting input[type=radio],.attachment-details .setting input[type=checkbox],.media-sidebar .field input[type=radio],.media-sidebar .field input[type=checkbox],.media-sidebar .setting input[type=radio],.media-sidebar .setting input[type=checkbox]{float:none;margin:8px 3px 0;padding:0}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{float:left;min-height:22px;padding-top:8px;line-height:16px;font-weight:400;color:#666}.media-menu>a,.media-router>a{text-decoration:none;line-height:18px;font-size:14px}.compat-item label span{text-align:right}.attachment-details .setting .value,.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting textarea,.media-sidebar .setting .value,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=url],.media-sidebar .setting textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px;width:65%;float:right}.attachment-details .setting .value,.media-sidebar .setting .value{margin:0 1px;text-align:left}.attachment-details .setting textarea,.compat-item .field textarea,.media-sidebar .setting textarea{height:62px;resize:vertical}.attachment-details select,.media-sidebar select{margin-top:3px}.compat-item{float:left;width:100%;overflow:hidden}.compat-item table{width:100%;table-layout:fixed;border-spacing:0;border:0}.compat-item tr{padding:2px 0;display:block;overflow:hidden}.compat-item .field,.compat-item .label{display:block;margin:0;padding:0}.compat-item .label{min-width:30%;margin-right:4%;float:left;text-align:right}.compat-item .label span{display:block;width:100%}.compat-item .field{float:right;width:65%;margin:1px}.compat-item .field input[type=tel],.compat-item .field input[type=text],.compat-item .field input[type=password],.compat-item .field input[type=number],.compat-item .field input[type=search],.compat-item .field input[type=email],.compat-item .field input[type=url],.compat-item .field textarea{width:100%;margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sidebar-for-errors .attachment-details,.sidebar-for-errors .compat-item,.sidebar-for-errors .media-sidebar .media-progress-bar,.sidebar-for-errors .upload-details{display:none!important}.media-menu{position:absolute;left:0;margin:0;padding:10px 0;border-right-width:1px;border-right-style:solid;border-right-color:#ccc;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.media-menu>a{display:block;position:relative;padding:8px 20px;margin:0;color:#0073aa}.media-frame-title .dashicons,.media-frame.hide-router .media-frame-router,.media-router .active:after{display:none}.media-menu>a:hover{color:#21759B;background:rgba(0,0,0,.04)}.media-menu>a:active{outline:0}.media-menu .active,.media-menu .active:hover{color:#23282d;font-weight:700}.media-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #ddd}.media-router{position:relative;padding:0 6px;margin:0;clear:both;user-select:none}.media-router,.wp-core-ui .attachment{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.media-router a{-webkit-transition:none;transition:none}.media-router>a{position:relative;float:left;padding:8px 10px 9px;margin:0;height:18px}.media-router>a:last-child{border-right:0}.media-router>a:active{outline:0}.media-router .active,.media-router .active:hover{color:#32373c}.media-router .active,.media-router>a.active:last-child{margin:-1px -1px 0;background:#fff;border:1px solid #ddd;border-bottom:none}.media-frame{overflow:hidden;position:absolute;top:0;left:0;right:0;bottom:0}.media-frame-menu{position:absolute;top:0;left:0;bottom:0;width:200px;z-index:150}.media-frame-content,.media-frame-router,.media-frame-title,.media-frame-toolbar{right:0;position:absolute;left:200px}.media-frame-title{top:0;height:50px;z-index:200}.media-frame-router{top:50px;height:36px;z-index:200}.media-frame-content{top:84px;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.media-frame-toolbar{bottom:0;height:60px;z-index:100}.media-frame.hide-menu .media-frame-content,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-toolbar{left:0}.media-frame.hide-menu .media-frame-menu{left:-200px}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-toolbar .media-frame-toolbar{bottom:-61px}.media-frame.hide-router .media-frame-content{top:50px}.media-frame.hide-router .media-frame-title{border-bottom:1px solid #dfdfdf;-webkit-box-shadow:0 4px 4px -4px rgba(0,0,0,.1);box-shadow:0 4px 4px -4px rgba(0,0,0,.1)}.media-frame-title h1{padding:0 16px;font-size:22px;line-height:50px;margin:0}.media-frame-title .suggested-dimensions{font-size:14px;float:right;margin-right:20px}.media-frame-content .crop-content{height:100%}.wp-customizer:not(.mobile) .media-frame-content .crop-content.site-icon{margin-right:300px}.media-frame-content .crop-content .crop-image{display:block;margin:auto;max-width:100%;max-height:100%}.media-frame-content .crop-content .upload-errors{position:absolute;width:300px;top:50%;left:50%;margin-left:-150px;margin-right:-150px;z-index:600000}.media-frame .media-iframe{overflow:hidden}.media-frame .media-iframe,.media-frame .media-iframe iframe{height:100%;width:100%;border:0}.media-frame select.attachment-filters{margin-top:11px;margin-right:2%;max-width:42%;max-width:-webkit-calc(48% - 12px);max-width:calc(48% - 12px)}.media-toolbar-primary .search,.wp-core-ui .attachment .portrait img{max-width:100%}.media-frame select.attachment-filters:last-of-type{margin-right:0}.media-frame .search{margin-top:11px;padding:4px;font-size:13px;color:#464646;font-family:"Open Sans",sans-serif;-webkit-appearance:none}.wp-core-ui .attachments{margin:0;-webkit-overflow-scrolling:touch}.wp-core-ui .attachment{position:relative;float:left;padding:8px;margin:0;color:#464646;cursor:pointer;list-style:none;text-align:center;user-select:none;width:25%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui .attachment.details:focus,.wp-core-ui .attachment:focus,.wp-core-ui .selected.attachment:focus{-webkit-box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;outline:0}.wp-core-ui .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc}.wp-core-ui .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #1e8cbe;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #1e8cbe}.wp-core-ui .attachment-preview{position:relative;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);background:#eee;cursor:pointer}.wp-core-ui .attachment-preview:before{content:'';display:block;padding-top:100%}.wp-core-ui .attachment .icon{margin:0 auto;overflow:hidden}.wp-core-ui .attachment .thumbnail{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;opacity:1;-webkit-transition:opacity .1s;transition:opacity .1s}.wp-core-ui .attachment .landscape img{max-height:100%}.wp-core-ui .attachment .thumbnail:after{content:'';display:block;position:absolute;top:0;left:0;right:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.wp-core-ui .attachment .thumbnail img{top:0;left:0}.wp-core-ui .attachment .thumbnail .centered{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-transform:translate(50%,50%);-ms-transform:translate(50%,50%);transform:translate(50%,50%)}.wp-core-ui .attachment .thumbnail .centered img{-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon{-webkit-transform:translate(-50%,-70%);-ms-transform:translate(-50%,-70%);transform:translate(-50%,-70%)}.ie8 .wp-core-ui .attachment img.icon{top:20%;position:relative}.wp-core-ui .attachment .filename{position:absolute;left:0;right:0;bottom:0;overflow:hidden;max-height:100%;word-wrap:break-word;text-align:center;font-weight:700;background:rgba(255,255,255,.8);-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}.wp-core-ui .attachment .filename div{padding:5px 10px}.wp-core-ui .attachment .thumbnail img{position:absolute}.wp-core-ui .attachment-close{display:block;position:absolute;top:5px;right:5px;height:22px;width:22px;padding:0;background-color:#fff;background-position:-96px 4px;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.3);box-shadow:0 0 0 1px rgba(0,0,0,.3)}.wp-core-ui .attachment-close:focus,.wp-core-ui .attachment-close:hover{background-position:-36px 4px}.wp-core-ui .attachment .check{display:none;height:24px;width:24px;padding:0;position:absolute;z-index:10;top:0;right:0;outline:0;background:#eee;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15);box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15)}.wp-core-ui .attachment .check .media-modal-icon{display:block;background-position:-1px 0;height:15px;width:15px;margin:5px}.wp-core-ui .attachment .check:hover .media-modal-icon{background-position:-40px 0}.wp-core-ui .attachment.selected .check{display:block}.wp-core-ui .attachment.details .check,.wp-core-ui .attachment.selected .check:focus,.wp-core-ui .media-frame.mode-grid .attachment.selected .check{background-color:#1e8cbe;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #1e8cbe;box-shadow:0 0 0 1px #fff,0 0 0 2px #1e8cbe}.wp-core-ui .attachment.details .check .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check .media-modal-icon{background-position:-21px 0}.wp-core-ui .attachment.details .check:hover .media-modal-icon,.wp-core-ui .attachment.selected .check:focus .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check:hover .media-modal-icon{background-position:-60px 0}.wp-core-ui .media-frame .attachment .describe{position:relative;display:block;width:100%;margin:0;padding:8px;font-size:12px;-webkit-border-radius:0;border-radius:0}.media-frame .attachments-browser{position:relative;width:100%;height:100%;overflow:hidden}.attachments-browser .media-toolbar{right:300px;height:50px}.attachments-browser.hide-sidebar .media-toolbar{right:0}.attachments-browser .media-toolbar-primary>.media-button,.attachments-browser .media-toolbar-primary>.media-button-group,.attachments-browser .media-toolbar-secondary>.media-button,.attachments-browser .media-toolbar-secondary>.media-button-group{margin:11px 0}.attachments-browser .attachments{padding:2px 8px 8px}.attachments-browser .attachments,.attachments-browser .uploader-inline{position:absolute;top:50px;left:0;right:300px;bottom:0;overflow:auto;outline:0}.attachments-browser .uploader-inline.hidden{display:none}.attachments-browser .media-toolbar-primary{max-width:33%}.attachments-browser .media-toolbar-secondary{max-width:66%}.uploader-inline .close{background-color:transparent;border:0;cursor:pointer;height:48px;position:absolute;right:0;text-align:center;top:0;width:50px;z-index:1}.uploader-inline .close:before{font:400 30px/50px dashicons!important;color:#777;display:inline-block;content:'\f335';font-weight:300}.attachments-browser.hide-sidebar .attachments,.attachments-browser.hide-sidebar .uploader-inline{right:0;margin-right:0}.attachments-browser .instructions{display:inline-block;margin-top:16px;line-height:18px;font-size:13px;color:#666;margin-right:.5em}.attachments-browser .no-media{padding:2em 0 0 2em}.media-progress-bar{position:relative;height:10px;width:70%;margin:10px auto;-webkit-border-radius:10px;border-radius:10px;background:#dfdfdf;background:rgba(0,0,0,.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#1e8cbe;-webkit-border-radius:10px;border-radius:10px;-webkit-transition:width 300ms;transition:width 300ms}.media-uploader-status .media-progress-bar{display:none;width:100%}.uploading.media-uploader-status .media-progress-bar{display:block}.attachment-preview .media-progress-bar{position:absolute;top:50%;left:15%;width:70%;margin:-5px 0 0}.media-uploader-status{position:relative;margin:0 auto;padding-bottom:10px;max-width:400px}.uploader-inline .media-uploader-status h3{display:none}.media-uploader-status .upload-details{display:none;font-size:12px;color:#666}.uploading.media-uploader-status .upload-details{display:block}.media-uploader-status .upload-detail-separator{padding:0 4px}.media-uploader-status .upload-count{color:#464646}.media-uploader-status .upload-dismiss-errors,.media-uploader-status .upload-errors{display:none}.errors.media-uploader-status .upload-dismiss-errors,.errors.media-uploader-status .upload-errors{display:block}.media-uploader-status .upload-dismiss-errors{text-decoration:none}.media-sidebar .media-uploader-status .upload-dismiss-errors{position:absolute;top:0;right:0}.upload-errors .upload-error{padding:12px;margin-bottom:12px;background:#fff;border-left:4px solid #dd3d36;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.upload-errors .upload-error-filename{font-weight:700}.upload-errors .upload-error-message{display:block;padding-top:8px;word-wrap:break-word}.uploader-window{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,86,132,.9);z-index:250000;display:none;text-align:center;opacity:0;-webkit-transition:opacity 250ms;transition:opacity 250ms}.uploader-window-content{position:absolute;top:10px;left:10px;right:10px;bottom:10px;border:1px dashed #fff}.uploader-window h3{margin:-.5em 0 0;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:40px;color:#fff;padding:0}.uploader-window .media-progress-bar{margin-top:20px;max-width:300px;background:0 0;border-color:#fff;display:none}.uploader-window .media-progress-bar div{background:#fff}.uploading .uploader-window .media-progress-bar{display:block}.media-frame .uploader-inline{margin-bottom:20px;padding:0;text-align:center}.uploader-inline-content{position:absolute;top:30%;left:0;right:0}.uploader-inline-content .upload-ui{margin:2em 0}.uploader-inline-content .post-upload-ui{margin-bottom:2em}.uploader-inline .has-upload-message .upload-ui{margin:0 0 4em}.uploader-inline h3{font-size:20px;line-height:28px;font-weight:400;margin:0}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#464646;font-weight:400}.uploader-inline .drop-instructions{display:none}.supports-drag-drop .uploader-inline .drop-instructions{display:block}.uploader-inline p{font-size:12px;margin:.5em 0}.uploader-inline .media-progress-bar{display:none}.uploading.uploader-inline .media-progress-bar{display:block}.uploader-inline .browser{display:inline-block!important}.media-selection{position:absolute;top:0;left:0;right:350px;height:60px;padding:0 0 0 16px;overflow:hidden;white-space:nowrap}.media-selection .selection-info{display:inline-block;font-size:12px;height:60px;margin-right:10px;vertical-align:top}.media-selection.editing,.media-selection.empty,.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:20px;font-weight:700}.media-selection .attachments,.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .button-link{float:left;padding:1px 8px;margin:1px 8px 1px -8px;line-height:16px;border-right:1px solid #dfdfdf;color:#21759B}.media-selection .button-link:focus,.media-selection .button-link:hover{background:#21759B;color:#fff;border-color:transparent}.media-selection .button-link:last-child{border-right:0;margin-right:0}.selection-info .clear-selection{color:red}.selection-info .clear-selection:focus,.selection-info .clear-selection:hover{background:red;color:#fff}.media-selection .attachments{height:48px;margin:6px;padding:0;overflow:hidden}.media-selection .attachment{width:40px;padding:0;margin:4px}.media-selection .attachment .thumbnail{top:0;right:0;bottom:0;left:0}.media-selection .attachment .icon{width:50%}.media-selection .attachment-preview{-webkit-box-shadow:none;box-shadow:none;background:0 0}.wp-core-ui .media-selection .attachment.details:focus,.wp-core-ui .media-selection .attachment:focus,.wp-core-ui .media-selection .selected.attachment:focus{-webkit-box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9;box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9}.wp-core-ui .media-selection .selected.attachment{-webkit-box-shadow:none;box-shadow:none}.wp-core-ui .media-selection .attachment.details{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #1e8cbe;box-shadow:0 0 0 1px #fff,0 0 0 3px #1e8cbe}.media-selection:after{content:'';display:block;position:absolute;top:0;right:0;bottom:0;width:25px;background-image:-webkit-gradient(linear,right top,left top,from(rgba(255,255,255,1)),to(rgba(255,255,255,0)));background-image:-webkit-linear-gradient(right,rgba(255,255,255,1),rgba(255,255,255,0));background-image:linear-gradient(to left,rgba(255,255,255,1) ,rgba(255,255,255,0))}.media-selection .attachment .filename{display:none}.media-frame .spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;float:right;display:inline-block;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:0;vertical-align:middle}.attachment-details.save-waiting .settings-save-status .spinner,.media-frame .embed-loading .embed-url .spinner,.media-frame .spinner.is-active{visibility:visible}.media-toolbar .spinner{margin-top:14px}.attachment-details{position:relative;overflow:auto}.attachment-details .settings-save-status{float:right;text-transform:none;z-index:10}.attachment-details .settings-save-status .spinner{margin-left:5px}.attachment-details .settings-save-status .saved{float:right;display:none}.attachment-details.save-complete .settings-save-status .saved{display:block}.attachment-info{overflow:hidden;min-height:60px;margin-bottom:16px;line-height:18px;color:#666;border-bottom:1px solid #ddd;padding-bottom:11px}.attachment-info .filename{font-weight:700;color:#464646;word-wrap:break-word}.attachment-info .thumbnail{position:relative;float:left;max-width:120px;max-height:120px;margin-top:5px;margin-right:10px;margin-bottom:5px}.uploading .attachment-info .thumbnail{width:120px;height:80px;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1);box-shadow:inset 0 0 15px rgba(0,0,0,.1)}.uploading .attachment-info .media-progress-bar{margin-top:35px}.attachment-info .thumbnail-image:after{content:'';display:block;position:absolute;top:0;left:0;right:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);overflow:hidden}.attachment-info .thumbnail img{display:block;max-width:120px;max-height:120px;margin:0 auto}.attachment-info .details{float:left;font-size:12px;max-width:100%}.attachment-info .delete-attachment,.attachment-info .edit-attachment,.attachment-info .trash-attachment,.attachment-info .untrash-attachment{display:block;text-decoration:none;white-space:nowrap}.attachment-details.needs-refresh .attachment-info .edit-attachment{display:none}.attachment-info .edit-attachment{display:block}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment{display:inline;padding:0;color:#bc0b0b}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover{color:red}.attachment-display-settings{width:100%;float:left;overflow:hidden}.attachment-display-settings h4{margin:1.4em 0 .4em}.collection-settings{overflow:hidden}.collection-settings .setting input[type=checkbox]{float:left;margin-right:8px}.collection-settings .setting span{min-width:inherit}.media-modal .imgedit-wrap{position:static}.media-modal .imgedit-wait{height:auto!important;right:0;bottom:0;left:0}.media-modal .imgedit-wrap .imgedit-panel-content{padding:16px;position:absolute;top:0;right:282px;bottom:0;left:0;overflow:auto}.media-modal .imgedit-wrap .imgedit-settings{background:#f3f3f3;border-left:1px solid #ddd;padding:0 16px 16px;position:absolute;top:0;right:0;bottom:0;width:250px;overflow:auto}.media-modal .imgedit-group{background:0 0;border:none;border-bottom:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;margin:0 0 16px;padding:0 0 16px;position:relative}.media-modal .imgedit-group:last-of-type{border:none;margin:0;padding:0}.media-modal .imgedit-group-top h3{text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 0}.media-modal .imgedit-group-top h3 a{text-decoration:none;color:#666}.media-modal .imgedit-help-toggle{margin-top:-2px;cursor:pointer;color:#666}.media-modal .imgedit-help-toggled span.dashicons:before{content:'\f142'}.media-modal .imgedit-group img{margin-top:5px}.media-modal .imgedit-wrap div.updated{margin:0 0 16px}.embed-url{display:block;position:relative;padding:16px;margin:0;z-index:250;background:#fff;font-size:18px}.media-frame .embed-url input{font-size:18px;padding:12px 14px;width:100%;min-width:200px;-webkit-box-shadow:inset 2px 2px 4px -2px rgba(0,0,0,.1);box-shadow:inset 2px 2px 4px -2px rgba(0,0,0,.1)}.media-frame .embed-url .spinner{position:absolute;top:32px;right:26px}.embed-link-settings,.embed-media-settings{position:absolute;top:70px;left:0;right:0;bottom:0;padding:16px 16px 32px;overflow:auto}.media-embed .embed-link-settings{overflow:visible}.embed-preview embed,.embed-preview iframe,.embed-preview img,.mejs-container video{max-width:100%;vertical-align:middle}.embed-preview a{display:inline-block}.embed-preview img{display:block;height:auto}.mejs-container:focus{outline:#5b9dd9 solid 1px;-webkit-box-shadow:0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 2px 1px rgba(30,140,190,.8)}.image-details .media-modal{left:140px;right:140px}.image-details .media-frame-content,.image-details .media-frame-router,.image-details .media-frame-title{left:0}.image-details .embed-media-settings{top:0;overflow:visible;padding:0}.image-details .embed-media-settings,.image-details .embed-media-settings div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.image-details .column-settings{background:#f3f3f3;border-right:1px solid #ddd;min-height:100%;width:55%;position:absolute;top:0;left:0}.image-details .column-settings h3{margin:20px;padding-top:20px;border-top:1px solid #ddd}.image-details .column-image{width:45%;position:absolute;left:55%;top:0}.image-details .image{margin:20px}.image-details .image img{max-width:100%;max-height:500px}.image-details .advanced-toggle{padding:0;color:#666;text-transform:uppercase}.image-details .advanced-toggle:after{font:400 20px/1 dashicons;speak:none;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:'\f140';display:inline-block;margin-top:-2px}.image-details .advanced-visible .advanced-toggle:after{content:'\f142'}.image-details .embed-media-settings .size{margin-bottom:4px}.image-details .custom-size span{display:block}.image-details .custom-size label{display:block;float:left}.image-details .custom-size span small{color:#999;font-size:inherit}.image-details .custom-size input{width:5em}.image-details .custom-size .sep{float:left;margin:26px 6px 0}.image-details .custom-size:after{content:'';display:table;clear:both}.media-embed .thumbnail{max-width:100%;max-height:200px;position:relative;float:left}.media-embed .thumbnail img{max-height:200px;display:block}.media-embed .thumbnail:after{content:'';display:block;position:absolute;top:0;left:0;right:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.media-embed .setting{width:100%;margin:10px 0;float:left;display:block;clear:both}.image-details .embed-media-settings .setting{float:none;width:auto}.image-details .actions{margin:10px 0}.image-details .hidden{display:none}.media-embed .setting input[type=text],.media-embed .setting textarea{display:block;width:100%;max-width:400px;margin:1px 0}.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{max-width:inherit;width:70%}.image-details .embed-media-settings .custom-size,.image-details .embed-media-settings .link-target,.image-details .embed-media-settings .setting input.link-to-custom{margin-left:27%;width:70%}.image-details .embed-media-settings .link-target{margin-top:24px}.media-embed .setting input.hidden,.media-embed .setting textarea.hidden{display:none}.media-embed .setting span{display:block;width:200px;font-size:13px;line-height:24px;color:#666}.image-details .embed-media-settings .setting span{float:left;width:25%;text-align:right;margin:8px 1% 0;line-height:1.1}.media-embed .setting .button-group{margin:2px 0}.media-embed-sidebar{position:absolute;top:0;left:440px}.advanced-section,.link-settings{margin-top:10px}.wp-editor-wrap .uploader-editor{background:rgba(150,150,150,.9);position:absolute;top:0;left:0;width:100%;height:100%;z-index:99998;display:none;text-align:center}.wp-editor-wrap .uploader-editor-content{border:1px dashed #fff;position:absolute;top:10px;left:10px;right:10px;bottom:10px}.wp-editor-wrap .uploader-editor .uploader-editor-title{position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:3em;line-height:1.3;font-weight:700;color:#fff;padding:0;margin:0;display:none}.wp-editor-wrap .uploader-editor.droppable{background:rgba(0,86,132,.9)}.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title{display:block}.ie7 .media-frame .attachments-browser{position:static}.ie7 .media-frame .embed-url input{margin-top:4px;width:90%}.ie7 .compat-item{width:99%}.ie7 .attachment-display-settings{width:auto}.ie7 .attachment-preview,.ie7 .attachment-preview .thumbnail{width:120px;height:120px}.ie7 .media-frame .attachment .describe{width:102px}.ie7 .media-sidebar .setting select{max-width:55%}.ie7 .media-sidebar .setting input[type=tel],.ie7 .media-sidebar .setting input[type=text],.ie7 .media-sidebar .setting input[type=password],.ie7 .media-sidebar .setting input[type=number],.ie7 .media-sidebar .setting input[type=search],.ie7 .media-sidebar .setting input[type=email],.ie7 .media-sidebar .setting input[type=url],.ie7 .media-sidebar .setting textarea{width:55%}.ie7 .media-sidebar .setting .link-to-custom{float:left}.rtl .media-frame,.rtl .media-frame .search,.rtl .media-frame input[type=tel],.rtl .media-frame input[type=text],.rtl .media-frame input[type=password],.rtl .media-frame input[type=number],.rtl .media-frame input[type=search],.rtl .media-frame input[type=email],.rtl .media-frame input[type=url],.rtl .media-frame select,.rtl .media-frame textarea,.rtl .media-modal{font-family:Tahoma,sans-serif}:lang(he-il) .rtl .media-frame,:lang(he-il) .rtl .media-frame .search,:lang(he-il) .rtl .media-frame input[type=text],:lang(he-il) .rtl .media-frame input[type=password],:lang(he-il) .rtl .media-frame input[type=number],:lang(he-il) .rtl .media-frame input[type=search],:lang(he-il) .rtl .media-frame input[type=email],:lang(he-il) .rtl .media-frame input[type=url],:lang(he-il) .rtl .media-frame select,:lang(he-il) .rtl .media-frame textarea,:lang(he-il) .rtl .media-modal{font-family:Arial,sans-serif}@media only screen and (max-width:900px){.media-frame:not(.hide-menu) .media-frame-content,.media-frame:not(.hide-menu) .media-frame-router,.media-frame:not(.hide-menu) .media-frame-title,.media-frame:not(.hide-menu) .media-frame-toolbar{left:0}.media-frame:not(.hide-menu) .media-frame-menu{position:static;width:0}.media-frame:not(.hide-menu) .media-menu{width:auto;max-width:80%;overflow:auto;z-index:2000;top:50px;left:-300px;right:auto;bottom:auto;padding:5px 0;border:1px solid #ccc}.media-frame:not(.hide-menu) .media-menu.visible{left:0}.media-frame:not(.hide-menu) .media-menu>a{padding:12px 16px;font-size:16px}.media-frame:not(.hide-menu) .media-menu>a.active{display:none}.media-frame:not(.hide-menu) .media-menu .separator{margin:5px 10px}.media-frame:not(.hide-menu) .media-frame-title{left:0;color:#21759b}.media-frame:not(.hide-menu) .media-frame-title .dashicons{display:inline-block;line-height:50px}.media-frame:not(.hide-menu) .media-frame-title h1{line-height:3;font-size:18px;float:left;cursor:pointer}.media-sidebar{width:230px}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{right:262px}.attachment-details .setting,.media-sidebar .setting{margin:6px 0}.attachment-details .setting input,.attachment-details .setting span,.attachment-details .setting textarea,.compat-item label span,.media-sidebar .setting input,.media-sidebar .setting span,.media-sidebar .setting textarea{float:none}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{text-align:inherit;min-height:16px;margin:0;padding:8px 2px 0}.attachment-details .setting .value,.media-sidebar .setting .value{float:none;width:auto}.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting select,.attachment-details .setting textarea,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=url],.media-sidebar .setting select,.media-sidebar .setting textarea{float:none;width:98%;max-width:none;height:auto}.attachment-details .setting select.columns,.media-sidebar .setting select.columns{width:auto}.media-frame .search,.media-frame input,.media-frame textarea{padding:3px 6px}.image-details .column-image{width:30%;left:70%}.image-details .column-settings{width:70%}.image-details .media-modal{left:30px;right:30px}.image-details .embed-media-settings .setting{margin:20px}.image-details .embed-media-settings .setting span{float:none;text-align:left;width:100%;margin-bottom:4px}.image-details .embed-media-settings .setting input.link-to-custom,.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{width:100%;margin-left:0}.image-details .embed-media-settings .custom-size{margin-left:20px}.collection-settings .setting input[type=checkbox]{margin-top:0}.media-selection{min-width:120px}.media-selection:after{background:0 0}.media-selection .attachments{display:none}.media-modal .attachments-browser .media-toolbar .search{max-width:100%;height:auto;float:right}.media-modal .attachments-browser .media-toolbar .attachment-filters{height:auto}.media-modal .attachments-browser .media-toolbar .spinner{margin:14px 2px 0}.media-frame input[type=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-size:16px}}@media only screen and (max-width:640px),screen and (max-height:400px){.image-details .media-modal,.media-modal{position:fixed;top:0;left:0;right:0;bottom:0}.media-modal-backdrop{position:fixed}.media-sidebar{z-index:1900;max-width:70%;bottom:120%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding-bottom:0}.media-sidebar.visible{bottom:0}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{right:0}.image-details .media-frame-title{display:block;top:0;font-size:14px}.image-details .column-image,.image-details .column-settings{width:100%;position:relative;left:0}.image-details .column-settings{padding:4px 0}.media-frame-content .media-toolbar .instructions{display:none}}@media screen and (max-height:400px){.media-menu{padding:0}.media-frame-router{top:44px}.media-frame-content{top:78px}.attachments-browser .attachments{top:40px}.embed-link-settings{overflow:visible}}@media only screen and (max-width:480px){.media-modal-close{top:-5px}.media-modal .media-frame-title{height:40px}.wp-core-ui.wp-customizer .media-button{margin-top:13px}.media-frame:not(.hide-menu) .media-frame-title h1,.media-modal .media-frame-title h1{font-size:18px;line-height:40px}.media-frame:not(.hide-menu) .media-frame-title .dashicons{line-height:40px}.media-frame-router,.media-frame:not(.hide-menu) .media-menu{top:40px}.media-frame-content{top:74px}.media-frame.hide-router .media-frame-content{top:40px}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.media-modal-icon{background-image:url(../images/uploader-icons-2x.png);-webkit-background-size:134px 15px;background-size:134px 15px}.media-frame .spinner{background-image:url(../images/spinner-2x.gif)}}.media-frame-content[data-columns="1"] .attachment{width:100%}.media-frame-content[data-columns="2"] .attachment{width:50%}.media-frame-content[data-columns="3"] .attachment{width:33.33%}.media-frame-content[data-columns="4"] .attachment{width:25%}.media-frame-content[data-columns="5"] .attachment{width:20%}.media-frame-content[data-columns="6"] .attachment{width:16.66%}.media-frame-content[data-columns="7"] .attachment{width:14.28%}.media-frame-content[data-columns="8"] .attachment{width:12.5%}.media-frame-content[data-columns="9"] .attachment{width:11.11%}.media-frame-content[data-columns="10"] .attachment{width:10%}.media-frame-content[data-columns="11"] .attachment{width:9.09%}.media-frame-content[data-columns="12"] .attachment{width:8.33%}
\ No newline at end of file
+ */.ui-draggable-handle,.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.media-modal{position:fixed;top:30px;left:30px;right:30px;bottom:30px;z-index:160000}.wp-customizer .media-modal{z-index:560000}.media-modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;min-height:360px;background:#000;opacity:.7;z-index:159900}.wp-customizer .media-modal-backdrop{z-index:559900}.media-modal-close{position:absolute;top:0;right:0;width:50px;height:50px;padding:0;z-index:1000;-webkit-transition:color .1s ease-in-out,background .1s ease-in-out;transition:color .1s ease-in-out,background .1s ease-in-out}.media-modal-close:active{-webkit-box-shadow:none;box-shadow:none;outline:0}.media-modal-close span.media-modal-icon{background-image:none}.media-modal-close .media-modal-icon:before{content:"\f158";font:400 20px/1 dashicons;speak:none;vertical-align:middle;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#666}.media-modal-close:hover .media-modal-icon:before{color:#00a0d2}.media-modal-content{position:absolute;top:0;left:0;right:0;bottom:0;overflow:auto;min-height:300px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.7);box-shadow:0 5px 15px rgba(0,0,0,.7);background:#fcfcfc;-webkit-font-smoothing:subpixel-antialiased}.media-modal-content .media-frame select.attachment-filters{margin-top:11px;margin-right:2%;width:42%;width:-webkit-calc(48% - 12px);width:calc(48% - 12px)}.media-modal-content .attachments-browser .media-toolbar-secondary{width:66%}.media-modal-content .media-toolbar-primary.search-form{width:33%}.media-modal-content .media-toolbar-primary .media-button{float:right}.media-modal-content .attachments-browser .search{width:100%}.wp-core-ui .media-modal-icon{background-image:url(../images/uploader-icons.png);background-repeat:no-repeat}.media-menu,.media-sidebar{top:0;bottom:0;background:#f3f3f3;right:0}.media-toolbar{position:absolute;top:0;left:0;right:0;z-index:100;height:60px;padding:0 16px;border:0 solid #dfdfdf;overflow:hidden}.media-toolbar-primary{float:right;height:100%}.media-toolbar-secondary{float:left;height:100%}.media-toolbar-primary>.media-button,.media-toolbar-primary>.media-button-group{margin-left:10px;float:left;margin-top:15px}.media-toolbar-secondary>.media-button,.media-toolbar-secondary>.media-button-group{margin-right:10px;margin-top:15px}.media-sidebar{position:absolute;width:267px;padding:0 16px 24px;z-index:75;border-left:1px solid #ddd;overflow:auto;-webkit-overflow-scrolling:touch}.hide-toolbar .media-sidebar{bottom:0}.media-sidebar .sidebar-title{font-size:20px;margin:0;padding:12px 10px 10px;line-height:28px}.media-sidebar .sidebar-content{padding:0 10px;margin-bottom:130px}.media-sidebar .search{display:block;width:100%}.image-details h2,.image-details h3,.media-sidebar h2,.media-sidebar h3{position:relative;font-weight:700;text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 8px}.attachment-details .setting,.media-sidebar .setting{display:block;float:left;width:100%;margin:1px 0}.attachment-details .setting label,.media-sidebar .setting label{display:block}.attachment-details .setting .link-to-custom,.media-sidebar .setting .link-to-custom{margin:3px 2px 0}.attachment-details .setting span,.media-sidebar .setting span{min-width:30%;margin-right:4%;font-size:12px;text-align:right;word-wrap:break-word}.media-sidebar .setting .name{max-width:80px}.attachment-details .setting select,.media-sidebar .setting select{max-width:65%}.attachment-details .field input[type=checkbox],.attachment-details .field input[type=radio],.attachment-details .setting input[type=checkbox],.attachment-details .setting input[type=radio],.media-sidebar .field input[type=checkbox],.media-sidebar .field input[type=radio],.media-sidebar .setting input[type=checkbox],.media-sidebar .setting input[type=radio]{float:none;margin:8px 3px 0;padding:0}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{float:left;min-height:22px;padding-top:8px;line-height:16px;font-weight:400;color:#666}.media-menu>a,.media-router>a{line-height:18px;font-size:14px;text-decoration:none}.compat-item label span{text-align:right}.attachment-details .setting .value,.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting textarea,.media-sidebar .setting .value,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=url],.media-sidebar .setting textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:1px;width:65%;float:right}.attachment-details .setting .value,.media-sidebar .setting .value{margin:0 1px;text-align:left}.attachment-details .setting textarea,.compat-item .field textarea,.media-sidebar .setting textarea{height:62px;resize:vertical}.attachment-details select,.media-sidebar select{margin-top:3px}.compat-item{float:left;width:100%;overflow:hidden}.compat-item table{width:100%;table-layout:fixed;border-spacing:0;border:0}.compat-item tr{padding:2px 0;display:block;overflow:hidden}.compat-item .field,.compat-item .label{display:block;margin:0;padding:0}.compat-item .label{min-width:30%;margin-right:4%;float:left;text-align:right}.compat-item .label span{display:block;width:100%}.compat-item .field{float:right;width:65%;margin:1px}.compat-item .field input[type=tel],.compat-item .field input[type=text],.compat-item .field input[type=password],.compat-item .field input[type=number],.compat-item .field input[type=search],.compat-item .field input[type=email],.compat-item .field input[type=url],.compat-item .field textarea{width:100%;margin:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.sidebar-for-errors .attachment-details,.sidebar-for-errors .compat-item,.sidebar-for-errors .media-sidebar .media-progress-bar,.sidebar-for-errors .upload-details{display:none!important}.media-menu{position:absolute;left:0;margin:0;padding:10px 0;border-right-width:1px;border-right-style:solid;border-right-color:#ccc;user-select:none}.media-menu>a{display:block;position:relative;padding:8px 20px;margin:0;color:#0073aa}.media-frame-title .dashicons,.media-frame.hide-router .media-frame-router{display:none}.media-menu>a:hover{color:#0073aa;background:rgba(0,0,0,.04)}.media-menu>a:active{outline:0}.media-menu .active,.media-menu .active:hover{color:#23282d;font-weight:700}.media-menu .separator{height:0;margin:12px 20px;padding:0;border-top:1px solid #ddd}.media-router{position:relative;padding:0 6px;margin:0;clear:both;user-select:none}.media-router a{-webkit-transition:none;transition:none}.media-router>a{position:relative;float:left;padding:8px 10px 9px;margin:0;height:18px}.media-frame,.media-frame-menu{position:absolute;left:0;bottom:0;top:0}.media-router>a:last-child{border-right:0}.media-router>a:active{outline:0}.media-router .active,.media-router .active:hover{color:#32373c}.media-router .active,.media-router>a.active:last-child{margin:-1px -1px 0;background:#fff;border:1px solid #ddd;border-bottom:none}.media-router .active:after{display:none}.media-frame{overflow:hidden;right:0}.media-frame-menu{width:200px;z-index:150}.media-frame-router,.media-frame-title{z-index:200;left:200px;position:absolute;right:0}.media-frame-title{top:0;height:50px}.media-frame-router{top:50px;height:36px}.media-frame-content{position:absolute;top:84px;left:200px;right:0;bottom:61px;height:auto;width:auto;margin:0;overflow:auto;background:#fff;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.media-frame-toolbar{position:absolute;left:200px;right:0;bottom:0;height:60px;z-index:100}.media-frame.hide-menu .media-frame-content,.media-frame.hide-menu .media-frame-router,.media-frame.hide-menu .media-frame-title,.media-frame.hide-menu .media-frame-toolbar{left:0}.media-frame.hide-menu .media-frame-menu{left:-200px}.media-frame.hide-toolbar .media-frame-content{bottom:0}.media-frame.hide-toolbar .media-frame-toolbar{bottom:-61px}.media-frame.hide-router .media-frame-content{top:50px}.media-frame.hide-router .media-frame-title{border-bottom:1px solid #dfdfdf;-webkit-box-shadow:0 4px 4px -4px rgba(0,0,0,.1);box-shadow:0 4px 4px -4px rgba(0,0,0,.1)}.media-frame-title h1{padding:0 16px;font-size:22px;line-height:50px;margin:0}.media-frame-title .suggested-dimensions{font-size:14px;float:right;margin-right:20px}.media-frame-content .crop-content{height:100%}.wp-customizer:not(.mobile) .media-frame-content .crop-content.site-icon{margin-right:300px}.media-frame-content .crop-content .crop-image{display:block;margin:auto;max-width:100%;max-height:100%}.media-frame-content .crop-content .upload-errors{position:absolute;width:300px;top:50%;left:50%;margin-left:-150px;margin-right:-150px;z-index:600000}.media-frame .media-iframe{overflow:hidden}.media-frame .media-iframe,.media-frame .media-iframe iframe{height:100%;width:100%;border:0}.media-frame select.attachment-filters{margin-top:11px;margin-right:2%;max-width:42%;max-width:-webkit-calc(48% - 12px);max-width:calc(48% - 12px)}.media-toolbar-primary .search,.wp-core-ui .attachment .portrait img{max-width:100%}.media-frame select.attachment-filters:last-of-type{margin-right:0}.media-frame .search{margin-top:11px;padding:4px;font-size:13px;color:#464646;font-family:"Open Sans",sans-serif;-webkit-appearance:none}.wp-core-ui .attachments{margin:0;-webkit-overflow-scrolling:touch}.wp-core-ui .attachment{position:relative;float:left;padding:8px;margin:0;color:#464646;cursor:pointer;list-style:none;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:25%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.wp-core-ui .attachment.details:focus,.wp-core-ui .attachment:focus,.wp-core-ui .selected.attachment:focus{-webkit-box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;box-shadow:inset 0 0 2px 3px #fff,inset 0 0 0 7px #5b9dd9;outline:0}.wp-core-ui .selected.attachment{-webkit-box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc;box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 7px #ccc}.wp-core-ui .attachment.details{-webkit-box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #0073aa;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 7px #0073aa}.wp-core-ui .attachment-preview{position:relative;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);box-shadow:inset 0 0 15px rgba(0,0,0,.1),inset 0 0 0 1px rgba(0,0,0,.05);background:#eee;cursor:pointer}.wp-core-ui .attachment-preview:before{content:"";display:block;padding-top:100%}.wp-core-ui .attachment .icon{margin:0 auto;overflow:hidden}.wp-core-ui .attachment .thumbnail{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;opacity:1;-webkit-transition:opacity .1s;transition:opacity .1s}.wp-core-ui .attachment .landscape img{max-height:100%}.wp-core-ui .attachment .thumbnail:after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.wp-core-ui .attachment .thumbnail img{top:0;left:0}.wp-core-ui .attachment .thumbnail .centered{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-transform:translate(50%,50%);-ms-transform:translate(50%,50%);transform:translate(50%,50%)}.wp-core-ui .attachment .thumbnail .centered img{-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.wp-core-ui .attachments-browser .attachment .thumbnail .centered img.icon{-webkit-transform:translate(-50%,-70%);-ms-transform:translate(-50%,-70%);transform:translate(-50%,-70%)}.ie8 .wp-core-ui .attachment img.icon{top:20%;position:relative}.wp-core-ui .attachment .filename{position:absolute;left:0;right:0;bottom:0;overflow:hidden;max-height:100%;word-wrap:break-word;text-align:center;font-weight:700;background:rgba(255,255,255,.8);-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15)}.wp-core-ui .attachment .filename div{padding:5px 10px}.wp-core-ui .attachment .thumbnail img{position:absolute}.wp-core-ui .attachment-close{display:block;position:absolute;top:5px;right:5px;height:22px;width:22px;padding:0;background-color:#fff;background-position:-96px 4px;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.3);box-shadow:0 0 0 1px rgba(0,0,0,.3)}.wp-core-ui .attachment-close:focus,.wp-core-ui .attachment-close:hover{background-position:-36px 4px}.wp-core-ui .attachment .check{display:none;height:24px;width:24px;padding:0;position:absolute;z-index:10;top:0;right:0;outline:0;background:#eee;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15);box-shadow:0 0 0 1px #fff,0 0 0 2px rgba(0,0,0,.15)}.wp-core-ui .attachment .check .media-modal-icon{display:block;background-position:-1px 0;height:15px;width:15px;margin:5px}.wp-core-ui .attachment .check:hover .media-modal-icon{background-position:-40px 0}.wp-core-ui .attachment.selected .check{display:block}.wp-core-ui .attachment.details .check,.wp-core-ui .attachment.selected .check:focus,.wp-core-ui .media-frame.mode-grid .attachment.selected .check{background-color:#0073aa;-webkit-box-shadow:0 0 0 1px #fff,0 0 0 2px #0073aa;box-shadow:0 0 0 1px #fff,0 0 0 2px #0073aa}.wp-core-ui .attachment.details .check .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check .media-modal-icon{background-position:-21px 0}.wp-core-ui .attachment.details .check:hover .media-modal-icon,.wp-core-ui .attachment.selected .check:focus .media-modal-icon,.wp-core-ui .media-frame.mode-grid .attachment.selected .check:hover .media-modal-icon{background-position:-60px 0}.wp-core-ui .media-frame .attachment .describe{position:relative;display:block;width:100%;margin:0;padding:8px;font-size:12px;-webkit-border-radius:0;border-radius:0}.media-frame .attachments-browser{position:relative;width:100%;height:100%;overflow:hidden}.attachments-browser .media-toolbar{right:300px;height:50px}.attachments-browser.hide-sidebar .media-toolbar{right:0}.attachments-browser .media-toolbar-primary>.media-button,.attachments-browser .media-toolbar-primary>.media-button-group,.attachments-browser .media-toolbar-secondary>.media-button,.attachments-browser .media-toolbar-secondary>.media-button-group{margin:11px 0}.attachments-browser .attachments{padding:2px 8px 8px}.attachments-browser .attachments,.attachments-browser .uploader-inline{position:absolute;top:50px;left:0;right:300px;bottom:0;overflow:auto;outline:0}.attachments-browser .uploader-inline.hidden{display:none}.attachments-browser .media-toolbar-primary{max-width:33%}.attachments-browser .media-toolbar-secondary{max-width:66%}.uploader-inline .close{background-color:transparent;border:0;cursor:pointer;height:48px;position:absolute;right:0;text-align:center;top:0;width:50px;z-index:1}.uploader-inline .close:before{font:400 30px/50px dashicons!important;color:#777;display:inline-block;content:"\f335";font-weight:300}.attachments-browser.hide-sidebar .attachments,.attachments-browser.hide-sidebar .uploader-inline{right:0;margin-right:0}.attachments-browser .instructions{display:inline-block;margin-top:16px;line-height:18px;font-size:13px;color:#666;margin-right:.5em}.attachments-browser .no-media{padding:2em 0 0 2em}.media-progress-bar{position:relative;height:10px;width:70%;margin:10px auto;-webkit-border-radius:10px;border-radius:10px;background:#dfdfdf;background:rgba(0,0,0,.1)}.media-progress-bar div{height:10px;min-width:20px;width:0;background:#0073aa;-webkit-border-radius:10px;border-radius:10px;-webkit-transition:width .3s;transition:width .3s}.media-uploader-status .media-progress-bar{display:none;width:100%}.uploading.media-uploader-status .media-progress-bar{display:block}.attachment-preview .media-progress-bar{position:absolute;top:50%;left:15%;width:70%;margin:-5px 0 0}.media-uploader-status{position:relative;margin:0 auto;padding-bottom:10px;max-width:400px}.uploader-inline .media-uploader-status h2,.uploader-inline .media-uploader-status h3{display:none}.media-uploader-status .upload-details{display:none;font-size:12px;color:#666}.uploading.media-uploader-status .upload-details{display:block}.media-uploader-status .upload-detail-separator{padding:0 4px}.media-uploader-status .upload-count{color:#464646}.media-uploader-status .upload-dismiss-errors,.media-uploader-status .upload-errors{display:none}.errors.media-uploader-status .upload-dismiss-errors,.errors.media-uploader-status .upload-errors{display:block}.media-uploader-status .upload-dismiss-errors{text-decoration:none}.media-sidebar .media-uploader-status .upload-dismiss-errors{position:absolute;top:0;right:0}.upload-errors .upload-error{padding:12px;margin-bottom:12px;background:#fff;border-left:4px solid #dc3232;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1)}.uploader-inline .upload-errors .upload-error{background-color:#fbeaea;-webkit-box-shadow:none;box-shadow:none}.upload-errors .upload-error-filename{font-weight:700}.upload-errors .upload-error-message{display:block;padding-top:8px;word-wrap:break-word}.uploader-window{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,86,132,.9);z-index:250000;display:none;text-align:center;opacity:0;-webkit-transition:opacity 250ms;transition:opacity 250ms}.uploader-window-content{position:absolute;top:10px;left:10px;right:10px;bottom:10px;border:1px dashed #fff}.uploader-window h1,.uploader-window h3{margin:-.5em 0 0;position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:40px;color:#fff;padding:0}.uploader-window .media-progress-bar{margin-top:20px;max-width:300px;background:0 0;border-color:#fff;display:none}.uploader-window .media-progress-bar div{background:#fff}.uploading .uploader-window .media-progress-bar{display:block}.media-frame .uploader-inline{margin-bottom:20px;padding:0;text-align:center}.uploader-inline-content{position:absolute;top:30%;left:0;right:0}.uploader-inline-content .upload-ui{margin:2em 0}.uploader-inline-content .post-upload-ui{margin-bottom:2em}.uploader-inline .has-upload-message .upload-ui{margin:0 0 4em}.uploader-inline h2,.uploader-inline h3{font-size:20px;line-height:28px;font-weight:400;margin:0}.uploader-inline .has-upload-message .upload-instructions{font-size:14px;color:#464646;font-weight:400}.uploader-inline .drop-instructions{display:none}.supports-drag-drop .uploader-inline .drop-instructions{display:block}.uploader-inline p{font-size:12px;margin:.5em 0}.uploader-inline .media-progress-bar{display:none}.uploading.uploader-inline .media-progress-bar{display:block}.uploader-inline .browser{display:inline-block!important}.media-selection{position:absolute;top:0;left:0;right:350px;height:60px;padding:0 0 0 16px;overflow:hidden;white-space:nowrap}.media-selection .selection-info{display:inline-block;font-size:12px;height:60px;margin-right:10px;vertical-align:top}.media-selection.editing,.media-selection.empty,.media-selection.one .edit-selection{display:none}.media-selection .count{display:block;padding-top:12px;font-size:14px;line-height:20px;font-weight:700}.media-selection .attachments,.media-selection .selection-view{display:inline-block;vertical-align:top}.media-selection .button-link{float:left;padding:1px 8px;margin:1px 8px 1px -8px;line-height:16px;border-right:1px solid #dfdfdf;color:#0073aa}.media-selection .button-link:focus,.media-selection .button-link:hover{color:#00a0d2}.media-selection .button-link:last-child{border-right:0;margin-right:0}.selection-info .clear-selection{color:#bc0b0b}.selection-info .clear-selection:focus,.selection-info .clear-selection:hover{color:red}.media-selection .attachments{height:48px;margin:6px;padding:0;overflow:hidden}.media-selection .attachment{width:40px;padding:0;margin:4px}.media-selection .attachment .thumbnail{top:0;right:0;bottom:0;left:0}.media-selection .attachment .icon{width:50%}.media-selection .attachment-preview{-webkit-box-shadow:none;box-shadow:none;background:0 0}.wp-core-ui .media-selection .attachment.details:focus,.wp-core-ui .media-selection .attachment:focus,.wp-core-ui .media-selection .selected.attachment:focus{-webkit-box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9;box-shadow:0 0 0 1px #fff,0 0 2px 3px #5b9dd9}.wp-core-ui .media-selection .selected.attachment{-webkit-box-shadow:none;box-shadow:none}.wp-core-ui .media-selection .attachment.details{-webkit-box-shadow:0 0 0 1px #fff,0 0 0 3px #0073aa;box-shadow:0 0 0 1px #fff,0 0 0 3px #0073aa}.media-selection:after{content:"";display:block;position:absolute;top:0;right:0;bottom:0;width:25px;background-image:-webkit-gradient(linear,right top,left top,from(rgba(255,255,255,1)),to(rgba(255,255,255,0)));background-image:-webkit-linear-gradient(right,rgba(255,255,255,1),rgba(255,255,255,0));background-image:linear-gradient(to left,rgba(255,255,255,1),rgba(255,255,255,0))}.media-selection .attachment .filename{display:none}.media-frame .spinner{background:url(../images/spinner.gif) no-repeat;-webkit-background-size:20px 20px;background-size:20px 20px;float:right;display:inline-block;visibility:hidden;opacity:.7;filter:alpha(opacity=70);width:20px;height:20px;margin:0;vertical-align:middle}.attachment-details.save-waiting .settings-save-status .spinner,.media-frame .embed-loading .embed-url .spinner,.media-frame .spinner.is-active{visibility:visible}.media-toolbar .spinner{margin-top:14px}.attachment-details{position:relative;overflow:auto}.attachment-details .settings-save-status{float:right;text-transform:none;z-index:10}.attachment-details .settings-save-status .spinner{margin-left:5px}.attachment-details .settings-save-status .saved{float:right;display:none}.attachment-details.save-complete .settings-save-status .saved{display:block}.attachment-info{overflow:hidden;min-height:60px;margin-bottom:16px;line-height:18px;color:#666;border-bottom:1px solid #ddd;padding-bottom:11px}.attachment-info .filename{font-weight:700;color:#464646;word-wrap:break-word}.attachment-info .thumbnail{position:relative;float:left;max-width:120px;max-height:120px;margin-top:5px;margin-right:10px;margin-bottom:5px}.uploading .attachment-info .thumbnail{width:120px;height:80px;-webkit-box-shadow:inset 0 0 15px rgba(0,0,0,.1);box-shadow:inset 0 0 15px rgba(0,0,0,.1)}.uploading .attachment-info .media-progress-bar{margin-top:35px}.attachment-info .thumbnail-image:after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);overflow:hidden}.attachment-info .thumbnail img{display:block;max-width:120px;max-height:120px;margin:0 auto}.attachment-info .details{float:left;font-size:12px;max-width:100%}.attachment-info .delete-attachment,.attachment-info .edit-attachment,.attachment-info .trash-attachment,.attachment-info .untrash-attachment{display:block;text-decoration:none;white-space:nowrap}.attachment-details.needs-refresh .attachment-info .edit-attachment{display:none}.attachment-info .edit-attachment{display:block}.media-modal .delete-attachment,.media-modal .trash-attachment,.media-modal .untrash-attachment{display:inline;padding:0;color:#bc0b0b}.media-modal .delete-attachment:focus,.media-modal .delete-attachment:hover,.media-modal .trash-attachment:focus,.media-modal .trash-attachment:hover,.media-modal .untrash-attachment:focus,.media-modal .untrash-attachment:hover{color:red}.attachment-display-settings{width:100%;float:left;overflow:hidden}.attachment-display-settings h4{margin:1.4em 0 .4em}.collection-settings{overflow:hidden}.collection-settings .setting input[type=checkbox]{float:left;margin-right:8px}.collection-settings .setting span{min-width:inherit}.media-modal .imgedit-wrap{position:static}.media-modal .imgedit-wait{height:auto!important;right:0;bottom:0;left:0}.media-modal .imgedit-wrap .imgedit-panel-content{padding:16px;position:absolute;top:0;right:282px;bottom:0;left:0;overflow:auto}.media-modal .imgedit-wrap .imgedit-settings{background:#f3f3f3;border-left:1px solid #ddd;padding:0 16px 16px;position:absolute;top:0;right:0;bottom:0;width:250px;overflow:auto}.media-modal .imgedit-group{background:0 0;border:none;border-bottom:1px solid #ddd;-webkit-box-shadow:none;box-shadow:none;margin:0 0 16px;padding:0 0 16px;position:relative}.media-modal .imgedit-group:last-of-type{border:none;margin:0;padding:0}.media-modal .imgedit-group-top h2,.media-modal .imgedit-group-top h3{text-transform:uppercase;font-size:12px;color:#666;margin:24px 0 0}.media-modal .imgedit-group-top h2 a,.media-modal .imgedit-group-top h3 a{text-decoration:none;color:#666}.media-modal .imgedit-help-toggle{margin-top:-2px;cursor:pointer;color:#666}.media-modal .imgedit-help-toggled span.dashicons:before{content:"\f142"}.media-modal .imgedit-group img{margin-top:5px}.media-modal .imgedit-wrap div.updated{margin:0 0 16px}.embed-url{display:block;position:relative;padding:16px;margin:0;z-index:250;background:#fff;font-size:18px}.media-frame .embed-url input{font-size:18px;padding:12px 14px;width:100%;min-width:200px;-webkit-box-shadow:inset 2px 2px 4px -2px rgba(0,0,0,.1);box-shadow:inset 2px 2px 4px -2px rgba(0,0,0,.1)}.media-frame .embed-url .spinner{position:absolute;top:32px;right:26px}.embed-link-settings,.embed-media-settings{position:absolute;top:70px;left:0;right:0;bottom:0;padding:16px 16px 32px;overflow:auto}.media-embed .embed-link-settings{overflow:visible}.embed-preview embed,.embed-preview iframe,.embed-preview img,.mejs-container video{max-width:100%;vertical-align:middle}.embed-preview a{display:inline-block}.embed-preview img{display:block;height:auto}.mejs-container:focus{outline:#5b9dd9 solid 1px;-webkit-box-shadow:0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 2px 1px rgba(30,140,190,.8)}.image-details .media-modal{left:140px;right:140px}.image-details .media-frame-content,.image-details .media-frame-router,.image-details .media-frame-title{left:0}.image-details .embed-media-settings{top:0;overflow:visible;padding:0}.image-details .embed-media-settings,.image-details .embed-media-settings div{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.image-details .column-settings{background:#f3f3f3;border-right:1px solid #ddd;min-height:100%;width:55%;position:absolute;top:0;left:0}.image-details .column-settings h2,.image-details .column-settings h3{margin:20px;padding-top:20px;border-top:1px solid #ddd;color:#23282d}.image-details .column-image{width:45%;position:absolute;left:55%;top:0}.image-details .image{margin:20px}.image-details .image img{max-width:100%;max-height:500px}.image-details .advanced-toggle{padding:0;color:#666;text-transform:uppercase}.image-details .advanced-toggle:after{font:400 20px/1 dashicons;speak:none;vertical-align:top;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\f140";display:inline-block;margin-top:-2px}.image-details .advanced-visible .advanced-toggle:after{content:"\f142"}.image-details .embed-media-settings .size{margin-bottom:4px}.image-details .custom-size span{display:block}.image-details .custom-size label{display:block;float:left}.image-details .custom-size span small{color:#999;font-size:inherit}.image-details .custom-size input{width:5em}.image-details .custom-size .sep{float:left;margin:26px 6px 0}.image-details .custom-size:after{content:"";display:table;clear:both}.media-embed .thumbnail{max-width:100%;max-height:200px;position:relative;float:left}.media-embed .thumbnail img{max-height:200px;display:block}.media-embed .thumbnail:after{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;-webkit-box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);overflow:hidden}.media-embed .setting{width:100%;margin:10px 0;float:left;display:block;clear:both}.image-details .embed-media-settings .setting{float:none;width:auto}.image-details .actions{margin:10px 0}.image-details .hidden{display:none}.media-embed .setting input[type=text],.media-embed .setting textarea{display:block;width:100%;max-width:400px;margin:1px 0}.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{max-width:inherit;width:70%}.image-details .embed-media-settings .custom-size,.image-details .embed-media-settings .link-target,.image-details .embed-media-settings .setting input.link-to-custom{margin-left:27%;width:70%}.image-details .embed-media-settings .link-target{margin-top:24px}.media-embed .setting input.hidden,.media-embed .setting textarea.hidden{display:none}.media-embed .setting span{display:block;width:200px;font-size:13px;line-height:24px;color:#666}.image-details .embed-media-settings .setting span{float:left;width:25%;text-align:right;margin:8px 1% 0;line-height:1.1}.media-embed .setting .button-group{margin:2px 0}.media-embed-sidebar{position:absolute;top:0;left:440px}.advanced-section,.link-settings{margin-top:10px}.wp-editor-wrap .uploader-editor{background:rgba(150,150,150,.9);position:absolute;top:0;left:0;width:100%;height:100%;z-index:99998;display:none;text-align:center}.wp-editor-wrap .uploader-editor-content{border:1px dashed #fff;position:absolute;top:10px;left:10px;right:10px;bottom:10px}.wp-editor-wrap .uploader-editor .uploader-editor-title{position:absolute;top:50%;left:0;right:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);font-size:3em;line-height:1.3;font-weight:700;color:#fff;padding:0;margin:0;display:none}.wp-editor-wrap .uploader-editor.droppable{background:rgba(0,86,132,.9)}.wp-editor-wrap .uploader-editor.droppable .uploader-editor-title{display:block}.ie7 .media-frame .attachments-browser{position:static}.ie7 .media-frame .embed-url input{margin-top:4px;width:90%}.ie7 .compat-item{width:99%}.ie7 .attachment-display-settings{width:auto}.ie7 .attachment-preview,.ie7 .attachment-preview .thumbnail{width:120px;height:120px}.ie7 .media-frame .attachment .describe{width:102px}.ie7 .media-sidebar .setting select{max-width:55%}.ie7 .media-sidebar .setting input[type=tel],.ie7 .media-sidebar .setting input[type=text],.ie7 .media-sidebar .setting input[type=password],.ie7 .media-sidebar .setting input[type=number],.ie7 .media-sidebar .setting input[type=search],.ie7 .media-sidebar .setting input[type=email],.ie7 .media-sidebar .setting input[type=url],.ie7 .media-sidebar .setting textarea{width:55%}.ie7 .media-sidebar .setting .link-to-custom{float:left}.rtl .media-frame,.rtl .media-frame .search,.rtl .media-frame input[type=tel],.rtl .media-frame input[type=text],.rtl .media-frame input[type=password],.rtl .media-frame input[type=number],.rtl .media-frame input[type=search],.rtl .media-frame input[type=email],.rtl .media-frame input[type=url],.rtl .media-frame select,.rtl .media-frame textarea,.rtl .media-modal{font-family:Tahoma,sans-serif}:lang(he-il) .rtl .media-frame,:lang(he-il) .rtl .media-frame .search,:lang(he-il) .rtl .media-frame input[type=text],:lang(he-il) .rtl .media-frame input[type=password],:lang(he-il) .rtl .media-frame input[type=number],:lang(he-il) .rtl .media-frame input[type=search],:lang(he-il) .rtl .media-frame input[type=email],:lang(he-il) .rtl .media-frame input[type=url],:lang(he-il) .rtl .media-frame select,:lang(he-il) .rtl .media-frame textarea,:lang(he-il) .rtl .media-modal{font-family:Arial,sans-serif}@media only screen and (max-width:900px){.media-frame:not(.hide-menu) .media-frame-content,.media-frame:not(.hide-menu) .media-frame-router,.media-frame:not(.hide-menu) .media-frame-title,.media-frame:not(.hide-menu) .media-frame-toolbar{left:0}.media-frame:not(.hide-menu) .media-frame-menu{position:static;width:0}.media-frame:not(.hide-menu) .media-menu{width:auto;max-width:80%;overflow:auto;z-index:2000;top:50px;left:-300px;right:auto;bottom:auto;padding:5px 0;border:1px solid #ccc}.media-frame:not(.hide-menu) .media-menu.visible{left:0}.media-frame:not(.hide-menu) .media-menu>a{padding:12px 16px;font-size:16px}.media-frame:not(.hide-menu) .media-menu>a.active{display:none}.media-frame:not(.hide-menu) .media-menu .separator{margin:5px 10px}.media-frame:not(.hide-menu) .media-frame-title{left:0}.media-frame:not(.hide-menu) .media-frame-title .dashicons{display:inline-block;line-height:50px}.media-frame:not(.hide-menu) .media-frame-title h1{color:#0073aa;line-height:3;font-size:18px;float:left;cursor:pointer}.media-sidebar{width:230px}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{right:262px}.attachment-details .setting,.media-sidebar .setting{margin:6px 0}.attachment-details .setting input,.attachment-details .setting span,.attachment-details .setting textarea,.compat-item label span,.media-sidebar .setting input,.media-sidebar .setting span,.media-sidebar .setting textarea{float:none}.attachment-details .setting span,.compat-item label span,.media-sidebar .setting span{text-align:inherit;min-height:16px;margin:0;padding:8px 2px 0}.attachment-details .setting .value,.media-sidebar .setting .value{float:none;width:auto}.attachment-details .setting input[type=tel],.attachment-details .setting input[type=text],.attachment-details .setting input[type=password],.attachment-details .setting input[type=number],.attachment-details .setting input[type=search],.attachment-details .setting input[type=email],.attachment-details .setting input[type=url],.attachment-details .setting select,.attachment-details .setting textarea,.media-sidebar .setting input[type=tel],.media-sidebar .setting input[type=text],.media-sidebar .setting input[type=password],.media-sidebar .setting input[type=number],.media-sidebar .setting input[type=search],.media-sidebar .setting input[type=email],.media-sidebar .setting input[type=url],.media-sidebar .setting select,.media-sidebar .setting textarea{float:none;width:98%;max-width:none;height:auto}.attachment-details .setting select.columns,.media-sidebar .setting select.columns{width:auto}.media-frame .search,.media-frame input,.media-frame textarea{padding:3px 6px}.image-details .column-image{width:30%;left:70%}.image-details .column-settings{width:70%}.image-details .media-modal{left:30px;right:30px}.image-details .embed-media-settings .setting{margin:20px}.image-details .embed-media-settings .setting span{float:none;text-align:left;width:100%;margin-bottom:4px}.image-details .embed-media-settings .setting input.link-to-custom,.image-details .embed-media-settings .setting input[type=text],.image-details .embed-media-settings .setting textarea{width:100%;margin-left:0}.image-details .embed-media-settings .custom-size{margin-left:20px}.collection-settings .setting input[type=checkbox]{margin-top:0}.media-selection{min-width:120px}.media-selection:after{background:0 0}.media-selection .attachments{display:none}.media-modal .attachments-browser .media-toolbar .search{max-width:100%;height:auto;float:right}.media-modal .attachments-browser .media-toolbar .attachment-filters{height:auto}.media-modal .attachments-browser .media-toolbar .spinner{margin:14px 2px 0}.media-frame input[type=text],.media-frame input[type=password],.media-frame input[type=number],.media-frame input[type=search],.media-frame input[type=email],.media-frame input[type=url],.media-frame select,.media-frame textarea{font-size:16px}}@media only screen and (max-width:640px),screen and (max-height:400px){.image-details .media-modal,.media-modal{position:fixed;top:0;left:0;right:0;bottom:0}.media-modal-backdrop{position:fixed}.media-sidebar{z-index:1900;max-width:70%;bottom:120%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding-bottom:0}.media-sidebar.visible{bottom:0}.attachments-browser .attachments,.attachments-browser .media-toolbar,.attachments-browser .uploader-inline{right:0}.image-details .media-frame-title{display:block;top:0;font-size:14px}.image-details .column-image,.image-details .column-settings{width:100%;position:relative;left:0}.image-details .column-settings{padding:4px 0}.media-frame-content .media-toolbar .instructions{display:none}}@media screen and (max-height:400px){.media-menu{padding:0}.media-frame-router{top:44px}.media-frame-content{top:78px}.attachments-browser .attachments{top:40px}.embed-link-settings{overflow:visible}}@media only screen and (max-width:480px){.media-modal-close{top:-5px}.media-modal .media-frame-title{height:40px}.wp-core-ui.wp-customizer .media-button{margin-top:13px}.media-frame:not(.hide-menu) .media-frame-title h1,.media-modal .media-frame-title h1{font-size:18px;line-height:40px}.media-frame:not(.hide-menu) .media-frame-title .dashicons{line-height:40px}.media-frame-router,.media-frame:not(.hide-menu) .media-menu{top:40px}.media-frame-content{top:74px}.media-frame.hide-router .media-frame-content{top:40px}}@media print,(-webkit-min-device-pixel-ratio:1.25),(min-resolution:120dpi){.media-modal-icon{background-image:url(../images/uploader-icons-2x.png);-webkit-background-size:134px 15px;background-size:134px 15px}.media-frame .spinner{background-image:url(../images/spinner-2x.gif)}}.media-frame-content[data-columns="1"] .attachment{width:100%}.media-frame-content[data-columns="2"] .attachment{width:50%}.media-frame-content[data-columns="3"] .attachment{width:33.33%}.media-frame-content[data-columns="4"] .attachment{width:25%}.media-frame-content[data-columns="5"] .attachment{width:20%}.media-frame-content[data-columns="6"] .attachment{width:16.66%}.media-frame-content[data-columns="7"] .attachment{width:14.28%}.media-frame-content[data-columns="8"] .attachment{width:12.5%}.media-frame-content[data-columns="9"] .attachment{width:11.11%}.media-frame-content[data-columns="10"] .attachment{width:10%}.media-frame-content[data-columns="11"] .attachment{width:9.09%}.media-frame-content[data-columns="12"] .attachment{width:8.33%}
\ No newline at end of file
index 404cc32cc21c34814c7f637250fdf016c92cc817..67b1423e1630fc9c9d857d53301542e25c7f0c2e 100644 (file)
@@ -71,9 +71,9 @@
 }
 
 #wp-auth-check-wrap .wp-auth-check-close:before {
-       content: '\f158';
+       content: "\f158";
        display: block !important;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        height: 22px;
        margin: 2px 0;
index b5c12324e2acb8a6e0a3f9f1887ffe69bf1d3d2b..c94794ce975706b6271fdd4be3d972d76b459916 100644 (file)
@@ -1 +1 @@
-#wp-auth-check-wrap.hidden{display:none}#wp-auth-check-wrap #wp-auth-check-bg{position:fixed;top:0;bottom:0;right:0;left:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000010}#wp-auth-check-wrap #wp-auth-check{position:fixed;right:50%;overflow:hidden;top:40px;bottom:20px;max-height:415px;width:380px;margin:0 -190px 0 0;padding:30px 0 0;background-color:#f1f1f1;z-index:1000011;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3)}@media screen and (max-width:380px){#wp-auth-check-wrap #wp-auth-check{right:0;width:100%;margin:0}}#wp-auth-check-wrap.fallback #wp-auth-check{max-height:180px;overflow:auto}#wp-auth-check-wrap #wp-auth-check-form{background:url(../images/spinner-2x.gif) center center no-repeat;-webkit-background-size:16px 16px;background-size:16px 16px;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}#wp-auth-check-wrap #wp-auth-check-form iframe{height:98%;width:100%}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:8px;left:8px;height:22px;width:22px;cursor:pointer}#wp-auth-check-wrap .wp-auth-check-close:before{content:'\f158';display:block!important;font:400 20px/1 dashicons;speak:none;height:22px;margin:2px 0;text-align:center;width:22px;color:#777;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale}#wp-auth-check-wrap .wp-auth-check-close:hover:before{color:#0073aa}#wp-auth-check-wrap .wp-auth-check-close:focus{outline:#82878c dotted 1px}#wp-auth-check-wrap .wp-auth-fallback-expired{outline:0}#wp-auth-check-wrap .wp-auth-fallback{font-size:14px;line-height:21px;padding:0 25px;display:none}#wp-auth-check-wrap.fallback .wp-auth-check-close,#wp-auth-check-wrap.fallback .wp-auth-fallback{display:block}
\ No newline at end of file
+#wp-auth-check-wrap.hidden{display:none}#wp-auth-check-wrap #wp-auth-check-bg{position:fixed;top:0;bottom:0;right:0;left:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000010}#wp-auth-check-wrap #wp-auth-check{position:fixed;right:50%;overflow:hidden;top:40px;bottom:20px;max-height:415px;width:380px;margin:0 -190px 0 0;padding:30px 0 0;background-color:#f1f1f1;z-index:1000011;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3)}@media screen and (max-width:380px){#wp-auth-check-wrap #wp-auth-check{right:0;width:100%;margin:0}}#wp-auth-check-wrap.fallback #wp-auth-check{max-height:180px;overflow:auto}#wp-auth-check-wrap #wp-auth-check-form{background:url(../images/spinner-2x.gif) center center no-repeat;-webkit-background-size:16px 16px;background-size:16px 16px;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}#wp-auth-check-wrap #wp-auth-check-form iframe{height:98%;width:100%}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:8px;left:8px;height:22px;width:22px;cursor:pointer}#wp-auth-check-wrap .wp-auth-check-close:before{content:"\f158";display:block!important;font:400 20px/1 dashicons;speak:none;height:22px;margin:2px 0;text-align:center;width:22px;color:#777;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale}#wp-auth-check-wrap .wp-auth-check-close:hover:before{color:#0073aa}#wp-auth-check-wrap .wp-auth-check-close:focus{outline:#82878c dotted 1px}#wp-auth-check-wrap .wp-auth-fallback-expired{outline:0}#wp-auth-check-wrap .wp-auth-fallback{font-size:14px;line-height:21px;padding:0 25px;display:none}#wp-auth-check-wrap.fallback .wp-auth-check-close,#wp-auth-check-wrap.fallback .wp-auth-fallback{display:block}
\ No newline at end of file
index 32bd8dd6a50e94847a5ce49bc1fff97bbd8dbe1f..4d54c0354b1674fd36c29cca733b0c1758d80158 100644 (file)
@@ -71,9 +71,9 @@
 }
 
 #wp-auth-check-wrap .wp-auth-check-close:before {
-       content: '\f158';
+       content: "\f158";
        display: block !important;
-       font: normal 20px/1 'dashicons';
+       font: normal 20px/1 dashicons;
        speak: none;
        height: 22px;
        margin: 2px 0;
index 7ab9be8ba1b5d93b8430743d844b5cbd0a87b5cb..01f2e3fd363ebaa15e7aa7efd32366bac939f656 100644 (file)
@@ -1 +1 @@
-#wp-auth-check-wrap.hidden{display:none}#wp-auth-check-wrap #wp-auth-check-bg{position:fixed;top:0;bottom:0;left:0;right:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000010}#wp-auth-check-wrap #wp-auth-check{position:fixed;left:50%;overflow:hidden;top:40px;bottom:20px;max-height:415px;width:380px;margin:0 0 0 -190px;padding:30px 0 0;background-color:#f1f1f1;z-index:1000011;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3)}@media screen and (max-width:380px){#wp-auth-check-wrap #wp-auth-check{left:0;width:100%;margin:0}}#wp-auth-check-wrap.fallback #wp-auth-check{max-height:180px;overflow:auto}#wp-auth-check-wrap #wp-auth-check-form{background:url(../images/spinner-2x.gif) center center no-repeat;-webkit-background-size:16px 16px;background-size:16px 16px;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}#wp-auth-check-wrap #wp-auth-check-form iframe{height:98%;width:100%}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:8px;right:8px;height:22px;width:22px;cursor:pointer}#wp-auth-check-wrap .wp-auth-check-close:before{content:'\f158';display:block!important;font:400 20px/1 dashicons;speak:none;height:22px;margin:2px 0;text-align:center;width:22px;color:#777;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale}#wp-auth-check-wrap .wp-auth-check-close:hover:before{color:#0073aa}#wp-auth-check-wrap .wp-auth-check-close:focus{outline:#82878c dotted 1px}#wp-auth-check-wrap .wp-auth-fallback-expired{outline:0}#wp-auth-check-wrap .wp-auth-fallback{font-size:14px;line-height:21px;padding:0 25px;display:none}#wp-auth-check-wrap.fallback .wp-auth-check-close,#wp-auth-check-wrap.fallback .wp-auth-fallback{display:block}
\ No newline at end of file
+#wp-auth-check-wrap.hidden{display:none}#wp-auth-check-wrap #wp-auth-check-bg{position:fixed;top:0;bottom:0;left:0;right:0;background:#000;opacity:.7;filter:alpha(opacity=70);z-index:1000010}#wp-auth-check-wrap #wp-auth-check{position:fixed;left:50%;overflow:hidden;top:40px;bottom:20px;max-height:415px;width:380px;margin:0 0 0 -190px;padding:30px 0 0;background-color:#f1f1f1;z-index:1000011;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.3);box-shadow:0 3px 6px rgba(0,0,0,.3)}@media screen and (max-width:380px){#wp-auth-check-wrap #wp-auth-check{left:0;width:100%;margin:0}}#wp-auth-check-wrap.fallback #wp-auth-check{max-height:180px;overflow:auto}#wp-auth-check-wrap #wp-auth-check-form{background:url(../images/spinner-2x.gif) center center no-repeat;-webkit-background-size:16px 16px;background-size:16px 16px;height:100%;overflow:auto;-webkit-overflow-scrolling:touch}#wp-auth-check-wrap #wp-auth-check-form iframe{height:98%;width:100%}#wp-auth-check-wrap .wp-auth-check-close{position:absolute;top:8px;right:8px;height:22px;width:22px;cursor:pointer}#wp-auth-check-wrap .wp-auth-check-close:before{content:"\f158";display:block!important;font:400 20px/1 dashicons;speak:none;height:22px;margin:2px 0;text-align:center;width:22px;color:#777;-webkit-font-smoothing:antialiased!important;-moz-osx-font-smoothing:grayscale}#wp-auth-check-wrap .wp-auth-check-close:hover:before{color:#0073aa}#wp-auth-check-wrap .wp-auth-check-close:focus{outline:#82878c dotted 1px}#wp-auth-check-wrap .wp-auth-fallback-expired{outline:0}#wp-auth-check-wrap .wp-auth-fallback{font-size:14px;line-height:21px;padding:0 25px;display:none}#wp-auth-check-wrap.fallback .wp-auth-check-close,#wp-auth-check-wrap.fallback .wp-auth-fallback{display:block}
\ No newline at end of file
diff --git a/wp-includes/css/wp-embed-template-ie.css b/wp-includes/css/wp-embed-template-ie.css
new file mode 100644 (file)
index 0000000..cec05c9
--- /dev/null
@@ -0,0 +1,19 @@
+.dashicons-no {
+       background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAQAAAAngNWGAAAAcElEQVR4AdXRVxmEMBAGwJMQCUhAIhKQECmRsFJwMFfp7HfP/E8pk0173CuKpt/0R+WaBaaZqogLagBMuh+DdoKbyRCwqZ/SnM0R5oQuZ2UHS8Z6k23qPxZCTrV5UlHMi8bsfHVXP7K/GXZHaTO7S54CWLdHlN2YIwAAAABJRU5ErkJggg==);
+}
+
+.dashicons-admin-comments {
+       background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAATUlEQVR4AWMYWqCpvUcAiA8A8X9iMFStAD4DG0AKScQNVDZw1MBRAwvIMLCA5jmFlCD4AMQGlOTtBgoNwzQQ3TCKDaTcMMxYN2AYVgAAYPKsEBxN0PIAAAAASUVORK5CYII=);
+}
+
+.wp-embed-comments a:hover .dashicons-admin-comments {
+       background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAATElEQVR4AWMYYqB4lQAQHwDi/8RgqFoBfAY2gBSSiBuobOCogaMGFpBhYAEdcwrhIPgAxAaU5O0GCg3DNBDdMIoNpNwwzFg3YBhWAABG71qAFYcFqgAAAABJRU5ErkJggg==);
+}
+
+.dashicons-share {
+       background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAc0lEQVR4AWMYfqCpvccAiBcA8X8gfgDEBZQaeAFkGBoOoMR1/7HgDeQa2ECZgQiDHID4AMwAor0MCmBoQP+HBnwAskFQdgBRkQJViGk7wiAHUr21AYdhDTA1dDOQHl6mPFLokmwoT9j0z3qUFw70L77oDwAiuzCIub1XpQAAAABJRU5ErkJggg==);
+}
+
+.wp-embed-share-dialog-open:hover .dashicons-share {
+       background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAc0lEQVR4AWMYhqB4lQEQLwDi/0D8AIgLKDXwAsgwNBxAiev+Y8EbyDWwgTIDEQY5APEBmAFEexkUwNCA/g8N+ABkg6DsAKIiBaoQ03aEQQ6kemsDDsMaYEroZiA9vEx5pNAl2VCesOmf9SgvHOhffNEfAAAMqPR5IEZH5wAAAABJRU5ErkJggg==);
+}
diff --git a/wp-includes/css/wp-embed-template-ie.min.css b/wp-includes/css/wp-embed-template-ie.min.css
new file mode 100644 (file)
index 0000000..fec8ab4
--- /dev/null
@@ -0,0 +1 @@
+.dashicons-no{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAQAAAAngNWGAAAAcElEQVR4AdXRVxmEMBAGwJMQCUhAIhKQECmRsFJwMFfp7HfP/E8pk0173CuKpt/0R+WaBaaZqogLagBMuh+DdoKbyRCwqZ/SnM0R5oQuZ2UHS8Z6k23qPxZCTrV5UlHMi8bsfHVXP7K/GXZHaTO7S54CWLdHlN2YIwAAAABJRU5ErkJggg==)}.dashicons-admin-comments{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAATUlEQVR4AWMYWqCpvUcAiA8A8X9iMFStAD4DG0AKScQNVDZw1MBRAwvIMLCA5jmFlCD4AMQGlOTtBgoNwzQQ3TCKDaTcMMxYN2AYVgAAYPKsEBxN0PIAAAAASUVORK5CYII=)}.wp-embed-comments a:hover .dashicons-admin-comments{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAATElEQVR4AWMYYqB4lQAQHwDi/8RgqFoBfAY2gBSSiBuobOCogaMGFpBhYAEdcwrhIPgAxAaU5O0GCg3DNBDdMIoNpNwwzFg3YBhWAABG71qAFYcFqgAAAABJRU5ErkJggg==)}.dashicons-share{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAc0lEQVR4AWMYfqCpvccAiBcA8X8gfgDEBZQaeAFkGBoOoMR1/7HgDeQa2ECZgQiDHID4AMwAor0MCmBoQP+HBnwAskFQdgBRkQJViGk7wiAHUr21AYdhDTA1dDOQHl6mPFLokmwoT9j0z3qUFw70L77oDwAiuzCIub1XpQAAAABJRU5ErkJggg==)}.wp-embed-share-dialog-open:hover .dashicons-share{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAc0lEQVR4AWMYhqB4lQEQLwDi/0D8AIgLKDXwAsgwNBxAiev+Y8EbyDWwgTIDEQY5APEBmAFEexkUwNCA/g8N+ABkg6DsAKIiBaoQ03aEQQ6kemsDDsMaYEroZiA9vEx5pNAl2VCesOmf9SgvHOhffNEfAAAMqPR5IEZH5wAAAABJRU5ErkJggg==)}
\ No newline at end of file
diff --git a/wp-includes/css/wp-embed-template.css b/wp-includes/css/wp-embed-template.css
new file mode 100644 (file)
index 0000000..d91bdb6
--- /dev/null
@@ -0,0 +1,360 @@
+html, body {
+       padding: 0;
+       margin: 0;
+}
+
+body {
+       font-family: sans-serif;
+}
+
+/* Text meant only for screen readers */
+.screen-reader-text {
+       clip: rect(1px, 1px, 1px, 1px);
+       height: 1px;
+       overflow: hidden;
+       position: absolute !important;
+       width: 1px;
+}
+
+/* Dashicons */
+.dashicons {
+       display: inline-block;
+       width: 20px;
+       height: 20px;
+       background-color: transparent;
+       background-repeat: no-repeat;
+       -webkit-background-size: 20px 20px;
+       background-size: 20px;
+       background-position: center;
+       -webkit-transition: background .1s ease-in;
+       transition: background .1s ease-in;
+       position: relative;
+       top: 5px;
+}
+
+.dashicons-no {
+       background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M15.55%2013.7l-2.19%202.06-3.42-3.65-3.64%203.43-2.06-2.18%203.64-3.43-3.42-3.64%202.18-2.06%203.43%203.64%203.64-3.42%202.05%202.18-3.64%203.43z%27%20fill%3D%27%23fff%27%2F%3E%3C%2Fsvg%3E");
+}
+
+.dashicons-admin-comments {
+       background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M5%202h9q.82%200%201.41.59T16%204v7q0%20.82-.59%201.41T14%2013h-2l-5%205v-5H5q-.82%200-1.41-.59T3%2011V4q0-.82.59-1.41T5%202z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E");
+}
+
+.wp-embed-comments a:hover .dashicons-admin-comments {
+       background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M5%202h9q.82%200%201.41.59T16%204v7q0%20.82-.59%201.41T14%2013h-2l-5%205v-5H5q-.82%200-1.41-.59T3%2011V4q0-.82.59-1.41T5%202z%27%20fill%3D%27%230073aa%27%2F%3E%3C%2Fsvg%3E");
+}
+
+.dashicons-share {
+       background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E");
+       display: none;
+}
+
+.js .dashicons-share {
+       display: inline-block;
+}
+
+.wp-embed-share-dialog-open:hover .dashicons-share {
+       background-image: url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%230073aa%27%2F%3E%3C%2Fsvg%3E");
+}
+
+.wp-embed {
+       padding: 25px;
+       font: 400 14px/1.5 'Open Sans', sans-serif;
+       color: #82878c;
+       background: white;
+       border: 1px solid #e5e5e5;
+       -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+       box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+       /* Clearfix */
+       overflow: auto;
+       zoom: 1;
+}
+
+.wp-embed a {
+       color: #82878c;
+       text-decoration: none;
+}
+
+.wp-embed a:hover {
+       text-decoration: underline;
+}
+
+.wp-embed-featured-image {
+       margin-bottom: 20px;
+}
+
+.wp-embed-featured-image img {
+       width: 100%;
+       height: auto;
+       border: none;
+}
+
+.wp-embed-featured-image.square {
+       float: left;
+       max-width: 160px;
+       margin-right: 20px;
+}
+
+.wp-embed p {
+       margin: 0;
+}
+
+p.wp-embed-heading {
+       margin: 0 0 15px;
+       font-weight: bold;
+       font-size: 22px;
+       line-height: 1.3;
+}
+
+.wp-embed-heading a {
+       color: #32373c;
+}
+
+.wp-embed .wp-embed-more {
+       color: #b4b9be;
+}
+
+.wp-embed-footer {
+       display: table;
+       width: 100%;
+       margin-top: 30px;
+}
+
+.wp-embed-site-icon {
+       position: absolute;
+       top: 50%;
+       left: 0;
+       -webkit-transform: translateY(-50%);
+       -ms-transform: translateY(-50%);
+       transform: translateY(-50%);
+       height: 25px;
+       width: 25px;
+       border: 0;
+}
+
+.wp-embed-site-title {
+       font-weight: bold;
+       line-height: 25px;
+}
+
+.wp-embed-site-title a {
+       position: relative;
+       display: inline-block;
+       padding-left: 35px;
+}
+
+.wp-embed-site-title,
+.wp-embed-meta {
+       display: table-cell;
+}
+
+.wp-embed-meta {
+       text-align: right;
+       white-space: nowrap;
+       vertical-align: middle;
+}
+
+.wp-embed-comments,
+.wp-embed-share {
+       display: inline;
+}
+
+.wp-embed-meta a:hover {
+       text-decoration: none;
+       color: #0073aa;
+}
+
+.wp-embed-comments a {
+       line-height: 25px;
+       display: inline-block;
+}
+
+.wp-embed-comments + .wp-embed-share {
+       margin-left: 10px;
+}
+
+.wp-embed-share-dialog {
+       position: absolute;
+       top: 0;
+       left: 0;
+       right: 0;
+       bottom: 0;
+       background-color: #222;
+       background-color: rgba(10, 10, 10, 0.9);
+       color: #fff;
+       opacity: 1;
+       -webkit-transition: opacity .25s ease-in-out;
+       transition: opacity .25s ease-in-out;
+}
+
+.wp-embed-share-dialog.hidden {
+       opacity: 0;
+       visibility: hidden;
+}
+
+.wp-embed-share-dialog-open,
+.wp-embed-share-dialog-close {
+       margin: -8px 0 0;
+       padding: 0;
+       background: transparent;
+       border: none;
+       cursor: pointer;
+       outline: none;
+}
+
+.wp-embed-share-dialog-open .dashicons,
+.wp-embed-share-dialog-close .dashicons {
+       padding: 4px;
+}
+
+.wp-embed-share-dialog-open .dashicons {
+       top: 8px;
+}
+
+.wp-embed-share-dialog-open:focus .dashicons,
+.wp-embed-share-dialog-close:focus .dashicons {
+       -webkit-box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
+       box-shadow: 0 0 0 1px #5b9dd9, 0 0 2px 1px rgba(30, 140, 190, .8);
+       -webkit-border-radius: 100%;
+       border-radius: 100%;
+}
+
+.wp-embed-share-dialog-close {
+       position: absolute;
+       top: 20px;
+       right: 20px;
+       font-size: 22px;
+}
+
+.wp-embed-share-dialog-close:hover {
+       text-decoration: none;
+}
+
+.wp-embed-share-dialog-close .dashicons {
+       height: 24px;
+       width: 24px;
+       -webkit-background-size: 24px 24px;
+       background-size: 24px;
+}
+
+.wp-embed-share-dialog-content {
+       height: 100%;
+       -webkit-transform-style: preserve-3d;
+       transform-style: preserve-3d;
+       overflow: hidden;
+}
+
+.wp-embed-share-dialog-text {
+       margin-top: 25px;
+       padding: 20px;
+}
+
+.wp-embed-share-tabs {
+       margin: 0 0 20px;
+       padding: 0;
+       list-style: none;
+}
+
+.wp-embed-share-tab-button {
+       display: inline-block;
+}
+
+.wp-embed-share-tab-button button {
+       margin: 0;
+       padding: 0;
+       border: none;
+       background: transparent;
+       font-size: 16px;
+       line-height: 1.3;
+       color: #aaa;
+       cursor: pointer;
+       -webkit-transition: color .1s ease-in;
+       transition: color .1s ease-in;
+}
+
+.wp-embed-share-tab-button [aria-selected="true"] {
+       color: #fff;
+}
+
+.wp-embed-share-tab-button button:hover {
+       color: #fff;
+}
+
+.wp-embed-share-tab-button + .wp-embed-share-tab-button {
+       margin: 0 0 0 10px;
+       padding: 0 0 0 11px;
+       border-left: 1px solid #aaa;
+}
+
+.wp-embed-share-tab[aria-hidden="true"] {
+       display: none;
+}
+
+p.wp-embed-share-description {
+       margin: 0;
+       font-size: 14px;
+       line-height: 1;
+       font-style: italic;
+       color: #aaa;
+}
+
+.wp-embed-share-input {
+       -webkit-box-sizing: border-box;
+       -moz-box-sizing: border-box;
+       box-sizing: border-box;
+       width: 100%;
+       border: none;
+       height: 28px;
+       margin: 0 0 10px 0;
+       padding: 0 5px;
+       font: 400 14px/1.5 'Open Sans', sans-serif;
+       resize: none;
+       cursor: text;
+}
+
+textarea.wp-embed-share-input {
+       height: 72px;
+}
+
+html[dir="rtl"] .wp-embed-featured-image.square {
+       float: right;
+       margin-right: 0;
+
+       margin-left: 20px;
+}
+
+html[dir="rtl"] .wp-embed-site-title a {
+       padding-left: 0;
+       padding-right: 35px;
+}
+
+html[dir="rtl"] .wp-embed-site-icon {
+       margin-right: 0;
+       margin-left: 10px;
+       left: auto;
+       right: 0;
+}
+
+html[dir="rtl"] .wp-embed-meta {
+       text-align: left;
+}
+
+html[dir="rtl"] .wp-embed-footer {
+}
+
+html[dir="rtl"] .wp-embed-share {
+       margin-left: 0;
+       margin-right: 10px;
+}
+
+html[dir="rtl"] .wp-embed-share-dialog-close {
+       right: auto;
+       left: 20px;
+}
+
+html[dir="rtl"] .wp-embed-share-tab-button + .wp-embed-share-tab-button {
+       margin: 0 10px 0 0;
+       padding: 0 11px 0 0;
+       border-left: none;
+       border-right: 1px solid #aaa;
+}
diff --git a/wp-includes/css/wp-embed-template.min.css b/wp-includes/css/wp-embed-template.min.css
new file mode 100644 (file)
index 0000000..262b472
--- /dev/null
@@ -0,0 +1 @@
+body,html{padding:0;margin:0}body{font-family:sans-serif}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px}.dashicons{display:inline-block;width:20px;height:20px;background-color:transparent;background-repeat:no-repeat;-webkit-background-size:20px 20px;background-size:20px;background-position:center;-webkit-transition:background .1s ease-in;transition:background .1s ease-in;position:relative;top:5px}.dashicons-no{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M15.55%2013.7l-2.19%202.06-3.42-3.65-3.64%203.43-2.06-2.18%203.64-3.43-3.42-3.64%202.18-2.06%203.43%203.64%203.64-3.42%202.05%202.18-3.64%203.43z%27%20fill%3D%27%23fff%27%2F%3E%3C%2Fsvg%3E")}.dashicons-admin-comments{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M5%202h9q.82%200%201.41.59T16%204v7q0%20.82-.59%201.41T14%2013h-2l-5%205v-5H5q-.82%200-1.41-.59T3%2011V4q0-.82.59-1.41T5%202z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E")}.wp-embed-comments a:hover .dashicons-admin-comments{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M5%202h9q.82%200%201.41.59T16%204v7q0%20.82-.59%201.41T14%2013h-2l-5%205v-5H5q-.82%200-1.41-.59T3%2011V4q0-.82.59-1.41T5%202z%27%20fill%3D%27%230073aa%27%2F%3E%3C%2Fsvg%3E")}.dashicons-share{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E");display:none}.js .dashicons-share{display:inline-block}.wp-embed-share-dialog-open:hover .dashicons-share{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%230073aa%27%2F%3E%3C%2Fsvg%3E")}.wp-embed{padding:25px;font:400 14px/1.5 'Open Sans',sans-serif;color:#82878c;background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05);overflow:auto;zoom:1}.wp-embed a{color:#82878c;text-decoration:none}.wp-embed a:hover{text-decoration:underline}.wp-embed-featured-image{margin-bottom:20px}.wp-embed-featured-image img{width:100%;height:auto;border:none}.wp-embed-featured-image.square{float:left;max-width:160px;margin-right:20px}.wp-embed p{margin:0}p.wp-embed-heading{margin:0 0 15px;font-weight:700;font-size:22px;line-height:1.3}.wp-embed-heading a{color:#32373c}.wp-embed .wp-embed-more{color:#b4b9be}.wp-embed-footer{display:table;width:100%;margin-top:30px}.wp-embed-site-icon{position:absolute;top:50%;left:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);height:25px;width:25px;border:0}.wp-embed-site-title{font-weight:700;line-height:25px}.wp-embed-site-title a{position:relative;display:inline-block;padding-left:35px}.wp-embed-meta,.wp-embed-site-title{display:table-cell}.wp-embed-meta{text-align:right;white-space:nowrap;vertical-align:middle}.wp-embed-comments,.wp-embed-share{display:inline}.wp-embed-comments a,.wp-embed-share-tab-button{display:inline-block}.wp-embed-meta a:hover{text-decoration:none;color:#0073aa}.wp-embed-comments a{line-height:25px}.wp-embed-comments+.wp-embed-share{margin-left:10px}.wp-embed-share-dialog{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#222;background-color:rgba(10,10,10,.9);color:#fff;opacity:1;-webkit-transition:opacity .25s ease-in-out;transition:opacity .25s ease-in-out}.wp-embed-share-dialog.hidden{opacity:0;visibility:hidden}.wp-embed-share-dialog-close,.wp-embed-share-dialog-open{margin:-8px 0 0;padding:0;background:0 0;border:none;cursor:pointer;outline:0}.wp-embed-share-dialog-close .dashicons,.wp-embed-share-dialog-open .dashicons{padding:4px}.wp-embed-share-dialog-open .dashicons{top:8px}.wp-embed-share-dialog-close:focus .dashicons,.wp-embed-share-dialog-open:focus .dashicons{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);-webkit-border-radius:100%;border-radius:100%}.wp-embed-share-dialog-close{position:absolute;top:20px;right:20px;font-size:22px}.wp-embed-share-dialog-close:hover{text-decoration:none}.wp-embed-share-dialog-close .dashicons{height:24px;width:24px;-webkit-background-size:24px 24px;background-size:24px}.wp-embed-share-dialog-content{height:100%;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;overflow:hidden}.wp-embed-share-dialog-text{margin-top:25px;padding:20px}.wp-embed-share-tabs{margin:0 0 20px;padding:0;list-style:none}.wp-embed-share-tab-button button{margin:0;padding:0;border:none;background:0 0;font-size:16px;line-height:1.3;color:#aaa;cursor:pointer;-webkit-transition:color .1s ease-in;transition:color .1s ease-in}.wp-embed-share-tab-button [aria-selected=true],.wp-embed-share-tab-button button:hover{color:#fff}.wp-embed-share-tab-button+.wp-embed-share-tab-button{margin:0 0 0 10px;padding:0 0 0 11px;border-left:1px solid #aaa}.wp-embed-share-tab[aria-hidden=true]{display:none}p.wp-embed-share-description{margin:0;font-size:14px;line-height:1;font-style:italic;color:#aaa}.wp-embed-share-input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;border:none;height:28px;margin:0 0 10px;padding:0 5px;font:400 14px/1.5 'Open Sans',sans-serif;resize:none;cursor:text}textarea.wp-embed-share-input{height:72px}html[dir=rtl] .wp-embed-featured-image.square{float:right;margin-right:0;margin-left:20px}html[dir=rtl] .wp-embed-site-title a{padding-left:0;padding-right:35px}html[dir=rtl] .wp-embed-site-icon{margin-right:0;margin-left:10px;left:auto;right:0}html[dir=rtl] .wp-embed-meta{text-align:left}html[dir=rtl] .wp-embed-share{margin-left:0;margin-right:10px}html[dir=rtl] .wp-embed-share-dialog-close{right:auto;left:20px}html[dir=rtl] .wp-embed-share-tab-button+.wp-embed-share-tab-button{margin:0 10px 0 0;padding:0 11px 0 0;border-left:none;border-right:1px solid #aaa}
\ No newline at end of file
index 52192c2e24b3ab0b29b536a2e823f6df0dbe49c8..6983eba49cd835a3afc9139defd54b5b69a1afe0 100644 (file)
@@ -25,8 +25,8 @@
        -webkit-border-radius: 50%;
        border-radius: 50%;
        color: #00a0d2;
-       content: '\f227';
-       font: normal 20px/1.6 'dashicons';
+       content: "\f227";
+       font: normal 20px/1.6 dashicons;
        position: absolute;
        top: 8px;
        right: 15px;
@@ -62,9 +62,9 @@
 .wp-pointer-buttons a.close:before {
        background: none;
        color: #b4b9be;
-       content: '\f153';
+       content: "\f153";
        display: block !important;
-       font: normal 16px/1 'dashicons';
+       font: normal 16px/1 dashicons;
        speak: none;
        margin: 1px 0;
        text-align: center;
        border: 13px solid transparent;
        border-bottom-color: #00a0d2;
        display: block;
-       content: ' ';
+       content: " ";
 }
 
 .wp-pointer-bottom .wp-pointer-arrow {
        border: 13px solid transparent;
        border-top-color: #fff;
        display: block;
-       content: ' ';
+       content: " ";
 }
 
 /* rtl:ignore */
        border: 13px solid transparent;
        border-right-color: #fff;
        display: block;
-       content: ' ';
+       content: " ";
 }
 
 /* rtl:ignore */
        border: 13px solid transparent;
        border-left-color: #fff;
        display: block;
-       content: ' ';
+       content: " ";
 }
 
 /* Disable pointers at responsive sizes */
index 6f52d54dfa71f88c2c6af07aa0ea55b36eee58fe..61da285d110bbd7f10980dab40c557a522b9b8a9 100644 (file)
@@ -1 +1 @@
-.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border:1px solid #dfdfdf;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.075);box-shadow:0 3px 6px rgba(0,0,0,.075)}.wp-pointer-content h3{position:relative;margin:-1px -1px 5px;padding:15px 60px 14px 18px;border:1px solid #3592b6;border-bottom:none;line-height:1.4em;font-size:14px;color:#fff;background:#00a0d2}.wp-pointer-content h3:before{background:#fff;-webkit-border-radius:50%;border-radius:50%;color:#00a0d2;content:'\f227';font:400 20px/1.6 dashicons;position:absolute;top:8px;right:15px;speak:none;text-align:center;width:32px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-pointer-content p{padding:0 15px}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto}.wp-pointer-buttons a{float:left;display:inline-block;text-decoration:none}.wp-pointer-buttons a.close{padding-right:3px;position:relative}.wp-pointer-buttons a.close:before{background:0 0;color:#b4b9be;content:'\f153';display:block!important;font:400 16px/1 dashicons;speak:none;margin:1px 0;text-align:center;-webkit-font-smoothing:antialiased!important;width:10px;height:100%;position:absolute;right:-15px;top:1px}.wp-pointer-buttons a.close:hover:before{color:#c00}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;width:0;height:0;border:0 solid transparent}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{margin-top:-13px;padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{margin-left:-13px;padding-right:13px}.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{right:50px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;border-width:0 13px 13px;border-bottom-color:#3592b6}.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer-undefined .wp-pointer-arrow-inner{top:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-bottom-color:#00a0d2;display:block;content:' '}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;border-width:13px 13px 0;border-top-color:#ccc}.wp-pointer-bottom .wp-pointer-arrow-inner{bottom:1px;margin-right:-13px;margin-bottom:-13px;border:13px solid transparent;border-top-color:#fff;display:block;content:' '}.wp-pointer-left .wp-pointer-arrow{left:0;border-width:13px 13px 13px 0;border-right-color:#ccc}.wp-pointer-left .wp-pointer-arrow-inner{left:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-right-color:#fff;display:block;content:' '}.wp-pointer-right .wp-pointer-arrow{right:0;border-width:13px 0 13px 13px;border-left-color:#ccc}.wp-pointer-right .wp-pointer-arrow-inner{right:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-left-color:#fff;display:block;content:' '}@media screen and (max-width:782px){.wp-pointer{display:none}}
\ No newline at end of file
+.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border:1px solid #dfdfdf;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.075);box-shadow:0 3px 6px rgba(0,0,0,.075)}.wp-pointer-content h3{position:relative;margin:-1px -1px 5px;padding:15px 60px 14px 18px;border:1px solid #3592b6;border-bottom:none;line-height:1.4em;font-size:14px;color:#fff;background:#00a0d2}.wp-pointer-content h3:before{background:#fff;-webkit-border-radius:50%;border-radius:50%;color:#00a0d2;content:"\f227";font:400 20px/1.6 dashicons;position:absolute;top:8px;right:15px;speak:none;text-align:center;width:32px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-pointer-content p{padding:0 15px}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto}.wp-pointer-buttons a{float:left;display:inline-block;text-decoration:none}.wp-pointer-buttons a.close{padding-right:3px;position:relative}.wp-pointer-buttons a.close:before{background:0 0;color:#b4b9be;content:"\f153";display:block!important;font:400 16px/1 dashicons;speak:none;margin:1px 0;text-align:center;-webkit-font-smoothing:antialiased!important;width:10px;height:100%;position:absolute;right:-15px;top:1px}.wp-pointer-buttons a.close:hover:before{color:#c00}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;width:0;height:0;border:0 solid transparent}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{margin-top:-13px;padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{margin-left:-13px;padding-right:13px}.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{right:50px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;border-width:0 13px 13px;border-bottom-color:#3592b6}.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer-undefined .wp-pointer-arrow-inner{top:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-bottom-color:#00a0d2;display:block;content:" "}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;border-width:13px 13px 0;border-top-color:#ccc}.wp-pointer-bottom .wp-pointer-arrow-inner{bottom:1px;margin-right:-13px;margin-bottom:-13px;border:13px solid transparent;border-top-color:#fff;display:block;content:" "}.wp-pointer-left .wp-pointer-arrow{left:0;border-width:13px 13px 13px 0;border-right-color:#ccc}.wp-pointer-left .wp-pointer-arrow-inner{left:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-right-color:#fff;display:block;content:" "}.wp-pointer-right .wp-pointer-arrow{right:0;border-width:13px 0 13px 13px;border-left-color:#ccc}.wp-pointer-right .wp-pointer-arrow-inner{right:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-left-color:#fff;display:block;content:" "}@media screen and (max-width:782px){.wp-pointer{display:none}}
\ No newline at end of file
index f7e461628d86a1c6138faa84c32ca406c7cd393f..bea8ad65bbcd9b9cf2ba620431929c16642d809b 100644 (file)
@@ -25,8 +25,8 @@
        -webkit-border-radius: 50%;
        border-radius: 50%;
        color: #00a0d2;
-       content: '\f227';
-       font: normal 20px/1.6 'dashicons';
+       content: "\f227";
+       font: normal 20px/1.6 dashicons;
        position: absolute;
        top: 8px;
        left: 15px;
@@ -62,9 +62,9 @@
 .wp-pointer-buttons a.close:before {
        background: none;
        color: #b4b9be;
-       content: '\f153';
+       content: "\f153";
        display: block !important;
-       font: normal 16px/1 'dashicons';
+       font: normal 16px/1 dashicons;
        speak: none;
        margin: 1px 0;
        text-align: center;
        border: 13px solid transparent;
        border-bottom-color: #00a0d2;
        display: block;
-       content: ' ';
+       content: " ";
 }
 
 .wp-pointer-bottom .wp-pointer-arrow {
        border: 13px solid transparent;
        border-top-color: #fff;
        display: block;
-       content: ' ';
+       content: " ";
 }
 
 /* rtl:ignore */
        border: 13px solid transparent;
        border-right-color: #fff;
        display: block;
-       content: ' ';
+       content: " ";
 }
 
 /* rtl:ignore */
        border: 13px solid transparent;
        border-left-color: #fff;
        display: block;
-       content: ' ';
+       content: " ";
 }
 
 /* Disable pointers at responsive sizes */
index d337dbb8f414ab2f72ebe8a4c1d1f8e48d06815d..87e1b21f39eb5e8d8c6604f9538ef85b61daa2f3 100644 (file)
@@ -1 +1 @@
-.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border:1px solid #dfdfdf;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.075);box-shadow:0 3px 6px rgba(0,0,0,.075)}.wp-pointer-content h3{position:relative;margin:-1px -1px 5px;padding:15px 18px 14px 60px;border:1px solid #3592b6;border-bottom:none;line-height:1.4em;font-size:14px;color:#fff;background:#00a0d2}.wp-pointer-content h3:before{background:#fff;-webkit-border-radius:50%;border-radius:50%;color:#00a0d2;content:'\f227';font:400 20px/1.6 dashicons;position:absolute;top:8px;left:15px;speak:none;text-align:center;width:32px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-pointer-content p{padding:0 15px}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto}.wp-pointer-buttons a{float:right;display:inline-block;text-decoration:none}.wp-pointer-buttons a.close{padding-left:3px;position:relative}.wp-pointer-buttons a.close:before{background:0 0;color:#b4b9be;content:'\f153';display:block!important;font:400 16px/1 dashicons;speak:none;margin:1px 0;text-align:center;-webkit-font-smoothing:antialiased!important;width:10px;height:100%;position:absolute;left:-15px;top:1px}.wp-pointer-buttons a.close:hover:before{color:#c00}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;width:0;height:0;border:0 solid transparent}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{margin-top:-13px;padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{margin-left:-13px;padding-right:13px}.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{left:50px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;border-width:0 13px 13px;border-bottom-color:#3592b6}.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer-undefined .wp-pointer-arrow-inner{top:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-bottom-color:#00a0d2;display:block;content:' '}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;border-width:13px 13px 0;border-top-color:#ccc}.wp-pointer-bottom .wp-pointer-arrow-inner{bottom:1px;margin-left:-13px;margin-bottom:-13px;border:13px solid transparent;border-top-color:#fff;display:block;content:' '}.wp-pointer-left .wp-pointer-arrow{left:0;border-width:13px 13px 13px 0;border-right-color:#ccc}.wp-pointer-left .wp-pointer-arrow-inner{left:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-right-color:#fff;display:block;content:' '}.wp-pointer-right .wp-pointer-arrow{right:0;border-width:13px 0 13px 13px;border-left-color:#ccc}.wp-pointer-right .wp-pointer-arrow-inner{right:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-left-color:#fff;display:block;content:' '}@media screen and (max-width:782px){.wp-pointer{display:none}}
\ No newline at end of file
+.wp-pointer-content{padding:0 0 10px;position:relative;font-size:13px;background:#fff;border:1px solid #dfdfdf;-webkit-box-shadow:0 3px 6px rgba(0,0,0,.075);box-shadow:0 3px 6px rgba(0,0,0,.075)}.wp-pointer-content h3{position:relative;margin:-1px -1px 5px;padding:15px 18px 14px 60px;border:1px solid #3592b6;border-bottom:none;line-height:1.4em;font-size:14px;color:#fff;background:#00a0d2}.wp-pointer-content h3:before{background:#fff;-webkit-border-radius:50%;border-radius:50%;color:#00a0d2;content:"\f227";font:400 20px/1.6 dashicons;position:absolute;top:8px;left:15px;speak:none;text-align:center;width:32px;height:32px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.wp-pointer-content p{padding:0 15px}.wp-pointer-buttons{margin:0;padding:5px 15px;overflow:auto}.wp-pointer-buttons a{float:right;display:inline-block;text-decoration:none}.wp-pointer-buttons a.close{padding-left:3px;position:relative}.wp-pointer-buttons a.close:before{background:0 0;color:#b4b9be;content:"\f153";display:block!important;font:400 16px/1 dashicons;speak:none;margin:1px 0;text-align:center;-webkit-font-smoothing:antialiased!important;width:10px;height:100%;position:absolute;left:-15px;top:1px}.wp-pointer-buttons a.close:hover:before{color:#c00}.wp-pointer-arrow,.wp-pointer-arrow-inner{position:absolute;width:0;height:0}.wp-pointer-arrow{z-index:10;width:0;height:0;border:0 solid transparent}.wp-pointer-arrow-inner{z-index:20}.wp-pointer-top,.wp-pointer-undefined{padding-top:13px}.wp-pointer-bottom{margin-top:-13px;padding-bottom:13px}.wp-pointer-left{padding-left:13px}.wp-pointer-right{margin-left:-13px;padding-right:13px}.wp-pointer-bottom .wp-pointer-arrow,.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{left:50px}.wp-pointer-left .wp-pointer-arrow,.wp-pointer-right .wp-pointer-arrow{top:50%;margin-top:-15px}.wp-pointer-top .wp-pointer-arrow,.wp-pointer-undefined .wp-pointer-arrow{top:0;border-width:0 13px 13px;border-bottom-color:#3592b6}.wp-pointer-top .wp-pointer-arrow-inner,.wp-pointer-undefined .wp-pointer-arrow-inner{top:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-bottom-color:#00a0d2;display:block;content:" "}.wp-pointer-bottom .wp-pointer-arrow{bottom:0;border-width:13px 13px 0;border-top-color:#ccc}.wp-pointer-bottom .wp-pointer-arrow-inner{bottom:1px;margin-left:-13px;margin-bottom:-13px;border:13px solid transparent;border-top-color:#fff;display:block;content:" "}.wp-pointer-left .wp-pointer-arrow{left:0;border-width:13px 13px 13px 0;border-right-color:#ccc}.wp-pointer-left .wp-pointer-arrow-inner{left:1px;margin-left:-13px;margin-top:-13px;border:13px solid transparent;border-right-color:#fff;display:block;content:" "}.wp-pointer-right .wp-pointer-arrow{right:0;border-width:13px 0 13px 13px;border-left-color:#ccc}.wp-pointer-right .wp-pointer-arrow-inner{right:1px;margin-right:-13px;margin-top:-13px;border:13px solid transparent;border-left-color:#fff;display:block;content:" "}@media screen and (max-width:782px){.wp-pointer{display:none}}
\ No newline at end of file
diff --git a/wp-includes/customize/class-wp-customize-background-image-control.php b/wp-includes/customize/class-wp-customize-background-image-control.php
new file mode 100644 (file)
index 0000000..588e32a
--- /dev/null
@@ -0,0 +1,49 @@
+<?php
+/**
+ * Customize API: WP_Customize_Background_Image_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Background Image Control class.
+ *
+ * @since 3.4.0
+ *
+ * @see WP_Customize_Image_Control
+ */
+class WP_Customize_Background_Image_Control extends WP_Customize_Image_Control {
+       public $type = 'background';
+
+       /**
+        * Constructor.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Image_Control::__construct()
+        *
+        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
+        */
+       public function __construct( $manager ) {
+               parent::__construct( $manager, 'background_image', array(
+                       'label'    => __( 'Background Image' ),
+                       'section'  => 'background_image',
+               ) );
+       }
+
+       /**
+        * Enqueue control related scripts/styles.
+        *
+        * @since 4.1.0
+        */
+       public function enqueue() {
+               parent::enqueue();
+
+               wp_localize_script( 'customize-controls', '_wpCustomizeBackground', array(
+                       'nonces' => array(
+                               'add' => wp_create_nonce( 'background-add' ),
+                       ),
+               ) );
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-background-image-setting.php b/wp-includes/customize/class-wp-customize-background-image-setting.php
new file mode 100644 (file)
index 0000000..e7867d1
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Customize API: WP_Customize_Background_Image_Setting class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customizer Background Image Setting class.
+ *
+ * @since 3.4.0
+ *
+ * @see WP_Customize_Setting
+ */
+final class WP_Customize_Background_Image_Setting extends WP_Customize_Setting {
+       public $id = 'background_image_thumb';
+
+       /**
+        * @since 3.4.0
+        *
+        * @param $value
+        */
+       public function update( $value ) {
+               remove_theme_mod( 'background_image_thumb' );
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-color-control.php b/wp-includes/customize/class-wp-customize-color-control.php
new file mode 100644 (file)
index 0000000..fac9a7d
--- /dev/null
@@ -0,0 +1,103 @@
+<?php
+/**
+ * Customize API: WP_Customize_Color_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Color Control class.
+ *
+ * @since 3.4.0
+ *
+ * @see WP_Customize_Control
+ */
+class WP_Customize_Color_Control extends WP_Customize_Control {
+       /**
+        * @access public
+        * @var string
+        */
+       public $type = 'color';
+
+       /**
+        * @access public
+        * @var array
+        */
+       public $statuses;
+
+       /**
+        * Constructor.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Control::__construct()
+        *
+        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
+        * @param string               $id      Control ID.
+        * @param array                $args    Optional. Arguments to override class property defaults.
+        */
+       public function __construct( $manager, $id, $args = array() ) {
+               $this->statuses = array( '' => __('Default') );
+               parent::__construct( $manager, $id, $args );
+       }
+
+       /**
+        * Enqueue scripts/styles for the color picker.
+        *
+        * @since 3.4.0
+        */
+       public function enqueue() {
+               wp_enqueue_script( 'wp-color-picker' );
+               wp_enqueue_style( 'wp-color-picker' );
+       }
+
+       /**
+        * Refresh the parameters passed to the JavaScript via JSON.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Control::to_json()
+        */
+       public function to_json() {
+               parent::to_json();
+               $this->json['statuses'] = $this->statuses;
+               $this->json['defaultValue'] = $this->setting->default;
+       }
+
+       /**
+        * Don't render the control content from PHP, as it's rendered via JS on load.
+        *
+        * @since 3.4.0
+        */
+       public function render_content() {}
+
+       /**
+        * Render a JS template for the content of the color picker control.
+        *
+        * @since 4.1.0
+        */
+       public function content_template() {
+               ?>
+               <# var defaultValue = '';
+               if ( data.defaultValue ) {
+                       if ( '#' !== data.defaultValue.substring( 0, 1 ) ) {
+                               defaultValue = '#' + data.defaultValue;
+                       } else {
+                               defaultValue = data.defaultValue;
+                       }
+                       defaultValue = ' data-default-color=' + defaultValue; // Quotes added automatically.
+               } #>
+               <label>
+                       <# if ( data.label ) { #>
+                               <span class="customize-control-title">{{{ data.label }}}</span>
+                       <# } #>
+                       <# if ( data.description ) { #>
+                               <span class="description customize-control-description">{{{ data.description }}}</span>
+                       <# } #>
+                       <div class="customize-control-content">
+                               <input class="color-picker-hex" type="text" maxlength="7" placeholder="<?php esc_attr_e( 'Hex Value' ); ?>" {{ defaultValue }} />
+                       </div>
+               </label>
+               <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-cropped-image-control.php b/wp-includes/customize/class-wp-customize-cropped-image-control.php
new file mode 100644 (file)
index 0000000..3675242
--- /dev/null
@@ -0,0 +1,93 @@
+<?php
+/**
+ * Customize API: WP_Customize_Cropped_Image_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Cropped Image Control class.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Image_Control
+ */
+class WP_Customize_Cropped_Image_Control extends WP_Customize_Image_Control {
+
+       /**
+        * Control type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'cropped_image';
+
+       /**
+        * Suggested width for cropped image.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var int
+        */
+       public $width = 150;
+
+       /**
+        * Suggested height for cropped image.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var int
+        */
+       public $height = 150;
+
+       /**
+        * Whether the width is flexible.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var bool
+        */
+       public $flex_width = false;
+
+       /**
+        * Whether the height is flexible.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var bool
+        */
+       public $flex_height = false;
+
+       /**
+        * Enqueue control related scripts/styles.
+        *
+        * @since 4.3.0
+        * @access public
+        */
+       public function enqueue() {
+               wp_enqueue_script( 'customize-views' );
+
+               parent::enqueue();
+       }
+
+       /**
+        * Refresh the parameters passed to the JavaScript via JSON.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @see WP_Customize_Control::to_json()
+        */
+       public function to_json() {
+               parent::to_json();
+
+               $this->json['width']       = absint( $this->width );
+               $this->json['height']      = absint( $this->height );
+               $this->json['flex_width']  = absint( $this->flex_width );
+               $this->json['flex_height'] = absint( $this->flex_height );
+       }
+
+}
diff --git a/wp-includes/customize/class-wp-customize-filter-setting.php b/wp-includes/customize/class-wp-customize-filter-setting.php
new file mode 100644 (file)
index 0000000..605099f
--- /dev/null
@@ -0,0 +1,25 @@
+<?php
+/**
+ * Customize API: WP_Customize_Filter_Setting class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * A setting that is used to filter a value, but will not save the results.
+ *
+ * Results should be properly handled using another setting or callback.
+ *
+ * @since 3.4.0
+ *
+ * @see WP_Customize_Setting
+ */
+class WP_Customize_Filter_Setting extends WP_Customize_Setting {
+
+       /**
+        * @since 3.4.0
+        */
+       public function update( $value ) {}
+}
diff --git a/wp-includes/customize/class-wp-customize-header-image-control.php b/wp-includes/customize/class-wp-customize-header-image-control.php
new file mode 100644 (file)
index 0000000..52d52c1
--- /dev/null
@@ -0,0 +1,222 @@
+<?php
+/**
+ * Customize API: WP_Customize_Header_Image_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Header Image Control class.
+ *
+ * @since 3.4.0
+ *
+ * @see WP_Customize_Image_Control
+ */
+class WP_Customize_Header_Image_Control extends WP_Customize_Image_Control {
+       public $type = 'header';
+       public $uploaded_headers;
+       public $default_headers;
+
+       /**
+        * Constructor.
+        *
+        * @since 3.4.0
+        *
+        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
+        */
+       public function __construct( $manager ) {
+               parent::__construct( $manager, 'header_image', array(
+                       'label'    => __( 'Header Image' ),
+                       'settings' => array(
+                               'default' => 'header_image',
+                               'data'    => 'header_image_data',
+                       ),
+                       'section'  => 'header_image',
+                       'removed'  => 'remove-header',
+                       'get_url'  => 'get_header_image',
+               ) );
+
+       }
+
+       /**
+        * @access public
+        */
+       public function enqueue() {
+               wp_enqueue_media();
+               wp_enqueue_script( 'customize-views' );
+
+               $this->prepare_control();
+
+               wp_localize_script( 'customize-views', '_wpCustomizeHeader', array(
+                       'data' => array(
+                               'width' => absint( get_theme_support( 'custom-header', 'width' ) ),
+                               'height' => absint( get_theme_support( 'custom-header', 'height' ) ),
+                               'flex-width' => absint( get_theme_support( 'custom-header', 'flex-width' ) ),
+                               'flex-height' => absint( get_theme_support( 'custom-header', 'flex-height' ) ),
+                               'currentImgSrc' => $this->get_current_image_src(),
+                       ),
+                       'nonces' => array(
+                               'add' => wp_create_nonce( 'header-add' ),
+                               'remove' => wp_create_nonce( 'header-remove' ),
+                       ),
+                       'uploads' => $this->uploaded_headers,
+                       'defaults' => $this->default_headers
+               ) );
+
+               parent::enqueue();
+       }
+
+       /**
+        *
+        * @global Custom_Image_Header $custom_image_header
+        */
+       public function prepare_control() {
+               global $custom_image_header;
+               if ( empty( $custom_image_header ) ) {
+                       return;
+               }
+
+               // Process default headers and uploaded headers.
+               $custom_image_header->process_default_headers();
+               $this->default_headers = $custom_image_header->get_default_header_images();
+               $this->uploaded_headers = $custom_image_header->get_uploaded_header_images();
+       }
+
+       /**
+        * @access public
+        */
+       public function print_header_image_template() {
+               ?>
+               <script type="text/template" id="tmpl-header-choice">
+                       <# if (data.random) { #>
+                       <button type="button" class="button display-options random">
+                               <span class="dashicons dashicons-randomize dice"></span>
+                               <# if ( data.type === 'uploaded' ) { #>
+                                       <?php _e( 'Randomize uploaded headers' ); ?>
+                               <# } else if ( data.type === 'default' ) { #>
+                                       <?php _e( 'Randomize suggested headers' ); ?>
+                               <# } #>
+                       </button>
+
+                       <# } else { #>
+
+                       <# if (data.type === 'uploaded') { #>
+                               <button type="button" class="dashicons dashicons-no close"><span class="screen-reader-text"><?php _e( 'Remove image' ); ?></span></button>
+                       <# } #>
+
+                       <button type="button" class="choice thumbnail"
+                               data-customize-image-value="{{{data.header.url}}}"
+                               data-customize-header-image-data="{{JSON.stringify(data.header)}}">
+                               <span class="screen-reader-text"><?php _e( 'Set image' ); ?></span>
+                               <img src="{{{data.header.thumbnail_url}}}" alt="{{{data.header.alt_text || data.header.description}}}">
+                       </button>
+
+                       <# } #>
+               </script>
+
+               <script type="text/template" id="tmpl-header-current">
+                       <# if (data.choice) { #>
+                               <# if (data.random) { #>
+
+                       <div class="placeholder">
+                               <div class="inner">
+                                       <span><span class="dashicons dashicons-randomize dice"></span>
+                                       <# if ( data.type === 'uploaded' ) { #>
+                                               <?php _e( 'Randomizing uploaded headers' ); ?>
+                                       <# } else if ( data.type === 'default' ) { #>
+                                               <?php _e( 'Randomizing suggested headers' ); ?>
+                                       <# } #>
+                                       </span>
+                               </div>
+                       </div>
+
+                               <# } else { #>
+
+                       <img src="{{{data.header.thumbnail_url}}}" alt="{{{data.header.alt_text || data.header.description}}}" tabindex="0"/>
+
+                               <# } #>
+                       <# } else { #>
+
+                       <div class="placeholder">
+                               <div class="inner">
+                                       <span>
+                                               <?php _e( 'No image set' ); ?>
+                                       </span>
+                               </div>
+                       </div>
+
+                       <# } #>
+               </script>
+               <?php
+       }
+
+       /**
+        * @return string|void
+        */
+       public function get_current_image_src() {
+               $src = $this->value();
+               if ( isset( $this->get_url ) ) {
+                       $src = call_user_func( $this->get_url, $src );
+                       return $src;
+               }
+       }
+
+       /**
+        * @access public
+        */
+       public function render_content() {
+               $this->print_header_image_template();
+               $visibility = $this->get_current_image_src() ? '' : ' style="display:none" ';
+               $width = absint( get_theme_support( 'custom-header', 'width' ) );
+               $height = absint( get_theme_support( 'custom-header', 'height' ) );
+               ?>
+               <div class="customize-control-content">
+                       <p class="customizer-section-intro">
+                               <?php
+                               if ( $width && $height ) {
+                                       printf( __( 'While you can crop images to your liking after clicking <strong>Add new image</strong>, your theme recommends a header size of <strong>%s &times; %s</strong> pixels.' ), $width, $height );
+                               } elseif ( $width ) {
+                                       printf( __( 'While you can crop images to your liking after clicking <strong>Add new image</strong>, your theme recommends a header width of <strong>%s</strong> pixels.' ), $width );
+                               } else {
+                                       printf( __( 'While you can crop images to your liking after clicking <strong>Add new image</strong>, your theme recommends a header height of <strong>%s</strong> pixels.' ), $height );
+                               }
+                               ?>
+                       </p>
+                       <div class="current">
+                               <label for="header_image-button">
+                                       <span class="customize-control-title">
+                                               <?php _e( 'Current header' ); ?>
+                                       </span>
+                               </label>
+                               <div class="container">
+                               </div>
+                       </div>
+                       <div class="actions">
+                               <?php if ( current_user_can( 'upload_files' ) ): ?>
+                               <button type="button"<?php echo $visibility; ?> class="button remove" aria-label="<?php esc_attr_e( 'Hide header image' ); ?>"><?php _e( 'Hide image' ); ?></button>
+                               <button type="button" class="button new" id="header_image-button"  aria-label="<?php esc_attr_e( 'Add new header image' ); ?>"><?php _e( 'Add new image' ); ?></button>
+                               <div style="clear:both"></div>
+                               <?php endif; ?>
+                       </div>
+                       <div class="choices">
+                               <span class="customize-control-title header-previously-uploaded">
+                                       <?php _ex( 'Previously uploaded', 'custom headers' ); ?>
+                               </span>
+                               <div class="uploaded">
+                                       <div class="list">
+                                       </div>
+                               </div>
+                               <span class="customize-control-title header-default">
+                                       <?php _ex( 'Suggested', 'custom headers' ); ?>
+                               </span>
+                               <div class="default">
+                                       <div class="list">
+                                       </div>
+                               </div>
+                       </div>
+               </div>
+               <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-header-image-setting.php b/wp-includes/customize/class-wp-customize-header-image-setting.php
new file mode 100644 (file)
index 0000000..98b79ae
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Customize API: WP_Customize_Header_Image_Setting class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * A setting that is used to filter a value, but will not save the results.
+ *
+ * Results should be properly handled using another setting or callback.
+ *
+ * @since 3.4.0
+ *
+ * @see WP_Customize_Setting
+ */
+final class WP_Customize_Header_Image_Setting extends WP_Customize_Setting {
+       public $id = 'header_image_data';
+
+       /**
+        * @since 3.4.0
+        *
+        * @global Custom_Image_Header $custom_image_header
+        *
+        * @param $value
+        */
+       public function update( $value ) {
+               global $custom_image_header;
+
+               // If the value doesn't exist (removed or random),
+               // use the header_image value.
+               if ( ! $value )
+                       $value = $this->manager->get_setting('header_image')->post_value();
+
+               if ( is_array( $value ) && isset( $value['choice'] ) )
+                       $custom_image_header->set_header_image( $value['choice'] );
+               else
+                       $custom_image_header->set_header_image( $value );
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-image-control.php b/wp-includes/customize/class-wp-customize-image-control.php
new file mode 100644 (file)
index 0000000..dc50a3a
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Customize API: WP_Customize_Image_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Image Control class.
+ *
+ * @since 3.4.0
+ *
+ * @see WP_Customize_Upload_Control
+ */
+class WP_Customize_Image_Control extends WP_Customize_Upload_Control {
+       public $type = 'image';
+       public $mime_type = 'image';
+
+       /**
+        * Constructor.
+        *
+        * @since 3.4.0
+        * @uses WP_Customize_Upload_Control::__construct()
+        *
+        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
+        * @param string               $id      Control ID.
+        * @param array                $args    Optional. Arguments to override class property defaults.
+        */
+       public function __construct( $manager, $id, $args = array() ) {
+               parent::__construct( $manager, $id, $args );
+
+               $this->button_labels = array(
+                       'select'       => __( 'Select Image' ),
+                       'change'       => __( 'Change Image' ),
+                       'remove'       => __( 'Remove' ),
+                       'default'      => __( 'Default' ),
+                       'placeholder'  => __( 'No image selected' ),
+                       'frame_title'  => __( 'Select Image' ),
+                       'frame_button' => __( 'Choose Image' ),
+               );
+       }
+
+       /**
+        * @since 3.4.2
+        * @deprecated 4.1.0
+        */
+       public function prepare_control() {}
+
+       /**
+        * @since 3.4.0
+        * @deprecated 4.1.0
+        *
+        * @param string $id
+        * @param string $label
+        * @param mixed $callback
+        */
+       public function add_tab( $id, $label, $callback ) {}
+
+       /**
+        * @since 3.4.0
+        * @deprecated 4.1.0
+        *
+        * @param string $id
+        */
+       public function remove_tab( $id ) {}
+
+       /**
+        * @since 3.4.0
+        * @deprecated 4.1.0
+        *
+        * @param string $url
+        * @param string $thumbnail_url
+        */
+       public function print_tab_image( $url, $thumbnail_url = null ) {}
+}
diff --git a/wp-includes/customize/class-wp-customize-media-control.php b/wp-includes/customize/class-wp-customize-media-control.php
new file mode 100644 (file)
index 0000000..c99fd98
--- /dev/null
@@ -0,0 +1,225 @@
+<?php
+/**
+ * Customize API: WP_Customize_Media_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Media Control class.
+ *
+ * @since 4.2.0
+ *
+ * @see WP_Customize_Control
+ */
+class WP_Customize_Media_Control extends WP_Customize_Control {
+       /**
+        * Control type.
+        *
+        * @since 4.2.0
+        * @access public
+        * @var string
+        */
+       public $type = 'media';
+
+       /**
+        * Media control mime type.
+        *
+        * @since 4.2.0
+        * @access public
+        * @var string
+        */
+       public $mime_type = '';
+
+       /**
+        * Button labels.
+        *
+        * @since 4.2.0
+        * @access public
+        * @var array
+        */
+       public $button_labels = array();
+
+       /**
+        * Constructor.
+        *
+        * @since 4.1.0
+        * @since 4.2.0 Moved from WP_Customize_Upload_Control.
+        *
+        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
+        * @param string               $id      Control ID.
+        * @param array                $args    Optional. Arguments to override class property defaults.
+        */
+       public function __construct( $manager, $id, $args = array() ) {
+               parent::__construct( $manager, $id, $args );
+
+               $this->button_labels = array(
+                       'select'       => __( 'Select File' ),
+                       'change'       => __( 'Change File' ),
+                       'default'      => __( 'Default' ),
+                       'remove'       => __( 'Remove' ),
+                       'placeholder'  => __( 'No file selected' ),
+                       'frame_title'  => __( 'Select File' ),
+                       'frame_button' => __( 'Choose File' ),
+               );
+       }
+
+       /**
+        * Enqueue control related scripts/styles.
+        *
+        * @since 3.4.0
+        * @since 4.2.0 Moved from WP_Customize_Upload_Control.
+        */
+       public function enqueue() {
+               wp_enqueue_media();
+       }
+
+       /**
+        * Refresh the parameters passed to the JavaScript via JSON.
+        *
+        * @since 3.4.0
+        * @since 4.2.0 Moved from WP_Customize_Upload_Control.
+        *
+        * @see WP_Customize_Control::to_json()
+        */
+       public function to_json() {
+               parent::to_json();
+               $this->json['label'] = html_entity_decode( $this->label, ENT_QUOTES, get_bloginfo( 'charset' ) );
+               $this->json['mime_type'] = $this->mime_type;
+               $this->json['button_labels'] = $this->button_labels;
+               $this->json['canUpload'] = current_user_can( 'upload_files' );
+
+               $value = $this->value();
+
+               if ( is_object( $this->setting ) ) {
+                       if ( $this->setting->default ) {
+                               // Fake an attachment model - needs all fields used by template.
+                               // Note that the default value must be a URL, NOT an attachment ID.
+                               $type = in_array( substr( $this->setting->default, -3 ), array( 'jpg', 'png', 'gif', 'bmp' ) ) ? 'image' : 'document';
+                               $default_attachment = array(
+                                       'id' => 1,
+                                       'url' => $this->setting->default,
+                                       'type' => $type,
+                                       'icon' => wp_mime_type_icon( $type ),
+                                       'title' => basename( $this->setting->default ),
+                               );
+
+                               if ( 'image' === $type ) {
+                                       $default_attachment['sizes'] = array(
+                                               'full' => array( 'url' => $this->setting->default ),
+                                       );
+                               }
+
+                               $this->json['defaultAttachment'] = $default_attachment;
+                       }
+
+                       if ( $value && $this->setting->default && $value === $this->setting->default ) {
+                               // Set the default as the attachment.
+                               $this->json['attachment'] = $this->json['defaultAttachment'];
+                       } elseif ( $value ) {
+                               $this->json['attachment'] = wp_prepare_attachment_for_js( $value );
+                       }
+               }
+       }
+
+       /**
+        * Don't render any content for this control from PHP.
+        *
+        * @since 3.4.0
+        * @since 4.2.0 Moved from WP_Customize_Upload_Control.
+        *
+        * @see WP_Customize_Media_Control::content_template()
+        */
+       public function render_content() {}
+
+       /**
+        * Render a JS template for the content of the media control.
+        *
+        * @since 4.1.0
+        * @since 4.2.0 Moved from WP_Customize_Upload_Control.
+        */
+       public function content_template() {
+               ?>
+               <label for="{{ data.settings['default'] }}-button">
+                       <# if ( data.label ) { #>
+                               <span class="customize-control-title">{{ data.label }}</span>
+                       <# } #>
+                       <# if ( data.description ) { #>
+                               <span class="description customize-control-description">{{{ data.description }}}</span>
+                       <# } #>
+               </label>
+
+               <# if ( data.attachment && data.attachment.id ) { #>
+                       <div class="current">
+                               <div class="container">
+                                       <div class="attachment-media-view attachment-media-view-{{ data.attachment.type }} {{ data.attachment.orientation }}">
+                                               <div class="thumbnail thumbnail-{{ data.attachment.type }}">
+                                                       <# if ( 'image' === data.attachment.type && data.attachment.sizes && data.attachment.sizes.medium ) { #>
+                                                               <img class="attachment-thumb" src="{{ data.attachment.sizes.medium.url }}" draggable="false" alt="" />
+                                                       <# } else if ( 'image' === data.attachment.type && data.attachment.sizes && data.attachment.sizes.full ) { #>
+                                                               <img class="attachment-thumb" src="{{ data.attachment.sizes.full.url }}" draggable="false" alt="" />
+                                                       <# } else if ( 'audio' === data.attachment.type ) { #>
+                                                               <# if ( data.attachment.image && data.attachment.image.src && data.attachment.image.src !== data.attachment.icon ) { #>
+                                                                       <img src="{{ data.attachment.image.src }}" class="thumbnail" draggable="false" alt="" />
+                                                               <# } else { #>
+                                                                       <img src="{{ data.attachment.icon }}" class="attachment-thumb type-icon" draggable="false" alt="" />
+                                                               <# } #>
+                                                               <p class="attachment-meta attachment-meta-title">&#8220;{{ data.attachment.title }}&#8221;</p>
+                                                               <# if ( data.attachment.album || data.attachment.meta.album ) { #>
+                                                               <p class="attachment-meta"><em>{{ data.attachment.album || data.attachment.meta.album }}</em></p>
+                                                               <# } #>
+                                                               <# if ( data.attachment.artist || data.attachment.meta.artist ) { #>
+                                                               <p class="attachment-meta">{{ data.attachment.artist || data.attachment.meta.artist }}</p>
+                                                               <# } #>
+                                                               <audio style="visibility: hidden" controls class="wp-audio-shortcode" width="100%" preload="none">
+                                                                       <source type="{{ data.attachment.mime }}" src="{{ data.attachment.url }}"/>
+                                                               </audio>
+                                                       <# } else if ( 'video' === data.attachment.type ) { #>
+                                                               <div class="wp-media-wrapper wp-video">
+                                                                       <video controls="controls" class="wp-video-shortcode" preload="metadata"
+                                                                               <# if ( data.attachment.image && data.attachment.image.src !== data.attachment.icon ) { #>poster="{{ data.attachment.image.src }}"<# } #>>
+                                                                               <source type="{{ data.attachment.mime }}" src="{{ data.attachment.url }}"/>
+                                                                       </video>
+                                                               </div>
+                                                       <# } else { #>
+                                                               <img class="attachment-thumb type-icon icon" src="{{ data.attachment.icon }}" draggable="false" alt="" />
+                                                               <p class="attachment-title">{{ data.attachment.title }}</p>
+                                                       <# } #>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+                       <div class="actions">
+                               <# if ( data.canUpload ) { #>
+                               <button type="button" class="button remove-button"><?php echo $this->button_labels['remove']; ?></button>
+                               <button type="button" class="button upload-button" id="{{ data.settings['default'] }}-button"><?php echo $this->button_labels['change']; ?></button>
+                               <div style="clear:both"></div>
+                               <# } #>
+                       </div>
+               <# } else { #>
+                       <div class="current">
+                               <div class="container">
+                                       <div class="placeholder">
+                                               <div class="inner">
+                                                       <span>
+                                                               <?php echo $this->button_labels['placeholder']; ?>
+                                                       </span>
+                                               </div>
+                                       </div>
+                               </div>
+                       </div>
+                       <div class="actions">
+                               <# if ( data.defaultAttachment ) { #>
+                                       <button type="button" class="button default-button"><?php echo $this->button_labels['default']; ?></button>
+                               <# } #>
+                               <# if ( data.canUpload ) { #>
+                               <button type="button" class="button upload-button" id="{{ data.settings['default'] }}-button"><?php echo $this->button_labels['select']; ?></button>
+                               <# } #>
+                               <div style="clear:both"></div>
+                       </div>
+               <# } #>
+               <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-nav-menu-auto-add-control.php b/wp-includes/customize/class-wp-customize-nav-menu-auto-add-control.php
new file mode 100644 (file)
index 0000000..c7e58cd
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Customize API: WP_Customize_Nav_Menu_Auto_Add_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize control to represent the auto_add field for a given menu.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Control
+ */
+class WP_Customize_Nav_Menu_Auto_Add_Control extends WP_Customize_Control {
+
+       /**
+        * Type of control, used by JS.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'nav_menu_auto_add';
+
+       /**
+        * No-op since we're using JS template.
+        *
+        * @since 4.3.0
+        * @access protected
+        */
+       protected function render_content() {}
+
+       /**
+        * Render the Underscore template for this control.
+        *
+        * @since 4.3.0
+        * @access protected
+        */
+       protected function content_template() {
+               ?>
+               <span class="customize-control-title"><?php _e( 'Menu options' ); ?></span>
+               <label>
+                       <input type="checkbox" class="auto_add" />
+                       <?php _e( 'Automatically add new top-level pages to this menu' ); ?>
+               </label>
+               <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-nav-menu-control.php b/wp-includes/customize/class-wp-customize-nav-menu-control.php
new file mode 100644 (file)
index 0000000..f138443
--- /dev/null
@@ -0,0 +1,102 @@
+<?php
+/**
+ * Customize API: WP_Customize_Nav_Menu_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Nav Menu Control Class.
+ *
+ * @since 4.3.0
+ */
+class WP_Customize_Nav_Menu_Control extends WP_Customize_Control {
+
+       /**
+        * Control type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'nav_menu';
+
+       /**
+        * The nav menu setting.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var WP_Customize_Nav_Menu_Setting
+        */
+       public $setting;
+
+       /**
+        * Don't render the control's content - it uses a JS template instead.
+        *
+        * @since 4.3.0
+        * @access public
+        */
+       public function render_content() {}
+
+       /**
+        * JS/Underscore template for the control UI.
+        *
+        * @since 4.3.0
+        * @access public
+        */
+       public function content_template() {
+               ?>
+               <button type="button" class="button-secondary add-new-menu-item" aria-label="<?php esc_attr_e( 'Add or remove menu items' ); ?>" aria-expanded="false" aria-controls="available-menu-items">
+                       <?php _e( 'Add Items' ); ?>
+               </button>
+               <button type="button" class="button-link reorder-toggle" aria-label="<?php esc_attr_e( 'Reorder menu items' ); ?>" aria-describedby="reorder-items-desc-{{ data.menu_id }}">
+                       <span class="reorder"><?php _ex( 'Reorder', 'Reorder menu items in Customizer' ); ?></span>
+                       <span class="reorder-done"><?php _ex( 'Done', 'Cancel reordering menu items in Customizer' ); ?></span>
+               </button>
+               <p class="screen-reader-text" id="reorder-items-desc-{{ data.menu_id }}"><?php _e( 'When in reorder mode, additional controls to reorder menu items will be available in the items list above.' ); ?></p>
+               <span class="menu-delete-item">
+                       <button type="button" class="button-link menu-delete">
+                               <?php _e( 'Delete Menu' ); ?>
+                       </button>
+               </span>
+               <?php if ( current_theme_supports( 'menus' ) ) : ?>
+               <ul class="menu-settings">
+                       <li class="customize-control">
+                               <span class="customize-control-title"><?php _e( 'Menu locations' ); ?></span>
+                       </li>
+
+                       <?php foreach ( get_registered_nav_menus() as $location => $description ) : ?>
+                       <li class="customize-control customize-control-checkbox assigned-menu-location">
+                               <label>
+                                       <input type="checkbox" data-menu-id="{{ data.menu_id }}" data-location-id="<?php echo esc_attr( $location ); ?>" class="menu-location" /> <?php echo $description; ?>
+                                       <span class="theme-location-set"><?php
+                                               /* translators: %s: menu name */
+                                               printf( _x( '(Current: %s)', 'menu location' ),
+                                                       '<span class="current-menu-location-name-' . esc_attr( $location ) . '"></span>'
+                                               );
+                                       ?></span>
+                               </label>
+                       </li>
+                       <?php endforeach; ?>
+
+               </ul>
+               <?php endif;
+       }
+
+       /**
+        * Return parameters for this control.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @return array Exported parameters.
+        */
+       public function json() {
+               $exported            = parent::json();
+               $exported['menu_id'] = $this->setting->term_id;
+
+               return $exported;
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-nav-menu-item-control.php b/wp-includes/customize/class-wp-customize-nav-menu-item-control.php
new file mode 100644 (file)
index 0000000..466f214
--- /dev/null
@@ -0,0 +1,165 @@
+<?php
+/**
+ * Customize API: WP_Customize_Nav_Menu_Item_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize control to represent the name field for a given menu.
+ *
+ * @since 4.3.0
+ */
+class WP_Customize_Nav_Menu_Item_Control extends WP_Customize_Control {
+
+       /**
+        * Control type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'nav_menu_item';
+
+       /**
+        * The nav menu item setting.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var WP_Customize_Nav_Menu_Item_Setting
+        */
+       public $setting;
+
+       /**
+        * Constructor.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @see WP_Customize_Control::__construct()
+        *
+        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
+        * @param string               $id      The control ID.
+        * @param array                $args    Optional. Overrides class property defaults.
+        */
+       public function __construct( $manager, $id, $args = array() ) {
+               parent::__construct( $manager, $id, $args );
+       }
+
+       /**
+        * Don't render the control's content - it's rendered with a JS template.
+        *
+        * @since 4.3.0
+        * @access public
+        */
+       public function render_content() {}
+
+       /**
+        * JS/Underscore template for the control UI.
+        *
+        * @since 4.3.0
+        * @access public
+        */
+       public function content_template() {
+               ?>
+               <div class="menu-item-bar">
+                       <div class="menu-item-handle">
+                               <span class="item-type" aria-hidden="true">{{ data.item_type_label }}</span>
+                               <span class="item-title" aria-hidden="true">
+                                       <span class="spinner"></span>
+                                       <span class="menu-item-title<# if ( ! data.title ) { #> no-title<# } #>">{{ data.title || wp.customize.Menus.data.l10n.untitled }}</span>
+                               </span>
+                               <span class="item-controls">
+                                       <button type="button" class="button-link item-edit" aria-expanded="false"><span class="screen-reader-text"><?php
+                                               /* translators: 1: Title of a menu item, 2: Type of a menu item */
+                                               printf( __( 'Edit menu item: %1$s (%2$s)' ), '{{ data.title || wp.customize.Menus.data.l10n.untitled }}', '{{ data.item_type_label }}' );
+                                       ?></span><span class="toggle-indicator" aria-hidden="true"></span></button>
+                                       <button type="button" class="button-link item-delete submitdelete deletion"><span class="screen-reader-text"><?php
+                                               /* translators: 1: Title of a menu item, 2: Type of a menu item */
+                                               printf( __( 'Remove Menu Item: %1$s (%2$s)' ), '{{ data.title || wp.customize.Menus.data.l10n.untitled }}', '{{ data.item_type_label }}' );
+                                       ?></span></button>
+                               </span>
+                       </div>
+               </div>
+
+               <div class="menu-item-settings" id="menu-item-settings-{{ data.menu_item_id }}">
+                       <# if ( 'custom' === data.item_type ) { #>
+                       <p class="field-url description description-thin">
+                               <label for="edit-menu-item-url-{{ data.menu_item_id }}">
+                                       <?php _e( 'URL' ); ?><br />
+                                       <input class="widefat code edit-menu-item-url" type="text" id="edit-menu-item-url-{{ data.menu_item_id }}" name="menu-item-url" />
+                               </label>
+                       </p>
+               <# } #>
+                       <p class="description description-thin">
+                               <label for="edit-menu-item-title-{{ data.menu_item_id }}">
+                                       <?php _e( 'Navigation Label' ); ?><br />
+                                       <input type="text" id="edit-menu-item-title-{{ data.menu_item_id }}" class="widefat edit-menu-item-title" name="menu-item-title" />
+                               </label>
+                       </p>
+                       <p class="field-link-target description description-thin">
+                               <label for="edit-menu-item-target-{{ data.menu_item_id }}">
+                                       <input type="checkbox" id="edit-menu-item-target-{{ data.menu_item_id }}" class="edit-menu-item-target" value="_blank" name="menu-item-target" />
+                                       <?php _e( 'Open link in a new tab' ); ?>
+                               </label>
+                       </p>
+                       <p class="field-attr-title description description-thin">
+                               <label for="edit-menu-item-attr-title-{{ data.menu_item_id }}">
+                                       <?php _e( 'Title Attribute' ); ?><br />
+                                       <input type="text" id="edit-menu-item-attr-title-{{ data.menu_item_id }}" class="widefat edit-menu-item-attr-title" name="menu-item-attr-title" />
+                               </label>
+                       </p>
+                       <p class="field-css-classes description description-thin">
+                               <label for="edit-menu-item-classes-{{ data.menu_item_id }}">
+                                       <?php _e( 'CSS Classes' ); ?><br />
+                                       <input type="text" id="edit-menu-item-classes-{{ data.menu_item_id }}" class="widefat code edit-menu-item-classes" name="menu-item-classes" />
+                               </label>
+                       </p>
+                       <p class="field-xfn description description-thin">
+                               <label for="edit-menu-item-xfn-{{ data.menu_item_id }}">
+                                       <?php _e( 'Link Relationship (XFN)' ); ?><br />
+                                       <input type="text" id="edit-menu-item-xfn-{{ data.menu_item_id }}" class="widefat code edit-menu-item-xfn" name="menu-item-xfn" />
+                               </label>
+                       </p>
+                       <p class="field-description description description-thin">
+                               <label for="edit-menu-item-description-{{ data.menu_item_id }}">
+                                       <?php _e( 'Description' ); ?><br />
+                                       <textarea id="edit-menu-item-description-{{ data.menu_item_id }}" class="widefat edit-menu-item-description" rows="3" cols="20" name="menu-item-description">{{ data.description }}</textarea>
+                                       <span class="description"><?php _e( 'The description will be displayed in the menu if the current theme supports it.' ); ?></span>
+                               </label>
+                       </p>
+
+                       <div class="menu-item-actions description-thin submitbox">
+                               <# if ( ( 'post_type' === data.item_type || 'taxonomy' === data.item_type ) && '' !== data.original_title ) { #>
+                               <p class="link-to-original">
+                                       <?php printf( __( 'Original: %s' ), '<a class="original-link" href="{{ data.url }}">{{ data.original_title }}</a>' ); ?>
+                               </p>
+                               <# } #>
+
+                               <button type="button" class="button-link item-delete submitdelete deletion"><?php _e( 'Remove' ); ?></button>
+                               <span class="spinner"></span>
+                       </div>
+                       <input type="hidden" name="menu-item-db-id[{{ data.menu_item_id }}]" class="menu-item-data-db-id" value="{{ data.menu_item_id }}" />
+                       <input type="hidden" name="menu-item-parent-id[{{ data.menu_item_id }}]" class="menu-item-data-parent-id" value="{{ data.parent }}" />
+               </div><!-- .menu-item-settings-->
+               <ul class="menu-item-transport"></ul>
+               <?php
+       }
+
+       /**
+        * Return parameters for this control.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @return array Exported parameters.
+        */
+       public function json() {
+               $exported                 = parent::json();
+               $exported['menu_item_id'] = $this->setting->post_id;
+
+               return $exported;
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php b/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php
new file mode 100644 (file)
index 0000000..073423e
--- /dev/null
@@ -0,0 +1,821 @@
+<?php
+/**
+ * Customize API: WP_Customize_Nav_Menu_Item_Setting class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Setting to represent a nav_menu.
+ *
+ * Subclass of WP_Customize_Setting to represent a nav_menu taxonomy term, and
+ * the IDs for the nav_menu_items associated with the nav menu.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Setting
+ */
+class WP_Customize_Nav_Menu_Item_Setting extends WP_Customize_Setting {
+
+       const ID_PATTERN = '/^nav_menu_item\[(?P<id>-?\d+)\]$/';
+
+       const POST_TYPE = 'nav_menu_item';
+
+       const TYPE = 'nav_menu_item';
+
+       /**
+        * Setting type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = self::TYPE;
+
+       /**
+        * Default setting value.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var array
+        *
+        * @see wp_setup_nav_menu_item()
+        */
+       public $default = array(
+               // The $menu_item_data for wp_update_nav_menu_item().
+               'object_id'        => 0,
+               'object'           => '', // Taxonomy name.
+               'menu_item_parent' => 0, // A.K.A. menu-item-parent-id; note that post_parent is different, and not included.
+               'position'         => 0, // A.K.A. menu_order.
+               'type'             => 'custom', // Note that type_label is not included here.
+               'title'            => '',
+               'url'              => '',
+               'target'           => '',
+               'attr_title'       => '',
+               'description'      => '',
+               'classes'          => '',
+               'xfn'              => '',
+               'status'           => 'publish',
+               'original_title'   => '',
+               'nav_menu_term_id' => 0, // This will be supplied as the $menu_id arg for wp_update_nav_menu_item().
+               '_invalid'         => false,
+       );
+
+       /**
+        * Default transport.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $transport = 'postMessage';
+
+       /**
+        * The post ID represented by this setting instance. This is the db_id.
+        *
+        * A negative value represents a placeholder ID for a new menu not yet saved.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var int
+        */
+       public $post_id;
+
+       /**
+        * Storage of pre-setup menu item to prevent wasted calls to wp_setup_nav_menu_item().
+        *
+        * @since 4.3.0
+        * @access protected
+        * @var array
+        */
+       protected $value;
+
+       /**
+        * Previous (placeholder) post ID used before creating a new menu item.
+        *
+        * This value will be exported to JS via the customize_save_response filter
+        * so that JavaScript can update the settings to refer to the newly-assigned
+        * post ID. This value is always negative to indicate it does not refer to
+        * a real post.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var int
+        *
+        * @see WP_Customize_Nav_Menu_Item_Setting::update()
+        * @see WP_Customize_Nav_Menu_Item_Setting::amend_customize_save_response()
+        */
+       public $previous_post_id;
+
+       /**
+        * When previewing or updating a menu item, this stores the previous nav_menu_term_id
+        * which ensures that we can apply the proper filters.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var int
+        */
+       public $original_nav_menu_term_id;
+
+       /**
+        * Whether or not update() was called.
+        *
+        * @since 4.3.0
+        * @access protected
+        * @var bool
+        */
+       protected $is_updated = false;
+
+       /**
+        * Status for calling the update method, used in customize_save_response filter.
+        *
+        * When status is inserted, the placeholder post ID is stored in $previous_post_id.
+        * When status is error, the error is stored in $update_error.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string updated|inserted|deleted|error
+        *
+        * @see WP_Customize_Nav_Menu_Item_Setting::update()
+        * @see WP_Customize_Nav_Menu_Item_Setting::amend_customize_save_response()
+        */
+       public $update_status;
+
+       /**
+        * Any error object returned by wp_update_nav_menu_item() when setting is updated.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var WP_Error
+        *
+        * @see WP_Customize_Nav_Menu_Item_Setting::update()
+        * @see WP_Customize_Nav_Menu_Item_Setting::amend_customize_save_response()
+        */
+       public $update_error;
+
+       /**
+        * Constructor.
+        *
+        * Any supplied $args override class property defaults.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @param WP_Customize_Manager $manager Bootstrap Customizer instance.
+        * @param string               $id      An specific ID of the setting. Can be a
+        *                                      theme mod or option name.
+        * @param array                $args    Optional. Setting arguments.
+        *
+        * @throws Exception If $id is not valid for this setting type.
+        */
+       public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) {
+               if ( empty( $manager->nav_menus ) ) {
+                       throw new Exception( 'Expected WP_Customize_Manager::$nav_menus to be set.' );
+               }
+
+               if ( ! preg_match( self::ID_PATTERN, $id, $matches ) ) {
+                       throw new Exception( "Illegal widget setting ID: $id" );
+               }
+
+               $this->post_id = intval( $matches['id'] );
+               add_action( 'wp_update_nav_menu_item', array( $this, 'flush_cached_value' ), 10, 2 );
+
+               parent::__construct( $manager, $id, $args );
+
+               // Ensure that an initially-supplied value is valid.
+               if ( isset( $this->value ) ) {
+                       $this->populate_value();
+                       foreach ( array_diff( array_keys( $this->default ), array_keys( $this->value ) ) as $missing ) {
+                               throw new Exception( "Supplied nav_menu_item value missing property: $missing" );
+                       }
+               }
+
+       }
+
+       /**
+        * Clear the cached value when this nav menu item is updated.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @param int $menu_id       The term ID for the menu.
+        * @param int $menu_item_id  The post ID for the menu item.
+        */
+       public function flush_cached_value( $menu_id, $menu_item_id ) {
+               unset( $menu_id );
+               if ( $menu_item_id === $this->post_id ) {
+                       $this->value = null;
+               }
+       }
+
+       /**
+        * Get the instance data for a given nav_menu_item setting.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @see wp_setup_nav_menu_item()
+        *
+        * @return array|false Instance data array, or false if the item is marked for deletion.
+        */
+       public function value() {
+               if ( $this->is_previewed && $this->_previewed_blog_id === get_current_blog_id() ) {
+                       $undefined  = new stdClass(); // Symbol.
+                       $post_value = $this->post_value( $undefined );
+
+                       if ( $undefined === $post_value ) {
+                               $value = $this->_original_value;
+                       } else {
+                               $value = $post_value;
+                       }
+               } else if ( isset( $this->value ) ) {
+                       $value = $this->value;
+               } else {
+                       $value = false;
+
+                       // Note that a ID of less than one indicates a nav_menu not yet inserted.
+                       if ( $this->post_id > 0 ) {
+                               $post = get_post( $this->post_id );
+                               if ( $post && self::POST_TYPE === $post->post_type ) {
+                                       $value = (array) wp_setup_nav_menu_item( $post );
+                               }
+                       }
+
+                       if ( ! is_array( $value ) ) {
+                               $value = $this->default;
+                       }
+
+                       // Cache the value for future calls to avoid having to re-call wp_setup_nav_menu_item().
+                       $this->value = $value;
+                       $this->populate_value();
+                       $value = $this->value;
+               }
+
+               return $value;
+       }
+
+       /**
+        * Ensure that the value is fully populated with the necessary properties.
+        *
+        * Translates some properties added by wp_setup_nav_menu_item() and removes others.
+        *
+        * @since 4.3.0
+        * @access protected
+        *
+        * @see WP_Customize_Nav_Menu_Item_Setting::value()
+        */
+       protected function populate_value() {
+               if ( ! is_array( $this->value ) ) {
+                       return;
+               }
+
+               if ( isset( $this->value['menu_order'] ) ) {
+                       $this->value['position'] = $this->value['menu_order'];
+                       unset( $this->value['menu_order'] );
+               }
+               if ( isset( $this->value['post_status'] ) ) {
+                       $this->value['status'] = $this->value['post_status'];
+                       unset( $this->value['post_status'] );
+               }
+
+               if ( ! isset( $this->value['original_title'] ) ) {
+                       $original_title = '';
+                       if ( 'post_type' === $this->value['type'] ) {
+                               $original_title = get_the_title( $this->value['object_id'] );
+                       } elseif ( 'taxonomy' === $this->value['type'] ) {
+                               $original_title = get_term_field( 'name', $this->value['object_id'], $this->value['object'], 'raw' );
+                               if ( is_wp_error( $original_title ) ) {
+                                       $original_title = '';
+                               }
+                       }
+                       $this->value['original_title'] = html_entity_decode( $original_title, ENT_QUOTES, get_bloginfo( 'charset' ) );
+               }
+
+               if ( ! isset( $this->value['nav_menu_term_id'] ) && $this->post_id > 0 ) {
+                       $menus = wp_get_post_terms( $this->post_id, WP_Customize_Nav_Menu_Setting::TAXONOMY, array(
+                               'fields' => 'ids',
+                       ) );
+                       if ( ! empty( $menus ) ) {
+                               $this->value['nav_menu_term_id'] = array_shift( $menus );
+                       } else {
+                               $this->value['nav_menu_term_id'] = 0;
+                       }
+               }
+
+               foreach ( array( 'object_id', 'menu_item_parent', 'nav_menu_term_id' ) as $key ) {
+                       if ( ! is_int( $this->value[ $key ] ) ) {
+                               $this->value[ $key ] = intval( $this->value[ $key ] );
+                       }
+               }
+               foreach ( array( 'classes', 'xfn' ) as $key ) {
+                       if ( is_array( $this->value[ $key ] ) ) {
+                               $this->value[ $key ] = implode( ' ', $this->value[ $key ] );
+                       }
+               }
+
+               if ( ! isset( $this->value['title'] ) ) {
+                       $this->value['title'] = '';
+               }
+
+               if ( ! isset( $this->value['_invalid'] ) ) {
+                       $this->value['_invalid'] = false;
+                       $is_known_invalid = (
+                               ( ( 'post_type' === $this->value['type'] || 'post_type_archive' === $this->value['type'] ) && ! post_type_exists( $this->value['object'] ) )
+                               ||
+                               ( 'taxonomy' === $this->value['type'] && ! taxonomy_exists( $this->value['object'] ) )
+                       );
+                       if ( $is_known_invalid ) {
+                               $this->value['_invalid'] = true;
+                       }
+               }
+
+               // Remove remaining properties available on a setup nav_menu_item post object which aren't relevant to the setting value.
+               $irrelevant_properties = array(
+                       'ID',
+                       'comment_count',
+                       'comment_status',
+                       'db_id',
+                       'filter',
+                       'guid',
+                       'ping_status',
+                       'pinged',
+                       'post_author',
+                       'post_content',
+                       'post_content_filtered',
+                       'post_date',
+                       'post_date_gmt',
+                       'post_excerpt',
+                       'post_mime_type',
+                       'post_modified',
+                       'post_modified_gmt',
+                       'post_name',
+                       'post_parent',
+                       'post_password',
+                       'post_title',
+                       'post_type',
+                       'to_ping',
+               );
+               foreach ( $irrelevant_properties as $property ) {
+                       unset( $this->value[ $property ] );
+               }
+       }
+
+       /**
+        * Handle previewing the setting.
+        *
+        * @since 4.3.0
+        * @since 4.4.0 Added boolean return value.
+        * @access public
+        *
+        * @see WP_Customize_Manager::post_value()
+        *
+        * @return bool False if method short-circuited due to no-op.
+        */
+       public function preview() {
+               if ( $this->is_previewed ) {
+                       return false;
+               }
+
+               $undefined = new stdClass();
+               $is_placeholder = ( $this->post_id < 0 );
+               $is_dirty = ( $undefined !== $this->post_value( $undefined ) );
+               if ( ! $is_placeholder && ! $is_dirty ) {
+                       return false;
+               }
+
+               $this->is_previewed              = true;
+               $this->_original_value           = $this->value();
+               $this->original_nav_menu_term_id = $this->_original_value['nav_menu_term_id'];
+               $this->_previewed_blog_id        = get_current_blog_id();
+
+               add_filter( 'wp_get_nav_menu_items', array( $this, 'filter_wp_get_nav_menu_items' ), 10, 3 );
+
+               $sort_callback = array( __CLASS__, 'sort_wp_get_nav_menu_items' );
+               if ( ! has_filter( 'wp_get_nav_menu_items', $sort_callback ) ) {
+                       add_filter( 'wp_get_nav_menu_items', array( __CLASS__, 'sort_wp_get_nav_menu_items' ), 1000, 3 );
+               }
+
+               // @todo Add get_post_metadata filters for plugins to add their data.
+
+               return true;
+       }
+
+       /**
+        * Filter the wp_get_nav_menu_items() result to supply the previewed menu items.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @see wp_get_nav_menu_items()
+        *
+        * @param array  $items An array of menu item post objects.
+        * @param object $menu  The menu object.
+        * @param array  $args  An array of arguments used to retrieve menu item objects.
+        * @return array Array of menu items,
+        */
+       public function filter_wp_get_nav_menu_items( $items, $menu, $args ) {
+               $this_item = $this->value();
+               $current_nav_menu_term_id = $this_item['nav_menu_term_id'];
+               unset( $this_item['nav_menu_term_id'] );
+
+               $should_filter = (
+                       $menu->term_id === $this->original_nav_menu_term_id
+                       ||
+                       $menu->term_id === $current_nav_menu_term_id
+               );
+               if ( ! $should_filter ) {
+                       return $items;
+               }
+
+               // Handle deleted menu item, or menu item moved to another menu.
+               $should_remove = (
+                       false === $this_item
+                       ||
+                       true === $this_item['_invalid']
+                       ||
+                       (
+                               $this->original_nav_menu_term_id === $menu->term_id
+                               &&
+                               $current_nav_menu_term_id !== $this->original_nav_menu_term_id
+                       )
+               );
+               if ( $should_remove ) {
+                       $filtered_items = array();
+                       foreach ( $items as $item ) {
+                               if ( $item->db_id !== $this->post_id ) {
+                                       $filtered_items[] = $item;
+                               }
+                       }
+                       return $filtered_items;
+               }
+
+               $mutated = false;
+               $should_update = (
+                       is_array( $this_item )
+                       &&
+                       $current_nav_menu_term_id === $menu->term_id
+               );
+               if ( $should_update ) {
+                       foreach ( $items as $item ) {
+                               if ( $item->db_id === $this->post_id ) {
+                                       foreach ( get_object_vars( $this->value_as_wp_post_nav_menu_item() ) as $key => $value ) {
+                                               $item->$key = $value;
+                                       }
+                                       $mutated = true;
+                               }
+                       }
+
+                       // Not found so we have to append it..
+                       if ( ! $mutated ) {
+                               $items[] = $this->value_as_wp_post_nav_menu_item();
+                       }
+               }
+
+               return $items;
+       }
+
+       /**
+        * Re-apply the tail logic also applied on $items by wp_get_nav_menu_items().
+        *
+        * @since 4.3.0
+        * @access public
+        * @static
+        *
+        * @see wp_get_nav_menu_items()
+        *
+        * @param array  $items An array of menu item post objects.
+        * @param object $menu  The menu object.
+        * @param array  $args  An array of arguments used to retrieve menu item objects.
+        * @return array Array of menu items,
+        */
+       public static function sort_wp_get_nav_menu_items( $items, $menu, $args ) {
+               // @todo We should probably re-apply some constraints imposed by $args.
+               unset( $args['include'] );
+
+               // Remove invalid items only in frontend.
+               if ( ! is_admin() ) {
+                       $items = array_filter( $items, '_is_valid_nav_menu_item' );
+               }
+
+               if ( ARRAY_A === $args['output'] ) {
+                       $GLOBALS['_menu_item_sort_prop'] = $args['output_key'];
+                       usort( $items, '_sort_nav_menu_items' );
+                       $i = 1;
+
+                       foreach ( $items as $k => $item ) {
+                               $items[ $k ]->{$args['output_key']} = $i++;
+                       }
+               }
+
+               return $items;
+       }
+
+       /**
+        * Get the value emulated into a WP_Post and set up as a nav_menu_item.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @return WP_Post With wp_setup_nav_menu_item() applied.
+        */
+       public function value_as_wp_post_nav_menu_item() {
+               $item = (object) $this->value();
+               unset( $item->nav_menu_term_id );
+
+               $item->post_status = $item->status;
+               unset( $item->status );
+
+               $item->post_type = 'nav_menu_item';
+               $item->menu_order = $item->position;
+               unset( $item->position );
+
+               if ( $item->title ) {
+                       $item->post_title = $item->title;
+               }
+
+               $item->ID = $this->post_id;
+               $item->db_id = $this->post_id;
+               $post = new WP_Post( (object) $item );
+
+               if ( empty( $post->post_author ) ) {
+                       $post->post_author = get_current_user_id();
+               }
+
+               if ( ! isset( $post->type_label ) ) {
+                       if ( 'post_type' === $post->type ) {
+                               $object = get_post_type_object( $post->object );
+                               if ( $object ) {
+                                       $post->type_label = $object->labels->singular_name;
+                               } else {
+                                       $post->type_label = $post->object;
+                               }
+                       } elseif ( 'taxonomy' == $post->type ) {
+                               $object = get_taxonomy( $post->object );
+                               if ( $object ) {
+                                       $post->type_label = $object->labels->singular_name;
+                               } else {
+                                       $post->type_label = $post->object;
+                               }
+                       } else {
+                               $post->type_label = __( 'Custom Link' );
+                       }
+               }
+
+               /** This filter is documented in wp-includes/nav-menu.php */
+               $post->attr_title = apply_filters( 'nav_menu_attr_title', $post->attr_title );
+
+               /** This filter is documented in wp-includes/nav-menu.php */
+               $post->description = apply_filters( 'nav_menu_description', wp_trim_words( $post->description, 200 ) );
+
+               return $post;
+       }
+
+       /**
+        * Sanitize an input.
+        *
+        * Note that parent::sanitize() erroneously does wp_unslash() on $value, but
+        * we remove that in this override.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @param array $menu_item_value The value to sanitize.
+        * @return array|false|null Null if an input isn't valid. False if it is marked for deletion.
+        *                          Otherwise the sanitized value.
+        */
+       public function sanitize( $menu_item_value ) {
+               // Menu is marked for deletion.
+               if ( false === $menu_item_value ) {
+                       return $menu_item_value;
+               }
+
+               // Invalid.
+               if ( ! is_array( $menu_item_value ) ) {
+                       return null;
+               }
+
+               $default = array(
+                       'object_id'        => 0,
+                       'object'           => '',
+                       'menu_item_parent' => 0,
+                       'position'         => 0,
+                       'type'             => 'custom',
+                       'title'            => '',
+                       'url'              => '',
+                       'target'           => '',
+                       'attr_title'       => '',
+                       'description'      => '',
+                       'classes'          => '',
+                       'xfn'              => '',
+                       'status'           => 'publish',
+                       'original_title'   => '',
+                       'nav_menu_term_id' => 0,
+                       '_invalid'         => false,
+               );
+               $menu_item_value = array_merge( $default, $menu_item_value );
+               $menu_item_value = wp_array_slice_assoc( $menu_item_value, array_keys( $default ) );
+               $menu_item_value['position'] = intval( $menu_item_value['position'] );
+
+               foreach ( array( 'object_id', 'menu_item_parent', 'nav_menu_term_id' ) as $key ) {
+                       // Note we need to allow negative-integer IDs for previewed objects not inserted yet.
+                       $menu_item_value[ $key ] = intval( $menu_item_value[ $key ] );
+               }
+
+               foreach ( array( 'type', 'object', 'target' ) as $key ) {
+                       $menu_item_value[ $key ] = sanitize_key( $menu_item_value[ $key ] );
+               }
+
+               foreach ( array( 'xfn', 'classes' ) as $key ) {
+                       $value = $menu_item_value[ $key ];
+                       if ( ! is_array( $value ) ) {
+                               $value = explode( ' ', $value );
+                       }
+                       $menu_item_value[ $key ] = implode( ' ', array_map( 'sanitize_html_class', $value ) );
+               }
+
+               $menu_item_value['original_title'] = sanitize_text_field( $menu_item_value['original_title'] );
+
+               // Apply the same filters as when calling wp_insert_post().
+               $menu_item_value['title'] = apply_filters( 'title_save_pre', $menu_item_value['title'] );
+               $menu_item_value['attr_title'] = apply_filters( 'excerpt_save_pre', $menu_item_value['attr_title'] );
+               $menu_item_value['description'] = apply_filters( 'content_save_pre', $menu_item_value['description'] );
+
+               $menu_item_value['url'] = esc_url_raw( $menu_item_value['url'] );
+               if ( 'publish' !== $menu_item_value['status'] ) {
+                       $menu_item_value['status'] = 'draft';
+               }
+
+               $menu_item_value['_invalid'] = (bool) $menu_item_value['_invalid'];
+
+               /** This filter is documented in wp-includes/class-wp-customize-setting.php */
+               return apply_filters( "customize_sanitize_{$this->id}", $menu_item_value, $this );
+       }
+
+       /**
+        * Create/update the nav_menu_item post for this setting.
+        *
+        * Any created menu items will have their assigned post IDs exported to the client
+        * via the customize_save_response filter. Likewise, any errors will be exported
+        * to the client via the customize_save_response() filter.
+        *
+        * To delete a menu, the client can send false as the value.
+        *
+        * @since 4.3.0
+        * @access protected
+        *
+        * @see wp_update_nav_menu_item()
+        *
+        * @param array|false $value The menu item array to update. If false, then the menu item will be deleted
+        *                           entirely. See WP_Customize_Nav_Menu_Item_Setting::$default for what the value
+        *                           should consist of.
+        * @return null|void
+        */
+       protected function update( $value ) {
+               if ( $this->is_updated ) {
+                       return;
+               }
+
+               $this->is_updated = true;
+               $is_placeholder   = ( $this->post_id < 0 );
+               $is_delete        = ( false === $value );
+
+               // Update the cached value.
+               $this->value = $value;
+
+               add_filter( 'customize_save_response', array( $this, 'amend_customize_save_response' ) );
+
+               if ( $is_delete ) {
+                       // If the current setting post is a placeholder, a delete request is a no-op.
+                       if ( $is_placeholder ) {
+                               $this->update_status = 'deleted';
+                       } else {
+                               $r = wp_delete_post( $this->post_id, true );
+
+                               if ( false === $r ) {
+                                       $this->update_error  = new WP_Error( 'delete_failure' );
+                                       $this->update_status = 'error';
+                               } else {
+                                       $this->update_status = 'deleted';
+                               }
+                               // @todo send back the IDs for all associated nav menu items deleted, so these settings (and controls) can be removed from Customizer?
+                       }
+               } else {
+
+                       // Handle saving menu items for menus that are being newly-created.
+                       if ( $value['nav_menu_term_id'] < 0 ) {
+                               $nav_menu_setting_id = sprintf( 'nav_menu[%s]', $value['nav_menu_term_id'] );
+                               $nav_menu_setting    = $this->manager->get_setting( $nav_menu_setting_id );
+
+                               if ( ! $nav_menu_setting || ! ( $nav_menu_setting instanceof WP_Customize_Nav_Menu_Setting ) ) {
+                                       $this->update_status = 'error';
+                                       $this->update_error  = new WP_Error( 'unexpected_nav_menu_setting' );
+                                       return;
+                               }
+
+                               if ( false === $nav_menu_setting->save() ) {
+                                       $this->update_status = 'error';
+                                       $this->update_error  = new WP_Error( 'nav_menu_setting_failure' );
+                                       return;
+                               }
+
+                               if ( $nav_menu_setting->previous_term_id !== intval( $value['nav_menu_term_id'] ) ) {
+                                       $this->update_status = 'error';
+                                       $this->update_error  = new WP_Error( 'unexpected_previous_term_id' );
+                                       return;
+                               }
+
+                               $value['nav_menu_term_id'] = $nav_menu_setting->term_id;
+                       }
+
+                       // Handle saving a nav menu item that is a child of a nav menu item being newly-created.
+                       if ( $value['menu_item_parent'] < 0 ) {
+                               $parent_nav_menu_item_setting_id = sprintf( 'nav_menu_item[%s]', $value['menu_item_parent'] );
+                               $parent_nav_menu_item_setting    = $this->manager->get_setting( $parent_nav_menu_item_setting_id );
+
+                               if ( ! $parent_nav_menu_item_setting || ! ( $parent_nav_menu_item_setting instanceof WP_Customize_Nav_Menu_Item_Setting ) ) {
+                                       $this->update_status = 'error';
+                                       $this->update_error  = new WP_Error( 'unexpected_nav_menu_item_setting' );
+                                       return;
+                               }
+
+                               if ( false === $parent_nav_menu_item_setting->save() ) {
+                                       $this->update_status = 'error';
+                                       $this->update_error  = new WP_Error( 'nav_menu_item_setting_failure' );
+                                       return;
+                               }
+
+                               if ( $parent_nav_menu_item_setting->previous_post_id !== intval( $value['menu_item_parent'] ) ) {
+                                       $this->update_status = 'error';
+                                       $this->update_error  = new WP_Error( 'unexpected_previous_post_id' );
+                                       return;
+                               }
+
+                               $value['menu_item_parent'] = $parent_nav_menu_item_setting->post_id;
+                       }
+
+                       // Insert or update menu.
+                       $menu_item_data = array(
+                               'menu-item-object-id'   => $value['object_id'],
+                               'menu-item-object'      => $value['object'],
+                               'menu-item-parent-id'   => $value['menu_item_parent'],
+                               'menu-item-position'    => $value['position'],
+                               'menu-item-type'        => $value['type'],
+                               'menu-item-title'       => $value['title'],
+                               'menu-item-url'         => $value['url'],
+                               'menu-item-description' => $value['description'],
+                               'menu-item-attr-title'  => $value['attr_title'],
+                               'menu-item-target'      => $value['target'],
+                               'menu-item-classes'     => $value['classes'],
+                               'menu-item-xfn'         => $value['xfn'],
+                               'menu-item-status'      => $value['status'],
+                       );
+
+                       $r = wp_update_nav_menu_item(
+                               $value['nav_menu_term_id'],
+                               $is_placeholder ? 0 : $this->post_id,
+                               $menu_item_data
+                       );
+
+                       if ( is_wp_error( $r ) ) {
+                               $this->update_status = 'error';
+                               $this->update_error = $r;
+                       } else {
+                               if ( $is_placeholder ) {
+                                       $this->previous_post_id = $this->post_id;
+                                       $this->post_id = $r;
+                                       $this->update_status = 'inserted';
+                               } else {
+                                       $this->update_status = 'updated';
+                               }
+                       }
+               }
+
+       }
+
+       /**
+        * Export data for the JS client.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @see WP_Customize_Nav_Menu_Item_Setting::update()
+        *
+        * @param array $data Additional information passed back to the 'saved' event on `wp.customize`.
+        * @return array Save response data.
+        */
+       public function amend_customize_save_response( $data ) {
+               if ( ! isset( $data['nav_menu_item_updates'] ) ) {
+                       $data['nav_menu_item_updates'] = array();
+               }
+
+               $data['nav_menu_item_updates'][] = array(
+                       'post_id'          => $this->post_id,
+                       'previous_post_id' => $this->previous_post_id,
+                       'error'            => $this->update_error ? $this->update_error->get_error_code() : null,
+                       'status'           => $this->update_status,
+               );
+               return $data;
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-nav-menu-location-control.php b/wp-includes/customize/class-wp-customize-nav-menu-location-control.php
new file mode 100644 (file)
index 0000000..80ba741
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Customize API: WP_Customize_Nav_Menu_Location_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Menu Location Control Class.
+ *
+ * This custom control is only needed for JS.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Control
+ */
+class WP_Customize_Nav_Menu_Location_Control extends WP_Customize_Control {
+
+       /**
+        * Control type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'nav_menu_location';
+
+       /**
+        * Location ID.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $location_id = '';
+
+       /**
+        * Refresh the parameters passed to JavaScript via JSON.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @see WP_Customize_Control::to_json()
+        */
+       public function to_json() {
+               parent::to_json();
+               $this->json['locationId'] = $this->location_id;
+       }
+
+       /**
+        * Render content just like a normal select control.
+        *
+        * @since 4.3.0
+        * @access public
+        */
+       public function render_content() {
+               if ( empty( $this->choices ) ) {
+                       return;
+               }
+               ?>
+               <label>
+                       <?php if ( ! empty( $this->label ) ) : ?>
+                       <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
+                       <?php endif; ?>
+
+                       <?php if ( ! empty( $this->description ) ) : ?>
+                       <span class="description customize-control-description"><?php echo $this->description; ?></span>
+                       <?php endif; ?>
+
+                       <select <?php $this->link(); ?>>
+                               <?php
+                               foreach ( $this->choices as $value => $label ) :
+                                       echo '<option value="' . esc_attr( $value ) . '"' . selected( $this->value(), $value, false ) . '>' . $label . '</option>';
+                               endforeach;
+                               ?>
+                       </select>
+               </label>
+               <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-nav-menu-name-control.php b/wp-includes/customize/class-wp-customize-nav-menu-name-control.php
new file mode 100644 (file)
index 0000000..a1b738c
--- /dev/null
@@ -0,0 +1,52 @@
+<?php
+/**
+ * Customize API: WP_Customize_Nav_Menu_Name_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize control to represent the name field for a given menu.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Control
+ */
+class WP_Customize_Nav_Menu_Name_Control extends WP_Customize_Control {
+
+       /**
+        * Type of control, used by JS.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'nav_menu_name';
+
+       /**
+        * No-op since we're using JS template.
+        *
+        * @since 4.3.0
+        * @access protected
+        */
+       protected function render_content() {}
+
+       /**
+        * Render the Underscore template for this control.
+        *
+        * @since 4.3.0
+        * @access protected
+        */
+       protected function content_template() {
+               ?>
+               <label>
+                       <# if ( data.label ) { #>
+                               <span class="customize-control-title screen-reader-text">{{ data.label }}</span>
+                       <# } #>
+                       <input type="text" class="menu-name-field live-update-section-title" />
+               </label>
+               <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-nav-menu-section.php b/wp-includes/customize/class-wp-customize-nav-menu-section.php
new file mode 100644 (file)
index 0000000..fb5eb76
--- /dev/null
@@ -0,0 +1,43 @@
+<?php
+/**
+ * Customize API: WP_Customize_Nav_Menu_Section class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Menu Section Class
+ *
+ * Custom section only needed in JS.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Section
+ */
+class WP_Customize_Nav_Menu_Section extends WP_Customize_Section {
+
+       /**
+        * Control type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'nav_menu';
+
+       /**
+        * Get section parameters for JS.
+        *
+        * @since 4.3.0
+        * @access public
+        * @return array Exported parameters.
+        */
+       public function json() {
+               $exported = parent::json();
+               $exported['menu_id'] = intval( preg_replace( '/^nav_menu\[(\d+)\]/', '$1', $this->id ) );
+
+               return $exported;
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-nav-menu-setting.php b/wp-includes/customize/class-wp-customize-nav-menu-setting.php
new file mode 100644 (file)
index 0000000..5562a8d
--- /dev/null
@@ -0,0 +1,652 @@
+<?php
+/**
+ * Customize API: WP_Customize_Nav_Menu_Setting class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Setting to represent a nav_menu.
+ *
+ * Subclass of WP_Customize_Setting to represent a nav_menu taxonomy term, and
+ * the IDs for the nav_menu_items associated with the nav menu.
+ *
+ * @since 4.3.0
+ *
+ * @see wp_get_nav_menu_object()
+ * @see WP_Customize_Setting
+ */
+class WP_Customize_Nav_Menu_Setting extends WP_Customize_Setting {
+
+       const ID_PATTERN = '/^nav_menu\[(?P<id>-?\d+)\]$/';
+
+       const TAXONOMY = 'nav_menu';
+
+       const TYPE = 'nav_menu';
+
+       /**
+        * Setting type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = self::TYPE;
+
+       /**
+        * Default setting value.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var array
+        *
+        * @see wp_get_nav_menu_object()
+        */
+       public $default = array(
+               'name'        => '',
+               'description' => '',
+               'parent'      => 0,
+               'auto_add'    => false,
+       );
+
+       /**
+        * Default transport.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $transport = 'postMessage';
+
+       /**
+        * The term ID represented by this setting instance.
+        *
+        * A negative value represents a placeholder ID for a new menu not yet saved.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var int
+        */
+       public $term_id;
+
+       /**
+        * Previous (placeholder) term ID used before creating a new menu.
+        *
+        * This value will be exported to JS via the customize_save_response filter
+        * so that JavaScript can update the settings to refer to the newly-assigned
+        * term ID. This value is always negative to indicate it does not refer to
+        * a real term.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var int
+        *
+        * @see WP_Customize_Nav_Menu_Setting::update()
+        * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
+        */
+       public $previous_term_id;
+
+       /**
+        * Whether or not update() was called.
+        *
+        * @since 4.3.0
+        * @access protected
+        * @var bool
+        */
+       protected $is_updated = false;
+
+       /**
+        * Status for calling the update method, used in customize_save_response filter.
+        *
+        * When status is inserted, the placeholder term ID is stored in $previous_term_id.
+        * When status is error, the error is stored in $update_error.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string updated|inserted|deleted|error
+        *
+        * @see WP_Customize_Nav_Menu_Setting::update()
+        * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
+        */
+       public $update_status;
+
+       /**
+        * Any error object returned by wp_update_nav_menu_object() when setting is updated.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var WP_Error
+        *
+        * @see WP_Customize_Nav_Menu_Setting::update()
+        * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
+        */
+       public $update_error;
+
+       /**
+        * Constructor.
+        *
+        * Any supplied $args override class property defaults.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @param WP_Customize_Manager $manager Bootstrap Customizer instance.
+        * @param string               $id      An specific ID of the setting. Can be a
+        *                                      theme mod or option name.
+        * @param array                $args    Optional. Setting arguments.
+        *
+        * @throws Exception If $id is not valid for this setting type.
+        */
+       public function __construct( WP_Customize_Manager $manager, $id, array $args = array() ) {
+               if ( empty( $manager->nav_menus ) ) {
+                       throw new Exception( 'Expected WP_Customize_Manager::$nav_menus to be set.' );
+               }
+
+               if ( ! preg_match( self::ID_PATTERN, $id, $matches ) ) {
+                       throw new Exception( "Illegal widget setting ID: $id" );
+               }
+
+               $this->term_id = intval( $matches['id'] );
+
+               parent::__construct( $manager, $id, $args );
+       }
+
+       /**
+        * Get the instance data for a given widget setting.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @see wp_get_nav_menu_object()
+        *
+        * @return array Instance data.
+        */
+       public function value() {
+               if ( $this->is_previewed && $this->_previewed_blog_id === get_current_blog_id() ) {
+                       $undefined  = new stdClass(); // Symbol.
+                       $post_value = $this->post_value( $undefined );
+
+                       if ( $undefined === $post_value ) {
+                               $value = $this->_original_value;
+                       } else {
+                               $value = $post_value;
+                       }
+               } else {
+                       $value = false;
+
+                       // Note that a term_id of less than one indicates a nav_menu not yet inserted.
+                       if ( $this->term_id > 0 ) {
+                               $term = wp_get_nav_menu_object( $this->term_id );
+
+                               if ( $term ) {
+                                       $value = wp_array_slice_assoc( (array) $term, array_keys( $this->default ) );
+
+                                       $nav_menu_options  = (array) get_option( 'nav_menu_options', array() );
+                                       $value['auto_add'] = false;
+
+                                       if ( isset( $nav_menu_options['auto_add'] ) && is_array( $nav_menu_options['auto_add'] ) ) {
+                                               $value['auto_add'] = in_array( $term->term_id, $nav_menu_options['auto_add'] );
+                                       }
+                               }
+                       }
+
+                       if ( ! is_array( $value ) ) {
+                               $value = $this->default;
+                       }
+               }
+               return $value;
+       }
+
+       /**
+        * Handle previewing the setting.
+        *
+        * @since 4.3.0
+        * @since 4.4.0 Added boolean return value
+        * @access public
+        *
+        * @see WP_Customize_Manager::post_value()
+        *
+        * @return bool False if method short-circuited due to no-op.
+        */
+       public function preview() {
+               if ( $this->is_previewed ) {
+                       return false;
+               }
+
+               $undefined = new stdClass();
+               $is_placeholder = ( $this->term_id < 0 );
+               $is_dirty = ( $undefined !== $this->post_value( $undefined ) );
+               if ( ! $is_placeholder && ! $is_dirty ) {
+                       return false;
+               }
+
+               $this->is_previewed       = true;
+               $this->_original_value    = $this->value();
+               $this->_previewed_blog_id = get_current_blog_id();
+
+               add_filter( 'wp_get_nav_menus', array( $this, 'filter_wp_get_nav_menus' ), 10, 2 );
+               add_filter( 'wp_get_nav_menu_object', array( $this, 'filter_wp_get_nav_menu_object' ), 10, 2 );
+               add_filter( 'default_option_nav_menu_options', array( $this, 'filter_nav_menu_options' ) );
+               add_filter( 'option_nav_menu_options', array( $this, 'filter_nav_menu_options' ) );
+
+               return true;
+       }
+
+       /**
+        * Filter the wp_get_nav_menus() result to ensure the inserted menu object is included, and the deleted one is removed.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @see wp_get_nav_menus()
+        *
+        * @param array $menus An array of menu objects.
+        * @param array $args  An array of arguments used to retrieve menu objects.
+        * @return array
+        */
+       public function filter_wp_get_nav_menus( $menus, $args ) {
+               if ( get_current_blog_id() !== $this->_previewed_blog_id ) {
+                       return $menus;
+               }
+
+               $setting_value = $this->value();
+               $is_delete = ( false === $setting_value );
+               $index = -1;
+
+               // Find the existing menu item's position in the list.
+               foreach ( $menus as $i => $menu ) {
+                       if ( (int) $this->term_id === (int) $menu->term_id || (int) $this->previous_term_id === (int) $menu->term_id ) {
+                               $index = $i;
+                               break;
+                       }
+               }
+
+               if ( $is_delete ) {
+                       // Handle deleted menu by removing it from the list.
+                       if ( -1 !== $index ) {
+                               array_splice( $menus, $index, 1 );
+                       }
+               } else {
+                       // Handle menus being updated or inserted.
+                       $menu_obj = (object) array_merge( array(
+                               'term_id'          => $this->term_id,
+                               'term_taxonomy_id' => $this->term_id,
+                               'slug'             => sanitize_title( $setting_value['name'] ),
+                               'count'            => 0,
+                               'term_group'       => 0,
+                               'taxonomy'         => self::TAXONOMY,
+                               'filter'           => 'raw',
+                       ), $setting_value );
+
+                       array_splice( $menus, $index, ( -1 === $index ? 0 : 1 ), array( $menu_obj ) );
+               }
+
+               // Make sure the menu objects get re-sorted after an update/insert.
+               if ( ! $is_delete && ! empty( $args['orderby'] ) ) {
+                       $this->_current_menus_sort_orderby = $args['orderby'];
+                       usort( $menus, array( $this, '_sort_menus_by_orderby' ) );
+               }
+               // @todo add support for $args['hide_empty'] === true
+
+               return $menus;
+       }
+
+       /**
+        * Temporary non-closure passing of orderby value to function.
+        *
+        * @since 4.3.0
+        * @access protected
+        * @var string
+        *
+        * @see WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus()
+        * @see WP_Customize_Nav_Menu_Setting::_sort_menus_by_orderby()
+        */
+       protected $_current_menus_sort_orderby;
+
+       /**
+        * Sort menu objects by the class-supplied orderby property.
+        *
+        * This is a workaround for a lack of closures.
+        *
+        * @since 4.3.0
+        * @access protected
+        * @param object $menu1
+        * @param object $menu2
+        * @return int
+        *
+        * @see WP_Customize_Nav_Menu_Setting::filter_wp_get_nav_menus()
+        */
+       protected function _sort_menus_by_orderby( $menu1, $menu2 ) {
+               $key = $this->_current_menus_sort_orderby;
+               return strcmp( $menu1->$key, $menu2->$key );
+       }
+
+       /**
+        * Filter the wp_get_nav_menu_object() result to supply the previewed menu object.
+        *
+        * Requesting a nav_menu object by anything but ID is not supported.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @see wp_get_nav_menu_object()
+        *
+        * @param object|null $menu_obj Object returned by wp_get_nav_menu_object().
+        * @param string      $menu_id  ID of the nav_menu term. Requests by slug or name will be ignored.
+        * @return object|null
+        */
+       public function filter_wp_get_nav_menu_object( $menu_obj, $menu_id ) {
+               $ok = (
+                       get_current_blog_id() === $this->_previewed_blog_id
+                       &&
+                       is_int( $menu_id )
+                       &&
+                       $menu_id === $this->term_id
+               );
+               if ( ! $ok ) {
+                       return $menu_obj;
+               }
+
+               $setting_value = $this->value();
+
+               // Handle deleted menus.
+               if ( false === $setting_value ) {
+                       return false;
+               }
+
+               // Handle sanitization failure by preventing short-circuiting.
+               if ( null === $setting_value ) {
+                       return $menu_obj;
+               }
+
+               $menu_obj = (object) array_merge( array(
+                               'term_id'          => $this->term_id,
+                               'term_taxonomy_id' => $this->term_id,
+                               'slug'             => sanitize_title( $setting_value['name'] ),
+                               'count'            => 0,
+                               'term_group'       => 0,
+                               'taxonomy'         => self::TAXONOMY,
+                               'filter'           => 'raw',
+                       ), $setting_value );
+
+               return $menu_obj;
+       }
+
+       /**
+        * Filter the nav_menu_options option to include this menu's auto_add preference.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @param array $nav_menu_options Nav menu options including auto_add.
+        * @return array (Kaybe) modified nav menu options.
+        */
+       public function filter_nav_menu_options( $nav_menu_options ) {
+               if ( $this->_previewed_blog_id !== get_current_blog_id() ) {
+                       return $nav_menu_options;
+               }
+
+               $menu = $this->value();
+               $nav_menu_options = $this->filter_nav_menu_options_value(
+                       $nav_menu_options,
+                       $this->term_id,
+                       false === $menu ? false : $menu['auto_add']
+               );
+
+               return $nav_menu_options;
+       }
+
+       /**
+        * Sanitize an input.
+        *
+        * Note that parent::sanitize() erroneously does wp_unslash() on $value, but
+        * we remove that in this override.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @param array $value The value to sanitize.
+        * @return array|false|null Null if an input isn't valid. False if it is marked for deletion.
+        *                          Otherwise the sanitized value.
+        */
+       public function sanitize( $value ) {
+               // Menu is marked for deletion.
+               if ( false === $value ) {
+                       return $value;
+               }
+
+               // Invalid.
+               if ( ! is_array( $value ) ) {
+                       return null;
+               }
+
+               $default = array(
+                       'name'        => '',
+                       'description' => '',
+                       'parent'      => 0,
+                       'auto_add'    => false,
+               );
+               $value = array_merge( $default, $value );
+               $value = wp_array_slice_assoc( $value, array_keys( $default ) );
+
+               $value['name']        = trim( esc_html( $value['name'] ) ); // This sanitization code is used in wp-admin/nav-menus.php.
+               $value['description'] = sanitize_text_field( $value['description'] );
+               $value['parent']      = max( 0, intval( $value['parent'] ) );
+               $value['auto_add']    = ! empty( $value['auto_add'] );
+
+               if ( '' === $value['name'] ) {
+                       $value['name'] = _x( '(unnamed)', 'Missing menu name.' );
+               }
+
+               /** This filter is documented in wp-includes/class-wp-customize-setting.php */
+               return apply_filters( "customize_sanitize_{$this->id}", $value, $this );
+       }
+
+       /**
+        * Storage for data to be sent back to client in customize_save_response filter.
+        *
+        * @access protected
+        * @since 4.3.0
+        * @var array
+        *
+        * @see WP_Customize_Nav_Menu_Setting::amend_customize_save_response()
+        */
+       protected $_widget_nav_menu_updates = array();
+
+       /**
+        * Create/update the nav_menu term for this setting.
+        *
+        * Any created menus will have their assigned term IDs exported to the client
+        * via the customize_save_response filter. Likewise, any errors will be exported
+        * to the client via the customize_save_response() filter.
+        *
+        * To delete a menu, the client can send false as the value.
+        *
+        * @since 4.3.0
+        * @access protected
+        *
+        * @see wp_update_nav_menu_object()
+        *
+        * @param array|false $value {
+        *     The value to update. Note that slug cannot be updated via wp_update_nav_menu_object().
+        *     If false, then the menu will be deleted entirely.
+        *
+        *     @type string $name        The name of the menu to save.
+        *     @type string $description The term description. Default empty string.
+        *     @type int    $parent      The id of the parent term. Default 0.
+        *     @type bool   $auto_add    Whether pages will auto_add to this menu. Default false.
+        * }
+        * @return null|void
+        */
+       protected function update( $value ) {
+               if ( $this->is_updated ) {
+                       return;
+               }
+
+               $this->is_updated = true;
+               $is_placeholder   = ( $this->term_id < 0 );
+               $is_delete        = ( false === $value );
+
+               add_filter( 'customize_save_response', array( $this, 'amend_customize_save_response' ) );
+
+               $auto_add = null;
+               if ( $is_delete ) {
+                       // If the current setting term is a placeholder, a delete request is a no-op.
+                       if ( $is_placeholder ) {
+                               $this->update_status = 'deleted';
+                       } else {
+                               $r = wp_delete_nav_menu( $this->term_id );
+
+                               if ( is_wp_error( $r ) ) {
+                                       $this->update_status = 'error';
+                                       $this->update_error  = $r;
+                               } else {
+                                       $this->update_status = 'deleted';
+                                       $auto_add = false;
+                               }
+                       }
+               } else {
+                       // Insert or update menu.
+                       $menu_data = wp_array_slice_assoc( $value, array( 'description', 'parent' ) );
+                       $menu_data['menu-name'] = $value['name'];
+
+                       $menu_id = $is_placeholder ? 0 : $this->term_id;
+                       $r = wp_update_nav_menu_object( $menu_id, $menu_data );
+                       $original_name = $menu_data['menu-name'];
+                       $name_conflict_suffix = 1;
+                       while ( is_wp_error( $r ) && 'menu_exists' === $r->get_error_code() ) {
+                               $name_conflict_suffix += 1;
+                               /* translators: 1: original menu name, 2: duplicate count */
+                               $menu_data['menu-name'] = sprintf( __( '%1$s (%2$d)' ), $original_name, $name_conflict_suffix );
+                               $r = wp_update_nav_menu_object( $menu_id, $menu_data );
+                       }
+
+                       if ( is_wp_error( $r ) ) {
+                               $this->update_status = 'error';
+                               $this->update_error  = $r;
+                       } else {
+                               if ( $is_placeholder ) {
+                                       $this->previous_term_id = $this->term_id;
+                                       $this->term_id          = $r;
+                                       $this->update_status    = 'inserted';
+                               } else {
+                                       $this->update_status = 'updated';
+                               }
+
+                               $auto_add = $value['auto_add'];
+                       }
+               }
+
+               if ( null !== $auto_add ) {
+                       $nav_menu_options = $this->filter_nav_menu_options_value(
+                               (array) get_option( 'nav_menu_options', array() ),
+                               $this->term_id,
+                               $auto_add
+                       );
+                       update_option( 'nav_menu_options', $nav_menu_options );
+               }
+
+               if ( 'inserted' === $this->update_status ) {
+                       // Make sure that new menus assigned to nav menu locations use their new IDs.
+                       foreach ( $this->manager->settings() as $setting ) {
+                               if ( ! preg_match( '/^nav_menu_locations\[/', $setting->id ) ) {
+                                       continue;
+                               }
+
+                               $post_value = $setting->post_value( null );
+                               if ( ! is_null( $post_value ) && $this->previous_term_id === intval( $post_value ) ) {
+                                       $this->manager->set_post_value( $setting->id, $this->term_id );
+                                       $setting->save();
+                               }
+                       }
+
+                       // Make sure that any nav_menu widgets referencing the placeholder nav menu get updated and sent back to client.
+                       foreach ( array_keys( $this->manager->unsanitized_post_values() ) as $setting_id ) {
+                               $nav_menu_widget_setting = $this->manager->get_setting( $setting_id );
+                               if ( ! $nav_menu_widget_setting || ! preg_match( '/^widget_nav_menu\[/', $nav_menu_widget_setting->id ) ) {
+                                       continue;
+                               }
+
+                               $widget_instance = $nav_menu_widget_setting->post_value(); // Note that this calls WP_Customize_Widgets::sanitize_widget_instance().
+                               if ( empty( $widget_instance['nav_menu'] ) || intval( $widget_instance['nav_menu'] ) !== $this->previous_term_id ) {
+                                       continue;
+                               }
+
+                               $widget_instance['nav_menu'] = $this->term_id;
+                               $updated_widget_instance = $this->manager->widgets->sanitize_widget_js_instance( $widget_instance );
+                               $this->manager->set_post_value( $nav_menu_widget_setting->id, $updated_widget_instance );
+                               $nav_menu_widget_setting->save();
+
+                               $this->_widget_nav_menu_updates[ $nav_menu_widget_setting->id ] = $updated_widget_instance;
+                       }
+               }
+       }
+
+       /**
+        * Updates a nav_menu_options array.
+        *
+        * @since 4.3.0
+        * @access protected
+        *
+        * @see WP_Customize_Nav_Menu_Setting::filter_nav_menu_options()
+        * @see WP_Customize_Nav_Menu_Setting::update()
+        *
+        * @param array $nav_menu_options Array as returned by get_option( 'nav_menu_options' ).
+        * @param int   $menu_id          The term ID for the given menu.
+        * @param bool  $auto_add         Whether to auto-add or not.
+        * @return array (Maybe) modified nav_menu_otions array.
+        */
+       protected function filter_nav_menu_options_value( $nav_menu_options, $menu_id, $auto_add ) {
+               $nav_menu_options = (array) $nav_menu_options;
+               if ( ! isset( $nav_menu_options['auto_add'] ) ) {
+                       $nav_menu_options['auto_add'] = array();
+               }
+
+               $i = array_search( $menu_id, $nav_menu_options['auto_add'] );
+               if ( $auto_add && false === $i ) {
+                       array_push( $nav_menu_options['auto_add'], $this->term_id );
+               } elseif ( ! $auto_add && false !== $i ) {
+                       array_splice( $nav_menu_options['auto_add'], $i, 1 );
+               }
+
+               return $nav_menu_options;
+       }
+
+       /**
+        * Export data for the JS client.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @see WP_Customize_Nav_Menu_Setting::update()
+        *
+        * @param array $data Additional information passed back to the 'saved' event on `wp.customize`.
+        * @return array Export data.
+        */
+       public function amend_customize_save_response( $data ) {
+               if ( ! isset( $data['nav_menu_updates'] ) ) {
+                       $data['nav_menu_updates'] = array();
+               }
+               if ( ! isset( $data['widget_nav_menu_updates'] ) ) {
+                       $data['widget_nav_menu_updates'] = array();
+               }
+
+               $data['nav_menu_updates'][] = array(
+                       'term_id'          => $this->term_id,
+                       'previous_term_id' => $this->previous_term_id,
+                       'error'            => $this->update_error ? $this->update_error->get_error_code() : null,
+                       'status'           => $this->update_status,
+                       'saved_value'      => 'deleted' === $this->update_status ? null : $this->value(),
+               );
+
+               $data['widget_nav_menu_updates'] = array_merge(
+                       $data['widget_nav_menu_updates'],
+                       $this->_widget_nav_menu_updates
+               );
+               $this->_widget_nav_menu_updates = array();
+
+               return $data;
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-nav-menus-panel.php b/wp-includes/customize/class-wp-customize-nav-menus-panel.php
new file mode 100644 (file)
index 0000000..e3be24b
--- /dev/null
@@ -0,0 +1,107 @@
+<?php
+/**
+ * Customize API: WP_Customize_Nav_Menus_Panel class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Nav Menus Panel Class
+ *
+ * Needed to add screen options.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Panel
+ */
+class WP_Customize_Nav_Menus_Panel extends WP_Customize_Panel {
+
+       /**
+        * Control type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'nav_menus';
+
+       /**
+        * Render screen options for Menus.
+        *
+        * @since 4.3.0
+        * @access public
+        */
+       public function render_screen_options() {
+               // Essentially adds the screen options.
+               add_filter( 'manage_nav-menus_columns', array( $this, 'wp_nav_menu_manage_columns' ) );
+
+               // Display screen options.
+               $screen = WP_Screen::get( 'nav-menus.php' );
+               $screen->render_screen_options( array( 'wrap' => false ) );
+       }
+
+       /**
+        * Returns the advanced options for the nav menus page.
+        *
+        * Link title attribute added as it's a relatively advanced concept for new users.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @return array The advanced menu properties.
+        */
+       public function wp_nav_menu_manage_columns() {
+               return array(
+                       '_title'      => __( 'Show advanced menu properties' ),
+                       'cb'          => '<input type="checkbox" />',
+                       'link-target' => __( 'Link Target' ),
+                       'attr-title'  => __( 'Title Attribute' ),
+                       'css-classes' => __( 'CSS Classes' ),
+                       'xfn'         => __( 'Link Relationship (XFN)' ),
+                       'description' => __( 'Description' ),
+               );
+       }
+
+       /**
+        * An Underscore (JS) template for this panel's content (but not its container).
+        *
+        * Class variables for this panel class are available in the `data` JS object;
+        * export custom variables by overriding WP_Customize_Panel::json().
+        *
+        * @since 4.3.0
+        * @access protected
+        *
+        * @see WP_Customize_Panel::print_template()
+        */
+       protected function content_template() {
+               ?>
+               <li class="panel-meta customize-info accordion-section <# if ( ! data.description ) { #> cannot-expand<# } #>">
+                       <button type="button" class="customize-panel-back" tabindex="-1">
+                               <span class="screen-reader-text"><?php _e( 'Back' ); ?></span>
+                       </button>
+                       <div class="accordion-section-title">
+                               <span class="preview-notice">
+                                       <?php
+                                       /* Translators: %s is the site/panel title in the Customizer. */
+                                       printf( __( 'You are customizing %s' ), '<strong class="panel-title">{{ data.title }}</strong>' );
+                                       ?>
+                               </span>
+                               <button type="button" class="customize-help-toggle dashicons dashicons-editor-help" aria-expanded="false">
+                                       <span class="screen-reader-text"><?php _e( 'Help' ); ?></span>
+                               </button>
+                               <button type="button" class="customize-screen-options-toggle" aria-expanded="false">
+                                       <span class="screen-reader-text"><?php _e( 'Menu Options' ); ?></span>
+                               </button>
+                       </div>
+                       <# if ( data.description ) { #>
+                       <div class="description customize-panel-description">{{{ data.description }}}</div>
+                       <# } #>
+                       <div id="screen-options-wrap">
+                               <?php $this->render_screen_options(); ?>
+                       </div>
+               </li>
+       <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-new-menu-control.php b/wp-includes/customize/class-wp-customize-new-menu-control.php
new file mode 100644 (file)
index 0000000..3234c54
--- /dev/null
@@ -0,0 +1,40 @@
+<?php
+/**
+ * Customize API: WP_Customize_New_Menu_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize control class for new menus.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Control
+ */
+class WP_Customize_New_Menu_Control extends WP_Customize_Control {
+
+       /**
+        * Control type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'new_menu';
+
+       /**
+        * Render the control's content.
+        *
+        * @since 4.3.0
+        * @access public
+        */
+       public function render_content() {
+               ?>
+               <button type="button" class="button button-primary" id="create-new-menu-submit"><?php _e( 'Create Menu' ); ?></button>
+               <span class="spinner"></span>
+               <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-new-menu-section.php b/wp-includes/customize/class-wp-customize-new-menu-section.php
new file mode 100644 (file)
index 0000000..0495264
--- /dev/null
@@ -0,0 +1,46 @@
+<?php
+/**
+ * Customize API: WP_Customize_New_Menu_Section class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Menu Section Class
+ *
+ * Implements the new-menu-ui toggle button instead of a regular section.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Section
+ */
+class WP_Customize_New_Menu_Section extends WP_Customize_Section {
+
+       /**
+        * Control type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'new_menu';
+
+       /**
+        * Render the section, and the controls that have been added to it.
+        *
+        * @since 4.3.0
+        * @access protected
+        */
+       protected function render() {
+               ?>
+               <li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="accordion-section-new-menu">
+                       <button type="button" class="button-secondary add-new-menu-item add-menu-toggle" aria-expanded="false">
+                               <?php echo esc_html( $this->title ); ?>
+                       </button>
+                       <ul class="new-menu-section-content"></ul>
+               </li>
+               <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-sidebar-section.php b/wp-includes/customize/class-wp-customize-sidebar-section.php
new file mode 100644 (file)
index 0000000..a196b70
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+/**
+ * Customize API: WP_Customize_Sidebar_Section class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customizer section representing widget area (sidebar).
+ *
+ * @since 4.1.0
+ *
+ * @see WP_Customize_Section
+ */
+class WP_Customize_Sidebar_Section extends WP_Customize_Section {
+
+       /**
+        * Type of this section.
+        *
+        * @since 4.1.0
+        * @access public
+        * @var string
+        */
+       public $type = 'sidebar';
+
+       /**
+        * Unique identifier.
+        *
+        * @since 4.1.0
+        * @access public
+        * @var string
+        */
+       public $sidebar_id;
+
+       /**
+        * Gather the parameters passed to client JavaScript via JSON.
+        *
+        * @since 4.1.0
+        *
+        * @return array The array to be exported to the client as JSON.
+        */
+       public function json() {
+               $json = parent::json();
+               $json['sidebarId'] = $this->sidebar_id;
+               return $json;
+       }
+
+       /**
+        * Whether the current sidebar is rendered on the page.
+        *
+        * @since 4.1.0
+        * @access public
+        *
+        * @return bool Whether sidebar is rendered.
+        */
+       public function active_callback() {
+               return $this->manager->widgets->is_sidebar_rendered( $this->sidebar_id );
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-site-icon-control.php b/wp-includes/customize/class-wp-customize-site-icon-control.php
new file mode 100644 (file)
index 0000000..fe8ac37
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Customize API: WP_Customize_Site_Icon_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Site Icon control class.
+ *
+ * Used only for custom functionality in JavaScript.
+ *
+ * @since 4.3.0
+ *
+ * @see WP_Customize_Cropped_Image_Control
+ */
+class WP_Customize_Site_Icon_Control extends WP_Customize_Cropped_Image_Control {
+
+       /**
+        * Control type.
+        *
+        * @since 4.3.0
+        * @access public
+        * @var string
+        */
+       public $type = 'site_icon';
+
+       /**
+        * Constructor.
+        *
+        * @since 4.3.0
+        * @access public
+        *
+        * @param WP_Customize_Manager $manager Customizer bootstrap instance.
+        * @param string               $id      Control ID.
+        * @param array                $args    Optional. Arguments to override class property defaults.
+        */
+       public function __construct( $manager, $id, $args = array() ) {
+               parent::__construct( $manager, $id, $args );
+               add_action( 'customize_controls_print_styles', 'wp_site_icon', 99 );
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-theme-control.php b/wp-includes/customize/class-wp-customize-theme-control.php
new file mode 100644 (file)
index 0000000..e696687
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+/**
+ * Customize API: WP_Customize_Theme_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Theme Control class.
+ *
+ * @since 4.2.0
+ *
+ * @see WP_Customize_Control
+ */
+class WP_Customize_Theme_Control extends WP_Customize_Control {
+
+       /**
+        * Customize control type.
+        *
+        * @since 4.2.0
+        * @access public
+        * @var string
+        */
+       public $type = 'theme';
+
+       /**
+        * Theme object.
+        *
+        * @since 4.2.0
+        * @access public
+        * @var WP_Theme
+        */
+       public $theme;
+
+       /**
+        * Refresh the parameters passed to the JavaScript via JSON.
+        *
+        * @since 4.2.0
+        * @access public
+        *
+        * @see WP_Customize_Control::to_json()
+        */
+       public function to_json() {
+               parent::to_json();
+               $this->json['theme'] = $this->theme;
+       }
+
+       /**
+        * Don't render the control content from PHP, as it's rendered via JS on load.
+        *
+        * @since 4.2.0
+        * @access public
+        */
+       public function render_content() {}
+
+       /**
+        * Render a JS template for theme display.
+        *
+        * @since 4.2.0
+        * @access public
+        */
+       public function content_template() {
+               $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] );
+               $active_url  = esc_url( remove_query_arg( 'theme', $current_url ) );
+               $preview_url = esc_url( add_query_arg( 'theme', '__THEME__', $current_url ) ); // Token because esc_url() strips curly braces.
+               $preview_url = str_replace( '__THEME__', '{{ data.theme.id }}', $preview_url );
+               ?>
+               <# if ( data.theme.isActiveTheme ) { #>
+                       <div class="theme active" tabindex="0" data-preview-url="<?php echo esc_attr( $active_url ); ?>" aria-describedby="{{ data.theme.id }}-action {{ data.theme.id }}-name">
+               <# } else { #>
+                       <div class="theme" tabindex="0" data-preview-url="<?php echo esc_attr( $preview_url ); ?>" aria-describedby="{{ data.theme.id }}-action {{ data.theme.id }}-name">
+               <# } #>
+
+                       <# if ( data.theme.screenshot[0] ) { #>
+                               <div class="theme-screenshot">
+                                       <img data-src="{{ data.theme.screenshot[0] }}" alt="" />
+                               </div>
+                       <# } else { #>
+                               <div class="theme-screenshot blank"></div>
+                       <# } #>
+
+                       <# if ( data.theme.isActiveTheme ) { #>
+                               <span class="more-details" id="{{ data.theme.id }}-action"><?php _e( 'Customize' ); ?></span>
+                       <# } else { #>
+                               <span class="more-details" id="{{ data.theme.id }}-action"><?php _e( 'Live Preview' ); ?></span>
+                       <# } #>
+
+                       <div class="theme-author"><?php printf( __( 'By %s' ), '{{ data.theme.author }}' ); ?></div>
+
+                       <# if ( data.theme.isActiveTheme ) { #>
+                               <h3 class="theme-name" id="{{ data.theme.id }}-name">
+                                       <?php
+                                       /* translators: %s: theme name */
+                                       printf( __( '<span>Active:</span> %s' ), '{{{ data.theme.name }}}' );
+                                       ?>
+                               </h3>
+                       <# } else { #>
+                               <h3 class="theme-name" id="{{ data.theme.id }}-name">{{{ data.theme.name }}}</h3>
+                               <div class="theme-actions">
+                                       <button type="button" class="button theme-details"><?php _e( 'Theme Details' ); ?></button>
+                               </div>
+                       <# } #>
+               </div>
+       <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-customize-themes-section.php b/wp-includes/customize/class-wp-customize-themes-section.php
new file mode 100644 (file)
index 0000000..fb983a9
--- /dev/null
@@ -0,0 +1,86 @@
+<?php
+/**
+ * Customize API: WP_Customize_Themes_Section class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Themes Section class.
+ *
+ * A UI container for theme controls, which behaves like a backwards Panel.
+ *
+ * @since 4.2.0
+ *
+ * @see WP_Customize_Section
+ */
+class WP_Customize_Themes_Section extends WP_Customize_Section {
+
+       /**
+        * Customize section type.
+        *
+        * @since 4.2.0
+        * @access public
+        * @var string
+        */
+       public $type = 'themes';
+
+       /**
+        * Render the themes section, which behaves like a panel.
+        *
+        * @since 4.2.0
+        * @access protected
+        */
+       protected function render() {
+               $classes = 'accordion-section control-section control-section-' . $this->type;
+               ?>
+               <li id="accordion-section-<?php echo esc_attr( $this->id ); ?>" class="<?php echo esc_attr( $classes ); ?>">
+                       <h3 class="accordion-section-title">
+                               <?php
+                               if ( $this->manager->is_theme_active() ) {
+                                       echo '<span class="customize-action">' . __( 'Active theme' ) . '</span> ' . $this->title;
+                               } else {
+                                       echo '<span class="customize-action">' . __( 'Previewing theme' ) . '</span> ' . $this->title;
+                               }
+                               ?>
+
+                               <?php if ( count( $this->controls ) > 1 ) : ?>
+                                       <button type="button" class="button change-theme" tabindex="0"><?php _ex( 'Change', 'theme' ); ?></button>
+                               <?php endif; ?>
+                       </h3>
+                       <div class="customize-themes-panel control-panel-content themes-php">
+                               <h3 class="accordion-section-title customize-section-title">
+                                       <span class="customize-action"><?php _e( 'Customizing' ); ?></span>
+                                       <?php _e( 'Themes' ); ?>
+                                       <span class="title-count theme-count"><?php echo count( $this->controls ) + 1 /* Active theme */; ?></span>
+                               </h3>
+                               <h3 class="accordion-section-title customize-section-title">
+                                       <?php
+                                       if ( $this->manager->is_theme_active() ) {
+                                               echo '<span class="customize-action">' . __( 'Active theme' ) . '</span> ' . $this->title;
+                                       } else {
+                                               echo '<span class="customize-action">' . __( 'Previewing theme' ) . '</span> ' . $this->title;
+                                       }
+                                       ?>
+                                       <button type="button" class="button customize-theme"><?php _e( 'Customize' ); ?></button>
+                               </h3>
+
+                               <div class="theme-overlay" tabindex="0" role="dialog" aria-label="<?php esc_attr_e( 'Theme Details' ); ?>"></div>
+
+                               <div id="customize-container"></div>
+                               <?php if ( count( $this->controls ) > 4 ) : ?>
+                                       <p><label for="themes-filter">
+                                               <span class="screen-reader-text"><?php _e( 'Search installed themes&hellip;' ); ?></span>
+                                               <input type="text" id="themes-filter" placeholder="<?php esc_attr_e( 'Search installed themes&hellip;' ); ?>" />
+                                       </label></p>
+                               <?php endif; ?>
+                               <div class="theme-browser rendered">
+                                       <ul class="themes accordion-section-content">
+                                       </ul>
+                               </div>
+                       </div>
+               </li>
+<?php }
+}
diff --git a/wp-includes/customize/class-wp-customize-upload-control.php b/wp-includes/customize/class-wp-customize-upload-control.php
new file mode 100644 (file)
index 0000000..0e3b024
--- /dev/null
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Customize API: WP_Customize_Upload_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Customize Upload Control Class.
+ *
+ * @since 3.4.0
+ *
+ * @see WP_Customize_Media_Control
+ */
+class WP_Customize_Upload_Control extends WP_Customize_Media_Control {
+       public $type          = 'upload';
+       public $mime_type     = '';
+       public $button_labels = array();
+       public $removed = ''; // unused
+       public $context; // unused
+       public $extensions = array(); // unused
+
+       /**
+        * Refresh the parameters passed to the JavaScript via JSON.
+        *
+        * @since 3.4.0
+        *
+        * @uses WP_Customize_Media_Control::to_json()
+        */
+       public function to_json() {
+               parent::to_json();
+
+               $value = $this->value();
+               if ( $value ) {
+                       // Get the attachment model for the existing file.
+                       $attachment_id = attachment_url_to_postid( $value );
+                       if ( $attachment_id ) {
+                               $this->json['attachment'] = wp_prepare_attachment_for_js( $attachment_id );
+                       }
+               }
+       }
+}
diff --git a/wp-includes/customize/class-wp-widget-area-customize-control.php b/wp-includes/customize/class-wp-widget-area-customize-control.php
new file mode 100644 (file)
index 0000000..298aece
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Customize API: WP_Widget_Area_Customize_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 3.4.0
+ */
+
+/**
+ * Widget Area Customize Control class.
+ *
+ * @since 3.9.0
+ *
+ * @see WP_Customize_Control
+ */
+class WP_Widget_Area_Customize_Control extends WP_Customize_Control {
+
+       /**
+        * Customize control type.
+        *
+        * @since 3.9.0
+        * @access public
+        * @var string
+        */
+       public $type = 'sidebar_widgets';
+
+       /**
+        * Sidebar ID.
+        *
+        * @since 3.9.0
+        * @access public
+        * @var int|string
+        */
+       public $sidebar_id;
+
+       /**
+        * Refreshes the parameters passed to the JavaScript via JSON.
+        *
+        * @since 3.9.0
+        * @access public
+        */
+       public function to_json() {
+               parent::to_json();
+               $exported_properties = array( 'sidebar_id' );
+               foreach ( $exported_properties as $key ) {
+                       $this->json[ $key ] = $this->$key;
+               }
+       }
+
+       /**
+        * Renders the control's content.
+        *
+        * @since 3.9.0
+        * @access public
+        */
+       public function render_content() {
+               $id = 'reorder-widgets-desc-' . str_replace( array( '[', ']' ), array( '-', '' ), $this->id );
+               ?>
+               <button type="button" class="button-secondary add-new-widget" aria-expanded="false" aria-controls="available-widgets">
+                       <?php _e( 'Add a Widget' ); ?>
+               </button>
+               <button type="button" class="button-link reorder-toggle" aria-label="<?php esc_attr_e( 'Reorder widgets' ); ?>" aria-describedby="<?php echo esc_attr( $id ); ?>">
+                       <span class="reorder"><?php _ex( 'Reorder', 'Reorder widgets in Customizer' ); ?></span>
+                       <span class="reorder-done"><?php _ex( 'Done', 'Cancel reordering widgets in Customizer' ); ?></span>
+               </button>
+               <p class="screen-reader-text" id="<?php echo esc_attr( $id ); ?>"><?php _e( 'When in reorder mode, additional controls to reorder widgets will be available in the widgets list above.' ); ?></p>
+               <?php
+       }
+}
diff --git a/wp-includes/customize/class-wp-widget-form-customize-control.php b/wp-includes/customize/class-wp-widget-form-customize-control.php
new file mode 100644 (file)
index 0000000..f992eea
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Customize API: WP_Widget_Form_Customize_Control class
+ *
+ * @package WordPress
+ * @subpackage Customize
+ * @since 4.4.0
+ */
+
+/**
+ * Widget Form Customize Control class.
+ *
+ * @since 3.9.0
+ *
+ * @see WP_Customize_Control
+ */
+class WP_Widget_Form_Customize_Control extends WP_Customize_Control {
+       public $type = 'widget_form';
+       public $widget_id;
+       public $widget_id_base;
+       public $sidebar_id;
+       public $is_new = false;
+       public $width;
+       public $height;
+       public $is_wide = false;
+
+       /**
+        * Gather control params for exporting to JavaScript.
+        *
+        * @global array $wp_registered_widgets
+        */
+       public function to_json() {
+               global $wp_registered_widgets;
+
+               parent::to_json();
+               $exported_properties = array( 'widget_id', 'widget_id_base', 'sidebar_id', 'width', 'height', 'is_wide' );
+               foreach ( $exported_properties as $key ) {
+                       $this->json[ $key ] = $this->$key;
+               }
+
+               // Get the widget_control and widget_content.
+               require_once ABSPATH . '/wp-admin/includes/widgets.php';
+
+               $widget = $wp_registered_widgets[ $this->widget_id ];
+               if ( ! isset( $widget['params'][0] ) ) {
+                       $widget['params'][0] = array();
+               }
+
+               $args = array(
+                       'widget_id' => $widget['id'],
+                       'widget_name' => $widget['name'],
+               );
+
+               $args = wp_list_widget_controls_dynamic_sidebar( array( 0 => $args, 1 => $widget['params'][0] ) );
+               $widget_control_parts = $this->manager->widgets->get_widget_control_parts( $args );
+
+               $this->json['widget_control'] = $widget_control_parts['control'];
+               $this->json['widget_content'] = $widget_control_parts['content'];
+       }
+
+       /**
+        * Override render_content to be no-op since content is exported via to_json for deferred embedding.
+        */
+       public function render_content() {}
+
+       /**
+        * Whether the current widget is rendered on the page.
+        *
+        * @since 4.0.0
+        * @access public
+        *
+        * @return bool Whether the widget is rendered.
+        */
+       public function active_callback() {
+               return $this->manager->widgets->is_widget_rendered( $this->widget_id );
+       }
+}
index 2e903a2518e4bdfeba83b016a628af8ead57a778..e10ef4f861e3e8082be1864a0700b91cbe7149a5 100644 (file)
@@ -355,10 +355,11 @@ class WP_Date_Query {
 
                // Weeks per year.
                if ( isset( $_year ) ) {
-                       // If we have a specific year, use it to calculate number of weeks.
-                       $date = new DateTime();
-                       $date->setISODate( $_year, 53 );
-                       $week_count = $date->format( "W" ) === "53" ? 53 : 52;
+                       /*
+                        * If we have a specific year, use it to calculate number of weeks.
+                        * Note: the number of weeks in a year is the date in which Dec 28 appears.
+                        */
+                       $week_count = date( 'W', mktime( 0, 0, 0, 12, 28, $_year ) );
 
                } else {
                        // Otherwise set the week-count to a maximum of 53.
@@ -991,7 +992,7 @@ class WP_Date_Query {
                $format = $time = '';
 
                // Hour
-               if ( $hour ) {
+               if ( null !== $hour ) {
                        $format .= '%H.';
                        $time   .= sprintf( '%02d', $hour ) . '.';
                } else {
index 7325845966ccb4c127f7c01c14d97755760556cc..c9092bd2cc2ba4caba4b7fc61692b76697646572 100644 (file)
@@ -11,6 +11,8 @@
  * @see wp_debug_mode()
  *
  * @since 3.0.0
+ *
+ * @global int $blog_id
  */
 function wp_initial_constants() {
        global $blog_id;
@@ -28,13 +30,6 @@ function wp_initial_constants() {
                define( 'WP_MAX_MEMORY_LIMIT', '256M' );
        }
 
-       /**
-        * The $blog_id global, which you can change in the config allows you to create a simple
-        * multiple blog installation using just one WordPress and changing $blog_id around.
-        *
-        * @global int $blog_id
-        * @since 2.0.0
-        */
        if ( ! isset($blog_id) )
                $blog_id = 1;
 
@@ -95,13 +90,37 @@ function wp_initial_constants() {
        // Constants for features added to WP that should short-circuit their plugin implementations
        define( 'WP_FEATURE_BETTER_PASSWORDS', true );
 
-       // Constants for expressing human-readable intervals
-       // in their respective number of seconds.
+       /**#@+
+        * Constants for expressing human-readable intervals
+        * in their respective number of seconds.
+        *
+        * Please note that these values are approximate and are provided for convenience.
+        * For example, MONTH_IN_SECONDS wrongly assumes every month has 30 days and
+        * YEAR_IN_SECONDS does not take leap years into account.
+        *
+        * If you need more accuracy please consider using the DateTime class (http://php.net/manual/class.datetime.php).
+        *
+        * @since 3.5.0
+        * @since 4.4.0 Introduced `MONTH_IN_SECONDS`.
+        */
        define( 'MINUTE_IN_SECONDS', 60 );
        define( 'HOUR_IN_SECONDS',   60 * MINUTE_IN_SECONDS );
        define( 'DAY_IN_SECONDS',    24 * HOUR_IN_SECONDS   );
        define( 'WEEK_IN_SECONDS',    7 * DAY_IN_SECONDS    );
+       define( 'MONTH_IN_SECONDS',  30 * DAY_IN_SECONDS    );
        define( 'YEAR_IN_SECONDS',  365 * DAY_IN_SECONDS    );
+       /**#@-*/
+
+       /**#@+
+        * Constants for expressing human-readable data sizes in their respective number of bytes.
+        *
+        * @since 4.4.0
+        */
+       define( 'KB_IN_BYTES', 1024 );
+       define( 'MB_IN_BYTES', 1024 * KB_IN_BYTES );
+       define( 'GB_IN_BYTES', 1024 * MB_IN_BYTES );
+       define( 'TB_IN_BYTES', 1024 * GB_IN_BYTES );
+       /**#@-*/
 }
 
 /**
@@ -329,10 +348,12 @@ function wp_templating_constants() {
        /**
         * Slug of the default theme for this install.
         * Used as the default theme when installing new sites.
-        * Will be used as the fallback if the current theme doesn't exist.
+        * It will be used as the fallback if the current theme doesn't exist.
+        *
         * @since 3.0.0
+        * @see WP_Theme::get_core_default_theme()
         */
        if ( !defined('WP_DEFAULT_THEME') )
-               define( 'WP_DEFAULT_THEME', 'twentyfifteen' );
+               define( 'WP_DEFAULT_THEME', 'twentysixteen' );
 
 }
index b6f0ce303e644601706d506e037f759bdb300011..1faa084cf76df73c4ce19083475d83a877e7035d 100644 (file)
@@ -129,12 +129,12 @@ add_filter( 'the_title', 'wptexturize'   );
 add_filter( 'the_title', 'convert_chars' );
 add_filter( 'the_title', 'trim'          );
 
-add_filter( 'the_content', 'wptexturize'        );
-add_filter( 'the_content', 'convert_smilies'    );
-add_filter( 'the_content', 'convert_chars'      );
-add_filter( 'the_content', 'wpautop'            );
-add_filter( 'the_content', 'shortcode_unautop'  );
-add_filter( 'the_content', 'prepend_attachment' );
+add_filter( 'the_content', 'wptexturize'                       );
+add_filter( 'the_content', 'convert_smilies'                   );
+add_filter( 'the_content', 'wpautop'                           );
+add_filter( 'the_content', 'shortcode_unautop'                 );
+add_filter( 'the_content', 'prepend_attachment'                );
+add_filter( 'the_content', 'wp_make_content_images_responsive' );
 
 add_filter( 'the_excerpt',     'wptexturize'      );
 add_filter( 'the_excerpt',     'convert_smilies'  );
@@ -156,12 +156,17 @@ add_filter( 'list_cats',         'wptexturize' );
 
 add_filter( 'wp_sprintf', 'wp_sprintf_l', 10, 2 );
 
+add_filter( 'widget_text', 'balanceTags' );
+
+add_filter( 'date_i18n', 'wp_maybe_decline_date' );
+
 // RSS filters
 add_filter( 'the_title_rss',      'strip_tags'                    );
 add_filter( 'the_title_rss',      'ent2ncr',                    8 );
 add_filter( 'the_title_rss',      'esc_html'                      );
 add_filter( 'the_content_rss',    'ent2ncr',                    8 );
 add_filter( 'the_content_feed',   'wp_staticize_emoji'            );
+add_filter( 'the_content_feed',   '_oembed_filter_feed_content'   );
 add_filter( 'the_excerpt_rss',    'convert_chars'                 );
 add_filter( 'the_excerpt_rss',    'ent2ncr',                    8 );
 add_filter( 'comment_author_rss', 'ent2ncr',                    8 );
@@ -203,6 +208,17 @@ add_filter( 'title_save_pre',           'trim'                                );
 
 add_filter( 'http_request_host_is_external', 'allowed_http_request_hosts', 10, 2 );
 
+// REST API filters.
+add_action( 'xmlrpc_rsd_apis',            'rest_output_rsd' );
+add_action( 'wp_head',                    'rest_output_link_wp_head', 10, 0 );
+add_action( 'template_redirect',          'rest_output_link_header', 11, 0 );
+add_action( 'auth_cookie_malformed',      'rest_cookie_collect_status' );
+add_action( 'auth_cookie_expired',        'rest_cookie_collect_status' );
+add_action( 'auth_cookie_bad_username',   'rest_cookie_collect_status' );
+add_action( 'auth_cookie_bad_hash',       'rest_cookie_collect_status' );
+add_action( 'auth_cookie_valid',          'rest_cookie_collect_status' );
+add_filter( 'rest_authentication_errors', 'rest_cookie_check_errors', 100 );
+
 // Actions
 add_action( 'wp_head',             '_wp_render_title_tag',            1     );
 add_action( 'wp_head',             'wp_enqueue_scripts',              1     );
@@ -233,6 +249,7 @@ if ( isset( $_GET['replytocom'] ) )
 
 // Login actions
 add_action( 'login_head',          'wp_print_head_scripts',         9     );
+add_action( 'login_head',          'wp_site_icon',                  99    );
 add_action( 'login_footer',        'wp_print_footer_scripts',       20    );
 add_action( 'login_init',          'send_frame_options_header',     10, 0 );
 
@@ -291,8 +308,9 @@ add_action( 'begin_fetch_post_thumbnail_html', '_wp_post_thumbnail_class_filter_
 add_action( 'end_fetch_post_thumbnail_html',   '_wp_post_thumbnail_class_filter_remove' );
 
 // Redirect Old Slugs
-add_action( 'template_redirect', 'wp_old_slug_redirect'              );
-add_action( 'post_updated',      'wp_check_for_changed_slugs', 12, 3 );
+add_action( 'template_redirect',  'wp_old_slug_redirect'              );
+add_action( 'post_updated',       'wp_check_for_changed_slugs', 12, 3 );
+add_action( 'attachment_updated', 'wp_check_for_changed_slugs', 12, 3 );
 
 // Nonce check for Post Previews
 add_action( 'init', '_show_post_preview' );
@@ -334,6 +352,18 @@ add_action( 'split_shared_term', '_wp_check_split_terms_in_menus', 10, 4 );
 add_action( 'split_shared_term', '_wp_check_split_nav_menu_terms', 10, 4 );
 add_action( 'wp_split_shared_term_batch', '_wp_batch_split_terms' );
 
+// Email notifications.
+add_action( 'comment_post', 'wp_new_comment_notify_moderator' );
+add_action( 'comment_post', 'wp_new_comment_notify_postauthor' );
+add_action( 'after_password_reset', 'wp_password_change_notification' );
+add_action( 'register_new_user',      'wp_send_new_user_notifications' );
+add_action( 'edit_user_created_user', 'wp_send_new_user_notifications', 10, 2 );
+
+// REST API actions.
+add_action( 'init',          'rest_api_init' );
+add_action( 'rest_api_init', 'rest_api_default_filters', 10, 1 );
+add_action( 'parse_request', 'rest_api_loaded' );
+
 /**
  * Filters formerly mixed into wp-includes
  */
@@ -401,6 +431,8 @@ add_action( 'init', 'wp_widgets_init', 1 );
 // Don't remove. Wrong way to disable.
 add_action( 'template_redirect', '_wp_admin_bar_init', 0 );
 add_action( 'admin_init', '_wp_admin_bar_init' );
+add_action( 'before_signup_header', '_wp_admin_bar_init' );
+add_action( 'activate_header', '_wp_admin_bar_init' );
 add_action( 'wp_footer', 'wp_admin_bar_render', 1000 );
 add_action( 'in_admin_header', 'wp_admin_bar_render', 0 );
 
@@ -409,4 +441,37 @@ add_action( 'media_buttons', 'media_buttons' );
 add_filter( 'image_send_to_editor', 'image_add_caption', 20, 8 );
 add_filter( 'media_send_to_editor', 'image_media_send_to_editor', 10, 3 );
 
+// Embeds
+add_action( 'rest_api_init',          'wp_oembed_register_route'              );
+add_filter( 'rest_pre_serve_request', '_oembed_rest_pre_serve_request', 10, 4 );
+
+add_action( 'wp_head',                'wp_oembed_add_discovery_links'         );
+add_action( 'wp_head',                'wp_oembed_add_host_js'                 );
+
+add_action( 'embed_head',             'enqueue_embed_scripts',           1    );
+add_action( 'embed_head',             'print_emoji_detection_script'          );
+add_action( 'embed_head',             'print_embed_styles'                    );
+add_action( 'embed_head',             'wp_print_head_scripts',          20    );
+add_action( 'embed_head',             'wp_print_styles',                20    );
+add_action( 'embed_head',             'wp_no_robots'                          );
+add_action( 'embed_head',             'rel_canonical'                         );
+add_action( 'embed_head',             'locale_stylesheet'                     );
+
+add_action( 'embed_content_meta',     'print_embed_comments_button'           );
+add_action( 'embed_content_meta',     'print_embed_sharing_button'            );
+
+add_action( 'embed_footer',           'print_embed_sharing_dialog'            );
+add_action( 'embed_footer',           'print_embed_scripts'                   );
+add_action( 'embed_footer',           'wp_print_footer_scripts',        20    );
+
+add_filter( 'excerpt_more',           'wp_embed_excerpt_more',          20    );
+add_filter( 'the_excerpt_embed',      'wptexturize'                           );
+add_filter( 'the_excerpt_embed',      'convert_chars'                         );
+add_filter( 'the_excerpt_embed',      'wpautop'                               );
+add_filter( 'the_excerpt_embed',      'shortcode_unautop'                     );
+add_filter( 'the_excerpt_embed',      'wp_embed_excerpt_attachment'           );
+
+add_filter( 'oembed_dataparse',       'wp_filter_oembed_result',        10, 3 );
+add_filter( 'oembed_response_data',   'get_oembed_response_data_rich',  10, 4 );
+
 unset( $filter, $action );
index 48a39179359b4de403b6a1331bb0f95bfd8336f7..0cf5fc336bd2d0d115096f47af0e6806d257060f 100644 (file)
 <?php
 /**
- * Default Widgets
+ * Widget API: Default core widgets
  *
  * @package WordPress
  * @subpackage Widgets
- */
-
-/**
- * Pages widget class
- *
- * @since 2.8.0
- */
-class WP_Widget_Pages extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array('classname' => 'widget_pages', 'description' => __( 'A list of your site&#8217;s Pages.') );
-               parent::__construct('pages', __('Pages'), $widget_ops);
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-
-               /**
-                * Filter the widget title.
-                *
-                * @since 2.6.0
-                *
-                * @param string $title    The widget title. Default 'Pages'.
-                * @param array  $instance An array of the widget's settings.
-                * @param mixed  $id_base  The widget ID.
-                */
-               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Pages' ) : $instance['title'], $instance, $this->id_base );
-
-               $sortby = empty( $instance['sortby'] ) ? 'menu_order' : $instance['sortby'];
-               $exclude = empty( $instance['exclude'] ) ? '' : $instance['exclude'];
-
-               if ( $sortby == 'menu_order' )
-                       $sortby = 'menu_order, post_title';
-
-               /**
-                * Filter the arguments for the Pages widget.
-                *
-                * @since 2.8.0
-                *
-                * @see wp_list_pages()
-                *
-                * @param array $args An array of arguments to retrieve the pages list.
-                */
-               $out = wp_list_pages( apply_filters( 'widget_pages_args', array(
-                       'title_li'    => '',
-                       'echo'        => 0,
-                       'sort_column' => $sortby,
-                       'exclude'     => $exclude
-               ) ) );
-
-               if ( ! empty( $out ) ) {
-                       echo $args['before_widget'];
-                       if ( $title ) {
-                               echo $args['before_title'] . $title . $args['after_title'];
-                       }
-               ?>
-               <ul>
-                       <?php echo $out; ?>
-               </ul>
-               <?php
-                       echo $args['after_widget'];
-               }
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = $old_instance;
-               $instance['title'] = strip_tags($new_instance['title']);
-               if ( in_array( $new_instance['sortby'], array( 'post_title', 'menu_order', 'ID' ) ) ) {
-                       $instance['sortby'] = $new_instance['sortby'];
-               } else {
-                       $instance['sortby'] = 'menu_order';
-               }
-
-               $instance['exclude'] = strip_tags( $new_instance['exclude'] );
-
-               return $instance;
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               //Defaults
-               $instance = wp_parse_args( (array) $instance, array( 'sortby' => 'post_title', 'title' => '', 'exclude' => '') );
-               $title = esc_attr( $instance['title'] );
-               $exclude = esc_attr( $instance['exclude'] );
-       ?>
-               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
-               <p>
-                       <label for="<?php echo $this->get_field_id('sortby'); ?>"><?php _e( 'Sort by:' ); ?></label>
-                       <select name="<?php echo $this->get_field_name('sortby'); ?>" id="<?php echo $this->get_field_id('sortby'); ?>" class="widefat">
-                               <option value="post_title"<?php selected( $instance['sortby'], 'post_title' ); ?>><?php _e('Page title'); ?></option>
-                               <option value="menu_order"<?php selected( $instance['sortby'], 'menu_order' ); ?>><?php _e('Page order'); ?></option>
-                               <option value="ID"<?php selected( $instance['sortby'], 'ID' ); ?>><?php _e( 'Page ID' ); ?></option>
-                       </select>
-               </p>
-               <p>
-                       <label for="<?php echo $this->get_field_id('exclude'); ?>"><?php _e( 'Exclude:' ); ?></label> <input type="text" value="<?php echo $exclude; ?>" name="<?php echo $this->get_field_name('exclude'); ?>" id="<?php echo $this->get_field_id('exclude'); ?>" class="widefat" />
-                       <br />
-                       <small><?php _e( 'Page IDs, separated by commas.' ); ?></small>
-               </p>
-<?php
-       }
-
-}
-
-/**
- * Links widget class
- *
- * @since 2.8.0
- */
-class WP_Widget_Links extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array('description' => __( "Your blogroll" ) );
-               parent::__construct('links', __('Links'), $widget_ops);
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               $show_description = isset($instance['description']) ? $instance['description'] : false;
-               $show_name = isset($instance['name']) ? $instance['name'] : false;
-               $show_rating = isset($instance['rating']) ? $instance['rating'] : false;
-               $show_images = isset($instance['images']) ? $instance['images'] : true;
-               $category = isset($instance['category']) ? $instance['category'] : false;
-               $orderby = isset( $instance['orderby'] ) ? $instance['orderby'] : 'name';
-               $order = $orderby == 'rating' ? 'DESC' : 'ASC';
-               $limit = isset( $instance['limit'] ) ? $instance['limit'] : -1;
-
-               $before_widget = preg_replace( '/id="[^"]*"/', 'id="%id"', $args['before_widget'] );
-
-               /**
-                * Filter the arguments for the Links widget.
-                *
-                * @since 2.6.0
-                *
-                * @see wp_list_bookmarks()
-                *
-                * @param array $args An array of arguments to retrieve the links list.
-                */
-               wp_list_bookmarks( apply_filters( 'widget_links_args', array(
-                       'title_before' => $args['before_title'], 'title_after' => $args['after_title'],
-                       'category_before' => $before_widget, 'category_after' => $args['after_widget'],
-                       'show_images' => $show_images, 'show_description' => $show_description,
-                       'show_name' => $show_name, 'show_rating' => $show_rating,
-                       'category' => $category, 'class' => 'linkcat widget',
-                       'orderby' => $orderby, 'order' => $order,
-                       'limit' => $limit,
-               ) ) );
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $new_instance = (array) $new_instance;
-               $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0 );
-               foreach ( $instance as $field => $val ) {
-                       if ( isset($new_instance[$field]) )
-                               $instance[$field] = 1;
-               }
-
-               $instance['orderby'] = 'name';
-               if ( in_array( $new_instance['orderby'], array( 'name', 'rating', 'id', 'rand' ) ) )
-                       $instance['orderby'] = $new_instance['orderby'];
-
-               $instance['category'] = intval( $new_instance['category'] );
-               $instance['limit'] = ! empty( $new_instance['limit'] ) ? intval( $new_instance['limit'] ) : -1;
-
-               return $instance;
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-
-               //Defaults
-               $instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false, 'orderby' => 'name', 'limit' => -1 ) );
-               $link_cats = get_terms( 'link_category' );
-               if ( ! $limit = intval( $instance['limit'] ) )
-                       $limit = -1;
-?>
-               <p>
-               <label for="<?php echo $this->get_field_id('category'); ?>"><?php _e( 'Select Link Category:' ); ?></label>
-               <select class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>">
-               <option value=""><?php _ex('All Links', 'links widget'); ?></option>
-               <?php
-               foreach ( $link_cats as $link_cat ) {
-                       echo '<option value="' . intval( $link_cat->term_id ) . '"'
-                               . selected( $instance['category'], $link_cat->term_id, false )
-                               . '>' . $link_cat->name . "</option>\n";
-               }
-               ?>
-               </select>
-               <label for="<?php echo $this->get_field_id('orderby'); ?>"><?php _e( 'Sort by:' ); ?></label>
-               <select name="<?php echo $this->get_field_name('orderby'); ?>" id="<?php echo $this->get_field_id('orderby'); ?>" class="widefat">
-                       <option value="name"<?php selected( $instance['orderby'], 'name' ); ?>><?php _e( 'Link title' ); ?></option>
-                       <option value="rating"<?php selected( $instance['orderby'], 'rating' ); ?>><?php _e( 'Link rating' ); ?></option>
-                       <option value="id"<?php selected( $instance['orderby'], 'id' ); ?>><?php _e( 'Link ID' ); ?></option>
-                       <option value="rand"<?php selected( $instance['orderby'], 'rand' ); ?>><?php _ex( 'Random', 'Links widget' ); ?></option>
-               </select>
-               </p>
-               <p>
-               <input class="checkbox" type="checkbox" <?php checked($instance['images'], true) ?> id="<?php echo $this->get_field_id('images'); ?>" name="<?php echo $this->get_field_name('images'); ?>" />
-               <label for="<?php echo $this->get_field_id('images'); ?>"><?php _e('Show Link Image'); ?></label><br />
-               <input class="checkbox" type="checkbox" <?php checked($instance['name'], true) ?> id="<?php echo $this->get_field_id('name'); ?>" name="<?php echo $this->get_field_name('name'); ?>" />
-               <label for="<?php echo $this->get_field_id('name'); ?>"><?php _e('Show Link Name'); ?></label><br />
-               <input class="checkbox" type="checkbox" <?php checked($instance['description'], true) ?> id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>" />
-               <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e('Show Link Description'); ?></label><br />
-               <input class="checkbox" type="checkbox" <?php checked($instance['rating'], true) ?> id="<?php echo $this->get_field_id('rating'); ?>" name="<?php echo $this->get_field_name('rating'); ?>" />
-               <label for="<?php echo $this->get_field_id('rating'); ?>"><?php _e('Show Link Rating'); ?></label>
-               </p>
-               <p>
-               <label for="<?php echo $this->get_field_id('limit'); ?>"><?php _e( 'Number of links to show:' ); ?></label>
-               <input id="<?php echo $this->get_field_id('limit'); ?>" name="<?php echo $this->get_field_name('limit'); ?>" type="text" value="<?php echo $limit == -1 ? '' : intval( $limit ); ?>" size="3" />
-               </p>
-<?php
-       }
-}
-
-/**
- * Search widget class
- *
- * @since 2.8.0
- */
-class WP_Widget_Search extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array('classname' => 'widget_search', 'description' => __( "A search form for your site.") );
-               parent::__construct( 'search', _x( 'Search', 'Search widget' ), $widget_ops );
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
-
-               echo $args['before_widget'];
-               if ( $title ) {
-                       echo $args['before_title'] . $title . $args['after_title'];
-               }
-
-               // Use current theme search form if it exists
-               get_search_form();
-
-               echo $args['after_widget'];
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               $instance = wp_parse_args( (array) $instance, array( 'title' => '') );
-               $title = $instance['title'];
-?>
-               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></label></p>
-<?php
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = $old_instance;
-               $new_instance = wp_parse_args((array) $new_instance, array( 'title' => ''));
-               $instance['title'] = strip_tags($new_instance['title']);
-               return $instance;
-       }
-
-}
-
-/**
- * Archives widget class
- *
- * @since 2.8.0
- */
-class WP_Widget_Archives extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array('classname' => 'widget_archive', 'description' => __( 'A monthly archive of your site&#8217;s Posts.') );
-               parent::__construct('archives', __('Archives'), $widget_ops);
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               $c = ! empty( $instance['count'] ) ? '1' : '0';
-               $d = ! empty( $instance['dropdown'] ) ? '1' : '0';
-
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Archives' ) : $instance['title'], $instance, $this->id_base );
-
-               echo $args['before_widget'];
-               if ( $title ) {
-                       echo $args['before_title'] . $title . $args['after_title'];
-               }
-
-               if ( $d ) {
-                       $dropdown_id = "{$this->id_base}-dropdown-{$this->number}";
-?>
-               <label class="screen-reader-text" for="<?php echo esc_attr( $dropdown_id ); ?>"><?php echo $title; ?></label>
-               <select id="<?php echo esc_attr( $dropdown_id ); ?>" name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'>
-                       <?php
-                       /**
-                        * Filter the arguments for the Archives widget drop-down.
-                        *
-                        * @since 2.8.0
-                        *
-                        * @see wp_get_archives()
-                        *
-                        * @param array $args An array of Archives widget drop-down arguments.
-                        */
-                       $dropdown_args = apply_filters( 'widget_archives_dropdown_args', array(
-                               'type'            => 'monthly',
-                               'format'          => 'option',
-                               'show_post_count' => $c
-                       ) );
-
-                       switch ( $dropdown_args['type'] ) {
-                               case 'yearly':
-                                       $label = __( 'Select Year' );
-                                       break;
-                               case 'monthly':
-                                       $label = __( 'Select Month' );
-                                       break;
-                               case 'daily':
-                                       $label = __( 'Select Day' );
-                                       break;
-                               case 'weekly':
-                                       $label = __( 'Select Week' );
-                                       break;
-                               default:
-                                       $label = __( 'Select Post' );
-                                       break;
-                       }
-                       ?>
-
-                       <option value=""><?php echo esc_attr( $label ); ?></option>
-                       <?php wp_get_archives( $dropdown_args ); ?>
-
-               </select>
-<?php
-               } else {
-?>
-               <ul>
-<?php
-               /**
-                * Filter the arguments for the Archives widget.
-                *
-                * @since 2.8.0
-                *
-                * @see wp_get_archives()
-                *
-                * @param array $args An array of Archives option arguments.
-                */
-               wp_get_archives( apply_filters( 'widget_archives_args', array(
-                       'type'            => 'monthly',
-                       'show_post_count' => $c
-               ) ) );
-?>
-               </ul>
-<?php
-               }
-
-               echo $args['after_widget'];
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = $old_instance;
-               $new_instance = wp_parse_args( (array) $new_instance, array( 'title' => '', 'count' => 0, 'dropdown' => '') );
-               $instance['title'] = strip_tags($new_instance['title']);
-               $instance['count'] = $new_instance['count'] ? 1 : 0;
-               $instance['dropdown'] = $new_instance['dropdown'] ? 1 : 0;
-
-               return $instance;
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'count' => 0, 'dropdown' => '') );
-               $title = strip_tags($instance['title']);
-               $count = $instance['count'] ? 'checked="checked"' : '';
-               $dropdown = $instance['dropdown'] ? 'checked="checked"' : '';
-?>
-               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
-               <p>
-                       <input class="checkbox" type="checkbox" <?php echo $dropdown; ?> id="<?php echo $this->get_field_id('dropdown'); ?>" name="<?php echo $this->get_field_name('dropdown'); ?>" /> <label for="<?php echo $this->get_field_id('dropdown'); ?>"><?php _e('Display as dropdown'); ?></label>
-                       <br/>
-                       <input class="checkbox" type="checkbox" <?php echo $count; ?> id="<?php echo $this->get_field_id('count'); ?>" name="<?php echo $this->get_field_name('count'); ?>" /> <label for="<?php echo $this->get_field_id('count'); ?>"><?php _e('Show post counts'); ?></label>
-               </p>
-<?php
-       }
-}
-
-/**
- * Meta widget class
- *
- * Displays log in/out, RSS feed links, etc.
- *
- * @since 2.8.0
- */
-class WP_Widget_Meta extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array('classname' => 'widget_meta', 'description' => __( "Login, RSS, &amp; WordPress.org links.") );
-               parent::__construct('meta', __('Meta'), $widget_ops);
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $title = apply_filters( 'widget_title', empty($instance['title']) ? __( 'Meta' ) : $instance['title'], $instance, $this->id_base );
-
-               echo $args['before_widget'];
-               if ( $title ) {
-                       echo $args['before_title'] . $title . $args['after_title'];
-               }
-?>
-                       <ul>
-                       <?php wp_register(); ?>
-                       <li><?php wp_loginout(); ?></li>
-                       <li><a href="<?php bloginfo('rss2_url'); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
-                       <li><a href="<?php bloginfo('comments_rss2_url'); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
-<?php
-                       /**
-                        * Filter the "Powered by WordPress" text in the Meta widget.
-                        *
-                        * @since 3.6.0
-                        *
-                        * @param string $title_text Default title text for the WordPress.org link.
-                        */
-                       echo apply_filters( 'widget_meta_poweredby', sprintf( '<li><a href="%s" title="%s">%s</a></li>',
-                               esc_url( __( 'https://wordpress.org/' ) ),
-                               esc_attr__( 'Powered by WordPress, state-of-the-art semantic personal publishing platform.' ),
-                               _x( 'WordPress.org', 'meta widget link text' )
-                       ) );
-
-                       wp_meta();
-?>
-                       </ul>
-<?php
-               echo $args['after_widget'];
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = $old_instance;
-               $instance['title'] = strip_tags($new_instance['title']);
-
-               return $instance;
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
-               $title = strip_tags($instance['title']);
-?>
-                       <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
-<?php
-       }
-}
-
-/**
- * Calendar widget class
- *
- * @since 2.8.0
- */
-class WP_Widget_Calendar extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array('classname' => 'widget_calendar', 'description' => __( 'A calendar of your site&#8217;s Posts.') );
-               parent::__construct('calendar', __('Calendar'), $widget_ops);
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
-
-               echo $args['before_widget'];
-               if ( $title ) {
-                       echo $args['before_title'] . $title . $args['after_title'];
-               }
-               echo '<div id="calendar_wrap">';
-               get_calendar();
-               echo '</div>';
-               echo $args['after_widget'];
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = $old_instance;
-               $instance['title'] = strip_tags($new_instance['title']);
-
-               return $instance;
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
-               $title = strip_tags($instance['title']);
-?>
-               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
-               <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
-<?php
-       }
-}
-
-/**
- * Text widget class
- *
  * @since 2.8.0
  */
-class WP_Widget_Text extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML.'));
-               $control_ops = array('width' => 400, 'height' => 350);
-               parent::__construct('text', __('Text'), $widget_ops, $control_ops);
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
-
-               /**
-                * Filter the content of the Text widget.
-                *
-                * @since 2.3.0
-                *
-                * @param string    $widget_text The widget content.
-                * @param WP_Widget $instance    WP_Widget instance.
-                */
-               $text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance );
-               echo $args['before_widget'];
-               if ( ! empty( $title ) ) {
-                       echo $args['before_title'] . $title . $args['after_title'];
-               } ?>
-                       <div class="textwidget"><?php echo !empty( $instance['filter'] ) ? wpautop( $text ) : $text; ?></div>
-               <?php
-               echo $args['after_widget'];
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = $old_instance;
-               $instance['title'] = strip_tags($new_instance['title']);
-               if ( current_user_can('unfiltered_html') )
-                       $instance['text'] =  $new_instance['text'];
-               else
-                       $instance['text'] = stripslashes( wp_filter_post_kses( addslashes($new_instance['text']) ) ); // wp_filter_post_kses() expects slashed
-               $instance['filter'] = ! empty( $new_instance['filter'] );
-               return $instance;
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '' ) );
-               $title = strip_tags($instance['title']);
-               $text = esc_textarea($instance['text']);
-?>
-               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
-               <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
-
-               <p><label for="<?php echo $this->get_field_id( 'text' ); ?>"><?php _e( 'Content:' ); ?></label>
-               <textarea class="widefat" rows="16" cols="20" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo $text; ?></textarea></p>
-
-               <p><input id="<?php echo $this->get_field_id('filter'); ?>" name="<?php echo $this->get_field_name('filter'); ?>" type="checkbox" <?php checked(isset($instance['filter']) ? $instance['filter'] : 0); ?> />&nbsp;<label for="<?php echo $this->get_field_id('filter'); ?>"><?php _e('Automatically add paragraphs'); ?></label></p>
-<?php
-       }
-}
-
-/**
- * Categories widget class
- *
- * @since 2.8.0
- */
-class WP_Widget_Categories extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array( 'classname' => 'widget_categories', 'description' => __( "A list or dropdown of categories." ) );
-               parent::__construct('categories', __('Categories'), $widget_ops);
-       }
-
-       /**
-        * @staticvar bool $first_dropdown
-        *
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               static $first_dropdown = true;
-
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title'], $instance, $this->id_base );
-
-               $c = ! empty( $instance['count'] ) ? '1' : '0';
-               $h = ! empty( $instance['hierarchical'] ) ? '1' : '0';
-               $d = ! empty( $instance['dropdown'] ) ? '1' : '0';
-
-               echo $args['before_widget'];
-               if ( $title ) {
-                       echo $args['before_title'] . $title . $args['after_title'];
-               }
-
-               $cat_args = array(
-                       'orderby'      => 'name',
-                       'show_count'   => $c,
-                       'hierarchical' => $h
-               );
-
-               if ( $d ) {
-                       $dropdown_id = ( $first_dropdown ) ? 'cat' : "{$this->id_base}-dropdown-{$this->number}";
-                       $first_dropdown = false;
-
-                       echo '<label class="screen-reader-text" for="' . esc_attr( $dropdown_id ) . '">' . $title . '</label>';
-
-                       $cat_args['show_option_none'] = __( 'Select Category' );
-                       $cat_args['id'] = $dropdown_id;
-
-                       /**
-                        * Filter the arguments for the Categories widget drop-down.
-                        *
-                        * @since 2.8.0
-                        *
-                        * @see wp_dropdown_categories()
-                        *
-                        * @param array $cat_args An array of Categories widget drop-down arguments.
-                        */
-                       wp_dropdown_categories( apply_filters( 'widget_categories_dropdown_args', $cat_args ) );
-?>
-
-<script type='text/javascript'>
-/* <![CDATA[ */
-(function() {
-       var dropdown = document.getElementById( "<?php echo esc_js( $dropdown_id ); ?>" );
-       function onCatChange() {
-               if ( dropdown.options[ dropdown.selectedIndex ].value > 0 ) {
-                       location.href = "<?php echo home_url(); ?>/?cat=" + dropdown.options[ dropdown.selectedIndex ].value;
-               }
-       }
-       dropdown.onchange = onCatChange;
-})();
-/* ]]> */
-</script>
-
-<?php
-               } else {
-?>
-               <ul>
-<?php
-               $cat_args['title_li'] = '';
-
-               /**
-                * Filter the arguments for the Categories widget.
-                *
-                * @since 2.8.0
-                *
-                * @param array $cat_args An array of Categories widget options.
-                */
-               wp_list_categories( apply_filters( 'widget_categories_args', $cat_args ) );
-?>
-               </ul>
-<?php
-               }
-
-               echo $args['after_widget'];
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = $old_instance;
-               $instance['title'] = strip_tags($new_instance['title']);
-               $instance['count'] = !empty($new_instance['count']) ? 1 : 0;
-               $instance['hierarchical'] = !empty($new_instance['hierarchical']) ? 1 : 0;
-               $instance['dropdown'] = !empty($new_instance['dropdown']) ? 1 : 0;
-
-               return $instance;
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               //Defaults
-               $instance = wp_parse_args( (array) $instance, array( 'title' => '') );
-               $title = esc_attr( $instance['title'] );
-               $count = isset($instance['count']) ? (bool) $instance['count'] :false;
-               $hierarchical = isset( $instance['hierarchical'] ) ? (bool) $instance['hierarchical'] : false;
-               $dropdown = isset( $instance['dropdown'] ) ? (bool) $instance['dropdown'] : false;
-?>
-               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Title:' ); ?></label>
-               <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></p>
-
-               <p><input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('dropdown'); ?>" name="<?php echo $this->get_field_name('dropdown'); ?>"<?php checked( $dropdown ); ?> />
-               <label for="<?php echo $this->get_field_id('dropdown'); ?>"><?php _e( 'Display as dropdown' ); ?></label><br />
-
-               <input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('count'); ?>" name="<?php echo $this->get_field_name('count'); ?>"<?php checked( $count ); ?> />
-               <label for="<?php echo $this->get_field_id('count'); ?>"><?php _e( 'Show post counts' ); ?></label><br />
-
-               <input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('hierarchical'); ?>" name="<?php echo $this->get_field_name('hierarchical'); ?>"<?php checked( $hierarchical ); ?> />
-               <label for="<?php echo $this->get_field_id('hierarchical'); ?>"><?php _e( 'Show hierarchy' ); ?></label></p>
-<?php
-       }
-
-}
-
-/**
- * Recent_Posts widget class
- *
- * @since 2.8.0
- */
-class WP_Widget_Recent_Posts extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "Your site&#8217;s most recent Posts.") );
-               parent::__construct('recent-posts', __('Recent Posts'), $widget_ops);
-               $this->alt_option_name = 'widget_recent_entries';
-
-               add_action( 'save_post', array($this, 'flush_widget_cache') );
-               add_action( 'deleted_post', array($this, 'flush_widget_cache') );
-               add_action( 'switch_theme', array($this, 'flush_widget_cache') );
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               $cache = array();
-               if ( ! $this->is_preview() ) {
-                       $cache = wp_cache_get( 'widget_recent_posts', 'widget' );
-               }
-
-               if ( ! is_array( $cache ) ) {
-                       $cache = array();
-               }
-
-               if ( ! isset( $args['widget_id'] ) ) {
-                       $args['widget_id'] = $this->id;
-               }
-
-               if ( isset( $cache[ $args['widget_id'] ] ) ) {
-                       echo $cache[ $args['widget_id'] ];
-                       return;
-               }
-
-               ob_start();
-
-               $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Posts' );
-
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
-
-               $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5;
-               if ( ! $number )
-                       $number = 5;
-               $show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false;
-
-               /**
-                * Filter the arguments for the Recent Posts widget.
-                *
-                * @since 3.4.0
-                *
-                * @see WP_Query::get_posts()
-                *
-                * @param array $args An array of arguments used to retrieve the recent posts.
-                */
-               $r = new WP_Query( apply_filters( 'widget_posts_args', array(
-                       'posts_per_page'      => $number,
-                       'no_found_rows'       => true,
-                       'post_status'         => 'publish',
-                       'ignore_sticky_posts' => true
-               ) ) );
-
-               if ($r->have_posts()) :
-?>
-               <?php echo $args['before_widget']; ?>
-               <?php if ( $title ) {
-                       echo $args['before_title'] . $title . $args['after_title'];
-               } ?>
-               <ul>
-               <?php while ( $r->have_posts() ) : $r->the_post(); ?>
-                       <li>
-                               <a href="<?php the_permalink(); ?>"><?php get_the_title() ? the_title() : the_ID(); ?></a>
-                       <?php if ( $show_date ) : ?>
-                               <span class="post-date"><?php echo get_the_date(); ?></span>
-                       <?php endif; ?>
-                       </li>
-               <?php endwhile; ?>
-               </ul>
-               <?php echo $args['after_widget']; ?>
-<?php
-               // Reset the global $the_post as this query will have stomped on it
-               wp_reset_postdata();
-
-               endif;
-
-               if ( ! $this->is_preview() ) {
-                       $cache[ $args['widget_id'] ] = ob_get_flush();
-                       wp_cache_set( 'widget_recent_posts', $cache, 'widget' );
-               } else {
-                       ob_end_flush();
-               }
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = $old_instance;
-               $instance['title'] = strip_tags($new_instance['title']);
-               $instance['number'] = (int) $new_instance['number'];
-               $instance['show_date'] = isset( $new_instance['show_date'] ) ? (bool) $new_instance['show_date'] : false;
-               $this->flush_widget_cache();
-
-               $alloptions = wp_cache_get( 'alloptions', 'options' );
-               if ( isset($alloptions['widget_recent_entries']) )
-                       delete_option('widget_recent_entries');
-
-               return $instance;
-       }
-
-       /**
-        * @access public
-        */
-       public function flush_widget_cache() {
-               wp_cache_delete('widget_recent_posts', 'widget');
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               $title     = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
-               $number    = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5;
-               $show_date = isset( $instance['show_date'] ) ? (bool) $instance['show_date'] : false;
-?>
-               <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
-               <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></p>
-
-               <p><label for="<?php echo $this->get_field_id( 'number' ); ?>"><?php _e( 'Number of posts to show:' ); ?></label>
-               <input id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p>
-
-               <p><input class="checkbox" type="checkbox" <?php checked( $show_date ); ?> id="<?php echo $this->get_field_id( 'show_date' ); ?>" name="<?php echo $this->get_field_name( 'show_date' ); ?>" />
-               <label for="<?php echo $this->get_field_id( 'show_date' ); ?>"><?php _e( 'Display post date?' ); ?></label></p>
-<?php
-       }
-}
-
-/**
- * Recent_Comments widget class
- *
- * @since 2.8.0
- */
-class WP_Widget_Recent_Comments extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array('classname' => 'widget_recent_comments', 'description' => __( 'Your site&#8217;s most recent comments.' ) );
-               parent::__construct('recent-comments', __('Recent Comments'), $widget_ops);
-               $this->alt_option_name = 'widget_recent_comments';
-
-               if ( is_active_widget(false, false, $this->id_base) )
-                       add_action( 'wp_head', array($this, 'recent_comments_style') );
-
-               add_action( 'comment_post', array($this, 'flush_widget_cache') );
-               add_action( 'edit_comment', array($this, 'flush_widget_cache') );
-               add_action( 'transition_comment_status', array($this, 'flush_widget_cache') );
-       }
-
-       /**
-        * @access public
-        */
-       public function recent_comments_style() {
-               /**
-                * Filter the Recent Comments default widget styles.
-                *
-                * @since 3.1.0
-                *
-                * @param bool   $active  Whether the widget is active. Default true.
-                * @param string $id_base The widget ID.
-                */
-               if ( ! current_theme_supports( 'widgets' ) // Temp hack #14876
-                       || ! apply_filters( 'show_recent_comments_widget_style', true, $this->id_base ) )
-                       return;
-               ?>
-       <style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
-<?php
-       }
-
-       /**
-        * @access public
-        */
-       public function flush_widget_cache() {
-               wp_cache_delete('widget_recent_comments', 'widget');
-       }
-
-       /**
-        * @global array  $comments
-        * @global object $comment
-        *
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               global $comments, $comment;
-
-               $cache = array();
-               if ( ! $this->is_preview() ) {
-                       $cache = wp_cache_get('widget_recent_comments', 'widget');
-               }
-               if ( ! is_array( $cache ) ) {
-                       $cache = array();
-               }
-
-               if ( ! isset( $args['widget_id'] ) )
-                       $args['widget_id'] = $this->id;
-
-               if ( isset( $cache[ $args['widget_id'] ] ) ) {
-                       echo $cache[ $args['widget_id'] ];
-                       return;
-               }
-
-               $output = '';
-
-               $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Comments' );
-
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
-
-               $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5;
-               if ( ! $number )
-                       $number = 5;
-
-               /**
-                * Filter the arguments for the Recent Comments widget.
-                *
-                * @since 3.4.0
-                *
-                * @see WP_Comment_Query::query() for information on accepted arguments.
-                *
-                * @param array $comment_args An array of arguments used to retrieve the recent comments.
-                */
-               $comments = get_comments( apply_filters( 'widget_comments_args', array(
-                       'number'      => $number,
-                       'status'      => 'approve',
-                       'post_status' => 'publish'
-               ) ) );
-
-               $output .= $args['before_widget'];
-               if ( $title ) {
-                       $output .= $args['before_title'] . $title . $args['after_title'];
-               }
-
-               $output .= '<ul id="recentcomments">';
-               if ( is_array( $comments ) && $comments ) {
-                       // Prime cache for associated posts. (Prime post term cache if we need it for permalinks.)
-                       $post_ids = array_unique( wp_list_pluck( $comments, 'comment_post_ID' ) );
-                       _prime_post_caches( $post_ids, strpos( get_option( 'permalink_structure' ), '%category%' ), false );
-
-                       foreach ( (array) $comments as $comment) {
-                               $output .= '<li class="recentcomments">';
-                               /* translators: comments widget: 1: comment author, 2: post link */
-                               $output .= sprintf( _x( '%1$s on %2$s', 'widgets' ),
-                                       '<span class="comment-author-link">' . get_comment_author_link() . '</span>',
-                                       '<a href="' . esc_url( get_comment_link( $comment->comment_ID ) ) . '">' . get_the_title( $comment->comment_post_ID ) . '</a>'
-                               );
-                               $output .= '</li>';
-                       }
-               }
-               $output .= '</ul>';
-               $output .= $args['after_widget'];
-
-               echo $output;
-
-               if ( ! $this->is_preview() ) {
-                       $cache[ $args['widget_id'] ] = $output;
-                       wp_cache_set( 'widget_recent_comments', $cache, 'widget' );
-               }
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = $old_instance;
-               $instance['title'] = strip_tags($new_instance['title']);
-               $instance['number'] = absint( $new_instance['number'] );
-               $this->flush_widget_cache();
-
-               $alloptions = wp_cache_get( 'alloptions', 'options' );
-               if ( isset($alloptions['widget_recent_comments']) )
-                       delete_option('widget_recent_comments');
-
-               return $instance;
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               $title  = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
-               $number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5;
-?>
-               <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
-               <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></p>
-
-               <p><label for="<?php echo $this->get_field_id( 'number' ); ?>"><?php _e( 'Number of comments to show:' ); ?></label>
-               <input id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="text" value="<?php echo $number; ?>" size="3" /></p>
-<?php
-       }
-}
-
-/**
- * RSS widget class
- *
- * @since 2.8.0
- */
-class WP_Widget_RSS extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array( 'description' => __('Entries from any RSS or Atom feed.') );
-               $control_ops = array( 'width' => 400, 'height' => 200 );
-               parent::__construct( 'rss', __('RSS'), $widget_ops, $control_ops );
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               if ( isset($instance['error']) && $instance['error'] )
-                       return;
-
-               $url = ! empty( $instance['url'] ) ? $instance['url'] : '';
-               while ( stristr($url, 'http') != $url )
-                       $url = substr($url, 1);
-
-               if ( empty($url) )
-                       return;
-
-               // self-url destruction sequence
-               if ( in_array( untrailingslashit( $url ), array( site_url(), home_url() ) ) )
-                       return;
-
-               $rss = fetch_feed($url);
-               $title = $instance['title'];
-               $desc = '';
-               $link = '';
-
-               if ( ! is_wp_error($rss) ) {
-                       $desc = esc_attr(strip_tags(@html_entity_decode($rss->get_description(), ENT_QUOTES, get_option('blog_charset'))));
-                       if ( empty($title) )
-                               $title = esc_html(strip_tags($rss->get_title()));
-                       $link = esc_url(strip_tags($rss->get_permalink()));
-                       while ( stristr($link, 'http') != $link )
-                               $link = substr($link, 1);
-               }
-
-               if ( empty($title) )
-                       $title = empty($desc) ? __('Unknown Feed') : $desc;
-
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
-
-               $url = esc_url(strip_tags($url));
-               $icon = includes_url('images/rss.png');
-               if ( $title )
-                       $title = "<a class='rsswidget' href='$url'><img style='border:0' width='14' height='14' src='$icon' alt='RSS' /></a> <a class='rsswidget' href='$link'>$title</a>";
-
-               echo $args['before_widget'];
-               if ( $title ) {
-                       echo $args['before_title'] . $title . $args['after_title'];
-               }
-               wp_widget_rss_output( $rss, $instance );
-               echo $args['after_widget'];
-
-               if ( ! is_wp_error($rss) )
-                       $rss->__destruct();
-               unset($rss);
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $testurl = ( isset( $new_instance['url'] ) && ( !isset( $old_instance['url'] ) || ( $new_instance['url'] != $old_instance['url'] ) ) );
-               return wp_widget_rss_process( $new_instance, $testurl );
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               if ( empty( $instance ) ) {
-                       $instance = array( 'title' => '', 'url' => '', 'items' => 10, 'error' => false, 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0 );
-               }
-               $instance['number'] = $this->number;
-
-               wp_widget_rss_form( $instance );
-       }
-}
-
-/**
- * Display the RSS entries in a list.
- *
- * @since 2.5.0
- *
- * @param string|array|object $rss RSS url.
- * @param array $args Widget arguments.
- */
-function wp_widget_rss_output( $rss, $args = array() ) {
-       if ( is_string( $rss ) ) {
-               $rss = fetch_feed($rss);
-       } elseif ( is_array($rss) && isset($rss['url']) ) {
-               $args = $rss;
-               $rss = fetch_feed($rss['url']);
-       } elseif ( !is_object($rss) ) {
-               return;
-       }
-
-       if ( is_wp_error($rss) ) {
-               if ( is_admin() || current_user_can('manage_options') )
-                       echo '<p>' . sprintf( __('<strong>RSS Error</strong>: %s'), $rss->get_error_message() ) . '</p>';
-               return;
-       }
-
-       $default_args = array( 'show_author' => 0, 'show_date' => 0, 'show_summary' => 0, 'items' => 0 );
-       $args = wp_parse_args( $args, $default_args );
-
-       $items = (int) $args['items'];
-       if ( $items < 1 || 20 < $items )
-               $items = 10;
-       $show_summary  = (int) $args['show_summary'];
-       $show_author   = (int) $args['show_author'];
-       $show_date     = (int) $args['show_date'];
-
-       if ( !$rss->get_item_quantity() ) {
-               echo '<ul><li>' . __( 'An error has occurred, which probably means the feed is down. Try again later.' ) . '</li></ul>';
-               $rss->__destruct();
-               unset($rss);
-               return;
-       }
-
-       echo '<ul>';
-       foreach ( $rss->get_items( 0, $items ) as $item ) {
-               $link = $item->get_link();
-               while ( stristr( $link, 'http' ) != $link ) {
-                       $link = substr( $link, 1 );
-               }
-               $link = esc_url( strip_tags( $link ) );
-
-               $title = esc_html( trim( strip_tags( $item->get_title() ) ) );
-               if ( empty( $title ) ) {
-                       $title = __( 'Untitled' );
-               }
-
-               $desc = @html_entity_decode( $item->get_description(), ENT_QUOTES, get_option( 'blog_charset' ) );
-               $desc = esc_attr( wp_trim_words( $desc, 55, ' [&hellip;]' ) );
-
-               $summary = '';
-               if ( $show_summary ) {
-                       $summary = $desc;
-
-                       // Change existing [...] to [&hellip;].
-                       if ( '[...]' == substr( $summary, -5 ) ) {
-                               $summary = substr( $summary, 0, -5 ) . '[&hellip;]';
-                       }
-
-                       $summary = '<div class="rssSummary">' . esc_html( $summary ) . '</div>';
-               }
-
-               $date = '';
-               if ( $show_date ) {
-                       $date = $item->get_date( 'U' );
-
-                       if ( $date ) {
-                               $date = ' <span class="rss-date">' . date_i18n( get_option( 'date_format' ), $date ) . '</span>';
-                       }
-               }
-
-               $author = '';
-               if ( $show_author ) {
-                       $author = $item->get_author();
-                       if ( is_object($author) ) {
-                               $author = $author->get_name();
-                               $author = ' <cite>' . esc_html( strip_tags( $author ) ) . '</cite>';
-                       }
-               }
-
-               if ( $link == '' ) {
-                       echo "<li>$title{$date}{$summary}{$author}</li>";
-               } elseif ( $show_summary ) {
-                       echo "<li><a class='rsswidget' href='$link'>$title</a>{$date}{$summary}{$author}</li>";
-               } else {
-                       echo "<li><a class='rsswidget' href='$link'>$title</a>{$date}{$author}</li>";
-               }
-       }
-       echo '</ul>';
-       $rss->__destruct();
-       unset($rss);
-}
-
-/**
- * Display RSS widget options form.
- *
- * The options for what fields are displayed for the RSS form are all booleans
- * and are as follows: 'url', 'title', 'items', 'show_summary', 'show_author',
- * 'show_date'.
- *
- * @since 2.5.0
- *
- * @param array|string $args Values for input fields.
- * @param array $inputs Override default display options.
- */
-function wp_widget_rss_form( $args, $inputs = null ) {
-       $default_inputs = array( 'url' => true, 'title' => true, 'items' => true, 'show_summary' => true, 'show_author' => true, 'show_date' => true );
-       $inputs = wp_parse_args( $inputs, $default_inputs );
-
-       $args['number'] = esc_attr( $args['number'] );
-       $args['title'] = isset( $args['title'] ) ? esc_attr( $args['title'] ) : '';
-       $args['url'] = isset( $args['url'] ) ? esc_url( $args['url'] ) : '';
-       $args['items'] = isset( $args['items'] ) ? (int) $args['items'] : 0;
-
-       if ( $args['items'] < 1 || 20 < $args['items'] ) {
-               $args['items'] = 10;
-       }
-
-       $args['show_summary']   = isset( $args['show_summary'] ) ? (int) $args['show_summary'] : (int) $inputs['show_summary'];
-       $args['show_author']    = isset( $args['show_author'] ) ? (int) $args['show_author'] : (int) $inputs['show_author'];
-       $args['show_date']      = isset( $args['show_date'] ) ? (int) $args['show_date'] : (int) $inputs['show_date'];
-
-       if ( ! empty( $args['error'] ) ) {
-               echo '<p class="widget-error"><strong>' . sprintf( __( 'RSS Error: %s' ), $args['error'] ) . '</strong></p>';
-       }
-
-       if ( $inputs['url'] ) :
-?>
-       <p><label for="rss-url-<?php echo $args['number']; ?>"><?php _e( 'Enter the RSS feed URL here:' ); ?></label>
-       <input class="widefat" id="rss-url-<?php echo $args['number']; ?>" name="widget-rss[<?php echo $args['number']; ?>][url]" type="text" value="<?php echo $args['url']; ?>" /></p>
-<?php endif; if ( $inputs['title'] ) : ?>
-       <p><label for="rss-title-<?php echo $args['number']; ?>"><?php _e( 'Give the feed a title (optional):' ); ?></label>
-       <input class="widefat" id="rss-title-<?php echo $args['number']; ?>" name="widget-rss[<?php echo $args['number']; ?>][title]" type="text" value="<?php echo $args['title']; ?>" /></p>
-<?php endif; if ( $inputs['items'] ) : ?>
-       <p><label for="rss-items-<?php echo $args['number']; ?>"><?php _e( 'How many items would you like to display?' ); ?></label>
-       <select id="rss-items-<?php echo $args['number']; ?>" name="widget-rss[<?php echo $args['number']; ?>][items]">
-<?php
-               for ( $i = 1; $i <= 20; ++$i ) {
-                       echo "<option value='$i' " . selected( $args['items'], $i, false ) . ">$i</option>";
-               }
-?>
-       </select></p>
-<?php endif; if ( $inputs['show_summary'] ) : ?>
-       <p><input id="rss-show-summary-<?php echo $args['number']; ?>" name="widget-rss[<?php echo $args['number']; ?>][show_summary]" type="checkbox" value="1" <?php checked( $args['show_summary'] ); ?> />
-       <label for="rss-show-summary-<?php echo $args['number']; ?>"><?php _e( 'Display item content?' ); ?></label></p>
-<?php endif; if ( $inputs['show_author'] ) : ?>
-       <p><input id="rss-show-author-<?php echo $args['number']; ?>" name="widget-rss[<?php echo $args['number']; ?>][show_author]" type="checkbox" value="1" <?php checked( $args['show_author'] ); ?> />
-       <label for="rss-show-author-<?php echo $args['number']; ?>"><?php _e( 'Display item author if available?' ); ?></label></p>
-<?php endif; if ( $inputs['show_date'] ) : ?>
-       <p><input id="rss-show-date-<?php echo $args['number']; ?>" name="widget-rss[<?php echo $args['number']; ?>][show_date]" type="checkbox" value="1" <?php checked( $args['show_date'] ); ?>/>
-       <label for="rss-show-date-<?php echo $args['number']; ?>"><?php _e( 'Display item date?' ); ?></label></p>
-<?php
-       endif;
-       foreach ( array_keys($default_inputs) as $input ) :
-               if ( 'hidden' === $inputs[$input] ) :
-                       $id = str_replace( '_', '-', $input );
-?>
-       <input type="hidden" id="rss-<?php echo $id; ?>-<?php echo $args['number']; ?>" name="widget-rss[<?php echo $args['number']; ?>][<?php echo $input; ?>]" value="<?php echo $args[ $input ]; ?>" />
-<?php
-               endif;
-       endforeach;
-}
-
-/**
- * Process RSS feed widget data and optionally retrieve feed items.
- *
- * The feed widget can not have more than 20 items or it will reset back to the
- * default, which is 10.
- *
- * The resulting array has the feed title, feed url, feed link (from channel),
- * feed items, error (if any), and whether to show summary, author, and date.
- * All respectively in the order of the array elements.
- *
- * @since 2.5.0
- *
- * @param array $widget_rss RSS widget feed data. Expects unescaped data.
- * @param bool $check_feed Optional, default is true. Whether to check feed for errors.
- * @return array
- */
-function wp_widget_rss_process( $widget_rss, $check_feed = true ) {
-       $items = (int) $widget_rss['items'];
-       if ( $items < 1 || 20 < $items )
-               $items = 10;
-       $url           = esc_url_raw( strip_tags( $widget_rss['url'] ) );
-       $title         = isset( $widget_rss['title'] ) ? trim( strip_tags( $widget_rss['title'] ) ) : '';
-       $show_summary  = isset( $widget_rss['show_summary'] ) ? (int) $widget_rss['show_summary'] : 0;
-       $show_author   = isset( $widget_rss['show_author'] ) ? (int) $widget_rss['show_author'] :0;
-       $show_date     = isset( $widget_rss['show_date'] ) ? (int) $widget_rss['show_date'] : 0;
-
-       if ( $check_feed ) {
-               $rss = fetch_feed($url);
-               $error = false;
-               $link = '';
-               if ( is_wp_error($rss) ) {
-                       $error = $rss->get_error_message();
-               } else {
-                       $link = esc_url(strip_tags($rss->get_permalink()));
-                       while ( stristr($link, 'http') != $link )
-                               $link = substr($link, 1);
-
-                       $rss->__destruct();
-                       unset($rss);
-               }
-       }
-
-       return compact( 'title', 'url', 'link', 'items', 'error', 'show_summary', 'show_author', 'show_date' );
-}
-
-/**
- * Tag cloud widget class
- *
- * @since 2.8.0
- */
-class WP_Widget_Tag_Cloud extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array( 'description' => __( "A cloud of your most used tags.") );
-               parent::__construct('tag_cloud', __('Tag Cloud'), $widget_ops);
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               $current_taxonomy = $this->_get_current_taxonomy($instance);
-               if ( !empty($instance['title']) ) {
-                       $title = $instance['title'];
-               } else {
-                       if ( 'post_tag' == $current_taxonomy ) {
-                               $title = __('Tags');
-                       } else {
-                               $tax = get_taxonomy($current_taxonomy);
-                               $title = $tax->labels->name;
-                       }
-               }
-
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
-
-               echo $args['before_widget'];
-               if ( $title ) {
-                       echo $args['before_title'] . $title . $args['after_title'];
-               }
-               echo '<div class="tagcloud">';
-
-               /**
-                * Filter the taxonomy used in the Tag Cloud widget.
-                *
-                * @since 2.8.0
-                * @since 3.0.0 Added taxonomy drop-down.
-                *
-                * @see wp_tag_cloud()
-                *
-                * @param array $current_taxonomy The taxonomy to use in the tag cloud. Default 'tags'.
-                */
-               wp_tag_cloud( apply_filters( 'widget_tag_cloud_args', array(
-                       'taxonomy' => $current_taxonomy
-               ) ) );
-
-               echo "</div>\n";
-               echo $args['after_widget'];
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = array();
-               $instance['title'] = strip_tags(stripslashes($new_instance['title']));
-               $instance['taxonomy'] = stripslashes($new_instance['taxonomy']);
-               return $instance;
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               $current_taxonomy = $this->_get_current_taxonomy($instance);
-?>
-       <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:') ?></label>
-       <input type="text" class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php if (isset ( $instance['title'])) {echo esc_attr( $instance['title'] );} ?>" /></p>
-       <p><label for="<?php echo $this->get_field_id('taxonomy'); ?>"><?php _e('Taxonomy:') ?></label>
-       <select class="widefat" id="<?php echo $this->get_field_id('taxonomy'); ?>" name="<?php echo $this->get_field_name('taxonomy'); ?>">
-       <?php foreach ( get_taxonomies() as $taxonomy ) :
-                               $tax = get_taxonomy($taxonomy);
-                               if ( !$tax->show_tagcloud || empty($tax->labels->name) )
-                                       continue;
-       ?>
-               <option value="<?php echo esc_attr($taxonomy) ?>" <?php selected($taxonomy, $current_taxonomy) ?>><?php echo $tax->labels->name; ?></option>
-       <?php endforeach; ?>
-       </select></p><?php
-       }
-
-       /**
-        * @param array $instance
-        * @return string
-        */
-       public function _get_current_taxonomy($instance) {
-               if ( !empty($instance['taxonomy']) && taxonomy_exists($instance['taxonomy']) )
-                       return $instance['taxonomy'];
-
-               return 'post_tag';
-       }
-}
-
-/**
- * Navigation Menu widget class
- *
- * @since 3.0.0
- */
- class WP_Nav_Menu_Widget extends WP_Widget {
-
-       public function __construct() {
-               $widget_ops = array( 'description' => __('Add a custom menu to your sidebar.') );
-               parent::__construct( 'nav_menu', __('Custom Menu'), $widget_ops );
-       }
-
-       /**
-        * @param array $args
-        * @param array $instance
-        */
-       public function widget( $args, $instance ) {
-               // Get menu
-               $nav_menu = ! empty( $instance['nav_menu'] ) ? wp_get_nav_menu_object( $instance['nav_menu'] ) : false;
-
-               if ( !$nav_menu )
-                       return;
-
-               /** This filter is documented in wp-includes/default-widgets.php */
-               $instance['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
-
-               echo $args['before_widget'];
-
-               if ( !empty($instance['title']) )
-                       echo $args['before_title'] . $instance['title'] . $args['after_title'];
-
-               $nav_menu_args = array(
-                       'fallback_cb' => '',
-                       'menu'        => $nav_menu
-               );
-
-               /**
-                * Filter the arguments for the Custom Menu widget.
-                *
-                * @since 4.2.0
-                *
-                * @param array    $nav_menu_args {
-                *     An array of arguments passed to wp_nav_menu() to retrieve a custom menu.
-                *
-                *     @type callback|bool $fallback_cb Callback to fire if the menu doesn't exist. Default empty.
-                *     @type mixed         $menu        Menu ID, slug, or name.
-                * }
-                * @param stdClass $nav_menu      Nav menu object for the current menu.
-                * @param array    $args          Display arguments for the current widget.
-                */
-               wp_nav_menu( apply_filters( 'widget_nav_menu_args', $nav_menu_args, $nav_menu, $args ) );
-
-               echo $args['after_widget'];
-       }
-
-       /**
-        * @param array $new_instance
-        * @param array $old_instance
-        * @return array
-        */
-       public function update( $new_instance, $old_instance ) {
-               $instance = array();
-               if ( ! empty( $new_instance['title'] ) ) {
-                       $instance['title'] = strip_tags( stripslashes($new_instance['title']) );
-               }
-               if ( ! empty( $new_instance['nav_menu'] ) ) {
-                       $instance['nav_menu'] = (int) $new_instance['nav_menu'];
-               }
-               return $instance;
-       }
-
-       /**
-        * @param array $instance
-        */
-       public function form( $instance ) {
-               $title = isset( $instance['title'] ) ? $instance['title'] : '';
-               $nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : '';
-
-               // Get menus
-               $menus = wp_get_nav_menus();
-
-               // If no menus exists, direct the user to go and create some.
-               ?>
-               <p class="nav-menu-widget-no-menus-message" <?php if ( ! empty( $menus ) ) { echo ' style="display:none" '; } ?>>
-                       <?php
-                       if ( isset( $GLOBALS['wp_customize'] ) && $GLOBALS['wp_customize'] instanceof WP_Customize_Manager ) {
-                               $url = 'javascript: wp.customize.panel( "nav_menus" ).focus();';
-                       } else {
-                               $url = admin_url( 'nav-menus.php' );
-                       }
-                       ?>
-                       <?php echo sprintf( __( 'No menus have been created yet. <a href="%s">Create some</a>.' ), esc_attr( $url ) ); ?>
-               </p>
-               <div class="nav-menu-widget-form-controls" <?php if ( empty( $menus ) ) { echo ' style="display:none" '; } ?>>
-                       <p>
-                               <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ) ?></label>
-                               <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_attr( $title ); ?>"/>
-                       </p>
-                       <p>
-                               <label for="<?php echo $this->get_field_id( 'nav_menu' ); ?>"><?php _e( 'Select Menu:' ); ?></label>
-                               <select id="<?php echo $this->get_field_id( 'nav_menu' ); ?>" name="<?php echo $this->get_field_name( 'nav_menu' ); ?>">
-                                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
-                                       <?php foreach ( $menus as $menu ) : ?>
-                                               <option value="<?php echo esc_attr( $menu->term_id ); ?>" <?php selected( $nav_menu, $menu->term_id ); ?>>
-                                                       <?php echo esc_html( $menu->name ); ?>
-                                               </option>
-                                       <?php endforeach; ?>
-                               </select>
-                       </p>
-               </div>
-               <?php
-       }
-}
-
-/**
- * Register all of the default WordPress widgets on startup.
- *
- * Calls 'widgets_init' action after all of the WordPress widgets have been
- * registered.
- *
- * @since 2.2.0
- */
-function wp_widgets_init() {
-       if ( !is_blog_installed() )
-               return;
-
-       register_widget('WP_Widget_Pages');
 
-       register_widget('WP_Widget_Calendar');
+/** WP_Widget_Pages class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-pages.php' );
 
-       register_widget('WP_Widget_Archives');
+/** WP_Widget_Links class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-links.php' );
 
-       if ( get_option( 'link_manager_enabled' ) )
-               register_widget('WP_Widget_Links');
+/** WP_Widget_Search class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-search.php' );
 
-       register_widget('WP_Widget_Meta');
+/** WP_Widget_Archives class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-archives.php' );
 
-       register_widget('WP_Widget_Search');
+/** WP_Widget_Meta class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-meta.php' );
 
-       register_widget('WP_Widget_Text');
+/** WP_Widget_Calendar class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-calendar.php' );
 
-       register_widget('WP_Widget_Categories');
+/** WP_Widget_Text class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-text.php' );
 
-       register_widget('WP_Widget_Recent_Posts');
+/** WP_Widget_Categories class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-categories.php' );
 
-       register_widget('WP_Widget_Recent_Comments');
+/** WP_Widget_Recent_Posts class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-recent-posts.php' );
 
-       register_widget('WP_Widget_RSS');
+/** WP_Widget_Recent_Comments class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-recent-comments.php' );
 
-       register_widget('WP_Widget_Tag_Cloud');
+/** WP_Widget_RSS class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-rss.php' );
 
-       register_widget('WP_Nav_Menu_Widget');
+/** WP_Widget_Tag_Cloud class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-widget-tag-cloud.php' );
 
-       /**
-        * Fires after all default WordPress widgets have been registered.
-        *
-        * @since 2.2.0
-        */
-       do_action( 'widgets_init' );
-}
+/** WP_Nav_Menu_Widget class */
+require_once( ABSPATH . WPINC . '/widgets/class-wp-nav-menu-widget.php' );
index ac3910550d49f73b2a9d5570421427589926456b..91a1543cd1c6f0a59b18aa9749475ba2807eeecf 100644 (file)
@@ -16,8 +16,7 @@
  * Entire Post data.
  *
  * @since 0.71
- * @deprecated 1.5.1
- * @deprecated Use get_post()
+ * @deprecated 1.5.1 Use get_post()
  * @see get_post()
  *
  * @param int $postid
@@ -52,9 +51,12 @@ function get_postdata($postid) {
 /**
  * Sets up the WordPress Loop.
  *
+ * Use The Loop instead.
+ *
+ * @link https://codex.wordpress.org/The_Loop
+ *
  * @since 1.0.1
  * @deprecated 1.5.0
- * @deprecated Use The Loop - {@link https://codex.wordpress.org/The_Loop Use new WordPress Loop}
  */
 function start_wp() {
        global $wp_query;
@@ -71,8 +73,7 @@ function start_wp() {
  * Return or Print Category ID.
  *
  * @since 0.71
- * @deprecated 0.71
- * @deprecated use get_the_category()
+ * @deprecated 0.71 Use get_the_category()
  * @see get_the_category()
  *
  * @param bool $echo
@@ -95,8 +96,7 @@ function the_category_ID($echo = true) {
  * Print category with optional text before and after.
  *
  * @since 0.71
- * @deprecated 0.71
- * @deprecated use get_the_category_by_ID()
+ * @deprecated 0.71 Use get_the_category_by_ID()
  * @see get_the_category_by_ID()
  *
  * @param string $before
@@ -122,8 +122,7 @@ function the_category_head($before='', $after='') {
  * Prints link to the previous post.
  *
  * @since 1.5.0
- * @deprecated 2.0.0
- * @deprecated Use previous_post_link()
+ * @deprecated 2.0.0 Use previous_post_link()
  * @see previous_post_link()
  *
  * @param string $format
@@ -159,8 +158,7 @@ function previous_post($format='%', $previous='previous post: ', $title='yes', $
  * Prints link to the next post.
  *
  * @since 0.71
- * @deprecated 2.0.0
- * @deprecated Use next_post_link()
+ * @deprecated 2.0.0 Use next_post_link()
  * @see next_post_link()
  *
  * @param string $format
@@ -195,8 +193,7 @@ function next_post($format='%', $next='next post: ', $title='yes', $in_same_cat=
  * Whether user can create a post.
  *
  * @since 1.5.0
- * @deprecated 2.0.0
- * @deprecated Use current_user_can()
+ * @deprecated 2.0.0 Use current_user_can()
  * @see current_user_can()
  *
  * @param int $user_id
@@ -215,8 +212,7 @@ function user_can_create_post($user_id, $blog_id = 1, $category_id = 'None') {
  * Whether user can create a post.
  *
  * @since 1.5.0
- * @deprecated 2.0.0
- * @deprecated Use current_user_can()
+ * @deprecated 2.0.0 Use current_user_can()
  * @see current_user_can()
  *
  * @param int $user_id
@@ -235,8 +231,7 @@ function user_can_create_draft($user_id, $blog_id = 1, $category_id = 'None') {
  * Whether user can edit a post.
  *
  * @since 1.5.0
- * @deprecated 2.0.0
- * @deprecated Use current_user_can()
+ * @deprecated 2.0.0 Use current_user_can()
  * @see current_user_can()
  *
  * @param int $user_id
@@ -264,8 +259,7 @@ function user_can_edit_post($user_id, $post_id, $blog_id = 1) {
  * Whether user can delete a post.
  *
  * @since 1.5.0
- * @deprecated 2.0.0
- * @deprecated Use current_user_can()
+ * @deprecated 2.0.0 Use current_user_can()
  * @see current_user_can()
  *
  * @param int $user_id
@@ -284,8 +278,7 @@ function user_can_delete_post($user_id, $post_id, $blog_id = 1) {
  * Whether user can set new posts' dates.
  *
  * @since 1.5.0
- * @deprecated 2.0.0
- * @deprecated Use current_user_can()
+ * @deprecated 2.0.0 Use current_user_can()
  * @see current_user_can()
  *
  * @param int $user_id
@@ -304,8 +297,7 @@ function user_can_set_post_date($user_id, $blog_id = 1, $category_id = 'None') {
  * Whether user can delete a post.
  *
  * @since 1.5.0
- * @deprecated 2.0.0
- * @deprecated Use current_user_can()
+ * @deprecated 2.0.0 Use current_user_can()
  * @see current_user_can()
  *
  * @param int $user_id
@@ -324,8 +316,7 @@ function user_can_edit_post_date($user_id, $post_id, $blog_id = 1) {
  * Whether user can delete a post.
  *
  * @since 1.5.0
- * @deprecated 2.0.0
- * @deprecated Use current_user_can()
+ * @deprecated 2.0.0 Use current_user_can()
  * @see current_user_can()
  *
  * @param int $user_id
@@ -344,8 +335,7 @@ function user_can_edit_post_comments($user_id, $post_id, $blog_id = 1) {
  * Whether user can delete a post.
  *
  * @since 1.5.0
- * @deprecated 2.0.0
- * @deprecated Use current_user_can()
+ * @deprecated 2.0.0 Use current_user_can()
  * @see current_user_can()
  *
  * @param int $user_id
@@ -364,8 +354,7 @@ function user_can_delete_post_comments($user_id, $post_id, $blog_id = 1) {
  * Can user can edit other user.
  *
  * @since 1.5.0
- * @deprecated 2.0.0
- * @deprecated Use current_user_can()
+ * @deprecated 2.0.0 Use current_user_can()
  * @see current_user_can()
  *
  * @param int $user_id
@@ -387,8 +376,7 @@ function user_can_edit_user($user_id, $other_user) {
  * Gets the links associated with category $cat_name.
  *
  * @since 0.71
- * @deprecated 2.1.0
- * @deprecated Use get_bookmarks()
+ * @deprecated 2.1.0 Use get_bookmarks()
  * @see get_bookmarks()
  *
  * @param string $cat_name Optional. The category name to use. If no match is found uses all.
@@ -421,8 +409,7 @@ function get_linksbyname($cat_name = "noname", $before = '', $after = '<br />',
  * Gets the links associated with the named category.
  *
  * @since 1.0.1
- * @deprecated 2.1.0
- * @deprecated Use wp_list_bookmarks()
+ * @deprecated 2.1.0 Use wp_list_bookmarks()
  * @see wp_list_bookmarks()
  *
  * @param string $category The category to use.
@@ -457,8 +444,7 @@ function wp_get_linksbyname($category, $args = '') {
  *     }
  *
  * @since 1.0.1
- * @deprecated 2.1.0
- * @deprecated Use get_bookmarks()
+ * @deprecated 2.1.0 Use get_bookmarks()
  * @see get_bookmarks()
  *
  * @param string $cat_name The category name to use. If no match is found uses all.
@@ -508,8 +494,7 @@ function get_linkobjectsbyname($cat_name = "noname" , $orderby = 'name', $limit
  * - link_notes
  *
  * @since 1.0.1
- * @deprecated 2.1.0
- * @deprecated Use get_bookmarks()
+ * @deprecated 2.1.0 Use get_bookmarks()
  * @see get_bookmarks()
  *
  * @param int $category The category to use. If no category supplied uses all
@@ -536,8 +521,7 @@ function get_linkobjects($category = 0, $orderby = 'name', $limit = 0) {
  * Gets the links associated with category 'cat_name' and display rating stars/chars.
  *
  * @since 0.71
- * @deprecated 2.1.0
- * @deprecated Use get_bookmarks()
+ * @deprecated 2.1.0 Use get_bookmarks()
  * @see get_bookmarks()
  *
  * @param string $cat_name The category name to use. If no match is found uses all
@@ -564,8 +548,7 @@ function get_linksbyname_withrating($cat_name = "noname", $before = '', $after =
  * Gets the links associated with category n and display rating stars/chars.
  *
  * @since 0.71
- * @deprecated 2.1.0
- * @deprecated Use get_bookmarks()
+ * @deprecated 2.1.0 Use get_bookmarks()
  * @see get_bookmarks()
  *
  * @param int $category The category to use. If no category supplied uses all
@@ -593,7 +576,6 @@ function get_links_withrating($category = -1, $before = '', $after = '<br />', $
  *
  * @since 0.71
  * @deprecated 2.1.0
- * @deprecated No alternative function available
  *
  * @param int $id The category to get. If no category supplied uses 0
  * @return int Only returns 0.
@@ -604,9 +586,10 @@ function get_autotoggle($id = 0) {
 }
 
 /**
+ * Lists categories.
+ *
  * @since 0.71
- * @deprecated 2.1.0
- * @deprecated Use wp_list_categories()
+ * @deprecated 2.1.0 Use wp_list_categories()
  * @see wp_list_categories()
  *
  * @param int $optionall
@@ -640,9 +623,10 @@ function list_cats($optionall = 1, $all = 'All', $sort_column = 'ID', $sort_orde
 }
 
 /**
+ * Lists categories.
+ *
  * @since 1.2.0
- * @deprecated 2.1.0
- * @deprecated Use wp_list_categories()
+ * @deprecated 2.1.0 Use wp_list_categories()
  * @see wp_list_categories()
  *
  * @param string|array $args
@@ -672,9 +656,10 @@ function wp_list_cats($args = '') {
 }
 
 /**
+ * Deprecated method for generating a drop-down of categories.
+ *
  * @since 0.71
- * @deprecated 2.1.0
- * @deprecated Use wp_dropdown_categories()
+ * @deprecated 2.1.0 Use wp_dropdown_categories()
  * @see wp_dropdown_categories()
  *
  * @param int $optionall
@@ -709,11 +694,10 @@ function dropdown_cats($optionall = 1, $all = 'All', $orderby = 'ID', $order = '
 }
 
 /**
- * List authors.
+ * Lists authors.
  *
  * @since 1.2.0
- * @deprecated 2.1.0
- * @deprecated Use wp_list_authors()
+ * @deprecated 2.1.0 Use wp_list_authors()
  * @see wp_list_authors()
  *
  * @param bool $optioncount
@@ -732,9 +716,10 @@ function list_authors($optioncount = false, $exclude_admin = true, $show_fullnam
 }
 
 /**
+ * Retrieves a list of post categories.
+ *
  * @since 1.0.1
- * @deprecated 2.1.0
- * @deprecated Use wp_get_post_categories()
+ * @deprecated 2.1.0 Use wp_get_post_categories()
  * @see wp_get_post_categories()
  *
  * @param int $blogid Not Used
@@ -765,9 +750,10 @@ function wp_set_post_cats($blogid = '1', $post_ID = 0, $post_categories = array(
 }
 
 /**
+ * Retrieves a list of archives.
+ *
  * @since 0.71
- * @deprecated 2.1.0
- * @deprecated Use wp_get_archives()
+ * @deprecated 2.1.0 Use wp_get_archives()
  * @see wp_get_archives()
  *
  * @param string $type
@@ -788,8 +774,7 @@ function get_archives($type='', $limit='', $format='html', $before = '', $after
  * Returns or Prints link to the author's posts.
  *
  * @since 1.2.0
- * @deprecated 2.1.0
- * @deprecated Use get_author_posts_url()
+ * @deprecated 2.1.0 Use get_author_posts_url()
  * @see get_author_posts_url()
  *
  * @param bool $echo
@@ -811,8 +796,7 @@ function get_author_link($echo, $author_id, $author_nicename = '') {
  * Print list of pages based on arguments.
  *
  * @since 0.71
- * @deprecated 2.1.0
- * @deprecated Use wp_link_pages()
+ * @deprecated 2.1.0 Use wp_link_pages()
  * @see wp_link_pages()
  *
  * @param string $before
@@ -836,8 +820,7 @@ function link_pages($before='<br />', $after='<br />', $next_or_number='number',
  * Get value based on option.
  *
  * @since 0.71
- * @deprecated 2.1.0
- * @deprecated Use get_option()
+ * @deprecated 2.1.0 Use get_option()
  * @see get_option()
  *
  * @param string $option
@@ -853,8 +836,7 @@ function get_settings($option) {
  * Print the permalink of the current post in the loop.
  *
  * @since 0.71
- * @deprecated 1.2.0
- * @deprecated Use the_permalink()
+ * @deprecated 1.2.0 Use the_permalink()
  * @see the_permalink()
  */
 function permalink_link() {
@@ -866,8 +848,7 @@ function permalink_link() {
  * Print the permalink to the RSS feed.
  *
  * @since 0.71
- * @deprecated 2.3.0
- * @deprecated Use the_permalink_rss()
+ * @deprecated 2.3.0 Use the_permalink_rss()
  * @see the_permalink_rss()
  *
  * @param string $deprecated
@@ -880,10 +861,8 @@ function permalink_single_rss($deprecated = '') {
 /**
  * Gets the links associated with category.
  *
- * @see get_links() for argument information that can be used in $args
  * @since 1.0.1
- * @deprecated 2.1.0
- * @deprecated Use wp_list_bookmarks()
+ * @deprecated 2.1.0 Use wp_list_bookmarks()
  * @see wp_list_bookmarks()
  *
  * @param string $args a query string
@@ -922,8 +901,7 @@ function wp_get_links($args = '') {
  * Gets the links associated with category by id.
  *
  * @since 0.71
- * @deprecated 2.1.0
- * @deprecated Use get_bookmarks()
+ * @deprecated 2.1.0 Use get_bookmarks()
  * @see get_bookmarks()
  *
  * @param int $category The category to use. If no category supplied uses all
@@ -1031,8 +1009,7 @@ function get_links($category = -1, $before = '', $after = '<br />', $between = '
  * $wpdb->linkcategories and output it as a nested HTML unordered list.
  *
  * @since 1.0.1
- * @deprecated 2.1.0
- * @deprecated Use wp_list_bookmarks()
+ * @deprecated 2.1.0 Use wp_list_bookmarks()
  * @see wp_list_bookmarks()
  *
  * @param string $order Sort link categories by 'name' or 'id'
@@ -1075,7 +1052,6 @@ function get_links_list($order = 'name') {
  *
  * @since 0.71
  * @deprecated 2.1.0
- * @deprecated {@internal Use function instead is unknown}}
  *
  * @param string $text the text of the link
  * @param int $width the width of the popup window
@@ -1089,8 +1065,7 @@ function links_popup_script($text = 'Links', $width=400, $height=400, $file='lin
 
 /**
  * @since 1.0.1
- * @deprecated 2.1.0
- * @deprecated Use sanitize_bookmark_field()
+ * @deprecated 2.1.0 Use sanitize_bookmark_field()
  * @see sanitize_bookmark_field()
  *
  * @param object $link
@@ -1105,8 +1080,7 @@ function get_linkrating($link) {
  * Gets the name of category by id.
  *
  * @since 0.71
- * @deprecated 2.1.0
- * @deprecated Use get_category()
+ * @deprecated 2.1.0 Use get_category()
  * @see get_category()
  *
  * @param int $id The category to get. If no category supplied uses 0
@@ -1135,8 +1109,7 @@ function get_linkcatname($id = 0) {
  * Print RSS comment feed link.
  *
  * @since 1.0.1
- * @deprecated 2.5.0
- * @deprecated Use post_comments_feed_link()
+ * @deprecated 2.5.0 Use post_comments_feed_link()
  * @see post_comments_feed_link()
  *
  * @param string $link_text
@@ -1150,8 +1123,7 @@ function comments_rss_link($link_text = 'Comments RSS') {
  * Print/Return link to category RSS2 feed.
  *
  * @since 1.2.0
- * @deprecated 2.5.0
- * @deprecated Use get_category_feed_link()
+ * @deprecated 2.5.0 Use get_category_feed_link()
  * @see get_category_feed_link()
  *
  * @param bool $echo
@@ -1172,8 +1144,7 @@ function get_category_rss_link($echo = false, $cat_ID = 1) {
  * Print/Return link to author RSS feed.
  *
  * @since 1.2.0
- * @deprecated 2.5.0
- * @deprecated Use get_author_feed_link()
+ * @deprecated 2.5.0 Use get_author_feed_link()
  * @see get_author_feed_link()
  *
  * @param bool $echo
@@ -1193,8 +1164,7 @@ function get_author_rss_link($echo = false, $author_id = 1) {
  * Return link to the post RSS feed.
  *
  * @since 1.5.0
- * @deprecated 2.2.0
- * @deprecated Use get_post_comments_feed_link()
+ * @deprecated 2.2.0 Use get_post_comments_feed_link()
  * @see get_post_comments_feed_link()
  *
  * @return string
@@ -1208,8 +1178,7 @@ function comments_rss() {
  * An alias of wp_create_user().
  *
  * @since 2.0.0
- * @deprecated 2.0.0
- * @deprecated Use wp_create_user()
+ * @deprecated 2.0.0 Use wp_create_user()
  * @see wp_create_user()
  *
  * @param string $username The user's username.
@@ -1236,8 +1205,7 @@ function gzip_compression() {
  * Retrieve an array of comment data about comment $comment_ID.
  *
  * @since 0.71
- * @deprecated 2.7.0
- * @deprecated Use get_comment()
+ * @deprecated 2.7.0 Use get_comment()
  * @see get_comment()
  *
  * @param int $comment_ID The ID of the comment
@@ -1254,8 +1222,7 @@ function get_commentdata( $comment_ID, $no_cache = 0, $include_unapproved = fals
  * Retrieve the category name by the category ID.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use get_cat_name()
+ * @deprecated 2.8.0 Use get_cat_name()
  * @see get_cat_name()
  *
  * @param int $cat_ID Category ID
@@ -1270,8 +1237,7 @@ function get_catname( $cat_ID ) {
  * Retrieve category children list separated before and after the term IDs.
  *
  * @since 1.2.0
- * @deprecated 2.8.0
- * @deprecated Use get_term_children()
+ * @deprecated 2.8.0 Use get_term_children()
  * @see get_term_children()
  *
  * @param int $id Category ID to retrieve children.
@@ -1308,8 +1274,9 @@ function get_category_children( $id, $before = '/', $after = '', $visited = arra
  * Retrieves all category IDs.
  *
  * @since 2.0.0
- * @deprecated 4.0.0 Use get_terms() instead.
+ * @deprecated 4.0.0 Use get_terms()
  * @see get_terms()
+ *
  * @link https://codex.wordpress.org/Function_Reference/get_all_category_ids
  *
  * @return object List of all of the category IDs.
@@ -1329,8 +1296,7 @@ function get_all_category_ids() {
  * Retrieve the description of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('description')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The author's description.
@@ -1344,8 +1310,7 @@ function get_the_author_description() {
  * Display the description of the author of the current post.
  *
  * @since 1.0.0
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('description')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
  */
 function the_author_description() {
@@ -1357,8 +1322,7 @@ function the_author_description() {
  * Retrieve the login name of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('login')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The author's login name (username).
@@ -1372,8 +1336,7 @@ function get_the_author_login() {
  * Display the login name of the author of the current post.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('login')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
  */
 function the_author_login() {
@@ -1385,8 +1348,7 @@ function the_author_login() {
  * Retrieve the first name of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('first_name')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The author's first name.
@@ -1400,8 +1362,7 @@ function get_the_author_firstname() {
  * Display the first name of the author of the current post.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('first_name')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
  */
 function the_author_firstname() {
@@ -1413,8 +1374,7 @@ function the_author_firstname() {
  * Retrieve the last name of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('last_name')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The author's last name.
@@ -1428,8 +1388,7 @@ function get_the_author_lastname() {
  * Display the last name of the author of the current post.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('last_name')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
  */
 function the_author_lastname() {
@@ -1441,8 +1400,7 @@ function the_author_lastname() {
  * Retrieve the nickname of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('nickname')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The author's nickname.
@@ -1456,8 +1414,7 @@ function get_the_author_nickname() {
  * Display the nickname of the author of the current post.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('nickname')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
  */
 function the_author_nickname() {
@@ -1469,8 +1426,7 @@ function the_author_nickname() {
  * Retrieve the email of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('email')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The author's username.
@@ -1484,8 +1440,7 @@ function get_the_author_email() {
  * Display the email of the author of the current post.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('email')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
  */
 function the_author_email() {
@@ -1497,8 +1452,7 @@ function the_author_email() {
  * Retrieve the ICQ number of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('icq')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The author's ICQ number.
@@ -1512,8 +1466,7 @@ function get_the_author_icq() {
  * Display the ICQ number of the author of the current post.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('icq')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
  */
 function the_author_icq() {
@@ -1525,8 +1478,7 @@ function the_author_icq() {
  * Retrieve the Yahoo! IM name of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('yim')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The author's Yahoo! IM name.
@@ -1540,8 +1492,7 @@ function get_the_author_yim() {
  * Display the Yahoo! IM name of the author of the current post.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('yim')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
  */
 function the_author_yim() {
@@ -1553,8 +1504,7 @@ function the_author_yim() {
  * Retrieve the MSN address of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('msn')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The author's MSN address.
@@ -1568,8 +1518,7 @@ function get_the_author_msn() {
  * Display the MSN address of the author of the current post.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('msn')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
  */
 function the_author_msn() {
@@ -1581,8 +1530,7 @@ function the_author_msn() {
  * Retrieve the AIM address of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('aim')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The author's AIM address.
@@ -1596,9 +1544,8 @@ function get_the_author_aim() {
  * Display the AIM address of the author of the current post.
  *
  * @since 0.71
+ * @deprecated 2.8.0 Use the_author_meta('aim')
  * @see the_author_meta()
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('aim')
  */
 function the_author_aim() {
        _deprecated_function( __FUNCTION__, '2.8', 'the_author_meta(\'aim\')' );
@@ -1609,8 +1556,7 @@ function the_author_aim() {
  * Retrieve the specified author's preferred display name.
  *
  * @since 1.0.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('display_name')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @param int $auth_id The ID of the author.
@@ -1625,8 +1571,7 @@ function get_author_name( $auth_id = false ) {
  * Retrieve the URL to the home page of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('url')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string The URL to the author's page.
@@ -1640,8 +1585,7 @@ function get_the_author_url() {
  * Display the URL to the home page of the author of the current post.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('url')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
  */
 function the_author_url() {
@@ -1653,8 +1597,7 @@ function the_author_url() {
  * Retrieve the ID of the author of the current post.
  *
  * @since 1.5.0
- * @deprecated 2.8.0
- * @deprecated Use get_the_author_meta('ID')
+ * @deprecated 2.8.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  *
  * @return string|int The author's ID.
@@ -1668,8 +1611,7 @@ function get_the_author_ID() {
  * Display the ID of the author of the current post.
  *
  * @since 0.71
- * @deprecated 2.8.0
- * @deprecated Use the_author_meta('ID')
+ * @deprecated 2.8.0 Use the_author_meta()
  * @see the_author_meta()
 */
 function the_author_ID() {
@@ -1696,8 +1638,7 @@ function the_author_ID() {
  *
  * @since 0.71
  *
- * @deprecated 2.9.0
- * @deprecated Use the_content_feed()
+ * @deprecated 2.9.0 Use the_content_feed()
  * @see the_content_feed()
  *
  * @param string $more_link_text Optional. Text to display when more content is available but not displayed.
@@ -1784,8 +1725,7 @@ function make_url_footnote( $content ) {
  * everything is returned.
  *
  * @since 2.2.0
- * @deprecated 2.9.0
- * @deprecated Use _x()
+ * @deprecated 2.9.0 Use _x()
  * @see _x()
  *
  * @param string $text Text to translate
@@ -1802,8 +1742,7 @@ function _c( $text, $domain = 'default' ) {
  * contains a context after its last vertical bar.
  *
  * @since 2.5.0
- * @deprecated 3.0.0
- * @deprecated Use _x()
+ * @deprecated 3.0.0 Use _x()
  * @see _x()
  *
  * @param string $text Text to translate
@@ -1820,12 +1759,8 @@ function translate_with_context( $text, $domain = 'default' ) {
  * Strips everything from the translation after the last bar.
  *
  * @since 2.7.0
- * @deprecated 3.0.0
- * @deprecated Use _nx()
+ * @deprecated 3.0.0 Use _nx()
  * @see _nx()
- * @see _n() For parameters.
- * @see _c() For parameters. _c() is deprecated.
- *
  */
 function _nc( $single, $plural, $number, $domain = 'default' ) {
        _deprecated_function( __FUNCTION__, '2.9', '_nx()' );
@@ -1836,8 +1771,7 @@ function _nc( $single, $plural, $number, $domain = 'default' ) {
  * Retrieve the plural or single form based on the amount.
  *
  * @since 1.2.0
- * @deprecated 2.8.0
- * @deprecated Use _n()
+ * @deprecated 2.8.0 Use _n()
  * @see _n()
  */
 function __ngettext() {
@@ -1850,8 +1784,7 @@ function __ngettext() {
  * Register plural strings in POT file, but don't translate them.
  *
  * @since 2.5.0
- * @deprecated 2.8.0
- * @deprecated Use _n_noop()
+ * @deprecated 2.8.0 Use _n_noop()
  * @see _n_noop()
  */
 function __ngettext_noop() {
@@ -1865,8 +1798,7 @@ function __ngettext_noop() {
  * Retrieve all autoload options, or all options if no autoloaded ones exist.
  *
  * @since 1.0.0
- * @deprecated 3.0.0
- * @deprecated Use wp_load_alloptions())
+ * @deprecated 3.0.0 Use wp_load_alloptions())
  * @see wp_load_alloptions()
  *
  * @return array List of all options.
@@ -1880,8 +1812,7 @@ function get_alloptions() {
  * Retrieve HTML content of attachment image with link.
  *
  * @since 2.0.0
- * @deprecated 2.5.0
- * @deprecated Use wp_get_attachment_link()
+ * @deprecated 2.5.0 Use wp_get_attachment_link()
  * @see wp_get_attachment_link()
  *
  * @param int $id Optional. Post ID.
@@ -1911,8 +1842,7 @@ function get_the_attachment_link($id = 0, $fullsize = false, $max_dims = false,
  * Retrieve icon URL and Path.
  *
  * @since 2.1.0
- * @deprecated 2.5.0
- * @deprecated Use wp_get_attachment_image_src()
+ * @deprecated 2.5.0 Use wp_get_attachment_image_src()
  * @see wp_get_attachment_image_src()
  *
  * @param int $id Optional. Post ID.
@@ -1953,8 +1883,7 @@ function get_attachment_icon_src( $id = 0, $fullsize = false ) {
  * Retrieve HTML content of icon attachment image element.
  *
  * @since 2.0.0
- * @deprecated 2.5.0
- * @deprecated Use wp_get_attachment_image()
+ * @deprecated 2.5.0 Use wp_get_attachment_image()
  * @see wp_get_attachment_image()
  *
  * @param int $id Optional. Post ID.
@@ -2010,8 +1939,7 @@ function get_attachment_icon( $id = 0, $fullsize = false, $max_dims = false ) {
  * Retrieve HTML content of image element.
  *
  * @since 2.0.0
- * @deprecated 2.5.0
- * @deprecated Use wp_get_attachment_image()
+ * @deprecated 2.5.0 Use wp_get_attachment_image()
  * @see wp_get_attachment_image()
  *
  * @param int $id Optional. Post ID.
@@ -2037,8 +1965,7 @@ function get_attachment_innerHTML($id = 0, $fullsize = false, $max_dims = false)
  * Retrieve bookmark data based on ID.
  *
  * @since 2.0.0
- * @deprecated 2.1.0
- * @deprecated Use get_bookmark()
+ * @deprecated 2.1.0 Use get_bookmark()
  * @see get_bookmark()
  *
  * @param int $bookmark_id ID of link
@@ -2054,8 +1981,7 @@ function get_link($bookmark_id, $output = OBJECT, $filter = 'raw') {
  * Performs esc_url() for database or redirect usage.
  *
  * @since 2.3.1
- * @deprecated 2.8.0
- * @deprecated Use esc_url_raw()
+ * @deprecated 2.8.0 Use esc_url_raw()
  * @see esc_url_raw()
  *
  * @param string $url The URL to be cleaned.
@@ -2075,8 +2001,7 @@ function sanitize_url( $url, $protocols = null ) {
  * is applied to the returned cleaned URL.
  *
  * @since 1.2.0
- * @deprecated 3.0.0
- * @deprecated Use esc_url()
+ * @deprecated 3.0.0 Use esc_url()
  * @see Alias for esc_url()
  *
  * @param string $url The URL to be cleaned.
@@ -2098,8 +2023,7 @@ function clean_url( $url, $protocols = null, $context = 'display' ) {
  * The filter 'js_escape' is also applied by esc_js()
  *
  * @since 2.0.4
- * @deprecated 2.8.0
- * @deprecated Use esc_js()
+ * @deprecated 2.8.0 Use esc_js()
  * @see esc_js()
  *
  * @param string $text The text to be escaped.
@@ -2113,8 +2037,7 @@ function js_escape( $text ) {
 /**
  * Escaping for HTML blocks.
  *
- * @deprecated 2.8.0
- * @deprecated Use esc_html()
+ * @deprecated 2.8.0 Use esc_html()
  * @see esc_html()
  */
 function wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) {
@@ -2131,8 +2054,7 @@ function wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false
  * Escaping for HTML attributes.
  *
  * @since 2.0.6
- * @deprecated 2.8.0
- * @deprecated Use esc_attr()
+ * @deprecated 2.8.0 Use esc_attr()
  * @see esc_attr()
  *
  * @param string $text
@@ -2154,12 +2076,11 @@ function attribute_escape( $text ) {
  * backwards compatibility is complete.
  *
  * @since 2.2.0
- * @deprecated 2.8.0
- * @deprecated Use wp_register_sidebar_widget()
+ * @deprecated 2.8.0 Use wp_register_sidebar_widget()
  * @see wp_register_sidebar_widget()
  *
  * @param string|int $name Widget ID.
- * @param callback $output_callback Run when widget is called.
+ * @param callable $output_callback Run when widget is called.
  * @param string $classname Classname widget option.
  * @param mixed $params ,... Widget parameters.
  */
@@ -2189,8 +2110,7 @@ function register_sidebar_widget($name, $output_callback, $classname = '') {
  * Alias of {@link wp_unregister_sidebar_widget()}.
  *
  * @since 2.2.0
- * @deprecated 2.8.0
- * @deprecated Use wp_unregister_sidebar_widget()
+ * @deprecated 2.8.0 Use wp_unregister_sidebar_widget()
  * @see wp_unregister_sidebar_widget()
  *
  * @param int|string $id Widget ID.
@@ -2207,16 +2127,15 @@ function unregister_sidebar_widget($id) {
  * first element and the third for the name or just uses the first element of
  * the array for the name.
  *
- * Passes to {@link wp_register_widget_control()} after the argument list has
+ * Passes to wp_register_widget_control() after the argument list has
  * been compiled.
  *
  * @since 2.2.0
- * @deprecated 2.8.0
- * @deprecated Use wp_register_widget_control()
+ * @deprecated 2.8.0 Use wp_register_widget_control()
  * @see wp_register_widget_control()
  *
  * @param int|string $name Sidebar ID.
- * @param callback $control_callback Widget control callback to display and process form.
+ * @param callable $control_callback Widget control callback to display and process form.
  * @param int $width Widget width.
  * @param int $height Widget height.
  */
@@ -2245,11 +2164,10 @@ function register_widget_control($name, $control_callback, $width = '', $height
 }
 
 /**
- * Alias of {@link wp_unregister_widget_control()}.
+ * Alias of wp_unregister_widget_control().
  *
  * @since 2.2.0
- * @deprecated 2.8.0
- * @deprecated Use wp_unregister_widget_control()
+ * @deprecated 2.8.0 Use wp_unregister_widget_control()
  * @see wp_unregister_widget_control()
  *
  * @param int|string $id Widget ID.
@@ -2263,8 +2181,7 @@ function unregister_widget_control($id) {
  * Remove user meta data.
  *
  * @since 2.0.0
- * @deprecated 3.0.0
- * @deprecated Use delete_user_meta()
+ * @deprecated 3.0.0 Use delete_user_meta()
  * @see delete_user_meta()
  *
  * @param int $user_id User ID.
@@ -2311,8 +2228,7 @@ function delete_usermeta( $user_id, $meta_key, $meta_value = '' ) {
  * than one metadata value, then it will be list of metadata values.
  *
  * @since 2.0.0
- * @deprecated 3.0.0
- * @deprecated Use get_user_meta()
+ * @deprecated 3.0.0 Use get_user_meta()
  * @see get_user_meta()
  *
  * @param int $user_id User ID
@@ -2364,8 +2280,7 @@ function get_usermeta( $user_id, $meta_key = '' ) {
  * Will remove the metadata, if the meta value is empty.
  *
  * @since 2.0.0
- * @deprecated 3.0.0
- * @deprecated Use update_user_meta()
+ * @deprecated 3.0.0 Use update_user_meta()
  * @see update_user_meta()
  *
  * @param int $user_id User ID
@@ -2419,7 +2334,8 @@ function update_usermeta( $user_id, $meta_key, $meta_value ) {
  * multi-blog feature.
  *
  * @since 2.2.0
- * @deprecated 3.1.0
+ * @deprecated 3.1.0 Use get_users()
+ * @see get_users()
  *
  * @global wpdb $wpdb WordPress database abstraction object.
  * @uses $blog_id The Blog id of the blog for those that use more than one blog
@@ -2442,8 +2358,8 @@ function get_users_of_blog( $id = '' ) {
  * Enable/disable automatic general feed link outputting.
  *
  * @since 2.8.0
- * @deprecated 3.0.0
- * @deprecated Use add_theme_support( 'automatic-feed-links' )
+ * @deprecated 3.0.0 Use add_theme_support()
+ * @see add_theme_support()
  *
  * @param bool $add Optional, default is true. Add or remove links. Defaults to true.
  */
@@ -2460,8 +2376,7 @@ function automatic_feed_links( $add = true ) {
  * Retrieve user data based on field.
  *
  * @since 1.5.0
- * @deprecated 3.0.0
- * @deprecated Use get_the_author_meta()
+ * @deprecated 3.0.0 Use get_the_author_meta()
  * @see get_the_author_meta()
  */
 function get_profile( $field, $user = false ) {
@@ -2477,8 +2392,7 @@ function get_profile( $field, $user = false ) {
  * Number of posts user has written.
  *
  * @since 0.71
- * @deprecated 3.0.0
- * @deprecated Use count_user_posts()
+ * @deprecated 3.0.0 Use count_user_posts()
  * @see count_user_posts()
  */
 function get_usernumposts( $userid ) {
@@ -2506,9 +2420,10 @@ function funky_javascript_callback($matches) {
  * Converts unicode characters to HTML numbered entities.
  *
  * @since 1.5.0
+ * @deprecated 3.0.0
+ *
  * @uses $is_macIE
  * @uses $is_winIE
- * @deprecated 3.0.0
  *
  * @param string $text Text to be made safe.
  * @return string Fixed text.
@@ -2530,8 +2445,7 @@ function funky_javascript_fix($text) {
  * Checks that the taxonomy name exists.
  *
  * @since 2.3.0
- * @deprecated 3.0.0
- * @deprecated Use taxonomy_exists()
+ * @deprecated 3.0.0 Use taxonomy_exists()
  * @see taxonomy_exists()
  *
  * @param string $taxonomy Name of taxonomy object
@@ -2546,8 +2460,7 @@ function is_taxonomy( $taxonomy ) {
  * Check if Term exists.
  *
  * @since 2.3.0
- * @deprecated 3.0.0
- * @deprecated Use term_exists()
+ * @deprecated 3.0.0 Use term_exists()
  * @see term_exists()
  *
  * @param int|string $term The term to check
@@ -2563,9 +2476,10 @@ function is_term( $term, $taxonomy = '', $parent = 0 ) {
 /**
  * Is the current admin page generated by a plugin?
  *
+ * Use global $plugin_page and/or get_plugin_page_hookname() hooks.
+ *
  * @since 1.5.0
  * @deprecated 3.1.0
- * @deprecated Use global $plugin_page and/or get_plugin_page_hookname() hooks.
  *
  * @global $plugin_page
  *
@@ -2618,8 +2532,7 @@ function wp_timezone_supported() {
  * Display editor: TinyMCE, HTML, or both.
  *
  * @since 2.1.0
- * @deprecated 3.3.0
- * @deprecated Use wp_editor()
+ * @deprecated 3.3.0 Use wp_editor()
  * @see wp_editor()
  *
  * @param string $content Textarea content.
@@ -2855,8 +2768,7 @@ function wp_admin_bar_dashboard_view_site_menu( $wp_admin_bar ) {
  * Checks if the current user belong to a given blog.
  *
  * @since MU
- * @deprecated 3.3.0
- * @deprecated Use is_user_member_of_blog()
+ * @deprecated 3.3.0 Use is_user_member_of_blog()
  * @see is_user_member_of_blog()
  *
  * @param int $blog_id Blog ID
@@ -2872,9 +2784,10 @@ function is_blog_user( $blog_id = 0 ) {
  * Open the file handle for debugging.
  *
  * @since 0.71
- * @deprecated Use error_log()
+ * @deprecated 3.4.0 Use error_log()
+ * @see error_log()
+ *
  * @link http://www.php.net/manual/en/function.error-log.php
- * @deprecated 3.4.0
  */
 function debug_fopen( $filename, $mode ) {
        _deprecated_function( __FUNCTION__, 'error_log()' );
@@ -2885,9 +2798,10 @@ function debug_fopen( $filename, $mode ) {
  * Write contents to the file used for debugging.
  *
  * @since 0.71
- * @deprecated Use error_log() instead.
+ * @deprecated 3.4.0 Use error_log()
+ * @see error_log()
+ *
  * @link http://www.php.net/manual/en/function.error-log.php
- * @deprecated 3.4.0
  */
 function debug_fwrite( $fp, $string ) {
        _deprecated_function( __FUNCTION__, 'error_log()' );
@@ -2899,9 +2813,10 @@ function debug_fwrite( $fp, $string ) {
  * Close the debugging file handle.
  *
  * @since 0.71
- * @deprecated Use error_log()
+ * @deprecated 3.4.0 Use error_log()
+ * @see error_log()
+ *
  * @link http://www.php.net/manual/en/function.error-log.php
- * @deprecated 3.4.0
  */
 function debug_fclose( $fp ) {
        _deprecated_function( __FUNCTION__, 'error_log()' );
@@ -2915,8 +2830,7 @@ function debug_fclose( $fp ) {
  * broken, if it is missing style.css; index.php is optional.
  *
  * @since 1.5.0
- * @deprecated 3.4.0
- * @deprecated Use wp_get_themes()
+ * @deprecated 3.4.0 Use wp_get_themes()
  * @see wp_get_themes()
  *
  * @return array Theme list with theme data.
@@ -2946,8 +2860,7 @@ function get_themes() {
  * Retrieve theme data.
  *
  * @since 1.5.0
- * @deprecated 3.4.0
- * @deprecated Use wp_get_theme()
+ * @deprecated 3.4.0 Use wp_get_theme()
  * @see wp_get_theme()
  *
  * @param string $theme Theme name.
@@ -2966,8 +2879,7 @@ function get_theme( $theme ) {
  * Retrieve current theme name.
  *
  * @since 1.5.0
- * @deprecated 3.4.0
- * @deprecated Use (string) wp_get_theme()
+ * @deprecated 3.4.0 Use wp_get_theme()
  * @see wp_get_theme()
  *
  * @return string
@@ -3013,13 +2925,12 @@ function clean_pre($matches) {
  * Add callbacks for image header display.
  *
  * @since 2.1.0
- * @deprecated 3.4.0
- * @deprecated Use add_theme_support('custom-header', $args)
+ * @deprecated 3.4.0 Use add_theme_support()
  * @see add_theme_support()
  *
- * @param callback $wp_head_callback Call on 'wp_head' action.
- * @param callback $admin_head_callback Call on custom header administration screen.
- * @param callback $admin_preview_callback Output a custom header image div on the custom header administration screen. Optional.
+ * @param callable $wp_head_callback Call on 'wp_head' action.
+ * @param callable $admin_head_callback Call on custom header administration screen.
+ * @param callable $admin_preview_callback Output a custom header image div on the custom header administration screen. Optional.
  */
 function add_custom_image_header( $wp_head_callback, $admin_head_callback, $admin_preview_callback = '' ) {
        _deprecated_function( __FUNCTION__, '3.4', 'add_theme_support( \'custom-header\', $args )' );
@@ -3036,8 +2947,7 @@ function add_custom_image_header( $wp_head_callback, $admin_head_callback, $admi
  * Remove image header support.
  *
  * @since 3.1.0
- * @deprecated 3.4.0
- * @deprecated Use remove_theme_support('custom-header')
+ * @deprecated 3.4.0 Use remove_theme_support()
  * @see remove_theme_support()
  *
  * @return null|bool Whether support was removed.
@@ -3051,13 +2961,12 @@ function remove_custom_image_header() {
  * Add callbacks for background image display.
  *
  * @since 3.0.0
- * @deprecated 3.4.0
- * @deprecated Use add_theme_support('custom-background, $args)
+ * @deprecated 3.4.0 Use add_theme_support()
  * @see add_theme_support()
  *
- * @param callback $wp_head_callback Call on 'wp_head' action.
- * @param callback $admin_head_callback Call on custom background administration screen.
- * @param callback $admin_preview_callback Output a custom background image div on the custom background administration screen. Optional.
+ * @param callable $wp_head_callback Call on 'wp_head' action.
+ * @param callable $admin_head_callback Call on custom background administration screen.
+ * @param callable $admin_preview_callback Output a custom background image div on the custom background administration screen. Optional.
  */
 function add_custom_background( $wp_head_callback = '', $admin_head_callback = '', $admin_preview_callback = '' ) {
        _deprecated_function( __FUNCTION__, '3.4', 'add_theme_support( \'custom-background\', $args )' );
@@ -3075,6 +2984,7 @@ function add_custom_background( $wp_head_callback = '', $admin_head_callback = '
  * Remove custom background support.
  *
  * @since 3.1.0
+ * @deprecated 3.4.0 Use add_custom_background()
  * @see add_custom_background()
  *
  * @return null|bool Whether support was removed.
@@ -3088,8 +2998,7 @@ function remove_custom_background() {
  * Retrieve theme data from parsed theme file.
  *
  * @since 1.5.0
- * @deprecated 3.4.0
- * @deprecated Use wp_get_theme()
+ * @deprecated 3.4.0 Use wp_get_theme()
  * @see wp_get_theme()
  *
  * @param string $theme_file Theme file path.
@@ -3127,7 +3036,8 @@ function get_theme_data( $theme_file ) {
  * @see update_post_cache() Posts and pages are the same, alias is intentional
  *
  * @since 1.5.1
- * @deprecated 3.4.0
+ * @deprecated 3.4.0 Use update_post_cache()
+ * @see update_post_cache()
  *
  * @param array $pages list of page objects
  */
@@ -3144,7 +3054,8 @@ function update_page_cache( &$pages ) {
  * associated with 'all_page_ids' and 'get_pages'.
  *
  * @since 2.0.0
- * @deprecated 3.4.0
+ * @deprecated 3.4.0 Use clean_post_cache
+ * @see clean_post_cache()
  *
  * @param int $id Page ID to clean
  */
@@ -3160,8 +3071,7 @@ function clean_page_cache( $id ) {
  * Deprecated in 3.4.1 and 3.5.0. Backported to 3.3.3.
  *
  * @since 2.0.4
- * @deprecated 3.4.1
- * @deprecated Use wp_nonce_ays()
+ * @deprecated 3.4.1 Use wp_nonce_ays()
  * @see wp_nonce_ays()
  *
  * @param string $action Nonce action.
@@ -3176,8 +3086,7 @@ function wp_explain_nonce( $action ) {
  * Display "sticky" CSS class, if a post is sticky.
  *
  * @since 2.7.0
- * @deprecated 3.5.0
- * @deprecated Use post_class()
+ * @deprecated 3.5.0 Use post_class()
  * @see post_class()
  *
  * @param int $post_id An optional post ID.
@@ -3195,7 +3104,7 @@ function sticky_class( $post_id = null ) {
  * property with get_post_ancestors().
  *
  * @since 2.3.4
- * @deprecated 3.5.0
+ * @deprecated 3.5.0 Use get_post_ancestors()
  * @see get_post_ancestors()
  */
 function _get_post_ancestors( &$post ) {
@@ -3206,7 +3115,7 @@ function _get_post_ancestors( &$post ) {
  * Load an image from a string, if PHP supports it.
  *
  * @since 2.1.0
- * @deprecated 3.5.0
+ * @deprecated 3.5.0 Use wp_get_image_editor()
  * @see wp_get_image_editor()
  *
  * @param string $file Filename of the image to load.
@@ -3246,7 +3155,7 @@ function wp_load_image( $file ) {
  * downgraded, not actual defects), but of your PHP version.
  *
  * @since 2.5.0
- * @deprecated 3.5.0
+ * @deprecated 3.5.0 Use wp_get_image_editor()
  * @see wp_get_image_editor()
  *
  * @param string $file Image file path.
@@ -3286,7 +3195,7 @@ function image_resize( $file, $max_w, $max_h, $crop = false, $suffix = null, $de
  * property or key.
  *
  * @since 1.0.0
- * @deprecated 3.5.0
+ * @deprecated 3.5.0 Use get_post()
  * @see get_post()
  *
  * @param int $postid Post ID.
@@ -3302,8 +3211,7 @@ function wp_get_single_post( $postid = 0, $mode = OBJECT ) {
  * Check that the user login name and password is correct.
  *
  * @since 0.71
- * @deprecated 3.5.0
- * @deprecated Use wp_authenticate()
+ * @deprecated 3.5.0 Use wp_authenticate()
  * @see wp_authenticate()
  *
  * @param string $user_login User name.
@@ -3331,7 +3239,7 @@ function _save_post_hook() {}
  * Check if the installed version of GD supports particular image type
  *
  * @since 2.9.0
- * @deprecated 3.5.0
+ * @deprecated 3.5.0 Use wp_image_editor_supports()
  * @see wp_image_editor_supports()
  *
  * @param string $mime_type
@@ -3366,8 +3274,8 @@ function gd_edit_image_support($mime_type) {
  * Converts an integer byte value to a shorthand byte value.
  *
  * @since 2.3.0
- * @deprecated 3.6.0
- * @deprecated Use size_format()
+ * @deprecated 3.6.0 Use size_format()
+ * @see size_format()
  *
  * @param int $bytes An integer byte value.
  * @return string A shorthand byte value.
@@ -3376,9 +3284,9 @@ function wp_convert_bytes_to_hr( $bytes ) {
        _deprecated_function( __FUNCTION__, '3.6', 'size_format()' );
 
        $units = array( 0 => 'B', 1 => 'kB', 2 => 'MB', 3 => 'GB', 4 => 'TB' );
-       $log   = log( $bytes, 1024 );
+       $log   = log( $bytes, KB_IN_BYTES );
        $power = (int) $log;
-       $size  = pow( 1024, $log - $power );
+       $size  = pow( KB_IN_BYTES, $log - $power );
 
        if ( ! is_nan( $size ) && array_key_exists( $power, $units ) ) {
                $unit = $units[ $power ];
@@ -3393,8 +3301,8 @@ function wp_convert_bytes_to_hr( $bytes ) {
 /**
  * Formerly used internally to tidy up the search terms.
  *
- * @access private
  * @since 2.9.0
+ * @access private
  * @deprecated 3.7.0
  */
 function _search_terms_tidy( $t ) {
@@ -3427,8 +3335,8 @@ function rich_edit_exists() {
  * Old callback for tag link tooltips.
  *
  * @since 2.7.0
- * @deprecated 3.9.0
  * @access private
+ * @deprecated 3.9.0
  */
 function default_topic_count_text( $count ) {
        return $count;
@@ -3454,8 +3362,8 @@ function format_to_post( $content ) {
  * Formerly used to escape strings before searching the DB. It was poorly documented and never worked as described.
  *
  * @since 2.5.0
- * @deprecated 4.0.0
- * @deprecated Use wpdb::esc_like()
+ * @deprecated 4.0.0 Use wpdb::esc_like()
+ * @see wpdb::esc_like()
  *
  * @param string $text The text to be escaped.
  * @return string text, safe for inclusion in LIKE query.
@@ -3614,7 +3522,8 @@ function wp_richedit_pre($text) {
  * 'htmledit_pre' filter is applied.
  *
  * @since 2.5.0
- * @deprecated 4.3.0
+ * @deprecated 4.3.0 Use format_for_editor()
+ * @see format_for_editor()
  *
  * @param string $output The text to be formatted.
  * @return string Formatted text after filter applied.
@@ -3636,3 +3545,93 @@ function wp_htmledit_pre($output) {
        return apply_filters( 'htmledit_pre', $output );
 }
 
+/**
+ * Retrieve permalink from post ID.
+ *
+ * @since 1.0.0
+ * @deprecated 4.4.0 Use get_permalink()
+ * @see get_permalink()
+ *
+ * @param int|WP_Post $post_id Optional. Post ID or WP_Post object. Default is global $post.
+ * @return string|false
+ */
+function post_permalink( $post_id = 0 ) {
+       _deprecated_function( __FUNCTION__, '4.4', 'get_permalink()' );
+
+       return get_permalink( $post_id );
+}
+
+/**
+ * Perform a HTTP HEAD or GET request.
+ *
+ * If $file_path is a writable filename, this will do a GET request and write
+ * the file to that path.
+ *
+ * @since 2.5.0
+ * @deprecated 4.4.0 Use WP_Http
+ * @see WP_Http
+ *
+ * @param string      $url       URL to fetch.
+ * @param string|bool $file_path Optional. File path to write request to. Default false.
+ * @param int         $red       Optional. The number of Redirects followed, Upon 5 being hit,
+ *                               returns false. Default 1.
+ * @return bool|string False on failure and string of headers if HEAD request.
+ */
+function wp_get_http( $url, $file_path = false, $red = 1 ) {
+       _deprecated_function( __FUNCTION__, '4.4', 'WP_Http' );
+
+       @set_time_limit( 60 );
+
+       if ( $red > 5 )
+               return false;
+
+       $options = array();
+       $options['redirection'] = 5;
+
+       if ( false == $file_path )
+               $options['method'] = 'HEAD';
+       else
+               $options['method'] = 'GET';
+
+       $response = wp_safe_remote_request( $url, $options );
+
+       if ( is_wp_error( $response ) )
+               return false;
+
+       $headers = wp_remote_retrieve_headers( $response );
+       $headers['response'] = wp_remote_retrieve_response_code( $response );
+
+       // WP_HTTP no longer follows redirects for HEAD requests.
+       if ( 'HEAD' == $options['method'] && in_array($headers['response'], array(301, 302)) && isset( $headers['location'] ) ) {
+               return wp_get_http( $headers['location'], $file_path, ++$red );
+       }
+
+       if ( false == $file_path )
+               return $headers;
+
+       // GET request - write it to the supplied filename
+       $out_fp = fopen($file_path, 'w');
+       if ( !$out_fp )
+               return $headers;
+
+       fwrite( $out_fp,  wp_remote_retrieve_body( $response ) );
+       fclose($out_fp);
+       clearstatcache();
+
+       return $headers;
+}
+
+/**
+ * Whether SSL login should be forced.
+ *
+ * @since 2.6.0
+ * @deprecated 4.4.0 Use force_ssl_admin()
+ * @see force_ssl_admin()
+ *
+ * @param string|bool $force Optional Whether to force SSL login. Default null.
+ * @return bool True if forced, false if not forced.
+ */
+function force_ssl_login( $force = null ) {
+       _deprecated_function( __FUNCTION__, '4.4', 'force_ssl_admin()' );
+       return force_ssl_admin( $force );
+}
diff --git a/wp-includes/embed-template.php b/wp-includes/embed-template.php
new file mode 100644 (file)
index 0000000..df2518f
--- /dev/null
@@ -0,0 +1,202 @@
+<?php
+/**
+ * Contains the post embed template.
+ *
+ * When a post is embedded in an iframe, this file is used to
+ * create the output.
+ *
+ * @package WordPress
+ * @subpackage oEmbed
+ * @since 4.4.0
+ */
+
+if ( ! headers_sent() ) {
+       header( 'X-WP-embed: true' );
+}
+
+?>
+<!DOCTYPE html>
+<html <?php language_attributes(); ?> class="no-js">
+<head>
+       <title><?php echo wp_get_document_title(); ?></title>
+       <meta http-equiv="X-UA-Compatible" content="IE=edge">
+       <?php
+       /**
+        * Print scripts or data in the embed template <head> tag.
+        *
+        * @since 4.4.0
+        */
+       do_action( 'embed_head' );
+       ?>
+</head>
+<body <?php body_class(); ?>>
+<?php
+if ( have_posts() ) :
+       while ( have_posts() ) : the_post();
+               // Add post thumbnail to response if available.
+               $thumbnail_id = false;
+
+               if ( has_post_thumbnail() ) {
+                       $thumbnail_id = get_post_thumbnail_id();
+               }
+
+               if ( 'attachment' === get_post_type() && wp_attachment_is_image() ) {
+                       $thumbnail_id = get_the_ID();
+               }
+
+               if ( $thumbnail_id ) {
+                       $aspect_ratio = 1;
+                       $measurements = array( 1, 1 );
+                       $image_size   = 'full'; // Fallback.
+
+                       $meta = wp_get_attachment_metadata( $thumbnail_id );
+                       if ( is_array( $meta ) ) {
+                               foreach ( $meta['sizes'] as $size => $data ) {
+                                       if ( $data['width'] / $data['height'] > $aspect_ratio ) {
+                                               $aspect_ratio = $data['width'] / $data['height'];
+                                               $measurements = array( $data['width'], $data['height'] );
+                                               $image_size   = $size;
+                                       }
+                               }
+                       }
+
+                       /**
+                        * Filter the thumbnail image size for use in the embed template.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param string $image_size Thumbnail image size.
+                        */
+                       $image_size = apply_filters( 'embed_thumbnail_image_size', $image_size );
+
+                       $shape = $measurements[0] / $measurements[1] >= 1.75 ? 'rectangular' : 'square';
+
+                       /**
+                        * Filter the thumbnail shape for use in the embed template.
+                        *
+                        * Rectangular images are shown above the title
+                        * while square images are shown next to the content.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param string $shape Thumbnail image shape. Either 'rectangular' or 'square'.
+                        */
+                       $shape = apply_filters( 'embed_thumbnail_image_shape', $shape );
+               }
+               ?>
+               <div <?php post_class( 'wp-embed' ); ?>>
+                       <?php if ( $thumbnail_id && 'rectangular' === $shape ) : ?>
+                               <div class="wp-embed-featured-image rectangular">
+                                       <a href="<?php the_permalink(); ?>" target="_top">
+                                               <?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
+                                       </a>
+                               </div>
+                       <?php endif; ?>
+
+                       <p class="wp-embed-heading">
+                               <a href="<?php the_permalink(); ?>" target="_top">
+                                       <?php the_title(); ?>
+                               </a>
+                       </p>
+
+                       <?php if ( $thumbnail_id && 'square' === $shape ) : ?>
+                               <div class="wp-embed-featured-image square">
+                                       <a href="<?php the_permalink(); ?>" target="_top">
+                                               <?php echo wp_get_attachment_image( $thumbnail_id, $image_size ); ?>
+                                       </a>
+                               </div>
+                       <?php endif; ?>
+
+                       <div class="wp-embed-excerpt"><?php the_excerpt_embed(); ?></div>
+
+                       <?php
+                       /**
+                        * Print additional content after the embed excerpt.
+                        *
+                        * @since 4.4.0
+                        */
+                       do_action( 'embed_content' );
+                       ?>
+
+                       <div class="wp-embed-footer">
+                               <div class="wp-embed-site-title">
+                                       <?php
+                                       $site_title = sprintf(
+                                               '<a href="%s" target="_top"><img src="%s" srcset="%s 2x" width="32" height="32" alt="" class="wp-embed-site-icon"/><span>%s</span></a>',
+                                               esc_url( home_url() ),
+                                               esc_url( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ),
+                                               esc_url( get_site_icon_url( 64, admin_url( 'images/w-logo-blue.png' ) ) ),
+                                               esc_html( get_bloginfo( 'name' ) )
+                                       );
+
+                                       /**
+                                        * Filter the site title HTML in the embed footer.
+                                        *
+                                        * @since 4.4.0
+                                        *
+                                        * @param string $site_title The site title HTML.
+                                        */
+                                       echo apply_filters( 'embed_site_title_html', $site_title );
+                                       ?>
+                               </div>
+
+                               <div class="wp-embed-meta">
+                                       <?php
+                                       /**
+                                        * Print additional meta content in the embed template.
+                                        *
+                                        * @since 4.4.0
+                                        */
+                                       do_action( 'embed_content_meta');
+                                       ?>
+                               </div>
+                       </div>
+               </div>
+               <?php
+       endwhile;
+else :
+       ?>
+       <div class="wp-embed">
+               <p class="wp-embed-heading"><?php _e( 'Oops! That embed can&#8217;t be found.' ); ?></p>
+
+               <div class="wp-embed-excerpt">
+                       <p>
+                               <?php
+                               printf(
+                                       /* translators: %s: a link to the embedded site */
+                                       __( 'It looks like nothing was found at this location. Maybe try visiting %s directly?' ),
+                                       '<strong><a href="' . esc_url( home_url() ) . '">' . esc_html( get_bloginfo( 'name' ) ) . '</a></strong>'
+                               );
+                               ?>
+                       </p>
+               </div>
+
+               <div class="wp-embed-footer">
+                       <div class="wp-embed-site-title">
+                               <?php
+                               $site_title = sprintf(
+                                       '<a href="%s" target="_top"><img src="%s" srcset="%s 2x" width="32" height="32" alt="" class="wp-embed-site-icon"/><span>%s</span></a>',
+                                       esc_url( home_url() ),
+                                       esc_url( get_site_icon_url( 32, admin_url( 'images/w-logo-blue.png' ) ) ),
+                                       esc_url( get_site_icon_url( 64, admin_url( 'images/w-logo-blue.png' ) ) ),
+                                       esc_html( get_bloginfo( 'name' ) )
+                               );
+
+                               /** This filter is documented in wp-includes/embed-template.php */
+                               echo apply_filters( 'embed_site_title_html', $site_title );
+                               ?>
+                       </div>
+               </div>
+       </div>
+       <?php
+endif;
+
+/**
+ * Print scripts or data before the closing body tag in the embed template.
+ *
+ * @since 4.4.0
+ */
+do_action( 'embed_footer' );
+?>
+</body>
+</html>
diff --git a/wp-includes/embed.php b/wp-includes/embed.php
new file mode 100644 (file)
index 0000000..5e4cdc1
--- /dev/null
@@ -0,0 +1,1047 @@
+<?php
+/**
+ * oEmbed API: Top-level oEmbed functionality
+ *
+ * @package WordPress
+ * @subpackage oEmbed
+ * @since 4.4.0
+ */
+
+/**
+ * Registers an embed handler.
+ *
+ * Should probably only be used for sites that do not support oEmbed.
+ *
+ * @since 2.9.0
+ *
+ * @global WP_Embed $wp_embed
+ *
+ * @param string   $id       An internal ID/name for the handler. Needs to be unique.
+ * @param string   $regex    The regex that will be used to see if this handler should be used for a URL.
+ * @param callable $callback The callback function that will be called if the regex is matched.
+ * @param int      $priority Optional. Used to specify the order in which the registered handlers will
+ *                           be tested. Default 10.
+ */
+function wp_embed_register_handler( $id, $regex, $callback, $priority = 10 ) {
+       global $wp_embed;
+       $wp_embed->register_handler( $id, $regex, $callback, $priority );
+}
+
+/**
+ * Unregisters a previously-registered embed handler.
+ *
+ * @since 2.9.0
+ *
+ * @global WP_Embed $wp_embed
+ *
+ * @param string $id       The handler ID that should be removed.
+ * @param int    $priority Optional. The priority of the handler to be removed. Default 10.
+ */
+function wp_embed_unregister_handler( $id, $priority = 10 ) {
+       global $wp_embed;
+       $wp_embed->unregister_handler( $id, $priority );
+}
+
+/**
+ * Creates default array of embed parameters.
+ *
+ * The width defaults to the content width as specified by the theme. If the
+ * theme does not specify a content width, then 500px is used.
+ *
+ * The default height is 1.5 times the width, or 1000px, whichever is smaller.
+ *
+ * The 'embed_defaults' filter can be used to adjust either of these values.
+ *
+ * @since 2.9.0
+ *
+ * @global int $content_width
+ *
+ * @param string $url Optional. The URL that should be embedded. Default empty.
+ *
+ * @return array Default embed parameters.
+ */
+function wp_embed_defaults( $url = '' ) {
+       if ( ! empty( $GLOBALS['content_width'] ) )
+               $width = (int) $GLOBALS['content_width'];
+
+       if ( empty( $width ) )
+               $width = 500;
+
+       $height = min( ceil( $width * 1.5 ), 1000 );
+
+       /**
+        * Filter the default array of embed dimensions.
+        *
+        * @since 2.9.0
+        *
+        * @param array  $size An array of embed width and height values
+        *                     in pixels (in that order).
+        * @param string $url  The URL that should be embedded.
+        */
+       return apply_filters( 'embed_defaults', compact( 'width', 'height' ), $url );
+}
+
+/**
+ * Attempts to fetch the embed HTML for a provided URL using oEmbed.
+ *
+ * @since 2.9.0
+ *
+ * @see WP_oEmbed
+ *
+ * @param string $url  The URL that should be embedded.
+ * @param array  $args Optional. Additional arguments and parameters for retrieving embed HTML.
+ *                     Default empty.
+ * @return false|string False on failure or the embed HTML on success.
+ */
+function wp_oembed_get( $url, $args = '' ) {
+       require_once( ABSPATH . WPINC . '/class-oembed.php' );
+       $oembed = _wp_oembed_get_object();
+       return $oembed->get_html( $url, $args );
+}
+
+/**
+ * Adds a URL format and oEmbed provider URL pair.
+ *
+ * @since 2.9.0
+ *
+ * @see WP_oEmbed
+ *
+ * @param string  $format   The format of URL that this provider can handle. You can use asterisks
+ *                          as wildcards.
+ * @param string  $provider The URL to the oEmbed provider.
+ * @param boolean $regex    Optional. Whether the `$format` parameter is in a RegEx format. Default false.
+ */
+function wp_oembed_add_provider( $format, $provider, $regex = false ) {
+       require_once( ABSPATH . WPINC . '/class-oembed.php' );
+
+       if ( did_action( 'plugins_loaded' ) ) {
+               $oembed = _wp_oembed_get_object();
+               $oembed->providers[$format] = array( $provider, $regex );
+       } else {
+               WP_oEmbed::_add_provider_early( $format, $provider, $regex );
+       }
+}
+
+/**
+ * Removes an oEmbed provider.
+ *
+ * @since 3.5.0
+ *
+ * @see WP_oEmbed
+ *
+ * @param string $format The URL format for the oEmbed provider to remove.
+ * @return bool Was the provider removed successfully?
+ */
+function wp_oembed_remove_provider( $format ) {
+       require_once( ABSPATH . WPINC . '/class-oembed.php' );
+
+       if ( did_action( 'plugins_loaded' ) ) {
+               $oembed = _wp_oembed_get_object();
+
+               if ( isset( $oembed->providers[ $format ] ) ) {
+                       unset( $oembed->providers[ $format ] );
+                       return true;
+               }
+       } else {
+               WP_oEmbed::_remove_provider_early( $format );
+       }
+
+       return false;
+}
+
+/**
+ * Determines if default embed handlers should be loaded.
+ *
+ * Checks to make sure that the embeds library hasn't already been loaded. If
+ * it hasn't, then it will load the embeds library.
+ *
+ * @since 2.9.0
+ *
+ * @see wp_embed_register_handler()
+ */
+function wp_maybe_load_embeds() {
+       /**
+        * Filter whether to load the default embed handlers.
+        *
+        * Returning a falsey value will prevent loading the default embed handlers.
+        *
+        * @since 2.9.0
+        *
+        * @param bool $maybe_load_embeds Whether to load the embeds library. Default true.
+        */
+       if ( ! apply_filters( 'load_default_embeds', true ) ) {
+               return;
+       }
+
+       wp_embed_register_handler( 'youtube_embed_url', '#https?://(www.)?youtube\.com/(?:v|embed)/([^/]+)#i', 'wp_embed_handler_youtube' );
+
+       wp_embed_register_handler( 'googlevideo', '#http://video\.google\.([A-Za-z.]{2,5})/videoplay\?docid=([\d-]+)(.*?)#i', 'wp_embed_handler_googlevideo' );
+
+       /**
+        * Filter the audio embed handler callback.
+        *
+        * @since 3.6.0
+        *
+        * @param callable $handler Audio embed handler callback function.
+        */
+       wp_embed_register_handler( 'audio', '#^https?://.+?\.(' . join( '|', wp_get_audio_extensions() ) . ')$#i', apply_filters( 'wp_audio_embed_handler', 'wp_embed_handler_audio' ), 9999 );
+
+       /**
+        * Filter the video embed handler callback.
+        *
+        * @since 3.6.0
+        *
+        * @param callable $handler Video embed handler callback function.
+        */
+       wp_embed_register_handler( 'video', '#^https?://.+?\.(' . join( '|', wp_get_video_extensions() ) . ')$#i', apply_filters( 'wp_video_embed_handler', 'wp_embed_handler_video' ), 9999 );
+}
+
+/**
+ * The Google Video embed handler callback.
+ *
+ * Google Video does not support oEmbed.
+ *
+ * @see WP_Embed::register_handler()
+ * @see WP_Embed::shortcode()
+ *
+ * @param array  $matches The RegEx matches from the provided regex when calling wp_embed_register_handler().
+ * @param array  $attr    Embed attributes.
+ * @param string $url     The original URL that was matched by the regex.
+ * @param array  $rawattr The original unmodified attributes.
+ * @return string The embed HTML.
+ */
+function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) {
+       // If the user supplied a fixed width AND height, use it
+       if ( !empty($rawattr['width']) && !empty($rawattr['height']) ) {
+               $width  = (int) $rawattr['width'];
+               $height = (int) $rawattr['height'];
+       } else {
+               list( $width, $height ) = wp_expand_dimensions( 425, 344, $attr['width'], $attr['height'] );
+       }
+
+       /**
+        * Filter the Google Video embed output.
+        *
+        * @since 2.9.0
+        *
+        * @param string $html    Google Video HTML embed markup.
+        * @param array  $matches The RegEx matches from the provided regex.
+        * @param array  $attr    An array of embed attributes.
+        * @param string $url     The original URL that was matched by the regex.
+        * @param array  $rawattr The original unmodified attributes.
+        */
+       return apply_filters( 'embed_googlevideo', '<embed type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docid=' . esc_attr($matches[2]) . '&amp;hl=en&amp;fs=true" style="width:' . esc_attr($width) . 'px;height:' . esc_attr($height) . 'px" allowFullScreen="true" allowScriptAccess="always" />', $matches, $attr, $url, $rawattr );
+}
+
+/**
+ * YouTube iframe embed handler callback.
+ *
+ * Catches YouTube iframe embed URLs that are not parsable by oEmbed but can be translated into a URL that is.
+ *
+ * @since 4.0.0
+ *
+ * @global WP_Embed $wp_embed
+ *
+ * @param array  $matches The RegEx matches from the provided regex when calling
+ *                        wp_embed_register_handler().
+ * @param array  $attr    Embed attributes.
+ * @param string $url     The original URL that was matched by the regex.
+ * @param array  $rawattr The original unmodified attributes.
+ * @return string The embed HTML.
+ */
+function wp_embed_handler_youtube( $matches, $attr, $url, $rawattr ) {
+       global $wp_embed;
+       $embed = $wp_embed->autoembed( "https://youtube.com/watch?v={$matches[2]}" );
+
+       /**
+        * Filter the YoutTube embed output.
+        *
+        * @since 4.0.0
+        *
+        * @see wp_embed_handler_youtube()
+        *
+        * @param string $embed   YouTube embed output.
+        * @param array  $attr    An array of embed attributes.
+        * @param string $url     The original URL that was matched by the regex.
+        * @param array  $rawattr The original unmodified attributes.
+        */
+       return apply_filters( 'wp_embed_handler_youtube', $embed, $attr, $url, $rawattr );
+}
+
+/**
+ * Audio embed handler callback.
+ *
+ * @since 3.6.0
+ *
+ * @param array  $matches The RegEx matches from the provided regex when calling wp_embed_register_handler().
+ * @param array  $attr Embed attributes.
+ * @param string $url The original URL that was matched by the regex.
+ * @param array  $rawattr The original unmodified attributes.
+ * @return string The embed HTML.
+ */
+function wp_embed_handler_audio( $matches, $attr, $url, $rawattr ) {
+       $audio = sprintf( '[audio src="%s" /]', esc_url( $url ) );
+
+       /**
+        * Filter the audio embed output.
+        *
+        * @since 3.6.0
+        *
+        * @param string $audio   Audio embed output.
+        * @param array  $attr    An array of embed attributes.
+        * @param string $url     The original URL that was matched by the regex.
+        * @param array  $rawattr The original unmodified attributes.
+        */
+       return apply_filters( 'wp_embed_handler_audio', $audio, $attr, $url, $rawattr );
+}
+
+/**
+ * Video embed handler callback.
+ *
+ * @since 3.6.0
+ *
+ * @param array  $matches The RegEx matches from the provided regex when calling wp_embed_register_handler().
+ * @param array  $attr    Embed attributes.
+ * @param string $url     The original URL that was matched by the regex.
+ * @param array  $rawattr The original unmodified attributes.
+ * @return string The embed HTML.
+ */
+function wp_embed_handler_video( $matches, $attr, $url, $rawattr ) {
+       $dimensions = '';
+       if ( ! empty( $rawattr['width'] ) && ! empty( $rawattr['height'] ) ) {
+               $dimensions .= sprintf( 'width="%d" ', (int) $rawattr['width'] );
+               $dimensions .= sprintf( 'height="%d" ', (int) $rawattr['height'] );
+       }
+       $video = sprintf( '[video %s src="%s" /]', $dimensions, esc_url( $url ) );
+
+       /**
+        * Filter the video embed output.
+        *
+        * @since 3.6.0
+        *
+        * @param string $video   Video embed output.
+        * @param array  $attr    An array of embed attributes.
+        * @param string $url     The original URL that was matched by the regex.
+        * @param array  $rawattr The original unmodified attributes.
+        */
+       return apply_filters( 'wp_embed_handler_video', $video, $attr, $url, $rawattr );
+}
+
+/**
+ * Registers the oEmbed REST API route.
+ *
+ * @since 4.4.0
+ */
+function wp_oembed_register_route() {
+       $controller = new WP_oEmbed_Controller();
+       $controller->register_routes();
+}
+
+/**
+ * Adds oEmbed discovery links in the website <head>.
+ *
+ * @since 4.4.0
+ */
+function wp_oembed_add_discovery_links() {
+       $output = '';
+
+       if ( is_singular() ) {
+               $output .= '<link rel="alternate" type="application/json+oembed" href="' . esc_url( get_oembed_endpoint_url( get_permalink() ) ) . '" />' . "\n";
+
+               if ( class_exists( 'SimpleXMLElement' ) ) {
+                       $output .= '<link rel="alternate" type="text/xml+oembed" href="' . esc_url( get_oembed_endpoint_url( get_permalink(), 'xml' ) ) . '" />' . "\n";
+               }
+       }
+
+       /**
+        * Filter the oEmbed discovery links HTML.
+        *
+        * @since 4.4.0
+        *
+        * @param string $output HTML of the discovery links.
+        */
+       echo apply_filters( 'oembed_discovery_links', $output );
+}
+
+/**
+ * Adds the necessary JavaScript to communicate with the embedded iframes.
+ *
+ * @since 4.4.0
+ */
+function wp_oembed_add_host_js() {
+       wp_enqueue_script( 'wp-embed' );
+}
+
+/**
+ * Retrieves the URL to embed a specific post in an iframe.
+ *
+ * @since 4.4.0
+ *
+ * @param int|WP_Post $post Optional. Post ID or object. Defaults to the current post.
+ * @return string|false The post embed URL on success, false if the post doesn't exist.
+ */
+function get_post_embed_url( $post = null ) {
+       $post = get_post( $post );
+
+       if ( ! $post ) {
+               return false;
+       }
+
+       if ( get_option( 'permalink_structure' ) ) {
+               $embed_url = trailingslashit( get_permalink( $post ) ) . user_trailingslashit( 'embed' );
+       } else {
+               $embed_url = add_query_arg( array( 'embed' => 'true' ), get_permalink( $post ) );
+       }
+
+       /**
+        * Filter the URL to embed a specific post.
+        *
+        * @since 4.4.0
+        *
+        * @param string  $embed_url The post embed URL.
+        * @param WP_Post $post      The corresponding post object.
+        */
+       return esc_url_raw( apply_filters( 'post_embed_url', $embed_url, $post ) );
+}
+
+/**
+ * Retrieves the oEmbed endpoint URL for a given permalink.
+ *
+ * Pass an empty string as the first argument to get the endpoint base URL.
+ *
+ * @since 4.4.0
+ *
+ * @param string $permalink Optional. The permalink used for the `url` query arg. Default empty.
+ * @param string $format    Optional. The requested response format. Default 'json'.
+ * @return string The oEmbed endpoint URL.
+ */
+function get_oembed_endpoint_url( $permalink = '', $format = 'json' ) {
+       $url = rest_url( 'oembed/1.0/embed' );
+
+       if ( 'json' === $format ) {
+               $format = false;
+       }
+
+       if ( '' !== $permalink ) {
+               $url = add_query_arg( array(
+                       'url'    => urlencode( $permalink ),
+                       'format' => $format,
+               ), $url );
+       }
+
+       /**
+        * Filter the oEmbed endpoint URL.
+        *
+        * @since 4.4.0
+        *
+        * @param string $url       The URL to the oEmbed endpoint.
+        * @param string $permalink The permalink used for the `url` query arg.
+        * @param string $format    The requested response format.
+        */
+       return apply_filters( 'oembed_endpoint_url', $url, $permalink, $format );
+}
+
+/**
+ * Retrieves the embed code for a specific post.
+ *
+ * @since 4.4.0
+ *
+ * @param int         $width  The width for the response.
+ * @param int         $height The height for the response.
+ * @param int|WP_Post $post   Optional. Post ID or object. Default is global `$post`.
+ * @return string|false Embed code on success, false if post doesn't exist.
+ */
+function get_post_embed_html( $width, $height, $post = null ) {
+       $post = get_post( $post );
+
+       if ( ! $post ) {
+               return false;
+       }
+
+       $embed_url = get_post_embed_url( $post );
+
+       $output = '<blockquote class="wp-embedded-content"><a href="' . esc_url( get_permalink( $post ) ) . '">' . get_the_title( $post ) . "</a></blockquote>\n";
+
+       $output .= "<script type='text/javascript'>\n";
+       $output .= "<!--//--><![CDATA[//><!--\n";
+       if ( SCRIPT_DEBUG ) {
+               $output .= file_get_contents( ABSPATH . WPINC . '/js/wp-embed.js' );
+       } else {
+               /*
+                * If you're looking at a src version of this file, you'll see an "include"
+                * statement below. This is used by the `grunt build` process to directly
+                * include a minified version of wp-embed.js, instead of using the
+                * file_get_contents() method from above.
+                *
+                * If you're looking at a build version of this file, you'll see a string of
+                * minified JavaScript. If you need to debug it, please turn on SCRIPT_DEBUG
+                * and edit wp-embed.js directly.
+                */
+               $output .=<<<JS
+               !function(a,b){"use strict";function c(){if(!e){e=!0;var a,c,d,f,g=-1!==navigator.appVersion.indexOf("MSIE 10"),h=!!navigator.userAgent.match(/Trident.*rv:11\./),i=b.querySelectorAll("iframe.wp-embedded-content"),j=b.querySelectorAll("blockquote.wp-embedded-content");for(c=0;c<j.length;c++)j[c].style.display="none";for(c=0;c<i.length;c++)if(d=i[c],d.style.display="",!d.getAttribute("data-secret")){if(f=Math.random().toString(36).substr(2,10),d.src+="#?secret="+f,d.setAttribute("data-secret",f),g||h)a=d.cloneNode(!0),a.removeAttribute("security"),d.parentNode.replaceChild(a,d)}else;}}var d=!1,e=!1;if(b.querySelector)if(a.addEventListener)d=!0;if(a.wp=a.wp||{},!a.wp.receiveEmbedMessage)if(a.wp.receiveEmbedMessage=function(c){var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){var e,f,g,h,i,j=b.querySelectorAll('iframe[data-secret="'+d.secret+'"]'),k=b.querySelectorAll('blockquote[data-secret="'+d.secret+'"]');for(e=0;e<k.length;e++)k[e].style.display="none";for(e=0;e<j.length;e++)if(f=j[e],c.source===f.contentWindow){if(f.style.display="","height"===d.message){if(g=parseInt(d.value,10),g>1e3)g=1e3;else if(200>~~g)g=200;f.height=g}if("link"===d.message)if(h=b.createElement("a"),i=b.createElement("a"),h.href=f.getAttribute("src"),i.href=d.value,i.host===h.host)if(b.activeElement===f)a.top.location.href=d.value}else;}},d)a.addEventListener("message",a.wp.receiveEmbedMessage,!1),b.addEventListener("DOMContentLoaded",c,!1),a.addEventListener("load",c,!1)}(window,document);
+JS;
+       }
+       $output .= "\n//--><!]]>";
+       $output .= "\n</script>";
+
+       $output .= sprintf(
+               '<iframe sandbox="allow-scripts" security="restricted" src="%1$s" width="%2$d" height="%3$d" title="%4$s" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" class="wp-embedded-content"></iframe>',
+               esc_url( $embed_url ),
+               absint( $width ),
+               absint( $height ),
+               esc_attr__( 'Embedded WordPress Post' )
+       );
+
+       /**
+        * Filter the embed HTML output for a given post.
+        *
+        * @since 4.4.0
+        *
+        * @param string  $output The default HTML.
+        * @param WP_Post $post   Current post object.
+        * @param int     $width  Width of the response.
+        * @param int     $height Height of the response.
+        */
+       return apply_filters( 'embed_html', $output, $post, $width, $height );
+}
+
+/**
+ * Retrieves the oEmbed response data for a given post.
+ *
+ * @since 4.4.0
+ *
+ * @param WP_Post|int $post  Post object or ID.
+ * @param int         $width The requested width.
+ * @return array|false Response data on success, false if post doesn't exist.
+ */
+function get_oembed_response_data( $post, $width ) {
+       $post = get_post( $post );
+
+       if ( ! $post ) {
+               return false;
+       }
+
+       if ( 'publish' !== get_post_status( $post ) ) {
+               return false;
+       }
+
+       /**
+        * Filter the allowed minimum and maximum widths for the oEmbed response.
+        *
+        * @since 4.4.0
+        *
+        * @param array $min_max_width {
+        *     Minimum and maximum widths for the oEmbed response.
+        *
+        *     @type int $min Minimum width. Default 200.
+        *     @type int $max Maximum width. Default 600.
+        * }
+        */
+       $min_max_width = apply_filters( 'oembed_min_max_width', array(
+               'min' => 200,
+               'max' => 600
+       ) );
+
+       $width  = min( max( $min_max_width['min'], $width ), $min_max_width['max'] );
+       $height = max( ceil( $width / 16 * 9 ), 200 );
+
+       $data = array(
+               'version'       => '1.0',
+               'provider_name' => get_bloginfo( 'name' ),
+               'provider_url'  => get_home_url(),
+               'author_name'   => get_bloginfo( 'name' ),
+               'author_url'    => get_home_url(),
+               'title'         => $post->post_title,
+               'type'          => 'link',
+       );
+
+       $author = get_userdata( $post->post_author );
+
+       if ( $author ) {
+               $data['author_name'] = $author->display_name;
+               $data['author_url']  = get_author_posts_url( $author->ID );
+       }
+
+       /**
+        * Filter the oEmbed response data.
+        *
+        * @since 4.4.0
+        *
+        * @param array   $data   The response data.
+        * @param WP_Post $post   The post object.
+        * @param int     $width  The requested width.
+        * @param int     $height The calculated height.
+        */
+       return apply_filters( 'oembed_response_data', $data, $post, $width, $height );
+}
+
+/**
+ * Filters the oEmbed response data to return an iframe embed code.
+ *
+ * @since 4.4.0
+ *
+ * @param array   $data   The response data.
+ * @param WP_Post $post   The post object.
+ * @param int     $width  The requested width.
+ * @param int     $height The calculated height.
+ * @return array The modified response data.
+ */
+function get_oembed_response_data_rich( $data, $post, $width, $height ) {
+       $data['width']  = absint( $width );
+       $data['height'] = absint( $height );
+       $data['type']   = 'rich';
+       $data['html']   = get_post_embed_html( $width, $height, $post );
+
+       // Add post thumbnail to response if available.
+       $thumbnail_id = false;
+
+       if ( has_post_thumbnail( $post->ID ) ) {
+               $thumbnail_id = get_post_thumbnail_id( $post->ID );
+       }
+
+       if ( 'attachment' === get_post_type( $post ) ) {
+               if ( wp_attachment_is_image( $post ) ) {
+                       $thumbnail_id = $post->ID;
+               } else if ( wp_attachment_is( 'video', $post ) ) {
+                       $thumbnail_id = get_post_thumbnail_id( $post );
+                       $data['type'] = 'video';
+               }
+       }
+
+       if ( $thumbnail_id ) {
+               list( $thumbnail_url, $thumbnail_width, $thumbnail_height ) = wp_get_attachment_image_src( $thumbnail_id, array( $width, 99999 ) );
+               $data['thumbnail_url']    = $thumbnail_url;
+               $data['thumbnail_width']  = $thumbnail_width;
+               $data['thumbnail_height'] = $thumbnail_height;
+       }
+
+       return $data;
+}
+
+/**
+ * Ensures that the specified format is either 'json' or 'xml'.
+ *
+ * @since 4.4.0
+ *
+ * @param string $format The oEmbed response format. Accepts 'json' or 'xml'.
+ * @return string The format, either 'xml' or 'json'. Default 'json'.
+ */
+function wp_oembed_ensure_format( $format ) {
+       if ( ! in_array( $format, array( 'json', 'xml' ), true ) ) {
+               return 'json';
+       }
+
+       return $format;
+}
+
+/**
+ * Hooks into the REST API output to print XML instead of JSON.
+ *
+ * This is only done for the oEmbed API endpoint,
+ * which supports both formats.
+ *
+ * @access private
+ * @since 4.4.0
+ *
+ * @param bool                      $served  Whether the request has already been served.
+ * @param WP_HTTP_ResponseInterface $result  Result to send to the client. Usually a WP_REST_Response.
+ * @param WP_REST_Request           $request Request used to generate the response.
+ * @param WP_REST_Server            $server  Server instance.
+ * @return true
+ */
+function _oembed_rest_pre_serve_request( $served, $result, $request, $server ) {
+       $params = $request->get_params();
+
+       if ( '/oembed/1.0/embed' !== $request->get_route() || 'GET' !== $request->get_method() ) {
+               return $served;
+       }
+
+       if ( ! isset( $params['format'] ) || 'xml' !== $params['format'] ) {
+               return $served;
+       }
+
+       // Embed links inside the request.
+       $data = $server->response_to_data( $result, false );
+
+       if ( ! class_exists( 'SimpleXMLElement' ) ) {
+               status_header( 501 );
+               die( get_status_header_desc( 501 ) );
+       }
+
+       $result = _oembed_create_xml( $data );
+
+       // Bail if there's no XML.
+       if ( ! $result ) {
+               status_header( 501 );
+               return get_status_header_desc( 501 );
+       }
+
+       if ( ! headers_sent() ) {
+               $server->send_header( 'Content-Type', 'text/xml; charset=' . get_option( 'blog_charset' ) );
+       }
+
+       echo $result;
+
+       return true;
+}
+
+/**
+ * Creates an XML string from a given array.
+ *
+ * @since 4.4.0
+ * @access private
+ *
+ * @param array            $data The original oEmbed response data.
+ * @param SimpleXMLElement $node Optional. XML node to append the result to recursively.
+ * @return string|false XML string on success, false on error.
+ */
+function _oembed_create_xml( $data, $node = null ) {
+       if ( ! is_array( $data ) || empty( $data ) ) {
+               return false;
+       }
+
+       if ( null === $node ) {
+               $node = new SimpleXMLElement( '<oembed></oembed>' );
+       }
+
+       foreach ( $data as $key => $value ) {
+               if ( is_numeric( $key ) ) {
+                       $key = 'oembed';
+               }
+
+               if ( is_array( $value ) ) {
+                       $item = $node->addChild( $key );
+                       _oembed_create_xml( $value, $item );
+               } else {
+                       $node->addChild( $key, esc_html( $value ) );
+               }
+       }
+
+       return $node->asXML();
+}
+
+/**
+ * Filters the given oEmbed HTML.
+ *
+ * If the `$url` isn't on the trusted providers list,
+ * we need to filter the HTML heavily for security.
+ *
+ * Only filters 'rich' and 'html' response types.
+ *
+ * @since 4.4.0
+ *
+ * @param string $result The oEmbed HTML result.
+ * @param object $data   A data object result from an oEmbed provider.
+ * @param string $url    The URL of the content to be embedded.
+ * @return string The filtered and sanitized oEmbed result.
+ */
+function wp_filter_oembed_result( $result, $data, $url ) {
+       if ( false === $result || ! in_array( $data->type, array( 'rich', 'video' ) ) ) {
+               return $result;
+       }
+
+       require_once( ABSPATH . WPINC . '/class-oembed.php' );
+       $wp_oembed = _wp_oembed_get_object();
+
+       // Don't modify the HTML for trusted providers.
+       if ( false !== $wp_oembed->get_provider( $url, array( 'discover' => false ) ) ) {
+               return $result;
+       }
+
+       $allowed_html = array(
+               'a'          => array(
+                       'href'         => true,
+               ),
+               'blockquote' => array(),
+               'iframe'     => array(
+                       'src'          => true,
+                       'width'        => true,
+                       'height'       => true,
+                       'frameborder'  => true,
+                       'marginwidth'  => true,
+                       'marginheight' => true,
+                       'scrolling'    => true,
+                       'title'        => true,
+               ),
+       );
+
+       $html = wp_kses( $result, $allowed_html );
+
+       preg_match( '|(<blockquote>.*?</blockquote>)?.*(<iframe.*?></iframe>)|ms', $html, $content );
+       // We require at least the iframe to exist.
+       if ( empty( $content[2] ) ) {
+               return false;
+       }
+       $html = $content[1] . $content[2];
+
+       if ( ! empty( $content[1] ) ) {
+               // We have a blockquote to fall back on. Hide the iframe by default.
+               $html = str_replace( '<iframe', '<iframe style="display:none;"', $html );
+               $html = str_replace( '<blockquote', '<blockquote class="wp-embedded-content"', $html );
+       }
+
+       $html = str_replace( '<iframe', '<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"', $html );
+
+       preg_match( '/ src=[\'"]([^\'"]*)[\'"]/', $html, $results );
+
+       if ( ! empty( $results ) ) {
+               $secret = wp_generate_password( 10, false );
+
+               $url = esc_url( "{$results[1]}#?secret=$secret" );
+
+               $html = str_replace( $results[0], " src=\"$url\" data-secret=\"$secret\"", $html );
+               $html = str_replace( '<blockquote', "<blockquote data-secret=\"$secret\"", $html );
+       }
+
+       return $html;
+}
+
+/**
+ * Filters the string in the 'more' link displayed after a trimmed excerpt.
+ *
+ * Replaces '[...]' (appended to automatically generated excerpts) with an
+ * ellipsis and a "Continue reading" link in the embed template.
+ *
+ * @since 4.4.0
+ *
+ * @param string $more_string Default 'more' string.
+ * @return string 'Continue reading' link prepended with an ellipsis.
+ */
+function wp_embed_excerpt_more( $more_string ) {
+       if ( ! is_embed() ) {
+               return $more_string;
+       }
+
+       $link = sprintf( '<a href="%1$s" class="wp-embed-more" target="_top">%2$s</a>',
+               esc_url( get_permalink() ),
+               /* translators: %s: Name of current post */
+               sprintf( __( 'Continue reading %s' ), '<span class="screen-reader-text">' . get_the_title() . '</span>' )
+       );
+       return ' &hellip; ' . $link;
+}
+
+/**
+ * Displays the post excerpt for the embed template.
+ *
+ * Intended to be used in 'The Loop'.
+ *
+ * @since 4.4.0
+ */
+function the_excerpt_embed() {
+       $output = get_the_excerpt();
+
+       /**
+        * Filter the post excerpt for the embed template.
+        *
+        * @since 4.4.0
+        *
+        * @param string $output The current post excerpt.
+        */
+       echo apply_filters( 'the_excerpt_embed', $output );
+}
+
+/**
+ * Filters the post excerpt for the embed template.
+ *
+ * Shows players for video and audio attachments.
+ *
+ * @since 4.4.0
+ *
+ * @param string $content The current post excerpt.
+ * @return string The modified post excerpt.
+ */
+function wp_embed_excerpt_attachment( $content ) {
+       if ( is_attachment() ) {
+               return prepend_attachment( '' );
+       }
+
+       return $content;
+}
+
+/**
+ * Enqueue embed iframe default CSS and JS & fire do_action('enqueue_embed_scripts')
+ *
+ * Enqueue PNG fallback CSS for embed iframe for legacy versions of IE.
+ *
+ * Allows plugins to queue scripts for the embed iframe end using wp_enqueue_script().
+ * Runs first in oembed_head().
+ *
+ * @since 4.4.0
+ */
+function enqueue_embed_scripts() {
+       wp_enqueue_style( 'open-sans' );
+       wp_enqueue_style( 'wp-embed-template-ie' );
+
+       /**
+        * Fires when scripts and styles are enqueued for the embed iframe.
+        *
+        * @since 4.4.0
+        */
+       do_action( 'enqueue_embed_scripts' );
+}
+
+/**
+ * Prints the CSS in the embed iframe header.
+ *
+ * @since 4.4.0
+ */
+function print_embed_styles() {
+       ?>
+       <style type="text/css">
+       <?php
+               if ( SCRIPT_DEBUG ) {
+                       readfile( ABSPATH . WPINC . "/css/wp-embed-template.css" );
+               } else {
+                       /*
+                        * If you're looking at a src version of this file, you'll see an "include"
+                        * statement below. This is used by the `grunt build` process to directly
+                        * include a minified version of wp-oembed-embed.css, instead of using the
+                        * readfile() method from above.
+                        *
+                        * If you're looking at a build version of this file, you'll see a string of
+                        * minified CSS. If you need to debug it, please turn on SCRIPT_DEBUG
+                        * and edit wp-embed-template.css directly.
+                        */
+                       ?>
+                       body,html{padding:0;margin:0}body{font-family:sans-serif}.screen-reader-text{clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px}.dashicons{display:inline-block;width:20px;height:20px;background-color:transparent;background-repeat:no-repeat;-webkit-background-size:20px 20px;background-size:20px;background-position:center;-webkit-transition:background .1s ease-in;transition:background .1s ease-in;position:relative;top:5px}.dashicons-no{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M15.55%2013.7l-2.19%202.06-3.42-3.65-3.64%203.43-2.06-2.18%203.64-3.43-3.42-3.64%202.18-2.06%203.43%203.64%203.64-3.42%202.05%202.18-3.64%203.43z%27%20fill%3D%27%23fff%27%2F%3E%3C%2Fsvg%3E")}.dashicons-admin-comments{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M5%202h9q.82%200%201.41.59T16%204v7q0%20.82-.59%201.41T14%2013h-2l-5%205v-5H5q-.82%200-1.41-.59T3%2011V4q0-.82.59-1.41T5%202z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E")}.wp-embed-comments a:hover .dashicons-admin-comments{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M5%202h9q.82%200%201.41.59T16%204v7q0%20.82-.59%201.41T14%2013h-2l-5%205v-5H5q-.82%200-1.41-.59T3%2011V4q0-.82.59-1.41T5%202z%27%20fill%3D%27%230073aa%27%2F%3E%3C%2Fsvg%3E")}.dashicons-share{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%2382878c%27%2F%3E%3C%2Fsvg%3E");display:none}.js .dashicons-share{display:inline-block}.wp-embed-share-dialog-open:hover .dashicons-share{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20d%3D%27M14.5%2012q1.24%200%202.12.88T17.5%2015t-.88%202.12-2.12.88-2.12-.88T11.5%2015q0-.34.09-.69l-4.38-2.3Q6.32%2013%205%2013q-1.24%200-2.12-.88T2%2010t.88-2.12T5%207q1.3%200%202.21.99l4.38-2.3q-.09-.35-.09-.69%200-1.24.88-2.12T14.5%202t2.12.88T17.5%205t-.88%202.12T14.5%208q-1.3%200-2.21-.99l-4.38%202.3Q8%209.66%208%2010t-.09.69l4.38%202.3q.89-.99%202.21-.99z%27%20fill%3D%27%230073aa%27%2F%3E%3C%2Fsvg%3E")}.wp-embed{padding:25px;font:400 14px/1.5 'Open Sans',sans-serif;color:#82878c;background:#fff;border:1px solid #e5e5e5;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05);overflow:auto;zoom:1}.wp-embed a{color:#82878c;text-decoration:none}.wp-embed a:hover{text-decoration:underline}.wp-embed-featured-image{margin-bottom:20px}.wp-embed-featured-image img{width:100%;height:auto;border:none}.wp-embed-featured-image.square{float:left;max-width:160px;margin-right:20px}.wp-embed p{margin:0}p.wp-embed-heading{margin:0 0 15px;font-weight:700;font-size:22px;line-height:1.3}.wp-embed-heading a{color:#32373c}.wp-embed .wp-embed-more{color:#b4b9be}.wp-embed-footer{display:table;width:100%;margin-top:30px}.wp-embed-site-icon{position:absolute;top:50%;left:0;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);height:25px;width:25px;border:0}.wp-embed-site-title{font-weight:700;line-height:25px}.wp-embed-site-title a{position:relative;display:inline-block;padding-left:35px}.wp-embed-meta,.wp-embed-site-title{display:table-cell}.wp-embed-meta{text-align:right;white-space:nowrap;vertical-align:middle}.wp-embed-comments,.wp-embed-share{display:inline}.wp-embed-comments a,.wp-embed-share-tab-button{display:inline-block}.wp-embed-meta a:hover{text-decoration:none;color:#0073aa}.wp-embed-comments a{line-height:25px}.wp-embed-comments+.wp-embed-share{margin-left:10px}.wp-embed-share-dialog{position:absolute;top:0;left:0;right:0;bottom:0;background-color:#222;background-color:rgba(10,10,10,.9);color:#fff;opacity:1;-webkit-transition:opacity .25s ease-in-out;transition:opacity .25s ease-in-out}.wp-embed-share-dialog.hidden{opacity:0;visibility:hidden}.wp-embed-share-dialog-close,.wp-embed-share-dialog-open{margin:-8px 0 0;padding:0;background:0 0;border:none;cursor:pointer;outline:0}.wp-embed-share-dialog-close .dashicons,.wp-embed-share-dialog-open .dashicons{padding:4px}.wp-embed-share-dialog-open .dashicons{top:8px}.wp-embed-share-dialog-close:focus .dashicons,.wp-embed-share-dialog-open:focus .dashicons{-webkit-box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);box-shadow:0 0 0 1px #5b9dd9,0 0 2px 1px rgba(30,140,190,.8);-webkit-border-radius:100%;border-radius:100%}.wp-embed-share-dialog-close{position:absolute;top:20px;right:20px;font-size:22px}.wp-embed-share-dialog-close:hover{text-decoration:none}.wp-embed-share-dialog-close .dashicons{height:24px;width:24px;-webkit-background-size:24px 24px;background-size:24px}.wp-embed-share-dialog-content{height:100%;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;overflow:hidden}.wp-embed-share-dialog-text{margin-top:25px;padding:20px}.wp-embed-share-tabs{margin:0 0 20px;padding:0;list-style:none}.wp-embed-share-tab-button button{margin:0;padding:0;border:none;background:0 0;font-size:16px;line-height:1.3;color:#aaa;cursor:pointer;-webkit-transition:color .1s ease-in;transition:color .1s ease-in}.wp-embed-share-tab-button [aria-selected=true],.wp-embed-share-tab-button button:hover{color:#fff}.wp-embed-share-tab-button+.wp-embed-share-tab-button{margin:0 0 0 10px;padding:0 0 0 11px;border-left:1px solid #aaa}.wp-embed-share-tab[aria-hidden=true]{display:none}p.wp-embed-share-description{margin:0;font-size:14px;line-height:1;font-style:italic;color:#aaa}.wp-embed-share-input{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%;border:none;height:28px;margin:0 0 10px;padding:0 5px;font:400 14px/1.5 'Open Sans',sans-serif;resize:none;cursor:text}textarea.wp-embed-share-input{height:72px}html[dir=rtl] .wp-embed-featured-image.square{float:right;margin-right:0;margin-left:20px}html[dir=rtl] .wp-embed-site-title a{padding-left:0;padding-right:35px}html[dir=rtl] .wp-embed-site-icon{margin-right:0;margin-left:10px;left:auto;right:0}html[dir=rtl] .wp-embed-meta{text-align:left}html[dir=rtl] .wp-embed-share{margin-left:0;margin-right:10px}html[dir=rtl] .wp-embed-share-dialog-close{right:auto;left:20px}html[dir=rtl] .wp-embed-share-tab-button+.wp-embed-share-tab-button{margin:0 10px 0 0;padding:0 11px 0 0;border-left:none;border-right:1px solid #aaa}
+                       <?php
+               }
+       ?>
+       </style>
+       <?php
+}
+
+/**
+ * Prints the JavaScript in the embed iframe header.
+ *
+ * @since 4.4.0
+ */
+function print_embed_scripts() {
+       ?>
+       <script type="text/javascript">
+       <?php
+               if ( SCRIPT_DEBUG ) {
+                       readfile( ABSPATH . WPINC . "/js/wp-embed-template.js" );
+               } else {
+                       /*
+                        * If you're looking at a src version of this file, you'll see an "include"
+                        * statement below. This is used by the `grunt build` process to directly
+                        * include a minified version of wp-embed-template.js, instead of using the
+                        * readfile() method from above.
+                        *
+                        * If you're looking at a build version of this file, you'll see a string of
+                        * minified JavaScript. If you need to debug it, please turn on SCRIPT_DEBUG
+                        * and edit wp-embed-template.js directly.
+                        */
+                       ?>
+                       !function(a,b){"use strict";function c(b,c){a.parent.postMessage({message:b,value:c,secret:g},"*")}function d(){function d(){l.className=l.className.replace("hidden",""),b.querySelector('.wp-embed-share-tab-button [aria-selected="true"]').focus()}function e(){l.className+=" hidden",b.querySelector(".wp-embed-share-dialog-open").focus()}function f(a){var c=b.querySelector('.wp-embed-share-tab-button [aria-selected="true"]');c.setAttribute("aria-selected","false"),b.querySelector("#"+c.getAttribute("aria-controls")).setAttribute("aria-hidden","true"),a.target.setAttribute("aria-selected","true"),b.querySelector("#"+a.target.getAttribute("aria-controls")).setAttribute("aria-hidden","false")}function g(a){var c,d,e=a.target,f=e.parentElement.previousElementSibling,g=e.parentElement.nextElementSibling;if(37===a.keyCode)c=f;else{if(39!==a.keyCode)return!1;c=g}"rtl"===b.documentElement.getAttribute("dir")&&(c=c===f?g:f),c&&(d=c.firstElementChild,e.setAttribute("tabindex","-1"),e.setAttribute("aria-selected",!1),b.querySelector("#"+e.getAttribute("aria-controls")).setAttribute("aria-hidden","true"),d.setAttribute("tabindex","0"),d.setAttribute("aria-selected","true"),d.focus(),b.querySelector("#"+d.getAttribute("aria-controls")).setAttribute("aria-hidden","false"))}function h(a){var c=b.querySelector('.wp-embed-share-tab-button [aria-selected="true"]');n!==a.target||a.shiftKey?c===a.target&&a.shiftKey&&(n.focus(),a.preventDefault()):(c.focus(),a.preventDefault())}function i(a){var b,d=a.target;b=d.hasAttribute("href")?d.getAttribute("href"):d.parentElement.getAttribute("href"),c("link",b),a.preventDefault()}if(!k){k=!0;var j,l=b.querySelector(".wp-embed-share-dialog"),m=b.querySelector(".wp-embed-share-dialog-open"),n=b.querySelector(".wp-embed-share-dialog-close"),o=b.querySelectorAll(".wp-embed-share-input"),p=b.querySelectorAll(".wp-embed-share-tab-button button"),q=b.getElementsByTagName("a");if(o)for(j=0;j<o.length;j++)o[j].addEventListener("click",function(a){a.target.select()});if(m&&m.addEventListener("click",function(){d()}),n&&n.addEventListener("click",function(){e()}),p)for(j=0;j<p.length;j++)p[j].addEventListener("click",f),p[j].addEventListener("keydown",g);if(b.addEventListener("keydown",function(a){27===a.keyCode&&-1===l.className.indexOf("hidden")?e():9===a.keyCode&&h(a)},!1),a.self!==a.top)for(c("height",Math.ceil(b.body.getBoundingClientRect().height)),j=0;j<q.length;j++)q[j].addEventListener("click",i)}}function e(){a.self!==a.top&&(clearTimeout(i),i=setTimeout(function(){c("height",Math.ceil(b.body.getBoundingClientRect().height))},100))}function f(){a.self===a.top||g||(g=a.location.hash.replace(/.*secret=([\d\w]{10}).*/,"$1"),clearTimeout(h),h=setTimeout(function(){f()},100))}var g,h,i,j=b.querySelector&&a.addEventListener,k=!1;j&&(f(),b.documentElement.className=b.documentElement.className.replace(/\bno-js\b/,"")+" js",b.addEventListener("DOMContentLoaded",d,!1),a.addEventListener("load",d,!1),a.addEventListener("resize",e,!1))}(window,document);
+                       <?php
+               }
+       ?>
+       </script>
+       <?php
+}
+
+/**
+ * Prepare the oembed HTML to be displayed in an RSS feed.
+ *
+ * @since 4.4.0
+ * @access private
+ *
+ * @param string $content The content to filter.
+ * @return string The filtered content.
+ */
+function _oembed_filter_feed_content( $content ) {
+       return str_replace( '<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="display:none;"', '<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"', $content );
+}
+
+/**
+ * Prints the necessary markup for the embed comments button.
+ *
+ * @since 4.4.0
+ */
+function print_embed_comments_button() {
+       if ( is_404() || ! ( get_comments_number() || comments_open() ) ) {
+               return;
+       }
+       ?>
+       <div class="wp-embed-comments">
+               <a href="<?php comments_link(); ?>" target="_top">
+                       <span class="dashicons dashicons-admin-comments"></span>
+                       <?php
+                       printf(
+                               _n(
+                                       '%s <span class="screen-reader-text">Comment</span>',
+                                       '%s <span class="screen-reader-text">Comments</span>',
+                                       get_comments_number()
+                               ),
+                               number_format_i18n( get_comments_number() )
+                       );
+                       ?>
+               </a>
+       </div>
+       <?php
+}
+
+/**
+ * Prints the necessary markup for the embed sharing button.
+ *
+ * @since 4.4.0
+ */
+function print_embed_sharing_button() {
+       if ( is_404() ) {
+               return;
+       }
+       ?>
+       <div class="wp-embed-share">
+               <button type="button" class="wp-embed-share-dialog-open" aria-label="<?php esc_attr_e( 'Open sharing dialog' ); ?>">
+                       <span class="dashicons dashicons-share"></span>
+               </button>
+       </div>
+       <?php
+}
+
+/**
+ * Prints the necessary markup for the embed sharing dialog.
+ *
+ * @since 4.4.0
+ */
+function print_embed_sharing_dialog() {
+       if ( is_404() ) {
+               return;
+       }
+       ?>
+       <div class="wp-embed-share-dialog hidden" role="dialog" aria-label="<?php esc_attr_e( 'Sharing options' ); ?>">
+               <div class="wp-embed-share-dialog-content">
+                       <div class="wp-embed-share-dialog-text">
+                               <ul class="wp-embed-share-tabs" role="tablist">
+                                       <li class="wp-embed-share-tab-button wp-embed-share-tab-button-wordpress" role="presentation">
+                                               <button type="button" role="tab" aria-controls="wp-embed-share-tab-wordpress" aria-selected="true" tabindex="0"><?php esc_html_e( 'WordPress Embed' ); ?></button>
+                                       </li>
+                                       <li class="wp-embed-share-tab-button wp-embed-share-tab-button-html" role="presentation">
+                                               <button type="button" role="tab" aria-controls="wp-embed-share-tab-html" aria-selected="false" tabindex="-1"><?php esc_html_e( 'HTML Embed' ); ?></button>
+                                       </li>
+                               </ul>
+                               <div id="wp-embed-share-tab-wordpress" class="wp-embed-share-tab" role="tabpanel" aria-hidden="false">
+                                       <input type="text" value="<?php the_permalink(); ?>" class="wp-embed-share-input" aria-describedby="wp-embed-share-description-wordpress" tabindex="0" readonly/>
+
+                                       <p class="wp-embed-share-description" id="wp-embed-share-description-wordpress">
+                                               <?php _e( 'Copy and paste this URL into your WordPress site to embed' ); ?>
+                                       </p>
+                               </div>
+                               <div id="wp-embed-share-tab-html" class="wp-embed-share-tab" role="tabpanel" aria-hidden="true">
+                                       <textarea class="wp-embed-share-input" aria-describedby="wp-embed-share-description-html" tabindex="0" readonly><?php echo esc_textarea( get_post_embed_html( 600, 400 ) ); ?></textarea>
+
+                                       <p class="wp-embed-share-description" id="wp-embed-share-description-html">
+                                               <?php _e( 'Copy and paste this code into your site to embed' ); ?>
+                                       </p>
+                               </div>
+                       </div>
+
+                       <button type="button" class="wp-embed-share-dialog-close" aria-label="<?php esc_attr_e( 'Close sharing dialog' ); ?>">
+                               <span class="dashicons dashicons-no"></span>
+                       </button>
+               </div>
+       </div>
+       <?php
+}
index 785a0c247ae53f1ca7dee86fae29fb29a5886a99..9b59478a5f01220cef7c4be4853241bceb89f7ce 100644 (file)
@@ -33,7 +33,7 @@ do_action( 'rss_tag_pre', 'atom-comments' );
                elseif ( is_search() )
                        printf( ent2ncr( __( 'Comments for %1$s searching on %2$s' ) ), get_bloginfo_rss( 'name' ), get_search_query() );
                else
-                       printf( ent2ncr( __( 'Comments for %s' ) ), get_bloginfo_rss( 'name' ) . get_wp_title_rss() );
+                       printf( ent2ncr( __( 'Comments for %s' ) ), get_wp_title_rss() );
        ?></title>
        <subtitle type="text"><?php bloginfo_rss('description'); ?></subtitle>
 
index ae4cd7976c971c5838f5bc525a408557e1aca892..a4a62f74b94bf755f30be592caf114819ccf97dc 100644 (file)
@@ -27,7 +27,7 @@ do_action( 'rss_tag_pre', 'atom' );
   do_action( 'atom_ns' );
   ?>
  >
-       <title type="text"><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
+       <title type="text"><?php wp_title_rss(); ?></title>
        <subtitle type="text"><?php bloginfo_rss("description") ?></subtitle>
 
        <updated><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></updated>
@@ -78,10 +78,13 @@ do_action( 'rss_tag_pre', 'atom' );
         * @since 2.0.0
         */
        do_action( 'atom_entry' );
+
+       if ( get_comments_number() || comments_open() ) :
                ?>
                <link rel="replies" type="<?php bloginfo_rss('html_type'); ?>" href="<?php the_permalink_rss() ?>#comments" thr:count="<?php echo get_comments_number()?>"/>
                <link rel="replies" type="application/atom+xml" href="<?php echo esc_url( get_post_comments_feed_link(0, 'atom') ); ?>" thr:count="<?php echo get_comments_number()?>"/>
                <thr:total><?php echo get_comments_number()?></thr:total>
+       <?php endif; ?>
        </entry>
        <?php endwhile ; ?>
 </feed>
index 1e8327b0dc4aa4d42e2033fce75c7aef35952a8f..8302881500e9bdbe526eb9a52cc04406f160e2c4 100644 (file)
@@ -30,7 +30,7 @@ do_action( 'rss_tag_pre', 'rdf' );
        ?>
 >
 <channel rdf:about="<?php bloginfo_rss("url") ?>">
-       <title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
+       <title><?php wp_title_rss(); ?></title>
        <link><?php bloginfo_rss('url') ?></link>
        <description><?php bloginfo_rss('description') ?></description>
        <dc:date><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></dc:date>
index a355a8af402a58dea5bf0342c98c5e5b7245c137..df231968b791233a6f2e5821f6f12f17463acec3 100644 (file)
@@ -11,7 +11,7 @@ $more = 1;
 echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
 <rss version="0.92">
 <channel>
-       <title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
+       <title><?php wp_title_rss(); ?></title>
        <link><?php bloginfo_rss('url') ?></link>
        <description><?php bloginfo_rss('description') ?></description>
        <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
index c8e8d498ea204e6fcc8621a27784a17bc9a6ec5d..f05bb8f71a2008ec8ac303b341349c730ba882c2 100644 (file)
@@ -38,7 +38,7 @@ do_action( 'rss_tag_pre', 'rss2-comments' );
                elseif ( is_search() )
                        printf( ent2ncr( __( 'Comments for %1$s searching on %2$s' ) ), get_bloginfo_rss( 'name' ), get_search_query() );
                else
-                       printf( ent2ncr( __( 'Comments for %s' ) ), get_bloginfo_rss( 'name' ) . get_wp_title_rss() );
+                       printf( ent2ncr( __( 'Comments for %s' ) ), get_wp_title_rss() );
        ?></title>
        <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
        <link><?php (is_single()) ? the_permalink_rss() : bloginfo_rss("url") ?></link>
index c82fc63c56c970a8b8835abaea7cd27565b74b77..42ff4ea9913e6fdfecd5ca9f42c1c95bdec8c5cf 100644 (file)
@@ -38,7 +38,7 @@ do_action( 'rss_tag_pre', 'rss2' );
 >
 
 <channel>
-       <title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
+       <title><?php wp_title_rss(); ?></title>
        <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
        <link><?php bloginfo_rss('url') ?></link>
        <description><?php bloginfo_rss("description") ?></description>
@@ -83,7 +83,9 @@ do_action( 'rss_tag_pre', 'rss2' );
        <item>
                <title><?php the_title_rss() ?></title>
                <link><?php the_permalink_rss() ?></link>
+<?php if ( get_comments_number() || comments_open() ) : ?>
                <comments><?php comments_link_feed(); ?></comments>
+<?php endif; ?>
                <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
                <dc:creator><![CDATA[<?php the_author() ?>]]></dc:creator>
                <?php the_category_rss('rss2') ?>
@@ -100,8 +102,10 @@ do_action( 'rss_tag_pre', 'rss2' );
                <content:encoded><![CDATA[<?php the_excerpt_rss(); ?>]]></content:encoded>
        <?php endif; ?>
 <?php endif; ?>
+<?php if ( get_comments_number() || comments_open() ) : ?>
                <wfw:commentRss><?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?></wfw:commentRss>
                <slash:comments><?php echo get_comments_number(); ?></slash:comments>
+<?php endif; ?>
 <?php rss_enclosure(); ?>
        <?php
        /**
index f40f41a6ad79d40ec4d152ec80b6faf9a3717785..4842c6e1a2ed4404925f904aa0d81dcf16749f8e 100644 (file)
@@ -91,53 +91,55 @@ function get_default_feed() {
  * Retrieve the blog title for the feed title.
  *
  * @since 2.2.0
+ * @since 4.4.0 The optional `$sep` parameter was deprecated and renamed to `$deprecated`.
  *
- * @param string $sep Optional. How to separate the title. See wp_title() for more info.
- * @return string Error message on failure or blog title on success.
+ * @param string $deprecated Unused..
+ * @return string The document title.
  */
-function get_wp_title_rss( $sep = '&#187;' ) {
-       $title = wp_title( $sep, false );
-
-       if ( is_wp_error( $title ) ) {
-               return $title->get_error_message();
-       }
-
-       if ( $title && $sep && ' ' !== substr( $title, 0, 1 ) ) {
-               $title = " $sep " . $title;
+function get_wp_title_rss( $deprecated = '&#8211;' ) {
+       if ( '&#8211;' !== $deprecated ) {
+               /* translators: %s: 'document_title_separator' filter name */
+               _deprecated_argument( __FUNCTION__, '4.4.0', sprintf( __( 'Use the %s filter instead.' ), '<code>document_title_separator</code>' ) );
        }
 
        /**
         * Filter the blog title for use as the feed title.
         *
         * @since 2.2.0
+        * @since 4.4.0 The `$sep` parameter was deprecated and renamed to `$deprecated`.
         *
-        * @param string $title The current blog title.
-        * @param string $sep   Separator used by wp_title().
+        * @param string $title      The current blog title.
+        * @param string $deprecated Unused.
         */
-       $title = apply_filters( 'get_wp_title_rss', $title, $sep );
-       return $title;
+       return apply_filters( 'get_wp_title_rss', wp_get_document_title(), $deprecated );
 }
 
 /**
  * Display the blog title for display of the feed title.
  *
  * @since 2.2.0
- * @see wp_title() $sep parameter usage.
+ * @since 4.4.0 The optional `$sep` parameter was deprecated and renamed to `$deprecated`.
  *
- * @param string $sep Optional.
+ * @param string $deprecated Unused.
  */
-function wp_title_rss( $sep = '&#187;' ) {
+function wp_title_rss( $deprecated = '&#8211;' ) {
+       if ( '&#8211;' !== $deprecated ) {
+               /* translators: %s: 'document_title_separator' filter name */
+               _deprecated_argument( __FUNCTION__, '4.4.0', sprintf( __( 'Use the %s filter instead.' ), '<code>document_title_separator</code>' ) );
+       }
+
        /**
         * Filter the blog title for display of the feed title.
         *
         * @since 2.2.0
+        * @since 4.4.0 The `$sep` parameter was deprecated and renamed to `$deprecated`.
         *
         * @see get_wp_title_rss()
         *
-        * @param string $wp_title The current blog title.
-        * @param string $sep      Separator used by wp_title().
+        * @param string $wp_title_rss The current blog title.
+        * @param string $deprecated   Unused.
         */
-       echo apply_filters( 'wp_title_rss', get_wp_title_rss( $sep ), $sep );
+       echo apply_filters( 'wp_title_rss', get_wp_title_rss(), $deprecated );
 }
 
 /**
@@ -149,6 +151,7 @@ function wp_title_rss( $sep = '&#187;' ) {
  */
 function get_the_title_rss() {
        $title = get_the_title();
+
        /**
         * Filter the post title for use in a feed.
         *
@@ -264,7 +267,7 @@ function comments_link_feed() {
  *
  * @since 2.5.0
  *
- * @param int|object $comment_id Optional comment object or id. Defaults to global comment object.
+ * @param int|WP_Comment $comment_id Optional comment object or id. Defaults to global comment object.
  */
 function comment_guid($comment_id = null) {
        echo esc_url( get_comment_guid($comment_id) );
@@ -275,7 +278,7 @@ function comment_guid($comment_id = null) {
  *
  * @since 2.5.0
  *
- * @param int|object $comment_id Optional comment object or id. Defaults to global comment object.
+ * @param int|WP_Comment $comment_id Optional comment object or id. Defaults to global comment object.
  * @return false|string false on failure or guid for comment on success.
  */
 function get_comment_guid($comment_id = null) {
@@ -291,8 +294,11 @@ function get_comment_guid($comment_id = null) {
  * Display the link to the comments.
  *
  * @since 1.5.0
+ * @since 4.4.0 Introduced the `$comment` argument.
+ *
+ * @param int|WP_Comment $comment Optional. Comment object or id. Defaults to global comment object.
  */
-function comment_link() {
+function comment_link( $comment = null ) {
        /**
         * Filter the current comment's permalink.
         *
@@ -302,7 +308,7 @@ function comment_link() {
         *
         * @param string $comment_permalink The current comment permalink.
         */
-       echo esc_url( apply_filters( 'comment_link', get_comment_link() ) );
+       echo esc_url( apply_filters( 'comment_link', get_comment_link( $comment ) ) );
 }
 
 /**
index 640e136fcf62c0801f12f241cda9d5ed37240255..ff4167d2273e8a175d3d0bca675be400e3f0400f 100644 (file)
@@ -216,63 +216,31 @@ function wptexturize( $text, $reset = false ) {
 
        // Look for shortcodes and HTML elements.
 
-       $tagnames = array_keys( $shortcode_tags );
-       $tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
-       $tagregexp = "(?:$tagregexp)(?![\\w-])"; // Excerpt of get_shortcode_regex().
-
-       $comment_regex =
-                 '!'           // Start of comment, after the <.
-               . '(?:'         // Unroll the loop: Consume everything until --> is found.
-               .     '-(?!->)' // Dash not followed by end of comment.
-               .     '[^\-]*+' // Consume non-dashes.
-               . ')*+'         // Loop possessively.
-               . '(?:-->)?';   // End of comment. If not found, match all input.
-
-       $shortcode_regex =
-                 '\['              // Find start of shortcode.
-               . '[\/\[]?'         // Shortcodes may begin with [/ or [[
-               . $tagregexp        // Only match registered shortcodes, because performance.
-               . '(?:'
-               .     '[^\[\]<>]+'  // Shortcodes do not contain other shortcodes. Quantifier critical.
-               . '|'
-               .     '<[^\[\]>]*>' // HTML elements permitted. Prevents matching ] before >.
-               . ')*+'             // Possessive critical.
-               . '\]'              // Find end of shortcode.
-               . '\]?';            // Shortcodes may end with ]]
-
-       $regex =
-                 '/('                   // Capture the entire match.
-               .     '<'                // Find start of element.
-               .     '(?(?=!--)'        // Is this a comment?
-               .         $comment_regex // Find end of comment.
-               .     '|'
-               .         '[^>]*>'       // Find end of element.
-               .     ')'
-               . '|'
-               .     $shortcode_regex   // Find shortcodes.
-               . ')/s';
+       preg_match_all( '@\[/?([^<>&/\[\]\x00-\x20]++)@', $text, $matches );
+       $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
+       $found_shortcodes = ! empty( $tagnames );
+       $shortcode_regex = $found_shortcodes ? _get_wptexturize_shortcode_regex( $tagnames ) : '';
+       $regex = _get_wptexturize_split_regex( $shortcode_regex );
 
        $textarr = preg_split( $regex, $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
 
        foreach ( $textarr as &$curl ) {
                // Only call _wptexturize_pushpop_element if $curl is a delimiter.
                $first = $curl[0];
-               if ( '<' === $first && '<!--' === substr( $curl, 0, 4 ) ) {
-                       // This is an HTML comment delimeter.
-
-                       continue;
-
-               } elseif ( '<' === $first && '>' === substr( $curl, -1 ) ) {
-                       // This is an HTML element delimiter.
-
-                       _wptexturize_pushpop_element( $curl, $no_texturize_tags_stack, $no_texturize_tags );
+               if ( '<' === $first ) {
+                       if ( '<!--' === substr( $curl, 0, 4 ) ) {
+                               // This is an HTML comment delimiter.
+                               continue;
+                       } else {
+                               // This is an HTML element delimiter.
+                               _wptexturize_pushpop_element( $curl, $no_texturize_tags_stack, $no_texturize_tags );
+                       }
 
                } elseif ( '' === trim( $curl ) ) {
                        // This is a newline between delimiters.  Performance improves when we check this.
-
                        continue;
 
-               } elseif ( '[' === $first && 1 === preg_match( '/^' . $shortcode_regex . '$/', $curl ) ) {
+               } elseif ( '[' === $first && $found_shortcodes && 1 === preg_match( '/^' . $shortcode_regex . '$/', $curl ) ) {
                        // This is a shortcode delimiter.
 
                        if ( '[[' !== substr( $curl, 0, 2 ) && ']]' !== substr( $curl, -2 ) ) {
@@ -308,12 +276,13 @@ function wptexturize( $text, $reset = false ) {
                                // Searching for a digit is 10 times more expensive than for the x, so we avoid doing this one!
                                $curl = preg_replace( '/\b(\d(?(?<=0)[\d\.,]+|[\d\.,]*))x(\d[\d\.,]*)\b/', '$1&#215;$2', $curl );
                        }
+
+                       // Replace each & with &#038; unless it already looks like an entity.
+                       $curl = preg_replace( '/&(?!#(?:\d+|x[a-f0-9]+);|[a-z1-4]{1,8};)/i', '&#038;', $curl );
                }
        }
-       $text = implode( '', $textarr );
 
-       // Replace each & with &#038; unless it already looks like an entity.
-       return preg_replace( '/&(?!#(?:\d+|x[a-f0-9]+);|[a-z1-4]{1,8};)/i', '&#038;', $text );
+       return implode( '', $textarr );
 }
 
 /**
@@ -340,7 +309,7 @@ function wptexturize_primes( $haystack, $needle, $prime, $open_quote, $close_quo
 
        $sentences = explode( $open_quote, $haystack );
 
-       foreach( $sentences as $key => &$sentence ) {
+       foreach ( $sentences as $key => &$sentence ) {
                if ( false === strpos( $sentence, $needle ) ) {
                        continue;
                } elseif ( 0 !== $key && 0 === substr_count( $sentence, $close_quote ) ) {
@@ -496,7 +465,7 @@ function wpautop( $pee, $br = true ) {
        $allblocks = '(?:table|thead|tfoot|caption|col|colgroup|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|form|map|area|blockquote|address|math|style|p|h[1-6]|hr|fieldset|legend|section|article|aside|hgroup|header|footer|nav|figure|figcaption|details|menu|summary)';
 
        // Add a single line break above block-level opening tags.
-       $pee = preg_replace('!(<' . $allblocks . '[^>]*>)!', "\n$1", $pee);
+       $pee = preg_replace('!(<' . $allblocks . '[\s/>])!', "\n$1", $pee);
 
        // Add a double line break below block-level closing tags.
        $pee = preg_replace('!(</' . $allblocks . '>)!', "$1\n\n", $pee);
@@ -612,6 +581,17 @@ function wpautop( $pee, $br = true ) {
  * @return array The formatted text.
  */
 function wp_html_split( $input ) {
+       return preg_split( get_html_split_regex(), $input, -1, PREG_SPLIT_DELIM_CAPTURE );
+}
+
+/**
+ * Retrieve the regular expression for an HTML element.
+ *
+ * @since 4.4.0
+ *
+ * @return string The regular expression
+ */
+function get_html_split_regex() {
        static $regex;
 
        if ( ! isset( $regex ) ) {
@@ -632,22 +612,100 @@ function wp_html_split( $input ) {
                        . ')*+'         // Loop possessively.
                        . '(?:]]>)?';   // End of comment. If not found, match all input.
 
+               $escaped =
+                         '(?='           // Is the element escaped?
+                       .    '!--'
+                       . '|'
+                       .    '!\[CDATA\['
+                       . ')'
+                       . '(?(?=!-)'      // If yes, which type?
+                       .     $comments
+                       . '|'
+                       .     $cdata
+                       . ')';
+
                $regex =
                          '/('              // Capture the entire match.
                        .     '<'           // Find start of element.
-                       .     '(?(?=!--)'   // Is this a comment?
-                       .         $comments // Find end of comment.
-                       .     '|'
-                       .         '(?(?=!\[CDATA\[)' // Is this a comment?
-                       .             $cdata // Find end of comment.
-                       .         '|'
-                       .             '[^>]*>?' // Find end of element. If not found, match all input.
-                       .         ')'
+                       .     '(?'          // Conditional expression follows.
+                       .         $escaped  // Find end of escaped element.
+                       .     '|'           // ... else ...
+                       .         '[^>]*>?' // Find end of normal element.
                        .     ')'
-                       . ')/s';
+                       . ')/';
        }
 
-       return preg_split( $regex, $input, -1, PREG_SPLIT_DELIM_CAPTURE );
+       return $regex;
+}
+
+/**
+ * Retrieve the combined regular expression for HTML and shortcodes.
+ *
+ * @access private
+ * @ignore
+ * @internal This function will be removed in 4.5.0 per Shortcode API Roadmap.
+ * @since 4.4.0
+ *
+ * @param string $shortcode_regex The result from _get_wptexturize_shortcode_regex().  Optional.
+ * @return string The regular expression
+ */
+function _get_wptexturize_split_regex( $shortcode_regex = '' ) {
+       static $html_regex;
+
+       if ( ! isset( $html_regex ) ) {
+               $comment_regex =
+                         '!'           // Start of comment, after the <.
+                       . '(?:'         // Unroll the loop: Consume everything until --> is found.
+                       .     '-(?!->)' // Dash not followed by end of comment.
+                       .     '[^\-]*+' // Consume non-dashes.
+                       . ')*+'         // Loop possessively.
+                       . '(?:-->)?';   // End of comment. If not found, match all input.
+
+               $html_regex =                    // Needs replaced with wp_html_split() per Shortcode API Roadmap.
+                         '<'                // Find start of element.
+                       . '(?(?=!--)'        // Is this a comment?
+                       .     $comment_regex // Find end of comment.
+                       . '|'
+                       .     '[^>]*>?'      // Find end of element. If not found, match all input.
+                       . ')';
+       }
+
+       if ( empty( $shortcode_regex ) ) {
+               $regex = '/(' . $html_regex . ')/';
+       } else {
+               $regex = '/(' . $html_regex . '|' . $shortcode_regex . ')/';
+       }
+
+       return $regex;
+}
+
+/**
+ * Retrieve the regular expression for shortcodes.
+ *
+ * @access private
+ * @ignore
+ * @internal This function will be removed in 4.5.0 per Shortcode API Roadmap.
+ * @since 4.4.0
+ *
+ * @param array $tagnames List of shortcodes to find.
+ * @return string The regular expression
+ */
+function _get_wptexturize_shortcode_regex( $tagnames ) {
+       $tagregexp = join( '|', array_map( 'preg_quote', $tagnames ) );
+       $tagregexp = "(?:$tagregexp)(?=[\\s\\]\\/])"; // Excerpt of get_shortcode_regex().
+       $regex =
+                 '\['              // Find start of shortcode.
+               . '[\/\[]?'         // Shortcodes may begin with [/ or [[
+               . $tagregexp        // Only match registered shortcodes, because performance.
+               . '(?:'
+               .     '[^\[\]<>]+'  // Shortcodes do not contain other shortcodes. Quantifier critical.
+               . '|'
+               .     '<[^\[\]>]*>' // HTML elements permitted. Prevents matching ] before >.
+               . ')*+'             // Possessive critical.
+               . '\]'              // Find end of shortcode.
+               . '\]?';            // Shortcodes may end with ]]
+
+       return $regex;
 }
 
 /**
@@ -669,7 +727,7 @@ function wp_replace_in_html_tags( $haystack, $replace_pairs ) {
                // Extract $needle and $replace.
                foreach ( $replace_pairs as $needle => $replace );
 
-               // Loop through delimeters (elements) only.
+               // Loop through delimiters (elements) only.
                for ( $i = 1, $c = count( $textarr ); $i < $c; $i += 2 ) {
                        if ( false !== strpos( $textarr[$i], $needle ) ) {
                                $textarr[$i] = str_replace( $needle, $replace, $textarr[$i] );
@@ -680,7 +738,7 @@ function wp_replace_in_html_tags( $haystack, $replace_pairs ) {
                // Extract all $needles.
                $needles = array_keys( $replace_pairs );
 
-               // Loop through delimeters (elements) only.
+               // Loop through delimiters (elements) only.
                for ( $i = 1, $c = count( $textarr ); $i < $c; $i += 2 ) {
                        foreach ( $needles as $needle ) {
                                if ( false !== strpos( $textarr[$i], $needle ) ) {
@@ -765,7 +823,7 @@ function shortcode_unautop( $pee ) {
                . ')'
                . '(?:' . $spaces . ')*+'            // optional trailing whitespace
                . '<\\/p>'                           // closing paragraph
-               . '/s';
+               . '/';
 
        return preg_replace( $pattern, '$1', $pee );
 }
@@ -816,10 +874,14 @@ function seems_utf8( $str ) {
  *
  * @staticvar string $_charset
  *
- * @param string $string         The text which is to be encoded.
- * @param int    $quote_style    Optional. Converts double quotes if set to ENT_COMPAT, both single and double if set to ENT_QUOTES or none if set to ENT_NOQUOTES. Also compatible with old values; converting single quotes if set to 'single', double if set to 'double' or both if otherwise set. Default is ENT_NOQUOTES.
- * @param string $charset        Optional. The character encoding of the string. Default is false.
- * @param bool   $double_encode  Optional. Whether to encode existing html entities. Default is false.
+ * @param string     $string         The text which is to be encoded.
+ * @param int|string $quote_style    Optional. Converts double quotes if set to ENT_COMPAT,
+ *                                   both single and double if set to ENT_QUOTES or none if set to ENT_NOQUOTES.
+ *                                   Also compatible with old values; converting single quotes if set to 'single',
+ *                                   double if set to 'double' or both if otherwise set.
+ *                                   Default is ENT_NOQUOTES.
+ * @param string     $charset        Optional. The character encoding of the string. Default is false.
+ * @param bool       $double_encode  Optional. Whether to encode existing html entities. Default is false.
  * @return string The encoded text with HTML entities.
  */
 function _wp_specialchars( $string, $quote_style = ENT_NOQUOTES, $charset = false, $double_encode = false ) {
@@ -1307,7 +1369,7 @@ function remove_accents( $string ) {
  */
 function sanitize_file_name( $filename ) {
        $filename_raw = $filename;
-       $special_chars = array("?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}", chr(0));
+       $special_chars = array("?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}", "%", "+", chr(0));
        /**
         * Filter the list of characters to remove from a filename.
         *
@@ -1596,9 +1658,9 @@ function sanitize_html_class( $class, $fallback = '' ) {
        //Limit to A-Z,a-z,0-9,_,-
        $sanitized = preg_replace( '/[^A-Za-z0-9_-]/', '', $sanitized );
 
-       if ( '' == $sanitized )
-               $sanitized = $fallback;
-
+       if ( '' == $sanitized && $fallback ) {
+               return sanitize_html_class( $fallback );
+       }
        /**
         * Filter a sanitized HTML class string.
         *
@@ -1839,12 +1901,15 @@ function force_balance_tags( $text ) {
  * it is simply a holder for the 'format_to_edit' filter.
  *
  * @since 0.71
+ * @since 4.4.0 The `$richedit` parameter was renamed to `$rich_text` for clarity.
  *
- * @param string $content  The text about to be edited.
- * @param bool   $richedit Whether the $content should not pass through htmlspecialchars(). Default false (meaning it will be passed).
+ * @param string $content   The text about to be edited.
+ * @param bool   $rich_text Optional. Whether `$content` should be considered rich text,
+ *                          in which case it would not be passed through esc_textarea().
+ *                          Default false.
  * @return string The text after the filter (and possibly htmlspecialchars()) has been run.
  */
-function format_to_edit( $content, $richedit = false ) {
+function format_to_edit( $content, $rich_text = false ) {
        /**
         * Filter the text to be formatted for editing.
         *
@@ -1853,7 +1918,7 @@ function format_to_edit( $content, $richedit = false ) {
         * @param string $content The text, prior to formatting for editing.
         */
        $content = apply_filters( 'format_to_edit', $content );
-       if ( ! $richedit )
+       if ( ! $rich_text )
                $content = esc_textarea( $content );
        return $content;
 }
@@ -1945,10 +2010,7 @@ function addslashes_gpc($gpc) {
 }
 
 /**
- * Navigates through an array and removes slashes from the values.
- *
- * If an array is passed, the array_map() function causes a callback to pass the
- * value back to the function. The slashes from this value will removed.
+ * Navigates through an array, object, or scalar, and removes slashes from the values.
  *
  * @since 2.0.0
  *
@@ -1956,43 +2018,55 @@ function addslashes_gpc($gpc) {
  * @return mixed Stripped value.
  */
 function stripslashes_deep( $value ) {
-       if ( is_array($value) ) {
-               $value = array_map('stripslashes_deep', $value);
-       } elseif ( is_object($value) ) {
-               $vars = get_object_vars( $value );
-               foreach ($vars as $key=>$data) {
-                       $value->{$key} = stripslashes_deep( $data );
-               }
-       } elseif ( is_string( $value ) ) {
-               $value = stripslashes($value);
-       }
-
-       return $value;
+       return map_deep( $value, 'stripslashes_from_strings_only' );
 }
 
 /**
- * Navigates through an array and encodes the values to be used in a URL.
+ * Callback function for `stripslashes_deep()` which strips slashes from strings.
  *
+ * @since 4.4.0
+ *
+ * @param mixed $value The array or string to be stripped.
+ * @return mixed $value The stripped value.
+ */
+function stripslashes_from_strings_only( $value ) {
+       return is_string( $value ) ? stripslashes( $value ) : $value;
+}
+
+/**
+ * Navigates through an array, object, or scalar, and encodes the values to be used in a URL.
  *
  * @since 2.2.0
  *
- * @param array|string $value The array or string to be encoded.
- * @return array|string $value The encoded array (or string from the callback).
+ * @param mixed $value The array or string to be encoded.
+ * @return mixed $value The encoded value.
  */
 function urlencode_deep( $value ) {
-       return is_array( $value ) ? array_map( 'urlencode_deep', $value ) : urlencode( $value );
+       return map_deep( $value, 'urlencode' );
 }
 
 /**
- * Navigates through an array and raw encodes the values to be used in a URL.
+ * Navigates through an array, object, or scalar, and raw-encodes the values to be used in a URL.
  *
  * @since 3.4.0
  *
- * @param array|string $value The array or string to be encoded.
- * @return array|string $value The encoded array (or string from the callback).
+ * @param mixed $value The array or string to be encoded.
+ * @return mixed $value The encoded value.
  */
 function rawurlencode_deep( $value ) {
-       return is_array( $value ) ? array_map( 'rawurlencode_deep', $value ) : rawurlencode( $value );
+       return map_deep( $value, 'rawurlencode' );
+}
+
+/**
+ * Navigates through an array, object, or scalar, and decodes URL-encoded values
+ *
+ * @since 4.4.0
+ *
+ * @param mixed $value The array or string to be decoded.
+ * @return mixed $value The decoded value.
+ */
+function urldecode_deep( $value ) {
+       return map_deep( $value, 'urldecode' );
 }
 
 /**
@@ -2073,15 +2147,17 @@ function _make_web_ftp_clickable_cb( $matches ) {
        $ret = '';
        $dest = $matches[2];
        $dest = 'http://' . $dest;
-       $dest = esc_url($dest);
-       if ( empty($dest) )
-               return $matches[0];
 
        // removed trailing [.,;:)] from URL
        if ( in_array( substr($dest, -1), array('.', ',', ';', ':', ')') ) === true ) {
                $ret = substr($dest, -1);
                $dest = substr($dest, 0, strlen($dest)-1);
        }
+
+       $dest = esc_url($dest);
+       if ( empty($dest) )
+               return $matches[0];
+
        return $matches[1] . "<a href=\"$dest\" rel=\"nofollow\">$dest</a>$ret";
 }
 
@@ -2255,8 +2331,23 @@ function wp_rel_nofollow( $text ) {
  */
 function wp_rel_nofollow_callback( $matches ) {
        $text = $matches[1];
-       $text = str_replace(array(' rel="nofollow"', " rel='nofollow'"), '', $text);
-       return "<a $text rel=\"nofollow\">";
+       $atts = shortcode_parse_atts( $matches[1] );
+       $rel = 'nofollow';
+       if ( ! empty( $atts['rel'] ) ) {
+               $parts = array_map( 'trim', explode( ' ', $atts['rel'] ) );
+               if ( false === array_search( 'nofollow', $parts ) ) {
+                       $parts[] = 'nofollow';
+               }
+               $rel = implode( ' ', $parts );
+               unset( $atts['rel'] );
+
+               $html = '';
+               foreach ( $atts as $name => $value ) {
+                       $html .= "{$name}=\"$value\" ";
+               }
+               $text = trim( $html );
+       }
+       return "<a $text rel=\"$rel\">";
 }
 
 /**
@@ -2385,7 +2476,6 @@ function is_email( $email, $deprecated = false ) {
                 *
                 * @param bool   $is_email Whether the email address has passed the is_email() checks. Default false.
                 * @param string $email    The email address being checked.
-                * @param string $message  An explanatory message to the user.
                 * @param string $context  Context under which the email was tested.
                 */
                return apply_filters( 'is_email', false, $email, 'email_too_short' );
@@ -2498,13 +2588,19 @@ function get_gmt_from_date( $string, $format = 'Y-m-d H:i:s' ) {
        $tz = get_option( 'timezone_string' );
        if ( $tz ) {
                $datetime = date_create( $string, new DateTimeZone( $tz ) );
-               if ( ! $datetime )
+               if ( ! $datetime ) {
                        return gmdate( $format, 0 );
+               }
                $datetime->setTimezone( new DateTimeZone( 'UTC' ) );
                $string_gmt = $datetime->format( $format );
        } else {
-               if ( ! preg_match( '#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches ) )
-                       return gmdate( $format, 0 );
+               if ( ! preg_match( '#([0-9]{1,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})#', $string, $matches ) ) {
+                       $datetime = strtotime( $string );
+                       if ( false === $datetime ) {
+                               return gmdate( $format, 0 );
+                       }
+                       return gmdate( $format, $datetime );
+               }
                $string_time = gmmktime( $matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1] );
                $string_gmt = gmdate( $format, $string_time - get_option( 'gmt_offset' ) * HOUR_IN_SECONDS );
        }
@@ -2749,13 +2845,13 @@ function human_time_diff( $from, $to = '' ) {
                if ( $days <= 1 )
                        $days = 1;
                $since = sprintf( _n( '%s day', '%s days', $days ), $days );
-       } elseif ( $diff < 30 * DAY_IN_SECONDS && $diff >= WEEK_IN_SECONDS ) {
+       } elseif ( $diff < MONTH_IN_SECONDS && $diff >= WEEK_IN_SECONDS ) {
                $weeks = round( $diff / WEEK_IN_SECONDS );
                if ( $weeks <= 1 )
                        $weeks = 1;
                $since = sprintf( _n( '%s week', '%s weeks', $weeks ), $weeks );
-       } elseif ( $diff < YEAR_IN_SECONDS && $diff >= 30 * DAY_IN_SECONDS ) {
-               $months = round( $diff / ( 30 * DAY_IN_SECONDS ) );
+       } elseif ( $diff < YEAR_IN_SECONDS && $diff >= MONTH_IN_SECONDS ) {
+               $months = round( $diff / MONTH_IN_SECONDS );
                if ( $months <= 1 )
                        $months = 1;
                $since = sprintf( _n( '%s month', '%s months', $months ), $months );
@@ -3242,7 +3338,7 @@ function _deep_replace( $search, $subject ) {
  *
  * @since 2.8.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string|array $data Unescaped data
  * @return string|array Escaped data
@@ -3272,14 +3368,22 @@ function esc_url( $url, $protocols = null, $_context = 'display' ) {
 
        if ( '' == $url )
                return $url;
-       $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\\x80-\\xff]|i', '', $url);
+
+       $url = str_replace( ' ', '%20', $url );
+       $url = preg_replace('|[^a-z0-9-~+_.?#=!&;,/:%@$\|*\'()\[\]\\x80-\\xff]|i', '', $url);
+
+       if ( '' === $url ) {
+               return $url;
+       }
+
        if ( 0 !== stripos( $url, 'mailto:' ) ) {
                $strip = array('%0d', '%0a', '%0D', '%0A');
                $url = _deep_replace($strip, $url);
        }
+
        $url = str_replace(';//', '://', $url);
        /* If the URL doesn't appear to contain a scheme, we
-        * presume it needs http:// appended (unless a relative
+        * presume it needs http:// prepended (unless a relative
         * link starting with /, # or ? or a php file).
         */
        if ( strpos($url, ':') === false && ! in_array( $url[0], array( '/', '#', '?' ) ) &&
@@ -3293,6 +3397,43 @@ function esc_url( $url, $protocols = null, $_context = 'display' ) {
                $url = str_replace( "'", '&#039;', $url );
        }
 
+       if ( ( false !== strpos( $url, '[' ) ) || ( false !== strpos( $url, ']' ) ) ) {
+
+               $parsed = wp_parse_url( $url );
+               $front  = '';
+
+               if ( isset( $parsed['scheme'] ) ) {
+                       $front .= $parsed['scheme'] . '://';
+               } elseif ( '/' === $url[0] ) {
+                       $front .= '//';
+               }
+
+               if ( isset( $parsed['user'] ) ) {
+                       $front .= $parsed['user'];
+               }
+
+               if ( isset( $parsed['pass'] ) ) {
+                       $front .= ':' . $parsed['pass'];
+               }
+
+               if ( isset( $parsed['user'] ) || isset( $parsed['pass'] ) ) {
+                       $front .= '@';
+               }
+
+               if ( isset( $parsed['host'] ) ) {
+                       $front .= $parsed['host'];
+               }
+
+               if ( isset( $parsed['port'] ) ) {
+                       $front .= ':' . $parsed['port'];
+               }
+
+               $end_dirty = str_replace( $front, '', $url );
+               $end_clean = str_replace( array( '[', ']' ), array( '%5B', '%5D' ), $end_dirty );
+               $url       = str_replace( $end_dirty, $end_clean, $url );
+
+       }
+
        if ( '/' === $url[0] ) {
                $good_protocol_url = $url;
        } else {
@@ -3481,7 +3622,7 @@ function tag_escape( $tag_name ) {
  * @return string Absolute path.
  */
 function wp_make_link_relative( $link ) {
-       return preg_replace( '|^(https?:)?//[^/]+(/.*)|i', '$2', $link );
+       return preg_replace( '|^(https?:)?//[^/]+(/?.*)|i', '$2', $link );
 }
 
 /**
@@ -3492,7 +3633,7 @@ function wp_make_link_relative( $link ) {
  *
  * @since 2.0.5
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $option The name of the option.
  * @param string $value  The unsanitised value.
@@ -3522,6 +3663,8 @@ function sanitize_option( $option, $value ) {
                case 'thumbnail_size_h':
                case 'medium_size_w':
                case 'medium_size_h':
+               case 'medium_large_size_w':
+               case 'medium_large_size_h':
                case 'large_size_w':
                case 'large_size_h':
                case 'mailserver_port':
@@ -3737,6 +3880,28 @@ function sanitize_option( $option, $value ) {
        return apply_filters( "sanitize_option_{$option}", $value, $option, $original_value );
 }
 
+/**
+ * Maps a function to all non-iterable elements of an array or an object.
+ *
+ * This is similar to `array_walk_recursive()` but acts upon objects too.
+ *
+ * @since 4.4.0
+ *
+ * @param mixed    $value    The array, object, or scalar.
+ * @param callable $callback The function to map onto $value.
+ * @return The value with the callback applied to all non-arrays and non-objects inside it.
+ */
+function map_deep( $value, $callback ) {
+       if ( is_array( $value ) || is_object( $value ) ) {
+               foreach ( $value as &$item ) {
+                       $item = map_deep( $item, $callback );
+               }
+               return $value;
+       } else {
+               return call_user_func( $callback, $value );
+       }
+}
+
 /**
  * Parses a string into variables to be stored in an array.
  *
@@ -3985,7 +4150,7 @@ function _links_add_base( $m ) {
        return $m[1] . '=' . $m[2] .
                ( preg_match( '#^(\w{1,20}):#', $m[3], $protocol ) && in_array( $protocol[1], wp_allowed_protocols() ) ?
                        $m[3] :
-                       WP_HTTP::make_absolute_url( $m[3], $_links_add_base )
+                       WP_Http::make_absolute_url( $m[3], $_links_add_base )
                )
                . $m[2];
 }
@@ -4406,7 +4571,7 @@ function print_emoji_detection_script() {
                ?>
                <script type="text/javascript">
                        window._wpemojiSettings = <?php echo wp_json_encode( $settings ); ?>;
-                       !function(a,b,c){function d(a){var c=b.createElement("canvas"),d=c.getContext&&c.getContext("2d");return d&&d.fillText?(d.textBaseline="top",d.font="600 32px Arial","flag"===a?(d.fillText(String.fromCharCode(55356,56812,55356,56807),0,0),c.toDataURL().length>3e3):(d.fillText(String.fromCharCode(55357,56835),0,0),0!==d.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
+                       !function(a,b,c){function d(a){var c=b.createElement("canvas"),d=c.getContext&&c.getContext("2d");return d&&d.fillText?(d.textBaseline="top",d.font="600 32px Arial","flag"===a?(d.fillText(String.fromCharCode(55356,56806,55356,56826),0,0),c.toDataURL().length>3e3):("simple"===a?d.fillText(String.fromCharCode(55357,56835),0,0):d.fillText(String.fromCharCode(55356,57135),0,0),0!==d.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
                </script>
                <?php
        }
@@ -4440,7 +4605,7 @@ function wp_encode_emoji( $content ) {
                $matches = array();
                if ( preg_match_all( $regex, $content, $matches ) ) {
                        if ( ! empty( $matches[1] ) ) {
-                               foreach( $matches[1] as $emoji ) {
+                               foreach ( $matches[1] as $emoji ) {
                                        /*
                                         * UTF-32's hex encoding is the same as HTML's hex encoding.
                                         * So, by converting the emoji from UTF-8 to UTF-32, we magically
@@ -4607,3 +4772,23 @@ function wp_staticize_emoji_for_email( $mail ) {
 
        return $mail;
 }
+
+/**
+ * Shorten an URL, to be used as link text.
+ *
+ * @since 1.2.0
+ * @since 4.4.0 Moved to wp-includes/formatting.php from wp-admin/includes/misc.php and added $length param.
+ *
+ * @param string $url    URL to shorten.
+ * @param int    $length Optional. Maximum length of the shortened URL. Default 35 characters.
+ * @return string Shortened URL.
+ */
+function url_shorten( $url, $length = 35 ) {
+       $stripped = str_replace( array( 'https://', 'http://', 'www.' ), '', $url );
+       $short_url = untrailingslashit( $stripped );
+
+       if ( strlen( $short_url ) > $length ) {
+               $short_url = substr( $short_url, 0, $length - 3 ) . '&hellip;';
+       }
+       return $short_url;
+}
\ No newline at end of file
index 30fac4748012700ec3130560277061fa3d715554..e3fb35317c9533226c1e70d1e312382c484cd9d6 100644 (file)
@@ -132,7 +132,7 @@ function date_i18n( $dateformatstring, $unixtimestamp = false, $gmt = false ) {
                if ( $timezone_string ) {
                        $timezone_object = timezone_open( $timezone_string );
                        $date_object = date_create( null, $timezone_object );
-                       foreach( $timezone_formats as $timezone_format ) {
+                       foreach ( $timezone_formats as $timezone_format ) {
                                if ( false !== strpos( $dateformatstring, $timezone_format ) ) {
                                        $formatted = date_format( $date_object, $timezone_format );
                                        $dateformatstring = ' '.$dateformatstring;
@@ -158,6 +158,47 @@ function date_i18n( $dateformatstring, $unixtimestamp = false, $gmt = false ) {
        return $j;
 }
 
+/**
+ * Determines if the date should be declined.
+ *
+ * If the locale specifies that month names require a genitive case in certain
+ * formats (like 'j F Y'), the month name will be replaced with a correct form.
+ *
+ * @since 4.4.0
+ *
+ * @param string $date Formatted date string.
+ * @return string The date, declined if locale specifies it.
+ */
+function wp_maybe_decline_date( $date ) {
+       global $wp_locale;
+
+       /* translators: If months in your language require a genitive case,
+        * translate this to 'on'. Do not translate into your own language.
+        */
+       if ( 'on' === _x( 'off', 'decline months names: on or off' ) ) {
+               // Match a format like 'j F Y' or 'j. F'
+               if ( @preg_match( '#^\d{1,2}\.? \w+#u', $date ) ) {
+                       $months = $wp_locale->month;
+
+                       foreach ( $months as $key => $month ) {
+                               $months[ $key ] = '#' . $month . '#';
+                       }
+
+                       $date = preg_replace( $months, $wp_locale->month_genitive, $date );
+               }
+       }
+
+       // Used for locale-specific rules
+       $locale = get_locale();
+
+       if ( 'ca' === $locale ) {
+               // " de abril| de agost| de octubre..." -> " d'abril| d'agost| d'octubre..."
+               $date = preg_replace( '# de ([ao])#i', " d'\\1", $date );
+       }
+
+       return $date;
+}
+
 /**
  * Convert integer number to format based on the locale.
  *
@@ -171,7 +212,12 @@ function date_i18n( $dateformatstring, $unixtimestamp = false, $gmt = false ) {
  */
 function number_format_i18n( $number, $decimals = 0 ) {
        global $wp_locale;
-       $formatted = number_format( $number, absint( $decimals ), $wp_locale->number_format['decimal_point'], $wp_locale->number_format['thousands_sep'] );
+
+       if ( isset( $wp_locale ) ) {
+               $formatted = number_format( $number, absint( $decimals ), $wp_locale->number_format['decimal_point'], $wp_locale->number_format['thousands_sep'] );
+       } else {
+               $formatted = number_format( $number, absint( $decimals ) );
+       }
 
        /**
         * Filter the number formatted based on the locale.
@@ -205,12 +251,11 @@ function number_format_i18n( $number, $decimals = 0 ) {
  */
 function size_format( $bytes, $decimals = 0 ) {
        $quant = array(
-               // ========================= Origin ====
-               'TB' => 1099511627776,  // pow( 1024, 4)
-               'GB' => 1073741824,     // pow( 1024, 3)
-               'MB' => 1048576,        // pow( 1024, 2)
-               'kB' => 1024,           // pow( 1024, 1)
-               'B'  => 1,              // pow( 1024, 0)
+               'TB' => TB_IN_BYTES,
+               'GB' => GB_IN_BYTES,
+               'MB' => MB_IN_BYTES,
+               'kB' => KB_IN_BYTES,
+               'B'  => 1,
        );
 
        foreach ( $quant as $unit => $mag ) {
@@ -256,8 +301,8 @@ function get_weekstartend( $mysqlstring, $start_of_week = '' ) {
        // The most recent week start day on or before $day.
        $start = $day - DAY_IN_SECONDS * ( $weekday - $start_of_week );
 
-       // $start + 7 days - 1 second.
-       $end = $start + 7 * DAY_IN_SECONDS - 1;
+       // $start + 1 week - 1 second.
+       $end = $start + WEEK_IN_SECONDS - 1;
        return compact( 'start', 'end' );
 }
 
@@ -495,7 +540,7 @@ function wp_extract_urls( $content ) {
  *
  * @since 1.5.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $content Post Content.
  * @param int    $post_ID Post ID.
@@ -532,6 +577,19 @@ function do_enclose( $content, $post_ID ) {
                }
        }
 
+       /**
+        * Filter the list of enclosure links before querying the database.
+        *
+        * Allows for the addition and/or removal of potential enclosures to save
+        * to postmeta before checking the database for existing enclosures.
+        *
+        * @since 4.4.0
+        *
+        * @param array $post_links An array of enclosure links.
+        * @param int   $post_ID    Post ID.
+        */
+       $post_links = apply_filters( 'enclosure_links', $post_links, $post_ID );
+
        foreach ( (array) $post_links as $url ) {
                if ( $url != '' && !$wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = 'enclosure' AND meta_value LIKE %s", $post_ID, $wpdb->esc_like( $url ) . '%' ) ) ) {
 
@@ -563,62 +621,6 @@ function do_enclose( $content, $post_ID ) {
        }
 }
 
-/**
- * Perform a HTTP HEAD or GET request.
- *
- * If $file_path is a writable filename, this will do a GET request and write
- * the file to that path.
- *
- * @since 2.5.0
- *
- * @param string      $url       URL to fetch.
- * @param string|bool $file_path Optional. File path to write request to. Default false.
- * @param int         $red       Optional. The number of Redirects followed, Upon 5 being hit,
- *                               returns false. Default 1.
- * @return bool|string False on failure and string of headers if HEAD request.
- */
-function wp_get_http( $url, $file_path = false, $red = 1 ) {
-       @set_time_limit( 60 );
-
-       if ( $red > 5 )
-               return false;
-
-       $options = array();
-       $options['redirection'] = 5;
-
-       if ( false == $file_path )
-               $options['method'] = 'HEAD';
-       else
-               $options['method'] = 'GET';
-
-       $response = wp_safe_remote_request( $url, $options );
-
-       if ( is_wp_error( $response ) )
-               return false;
-
-       $headers = wp_remote_retrieve_headers( $response );
-       $headers['response'] = wp_remote_retrieve_response_code( $response );
-
-       // WP_HTTP no longer follows redirects for HEAD requests.
-       if ( 'HEAD' == $options['method'] && in_array($headers['response'], array(301, 302)) && isset( $headers['location'] ) ) {
-               return wp_get_http( $headers['location'], $file_path, ++$red );
-       }
-
-       if ( false == $file_path )
-               return $headers;
-
-       // GET request - write it to the supplied filename
-       $out_fp = fopen($file_path, 'w');
-       if ( !$out_fp )
-               return $headers;
-
-       fwrite( $out_fp,  wp_remote_retrieve_body( $response ) );
-       fclose($out_fp);
-       clearstatcache();
-
-       return $headers;
-}
-
 /**
  * Retrieve HTTP Headers from URL.
  *
@@ -726,22 +728,39 @@ function _http_build_query( $data, $prefix = null, $sep = null, $key = '', $urle
 }
 
 /**
- * Retrieve a modified URL query string.
+ * Retrieves a modified URL query string.
+ *
+ * You can rebuild the URL and append query variables to the URL query by using this function.
+ * There are two ways to use this function; either a single key and value, or an associative array.
+ *
+ * Using a single key and value:
+ *
+ *     add_query_arg( 'key', 'value', 'http://example.com' );
  *
- * You can rebuild the URL and append a new query variable to the URL query by
- * using this function. You can also retrieve the full URL with query data.
+ * Using an associative array:
  *
- * Adding a single key & value or an associative array. Setting a key value to
- * an empty string removes the key. Omitting oldquery_or_uri uses the $_SERVER
- * value. Additional values provided are expected to be encoded appropriately
- * with urlencode() or rawurlencode().
+ *     add_query_arg( array(
+ *         'key1' => 'value1',
+ *         'key2' => 'value2',
+ *     ), 'http://example.com' );
+ *
+ * Omitting the URL from either use results in the current URL being used
+ * (the value of `$_SERVER['REQUEST_URI']`).
+ *
+ * Values are expected to be encoded appropriately with urlencode() or rawurlencode().
+ *
+ * Setting any query variable's value to boolean false removes the key (see remove_query_arg()).
+ *
+ * Important: The return value of add_query_arg() is not escaped by default. Output should be
+ * late-escaped with esc_url() or similar to help prevent vulnerability to cross-site scripting
+ * (XSS) attacks.
  *
  * @since 1.5.0
  *
- * @param string|array $param1 Either newkey or an associative_array.
- * @param string       $param2 Either newvalue or oldquery or URI.
- * @param string       $param3 Optional. Old query or URI.
- * @return string New URL query string.
+ * @param string|array $key   Either a query variable key, or an associative array of query variables.
+ * @param string       $value Optional. Either a query variable value, or a URL to act upon.
+ * @param string       $url   Optional. A URL to act upon.
+ * @return string New URL query string (unescaped).
  */
 function add_query_arg() {
        $args = func_get_args();
@@ -807,12 +826,12 @@ function add_query_arg() {
 }
 
 /**
- * Removes an item or list from the query string.
+ * Removes an item or items from a query string.
  *
  * @since 1.5.0
  *
  * @param string|array $key   Query key or keys to remove.
- * @param bool|string  $query Optional. When false uses the $_SERVER value. Default false.
+ * @param bool|string  $query Optional. When false uses the current URL. Default false.
  * @return string New URL query string.
  */
 function remove_query_arg( $key, $query = false ) {
@@ -824,6 +843,48 @@ function remove_query_arg( $key, $query = false ) {
        return add_query_arg( $key, false, $query );
 }
 
+/**
+ * Returns an array of single-use query variable names that can be removed from a URL.
+ *
+ * @since 4.4.0
+ *
+ * @return array An array of parameters to remove from the URL.
+ */
+function wp_removable_query_args() {
+       $removable_query_args = array(
+               'activate',
+               'activated',
+               'approved',
+               'deactivate',
+               'deleted',
+               'disabled',
+               'enabled',
+               'error',
+               'locked',
+               'message',
+               'same',
+               'saved',
+               'settings-updated',
+               'skipped',
+               'spammed',
+               'trashed',
+               'unspammed',
+               'untrashed',
+               'update',
+               'updated',
+               'wp-post-new-reload',
+       );
+
+       /**
+        * Filter the list of query variables to remove.
+        *
+        * @since 4.2.0
+        *
+        * @param array $removable_query_args An array of query variables to remove from a URL.
+        */
+       return apply_filters( 'removable_query_args', $removable_query_args );
+}
+
 /**
  * Walks the array while sanitizing the contents.
  *
@@ -979,20 +1040,23 @@ function get_status_header_desc( $code ) {
  * Set HTTP status header.
  *
  * @since 2.0.0
+ * @since 4.4.0 Added the `$description` parameter.
  *
  * @see get_status_header_desc()
  *
- * @param int $code HTTP status code.
+ * @param int    $code        HTTP status code.
+ * @param string $description Optional. A custom description for the HTTP status.
  */
-function status_header( $code ) {
-       $description = get_status_header_desc( $code );
+function status_header( $code, $description = '' ) {
+       if ( ! $description ) {
+               $description = get_status_header_desc( $code );
+       }
 
-       if ( empty( $description ) )
+       if ( empty( $description ) ) {
                return;
+       }
 
-       $protocol = $_SERVER['SERVER_PROTOCOL'];
-       if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
-               $protocol = 'HTTP/1.0';
+       $protocol = wp_get_server_protocol();
        $status_header = "$protocol $code $description";
        if ( function_exists( 'apply_filters' ) )
 
@@ -1080,7 +1144,7 @@ function nocache_headers() {
                }
        }
 
-       foreach( $headers as $name => $field_value )
+       foreach ( $headers as $name => $field_value )
                @header("{$name}: {$field_value}");
 }
 
@@ -1148,20 +1212,23 @@ function do_feed() {
        if ( $feed == '' || $feed == 'feed' )
                $feed = get_default_feed();
 
-       $hook = 'do_feed_' . $feed;
-       if ( ! has_action( $hook ) )
+       if ( ! has_action( "do_feed_{$feed}" ) ) {
                wp_die( __( 'ERROR: This is not a valid feed template.' ), '', array( 'response' => 404 ) );
+       }
 
        /**
         * Fires once the given feed is loaded.
         *
-        * The dynamic hook name, $hook, refers to the feed name.
+        * The dynamic portion of the hook name, `$feed`, refers to the feed template name.
+        * Possible values include: 'rdf', 'rss', 'rss2', and 'atom'.
         *
         * @since 2.1.0
+        * @since 4.4.0 The `$feed` parameter was added.
         *
-        * @param bool $is_comment_feed Whether the feed is a comment feed.
+        * @param bool   $is_comment_feed Whether the feed is a comment feed.
+        * @param string $feed            The feed name.
         */
-       do_action( $hook, $wp_query->is_comment_feed );
+       do_action( "do_feed_{$feed}", $wp_query->is_comment_feed, $feed );
 }
 
 /**
@@ -1244,6 +1311,7 @@ function do_robots() {
                $site_url = parse_url( site_url() );
                $path = ( !empty( $site_url['path'] ) ) ? $site_url['path'] : '';
                $output .= "Disallow: $path/wp-admin/\n";
+               $output .= "Allow: $path/wp-admin/admin-ajax.php\n";
        }
 
        /**
@@ -1283,7 +1351,7 @@ function is_blog_installed() {
                return true;
 
        $suppress = $wpdb->suppress_errors();
-       if ( ! defined( 'WP_INSTALLING' ) ) {
+       if ( ! wp_installing() ) {
                $alloptions = wp_load_alloptions();
        }
        // If siteurl is not set to autoload, check it specifically
@@ -1590,10 +1658,12 @@ function path_join( $base, $path ) {
 /**
  * Normalize a filesystem path.
  *
- * Replaces backslashes with forward slashes for Windows systems, and ensures
- * no duplicate slashes exist.
+ * On windows systems, replaces backslashes with forward slashes
+ * and forces upper-case drive letters.
+ * Ensures that no duplicate slashes exist.
  *
  * @since 3.9.0
+ * @since 4.4.0 Ensures upper-case drive letters on Windows systems.
  *
  * @param string $path Path to normalize.
  * @return string Normalized path.
@@ -1601,6 +1671,9 @@ function path_join( $base, $path ) {
 function wp_normalize_path( $path ) {
        $path = str_replace( '\\', '/', $path );
        $path = preg_replace( '|/+|','/', $path );
+       if ( ':' === substr( $path, 1, 1 ) ) {
+               $path = ucfirst( $path );
+       }
        return $path;
 }
 
@@ -1866,7 +1939,7 @@ function wp_upload_dir( $time = null ) {
  *
  * @param string   $dir                      Directory.
  * @param string   $filename                 File name.
- * @param callback $unique_filename_callback Callback. Default null.
+ * @param callable $unique_filename_callback Callback. Default null.
  * @return string New filename, if given wasn't unique.
  */
 function wp_unique_filename( $dir, $filename, $unique_filename_callback = null ) {
@@ -1899,18 +1972,19 @@ function wp_unique_filename( $dir, $filename, $unique_filename_callback = null )
                        // Check for both lower and upper case extension or image sub-sizes may be overwritten.
                        while ( file_exists($dir . "/$filename") || file_exists($dir . "/$filename2") ) {
                                $new_number = $number + 1;
-                               $filename = str_replace( "$number$ext", "$new_number$ext", $filename );
-                               $filename2 = str_replace( "$number$ext2", "$new_number$ext2", $filename2 );
+                               $filename = str_replace( array( "-$number$ext", "$number$ext" ), "-$new_number$ext", $filename );
+                               $filename2 = str_replace( array( "-$number$ext2", "$number$ext2" ), "-$new_number$ext2", $filename2 );
                                $number = $new_number;
                        }
                        return $filename2;
                }
 
                while ( file_exists( $dir . "/$filename" ) ) {
-                       if ( '' == "$number$ext" )
-                               $filename = $filename . ++$number . $ext;
-                       else
-                               $filename = str_replace( "$number$ext", ++$number . $ext, $filename );
+                       if ( '' == "$number$ext" ) {
+                               $filename = "$filename-" . ++$number;
+                       } else {
+                               $filename = str_replace( array( "-$number$ext", "$number$ext" ), "-" . ++$number . $ext, $filename );
+                       }
                }
        }
 
@@ -2003,7 +2077,8 @@ function wp_upload_bits( $name, $deprecated, $bits, $time = null ) {
        // Compute the URL
        $url = $upload['url'] . "/$filename";
 
-       return array( 'file' => $new_file, 'url' => $url, 'error' => false );
+       /** This filter is documented in wp-admin/includes/file.php */
+       return apply_filters( 'wp_handle_upload', array( 'file' => $new_file, 'url' => $url, 'type' => $wp_filetype['type'], 'error' => false ), 'sideload' );
 }
 
 /**
@@ -2387,7 +2462,7 @@ function wp_die( $message = '', $title = '', $args = array() ) {
                 *
                 * @since 3.4.0
                 *
-                * @param callback $function Callback function name.
+                * @param callable $function Callback function name.
                 */
                $function = apply_filters( 'wp_die_ajax_handler', '_ajax_wp_die_handler' );
        } elseif ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST ) {
@@ -2396,7 +2471,7 @@ function wp_die( $message = '', $title = '', $args = array() ) {
                 *
                 * @since 3.4.0
                 *
-                * @param callback $function Callback function name.
+                * @param callable $function Callback function name.
                 */
                $function = apply_filters( 'wp_die_xmlrpc_handler', '_xmlrpc_wp_die_handler' );
        } else {
@@ -2405,7 +2480,7 @@ function wp_die( $message = '', $title = '', $args = array() ) {
                 *
                 * @since 3.0.0
                 *
-                * @param callback $function Callback function name.
+                * @param callable $function Callback function name.
                 */
                $function = apply_filters( 'wp_die_handler', '_default_wp_die_handler' );
        }
@@ -2522,15 +2597,25 @@ function _default_wp_die_handler( $message, $title = '', $args = array() ) {
                        font-size: 14px ;
                }
                a {
-                       color: #21759B;
-                       text-decoration: none;
+                       color: #0073aa;
                }
-               a:hover {
-                       color: #D54E21;
+               a:hover,
+               a:active {
+                       color: #00a0d2;
+               }
+               a:focus {
+                       color: #124964;
+                   -webkit-box-shadow:
+                       0 0 0 1px #5b9dd9,
+                               0 0 2px 1px rgba(30, 140, 190, .8);
+                   box-shadow:
+                       0 0 0 1px #5b9dd9,
+                               0 0 2px 1px rgba(30, 140, 190, .8);
+                       outline: none;
                }
                .button {
                        background: #f7f7f7;
-                       border: 1px solid #cccccc;
+                       border: 1px solid #ccc;
                        color: #555;
                        display: inline-block;
                        text-decoration: none;
@@ -2548,40 +2633,46 @@ function _default_wp_die_handler( $message, $title = '', $args = array() ) {
                        -moz-box-sizing:    border-box;
                        box-sizing:         border-box;
 
-                       -webkit-box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.08);
-                       box-shadow: inset 0 1px 0 #fff, 0 1px 0 rgba(0,0,0,.08);
+                       -webkit-box-shadow: 0 1px 0 #ccc;
+                       box-shadow: 0 1px 0 #ccc;
                        vertical-align: top;
                }
 
                .button.button-large {
-                       height: 29px;
+                       height: 30px;
                        line-height: 28px;
-                       padding: 0 12px;
+                       padding: 0 12px 2px;
                }
 
                .button:hover,
                .button:focus {
                        background: #fafafa;
                        border-color: #999;
-                       color: #222;
+                       color: #23282d;
                }
 
                .button:focus  {
-                       -webkit-box-shadow: 1px 1px 1px rgba(0,0,0,.2);
-                       box-shadow: 1px 1px 1px rgba(0,0,0,.2);
+                       border-color: #5b9dd9;
+                       -webkit-box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
+                       box-shadow: 0 0 3px rgba( 0, 115, 170, .8 );
+                       outline: none;
                }
 
                .button:active {
                        background: #eee;
                        border-color: #999;
-                       color: #333;
-                       -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+                       -webkit-box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
                        box-shadow: inset 0 2px 5px -3px rgba( 0, 0, 0, 0.5 );
+                       -webkit-transform: translateY(1px);
+                       -ms-transform: translateY(1px);
+                       transform: translateY(1px);
                }
 
-               <?php if ( 'rtl' == $text_direction ) : ?>
-               body { font-family: Tahoma, Arial; }
-               <?php endif; ?>
+               <?php
+               if ( 'rtl' == $text_direction ) {
+                       echo 'body { font-family: Tahoma, Arial; }';
+               }
+               ?>
        </style>
 </head>
 <body id="error-page">
@@ -2677,7 +2768,10 @@ function wp_json_encode( $data, $options = 0, $depth = 512 ) {
                $args = array( $data );
        }
 
-       $json = call_user_func_array( 'json_encode', $args );
+       // Prepare the data for JSON serialization.
+       $data = _wp_json_prepare_data( $data );
+
+       $json = @call_user_func_array( 'json_encode', $args );
 
        // If json_encode() was successful, no need to do more sanity checking.
        // ... unless we're in an old version of PHP, and json_encode() returned
@@ -2790,6 +2884,56 @@ function _wp_json_convert_string( $string ) {
        }
 }
 
+/**
+ * Prepares response data to be serialized to JSON.
+ *
+ * This supports the JsonSerializable interface for PHP 5.2-5.3 as well.
+ *
+ * @ignore
+ * @since 4.4.0
+ * @access private
+ *
+ * @param mixed $data Native representation.
+ * @return bool|int|float|null|string|array Data ready for `json_encode()`.
+ */
+function _wp_json_prepare_data( $data ) {
+       if ( ! defined( 'WP_JSON_SERIALIZE_COMPATIBLE' ) || WP_JSON_SERIALIZE_COMPATIBLE === false ) {
+               return $data;
+       }
+
+       switch ( gettype( $data ) ) {
+               case 'boolean':
+               case 'integer':
+               case 'double':
+               case 'string':
+               case 'NULL':
+                       // These values can be passed through.
+                       return $data;
+
+               case 'array':
+                       // Arrays must be mapped in case they also return objects.
+                       return array_map( '_wp_json_prepare_data', $data );
+
+               case 'object':
+                       // If this is an incomplete object (__PHP_Incomplete_Class), bail.
+                       if ( ! is_object( $data ) ) {
+                               return null;
+                       }
+
+                       if ( $data instanceof JsonSerializable ) {
+                               $data = $data->jsonSerialize();
+                       } else {
+                               $data = get_object_vars( $data );
+                       }
+
+                       // Now, pass the array (or whatever was returned from jsonSerialize through).
+                       return _wp_json_prepare_data( $data );
+
+               default:
+                       return null;
+       }
+}
+
 /**
  * Send a JSON response back to an Ajax request.
  *
@@ -3110,6 +3254,24 @@ function wp_array_slice_assoc( $array, $keys ) {
        return $slice;
 }
 
+/**
+ * Determines if the variable is a numeric-indexed array.
+ *
+ * @since 4.4.0
+ *
+ * @param mixed $data Variable to check.
+ * @return bool Whether the variable is a list.
+ */
+function wp_is_numeric_array( $data ) {
+       if ( ! is_array( $data ) ) {
+               return false;
+       }
+
+       $keys = array_keys( $data );
+       $string_keys = array_filter( $keys, 'is_string' );
+       return count( $string_keys ) === 0;
+}
+
 /**
  * Filters a list of objects, based on a set of key => value arguments.
  *
@@ -3327,7 +3489,7 @@ function dead_db() {
        }
 
        // If installing or in the admin, provide the verbose message.
-       if ( defined('WP_INSTALLING') || defined('WP_ADMIN') )
+       if ( wp_installing() || defined( 'WP_ADMIN' ) )
                wp_die($wpdb->error);
 
        // Otherwise, be terse.
@@ -3618,11 +3780,16 @@ function _doing_it_wrong( $function, $message, $version ) {
        if ( WP_DEBUG && apply_filters( 'doing_it_wrong_trigger_error', true ) ) {
                if ( function_exists( '__' ) ) {
                        $version = is_null( $version ) ? '' : sprintf( __( '(This message was added in version %s.)' ), $version );
-                       $message .= ' ' . __( 'Please see <a href="https://codex.wordpress.org/Debugging_in_WordPress">Debugging in WordPress</a> for more information.' );
+                       /* translators: %s: Codex URL */
+                       $message .= ' ' . sprintf( __( 'Please see <a href="%s">Debugging in WordPress</a> for more information.' ),
+                               __( 'https://codex.wordpress.org/Debugging_in_WordPress' )
+                       );
                        trigger_error( sprintf( __( '%1$s was called <strong>incorrectly</strong>. %2$s %3$s' ), $function, $message, $version ) );
                } else {
                        $version = is_null( $version ) ? '' : sprintf( '(This message was added in version %s.)', $version );
-                       $message .= ' Please see <a href="https://codex.wordpress.org/Debugging_in_WordPress">Debugging in WordPress</a> for more information.';
+                       $message .= sprintf( ' Please see <a href="%s">Debugging in WordPress</a> for more information.',
+                               'https://codex.wordpress.org/Debugging_in_WordPress'
+                       );
                        trigger_error( sprintf( '%1$s was called <strong>incorrectly</strong>. %2$s %3$s', $function, $message, $version ) );
                }
        }
@@ -3695,7 +3862,7 @@ function iis7_supports_permalinks() {
                 * Lastly we make sure that PHP is running via FastCGI. This is important because if it runs
                 * via ISAPI then pretty permalinks will not work.
                 */
-               $supports_permalinks = class_exists('DOMDocument') && isset($_SERVER['IIS_UrlRewriteModule']) && ( PHP_SAPI == 'cgi-fcgi' );
+               $supports_permalinks = class_exists( 'DOMDocument', false ) && isset($_SERVER['IIS_UrlRewriteModule']) && ( PHP_SAPI == 'cgi-fcgi' );
        }
 
        /**
@@ -3757,20 +3924,6 @@ function is_ssl() {
        return false;
 }
 
-/**
- * Whether SSL login should be forced.
- *
- * @since 2.6.0
- *
- * @see force_ssl_admin()
- *
- * @param string|bool $force Optional Whether to force SSL login. Default null.
- * @return bool True if forced, false if not forced.
- */
-function force_ssl_login( $force = null ) {
-       return force_ssl_admin( $force );
-}
-
 /**
  * Whether to force SSL used for the Administration Screens.
  *
@@ -4238,7 +4391,7 @@ function _cleanup_header_comment( $str ) {
  *
  * @since 2.9.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function wp_scheduled_delete() {
        global $wpdb;
@@ -4275,7 +4428,7 @@ function wp_scheduled_delete() {
                        delete_comment_meta($comment_id, '_wp_trash_meta_time');
                        delete_comment_meta($comment_id, '_wp_trash_meta_status');
                } else {
-                       wp_delete_comment($comment_id);
+                       wp_delete_comment( $del_comment );
                }
        }
 }
@@ -4467,7 +4620,7 @@ function _wp_mysql_week( $column ) {
  * @since 3.1.0
  * @access private
  *
- * @param callback $callback      Function that accepts ( ID, $callback_args ) and outputs parent_ID.
+ * @param callable $callback      Function that accepts ( ID, $callback_args ) and outputs parent_ID.
  * @param int      $start         The ID to start the loop check at.
  * @param int      $start_parent  The parent_ID of $start to use instead of calling $callback( $start ).
  *                                Use null to always use $callback
@@ -4492,7 +4645,7 @@ function wp_find_hierarchy_loop( $callback, $start, $start_parent, $callback_arg
  * @since 3.1.0
  * @access private
  *
- * @param callback $callback      Function that accepts ( ID, callback_arg, ... ) and outputs parent_ID.
+ * @param callable $callback      Function that accepts ( ID, callback_arg, ... ) and outputs parent_ID.
  * @param int      $start         The ID to start the loop check at.
  * @param array    $override      Optional. An array of ( ID => parent_ID, ... ) to use instead of $callback.
  *                                Default empty array.
@@ -4995,3 +5148,21 @@ function wp_post_preview_js() {
        </script>
        <?php
 }
+
+/**
+ * Parses and formats a MySQL datetime (Y-m-d H:i:s) for ISO8601/RFC3339.
+ *
+ * Explicitly strips timezones, as datetimes are not saved with any timezone
+ * information. Including any information on the offset could be misleading.
+ *
+ * @since 4.4.0
+ *
+ * @param string $date_string Date string to parse and format.
+ * @return string Date formatted for ISO8601/RFC3339.
+ */
+function mysql_to_rfc3339( $date_string ) {
+       $formatted = mysql2date( 'c', $date_string, false );
+
+       // Strip timezone information
+       return preg_replace( '/(?:Z|[+-]\d{2}(?::\d{2})?)$/', '', $formatted );
+}
index 8f2cdf67aa4a6be5acb3e211c8db7de342059b67..f554e1fdc5411a2a85ef1a4f6bdd585277af6c89 100644 (file)
@@ -372,18 +372,41 @@ function wp_registration_url() {
 }
 
 /**
- * Provides a simple login form for use anywhere within WordPress. By default, it echoes
- * the HTML immediately. Pass array('echo'=>false) to return the string instead.
+ * Provides a simple login form for use anywhere within WordPress.
+ *
+ * The login format HTML is echoed by default. Pass a false value for `$echo` to return it instead.
  *
  * @since 3.0.0
  *
- * @param array $args Configuration options to modify the form output.
+ * @param array $args {
+ *     Optional. Array of options to control the form output. Default empty array.
+ *
+ *     @type bool   $echo           Whether to display the login form or return the form HTML code.
+ *                                  Default true (echo).
+ *     @type string $redirect       URL to redirect to. Must be absolute, as in "https://example.com/mypage/".
+ *                                  Default is to redirect back to the request URI.
+ *     @type string $form_id        ID attribute value for the form. Default 'loginform'.
+ *     @type string $label_username Label for the username field. Default 'Username'.
+ *     @type string $label_password Label for the password field. Default 'Password'.
+ *     @type string $label_remember Label for the remember field. Default 'Remember Me'.
+ *     @type string $label_log_in   Label for the submit button. Default 'Log In'.
+ *     @type string $id_username    ID attribute value for the username field. Default 'user_login'.
+ *     @type string $id_password    ID attribute value for the password field. Default 'user_pass'.
+ *     @type string $id_remember    ID attribute value for the remember field. Default 'rememberme'.
+ *     @type string $id_submit      ID attribute value for the submit button. Default 'wp-submit'.
+ *     @type bool   $remember       Whether to display the "rememberme" checkbox in the form.
+ *     @type string $value_username Default value for the username field. Default empty.
+ *     @type bool   $value_remember Whether the "Remember Me" checkbox should be checked by default.
+ *                                  Default false (unchecked).
+ *
+ * }
  * @return string|void String when retrieving.
  */
 function wp_login_form( $args = array() ) {
        $defaults = array(
                'echo' => true,
-               'redirect' => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], // Default redirect is back to the current page
+               // Default 'redirect' value takes the user back to the request URI.
+               'redirect' => ( is_ssl() ? 'https://' : 'http://' ) . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'],
                'form_id' => 'loginform',
                'label_username' => __( 'Username' ),
                'label_password' => __( 'Password' ),
@@ -395,7 +418,8 @@ function wp_login_form( $args = array() ) {
                'id_submit' => 'wp-submit',
                'remember' => true,
                'value_username' => '',
-               'value_remember' => false, // Set this to true to default the "Remember me" checkbox to checked
+               // Set 'value_remember' to true to default the "Remember me" checkbox to checked.
+               'value_remember' => false,
        );
 
        /**
@@ -447,7 +471,7 @@ function wp_login_form( $args = array() ) {
        $login_form_bottom = apply_filters( 'login_form_bottom', '', $args );
 
        $form = '
-               <form name="' . $args['form_id'] . '" id="' . $args['form_id'] . '" action="' . esc_url( site_url( 'wp-login.php', 'login_post' ) ) . '" method="post">
+               <form name="' . $args['form_id'] . '" id="' . $args['form_id'] . '" action="' . esc_url( wp_login_url() ) . '" method="post">
                        ' . $login_form_top . '
                        <p class="login-username">
                                <label for="' . esc_attr( $args['id_username'] ) . '">' . esc_html( $args['label_username'] ) . '</label>
@@ -518,8 +542,10 @@ function wp_register( $before = '<li>', $after = '</li>', $echo = true ) {
                        $link = $before . '<a href="' . esc_url( wp_registration_url() ) . '">' . __('Register') . '</a>' . $after;
                else
                        $link = '';
-       } else {
+       } elseif ( current_user_can( 'read' ) ) {
                $link = $before . '<a href="' . admin_url() . '">' . __('Site Admin') . '</a>' . $after;
+       } else {
+               $link = '';
        }
 
        /**
@@ -724,39 +750,53 @@ function get_bloginfo( $show = '', $filter = 'raw' ) {
 /**
  * Returns the Site Icon URL.
  *
- * @param  int    $size    Size of the site icon.
- * @param  string $url     Fallback url if no site icon is found.
- * @param  int    $blog_id Id of the blog to get the site icon for.
- * @return string          Site Icon URL.
+ * @since 4.3.0
+ *
+ * @param int    $size    Optional. Size of the site icon. Default 512 (pixels).
+ * @param string $url     Optional. Fallback url if no site icon is found. Default empty.
+ * @param int    $blog_id Optional. ID of the blog to get the site icon for. Default current blog.
+ * @return string Site Icon URL.
  */
 function get_site_icon_url( $size = 512, $url = '', $blog_id = 0 ) {
-       if ( $blog_id && is_multisite() ) {
-               $site_icon_id = get_blog_option( $blog_id, 'site_icon' );
-       } else {
-               $site_icon_id = get_option( 'site_icon' );
+       if ( is_multisite() && (int) $blog_id !== get_current_blog_id() ) {
+               switch_to_blog( $blog_id );
        }
 
+       $site_icon_id = get_option( 'site_icon' );
+
        if ( $site_icon_id ) {
                if ( $size >= 512 ) {
                        $size_data = 'full';
                } else {
                        $size_data = array( $size, $size );
                }
-               $url_data = wp_get_attachment_image_src( $site_icon_id, $size_data );
-               if ( $url_data ) {
-                       $url = $url_data[0];
-               }
+               $url = wp_get_attachment_image_url( $site_icon_id, $size_data );
+       }
+
+       if ( is_multisite() && ms_is_switched() ) {
+               restore_current_blog();
        }
 
-       return $url;
+       /**
+        * Filter the site icon URL.
+        *
+        * @site 4.4.0
+        *
+        * @param string $url     Site icon URL.
+        * @param int    $size    Size of the site icon.
+        * @param int    $blog_id ID of the blog to get the site icon for.
+        */
+       return apply_filters( 'get_site_icon_url', $url, $size, $blog_id );
 }
 
 /**
  * Displays the Site Icon URL.
  *
- * @param  int    $size    Size of the site icon.
- * @param  string $url     Fallback url if no site icon is found.
- * @param  int    $blog_id Id of the blog to get the site icon for.
+ * @since 4.3.0
+ *
+ * @param int    $size    Optional. Size of the site icon. Default 512 (pixels).
+ * @param string $url     Optional. Fallback url if no site icon is found. Default empty.
+ * @param int    $blog_id Optional. ID of the blog to get the site icon for. Default current blog.
  */
 function site_icon_url( $size = 512, $url = '', $blog_id = 0 ) {
        echo esc_url( get_site_icon_url( $size, $url, $blog_id ) );
@@ -765,33 +805,159 @@ function site_icon_url( $size = 512, $url = '', $blog_id = 0 ) {
 /**
  * Whether the site has a Site Icon.
  *
- * @param int $blog_id Optional. Blog ID. Default: Current blog.
- * @return bool
+ * @since 4.3.0
+ *
+ * @param int $blog_id Optional. ID of the blog in question. Default current blog.
+ * @return bool Whether the site has a site icon or not.
  */
 function has_site_icon( $blog_id = 0 ) {
        return (bool) get_site_icon_url( 512, '', $blog_id );
 }
 
 /**
- * Display title tag with contents.
+ * Returns document title for the current page.
+ *
+ * @since 4.4.0
+ *
+ * @global int $page  Page number of a single post.
+ * @global int $paged Page number of a list of posts.
+ *
+ * @return string Tag with the document title.
+ */
+function wp_get_document_title() {
+
+       /**
+        * Filter the document title before it is generated.
+        *
+        * Passing a non-empty value will short-circuit wp_get_document_title(),
+        * returning that value instead.
+        *
+        * @since 4.4.0
+        *
+        * @param string $title The document title. Default empty string.
+        */
+       $title = apply_filters( 'pre_get_document_title', '' );
+       if ( ! empty( $title ) ) {
+               return $title;
+       }
+
+       global $page, $paged;
+
+       $title = array(
+               'title' => '',
+       );
+
+       // If it's a 404 page, use a "Page not found" title.
+       if ( is_404() ) {
+               $title['title'] = __( 'Page not found' );
+
+       // If it's a search, use a dynamic search results title.
+       } elseif ( is_search() ) {
+               /* translators: %s: search phrase */
+               $title['title'] = sprintf( __( 'Search Results for &#8220;%s&#8221;' ), get_search_query() );
+
+       // If on the home or front page, use the site title.
+       } elseif ( is_home() && is_front_page() ) {
+               $title['title'] = get_bloginfo( 'name', 'display' );
+
+       // If on a post type archive, use the post type archive title.
+       } elseif ( is_post_type_archive() ) {
+               $title['title'] = post_type_archive_title( '', false );
+
+       // If on a taxonomy archive, use the term title.
+       } elseif ( is_tax() ) {
+               $title['title'] = single_term_title( '', false );
+
+       /*
+        * If we're on the blog page and that page is not the homepage or a single
+        * page that is designated as the homepage, use the container page's title.
+        */
+       } elseif ( ( is_home() && ! is_front_page() ) || ( ! is_home() && is_front_page() ) ) {
+               $title['title'] = single_post_title( '', false );
+
+       // If on a single post of any post type, use the post title.
+       } elseif ( is_singular() ) {
+               $title['title'] = single_post_title( '', false );
+
+       // If on a category or tag archive, use the term title.
+       } elseif ( is_category() || is_tag() ) {
+               $title['title'] = single_term_title( '', false );
+
+       // If on an author archive, use the author's display name.
+       } elseif ( is_author() && $author = get_queried_object() ) {
+               $title['title'] = $author->display_name;
+
+       // If it's a date archive, use the date as the title.
+       } elseif ( is_year() ) {
+               $title['title'] = get_the_date( _x( 'Y', 'yearly archives date format' ) );
+
+       } elseif ( is_month() ) {
+               $title['title'] = get_the_date( _x( 'F Y', 'monthly archives date format' ) );
+
+       } elseif ( is_day() ) {
+               $title['title'] = get_the_date();
+       }
+
+       // Add a page number if necessary.
+       if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
+               $title['page'] = sprintf( __( 'Page %s' ), max( $paged, $page ) );
+       }
+
+       // Append the description or site title to give context.
+       if ( is_home() && is_front_page() ) {
+               $title['tagline'] = get_bloginfo( 'description', 'display' );
+       } else {
+               $title['site'] = get_bloginfo( 'name', 'display' );
+       }
+
+       /**
+        * Filter the separator for the document title.
+        *
+        * @since 4.4.0
+        *
+        * @param string $sep Document title separator. Default '-'.
+        */
+       $sep = apply_filters( 'document_title_separator', '-' );
+
+       /**
+        * Filter the parts of the document title.
+        *
+        * @since 4.4.0
+        *
+        * @param array $title {
+        *     The document title parts.
+        *
+        *     @type string $title   Title of the viewed page.
+        *     @type string $page    Optional. Page number if paginated.
+        *     @type string $tagline Optional. Site description when on home page.
+        *     @type string $site    Optional. Site title when not on home page.
+        * }
+        */
+       $title = apply_filters( 'document_title_parts', $title );
+
+       $title = implode( " $sep ", array_filter( $title ) );
+       $title = wptexturize( $title );
+       $title = convert_chars( $title );
+       $title = esc_html( $title );
+       $title = capital_P_dangit( $title );
+
+       return $title;
+}
+
+/**
+ * Displays title tag with content.
  *
  * @ignore
  * @since 4.1.0
+ * @since 4.4.0 Improved title output replaced `wp_title()`.
  * @access private
- *
- * @see wp_title()
  */
 function _wp_render_title_tag() {
        if ( ! current_theme_supports( 'title-tag' ) ) {
                return;
        }
 
-       // This can only work internally on wp_head.
-       if ( ! did_action( 'wp_head' ) && ! doing_action( 'wp_head' ) ) {
-               return;
-       }
-
-       echo '<title>' . wp_title( '|', false, 'right' ) . "</title>\n";
+       echo '<title>' . wp_get_document_title() . '</title>' . "\n";
 }
 
 /**
@@ -812,39 +978,40 @@ function _wp_render_title_tag() {
  * @since 1.0.0
  *
  * @global WP_Locale $wp_locale
- * @global int       $page
- * @global int       $paged
  *
- * @param string $sep         Optional, default is '&raquo;'. How to separate the various items within the page title.
+ * @param string $sep         Optional, default is '&raquo;'. How to separate the various items
+ *                            within the page title.
  * @param bool   $display     Optional, default is true. Whether to display or retrieve title.
  * @param string $seplocation Optional. Direction to display title, 'right'.
- * @return string|void String on retrieve.
+ * @return string|null String on retrieve, null when displaying.
  */
 function wp_title( $sep = '&raquo;', $display = true, $seplocation = '' ) {
-       global $wp_locale, $page, $paged;
+       global $wp_locale;
 
-       $m = get_query_var('m');
-       $year = get_query_var('year');
-       $monthnum = get_query_var('monthnum');
-       $day = get_query_var('day');
-       $search = get_query_var('s');
-       $title = '';
+       $m        = get_query_var( 'm' );
+       $year     = get_query_var( 'year' );
+       $monthnum = get_query_var( 'monthnum' );
+       $day      = get_query_var( 'day' );
+       $search   = get_query_var( 's' );
+       $title    = '';
 
        $t_sep = '%WP_TITILE_SEP%'; // Temporary separator, for accurate flipping, if necessary
 
        // If there is a post
-       if ( is_single() || ( is_home() && !is_front_page() ) || ( is_page() && !is_front_page() ) ) {
+       if ( is_single() || ( is_home() && ! is_front_page() ) || ( is_page() && ! is_front_page() ) ) {
                $title = single_post_title( '', false );
        }
 
        // If there's a post type archive
        if ( is_post_type_archive() ) {
                $post_type = get_query_var( 'post_type' );
-               if ( is_array( $post_type ) )
+               if ( is_array( $post_type ) ) {
                        $post_type = reset( $post_type );
+               }
                $post_type_object = get_post_type_object( $post_type );
-               if ( ! $post_type_object->has_archive )
+               if ( ! $post_type_object->has_archive ) {
                        $title = post_type_archive_title( '', false );
+               }
        }
 
        // If there's a category or tag
@@ -856,7 +1023,7 @@ function wp_title( $sep = '&raquo;', $display = true, $seplocation = '' ) {
        if ( is_tax() ) {
                $term = get_queried_object();
                if ( $term ) {
-                       $tax = get_taxonomy( $term->taxonomy );
+                       $tax   = get_taxonomy( $term->taxonomy );
                        $title = single_term_title( $tax->labels->name . $t_sep, false );
                }
        }
@@ -864,45 +1031,50 @@ function wp_title( $sep = '&raquo;', $display = true, $seplocation = '' ) {
        // If there's an author
        if ( is_author() && ! is_post_type_archive() ) {
                $author = get_queried_object();
-               if ( $author )
+               if ( $author ) {
                        $title = $author->display_name;
+               }
        }
 
        // Post type archives with has_archive should override terms.
-       if ( is_post_type_archive() && $post_type_object->has_archive )
+       if ( is_post_type_archive() && $post_type_object->has_archive ) {
                $title = post_type_archive_title( '', false );
+       }
 
        // If there's a month
-       if ( is_archive() && !empty($m) ) {
-               $my_year = substr($m, 0, 4);
-               $my_month = $wp_locale->get_month(substr($m, 4, 2));
-               $my_day = intval(substr($m, 6, 2));
-               $title = $my_year . ( $my_month ? $t_sep . $my_month : '' ) . ( $my_day ? $t_sep . $my_day : '' );
+       if ( is_archive() && ! empty( $m ) ) {
+               $my_year  = substr( $m, 0, 4 );
+               $my_month = $wp_locale->get_month( substr( $m, 4, 2 ) );
+               $my_day   = intval( substr( $m, 6, 2 ) );
+               $title    = $my_year . ( $my_month ? $t_sep . $my_month : '' ) . ( $my_day ? $t_sep . $my_day : '' );
        }
 
        // If there's a year
-       if ( is_archive() && !empty($year) ) {
+       if ( is_archive() && ! empty( $year ) ) {
                $title = $year;
-               if ( !empty($monthnum) )
-                       $title .= $t_sep . $wp_locale->get_month($monthnum);
-               if ( !empty($day) )
-                       $title .= $t_sep . zeroise($day, 2);
+               if ( ! empty( $monthnum ) ) {
+                       $title .= $t_sep . $wp_locale->get_month( $monthnum );
+               }
+               if ( ! empty( $day ) ) {
+                       $title .= $t_sep . zeroise( $day, 2 );
+               }
        }
 
        // If it's a search
        if ( is_search() ) {
                /* translators: 1: separator, 2: search phrase */
-               $title = sprintf(__('Search Results %1$s %2$s'), $t_sep, strip_tags($search));
+               $title = sprintf( __( 'Search Results %1$s %2$s' ), $t_sep, strip_tags( $search ) );
        }
 
        // If it's a 404 page
        if ( is_404() ) {
-               $title = __('Page not found');
+               $title = __( 'Page not found' );
        }
 
        $prefix = '';
-       if ( !empty($title) )
+       if ( ! empty( $title ) ) {
                $prefix = " $sep ";
+       }
 
        /**
         * Filter the parts of the page title.
@@ -913,44 +1085,31 @@ function wp_title( $sep = '&raquo;', $display = true, $seplocation = '' ) {
         */
        $title_array = apply_filters( 'wp_title_parts', explode( $t_sep, $title ) );
 
-       // Determines position of the separator and direction of the breadcrumb
+       // Determines position of the separator and direction of the breadcrumb
        if ( 'right' == $seplocation ) { // sep on right, so reverse the order
                $title_array = array_reverse( $title_array );
-               $title = implode( " $sep ", $title_array ) . $prefix;
+               $title       = implode( " $sep ", $title_array ) . $prefix;
        } else {
                $title = $prefix . implode( " $sep ", $title_array );
        }
 
-       if ( current_theme_supports( 'title-tag' ) && ! is_feed() ) {
-               $title .= get_bloginfo( 'name', 'display' );
-
-               $site_description = get_bloginfo( 'description', 'display' );
-               if ( $site_description && ( is_home() || is_front_page() ) ) {
-                       $title .= " $sep $site_description";
-               }
-
-               if ( ( $paged >= 2 || $page >= 2 ) && ! is_404() ) {
-                       $title .= " $sep " . sprintf( __( 'Page %s' ), max( $paged, $page ) );
-               }
-       }
-
        /**
         * Filter the text of the page title.
         *
         * @since 2.0.0
         *
-        * @param string $title       Page title.
-        * @param string $sep         Title separator.
+        * @param string $title Page title.
+        * @param string $sep Title separator.
         * @param string $seplocation Location of the separator (left or right).
         */
        $title = apply_filters( 'wp_title', $title, $sep, $seplocation );
 
        // Send it out
-       if ( $display )
+       if ( $display ) {
                echo $title;
-       else
+       } else {
                return $title;
-
+       }
 }
 
 /**
@@ -1031,13 +1190,9 @@ function post_type_archive_title( $prefix = '', $display = true ) {
 /**
  * Display or retrieve page title for category archive.
  *
- * This is useful for category template file or files, because it is optimized
- * for category page title and with less overhead than {@link wp_title()}.
- *
- * It does not support placing the separator after the title, but by leaving the
- * prefix parameter empty, you can set the title separator manually. The prefix
- * does not automatically place a space between the prefix, so if there should
- * be a space, the parameter value will need to have it at the end.
+ * Useful for category template files for displaying the category page title.
+ * The prefix does not automatically place a space between the prefix, so if
+ * there should be a space, the parameter value will need to have it at the end.
  *
  * @since 0.71
  *
@@ -1052,11 +1207,7 @@ function single_cat_title( $prefix = '', $display = true ) {
 /**
  * Display or retrieve page title for tag post archive.
  *
- * Useful for tag template files for displaying the tag page title. It has less
- * overhead than {@link wp_title()}, because of its limited implementation.
- *
- * It does not support placing the separator after the title, but by leaving the
- * prefix parameter empty, you can set the title separator manually. The prefix
+ * Useful for tag template files for displaying the tag page title. The prefix
  * does not automatically place a space between the prefix, so if there should
  * be a space, the parameter value will need to have it at the end.
  *
@@ -1074,11 +1225,7 @@ function single_tag_title( $prefix = '', $display = true ) {
  * Display or retrieve page title for taxonomy term archive.
  *
  * Useful for taxonomy term template files for displaying the taxonomy term page title.
- * It has less overhead than {@link wp_title()}, because of its limited implementation.
- *
- * It does not support placing the separator after the title, but by leaving the
- * prefix parameter empty, you can set the title separator manually. The prefix
- * does not automatically place a space between the prefix, so if there should
+ * The prefix does not automatically place a space between the prefix, so if there should
  * be a space, the parameter value will need to have it at the end.
  *
  * @since 3.1.0
@@ -1136,14 +1283,10 @@ function single_term_title( $prefix = '', $display = true ) {
 /**
  * Display or retrieve page title for post archive based on date.
  *
- * Useful for when the template only needs to display the month and year, if
- * either are available. Optimized for just this purpose, so if it is all that
- * is needed, should be better than {@link wp_title()}.
- *
- * It does not support placing the separator after the title, but by leaving the
- * prefix parameter empty, you can set the title separator manually. The prefix
- * does not automatically place a space between the prefix, so if there should
- * be a space, the parameter value will need to have it at the end.
+ * Useful for when the template only needs to display the month and year,
+ * if either are available. The prefix does not automatically place a space
+ * between the prefix, so if there should be a space, the parameter value
+ * will need to have it at the end.
  *
  * @since 0.71
  *
@@ -1355,6 +1498,7 @@ function get_archives_link($url, $text, $format = 'html', $before = '', $after =
  * Display archive links based on type and format.
  *
  * @since 1.2.0
+ * @since 4.4.0 $post_type arg was added.
  *
  * @see get_archives_link()
  *
@@ -1381,6 +1525,7 @@ function get_archives_link($url, $text, $format = 'html', $before = '', $after =
  *     @type bool|int   $echo            Whether to echo or return the links list. Default 1|true to echo.
  *     @type string     $order           Whether to use ascending or descending order. Accepts 'ASC', or 'DESC'.
  *                                       Default 'DESC'.
+ *     @type string     $post_type       Post type. Default 'post'.
  * }
  * @return string|void String when retrieving.
  */
@@ -1392,10 +1537,17 @@ function wp_get_archives( $args = '' ) {
                'format' => 'html', 'before' => '',
                'after' => '', 'show_post_count' => false,
                'echo' => 1, 'order' => 'DESC',
+               'post_type' => 'post'
        );
 
        $r = wp_parse_args( $args, $defaults );
 
+       $post_type_object = get_post_type_object( $r['post_type'] );
+       if ( ! is_post_type_viewable( $post_type_object ) ) {
+               return;
+       }
+       $r['post_type'] = $post_type_object->name;
+
        if ( '' == $r['type'] ) {
                $r['type'] = 'monthly';
        }
@@ -1429,6 +1581,8 @@ function wp_get_archives( $args = '' ) {
                $archive_week_end_date_format = get_option( 'date_format' );
        }
 
+       $sql_where = $wpdb->prepare( "WHERE post_type = %s AND post_status = 'publish'", $r['post_type'] );
+
        /**
         * Filter the SQL WHERE clause for retrieving archives.
         *
@@ -1437,7 +1591,7 @@ function wp_get_archives( $args = '' ) {
         * @param string $sql_where Portion of SQL query containing the WHERE clause.
         * @param array  $r         An array of default arguments.
         */
-       $where = apply_filters( 'getarchives_where', "WHERE post_type = 'post' AND post_status = 'publish'", $r );
+       $where = apply_filters( 'getarchives_where', $sql_where, $r );
 
        /**
         * Filter the SQL JOIN clause for retrieving archives.
@@ -1471,6 +1625,9 @@ function wp_get_archives( $args = '' ) {
                        $after = $r['after'];
                        foreach ( (array) $results as $result ) {
                                $url = get_month_link( $result->year, $result->month );
+                               if ( 'post' !== $r['post_type'] ) {
+                                       $url = add_query_arg( 'post_type', $r['post_type'], $url );
+                               }
                                /* translators: 1: month name, 2: 4-digit year */
                                $text = sprintf( __( '%1$s %2$d' ), $wp_locale->get_month( $result->month ), $result->year );
                                if ( $r['show_post_count'] ) {
@@ -1491,6 +1648,9 @@ function wp_get_archives( $args = '' ) {
                        $after = $r['after'];
                        foreach ( (array) $results as $result) {
                                $url = get_year_link( $result->year );
+                               if ( 'post' !== $r['post_type'] ) {
+                                       $url = add_query_arg( 'post_type', $r['post_type'], $url );
+                               }
                                $text = sprintf( '%d', $result->year );
                                if ( $r['show_post_count'] ) {
                                        $r['after'] = '&nbsp;(' . $result->posts . ')' . $after;
@@ -1510,6 +1670,9 @@ function wp_get_archives( $args = '' ) {
                        $after = $r['after'];
                        foreach ( (array) $results as $result ) {
                                $url  = get_day_link( $result->year, $result->month, $result->dayofmonth );
+                               if ( 'post' !== $r['post_type'] ) {
+                                       $url = add_query_arg( 'post_type', $r['post_type'], $url );
+                               }
                                $date = sprintf( '%1$d-%2$02d-%3$02d 00:00:00', $result->year, $result->month, $result->dayofmonth );
                                $text = mysql2date( $archive_day_date_format, $date );
                                if ( $r['show_post_count'] ) {
@@ -1538,6 +1701,9 @@ function wp_get_archives( $args = '' ) {
                                        $arc_week_start = date_i18n( $archive_week_start_date_format, $arc_week['start'] );
                                        $arc_week_end   = date_i18n( $archive_week_end_date_format, $arc_week['end'] );
                                        $url            = sprintf( '%1$s/%2$s%3$sm%4$s%5$s%6$sw%7$s%8$d', home_url(), '', '?', '=', $arc_year, '&amp;', '=', $result->week );
+                                       if ( 'post' !== $r['post_type'] ) {
+                                               $url = add_query_arg( 'post_type', $r['post_type'], $url );
+                                       }
                                        $text           = $arc_week_start . $archive_week_separator . $arc_week_end;
                                        if ( $r['show_post_count'] ) {
                                                $r['after'] = '&nbsp;(' . $result->posts . ')' . $after;
@@ -1609,64 +1775,69 @@ function calendar_week_mod($num) {
  * @param bool $echo    Optional, default is true. Set to false for return.
  * @return string|void String when retrieving.
  */
-function get_calendar($initial = true, $echo = true) {
+function get_calendar( $initial = true, $echo = true ) {
        global $wpdb, $m, $monthnum, $year, $wp_locale, $posts;
 
        $key = md5( $m . $monthnum . $year );
-       if ( $cache = wp_cache_get( 'get_calendar', 'calendar' ) ) {
-               if ( is_array($cache) && isset( $cache[ $key ] ) ) {
-                       if ( $echo ) {
-                               /** This filter is documented in wp-includes/general-template.php */
-                               echo apply_filters( 'get_calendar', $cache[$key] );
-                               return;
-                       } else {
-                               /** This filter is documented in wp-includes/general-template.php */
-                               return apply_filters( 'get_calendar', $cache[$key] );
-                       }
+       $cache = wp_cache_get( 'get_calendar', 'calendar' );
+
+       if ( $cache && is_array( $cache ) && isset( $cache[ $key ] ) ) {
+               /** This filter is documented in wp-includes/general-template.php */
+               $output = apply_filters( 'get_calendar', $cache[ $key ] );
+
+               if ( $echo ) {
+                       echo $output;
+                       return;
                }
+
+               return $output;
        }
 
-       if ( !is_array($cache) )
+       if ( ! is_array( $cache ) ) {
                $cache = array();
+       }
 
        // Quick check. If we have no posts at all, abort!
-       if ( !$posts ) {
+       if ( ! $posts ) {
                $gotsome = $wpdb->get_var("SELECT 1 as test FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish' LIMIT 1");
-               if ( !$gotsome ) {
+               if ( ! $gotsome ) {
                        $cache[ $key ] = '';
                        wp_cache_set( 'get_calendar', $cache, 'calendar' );
                        return;
                }
        }
 
-       if ( isset($_GET['w']) )
-               $w = ''.intval($_GET['w']);
-
+       if ( isset( $_GET['w'] ) ) {
+               $w = (int) $_GET['w'];
+       }
        // week_begins = 0 stands for Sunday
-       $week_begins = intval(get_option('start_of_week'));
+       $week_begins = (int) get_option( 'start_of_week' );
+       $ts = current_time( 'timestamp' );
 
        // Let's figure out when we are
-       if ( !empty($monthnum) && !empty($year) ) {
-               $thismonth = ''.zeroise(intval($monthnum), 2);
-               $thisyear = ''.intval($year);
-       } elseif ( !empty($w) ) {
+       if ( ! empty( $monthnum ) && ! empty( $year ) ) {
+               $thismonth = zeroise( intval( $monthnum ), 2 );
+               $thisyear = (int) $year;
+       } elseif ( ! empty( $w ) ) {
                // We need to get the month from MySQL
-               $thisyear = ''.intval(substr($m, 0, 4));
-               $d = (($w - 1) * 7) + 6; //it seems MySQL's weeks disagree with PHP's
+               $thisyear = (int) substr( $m, 0, 4 );
+               //it seems MySQL's weeks disagree with PHP's
+               $d = ( ( $w - 1 ) * 7 ) + 6;
                $thismonth = $wpdb->get_var("SELECT DATE_FORMAT((DATE_ADD('{$thisyear}0101', INTERVAL $d DAY) ), '%m')");
-       } elseif ( !empty($m) ) {
-               $thisyear = ''.intval(substr($m, 0, 4));
-               if ( strlen($m) < 6 )
-                               $thismonth = '01';
-               else
-                               $thismonth = ''.zeroise(intval(substr($m, 4, 2)), 2);
+       } elseif ( ! empty( $m ) ) {
+               $thisyear = (int) substr( $m, 0, 4 );
+               if ( strlen( $m ) < 6 ) {
+                       $thismonth = '01';
+               } else {
+                       $thismonth = zeroise( (int) substr( $m, 4, 2 ), 2 );
+               }
        } else {
-               $thisyear = gmdate('Y', current_time('timestamp'));
-               $thismonth = gmdate('m', current_time('timestamp'));
+               $thisyear = gmdate( 'Y', $ts );
+               $thismonth = gmdate( 'm', $ts );
        }
 
-       $unixmonth = mktime(0, 0 , 0, $thismonth, 1, $thisyear);
-       $last_day = date('t', $unixmonth);
+       $unixmonth = mktime( 0, 0 , 0, $thismonth, 1, $thisyear );
+       $last_day = date( 't', $unixmonth );
 
        // Get the next and previous month and year with at least one post
        $previous = $wpdb->get_row("SELECT MONTH(post_date) AS month, YEAR(post_date) AS year
@@ -1685,19 +1856,23 @@ function get_calendar($initial = true, $echo = true) {
        /* translators: Calendar caption: 1: month name, 2: 4-digit year */
        $calendar_caption = _x('%1$s %2$s', 'calendar caption');
        $calendar_output = '<table id="wp-calendar">
-       <caption>' . sprintf($calendar_caption, $wp_locale->get_month($thismonth), date('Y', $unixmonth)) . '</caption>
+       <caption>' . sprintf(
+               $calendar_caption,
+               $wp_locale->get_month( $thismonth ),
+               date( 'Y', $unixmonth )
+       ) . '</caption>
        <thead>
        <tr>';
 
        $myweek = array();
 
-       for ( $wdcount=0; $wdcount<=6; $wdcount++ ) {
-               $myweek[] = $wp_locale->get_weekday(($wdcount+$week_begins)%7);
+       for ( $wdcount = 0; $wdcount <= 6; $wdcount++ ) {
+               $myweek[] = $wp_locale->get_weekday( ( $wdcount + $week_begins ) % 7 );
        }
 
        foreach ( $myweek as $wd ) {
-               $day_name = $initial ? $wp_locale->get_weekday_initial($wd) : $wp_locale->get_weekday_abbrev($wd);
-               $wd = esc_attr($wd);
+               $day_name = $initial ? $wp_locale->get_weekday_initial( $wd ) : $wp_locale->get_weekday_abbrev( $wd );
+               $wd = esc_attr( $wd );
                $calendar_output .= "\n\t\t<th scope=\"col\" title=\"$wd\">$day_name</th>";
        }
 
@@ -1709,7 +1884,9 @@ function get_calendar($initial = true, $echo = true) {
        <tr>';
 
        if ( $previous ) {
-               $calendar_output .= "\n\t\t".'<td colspan="3" id="prev"><a href="' . get_month_link($previous->year, $previous->month) . '">&laquo; ' . $wp_locale->get_month_abbrev($wp_locale->get_month($previous->month)) . '</a></td>';
+               $calendar_output .= "\n\t\t".'<td colspan="3" id="prev"><a href="' . get_month_link( $previous->year, $previous->month ) . '">&laquo; ' .
+                       $wp_locale->get_month_abbrev( $wp_locale->get_month( $previous->month ) ) .
+               '</a></td>';
        } else {
                $calendar_output .= "\n\t\t".'<td colspan="3" id="prev" class="pad">&nbsp;</td>';
        }
@@ -1717,7 +1894,9 @@ function get_calendar($initial = true, $echo = true) {
        $calendar_output .= "\n\t\t".'<td class="pad">&nbsp;</td>';
 
        if ( $next ) {
-               $calendar_output .= "\n\t\t".'<td colspan="3" id="next"><a href="' . get_month_link($next->year, $next->month) . '">' . $wp_locale->get_month_abbrev($wp_locale->get_month($next->month)) . ' &raquo;</a></td>';
+               $calendar_output .= "\n\t\t".'<td colspan="3" id="next"><a href="' . get_month_link( $next->year, $next->month ) . '">' .
+                       $wp_locale->get_month_abbrev( $wp_locale->get_month( $next->month ) ) .
+               ' &raquo;</a></td>';
        } else {
                $calendar_output .= "\n\t\t".'<td colspan="3" id="next" class="pad">&nbsp;</td>';
        }
@@ -1742,63 +1921,53 @@ function get_calendar($initial = true, $echo = true) {
                }
        }
 
-       if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false || stripos($_SERVER['HTTP_USER_AGENT'], 'camino') !== false || stripos($_SERVER['HTTP_USER_AGENT'], 'safari') !== false)
-               $ak_title_separator = "\n";
-       else
-               $ak_title_separator = ', ';
-
-       $ak_titles_for_day = array();
-       $ak_post_titles = $wpdb->get_results("SELECT ID, post_title, DAYOFMONTH(post_date) as dom "
-               ."FROM $wpdb->posts "
-               ."WHERE post_date >= '{$thisyear}-{$thismonth}-01 00:00:00' "
-               ."AND post_date <= '{$thisyear}-{$thismonth}-{$last_day} 23:59:59' "
-               ."AND post_type = 'post' AND post_status = 'publish'"
-       );
-       if ( $ak_post_titles ) {
-               foreach ( (array) $ak_post_titles as $ak_post_title ) {
-
-                               /** This filter is documented in wp-includes/post-template.php */
-                               $post_title = esc_attr( apply_filters( 'the_title', $ak_post_title->post_title, $ak_post_title->ID ) );
-
-                               if ( empty($ak_titles_for_day['day_'.$ak_post_title->dom]) )
-                                       $ak_titles_for_day['day_'.$ak_post_title->dom] = '';
-                               if ( empty($ak_titles_for_day["$ak_post_title->dom"]) ) // first one
-                                       $ak_titles_for_day["$ak_post_title->dom"] = $post_title;
-                               else
-                                       $ak_titles_for_day["$ak_post_title->dom"] .= $ak_title_separator . $post_title;
-               }
+       // See how much we should pad in the beginning
+       $pad = calendar_week_mod( date( 'w', $unixmonth ) - $week_begins );
+       if ( 0 != $pad ) {
+               $calendar_output .= "\n\t\t".'<td colspan="'. esc_attr( $pad ) .'" class="pad">&nbsp;</td>';
        }
 
-       // See how much we should pad in the beginning
-       $pad = calendar_week_mod(date('w', $unixmonth)-$week_begins);
-       if ( 0 != $pad )
-               $calendar_output .= "\n\t\t".'<td colspan="'. esc_attr($pad) .'" class="pad">&nbsp;</td>';
+       $newrow = false;
+       $daysinmonth = (int) date( 't', $unixmonth );
 
-       $daysinmonth = intval(date('t', $unixmonth));
        for ( $day = 1; $day <= $daysinmonth; ++$day ) {
-               if ( isset($newrow) && $newrow )
+               if ( isset($newrow) && $newrow ) {
                        $calendar_output .= "\n\t</tr>\n\t<tr>\n\t\t";
+               }
                $newrow = false;
 
-               if ( $day == gmdate('j', current_time('timestamp')) && $thismonth == gmdate('m', current_time('timestamp')) && $thisyear == gmdate('Y', current_time('timestamp')) )
+               if ( $day == gmdate( 'j', $ts ) &&
+                       $thismonth == gmdate( 'm', $ts ) &&
+                       $thisyear == gmdate( 'Y', $ts ) ) {
                        $calendar_output .= '<td id="today">';
-               else
+               } else {
                        $calendar_output .= '<td>';
+               }
 
-               if ( in_array($day, $daywithpost) ) // any posts today?
-                               $calendar_output .= '<a href="' . get_day_link( $thisyear, $thismonth, $day ) . '" title="' . esc_attr( $ak_titles_for_day[ $day ] ) . "\">$day</a>";
-               else
+               if ( in_array( $day, $daywithpost ) ) {
+                       // any posts today?
+                       $date_format = date( _x( 'F j, Y', 'daily archives date format' ), strtotime( "{$thisyear}-{$thismonth}-{$day}" ) );
+                       $label = sprintf( __( 'Posts published on %s' ), $date_format );
+                       $calendar_output .= sprintf(
+                               '<a href="%s" aria-label="%s">%s</a>',
+                               get_day_link( $thisyear, $thismonth, $day ),
+                               esc_attr( $label ),
+                               $day
+                       );
+               } else {
                        $calendar_output .= $day;
+               }
                $calendar_output .= '</td>';
 
-               if ( 6 == calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins) )
+               if ( 6 == calendar_week_mod( date( 'w', mktime(0, 0 , 0, $thismonth, $day, $thisyear ) ) - $week_begins ) ) {
                        $newrow = true;
+               }
        }
 
-       $pad = 7 - calendar_week_mod(date('w', mktime(0, 0 , 0, $thismonth, $day, $thisyear))-$week_begins);
-       if ( $pad != 0 && $pad != 7 )
-               $calendar_output .= "\n\t\t".'<td class="pad" colspan="'. esc_attr($pad) .'">&nbsp;</td>';
-
+       $pad = 7 - calendar_week_mod( date( 'w', mktime( 0, 0 , 0, $thismonth, $day, $thisyear ) ) - $week_begins );
+       if ( $pad != 0 && $pad != 7 ) {
+               $calendar_output .= "\n\t\t".'<td class="pad" colspan="'. esc_attr( $pad ) .'">&nbsp;</td>';
+       }
        $calendar_output .= "\n\t</tr>\n\t</tbody>\n\t</table>";
 
        $cache[ $key ] = $calendar_output;
@@ -1813,11 +1982,10 @@ function get_calendar($initial = true, $echo = true) {
                 * @param string $calendar_output HTML output of the calendar.
                 */
                echo apply_filters( 'get_calendar', $calendar_output );
-       } else {
-               /** This filter is documented in wp-includes/general-template.php */
-               return apply_filters( 'get_calendar', $calendar_output );
+               return;
        }
-
+       /** This filter is documented in wp-includes/general-template.php */
+       return apply_filters( 'get_calendar', $calendar_output );
 }
 
 /**
@@ -1894,7 +2062,7 @@ function the_date_xml() {
 function the_date( $d = '', $before = '', $after = '', $echo = true ) {
        global $currentday, $previousday;
 
-       if ( $currentday != $previousday ) {
+       if ( is_new_day() ) {
                $the_date = $before . get_the_date( $d ) . $after;
                $previousday = $currentday;
 
@@ -2306,8 +2474,27 @@ function feed_links( $args = array() ) {
 
        $args = wp_parse_args( $args, $defaults );
 
-       echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . esc_attr( sprintf( $args['feedtitle'], get_bloginfo('name'), $args['separator'] ) ) . '" href="' . esc_url( get_feed_link() ) . "\" />\n";
-       echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . esc_attr( sprintf( $args['comstitle'], get_bloginfo('name'), $args['separator'] ) ) . '" href="' . esc_url( get_feed_link( 'comments_' . get_default_feed() ) ) . "\" />\n";
+       /**
+        * Filter whether to display the posts feed link.
+        *
+        * @since 4.4.0
+        *
+        * @param bool $show Whether to display the posts feed link. Default true.
+        */
+       if ( apply_filters( 'feed_links_show_posts_feed', true ) ) {
+               echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . esc_attr( sprintf( $args['feedtitle'], get_bloginfo( 'name' ), $args['separator'] ) ) . '" href="' . esc_url( get_feed_link() ) . "\" />\n";
+       }
+
+       /**
+        * Filter whether to display the comments feed link.
+        *
+        * @since 4.4.0
+        *
+        * @param bool $show Whether to display the comments feed link. Default true.
+        */
+       if ( apply_filters( 'feed_links_show_comments_feed', true ) ) {
+               echo '<link rel="alternate" type="' . feed_content_type() . '" title="' . esc_attr( sprintf( $args['comstitle'], get_bloginfo( 'name' ), $args['separator'] ) ) . '" href="' . esc_url( get_feed_link( 'comments_' . get_default_feed() ) ) . "\" />\n";
+       }
 }
 
 /**
@@ -2393,7 +2580,7 @@ function feed_links_extra( $args = array() ) {
  * @since 2.0.0
  */
 function rsd_link() {
-       echo '<link rel="EditURI" type="application/rsd+xml" title="RSD" href="' . get_bloginfo('wpurl') . "/xmlrpc.php?rsd\" />\n";
+       echo '<link rel="EditURI" type="application/rsd+xml" title="RSD" href="' . esc_url( site_url( 'xmlrpc.php?rsd', 'rpc' ) ) . '" />' . "\n";
 }
 
 /**
@@ -2451,8 +2638,8 @@ function wp_site_icon() {
        $meta_tags = array(
                sprintf( '<link rel="icon" href="%s" sizes="32x32" />', esc_url( get_site_icon_url( 32 ) ) ),
                sprintf( '<link rel="icon" href="%s" sizes="192x192" />', esc_url( get_site_icon_url( 192 ) ) ),
-               sprintf( '<link rel="apple-touch-icon-precomposed" href="%s">', esc_url( get_site_icon_url( 180 ) ) ),
-               sprintf( '<meta name="msapplication-TileImage" content="%s">', esc_url( get_site_icon_url( 270 ) ) ),
+               sprintf( '<link rel="apple-touch-icon-precomposed" href="%s" />', esc_url( get_site_icon_url( 180 ) ) ),
+               sprintf( '<meta name="msapplication-TileImage" content="%s" />', esc_url( get_site_icon_url( 270 ) ) ),
        );
 
        /**
@@ -2488,7 +2675,7 @@ function wp_site_icon() {
  * @return bool
  */
 function user_can_richedit() {
-       global $wp_rich_edit, $is_gecko, $is_opera, $is_safari, $is_chrome, $is_IE;
+       global $wp_rich_edit, $is_gecko, $is_opera, $is_safari, $is_chrome, $is_IE, $is_edge;
 
        if ( !isset($wp_rich_edit) ) {
                $wp_rich_edit = false;
@@ -2496,7 +2683,7 @@ function user_can_richedit() {
                if ( get_user_option( 'rich_editing' ) == 'true' || ! is_user_logged_in() ) { // default to 'true' for logged out users
                        if ( $is_safari ) {
                                $wp_rich_edit = ! wp_is_mobile() || ( preg_match( '!AppleWebKit/(\d+)!', $_SERVER['HTTP_USER_AGENT'], $match ) && intval( $match[1] ) >= 534 );
-                       } elseif ( $is_gecko || $is_chrome || $is_IE || ( $is_opera && !wp_is_mobile() ) ) {
+                       } elseif ( $is_gecko || $is_chrome || $is_IE || $is_edge || ( $is_opera && !wp_is_mobile() ) ) {
                                $wp_rich_edit = true;
                        }
                }
@@ -2559,7 +2746,7 @@ function wp_default_editor() {
  * @param array  $settings  See _WP_Editors::editor().
  */
 function wp_editor( $content, $editor_id, $settings = array() ) {
-       if ( ! class_exists( '_WP_Editors' ) )
+       if ( ! class_exists( '_WP_Editors', false ) )
                require( ABSPATH . WPINC . '/class-wp-editor.php' );
 
        _WP_Editors::editor($content, $editor_id, $settings);
@@ -3165,13 +3352,13 @@ function get_the_generator( $type = '' ) {
                        $gen = '<meta name="generator" content="WordPress ' . get_bloginfo( 'version' ) . '" />';
                        break;
                case 'atom':
-                       $gen = '<generator uri="http://wordpress.org/" version="' . get_bloginfo_rss( 'version' ) . '">WordPress</generator>';
+                       $gen = '<generator uri="https://wordpress.org/" version="' . get_bloginfo_rss( 'version' ) . '">WordPress</generator>';
                        break;
                case 'rss2':
-                       $gen = '<generator>http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>';
+                       $gen = '<generator>https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '</generator>';
                        break;
                case 'rdf':
-                       $gen = '<admin:generatorAgent rdf:resource="http://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '" />';
+                       $gen = '<admin:generatorAgent rdf:resource="https://wordpress.org/?v=' . get_bloginfo_rss( 'version' ) . '" />';
                        break;
                case 'comment':
                        $gen = '<!-- generator="WordPress/' . get_bloginfo( 'version' ) . '" -->';
index 4768c7fdd7c1a709dabca9eb2acb289b682b47ec..8fa00e942fc140346b07304d34e68b07df13a084 100644 (file)
@@ -1,14 +1,12 @@
 <?php
 /**
- * Simple and uniform HTTP request API.
+ * Core HTTP Request API
  *
- * Will eventually replace and standardize the WordPress HTTP requests made.
- *
- * @link https://core.trac.wordpress.org/ticket/4779 HTTP API Proposal
+ * Standardizes the HTTP requests for WordPress. Handles cookies, gzip encoding and decoding, chunk
+ * decoding, if HTTP 1.1 and various other difficult HTTP protocol implementations.
  *
  * @package WordPress
  * @subpackage HTTP
- * @since 2.7.0
  */
 
 /**
@@ -289,6 +287,66 @@ function wp_remote_retrieve_body( $response ) {
        return $response['body'];
 }
 
+/**
+ * Retrieve only the body from the raw response.
+ *
+ * @since 4.4.0
+ *
+ * @param array $response HTTP response.
+ * @return array An array of `WP_Http_Cookie` objects from the response. Empty array if there are none, or the response is a WP_Error.
+ */
+function wp_remote_retrieve_cookies( $response ) {
+       if ( is_wp_error( $response ) || empty( $response['cookies'] ) ) {
+               return array();
+       }
+
+       return $response['cookies'];
+}
+
+/**
+ * Retrieve a single cookie by name from the raw response.
+ *
+ * @since 4.4.0
+ *
+ * @param array  $response HTTP response.
+ * @param string $name     The name of the cookie to retrieve.
+ * @return WP_Http_Cookie|string The `WP_Http_Cookie` object. Empty string if the cookie isn't present in the response.
+ */
+function wp_remote_retrieve_cookie( $response, $name ) {
+       $cookies = wp_remote_retrieve_cookies( $response );
+
+       if ( empty( $cookies ) ) {
+               return '';
+       }
+
+       foreach ( $cookies as $cookie ) {
+               if ( $cookie->name === $name ) {
+                       return $cookie;
+               }
+       }
+
+       return '';
+}
+
+/**
+ * Retrieve a single cookie's value by name from the raw response.
+ *
+ * @since 4.4.0
+ *
+ * @param array  $response HTTP response.
+ * @param string $name     The name of the cookie to retrieve.
+ * @return string The value of the cookie. Empty string if the cookie isn't present in the response.
+ */
+function wp_remote_retrieve_cookie_value( $response, $name ) {
+       $cookie = wp_remote_retrieve_cookie( $response, $name );
+
+       if ( ! is_a( $cookie, 'WP_Http_Cookie' ) ) {
+               return '';
+       }
+
+       return $cookie->value;
+}
+
 /**
  * Determines if there is an HTTP Transport that can process this request.
  *
@@ -537,7 +595,7 @@ function allowed_http_request_hosts( $is_external, $host ) {
  *
  * @since 3.6.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  * @staticvar array $queried
  *
  * @param bool   $is_external
@@ -556,3 +614,49 @@ function ms_allowed_http_request_hosts( $is_external, $host ) {
        $queried[ $host ] = (bool) $wpdb->get_var( $wpdb->prepare( "SELECT domain FROM $wpdb->blogs WHERE domain = %s LIMIT 1", $host ) );
        return $queried[ $host ];
 }
+
+/**
+ * A wrapper for PHP's parse_url() function that handles edgecases in < PHP 5.4.7
+ *
+ * PHP 5.4.7 expanded parse_url()'s ability to handle non-absolute url's, including
+ * schemeless and relative url's with :// in the path, this works around those
+ * limitations providing a standard output on PHP 5.2~5.4+.
+ *
+ * Error suppression is used as prior to PHP 5.3.3, an E_WARNING would be generated
+ * when URL parsing failed.
+ *
+ * @since 4.4.0
+ *
+ * @param string $url The URL to parse.
+ * @return bool|array False on failure; Array of URL components on success;
+ *                    See parse_url()'s return values.
+ */
+function wp_parse_url( $url ) {
+       $parts = @parse_url( $url );
+       if ( ! $parts ) {
+               // < PHP 5.4.7 compat, trouble with relative paths including a scheme break in the path
+               if ( '/' == $url[0] && false !== strpos( $url, '://' ) ) {
+                       // Since we know it's a relative path, prefix with a scheme/host placeholder and try again
+                       if ( ! $parts = @parse_url( 'placeholder://placeholder' . $url ) ) {
+                               return $parts;
+                       }
+                       // Remove the placeholder values
+                       unset( $parts['scheme'], $parts['host'] );
+               } else {
+                       return $parts;
+               }
+       }
+
+       // < PHP 5.4.7 compat, doesn't detect schemeless URL's host field
+       if ( '//' == substr( $url, 0, 2 ) && ! isset( $parts['host'] ) ) {
+               $path_parts = explode( '/', substr( $parts['path'], 2 ), 2 );
+               $parts['host'] = $path_parts[0];
+               if ( isset( $path_parts[1] ) ) {
+                       $parts['path'] = '/' . $path_parts[1];
+               } else {
+                       unset( $parts['path'] );
+               }
+       }
+
+       return $parts;
+}
index 4e6834a15d3e1c0a4157c51e2c408cada6f48051..0ffc293f5b8100032e143cea4c6115f653977904 100644 (file)
@@ -286,7 +286,8 @@ window.autosave = function() {
                                                });
                                        }
 
-                                       wpCookies.set( 'wp-saving-post', post_id + '-check', 24 * 60 * 60 );
+                                       var secure = ( 'https:' === window.location.protocol );
+                                       wpCookies.set( 'wp-saving-post', post_id + '-check', 24 * 60 * 60, false, false, secure );
                                });
                        }
 
@@ -344,8 +345,10 @@ window.autosave = function() {
                                        excerpt: excerpt
                                };
 
-                               $notice = $( '#local-storage-notice' );
-                               $('.wrap h2').first().after( $notice.addClass( 'notice-warning' ).show() );
+                               $notice = $( '#local-storage-notice' )
+                                       .insertAfter( $( '.wrap' ).children( ':header' ).first() )
+                                       .addClass( 'notice-warning' )
+                                       .show();
 
                                $notice.on( 'click.autosave-local', function( event ) {
                                        var $target = $( event.target );
index 83208f7b1b7e11e8cf112f2a44689903b696b052..6d484f8b93627c54bd5142ea1655077a46c8635e 100644 (file)
@@ -1 +1 @@
-window.autosave=function(){return!0},function(a,b){function c(){function c(b){var c,d,e,f=(new Date).getTime(),g=[],h="undefined"!=typeof tinymce&&tinymce.get("content");return h&&!h.isHidden()&&f-3e3>j&&(h.save(),j=f),e={post_id:a("#post_ID").val()||0,post_type:a("#post_type").val()||"",post_author:a("#post_author").val()||"",post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""},"local"===b?e:(a('input[id^="in-category-"]:checked').each(function(){g.push(this.value)}),e.catslist=g.join(","),(c=a("#post_name").val())&&(e.post_name=c),(d=a("#parent_id").val())&&(e.parent_id=d),a("#comment_status").prop("checked")&&(e.comment_status="open"),a("#ping_status").prop("checked")&&(e.ping_status="open"),"1"===a("#auto_draft").val()&&(e.auto_draft="1"),e)}function d(b){return"object"==typeof b?(b.post_title||"")+"::"+(b.content||"")+"::"+(b.excerpt||""):(a("#title").val()||"")+"::"+(a("#content").val()||"")+"::"+(a("#excerpt").val()||"")}function e(){k.trigger("autosave-disable-buttons"),setTimeout(f,5e3)}function f(){k.trigger("autosave-enable-buttons")}function g(){function e(){var a=Math.random().toString(),c=!1;try{b.sessionStorage.setItem("wp-test",a),c=b.sessionStorage.getItem("wp-test")===a,b.sessionStorage.removeItem("wp-test")}catch(d){}return w=c,c}function f(){var a=!1;return w&&u&&(a=sessionStorage.getItem("wp-autosave-"+u),a=a?JSON.parse(a):{}),a}function g(a){var b;return w&&u?(b="wp-autosave-"+u,sessionStorage.setItem(b,JSON.stringify(a)),null!==sessionStorage.getItem(b)):!1}function h(){var a=f();return a&&v?a["post_"+v]||!1:!1}function j(a){var b=f();if(!b||!v)return!1;if(a)b["post_"+v]=a;else{if(!b.hasOwnProperty("post_"+v))return!1;delete b["post_"+v]}return g(b)}function l(){z=!0}function m(){z=!1}function n(b){var e,f,g=!1;return z||!w?!1:(b?(e=h()||{},a.extend(e,b)):e=c("local"),f=d(e),"undefined"==typeof y&&(y=i),f===y?!1:(e.save_time=(new Date).getTime(),e.status=a("#post_status").val()||"",g=j(e),g&&(y=f),g))}function o(){v=a("#post_ID").val()||0,a("#wp-content-wrap").hasClass("tmce-active")?k.on("tinymce-editor-init.autosave",function(){b.setTimeout(function(){q()},1500)}):q(),x=b.setInterval(n,15e3),a("form#post").on("submit.autosave-local",function(){var b="undefined"!=typeof tinymce&&tinymce.get("content"),c=a("#post_ID").val()||0;b&&!b.isHidden()?b.on("submit",function(){n({post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""})}):n({post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""}),wpCookies.set("wp-saving-post",c+"-check",86400)})}function p(a,b){function c(a){return a.toString().replace(/[\x20\t\r\n\f]+/g,"")}return c(a||"")===c(b||"")}function q(){var b,c,d,e,f=h(),g=wpCookies.get("wp-saving-post");return g===v+"-saved"?(wpCookies.remove("wp-saving-post"),void j(!1)):void(f&&(a("#has-newer-autosave").length||(b=a("#content").val()||"",c=a("#title").val()||"",d=a("#excerpt").val()||"",p(b,f.content)&&p(c,f.post_title)&&p(d,f.excerpt)||(s=f,t={content:b,post_title:c,excerpt:d},e=a("#local-storage-notice"),a(".wrap h2").first().after(e.addClass("notice-warning").show()),e.on("click.autosave-local",function(b){var c=a(b.target);c.hasClass("restore-backup")?(r(s),c.parent().hide(),a(this).find("p.undo-restore").show(),e.removeClass("notice-warning").addClass("notice-success")):c.hasClass("undo-restore-backup")&&(r(t),c.parent().hide(),a(this).find("p.local-restore").show(),e.removeClass("notice-success").addClass("notice-warning")),b.preventDefault()})))))}function r(b){var c;return b?(y=d(b),a("#title").val()!==b.post_title&&a("#title").focus().val(b.post_title||""),a("#excerpt").val(b.excerpt||""),c="undefined"!=typeof tinymce&&tinymce.get("content"),c&&!c.isHidden()&&"undefined"!=typeof switchEditors?(c.undoManager.add(),c.setContent(b.content?switchEditors.wpautop(b.content):"")):(a("#content-html").click(),a("#content").val(b.content)),!0):!1}var s,t,u,v,w,x,y,z=!1;return u="undefined"!=typeof b.autosaveL10n&&b.autosaveL10n.blog_id,e()&&u&&(a("#content").length||a("#excerpt").length)&&k.ready(o),{hasStorage:w,getSavedPostData:h,save:n,suspend:l,resume:m}}function h(){function g(){q=!0,b.clearTimeout(r),r=b.setTimeout(function(){q=!1},1e4)}function h(){v=!0}function j(){v=!1}function l(b){p(),q=!1,t=s,s="",k.trigger("after-autosave",[b]),f(),b.success&&a("#auto_draft").val("")}function m(){u=0,wp.heartbeat.connectNow()}function n(){return d()!==i}function o(){var f,h;return v||q||!b.autosave()?!1:(new Date).getTime()<u?!1:(f=c(),h=d(f),"undefined"==typeof t&&(t=i),h===t?!1:(s=h,g(),e(),k.trigger("wpcountwords",[f.content]).trigger("before-autosave",[f]),f._wpnonce=a("#_wpnonce").val()||"",f))}function p(){u=(new Date).getTime()+1e3*autosaveL10n.autosaveInterval||6e4}var q,r,s,t,u=0,v=!1;return k.on("heartbeat-send.autosave",function(a,b){var c=o();c&&(b.wp_autosave=c)}).on("heartbeat-tick.autosave",function(a,b){b.wp_autosave&&l(b.wp_autosave)}).on("heartbeat-connection-lost.autosave",function(b,c,d){if("timeout"===c||603===d){var f=a("#lost-connection-notice");wp.autosave.local.hasStorage||f.find(".hide-if-no-sessionstorage").hide(),f.show(),e()}}).on("heartbeat-connection-restored.autosave",function(){a("#lost-connection-notice").hide(),f()}).ready(function(){p()}),{tempBlockSave:g,triggerSave:m,postChanged:n,suspend:h,resume:j}}var i,j=0,k=a(document);return k.on("tinymce-editor-init.autosave",function(a,c){"content"===c.id&&b.setTimeout(function(){c.save(),i=d()},1e3)}).ready(function(){i=d()}),{getPostData:c,getCompareString:d,disableButtons:e,enableButtons:f,local:g(),server:h()}}b.wp=b.wp||{},b.wp.autosave=c()}(jQuery,window);
\ No newline at end of file
+window.autosave=function(){return!0},function(a,b){function c(){function c(b){var c,d,e,f=(new Date).getTime(),g=[],h="undefined"!=typeof tinymce&&tinymce.get("content");return h&&!h.isHidden()&&f-3e3>j&&(h.save(),j=f),e={post_id:a("#post_ID").val()||0,post_type:a("#post_type").val()||"",post_author:a("#post_author").val()||"",post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""},"local"===b?e:(a('input[id^="in-category-"]:checked').each(function(){g.push(this.value)}),e.catslist=g.join(","),(c=a("#post_name").val())&&(e.post_name=c),(d=a("#parent_id").val())&&(e.parent_id=d),a("#comment_status").prop("checked")&&(e.comment_status="open"),a("#ping_status").prop("checked")&&(e.ping_status="open"),"1"===a("#auto_draft").val()&&(e.auto_draft="1"),e)}function d(b){return"object"==typeof b?(b.post_title||"")+"::"+(b.content||"")+"::"+(b.excerpt||""):(a("#title").val()||"")+"::"+(a("#content").val()||"")+"::"+(a("#excerpt").val()||"")}function e(){k.trigger("autosave-disable-buttons"),setTimeout(f,5e3)}function f(){k.trigger("autosave-enable-buttons")}function g(){function e(){var a=Math.random().toString(),c=!1;try{b.sessionStorage.setItem("wp-test",a),c=b.sessionStorage.getItem("wp-test")===a,b.sessionStorage.removeItem("wp-test")}catch(d){}return w=c,c}function f(){var a=!1;return w&&u&&(a=sessionStorage.getItem("wp-autosave-"+u),a=a?JSON.parse(a):{}),a}function g(a){var b;return w&&u?(b="wp-autosave-"+u,sessionStorage.setItem(b,JSON.stringify(a)),null!==sessionStorage.getItem(b)):!1}function h(){var a=f();return a&&v?a["post_"+v]||!1:!1}function j(a){var b=f();if(!b||!v)return!1;if(a)b["post_"+v]=a;else{if(!b.hasOwnProperty("post_"+v))return!1;delete b["post_"+v]}return g(b)}function l(){z=!0}function m(){z=!1}function n(b){var e,f,g=!1;return z||!w?!1:(b?(e=h()||{},a.extend(e,b)):e=c("local"),f=d(e),"undefined"==typeof y&&(y=i),f===y?!1:(e.save_time=(new Date).getTime(),e.status=a("#post_status").val()||"",g=j(e),g&&(y=f),g))}function o(){v=a("#post_ID").val()||0,a("#wp-content-wrap").hasClass("tmce-active")?k.on("tinymce-editor-init.autosave",function(){b.setTimeout(function(){q()},1500)}):q(),x=b.setInterval(n,15e3),a("form#post").on("submit.autosave-local",function(){var c="undefined"!=typeof tinymce&&tinymce.get("content"),d=a("#post_ID").val()||0;c&&!c.isHidden()?c.on("submit",function(){n({post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""})}):n({post_title:a("#title").val()||"",content:a("#content").val()||"",excerpt:a("#excerpt").val()||""});var e="https:"===b.location.protocol;wpCookies.set("wp-saving-post",d+"-check",86400,!1,!1,e)})}function p(a,b){function c(a){return a.toString().replace(/[\x20\t\r\n\f]+/g,"")}return c(a||"")===c(b||"")}function q(){var b,c,d,e,f=h(),g=wpCookies.get("wp-saving-post");return g===v+"-saved"?(wpCookies.remove("wp-saving-post"),void j(!1)):void(f&&(a("#has-newer-autosave").length||(b=a("#content").val()||"",c=a("#title").val()||"",d=a("#excerpt").val()||"",p(b,f.content)&&p(c,f.post_title)&&p(d,f.excerpt)||(s=f,t={content:b,post_title:c,excerpt:d},e=a("#local-storage-notice").insertAfter(a(".wrap").children(":header").first()).addClass("notice-warning").show(),e.on("click.autosave-local",function(b){var c=a(b.target);c.hasClass("restore-backup")?(r(s),c.parent().hide(),a(this).find("p.undo-restore").show(),e.removeClass("notice-warning").addClass("notice-success")):c.hasClass("undo-restore-backup")&&(r(t),c.parent().hide(),a(this).find("p.local-restore").show(),e.removeClass("notice-success").addClass("notice-warning")),b.preventDefault()})))))}function r(b){var c;return b?(y=d(b),a("#title").val()!==b.post_title&&a("#title").focus().val(b.post_title||""),a("#excerpt").val(b.excerpt||""),c="undefined"!=typeof tinymce&&tinymce.get("content"),c&&!c.isHidden()&&"undefined"!=typeof switchEditors?(c.undoManager.add(),c.setContent(b.content?switchEditors.wpautop(b.content):"")):(a("#content-html").click(),a("#content").val(b.content)),!0):!1}var s,t,u,v,w,x,y,z=!1;return u="undefined"!=typeof b.autosaveL10n&&b.autosaveL10n.blog_id,e()&&u&&(a("#content").length||a("#excerpt").length)&&k.ready(o),{hasStorage:w,getSavedPostData:h,save:n,suspend:l,resume:m}}function h(){function g(){q=!0,b.clearTimeout(r),r=b.setTimeout(function(){q=!1},1e4)}function h(){v=!0}function j(){v=!1}function l(b){p(),q=!1,t=s,s="",k.trigger("after-autosave",[b]),f(),b.success&&a("#auto_draft").val("")}function m(){u=0,wp.heartbeat.connectNow()}function n(){return d()!==i}function o(){var f,h;return v||q||!b.autosave()?!1:(new Date).getTime()<u?!1:(f=c(),h=d(f),"undefined"==typeof t&&(t=i),h===t?!1:(s=h,g(),e(),k.trigger("wpcountwords",[f.content]).trigger("before-autosave",[f]),f._wpnonce=a("#_wpnonce").val()||"",f))}function p(){u=(new Date).getTime()+1e3*autosaveL10n.autosaveInterval||6e4}var q,r,s,t,u=0,v=!1;return k.on("heartbeat-send.autosave",function(a,b){var c=o();c&&(b.wp_autosave=c)}).on("heartbeat-tick.autosave",function(a,b){b.wp_autosave&&l(b.wp_autosave)}).on("heartbeat-connection-lost.autosave",function(b,c,d){if("timeout"===c||603===d){var f=a("#lost-connection-notice");wp.autosave.local.hasStorage||f.find(".hide-if-no-sessionstorage").hide(),f.show(),e()}}).on("heartbeat-connection-restored.autosave",function(){a("#lost-connection-notice").hide(),f()}).ready(function(){p()}),{tempBlockSave:g,triggerSave:m,postChanged:n,suspend:h,resume:j}}var i,j=0,k=a(document);return k.on("tinymce-editor-init.autosave",function(a,c){"content"===c.id&&b.setTimeout(function(){c.save(),i=d()},1e3)}).ready(function(){i=d()}),{getPostData:c,getCompareString:d,disableButtons:e,enableButtons:f,local:g(),server:h()}}b.wp=b.wp||{},b.wp.autosave=c()}(jQuery,window);
\ No newline at end of file
index 2f2e3b34e4dd0567ad4d5a538f9752ae2ead73dc..184726d35e6a1487b779762f0aad968a59854784 100644 (file)
@@ -1,47 +1,96 @@
 var addComment = {
-       moveForm : function(commId, parentId, respondId, postId) {
-               var t = this, div, comm = t.I(commId), respond = t.I(respondId), cancel = t.I('cancel-comment-reply-link'), parent = t.I('comment_parent'), post = t.I('comment_post_ID');
+       moveForm: function( commId, parentId, respondId, postId ) {
+               var div, element, style, cssHidden,
+                       t           = this,
+                       comm        = t.I( commId ),
+                       respond     = t.I( respondId ),
+                       cancel      = t.I( 'cancel-comment-reply-link' ),
+                       parent      = t.I( 'comment_parent' ),
+                       post        = t.I( 'comment_post_ID' ),
+                       commentForm = respond.getElementsByTagName( 'form' )[0];
 
-               if ( ! comm || ! respond || ! cancel || ! parent )
+               if ( ! comm || ! respond || ! cancel || ! parent || ! commentForm ) {
                        return;
+               }
 
                t.respondId = respondId;
                postId = postId || false;
 
-               if ( ! t.I('wp-temp-form-div') ) {
-                       div = document.createElement('div');
+               if ( ! t.I( 'wp-temp-form-div' ) ) {
+                       div = document.createElement( 'div' );
                        div.id = 'wp-temp-form-div';
                        div.style.display = 'none';
-                       respond.parentNode.insertBefore(div, respond);
+                       respond.parentNode.insertBefore( div, respond );
                }
 
-               comm.parentNode.insertBefore(respond, comm.nextSibling);
-               if ( post && postId )
+               comm.parentNode.insertBefore( respond, comm.nextSibling );
+               if ( post && postId ) {
                        post.value = postId;
+               }
                parent.value = parentId;
                cancel.style.display = '';
 
                cancel.onclick = function() {
-                       var t = addComment, temp = t.I('wp-temp-form-div'), respond = t.I(t.respondId);
+                       var t       = addComment,
+                               temp    = t.I( 'wp-temp-form-div' ),
+                               respond = t.I( t.respondId );
 
-                       if ( ! temp || ! respond )
+                       if ( ! temp || ! respond ) {
                                return;
+                       }
 
-                       t.I('comment_parent').value = '0';
-                       temp.parentNode.insertBefore(respond, temp);
-                       temp.parentNode.removeChild(temp);
+                       t.I( 'comment_parent' ).value = '0';
+                       temp.parentNode.insertBefore( respond, temp );
+                       temp.parentNode.removeChild( temp );
                        this.style.display = 'none';
                        this.onclick = null;
                        return false;
                };
 
-               try { t.I('comment').focus(); }
-               catch(e) {}
+               /*
+                * Set initial focus to the first form focusable element.
+                * Try/catch used just to avoid errors in IE 7- which return visibility
+                * 'inherit' when the visibility value is inherited from an ancestor.
+                */
+               try {
+                       for ( var i = 0; i < commentForm.elements.length; i++ ) {
+                               element = commentForm.elements[i];
+                               cssHidden = false;
+
+                               // Modern browsers.
+                               if ( 'getComputedStyle' in window ) {
+                                       style = window.getComputedStyle( element );
+                               // IE 8.
+                               } else if ( document.documentElement.currentStyle ) {
+                                       style = element.currentStyle;
+                               }
+
+                               /*
+                                * For display none, do the same thing jQuery does. For visibility,
+                                * check the element computed style since browsers are already doing
+                                * the job for us. In fact, the visibility computed style is the actual
+                                * computed value and already takes into account the element ancestors.
+                                */
+                               if ( ( element.offsetWidth <= 0 && element.offsetHeight <= 0 ) || style.visibility === 'hidden' ) {
+                                       cssHidden = true;
+                               }
+
+                               // Skip form elements that are hidden or disabled.
+                               if ( 'hidden' === element.type || element.disabled || cssHidden ) {
+                                       continue;
+                               }
+
+                               element.focus();
+                               // Stop after the first focusable element.
+                               break;
+                       }
+
+               } catch( er ) {}
 
                return false;
        },
 
-       I : function(e) {
-               return document.getElementById(e);
+       I: function( id ) {
+               return document.getElementById( id );
        }
 };
index 11af308f3b0272a3a7942a0d57cb60c27327e88a..40421437007c3baa7eabd4c73c5663e4a9bb693f 100644 (file)
@@ -1 +1 @@
-var addComment={moveForm:function(a,b,c,d){var e,f=this,g=f.I(a),h=f.I(c),i=f.I("cancel-comment-reply-link"),j=f.I("comment_parent"),k=f.I("comment_post_ID");if(g&&h&&i&&j){f.respondId=c,d=d||!1,f.I("wp-temp-form-div")||(e=document.createElement("div"),e.id="wp-temp-form-div",e.style.display="none",h.parentNode.insertBefore(e,h)),g.parentNode.insertBefore(h,g.nextSibling),k&&d&&(k.value=d),j.value=b,i.style.display="",i.onclick=function(){var a=addComment,b=a.I("wp-temp-form-div"),c=a.I(a.respondId);if(b&&c)return a.I("comment_parent").value="0",b.parentNode.insertBefore(c,b),b.parentNode.removeChild(b),this.style.display="none",this.onclick=null,!1};try{f.I("comment").focus()}catch(l){}return!1}},I:function(a){return document.getElementById(a)}};
\ No newline at end of file
+var addComment={moveForm:function(a,b,c,d){var e,f,g,h,i=this,j=i.I(a),k=i.I(c),l=i.I("cancel-comment-reply-link"),m=i.I("comment_parent"),n=i.I("comment_post_ID"),o=k.getElementsByTagName("form")[0];if(j&&k&&l&&m&&o){i.respondId=c,d=d||!1,i.I("wp-temp-form-div")||(e=document.createElement("div"),e.id="wp-temp-form-div",e.style.display="none",k.parentNode.insertBefore(e,k)),j.parentNode.insertBefore(k,j.nextSibling),n&&d&&(n.value=d),m.value=b,l.style.display="",l.onclick=function(){var a=addComment,b=a.I("wp-temp-form-div"),c=a.I(a.respondId);if(b&&c)return a.I("comment_parent").value="0",b.parentNode.insertBefore(c,b),b.parentNode.removeChild(b),this.style.display="none",this.onclick=null,!1};try{for(var p=0;p<o.elements.length;p++)if(f=o.elements[p],h=!1,"getComputedStyle"in window?g=window.getComputedStyle(f):document.documentElement.currentStyle&&(g=f.currentStyle),(f.offsetWidth<=0&&f.offsetHeight<=0||"hidden"===g.visibility)&&(h=!0),"hidden"!==f.type&&!f.disabled&&!h){f.focus();break}}catch(q){}return!1}},I:function(a){return document.getElementById(a)}};
\ No newline at end of file
index 2e0ab1957857d7f8affe21369455b31d5625d751..79ba46430a53eaf840ed957d59edeb5eda33a8ad 100644 (file)
@@ -74,6 +74,14 @@ window.wp = window.wp || {};
                }
 
                magic = this;
+
+               /*
+                * If the class has a method called "instance",
+                * the return value from the class' constructor will be a function that
+                * calls the "instance" method.
+                *
+                * It is also an object that has properties and methods inside it.
+                */
                if ( this.instance ) {
                        magic = function() {
                                return magic.instance.apply( magic, arguments );
@@ -101,6 +109,11 @@ window.wp = window.wp || {};
 
        api.Class.applicator = {};
 
+       /**
+        * Initialize a class instance.
+        *
+        * Override this function in a subclass as needed.
+        */
        api.Class.prototype.initialize = function() {};
 
        /*
@@ -155,6 +168,10 @@ window.wp = window.wp || {};
         * @constuctor
         */
        api.Value = api.Class.extend({
+               /**
+                * @param {mixed}  initial The initial value.
+                * @param {object} options
+                */
                initialize: function( initial, options ) {
                        this._value = initial; // @todo: potentially change this to a this.set() call.
                        this.callbacks = $.Callbacks();
@@ -173,10 +190,20 @@ window.wp = window.wp || {};
                        return arguments.length ? this.set.apply( this, arguments ) : this.get();
                },
 
+               /**
+                * Get the value.
+                *
+                * @return {mixed}
+                */
                get: function() {
                        return this._value;
                },
 
+               /**
+                * Set the value and trigger all bound callbacks.
+                *
+                * @param {object} to New value.
+                */
                set: function( to ) {
                        var from = this._value;
 
@@ -219,11 +246,21 @@ window.wp = window.wp || {};
                        return value;
                },
 
+               /**
+                * Bind a function to be invoked whenever the value changes.
+                *
+                * @param {...Function} A function, or multiple functions, to add to the callback stack.
+                */
                bind: function() {
                        this.callbacks.add.apply( this.callbacks, arguments );
                        return this;
                },
 
+               /**
+                * Unbind a previously bound function.
+                *
+                * @param {...Function} A function, or multiple functions, to remove from the callback stack.
+                */
                unbind: function() {
                        this.callbacks.remove.apply( this.callbacks, arguments );
                        return this;
@@ -272,6 +309,12 @@ window.wp = window.wp || {};
         * @mixes wp.customize.Events
         */
        api.Values = api.Class.extend({
+
+               /**
+                * The default constructor for items of the collection.
+                *
+                * @type {object}
+                */
                defaultConstructor: api.Value,
 
                initialize: function( options ) {
@@ -281,6 +324,21 @@ window.wp = window.wp || {};
                        this._deferreds = {};
                },
 
+               /**
+                * Get the instance of an item from the collection if only ID is specified.
+                *
+                * If more than one argument is supplied, all are expected to be IDs and
+                * the last to be a function callback that will be invoked when the requested
+                * items are available.
+                *
+                * @see {api.Values.when}
+                *
+                * @param  {string}   id ID of the item.
+                * @param  {...}         Zero or more IDs of items to wait for and a callback
+                *                       function to invoke when they're available. Optional.
+                * @return {mixed}    The item instance if only one ID was supplied.
+                *                    A Deferred Promise object if a callback function is supplied.
+                */
                instance: function( id ) {
                        if ( arguments.length === 1 )
                                return this.value( id );
@@ -288,35 +346,72 @@ window.wp = window.wp || {};
                        return this.when.apply( this, arguments );
                },
 
+               /**
+                * Get the instance of an item.
+                *
+                * @param  {string} id The ID of the item.
+                * @return {[type]}    [description]
+                */
                value: function( id ) {
                        return this._value[ id ];
                },
 
+               /**
+                * Whether the collection has an item with the given ID.
+                *
+                * @param  {string}  id The ID of the item to look for.
+                * @return {Boolean}
+                */
                has: function( id ) {
                        return typeof this._value[ id ] !== 'undefined';
                },
 
+               /**
+                * Add an item to the collection.
+                *
+                * @param {string} id    The ID of the item.
+                * @param {mixed}  value The item instance.
+                * @return {mixed} The new item's instance.
+                */
                add: function( id, value ) {
                        if ( this.has( id ) )
                                return this.value( id );
 
                        this._value[ id ] = value;
                        value.parent = this;
+
+                       // Propagate a 'change' event on an item up to the collection.
                        if ( value.extended( api.Value ) )
                                value.bind( this._change );
 
                        this.trigger( 'add', value );
 
+                       // If a deferred object exists for this item,
+                       // resolve it.
                        if ( this._deferreds[ id ] )
                                this._deferreds[ id ].resolve();
 
                        return this._value[ id ];
                },
 
+               /**
+                * Create a new item of the collection using the collection's default constructor
+                * and store it in the collection.
+                *
+                * @param  {string} id    The ID of the item.
+                * @param  {mixed}  value Any extra arguments are passed into the item's initialize method.
+                * @return {mixed}  The new item's instance.
+                */
                create: function( id ) {
                        return this.add( id, new this.defaultConstructor( api.Class.applicator, slice.call( arguments, 1 ) ) );
                },
 
+               /**
+                * Iterate over all items in the collection invoking the provided callback.
+                *
+                * @param  {Function} callback Function to invoke.
+                * @param  {object}   context  Object context to invoke the function with. Optional.
+                */
                each: function( callback, context ) {
                        context = typeof context === 'undefined' ? this : context;
 
@@ -325,6 +420,11 @@ window.wp = window.wp || {};
                        });
                },
 
+               /**
+                * Remove an item from the collection.
+                *
+                * @param  {string} id The ID of the item to remove.
+                */
                remove: function( id ) {
                        var value;
 
@@ -359,10 +459,18 @@ window.wp = window.wp || {};
                        if ( $.isFunction( ids[ ids.length - 1 ] ) )
                                dfd.done( ids.pop() );
 
+                       /*
+                        * Create a stack of deferred objects for each item that is not
+                        * yet available, and invoke the supplied callback when they are.
+                        */
                        $.when.apply( $, $.map( ids, function( id ) {
                                if ( self.has( id ) )
                                        return;
 
+                               /*
+                                * The requested item is not available yet, create a deferred
+                                * object to resolve when it becomes available.
+                                */
                                return self._deferreds[ id ] = self._deferreds[ id ] || $.Deferred();
                        })).done( function() {
                                var values = $.map( ids, function( id ) {
@@ -385,11 +493,16 @@ window.wp = window.wp || {};
                        return dfd.promise();
                },
 
+               /**
+                * A helper function to propagate a 'change' event from an item
+                * to the collection itself.
+                */
                _change: function() {
                        this.parent.trigger( 'change', this );
                }
        });
 
+       // Create a global events bus on the Customizer.
        $.extend( api.Values.prototype, api.Events );
 
 
@@ -502,7 +615,7 @@ window.wp = window.wp || {};
        $.support.postMessage = !! window.postMessage;
 
        /**
-        * Messenger for postMessage.
+        * A communicator for sending data from one window to another over postMessage.
         *
         * @constuctor
         * @augments wp.customize.Class
@@ -581,6 +694,11 @@ window.wp = window.wp || {};
                        $( window ).off( 'message', this.receive );
                },
 
+               /**
+                * Receive data from the other window.
+                *
+                * @param  {jQuery.Event} event Event with embedded data.
+                */
                receive: function( event ) {
                        var message;
 
@@ -611,6 +729,12 @@ window.wp = window.wp || {};
                        this.trigger( message.id, message.data );
                },
 
+               /**
+                * Send data to the other window.
+                *
+                * @param  {string} id   The event name.
+                * @param  {object} data Data.
+                */
                send: function( id, data ) {
                        var message;
 
@@ -630,8 +754,14 @@ window.wp = window.wp || {};
        // Add the Events mixin to api.Messenger.
        $.extend( api.Messenger.prototype, api.Events );
 
-       // Core customize object.
+       // The main API object is also a collection of all customizer settings.
        api = $.extend( new api.Values(), api );
+
+       /**
+        * Get all customize settings.
+        *
+        * @return {object}
+        */
        api.get = function() {
                var result = {};
 
index ce69a359c6cdb3d56c5333d1f55e6e526685ae1c..f853f37d85f30c1cdff64a9d0949408b36a292f7 100644 (file)
@@ -1,4 +1,8 @@
 /* global _wpCustomizeLoaderSettings, confirm */
+/*
+ * Expose a public API that allows the customizer to be
+ * loaded on any page.
+ */
 window.wp = window.wp || {};
 
 (function( exports, $ ){
@@ -111,7 +115,11 @@ window.wp = window.wp || {};
                        this.active = true;
                        this.body.addClass('customize-loading');
 
-                       // Dirty state of Customizer in iframe
+                       /*
+                        * Track the dirtiness state (whether the drafted changes have been published)
+                        * of the Customizer in the iframe. This is used to decide whether to display
+                        * an AYS alert if the user tries to close the window before saving changes.
+                        */
                        this.saved = new api.Value( true );
 
                        this.iframe = $( '<iframe />', { 'src': src, 'title': Loader.settings.l10n.mainIframeTitle } ).appendTo( this.element );
index e58c8d6d44da62e39665ecd578087760d3be5f20..cfda0edf98de971712ff7dd67e5443fbd59ed58f 100644 (file)
@@ -1,3 +1,6 @@
+/*
+ * Script run inside a Customizer preview frame.
+ */
 (function( exports, $ ){
        var api = wp.customize,
                debounce;
@@ -30,8 +33,7 @@
         */
        api.Preview = api.Messenger.extend({
                /**
-                * Requires params:
-                *  - url    - the URL of preview frame
+                * @param {string} url The URL of preview frame
                 */
                initialize: function( params, options ) {
                        var self = this;
                        api.preview.send( 'documentTitle', document.title );
                });
 
+               /*
+                * Send a message to the parent customize frame with a list of which
+                * containers and controls are active.
+                */
                api.preview.send( 'ready', {
                        activePanels: api.settings.activePanels,
                        activeSections: api.settings.activeSections,
                // Display a loading indicator when preview is reloading, and remove on failure.
                api.preview.bind( 'loading-initiated', function () {
                        $( 'body' ).addClass( 'wp-customizer-unloading' );
-                       $( 'html' ).prop( 'title', api.settings.l10n.loading );
                });
                api.preview.bind( 'loading-failed', function () {
                        $( 'body' ).removeClass( 'wp-customizer-unloading' );
-                       $( 'html' ).prop( 'title', '' );
                });
 
                /* Custom Backgrounds */
index a5fb9fa8a22b01837a3b38b7d8a50a463451ba06..de5f15f8ac1d6b4e191527b191c629ad23d21abc 100644 (file)
@@ -1 +1 @@
-!function(a,b){var c,d=wp.customize;c=function(a,b,c){var d;return function(){var e=arguments;c=c||this,clearTimeout(d),d=setTimeout(function(){d=null,a.apply(c,e)},b)}},d.Preview=d.Messenger.extend({initialize:function(a,e){var f=this;d.Messenger.prototype.initialize.call(this,a,e),this.body=b(document.body),this.body.on("click.preview","a",function(a){a.preventDefault(),f.send("scroll",0),f.send("url",b(this).prop("href"))}),this.body.on("submit.preview","form",function(a){a.preventDefault()}),this.window=b(window),this.window.on("scroll.preview",c(function(){f.send("scroll",f.window.scrollTop())},200)),this.bind("scroll",function(a){f.window.scrollTop(a)})}}),b(function(){if(d.settings=window._wpCustomizeSettings,d.settings){var a;d.preview=new d.Preview({url:window.location.href,channel:d.settings.channel}),d.preview.bind("settings",function(a){b.each(a,function(a,b){d.has(a)?d(a).set(b):d.create(a,b)})}),d.preview.trigger("settings",d.settings.values),d.preview.bind("setting",function(a){var b;a=a.slice(),(b=d(a.shift()))&&b.set.apply(b,a)}),d.preview.bind("sync",function(a){b.each(a,function(a,b){d.preview.trigger(a,b)}),d.preview.send("synced")}),d.preview.bind("active",function(){d.settings.nonce&&d.preview.send("nonce",d.settings.nonce),d.preview.send("documentTitle",document.title)}),d.preview.send("ready",{activePanels:d.settings.activePanels,activeSections:d.settings.activeSections,activeControls:d.settings.activeControls}),d.preview.bind("loading-initiated",function(){b("body").addClass("wp-customizer-unloading"),b("html").prop("title",d.settings.l10n.loading)}),d.preview.bind("loading-failed",function(){b("body").removeClass("wp-customizer-unloading"),b("html").prop("title","")}),a=b.map(["color","image","position_x","repeat","attachment"],function(a){return"background_"+a}),d.when.apply(d,a).done(function(a,c,d,e,f){var g,h=b(document.body),i=b("head"),j=b("#custom-background-css");g=function(){var g="";h.toggleClass("custom-background",!(!a()&&!c())),a()&&(g+="background-color: "+a()+";"),c()&&(g+='background-image: url("'+c()+'");',g+="background-position: top "+d()+";",g+="background-repeat: "+e()+";",g+="background-attachment: "+f()+";"),j.remove(),j=b('<style type="text/css" id="custom-background-css">body.custom-background { '+g+" }</style>").appendTo(i)},b.each(arguments,function(){this.bind(g)})}),d.trigger("preview-ready")}})}(wp,jQuery);
\ No newline at end of file
+!function(a,b){var c,d=wp.customize;c=function(a,b,c){var d;return function(){var e=arguments;c=c||this,clearTimeout(d),d=setTimeout(function(){d=null,a.apply(c,e)},b)}},d.Preview=d.Messenger.extend({initialize:function(a,e){var f=this;d.Messenger.prototype.initialize.call(this,a,e),this.body=b(document.body),this.body.on("click.preview","a",function(a){a.preventDefault(),f.send("scroll",0),f.send("url",b(this).prop("href"))}),this.body.on("submit.preview","form",function(a){a.preventDefault()}),this.window=b(window),this.window.on("scroll.preview",c(function(){f.send("scroll",f.window.scrollTop())},200)),this.bind("scroll",function(a){f.window.scrollTop(a)})}}),b(function(){if(d.settings=window._wpCustomizeSettings,d.settings){var a;d.preview=new d.Preview({url:window.location.href,channel:d.settings.channel}),d.preview.bind("settings",function(a){b.each(a,function(a,b){d.has(a)?d(a).set(b):d.create(a,b)})}),d.preview.trigger("settings",d.settings.values),d.preview.bind("setting",function(a){var b;a=a.slice(),(b=d(a.shift()))&&b.set.apply(b,a)}),d.preview.bind("sync",function(a){b.each(a,function(a,b){d.preview.trigger(a,b)}),d.preview.send("synced")}),d.preview.bind("active",function(){d.settings.nonce&&d.preview.send("nonce",d.settings.nonce),d.preview.send("documentTitle",document.title)}),d.preview.send("ready",{activePanels:d.settings.activePanels,activeSections:d.settings.activeSections,activeControls:d.settings.activeControls}),d.preview.bind("loading-initiated",function(){b("body").addClass("wp-customizer-unloading")}),d.preview.bind("loading-failed",function(){b("body").removeClass("wp-customizer-unloading")}),a=b.map(["color","image","position_x","repeat","attachment"],function(a){return"background_"+a}),d.when.apply(d,a).done(function(a,c,d,e,f){var g,h=b(document.body),i=b("head"),j=b("#custom-background-css");g=function(){var g="";h.toggleClass("custom-background",!(!a()&&!c())),a()&&(g+="background-color: "+a()+";"),c()&&(g+='background-image: url("'+c()+'");',g+="background-position: top "+d()+";",g+="background-repeat: "+e()+";",g+="background-attachment: "+f()+";"),j.remove(),j=b('<style type="text/css" id="custom-background-css">body.custom-background { '+g+" }</style>").appendTo(i)},b.each(arguments,function(){this.bind(g)})}),d.trigger("preview-ready")}})}(wp,jQuery);
\ No newline at end of file
index b4c02d3f08be98fc3bf745bc4382bc886c27ce1a..7f685256288f8abacde8dcefcc6fee6e23250b9c 100644 (file)
@@ -1,6 +1,6 @@
 /*
-    http://www.JSON.org/json2.js
-    2011-02-23
+    json2.js
+    2015-05-03
 
     Public Domain.
 
@@ -17,7 +17,9 @@
 
 
     This file creates a global JSON object containing two methods: stringify
-    and parse.
+    and parse. This file is provides the ES5 JSON capability to ES3 systems.
+    If a project might run on IE8 or earlier, then this file should be included.
+    This file does nothing on ES5 systems.
 
         JSON.stringify(value, replacer, space)
             value       any JavaScript value, usually an object or array.
@@ -48,7 +50,9 @@
                 Date.prototype.toJSON = function (key) {
                     function f(n) {
                         // Format integers to have at least two digits.
-                        return n < 10 ? '0' + n : n;
+                        return n < 10 
+                            ? '0' + n 
+                            : n;
                     }
 
                     return this.getUTCFullYear()   + '-' +
@@ -94,8 +98,9 @@
             // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'
 
             text = JSON.stringify([new Date()], function (key, value) {
-                return this[key] instanceof Date ?
-                    'Date(' + this[key] + ')' : value;
+                return this[key] instanceof Date 
+                    ? 'Date(' + this[key] + ')' 
+                    : value;
             });
             // text is '["Date(---current time---)"]'
 
     redistribute.
 */
 
-/*jslint evil: true, strict: false, regexp: false */
+/*jslint 
+    eval, for, this 
+*/
 
-/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
-    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
+/*property
+    JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
     getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
     lastIndex, length, parse, prototype, push, replace, slice, stringify,
     test, toJSON, toString, valueOf
 // Create a JSON object only if one does not already exist. We create the
 // methods in a closure to avoid creating global variables.
 
-var JSON;
-if (!JSON) {
+if (typeof JSON !== 'object') {
     JSON = {};
 }
 
 (function () {
-    "use strict";
+    'use strict';
+    
+    var rx_one = /^[\],:{}\s]*$/,
+        rx_two = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+        rx_three = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+        rx_four = /(?:^|:|,)(?:\s*\[)+/g,
+        rx_escapable = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+        rx_dangerous = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
 
     function f(n) {
         // Format integers to have at least two digits.
-        return n < 10 ? '0' + n : n;
+        return n < 10 
+            ? '0' + n 
+            : n;
+    }
+    
+    function this_value() {
+        return this.valueOf();
     }
 
     if (typeof Date.prototype.toJSON !== 'function') {
 
-        Date.prototype.toJSON = function (key) {
+        Date.prototype.toJSON = function () {
 
-            return isFinite(this.valueOf()) ?
-                this.getUTCFullYear()     + '-' +
-                f(this.getUTCMonth() + 1) + '-' +
-                f(this.getUTCDate())      + 'T' +
-                f(this.getUTCHours())     + ':' +
-                f(this.getUTCMinutes())   + ':' +
-                f(this.getUTCSeconds())   + 'Z' : null;
+            return isFinite(this.valueOf())
+                ? this.getUTCFullYear() + '-' +
+                        f(this.getUTCMonth() + 1) + '-' +
+                        f(this.getUTCDate()) + 'T' +
+                        f(this.getUTCHours()) + ':' +
+                        f(this.getUTCMinutes()) + ':' +
+                        f(this.getUTCSeconds()) + 'Z'
+                : null;
         };
 
-        String.prototype.toJSON      =
-            Number.prototype.toJSON  =
-            Boolean.prototype.toJSON = function (key) {
-                return this.valueOf();
-            };
+        Boolean.prototype.toJSON = this_value;
+        Number.prototype.toJSON = this_value;
+        String.prototype.toJSON = this_value;
     }
 
-    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
-        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
-        gap,
+    var gap,
         indent,
-        meta = {    // table of character substitutions
-            '\b': '\\b',
-            '\t': '\\t',
-            '\n': '\\n',
-            '\f': '\\f',
-            '\r': '\\r',
-            '"' : '\\"',
-            '\\': '\\\\'
-        },
+        meta,
         rep;
 
 
@@ -215,12 +223,15 @@ if (!JSON) {
 // Otherwise we must also replace the offending characters with safe escape
 // sequences.
 
-        escapable.lastIndex = 0;
-        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
-            var c = meta[a];
-            return typeof c === 'string' ? c :
-                '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
-        }) + '"' : '"' + string + '"';
+        rx_escapable.lastIndex = 0;
+        return rx_escapable.test(string) 
+            ? '"' + string.replace(rx_escapable, function (a) {
+                var c = meta[a];
+                return typeof c === 'string'
+                    ? c
+                    : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+            }) + '"' 
+            : '"' + string + '"';
     }
 
 
@@ -260,7 +271,9 @@ if (!JSON) {
 
 // JSON numbers must be finite. Encode non-finite numbers as null.
 
-            return isFinite(value) ? String(value) : 'null';
+            return isFinite(value) 
+                ? String(value) 
+                : 'null';
 
         case 'boolean':
         case 'null':
@@ -303,9 +316,11 @@ if (!JSON) {
 // Join all of the elements together, separated with commas, and wrap them in
 // brackets.
 
-                v = partial.length === 0 ? '[]' : gap ?
-                    '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
-                    '[' + partial.join(',') + ']';
+                v = partial.length === 0
+                    ? '[]'
+                    : gap
+                        ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
+                        : '[' + partial.join(',') + ']';
                 gap = mind;
                 return v;
             }
@@ -319,7 +334,11 @@ if (!JSON) {
                         k = rep[i];
                         v = str(k, value);
                         if (v) {
-                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                            partial.push(quote(k) + (
+                                gap 
+                                    ? ': ' 
+                                    : ':'
+                            ) + v);
                         }
                     }
                 }
@@ -331,7 +350,11 @@ if (!JSON) {
                     if (Object.prototype.hasOwnProperty.call(value, k)) {
                         v = str(k, value);
                         if (v) {
-                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
+                            partial.push(quote(k) + (
+                                gap 
+                                    ? ': ' 
+                                    : ':'
+                            ) + v);
                         }
                     }
                 }
@@ -340,9 +363,11 @@ if (!JSON) {
 // Join all of the member texts together, separated with commas,
 // and wrap them in braces.
 
-            v = partial.length === 0 ? '{}' : gap ?
-                '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
-                '{' + partial.join(',') + '}';
+            v = partial.length === 0
+                ? '{}'
+                : gap
+                    ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
+                    : '{' + partial.join(',') + '}';
             gap = mind;
             return v;
         }
@@ -351,6 +376,15 @@ if (!JSON) {
 // If the JSON object does not yet have a stringify method, give it one.
 
     if (typeof JSON.stringify !== 'function') {
+        meta = {    // table of character substitutions
+            '\b': '\\b',
+            '\t': '\\t',
+            '\n': '\\n',
+            '\f': '\\f',
+            '\r': '\\r',
+            '"': '\\"',
+            '\\': '\\\\'
+        };
         JSON.stringify = function (value, replacer, space) {
 
 // The stringify method takes a value and an optional replacer, and an optional
@@ -432,11 +466,11 @@ if (!JSON) {
 // incorrectly, either silently deleting them, or treating them as line endings.
 
             text = String(text);
-            cx.lastIndex = 0;
-            if (cx.test(text)) {
-                text = text.replace(cx, function (a) {
+            rx_dangerous.lastIndex = 0;
+            if (rx_dangerous.test(text)) {
+                text = text.replace(rx_dangerous, function (a) {
                     return '\\u' +
-                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+                            ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                 });
             }
 
@@ -453,10 +487,14 @@ if (!JSON) {
 // we look to see that the remaining characters are only whitespace or ']' or
 // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
 
-            if (/^[\],:{}\s]*$/
-                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
-                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
-                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
+            if (
+                rx_one.test(
+                    text
+                        .replace(rx_two, '@')
+                        .replace(rx_three, ']')
+                        .replace(rx_four, '')
+                )
+            ) {
 
 // In the third stage we use the eval function to compile the text into a
 // JavaScript structure. The '{' operator is subject to a syntactic ambiguity
@@ -468,8 +506,9 @@ if (!JSON) {
 // In the optional fourth stage, we recursively walk the new structure, passing
 // each name/value pair to a reviver function for possible transformation.
 
-                return typeof reviver === 'function' ?
-                    walk({'': j}, '') : j;
+                return typeof reviver === 'function'
+                    ? walk({'': j}, '')
+                    : j;
             }
 
 // If the text is not JSON parseable, then a SyntaxError is thrown.
@@ -477,4 +516,4 @@ if (!JSON) {
             throw new SyntaxError('JSON.parse');
         };
     }
-}());
+}());
\ No newline at end of file
index 93b3056a86db590502bf57d955d63cd1617a42bd..a4aaec1999c5f73169668b91fa9093e76fb09df1 100644 (file)
@@ -1 +1 @@
-var JSON;JSON||(JSON={}),function(){"use strict";function f(a){return 10>a?"0"+a:a}function quote(a){return escapable.lastIndex=0,escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return"string"==typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function str(a,b){var c,d,e,f,g,h=gap,i=b[a];switch(i&&"object"==typeof i&&"function"==typeof i.toJSON&&(i=i.toJSON(a)),"function"==typeof rep&&(i=rep.call(b,a,i)),typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";if(gap+=indent,g=[],"[object Array]"===Object.prototype.toString.apply(i)){for(f=i.length,c=0;f>c;c+=1)g[c]=str(c,i)||"null";return e=0===g.length?"[]":gap?"[\n"+gap+g.join(",\n"+gap)+"\n"+h+"]":"["+g.join(",")+"]",gap=h,e}if(rep&&"object"==typeof rep)for(f=rep.length,c=0;f>c;c+=1)"string"==typeof rep[c]&&(d=rep[c],e=str(d,i),e&&g.push(quote(d)+(gap?": ":":")+e));else for(d in i)Object.prototype.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&g.push(quote(d)+(gap?": ":":")+e));return e=0===g.length?"{}":gap?"{\n"+gap+g.join(",\n"+gap)+"\n"+h+"}":"{"+g.join(",")+"}",gap=h,e}}"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(a){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()});var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","       ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;"function"!=typeof JSON.stringify&&(JSON.stringify=function(a,b,c){var d;if(gap="",indent="","number"==typeof c)for(d=0;c>d;d+=1)indent+=" ";else"string"==typeof c&&(indent=c);if(rep=b,b&&"function"!=typeof b&&("object"!=typeof b||"number"!=typeof b.length))throw new Error("JSON.stringify");return str("",{"":a})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&"object"==typeof e)for(c in e)Object.prototype.hasOwnProperty.call(e,c)&&(d=walk(e,c),void 0!==d?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;if(text=String(text),cx.lastIndex=0,cx.test(text)&&(text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}();
\ No newline at end of file
+"object"!=typeof JSON&&(JSON={}),function(){"use strict";function f(a){return 10>a?"0"+a:a}function this_value(){return this.valueOf()}function quote(a){return rx_escapable.lastIndex=0,rx_escapable.test(a)?'"'+a.replace(rx_escapable,function(a){var b=meta[a];return"string"==typeof b?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function str(a,b){var c,d,e,f,g,h=gap,i=b[a];switch(i&&"object"==typeof i&&"function"==typeof i.toJSON&&(i=i.toJSON(a)),"function"==typeof rep&&(i=rep.call(b,a,i)),typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";if(gap+=indent,g=[],"[object Array]"===Object.prototype.toString.apply(i)){for(f=i.length,c=0;f>c;c+=1)g[c]=str(c,i)||"null";return e=0===g.length?"[]":gap?"[\n"+gap+g.join(",\n"+gap)+"\n"+h+"]":"["+g.join(",")+"]",gap=h,e}if(rep&&"object"==typeof rep)for(f=rep.length,c=0;f>c;c+=1)"string"==typeof rep[c]&&(d=rep[c],e=str(d,i),e&&g.push(quote(d)+(gap?": ":":")+e));else for(d in i)Object.prototype.hasOwnProperty.call(i,d)&&(e=str(d,i),e&&g.push(quote(d)+(gap?": ":":")+e));return e=0===g.length?"{}":gap?"{\n"+gap+g.join(",\n"+gap)+"\n"+h+"}":"{"+g.join(",")+"}",gap=h,e}}var rx_one=/^[\],:{}\s]*$/,rx_two=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,rx_three=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,rx_four=/(?:^|:|,)(?:\s*\[)+/g,rx_escapable=/[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,rx_dangerous=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},Boolean.prototype.toJSON=this_value,Number.prototype.toJSON=this_value,String.prototype.toJSON=this_value);var gap,indent,meta,rep;"function"!=typeof JSON.stringify&&(meta={"\b":"\\b","        ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},JSON.stringify=function(a,b,c){var d;if(gap="",indent="","number"==typeof c)for(d=0;c>d;d+=1)indent+=" ";else"string"==typeof c&&(indent=c);if(rep=b,b&&"function"!=typeof b&&("object"!=typeof b||"number"!=typeof b.length))throw new Error("JSON.stringify");return str("",{"":a})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&"object"==typeof e)for(c in e)Object.prototype.hasOwnProperty.call(e,c)&&(d=walk(e,c),void 0!==d?e[c]=d:delete e[c]);return reviver.call(a,b,e)}var j;if(text=String(text),rx_dangerous.lastIndex=0,rx_dangerous.test(text)&&(text=text.replace(rx_dangerous,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})),rx_one.test(text.replace(rx_two,"@").replace(rx_three,"]").replace(rx_four,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}();
\ No newline at end of file
index c0ae668062f6d1be5e6d63e150aaab26bae9af5d..b532cb97a57372ffab9f3bff1618d143e5664181 100644 (file)
 
                                                // Add the processed piece for the match.
                                                pieces.push( {
-                                                       content: '<p data-wpview-marker="' + instance.encodedText + '">' + text + '</p>',
+                                                       content: instance.ignore ? text : '<p data-wpview-marker="' + instance.encodedText + '">' + text + '</p>',
                                                        processed: true
                                                } );
 
  * and a view for embeddable URLs.
  */
 ( function( window, views, media, $ ) {
-       var base, gallery, av, embed;
+       var base, gallery, av, embed,
+               schema, parser, serializer;
+
+       function verifyHTML( string ) {
+               var settings = {};
+
+               if ( ! window.tinymce ) {
+                       return string.replace( /<[^>]+>/g, '' );
+               }
+
+               if ( ! string || ( string.indexOf( '<' ) === -1 && string.indexOf( '>' ) === -1 ) ) {
+                       return string;
+               }
+
+               schema = schema || new window.tinymce.html.Schema( settings );
+               parser = parser || new window.tinymce.html.DomParser( settings, schema );
+               serializer = serializer || new window.tinymce.html.Serializer( settings, schema );
+
+               return serializer.serialize( parser.parse( string, { forced_root_block: false } ) );
+       }
 
        base = {
                state: [],
                                } );
 
                                self.render( self.template( {
+                                       verifyHTML: verifyHTML,
                                        attachments: attachments,
                                        columns: attrs.columns ? parseInt( attrs.columns, 10 ) : media.galleryDefaults.columns
                                } ) );
                        } )
                        .fail( function( response ) {
                                if ( self.url ) {
+                                       self.ignore = true;
                                        self.removeMarkers();
                                } else {
                                        self.setError( response.message || response.statusText, 'admin-media' );
index d168b0d78c0a871b32f4d7680ef70a9d31e07a8b..c2e2477231d227269bf358f6089b9ad2d1c4769f 100644 (file)
@@ -1 +1 @@
-!function(a,b,c,d){"use strict";var e={},f={};b.mce=b.mce||{},b.mce.views={register:function(a,c){e[a]=b.mce.View.extend(_.extend(c,{type:a}))},unregister:function(a){delete e[a]},get:function(a){return e[a]},unbind:function(){_.each(f,function(a){a.unbind()})},setMarkers:function(a){var b,c,d=[{content:a}],f=this;return _.each(e,function(a,e){c=d.slice(),d=[],_.each(c,function(c){var g,h,i=c.content;if(c.processed)return void d.push(c);for(;i&&(g=a.prototype.match(i));)g.index&&d.push({content:i.substring(0,g.index)}),b=f.createInstance(e,g.content,g.options),h=b.loader?".":b.text,d.push({content:'<p data-wpview-marker="'+b.encodedText+'">'+h+"</p>",processed:!0}),i=i.slice(g.index+g.content.length);i&&d.push({content:i})})}),a=_.pluck(d,"content").join(""),a.replace(/<p>\s*<p data-wpview-marker=/g,"<p data-wpview-marker=").replace(/<\/p>\s*<\/p>/g,"</p>")},createInstance:function(a,b,c,d){var e,g,h=this.get(a);return b=tinymce.DOM.decode(b),!d&&(g=this.getInstance(b))?g:(e=encodeURIComponent(b),c=_.extend(c||{},{text:b,encodedText:e}),f[e]=new h(c))},getInstance:function(a){return"string"==typeof a?f[encodeURIComponent(a)]:f[d(a).attr("data-wpview-text")]},getText:function(a){return decodeURIComponent(d(a).attr("data-wpview-text")||"")},render:function(a){_.each(f,function(b){b.render(a)})},update:function(a,b,c,d){var e=this.getInstance(c);e&&e.update(a,b,c,d)},edit:function(a,b){var c=this.getInstance(b);c&&c.edit&&c.edit(c.text,function(d,e){c.update(d,a,b,e)})},remove:function(a,b){var c=this.getInstance(b);c&&c.remove(a,b)}},b.mce.View=function(a){_.extend(this,a),this.initialize()},b.mce.View.extend=Backbone.View.extend,_.extend(b.mce.View.prototype,{content:null,loader:!0,initialize:function(){},getContent:function(){return this.content},render:function(a,b){null!=a&&(this.content=a),a=this.getContent(),(this.loader||a)&&(b&&this.unbind(),this.replaceMarkers(),a?this.setContent(a,function(a,b,c){d(b).data("rendered",!0),this.bindNode.call(this,a,b,c)},b?null:!1):this.setLoader())},bindNode:function(){},unbindNode:function(){},unbind:function(){this.getNodes(function(a,b,c){this.unbindNode.call(this,a,b,c),d(b).trigger("wp-mce-view-unbind")},!0)},getEditors:function(a){_.each(tinymce.editors,function(b){b.plugins.wpview&&a.call(this,b)},this)},getNodes:function(a,b){this.getEditors(function(c){var e=this;d(c.getBody()).find('[data-wpview-text="'+e.encodedText+'"]').filter(function(){var a;return null==b?!0:(a=d(this).data("rendered")===!0,b?a:!a)}).each(function(){a.call(e,c,this,d(this).find(".wpview-content").get(0))})})},getMarkers:function(a){this.getEditors(function(b){var c=this;d(b.getBody()).find('[data-wpview-marker="'+this.encodedText+'"]').each(function(){a.call(c,b,this)})})},replaceMarkers:function(){this.getMarkers(function(a,b){var c,e=b===a.selection.getNode();return this.loader||d(b).text()===this.text?(c=a.$('<div class="wpview-wrap" data-wpview-text="'+this.encodedText+'" data-wpview-type="'+this.type+'"><p class="wpview-selection-before">\xa0</p><div class="wpview-body" contenteditable="false"><div class="wpview-content wpview-type-'+this.type+'"></div></div><p class="wpview-selection-after">\xa0</p></div>'),a.$(b).replaceWith(c),void(e&&a.wp.setViewCursor(!1,c[0]))):void a.dom.setAttrib(b,"data-wpview-marker",null)})},removeMarkers:function(){this.getMarkers(function(a,b){a.dom.setAttrib(b,"data-wpview-marker",null)})},setContent:function(a,b,c){_.isObject(a)&&-1!==a.body.indexOf("<script")?this.setIframes(a.head||"",a.body,b,c):_.isString(a)&&-1!==a.indexOf("<script")?this.setIframes("",a,b,c):this.getNodes(function(c,d,e){a=a.body||a,-1!==a.indexOf("<iframe")&&(a+='<div class="wpview-overlay"></div>'),e.innerHTML="",e.appendChild(_.isString(a)?c.dom.createFragment(a):a),b&&b.call(this,c,d,e)},c)},setIframes:function(b,c,e,f){var g=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,h=this;this.getNodes(function(a,f,i){var j=a.dom,k="",l=a.getBody().className||"",m=a.getDoc().getElementsByTagName("head")[0];tinymce.each(j.$('link[rel="stylesheet"]',m),function(a){a.href&&-1===a.href.indexOf("skins/lightgray/content.min.css")&&-1===a.href.indexOf("skins/wordpress/wp-content.css")&&(k+=j.getOuterHTML(a))}),h.iframeHeight&&j.add(i,"div",{style:{width:"100%",height:h.iframeHeight}}),setTimeout(function(){function m(){var b;s||o.contentWindow&&(b=d(o),h.iframeHeight=d(p.body).height(),b.height()!==h.iframeHeight&&(b.height(h.iframeHeight),a.nodeChanged()))}function n(){p.body.className=a.getBody().className}var o,p,q,r,s;if(i.innerHTML="",o=j.add(i,"iframe",{src:tinymce.Env.ie?'javascript:""':"",frameBorder:"0",allowTransparency:"true",scrolling:"no","class":"wpview-sandbox",style:{width:"100%",display:"block"},height:h.iframeHeight}),j.add(i,"div",{"class":"wpview-overlay"}),p=o.contentWindow.document,p.open(),p.write('<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'+b+k+'<style>html {background: transparent;padding: 0;margin: 0;}body#wpview-iframe-sandbox {background: transparent;padding: 1px 0 !important;margin: -1px 0 0 !important;}body#wpview-iframe-sandbox:before,body#wpview-iframe-sandbox:after {display: none;content: "";}</style></head><body id="wpview-iframe-sandbox" class="'+l+'">'+c+"</body></html>"),p.close(),h.iframeHeight&&(s=!0,setTimeout(function(){s=!1,m()},3e3)),d(o.contentWindow).on("load",m),g)q=new g(_.debounce(m,100)),q.observe(p.body,{attributes:!0,childList:!0,subtree:!0}),d(f).one("wp-mce-view-unbind",function(){q.disconnect()});else for(r=1;6>r;r++)setTimeout(m,700*r);a.on("wp-body-class-change",n),d(f).one("wp-mce-view-unbind",function(){a.off("wp-body-class-change",n)}),e&&e.call(h,a,f,i)},50)},f)},setLoader:function(){this.setContent('<div class="loading-placeholder"><div class="dashicons dashicons-admin-media"></div><div class="wpview-loading"><ins></ins></div></div>')},setError:function(a,b){this.setContent('<div class="wpview-error"><div class="dashicons dashicons-'+(b||"no")+'"></div><p>'+a+"</p></div>")},match:function(a){var b=c.next(this.type,a);return b?{index:b.index,content:b.content,options:{shortcode:b.shortcode}}:void 0},update:function(a,c,f,g){_.find(e,function(e,h){var i=e.prototype.match(a);return i?(d(f).data("rendered",!1),c.dom.setAttrib(f,"data-wpview-text",encodeURIComponent(a)),b.mce.views.createInstance(h,a,i.options,g).render(),c.focus(),!0):void 0})},remove:function(a,b){this.unbindNode.call(this,a,b,d(b).find(".wpview-content").get(0)),d(b).trigger("wp-mce-view-unbind"),a.dom.remove(b),a.focus()}})}(window,window.wp,window.wp.shortcode,window.jQuery),function(a,b,c,d){var e,f,g,h;e={state:[],edit:function(a,b){var d=this.type,e=c[d].edit(a);this.pausePlayers&&this.pausePlayers(),_.each(this.state,function(a){e.state(a).on("update",function(a){b(c[d].shortcode(a).string(),"gallery"===d)})}),e.on("close",function(){e.detach()}),e.open()}},f=_.extend({},e,{state:["gallery-edit"],template:c.template("editor-gallery"),initialize:function(){var a=c.gallery.attachments(this.shortcode,c.view.settings.post.id),b=this.shortcode.attrs.named,d=this;a.more().done(function(){a=a.toJSON(),_.each(a,function(a){a.sizes&&(b.size&&a.sizes[b.size]?a.thumbnail=a.sizes[b.size]:a.sizes.thumbnail?a.thumbnail=a.sizes.thumbnail:a.sizes.full&&(a.thumbnail=a.sizes.full))}),d.render(d.template({attachments:a,columns:b.columns?parseInt(b.columns,10):c.galleryDefaults.columns}))}).fail(function(a,b){d.setError(b)})}}),g=_.extend({},e,{action:"parse-media-shortcode",initialize:function(){var a=this;this.url&&(this.loader=!1,this.shortcode=c.embed.shortcode({url:this.text})),wp.ajax.post(this.action,{post_ID:c.view.settings.post.id,type:this.shortcode.tag,shortcode:this.shortcode.string()}).done(function(b){a.render(b)}).fail(function(b){a.url?a.removeMarkers():a.setError(b.message||b.statusText,"admin-media")}),this.getEditors(function(b){b.on("wpview-selected",function(){a.pausePlayers()})})},pausePlayers:function(){this.getNodes(function(a,b,c){var e=d("iframe.wpview-sandbox",c).get(0);e&&(e=e.contentWindow)&&e.mejs&&_.each(e.mejs.players,function(a){try{a.pause()}catch(b){}})})}}),h=_.extend({},g,{action:"parse-embed",edit:function(a,b){var d=c.embed.edit(a,this.url),e=this;this.pausePlayers(),d.state("embed").props.on("change:url",function(a,b){b&&a.get("url")&&(d.state("embed").metadata=a.toJSON())}),d.state("embed").on("select",function(){var a=d.state("embed").metadata;b(e.url?a.url:c.embed.shortcode(a).string())}),d.on("close",function(){d.detach()}),d.open()}}),b.register("gallery",_.extend({},f)),b.register("audio",_.extend({},g,{state:["audio-details"]})),b.register("video",_.extend({},g,{state:["video-details"]})),b.register("playlist",_.extend({},g,{state:["playlist-edit","video-playlist-edit"]})),b.register("embed",_.extend({},h)),b.register("embedURL",_.extend({},h,{match:function(a){var b=/(^|<p>)(https?:\/\/[^\s"]+?)(<\/p>\s*|$)/gi,c=b.exec(a);return c?{index:c.index+c[1].length,content:c[2],options:{url:!0}}:void 0}}))}(window,window.wp.mce.views,window.wp.media,window.jQuery);
\ No newline at end of file
+!function(a,b,c,d){"use strict";var e={},f={};b.mce=b.mce||{},b.mce.views={register:function(a,c){e[a]=b.mce.View.extend(_.extend(c,{type:a}))},unregister:function(a){delete e[a]},get:function(a){return e[a]},unbind:function(){_.each(f,function(a){a.unbind()})},setMarkers:function(a){var b,c,d=[{content:a}],f=this;return _.each(e,function(a,e){c=d.slice(),d=[],_.each(c,function(c){var g,h,i=c.content;if(c.processed)return void d.push(c);for(;i&&(g=a.prototype.match(i));)g.index&&d.push({content:i.substring(0,g.index)}),b=f.createInstance(e,g.content,g.options),h=b.loader?".":b.text,d.push({content:b.ignore?h:'<p data-wpview-marker="'+b.encodedText+'">'+h+"</p>",processed:!0}),i=i.slice(g.index+g.content.length);i&&d.push({content:i})})}),a=_.pluck(d,"content").join(""),a.replace(/<p>\s*<p data-wpview-marker=/g,"<p data-wpview-marker=").replace(/<\/p>\s*<\/p>/g,"</p>")},createInstance:function(a,b,c,d){var e,g,h=this.get(a);return b=tinymce.DOM.decode(b),!d&&(g=this.getInstance(b))?g:(e=encodeURIComponent(b),c=_.extend(c||{},{text:b,encodedText:e}),f[e]=new h(c))},getInstance:function(a){return"string"==typeof a?f[encodeURIComponent(a)]:f[d(a).attr("data-wpview-text")]},getText:function(a){return decodeURIComponent(d(a).attr("data-wpview-text")||"")},render:function(a){_.each(f,function(b){b.render(a)})},update:function(a,b,c,d){var e=this.getInstance(c);e&&e.update(a,b,c,d)},edit:function(a,b){var c=this.getInstance(b);c&&c.edit&&c.edit(c.text,function(d,e){c.update(d,a,b,e)})},remove:function(a,b){var c=this.getInstance(b);c&&c.remove(a,b)}},b.mce.View=function(a){_.extend(this,a),this.initialize()},b.mce.View.extend=Backbone.View.extend,_.extend(b.mce.View.prototype,{content:null,loader:!0,initialize:function(){},getContent:function(){return this.content},render:function(a,b){null!=a&&(this.content=a),a=this.getContent(),(this.loader||a)&&(b&&this.unbind(),this.replaceMarkers(),a?this.setContent(a,function(a,b,c){d(b).data("rendered",!0),this.bindNode.call(this,a,b,c)},b?null:!1):this.setLoader())},bindNode:function(){},unbindNode:function(){},unbind:function(){this.getNodes(function(a,b,c){this.unbindNode.call(this,a,b,c),d(b).trigger("wp-mce-view-unbind")},!0)},getEditors:function(a){_.each(tinymce.editors,function(b){b.plugins.wpview&&a.call(this,b)},this)},getNodes:function(a,b){this.getEditors(function(c){var e=this;d(c.getBody()).find('[data-wpview-text="'+e.encodedText+'"]').filter(function(){var a;return null==b?!0:(a=d(this).data("rendered")===!0,b?a:!a)}).each(function(){a.call(e,c,this,d(this).find(".wpview-content").get(0))})})},getMarkers:function(a){this.getEditors(function(b){var c=this;d(b.getBody()).find('[data-wpview-marker="'+this.encodedText+'"]').each(function(){a.call(c,b,this)})})},replaceMarkers:function(){this.getMarkers(function(a,b){var c,e=b===a.selection.getNode();return this.loader||d(b).text()===this.text?(c=a.$('<div class="wpview-wrap" data-wpview-text="'+this.encodedText+'" data-wpview-type="'+this.type+'"><p class="wpview-selection-before">\xa0</p><div class="wpview-body" contenteditable="false"><div class="wpview-content wpview-type-'+this.type+'"></div></div><p class="wpview-selection-after">\xa0</p></div>'),a.$(b).replaceWith(c),void(e&&a.wp.setViewCursor(!1,c[0]))):void a.dom.setAttrib(b,"data-wpview-marker",null)})},removeMarkers:function(){this.getMarkers(function(a,b){a.dom.setAttrib(b,"data-wpview-marker",null)})},setContent:function(a,b,c){_.isObject(a)&&-1!==a.body.indexOf("<script")?this.setIframes(a.head||"",a.body,b,c):_.isString(a)&&-1!==a.indexOf("<script")?this.setIframes("",a,b,c):this.getNodes(function(c,d,e){a=a.body||a,-1!==a.indexOf("<iframe")&&(a+='<div class="wpview-overlay"></div>'),e.innerHTML="",e.appendChild(_.isString(a)?c.dom.createFragment(a):a),b&&b.call(this,c,d,e)},c)},setIframes:function(b,c,e,f){var g=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,h=this;this.getNodes(function(a,f,i){var j=a.dom,k="",l=a.getBody().className||"",m=a.getDoc().getElementsByTagName("head")[0];tinymce.each(j.$('link[rel="stylesheet"]',m),function(a){a.href&&-1===a.href.indexOf("skins/lightgray/content.min.css")&&-1===a.href.indexOf("skins/wordpress/wp-content.css")&&(k+=j.getOuterHTML(a))}),h.iframeHeight&&j.add(i,"div",{style:{width:"100%",height:h.iframeHeight}}),setTimeout(function(){function m(){var b;s||o.contentWindow&&(b=d(o),h.iframeHeight=d(p.body).height(),b.height()!==h.iframeHeight&&(b.height(h.iframeHeight),a.nodeChanged()))}function n(){p.body.className=a.getBody().className}var o,p,q,r,s;if(i.innerHTML="",o=j.add(i,"iframe",{src:tinymce.Env.ie?'javascript:""':"",frameBorder:"0",allowTransparency:"true",scrolling:"no","class":"wpview-sandbox",style:{width:"100%",display:"block"},height:h.iframeHeight}),j.add(i,"div",{"class":"wpview-overlay"}),p=o.contentWindow.document,p.open(),p.write('<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'+b+k+'<style>html {background: transparent;padding: 0;margin: 0;}body#wpview-iframe-sandbox {background: transparent;padding: 1px 0 !important;margin: -1px 0 0 !important;}body#wpview-iframe-sandbox:before,body#wpview-iframe-sandbox:after {display: none;content: "";}</style></head><body id="wpview-iframe-sandbox" class="'+l+'">'+c+"</body></html>"),p.close(),h.iframeHeight&&(s=!0,setTimeout(function(){s=!1,m()},3e3)),d(o.contentWindow).on("load",m),g)q=new g(_.debounce(m,100)),q.observe(p.body,{attributes:!0,childList:!0,subtree:!0}),d(f).one("wp-mce-view-unbind",function(){q.disconnect()});else for(r=1;6>r;r++)setTimeout(m,700*r);a.on("wp-body-class-change",n),d(f).one("wp-mce-view-unbind",function(){a.off("wp-body-class-change",n)}),e&&e.call(h,a,f,i)},50)},f)},setLoader:function(){this.setContent('<div class="loading-placeholder"><div class="dashicons dashicons-admin-media"></div><div class="wpview-loading"><ins></ins></div></div>')},setError:function(a,b){this.setContent('<div class="wpview-error"><div class="dashicons dashicons-'+(b||"no")+'"></div><p>'+a+"</p></div>")},match:function(a){var b=c.next(this.type,a);return b?{index:b.index,content:b.content,options:{shortcode:b.shortcode}}:void 0},update:function(a,c,f,g){_.find(e,function(e,h){var i=e.prototype.match(a);return i?(d(f).data("rendered",!1),c.dom.setAttrib(f,"data-wpview-text",encodeURIComponent(a)),b.mce.views.createInstance(h,a,i.options,g).render(),c.focus(),!0):void 0})},remove:function(a,b){this.unbindNode.call(this,a,b,d(b).find(".wpview-content").get(0)),d(b).trigger("wp-mce-view-unbind"),a.dom.remove(b),a.focus()}})}(window,window.wp,window.wp.shortcode,window.jQuery),function(a,b,c,d){function e(b){var c={};return a.tinymce?!b||-1===b.indexOf("<")&&-1===b.indexOf(">")?b:(j=j||new a.tinymce.html.Schema(c),k=k||new a.tinymce.html.DomParser(c,j),l=l||new a.tinymce.html.Serializer(c,j),l.serialize(k.parse(b,{forced_root_block:!1}))):b.replace(/<[^>]+>/g,"")}var f,g,h,i,j,k,l;f={state:[],edit:function(a,b){var d=this.type,e=c[d].edit(a);this.pausePlayers&&this.pausePlayers(),_.each(this.state,function(a){e.state(a).on("update",function(a){b(c[d].shortcode(a).string(),"gallery"===d)})}),e.on("close",function(){e.detach()}),e.open()}},g=_.extend({},f,{state:["gallery-edit"],template:c.template("editor-gallery"),initialize:function(){var a=c.gallery.attachments(this.shortcode,c.view.settings.post.id),b=this.shortcode.attrs.named,d=this;a.more().done(function(){a=a.toJSON(),_.each(a,function(a){a.sizes&&(b.size&&a.sizes[b.size]?a.thumbnail=a.sizes[b.size]:a.sizes.thumbnail?a.thumbnail=a.sizes.thumbnail:a.sizes.full&&(a.thumbnail=a.sizes.full))}),d.render(d.template({verifyHTML:e,attachments:a,columns:b.columns?parseInt(b.columns,10):c.galleryDefaults.columns}))}).fail(function(a,b){d.setError(b)})}}),h=_.extend({},f,{action:"parse-media-shortcode",initialize:function(){var a=this;this.url&&(this.loader=!1,this.shortcode=c.embed.shortcode({url:this.text})),wp.ajax.post(this.action,{post_ID:c.view.settings.post.id,type:this.shortcode.tag,shortcode:this.shortcode.string()}).done(function(b){a.render(b)}).fail(function(b){a.url?(a.ignore=!0,a.removeMarkers()):a.setError(b.message||b.statusText,"admin-media")}),this.getEditors(function(b){b.on("wpview-selected",function(){a.pausePlayers()})})},pausePlayers:function(){this.getNodes(function(a,b,c){var e=d("iframe.wpview-sandbox",c).get(0);e&&(e=e.contentWindow)&&e.mejs&&_.each(e.mejs.players,function(a){try{a.pause()}catch(b){}})})}}),i=_.extend({},h,{action:"parse-embed",edit:function(a,b){var d=c.embed.edit(a,this.url),e=this;this.pausePlayers(),d.state("embed").props.on("change:url",function(a,b){b&&a.get("url")&&(d.state("embed").metadata=a.toJSON())}),d.state("embed").on("select",function(){var a=d.state("embed").metadata;b(e.url?a.url:c.embed.shortcode(a).string())}),d.on("close",function(){d.detach()}),d.open()}}),b.register("gallery",_.extend({},g)),b.register("audio",_.extend({},h,{state:["audio-details"]})),b.register("video",_.extend({},h,{state:["video-details"]})),b.register("playlist",_.extend({},h,{state:["playlist-edit","video-playlist-edit"]})),b.register("embed",_.extend({},i)),b.register("embedURL",_.extend({},i,{match:function(a){var b=/(^|<p>)(https?:\/\/[^\s"]+?)(<\/p>\s*|$)/gi,c=b.exec(a);return c?{index:c.index+c[1].length,content:c[2],options:{url:!0}}:void 0}}))}(window,window.wp.mce.views,window.wp.media,window.jQuery);
\ No newline at end of file
index 9d84a4b2717f08afa665c86ac3b424e3f1164efa..5bf5bd3ffaded9806c33da9a3a676079f93086e1 100644 (file)
                 */
                frame: function() {
                        if ( this._frame ) {
+                               wp.media.frame = this._frame;
                                return this._frame;
                        }
 
                                workflow = this.add( id, options );
                        }
 
+                       wp.media.frame = workflow;
+
                        return workflow.open();
                },
 
index 630ec95b79a45e1e45512a89cfb4851dc63fbdd5..24ffc50b7e4b7bd6d53dbd2a12f80ee259c35867 100644 (file)
@@ -1 +1 @@
-!function(a,b){var c={};wp.media.coerce=function(a,c){return b.isUndefined(a[c])&&!b.isUndefined(this.defaults[c])?a[c]=this.defaults[c]:"true"===a[c]?a[c]=!0:"false"===a[c]&&(a[c]=!1),a[c]},wp.media.string={props:function(a,c){var d,e,f,g,h,i=wp.media.view.settings.defaultProps;return h=function(a){return"image"!==a.type||a.alt||(a.alt=a.caption||a.title||"",a.alt=a.alt.replace(/<\/?[^>]+>/g,""),a.alt=a.alt.replace(/[\r\n]+/g," ")),a},a=a?b.clone(a):{},c&&c.type&&(a.type=c.type),"image"===a.type&&(a=b.defaults(a||{},{align:i.align||getUserSetting("align","none"),size:i.size||getUserSetting("imgsize","medium"),url:"",classes:[]})),c?(a.title=a.title||c.title,d=a.link||i.link||getUserSetting("urlbutton","file"),"file"===d||"embed"===d?e=c.url:"post"===d?e=c.link:"custom"===d&&(e=a.linkUrl),a.linkUrl=e||"","image"===c.type?(a.classes.push("wp-image-"+c.id),g=c.sizes,f=g&&g[a.size]?g[a.size]:c,b.extend(a,b.pick(c,"align","caption","alt"),{width:f.width,height:f.height,src:f.url,captionId:"attachment_"+c.id})):"video"===c.type||"audio"===c.type?b.extend(a,b.pick(c,"title","type","icon","mime")):(a.title=a.title||c.filename,a.rel=a.rel||"attachment wp-att-"+c.id),h(a)):h(a)},link:function(a,b){var c;return a=wp.media.string.props(a,b),c={tag:"a",content:a.title,attrs:{href:a.linkUrl}},a.rel&&(c.attrs.rel=a.rel),wp.html.string(c)},audio:function(a,b){return wp.media.string._audioVideo("audio",a,b)},video:function(a,b){return wp.media.string._audioVideo("video",a,b)},_audioVideo:function(a,c,d){var e,f,g;return c=wp.media.string.props(c,d),"embed"!==c.link?wp.media.string.link(c):(e={},"video"===a&&(d.image&&-1===d.image.src.indexOf(d.icon)&&(e.poster=d.image.src),d.width&&(e.width=d.width),d.height&&(e.height=d.height)),g=d.filename.split(".").pop(),b.contains(wp.media.view.settings.embedExts,g)?(e[g]=d.url,f=wp.shortcode.string({tag:a,attrs:e})):wp.media.string.link(c))},image:function(a,c){var d,e,f,g,h={};return a=wp.media.string.props(a,c),e=a.classes||[],h.src=b.isUndefined(c)?a.url:c.url,b.extend(h,b.pick(a,"width","height","alt")),a.align&&!a.caption&&e.push("align"+a.align),a.size&&e.push("size-"+a.size),h["class"]=b.compact(e).join(" "),d={tag:"img",attrs:h,single:!0},a.linkUrl&&(d={tag:"a",attrs:{href:a.linkUrl},content:d}),g=wp.html.string(d),a.caption&&(f={},h.width&&(f.width=h.width),a.captionId&&(f.id=a.captionId),a.align&&(f.align="align"+a.align),g=wp.shortcode.string({tag:"caption",attrs:f,content:g+" "+a.caption})),g}},wp.media.embed={coerce:wp.media.coerce,defaults:{url:"",width:"",height:""},edit:function(a,c){var d,e,f={};return c?f.url=a.replace(/<[^>]+>/g,""):(e=wp.shortcode.next("embed",a).shortcode,f=b.defaults(e.attrs.named,this.defaults),e.content&&(f.url=e.content)),d=wp.media({frame:"post",state:"embed",metadata:f})},shortcode:function(a){var c,d=this;return b.each(this.defaults,function(b,c){a[c]=d.coerce(a,c),b===a[c]&&delete a[c]}),c=a.url,delete a.url,new wp.shortcode({tag:"embed",attrs:a,content:c})}},wp.media.collection=function(a){var c={};return b.extend({coerce:wp.media.coerce,attachments:function(a){var d,e,f,g,h=a.string(),i=c[h],j=this;return delete c[h],i?i:(d=b.defaults(a.attrs.named,this.defaults),e=b.pick(d,"orderby","order"),e.type=this.type,e.perPage=-1,void 0!==d.orderby&&(d._orderByField=d.orderby),"rand"===d.orderby&&(d._orderbyRandom=!0),(!d.orderby||/^menu_order(?: ID)?$/i.test(d.orderby))&&(e.orderby="menuOrder"),d.ids?(e.post__in=d.ids.split(","),e.orderby="post__in"):d.include&&(e.post__in=d.include.split(",")),d.exclude&&(e.post__not_in=d.exclude.split(",")),e.post__in||(e.uploadedTo=d.id),g=b.omit(d,"id","ids","include","exclude","orderby","order"),b.each(this.defaults,function(a,b){g[b]=j.coerce(g,b)}),f=wp.media.query(e),f[this.tag]=new Backbone.Model(g),f)},shortcode:function(a){var d,e,f=a.props.toJSON(),g=b.pick(f,"orderby","order");return a.type&&(g.type=a.type,delete a.type),a[this.tag]&&b.extend(g,a[this.tag].toJSON()),g.ids=a.pluck("id"),f.uploadedTo&&(g.id=f.uploadedTo),delete g.orderby,g._orderbyRandom?g.orderby="rand":g._orderByField&&"rand"!=g._orderByField&&(g.orderby=g._orderByField),delete g._orderbyRandom,delete g._orderByField,g.ids&&"post__in"===g.orderby&&delete g.orderby,g=this.setDefaults(g),d=new wp.shortcode({tag:this.tag,attrs:g,type:"single"}),e=new wp.media.model.Attachments(a.models,{props:f}),e[this.tag]=a[this.tag],c[d.string()]=e,d},edit:function(a){var c,d,e,f=wp.shortcode.next(this.tag,a),g=this.defaults.id;if(f&&f.content===a)return f=f.shortcode,b.isUndefined(f.get("id"))&&!b.isUndefined(g)&&f.set("id",g),c=this.attachments(f),d=new wp.media.model.Selection(c.models,{props:c.props.toJSON(),multiple:!0}),d[this.tag]=c[this.tag],d.more().done(function(){d.props.set({query:!1}),d.unmirror(),d.props.unset("orderby")}),this.frame&&this.frame.dispose(),e=f.attrs.named.type&&"video"===f.attrs.named.type?"video-"+this.tag+"-edit":this.tag+"-edit",this.frame=wp.media({frame:"post",state:e,title:this.editTitle,editing:!0,multiple:!0,selection:d}).open(),this.frame},setDefaults:function(a){var c=this;return b.each(this.defaults,function(b,d){a[d]=c.coerce(a,d),b===a[d]&&delete a[d]}),a}},a)},wp.media._galleryDefaults={itemtag:"dl",icontag:"dt",captiontag:"dd",columns:"3",link:"post",size:"thumbnail",order:"ASC",id:wp.media.view.settings.post&&wp.media.view.settings.post.id,orderby:"menu_order ID"},wp.media.view.settings.galleryDefaults?wp.media.galleryDefaults=b.extend({},wp.media._galleryDefaults,wp.media.view.settings.galleryDefaults):wp.media.galleryDefaults=wp.media._galleryDefaults,wp.media.gallery=new wp.media.collection({tag:"gallery",type:"image",editTitle:wp.media.view.l10n.editGalleryTitle,defaults:wp.media.galleryDefaults,setDefaults:function(a){var c=this,d=!b.isEqual(wp.media.galleryDefaults,wp.media._galleryDefaults);return b.each(this.defaults,function(b,e){a[e]=c.coerce(a,e),b!==a[e]||d&&b!==wp.media._galleryDefaults[e]||delete a[e]}),a}}),wp.media.featuredImage={get:function(){return wp.media.view.settings.post.featuredImageId},set:function(b){var c=wp.media.view.settings;c.post.featuredImageId=b,wp.media.post("set-post-thumbnail",{json:!0,post_id:c.post.id,thumbnail_id:c.post.featuredImageId,_wpnonce:c.post.nonce}).done(function(b){a(".inside","#postimagediv").html(b)})},frame:function(){return this._frame?this._frame:(this._frame=wp.media({state:"featured-image",states:[new wp.media.controller.FeaturedImage,new wp.media.controller.EditImage]}),this._frame.on("toolbar:create:featured-image",function(a){this.createSelectToolbar(a,{text:wp.media.view.l10n.setFeaturedImage})},this._frame),this._frame.on("content:render:edit-image",function(){var a=this.state("featured-image").get("selection"),b=new wp.media.view.EditImage({model:a.single(),controller:this}).render();this.content.set(b),b.loadEditor()},this._frame),this._frame.state("featured-image").on("select",this.select),this._frame)},select:function(){var a=this.get("selection").single();wp.media.view.settings.post.featuredImageId&&wp.media.featuredImage.set(a?a.id:-1)},init:function(){a("#postimagediv").on("click","#set-post-thumbnail",function(a){a.preventDefault(),a.stopPropagation(),wp.media.featuredImage.frame().open()}).on("click","#remove-post-thumbnail",function(){wp.media.view.settings.post.featuredImageId=-1})}},a(wp.media.featuredImage.init),wp.media.editor={insert:function(a){var c,d,e=!b.isUndefined(window.tinymce),f=!b.isUndefined(window.QTags);if(d=this.activeEditor?window.wpActiveEditor=this.activeEditor:window.wpActiveEditor,window.send_to_editor)return window.send_to_editor.apply(this,arguments);if(d)e&&(c=tinymce.get(d));else if(e&&tinymce.activeEditor)c=tinymce.activeEditor,d=window.wpActiveEditor=c.id;else if(!f)return!1;if(c&&!c.isHidden()?c.execCommand("mceInsertContent",!1,a):f?QTags.insertContent(a):document.getElementById(d).value+=a,window.tb_remove)try{window.tb_remove()}catch(g){}},add:function(d,e){var f=this.get(d);return f?f:(f=c[d]=wp.media(b.defaults(e||{},{frame:"post",state:"insert",title:wp.media.view.l10n.addMedia,multiple:!0})),f.on("insert",function(c){var d=f.state();c=c||d.get("selection"),c&&a.when.apply(a,c.map(function(a){var b=d.display(a).toJSON();return this.send.attachment(b,a.toJSON())},this)).done(function(){wp.media.editor.insert(b.toArray(arguments).join("\n\n"))})},this),f.state("gallery-edit").on("update",function(a){this.insert(wp.media.gallery.shortcode(a).string())},this),f.state("playlist-edit").on("update",function(a){this.insert(wp.media.playlist.shortcode(a).string())},this),f.state("video-playlist-edit").on("update",function(a){this.insert(wp.media.playlist.shortcode(a).string())},this),f.state("embed").on("select",function(){var a=f.state(),c=a.get("type"),d=a.props.toJSON();d.url=d.url||"","link"===c?(b.defaults(d,{linkText:d.url,linkUrl:d.url}),this.send.link(d).done(function(a){wp.media.editor.insert(a)})):"image"===c&&(b.defaults(d,{title:d.url,linkUrl:"",align:"none",link:"none"}),"none"===d.link?d.linkUrl="":"file"===d.link&&(d.linkUrl=d.url),this.insert(wp.media.string.image(d)))},this),f.state("featured-image").on("select",wp.media.featuredImage.select),f.setState(f.options.state),f)},id:function(a){return a?a:(a=window.wpActiveEditor,a||b.isUndefined(window.tinymce)||!tinymce.activeEditor||(a=tinymce.activeEditor.id),a=a||"")},get:function(a){return a=this.id(a),c[a]},remove:function(a){a=this.id(a),delete c[a]},send:{attachment:function(a,c){var d,e,f=c.caption;return wp.media.view.settings.captions||delete c.caption,a=wp.media.string.props(a,c),d={id:c.id,post_content:c.description,post_excerpt:f},a.linkUrl&&(d.url=a.linkUrl),"image"===c.type?(e=wp.media.string.image(a),b.each({align:"align",size:"image-size",alt:"image_alt"},function(b,c){a[c]&&(d[b]=a[c])})):"video"===c.type?e=wp.media.string.video(a,c):"audio"===c.type?e=wp.media.string.audio(a,c):(e=wp.media.string.link(a),d.post_title=a.title),wp.media.post("send-attachment-to-editor",{nonce:wp.media.view.settings.nonce.sendToEditor,attachment:d,html:e,post_id:wp.media.view.settings.post.id})},link:function(a){return wp.media.post("send-link-to-editor",{nonce:wp.media.view.settings.nonce.sendToEditor,src:a.linkUrl,link_text:a.linkText,html:wp.media.string.link(a),post_id:wp.media.view.settings.post.id})}},open:function(a,b){var c;return b=b||{},a=this.id(a),this.activeEditor=a,c=this.get(a),(!c||c.options&&b.state!==c.options.state)&&(c=this.add(a,b)),c.open()},init:function(){a(document.body).on("click.add-media-button",".insert-media",function(b){var c=a(b.currentTarget),d=c.data("editor"),e={frame:"post",state:"insert",title:wp.media.view.l10n.addMedia,multiple:!0};b.preventDefault(),c.blur(),c.hasClass("gallery")&&(e.state="gallery",e.title=wp.media.view.l10n.createGalleryTitle),wp.media.editor.open(d,e)}),(new wp.media.view.EditorUploader).render()}},b.bindAll(wp.media.editor,"open"),a(wp.media.editor.init)}(jQuery,_);
\ No newline at end of file
+!function(a,b){var c={};wp.media.coerce=function(a,c){return b.isUndefined(a[c])&&!b.isUndefined(this.defaults[c])?a[c]=this.defaults[c]:"true"===a[c]?a[c]=!0:"false"===a[c]&&(a[c]=!1),a[c]},wp.media.string={props:function(a,c){var d,e,f,g,h,i=wp.media.view.settings.defaultProps;return h=function(a){return"image"!==a.type||a.alt||(a.alt=a.caption||a.title||"",a.alt=a.alt.replace(/<\/?[^>]+>/g,""),a.alt=a.alt.replace(/[\r\n]+/g," ")),a},a=a?b.clone(a):{},c&&c.type&&(a.type=c.type),"image"===a.type&&(a=b.defaults(a||{},{align:i.align||getUserSetting("align","none"),size:i.size||getUserSetting("imgsize","medium"),url:"",classes:[]})),c?(a.title=a.title||c.title,d=a.link||i.link||getUserSetting("urlbutton","file"),"file"===d||"embed"===d?e=c.url:"post"===d?e=c.link:"custom"===d&&(e=a.linkUrl),a.linkUrl=e||"","image"===c.type?(a.classes.push("wp-image-"+c.id),g=c.sizes,f=g&&g[a.size]?g[a.size]:c,b.extend(a,b.pick(c,"align","caption","alt"),{width:f.width,height:f.height,src:f.url,captionId:"attachment_"+c.id})):"video"===c.type||"audio"===c.type?b.extend(a,b.pick(c,"title","type","icon","mime")):(a.title=a.title||c.filename,a.rel=a.rel||"attachment wp-att-"+c.id),h(a)):h(a)},link:function(a,b){var c;return a=wp.media.string.props(a,b),c={tag:"a",content:a.title,attrs:{href:a.linkUrl}},a.rel&&(c.attrs.rel=a.rel),wp.html.string(c)},audio:function(a,b){return wp.media.string._audioVideo("audio",a,b)},video:function(a,b){return wp.media.string._audioVideo("video",a,b)},_audioVideo:function(a,c,d){var e,f,g;return c=wp.media.string.props(c,d),"embed"!==c.link?wp.media.string.link(c):(e={},"video"===a&&(d.image&&-1===d.image.src.indexOf(d.icon)&&(e.poster=d.image.src),d.width&&(e.width=d.width),d.height&&(e.height=d.height)),g=d.filename.split(".").pop(),b.contains(wp.media.view.settings.embedExts,g)?(e[g]=d.url,f=wp.shortcode.string({tag:a,attrs:e})):wp.media.string.link(c))},image:function(a,c){var d,e,f,g,h={};return a=wp.media.string.props(a,c),e=a.classes||[],h.src=b.isUndefined(c)?a.url:c.url,b.extend(h,b.pick(a,"width","height","alt")),a.align&&!a.caption&&e.push("align"+a.align),a.size&&e.push("size-"+a.size),h["class"]=b.compact(e).join(" "),d={tag:"img",attrs:h,single:!0},a.linkUrl&&(d={tag:"a",attrs:{href:a.linkUrl},content:d}),g=wp.html.string(d),a.caption&&(f={},h.width&&(f.width=h.width),a.captionId&&(f.id=a.captionId),a.align&&(f.align="align"+a.align),g=wp.shortcode.string({tag:"caption",attrs:f,content:g+" "+a.caption})),g}},wp.media.embed={coerce:wp.media.coerce,defaults:{url:"",width:"",height:""},edit:function(a,c){var d,e,f={};return c?f.url=a.replace(/<[^>]+>/g,""):(e=wp.shortcode.next("embed",a).shortcode,f=b.defaults(e.attrs.named,this.defaults),e.content&&(f.url=e.content)),d=wp.media({frame:"post",state:"embed",metadata:f})},shortcode:function(a){var c,d=this;return b.each(this.defaults,function(b,c){a[c]=d.coerce(a,c),b===a[c]&&delete a[c]}),c=a.url,delete a.url,new wp.shortcode({tag:"embed",attrs:a,content:c})}},wp.media.collection=function(a){var c={};return b.extend({coerce:wp.media.coerce,attachments:function(a){var d,e,f,g,h=a.string(),i=c[h],j=this;return delete c[h],i?i:(d=b.defaults(a.attrs.named,this.defaults),e=b.pick(d,"orderby","order"),e.type=this.type,e.perPage=-1,void 0!==d.orderby&&(d._orderByField=d.orderby),"rand"===d.orderby&&(d._orderbyRandom=!0),(!d.orderby||/^menu_order(?: ID)?$/i.test(d.orderby))&&(e.orderby="menuOrder"),d.ids?(e.post__in=d.ids.split(","),e.orderby="post__in"):d.include&&(e.post__in=d.include.split(",")),d.exclude&&(e.post__not_in=d.exclude.split(",")),e.post__in||(e.uploadedTo=d.id),g=b.omit(d,"id","ids","include","exclude","orderby","order"),b.each(this.defaults,function(a,b){g[b]=j.coerce(g,b)}),f=wp.media.query(e),f[this.tag]=new Backbone.Model(g),f)},shortcode:function(a){var d,e,f=a.props.toJSON(),g=b.pick(f,"orderby","order");return a.type&&(g.type=a.type,delete a.type),a[this.tag]&&b.extend(g,a[this.tag].toJSON()),g.ids=a.pluck("id"),f.uploadedTo&&(g.id=f.uploadedTo),delete g.orderby,g._orderbyRandom?g.orderby="rand":g._orderByField&&"rand"!=g._orderByField&&(g.orderby=g._orderByField),delete g._orderbyRandom,delete g._orderByField,g.ids&&"post__in"===g.orderby&&delete g.orderby,g=this.setDefaults(g),d=new wp.shortcode({tag:this.tag,attrs:g,type:"single"}),e=new wp.media.model.Attachments(a.models,{props:f}),e[this.tag]=a[this.tag],c[d.string()]=e,d},edit:function(a){var c,d,e,f=wp.shortcode.next(this.tag,a),g=this.defaults.id;if(f&&f.content===a)return f=f.shortcode,b.isUndefined(f.get("id"))&&!b.isUndefined(g)&&f.set("id",g),c=this.attachments(f),d=new wp.media.model.Selection(c.models,{props:c.props.toJSON(),multiple:!0}),d[this.tag]=c[this.tag],d.more().done(function(){d.props.set({query:!1}),d.unmirror(),d.props.unset("orderby")}),this.frame&&this.frame.dispose(),e=f.attrs.named.type&&"video"===f.attrs.named.type?"video-"+this.tag+"-edit":this.tag+"-edit",this.frame=wp.media({frame:"post",state:e,title:this.editTitle,editing:!0,multiple:!0,selection:d}).open(),this.frame},setDefaults:function(a){var c=this;return b.each(this.defaults,function(b,d){a[d]=c.coerce(a,d),b===a[d]&&delete a[d]}),a}},a)},wp.media._galleryDefaults={itemtag:"dl",icontag:"dt",captiontag:"dd",columns:"3",link:"post",size:"thumbnail",order:"ASC",id:wp.media.view.settings.post&&wp.media.view.settings.post.id,orderby:"menu_order ID"},wp.media.view.settings.galleryDefaults?wp.media.galleryDefaults=b.extend({},wp.media._galleryDefaults,wp.media.view.settings.galleryDefaults):wp.media.galleryDefaults=wp.media._galleryDefaults,wp.media.gallery=new wp.media.collection({tag:"gallery",type:"image",editTitle:wp.media.view.l10n.editGalleryTitle,defaults:wp.media.galleryDefaults,setDefaults:function(a){var c=this,d=!b.isEqual(wp.media.galleryDefaults,wp.media._galleryDefaults);return b.each(this.defaults,function(b,e){a[e]=c.coerce(a,e),b!==a[e]||d&&b!==wp.media._galleryDefaults[e]||delete a[e]}),a}}),wp.media.featuredImage={get:function(){return wp.media.view.settings.post.featuredImageId},set:function(b){var c=wp.media.view.settings;c.post.featuredImageId=b,wp.media.post("set-post-thumbnail",{json:!0,post_id:c.post.id,thumbnail_id:c.post.featuredImageId,_wpnonce:c.post.nonce}).done(function(b){a(".inside","#postimagediv").html(b)})},frame:function(){return this._frame?(wp.media.frame=this._frame,this._frame):(this._frame=wp.media({state:"featured-image",states:[new wp.media.controller.FeaturedImage,new wp.media.controller.EditImage]}),this._frame.on("toolbar:create:featured-image",function(a){this.createSelectToolbar(a,{text:wp.media.view.l10n.setFeaturedImage})},this._frame),this._frame.on("content:render:edit-image",function(){var a=this.state("featured-image").get("selection"),b=new wp.media.view.EditImage({model:a.single(),controller:this}).render();this.content.set(b),b.loadEditor()},this._frame),this._frame.state("featured-image").on("select",this.select),this._frame)},select:function(){var a=this.get("selection").single();wp.media.view.settings.post.featuredImageId&&wp.media.featuredImage.set(a?a.id:-1)},init:function(){a("#postimagediv").on("click","#set-post-thumbnail",function(a){a.preventDefault(),a.stopPropagation(),wp.media.featuredImage.frame().open()}).on("click","#remove-post-thumbnail",function(){wp.media.view.settings.post.featuredImageId=-1})}},a(wp.media.featuredImage.init),wp.media.editor={insert:function(a){var c,d,e=!b.isUndefined(window.tinymce),f=!b.isUndefined(window.QTags);if(d=this.activeEditor?window.wpActiveEditor=this.activeEditor:window.wpActiveEditor,window.send_to_editor)return window.send_to_editor.apply(this,arguments);if(d)e&&(c=tinymce.get(d));else if(e&&tinymce.activeEditor)c=tinymce.activeEditor,d=window.wpActiveEditor=c.id;else if(!f)return!1;if(c&&!c.isHidden()?c.execCommand("mceInsertContent",!1,a):f?QTags.insertContent(a):document.getElementById(d).value+=a,window.tb_remove)try{window.tb_remove()}catch(g){}},add:function(d,e){var f=this.get(d);return f?f:(f=c[d]=wp.media(b.defaults(e||{},{frame:"post",state:"insert",title:wp.media.view.l10n.addMedia,multiple:!0})),f.on("insert",function(c){var d=f.state();c=c||d.get("selection"),c&&a.when.apply(a,c.map(function(a){var b=d.display(a).toJSON();return this.send.attachment(b,a.toJSON())},this)).done(function(){wp.media.editor.insert(b.toArray(arguments).join("\n\n"))})},this),f.state("gallery-edit").on("update",function(a){this.insert(wp.media.gallery.shortcode(a).string())},this),f.state("playlist-edit").on("update",function(a){this.insert(wp.media.playlist.shortcode(a).string())},this),f.state("video-playlist-edit").on("update",function(a){this.insert(wp.media.playlist.shortcode(a).string())},this),f.state("embed").on("select",function(){var a=f.state(),c=a.get("type"),d=a.props.toJSON();d.url=d.url||"","link"===c?(b.defaults(d,{linkText:d.url,linkUrl:d.url}),this.send.link(d).done(function(a){wp.media.editor.insert(a)})):"image"===c&&(b.defaults(d,{title:d.url,linkUrl:"",align:"none",link:"none"}),"none"===d.link?d.linkUrl="":"file"===d.link&&(d.linkUrl=d.url),this.insert(wp.media.string.image(d)))},this),f.state("featured-image").on("select",wp.media.featuredImage.select),f.setState(f.options.state),f)},id:function(a){return a?a:(a=window.wpActiveEditor,a||b.isUndefined(window.tinymce)||!tinymce.activeEditor||(a=tinymce.activeEditor.id),a=a||"")},get:function(a){return a=this.id(a),c[a]},remove:function(a){a=this.id(a),delete c[a]},send:{attachment:function(a,c){var d,e,f=c.caption;return wp.media.view.settings.captions||delete c.caption,a=wp.media.string.props(a,c),d={id:c.id,post_content:c.description,post_excerpt:f},a.linkUrl&&(d.url=a.linkUrl),"image"===c.type?(e=wp.media.string.image(a),b.each({align:"align",size:"image-size",alt:"image_alt"},function(b,c){a[c]&&(d[b]=a[c])})):"video"===c.type?e=wp.media.string.video(a,c):"audio"===c.type?e=wp.media.string.audio(a,c):(e=wp.media.string.link(a),d.post_title=a.title),wp.media.post("send-attachment-to-editor",{nonce:wp.media.view.settings.nonce.sendToEditor,attachment:d,html:e,post_id:wp.media.view.settings.post.id})},link:function(a){return wp.media.post("send-link-to-editor",{nonce:wp.media.view.settings.nonce.sendToEditor,src:a.linkUrl,link_text:a.linkText,html:wp.media.string.link(a),post_id:wp.media.view.settings.post.id})}},open:function(a,b){var c;return b=b||{},a=this.id(a),this.activeEditor=a,c=this.get(a),(!c||c.options&&b.state!==c.options.state)&&(c=this.add(a,b)),wp.media.frame=c,c.open()},init:function(){a(document.body).on("click.add-media-button",".insert-media",function(b){var c=a(b.currentTarget),d=c.data("editor"),e={frame:"post",state:"insert",title:wp.media.view.l10n.addMedia,multiple:!0};b.preventDefault(),c.blur(),c.hasClass("gallery")&&(e.state="gallery",e.title=wp.media.view.l10n.createGalleryTitle),wp.media.editor.open(d,e)}),(new wp.media.view.EditorUploader).render()}},b.bindAll(wp.media.editor,"open"),a(wp.media.editor.init)}(jQuery,_);
\ No newline at end of file
index 0f53b0a8c4eabcb53fe3842b3e6bc44f9ce83a40..5d2fe6056219063c109a93d19686fc04621bfe3e 100644 (file)
@@ -1182,9 +1182,9 @@ Library = wp.media.controller.State.extend({
                var defaultProps = wp.media.view.settings.defaultProps;
                this._displays = [];
                this._defaultDisplaySettings = {
-                       align: defaultProps.align || getUserSetting( 'align', 'none' ),
-                       size:  defaultProps.size  || getUserSetting( 'imgsize', 'medium' ),
-                       link:  defaultProps.link  || getUserSetting( 'urlbutton', 'file' )
+                       align: getUserSetting( 'align', defaultProps.align ) || 'none',
+                       size:  getUserSetting( 'imgsize', defaultProps.size ) || 'medium',
+                       link:  getUserSetting( 'urlbutton', defaultProps.link ) || 'none'
                };
        },
 
@@ -7855,6 +7855,10 @@ EditorUploader = View.extend({
 
                this.$document.on( 'dragstart dragend drop', _.bind( function( event ) {
                        this.localDrag = event.type === 'dragstart';
+
+                       if ( event.type === 'drop' ) {
+                               this.containerDragleave();
+                       }
                }, this ) );
 
                this.initialized = true;
index d8ec4ae2eebcdc7980a85cd77689b5724ddf91cc..e951d78a085b55a977c5fd3bab1230fca5f75043 100644 (file)
@@ -1,4 +1,4 @@
-!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){var d,e=wp.media.model.Selection,f=wp.media.controller.Library;d=f.extend({defaults:_.defaults({multiple:"add",filterable:"uploaded",priority:100,syncSelection:!1},f.prototype.defaults),initialize:function(){var a=this.get("collectionType");"video"===this.get("type")&&(a="video-"+a),this.set("id",a+"-library"),this.set("toolbar",a+"-add"),this.set("menu",a),this.get("library")||this.set("library",wp.media.query({type:this.get("type")})),f.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library"),b=this.get("editLibrary"),c=this.frame.state(this.get("collectionType")+"-edit").get("library");b&&b!==c&&a.unobserve(b),a.validator=function(a){return!!this.mirroring.get(a.cid)&&!c.get(a.cid)&&e.prototype.validator.apply(this,arguments)},a.reset(a.mirroring.models,{silent:!0}),a.observe(c),this.set("editLibrary",c),f.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],2:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n,g=jQuery;d=e.extend({defaults:{multiple:!1,sortable:!0,date:!1,searchable:!1,content:"browse",describe:!0,dragInfo:!0,idealColumnWidth:170,editing:!1,priority:60,SettingsView:!1,syncSelection:!1},initialize:function(){var a=this.get("collectionType");"video"===this.get("type")&&(a="video-"+a),this.set("id",a+"-edit"),this.set("toolbar",a+"-edit"),this.get("library")||this.set("library",new wp.media.model.Selection),this.get("AttachmentView")||this.set("AttachmentView",wp.media.view.Attachment.EditLibrary),e.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library");a.props.set("type",this.get("type")),this.get("library").observe(wp.Uploader.queue),this.frame.on("content:render:browse",this.renderSettings,this),e.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue),this.frame.off("content:render:browse",this.renderSettings,this),e.prototype.deactivate.apply(this,arguments)},renderSettings:function(a){var b=this.get("library"),c=this.get("collectionType"),d=this.get("dragInfoText"),e=this.get("SettingsView"),h={};b&&a&&(b[c]=b[c]||new Backbone.Model,h[c]=new e({controller:this,model:b[c],priority:40}),a.sidebar.set(h),d&&a.toolbar.set("dragInfo",new wp.media.View({el:g('<div class="instructions">'+d+"</div>")[0],priority:-40})),a.toolbar.set("reverse",{text:f.reverseOrder,priority:80,click:function(){b.reset(b.toArray().reverse())}}))}}),b.exports=d},{}],3:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.controller.State.extend({defaults:{id:"cropper",title:e.cropImage,toolbar:"crop",content:"crop",router:!1,canSkipCrop:!1},activate:function(){this.frame.on("content:create:crop",this.createCropContent,this),this.frame.on("close",this.removeCropper,this),this.set("selection",new Backbone.Collection(this.frame._selection.single))},deactivate:function(){this.frame.toolbar.mode("browse")},createCropContent:function(){this.cropperView=new wp.media.view.Cropper({controller:this,attachment:this.get("selection").first()}),this.cropperView.on("image-loaded",this.createCropToolbar,this),this.frame.content.set(this.cropperView)},removeCropper:function(){this.imgSelect.cancelSelection(),this.imgSelect.setOptions({remove:!0}),this.imgSelect.update(),this.cropperView.remove()},createCropToolbar:function(){var a,b;a=this.get("canSkipCrop")||!1,b={controller:this.frame,items:{insert:{style:"primary",text:e.cropImage,priority:80,requires:{library:!1,selection:!1},click:function(){var a,b=this.controller;a=b.state().get("selection").first(),a.set({cropDetails:b.state().imgSelect.getSelection()}),this.$el.text(e.cropping),this.$el.attr("disabled",!0),b.state().doCrop(a).done(function(a){b.trigger("cropped",a),b.close()}).fail(function(){b.trigger("content:error:crop")})}}}},a&&_.extend(b.items,{skip:{style:"secondary",text:e.skipCropping,priority:70,requires:{library:!1,selection:!1},click:function(){var a=this.controller.state().get("selection").first();this.controller.state().cropperView.remove(),this.controller.trigger("skippedcrop",a),this.controller.close()}}}),this.frame.toolbar.set(new wp.media.view.Toolbar(b))},doCrop:function(a){return wp.ajax.post("custom-header-crop",{nonce:a.get("nonces").edit,id:a.get("id"),cropDetails:a.get("cropDetails")})}}),b.exports=d},{}],4:[function(a,b,c){var d,e=wp.media.controller;d=e.Cropper.extend({doCrop:function(a){var b=a.get("cropDetails"),c=this.get("control");return b.dst_width=c.params.width,b.dst_height=c.params.height,wp.ajax.post("crop-image",{wp_customize:"on",nonce:a.get("nonces").edit,id:a.get("id"),context:c.id,cropDetails:b})}}),b.exports=d},{}],5:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.controller.State.extend({defaults:{id:"edit-image",title:e.editImage,menu:!1,toolbar:"edit-image",content:"edit-image",url:""},activate:function(){this.listenTo(this.frame,"toolbar:render:edit-image",this.toolbar)},deactivate:function(){this.stopListening(this.frame)},toolbar:function(){var a=this.frame,b=a.lastState(),c=b&&b.id;a.toolbar.set(new wp.media.view.Toolbar({controller:a,items:{back:{style:"primary",text:e.back,priority:20,click:function(){c?a.setState(c):a.close()}}}}))}}),b.exports=d},{}],6:[function(a,b,c){var d,e=wp.media.view.l10n,f=Backbone.$;d=wp.media.controller.State.extend({defaults:{id:"embed",title:e.insertFromUrlTitle,content:"embed",menu:"default",toolbar:"main-embed",priority:120,type:"link",url:"",metadata:{}},sensitivity:400,initialize:function(a){this.metadata=a.metadata,this.debouncedScan=_.debounce(_.bind(this.scan,this),this.sensitivity),this.props=new Backbone.Model(this.metadata||{url:""}),this.props.on("change:url",this.debouncedScan,this),this.props.on("change:url",this.refresh,this),this.on("scan",this.scanImage,this)},scan:function(){var a,b=this,c={type:"link",scanners:[]};this.props.get("url")&&this.trigger("scan",c),c.scanners.length?(a=c.scanners=f.when.apply(f,c.scanners),a.always(function(){b.get("scanners")===a&&b.set("loading",!1)})):c.scanners=null,c.loading=!!c.scanners,this.set(c)},scanImage:function(a){var b=this.frame,c=this,d=this.props.get("url"),e=new Image,g=f.Deferred();a.scanners.push(g.promise()),e.onload=function(){g.resolve(),c===b.state()&&d===c.props.get("url")&&(c.set({type:"image"}),c.props.set({width:e.width,height:e.height}))},e.onerror=g.reject,e.src=d},refresh:function(){this.frame.toolbar.get().refresh()},reset:function(){this.props.clear().set({url:""}),this.active&&this.refresh()}}),b.exports=d},{}],7:[function(a,b,c){var d,e=wp.media.model.Attachment,f=wp.media.controller.Library,g=wp.media.view.l10n;d=f.extend({defaults:_.defaults({id:"featured-image",title:g.setFeaturedImageTitle,multiple:!1,filterable:"uploaded",toolbar:"featured-image",priority:60,syncSelection:!0},f.prototype.defaults),initialize:function(){var a,b;this.get("library")||this.set("library",wp.media.query({type:"image"})),f.prototype.initialize.apply(this,arguments),a=this.get("library"),b=a.comparator,a.comparator=function(a,c){var d=!!this.mirroring.get(a.cid),e=!!this.mirroring.get(c.cid);return!d&&e?-1:d&&!e?1:b.apply(this,arguments)},a.observe(this.get("selection"))},activate:function(){this.updateSelection(),this.frame.on("open",this.updateSelection,this),f.prototype.activate.apply(this,arguments)},deactivate:function(){this.frame.off("open",this.updateSelection,this),f.prototype.deactivate.apply(this,arguments)},updateSelection:function(){var a,b=this.get("selection"),c=wp.media.view.settings.post.featuredImageId;""!==c&&-1!==c&&(a=e.get(c),a.fetch()),b.reset(a?[a]:[])}}),b.exports=d},{}],8:[function(a,b,c){var d,e=wp.media.model.Selection,f=wp.media.controller.Library,g=wp.media.view.l10n;d=f.extend({defaults:_.defaults({id:"gallery-library",title:g.addToGalleryTitle,multiple:"add",filterable:"uploaded",menu:"gallery",toolbar:"gallery-add",priority:100,syncSelection:!1},f.prototype.defaults),initialize:function(){this.get("library")||this.set("library",wp.media.query({type:"image"})),f.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library"),b=this.frame.state("gallery-edit").get("library");this.editLibrary&&this.editLibrary!==b&&a.unobserve(this.editLibrary),a.validator=function(a){return!!this.mirroring.get(a.cid)&&!b.get(a.cid)&&e.prototype.validator.apply(this,arguments)},a.reset(a.mirroring.models,{silent:!0}),a.observe(b),this.editLibrary=b,f.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],9:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n;d=e.extend({defaults:{id:"gallery-edit",title:f.editGalleryTitle,multiple:!1,searchable:!1,sortable:!0,date:!1,display:!1,content:"browse",toolbar:"gallery-edit",describe:!0,displaySettings:!0,dragInfo:!0,idealColumnWidth:170,editing:!1,priority:60,syncSelection:!1},initialize:function(){this.get("library")||this.set("library",new wp.media.model.Selection),this.get("AttachmentView")||this.set("AttachmentView",wp.media.view.Attachment.EditLibrary),e.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library");a.props.set("type","image"),this.get("library").observe(wp.Uploader.queue),this.frame.on("content:render:browse",this.gallerySettings,this),e.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue),this.frame.off("content:render:browse",this.gallerySettings,this),e.prototype.deactivate.apply(this,arguments)},gallerySettings:function(a){if(this.get("displaySettings")){var b=this.get("library");b&&a&&(b.gallery=b.gallery||new Backbone.Model,a.sidebar.set({gallery:new wp.media.view.Settings.Gallery({controller:this,model:b.gallery,priority:40})}),a.toolbar.set("reverse",{text:f.reverseOrder,priority:80,click:function(){b.reset(b.toArray().reverse())}}))}}}),b.exports=d},{}],10:[function(a,b,c){var d,e=wp.media.controller.State,f=wp.media.controller.Library,g=wp.media.view.l10n;d=e.extend({defaults:_.defaults({id:"image-details",title:g.imageDetailsTitle,content:"image-details",menu:!1,router:!1,toolbar:"image-details",editing:!1,priority:60},f.prototype.defaults),initialize:function(a){this.image=a.image,e.prototype.initialize.apply(this,arguments)},activate:function(){this.frame.modal.$el.addClass("image-details")}}),b.exports=d},{}],11:[function(a,b,c){var d,e=wp.media.view.l10n,f=window.getUserSetting,g=window.setUserSetting;d=wp.media.controller.State.extend({defaults:{id:"library",title:e.mediaLibraryTitle,multiple:!1,content:"upload",menu:"default",router:"browse",toolbar:"select",searchable:!0,filterable:!1,sortable:!0,autoSelect:!0,describe:!1,contentUserSetting:!0,syncSelection:!0},initialize:function(){var a,b=this.get("selection");this.get("library")||this.set("library",wp.media.query()),b instanceof wp.media.model.Selection||(a=b,a||(a=this.get("library").props.toJSON(),a=_.omit(a,"orderby","query")),this.set("selection",new wp.media.model.Selection(null,{multiple:this.get("multiple"),props:a}))),this.resetDisplays()},activate:function(){this.syncSelection(),wp.Uploader.queue.on("add",this.uploading,this),this.get("selection").on("add remove reset",this.refreshContent,this),this.get("router")&&this.get("contentUserSetting")&&(this.frame.on("content:activate",this.saveContentMode,this),this.set("content",f("libraryContent",this.get("content"))))},deactivate:function(){this.recordSelection(),this.frame.off("content:activate",this.saveContentMode,this),this.get("selection").off(null,null,this),wp.Uploader.queue.off(null,null,this)},reset:function(){this.get("selection").reset(),this.resetDisplays(),this.refreshContent()},resetDisplays:function(){var a=wp.media.view.settings.defaultProps;this._displays=[],this._defaultDisplaySettings={align:a.align||f("align","none"),size:a.size||f("imgsize","medium"),link:a.link||f("urlbutton","file")}},display:function(a){var b=this._displays;return b[a.cid]||(b[a.cid]=new Backbone.Model(this.defaultDisplaySettings(a))),b[a.cid]},defaultDisplaySettings:function(a){var b=this._defaultDisplaySettings;return(b.canEmbed=this.canEmbed(a))&&(b.link="embed"),b},canEmbed:function(a){if(!a.get("uploading")){var b=a.get("type");if("audio"!==b&&"video"!==b)return!1}return _.contains(wp.media.view.settings.embedExts,a.get("filename").split(".").pop())},refreshContent:function(){var a=this.get("selection"),b=this.frame,c=b.router.get(),d=b.content.mode();this.active&&!a.length&&c&&!c.get(d)&&this.frame.content.render(this.get("content"))},uploading:function(a){var b=this.frame.content;"upload"===b.mode()&&this.frame.content.mode("browse"),this.get("autoSelect")&&(this.get("selection").add(a),this.frame.trigger("library:selection:add"))},saveContentMode:function(){if("browse"===this.get("router")){var a=this.frame.content.mode(),b=this.frame.router.get();b&&b.get(a)&&g("libraryContent",a)}}}),_.extend(d.prototype,wp.media.selectionSync),b.exports=d},{}],12:[function(a,b,c){var d,e=wp.media.controller.Library;d=e.extend({defaults:_.defaults({filterable:"uploaded",displaySettings:!1,priority:80,syncSelection:!1},e.prototype.defaults),initialize:function(a){this.media=a.media,this.type=a.type,this.set("library",wp.media.query({type:this.type})),e.prototype.initialize.apply(this,arguments)},activate:function(){wp.media.frame.lastMime&&(this.set("library",wp.media.query({type:wp.media.frame.lastMime})),delete wp.media.frame.lastMime),e.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],13:[function(a,b,c){var d=function(a){_.extend(this,_.pick(a||{},"id","view","selector"))};d.extend=Backbone.Model.extend,_.extend(d.prototype,{mode:function(a){return a?a===this._mode?this:(this.trigger("deactivate"),this._mode=a,this.render(a),this.trigger("activate"),this):this._mode},render:function(a){if(a&&a!==this._mode)return this.mode(a);var b,c={view:null};return this.trigger("create",c),b=c.view,this.trigger("render",b),b&&this.set(b),this},get:function(){return this.view.views.first(this.selector)},set:function(a,b){return b&&(b.add=!1),this.view.views.set(this.selector,a,b)},trigger:function(a){var b,c;if(this._mode)return c=_.toArray(arguments),b=this.id+":"+a,c[0]=b+":"+this._mode,this.view.trigger.apply(this.view,c),c[0]=b,this.view.trigger.apply(this.view,c),this}}),b.exports=d},{}],14:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n;d=e.extend({defaults:_.defaults({id:"replace-image",title:f.replaceImageTitle,multiple:!1,filterable:"uploaded",toolbar:"replace",menu:!1,priority:60,syncSelection:!0},e.prototype.defaults),initialize:function(a){var b,c;this.image=a.image,this.get("library")||this.set("library",wp.media.query({type:"image"})),e.prototype.initialize.apply(this,arguments),b=this.get("library"),c=b.comparator,b.comparator=function(a,b){var d=!!this.mirroring.get(a.cid),e=!!this.mirroring.get(b.cid);return!d&&e?-1:d&&!e?1:c.apply(this,arguments)},b.observe(this.get("selection"))},activate:function(){this.updateSelection(),e.prototype.activate.apply(this,arguments)},updateSelection:function(){var a=this.get("selection"),b=this.image.attachment;a.reset(b?[b]:[])}}),b.exports=d},{}],15:[function(a,b,c){var d,e=wp.media.controller;d=e.Cropper.extend({activate:function(){this.frame.on("content:create:crop",this.createCropContent,this),this.frame.on("close",this.removeCropper,this),this.set("selection",new Backbone.Collection(this.frame._selection.single))},createCropContent:function(){this.cropperView=new wp.media.view.SiteIconCropper({controller:this,attachment:this.get("selection").first()}),this.cropperView.on("image-loaded",this.createCropToolbar,this),this.frame.content.set(this.cropperView)},doCrop:function(a){var b=a.get("cropDetails"),c=this.get("control");return b.dst_width=c.params.width,b.dst_height=c.params.height,wp.ajax.post("crop-image",{nonce:a.get("nonces").edit,id:a.get("id"),context:"site-icon",cropDetails:b})}}),b.exports=d},{}],16:[function(a,b,c){var d=function(a){this.states=new Backbone.Collection(a)};d.extend=Backbone.Model.extend,_.extend(d.prototype,Backbone.Events,{state:function(a){return this.states=this.states||new Backbone.Collection,a=a||this._state,a&&!this.states.get(a)&&this.states.add({id:a}),this.states.get(a)},setState:function(a){var b=this.state();return b&&a===b.id||!this.states||!this.states.get(a)?this:(b&&(b.trigger("deactivate"),this._lastState=b.id),this._state=a,this.state().trigger("activate"),this)},lastState:function(){return this._lastState?this.state(this._lastState):void 0}}),_.each(["on","off","trigger"],function(a){d.prototype[a]=function(){return this.states=this.states||new Backbone.Collection,this.states[a].apply(this.states,arguments),this}}),b.exports=d},{}],17:[function(a,b,c){var d=Backbone.Model.extend({constructor:function(){this.on("activate",this._preActivate,this),this.on("activate",this.activate,this),this.on("activate",this._postActivate,this),this.on("deactivate",this._deactivate,this),this.on("deactivate",this.deactivate,this),this.on("reset",this.reset,this),this.on("ready",this._ready,this),this.on("ready",this.ready,this),Backbone.Model.apply(this,arguments),this.on("change:menu",this._updateMenu,this)},ready:function(){},activate:function(){},deactivate:function(){},reset:function(){},_ready:function(){this._updateMenu()},_preActivate:function(){this.active=!0},_postActivate:function(){this.on("change:menu",this._menu,this),this.on("change:titleMode",this._title,this),this.on("change:content",this._content,this),this.on("change:toolbar",this._toolbar,this),this.frame.on("title:render:default",this._renderTitle,this),this._title(),this._menu(),this._toolbar(),this._content(),this._router()},_deactivate:function(){this.active=!1,this.frame.off("title:render:default",this._renderTitle,this),this.off("change:menu",this._menu,this),this.off("change:titleMode",this._title,this),this.off("change:content",this._content,this),this.off("change:toolbar",this._toolbar,this)},_title:function(){this.frame.title.render(this.get("titleMode")||"default")},_renderTitle:function(a){a.$el.text(this.get("title")||"")},_router:function(){var a,b=this.frame.router,c=this.get("router");this.frame.$el.toggleClass("hide-router",!c),c&&(this.frame.router.render(c),a=b.get(),a&&a.select&&a.select(this.frame.content.mode()))},_menu:function(){var a,b=this.frame.menu,c=this.get("menu");this.frame.$el.toggleClass("hide-menu",!c),c&&(b.mode(c),a=b.get(),a&&a.select&&a.select(this.id))},_updateMenu:function(){var a=this.previous("menu"),b=this.get("menu");a&&this.frame.off("menu:render:"+a,this._renderMenu,this),b&&this.frame.on("menu:render:"+b,this._renderMenu,this)},_renderMenu:function(a){var b=this.get("menuItem"),c=this.get("title"),d=this.get("priority");!b&&c&&(b={text:c},d&&(b.priority=d)),b&&a.set(this.id,b)}});_.each(["toolbar","content"],function(a){d.prototype["_"+a]=function(){var b=this.get(a);b&&this.frame[a].render(b)}}),b.exports=d},{}],18:[function(a,b,c){var d={syncSelection:function(){var a=this.get("selection"),b=this.frame._selection;this.get("syncSelection")&&b&&a&&(a.multiple&&(a.reset([],{silent:!0}),a.validateAll(b.attachments),b.difference=_.difference(b.attachments.models,a.models)),a.single(b.single))},recordSelection:function(){var a=this.get("selection"),b=this.frame._selection;this.get("syncSelection")&&b&&a&&(a.multiple?(b.attachments.reset(a.toArray().concat(b.difference)),b.difference=[]):b.attachments.add(a.toArray()),b.single=a._single)}};b.exports=d},{}],19:[function(a,b,c){var d,e=wp.media,f=jQuery;e.isTouchDevice="ontouchend"in document,d=e.view.l10n=window._wpMediaViewsL10n||{},e.view.settings=d.settings||{},delete d.settings,e.model.settings.post=e.view.settings.post,f.support.transition=function(){var a,b=document.documentElement.style,c={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};return a=_.find(_.keys(c),function(a){return!_.isUndefined(b[a])}),a&&{end:c[a]}}(),e.events=_.extend({},Backbone.Events),e.transition=function(a,b){var c=f.Deferred();return b=b||2e3,f.support.transition?(a instanceof f||(a=f(a)),a.first().one(f.support.transition.end,c.resolve),_.delay(c.resolve,b)):c.resolve(),c.promise()},e.controller.Region=a("./controllers/region.js"),e.controller.StateMachine=a("./controllers/state-machine.js"),e.controller.State=a("./controllers/state.js"),e.selectionSync=a("./utils/selection-sync.js"),e.controller.Library=a("./controllers/library.js"),e.controller.ImageDetails=a("./controllers/image-details.js"),e.controller.GalleryEdit=a("./controllers/gallery-edit.js"),e.controller.GalleryAdd=a("./controllers/gallery-add.js"),e.controller.CollectionEdit=a("./controllers/collection-edit.js"),e.controller.CollectionAdd=a("./controllers/collection-add.js"),e.controller.FeaturedImage=a("./controllers/featured-image.js"),e.controller.ReplaceImage=a("./controllers/replace-image.js"),e.controller.EditImage=a("./controllers/edit-image.js"),e.controller.MediaLibrary=a("./controllers/media-library.js"),e.controller.Embed=a("./controllers/embed.js"),e.controller.Cropper=a("./controllers/cropper.js"),e.controller.CustomizeImageCropper=a("./controllers/customize-image-cropper.js"),e.controller.SiteIconCropper=a("./controllers/site-icon-cropper.js"),e.View=a("./views/view.js"),e.view.Frame=a("./views/frame.js"),e.view.MediaFrame=a("./views/media-frame.js"),e.view.MediaFrame.Select=a("./views/frame/select.js"),e.view.MediaFrame.Post=a("./views/frame/post.js"),e.view.MediaFrame.ImageDetails=a("./views/frame/image-details.js"),e.view.Modal=a("./views/modal.js"),e.view.FocusManager=a("./views/focus-manager.js"),e.view.UploaderWindow=a("./views/uploader/window.js"),e.view.EditorUploader=a("./views/uploader/editor.js"),e.view.UploaderInline=a("./views/uploader/inline.js"),e.view.UploaderStatus=a("./views/uploader/status.js"),e.view.UploaderStatusError=a("./views/uploader/status-error.js"),e.view.Toolbar=a("./views/toolbar.js"),e.view.Toolbar.Select=a("./views/toolbar/select.js"),e.view.Toolbar.Embed=a("./views/toolbar/embed.js"),e.view.Button=a("./views/button.js"),e.view.ButtonGroup=a("./views/button-group.js"),e.view.PriorityList=a("./views/priority-list.js"),e.view.MenuItem=a("./views/menu-item.js"),e.view.Menu=a("./views/menu.js"),e.view.RouterItem=a("./views/router-item.js"),e.view.Router=a("./views/router.js"),e.view.Sidebar=a("./views/sidebar.js"),e.view.Attachment=a("./views/attachment.js"),e.view.Attachment.Library=a("./views/attachment/library.js"),e.view.Attachment.EditLibrary=a("./views/attachment/edit-library.js"),e.view.Attachments=a("./views/attachments.js"),e.view.Search=a("./views/search.js"),e.view.AttachmentFilters=a("./views/attachment-filters.js"),e.view.DateFilter=a("./views/attachment-filters/date.js"),e.view.AttachmentFilters.Uploaded=a("./views/attachment-filters/uploaded.js"),e.view.AttachmentFilters.All=a("./views/attachment-filters/all.js"),e.view.AttachmentsBrowser=a("./views/attachments/browser.js"),e.view.Selection=a("./views/selection.js"),e.view.Attachment.Selection=a("./views/attachment/selection.js"),e.view.Attachments.Selection=a("./views/attachments/selection.js"),e.view.Attachment.EditSelection=a("./views/attachment/edit-selection.js"),e.view.Settings=a("./views/settings.js"),e.view.Settings.AttachmentDisplay=a("./views/settings/attachment-display.js"),e.view.Settings.Gallery=a("./views/settings/gallery.js"),e.view.Settings.Playlist=a("./views/settings/playlist.js"),e.view.Attachment.Details=a("./views/attachment/details.js"),e.view.AttachmentCompat=a("./views/attachment-compat.js"),e.view.Iframe=a("./views/iframe.js"),e.view.Embed=a("./views/embed.js"),e.view.Label=a("./views/label.js"),e.view.EmbedUrl=a("./views/embed/url.js"),e.view.EmbedLink=a("./views/embed/link.js"),e.view.EmbedImage=a("./views/embed/image.js"),e.view.ImageDetails=a("./views/image-details.js"),e.view.Cropper=a("./views/cropper.js"),e.view.SiteIconCropper=a("./views/site-icon-cropper.js"),e.view.SiteIconPreview=a("./views/site-icon-preview.js"),e.view.EditImage=a("./views/edit-image.js"),e.view.Spinner=a("./views/spinner.js")},{"./controllers/collection-add.js":1,"./controllers/collection-edit.js":2,"./controllers/cropper.js":3,"./controllers/customize-image-cropper.js":4,"./controllers/edit-image.js":5,"./controllers/embed.js":6,"./controllers/featured-image.js":7,"./controllers/gallery-add.js":8,"./controllers/gallery-edit.js":9,"./controllers/image-details.js":10,"./controllers/library.js":11,"./controllers/media-library.js":12,"./controllers/region.js":13,"./controllers/replace-image.js":14,"./controllers/site-icon-cropper.js":15,"./controllers/state-machine.js":16,"./controllers/state.js":17,"./utils/selection-sync.js":18,"./views/attachment-compat.js":20,"./views/attachment-filters.js":21,"./views/attachment-filters/all.js":22,"./views/attachment-filters/date.js":23,"./views/attachment-filters/uploaded.js":24,"./views/attachment.js":25,"./views/attachment/details.js":26,"./views/attachment/edit-library.js":27,"./views/attachment/edit-selection.js":28,"./views/attachment/library.js":29,"./views/attachment/selection.js":30,"./views/attachments.js":31,"./views/attachments/browser.js":32,"./views/attachments/selection.js":33,"./views/button-group.js":34,"./views/button.js":35,"./views/cropper.js":36,"./views/edit-image.js":37,"./views/embed.js":38,"./views/embed/image.js":39,"./views/embed/link.js":40,"./views/embed/url.js":41,"./views/focus-manager.js":42,"./views/frame.js":43,"./views/frame/image-details.js":44,"./views/frame/post.js":45,"./views/frame/select.js":46,"./views/iframe.js":47,"./views/image-details.js":48,"./views/label.js":49,"./views/media-frame.js":50,"./views/menu-item.js":51,"./views/menu.js":52,"./views/modal.js":53,"./views/priority-list.js":54,"./views/router-item.js":55,"./views/router.js":56,"./views/search.js":57,"./views/selection.js":58,"./views/settings.js":59,"./views/settings/attachment-display.js":60,"./views/settings/gallery.js":61,"./views/settings/playlist.js":62,"./views/sidebar.js":63,"./views/site-icon-cropper.js":64,"./views/site-icon-preview.js":65,"./views/spinner.js":66,"./views/toolbar.js":67,"./views/toolbar/embed.js":68,"./views/toolbar/select.js":69,"./views/uploader/editor.js":70,"./views/uploader/inline.js":71,"./views/uploader/status-error.js":72,"./views/uploader/status.js":73,"./views/uploader/window.js":74,"./views/view.js":75}],20:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"form",className:"compat-item",events:{submit:"preventDefault","change input":"save","change select":"save","change textarea":"save"},initialize:function(){this.listenTo(this.model,"change:compat",this.render)},dispose:function(){return this.$(":focus").length&&this.save(),e.prototype.dispose.apply(this,arguments)},render:function(){var a=this.model.get("compat");if(a&&a.item)return this.views.detach(),this.$el.html(a.item),this.views.render(),this},preventDefault:function(a){a.preventDefault()},save:function(a){var b={};a&&a.preventDefault(),_.each(this.$el.serializeArray(),function(a){b[a.name]=a.value}),this.controller.trigger("attachment:compat:waiting",["waiting"]),this.model.saveCompat(b).always(_.bind(this.postSave,this))},postSave:function(){this.controller.trigger("attachment:compat:ready",["ready"])}}),b.exports=d},{}],21:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"select",className:"attachment-filters",id:"media-attachment-filters",events:{change:"change"},keys:[],initialize:function(){this.createFilters(),_.extend(this.filters,this.options.filters),this.$el.html(_.chain(this.filters).map(function(a,b){return{el:e("<option></option>").val(b).html(a.text)[0],priority:a.priority||50}},this).sortBy("priority").pluck("el").value()),this.listenTo(this.model,"change",this.select),this.select()},createFilters:function(){this.filters={}},change:function(){var a=this.filters[this.el.value];a&&this.model.set(a.props)},select:function(){var a=this.model,b="all",c=a.toJSON();_.find(this.filters,function(a,d){var e=_.all(a.props,function(a,b){return a===(_.isUndefined(c[b])?null:c[b])});return e?b=d:void 0}),this.$el.val(b)}}),b.exports=d},{}],22:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({createFilters:function(){var a={};_.each(wp.media.view.settings.mimeTypes||{},function(b,c){a[c]={text:b,props:{status:null,type:c,uploadedTo:null,orderby:"date",order:"DESC"}}}),a.all={text:e.allMediaItems,props:{status:null,type:null,uploadedTo:null,orderby:"date",order:"DESC"},priority:10},wp.media.view.settings.post.id&&(a.uploaded={text:e.uploadedToThisPost,props:{status:null,type:null,uploadedTo:wp.media.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20}),a.unattached={text:e.unattached,props:{status:null,uploadedTo:0,type:null,orderby:"menuOrder",order:"ASC"},priority:50},wp.media.view.settings.mediaTrash&&this.controller.isModeActive("grid")&&(a.trash={text:e.trash,props:{uploadedTo:null,status:"trash",type:null,orderby:"date",order:"DESC"},priority:50}),this.filters=a}}),b.exports=d},{}],23:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({id:"media-attachment-date-filters",createFilters:function(){var a={};_.each(wp.media.view.settings.months||{},function(b,c){a[c]={text:b.text,props:{year:b.year,monthnum:b.month}}}),a.all={text:e.allDates,props:{monthnum:!1,year:!1},priority:10},this.filters=a}}),b.exports=d},{}],24:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({createFilters:function(){var a,b=this.model.get("type"),c=wp.media.view.settings.mimeTypes;c&&b&&(a=c[b]),this.filters={all:{text:a||e.allMediaItems,props:{uploadedTo:null,orderby:"date",order:"DESC"},priority:10},uploaded:{text:e.uploadedToThisPost,props:{uploadedTo:wp.media.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20},unattached:{text:e.unattached,props:{uploadedTo:0,orderby:"menuOrder",order:"ASC"},priority:50}}}}),b.exports=d},{}],25:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({tagName:"li",className:"attachment",template:wp.template("attachment"),attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .js--select-attachment":"toggleSelectionHandler","change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .attachment-close":"removeFromLibrary","click .check":"checkClickHandler",keydown:"toggleSelectionHandler"},buttons:{},initialize:function(){var a=this.options.selection,b=_.defaults(this.options,{rerenderOnModelChange:!0});b.rerenderOnModelChange?this.listenTo(this.model,"change",this.render):this.listenTo(this.model,"change:percent",this.progress),this.listenTo(this.model,"change:title",this._syncTitle),this.listenTo(this.model,"change:caption",this._syncCaption),this.listenTo(this.model,"change:artist",this._syncArtist),this.listenTo(this.model,"change:album",this._syncAlbum),this.listenTo(this.model,"add",this.select),this.listenTo(this.model,"remove",this.deselect),a&&(a.on("reset",this.updateSelect,this),this.listenTo(this.model,"selection:single selection:unsingle",this.details),this.details(this.model,this.controller.state().get("selection"))),this.listenTo(this.controller,"attachment:compat:waiting attachment:compat:ready",this.updateSave)},dispose:function(){var a=this.options.selection;return this.updateAll(),a&&a.off(null,null,this),
+!function a(b,c,d){function e(g,h){if(!c[g]){if(!b[g]){var i="function"==typeof require&&require;if(!h&&i)return i(g,!0);if(f)return f(g,!0);var j=new Error("Cannot find module '"+g+"'");throw j.code="MODULE_NOT_FOUND",j}var k=c[g]={exports:{}};b[g][0].call(k.exports,function(a){var c=b[g][1][a];return e(c?c:a)},k,k.exports,a,b,c,d)}return c[g].exports}for(var f="function"==typeof require&&require,g=0;g<d.length;g++)e(d[g]);return e}({1:[function(a,b,c){var d,e=wp.media.model.Selection,f=wp.media.controller.Library;d=f.extend({defaults:_.defaults({multiple:"add",filterable:"uploaded",priority:100,syncSelection:!1},f.prototype.defaults),initialize:function(){var a=this.get("collectionType");"video"===this.get("type")&&(a="video-"+a),this.set("id",a+"-library"),this.set("toolbar",a+"-add"),this.set("menu",a),this.get("library")||this.set("library",wp.media.query({type:this.get("type")})),f.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library"),b=this.get("editLibrary"),c=this.frame.state(this.get("collectionType")+"-edit").get("library");b&&b!==c&&a.unobserve(b),a.validator=function(a){return!!this.mirroring.get(a.cid)&&!c.get(a.cid)&&e.prototype.validator.apply(this,arguments)},a.reset(a.mirroring.models,{silent:!0}),a.observe(c),this.set("editLibrary",c),f.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],2:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n,g=jQuery;d=e.extend({defaults:{multiple:!1,sortable:!0,date:!1,searchable:!1,content:"browse",describe:!0,dragInfo:!0,idealColumnWidth:170,editing:!1,priority:60,SettingsView:!1,syncSelection:!1},initialize:function(){var a=this.get("collectionType");"video"===this.get("type")&&(a="video-"+a),this.set("id",a+"-edit"),this.set("toolbar",a+"-edit"),this.get("library")||this.set("library",new wp.media.model.Selection),this.get("AttachmentView")||this.set("AttachmentView",wp.media.view.Attachment.EditLibrary),e.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library");a.props.set("type",this.get("type")),this.get("library").observe(wp.Uploader.queue),this.frame.on("content:render:browse",this.renderSettings,this),e.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue),this.frame.off("content:render:browse",this.renderSettings,this),e.prototype.deactivate.apply(this,arguments)},renderSettings:function(a){var b=this.get("library"),c=this.get("collectionType"),d=this.get("dragInfoText"),e=this.get("SettingsView"),h={};b&&a&&(b[c]=b[c]||new Backbone.Model,h[c]=new e({controller:this,model:b[c],priority:40}),a.sidebar.set(h),d&&a.toolbar.set("dragInfo",new wp.media.View({el:g('<div class="instructions">'+d+"</div>")[0],priority:-40})),a.toolbar.set("reverse",{text:f.reverseOrder,priority:80,click:function(){b.reset(b.toArray().reverse())}}))}}),b.exports=d},{}],3:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.controller.State.extend({defaults:{id:"cropper",title:e.cropImage,toolbar:"crop",content:"crop",router:!1,canSkipCrop:!1},activate:function(){this.frame.on("content:create:crop",this.createCropContent,this),this.frame.on("close",this.removeCropper,this),this.set("selection",new Backbone.Collection(this.frame._selection.single))},deactivate:function(){this.frame.toolbar.mode("browse")},createCropContent:function(){this.cropperView=new wp.media.view.Cropper({controller:this,attachment:this.get("selection").first()}),this.cropperView.on("image-loaded",this.createCropToolbar,this),this.frame.content.set(this.cropperView)},removeCropper:function(){this.imgSelect.cancelSelection(),this.imgSelect.setOptions({remove:!0}),this.imgSelect.update(),this.cropperView.remove()},createCropToolbar:function(){var a,b;a=this.get("canSkipCrop")||!1,b={controller:this.frame,items:{insert:{style:"primary",text:e.cropImage,priority:80,requires:{library:!1,selection:!1},click:function(){var a,b=this.controller;a=b.state().get("selection").first(),a.set({cropDetails:b.state().imgSelect.getSelection()}),this.$el.text(e.cropping),this.$el.attr("disabled",!0),b.state().doCrop(a).done(function(a){b.trigger("cropped",a),b.close()}).fail(function(){b.trigger("content:error:crop")})}}}},a&&_.extend(b.items,{skip:{style:"secondary",text:e.skipCropping,priority:70,requires:{library:!1,selection:!1},click:function(){var a=this.controller.state().get("selection").first();this.controller.state().cropperView.remove(),this.controller.trigger("skippedcrop",a),this.controller.close()}}}),this.frame.toolbar.set(new wp.media.view.Toolbar(b))},doCrop:function(a){return wp.ajax.post("custom-header-crop",{nonce:a.get("nonces").edit,id:a.get("id"),cropDetails:a.get("cropDetails")})}}),b.exports=d},{}],4:[function(a,b,c){var d,e=wp.media.controller;d=e.Cropper.extend({doCrop:function(a){var b=a.get("cropDetails"),c=this.get("control");return b.dst_width=c.params.width,b.dst_height=c.params.height,wp.ajax.post("crop-image",{wp_customize:"on",nonce:a.get("nonces").edit,id:a.get("id"),context:c.id,cropDetails:b})}}),b.exports=d},{}],5:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.controller.State.extend({defaults:{id:"edit-image",title:e.editImage,menu:!1,toolbar:"edit-image",content:"edit-image",url:""},activate:function(){this.listenTo(this.frame,"toolbar:render:edit-image",this.toolbar)},deactivate:function(){this.stopListening(this.frame)},toolbar:function(){var a=this.frame,b=a.lastState(),c=b&&b.id;a.toolbar.set(new wp.media.view.Toolbar({controller:a,items:{back:{style:"primary",text:e.back,priority:20,click:function(){c?a.setState(c):a.close()}}}}))}}),b.exports=d},{}],6:[function(a,b,c){var d,e=wp.media.view.l10n,f=Backbone.$;d=wp.media.controller.State.extend({defaults:{id:"embed",title:e.insertFromUrlTitle,content:"embed",menu:"default",toolbar:"main-embed",priority:120,type:"link",url:"",metadata:{}},sensitivity:400,initialize:function(a){this.metadata=a.metadata,this.debouncedScan=_.debounce(_.bind(this.scan,this),this.sensitivity),this.props=new Backbone.Model(this.metadata||{url:""}),this.props.on("change:url",this.debouncedScan,this),this.props.on("change:url",this.refresh,this),this.on("scan",this.scanImage,this)},scan:function(){var a,b=this,c={type:"link",scanners:[]};this.props.get("url")&&this.trigger("scan",c),c.scanners.length?(a=c.scanners=f.when.apply(f,c.scanners),a.always(function(){b.get("scanners")===a&&b.set("loading",!1)})):c.scanners=null,c.loading=!!c.scanners,this.set(c)},scanImage:function(a){var b=this.frame,c=this,d=this.props.get("url"),e=new Image,g=f.Deferred();a.scanners.push(g.promise()),e.onload=function(){g.resolve(),c===b.state()&&d===c.props.get("url")&&(c.set({type:"image"}),c.props.set({width:e.width,height:e.height}))},e.onerror=g.reject,e.src=d},refresh:function(){this.frame.toolbar.get().refresh()},reset:function(){this.props.clear().set({url:""}),this.active&&this.refresh()}}),b.exports=d},{}],7:[function(a,b,c){var d,e=wp.media.model.Attachment,f=wp.media.controller.Library,g=wp.media.view.l10n;d=f.extend({defaults:_.defaults({id:"featured-image",title:g.setFeaturedImageTitle,multiple:!1,filterable:"uploaded",toolbar:"featured-image",priority:60,syncSelection:!0},f.prototype.defaults),initialize:function(){var a,b;this.get("library")||this.set("library",wp.media.query({type:"image"})),f.prototype.initialize.apply(this,arguments),a=this.get("library"),b=a.comparator,a.comparator=function(a,c){var d=!!this.mirroring.get(a.cid),e=!!this.mirroring.get(c.cid);return!d&&e?-1:d&&!e?1:b.apply(this,arguments)},a.observe(this.get("selection"))},activate:function(){this.updateSelection(),this.frame.on("open",this.updateSelection,this),f.prototype.activate.apply(this,arguments)},deactivate:function(){this.frame.off("open",this.updateSelection,this),f.prototype.deactivate.apply(this,arguments)},updateSelection:function(){var a,b=this.get("selection"),c=wp.media.view.settings.post.featuredImageId;""!==c&&-1!==c&&(a=e.get(c),a.fetch()),b.reset(a?[a]:[])}}),b.exports=d},{}],8:[function(a,b,c){var d,e=wp.media.model.Selection,f=wp.media.controller.Library,g=wp.media.view.l10n;d=f.extend({defaults:_.defaults({id:"gallery-library",title:g.addToGalleryTitle,multiple:"add",filterable:"uploaded",menu:"gallery",toolbar:"gallery-add",priority:100,syncSelection:!1},f.prototype.defaults),initialize:function(){this.get("library")||this.set("library",wp.media.query({type:"image"})),f.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library"),b=this.frame.state("gallery-edit").get("library");this.editLibrary&&this.editLibrary!==b&&a.unobserve(this.editLibrary),a.validator=function(a){return!!this.mirroring.get(a.cid)&&!b.get(a.cid)&&e.prototype.validator.apply(this,arguments)},a.reset(a.mirroring.models,{silent:!0}),a.observe(b),this.editLibrary=b,f.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],9:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n;d=e.extend({defaults:{id:"gallery-edit",title:f.editGalleryTitle,multiple:!1,searchable:!1,sortable:!0,date:!1,display:!1,content:"browse",toolbar:"gallery-edit",describe:!0,displaySettings:!0,dragInfo:!0,idealColumnWidth:170,editing:!1,priority:60,syncSelection:!1},initialize:function(){this.get("library")||this.set("library",new wp.media.model.Selection),this.get("AttachmentView")||this.set("AttachmentView",wp.media.view.Attachment.EditLibrary),e.prototype.initialize.apply(this,arguments)},activate:function(){var a=this.get("library");a.props.set("type","image"),this.get("library").observe(wp.Uploader.queue),this.frame.on("content:render:browse",this.gallerySettings,this),e.prototype.activate.apply(this,arguments)},deactivate:function(){this.get("library").unobserve(wp.Uploader.queue),this.frame.off("content:render:browse",this.gallerySettings,this),e.prototype.deactivate.apply(this,arguments)},gallerySettings:function(a){if(this.get("displaySettings")){var b=this.get("library");b&&a&&(b.gallery=b.gallery||new Backbone.Model,a.sidebar.set({gallery:new wp.media.view.Settings.Gallery({controller:this,model:b.gallery,priority:40})}),a.toolbar.set("reverse",{text:f.reverseOrder,priority:80,click:function(){b.reset(b.toArray().reverse())}}))}}}),b.exports=d},{}],10:[function(a,b,c){var d,e=wp.media.controller.State,f=wp.media.controller.Library,g=wp.media.view.l10n;d=e.extend({defaults:_.defaults({id:"image-details",title:g.imageDetailsTitle,content:"image-details",menu:!1,router:!1,toolbar:"image-details",editing:!1,priority:60},f.prototype.defaults),initialize:function(a){this.image=a.image,e.prototype.initialize.apply(this,arguments)},activate:function(){this.frame.modal.$el.addClass("image-details")}}),b.exports=d},{}],11:[function(a,b,c){var d,e=wp.media.view.l10n,f=window.getUserSetting,g=window.setUserSetting;d=wp.media.controller.State.extend({defaults:{id:"library",title:e.mediaLibraryTitle,multiple:!1,content:"upload",menu:"default",router:"browse",toolbar:"select",searchable:!0,filterable:!1,sortable:!0,autoSelect:!0,describe:!1,contentUserSetting:!0,syncSelection:!0},initialize:function(){var a,b=this.get("selection");this.get("library")||this.set("library",wp.media.query()),b instanceof wp.media.model.Selection||(a=b,a||(a=this.get("library").props.toJSON(),a=_.omit(a,"orderby","query")),this.set("selection",new wp.media.model.Selection(null,{multiple:this.get("multiple"),props:a}))),this.resetDisplays()},activate:function(){this.syncSelection(),wp.Uploader.queue.on("add",this.uploading,this),this.get("selection").on("add remove reset",this.refreshContent,this),this.get("router")&&this.get("contentUserSetting")&&(this.frame.on("content:activate",this.saveContentMode,this),this.set("content",f("libraryContent",this.get("content"))))},deactivate:function(){this.recordSelection(),this.frame.off("content:activate",this.saveContentMode,this),this.get("selection").off(null,null,this),wp.Uploader.queue.off(null,null,this)},reset:function(){this.get("selection").reset(),this.resetDisplays(),this.refreshContent()},resetDisplays:function(){var a=wp.media.view.settings.defaultProps;this._displays=[],this._defaultDisplaySettings={align:f("align",a.align)||"none",size:f("imgsize",a.size)||"medium",link:f("urlbutton",a.link)||"none"}},display:function(a){var b=this._displays;return b[a.cid]||(b[a.cid]=new Backbone.Model(this.defaultDisplaySettings(a))),b[a.cid]},defaultDisplaySettings:function(a){var b=this._defaultDisplaySettings;return(b.canEmbed=this.canEmbed(a))&&(b.link="embed"),b},canEmbed:function(a){if(!a.get("uploading")){var b=a.get("type");if("audio"!==b&&"video"!==b)return!1}return _.contains(wp.media.view.settings.embedExts,a.get("filename").split(".").pop())},refreshContent:function(){var a=this.get("selection"),b=this.frame,c=b.router.get(),d=b.content.mode();this.active&&!a.length&&c&&!c.get(d)&&this.frame.content.render(this.get("content"))},uploading:function(a){var b=this.frame.content;"upload"===b.mode()&&this.frame.content.mode("browse"),this.get("autoSelect")&&(this.get("selection").add(a),this.frame.trigger("library:selection:add"))},saveContentMode:function(){if("browse"===this.get("router")){var a=this.frame.content.mode(),b=this.frame.router.get();b&&b.get(a)&&g("libraryContent",a)}}}),_.extend(d.prototype,wp.media.selectionSync),b.exports=d},{}],12:[function(a,b,c){var d,e=wp.media.controller.Library;d=e.extend({defaults:_.defaults({filterable:"uploaded",displaySettings:!1,priority:80,syncSelection:!1},e.prototype.defaults),initialize:function(a){this.media=a.media,this.type=a.type,this.set("library",wp.media.query({type:this.type})),e.prototype.initialize.apply(this,arguments)},activate:function(){wp.media.frame.lastMime&&(this.set("library",wp.media.query({type:wp.media.frame.lastMime})),delete wp.media.frame.lastMime),e.prototype.activate.apply(this,arguments)}}),b.exports=d},{}],13:[function(a,b,c){var d=function(a){_.extend(this,_.pick(a||{},"id","view","selector"))};d.extend=Backbone.Model.extend,_.extend(d.prototype,{mode:function(a){return a?a===this._mode?this:(this.trigger("deactivate"),this._mode=a,this.render(a),this.trigger("activate"),this):this._mode},render:function(a){if(a&&a!==this._mode)return this.mode(a);var b,c={view:null};return this.trigger("create",c),b=c.view,this.trigger("render",b),b&&this.set(b),this},get:function(){return this.view.views.first(this.selector)},set:function(a,b){return b&&(b.add=!1),this.view.views.set(this.selector,a,b)},trigger:function(a){var b,c;if(this._mode)return c=_.toArray(arguments),b=this.id+":"+a,c[0]=b+":"+this._mode,this.view.trigger.apply(this.view,c),c[0]=b,this.view.trigger.apply(this.view,c),this}}),b.exports=d},{}],14:[function(a,b,c){var d,e=wp.media.controller.Library,f=wp.media.view.l10n;d=e.extend({defaults:_.defaults({id:"replace-image",title:f.replaceImageTitle,multiple:!1,filterable:"uploaded",toolbar:"replace",menu:!1,priority:60,syncSelection:!0},e.prototype.defaults),initialize:function(a){var b,c;this.image=a.image,this.get("library")||this.set("library",wp.media.query({type:"image"})),e.prototype.initialize.apply(this,arguments),b=this.get("library"),c=b.comparator,b.comparator=function(a,b){var d=!!this.mirroring.get(a.cid),e=!!this.mirroring.get(b.cid);return!d&&e?-1:d&&!e?1:c.apply(this,arguments)},b.observe(this.get("selection"))},activate:function(){this.updateSelection(),e.prototype.activate.apply(this,arguments)},updateSelection:function(){var a=this.get("selection"),b=this.image.attachment;a.reset(b?[b]:[])}}),b.exports=d},{}],15:[function(a,b,c){var d,e=wp.media.controller;d=e.Cropper.extend({activate:function(){this.frame.on("content:create:crop",this.createCropContent,this),this.frame.on("close",this.removeCropper,this),this.set("selection",new Backbone.Collection(this.frame._selection.single))},createCropContent:function(){this.cropperView=new wp.media.view.SiteIconCropper({controller:this,attachment:this.get("selection").first()}),this.cropperView.on("image-loaded",this.createCropToolbar,this),this.frame.content.set(this.cropperView)},doCrop:function(a){var b=a.get("cropDetails"),c=this.get("control");return b.dst_width=c.params.width,b.dst_height=c.params.height,wp.ajax.post("crop-image",{nonce:a.get("nonces").edit,id:a.get("id"),context:"site-icon",cropDetails:b})}}),b.exports=d},{}],16:[function(a,b,c){var d=function(a){this.states=new Backbone.Collection(a)};d.extend=Backbone.Model.extend,_.extend(d.prototype,Backbone.Events,{state:function(a){return this.states=this.states||new Backbone.Collection,a=a||this._state,a&&!this.states.get(a)&&this.states.add({id:a}),this.states.get(a)},setState:function(a){var b=this.state();return b&&a===b.id||!this.states||!this.states.get(a)?this:(b&&(b.trigger("deactivate"),this._lastState=b.id),this._state=a,this.state().trigger("activate"),this)},lastState:function(){return this._lastState?this.state(this._lastState):void 0}}),_.each(["on","off","trigger"],function(a){d.prototype[a]=function(){return this.states=this.states||new Backbone.Collection,this.states[a].apply(this.states,arguments),this}}),b.exports=d},{}],17:[function(a,b,c){var d=Backbone.Model.extend({constructor:function(){this.on("activate",this._preActivate,this),this.on("activate",this.activate,this),this.on("activate",this._postActivate,this),this.on("deactivate",this._deactivate,this),this.on("deactivate",this.deactivate,this),this.on("reset",this.reset,this),this.on("ready",this._ready,this),this.on("ready",this.ready,this),Backbone.Model.apply(this,arguments),this.on("change:menu",this._updateMenu,this)},ready:function(){},activate:function(){},deactivate:function(){},reset:function(){},_ready:function(){this._updateMenu()},_preActivate:function(){this.active=!0},_postActivate:function(){this.on("change:menu",this._menu,this),this.on("change:titleMode",this._title,this),this.on("change:content",this._content,this),this.on("change:toolbar",this._toolbar,this),this.frame.on("title:render:default",this._renderTitle,this),this._title(),this._menu(),this._toolbar(),this._content(),this._router()},_deactivate:function(){this.active=!1,this.frame.off("title:render:default",this._renderTitle,this),this.off("change:menu",this._menu,this),this.off("change:titleMode",this._title,this),this.off("change:content",this._content,this),this.off("change:toolbar",this._toolbar,this)},_title:function(){this.frame.title.render(this.get("titleMode")||"default")},_renderTitle:function(a){a.$el.text(this.get("title")||"")},_router:function(){var a,b=this.frame.router,c=this.get("router");this.frame.$el.toggleClass("hide-router",!c),c&&(this.frame.router.render(c),a=b.get(),a&&a.select&&a.select(this.frame.content.mode()))},_menu:function(){var a,b=this.frame.menu,c=this.get("menu");this.frame.$el.toggleClass("hide-menu",!c),c&&(b.mode(c),a=b.get(),a&&a.select&&a.select(this.id))},_updateMenu:function(){var a=this.previous("menu"),b=this.get("menu");a&&this.frame.off("menu:render:"+a,this._renderMenu,this),b&&this.frame.on("menu:render:"+b,this._renderMenu,this)},_renderMenu:function(a){var b=this.get("menuItem"),c=this.get("title"),d=this.get("priority");!b&&c&&(b={text:c},d&&(b.priority=d)),b&&a.set(this.id,b)}});_.each(["toolbar","content"],function(a){d.prototype["_"+a]=function(){var b=this.get(a);b&&this.frame[a].render(b)}}),b.exports=d},{}],18:[function(a,b,c){var d={syncSelection:function(){var a=this.get("selection"),b=this.frame._selection;this.get("syncSelection")&&b&&a&&(a.multiple&&(a.reset([],{silent:!0}),a.validateAll(b.attachments),b.difference=_.difference(b.attachments.models,a.models)),a.single(b.single))},recordSelection:function(){var a=this.get("selection"),b=this.frame._selection;this.get("syncSelection")&&b&&a&&(a.multiple?(b.attachments.reset(a.toArray().concat(b.difference)),b.difference=[]):b.attachments.add(a.toArray()),b.single=a._single)}};b.exports=d},{}],19:[function(a,b,c){var d,e=wp.media,f=jQuery;e.isTouchDevice="ontouchend"in document,d=e.view.l10n=window._wpMediaViewsL10n||{},e.view.settings=d.settings||{},delete d.settings,e.model.settings.post=e.view.settings.post,f.support.transition=function(){var a,b=document.documentElement.style,c={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};return a=_.find(_.keys(c),function(a){return!_.isUndefined(b[a])}),a&&{end:c[a]}}(),e.events=_.extend({},Backbone.Events),e.transition=function(a,b){var c=f.Deferred();return b=b||2e3,f.support.transition?(a instanceof f||(a=f(a)),a.first().one(f.support.transition.end,c.resolve),_.delay(c.resolve,b)):c.resolve(),c.promise()},e.controller.Region=a("./controllers/region.js"),e.controller.StateMachine=a("./controllers/state-machine.js"),e.controller.State=a("./controllers/state.js"),e.selectionSync=a("./utils/selection-sync.js"),e.controller.Library=a("./controllers/library.js"),e.controller.ImageDetails=a("./controllers/image-details.js"),e.controller.GalleryEdit=a("./controllers/gallery-edit.js"),e.controller.GalleryAdd=a("./controllers/gallery-add.js"),e.controller.CollectionEdit=a("./controllers/collection-edit.js"),e.controller.CollectionAdd=a("./controllers/collection-add.js"),e.controller.FeaturedImage=a("./controllers/featured-image.js"),e.controller.ReplaceImage=a("./controllers/replace-image.js"),e.controller.EditImage=a("./controllers/edit-image.js"),e.controller.MediaLibrary=a("./controllers/media-library.js"),e.controller.Embed=a("./controllers/embed.js"),e.controller.Cropper=a("./controllers/cropper.js"),e.controller.CustomizeImageCropper=a("./controllers/customize-image-cropper.js"),e.controller.SiteIconCropper=a("./controllers/site-icon-cropper.js"),e.View=a("./views/view.js"),e.view.Frame=a("./views/frame.js"),e.view.MediaFrame=a("./views/media-frame.js"),e.view.MediaFrame.Select=a("./views/frame/select.js"),e.view.MediaFrame.Post=a("./views/frame/post.js"),e.view.MediaFrame.ImageDetails=a("./views/frame/image-details.js"),e.view.Modal=a("./views/modal.js"),e.view.FocusManager=a("./views/focus-manager.js"),e.view.UploaderWindow=a("./views/uploader/window.js"),e.view.EditorUploader=a("./views/uploader/editor.js"),e.view.UploaderInline=a("./views/uploader/inline.js"),e.view.UploaderStatus=a("./views/uploader/status.js"),e.view.UploaderStatusError=a("./views/uploader/status-error.js"),e.view.Toolbar=a("./views/toolbar.js"),e.view.Toolbar.Select=a("./views/toolbar/select.js"),e.view.Toolbar.Embed=a("./views/toolbar/embed.js"),e.view.Button=a("./views/button.js"),e.view.ButtonGroup=a("./views/button-group.js"),e.view.PriorityList=a("./views/priority-list.js"),e.view.MenuItem=a("./views/menu-item.js"),e.view.Menu=a("./views/menu.js"),e.view.RouterItem=a("./views/router-item.js"),e.view.Router=a("./views/router.js"),e.view.Sidebar=a("./views/sidebar.js"),e.view.Attachment=a("./views/attachment.js"),e.view.Attachment.Library=a("./views/attachment/library.js"),e.view.Attachment.EditLibrary=a("./views/attachment/edit-library.js"),e.view.Attachments=a("./views/attachments.js"),e.view.Search=a("./views/search.js"),e.view.AttachmentFilters=a("./views/attachment-filters.js"),e.view.DateFilter=a("./views/attachment-filters/date.js"),e.view.AttachmentFilters.Uploaded=a("./views/attachment-filters/uploaded.js"),e.view.AttachmentFilters.All=a("./views/attachment-filters/all.js"),e.view.AttachmentsBrowser=a("./views/attachments/browser.js"),e.view.Selection=a("./views/selection.js"),e.view.Attachment.Selection=a("./views/attachment/selection.js"),e.view.Attachments.Selection=a("./views/attachments/selection.js"),e.view.Attachment.EditSelection=a("./views/attachment/edit-selection.js"),e.view.Settings=a("./views/settings.js"),e.view.Settings.AttachmentDisplay=a("./views/settings/attachment-display.js"),e.view.Settings.Gallery=a("./views/settings/gallery.js"),e.view.Settings.Playlist=a("./views/settings/playlist.js"),e.view.Attachment.Details=a("./views/attachment/details.js"),e.view.AttachmentCompat=a("./views/attachment-compat.js"),e.view.Iframe=a("./views/iframe.js"),e.view.Embed=a("./views/embed.js"),e.view.Label=a("./views/label.js"),e.view.EmbedUrl=a("./views/embed/url.js"),e.view.EmbedLink=a("./views/embed/link.js"),e.view.EmbedImage=a("./views/embed/image.js"),e.view.ImageDetails=a("./views/image-details.js"),e.view.Cropper=a("./views/cropper.js"),e.view.SiteIconCropper=a("./views/site-icon-cropper.js"),e.view.SiteIconPreview=a("./views/site-icon-preview.js"),e.view.EditImage=a("./views/edit-image.js"),e.view.Spinner=a("./views/spinner.js")},{"./controllers/collection-add.js":1,"./controllers/collection-edit.js":2,"./controllers/cropper.js":3,"./controllers/customize-image-cropper.js":4,"./controllers/edit-image.js":5,"./controllers/embed.js":6,"./controllers/featured-image.js":7,"./controllers/gallery-add.js":8,"./controllers/gallery-edit.js":9,"./controllers/image-details.js":10,"./controllers/library.js":11,"./controllers/media-library.js":12,"./controllers/region.js":13,"./controllers/replace-image.js":14,"./controllers/site-icon-cropper.js":15,"./controllers/state-machine.js":16,"./controllers/state.js":17,"./utils/selection-sync.js":18,"./views/attachment-compat.js":20,"./views/attachment-filters.js":21,"./views/attachment-filters/all.js":22,"./views/attachment-filters/date.js":23,"./views/attachment-filters/uploaded.js":24,"./views/attachment.js":25,"./views/attachment/details.js":26,"./views/attachment/edit-library.js":27,"./views/attachment/edit-selection.js":28,"./views/attachment/library.js":29,"./views/attachment/selection.js":30,"./views/attachments.js":31,"./views/attachments/browser.js":32,"./views/attachments/selection.js":33,"./views/button-group.js":34,"./views/button.js":35,"./views/cropper.js":36,"./views/edit-image.js":37,"./views/embed.js":38,"./views/embed/image.js":39,"./views/embed/link.js":40,"./views/embed/url.js":41,"./views/focus-manager.js":42,"./views/frame.js":43,"./views/frame/image-details.js":44,"./views/frame/post.js":45,"./views/frame/select.js":46,"./views/iframe.js":47,"./views/image-details.js":48,"./views/label.js":49,"./views/media-frame.js":50,"./views/menu-item.js":51,"./views/menu.js":52,"./views/modal.js":53,"./views/priority-list.js":54,"./views/router-item.js":55,"./views/router.js":56,"./views/search.js":57,"./views/selection.js":58,"./views/settings.js":59,"./views/settings/attachment-display.js":60,"./views/settings/gallery.js":61,"./views/settings/playlist.js":62,"./views/sidebar.js":63,"./views/site-icon-cropper.js":64,"./views/site-icon-preview.js":65,"./views/spinner.js":66,"./views/toolbar.js":67,"./views/toolbar/embed.js":68,"./views/toolbar/select.js":69,"./views/uploader/editor.js":70,"./views/uploader/inline.js":71,"./views/uploader/status-error.js":72,"./views/uploader/status.js":73,"./views/uploader/window.js":74,"./views/view.js":75}],20:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"form",className:"compat-item",events:{submit:"preventDefault","change input":"save","change select":"save","change textarea":"save"},initialize:function(){this.listenTo(this.model,"change:compat",this.render)},dispose:function(){return this.$(":focus").length&&this.save(),e.prototype.dispose.apply(this,arguments)},render:function(){var a=this.model.get("compat");if(a&&a.item)return this.views.detach(),this.$el.html(a.item),this.views.render(),this},preventDefault:function(a){a.preventDefault()},save:function(a){var b={};a&&a.preventDefault(),_.each(this.$el.serializeArray(),function(a){b[a.name]=a.value}),this.controller.trigger("attachment:compat:waiting",["waiting"]),this.model.saveCompat(b).always(_.bind(this.postSave,this))},postSave:function(){this.controller.trigger("attachment:compat:ready",["ready"])}}),b.exports=d},{}],21:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"select",className:"attachment-filters",id:"media-attachment-filters",events:{change:"change"},keys:[],initialize:function(){this.createFilters(),_.extend(this.filters,this.options.filters),this.$el.html(_.chain(this.filters).map(function(a,b){return{el:e("<option></option>").val(b).html(a.text)[0],priority:a.priority||50}},this).sortBy("priority").pluck("el").value()),this.listenTo(this.model,"change",this.select),this.select()},createFilters:function(){this.filters={}},change:function(){var a=this.filters[this.el.value];a&&this.model.set(a.props)},select:function(){var a=this.model,b="all",c=a.toJSON();_.find(this.filters,function(a,d){var e=_.all(a.props,function(a,b){return a===(_.isUndefined(c[b])?null:c[b])});return e?b=d:void 0}),this.$el.val(b)}}),b.exports=d},{}],22:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({createFilters:function(){var a={};_.each(wp.media.view.settings.mimeTypes||{},function(b,c){a[c]={text:b,props:{status:null,type:c,uploadedTo:null,orderby:"date",order:"DESC"}}}),a.all={text:e.allMediaItems,props:{status:null,type:null,uploadedTo:null,orderby:"date",order:"DESC"},priority:10},wp.media.view.settings.post.id&&(a.uploaded={text:e.uploadedToThisPost,props:{status:null,type:null,uploadedTo:wp.media.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20}),a.unattached={text:e.unattached,props:{status:null,uploadedTo:0,type:null,orderby:"menuOrder",order:"ASC"},priority:50},wp.media.view.settings.mediaTrash&&this.controller.isModeActive("grid")&&(a.trash={text:e.trash,props:{uploadedTo:null,status:"trash",type:null,orderby:"date",order:"DESC"},priority:50}),this.filters=a}}),b.exports=d},{}],23:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({id:"media-attachment-date-filters",createFilters:function(){var a={};_.each(wp.media.view.settings.months||{},function(b,c){a[c]={text:b.text,props:{year:b.year,monthnum:b.month}}}),a.all={text:e.allDates,props:{monthnum:!1,year:!1},priority:10},this.filters=a}}),b.exports=d},{}],24:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.view.AttachmentFilters.extend({createFilters:function(){var a,b=this.model.get("type"),c=wp.media.view.settings.mimeTypes;c&&b&&(a=c[b]),this.filters={all:{text:a||e.allMediaItems,props:{uploadedTo:null,orderby:"date",order:"DESC"},priority:10},uploaded:{text:e.uploadedToThisPost,props:{uploadedTo:wp.media.view.settings.post.id,orderby:"menuOrder",order:"ASC"},priority:20},unattached:{text:e.unattached,props:{uploadedTo:0,orderby:"menuOrder",order:"ASC"},priority:50}}}}),b.exports=d},{}],25:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({tagName:"li",className:"attachment",template:wp.template("attachment"),attributes:function(){return{tabIndex:0,role:"checkbox","aria-label":this.model.get("title"),"aria-checked":!1,"data-id":this.model.get("id")}},events:{"click .js--select-attachment":"toggleSelectionHandler","change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .attachment-close":"removeFromLibrary","click .check":"checkClickHandler",keydown:"toggleSelectionHandler"},buttons:{},initialize:function(){var a=this.options.selection,b=_.defaults(this.options,{rerenderOnModelChange:!0});b.rerenderOnModelChange?this.listenTo(this.model,"change",this.render):this.listenTo(this.model,"change:percent",this.progress),this.listenTo(this.model,"change:title",this._syncTitle),this.listenTo(this.model,"change:caption",this._syncCaption),this.listenTo(this.model,"change:artist",this._syncArtist),this.listenTo(this.model,"change:album",this._syncAlbum),this.listenTo(this.model,"add",this.select),this.listenTo(this.model,"remove",this.deselect),a&&(a.on("reset",this.updateSelect,this),this.listenTo(this.model,"selection:single selection:unsingle",this.details),this.details(this.model,this.controller.state().get("selection"))),this.listenTo(this.controller,"attachment:compat:waiting attachment:compat:ready",this.updateSave)},dispose:function(){var a=this.options.selection;return this.updateAll(),a&&a.off(null,null,this),
 e.prototype.dispose.apply(this,arguments),this},render:function(){var a=_.defaults(this.model.toJSON(),{orientation:"landscape",uploading:!1,type:"",subtype:"",icon:"",filename:"",caption:"",title:"",dateFormatted:"",width:"",height:"",compat:!1,alt:"",description:""},this.options);return a.buttons=this.buttons,a.describe=this.controller.state().get("describe"),"image"===a.type&&(a.size=this.imageSize()),a.can={},a.nonces&&(a.can.remove=!!a.nonces["delete"],a.can.save=!!a.nonces.update),this.controller.state().get("allowLocalEdits")&&(a.allowLocalEdits=!0),a.uploading&&!a.percent&&(a.percent=0),this.views.detach(),this.$el.html(this.template(a)),this.$el.toggleClass("uploading",a.uploading),a.uploading?this.$bar=this.$(".media-progress-bar div"):delete this.$bar,this.updateSelect(),this.updateSave(),this.views.render(),this},progress:function(){this.$bar&&this.$bar.length&&this.$bar.width(this.model.get("percent")+"%")},toggleSelectionHandler:function(a){var b;if("INPUT"!==a.target.nodeName&&"BUTTON"!==a.target.nodeName){if(37===a.keyCode||38===a.keyCode||39===a.keyCode||40===a.keyCode)return void this.controller.trigger("attachment:keydown:arrow",a);if("keydown"!==a.type||13===a.keyCode||32===a.keyCode){if(a.preventDefault(),this.controller.isModeActive("grid")){if(this.controller.isModeActive("edit"))return void this.controller.trigger("edit:attachment",this.model,a.currentTarget);this.controller.isModeActive("select")&&(b="toggle")}a.shiftKey?b="between":(a.ctrlKey||a.metaKey)&&(b="toggle"),this.toggleSelection({method:b}),this.controller.trigger("selection:toggle")}}},toggleSelection:function(a){var b,c,d,e,f=this.collection,g=this.options.selection,h=this.model,i=a&&a.method;if(g){if(b=g.single(),i=_.isUndefined(i)?g.multiple:i,"between"===i&&b&&g.multiple){if(b===h)return;return d=f.indexOf(b),e=f.indexOf(this.model),c=e>d?f.models.slice(d,e+1):f.models.slice(e,d+1),g.add(c),void g.single(h)}if("toggle"===i)return g[this.selected()?"remove":"add"](h),void g.single(h);if("add"===i)return g.add(h),void g.single(h);i||(i="add"),"add"!==i&&(i="reset"),this.selected()?g[b===h?"remove":"single"](h):(g[i](h),g.single(h))}},updateSelect:function(){this[this.selected()?"select":"deselect"]()},selected:function(){var a=this.options.selection;return a?!!a.get(this.model.cid):void 0},select:function(a,b){var c=this.options.selection,d=this.controller;!c||b&&b!==c||this.$el.hasClass("selected")||(this.$el.addClass("selected").attr("aria-checked",!0),d.isModeActive("grid")&&d.isModeActive("select")||this.$(".check").attr("tabindex","0"))},deselect:function(a,b){var c=this.options.selection;!c||b&&b!==c||this.$el.removeClass("selected").attr("aria-checked",!1).find(".check").attr("tabindex","-1")},details:function(a,b){var c,d=this.options.selection;d===b&&(c=d.single(),this.$el.toggleClass("details",c===this.model))},imageSize:function(a){var b=this.model.get("sizes"),c=!1;return a=a||"medium",b&&(b[a]?c=b[a]:b.large?c=b.large:b.thumbnail?c=b.thumbnail:b.full&&(c=b.full),c)?_.clone(c):{url:this.model.get("url"),width:this.model.get("width"),height:this.model.get("height"),orientation:this.model.get("orientation")}},updateSetting:function(a){var b,c,d=f(a.target).closest("[data-setting]");d.length&&(b=d.data("setting"),c=a.target.value,this.model.get(b)!==c&&this.save(b,c))},save:function(){var a=this,b=this._save=this._save||{status:"ready"},c=this.model.save.apply(this.model,arguments),d=b.requests?f.when(c,b.requests):c;b.savedTimer&&clearTimeout(b.savedTimer),this.updateSave("waiting"),b.requests=d,d.always(function(){b.requests===d&&(a.updateSave("resolved"===d.state()?"complete":"error"),b.savedTimer=setTimeout(function(){a.updateSave("ready"),delete b.savedTimer},2e3))})},updateSave:function(a){var b=this._save=this._save||{status:"ready"};return a&&a!==b.status&&(this.$el.removeClass("save-"+b.status),b.status=a),this.$el.addClass("save-"+b.status),this},updateAll:function(){var a,b=this.$("[data-setting]"),c=this.model;a=_.chain(b).map(function(a){var b,d,e=f("input, textarea, select, [value]",a);if(e.length)return b=f(a).data("setting"),d=e.val(),c.get(b)!==d?[b,d]:void 0}).compact().object().value(),_.isEmpty(a)||c.save(a)},removeFromLibrary:function(a){("keydown"!==a.type||13===a.keyCode||32===a.keyCode)&&(a.stopPropagation(),this.collection.remove(this.model))},checkClickHandler:function(a){var b=this.options.selection;b&&(a.stopPropagation(),b.where({id:this.model.get("id")}).length?(b.remove(this.model),this.$el.focus()):b.add(this.model))}}),_.each({caption:"_syncCaption",title:"_syncTitle",artist:"_syncArtist",album:"_syncAlbum"},function(a,b){d.prototype[a]=function(a,c){var d=this.$('[data-setting="'+b+'"]');return d.length?c===d.find("input, textarea, select, [value]").val()?this:this.render():this}}),b.exports=d},{}],26:[function(a,b,c){var d,e=wp.media.view.Attachment,f=wp.media.view.l10n;d=e.extend({tagName:"div",className:"attachment-details",template:wp.template("attachment-details"),attributes:function(){return{tabIndex:0,"data-id":this.model.get("id")}},events:{"change [data-setting]":"updateSetting","change [data-setting] input":"updateSetting","change [data-setting] select":"updateSetting","change [data-setting] textarea":"updateSetting","click .delete-attachment":"deleteAttachment","click .trash-attachment":"trashAttachment","click .untrash-attachment":"untrashAttachment","click .edit-attachment":"editAttachment",keydown:"toggleSelectionHandler"},initialize:function(){this.options=_.defaults(this.options,{rerenderOnModelChange:!1}),this.on("ready",this.initialFocus),e.prototype.initialize.apply(this,arguments)},initialFocus:function(){wp.media.isTouchDevice||this.$('input[type="text"]').eq(0).focus()},deleteAttachment:function(a){a.preventDefault(),window.confirm(f.warnDelete)&&(this.model.destroy(),this.controller.modal.focusManager.focus())},trashAttachment:function(a){var b=this.controller.library;a.preventDefault(),wp.media.view.settings.mediaTrash&&"edit-metadata"===this.controller.content.mode()?(this.model.set("status","trash"),this.model.save().done(function(){b._requery(!0)})):this.model.destroy()},untrashAttachment:function(a){var b=this.controller.library;a.preventDefault(),this.model.set("status","inherit"),this.model.save().done(function(){b._requery(!0)})},editAttachment:function(a){var b=this.controller.states.get("edit-image");window.imageEdit&&b?(a.preventDefault(),b.set("image",this.model),this.controller.setState("edit-image")):this.$el.addClass("needs-refresh")},toggleSelectionHandler:function(a){return"keydown"===a.type&&9===a.keyCode&&a.shiftKey&&a.target===this.$(":tabbable").get(0)?(this.controller.trigger("attachment:details:shift-tab",a),!1):37===a.keyCode||38===a.keyCode||39===a.keyCode||40===a.keyCode?void this.controller.trigger("attachment:keydown:arrow",a):void 0}}),b.exports=d},{}],27:[function(a,b,c){var d=wp.media.view.Attachment.extend({buttons:{close:!0}});b.exports=d},{}],28:[function(a,b,c){var d=wp.media.view.Attachment.Selection.extend({buttons:{close:!0}});b.exports=d},{}],29:[function(a,b,c){var d=wp.media.view.Attachment.extend({buttons:{check:!0}});b.exports=d},{}],30:[function(a,b,c){var d=wp.media.view.Attachment.extend({className:"attachment selection",toggleSelection:function(){this.options.selection.single(this.model)}});b.exports=d},{}],31:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({tagName:"ul",className:"attachments",attributes:{tabIndex:-1},initialize:function(){this.el.id=_.uniqueId("__attachments-view-"),_.defaults(this.options,{refreshSensitivity:wp.media.isTouchDevice?300:200,refreshThreshold:3,AttachmentView:wp.media.view.Attachment,sortable:!1,resize:!0,idealColumnWidth:f(window).width()<640?135:150}),this._viewsByCid={},this.$window=f(window),this.resizeEvent="resize.media-modal-columns",this.collection.on("add",function(a){this.views.add(this.createAttachmentView(a),{at:this.collection.indexOf(a)})},this),this.collection.on("remove",function(a){var b=this._viewsByCid[a.cid];delete this._viewsByCid[a.cid],b&&b.remove()},this),this.collection.on("reset",this.render,this),this.listenTo(this.controller,"library:selection:add",this.attachmentFocus),this.scroll=_.chain(this.scroll).bind(this).throttle(this.options.refreshSensitivity).value(),this.options.scrollElement=this.options.scrollElement||this.el,f(this.options.scrollElement).on("scroll",this.scroll),this.initSortable(),_.bindAll(this,"setColumns"),this.options.resize&&(this.on("ready",this.bindEvents),this.controller.on("open",this.setColumns),_.defer(this.setColumns,this))},bindEvents:function(){this.$window.off(this.resizeEvent).on(this.resizeEvent,_.debounce(this.setColumns,50))},attachmentFocus:function(){this.$("li:first").focus()},restoreFocus:function(){this.$("li.selected:first").focus()},arrowEvent:function(a){var b=this.$el.children("li"),c=this.columns,d=b.filter(":focus").index(),e=c>=d+1?1:Math.ceil((d+1)/c);if(-1!==d){if(37===a.keyCode){if(0===d)return;b.eq(d-1).focus()}if(38===a.keyCode){if(1===e)return;b.eq(d-c).focus()}if(39===a.keyCode){if(b.length===d)return;b.eq(d+1).focus()}if(40===a.keyCode){if(Math.ceil(b.length/c)===e)return;b.eq(d+c).focus()}}},dispose:function(){this.collection.props.off(null,null,this),this.options.resize&&this.$window.off(this.resizeEvent),e.prototype.dispose.apply(this,arguments)},setColumns:function(){var a=this.columns,b=this.$el.width();b&&(this.columns=Math.min(Math.round(b/this.options.idealColumnWidth),12)||1,a&&a===this.columns||this.$el.closest(".media-frame-content").attr("data-columns",this.columns))},initSortable:function(){var a=this.collection;!wp.media.isTouchDevice&&this.options.sortable&&f.fn.sortable&&(this.$el.sortable(_.extend({disabled:!!a.comparator,tolerance:"pointer",start:function(a,b){b.item.data("sortableIndexStart",b.item.index())},update:function(b,c){var d=a.at(c.item.data("sortableIndexStart")),e=a.comparator;delete a.comparator,a.remove(d,{silent:!0}),a.add(d,{silent:!0,at:c.item.index()}),a.comparator=e,a.trigger("reset",a),a.saveMenuOrder()}},this.options.sortable)),a.props.on("change:orderby",function(){this.$el.sortable("option","disabled",!!a.comparator)},this),this.collection.props.on("change:orderby",this.refreshSortable,this),this.refreshSortable())},refreshSortable:function(){if(!wp.media.isTouchDevice&&this.options.sortable&&f.fn.sortable){var a=this.collection,b=a.props.get("orderby"),c="menuOrder"===b||!a.comparator;this.$el.sortable("option","disabled",!c)}},createAttachmentView:function(a){var b=new this.options.AttachmentView({controller:this.controller,model:a,collection:this.collection,selection:this.options.selection});return this._viewsByCid[a.cid]=b},prepare:function(){this.collection.length?this.views.set(this.collection.map(this.createAttachmentView,this)):(this.views.unset(),this.collection.more().done(this.scroll))},ready:function(){this.scroll()},scroll:function(){var a,b=this,c=this.options.scrollElement,d=c.scrollTop;c===document&&(c=document.body,d=f(document).scrollTop()),f(c).is(":visible")&&this.collection.hasMore()&&(a=this.views.parent.toolbar,c.scrollHeight-(d+c.clientHeight)<c.clientHeight/3&&a.get("spinner").show(),c.scrollHeight<d+c.clientHeight*this.options.refreshThreshold&&this.collection.more().done(function(){b.scroll(),a.get("spinner").hide()}))}}),b.exports=d},{}],32:[function(a,b,c){var d,e=wp.media.View,f=wp.media.view.settings.mediaTrash,g=wp.media.view.l10n,h=jQuery;d=e.extend({tagName:"div",className:"attachments-browser",initialize:function(){_.defaults(this.options,{filters:!1,search:!0,date:!0,display:!1,sidebar:!0,AttachmentView:wp.media.view.Attachment.Library}),this.listenTo(this.controller,"toggle:upload:attachment",_.bind(this.toggleUploader,this)),this.controller.on("edit:selection",this.editSelection),this.createToolbar(),this.options.sidebar&&this.createSidebar(),this.createUploader(),this.createAttachments(),this.updateContent(),this.options.sidebar&&"errors"!==this.options.sidebar||(this.$el.addClass("hide-sidebar"),"errors"===this.options.sidebar&&this.$el.addClass("sidebar-for-errors")),this.collection.on("add remove reset",this.updateContent,this)},editSelection:function(a){a.$(".media-button-backToLibrary").focus()},dispose:function(){return this.options.selection.off(null,null,this),e.prototype.dispose.apply(this,arguments),this},createToolbar:function(){var a,b,c;c={controller:this.controller},this.controller.isModeActive("grid")&&(c.className="media-toolbar wp-filter"),this.toolbar=new wp.media.view.Toolbar(c),this.views.add(this.toolbar),this.toolbar.set("spinner",new wp.media.view.Spinner({priority:-60})),-1!==h.inArray(this.options.filters,["uploaded","all"])&&(this.toolbar.set("filtersLabel",new wp.media.view.Label({value:g.filterByType,attributes:{"for":"media-attachment-filters"},priority:-80}).render()),"uploaded"===this.options.filters?this.toolbar.set("filters",new wp.media.view.AttachmentFilters.Uploaded({controller:this.controller,model:this.collection.props,priority:-80}).render()):(b=new wp.media.view.AttachmentFilters.All({controller:this.controller,model:this.collection.props,priority:-80}),this.toolbar.set("filters",b.render()))),this.controller.isModeActive("grid")?(a=e.extend({className:"view-switch media-grid-view-switch",template:wp.template("media-library-view-switcher")}),this.toolbar.set("libraryViewSwitcher",new a({controller:this.controller,priority:-90}).render()),this.toolbar.set("dateFilterLabel",new wp.media.view.Label({value:g.filterByDate,attributes:{"for":"media-attachment-date-filters"},priority:-75}).render()),this.toolbar.set("dateFilter",new wp.media.view.DateFilter({controller:this.controller,model:this.collection.props,priority:-75}).render()),this.toolbar.set("selectModeToggleButton",new wp.media.view.SelectModeToggleButton({text:g.bulkSelect,controller:this.controller,priority:-70}).render()),this.toolbar.set("deleteSelectedButton",new wp.media.view.DeleteSelectedButton({filters:b,style:"primary",disabled:!0,text:f?g.trashSelected:g.deleteSelected,controller:this.controller,priority:-60,click:function(){var a=[],b=[],c=this.controller.state().get("selection"),d=this.controller.state().get("library");c.length&&(f||window.confirm(g.warnBulkDelete))&&(!f||"trash"===c.at(0).get("status")||window.confirm(g.warnBulkTrash))&&(c.each(function(c){return c.get("nonces")["delete"]?void(f&&"trash"===c.get("status")?(c.set("status","inherit"),a.push(c.save()),b.push(c)):f?(c.set("status","trash"),a.push(c.save()),b.push(c)):c.destroy({wait:!0})):void b.push(c)}),a.length?(c.remove(b),h.when.apply(null,a).then(_.bind(function(){d._requery(!0),this.controller.trigger("selection:action:done")},this))):this.controller.trigger("selection:action:done"))}}).render()),f&&this.toolbar.set("deleteSelectedPermanentlyButton",new wp.media.view.DeleteSelectedPermanentlyButton({filters:b,style:"primary",disabled:!0,text:g.deleteSelected,controller:this.controller,priority:-55,click:function(){var a=[],b=this.controller.state().get("selection");b.length&&window.confirm(g.warnBulkDelete)&&(b.each(function(b){return b.get("nonces")["delete"]?void b.destroy():void a.push(b)}),b.remove(a),this.controller.trigger("selection:action:done"))}}).render())):this.options.date&&(this.toolbar.set("dateFilterLabel",new wp.media.view.Label({value:g.filterByDate,attributes:{"for":"media-attachment-date-filters"},priority:-75}).render()),this.toolbar.set("dateFilter",new wp.media.view.DateFilter({controller:this.controller,model:this.collection.props,priority:-75}).render())),this.options.search&&(this.toolbar.set("searchLabel",new wp.media.view.Label({value:g.searchMediaLabel,attributes:{"for":"media-search-input"},priority:60}).render()),this.toolbar.set("search",new wp.media.view.Search({controller:this.controller,model:this.collection.props,priority:60}).render())),this.options.dragInfo&&this.toolbar.set("dragInfo",new e({el:h('<div class="instructions">'+g.dragInfo+"</div>")[0],priority:-40})),this.options.suggestedWidth&&this.options.suggestedHeight&&this.toolbar.set("suggestedDimensions",new e({el:h('<div class="instructions">'+g.suggestedDimensions+" "+this.options.suggestedWidth+" &times; "+this.options.suggestedHeight+"</div>")[0],priority:-40}))},updateContent:function(){var a,b=this;a=this.controller.isModeActive("grid")?b.attachmentsNoResults:b.uploader,this.collection.length?(a.$el.addClass("hidden"),b.toolbar.get("spinner").hide()):(this.toolbar.get("spinner").show(),this.dfd=this.collection.more().done(function(){b.collection.length?a.$el.addClass("hidden"):a.$el.removeClass("hidden"),b.toolbar.get("spinner").hide()}))},createUploader:function(){this.uploader=new wp.media.view.UploaderInline({controller:this.controller,status:!1,message:this.controller.isModeActive("grid")?"":g.noItemsFound,canClose:this.controller.isModeActive("grid")}),this.uploader.hide(),this.views.add(this.uploader)},toggleUploader:function(){this.uploader.$el.hasClass("hidden")?this.uploader.show():this.uploader.hide()},createAttachments:function(){this.attachments=new wp.media.view.Attachments({controller:this.controller,collection:this.collection,selection:this.options.selection,model:this.model,sortable:this.options.sortable,scrollElement:this.options.scrollElement,idealColumnWidth:this.options.idealColumnWidth,AttachmentView:this.options.AttachmentView}),this.attachments.listenTo(this.controller,"attachment:keydown:arrow",this.attachments.arrowEvent),this.attachments.listenTo(this.controller,"attachment:details:shift-tab",this.attachments.restoreFocus),this.views.add(this.attachments),this.controller.isModeActive("grid")&&(this.attachmentsNoResults=new e({controller:this.controller,tagName:"p"}),this.attachmentsNoResults.$el.addClass("hidden no-media"),this.attachmentsNoResults.$el.html(g.noMedia),this.views.add(this.attachmentsNoResults))},createSidebar:function(){var a=this.options,b=a.selection,c=this.sidebar=new wp.media.view.Sidebar({controller:this.controller});this.views.add(c),this.controller.uploader&&c.set("uploads",new wp.media.view.UploaderStatus({controller:this.controller,priority:40})),b.on("selection:single",this.createSingle,this),b.on("selection:unsingle",this.disposeSingle,this),b.single()&&this.createSingle()},createSingle:function(){var a=this.sidebar,b=this.options.selection.single();a.set("details",new wp.media.view.Attachment.Details({controller:this.controller,model:b,priority:80})),a.set("compat",new wp.media.view.AttachmentCompat({controller:this.controller,model:b,priority:120})),this.options.display&&a.set("display",new wp.media.view.Settings.AttachmentDisplay({controller:this.controller,model:this.model.display(b),attachment:b,priority:160,userSettings:this.model.get("displayUserSettings")})),"insert"===this.model.id&&a.$el.addClass("visible")},disposeSingle:function(){var a=this.sidebar;a.unset("details"),a.unset("compat"),a.unset("display"),a.$el.removeClass("visible")}}),b.exports=d},{}],33:[function(a,b,c){var d,e=wp.media.view.Attachments;d=e.extend({events:{},initialize:function(){return _.defaults(this.options,{sortable:!1,resize:!1,AttachmentView:wp.media.view.Attachment.Selection}),e.prototype.initialize.apply(this,arguments)}}),b.exports=d},{}],34:[function(a,b,c){var d,e=Backbone.$;d=wp.media.View.extend({tagName:"div",className:"button-group button-large media-button-group",initialize:function(){this.buttons=_.map(this.options.buttons||[],function(a){return a instanceof Backbone.View?a:new wp.media.view.Button(a).render()}),delete this.options.buttons,this.options.classes&&this.$el.addClass(this.options.classes)},render:function(){return this.$el.html(e(_.pluck(this.buttons,"el")).detach()),this}}),b.exports=d},{}],35:[function(a,b,c){var d=wp.media.View.extend({tagName:"button",className:"media-button",attributes:{type:"button"},events:{click:"click"},defaults:{text:"",style:"",size:"large",disabled:!1},initialize:function(){this.model=new Backbone.Model(this.defaults),_.each(this.defaults,function(a,b){var c=this.options[b];_.isUndefined(c)||(this.model.set(b,c),delete this.options[b])},this),this.listenTo(this.model,"change",this.render)},render:function(){var a=["button",this.className],b=this.model.toJSON();return b.style&&a.push("button-"+b.style),b.size&&a.push("button-"+b.size),a=_.uniq(a.concat(this.options.classes)),this.el.className=a.join(" "),this.$el.attr("disabled",b.disabled),this.$el.text(this.model.get("text")),this},click:function(a){"#"===this.attributes.href&&a.preventDefault(),this.options.click&&!this.model.get("disabled")&&this.options.click.apply(this,arguments)}});b.exports=d},{}],36:[function(a,b,c){var d,e=wp.media.View,f=wp.media.view.UploaderStatus,g=wp.media.view.l10n,h=jQuery;d=e.extend({className:"crop-content",template:wp.template("crop-content"),initialize:function(){_.bindAll(this,"onImageLoad")},ready:function(){this.controller.frame.on("content:error:crop",this.onError,this),this.$image=this.$el.find(".crop-image"),this.$image.on("load",this.onImageLoad),h(window).on("resize.cropper",_.debounce(this.onImageLoad,250))},remove:function(){h(window).off("resize.cropper"),this.$el.remove(),this.$el.off(),e.prototype.remove.apply(this,arguments)},prepare:function(){return{title:g.cropYourImage,url:this.options.attachment.get("url")}},onImageLoad:function(){var a=this.controller.get("imgSelectOptions");"function"==typeof a&&(a=a(this.options.attachment,this.controller)),a=_.extend(a,{parent:this.$el}),this.trigger("image-loaded"),this.controller.imgSelect=this.$image.imgAreaSelect(a)},onError:function(){var a=this.options.attachment.get("filename");this.views.add(".upload-errors",new wp.media.view.UploaderStatusError({filename:f.prototype.filename(a),message:window._wpMediaViewsL10n.cropError}),{at:0})}}),b.exports=d},{}],37:[function(a,b,c){var d,e=wp.media.View;d=e.extend({className:"image-editor",template:wp.template("image-editor"),initialize:function(a){this.editor=window.imageEdit,this.controller=a.controller,e.prototype.initialize.apply(this,arguments)},prepare:function(){return this.model.toJSON()},loadEditor:function(){var a=this.editor.open(this.model.get("id"),this.model.get("nonces").edit,this);a.done(_.bind(this.focus,this))},focus:function(){this.$(".imgedit-submit .button").eq(0).focus()},back:function(){var a=this.controller.lastState();this.controller.setState(a)},refresh:function(){this.model.fetch()},save:function(){var a=this.controller.lastState();this.model.fetch().done(_.bind(function(){this.controller.setState(a)},this))}}),b.exports=d},{}],38:[function(a,b,c){var d=wp.media.View.extend({className:"media-embed",initialize:function(){this.url=new wp.media.view.EmbedUrl({controller:this.controller,model:this.model.props}).render(),this.views.set([this.url]),this.refresh(),this.listenTo(this.model,"change:type",this.refresh),this.listenTo(this.model,"change:loading",this.loading)},settings:function(a){this._settings&&this._settings.remove(),this._settings=a,this.views.add(a)},refresh:function(){var a,b=this.model.get("type");if("image"===b)a=wp.media.view.EmbedImage;else{if("link"!==b)return;a=wp.media.view.EmbedLink}this.settings(new a({controller:this.controller,model:this.model.props,priority:40}))},loading:function(){this.$el.toggleClass("embed-loading",this.model.get("loading"))}});b.exports=d},{}],39:[function(a,b,c){var d,e=wp.media.view.Settings.AttachmentDisplay;d=e.extend({className:"embed-media-settings",template:wp.template("embed-image-settings"),initialize:function(){e.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change:url",this.updateImage)},updateImage:function(){this.$("img").attr("src",this.model.get("url"))}}),b.exports=d},{}],40:[function(a,b,c){var d,e=jQuery;d=wp.media.view.Settings.extend({className:"embed-link-settings",template:wp.template("embed-link-settings"),initialize:function(){this.listenTo(this.model,"change:url",this.updateoEmbed)},updateoEmbed:_.debounce(function(){var a=this.model.get("url");this.$(".embed-container").hide().find(".embed-preview").empty(),this.$(".setting").hide(),a&&(a.length<11||!a.match(/^http(s)?:\/\//))||this.fetch()},wp.media.controller.Embed.sensitivity),fetch:function(){var a;e("#embed-url-field").val()===this.model.get("url")&&(this.dfd&&"pending"===this.dfd.state()&&this.dfd.abort(),a=new wp.shortcode({tag:"embed",attrs:_.pick(this.model.attributes,["width","height","src"]),content:this.model.get("url")}),this.dfd=e.ajax({type:"POST",url:wp.ajax.settings.url,context:this,data:{action:"parse-embed",post_ID:wp.media.view.settings.post.id,shortcode:a.string()}}).done(this.renderoEmbed).fail(this.renderFail))},renderFail:function(a,b){"abort"!==b&&this.$(".link-text").show()},renderoEmbed:function(a){var b=a&&a.data&&a.data.body||"";b?this.$(".embed-container").show().find(".embed-preview").html(b):this.renderFail()}}),b.exports=d},{}],41:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({tagName:"label",className:"embed-url",events:{input:"url",keyup:"url",change:"url"},initialize:function(){this.$input=f('<input id="embed-url-field" type="url" />').val(this.model.get("url")),this.input=this.$input[0],this.spinner=f('<span class="spinner" />')[0],this.$el.append([this.input,this.spinner]),this.listenTo(this.model,"change:url",this.render),this.model.get("url")&&_.delay(_.bind(function(){this.model.trigger("change:url")},this),500)},render:function(){var a=this.$input;if(!a.is(":focus"))return this.input.value=this.model.get("url")||"http://",e.prototype.render.apply(this,arguments),this},ready:function(){wp.media.isTouchDevice||this.focus()},url:function(a){this.model.set("url",a.target.value)},focus:function(){var a=this.$input;a.is(":visible")&&a.focus()[0].select()}}),b.exports=d},{}],42:[function(a,b,c){var d=wp.media.View.extend({events:{keydown:"constrainTabbing"},focus:function(){this.$(".media-menu-item").first().focus()},constrainTabbing:function(a){var b;if(9===a.keyCode)return b=this.$(":tabbable").not('.moxie-shim input[type="file"]'),b.last()[0]!==a.target||a.shiftKey?b.first()[0]===a.target&&a.shiftKey?(b.last().focus(),!1):void 0:(b.first().focus(),!1)}});b.exports=d},{}],43:[function(a,b,c){var d=wp.media.View.extend({initialize:function(){_.defaults(this.options,{mode:["select"]}),this._createRegions(),this._createStates(),this._createModes()},_createRegions:function(){this.regions=this.regions?this.regions.slice():[],_.each(this.regions,function(a){this[a]=new wp.media.controller.Region({view:this,id:a,selector:".media-frame-"+a})},this)},_createStates:function(){this.states=new Backbone.Collection(null,{model:wp.media.controller.State}),this.states.on("add",function(a){a.frame=this,a.trigger("ready")},this),this.options.states&&this.states.add(this.options.states)},_createModes:function(){this.activeModes=new Backbone.Collection,this.activeModes.on("add remove reset",_.bind(this.triggerModeEvents,this)),_.each(this.options.mode,function(a){this.activateMode(a)},this)},reset:function(){return this.states.invoke("trigger","reset"),this},triggerModeEvents:function(a,b,c){var d,e,f={add:"activate",remove:"deactivate"};_.each(c,function(a,b){a&&(d=b)}),_.has(f,d)&&(e=a.get("id")+":"+f[d],this.trigger(e))},activateMode:function(a){return this.isModeActive(a)?void 0:(this.activeModes.add([{id:a}]),this.$el.addClass("mode-"+a),this)},deactivateMode:function(a){return this.isModeActive(a)?(this.activeModes.remove(this.activeModes.where({id:a})),this.$el.removeClass("mode-"+a),this.trigger(a+":deactivate"),this):this},isModeActive:function(a){return Boolean(this.activeModes.where({id:a}).length)}});_.extend(d.prototype,wp.media.controller.StateMachine.prototype),b.exports=d},{}],44:[function(a,b,c){var d,e=wp.media.view.MediaFrame.Select,f=wp.media.view.l10n;d=e.extend({defaults:{id:"image",url:"",menu:"image-details",content:"image-details",toolbar:"image-details",type:"link",title:f.imageDetailsTitle,priority:120},initialize:function(a){this.image=new wp.media.model.PostImage(a.metadata),this.options.selection=new wp.media.model.Selection(this.image.attachment,{multiple:!1}),e.prototype.initialize.apply(this,arguments)},bindHandlers:function(){e.prototype.bindHandlers.apply(this,arguments),this.on("menu:create:image-details",this.createMenu,this),this.on("content:create:image-details",this.imageDetailsContent,this),this.on("content:render:edit-image",this.editImageContent,this),this.on("toolbar:render:image-details",this.renderImageDetailsToolbar,this),this.on("toolbar:render:replace",this.renderReplaceImageToolbar,this)},createStates:function(){this.states.add([new wp.media.controller.ImageDetails({image:this.image,editable:!1}),new wp.media.controller.ReplaceImage({id:"replace-image",library:wp.media.query({type:"image"}),image:this.image,multiple:!1,title:f.imageReplaceTitle,toolbar:"replace",priority:80,displaySettings:!0}),new wp.media.controller.EditImage({image:this.image,selection:this.options.selection})])},imageDetailsContent:function(a){a.view=new wp.media.view.ImageDetails({controller:this,model:this.state().image,attachment:this.state().image.attachment})},editImageContent:function(){var a,b=this.state(),c=b.get("image");c&&(a=new wp.media.view.EditImage({model:c,controller:this}).render(),this.content.set(a),a.loadEditor())},renderImageDetailsToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{select:{style:"primary",text:f.update,priority:80,click:function(){var a=this.controller,b=a.state();a.close(),b.trigger("update",a.image.toJSON()),a.setState(a.options.state),a.reset()}}}}))},renderReplaceImageToolbar:function(){var a=this,b=a.lastState(),c=b&&b.id;this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{back:{text:f.back,priority:20,click:function(){c?a.setState(c):a.close()}},replace:{style:"primary",text:f.replace,priority:80,click:function(){var a=this.controller,b=a.state(),c=b.get("selection"),d=c.single();a.close(),a.image.changeAttachment(d,b.display(d)),b.trigger("replace",a.image.toJSON()),a.setState(a.options.state),a.reset()}}}}))}}),b.exports=d},{}],45:[function(a,b,c){var d,e=wp.media.view.MediaFrame.Select,f=wp.media.controller.Library,g=wp.media.view.l10n;d=e.extend({initialize:function(){this.counts={audio:{count:wp.media.view.settings.attachmentCounts.audio,state:"playlist"},video:{count:wp.media.view.settings.attachmentCounts.video,state:"video-playlist"}},_.defaults(this.options,{multiple:!0,editing:!1,state:"insert",metadata:{}}),e.prototype.initialize.apply(this,arguments),this.createIframeStates()},createStates:function(){var a=this.options;this.states.add([new f({id:"insert",title:g.insertMediaTitle,priority:20,toolbar:"main-insert",filterable:"all",library:wp.media.query(a.library),multiple:a.multiple?"reset":!1,editable:!0,allowLocalEdits:!0,displaySettings:!0,displayUserSettings:!0}),new f({id:"gallery",title:g.createGalleryTitle,priority:40,toolbar:"main-gallery",filterable:"uploaded",multiple:"add",editable:!1,library:wp.media.query(_.defaults({type:"image"},a.library))}),new wp.media.controller.Embed({metadata:a.metadata}),new wp.media.controller.EditImage({model:a.editImage}),new wp.media.controller.GalleryEdit({library:a.selection,editing:a.editing,menu:"gallery"}),new wp.media.controller.GalleryAdd,new f({id:"playlist",title:g.createPlaylistTitle,priority:60,toolbar:"main-playlist",filterable:"uploaded",multiple:"add",editable:!1,library:wp.media.query(_.defaults({type:"audio"},a.library))}),new wp.media.controller.CollectionEdit({type:"audio",collectionType:"playlist",title:g.editPlaylistTitle,SettingsView:wp.media.view.Settings.Playlist,library:a.selection,editing:a.editing,menu:"playlist",dragInfoText:g.playlistDragInfo,dragInfo:!1}),new wp.media.controller.CollectionAdd({type:"audio",collectionType:"playlist",title:g.addToPlaylistTitle}),new f({id:"video-playlist",title:g.createVideoPlaylistTitle,priority:60,toolbar:"main-video-playlist",filterable:"uploaded",multiple:"add",editable:!1,library:wp.media.query(_.defaults({
 type:"video"},a.library))}),new wp.media.controller.CollectionEdit({type:"video",collectionType:"playlist",title:g.editVideoPlaylistTitle,SettingsView:wp.media.view.Settings.Playlist,library:a.selection,editing:a.editing,menu:"video-playlist",dragInfoText:g.videoPlaylistDragInfo,dragInfo:!1}),new wp.media.controller.CollectionAdd({type:"video",collectionType:"playlist",title:g.addToVideoPlaylistTitle})]),wp.media.view.settings.post.featuredImageId&&this.states.add(new wp.media.controller.FeaturedImage)},bindHandlers:function(){var a,b;e.prototype.bindHandlers.apply(this,arguments),this.on("activate",this.activate,this),b=_.find(this.counts,function(a){return 0===a.count}),"undefined"!=typeof b&&this.listenTo(wp.media.model.Attachments.all,"change:type",this.mediaTypeCounts),this.on("menu:create:gallery",this.createMenu,this),this.on("menu:create:playlist",this.createMenu,this),this.on("menu:create:video-playlist",this.createMenu,this),this.on("toolbar:create:main-insert",this.createToolbar,this),this.on("toolbar:create:main-gallery",this.createToolbar,this),this.on("toolbar:create:main-playlist",this.createToolbar,this),this.on("toolbar:create:main-video-playlist",this.createToolbar,this),this.on("toolbar:create:featured-image",this.featuredImageToolbar,this),this.on("toolbar:create:main-embed",this.mainEmbedToolbar,this),a={menu:{"default":"mainMenu",gallery:"galleryMenu",playlist:"playlistMenu","video-playlist":"videoPlaylistMenu"},content:{embed:"embedContent","edit-image":"editImageContent","edit-selection":"editSelectionContent"},toolbar:{"main-insert":"mainInsertToolbar","main-gallery":"mainGalleryToolbar","gallery-edit":"galleryEditToolbar","gallery-add":"galleryAddToolbar","main-playlist":"mainPlaylistToolbar","playlist-edit":"playlistEditToolbar","playlist-add":"playlistAddToolbar","main-video-playlist":"mainVideoPlaylistToolbar","video-playlist-edit":"videoPlaylistEditToolbar","video-playlist-add":"videoPlaylistAddToolbar"}},_.each(a,function(a,b){_.each(a,function(a,c){this.on(b+":render:"+c,this[a],this)},this)},this)},activate:function(){_.each(this.counts,function(a){a.count<1&&this.menuItemVisibility(a.state,"hide")},this)},mediaTypeCounts:function(a,b){"undefined"!=typeof this.counts[b]&&this.counts[b].count<1&&(this.counts[b].count++,this.menuItemVisibility(this.counts[b].state,"show"))},mainMenu:function(a){a.set({"library-separator":new wp.media.View({className:"separator",priority:100})})},menuItemVisibility:function(a,b){var c=this.menu.get();"hide"===b?c.hide(a):"show"===b&&c.show(a)},galleryMenu:function(a){var b=this.lastState(),c=b&&b.id,d=this;a.set({cancel:{text:g.cancelGalleryTitle,priority:20,click:function(){c?d.setState(c):d.close(),this.controller.modal.focusManager.focus()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},playlistMenu:function(a){var b=this.lastState(),c=b&&b.id,d=this;a.set({cancel:{text:g.cancelPlaylistTitle,priority:20,click:function(){c?d.setState(c):d.close()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},videoPlaylistMenu:function(a){var b=this.lastState(),c=b&&b.id,d=this;a.set({cancel:{text:g.cancelVideoPlaylistTitle,priority:20,click:function(){c?d.setState(c):d.close()}},separateCancel:new wp.media.View({className:"separator",priority:40})})},embedContent:function(){var a=new wp.media.view.Embed({controller:this,model:this.state()}).render();this.content.set(a),wp.media.isTouchDevice||a.url.focus()},editSelectionContent:function(){var a,b=this.state(),c=b.get("selection");a=new wp.media.view.AttachmentsBrowser({controller:this,collection:c,selection:c,model:b,sortable:!0,search:!1,date:!1,dragInfo:!0,AttachmentView:wp.media.view.Attachments.EditSelection}).render(),a.toolbar.set("backToLibrary",{text:g.returnToLibrary,priority:-100,click:function(){this.controller.content.mode("browse")}}),this.content.set(a),this.trigger("edit:selection",this)},editImageContent:function(){var a=this.state().get("image"),b=new wp.media.view.EditImage({model:a,controller:this}).render();this.content.set(b),b.loadEditor()},selectionStatusToolbar:function(a){var b=this.state().get("editable");a.set("selection",new wp.media.view.Selection({controller:this,collection:this.state().get("selection"),priority:-40,editable:b&&function(){this.controller.content.mode("edit-selection")}}).render())},mainInsertToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("insert",{style:"primary",priority:80,text:g.insertIntoPost,requires:{selection:!0},click:function(){var a=b.state(),c=a.get("selection");b.close(),a.trigger("insert",c).reset()}})},mainGalleryToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("gallery",{style:"primary",text:g.createNewGallery,priority:60,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("gallery-edit"),d=a.where({type:"image"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("gallery-edit"),this.controller.modal.focusManager.focus()}})},mainPlaylistToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("playlist",{style:"primary",text:g.createNewPlaylist,priority:100,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("playlist-edit"),d=a.where({type:"audio"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("playlist-edit"),this.controller.modal.focusManager.focus()}})},mainVideoPlaylistToolbar:function(a){var b=this;this.selectionStatusToolbar(a),a.set("video-playlist",{style:"primary",text:g.createNewVideoPlaylist,priority:100,requires:{selection:!0},click:function(){var a=b.state().get("selection"),c=b.state("video-playlist-edit"),d=a.where({type:"video"});c.set("library",new wp.media.model.Selection(d,{props:a.props.toJSON(),multiple:!0})),this.controller.setState("video-playlist-edit"),this.controller.modal.focusManager.focus()}})},featuredImageToolbar:function(a){this.createSelectToolbar(a,{text:g.setFeaturedImage,state:this.options.state})},mainEmbedToolbar:function(a){a.view=new wp.media.view.Toolbar.Embed({controller:this})},galleryEditToolbar:function(){var a=this.state().get("editing");this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:a?g.updateGallery:g.insertGallery,priority:80,requires:{library:!0},click:function(){var a=this.controller,b=a.state();a.close(),b.trigger("update",b.get("library")),a.setState(a.options.state),a.reset()}}}}))},galleryAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g.addToGallery,priority:80,requires:{selection:!0},click:function(){var a=this.controller,b=a.state(),c=a.state("gallery-edit");c.get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("gallery-edit")}}}}))},playlistEditToolbar:function(){var a=this.state().get("editing");this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:a?g.updatePlaylist:g.insertPlaylist,priority:80,requires:{library:!0},click:function(){var a=this.controller,b=a.state();a.close(),b.trigger("update",b.get("library")),a.setState(a.options.state),a.reset()}}}}))},playlistAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g.addToPlaylist,priority:80,requires:{selection:!0},click:function(){var a=this.controller,b=a.state(),c=a.state("playlist-edit");c.get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("playlist-edit")}}}}))},videoPlaylistEditToolbar:function(){var a=this.state().get("editing");this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:a?g.updateVideoPlaylist:g.insertVideoPlaylist,priority:140,requires:{library:!0},click:function(){var a=this.controller,b=a.state(),c=b.get("library");c.type="video",a.close(),b.trigger("update",c),a.setState(a.options.state),a.reset()}}}}))},videoPlaylistAddToolbar:function(){this.toolbar.set(new wp.media.view.Toolbar({controller:this,items:{insert:{style:"primary",text:g.addToVideoPlaylist,priority:140,requires:{selection:!0},click:function(){var a=this.controller,b=a.state(),c=a.state("video-playlist-edit");c.get("library").add(b.get("selection").models),b.trigger("reset"),a.setState("video-playlist-edit")}}}}))}}),b.exports=d},{}],46:[function(a,b,c){var d,e=wp.media.view.MediaFrame,f=wp.media.view.l10n;d=e.extend({initialize:function(){e.prototype.initialize.apply(this,arguments),_.defaults(this.options,{selection:[],library:{},multiple:!1,state:"library"}),this.createSelection(),this.createStates(),this.bindHandlers()},createSelection:function(){var a=this.options.selection;a instanceof wp.media.model.Selection||(this.options.selection=new wp.media.model.Selection(a,{multiple:this.options.multiple})),this._selection={attachments:new wp.media.model.Attachments,difference:[]}},createStates:function(){var a=this.options;this.options.states||this.states.add([new wp.media.controller.Library({library:wp.media.query(a.library),multiple:a.multiple,title:a.title,priority:20})])},bindHandlers:function(){this.on("router:create:browse",this.createRouter,this),this.on("router:render:browse",this.browseRouter,this),this.on("content:create:browse",this.browseContent,this),this.on("content:render:upload",this.uploadContent,this),this.on("toolbar:create:select",this.createSelectToolbar,this)},browseRouter:function(a){a.set({upload:{text:f.uploadFilesTitle,priority:20},browse:{text:f.mediaLibraryTitle,priority:40}})},browseContent:function(a){var b=this.state();this.$el.removeClass("hide-toolbar"),a.view=new wp.media.view.AttachmentsBrowser({controller:this,collection:b.get("library"),selection:b.get("selection"),model:b,sortable:b.get("sortable"),search:b.get("searchable"),filters:b.get("filterable"),date:b.get("date"),display:b.has("display")?b.get("display"):b.get("displaySettings"),dragInfo:b.get("dragInfo"),idealColumnWidth:b.get("idealColumnWidth"),suggestedWidth:b.get("suggestedWidth"),suggestedHeight:b.get("suggestedHeight"),AttachmentView:b.get("AttachmentView")})},uploadContent:function(){this.$el.removeClass("hide-toolbar"),this.content.set(new wp.media.view.UploaderInline({controller:this}))},createSelectToolbar:function(a,b){b=b||this.options.button||{},b.controller=this,a.view=new wp.media.view.Toolbar.Select(b)}}),b.exports=d},{}],47:[function(a,b,c){var d=wp.media.View.extend({className:"media-iframe",render:function(){return this.views.detach(),this.$el.html('<iframe src="'+this.controller.state().get("src")+'" />'),this.views.render(),this}});b.exports=d},{}],48:[function(a,b,c){var d,e=wp.media.view.Settings.AttachmentDisplay,f=jQuery;d=e.extend({className:"image-details",template:wp.template("image-details"),events:_.defaults(e.prototype.events,{"click .edit-attachment":"editAttachment","click .replace-attachment":"replaceAttachment","click .advanced-toggle":"onToggleAdvanced",'change [data-setting="customWidth"]':"onCustomSize",'change [data-setting="customHeight"]':"onCustomSize",'keyup [data-setting="customWidth"]':"onCustomSize",'keyup [data-setting="customHeight"]':"onCustomSize"}),initialize:function(){this.options.attachment=this.model.attachment,this.listenTo(this.model,"change:url",this.updateUrl),this.listenTo(this.model,"change:link",this.toggleLinkSettings),this.listenTo(this.model,"change:size",this.toggleCustomSize),e.prototype.initialize.apply(this,arguments)},prepare:function(){var a=!1;return this.model.attachment&&(a=this.model.attachment.toJSON()),_.defaults({model:this.model.toJSON(),attachment:a},this.options)},render:function(){var a=arguments;return this.model.attachment&&"pending"===this.model.dfd.state()?this.model.dfd.done(_.bind(function(){e.prototype.render.apply(this,a),this.postRender()},this)).fail(_.bind(function(){this.model.attachment=!1,e.prototype.render.apply(this,a),this.postRender()},this)):(e.prototype.render.apply(this,arguments),this.postRender()),this},postRender:function(){setTimeout(_.bind(this.resetFocus,this),10),this.toggleLinkSettings(),"show"===window.getUserSetting("advImgDetails")&&this.toggleAdvanced(!0),this.trigger("post-render")},resetFocus:function(){this.$(".link-to-custom").blur(),this.$(".embed-media-settings").scrollTop(0)},updateUrl:function(){this.$(".image img").attr("src",this.model.get("url")),this.$(".url").val(this.model.get("url"))},toggleLinkSettings:function(){"none"===this.model.get("link")?this.$(".link-settings").addClass("hidden"):this.$(".link-settings").removeClass("hidden")},toggleCustomSize:function(){"custom"!==this.model.get("size")?this.$(".custom-size").addClass("hidden"):this.$(".custom-size").removeClass("hidden")},onCustomSize:function(a){var b,c=f(a.target).data("setting"),d=f(a.target).val();return!/^\d+/.test(d)||parseInt(d,10)<1?void a.preventDefault():void("customWidth"===c?(b=Math.round(1/this.model.get("aspectRatio")*d),this.model.set("customHeight",b,{silent:!0}),this.$('[data-setting="customHeight"]').val(b)):(b=Math.round(this.model.get("aspectRatio")*d),this.model.set("customWidth",b,{silent:!0}),this.$('[data-setting="customWidth"]').val(b)))},onToggleAdvanced:function(a){a.preventDefault(),this.toggleAdvanced()},toggleAdvanced:function(a){var b,c=this.$el.find(".advanced-section");c.hasClass("advanced-visible")||a===!1?(c.removeClass("advanced-visible"),c.find(".advanced-settings").addClass("hidden"),b="hide"):(c.addClass("advanced-visible"),c.find(".advanced-settings").removeClass("hidden"),b="show"),window.setUserSetting("advImgDetails",b)},editAttachment:function(a){var b=this.controller.states.get("edit-image");window.imageEdit&&b&&(a.preventDefault(),b.set("image",this.model.attachment),this.controller.setState("edit-image"))},replaceAttachment:function(a){a.preventDefault(),this.controller.setState("replace-image")}}),b.exports=d},{}],49:[function(a,b,c){var d=wp.media.View.extend({tagName:"label",className:"screen-reader-text",initialize:function(){this.value=this.options.value},render:function(){return this.$el.html(this.value),this}});b.exports=d},{}],50:[function(a,b,c){var d,e=wp.media.view.Frame,f=jQuery;d=e.extend({className:"media-frame",template:wp.template("media-frame"),regions:["menu","title","content","toolbar","router"],events:{"click div.media-frame-title h1":"toggleMenu"},initialize:function(){e.prototype.initialize.apply(this,arguments),_.defaults(this.options,{title:"",modal:!0,uploader:!0}),this.$el.addClass("wp-core-ui"),this.options.modal&&(this.modal=new wp.media.view.Modal({controller:this,title:this.options.title}),this.modal.content(this)),(wp.Uploader.limitExceeded||!wp.Uploader.browser.supported)&&(this.options.uploader=!1),this.options.uploader&&(this.uploader=new wp.media.view.UploaderWindow({controller:this,uploader:{dropzone:this.modal?this.modal.$el:this.$el,container:this.$el}}),this.views.set(".media-frame-uploader",this.uploader)),this.on("attach",_.bind(this.views.ready,this.views),this),this.on("title:create:default",this.createTitle,this),this.title.mode("default"),this.on("title:render",function(a){a.$el.append('<span class="dashicons dashicons-arrow-down"></span>')}),this.on("menu:create:default",this.createMenu,this)},render:function(){return!this.state()&&this.options.state&&this.setState(this.options.state),e.prototype.render.apply(this,arguments)},createTitle:function(a){a.view=new wp.media.View({controller:this,tagName:"h1"})},createMenu:function(a){a.view=new wp.media.view.Menu({controller:this})},toggleMenu:function(){this.$el.find(".media-menu").toggleClass("visible")},createToolbar:function(a){a.view=new wp.media.view.Toolbar({controller:this})},createRouter:function(a){a.view=new wp.media.view.Router({controller:this})},createIframeStates:function(a){var b,c=wp.media.view.settings,d=c.tabs,e=c.tabUrl;d&&e&&(b=f("#post_ID"),b.length&&(e+="&post_id="+b.val()),_.each(d,function(b,c){this.state("iframe:"+c).set(_.defaults({tab:c,src:e+"&tab="+c,title:b,content:"iframe",menu:"default"},a))},this),this.on("content:create:iframe",this.iframeContent,this),this.on("content:deactivate:iframe",this.iframeContentCleanup,this),this.on("menu:render:default",this.iframeMenu,this),this.on("open",this.hijackThickbox,this),this.on("close",this.restoreThickbox,this))},iframeContent:function(a){this.$el.addClass("hide-toolbar"),a.view=new wp.media.view.Iframe({controller:this})},iframeContentCleanup:function(){this.$el.removeClass("hide-toolbar")},iframeMenu:function(a){var b={};a&&(_.each(wp.media.view.settings.tabs,function(a,c){b["iframe:"+c]={text:this.state("iframe:"+c).get("title"),priority:200}},this),a.set(b))},hijackThickbox:function(){var a=this;window.tb_remove&&!this._tb_remove&&(this._tb_remove=window.tb_remove,window.tb_remove=function(){a.close(),a.reset(),a.setState(a.options.state),a._tb_remove.call(window)})},restoreThickbox:function(){this._tb_remove&&(window.tb_remove=this._tb_remove,delete this._tb_remove)}}),_.each(["open","close","attach","detach","escape"],function(a){d.prototype[a]=function(){return this.modal&&this.modal[a].apply(this.modal,arguments),this}}),b.exports=d},{}],51:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"a",className:"media-menu-item",attributes:{href:"#"},events:{click:"_click"},_click:function(a){var b=this.options.click;a&&a.preventDefault(),b?b.call(this):this.click(),wp.media.isTouchDevice||e(".media-frame-content input").first().focus()},click:function(){var a=this.options.state;a&&(this.controller.setState(a),this.views.parent.$el.removeClass("visible"))},render:function(){var a=this.options;return a.text?this.$el.text(a.text):a.html&&this.$el.html(a.html),this}}),b.exports=d},{}],52:[function(a,b,c){var d,e=wp.media.view.MenuItem,f=wp.media.view.PriorityList;d=f.extend({tagName:"div",className:"media-menu",property:"state",ItemView:e,region:"menu",toView:function(a,b){return a=a||{},a[this.property]=a[this.property]||b,new this.ItemView(a).render()},ready:function(){f.prototype.ready.apply(this,arguments),this.visibility()},set:function(){f.prototype.set.apply(this,arguments),this.visibility()},unset:function(){f.prototype.unset.apply(this,arguments),this.visibility()},visibility:function(){var a=this.region,b=this.controller[a].get(),c=this.views.get(),d=!c||c.length<2;this===b&&this.controller.$el.toggleClass("hide-"+a,d)},select:function(a){var b=this.get(a);b&&(this.deselect(),b.$el.addClass("active"))},deselect:function(){this.$el.children().removeClass("active")},hide:function(a){var b=this.get(a);b&&b.$el.addClass("hidden")},show:function(a){var b=this.get(a);b&&b.$el.removeClass("hidden")}}),b.exports=d},{}],53:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"div",template:wp.template("media-modal"),attributes:{tabindex:0},events:{"click .media-modal-backdrop, .media-modal-close":"escapeHandler",keydown:"keydown"},initialize:function(){_.defaults(this.options,{container:document.body,title:"",propagate:!0,freeze:!0}),this.focusManager=new wp.media.view.FocusManager({el:this.el})},prepare:function(){return{title:this.options.title}},attach:function(){return this.views.attached?this:(this.views.rendered||this.render(),this.$el.appendTo(this.options.container),this.views.attached=!0,this.views.ready(),this.propagate("attach"))},detach:function(){return this.$el.is(":visible")&&this.close(),this.$el.detach(),this.views.attached=!1,this.propagate("detach")},open:function(){var a,b=this.$el,c=this.options;return b.is(":visible")?this:(this.views.attached||this.attach(),c.freeze&&(this._freeze={scrollTop:e(window).scrollTop()}),e("body").addClass("modal-open"),b.show(),"ontouchend"in document&&(a=window.tinymce&&window.tinymce.activeEditor)&&!a.isHidden()&&a.iframeElement&&(a.iframeElement.focus(),a.iframeElement.blur(),setTimeout(function(){a.iframeElement.blur()},100)),this.$el.focus(),this.propagate("open"))},close:function(a){var b=this._freeze;return this.views.attached&&this.$el.is(":visible")?(e("body").removeClass("modal-open"),this.$el.hide().undelegate("keydown"),e("#wpbody-content").focus(),this.propagate("close"),b&&e(window).scrollTop(b.scrollTop),a&&a.escape&&this.propagate("escape"),this):this},escape:function(){return this.close({escape:!0})},escapeHandler:function(a){a.preventDefault(),this.escape()},content:function(a){return this.views.set(".media-modal-content",a),this},propagate:function(a){return this.trigger(a),this.options.propagate&&this.controller.trigger(a),this},keydown:function(a){27===a.which&&this.$el.is(":visible")&&(this.escape(),a.stopImmediatePropagation())}}),b.exports=d},{}],54:[function(a,b,c){var d=wp.media.View.extend({tagName:"div",initialize:function(){this._views={},this.set(_.extend({},this._views,this.options.views),{silent:!0}),delete this.options.views,this.options.silent||this.render()},set:function(a,b,c){var d,e,f;return c=c||{},_.isObject(a)?(_.each(a,function(a,b){this.set(b,a)},this),this):(b instanceof Backbone.View||(b=this.toView(b,a,c)),b.controller=b.controller||this.controller,this.unset(a),d=b.options.priority||10,e=this.views.get()||[],_.find(e,function(a,b){return a.options.priority>d?(f=b,!0):void 0}),this._views[a]=b,this.views.add(b,{at:_.isNumber(f)?f:e.length||0}),this)},get:function(a){return this._views[a]},unset:function(a){var b=this.get(a);return b&&b.remove(),delete this._views[a],this},toView:function(a){return new wp.media.View(a)}});b.exports=d},{}],55:[function(a,b,c){var d=wp.media.view.MenuItem.extend({click:function(){var a=this.options.contentMode;a&&this.controller.content.mode(a)}});b.exports=d},{}],56:[function(a,b,c){var d,e=wp.media.view.Menu;d=e.extend({tagName:"div",className:"media-router",property:"contentMode",ItemView:wp.media.view.RouterItem,region:"router",initialize:function(){this.controller.on("content:render",this.update,this),e.prototype.initialize.apply(this,arguments)},update:function(){var a=this.controller.content.mode();a&&this.select(a)}}),b.exports=d},{}],57:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.View.extend({tagName:"input",className:"search",id:"media-search-input",attributes:{type:"search",placeholder:e.search},events:{input:"search",keyup:"search",change:"search",search:"search"},render:function(){return this.el.value=this.model.escape("search"),this},search:function(a){a.target.value?this.model.set("search",a.target.value):this.model.unset("search")}}),b.exports=d},{}],58:[function(a,b,c){var d,e=wp.media.view.l10n;d=wp.media.View.extend({tagName:"div",className:"media-selection",template:wp.template("media-selection"),events:{"click .edit-selection":"edit","click .clear-selection":"clear"},initialize:function(){_.defaults(this.options,{editable:!1,clearable:!0}),this.attachments=new wp.media.view.Attachments.Selection({controller:this.controller,collection:this.collection,selection:this.collection,model:new Backbone.Model}),this.views.set(".selection-view",this.attachments),this.collection.on("add remove reset",this.refresh,this),this.controller.on("content:activate",this.refresh,this)},ready:function(){this.refresh()},refresh:function(){if(this.$el.children().length){var a=this.collection,b="edit-selection"===this.controller.content.mode();this.$el.toggleClass("empty",!a.length),this.$el.toggleClass("one",1===a.length),this.$el.toggleClass("editing",b),this.$(".count").text(e.selected.replace("%d",a.length))}},edit:function(a){a.preventDefault(),this.options.editable&&this.options.editable.call(this,this.collection)},clear:function(a){a.preventDefault(),this.collection.reset(),this.controller.modal.focusManager.focus()}}),b.exports=d},{}],59:[function(a,b,c){var d,e=wp.media.View,f=Backbone.$;d=e.extend({events:{"click button":"updateHandler","change input":"updateHandler","change select":"updateHandler","change textarea":"updateHandler"},initialize:function(){this.model=this.model||new Backbone.Model,this.listenTo(this.model,"change",this.updateChanges)},prepare:function(){return _.defaults({model:this.model.toJSON()},this.options)},render:function(){return e.prototype.render.apply(this,arguments),_(this.model.attributes).chain().keys().each(this.update,this),this},update:function(a){var b,c,d=this.model.get(a),e=this.$('[data-setting="'+a+'"]');e.length&&(e.is("select")?(c=e.find('[value="'+d+'"]'),c.length?(e.find("option").prop("selected",!1),c.prop("selected",!0)):this.model.set(a,e.find(":selected").val())):e.hasClass("button-group")?(b=e.find("button").removeClass("active"),b.filter('[value="'+d+'"]').addClass("active")):e.is('input[type="text"], textarea')?e.is(":focus")||e.val(d):e.is('input[type="checkbox"]')&&e.prop("checked",!!d&&"false"!==d))},updateHandler:function(a){var b,c=f(a.target).closest("[data-setting]"),d=a.target.value;a.preventDefault(),c.length&&(c.is('input[type="checkbox"]')&&(d=c[0].checked),this.model.set(c.data("setting"),d),(b=c.data("userSetting"))&&window.setUserSetting(b,d))},updateChanges:function(a){a.hasChanged()&&_(a.changed).chain().keys().each(this.update,this)}}),b.exports=d},{}],60:[function(a,b,c){var d,e=wp.media.view.Settings;d=e.extend({className:"attachment-display-settings",template:wp.template("attachment-display-settings"),initialize:function(){var a=this.options.attachment;_.defaults(this.options,{userSettings:!1}),e.prototype.initialize.apply(this,arguments),this.listenTo(this.model,"change:link",this.updateLinkTo),a&&a.on("change:uploading",this.render,this)},dispose:function(){var a=this.options.attachment;a&&a.off(null,null,this),e.prototype.dispose.apply(this,arguments)},render:function(){var a=this.options.attachment;return a&&_.extend(this.options,{sizes:a.get("sizes"),type:a.get("type")}),e.prototype.render.call(this),this.updateLinkTo(),this},updateLinkTo:function(){var a=this.model.get("link"),b=this.$(".link-to-custom"),c=this.options.attachment;return"none"===a||"embed"===a||!c&&"custom"!==a?void b.addClass("hidden"):(c&&("post"===a?b.val(c.get("link")):"file"===a?b.val(c.get("url")):this.model.get("linkUrl")||b.val("http://"),b.prop("readonly","custom"!==a)),b.removeClass("hidden"),void(!wp.media.isTouchDevice&&b.is(":visible")&&b.focus()[0].select()))}}),b.exports=d},{}],61:[function(a,b,c){var d=wp.media.view.Settings.extend({className:"collection-settings gallery-settings",template:wp.template("gallery-settings")});b.exports=d},{}],62:[function(a,b,c){var d=wp.media.view.Settings.extend({className:"collection-settings playlist-settings",template:wp.template("playlist-settings")});b.exports=d},{}],63:[function(a,b,c){var d=wp.media.view.PriorityList.extend({className:"media-sidebar"});b.exports=d},{}],64:[function(a,b,c){var d,e=wp.media.view;d=e.Cropper.extend({className:"crop-content site-icon",ready:function(){e.Cropper.prototype.ready.apply(this,arguments),this.$(".crop-image").on("load",_.bind(this.addSidebar,this))},addSidebar:function(){this.sidebar=new wp.media.view.Sidebar({controller:this.controller}),this.sidebar.set("preview",new wp.media.view.SiteIconPreview({controller:this.controller,attachment:this.options.attachment})),this.controller.cropperView.views.add(this.sidebar)}}),b.exports=d},{}],65:[function(a,b,c){var d,e=wp.media.View,f=jQuery;d=e.extend({className:"site-icon-preview",template:wp.template("site-icon-preview"),ready:function(){this.controller.imgSelect.setOptions({onInit:this.updatePreview,onSelectChange:this.updatePreview})},prepare:function(){return{url:this.options.attachment.get("url")}},updatePreview:function(a,b){var c=64/b.width,d=64/b.height,e=16/b.width,g=16/b.height;f("#preview-app-icon").css({width:Math.round(c*this.imageWidth)+"px",height:Math.round(d*this.imageHeight)+"px",marginLeft:"-"+Math.round(c*b.x1)+"px",marginTop:"-"+Math.round(d*b.y1)+"px"}),f("#preview-favicon").css({width:Math.round(e*this.imageWidth)+"px",height:Math.round(g*this.imageHeight)+"px",marginLeft:"-"+Math.round(e*b.x1)+"px",marginTop:"-"+Math.floor(g*b.y1)+"px"})}}),b.exports=d},{}],66:[function(a,b,c){var d=wp.media.View.extend({tagName:"span",className:"spinner",spinnerTimeout:!1,delay:400,show:function(){return this.spinnerTimeout||(this.spinnerTimeout=_.delay(function(a){a.addClass("is-active")},this.delay,this.$el)),this},hide:function(){return this.$el.removeClass("is-active"),this.spinnerTimeout=clearTimeout(this.spinnerTimeout),this}});b.exports=d},{}],67:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"div",className:"media-toolbar",initialize:function(){var a=this.controller.state(),b=this.selection=a.get("selection"),c=this.library=a.get("library");this._views={},this.primary=new wp.media.view.PriorityList,this.secondary=new wp.media.view.PriorityList,this.primary.$el.addClass("media-toolbar-primary search-form"),this.secondary.$el.addClass("media-toolbar-secondary"),this.views.set([this.secondary,this.primary]),this.options.items&&this.set(this.options.items,{silent:!0}),this.options.silent||this.render(),b&&b.on("add remove reset",this.refresh,this),c&&c.on("add remove reset",this.refresh,this)},dispose:function(){return this.selection&&this.selection.off(null,null,this),this.library&&this.library.off(null,null,this),e.prototype.dispose.apply(this,arguments)},ready:function(){this.refresh()},set:function(a,b,c){var d;return c=c||{},_.isObject(a)?_.each(a,function(a,b){this.set(b,a,{silent:!0})},this):(b instanceof Backbone.View||(b.classes=["media-button-"+a].concat(b.classes||[]),b=new wp.media.view.Button(b).render()),b.controller=b.controller||this.controller,this._views[a]=b,d=b.options.priority<0?"secondary":"primary",this[d].set(a,b,c)),c.silent||this.refresh(),this},get:function(a){return this._views[a]},unset:function(a,b){return delete this._views[a],this.primary.unset(a,b),this.secondary.unset(a,b),b&&b.silent||this.refresh(),this},refresh:function(){var a=this.controller.state(),b=a.get("library"),c=a.get("selection");_.each(this._views,function(a){if(a.model&&a.options&&a.options.requires){var d=a.options.requires,e=!1;e=_.some(c.models,function(a){return a.get("uploading")===!0}),d.selection&&c&&!c.length?e=!0:d.library&&b&&!b.length&&(e=!0),a.model.set("disabled",e)}})}}),b.exports=d},{}],68:[function(a,b,c){var d,e=wp.media.view.Toolbar.Select,f=wp.media.view.l10n;d=e.extend({initialize:function(){_.defaults(this.options,{text:f.insertIntoPost,requires:!1}),e.prototype.initialize.apply(this,arguments)},refresh:function(){var a=this.controller.state().props.get("url");this.get("select").model.set("disabled",!a||"http://"===a),e.prototype.refresh.apply(this,arguments)}}),b.exports=d},{}],69:[function(a,b,c){var d,e=wp.media.view.Toolbar,f=wp.media.view.l10n;d=e.extend({initialize:function(){var a=this.options;_.bindAll(this,"clickSelect"),_.defaults(a,{event:"select",state:!1,reset:!0,close:!0,text:f.select,requires:{selection:!0}}),a.items=_.defaults(a.items||{},{select:{style:"primary",text:a.text,priority:80,click:this.clickSelect,requires:a.requires}}),e.prototype.initialize.apply(this,arguments)},clickSelect:function(){var a=this.options,b=this.controller;a.close&&b.close(),a.event&&b.state().trigger(a.event),a.state&&b.setState(a.state),a.reset&&b.reset()}}),b.exports=d},{}],70:[function(a,b,c){var d,e=wp.media.View,f=wp.media.view.l10n,g=jQuery;d=e.extend({tagName:"div",className:"uploader-editor",template:wp.template("uploader-editor"),localDrag:!1,overContainer:!1,overDropzone:!1,draggingFile:null,initialize:function(){return this.initialized=!1,window.tinyMCEPreInit&&window.tinyMCEPreInit.dragDropUpload&&this.browserSupport()?(this.$document=g(document),this.dropzones=[],this.files=[],this.$document.on("drop",".uploader-editor",_.bind(this.drop,this)),this.$document.on("dragover",".uploader-editor",_.bind(this.dropzoneDragover,this)),this.$document.on("dragleave",".uploader-editor",_.bind(this.dropzoneDragleave,this)),this.$document.on("click",".uploader-editor",_.bind(this.click,this)),this.$document.on("dragover",_.bind(this.containerDragover,this)),
-this.$document.on("dragleave",_.bind(this.containerDragleave,this)),this.$document.on("dragstart dragend drop",_.bind(function(a){this.localDrag="dragstart"===a.type},this)),this.initialized=!0,this):this},browserSupport:function(){var a=!1,b=document.createElement("div");return a="draggable"in b||"ondragstart"in b&&"ondrop"in b,a=a&&!!(window.File&&window.FileList&&window.FileReader)},isDraggingFile:function(a){return null!==this.draggingFile?this.draggingFile:_.isUndefined(a.originalEvent)||_.isUndefined(a.originalEvent.dataTransfer)?!1:(this.draggingFile=_.indexOf(a.originalEvent.dataTransfer.types,"Files")>-1&&-1===_.indexOf(a.originalEvent.dataTransfer.types,"text/plain"),this.draggingFile)},refresh:function(a){var b;for(b in this.dropzones)this.dropzones[b].toggle(this.overContainer||this.overDropzone);return _.isUndefined(a)||g(a.target).closest(".uploader-editor").toggleClass("droppable",this.overDropzone),this.overContainer||this.overDropzone||(this.draggingFile=null),this},render:function(){return this.initialized?(e.prototype.render.apply(this,arguments),g(".wp-editor-wrap").each(_.bind(this.attach,this)),this):this},attach:function(a,b){var c=this.$el.clone();return this.dropzones.push(c),g(b).append(c),this},drop:function(a){var b,c;return this.containerDragleave(a),this.dropzoneDragleave(a),this.files=a.originalEvent.dataTransfer.files,this.files.length<1?void 0:(b=g(a.target).parents(".wp-editor-wrap"),b.length>0&&b[0].id&&(window.wpActiveEditor=b[0].id.slice(3,-5)),this.workflow?(this.workflow.state().reset(),this.addFiles.apply(this),this.workflow.open()):(this.workflow=wp.media.editor.open(window.wpActiveEditor,{frame:"post",state:"insert",title:f.addMedia,multiple:!0}),c=this.workflow.uploader,c.uploader&&c.uploader.ready?this.addFiles.apply(this):this.workflow.on("uploader:ready",this.addFiles,this)),!1)},addFiles:function(){return this.files.length&&(this.workflow.uploader.uploader.uploader.addFile(_.toArray(this.files)),this.files=[]),this},containerDragover:function(a){!this.localDrag&&this.isDraggingFile(a)&&(this.overContainer=!0,this.refresh())},containerDragleave:function(){this.overContainer=!1,_.delay(_.bind(this.refresh,this),50)},dropzoneDragover:function(a){return!this.localDrag&&this.isDraggingFile(a)?(this.overDropzone=!0,this.refresh(a),!1):void 0},dropzoneDragleave:function(a){this.overDropzone=!1,_.delay(_.bind(this.refresh,this,a),50)},click:function(a){this.containerDragleave(a),this.dropzoneDragleave(a),this.localDrag=!1}}),b.exports=d},{}],71:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"div",className:"uploader-inline",template:wp.template("uploader-inline"),events:{"click .close":"hide"},initialize:function(){_.defaults(this.options,{message:"",status:!0,canClose:!1}),!this.options.$browser&&this.controller.uploader&&(this.options.$browser=this.controller.uploader.$browser),_.isUndefined(this.options.postId)&&(this.options.postId=wp.media.view.settings.post.id),this.options.status&&this.views.set(".upload-inline-status",new wp.media.view.UploaderStatus({controller:this.controller}))},prepare:function(){var a=this.controller.state().get("suggestedWidth"),b=this.controller.state().get("suggestedHeight"),c={};return c.message=this.options.message,c.canClose=this.options.canClose,a&&b&&(c.suggestedWidth=a,c.suggestedHeight=b),c},dispose:function(){return this.disposing?e.prototype.dispose.apply(this,arguments):(this.disposing=!0,this.remove())},remove:function(){var a=e.prototype.remove.apply(this,arguments);return _.defer(_.bind(this.refresh,this)),a},refresh:function(){var a=this.controller.uploader;a&&a.refresh()},ready:function(){var a,b=this.options.$browser;if(this.controller.uploader){if(a=this.$(".browser"),a[0]===b[0])return;b.detach().text(a.text()),b[0].className=a[0].className,a.replaceWith(b.show())}return this.refresh(),this},show:function(){this.$el.removeClass("hidden")},hide:function(){this.$el.addClass("hidden")}}),b.exports=d},{}],72:[function(a,b,c){var d=wp.media.View.extend({className:"upload-error",template:wp.template("uploader-status-error")});b.exports=d},{}],73:[function(a,b,c){var d,e=wp.media.View;d=e.extend({className:"media-uploader-status",template:wp.template("uploader-status"),events:{"click .upload-dismiss-errors":"dismiss"},initialize:function(){this.queue=wp.Uploader.queue,this.queue.on("add remove reset",this.visibility,this),this.queue.on("add remove reset change:percent",this.progress,this),this.queue.on("add remove reset change:uploading",this.info,this),this.errors=wp.Uploader.errors,this.errors.reset(),this.errors.on("add remove reset",this.visibility,this),this.errors.on("add",this.error,this)},dispose:function(){return wp.Uploader.queue.off(null,null,this),e.prototype.dispose.apply(this,arguments),this},visibility:function(){this.$el.toggleClass("uploading",!!this.queue.length),this.$el.toggleClass("errors",!!this.errors.length),this.$el.toggle(!!this.queue.length||!!this.errors.length)},ready:function(){_.each({$bar:".media-progress-bar div",$index:".upload-index",$total:".upload-total",$filename:".upload-filename"},function(a,b){this[b]=this.$(a)},this),this.visibility(),this.progress(),this.info()},progress:function(){var a=this.queue,b=this.$bar;b&&a.length&&b.width(a.reduce(function(a,b){if(!b.get("uploading"))return a+100;var c=b.get("percent");return a+(_.isNumber(c)?c:100)},0)/a.length+"%")},info:function(){var a,b=this.queue,c=0;b.length&&(a=this.queue.find(function(a,b){return c=b,a.get("uploading")}),this.$index.text(c+1),this.$total.text(b.length),this.$filename.html(a?this.filename(a.get("filename")):""))},filename:function(a){return _.escape(a)},error:function(a){this.views.add(".upload-errors",new wp.media.view.UploaderStatusError({filename:this.filename(a.get("file").name),message:a.get("message")}),{at:0})},dismiss:function(a){var b=this.views.get(".upload-errors");a.preventDefault(),b&&_.invoke(b,"remove"),wp.Uploader.errors.reset()}}),b.exports=d},{}],74:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"div",className:"uploader-window",template:wp.template("uploader-window"),initialize:function(){var a;this.$browser=e('<a href="#" class="browser" />').hide().appendTo("body"),a=this.options.uploader=_.defaults(this.options.uploader||{},{dropzone:this.$el,browser:this.$browser,params:{}}),!a.dropzone||a.dropzone instanceof e||(a.dropzone=e(a.dropzone)),this.controller.on("activate",this.refresh,this),this.controller.on("detach",function(){this.$browser.remove()},this)},refresh:function(){this.uploader&&this.uploader.refresh()},ready:function(){var a,b=wp.media.view.settings.post.id;this.uploader||(b&&(this.options.uploader.params.post_id=b),this.uploader=new wp.Uploader(this.options.uploader),a=this.uploader.dropzone,a.on("dropzone:enter",_.bind(this.show,this)),a.on("dropzone:leave",_.bind(this.hide,this)),e(this.uploader).on("uploader:ready",_.bind(this._ready,this)))},_ready:function(){this.controller.trigger("uploader:ready")},show:function(){var a=this.$el.show();_.defer(function(){a.css({opacity:1})})},hide:function(){var a=this.$el.css({opacity:0});wp.media.transition(a).done(function(){"0"===a.css("opacity")&&a.hide()}),_.delay(function(){"0"===a.css("opacity")&&a.is(":visible")&&a.hide()},500)}}),b.exports=d},{}],75:[function(a,b,c){var d=wp.Backbone.View.extend({constructor:function(a){a&&a.controller&&(this.controller=a.controller),wp.Backbone.View.apply(this,arguments)},dispose:function(){return this.undelegateEvents(),this.model&&this.model.off&&this.model.off(null,null,this),this.collection&&this.collection.off&&this.collection.off(null,null,this),this.controller&&this.controller.off&&this.controller.off(null,null,this),this},remove:function(){return this.dispose(),wp.Backbone.View.prototype.remove.apply(this,arguments)}});b.exports=d},{}]},{},[19]);
\ No newline at end of file
+this.$document.on("dragleave",_.bind(this.containerDragleave,this)),this.$document.on("dragstart dragend drop",_.bind(function(a){this.localDrag="dragstart"===a.type,"drop"===a.type&&this.containerDragleave()},this)),this.initialized=!0,this):this},browserSupport:function(){var a=!1,b=document.createElement("div");return a="draggable"in b||"ondragstart"in b&&"ondrop"in b,a=a&&!!(window.File&&window.FileList&&window.FileReader)},isDraggingFile:function(a){return null!==this.draggingFile?this.draggingFile:_.isUndefined(a.originalEvent)||_.isUndefined(a.originalEvent.dataTransfer)?!1:(this.draggingFile=_.indexOf(a.originalEvent.dataTransfer.types,"Files")>-1&&-1===_.indexOf(a.originalEvent.dataTransfer.types,"text/plain"),this.draggingFile)},refresh:function(a){var b;for(b in this.dropzones)this.dropzones[b].toggle(this.overContainer||this.overDropzone);return _.isUndefined(a)||g(a.target).closest(".uploader-editor").toggleClass("droppable",this.overDropzone),this.overContainer||this.overDropzone||(this.draggingFile=null),this},render:function(){return this.initialized?(e.prototype.render.apply(this,arguments),g(".wp-editor-wrap").each(_.bind(this.attach,this)),this):this},attach:function(a,b){var c=this.$el.clone();return this.dropzones.push(c),g(b).append(c),this},drop:function(a){var b,c;return this.containerDragleave(a),this.dropzoneDragleave(a),this.files=a.originalEvent.dataTransfer.files,this.files.length<1?void 0:(b=g(a.target).parents(".wp-editor-wrap"),b.length>0&&b[0].id&&(window.wpActiveEditor=b[0].id.slice(3,-5)),this.workflow?(this.workflow.state().reset(),this.addFiles.apply(this),this.workflow.open()):(this.workflow=wp.media.editor.open(window.wpActiveEditor,{frame:"post",state:"insert",title:f.addMedia,multiple:!0}),c=this.workflow.uploader,c.uploader&&c.uploader.ready?this.addFiles.apply(this):this.workflow.on("uploader:ready",this.addFiles,this)),!1)},addFiles:function(){return this.files.length&&(this.workflow.uploader.uploader.uploader.addFile(_.toArray(this.files)),this.files=[]),this},containerDragover:function(a){!this.localDrag&&this.isDraggingFile(a)&&(this.overContainer=!0,this.refresh())},containerDragleave:function(){this.overContainer=!1,_.delay(_.bind(this.refresh,this),50)},dropzoneDragover:function(a){return!this.localDrag&&this.isDraggingFile(a)?(this.overDropzone=!0,this.refresh(a),!1):void 0},dropzoneDragleave:function(a){this.overDropzone=!1,_.delay(_.bind(this.refresh,this,a),50)},click:function(a){this.containerDragleave(a),this.dropzoneDragleave(a),this.localDrag=!1}}),b.exports=d},{}],71:[function(a,b,c){var d,e=wp.media.View;d=e.extend({tagName:"div",className:"uploader-inline",template:wp.template("uploader-inline"),events:{"click .close":"hide"},initialize:function(){_.defaults(this.options,{message:"",status:!0,canClose:!1}),!this.options.$browser&&this.controller.uploader&&(this.options.$browser=this.controller.uploader.$browser),_.isUndefined(this.options.postId)&&(this.options.postId=wp.media.view.settings.post.id),this.options.status&&this.views.set(".upload-inline-status",new wp.media.view.UploaderStatus({controller:this.controller}))},prepare:function(){var a=this.controller.state().get("suggestedWidth"),b=this.controller.state().get("suggestedHeight"),c={};return c.message=this.options.message,c.canClose=this.options.canClose,a&&b&&(c.suggestedWidth=a,c.suggestedHeight=b),c},dispose:function(){return this.disposing?e.prototype.dispose.apply(this,arguments):(this.disposing=!0,this.remove())},remove:function(){var a=e.prototype.remove.apply(this,arguments);return _.defer(_.bind(this.refresh,this)),a},refresh:function(){var a=this.controller.uploader;a&&a.refresh()},ready:function(){var a,b=this.options.$browser;if(this.controller.uploader){if(a=this.$(".browser"),a[0]===b[0])return;b.detach().text(a.text()),b[0].className=a[0].className,a.replaceWith(b.show())}return this.refresh(),this},show:function(){this.$el.removeClass("hidden")},hide:function(){this.$el.addClass("hidden")}}),b.exports=d},{}],72:[function(a,b,c){var d=wp.media.View.extend({className:"upload-error",template:wp.template("uploader-status-error")});b.exports=d},{}],73:[function(a,b,c){var d,e=wp.media.View;d=e.extend({className:"media-uploader-status",template:wp.template("uploader-status"),events:{"click .upload-dismiss-errors":"dismiss"},initialize:function(){this.queue=wp.Uploader.queue,this.queue.on("add remove reset",this.visibility,this),this.queue.on("add remove reset change:percent",this.progress,this),this.queue.on("add remove reset change:uploading",this.info,this),this.errors=wp.Uploader.errors,this.errors.reset(),this.errors.on("add remove reset",this.visibility,this),this.errors.on("add",this.error,this)},dispose:function(){return wp.Uploader.queue.off(null,null,this),e.prototype.dispose.apply(this,arguments),this},visibility:function(){this.$el.toggleClass("uploading",!!this.queue.length),this.$el.toggleClass("errors",!!this.errors.length),this.$el.toggle(!!this.queue.length||!!this.errors.length)},ready:function(){_.each({$bar:".media-progress-bar div",$index:".upload-index",$total:".upload-total",$filename:".upload-filename"},function(a,b){this[b]=this.$(a)},this),this.visibility(),this.progress(),this.info()},progress:function(){var a=this.queue,b=this.$bar;b&&a.length&&b.width(a.reduce(function(a,b){if(!b.get("uploading"))return a+100;var c=b.get("percent");return a+(_.isNumber(c)?c:100)},0)/a.length+"%")},info:function(){var a,b=this.queue,c=0;b.length&&(a=this.queue.find(function(a,b){return c=b,a.get("uploading")}),this.$index.text(c+1),this.$total.text(b.length),this.$filename.html(a?this.filename(a.get("filename")):""))},filename:function(a){return _.escape(a)},error:function(a){this.views.add(".upload-errors",new wp.media.view.UploaderStatusError({filename:this.filename(a.get("file").name),message:a.get("message")}),{at:0})},dismiss:function(a){var b=this.views.get(".upload-errors");a.preventDefault(),b&&_.invoke(b,"remove"),wp.Uploader.errors.reset()}}),b.exports=d},{}],74:[function(a,b,c){var d,e=jQuery;d=wp.media.View.extend({tagName:"div",className:"uploader-window",template:wp.template("uploader-window"),initialize:function(){var a;this.$browser=e('<a href="#" class="browser" />').hide().appendTo("body"),a=this.options.uploader=_.defaults(this.options.uploader||{},{dropzone:this.$el,browser:this.$browser,params:{}}),!a.dropzone||a.dropzone instanceof e||(a.dropzone=e(a.dropzone)),this.controller.on("activate",this.refresh,this),this.controller.on("detach",function(){this.$browser.remove()},this)},refresh:function(){this.uploader&&this.uploader.refresh()},ready:function(){var a,b=wp.media.view.settings.post.id;this.uploader||(b&&(this.options.uploader.params.post_id=b),this.uploader=new wp.Uploader(this.options.uploader),a=this.uploader.dropzone,a.on("dropzone:enter",_.bind(this.show,this)),a.on("dropzone:leave",_.bind(this.hide,this)),e(this.uploader).on("uploader:ready",_.bind(this._ready,this)))},_ready:function(){this.controller.trigger("uploader:ready")},show:function(){var a=this.$el.show();_.defer(function(){a.css({opacity:1})})},hide:function(){var a=this.$el.css({opacity:0});wp.media.transition(a).done(function(){"0"===a.css("opacity")&&a.hide()}),_.delay(function(){"0"===a.css("opacity")&&a.is(":visible")&&a.hide()},500)}}),b.exports=d},{}],75:[function(a,b,c){var d=wp.Backbone.View.extend({constructor:function(a){a&&a.controller&&(this.controller=a.controller),wp.Backbone.View.apply(this,arguments)},dispose:function(){return this.undelegateEvents(),this.model&&this.model.off&&this.model.off(null,null,this),this.collection&&this.collection.off&&this.collection.off(null,null,this),this.controller&&this.controller.off&&this.controller.off(null,null,this),this},remove:function(){return this.dispose(),wp.Backbone.View.prototype.remove.apply(this,arguments)}});b.exports=d},{}]},{},[19]);
\ No newline at end of file
index cae6814884fd075b73118adde47d0dbe0bbbcc9b..2b7817005d90d5b2357616d7dd210c14819d2178 100644 (file)
@@ -1 +1,14 @@
-<?xml version="1.0" standalone="no"?>\r<svg id="bigplay" viewBox="0 0 100 200" style="background-color:#ffffff00" version="1.1"\r        xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"\r     x="0px" y="0px" width="100px" height="200px"\r>\r <g id="dark">\r          <path id="Polygon"  d="M 72.5 49.5 L 38.75 68.9856 L 38.75 30.0144 L 72.5 49.5 Z" fill="#ffffff" opacity="0.75" />\r             <path id="Ellipse" d="M 13 50.5 C 13 29.7891 29.7891 13 50.5 13 C 71.2109 13 88 29.7891 88 50.5 C 88 71.2109 71.2109 88 50.5 88 C 29.7891 88 13 71.2109 13 50.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="0.75"/>\r      </g>\r   <g id="light">\r         <path id="Polygon2"  d="M 72.5 149.5 L 38.75 168.9856 L 38.75 130.0144 L 72.5 149.5 Z" fill="#ffffff" opacity="1.0" />\r         <path id="Ellipse2" d="M 13 150.5 C 13 129.7891 29.7891 113 50.5 113 C 71.2109 113 88 129.7891 88 150.5 C 88 171.211 71.2109 188 50.5 188 C 29.7891 188 13 171.211 13 150.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="1.0"/>\r   </g>\r</svg>
\ No newline at end of file
+<?xml version="1.0" standalone="no"?>
+<svg id="bigplay" viewBox="0 0 100 200" style="background-color:#ffffff00" version="1.1"
+       xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve"
+       x="0px" y="0px" width="100px" height="200px"
+>
+       <g id="dark">
+               <path id="Polygon"  d="M 72.5 49.5 L 38.75 68.9856 L 38.75 30.0144 L 72.5 49.5 Z" fill="#ffffff" opacity="0.75" />
+               <path id="Ellipse" d="M 13 50.5 C 13 29.7891 29.7891 13 50.5 13 C 71.2109 13 88 29.7891 88 50.5 C 88 71.2109 71.2109 88 50.5 88 C 29.7891 88 13 71.2109 13 50.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="0.75"/>
+       </g>
+       <g id="light">
+               <path id="Polygon2"  d="M 72.5 149.5 L 38.75 168.9856 L 38.75 130.0144 L 72.5 149.5 Z" fill="#ffffff" opacity="1.0" />
+               <path id="Ellipse2" d="M 13 150.5 C 13 129.7891 29.7891 113 50.5 113 C 71.2109 113 88 129.7891 88 150.5 C 88 171.211 71.2109 188 50.5 188 C 29.7891 188 13 171.211 13 150.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="1.0"/>
+       </g>
+</svg>
\ No newline at end of file
index 0b81b4fa2af47afbb031fb8a795551558710e808..b74fd785dacc40b48ce22e18736defdec1cbe066 100644 (file)
Binary files a/wp-includes/js/mediaelement/flashmediaelement.swf and b/wp-includes/js/mediaelement/flashmediaelement.swf differ
diff --git a/wp-includes/js/mediaelement/jumpforward.png b/wp-includes/js/mediaelement/jumpforward.png
new file mode 100644 (file)
index 0000000..64d0384
Binary files /dev/null and b/wp-includes/js/mediaelement/jumpforward.png differ
index fddc734b344006616b7612fa370dc03c941b8fe4..3c6e38006d7125431054a4241fa711409f2e857c 100644 (file)
@@ -12,7 +12,7 @@
  * License: MIT
  *
  */
-function onYouTubePlayerAPIReady(){mejs.YouTubeApi.iFrameReady()}function onYouTubePlayerReady(a){mejs.YouTubeApi.flashReady(a)}var mejs=mejs||{};mejs.version="2.17.0",mejs.meIndex=0,mejs.plugins={silverlight:[{version:[3,0],types:["video/mp4","video/m4v","video/mov","video/wmv","audio/wma","audio/m4a","audio/mp3","audio/wav","audio/mpeg"]}],flash:[{version:[9,0,124],types:["video/mp4","video/m4v","video/mov","video/flv","video/rtmp","video/x-flv","audio/flv","audio/x-flv","audio/mp3","audio/m4a","audio/mpeg","video/youtube","video/x-youtube","video/dailymotion","video/x-dailymotion","application/x-mpegURL"]}],youtube:[{version:null,types:["video/youtube","video/x-youtube","audio/youtube","audio/x-youtube"]}],vimeo:[{version:null,types:["video/vimeo","video/x-vimeo"]}]},mejs.Utility={encodeUrl:function(a){return encodeURIComponent(a)},escapeHTML:function(a){return a.toString().split("&").join("&amp;").split("<").join("&lt;").split('"').join("&quot;")},absolutizeUrl:function(a){var b=document.createElement("div");return b.innerHTML='<a href="'+this.escapeHTML(a)+'">x</a>',b.firstChild.href},getScriptPath:function(a){for(var b,c,d,e,f,g,h=0,i="",j="",k=document.getElementsByTagName("script"),l=k.length,m=a.length;l>h;h++){for(e=k[h].src,c=e.lastIndexOf("/"),c>-1?(g=e.substring(c+1),f=e.substring(0,c+1)):(g=e,f=""),b=0;m>b;b++)if(j=a[b],d=g.indexOf(j),d>-1){i=f;break}if(""!==i)break}return i},secondsToTimeCode:function(a,b,c,d){"undefined"==typeof c?c=!1:"undefined"==typeof d&&(d=25);var e=Math.floor(a/3600)%24,f=Math.floor(a/60)%60,g=Math.floor(a%60),h=Math.floor((a%1*d).toFixed(3)),i=(b||e>0?(10>e?"0"+e:e)+":":"")+(10>f?"0"+f:f)+":"+(10>g?"0"+g:g)+(c?":"+(10>h?"0"+h:h):"");return i},timeCodeToSeconds:function(a,b,c,d){"undefined"==typeof c?c=!1:"undefined"==typeof d&&(d=25);var e=a.split(":"),f=parseInt(e[0],10),g=parseInt(e[1],10),h=parseInt(e[2],10),i=0,j=0;return c&&(i=parseInt(e[3])/d),j=3600*f+60*g+h+i},convertSMPTEtoSeconds:function(a){if("string"!=typeof a)return!1;a=a.replace(",",".");var b=0,c=-1!=a.indexOf(".")?a.split(".")[1].length:0,d=1;a=a.split(":").reverse();for(var e=0;e<a.length;e++)d=1,e>0&&(d=Math.pow(60,e)),b+=Number(a[e])*d;return Number(b.toFixed(c))},removeSwf:function(a){var b=document.getElementById(a);b&&/object|embed/i.test(b.nodeName)&&(mejs.MediaFeatures.isIE?(b.style.display="none",function(){4==b.readyState?mejs.Utility.removeObjectInIE(a):setTimeout(arguments.callee,10)}()):b.parentNode.removeChild(b))},removeObjectInIE:function(a){var b=document.getElementById(a);if(b){for(var c in b)"function"==typeof b[c]&&(b[c]=null);b.parentNode.removeChild(b)}}},mejs.PluginDetector={hasPluginVersion:function(a,b){var c=this.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]==b[0]&&c[1]>b[1]||c[0]==b[0]&&c[1]==b[1]&&c[2]>=b[2]?!0:!1},nav:window.navigator,ua:window.navigator.userAgent.toLowerCase(),plugins:[],addPlugin:function(a,b,c,d,e){this.plugins[a]=this.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var e,f,g,h=[0,0,0];if("undefined"!=typeof this.nav.plugins&&"object"==typeof this.nav.plugins[a]){if(e=this.nav.plugins[a].description,e&&("undefined"==typeof this.nav.mimeTypes||!this.nav.mimeTypes[b]||this.nav.mimeTypes[b].enabledPlugin))for(h=e.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split("."),f=0;f<h.length;f++)h[f]=parseInt(h[f].match(/\d+/),10)}else if("undefined"!=typeof window.ActiveXObject)try{g=new ActiveXObject(c),g&&(h=d(g))}catch(i){}return h}},mejs.PluginDetector.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b}),mejs.PluginDetector.addPlugin("silverlight","Silverlight Plug-In","application/x-silverlight-2","AgControl.AgControl",function(a){var b=[0,0,0,0],c=function(a,b,c,d){for(;a.isVersionSupported(b[0]+"."+b[1]+"."+b[2]+"."+b[3]);)b[c]+=d;b[c]-=d};return c(a,b,0,1),c(a,b,1,1),c(a,b,2,1e4),c(a,b,2,1e3),c(a,b,2,100),c(a,b,2,10),c(a,b,2,1),c(a,b,3,1),b}),mejs.MediaFeatures={init:function(){var a,b,c=this,d=document,e=mejs.PluginDetector.nav,f=mejs.PluginDetector.ua.toLowerCase(),g=["source","track","audio","video"];c.isiPad=null!==f.match(/ipad/i),c.isiPhone=null!==f.match(/iphone/i),c.isiOS=c.isiPhone||c.isiPad,c.isAndroid=null!==f.match(/android/i),c.isBustedAndroid=null!==f.match(/android 2\.[12]/),c.isBustedNativeHTTPS="https:"===location.protocol&&(null!==f.match(/android [12]\./)||null!==f.match(/macintosh.* version.* safari/)),c.isIE=-1!=e.appName.toLowerCase().indexOf("microsoft")||null!==e.appName.toLowerCase().match(/trident/gi),c.isChrome=null!==f.match(/chrome/gi),c.isChromium=null!==f.match(/chromium/gi),c.isFirefox=null!==f.match(/firefox/gi),c.isWebkit=null!==f.match(/webkit/gi),c.isGecko=null!==f.match(/gecko/gi)&&!c.isWebkit&&!c.isIE,c.isOpera=null!==f.match(/opera/gi),c.hasTouch="ontouchstart"in window,c.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;for(a=0;a<g.length;a++)b=document.createElement(g[a]);c.supportsMediaTag="undefined"!=typeof b.canPlayType||c.isBustedAndroid;try{b.canPlayType("video/mp4")}catch(h){c.supportsMediaTag=!1}c.hasSemiNativeFullScreen="undefined"!=typeof b.webkitEnterFullscreen,c.hasNativeFullscreen="undefined"!=typeof b.requestFullscreen,c.hasWebkitNativeFullScreen="undefined"!=typeof b.webkitRequestFullScreen,c.hasMozNativeFullScreen="undefined"!=typeof b.mozRequestFullScreen,c.hasMsNativeFullScreen="undefined"!=typeof b.msRequestFullscreen,c.hasTrueNativeFullScreen=c.hasWebkitNativeFullScreen||c.hasMozNativeFullScreen||c.hasMsNativeFullScreen,c.nativeFullScreenEnabled=c.hasTrueNativeFullScreen,c.hasMozNativeFullScreen?c.nativeFullScreenEnabled=document.mozFullScreenEnabled:c.hasMsNativeFullScreen&&(c.nativeFullScreenEnabled=document.msFullscreenEnabled),c.isChrome&&(c.hasSemiNativeFullScreen=!1),c.hasTrueNativeFullScreen&&(c.fullScreenEventName="",c.hasWebkitNativeFullScreen?c.fullScreenEventName="webkitfullscreenchange":c.hasMozNativeFullScreen?c.fullScreenEventName="mozfullscreenchange":c.hasMsNativeFullScreen&&(c.fullScreenEventName="MSFullscreenChange"),c.isFullScreen=function(){return c.hasMozNativeFullScreen?d.mozFullScreen:c.hasWebkitNativeFullScreen?d.webkitIsFullScreen:c.hasMsNativeFullScreen?null!==d.msFullscreenElement:void 0},c.requestFullScreen=function(a){c.hasWebkitNativeFullScreen?a.webkitRequestFullScreen():c.hasMozNativeFullScreen?a.mozRequestFullScreen():c.hasMsNativeFullScreen&&a.msRequestFullscreen()},c.cancelFullScreen=function(){c.hasWebkitNativeFullScreen?document.webkitCancelFullScreen():c.hasMozNativeFullScreen?document.mozCancelFullScreen():c.hasMsNativeFullScreen&&document.msExitFullscreen()}),c.hasSemiNativeFullScreen&&f.match(/mac os x 10_5/i)&&(c.hasNativeFullScreen=!1,c.hasSemiNativeFullScreen=!1)}},mejs.MediaFeatures.init(),mejs.HtmlMediaElement={pluginType:"native",isFullScreen:!1,setCurrentTime:function(a){this.currentTime=a},setMuted:function(a){this.muted=a},setVolume:function(a){this.volume=a},stop:function(){this.pause()},setSrc:function(a){for(var b=this.getElementsByTagName("source");b.length>0;)this.removeChild(b[0]);if("string"==typeof a)this.src=a;else{var c,d;for(c=0;c<a.length;c++)if(d=a[c],this.canPlayType(d.type)){this.src=d.src;break}}},setVideoSize:function(a,b){this.width=a,this.height=b}},mejs.PluginMediaElement=function(a,b,c){this.id=a,this.pluginType=b,this.src=c,this.events={},this.attributes={}},mejs.PluginMediaElement.prototype={pluginElement:null,pluginType:"",isFullScreen:!1,playbackRate:-1,defaultPlaybackRate:-1,seekable:[],played:[],paused:!0,ended:!1,seeking:!1,duration:0,error:null,tagName:"",muted:!1,volume:1,currentTime:0,play:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.playVideo():this.pluginApi.playMedia(),this.paused=!1)},load:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType||this.pluginApi.loadMedia(),this.paused=!1)},pause:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.pauseVideo():this.pluginApi.pauseMedia(),this.paused=!0)},stop:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.stopVideo():this.pluginApi.stopMedia(),this.paused=!0)},canPlayType:function(a){var b,c,d,e=mejs.plugins[this.pluginType];for(b=0;b<e.length;b++)if(d=e[b],mejs.PluginDetector.hasPluginVersion(this.pluginType,d.version))for(c=0;c<d.types.length;c++)if(a==d.types[c])return"probably";return""},positionFullscreenButton:function(a,b,c){null!=this.pluginApi&&this.pluginApi.positionFullscreenButton&&this.pluginApi.positionFullscreenButton(Math.floor(a),Math.floor(b),c)},hideFullscreenButton:function(){null!=this.pluginApi&&this.pluginApi.hideFullscreenButton&&this.pluginApi.hideFullscreenButton()},setSrc:function(a){if("string"==typeof a)this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(a)),this.src=mejs.Utility.absolutizeUrl(a);else{var b,c;for(b=0;b<a.length;b++)if(c=a[b],this.canPlayType(c.type)){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(c.src)),this.src=mejs.Utility.absolutizeUrl(a);break}}},setCurrentTime:function(a){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.seekTo(a):this.pluginApi.setCurrentTime(a),this.currentTime=a)},setVolume:function(a){null!=this.pluginApi&&(this.pluginApi.setVolume("youtube"==this.pluginType?100*a:a),this.volume=a)},setMuted:function(a){null!=this.pluginApi&&("youtube"==this.pluginType?(a?this.pluginApi.mute():this.pluginApi.unMute(),this.muted=a,this.dispatchEvent("volumechange")):this.pluginApi.setMuted(a),this.muted=a)},setVideoSize:function(a,b){this.pluginElement&&this.pluginElement.style&&(this.pluginElement.style.width=a+"px",this.pluginElement.style.height=b+"px"),null!=this.pluginApi&&this.pluginApi.setVideoSize&&this.pluginApi.setVideoSize(a,b)},setFullscreen:function(a){null!=this.pluginApi&&this.pluginApi.setFullscreen&&this.pluginApi.setFullscreen(a)},enterFullScreen:function(){null!=this.pluginApi&&this.pluginApi.setFullscreen&&this.setFullscreen(!0)},exitFullScreen:function(){null!=this.pluginApi&&this.pluginApi.setFullscreen&&this.setFullscreen(!1)},addEventListener:function(a,b){this.events[a]=this.events[a]||[],this.events[a].push(b)},removeEventListener:function(a,b){if(!a)return this.events={},!0;var c=this.events[a];if(!c)return!0;if(!b)return this.events[a]=[],!0;for(var d=0;d<c.length;d++)if(c[d]===b)return this.events[a].splice(d,1),!0;return!1},dispatchEvent:function(a){var b,c,d=this.events[a];if(d)for(c=Array.prototype.slice.call(arguments,1),b=0;b<d.length;b++)d[b].apply(this,c)},hasAttribute:function(a){return a in this.attributes},removeAttribute:function(a){delete this.attributes[a]},getAttribute:function(a){return this.hasAttribute(a)?this.attributes[a]:""},setAttribute:function(a,b){this.attributes[a]=b},remove:function(){mejs.Utility.removeSwf(this.pluginElement.id),mejs.MediaPluginBridge.unregisterPluginElement(this.pluginElement.id)}},mejs.MediaPluginBridge={pluginMediaElements:{},htmlMediaElements:{},registerPluginElement:function(a,b,c){this.pluginMediaElements[a]=b,this.htmlMediaElements[a]=c},unregisterPluginElement:function(a){delete this.pluginMediaElements[a],delete this.htmlMediaElements[a]},initPlugin:function(a){var b=this.pluginMediaElements[a],c=this.htmlMediaElements[a];if(b){switch(b.pluginType){case"flash":b.pluginElement=b.pluginApi=document.getElementById(a);break;case"silverlight":b.pluginElement=document.getElementById(b.id),b.pluginApi=b.pluginElement.Content.MediaElementJS}null!=b.pluginApi&&b.success&&b.success(b,c)}},fireEvent:function(a,b,c){var d,e,f,g=this.pluginMediaElements[a];if(g){d={type:b,target:g};for(e in c)g[e]=c[e],d[e]=c[e];f=c.bufferedTime||0,d.target.buffered=d.buffered={start:function(){return 0},end:function(){return f},length:1},g.dispatchEvent(d.type,d)}}},mejs.MediaElementDefaults={mode:"auto",plugins:["flash","silverlight","youtube","vimeo"],enablePluginDebug:!1,httpsBasicAuthSite:!1,type:"",pluginPath:mejs.Utility.getScriptPath(["mediaelement.js","mediaelement.min.js","mediaelement-and-player.js","mediaelement-and-player.min.js"]),flashName:"flashmediaelement.swf",flashStreamer:"",enablePluginSmoothing:!1,enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",silverlightName:"silverlightmediaelement.xap",defaultVideoWidth:480,defaultVideoHeight:270,pluginWidth:-1,pluginHeight:-1,pluginVars:[],timerRate:250,startVolume:.8,success:function(){},error:function(){}},mejs.MediaElement=function(a,b){return mejs.HtmlMediaElementShim.create(a,b)},mejs.HtmlMediaElementShim={create:function(a,b){var c,d,e=mejs.MediaElementDefaults,f="string"==typeof a?document.getElementById(a):a,g=f.tagName.toLowerCase(),h="audio"===g||"video"===g,i=f.getAttribute(h?"src":"href"),j=f.getAttribute("poster"),k=f.getAttribute("autoplay"),l=f.getAttribute("preload"),m=f.getAttribute("controls");for(d in b)e[d]=b[d];return i="undefined"==typeof i||null===i||""==i?null:i,j="undefined"==typeof j||null===j?"":j,l="undefined"==typeof l||null===l||"false"===l?"none":l,k=!("undefined"==typeof k||null===k||"false"===k),m=!("undefined"==typeof m||null===m||"false"===m),c=this.determinePlayback(f,e,mejs.MediaFeatures.supportsMediaTag,h,i),c.url=null!==c.url?mejs.Utility.absolutizeUrl(c.url):"","native"==c.method?(mejs.MediaFeatures.isBustedAndroid&&(f.src=c.url,f.addEventListener("click",function(){f.play()},!1)),this.updateNative(c,e,k,l)):""!==c.method?this.createPlugin(c,e,j,k,l,m):(this.createErrorMessage(c,e,j),this)},determinePlayback:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=[],r={method:"",url:"",htmlMediaElement:a,isVideo:"audio"!=a.tagName.toLowerCase()};if("undefined"!=typeof b.type&&""!==b.type)if("string"==typeof b.type)q.push({type:b.type,url:e});else for(f=0;f<b.type.length;f++)q.push({type:b.type[f],url:e});else if(null!==e)k=this.formatType(e,a.getAttribute("type")),q.push({type:k,url:e});else for(f=0;f<a.childNodes.length;f++)j=a.childNodes[f],1==j.nodeType&&"source"==j.tagName.toLowerCase()&&(e=j.getAttribute("src"),k=this.formatType(e,j.getAttribute("type")),p=j.getAttribute("media"),(!p||!window.matchMedia||window.matchMedia&&window.matchMedia(p).matches)&&q.push({type:k,url:e}));if(!d&&q.length>0&&null!==q[0].url&&this.getTypeFromFile(q[0].url).indexOf("audio")>-1&&(r.isVideo=!1),mejs.MediaFeatures.isBustedAndroid&&(a.canPlayType=function(a){return null!==a.match(/video\/(mp4|m4v)/gi)?"maybe":""}),!(!c||"auto"!==b.mode&&"auto_plugin"!==b.mode&&"native"!==b.mode||mejs.MediaFeatures.isBustedNativeHTTPS&&b.httpsBasicAuthSite===!0)){for(d||(o=document.createElement(r.isVideo?"video":"audio"),a.parentNode.insertBefore(o,a),a.style.display="none",r.htmlMediaElement=a=o),f=0;f<q.length;f++)if("video/m3u8"==q[f].type||""!==a.canPlayType(q[f].type).replace(/no/,"")||""!==a.canPlayType(q[f].type.replace(/mp3/,"mpeg")).replace(/no/,"")||""!==a.canPlayType(q[f].type.replace(/m4a/,"mp4")).replace(/no/,"")){r.method="native",r.url=q[f].url;break}if("native"===r.method&&(null!==r.url&&(a.src=r.url),"auto_plugin"!==b.mode))return r}if("auto"===b.mode||"auto_plugin"===b.mode||"shim"===b.mode)for(f=0;f<q.length;f++)for(k=q[f].type,g=0;g<b.plugins.length;g++)for(l=b.plugins[g],m=mejs.plugins[l],h=0;h<m.length;h++)if(n=m[h],null==n.version||mejs.PluginDetector.hasPluginVersion(l,n.version))for(i=0;i<n.types.length;i++)if(k==n.types[i])return r.method=l,r.url=q[f].url,r;return"auto_plugin"===b.mode&&"native"===r.method?r:(""===r.method&&q.length>0&&(r.url=q[0].url),r)},formatType:function(a,b){return a&&!b?this.getTypeFromFile(a):b&&~b.indexOf(";")?b.substr(0,b.indexOf(";")):b},getTypeFromFile:function(a){a=a.split("?")[0];var b=a.substring(a.lastIndexOf(".")+1).toLowerCase();return(/(mp4|m4v|ogg|ogv|m3u8|webm|webmv|flv|wmv|mpeg|mov)/gi.test(b)?"video":"audio")+"/"+this.getTypeFromExtension(b)},getTypeFromExtension:function(a){switch(a){case"mp4":case"m4v":case"m4a":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return a}},createErrorMessage:function(a,b,c){var d=a.htmlMediaElement,e=document.createElement("div");e.className="me-cannotplay";try{e.style.width=d.width+"px",e.style.height=d.height+"px"}catch(f){}e.innerHTML=b.customError?b.customError:""!==c?'<a href="'+a.url+'"><img src="'+c+'" width="100%" height="100%" /></a>':'<a href="'+a.url+'"><span>'+mejs.i18n.t("Download File")+"</span></a>",d.parentNode.insertBefore(e,d),d.style.display="none",b.error(d)},createPlugin:function(a,b,c,d,e,f){var g,h,i,j=a.htmlMediaElement,k=1,l=1,m="me_"+a.method+"_"+mejs.meIndex++,n=new mejs.PluginMediaElement(m,a.method,a.url),o=document.createElement("div");n.tagName=j.tagName;for(var p=0;p<j.attributes.length;p++){var q=j.attributes[p];1==q.specified&&n.setAttribute(q.name,q.value)}for(h=j.parentNode;null!==h&&null!=h.tagName&&"body"!==h.tagName.toLowerCase()&&null!=h.parentNode&&null!=h.parentNode.tagName&&null!=h.parentNode.constructor&&"ShadowRoot"===h.parentNode.constructor.name;){if("p"===h.parentNode.tagName.toLowerCase()){h.parentNode.parentNode.insertBefore(h,h.parentNode);break}h=h.parentNode}switch(a.isVideo?(k=b.pluginWidth>0?b.pluginWidth:b.videoWidth>0?b.videoWidth:null!==j.getAttribute("width")?j.getAttribute("width"):b.defaultVideoWidth,l=b.pluginHeight>0?b.pluginHeight:b.videoHeight>0?b.videoHeight:null!==j.getAttribute("height")?j.getAttribute("height"):b.defaultVideoHeight,k=mejs.Utility.encodeUrl(k),l=mejs.Utility.encodeUrl(l)):b.enablePluginDebug&&(k=320,l=240),n.success=b.success,mejs.MediaPluginBridge.registerPluginElement(m,n,j),o.className="me-plugin",o.id=m+"_container",a.isVideo?j.parentNode.insertBefore(o,j):document.body.insertBefore(o,document.body.childNodes[0]),i=["id="+m,"jsinitfunction=mejs.MediaPluginBridge.initPlugin","jscallbackfunction=mejs.MediaPluginBridge.fireEvent","isvideo="+(a.isVideo?"true":"false"),"autoplay="+(d?"true":"false"),"preload="+e,"width="+k,"startvolume="+b.startVolume,"timerrate="+b.timerRate,"flashstreamer="+b.flashStreamer,"height="+l,"pseudostreamstart="+b.pseudoStreamingStartQueryParam],null!==a.url&&i.push("flash"==a.method?"file="+mejs.Utility.encodeUrl(a.url):"file="+a.url),b.enablePluginDebug&&i.push("debug=true"),b.enablePluginSmoothing&&i.push("smoothing=true"),b.enablePseudoStreaming&&i.push("pseudostreaming=true"),f&&i.push("controls=true"),b.pluginVars&&(i=i.concat(b.pluginVars)),a.method){case"silverlight":o.innerHTML='<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="'+m+'" name="'+m+'" width="'+k+'" height="'+l+'" class="mejs-shim"><param name="initParams" value="'+i.join(",")+'" /><param name="windowless" value="true" /><param name="background" value="black" /><param name="minRuntimeVersion" value="3.0.0.0" /><param name="autoUpgrade" value="true" /><param name="source" value="'+b.pluginPath+b.silverlightName+'" /></object>';break;case"flash":mejs.MediaFeatures.isIE?(g=document.createElement("div"),o.appendChild(g),g.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+m+'" width="'+k+'" height="'+l+'" class="mejs-shim"><param name="movie" value="'+b.pluginPath+b.flashName+"?x="+new Date+'" /><param name="flashvars" value="'+i.join("&amp;")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="scale" value="default" /></object>'):o.innerHTML='<embed id="'+m+'" name="'+m+'" play="true" loop="false" quality="high" bgcolor="#000000" wmode="transparent" allowScriptAccess="always" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" src="'+b.pluginPath+b.flashName+'" flashvars="'+i.join("&")+'" width="'+k+'" height="'+l+'" scale="default"class="mejs-shim"></embed>';break;case"youtube":var r;-1!=a.url.lastIndexOf("youtu.be")?(r=a.url.substr(a.url.lastIndexOf("/")+1),-1!=r.indexOf("?")&&(r=r.substr(0,r.indexOf("?")))):r=a.url.substr(a.url.lastIndexOf("=")+1),youtubeSettings={container:o,containerId:o.id,pluginMediaElement:n,pluginId:m,videoId:r,height:l,width:k},mejs.PluginDetector.hasPluginVersion("flash",[10,0,0])?mejs.YouTubeApi.createFlash(youtubeSettings):mejs.YouTubeApi.enqueueIframe(youtubeSettings);break;case"vimeo":var s=m+"_player";if(n.vimeoid=a.url.substr(a.url.lastIndexOf("/")+1),o.innerHTML='<iframe src="//player.vimeo.com/video/'+n.vimeoid+"?api=1&portrait=0&byline=0&title=0&player_id="+s+'" width="'+k+'" height="'+l+'" frameborder="0" class="mejs-shim" id="'+s+'" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>',"function"==typeof $f){var t=$f(o.childNodes[0]);t.addEvent("ready",function(){function a(a,b,c,d){var e={type:c,target:b};"timeupdate"==c&&(b.currentTime=e.currentTime=d.seconds,b.duration=e.duration=d.duration),b.dispatchEvent(e.type,e)}t.playVideo=function(){t.api("play")},t.stopVideo=function(){t.api("unload")},t.pauseVideo=function(){t.api("pause")},t.seekTo=function(a){t.api("seekTo",a)},t.setVolume=function(a){t.api("setVolume",a)},t.setMuted=function(a){a?(t.lastVolume=t.api("getVolume"),t.api("setVolume",0)):(t.api("setVolume",t.lastVolume),delete t.lastVolume)},t.addEvent("play",function(){a(t,n,"play"),a(t,n,"playing")}),t.addEvent("pause",function(){a(t,n,"pause")}),t.addEvent("finish",function(){a(t,n,"ended")}),t.addEvent("playProgress",function(b){a(t,n,"timeupdate",b)}),n.pluginElement=o,n.pluginApi=t,mejs.MediaPluginBridge.initPlugin(m)})}else console.warn("You need to include froogaloop for vimeo to work")}return j.style.display="none",j.removeAttribute("autoplay"),n},updateNative:function(a,b){var c,d=a.htmlMediaElement;for(c in mejs.HtmlMediaElement)d[c]=mejs.HtmlMediaElement[c];return b.success(d,d),d}},mejs.YouTubeApi={isIframeStarted:!1,isIframeLoaded:!1,loadIframeApi:function(){if(!this.isIframeStarted){var a=document.createElement("script");a.src="//www.youtube.com/player_api";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b),this.isIframeStarted=!0}},iframeQueue:[],enqueueIframe:function(a){this.isLoaded?this.createIframe(a):(this.loadIframeApi(),this.iframeQueue.push(a))},createIframe:function(a){var b=a.pluginMediaElement,c=new YT.Player(a.containerId,{height:a.height,width:a.width,videoId:a.videoId,playerVars:{controls:0},events:{onReady:function(){a.pluginMediaElement.pluginApi=c,mejs.MediaPluginBridge.initPlugin(a.pluginId),setInterval(function(){mejs.YouTubeApi.createEvent(c,b,"timeupdate")},250)},onStateChange:function(a){mejs.YouTubeApi.handleStateChange(a.data,c,b)}}})},createEvent:function(a,b,c){var d={type:c,target:b};if(a&&a.getDuration){b.currentTime=d.currentTime=a.getCurrentTime(),b.duration=d.duration=a.getDuration(),d.paused=b.paused,d.ended=b.ended,d.muted=a.isMuted(),d.volume=a.getVolume()/100,d.bytesTotal=a.getVideoBytesTotal(),d.bufferedBytes=a.getVideoBytesLoaded();var e=d.bufferedBytes/d.bytesTotal*d.duration;d.target.buffered=d.buffered={start:function(){return 0},end:function(){return e},length:1}}b.dispatchEvent(d.type,d)},iFrameReady:function(){for(this.isLoaded=!0,this.isIframeLoaded=!0;this.iframeQueue.length>0;){var a=this.iframeQueue.pop();this.createIframe(a)}},flashPlayers:{},createFlash:function(a){this.flashPlayers[a.pluginId]=a;var b,c="//www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid="+a.pluginId+"&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0";mejs.MediaFeatures.isIE?(b=document.createElement("div"),a.container.appendChild(b),b.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+a.pluginId+'" width="'+a.width+'" height="'+a.height+'" class="mejs-shim"><param name="movie" value="'+c+'" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /></object>'):a.container.innerHTML='<object type="application/x-shockwave-flash" id="'+a.pluginId+'" data="'+c+'" width="'+a.width+'" height="'+a.height+'" style="visibility: visible; " class="mejs-shim"><param name="allowScriptAccess" value="always"><param name="wmode" value="transparent"></object>'},flashReady:function(a){var b=this.flashPlayers[a],c=document.getElementById(a),d=b.pluginMediaElement;d.pluginApi=d.pluginElement=c,mejs.MediaPluginBridge.initPlugin(a),c.cueVideoById(b.videoId);var e=b.containerId+"_callback";window[e]=function(a){mejs.YouTubeApi.handleStateChange(a,c,d)},c.addEventListener("onStateChange",e),setInterval(function(){mejs.YouTubeApi.createEvent(c,d,"timeupdate")},250),mejs.YouTubeApi.createEvent(c,d,"canplay")},handleStateChange:function(a,b,c){switch(a){case-1:c.paused=!0,c.ended=!0,mejs.YouTubeApi.createEvent(b,c,"loadedmetadata");break;case 0:c.paused=!1,c.ended=!0,mejs.YouTubeApi.createEvent(b,c,"ended");break;case 1:c.paused=!1,c.ended=!1,mejs.YouTubeApi.createEvent(b,c,"play"),mejs.YouTubeApi.createEvent(b,c,"playing");break;case 2:c.paused=!0,c.ended=!1,mejs.YouTubeApi.createEvent(b,c,"pause");break;case 3:mejs.YouTubeApi.createEvent(b,c,"progress");break;case 5:}}},window.mejs=mejs,window.MediaElement=mejs.MediaElement,function(a,b){"use strict";var c={locale:{language:b.i18n&&b.i18n.locale.language||"",strings:b.i18n&&b.i18n.locale.strings||{}},ietf_lang_regex:/^(x\-)?[a-z]{2,}(\-\w{2,})?(\-\w{2,})?$/,methods:{}};c.getLanguage=function(){var a=c.locale.language||window.navigator.userLanguage||window.navigator.language;return c.ietf_lang_regex.exec(a)?a:null},"undefined"!=typeof mejsL10n&&(c.locale.language=mejsL10n.language),c.methods.checkPlain=function(a){var b,c,d={"&":"&amp;",'"':"&quot;","<":"&lt;",">":"&gt;"};a=String(a);for(b in d)d.hasOwnProperty(b)&&(c=new RegExp(b,"g"),a=a.replace(c,d[b]));return a},c.methods.t=function(a,b){return c.locale.strings&&c.locale.strings[b.context]&&c.locale.strings[b.context][a]&&(a=c.locale.strings[b.context][a]),c.methods.checkPlain(a)},c.t=function(a,b){if("string"==typeof a&&a.length>0){var d=c.getLanguage();return b=b||{context:d},c.methods.t(a,b)}throw{name:"InvalidArgumentException",message:"First argument is either not a string or empty."}},b.i18n=c}(document,mejs),function(a){"use strict";"undefined"!=typeof mejsL10n&&(a[mejsL10n.language]=mejsL10n.strings)}(mejs.i18n.locale.strings),/*!
+var mejs=mejs||{};mejs.version="2.18.1",mejs.meIndex=0,mejs.plugins={silverlight:[{version:[3,0],types:["video/mp4","video/m4v","video/mov","video/wmv","audio/wma","audio/m4a","audio/mp3","audio/wav","audio/mpeg"]}],flash:[{version:[9,0,124],types:["video/mp4","video/m4v","video/mov","video/flv","video/rtmp","video/x-flv","audio/flv","audio/x-flv","audio/mp3","audio/m4a","audio/mpeg","video/youtube","video/x-youtube","video/dailymotion","video/x-dailymotion","application/x-mpegURL"]}],youtube:[{version:null,types:["video/youtube","video/x-youtube","audio/youtube","audio/x-youtube"]}],vimeo:[{version:null,types:["video/vimeo","video/x-vimeo"]}]},mejs.Utility={encodeUrl:function(a){return encodeURIComponent(a)},escapeHTML:function(a){return a.toString().split("&").join("&amp;").split("<").join("&lt;").split('"').join("&quot;")},absolutizeUrl:function(a){var b=document.createElement("div");return b.innerHTML='<a href="'+this.escapeHTML(a)+'">x</a>',b.firstChild.href},getScriptPath:function(a){for(var b,c,d,e,f,g,h=0,i="",j="",k=document.getElementsByTagName("script"),l=k.length,m=a.length;l>h;h++){for(e=k[h].src,c=e.lastIndexOf("/"),c>-1?(g=e.substring(c+1),f=e.substring(0,c+1)):(g=e,f=""),b=0;m>b;b++)if(j=a[b],d=g.indexOf(j),d>-1){i=f;break}if(""!==i)break}return i},calculateTimeFormat:function(a,b,c){0>a&&(a=0),"undefined"==typeof c&&(c=25);var d=b.timeFormat,e=d[0],f=d[1]==d[0],g=f?2:1,h=":",i=Math.floor(a/3600)%24,j=Math.floor(a/60)%60,k=Math.floor(a%60),l=Math.floor((a%1*c).toFixed(3)),m=[[l,"f"],[k,"s"],[j,"m"],[i,"h"]];d.length<g&&(h=d[g]);for(var n=!1,o=0,p=m.length;p>o;o++)if(-1!==d.indexOf(m[o][1]))n=!0;else if(n){for(var q=!1,r=o;p>r;r++)if(m[r][0]>0){q=!0;break}if(!q)break;f||(d=e+d),d=m[o][1]+h+d,f&&(d=m[o][1]+d),e=m[o][1]}b.currentTimeFormat=d},twoDigitsString:function(a){return 10>a?"0"+a:String(a)},secondsToTimeCode:function(a,b){if(0>a&&(a=0),"object"!=typeof b){var c="m:ss";c=arguments[1]?"hh:mm:ss":c,c=arguments[2]?c+":ff":c,b={currentTimeFormat:c,framesPerSecond:arguments[3]||25}}var d=b.framesPerSecond;"undefined"==typeof d&&(d=25);var c=b.currentTimeFormat,e=Math.floor(a/3600)%24,f=Math.floor(a/60)%60,g=Math.floor(a%60),h=Math.floor((a%1*d).toFixed(3));lis=[[h,"f"],[g,"s"],[f,"m"],[e,"h"]];var j=c;for(i=0,len=lis.length;len>i;i++)j=j.replace(lis[i][1]+lis[i][1],this.twoDigitsString(lis[i][0])),j=j.replace(lis[i][1],lis[i][0]);return j},timeCodeToSeconds:function(a,b,c,d){"undefined"==typeof c?c=!1:"undefined"==typeof d&&(d=25);var e=a.split(":"),f=parseInt(e[0],10),g=parseInt(e[1],10),h=parseInt(e[2],10),i=0,j=0;return c&&(i=parseInt(e[3])/d),j=3600*f+60*g+h+i},convertSMPTEtoSeconds:function(a){if("string"!=typeof a)return!1;a=a.replace(",",".");var b=0,c=-1!=a.indexOf(".")?a.split(".")[1].length:0,d=1;a=a.split(":").reverse();for(var e=0;e<a.length;e++)d=1,e>0&&(d=Math.pow(60,e)),b+=Number(a[e])*d;return Number(b.toFixed(c))},removeSwf:function(a){var b=document.getElementById(a);b&&/object|embed/i.test(b.nodeName)&&(mejs.MediaFeatures.isIE?(b.style.display="none",function(){4==b.readyState?mejs.Utility.removeObjectInIE(a):setTimeout(arguments.callee,10)}()):b.parentNode.removeChild(b))},removeObjectInIE:function(a){var b=document.getElementById(a);if(b){for(var c in b)"function"==typeof b[c]&&(b[c]=null);b.parentNode.removeChild(b)}}},mejs.PluginDetector={hasPluginVersion:function(a,b){var c=this.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]==b[0]&&c[1]>b[1]||c[0]==b[0]&&c[1]==b[1]&&c[2]>=b[2]?!0:!1},nav:window.navigator,ua:window.navigator.userAgent.toLowerCase(),plugins:[],addPlugin:function(a,b,c,d,e){this.plugins[a]=this.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var e,f,g,h=[0,0,0];if("undefined"!=typeof this.nav.plugins&&"object"==typeof this.nav.plugins[a]){if(e=this.nav.plugins[a].description,e&&("undefined"==typeof this.nav.mimeTypes||!this.nav.mimeTypes[b]||this.nav.mimeTypes[b].enabledPlugin))for(h=e.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split("."),f=0;f<h.length;f++)h[f]=parseInt(h[f].match(/\d+/),10)}else if("undefined"!=typeof window.ActiveXObject)try{g=new ActiveXObject(c),g&&(h=d(g))}catch(i){}return h}},mejs.PluginDetector.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b}),mejs.PluginDetector.addPlugin("silverlight","Silverlight Plug-In","application/x-silverlight-2","AgControl.AgControl",function(a){var b=[0,0,0,0],c=function(a,b,c,d){for(;a.isVersionSupported(b[0]+"."+b[1]+"."+b[2]+"."+b[3]);)b[c]+=d;b[c]-=d};return c(a,b,0,1),c(a,b,1,1),c(a,b,2,1e4),c(a,b,2,1e3),c(a,b,2,100),c(a,b,2,10),c(a,b,2,1),c(a,b,3,1),b}),mejs.MediaFeatures={init:function(){var a,b,c=this,d=document,e=mejs.PluginDetector.nav,f=mejs.PluginDetector.ua.toLowerCase(),g=["source","track","audio","video"];c.isiPad=null!==f.match(/ipad/i),c.isiPhone=null!==f.match(/iphone/i),c.isiOS=c.isiPhone||c.isiPad,c.isAndroid=null!==f.match(/android/i),c.isBustedAndroid=null!==f.match(/android 2\.[12]/),c.isBustedNativeHTTPS="https:"===location.protocol&&(null!==f.match(/android [12]\./)||null!==f.match(/macintosh.* version.* safari/)),c.isIE=-1!=e.appName.toLowerCase().indexOf("microsoft")||null!==e.appName.toLowerCase().match(/trident/gi),c.isChrome=null!==f.match(/chrome/gi),c.isChromium=null!==f.match(/chromium/gi),c.isFirefox=null!==f.match(/firefox/gi),c.isWebkit=null!==f.match(/webkit/gi),c.isGecko=null!==f.match(/gecko/gi)&&!c.isWebkit&&!c.isIE,c.isOpera=null!==f.match(/opera/gi),c.hasTouch="ontouchstart"in window,c.svg=!!document.createElementNS&&!!document.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect;for(a=0;a<g.length;a++)b=document.createElement(g[a]);c.supportsMediaTag="undefined"!=typeof b.canPlayType||c.isBustedAndroid;try{b.canPlayType("video/mp4")}catch(h){c.supportsMediaTag=!1}c.hasSemiNativeFullScreen="undefined"!=typeof b.webkitEnterFullscreen,c.hasNativeFullscreen="undefined"!=typeof b.requestFullscreen,c.hasWebkitNativeFullScreen="undefined"!=typeof b.webkitRequestFullScreen,c.hasMozNativeFullScreen="undefined"!=typeof b.mozRequestFullScreen,c.hasMsNativeFullScreen="undefined"!=typeof b.msRequestFullscreen,c.hasTrueNativeFullScreen=c.hasWebkitNativeFullScreen||c.hasMozNativeFullScreen||c.hasMsNativeFullScreen,c.nativeFullScreenEnabled=c.hasTrueNativeFullScreen,c.hasMozNativeFullScreen?c.nativeFullScreenEnabled=document.mozFullScreenEnabled:c.hasMsNativeFullScreen&&(c.nativeFullScreenEnabled=document.msFullscreenEnabled),c.isChrome&&(c.hasSemiNativeFullScreen=!1),c.hasTrueNativeFullScreen&&(c.fullScreenEventName="",c.hasWebkitNativeFullScreen?c.fullScreenEventName="webkitfullscreenchange":c.hasMozNativeFullScreen?c.fullScreenEventName="mozfullscreenchange":c.hasMsNativeFullScreen&&(c.fullScreenEventName="MSFullscreenChange"),c.isFullScreen=function(){return c.hasMozNativeFullScreen?d.mozFullScreen:c.hasWebkitNativeFullScreen?d.webkitIsFullScreen:c.hasMsNativeFullScreen?null!==d.msFullscreenElement:void 0},c.requestFullScreen=function(a){c.hasWebkitNativeFullScreen?a.webkitRequestFullScreen():c.hasMozNativeFullScreen?a.mozRequestFullScreen():c.hasMsNativeFullScreen&&a.msRequestFullscreen()},c.cancelFullScreen=function(){c.hasWebkitNativeFullScreen?document.webkitCancelFullScreen():c.hasMozNativeFullScreen?document.mozCancelFullScreen():c.hasMsNativeFullScreen&&document.msExitFullscreen()}),c.hasSemiNativeFullScreen&&f.match(/mac os x 10_5/i)&&(c.hasNativeFullScreen=!1,c.hasSemiNativeFullScreen=!1)}},mejs.MediaFeatures.init(),mejs.HtmlMediaElement={pluginType:"native",isFullScreen:!1,setCurrentTime:function(a){this.currentTime=a},setMuted:function(a){this.muted=a},setVolume:function(a){this.volume=a},stop:function(){this.pause()},setSrc:function(a){for(var b=this.getElementsByTagName("source");b.length>0;)this.removeChild(b[0]);if("string"==typeof a)this.src=a;else{var c,d;for(c=0;c<a.length;c++)if(d=a[c],this.canPlayType(d.type)){this.src=d.src;break}}},setVideoSize:function(a,b){this.width=a,this.height=b}},mejs.PluginMediaElement=function(a,b,c){this.id=a,this.pluginType=b,this.src=c,this.events={},this.attributes={}},mejs.PluginMediaElement.prototype={pluginElement:null,pluginType:"",isFullScreen:!1,playbackRate:-1,defaultPlaybackRate:-1,seekable:[],played:[],paused:!0,ended:!1,seeking:!1,duration:0,error:null,tagName:"",muted:!1,volume:1,currentTime:0,play:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.playVideo():this.pluginApi.playMedia(),this.paused=!1)},load:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType||this.pluginApi.loadMedia(),this.paused=!1)},pause:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.pauseVideo():this.pluginApi.pauseMedia(),this.paused=!0)},stop:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.stopVideo():this.pluginApi.stopMedia(),this.paused=!0)},canPlayType:function(a){var b,c,d,e=mejs.plugins[this.pluginType];for(b=0;b<e.length;b++)if(d=e[b],mejs.PluginDetector.hasPluginVersion(this.pluginType,d.version))for(c=0;c<d.types.length;c++)if(a==d.types[c])return"probably";return""},positionFullscreenButton:function(a,b,c){null!=this.pluginApi&&this.pluginApi.positionFullscreenButton&&this.pluginApi.positionFullscreenButton(Math.floor(a),Math.floor(b),c)},hideFullscreenButton:function(){null!=this.pluginApi&&this.pluginApi.hideFullscreenButton&&this.pluginApi.hideFullscreenButton()},setSrc:function(a){if("string"==typeof a)this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(a)),this.src=mejs.Utility.absolutizeUrl(a);else{var b,c;for(b=0;b<a.length;b++)if(c=a[b],this.canPlayType(c.type)){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(c.src)),this.src=mejs.Utility.absolutizeUrl(c.src);break}}},setCurrentTime:function(a){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.seekTo(a):this.pluginApi.setCurrentTime(a),this.currentTime=a)},setVolume:function(a){null!=this.pluginApi&&(this.pluginApi.setVolume("youtube"==this.pluginType?100*a:a),this.volume=a)},setMuted:function(a){null!=this.pluginApi&&("youtube"==this.pluginType?(a?this.pluginApi.mute():this.pluginApi.unMute(),this.muted=a,this.dispatchEvent({type:"volumechange"})):this.pluginApi.setMuted(a),this.muted=a)},setVideoSize:function(a,b){this.pluginElement&&this.pluginElement.style&&(this.pluginElement.style.width=a+"px",this.pluginElement.style.height=b+"px"),null!=this.pluginApi&&this.pluginApi.setVideoSize&&this.pluginApi.setVideoSize(a,b)},setFullscreen:function(a){null!=this.pluginApi&&this.pluginApi.setFullscreen&&this.pluginApi.setFullscreen(a)},enterFullScreen:function(){null!=this.pluginApi&&this.pluginApi.setFullscreen&&this.setFullscreen(!0)},exitFullScreen:function(){null!=this.pluginApi&&this.pluginApi.setFullscreen&&this.setFullscreen(!1)},addEventListener:function(a,b){this.events[a]=this.events[a]||[],this.events[a].push(b)},removeEventListener:function(a,b){if(!a)return this.events={},!0;var c=this.events[a];if(!c)return!0;if(!b)return this.events[a]=[],!0;for(var d=0;d<c.length;d++)if(c[d]===b)return this.events[a].splice(d,1),!0;return!1},dispatchEvent:function(a){var b,c=this.events[a.type];if(c)for(b=0;b<c.length;b++)c[b].apply(this,[a])},hasAttribute:function(a){return a in this.attributes},removeAttribute:function(a){delete this.attributes[a]},getAttribute:function(a){return this.hasAttribute(a)?this.attributes[a]:""},setAttribute:function(a,b){this.attributes[a]=b},remove:function(){mejs.Utility.removeSwf(this.pluginElement.id),mejs.MediaPluginBridge.unregisterPluginElement(this.pluginElement.id)}},mejs.MediaPluginBridge={pluginMediaElements:{},htmlMediaElements:{},registerPluginElement:function(a,b,c){this.pluginMediaElements[a]=b,this.htmlMediaElements[a]=c},unregisterPluginElement:function(a){delete this.pluginMediaElements[a],delete this.htmlMediaElements[a]},initPlugin:function(a){var b=this.pluginMediaElements[a],c=this.htmlMediaElements[a];if(b){switch(b.pluginType){case"flash":b.pluginElement=b.pluginApi=document.getElementById(a);break;case"silverlight":b.pluginElement=document.getElementById(b.id),b.pluginApi=b.pluginElement.Content.MediaElementJS}null!=b.pluginApi&&b.success&&b.success(b,c)}},fireEvent:function(a,b,c){var d,e,f,g=this.pluginMediaElements[a];if(g){d={type:b,target:g};for(e in c)g[e]=c[e],d[e]=c[e];f=c.bufferedTime||0,d.target.buffered=d.buffered={start:function(){return 0},end:function(){return f},length:1},g.dispatchEvent(d)}}},mejs.MediaElementDefaults={mode:"auto",plugins:["flash","silverlight","youtube","vimeo"],enablePluginDebug:!1,httpsBasicAuthSite:!1,type:"",pluginPath:mejs.Utility.getScriptPath(["mediaelement.js","mediaelement.min.js","mediaelement-and-player.js","mediaelement-and-player.min.js"]),flashName:"flashmediaelement.swf",flashStreamer:"",flashScriptAccess:"sameDomain",enablePluginSmoothing:!1,enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",silverlightName:"silverlightmediaelement.xap",defaultVideoWidth:480,defaultVideoHeight:270,pluginWidth:-1,pluginHeight:-1,pluginVars:[],timerRate:250,startVolume:.8,success:function(){},error:function(){}},mejs.MediaElement=function(a,b){return mejs.HtmlMediaElementShim.create(a,b)},mejs.HtmlMediaElementShim={create:function(a,b){var c,d,e={},f="string"==typeof a?document.getElementById(a):a,g=f.tagName.toLowerCase(),h="audio"===g||"video"===g,i=f.getAttribute(h?"src":"href"),j=f.getAttribute("poster"),k=f.getAttribute("autoplay"),l=f.getAttribute("preload"),m=f.getAttribute("controls");for(d in mejs.MediaElementDefaults)e[d]=mejs.MediaElementDefaults[d];for(d in b)e[d]=b[d];return i="undefined"==typeof i||null===i||""==i?null:i,j="undefined"==typeof j||null===j?"":j,l="undefined"==typeof l||null===l||"false"===l?"none":l,k=!("undefined"==typeof k||null===k||"false"===k),m=!("undefined"==typeof m||null===m||"false"===m),c=this.determinePlayback(f,e,mejs.MediaFeatures.supportsMediaTag,h,i),c.url=null!==c.url?mejs.Utility.absolutizeUrl(c.url):"","native"==c.method?(mejs.MediaFeatures.isBustedAndroid&&(f.src=c.url,f.addEventListener("click",function(){f.play()},!1)),this.updateNative(c,e,k,l)):""!==c.method?this.createPlugin(c,e,j,k,l,m):(this.createErrorMessage(c,e,j),this)},determinePlayback:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=[],r={method:"",url:"",htmlMediaElement:a,isVideo:"audio"!=a.tagName.toLowerCase()};if("undefined"!=typeof b.type&&""!==b.type)if("string"==typeof b.type)q.push({type:b.type,url:e});else for(f=0;f<b.type.length;f++)q.push({type:b.type[f],url:e});else if(null!==e)k=this.formatType(e,a.getAttribute("type")),q.push({type:k,url:e});else for(f=0;f<a.childNodes.length;f++)j=a.childNodes[f],1==j.nodeType&&"source"==j.tagName.toLowerCase()&&(e=j.getAttribute("src"),k=this.formatType(e,j.getAttribute("type")),p=j.getAttribute("media"),(!p||!window.matchMedia||window.matchMedia&&window.matchMedia(p).matches)&&q.push({type:k,url:e}));if(!d&&q.length>0&&null!==q[0].url&&this.getTypeFromFile(q[0].url).indexOf("audio")>-1&&(r.isVideo=!1),mejs.MediaFeatures.isBustedAndroid&&(a.canPlayType=function(a){return null!==a.match(/video\/(mp4|m4v)/gi)?"maybe":""}),!(!c||"auto"!==b.mode&&"auto_plugin"!==b.mode&&"native"!==b.mode||mejs.MediaFeatures.isBustedNativeHTTPS&&b.httpsBasicAuthSite===!0)){for(d||(o=document.createElement(r.isVideo?"video":"audio"),a.parentNode.insertBefore(o,a),a.style.display="none",r.htmlMediaElement=a=o),f=0;f<q.length;f++)if("video/m3u8"==q[f].type||""!==a.canPlayType(q[f].type).replace(/no/,"")||""!==a.canPlayType(q[f].type.replace(/mp3/,"mpeg")).replace(/no/,"")||""!==a.canPlayType(q[f].type.replace(/m4a/,"mp4")).replace(/no/,"")){r.method="native",r.url=q[f].url;break}if("native"===r.method&&(null!==r.url&&(a.src=r.url),"auto_plugin"!==b.mode))return r}if("auto"===b.mode||"auto_plugin"===b.mode||"shim"===b.mode)for(f=0;f<q.length;f++)for(k=q[f].type,g=0;g<b.plugins.length;g++)for(l=b.plugins[g],m=mejs.plugins[l],h=0;h<m.length;h++)if(n=m[h],null==n.version||mejs.PluginDetector.hasPluginVersion(l,n.version))for(i=0;i<n.types.length;i++)if(k.toLowerCase()==n.types[i].toLowerCase())return r.method=l,r.url=q[f].url,r;return"auto_plugin"===b.mode&&"native"===r.method?r:(""===r.method&&q.length>0&&(r.url=q[0].url),r)},formatType:function(a,b){return a&&!b?this.getTypeFromFile(a):b&&~b.indexOf(";")?b.substr(0,b.indexOf(";")):b},getTypeFromFile:function(a){a=a.split("?")[0];var b=a.substring(a.lastIndexOf(".")+1).toLowerCase(),c=/(mp4|m4v|ogg|ogv|m3u8|webm|webmv|flv|wmv|mpeg|mov)/gi.test(b)?"video/":"audio/";return this.getTypeFromExtension(b,c)},getTypeFromExtension:function(a,b){switch(b=b||"",a){case"mp4":case"m4v":case"m4a":case"f4v":case"f4a":return b+"mp4";case"flv":return b+"x-flv";case"webm":case"webma":case"webmv":return b+"webm";case"ogg":case"oga":case"ogv":return b+"ogg";case"m3u8":return"application/x-mpegurl";case"ts":return b+"mp2t";default:return b+a}},createErrorMessage:function(a,b,c){var d=a.htmlMediaElement,e=document.createElement("div"),f=b.customError;e.className="me-cannotplay";try{e.style.width=d.width+"px",e.style.height=d.height+"px"}catch(g){}f||(f='<a href="'+a.url+'">',""!==c&&(f+='<img src="'+c+'" width="100%" height="100%" alt="" />'),f+="<span>"+mejs.i18n.t("Download File")+"</span></a>"),e.innerHTML=f,d.parentNode.insertBefore(e,d),d.style.display="none",b.error(d)},createPlugin:function(a,b,c,d,e,f){var g,h,i,j=a.htmlMediaElement,k=1,l=1,m="me_"+a.method+"_"+mejs.meIndex++,n=new mejs.PluginMediaElement(m,a.method,a.url),o=document.createElement("div");n.tagName=j.tagName;for(var p=0;p<j.attributes.length;p++){var q=j.attributes[p];q.specified&&n.setAttribute(q.name,q.value)}for(h=j.parentNode;null!==h&&null!=h.tagName&&"body"!==h.tagName.toLowerCase()&&null!=h.parentNode&&null!=h.parentNode.tagName&&null!=h.parentNode.constructor&&"ShadowRoot"===h.parentNode.constructor.name;){if("p"===h.parentNode.tagName.toLowerCase()){h.parentNode.parentNode.insertBefore(h,h.parentNode);break}h=h.parentNode}switch(a.isVideo?(k=b.pluginWidth>0?b.pluginWidth:b.videoWidth>0?b.videoWidth:null!==j.getAttribute("width")?j.getAttribute("width"):b.defaultVideoWidth,l=b.pluginHeight>0?b.pluginHeight:b.videoHeight>0?b.videoHeight:null!==j.getAttribute("height")?j.getAttribute("height"):b.defaultVideoHeight,k=mejs.Utility.encodeUrl(k),l=mejs.Utility.encodeUrl(l)):b.enablePluginDebug&&(k=320,l=240),n.success=b.success,mejs.MediaPluginBridge.registerPluginElement(m,n,j),o.className="me-plugin",o.id=m+"_container",a.isVideo?j.parentNode.insertBefore(o,j):document.body.insertBefore(o,document.body.childNodes[0]),i=["id="+m,"jsinitfunction=mejs.MediaPluginBridge.initPlugin","jscallbackfunction=mejs.MediaPluginBridge.fireEvent","isvideo="+(a.isVideo?"true":"false"),"autoplay="+(d?"true":"false"),"preload="+e,"width="+k,"startvolume="+b.startVolume,"timerrate="+b.timerRate,"flashstreamer="+b.flashStreamer,"height="+l,"pseudostreamstart="+b.pseudoStreamingStartQueryParam],null!==a.url&&i.push("flash"==a.method?"file="+mejs.Utility.encodeUrl(a.url):"file="+a.url),b.enablePluginDebug&&i.push("debug=true"),b.enablePluginSmoothing&&i.push("smoothing=true"),b.enablePseudoStreaming&&i.push("pseudostreaming=true"),f&&i.push("controls=true"),b.pluginVars&&(i=i.concat(b.pluginVars)),a.method){case"silverlight":o.innerHTML='<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="'+m+'" name="'+m+'" width="'+k+'" height="'+l+'" class="mejs-shim"><param name="initParams" value="'+i.join(",")+'" /><param name="windowless" value="true" /><param name="background" value="black" /><param name="minRuntimeVersion" value="3.0.0.0" /><param name="autoUpgrade" value="true" /><param name="source" value="'+b.pluginPath+b.silverlightName+'" /></object>';break;case"flash":mejs.MediaFeatures.isIE?(g=document.createElement("div"),o.appendChild(g),g.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+m+'" width="'+k+'" height="'+l+'" class="mejs-shim"><param name="movie" value="'+b.pluginPath+b.flashName+"?x="+new Date+'" /><param name="flashvars" value="'+i.join("&amp;")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+b.flashScriptAccess+'" /><param name="allowFullScreen" value="true" /><param name="scale" value="default" /></object>'):o.innerHTML='<embed id="'+m+'" name="'+m+'" play="true" loop="false" quality="high" bgcolor="#000000" wmode="transparent" allowScriptAccess="'+b.flashScriptAccess+'" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" src="'+b.pluginPath+b.flashName+'" flashvars="'+i.join("&")+'" width="'+k+'" height="'+l+'" scale="default"class="mejs-shim"></embed>';break;case"youtube":var r;-1!=a.url.lastIndexOf("youtu.be")?(r=a.url.substr(a.url.lastIndexOf("/")+1),-1!=r.indexOf("?")&&(r=r.substr(0,r.indexOf("?")))):r=a.url.substr(a.url.lastIndexOf("=")+1),youtubeSettings={container:o,containerId:o.id,pluginMediaElement:n,pluginId:m,videoId:r,height:l,width:k},mejs.PluginDetector.hasPluginVersion("flash",[10,0,0])?mejs.YouTubeApi.createFlash(youtubeSettings,b):mejs.YouTubeApi.enqueueIframe(youtubeSettings);break;case"vimeo":var s=m+"_player";if(n.vimeoid=a.url.substr(a.url.lastIndexOf("/")+1),o.innerHTML='<iframe src="//player.vimeo.com/video/'+n.vimeoid+"?api=1&portrait=0&byline=0&title=0&player_id="+s+'" width="'+k+'" height="'+l+'" frameborder="0" class="mejs-shim" id="'+s+'" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>',"function"==typeof $f){var t=$f(o.childNodes[0]);t.addEvent("ready",function(){function a(a,b,c,d){var e={type:c,target:b};"timeupdate"==c&&(b.currentTime=e.currentTime=d.seconds,b.duration=e.duration=d.duration),b.dispatchEvent(e)}t.playVideo=function(){t.api("play")},t.stopVideo=function(){t.api("unload")},t.pauseVideo=function(){t.api("pause")},t.seekTo=function(a){t.api("seekTo",a)},t.setVolume=function(a){t.api("setVolume",a)},t.setMuted=function(a){a?(t.lastVolume=t.api("getVolume"),t.api("setVolume",0)):(t.api("setVolume",t.lastVolume),delete t.lastVolume)},t.addEvent("play",function(){a(t,n,"play"),a(t,n,"playing")}),t.addEvent("pause",function(){a(t,n,"pause")}),t.addEvent("finish",function(){a(t,n,"ended")}),t.addEvent("playProgress",function(b){a(t,n,"timeupdate",b)}),n.pluginElement=o,n.pluginApi=t,mejs.MediaPluginBridge.initPlugin(m)})}else console.warn("You need to include froogaloop for vimeo to work")}return j.style.display="none",j.removeAttribute("autoplay"),n},updateNative:function(a,b){var c,d=a.htmlMediaElement;for(c in mejs.HtmlMediaElement)d[c]=mejs.HtmlMediaElement[c];return b.success(d,d),d}},mejs.YouTubeApi={isIframeStarted:!1,isIframeLoaded:!1,loadIframeApi:function(){if(!this.isIframeStarted){var a=document.createElement("script");a.src="//www.youtube.com/player_api";var b=document.getElementsByTagName("script")[0];b.parentNode.insertBefore(a,b),this.isIframeStarted=!0}},iframeQueue:[],enqueueIframe:function(a){this.isLoaded?this.createIframe(a):(this.loadIframeApi(),this.iframeQueue.push(a))},createIframe:function(a){var b=a.pluginMediaElement,c=new YT.Player(a.containerId,{height:a.height,width:a.width,videoId:a.videoId,playerVars:{controls:0},events:{onReady:function(){a.pluginMediaElement.pluginApi=c,mejs.MediaPluginBridge.initPlugin(a.pluginId),setInterval(function(){mejs.YouTubeApi.createEvent(c,b,"timeupdate")},250)},onStateChange:function(a){mejs.YouTubeApi.handleStateChange(a.data,c,b)}}})},createEvent:function(a,b,c){var d={type:c,target:b};if(a&&a.getDuration){b.currentTime=d.currentTime=a.getCurrentTime(),b.duration=d.duration=a.getDuration(),d.paused=b.paused,d.ended=b.ended,d.muted=a.isMuted(),d.volume=a.getVolume()/100,d.bytesTotal=a.getVideoBytesTotal(),d.bufferedBytes=a.getVideoBytesLoaded();var e=d.bufferedBytes/d.bytesTotal*d.duration;d.target.buffered=d.buffered={start:function(){return 0},end:function(){return e},length:1}}b.dispatchEvent(d)},iFrameReady:function(){for(this.isLoaded=!0,this.isIframeLoaded=!0;this.iframeQueue.length>0;){var a=this.iframeQueue.pop();this.createIframe(a)}},flashPlayers:{},createFlash:function(a){this.flashPlayers[a.pluginId]=a;var b,c="//www.youtube.com/apiplayer?enablejsapi=1&amp;playerapiid="+a.pluginId+"&amp;version=3&amp;autoplay=0&amp;controls=0&amp;modestbranding=1&loop=0";mejs.MediaFeatures.isIE?(b=document.createElement("div"),a.container.appendChild(b),b.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+a.pluginId+'" width="'+a.width+'" height="'+a.height+'" class="mejs-shim"><param name="movie" value="'+c+'" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+options.flashScriptAccess+'" /><param name="allowFullScreen" value="true" /></object>'):a.container.innerHTML='<object type="application/x-shockwave-flash" id="'+a.pluginId+'" data="'+c+'" width="'+a.width+'" height="'+a.height+'" style="visibility: visible; " class="mejs-shim"><param name="allowScriptAccess" value="'+options.flashScriptAccess+'"><param name="wmode" value="transparent"></object>'},flashReady:function(a){var b=this.flashPlayers[a],c=document.getElementById(a),d=b.pluginMediaElement;d.pluginApi=d.pluginElement=c,mejs.MediaPluginBridge.initPlugin(a),c.cueVideoById(b.videoId);var e=b.containerId+"_callback";window[e]=function(a){mejs.YouTubeApi.handleStateChange(a,c,d)},c.addEventListener("onStateChange",e),setInterval(function(){mejs.YouTubeApi.createEvent(c,d,"timeupdate")},250),mejs.YouTubeApi.createEvent(c,d,"canplay")},handleStateChange:function(a,b,c){switch(a){case-1:c.paused=!0,c.ended=!0,mejs.YouTubeApi.createEvent(b,c,"loadedmetadata");break;case 0:c.paused=!1,c.ended=!0,mejs.YouTubeApi.createEvent(b,c,"ended");break;case 1:c.paused=!1,c.ended=!1,mejs.YouTubeApi.createEvent(b,c,"play"),mejs.YouTubeApi.createEvent(b,c,"playing");break;case 2:c.paused=!0,c.ended=!1,mejs.YouTubeApi.createEvent(b,c,"pause");break;case 3:mejs.YouTubeApi.createEvent(b,c,"progress");break;case 5:}}},window.onYouTubePlayerAPIReady=function(){mejs.YouTubeApi.iFrameReady()},window.onYouTubePlayerReady=function(a){mejs.YouTubeApi.flashReady(a)},window.mejs=mejs,window.MediaElement=mejs.MediaElement,function(a,b){"use strict";var c={locale:{language:b.i18n&&b.i18n.locale.language||"",strings:b.i18n&&b.i18n.locale.strings||{}},ietf_lang_regex:/^(x\-)?[a-z]{2,}(\-\w{2,})?(\-\w{2,})?$/,methods:{}};c.getLanguage=function(){var a=c.locale.language||window.navigator.userLanguage||window.navigator.language;return c.ietf_lang_regex.exec(a)?a:null},"undefined"!=typeof mejsL10n&&(c.locale.language=mejsL10n.language),c.methods.checkPlain=function(a){var b,c,d={"&":"&amp;",'"':"&quot;","<":"&lt;",">":"&gt;"};a=String(a);for(b in d)d.hasOwnProperty(b)&&(c=new RegExp(b,"g"),a=a.replace(c,d[b]));return a},c.methods.t=function(a,b){return c.locale.strings&&c.locale.strings[b.context]&&c.locale.strings[b.context][a]&&(a=c.locale.strings[b.context][a]),c.methods.checkPlain(a)},c.t=function(a,b){if("string"==typeof a&&a.length>0){var d=c.getLanguage();return b=b||{context:d},c.methods.t(a,b)}throw{name:"InvalidArgumentException",message:"First argument is either not a string or empty."}},b.i18n=c}(document,mejs),function(a){"use strict";"undefined"!=typeof mejsL10n&&(a[mejsL10n.language]=mejsL10n.strings)}(mejs.i18n.locale.strings),/*!
  *
  * MediaElementPlayer
  * http://mediaelementjs.com/
@@ -24,5 +24,5 @@ function onYouTubePlayerAPIReady(){mejs.YouTubeApi.iFrameReady()}function onYouT
  * License: MIT
  *
  */
-"undefined"!=typeof jQuery?mejs.$=jQuery:"undefined"!=typeof ender&&(mejs.$=ender),function(a){mejs.MepDefaults={poster:"",showPosterWhenEnded:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:30,defaultSeekBackwardInterval:function(a){return.05*a.duration},defaultSeekForwardInterval:function(a){return.05*a.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,autosizeProgress:!0,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,clickToPlayPause:!0,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,enableKeyboard:!0,pauseOtherPlayers:!0,keyActions:[{keys:[32,179],action:function(a,b){b.paused||b.ended?a.play():a.pause()}},{keys:[38],action:function(a,b){a.container.find(".mejs-volume-slider").css("display","block"),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.volume+.1,1);b.setVolume(c)}},{keys:[40],action:function(a,b){a.container.find(".mejs-volume-slider").css("display","block"),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.volume-.1,0);b.setVolume(c)}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a){"undefined"!=typeof a.enterFullScreen&&(a.isFullScreen?a.exitFullScreen():a.enterFullScreen())}},{keys:[77],action:function(a){a.container.find(".mejs-volume-slider").css("display","block"),a.isVideo&&(a.showControls(),a.startControlsTimer()),a.setMuted(a.media.muted?!1:!0)}}]},mejs.mepIndex=0,mejs.players={},mejs.MediaElementPlayer=function(b,c){if(!(this instanceof mejs.MediaElementPlayer))return new mejs.MediaElementPlayer(b,c);var d=this;return d.$media=d.$node=a(b),d.node=d.media=d.$media[0],d.node?"undefined"!=typeof d.node.player?d.node.player:(d.node.player=d,"undefined"==typeof c&&(c=d.$node.data("mejsoptions")),d.options=a.extend({},mejs.MepDefaults,c),d.id="mep_"+mejs.mepIndex++,mejs.players[d.id]=d,d.init(),d):void 0},mejs.MediaElementPlayer.prototype={hasFocus:!1,controlsAreVisible:!0,init:function(){var b=this,c=mejs.MediaFeatures,d=a.extend(!0,{},b.options,{success:function(a,c){b.meReady(a,c)},error:function(a){b.handleError(a)}}),e=b.media.tagName.toLowerCase();if(b.isDynamic="audio"!==e&&"video"!==e,b.isVideo=b.isDynamic?b.options.isVideo:"audio"!==e&&b.options.isVideo,c.isiPad&&b.options.iPadUseNativeControls||c.isiPhone&&b.options.iPhoneUseNativeControls)b.$media.attr("controls","controls"),c.isiPad&&null!==b.media.getAttribute("autoplay")&&b.play();else if(c.isAndroid&&b.options.AndroidUseNativeControls);else{b.$media.removeAttr("controls");var f=mejs.i18n.t(b.isVideo?"Video Player":"Audio Player");if(a('<span class="mejs-offscreen">'+f+"</span>").insertBefore(b.$media),b.container=a('<div id="'+b.id+'" class="mejs-container '+(mejs.MediaFeatures.svg?"svg":"no-svg")+'" tabindex="0" role="application" aria-label="'+f+'"><div class="mejs-inner"><div class="mejs-mediaelement"></div><div class="mejs-layers"></div><div class="mejs-controls"></div><div class="mejs-clear"></div></div></div>').addClass(b.$media[0].className).insertBefore(b.$media).focus(function(){if(!b.controlsAreVisible){b.showControls(!0);var a=b.container.find(".mejs-playpause-button > button");a.focus()}}),b.container.addClass((c.isAndroid?"mejs-android ":"")+(c.isiOS?"mejs-ios ":"")+(c.isiPad?"mejs-ipad ":"")+(c.isiPhone?"mejs-iphone ":"")+(b.isVideo?"mejs-video ":"mejs-audio ")),c.isiOS){var g=b.$media.clone();b.container.find(".mejs-mediaelement").append(g),b.$media.remove(),b.$node=b.$media=g,b.node=b.media=g[0]}else b.container.find(".mejs-mediaelement").append(b.$media);b.controls=b.container.find(".mejs-controls"),b.layers=b.container.find(".mejs-layers");var h=b.isVideo?"video":"audio",i=h.substring(0,1).toUpperCase()+h.substring(1);b.width=b.options[h+"Width"]>0||b.options[h+"Width"].toString().indexOf("%")>-1?b.options[h+"Width"]:""!==b.media.style.width&&null!==b.media.style.width?b.media.style.width:null!==b.media.getAttribute("width")?b.$media.attr("width"):b.options["default"+i+"Width"],b.height=b.options[h+"Height"]>0||b.options[h+"Height"].toString().indexOf("%")>-1?b.options[h+"Height"]:""!==b.media.style.height&&null!==b.media.style.height?b.media.style.height:null!==b.$media[0].getAttribute("height")?b.$media.attr("height"):b.options["default"+i+"Height"],b.setPlayerSize(b.width,b.height),d.pluginWidth=b.width,d.pluginHeight=b.height}mejs.MediaElement(b.$media[0],d),"undefined"!=typeof b.container&&b.controlsAreVisible&&b.container.trigger("controlsshown")},showControls:function(a){var b=this;a="undefined"==typeof a||a,b.controlsAreVisible||(a?(b.controls.css("visibility","visible").stop(!0,!0).fadeIn(200,function(){b.controlsAreVisible=!0,b.container.trigger("controlsshown")}),b.container.find(".mejs-control").css("visibility","visible").stop(!0,!0).fadeIn(200,function(){b.controlsAreVisible=!0})):(b.controls.css("visibility","visible").css("display","block"),b.container.find(".mejs-control").css("visibility","visible").css("display","block"),b.controlsAreVisible=!0,b.container.trigger("controlsshown")),b.setControlsSize())},hideControls:function(b){var c=this;b="undefined"==typeof b||b,!c.controlsAreVisible||c.options.alwaysShowControls||c.keyboardAction||(b?(c.controls.stop(!0,!0).fadeOut(200,function(){a(this).css("visibility","hidden").css("display","block"),c.controlsAreVisible=!1,c.container.trigger("controlshidden")}),c.container.find(".mejs-control").stop(!0,!0).fadeOut(200,function(){a(this).css("visibility","hidden").css("display","block")})):(c.controls.css("visibility","hidden").css("display","block"),c.container.find(".mejs-control").css("visibility","hidden").css("display","block"),c.controlsAreVisible=!1,c.container.trigger("controlshidden")))},controlsTimer:null,startControlsTimer:function(a){var b=this;a="undefined"!=typeof a?a:1500,b.killControlsTimer("start"),b.controlsTimer=setTimeout(function(){b.hideControls(),b.killControlsTimer("hide")},a)},killControlsTimer:function(){var a=this;null!==a.controlsTimer&&(clearTimeout(a.controlsTimer),delete a.controlsTimer,a.controlsTimer=null)},controlsEnabled:!0,disableControls:function(){var a=this;a.killControlsTimer(),a.hideControls(!1),this.controlsEnabled=!1},enableControls:function(){var a=this;a.showControls(!1),a.controlsEnabled=!0},meReady:function(b,c){var d,e,f=this,g=mejs.MediaFeatures,h=c.getAttribute("autoplay"),i=!("undefined"==typeof h||null===h||"false"===h);if(!f.created){if(f.created=!0,f.media=b,f.domNode=c,!(g.isAndroid&&f.options.AndroidUseNativeControls||g.isiPad&&f.options.iPadUseNativeControls||g.isiPhone&&f.options.iPhoneUseNativeControls)){f.buildposter(f,f.controls,f.layers,f.media),f.buildkeyboard(f,f.controls,f.layers,f.media),f.buildoverlays(f,f.controls,f.layers,f.media),f.findTracks();for(d in f.options.features)if(e=f.options.features[d],f["build"+e])try{f["build"+e](f,f.controls,f.layers,f.media)}catch(j){}f.container.trigger("controlsready"),f.setPlayerSize(f.width,f.height),f.setControlsSize(),f.isVideo&&(mejs.MediaFeatures.hasTouch?f.$media.bind("touchstart",function(){f.controlsAreVisible?f.hideControls(!1):f.controlsEnabled&&f.showControls(!1)}):(f.clickToPlayPauseCallback=function(){f.options.clickToPlayPause&&(f.media.paused?f.play():f.pause())},f.media.addEventListener("click",f.clickToPlayPauseCallback,!1),f.container.bind("mouseenter mouseover",function(){f.controlsEnabled&&(f.options.alwaysShowControls||(f.killControlsTimer("enter"),f.showControls(),f.startControlsTimer(2500)))}).bind("mousemove",function(){f.controlsEnabled&&(f.controlsAreVisible||f.showControls(),f.options.alwaysShowControls||f.startControlsTimer(2500))}).bind("mouseleave",function(){f.controlsEnabled&&(f.media.paused||f.options.alwaysShowControls||f.startControlsTimer(1e3))})),f.options.hideVideoControlsOnLoad&&f.hideControls(!1),i&&!f.options.alwaysShowControls&&f.hideControls(),f.options.enableAutosize&&f.media.addEventListener("loadedmetadata",function(a){f.options.videoHeight<=0&&null===f.domNode.getAttribute("height")&&!isNaN(a.target.videoHeight)&&(f.setPlayerSize(a.target.videoWidth,a.target.videoHeight),f.setControlsSize(),f.media.setVideoSize(a.target.videoWidth,a.target.videoHeight))},!1)),b.addEventListener("play",function(){var a;for(a in mejs.players){var b=mejs.players[a];b.id==f.id||!f.options.pauseOtherPlayers||b.paused||b.ended||b.pause(),b.hasFocus=!1}f.hasFocus=!0},!1),f.media.addEventListener("ended",function(){if(f.options.autoRewind)try{f.media.setCurrentTime(0),window.setTimeout(function(){a(f.container).find(".mejs-overlay-loading").parent().hide()},20)}catch(b){}f.media.pause(),f.setProgressRail&&f.setProgressRail(),f.setCurrentRail&&f.setCurrentRail(),f.options.loop?f.play():!f.options.alwaysShowControls&&f.controlsEnabled&&f.showControls()},!1),f.media.addEventListener("loadedmetadata",function(){f.updateDuration&&f.updateDuration(),f.updateCurrent&&f.updateCurrent(),f.isFullScreen||(f.setPlayerSize(f.width,f.height),f.setControlsSize())},!1),f.container.focusout(function(b){if(b.relatedTarget){var c=a(b.relatedTarget);f.keyboardAction&&0===c.parents(".mejs-container").length&&(f.keyboardAction=!1,f.hideControls(!0))}}),setTimeout(function(){f.setPlayerSize(f.width,f.height),f.setControlsSize()},50),f.globalBind("resize",function(){f.isFullScreen||mejs.MediaFeatures.hasTrueNativeFullScreen&&document.webkitIsFullScreen||f.setPlayerSize(f.width,f.height),f.setControlsSize()}),"youtube"==f.media.pluginType&&(g.isiOS||g.isAndroid)&&f.container.find(".mejs-overlay-play").hide()}i&&"native"==b.pluginType&&f.play(),f.options.success&&("string"==typeof f.options.success?window[f.options.success](f.media,f.domNode,f):f.options.success(f.media,f.domNode,f))}},handleError:function(a){var b=this;b.controls.hide(),b.options.error&&b.options.error(a)},setPlayerSize:function(b,c){var d=this;if(!d.options.setDimensions)return!1;if("undefined"!=typeof b&&(d.width=b),"undefined"!=typeof c&&(d.height=c),d.height.toString().indexOf("%")>0||"none"!==d.$node.css("max-width")&&"t.width"!==d.$node.css("max-width")||d.$node[0].currentStyle&&"100%"===d.$node[0].currentStyle.maxWidth){var e=function(){return d.isVideo?d.media.videoWidth&&d.media.videoWidth>0?d.media.videoWidth:null!==d.media.getAttribute("width")?d.media.getAttribute("width"):d.options.defaultVideoWidth:d.options.defaultAudioWidth}(),f=function(){return d.isVideo?d.media.videoHeight&&d.media.videoHeight>0?d.media.videoHeight:null!==d.media.getAttribute("height")?d.media.getAttribute("height"):d.options.defaultVideoHeight:d.options.defaultAudioHeight}(),g=d.container.parent().closest(":visible").width(),h=d.container.parent().closest(":visible").height(),i=d.isVideo||!d.options.autosizeProgress?parseInt(g*f/e,10):f;isNaN(i)&&(i=h),d.container.parent().length>0&&"body"===d.container.parent()[0].tagName.toLowerCase()&&(g=a(window).width(),i=a(window).height()),i&&g&&(d.container.width(g).height(i),d.$media.add(d.container.find(".mejs-shim")).width("100%").height("100%"),d.isVideo&&d.media.setVideoSize&&d.media.setVideoSize(g,i),d.layers.children(".mejs-layer").width("100%").height("100%"))}else d.container.width(d.width).height(d.height),d.layers.children(".mejs-layer").width(d.width).height(d.height);var j=d.layers.find(".mejs-overlay-play"),k=j.find(".mejs-overlay-button");j.height(d.container.height()-d.controls.height()),k.css("margin-top","-"+(k.height()/2-d.controls.height()/2).toString()+"px")},setControlsSize:function(){var b=this,c=0,d=0,e=b.controls.find(".mejs-time-rail"),f=b.controls.find(".mejs-time-total"),g=(b.controls.find(".mejs-time-current"),b.controls.find(".mejs-time-loaded"),e.siblings()),h=g.last(),i=null;if(b.container.is(":visible")&&e.length&&e.is(":visible")){b.options&&!b.options.autosizeProgress&&(d=parseInt(e.css("width"),10)),0!==d&&d||(g.each(function(){var b=a(this);"absolute"!=b.css("position")&&b.is(":visible")&&(c+=a(this).outerWidth(!0))}),d=b.controls.width()-c-(e.outerWidth(!0)-e.width()));do e.width(d),f.width(d-(f.outerWidth(!0)-f.width())),"absolute"!=h.css("position")&&(i=h.length?h.position():null,d--);while(null!==i&&i.top>0&&d>0);b.setProgressRail&&b.setProgressRail(),b.setCurrentRail&&b.setCurrentRail()}},buildposter:function(b,c,d,e){var f=this,g=a('<div class="mejs-poster mejs-layer"></div>').appendTo(d),h=b.$media.attr("poster");""!==b.options.poster&&(h=b.options.poster),h?f.setPoster(h):g.hide(),e.addEventListener("play",function(){g.hide()},!1),b.options.showPosterWhenEnded&&b.options.autoRewind&&e.addEventListener("ended",function(){g.show()},!1)},setPoster:function(b){var c=this,d=c.container.find(".mejs-poster"),e=d.find("img");0===e.length&&(e=a('<img width="100%" height="100%" />').appendTo(d)),e.attr("src",b),d.css({"background-image":"url("+b+")"})},buildoverlays:function(b,c,d,e){var f=this;if(b.isVideo){var g=a('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-loading"><span></span></div></div>').hide().appendTo(d),h=a('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-error"></div></div>').hide().appendTo(d),i=a('<div class="mejs-overlay mejs-layer mejs-overlay-play"><div class="mejs-overlay-button"></div></div>').appendTo(d).bind("click",function(){f.options.clickToPlayPause&&e.paused&&e.play()});e.addEventListener("play",function(){i.hide(),g.hide(),c.find(".mejs-time-buffering").hide(),h.hide()},!1),e.addEventListener("playing",function(){i.hide(),g.hide(),c.find(".mejs-time-buffering").hide(),h.hide()},!1),e.addEventListener("seeking",function(){g.show(),c.find(".mejs-time-buffering").show()},!1),e.addEventListener("seeked",function(){g.hide(),c.find(".mejs-time-buffering").hide()},!1),e.addEventListener("pause",function(){mejs.MediaFeatures.isiPhone||i.show()},!1),e.addEventListener("waiting",function(){g.show(),c.find(".mejs-time-buffering").show()},!1),e.addEventListener("loadeddata",function(){g.show(),c.find(".mejs-time-buffering").show(),mejs.MediaFeatures.isAndroid&&(e.canplayTimeout=window.setTimeout(function(){if(document.createEvent){var a=document.createEvent("HTMLEvents");return a.initEvent("canplay",!0,!0),e.dispatchEvent(a)}},300))},!1),e.addEventListener("canplay",function(){g.hide(),c.find(".mejs-time-buffering").hide(),clearTimeout(e.canplayTimeout)},!1),e.addEventListener("error",function(){g.hide(),c.find(".mejs-time-buffering").hide(),h.show(),h.find(".mejs-overlay-error").html("Error loading this resource")},!1),e.addEventListener("keydown",function(a){f.onkeydown(b,e,a)},!1)}},buildkeyboard:function(b,c,d,e){var f=this;f.container.keydown(function(){f.keyboardAction=!0}),f.globalBind("keydown",function(a){return f.onkeydown(b,e,a)}),f.globalBind("click",function(c){b.hasFocus=0!==a(c.target).closest(".mejs-container").length})},onkeydown:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var d=0,e=a.options.keyActions.length;e>d;d++)for(var f=a.options.keyActions[d],g=0,h=f.keys.length;h>g;g++)if(c.keyCode==f.keys[g])return"function"==typeof c.preventDefault&&c.preventDefault(),f.action(a,b,c.keyCode),!1;return!0},findTracks:function(){var b=this,c=b.$media.find("track");b.tracks=[],c.each(function(c,d){d=a(d),b.tracks.push({srclang:d.attr("srclang")?d.attr("srclang").toLowerCase():"",src:d.attr("src"),kind:d.attr("kind"),label:d.attr("label")||"",entries:[],isLoaded:!1})})},changeSkin:function(a){this.container[0].className="mejs-container "+a,this.setPlayerSize(this.width,this.height),this.setControlsSize()},play:function(){this.load(),this.media.play()},pause:function(){try{this.media.pause()}catch(a){}},load:function(){this.isLoaded||this.media.load(),this.isLoaded=!0},setMuted:function(a){this.media.setMuted(a)},setCurrentTime:function(a){this.media.setCurrentTime(a)},getCurrentTime:function(){return this.media.currentTime},setVolume:function(a){this.media.setVolume(a)},getVolume:function(){return this.media.volume},setSrc:function(a){this.media.setSrc(a)},remove:function(){var a,b,c=this;for(a in c.options.features)if(b=c.options.features[a],c["clean"+b])try{c["clean"+b](c)}catch(d){}c.isDynamic?c.$node.insertBefore(c.container):(c.$media.prop("controls",!0),c.$node.clone().insertBefore(c.container).show(),c.$node.remove()),"native"!==c.media.pluginType&&c.media.remove(),delete mejs.players[c.id],"object"==typeof c.container&&c.container.remove(),c.globalUnbind(),delete c.node.player},rebuildtracks:function(){var a=this;a.findTracks(),a.buildtracks(a,a.controls,a.layers,a.media)},resetSize:function(){var a=this;setTimeout(function(){a.setPlayerSize(a.width,a.height),a.setControlsSize()},50)}},function(){function b(b,d){var e={d:[],w:[]};return a.each((b||"").split(" "),function(a,b){var f=b+"."+d;0===f.indexOf(".")?(e.d.push(f),e.w.push(f)):e[c.test(b)?"w":"d"].push(f)}),e.d=e.d.join(" "),e.w=e.w.join(" "),e}var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;mejs.MediaElementPlayer.prototype.globalBind=function(c,d,e){var f=this;c=b(c,f.id),c.d&&a(document).bind(c.d,d,e),c.w&&a(window).bind(c.w,d,e)},mejs.MediaElementPlayer.prototype.globalUnbind=function(c,d){var e=this;c=b(c,e.id),c.d&&a(document).unbind(c.d,d),c.w&&a(window).unbind(c.w,d)}}(),"undefined"!=typeof a&&(a.fn.mediaelementplayer=function(b){return this.each(b===!1?function(){var b=a(this).data("mediaelementplayer");b&&b.remove(),a(this).removeData("mediaelementplayer")}:function(){a(this).data("mediaelementplayer",new mejs.MediaElementPlayer(this,b))}),this},a(document).ready(function(){a(".mejs-player").mediaelementplayer()})),window.MediaElementPlayer=mejs.MediaElementPlayer}(mejs.$),function(a){a.extend(mejs.MepDefaults,{playText:mejs.i18n.t("Play"),pauseText:mejs.i18n.t("Pause")}),a.extend(MediaElementPlayer.prototype,{buildplaypause:function(b,c,d,e){function f(a){"play"===a?(i.removeClass("mejs-play").addClass("mejs-pause"),j.attr({title:h.pauseText,"aria-label":h.pauseText})):(i.removeClass("mejs-pause").addClass("mejs-play"),j.attr({title:h.playText,"aria-label":h.playText}))}var g=this,h=g.options,i=a('<div class="mejs-button mejs-playpause-button mejs-play" ><button type="button" aria-controls="'+g.id+'" title="'+h.playText+'" aria-label="'+h.playText+'"></button></div>').appendTo(c).click(function(a){return a.preventDefault(),e.paused?e.play():e.pause(),!1}),j=i.find("button");f("pse"),e.addEventListener("play",function(){f("play")},!1),e.addEventListener("playing",function(){f("play")},!1),e.addEventListener("pause",function(){f("pse")},!1),e.addEventListener("paused",function(){f("pse")},!1)}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{stopText:"Stop"}),a.extend(MediaElementPlayer.prototype,{buildstop:function(b,c,d,e){{var f=this;a('<div class="mejs-button mejs-stop-button mejs-stop"><button type="button" aria-controls="'+f.id+'" title="'+f.options.stopText+'" aria-label="'+f.options.stopText+'"></button></div>').appendTo(c).click(function(){e.paused||e.pause(),e.currentTime>0&&(e.setCurrentTime(0),e.pause(),c.find(".mejs-time-current").width("0px"),c.find(".mejs-time-handle").css("left","0px"),c.find(".mejs-time-float-current").html(mejs.Utility.secondsToTimeCode(0)),c.find(".mejs-currenttime").html(mejs.Utility.secondsToTimeCode(0)),d.find(".mejs-poster").show())})}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{progessHelpText:mejs.i18n.t("Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.")}),a.extend(MediaElementPlayer.prototype,{buildprogress:function(b,c,d,e){a('<div class="mejs-time-rail"><span  class="mejs-time-total mejs-time-slider"><span class="mejs-time-buffering"></span><span class="mejs-time-loaded"></span><span class="mejs-time-current"></span><span class="mejs-time-handle"></span><span class="mejs-time-float"><span class="mejs-time-float-current">00:00</span><span class="mejs-time-float-corner"></span></span></span></div>').appendTo(c),c.find(".mejs-time-buffering").hide();var f=this,g=c.find(".mejs-time-total"),h=c.find(".mejs-time-loaded"),i=c.find(".mejs-time-current"),j=c.find(".mejs-time-handle"),k=c.find(".mejs-time-float"),l=c.find(".mejs-time-float-current"),m=c.find(".mejs-time-slider"),n=function(a){var b,c=g.offset(),d=g.outerWidth(!0),f=0,h=0,i=0;b=a.originalEvent.changedTouches?a.originalEvent.changedTouches[0].pageX:a.pageX,e.duration&&(b<c.left?b=c.left:b>d+c.left&&(b=d+c.left),i=b-c.left,f=i/d,h=.02>=f?0:f*e.duration,o&&h!==e.currentTime&&e.setCurrentTime(h),mejs.MediaFeatures.hasTouch||(k.css("left",i),l.html(mejs.Utility.secondsToTimeCode(h)),k.show()))},o=!1,p=!1,q=0,r=!1,s=b.options.autoRewind,t=function(){var a=e.currentTime,b=mejs.i18n.t("Time Slider"),c=mejs.Utility.secondsToTimeCode(a),d=e.duration;m.attr({"aria-label":b,"aria-valuemin":0,"aria-valuemax":d,"aria-valuenow":a,"aria-valuetext":c,role:"slider",tabindex:0})},u=function(){var a=new Date;a-q>=1e3&&e.play()};m.bind("focus",function(){b.options.autoRewind=!1}),m.bind("blur",function(){b.options.autoRewind=s}),m.bind("keydown",function(a){new Date-q>=1e3&&(r=e.paused);var b=a.keyCode,c=e.duration,d=e.currentTime;switch(b){case 37:d-=1;break;case 39:d+=1;break;case 38:d+=Math.floor(.1*c);break;case 40:d-=Math.floor(.1*c);break;case 36:d=0;break;case 35:d=c;break;case 10:return void(e.paused?e.play():e.pause());case 13:return void(e.paused?e.play():e.pause());default:return}return d=0>d?0:d>=c?c:Math.floor(d),q=new Date,r||e.pause(),d<e.duration&&!r&&setTimeout(u,1100),e.setCurrentTime(d),a.preventDefault(),a.stopPropagation(),!1}),g.bind("mousedown touchstart",function(a){(1===a.which||0===a.which)&&(o=!0,n(a),f.globalBind("mousemove.dur touchmove.dur",function(a){n(a)}),f.globalBind("mouseup.dur touchend.dur",function(){o=!1,k.hide(),f.globalUnbind(".dur")}))}).bind("mouseenter",function(){p=!0,f.globalBind("mousemove.dur",function(a){n(a)}),mejs.MediaFeatures.hasTouch||k.show()}).bind("mouseleave",function(){p=!1,o||(f.globalUnbind(".dur"),k.hide())}),e.addEventListener("progress",function(a){b.setProgressRail(a),b.setCurrentRail(a)},!1),e.addEventListener("timeupdate",function(a){b.setProgressRail(a),b.setCurrentRail(a),t(a)},!1),f.loaded=h,f.total=g,f.current=i,f.handle=j},setProgressRail:function(a){var b=this,c=void 0!==a?a.target:b.media,d=null;c&&c.buffered&&c.buffered.length>0&&c.buffered.end&&c.duration?d=c.buffered.end(0)/c.duration:c&&void 0!==c.bytesTotal&&c.bytesTotal>0&&void 0!==c.bufferedBytes?d=c.bufferedBytes/c.bytesTotal:a&&a.lengthComputable&&0!==a.total&&(d=a.loaded/a.total),null!==d&&(d=Math.min(1,Math.max(0,d)),b.loaded&&b.total&&b.loaded.width(b.total.width()*d))},setCurrentRail:function(){var a=this;if(void 0!==a.media.currentTime&&a.media.duration&&a.total&&a.handle){var b=Math.round(a.total.width()*a.media.currentTime/a.media.duration),c=b-Math.round(a.handle.outerWidth(!0)/2);a.current.width(b),a.handle.css("left",c)}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{duration:-1,timeAndDurationSeparator:"<span> | </span>"}),a.extend(MediaElementPlayer.prototype,{buildcurrent:function(b,c,d,e){var f=this;a('<div class="mejs-time" role="timer" aria-live="off"><span class="mejs-currenttime">'+(b.options.alwaysShowHours?"00:":"")+(b.options.showTimecodeFrameCount?"00:00:00":"00:00")+"</span></div>").appendTo(c),f.currenttime=f.controls.find(".mejs-currenttime"),e.addEventListener("timeupdate",function(){b.updateCurrent()},!1)},buildduration:function(b,c,d,e){var f=this;c.children().last().find(".mejs-currenttime").length>0?a(f.options.timeAndDurationSeparator+'<span class="mejs-duration">'+(f.options.duration>0?mejs.Utility.secondsToTimeCode(f.options.duration,f.options.alwaysShowHours||f.media.duration>3600,f.options.showTimecodeFrameCount,f.options.framesPerSecond||25):(b.options.alwaysShowHours?"00:":"")+(b.options.showTimecodeFrameCount?"00:00:00":"00:00"))+"</span>").appendTo(c.find(".mejs-time")):(c.find(".mejs-currenttime").parent().addClass("mejs-currenttime-container"),a('<div class="mejs-time mejs-duration-container"><span class="mejs-duration">'+(f.options.duration>0?mejs.Utility.secondsToTimeCode(f.options.duration,f.options.alwaysShowHours||f.media.duration>3600,f.options.showTimecodeFrameCount,f.options.framesPerSecond||25):(b.options.alwaysShowHours?"00:":"")+(b.options.showTimecodeFrameCount?"00:00:00":"00:00"))+"</span></div>").appendTo(c)),f.durationD=f.controls.find(".mejs-duration"),e.addEventListener("timeupdate",function(){b.updateDuration()},!1)},updateCurrent:function(){var a=this;a.currenttime&&a.currenttime.html(mejs.Utility.secondsToTimeCode(a.media.currentTime,a.options.alwaysShowHours||a.media.duration>3600,a.options.showTimecodeFrameCount,a.options.framesPerSecond||25))},updateDuration:function(){var a=this;a.container.toggleClass("mejs-long-video",a.media.duration>3600),a.durationD&&(a.options.duration>0||a.media.duration)&&a.durationD.html(mejs.Utility.secondsToTimeCode(a.options.duration>0?a.options.duration:a.media.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond||25))}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{muteText:mejs.i18n.t("Mute Toggle"),allyVolumeControlText:mejs.i18n.t("Use Up/Down Arrow keys to increase or decrease volume."),hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),a.extend(MediaElementPlayer.prototype,{buildvolume:function(b,c,d,e){if(!mejs.MediaFeatures.isAndroid&&!mejs.MediaFeatures.isiOS||!this.options.hideVolumeOnTouchDevices){var f=this,g=f.isVideo?f.options.videoVolume:f.options.audioVolume,h="horizontal"==g?a('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+f.id+'" title="'+f.options.muteText+'" aria-label="'+f.options.muteText+'"></button></div><a href="javascript:void(0);" class="mejs-horizontal-volume-slider"><span class="mejs-offscreen">'+f.options.allyVolumeControlText+'</span><div class="mejs-horizontal-volume-total"></div><div class="mejs-horizontal-volume-current"></div><div class="mejs-horizontal-volume-handle"></div></a>').appendTo(c):a('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+f.id+'" title="'+f.options.muteText+'" aria-label="'+f.options.muteText+'"></button><a href="javascript:void(0);" class="mejs-volume-slider"><span class="mejs-offscreen">'+f.options.allyVolumeControlText+'</span><div class="mejs-volume-total"></div><div class="mejs-volume-current"></div><div class="mejs-volume-handle"></div></a></div>').appendTo(c),i=f.container.find(".mejs-volume-slider, .mejs-horizontal-volume-slider"),j=f.container.find(".mejs-volume-total, .mejs-horizontal-volume-total"),k=f.container.find(".mejs-volume-current, .mejs-horizontal-volume-current"),l=f.container.find(".mejs-volume-handle, .mejs-horizontal-volume-handle"),m=function(a,b){if(!i.is(":visible")&&"undefined"==typeof b)return i.show(),m(a,!0),void i.hide();a=Math.max(0,a),a=Math.min(a,1),0===a?(h.removeClass("mejs-mute").addClass("mejs-unmute"),h.children("button").attr("title",mejs.i18n.t("Unmute")).attr("aria-label",mejs.i18n.t("Unmute"))):(h.removeClass("mejs-unmute").addClass("mejs-mute"),h.children("button").attr("title",mejs.i18n.t("Mute")).attr("aria-label",mejs.i18n.t("Mute")));var c=j.position();if("vertical"==g){var d=j.height(),e=d-d*a;l.css("top",Math.round(c.top+e-l.height()/2)),k.height(d-e),k.css("top",c.top+e)}else{var f=j.width(),n=f*a;l.css("left",Math.round(c.left+n-l.width()/2)),k.width(Math.round(n))}},n=function(a){var b=null,c=j.offset();if("vertical"===g){var d=j.height(),f=(parseInt(j.css("top").replace(/px/,""),10),a.pageY-c.top);if(b=(d-f)/d,0===c.top||0===c.left)return}else{var h=j.width(),i=a.pageX-c.left;b=i/h}b=Math.max(0,b),b=Math.min(b,1),m(b),e.setMuted(0===b?!0:!1),e.setVolume(b)},o=!1,p=!1;h.hover(function(){i.show(),p=!0},function(){p=!1,o||"vertical"!=g||i.hide()});var q=function(){var a=Math.floor(100*e.volume);i.attr({"aria-label":mejs.i18n.t("volumeSlider"),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":a,"aria-valuetext":a+"%",role:"slider",tabindex:0})};i.bind("mouseover",function(){p=!0}).bind("mousedown",function(a){return n(a),f.globalBind("mousemove.vol",function(a){n(a)}),f.globalBind("mouseup.vol",function(){o=!1,f.globalUnbind(".vol"),p||"vertical"!=g||i.hide()}),o=!0,!1}).bind("keydown",function(a){var b=a.keyCode,c=e.volume;switch(b){case 38:c+=.1;break;case 40:c-=.1;break;default:return!0}return o=!1,m(c),e.setVolume(c),!1}).bind("blur",function(){i.hide()}),h.find("button").click(function(){e.setMuted(!e.muted)}),h.find("button").bind("focus",function(){i.show()}),e.addEventListener("volumechange",function(a){o||(e.muted?(m(0),h.removeClass("mejs-mute").addClass("mejs-unmute")):(m(e.volume),h.removeClass("mejs-unmute").addClass("mejs-mute"))),q(a)},!1),f.container.is(":visible")&&(m(b.options.startVolume),0===b.options.startVolume&&e.setMuted(!0),"native"===e.pluginType&&e.setVolume(b.options.startVolume))}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{usePluginFullScreen:!0,newWindowCallback:function(){return""},fullscreenText:mejs.i18n.t("Fullscreen")}),a.extend(MediaElementPlayer.prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,buildfullscreen:function(b,c,d,e){if(b.isVideo){if(b.isInIframe=window.location!=window.parent.location,mejs.MediaFeatures.hasTrueNativeFullScreen){var f=function(){b.isFullScreen&&(mejs.MediaFeatures.isFullScreen()?(b.isNativeFullScreen=!0,b.setControlsSize()):(b.isNativeFullScreen=!1,b.exitFullScreen()))};b.globalBind(mejs.MediaFeatures.fullScreenEventName,f)}var g=this,h=(b.container,a('<div class="mejs-button mejs-fullscreen-button"><button type="button" aria-controls="'+g.id+'" title="'+g.options.fullscreenText+'" aria-label="'+g.options.fullscreenText+'"></button></div>').appendTo(c));if("native"===g.media.pluginType||!g.options.usePluginFullScreen&&!mejs.MediaFeatures.isFirefox)h.click(function(){var a=mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||b.isFullScreen;a?b.exitFullScreen():b.enterFullScreen()});else{var i=null,j=function(){var a,b=document.createElement("x"),c=document.documentElement,d=window.getComputedStyle;return"pointerEvents"in b.style?(b.style.pointerEvents="auto",b.style.pointerEvents="x",c.appendChild(b),a=d&&"auto"===d(b,"").pointerEvents,c.removeChild(b),!!a):!1}();if(j&&!mejs.MediaFeatures.isOpera){var k,l,m=!1,n=function(){if(m){for(var a in o)o[a].hide();h.css("pointer-events",""),g.controls.css("pointer-events",""),g.media.removeEventListener("click",g.clickToPlayPauseCallback),m=!1}},o={},p=["top","left","right","bottom"],q=function(){var a=h.offset().left-g.container.offset().left,b=h.offset().top-g.container.offset().top,c=h.outerWidth(!0),d=h.outerHeight(!0),e=g.container.width(),f=g.container.height();for(k in o)o[k].css({position:"absolute",top:0,left:0});o.top.width(e).height(b),o.left.width(a).height(d).css({top:b}),o.right.width(e-a-c).height(d).css({top:b,left:a+c}),o.bottom.width(e).height(f-d-b).css({top:b+d})};for(g.globalBind("resize",function(){q()}),k=0,l=p.length;l>k;k++)o[p[k]]=a('<div class="mejs-fullscreen-hover" />').appendTo(g.container).mouseover(n).hide();h.on("mouseover",function(){if(!g.isFullScreen){var a=h.offset(),c=b.container.offset();e.positionFullscreenButton(a.left-c.left,a.top-c.top,!1),h.css("pointer-events","none"),g.controls.css("pointer-events","none"),g.media.addEventListener("click",g.clickToPlayPauseCallback);for(k in o)o[k].show();
-q(),m=!0}}),e.addEventListener("fullscreenchange",function(){g.isFullScreen=!g.isFullScreen,g.isFullScreen?g.media.removeEventListener("click",g.clickToPlayPauseCallback):g.media.addEventListener("click",g.clickToPlayPauseCallback),n()}),g.globalBind("mousemove",function(a){if(m){var b=h.offset();(a.pageY<b.top||a.pageY>b.top+h.outerHeight(!0)||a.pageX<b.left||a.pageX>b.left+h.outerWidth(!0))&&(h.css("pointer-events",""),g.controls.css("pointer-events",""),m=!1)}})}else h.on("mouseover",function(){null!==i&&(clearTimeout(i),delete i);var a=h.offset(),c=b.container.offset();e.positionFullscreenButton(a.left-c.left,a.top-c.top,!0)}).on("mouseout",function(){null!==i&&(clearTimeout(i),delete i),i=setTimeout(function(){e.hideFullscreenButton()},1500)})}b.fullscreenBtn=h,g.globalBind("keydown",function(a){(mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||g.isFullScreen)&&27==a.keyCode&&b.exitFullScreen()})}},cleanfullscreen:function(a){a.exitFullScreen()},containerSizeTimeout:null,enterFullScreen:function(){var b=this;if("native"===b.media.pluginType||!mejs.MediaFeatures.isFirefox&&!b.options.usePluginFullScreen){if(a(document.documentElement).addClass("mejs-fullscreen"),normalHeight=b.container.height(),normalWidth=b.container.width(),"native"===b.media.pluginType)if(mejs.MediaFeatures.hasTrueNativeFullScreen)mejs.MediaFeatures.requestFullScreen(b.container[0]),b.isInIframe&&setTimeout(function d(){if(b.isNativeFullScreen){var c=window.devicePixelRatio||1,e=.002,f=c*a(window).width(),g=screen.width,h=Math.abs(g-f),i=g*e;h>i?b.exitFullScreen():setTimeout(d,500)}},500);else if(mejs.MediaFeatures.hasSemiNativeFullScreen)return void b.media.webkitEnterFullscreen();if(b.isInIframe){var c=b.options.newWindowCallback(this);if(""!==c){if(!mejs.MediaFeatures.hasTrueNativeFullScreen)return b.pause(),void window.open(c,b.id,"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no");setTimeout(function(){b.isNativeFullScreen||(b.pause(),window.open(c,b.id,"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no"))},250)}}b.container.addClass("mejs-container-fullscreen").width("100%").height("100%"),b.containerSizeTimeout=setTimeout(function(){b.container.css({width:"100%",height:"100%"}),b.setControlsSize()},500),"native"===b.media.pluginType?b.$media.width("100%").height("100%"):(b.container.find(".mejs-shim").width("100%").height("100%"),b.media.setVideoSize(a(window).width(),a(window).height())),b.layers.children("div").width("100%").height("100%"),b.fullscreenBtn&&b.fullscreenBtn.removeClass("mejs-fullscreen").addClass("mejs-unfullscreen"),b.setControlsSize(),b.isFullScreen=!0,b.container.find(".mejs-captions-text").css("font-size",screen.width/b.width*1*100+"%"),b.container.find(".mejs-captions-position").css("bottom","45px")}},exitFullScreen:function(){var b=this;return clearTimeout(b.containerSizeTimeout),"native"!==b.media.pluginType&&mejs.MediaFeatures.isFirefox?void b.media.setFullscreen(!1):(mejs.MediaFeatures.hasTrueNativeFullScreen&&(mejs.MediaFeatures.isFullScreen()||b.isFullScreen)&&mejs.MediaFeatures.cancelFullScreen(),a(document.documentElement).removeClass("mejs-fullscreen"),b.container.removeClass("mejs-container-fullscreen").width(normalWidth).height(normalHeight),"native"===b.media.pluginType?b.$media.width(normalWidth).height(normalHeight):(b.container.find(".mejs-shim").width(normalWidth).height(normalHeight),b.media.setVideoSize(normalWidth,normalHeight)),b.layers.children("div").width(normalWidth).height(normalHeight),b.fullscreenBtn.removeClass("mejs-unfullscreen").addClass("mejs-fullscreen"),b.setControlsSize(),b.isFullScreen=!1,b.container.find(".mejs-captions-text").css("font-size",""),void b.container.find(".mejs-captions-position").css("bottom",""))}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{speeds:["2.00","1.50","1.25","1.00","0.75"],defaultSpeed:"1.00",speedChar:"x"}),a.extend(MediaElementPlayer.prototype,{buildspeed:function(b,c,d,e){var f=this;if("native"==f.media.pluginType){var g=null,h=null,i=null,j='<div class="mejs-button mejs-speed-button"><button type="button">'+f.options.defaultSpeed+f.options.speedChar+'</button><div class="mejs-speed-selector"><ul>';-1===a.inArray(f.options.defaultSpeed,f.options.speeds)&&f.options.speeds.push(f.options.defaultSpeed),f.options.speeds.sort(function(a,b){return parseFloat(b)-parseFloat(a)});for(var k=0,l=f.options.speeds.length;l>k;k++)i=f.id+"-speed-"+f.options.speeds[k],j+='<li><input type="radio" name="speed" value="'+f.options.speeds[k]+'" id="'+i+'" '+(f.options.speeds[k]==f.options.defaultSpeed?" checked":"")+' /><label for="'+i+'" '+(f.options.speeds[k]==f.options.defaultSpeed?' class="mejs-speed-selected"':"")+">"+f.options.speeds[k]+f.options.speedChar+"</label></li>";j+="</ul></div></div>",g=a(j).appendTo(c),h=g.find(".mejs-speed-selector"),playbackspeed=f.options.defaultSpeed,h.on("click",'input[type="radio"]',function(){var b=a(this).attr("value");playbackspeed=b,e.playbackRate=parseFloat(b),g.find("button").html(b+f.options.speedChar),g.find(".mejs-speed-selected").removeClass("mejs-speed-selected"),g.find('input[type="radio"]:checked').next().addClass("mejs-speed-selected")}),h.height(g.find(".mejs-speed-selector ul").outerHeight(!0)+g.find(".mejs-speed-translations").outerHeight(!0)).css("top",-1*h.height()+"px")}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{startLanguage:"",tracksText:mejs.i18n.t("Captions/Subtitles"),tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),a.extend(MediaElementPlayer.prototype,{hasChapters:!1,cleartracks:function(a){a&&(a.captions&&a.captions.remove(),a.chapters&&a.chapters.remove(),a.captionsText&&a.captionsText.remove(),a.captionsButton&&a.captionsButton.remove())},buildtracks:function(b,c,d,e){if(0!==b.tracks.length){var f,g=this,h=g.options.tracksAriaLive?'role="log" aria-live="assertive" aria-atomic="false"':"";if(g.domNode.textTracks)for(f=g.domNode.textTracks.length-1;f>=0;f--)g.domNode.textTracks[f].mode="hidden";g.cleartracks(b,c,d,e),b.chapters=a('<div class="mejs-chapters mejs-layer"></div>').prependTo(d).hide(),b.captions=a('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position mejs-captions-position-hover" '+h+'><span class="mejs-captions-text"></span></div></div>').prependTo(d).hide(),b.captionsText=b.captions.find(".mejs-captions-text"),b.captionsButton=a('<div class="mejs-button mejs-captions-button"><button type="button" aria-controls="'+g.id+'" title="'+g.options.tracksText+'" aria-label="'+g.options.tracksText+'"></button><div class="mejs-captions-selector"><ul><li><input type="radio" name="'+b.id+'_captions" id="'+b.id+'_captions_none" value="none" checked="checked" /><label for="'+b.id+'_captions_none">'+mejs.i18n.t("None")+"</label></li></ul></div></div>").appendTo(c);var i=0;for(f=0;f<b.tracks.length;f++)"subtitles"==b.tracks[f].kind&&i++;for(g.options.toggleCaptionsButtonWhenOnlyOne&&1==i?b.captionsButton.on("click",function(){lang=null===b.selectedTrack?b.tracks[0].srclang:"none",b.setTrack(lang)}):(b.captionsButton.on("mouseenter focusin",function(){a(this).find(".mejs-captions-selector").css("visibility","visible")}).on("click","input[type=radio]",function(){lang=this.value,b.setTrack(lang)}),b.captionsButton.on("mouseleave focusout",function(){a(this).find(".mejs-captions-selector").css("visibility","hidden")})),b.options.alwaysShowControls?b.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover"):b.container.bind("controlsshown",function(){b.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover")}).bind("controlshidden",function(){e.paused||b.container.find(".mejs-captions-position").removeClass("mejs-captions-position-hover")}),b.trackToLoad=-1,b.selectedTrack=null,b.isLoadingTrack=!1,f=0;f<b.tracks.length;f++)"subtitles"==b.tracks[f].kind&&b.addTrackButton(b.tracks[f].srclang,b.tracks[f].label);b.loadNextTrack(),e.addEventListener("timeupdate",function(){b.displayCaptions()},!1),""!==b.options.slidesSelector&&(b.slidesContainer=a(b.options.slidesSelector),e.addEventListener("timeupdate",function(){b.displaySlides()},!1)),e.addEventListener("loadedmetadata",function(){b.displayChapters()},!1),b.container.hover(function(){b.hasChapters&&(b.chapters.css("visibility","visible"),b.chapters.fadeIn(200).height(b.chapters.find(".mejs-chapter").outerHeight()))},function(){b.hasChapters&&!e.paused&&b.chapters.fadeOut(200,function(){a(this).css("visibility","hidden"),a(this).css("display","block")})}),null!==b.node.getAttribute("autoplay")&&b.chapters.css("visibility","hidden")}},setTrack:function(a){var b,c=this;if("none"==a)c.selectedTrack=null,c.captionsButton.removeClass("mejs-captions-enabled");else for(b=0;b<c.tracks.length;b++)if(c.tracks[b].srclang==a){null===c.selectedTrack&&c.captionsButton.addClass("mejs-captions-enabled"),c.selectedTrack=c.tracks[b],c.captions.attr("lang",c.selectedTrack.srclang),c.displayCaptions();break}},loadNextTrack:function(){var a=this;a.trackToLoad++,a.trackToLoad<a.tracks.length?(a.isLoadingTrack=!0,a.loadTrack(a.trackToLoad)):(a.isLoadingTrack=!1,a.checkForTracks())},loadTrack:function(b){var c=this,d=c.tracks[b],e=function(){d.isLoaded=!0,c.enableTrackButton(d.srclang,d.label),c.loadNextTrack()};a.ajax({url:d.src,dataType:"text",success:function(a){d.entries="string"==typeof a&&/<tt\s+xml/gi.exec(a)?mejs.TrackFormatParser.dfxp.parse(a):mejs.TrackFormatParser.webvtt.parse(a),e(),"chapters"==d.kind&&c.media.addEventListener("play",function(){c.media.duration>0&&c.displayChapters(d)},!1),"slides"==d.kind&&c.setupSlides(d)},error:function(){c.loadNextTrack()}})},enableTrackButton:function(b,c){var d=this;""===c&&(c=mejs.language.codes[b]||b),d.captionsButton.find("input[value="+b+"]").prop("disabled",!1).siblings("label").html(c),d.options.startLanguage==b&&a("#"+d.id+"_captions_"+b).prop("checked",!0).trigger("click"),d.adjustLanguageBox()},addTrackButton:function(b,c){var d=this;""===c&&(c=mejs.language.codes[b]||b),d.captionsButton.find("ul").append(a('<li><input type="radio" name="'+d.id+'_captions" id="'+d.id+"_captions_"+b+'" value="'+b+'" disabled="disabled" /><label for="'+d.id+"_captions_"+b+'">'+c+" (loading)</label></li>")),d.adjustLanguageBox(),d.container.find(".mejs-captions-translations option[value="+b+"]").remove()},adjustLanguageBox:function(){var a=this;a.captionsButton.find(".mejs-captions-selector").height(a.captionsButton.find(".mejs-captions-selector ul").outerHeight(!0)+a.captionsButton.find(".mejs-captions-translations").outerHeight(!0))},checkForTracks:function(){var a=this,b=!1;if(a.options.hideCaptionsButtonWhenEmpty){for(i=0;i<a.tracks.length;i++)if("subtitles"==a.tracks[i].kind){b=!0;break}b||(a.captionsButton.hide(),a.setControlsSize())}},displayCaptions:function(){if("undefined"!=typeof this.tracks){var a,b=this,c=b.selectedTrack;if(null!==c&&c.isLoaded){for(a=0;a<c.entries.times.length;a++)if(b.media.currentTime>=c.entries.times[a].start&&b.media.currentTime<=c.entries.times[a].stop)return b.captionsText.html(c.entries.text[a]).attr("class","mejs-captions-text "+(c.entries.times[a].identifier||"")),void b.captions.show().height(0);b.captions.hide()}else b.captions.hide()}},setupSlides:function(a){var b=this;b.slides=a,b.slides.entries.imgs=[b.slides.entries.text.length],b.showSlide(0)},showSlide:function(b){if("undefined"!=typeof this.tracks&&"undefined"!=typeof this.slidesContainer){var c=this,d=c.slides.entries.text[b],e=c.slides.entries.imgs[b];"undefined"==typeof e||"undefined"==typeof e.fadeIn?c.slides.entries.imgs[b]=e=a('<img src="'+d+'">').on("load",function(){e.appendTo(c.slidesContainer).hide().fadeIn().siblings(":visible").fadeOut()}):e.is(":visible")||e.is(":animated")||e.fadeIn().siblings(":visible").fadeOut()}},displaySlides:function(){if("undefined"!=typeof this.slides){var a,b=this,c=b.slides;for(a=0;a<c.entries.times.length;a++)if(b.media.currentTime>=c.entries.times[a].start&&b.media.currentTime<=c.entries.times[a].stop)return void b.showSlide(a)}},displayChapters:function(){var a,b=this;for(a=0;a<b.tracks.length;a++)if("chapters"==b.tracks[a].kind&&b.tracks[a].isLoaded){b.drawChapters(b.tracks[a]),b.hasChapters=!0;break}},drawChapters:function(b){var c,d,e=this,f=0,g=0;for(e.chapters.empty(),c=0;c<b.entries.times.length;c++)d=b.entries.times[c].stop-b.entries.times[c].start,f=Math.floor(d/e.media.duration*100),(f+g>100||c==b.entries.times.length-1&&100>f+g)&&(f=100-g),e.chapters.append(a('<div class="mejs-chapter" rel="'+b.entries.times[c].start+'" style="left: '+g.toString()+"%;width: "+f.toString()+'%;"><div class="mejs-chapter-block'+(c==b.entries.times.length-1?" mejs-chapter-block-last":"")+'"><span class="ch-title">'+b.entries.text[c]+'</span><span class="ch-time">'+mejs.Utility.secondsToTimeCode(b.entries.times[c].start)+"&ndash;"+mejs.Utility.secondsToTimeCode(b.entries.times[c].stop)+"</span></div></div>")),g+=f;e.chapters.find("div.mejs-chapter").click(function(){e.media.setCurrentTime(parseFloat(a(this).attr("rel"))),e.media.paused&&e.media.play()}),e.chapters.show()}}),mejs.language={codes:{af:"Afrikaans",sq:"Albanian",ar:"Arabic",be:"Belarusian",bg:"Bulgarian",ca:"Catalan",zh:"Chinese","zh-cn":"Chinese Simplified","zh-tw":"Chinese Traditional",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch",en:"English",et:"Estonian",fl:"Filipino",fi:"Finnish",fr:"French",gl:"Galician",de:"German",el:"Greek",ht:"Haitian Creole",iw:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",ko:"Korean",lv:"Latvian",lt:"Lithuanian",mk:"Macedonian",ms:"Malay",mt:"Maltese",no:"Norwegian",fa:"Persian",pl:"Polish",pt:"Portuguese",ro:"Romanian",ru:"Russian",sr:"Serbian",sk:"Slovak",sl:"Slovenian",es:"Spanish",sw:"Swahili",sv:"Swedish",tl:"Tagalog",th:"Thai",tr:"Turkish",uk:"Ukrainian",vi:"Vietnamese",cy:"Welsh",yi:"Yiddish"}},mejs.TrackFormatParser={webvtt:{pattern_timecode:/^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,parse:function(b){for(var c,d,e,f=0,g=mejs.TrackFormatParser.split2(b,/\r?\n/),h={text:[],times:[]};f<g.length;f++){if(c=this.pattern_timecode.exec(g[f]),c&&f<g.length){for(f-1>=0&&""!==g[f-1]&&(e=g[f-1]),f++,d=g[f],f++;""!==g[f]&&f<g.length;)d=d+"\n"+g[f],f++;d=a.trim(d).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),h.text.push(d),h.times.push({identifier:e,start:0===mejs.Utility.convertSMPTEtoSeconds(c[1])?.2:mejs.Utility.convertSMPTEtoSeconds(c[1]),stop:mejs.Utility.convertSMPTEtoSeconds(c[3]),settings:c[5]})}e=""}return h}},dfxp:{parse:function(b){b=a(b).filter("tt");var c,d,e=0,f=b.children("div").eq(0),g=f.find("p"),h=b.find("#"+f.attr("style")),i={text:[],times:[]};if(h.length){var j=h.removeAttr("id").get(0).attributes;if(j.length)for(c={},e=0;e<j.length;e++)c[j[e].name.split(":")[1]]=j[e].value}for(e=0;e<g.length;e++){var k,l={start:null,stop:null,style:null};if(g.eq(e).attr("begin")&&(l.start=mejs.Utility.convertSMPTEtoSeconds(g.eq(e).attr("begin"))),!l.start&&g.eq(e-1).attr("end")&&(l.start=mejs.Utility.convertSMPTEtoSeconds(g.eq(e-1).attr("end"))),g.eq(e).attr("end")&&(l.stop=mejs.Utility.convertSMPTEtoSeconds(g.eq(e).attr("end"))),!l.stop&&g.eq(e+1).attr("begin")&&(l.stop=mejs.Utility.convertSMPTEtoSeconds(g.eq(e+1).attr("begin"))),c){k="";for(var m in c)k+=m+":"+c[m]+";"}k&&(l.style=k),0===l.start&&(l.start=.2),i.times.push(l),d=a.trim(g.eq(e).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),i.text.push(d),0===i.times.start&&(i.times.start=2)}return i}},split2:function(a,b){return a.split(b)}},3!="x\n\ny".split(/\n/gi).length&&(mejs.TrackFormatParser.split2=function(a,b){var c,d=[],e="";for(c=0;c<a.length;c++)e+=a.substring(c,c+1),b.test(e)&&(d.push(e.replace(b,"")),e="");return d.push(e),d})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{contextMenuItems:[{render:function(a){return"undefined"==typeof a.enterFullScreen?null:mejs.i18n.t(a.isFullScreen?"Turn off Fullscreen":"Go Fullscreen")},click:function(a){a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}},{render:function(a){return mejs.i18n.t(a.media.muted?"Unmute":"Mute")},click:function(a){a.setMuted(a.media.muted?!1:!0)}},{isSeparator:!0},{render:function(){return mejs.i18n.t("Download Video")},click:function(a){window.location.href=a.media.currentSrc}}]}),a.extend(MediaElementPlayer.prototype,{buildcontextmenu:function(b){b.contextMenu=a('<div class="mejs-contextmenu"></div>').appendTo(a("body")).hide(),b.container.bind("contextmenu",function(a){return b.isContextMenuEnabled?(a.preventDefault(),b.renderContextMenu(a.clientX-1,a.clientY-1),!1):void 0}),b.container.bind("click",function(){b.contextMenu.hide()}),b.contextMenu.bind("mouseleave",function(){b.startContextMenuTimer()})},cleancontextmenu:function(a){a.contextMenu.remove()},isContextMenuEnabled:!0,enableContextMenu:function(){this.isContextMenuEnabled=!0},disableContextMenu:function(){this.isContextMenuEnabled=!1},contextMenuTimeout:null,startContextMenuTimer:function(){var a=this;a.killContextMenuTimer(),a.contextMenuTimer=setTimeout(function(){a.hideContextMenu(),a.killContextMenuTimer()},750)},killContextMenuTimer:function(){var a=this.contextMenuTimer;null!=a&&(clearTimeout(a),delete a,a=null)},hideContextMenu:function(){this.contextMenu.hide()},renderContextMenu:function(b,c){for(var d=this,e="",f=d.options.contextMenuItems,g=0,h=f.length;h>g;g++)if(f[g].isSeparator)e+='<div class="mejs-contextmenu-separator"></div>';else{var i=f[g].render(d);null!=i&&(e+='<div class="mejs-contextmenu-item" data-itemindex="'+g+'" id="element-'+1e6*Math.random()+'">'+i+"</div>")}d.contextMenu.empty().append(a(e)).css({top:c,left:b}).show(),d.contextMenu.find(".mejs-contextmenu-item").each(function(){var b=a(this),c=parseInt(b.data("itemindex"),10),e=d.options.contextMenuItems[c];"undefined"!=typeof e.show&&e.show(b,d),b.click(function(){"undefined"!=typeof e.click&&e.click(d),d.contextMenu.hide()})}),setTimeout(function(){d.killControlsTimer("rev3")},100)}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{postrollCloseText:mejs.i18n.t("Close")}),a.extend(MediaElementPlayer.prototype,{buildpostroll:function(b,c,d){var e=this,f=e.container.find('link[rel="postroll"]').attr("href");"undefined"!=typeof f&&(b.postroll=a('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">'+e.options.postrollCloseText+'</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(d).hide(),e.media.addEventListener("ended",function(){a.ajax({dataType:"html",url:f,success:function(a){d.find(".mejs-postroll-layer-content").html(a)}}),b.postroll.show()},!1))}})}(mejs.$);
\ No newline at end of file
+"undefined"!=typeof jQuery?mejs.$=jQuery:"undefined"!=typeof Zepto?(mejs.$=Zepto,Zepto.fn.outerWidth=function(a){var b=$(this).width();return a&&(b+=parseInt($(this).css("margin-right"),10),b+=parseInt($(this).css("margin-left"),10)),b}):"undefined"!=typeof ender&&(mejs.$=ender),function(a){mejs.MepDefaults={poster:"",showPosterWhenEnded:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:30,defaultSeekBackwardInterval:function(a){return.05*a.duration},defaultSeekForwardInterval:function(a){return.05*a.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,autosizeProgress:!0,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,clickToPlayPause:!0,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,enableKeyboard:!0,pauseOtherPlayers:!0,keyActions:[{keys:[32,179],action:function(a,b){b.paused||b.ended?b.play():b.pause()}},{keys:[38],action:function(a,b){a.container.find(".mejs-volume-slider").css("display","block"),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.volume+.1,1);b.setVolume(c)}},{keys:[40],action:function(a,b){a.container.find(".mejs-volume-slider").css("display","block"),a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.volume-.1,0);b.setVolume(c)}},{keys:[37,227],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(c)}}},{keys:[39,228],action:function(a,b){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var c=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(c)}}},{keys:[70],action:function(a){"undefined"!=typeof a.enterFullScreen&&(a.isFullScreen?a.exitFullScreen():a.enterFullScreen())}},{keys:[77],action:function(a){a.container.find(".mejs-volume-slider").css("display","block"),a.isVideo&&(a.showControls(),a.startControlsTimer()),a.setMuted(a.media.muted?!1:!0)}}]},mejs.mepIndex=0,mejs.players={},mejs.MediaElementPlayer=function(b,c){if(!(this instanceof mejs.MediaElementPlayer))return new mejs.MediaElementPlayer(b,c);var d=this;return d.$media=d.$node=a(b),d.node=d.media=d.$media[0],d.node?"undefined"!=typeof d.node.player?d.node.player:("undefined"==typeof c&&(c=d.$node.data("mejsoptions")),d.options=a.extend({},mejs.MepDefaults,c),d.options.timeFormat||(d.options.timeFormat="mm:ss",d.options.alwaysShowHours&&(d.options.timeFormat="hh:mm:ss"),d.options.showTimecodeFrameCount&&(d.options.timeFormat+=":ff")),mejs.Utility.calculateTimeFormat(0,d.options,d.options.framesPerSecond||25),d.id="mep_"+mejs.mepIndex++,mejs.players[d.id]=d,d.init(),d):void 0},mejs.MediaElementPlayer.prototype={hasFocus:!1,controlsAreVisible:!0,init:function(){var b=this,c=mejs.MediaFeatures,d=a.extend(!0,{},b.options,{success:function(a,c){b.meReady(a,c)},error:function(a){b.handleError(a)}}),e=b.media.tagName.toLowerCase();if(b.isDynamic="audio"!==e&&"video"!==e,b.isVideo=b.isDynamic?b.options.isVideo:"audio"!==e&&b.options.isVideo,c.isiPad&&b.options.iPadUseNativeControls||c.isiPhone&&b.options.iPhoneUseNativeControls)b.$media.attr("controls","controls"),c.isiPad&&null!==b.media.getAttribute("autoplay")&&b.play();else if(c.isAndroid&&b.options.AndroidUseNativeControls);else{b.$media.removeAttr("controls");var f=mejs.i18n.t(b.isVideo?"Video Player":"Audio Player");if(a('<span class="mejs-offscreen">'+f+"</span>").insertBefore(b.$media),b.container=a('<div id="'+b.id+'" class="mejs-container '+(mejs.MediaFeatures.svg?"svg":"no-svg")+'" tabindex="0" role="application" aria-label="'+f+'"><div class="mejs-inner"><div class="mejs-mediaelement"></div><div class="mejs-layers"></div><div class="mejs-controls"></div><div class="mejs-clear"></div></div></div>').addClass(b.$media[0].className).insertBefore(b.$media).focus(function(){if(!b.controlsAreVisible){b.showControls(!0);var a=b.container.find(".mejs-playpause-button > button");a.focus()}}),b.container.addClass((c.isAndroid?"mejs-android ":"")+(c.isiOS?"mejs-ios ":"")+(c.isiPad?"mejs-ipad ":"")+(c.isiPhone?"mejs-iphone ":"")+(b.isVideo?"mejs-video ":"mejs-audio ")),c.isiOS){var g=b.$media.clone();b.container.find(".mejs-mediaelement").append(g),b.$media.remove(),b.$node=b.$media=g,b.node=b.media=g[0]}else b.container.find(".mejs-mediaelement").append(b.$media);b.node.player=b,b.controls=b.container.find(".mejs-controls"),b.layers=b.container.find(".mejs-layers");var h=b.isVideo?"video":"audio",i=h.substring(0,1).toUpperCase()+h.substring(1);b.width=b.options[h+"Width"]>0||b.options[h+"Width"].toString().indexOf("%")>-1?b.options[h+"Width"]:""!==b.media.style.width&&null!==b.media.style.width?b.media.style.width:null!==b.media.getAttribute("width")?b.$media.attr("width"):b.options["default"+i+"Width"],b.height=b.options[h+"Height"]>0||b.options[h+"Height"].toString().indexOf("%")>-1?b.options[h+"Height"]:""!==b.media.style.height&&null!==b.media.style.height?b.media.style.height:null!==b.$media[0].getAttribute("height")?b.$media.attr("height"):b.options["default"+i+"Height"],b.setPlayerSize(b.width,b.height),d.pluginWidth=b.width,d.pluginHeight=b.height}mejs.MediaElement(b.$media[0],d),"undefined"!=typeof b.container&&b.controlsAreVisible&&b.container.trigger("controlsshown")},showControls:function(a){var b=this;a="undefined"==typeof a||a,b.controlsAreVisible||(a?(b.controls.css("visibility","visible").stop(!0,!0).fadeIn(200,function(){b.controlsAreVisible=!0,b.container.trigger("controlsshown")}),b.container.find(".mejs-control").css("visibility","visible").stop(!0,!0).fadeIn(200,function(){b.controlsAreVisible=!0})):(b.controls.css("visibility","visible").css("display","block"),b.container.find(".mejs-control").css("visibility","visible").css("display","block"),b.controlsAreVisible=!0,b.container.trigger("controlsshown")),b.setControlsSize())},hideControls:function(b){var c=this;b="undefined"==typeof b||b,!c.controlsAreVisible||c.options.alwaysShowControls||c.keyboardAction||(b?(c.controls.stop(!0,!0).fadeOut(200,function(){a(this).css("visibility","hidden").css("display","block"),c.controlsAreVisible=!1,c.container.trigger("controlshidden")}),c.container.find(".mejs-control").stop(!0,!0).fadeOut(200,function(){a(this).css("visibility","hidden").css("display","block")})):(c.controls.css("visibility","hidden").css("display","block"),c.container.find(".mejs-control").css("visibility","hidden").css("display","block"),c.controlsAreVisible=!1,c.container.trigger("controlshidden")))},controlsTimer:null,startControlsTimer:function(a){var b=this;a="undefined"!=typeof a?a:1500,b.killControlsTimer("start"),b.controlsTimer=setTimeout(function(){b.hideControls(),b.killControlsTimer("hide")},a)},killControlsTimer:function(){var a=this;null!==a.controlsTimer&&(clearTimeout(a.controlsTimer),delete a.controlsTimer,a.controlsTimer=null)},controlsEnabled:!0,disableControls:function(){var a=this;a.killControlsTimer(),a.hideControls(!1),this.controlsEnabled=!1},enableControls:function(){var a=this;a.showControls(!1),a.controlsEnabled=!0},meReady:function(b,c){var d,e,f=this,g=mejs.MediaFeatures,h=c.getAttribute("autoplay"),i=!("undefined"==typeof h||null===h||"false"===h);if(!f.created){if(f.created=!0,f.media=b,f.domNode=c,!(g.isAndroid&&f.options.AndroidUseNativeControls||g.isiPad&&f.options.iPadUseNativeControls||g.isiPhone&&f.options.iPhoneUseNativeControls)){f.buildposter(f,f.controls,f.layers,f.media),f.buildkeyboard(f,f.controls,f.layers,f.media),f.buildoverlays(f,f.controls,f.layers,f.media),f.findTracks();for(d in f.options.features)if(e=f.options.features[d],f["build"+e])try{f["build"+e](f,f.controls,f.layers,f.media)}catch(j){}f.container.trigger("controlsready"),f.setPlayerSize(f.width,f.height),f.setControlsSize(),f.isVideo&&(mejs.MediaFeatures.hasTouch?f.$media.bind("touchstart",function(){f.controlsAreVisible?f.hideControls(!1):f.controlsEnabled&&f.showControls(!1)}):(f.clickToPlayPauseCallback=function(){f.options.clickToPlayPause&&(f.media.paused?f.play():f.pause())},f.media.addEventListener("click",f.clickToPlayPauseCallback,!1),f.container.bind("mouseenter",function(){f.controlsEnabled&&(f.options.alwaysShowControls||(f.killControlsTimer("enter"),f.showControls(),f.startControlsTimer(2500)))}).bind("mousemove",function(){f.controlsEnabled&&(f.controlsAreVisible||f.showControls(),f.options.alwaysShowControls||f.startControlsTimer(2500))}).bind("mouseleave",function(){f.controlsEnabled&&(f.media.paused||f.options.alwaysShowControls||f.startControlsTimer(1e3))})),f.options.hideVideoControlsOnLoad&&f.hideControls(!1),i&&!f.options.alwaysShowControls&&f.hideControls(),f.options.enableAutosize&&f.media.addEventListener("loadedmetadata",function(a){f.options.videoHeight<=0&&null===f.domNode.getAttribute("height")&&!isNaN(a.target.videoHeight)&&(f.setPlayerSize(a.target.videoWidth,a.target.videoHeight),f.setControlsSize(),f.media.setVideoSize(a.target.videoWidth,a.target.videoHeight))},!1)),b.addEventListener("play",function(){var a;for(a in mejs.players){var b=mejs.players[a];b.id==f.id||!f.options.pauseOtherPlayers||b.paused||b.ended||b.pause(),b.hasFocus=!1}f.hasFocus=!0},!1),f.media.addEventListener("ended",function(){if(f.options.autoRewind)try{f.media.setCurrentTime(0),window.setTimeout(function(){a(f.container).find(".mejs-overlay-loading").parent().hide()},20)}catch(b){}f.media.pause(),f.setProgressRail&&f.setProgressRail(),f.setCurrentRail&&f.setCurrentRail(),f.options.loop?f.play():!f.options.alwaysShowControls&&f.controlsEnabled&&f.showControls()},!1),f.media.addEventListener("loadedmetadata",function(){f.updateDuration&&f.updateDuration(),f.updateCurrent&&f.updateCurrent(),f.isFullScreen||(f.setPlayerSize(f.width,f.height),f.setControlsSize())},!1);var k=null;f.media.addEventListener("timeupdate",function(){k!==this.duration&&(k=this.duration,mejs.Utility.calculateTimeFormat(k,f.options,f.options.framesPerSecond||25))},!1),f.container.focusout(function(b){if(b.relatedTarget){var c=a(b.relatedTarget);f.keyboardAction&&0===c.parents(".mejs-container").length&&(f.keyboardAction=!1,f.hideControls(!0))}}),setTimeout(function(){f.setPlayerSize(f.width,f.height),f.setControlsSize()},50),f.globalBind("resize",function(){f.isFullScreen||mejs.MediaFeatures.hasTrueNativeFullScreen&&document.webkitIsFullScreen||f.setPlayerSize(f.width,f.height),f.setControlsSize()}),"youtube"==f.media.pluginType&&(g.isiOS||g.isAndroid)&&f.container.find(".mejs-overlay-play").hide()}i&&"native"==b.pluginType&&f.play(),f.options.success&&("string"==typeof f.options.success?window[f.options.success](f.media,f.domNode,f):f.options.success(f.media,f.domNode,f))}},handleError:function(a){var b=this;b.controls.hide(),b.options.error&&b.options.error(a)},setPlayerSize:function(b,c){var d=this;if(!d.options.setDimensions)return!1;if("undefined"!=typeof b&&(d.width=b),"undefined"!=typeof c&&(d.height=c),d.height.toString().indexOf("%")>0||"none"!==d.$node.css("max-width")&&"t.width"!==d.$node.css("max-width")||d.$node[0].currentStyle&&"100%"===d.$node[0].currentStyle.maxWidth){var e=function(){return d.isVideo?d.media.videoWidth&&d.media.videoWidth>0?d.media.videoWidth:null!==d.media.getAttribute("width")?d.media.getAttribute("width"):d.options.defaultVideoWidth:d.options.defaultAudioWidth}(),f=function(){return d.isVideo?d.media.videoHeight&&d.media.videoHeight>0?d.media.videoHeight:null!==d.media.getAttribute("height")?d.media.getAttribute("height"):d.options.defaultVideoHeight:d.options.defaultAudioHeight}(),g=d.container.parent().closest(":visible").width(),h=d.container.parent().closest(":visible").height(),i=d.isVideo||!d.options.autosizeProgress?parseInt(g*f/e,10):f;isNaN(i)&&(i=h),d.container.parent().length>0&&"body"===d.container.parent()[0].tagName.toLowerCase()&&(g=a(window).width(),i=a(window).height()),i&&g&&(d.container.width(g).height(i),d.$media.add(d.container.find(".mejs-shim")).width("100%").height("100%"),d.isVideo&&d.media.setVideoSize&&d.media.setVideoSize(g,i),d.layers.children(".mejs-layer").width("100%").height("100%"))}else d.container.width(d.width).height(d.height),d.layers.children(".mejs-layer").width(d.width).height(d.height)},setControlsSize:function(){var b=this,c=0,d=0,e=b.controls.find(".mejs-time-rail"),f=b.controls.find(".mejs-time-total"),g=e.siblings(),h=g.last(),i=null;if(b.container.is(":visible")&&e.length&&e.is(":visible")){b.options&&!b.options.autosizeProgress&&(d=parseInt(e.css("width"),10)),0!==d&&d||(g.each(function(){var b=a(this);"absolute"!=b.css("position")&&b.is(":visible")&&(c+=a(this).outerWidth(!0))}),d=b.controls.width()-c-(e.outerWidth(!0)-e.width()));do e.width(d),f.width(d-(f.outerWidth(!0)-f.width())),"absolute"!=h.css("position")&&(i=h.length?h.position():null,d--);while(null!==i&&i.top>0&&d>0);b.container.trigger("controlsresize")}},buildposter:function(b,c,d,e){var f=this,g=a('<div class="mejs-poster mejs-layer"></div>').appendTo(d),h=b.$media.attr("poster");""!==b.options.poster&&(h=b.options.poster),h?f.setPoster(h):g.hide(),e.addEventListener("play",function(){g.hide()},!1),b.options.showPosterWhenEnded&&b.options.autoRewind&&e.addEventListener("ended",function(){g.show()},!1)},setPoster:function(b){var c=this,d=c.container.find(".mejs-poster"),e=d.find("img");0===e.length&&(e=a('<img width="100%" height="100%" alt="" />').appendTo(d)),e.attr("src",b),d.css({"background-image":"url("+b+")"})},buildoverlays:function(b,c,d,e){var f=this;if(b.isVideo){var g=a('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-loading"><span></span></div></div>').hide().appendTo(d),h=a('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-error"></div></div>').hide().appendTo(d),i=a('<div class="mejs-overlay mejs-layer mejs-overlay-play"><div class="mejs-overlay-button"></div></div>').appendTo(d).bind("click",function(){f.options.clickToPlayPause&&e.paused&&e.play()});e.addEventListener("play",function(){i.hide(),g.hide(),c.find(".mejs-time-buffering").hide(),h.hide()},!1),e.addEventListener("playing",function(){i.hide(),g.hide(),c.find(".mejs-time-buffering").hide(),h.hide()},!1),e.addEventListener("seeking",function(){g.show(),c.find(".mejs-time-buffering").show()},!1),e.addEventListener("seeked",function(){g.hide(),c.find(".mejs-time-buffering").hide()},!1),e.addEventListener("pause",function(){mejs.MediaFeatures.isiPhone||i.show()},!1),e.addEventListener("waiting",function(){g.show(),c.find(".mejs-time-buffering").show()},!1),e.addEventListener("loadeddata",function(){g.show(),c.find(".mejs-time-buffering").show(),mejs.MediaFeatures.isAndroid&&(e.canplayTimeout=window.setTimeout(function(){if(document.createEvent){var a=document.createEvent("HTMLEvents");return a.initEvent("canplay",!0,!0),e.dispatchEvent(a)}},300))},!1),e.addEventListener("canplay",function(){g.hide(),c.find(".mejs-time-buffering").hide(),clearTimeout(e.canplayTimeout)},!1),e.addEventListener("error",function(a){f.handleError(a),g.hide(),i.hide(),h.show(),h.find(".mejs-overlay-error").html("Error loading this resource")},!1),e.addEventListener("keydown",function(a){f.onkeydown(b,e,a)},!1)}},buildkeyboard:function(b,c,d,e){var f=this;f.container.keydown(function(){f.keyboardAction=!0}),f.globalBind("keydown",function(c){return b.hasFocus=0!==a(c.target).closest(".mejs-container").length,f.onkeydown(b,e,c)}),f.globalBind("click",function(c){b.hasFocus=0!==a(c.target).closest(".mejs-container").length})},onkeydown:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var d=0,e=a.options.keyActions.length;e>d;d++)for(var f=a.options.keyActions[d],g=0,h=f.keys.length;h>g;g++)if(c.keyCode==f.keys[g])return"function"==typeof c.preventDefault&&c.preventDefault(),f.action(a,b,c.keyCode),!1;return!0},findTracks:function(){var b=this,c=b.$media.find("track");b.tracks=[],c.each(function(c,d){d=a(d),b.tracks.push({srclang:d.attr("srclang")?d.attr("srclang").toLowerCase():"",src:d.attr("src"),kind:d.attr("kind"),label:d.attr("label")||"",entries:[],isLoaded:!1})})},changeSkin:function(a){this.container[0].className="mejs-container "+a,this.setPlayerSize(this.width,this.height),this.setControlsSize()},play:function(){this.load(),this.media.play()},pause:function(){try{this.media.pause()}catch(a){}},load:function(){this.isLoaded||this.media.load(),this.isLoaded=!0},setMuted:function(a){this.media.setMuted(a)},setCurrentTime:function(a){this.media.setCurrentTime(a)},getCurrentTime:function(){return this.media.currentTime},setVolume:function(a){this.media.setVolume(a)},getVolume:function(){return this.media.volume},setSrc:function(a){this.media.setSrc(a)},remove:function(){var a,b,c=this;c.container.prev(".mejs-offscreen").remove();for(a in c.options.features)if(b=c.options.features[a],c["clean"+b])try{c["clean"+b](c)}catch(d){}c.isDynamic?c.$node.insertBefore(c.container):(c.$media.prop("controls",!0),c.$node.clone().insertBefore(c.container).show(),c.$node.remove()),"native"!==c.media.pluginType&&c.media.remove(),delete mejs.players[c.id],"object"==typeof c.container&&c.container.remove(),c.globalUnbind(),delete c.node.player},rebuildtracks:function(){var a=this;a.findTracks(),a.buildtracks(a,a.controls,a.layers,a.media)},resetSize:function(){var a=this;setTimeout(function(){a.setPlayerSize(a.width,a.height),a.setControlsSize()},50)}},function(){function b(b,d){var e={d:[],w:[]};return a.each((b||"").split(" "),function(a,b){var f=b+"."+d;0===f.indexOf(".")?(e.d.push(f),e.w.push(f)):e[c.test(b)?"w":"d"].push(f)}),e.d=e.d.join(" "),e.w=e.w.join(" "),e}var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;mejs.MediaElementPlayer.prototype.globalBind=function(c,d,e){var f=this;c=b(c,f.id),c.d&&a(document).bind(c.d,d,e),c.w&&a(window).bind(c.w,d,e)},mejs.MediaElementPlayer.prototype.globalUnbind=function(c,d){var e=this;c=b(c,e.id),c.d&&a(document).unbind(c.d,d),c.w&&a(window).unbind(c.w,d)}}(),"undefined"!=typeof a&&(a.fn.mediaelementplayer=function(b){return this.each(b===!1?function(){var b=a(this).data("mediaelementplayer");b&&b.remove(),a(this).removeData("mediaelementplayer")}:function(){a(this).data("mediaelementplayer",new mejs.MediaElementPlayer(this,b))}),this},a(document).ready(function(){a(".mejs-player").mediaelementplayer()})),window.MediaElementPlayer=mejs.MediaElementPlayer}(mejs.$),function(a){a.extend(mejs.MepDefaults,{playText:mejs.i18n.t("Play"),pauseText:mejs.i18n.t("Pause")}),a.extend(MediaElementPlayer.prototype,{buildplaypause:function(b,c,d,e){function f(a){"play"===a?(i.removeClass("mejs-play").addClass("mejs-pause"),j.attr({title:h.pauseText,"aria-label":h.pauseText})):(i.removeClass("mejs-pause").addClass("mejs-play"),j.attr({title:h.playText,"aria-label":h.playText}))}var g=this,h=g.options,i=a('<div class="mejs-button mejs-playpause-button mejs-play" ><button type="button" aria-controls="'+g.id+'" title="'+h.playText+'" aria-label="'+h.playText+'"></button></div>').appendTo(c).click(function(a){return a.preventDefault(),e.paused?e.play():e.pause(),!1}),j=i.find("button");f("pse"),e.addEventListener("play",function(){f("play")},!1),e.addEventListener("playing",function(){f("play")},!1),e.addEventListener("pause",function(){f("pse")},!1),e.addEventListener("paused",function(){f("pse")},!1)}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{stopText:"Stop"}),a.extend(MediaElementPlayer.prototype,{buildstop:function(b,c,d,e){var f=this;a('<div class="mejs-button mejs-stop-button mejs-stop"><button type="button" aria-controls="'+f.id+'" title="'+f.options.stopText+'" aria-label="'+f.options.stopText+'"></button></div>').appendTo(c).click(function(){e.paused||e.pause(),e.currentTime>0&&(e.setCurrentTime(0),e.pause(),c.find(".mejs-time-current").width("0px"),c.find(".mejs-time-handle").css("left","0px"),c.find(".mejs-time-float-current").html(mejs.Utility.secondsToTimeCode(0,b.options)),c.find(".mejs-currenttime").html(mejs.Utility.secondsToTimeCode(0,b.options)),d.find(".mejs-poster").show())})}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{progessHelpText:mejs.i18n.t("Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.")}),a.extend(MediaElementPlayer.prototype,{buildprogress:function(b,c,d,e){a('<div class="mejs-time-rail"><span  class="mejs-time-total mejs-time-slider"><span class="mejs-time-buffering"></span><span class="mejs-time-loaded"></span><span class="mejs-time-current"></span><span class="mejs-time-handle"></span><span class="mejs-time-float"><span class="mejs-time-float-current">00:00</span><span class="mejs-time-float-corner"></span></span></span></div>').appendTo(c),c.find(".mejs-time-buffering").hide();var f=this,g=c.find(".mejs-time-total"),h=c.find(".mejs-time-loaded"),i=c.find(".mejs-time-current"),j=c.find(".mejs-time-handle"),k=c.find(".mejs-time-float"),l=c.find(".mejs-time-float-current"),m=c.find(".mejs-time-slider"),n=function(a){var c,d=g.offset(),f=g.width(),h=0,i=0,j=0;c=a.originalEvent&&a.originalEvent.changedTouches?a.originalEvent.changedTouches[0].pageX:a.changedTouches?a.changedTouches[0].pageX:a.pageX,e.duration&&(c<d.left?c=d.left:c>f+d.left&&(c=f+d.left),j=c-d.left,h=j/f,i=.02>=h?0:h*e.duration,o&&i!==e.currentTime&&e.setCurrentTime(i),mejs.MediaFeatures.hasTouch||(k.css("left",j),l.html(mejs.Utility.secondsToTimeCode(i,b.options)),k.show()))},o=!1,p=!1,q=0,r=!1,s=b.options.autoRewind,t=function(){var a=e.currentTime,c=mejs.i18n.t("Time Slider"),d=mejs.Utility.secondsToTimeCode(a,b.options),f=e.duration;m.attr({"aria-label":c,"aria-valuemin":0,"aria-valuemax":f,"aria-valuenow":a,"aria-valuetext":d,role:"slider",tabindex:0})},u=function(){var a=new Date;a-q>=1e3&&e.play()};m.bind("focus",function(){b.options.autoRewind=!1}),m.bind("blur",function(){b.options.autoRewind=s}),m.bind("keydown",function(a){new Date-q>=1e3&&(r=e.paused);var b=a.keyCode,c=e.duration,d=e.currentTime;switch(b){case 37:d-=1;break;case 39:d+=1;break;case 38:d+=Math.floor(.1*c);break;case 40:d-=Math.floor(.1*c);break;case 36:d=0;break;case 35:d=c;break;case 10:return void(e.paused?e.play():e.pause());case 13:return void(e.paused?e.play():e.pause());default:return}return d=0>d?0:d>=c?c:Math.floor(d),q=new Date,r||e.pause(),d<e.duration&&!r&&setTimeout(u,1100),e.setCurrentTime(d),a.preventDefault(),a.stopPropagation(),!1}),g.bind("mousedown touchstart",function(a){(1===a.which||0===a.which)&&(o=!0,n(a),f.globalBind("mousemove.dur touchmove.dur",function(a){n(a)}),f.globalBind("mouseup.dur touchend.dur",function(){o=!1,k.hide(),f.globalUnbind(".dur")}))}).bind("mouseenter",function(){p=!0,f.globalBind("mousemove.dur",function(a){n(a)}),mejs.MediaFeatures.hasTouch||k.show()}).bind("mouseleave",function(){p=!1,o||(f.globalUnbind(".dur"),k.hide())}),e.addEventListener("progress",function(a){b.setProgressRail(a),b.setCurrentRail(a)},!1),e.addEventListener("timeupdate",function(a){b.setProgressRail(a),b.setCurrentRail(a),t(a)},!1),f.container.on("controlsresize",function(){b.setProgressRail(),b.setCurrentRail()}),f.loaded=h,f.total=g,f.current=i,f.handle=j},setProgressRail:function(a){var b=this,c=void 0!==a?a.target:b.media,d=null;c&&c.buffered&&c.buffered.length>0&&c.buffered.end&&c.duration?d=c.buffered.end(c.buffered.length-1)/c.duration:c&&void 0!==c.bytesTotal&&c.bytesTotal>0&&void 0!==c.bufferedBytes?d=c.bufferedBytes/c.bytesTotal:a&&a.lengthComputable&&0!==a.total&&(d=a.loaded/a.total),null!==d&&(d=Math.min(1,Math.max(0,d)),b.loaded&&b.total&&b.loaded.width(b.total.width()*d))},setCurrentRail:function(){var a=this;if(void 0!==a.media.currentTime&&a.media.duration&&a.total&&a.handle){var b=Math.round(a.total.width()*a.media.currentTime/a.media.duration),c=b-Math.round(a.handle.outerWidth(!0)/2);a.current.width(b),a.handle.css("left",c)}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{duration:-1,timeAndDurationSeparator:"<span> | </span>"}),a.extend(MediaElementPlayer.prototype,{buildcurrent:function(b,c,d,e){var f=this;a('<div class="mejs-time" role="timer" aria-live="off"><span class="mejs-currenttime">'+mejs.Utility.secondsToTimeCode(0,b.options)+"</span></div>").appendTo(c),f.currenttime=f.controls.find(".mejs-currenttime"),e.addEventListener("timeupdate",function(){b.updateCurrent()},!1)},buildduration:function(b,c,d,e){var f=this;c.children().last().find(".mejs-currenttime").length>0?a(f.options.timeAndDurationSeparator+'<span class="mejs-duration">'+mejs.Utility.secondsToTimeCode(f.options.duration,f.options)+"</span>").appendTo(c.find(".mejs-time")):(c.find(".mejs-currenttime").parent().addClass("mejs-currenttime-container"),a('<div class="mejs-time mejs-duration-container"><span class="mejs-duration">'+mejs.Utility.secondsToTimeCode(f.options.duration,f.options)+"</span></div>").appendTo(c)),f.durationD=f.controls.find(".mejs-duration"),e.addEventListener("timeupdate",function(){b.updateDuration()},!1)},updateCurrent:function(){var a=this;a.currenttime&&a.currenttime.html(mejs.Utility.secondsToTimeCode(a.media.currentTime,a.options))},updateDuration:function(){var a=this;a.container.toggleClass("mejs-long-video",a.media.duration>3600),a.durationD&&(a.options.duration>0||a.media.duration)&&a.durationD.html(mejs.Utility.secondsToTimeCode(a.options.duration>0?a.options.duration:a.media.duration,a.options))}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{muteText:mejs.i18n.t("Mute Toggle"),allyVolumeControlText:mejs.i18n.t("Use Up/Down Arrow keys to increase or decrease volume."),hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),a.extend(MediaElementPlayer.prototype,{buildvolume:function(b,c,d,e){if(!mejs.MediaFeatures.isAndroid&&!mejs.MediaFeatures.isiOS||!this.options.hideVolumeOnTouchDevices){var f=this,g=f.isVideo?f.options.videoVolume:f.options.audioVolume,h="horizontal"==g?a('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+f.id+'" title="'+f.options.muteText+'" aria-label="'+f.options.muteText+'"></button></div><a href="javascript:void(0);" class="mejs-horizontal-volume-slider"><span class="mejs-offscreen">'+f.options.allyVolumeControlText+'</span><div class="mejs-horizontal-volume-total"></div><div class="mejs-horizontal-volume-current"></div><div class="mejs-horizontal-volume-handle"></div></a>').appendTo(c):a('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+f.id+'" title="'+f.options.muteText+'" aria-label="'+f.options.muteText+'"></button><a href="javascript:void(0);" class="mejs-volume-slider"><span class="mejs-offscreen">'+f.options.allyVolumeControlText+'</span><div class="mejs-volume-total"></div><div class="mejs-volume-current"></div><div class="mejs-volume-handle"></div></a></div>').appendTo(c),i=f.container.find(".mejs-volume-slider, .mejs-horizontal-volume-slider"),j=f.container.find(".mejs-volume-total, .mejs-horizontal-volume-total"),k=f.container.find(".mejs-volume-current, .mejs-horizontal-volume-current"),l=f.container.find(".mejs-volume-handle, .mejs-horizontal-volume-handle"),m=function(a,b){if(!i.is(":visible")&&"undefined"==typeof b)return i.show(),m(a,!0),void i.hide();a=Math.max(0,a),a=Math.min(a,1),0===a?(h.removeClass("mejs-mute").addClass("mejs-unmute"),h.children("button").attr("title",mejs.i18n.t("Unmute")).attr("aria-label",mejs.i18n.t("Unmute"))):(h.removeClass("mejs-unmute").addClass("mejs-mute"),h.children("button").attr("title",mejs.i18n.t("Mute")).attr("aria-label",mejs.i18n.t("Mute")));var c=j.position();if("vertical"==g){var d=j.height(),e=d-d*a;l.css("top",Math.round(c.top+e-l.height()/2)),k.height(d-e),k.css("top",c.top+e)}else{var f=j.width(),n=f*a;l.css("left",Math.round(c.left+n-l.width()/2)),k.width(Math.round(n))}},n=function(a){var b=null,c=j.offset();if("vertical"===g){var d=j.height(),f=a.pageY-c.top;if(b=(d-f)/d,0===c.top||0===c.left)return}else{var h=j.width(),i=a.pageX-c.left;b=i/h}b=Math.max(0,b),b=Math.min(b,1),m(b),e.setMuted(0===b?!0:!1),e.setVolume(b)},o=!1,p=!1;h.hover(function(){i.show(),p=!0},function(){p=!1,o||"vertical"!=g||i.hide()});var q=function(){var a=Math.floor(100*e.volume);i.attr({"aria-label":mejs.i18n.t("volumeSlider"),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":a,"aria-valuetext":a+"%",role:"slider",tabindex:0})};i.bind("mouseover",function(){p=!0}).bind("mousedown",function(a){return n(a),f.globalBind("mousemove.vol",function(a){n(a)}),f.globalBind("mouseup.vol",function(){o=!1,f.globalUnbind(".vol"),p||"vertical"!=g||i.hide()}),o=!0,!1}).bind("keydown",function(a){var b=a.keyCode,c=e.volume;switch(b){case 38:c+=.1;break;case 40:c-=.1;break;default:return!0}return o=!1,m(c),e.setVolume(c),!1}),h.find("button").click(function(){e.setMuted(!e.muted)}),h.find("button").bind("focus",function(){i.show()}),e.addEventListener("volumechange",function(a){o||(e.muted?(m(0),h.removeClass("mejs-mute").addClass("mejs-unmute")):(m(e.volume),h.removeClass("mejs-unmute").addClass("mejs-mute"))),q(a)},!1),0===b.options.startVolume&&e.setMuted(!0),"native"===e.pluginType&&e.setVolume(b.options.startVolume),f.container.on("controlsresize",function(){m(e.volume)})}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{usePluginFullScreen:!0,newWindowCallback:function(){return""},fullscreenText:mejs.i18n.t("Fullscreen")}),a.extend(MediaElementPlayer.prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,buildfullscreen:function(b,c,d,e){if(b.isVideo){if(b.isInIframe=window.location!=window.parent.location,mejs.MediaFeatures.hasTrueNativeFullScreen){var f=function(){b.isFullScreen&&(mejs.MediaFeatures.isFullScreen()?(b.isNativeFullScreen=!0,b.setControlsSize()):(b.isNativeFullScreen=!1,b.exitFullScreen()))};b.globalBind(mejs.MediaFeatures.fullScreenEventName,f)}var g=this,h=a('<div class="mejs-button mejs-fullscreen-button"><button type="button" aria-controls="'+g.id+'" title="'+g.options.fullscreenText+'" aria-label="'+g.options.fullscreenText+'"></button></div>').appendTo(c);if("native"===g.media.pluginType||!g.options.usePluginFullScreen&&!mejs.MediaFeatures.isFirefox)h.click(function(){var a=mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||b.isFullScreen;a?b.exitFullScreen():b.enterFullScreen()});else{var i=null,j=function(){var a,b=document.createElement("x"),c=document.documentElement,d=window.getComputedStyle;return"pointerEvents"in b.style?(b.style.pointerEvents="auto",b.style.pointerEvents="x",c.appendChild(b),a=d&&"auto"===d(b,"").pointerEvents,c.removeChild(b),!!a):!1}();if(j&&!mejs.MediaFeatures.isOpera){var k,l,m=!1,n=function(){if(m){for(var a in o)o[a].hide();h.css("pointer-events",""),g.controls.css("pointer-events",""),g.media.removeEventListener("click",g.clickToPlayPauseCallback),m=!1}},o={},p=["top","left","right","bottom"],q=function(){var a=h.offset().left-g.container.offset().left,b=h.offset().top-g.container.offset().top,c=h.outerWidth(!0),d=h.outerHeight(!0),e=g.container.width(),f=g.container.height();for(k in o)o[k].css({position:"absolute",top:0,left:0});o.top.width(e).height(b),o.left.width(a).height(d).css({top:b}),o.right.width(e-a-c).height(d).css({top:b,left:a+c}),o.bottom.width(e).height(f-d-b).css({top:b+d})};for(g.globalBind("resize",function(){q()}),k=0,l=p.length;l>k;k++)o[p[k]]=a('<div class="mejs-fullscreen-hover" />').appendTo(g.container).mouseover(n).hide();h.on("mouseover",function(){if(!g.isFullScreen){var a=h.offset(),c=b.container.offset();e.positionFullscreenButton(a.left-c.left,a.top-c.top,!1),h.css("pointer-events","none"),g.controls.css("pointer-events","none"),g.media.addEventListener("click",g.clickToPlayPauseCallback);for(k in o)o[k].show();q(),m=!0}}),e.addEventListener("fullscreenchange",function(){g.isFullScreen=!g.isFullScreen,g.isFullScreen?g.media.removeEventListener("click",g.clickToPlayPauseCallback):g.media.addEventListener("click",g.clickToPlayPauseCallback),n()
+}),g.globalBind("mousemove",function(a){if(m){var b=h.offset();(a.pageY<b.top||a.pageY>b.top+h.outerHeight(!0)||a.pageX<b.left||a.pageX>b.left+h.outerWidth(!0))&&(h.css("pointer-events",""),g.controls.css("pointer-events",""),m=!1)}})}else h.on("mouseover",function(){null!==i&&(clearTimeout(i),delete i);var a=h.offset(),c=b.container.offset();e.positionFullscreenButton(a.left-c.left,a.top-c.top,!0)}).on("mouseout",function(){null!==i&&(clearTimeout(i),delete i),i=setTimeout(function(){e.hideFullscreenButton()},1500)})}b.fullscreenBtn=h,g.globalBind("keydown",function(a){(mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||g.isFullScreen)&&27==a.keyCode&&b.exitFullScreen()}),g.normalHeight=0,g.normalWidth=0}},cleanfullscreen:function(a){a.exitFullScreen()},containerSizeTimeout:null,enterFullScreen:function(){var b=this;if("native"===b.media.pluginType||!mejs.MediaFeatures.isFirefox&&!b.options.usePluginFullScreen){if(a(document.documentElement).addClass("mejs-fullscreen"),b.normalHeight=b.container.height(),b.normalWidth=b.container.width(),"native"===b.media.pluginType)if(mejs.MediaFeatures.hasTrueNativeFullScreen)mejs.MediaFeatures.requestFullScreen(b.container[0]),b.isInIframe&&setTimeout(function d(){if(b.isNativeFullScreen){var c=window.devicePixelRatio||1,e=.002,f=c*a(window).width(),g=screen.width,h=c*f;Math.abs(g-f)>Math.abs(g-h)&&(f=h);var i=Math.abs(g-f),j=g*e;i>j?b.exitFullScreen():setTimeout(d,500)}},1e3);else if(mejs.MediaFeatures.hasSemiNativeFullScreen)return void b.media.webkitEnterFullscreen();if(b.isInIframe){var c=b.options.newWindowCallback(this);if(""!==c){if(!mejs.MediaFeatures.hasTrueNativeFullScreen)return b.pause(),void window.open(c,b.id,"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no");setTimeout(function(){b.isNativeFullScreen||(b.pause(),window.open(c,b.id,"top=0,left=0,width="+screen.availWidth+",height="+screen.availHeight+",resizable=yes,scrollbars=no,status=no,toolbar=no"))},250)}}b.container.addClass("mejs-container-fullscreen").width("100%").height("100%"),b.containerSizeTimeout=setTimeout(function(){b.container.css({width:"100%",height:"100%"}),b.setControlsSize()},500),"native"===b.media.pluginType?b.$media.width("100%").height("100%"):(b.container.find(".mejs-shim").width("100%").height("100%"),b.media.setVideoSize(a(window).width(),a(window).height())),b.layers.children("div").width("100%").height("100%"),b.fullscreenBtn&&b.fullscreenBtn.removeClass("mejs-fullscreen").addClass("mejs-unfullscreen"),b.setControlsSize(),b.isFullScreen=!0,b.container.find(".mejs-captions-text").css("font-size",screen.width/b.width*1*100+"%"),b.container.find(".mejs-captions-position").css("bottom","45px"),b.container.trigger("enteredfullscreen")}},exitFullScreen:function(){var b=this;return clearTimeout(b.containerSizeTimeout),"native"!==b.media.pluginType&&mejs.MediaFeatures.isFirefox?void b.media.setFullscreen(!1):(mejs.MediaFeatures.hasTrueNativeFullScreen&&(mejs.MediaFeatures.isFullScreen()||b.isFullScreen)&&mejs.MediaFeatures.cancelFullScreen(),a(document.documentElement).removeClass("mejs-fullscreen"),b.container.removeClass("mejs-container-fullscreen").width(b.normalWidth).height(b.normalHeight),"native"===b.media.pluginType?b.$media.width(b.normalWidth).height(b.normalHeight):(b.container.find(".mejs-shim").width(b.normalWidth).height(b.normalHeight),b.media.setVideoSize(b.normalWidth,b.normalHeight)),b.layers.children("div").width(b.normalWidth).height(b.normalHeight),b.fullscreenBtn.removeClass("mejs-unfullscreen").addClass("mejs-fullscreen"),b.setControlsSize(),b.isFullScreen=!1,b.container.find(".mejs-captions-text").css("font-size",""),b.container.find(".mejs-captions-position").css("bottom",""),void b.container.trigger("exitedfullscreen"))}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{speeds:["2.00","1.50","1.25","1.00","0.75"],defaultSpeed:"1.00",speedChar:"x"}),a.extend(MediaElementPlayer.prototype,{buildspeed:function(b,c,d,e){var f=this;if("native"==f.media.pluginType){for(var g=null,h=null,i=null,j=null,k=[],l=!1,m=0,n=f.options.speeds.length;n>m;m++){var o=f.options.speeds[m];"string"==typeof o?(k.push({name:o+f.options.speedChar,value:o}),o===f.options.defaultSpeed&&(l=!0)):(k.push(o),o.value===f.options.defaultSpeed&&(l=!0))}l||k.push({name:f.options.defaultSpeed+f.options.speedChar,value:f.options.defaultSpeed}),k.sort(function(a,b){return parseFloat(b.value)-parseFloat(a.value)});var p=function(a){for(m=0,n=k.length;n>m;m++)if(k[m].value===a)return k[m].name},q='<div class="mejs-button mejs-speed-button"><button type="button">'+p(f.options.defaultSpeed)+'</button><div class="mejs-speed-selector"><ul>';for(m=0,il=k.length;il>m;m++)j=f.id+"-speed-"+k[m].value,q+='<li><input type="radio" name="speed" value="'+k[m].value+'" id="'+j+'" '+(k[m].value===f.options.defaultSpeed?" checked":"")+' /><label for="'+j+'" '+(k[m].value===f.options.defaultSpeed?' class="mejs-speed-selected"':"")+">"+k[m].name+"</label></li>";q+="</ul></div></div>",g=a(q).appendTo(c),h=g.find(".mejs-speed-selector"),i=f.options.defaultSpeed,e.addEventListener("loadedmetadata",function(){i&&(e.playbackRate=parseFloat(i))},!0),h.on("click",'input[type="radio"]',function(){var b=a(this).attr("value");i=b,e.playbackRate=parseFloat(b),g.find("button").html(p(b)),g.find(".mejs-speed-selected").removeClass("mejs-speed-selected"),g.find('input[type="radio"]:checked').next().addClass("mejs-speed-selected")}),g.one("mouseenter focusin",function(){h.height(g.find(".mejs-speed-selector ul").outerHeight(!0)+g.find(".mejs-speed-translations").outerHeight(!0)).css("top",-1*h.height()+"px")})}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{startLanguage:"",tracksText:mejs.i18n.t("Captions/Subtitles"),tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),a.extend(MediaElementPlayer.prototype,{hasChapters:!1,cleartracks:function(a){a&&(a.captions&&a.captions.remove(),a.chapters&&a.chapters.remove(),a.captionsText&&a.captionsText.remove(),a.captionsButton&&a.captionsButton.remove())},buildtracks:function(b,c,d,e){if(0!==b.tracks.length){var f,g=this,h=g.options.tracksAriaLive?'role="log" aria-live="assertive" aria-atomic="false"':"";if(g.domNode.textTracks)for(f=g.domNode.textTracks.length-1;f>=0;f--)g.domNode.textTracks[f].mode="hidden";g.cleartracks(b,c,d,e),b.chapters=a('<div class="mejs-chapters mejs-layer"></div>').prependTo(d).hide(),b.captions=a('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position mejs-captions-position-hover" '+h+'><span class="mejs-captions-text"></span></div></div>').prependTo(d).hide(),b.captionsText=b.captions.find(".mejs-captions-text"),b.captionsButton=a('<div class="mejs-button mejs-captions-button"><button type="button" aria-controls="'+g.id+'" title="'+g.options.tracksText+'" aria-label="'+g.options.tracksText+'"></button><div class="mejs-captions-selector"><ul><li><input type="radio" name="'+b.id+'_captions" id="'+b.id+'_captions_none" value="none" checked="checked" /><label for="'+b.id+'_captions_none">'+mejs.i18n.t("None")+"</label></li></ul></div></div>").appendTo(c);var i=0;for(f=0;f<b.tracks.length;f++)"subtitles"==b.tracks[f].kind&&i++;for(g.options.toggleCaptionsButtonWhenOnlyOne&&1==i?b.captionsButton.on("click",function(){lang=null===b.selectedTrack?b.tracks[0].srclang:"none",b.setTrack(lang)}):(b.captionsButton.on("mouseenter focusin",function(){a(this).find(".mejs-captions-selector").css("visibility","visible")}).on("click","input[type=radio]",function(){lang=this.value,b.setTrack(lang)}),b.captionsButton.on("mouseleave focusout",function(){a(this).find(".mejs-captions-selector").css("visibility","hidden")})),b.options.alwaysShowControls?b.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover"):b.container.bind("controlsshown",function(){b.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover")}).bind("controlshidden",function(){e.paused||b.container.find(".mejs-captions-position").removeClass("mejs-captions-position-hover")}),b.trackToLoad=-1,b.selectedTrack=null,b.isLoadingTrack=!1,f=0;f<b.tracks.length;f++)"subtitles"==b.tracks[f].kind&&b.addTrackButton(b.tracks[f].srclang,b.tracks[f].label);b.loadNextTrack(),e.addEventListener("timeupdate",function(){b.displayCaptions()},!1),""!==b.options.slidesSelector&&(b.slidesContainer=a(b.options.slidesSelector),e.addEventListener("timeupdate",function(){b.displaySlides()},!1)),e.addEventListener("loadedmetadata",function(){b.displayChapters()},!1),b.container.hover(function(){b.hasChapters&&(b.chapters.css("visibility","visible"),b.chapters.fadeIn(200).height(b.chapters.find(".mejs-chapter").outerHeight()))},function(){b.hasChapters&&!e.paused&&b.chapters.fadeOut(200,function(){a(this).css("visibility","hidden"),a(this).css("display","block")})}),g.container.on("controlsresize",function(){g.adjustLanguageBox()}),null!==b.node.getAttribute("autoplay")&&b.chapters.css("visibility","hidden")}},setTrack:function(a){var b,c=this;if("none"==a)c.selectedTrack=null,c.captionsButton.removeClass("mejs-captions-enabled");else for(b=0;b<c.tracks.length;b++)if(c.tracks[b].srclang==a){null===c.selectedTrack&&c.captionsButton.addClass("mejs-captions-enabled"),c.selectedTrack=c.tracks[b],c.captions.attr("lang",c.selectedTrack.srclang),c.displayCaptions();break}},loadNextTrack:function(){var a=this;a.trackToLoad++,a.trackToLoad<a.tracks.length?(a.isLoadingTrack=!0,a.loadTrack(a.trackToLoad)):(a.isLoadingTrack=!1,a.checkForTracks())},loadTrack:function(b){var c=this,d=c.tracks[b],e=function(){d.isLoaded=!0,c.enableTrackButton(d.srclang,d.label),c.loadNextTrack()};a.ajax({url:d.src,dataType:"text",success:function(a){d.entries="string"==typeof a&&/<tt\s+xml/gi.exec(a)?mejs.TrackFormatParser.dfxp.parse(a):mejs.TrackFormatParser.webvtt.parse(a),e(),"chapters"==d.kind&&c.media.addEventListener("play",function(){c.media.duration>0&&c.displayChapters(d)},!1),"slides"==d.kind&&c.setupSlides(d)},error:function(){c.removeTrackButton(d.srclang),c.loadNextTrack()}})},enableTrackButton:function(b,c){var d=this;""===c&&(c=mejs.language.codes[b]||b),d.captionsButton.find("input[value="+b+"]").prop("disabled",!1).siblings("label").html(c),d.options.startLanguage==b&&a("#"+d.id+"_captions_"+b).prop("checked",!0).trigger("click"),d.adjustLanguageBox()},removeTrackButton:function(a){var b=this;b.captionsButton.find("input[value="+a+"]").closest("li").remove(),b.adjustLanguageBox()},addTrackButton:function(b,c){var d=this;""===c&&(c=mejs.language.codes[b]||b),d.captionsButton.find("ul").append(a('<li><input type="radio" name="'+d.id+'_captions" id="'+d.id+"_captions_"+b+'" value="'+b+'" disabled="disabled" /><label for="'+d.id+"_captions_"+b+'">'+c+" (loading)</label></li>")),d.adjustLanguageBox(),d.container.find(".mejs-captions-translations option[value="+b+"]").remove()},adjustLanguageBox:function(){var a=this;a.captionsButton.find(".mejs-captions-selector").height(a.captionsButton.find(".mejs-captions-selector ul").outerHeight(!0)+a.captionsButton.find(".mejs-captions-translations").outerHeight(!0))},checkForTracks:function(){var a=this,b=!1;if(a.options.hideCaptionsButtonWhenEmpty){for(i=0;i<a.tracks.length;i++)if("subtitles"==a.tracks[i].kind&&a.tracks[i].isLoaded){b=!0;break}b||(a.captionsButton.hide(),a.setControlsSize())}},displayCaptions:function(){if("undefined"!=typeof this.tracks){var a,b=this,c=b.selectedTrack;if(null!==c&&c.isLoaded){for(a=0;a<c.entries.times.length;a++)if(b.media.currentTime>=c.entries.times[a].start&&b.media.currentTime<=c.entries.times[a].stop)return b.captionsText.html(c.entries.text[a]).attr("class","mejs-captions-text "+(c.entries.times[a].identifier||"")),void b.captions.show().height(0);b.captions.hide()}else b.captions.hide()}},setupSlides:function(a){var b=this;b.slides=a,b.slides.entries.imgs=[b.slides.entries.text.length],b.showSlide(0)},showSlide:function(b){if("undefined"!=typeof this.tracks&&"undefined"!=typeof this.slidesContainer){var c=this,d=c.slides.entries.text[b],e=c.slides.entries.imgs[b];"undefined"==typeof e||"undefined"==typeof e.fadeIn?c.slides.entries.imgs[b]=e=a('<img src="'+d+'">').on("load",function(){e.appendTo(c.slidesContainer).hide().fadeIn().siblings(":visible").fadeOut()}):e.is(":visible")||e.is(":animated")||e.fadeIn().siblings(":visible").fadeOut()}},displaySlides:function(){if("undefined"!=typeof this.slides){var a,b=this,c=b.slides;for(a=0;a<c.entries.times.length;a++)if(b.media.currentTime>=c.entries.times[a].start&&b.media.currentTime<=c.entries.times[a].stop)return void b.showSlide(a)}},displayChapters:function(){var a,b=this;for(a=0;a<b.tracks.length;a++)if("chapters"==b.tracks[a].kind&&b.tracks[a].isLoaded){b.drawChapters(b.tracks[a]),b.hasChapters=!0;break}},drawChapters:function(b){var c,d,e=this,f=0,g=0;for(e.chapters.empty(),c=0;c<b.entries.times.length;c++)d=b.entries.times[c].stop-b.entries.times[c].start,f=Math.floor(d/e.media.duration*100),(f+g>100||c==b.entries.times.length-1&&100>f+g)&&(f=100-g),e.chapters.append(a('<div class="mejs-chapter" rel="'+b.entries.times[c].start+'" style="left: '+g.toString()+"%;width: "+f.toString()+'%;"><div class="mejs-chapter-block'+(c==b.entries.times.length-1?" mejs-chapter-block-last":"")+'"><span class="ch-title">'+b.entries.text[c]+'</span><span class="ch-time">'+mejs.Utility.secondsToTimeCode(b.entries.times[c].start,e.options)+"&ndash;"+mejs.Utility.secondsToTimeCode(b.entries.times[c].stop,e.options)+"</span></div></div>")),g+=f;e.chapters.find("div.mejs-chapter").click(function(){e.media.setCurrentTime(parseFloat(a(this).attr("rel"))),e.media.paused&&e.media.play()}),e.chapters.show()}}),mejs.language={codes:{af:"Afrikaans",sq:"Albanian",ar:"Arabic",be:"Belarusian",bg:"Bulgarian",ca:"Catalan",zh:"Chinese","zh-cn":"Chinese Simplified","zh-tw":"Chinese Traditional",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch",en:"English",et:"Estonian",fl:"Filipino",fi:"Finnish",fr:"French",gl:"Galician",de:"German",el:"Greek",ht:"Haitian Creole",iw:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",ko:"Korean",lv:"Latvian",lt:"Lithuanian",mk:"Macedonian",ms:"Malay",mt:"Maltese",no:"Norwegian",fa:"Persian",pl:"Polish",pt:"Portuguese",ro:"Romanian",ru:"Russian",sr:"Serbian",sk:"Slovak",sl:"Slovenian",es:"Spanish",sw:"Swahili",sv:"Swedish",tl:"Tagalog",th:"Thai",tr:"Turkish",uk:"Ukrainian",vi:"Vietnamese",cy:"Welsh",yi:"Yiddish"}},mejs.TrackFormatParser={webvtt:{pattern_timecode:/^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,parse:function(b){for(var c,d,e,f=0,g=mejs.TrackFormatParser.split2(b,/\r?\n/),h={text:[],times:[]};f<g.length;f++){if(c=this.pattern_timecode.exec(g[f]),c&&f<g.length){for(f-1>=0&&""!==g[f-1]&&(e=g[f-1]),f++,d=g[f],f++;""!==g[f]&&f<g.length;)d=d+"\n"+g[f],f++;d=a.trim(d).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),h.text.push(d),h.times.push({identifier:e,start:0===mejs.Utility.convertSMPTEtoSeconds(c[1])?.2:mejs.Utility.convertSMPTEtoSeconds(c[1]),stop:mejs.Utility.convertSMPTEtoSeconds(c[3]),settings:c[5]})}e=""}return h}},dfxp:{parse:function(b){b=a(b).filter("tt");var c,d,e=0,f=b.children("div").eq(0),g=f.find("p"),h=b.find("#"+f.attr("style")),i={text:[],times:[]};if(h.length){var j=h.removeAttr("id").get(0).attributes;if(j.length)for(c={},e=0;e<j.length;e++)c[j[e].name.split(":")[1]]=j[e].value}for(e=0;e<g.length;e++){var k,l={start:null,stop:null,style:null};if(g.eq(e).attr("begin")&&(l.start=mejs.Utility.convertSMPTEtoSeconds(g.eq(e).attr("begin"))),!l.start&&g.eq(e-1).attr("end")&&(l.start=mejs.Utility.convertSMPTEtoSeconds(g.eq(e-1).attr("end"))),g.eq(e).attr("end")&&(l.stop=mejs.Utility.convertSMPTEtoSeconds(g.eq(e).attr("end"))),!l.stop&&g.eq(e+1).attr("begin")&&(l.stop=mejs.Utility.convertSMPTEtoSeconds(g.eq(e+1).attr("begin"))),c){k="";for(var m in c)k+=m+":"+c[m]+";"}k&&(l.style=k),0===l.start&&(l.start=.2),i.times.push(l),d=a.trim(g.eq(e).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),i.text.push(d),0===i.times.start&&(i.times.start=2)}return i}},split2:function(a,b){return a.split(b)}},3!="x\n\ny".split(/\n/gi).length&&(mejs.TrackFormatParser.split2=function(a,b){var c,d=[],e="";for(c=0;c<a.length;c++)e+=a.substring(c,c+1),b.test(e)&&(d.push(e.replace(b,"")),e="");return d.push(e),d})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{contextMenuItems:[{render:function(a){return"undefined"==typeof a.enterFullScreen?null:mejs.i18n.t(a.isFullScreen?"Turn off Fullscreen":"Go Fullscreen")},click:function(a){a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}},{render:function(a){return mejs.i18n.t(a.media.muted?"Unmute":"Mute")},click:function(a){a.setMuted(a.media.muted?!1:!0)}},{isSeparator:!0},{render:function(){return mejs.i18n.t("Download Video")},click:function(a){window.location.href=a.media.currentSrc}}]}),a.extend(MediaElementPlayer.prototype,{buildcontextmenu:function(b){b.contextMenu=a('<div class="mejs-contextmenu"></div>').appendTo(a("body")).hide(),b.container.bind("contextmenu",function(a){return b.isContextMenuEnabled?(a.preventDefault(),b.renderContextMenu(a.clientX-1,a.clientY-1),!1):void 0}),b.container.bind("click",function(){b.contextMenu.hide()}),b.contextMenu.bind("mouseleave",function(){b.startContextMenuTimer()})},cleancontextmenu:function(a){a.contextMenu.remove()},isContextMenuEnabled:!0,enableContextMenu:function(){this.isContextMenuEnabled=!0},disableContextMenu:function(){this.isContextMenuEnabled=!1},contextMenuTimeout:null,startContextMenuTimer:function(){var a=this;a.killContextMenuTimer(),a.contextMenuTimer=setTimeout(function(){a.hideContextMenu(),a.killContextMenuTimer()},750)},killContextMenuTimer:function(){var a=this.contextMenuTimer;null!=a&&(clearTimeout(a),delete a,a=null)},hideContextMenu:function(){this.contextMenu.hide()},renderContextMenu:function(b,c){for(var d=this,e="",f=d.options.contextMenuItems,g=0,h=f.length;h>g;g++)if(f[g].isSeparator)e+='<div class="mejs-contextmenu-separator"></div>';else{var i=f[g].render(d);null!=i&&(e+='<div class="mejs-contextmenu-item" data-itemindex="'+g+'" id="element-'+1e6*Math.random()+'">'+i+"</div>")}d.contextMenu.empty().append(a(e)).css({top:c,left:b}).show(),d.contextMenu.find(".mejs-contextmenu-item").each(function(){var b=a(this),c=parseInt(b.data("itemindex"),10),e=d.options.contextMenuItems[c];"undefined"!=typeof e.show&&e.show(b,d),b.click(function(){"undefined"!=typeof e.click&&e.click(d),d.contextMenu.hide()})}),setTimeout(function(){d.killControlsTimer("rev3")},100)}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{skipBackInterval:30,skipBackText:mejs.i18n.t("Skip back %1 seconds")}),a.extend(MediaElementPlayer.prototype,{buildskipback:function(b,c,d,e){{var f=this,g=f.options.skipBackText.replace("%1",f.options.skipBackInterval);a('<div class="mejs-button mejs-skip-back-button"><button type="button" aria-controls="'+f.id+'" title="'+g+'" aria-label="'+g+'">'+f.options.skipBackInterval+"</button></div>").appendTo(c).click(function(){e.setCurrentTime(Math.max(e.currentTime-f.options.skipBackInterval,0)),a(this).find("button").blur()})}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{postrollCloseText:mejs.i18n.t("Close")}),a.extend(MediaElementPlayer.prototype,{buildpostroll:function(b,c,d){var e=this,f=e.container.find('link[rel="postroll"]').attr("href");"undefined"!=typeof f&&(b.postroll=a('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">'+e.options.postrollCloseText+'</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(d).hide(),e.media.addEventListener("ended",function(){a.ajax({dataType:"html",url:f,success:function(a){d.find(".mejs-postroll-layer-content").html(a)}}),b.postroll.show()},!1))}})}(mejs.$);
\ No newline at end of file
index 15082330785b8869ab5547ffb0b7656fe21be52e..93605e8dce838f08e5a9514ddcceaca0723775ea 100644 (file)
@@ -1 +1 @@
-.mejs-offscreen{position:absolute!important;top:-10000px;left:-10000px;overflow:hidden;width:1px;height:1px}.mejs-container{position:relative;background:#000;font-family:Helvetica,Arial;text-align:left;vertical-align:top;text-indent:0}.me-plugin{position:absolute}.mejs-embed,.mejs-embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs-fullscreen{overflow:hidden!important}.mejs-container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:1000}.mejs-container-fullscreen .mejs-mediaelement,.mejs-container-fullscreen video{width:100%;height:100%}.mejs-clear{clear:both}.mejs-background{position:absolute;top:0;left:0}.mejs-mediaelement{position:absolute;top:0;left:0;width:100%;height:100%}.mejs-poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat}:root .mejs-poster img{display:none}.mejs-poster img{border:0;padding:0;border:0}.mejs-overlay{position:absolute;top:0;left:0}.mejs-overlay-play{cursor:pointer}.mejs-overlay-button{position:absolute;top:50%;left:50%;width:100px;height:100px;margin:-50px 0 0 -50px;background:url(bigplay.svg) no-repeat}.no-svg .mejs-overlay-button{background-image:url(bigplay.png)}.mejs-overlay:hover .mejs-overlay-button{background-position:0 -100px}.mejs-overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:#333;background:url(background.png);background:rgba(0,0,0,.9);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(50,50,50,.9)),to(rgba(0,0,0,.9)));background:-webkit-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:-moz-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:-o-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:-ms-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:linear-gradient(rgba(50,50,50,.9),rgba(0,0,0,.9))}.mejs-overlay-loading span{display:block;width:80px;height:80px;background:transparent url(loading.gif) 50% 50% no-repeat}.mejs-container .mejs-controls{position:absolute;list-style-type:none;margin:0;padding:0;bottom:0;left:0;background:url(background.png);background:rgba(0,0,0,.7);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(50,50,50,.7)),to(rgba(0,0,0,.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-moz-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-o-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-ms-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:linear-gradient(rgba(50,50,50,.7),rgba(0,0,0,.7));height:30px;width:100%}.mejs-container .mejs-controls div{list-style-type:none;background-image:none;display:block;float:left;margin:0;padding:0;width:26px;height:26px;font-size:11px;line-height:11px;font-family:Helvetica,Arial;border:0}.mejs-controls .mejs-button button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:7px 5px;padding:0;position:absolute;height:16px;width:16px;border:0;background:transparent url(controls.svg) no-repeat}.no-svg .mejs-controls .mejs-button button{background-image:url(controls.png)}.mejs-controls .mejs-button button:focus{outline:dotted 1px #999}.mejs-container .mejs-controls .mejs-time{color:#fff;display:block;height:17px;width:auto;padding:10px 3px 0;overflow:hidden;text-align:center;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.mejs-container .mejs-controls .mejs-time a{color:#fff;font-size:11px;line-height:12px;display:block;float:left;margin:1px 2px 0 0;width:auto}.mejs-controls .mejs-play button{background-position:0 0}.mejs-controls .mejs-pause button{background-position:0 -16px}.mejs-controls .mejs-stop button{background-position:-112px 0}.mejs-controls div.mejs-time-rail{direction:ltr;width:200px;padding-top:5px}.mejs-controls .mejs-time-rail span,.mejs-controls .mejs-time-rail a{display:block;position:absolute;width:180px;height:10px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;cursor:pointer}.mejs-controls .mejs-time-rail .mejs-time-total{margin:5px;background:#333;background:rgba(50,50,50,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(30,30,30,.8)),to(rgba(60,60,60,.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-moz-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-o-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-ms-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:linear-gradient(rgba(30,30,30,.8),rgba(60,60,60,.8))}.mejs-controls .mejs-time-rail .mejs-time-buffering{width:100%;background-image:-o-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:15px 15px;-moz-background-size:15px 15px;-o-background-size:15px 15px;background-size:15px 15px;-webkit-animation:buffering-stripes 2s linear infinite;-moz-animation:buffering-stripes 2s linear infinite;-ms-animation:buffering-stripes 2s linear infinite;-o-animation:buffering-stripes 2s linear infinite;animation:buffering-stripes 2s linear infinite}@-webkit-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@-moz-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@-ms-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@-o-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}.mejs-controls .mejs-time-rail .mejs-time-loaded{background:#3caac8;background:rgba(60,170,200,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(44,124,145,.8)),to(rgba(78,183,212,.8)));background:-webkit-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:-moz-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:-o-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:-ms-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:linear-gradient(rgba(44,124,145,.8),rgba(78,183,212,.8));width:0}.mejs-controls .mejs-time-rail .mejs-time-current{background:#fff;background:rgba(255,255,255,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,.9)),to(rgba(200,200,200,.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-moz-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-o-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-ms-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:linear-gradient(rgba(255,255,255,.9),rgba(200,200,200,.8));width:0}.mejs-controls .mejs-time-rail .mejs-time-handle{display:none;position:absolute;margin:0;width:10px;background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;cursor:pointer;border:solid 2px #333;top:-2px;text-align:center}.mejs-controls .mejs-time-rail .mejs-time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:solid 1px #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs-controls .mejs-time-rail .mejs-time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs-controls .mejs-time-rail .mejs-time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:solid 5px #eee;border-color:#eee transparent transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;top:15px;left:13px}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float{width:48px}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-current{width:44px}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-corner{left:18px}.mejs-controls .mejs-fullscreen-button button{background-position:-32px 0}.mejs-controls .mejs-unfullscreen button{background-position:-32px -16px}.mejs-controls .mejs-volume-button{}.mejs-controls .mejs-mute button{background-position:-16px -16px}.mejs-controls .mejs-unmute button{background-position:-16px 0}.mejs-controls .mejs-volume-button{position:relative}.mejs-controls .mejs-volume-button .mejs-volume-slider{display:none;height:115px;width:25px;background:url(background.png);background:rgba(50,50,50,.7);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;top:-115px;left:0;z-index:1;position:absolute;margin:0}.mejs-controls .mejs-volume-button:hover{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:#ddd;background:rgba(255,255,255,.5);margin:0}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-current{position:absolute;left:11px;top:8px;width:2px;height:100px;background:#ddd;background:rgba(255,255,255,.9);margin:0}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-handle{position:absolute;left:4px;top:-3px;width:16px;height:6px;background:#ddd;background:rgba(255,255,255,.9);cursor:N-resize;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;margin:0}.mejs-controls a.mejs-horizontal-volume-slider{height:26px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total{position:absolute;left:0;top:11px;width:50px;height:8px;margin:0;padding:0;font-size:1px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#333;background:rgba(50,50,50,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(30,30,30,.8)),to(rgba(60,60,60,.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-moz-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-o-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-ms-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:linear-gradient(rgba(30,30,30,.8),rgba(60,60,60,.8))}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current{position:absolute;left:0;top:11px;width:50px;height:8px;margin:0;padding:0;font-size:1px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#fff;background:rgba(255,255,255,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,.9)),to(rgba(200,200,200,.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-moz-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-o-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-ms-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:linear-gradient(rgba(255,255,255,.9),rgba(200,200,200,.8))}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-handle{display:none}.mejs-controls .mejs-captions-button{position:relative}.mejs-controls .mejs-captions-button button{background-position:-48px 0}.mejs-controls .mejs-captions-button .mejs-captions-selector{visibility:hidden;position:absolute;bottom:26px;right:-51px;width:85px;height:100px;background:url(background.png);background:rgba(50,50,50,.7);border:solid 1px transparent;padding:10px 10px 0;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mejs-controls .mejs-captions-button .mejs-captions-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li{margin:0 0 6px;padding:0;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-family:helvetica,arial;font-size:10px}.mejs-controls .mejs-captions-button .mejs-captions-translations{font-size:10px;margin:0 0 5px}.mejs-chapters{position:absolute;top:0;left:0;-xborder-right:solid 1px #fff;width:10000px;z-index:1}.mejs-chapters .mejs-chapter{position:absolute;float:left;background:#222;background:rgba(0,0,0,.7);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(50,50,50,.7)),to(rgba(0,0,0,.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-moz-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-o-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-ms-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:linear-gradient(rgba(50,50,50,.7),rgba(0,0,0,.7));filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#323232, endColorstr=#000000);overflow:hidden;border:0}.mejs-chapters .mejs-chapter .mejs-chapter-block{font-size:11px;color:#fff;padding:5px;display:block;border-right:solid 1px #333;border-bottom:solid 1px #333;cursor:pointer}.mejs-chapters .mejs-chapter .mejs-chapter-block-last{border-right:0}.mejs-chapters .mejs-chapter .mejs-chapter-block:hover{background:#666;background:rgba(102,102,102,.7);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(102,102,102,.7)),to(rgba(50,50,50,.6)));background:-webkit-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:-moz-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:-o-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:-ms-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:linear-gradient(rgba(102,102,102,.7),rgba(50,50,50,.6));filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#666666, endColorstr=#323232)}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title{font-size:12px;font-weight:700;display:block;white-space:nowrap;text-overflow:ellipsis;margin:0 0 3px;line-height:12px}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan{font-size:12px;line-height:12px;margin:3px 0 4px;display:block;white-space:nowrap;text-overflow:ellipsis}.mejs-captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs-captions-layer a{color:#fff;text-decoration:underline}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs-captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs-captions-position-hover{bottom:35px}.mejs-captions-text{padding:3px 5px;background:url(background.png);background:rgba(20,20,20,.5);white-space:pre-wrap}.me-cannotplay{}.me-cannotplay a{color:#fff;font-weight:700}.me-cannotplay span{padding:15px;display:block}.mejs-controls .mejs-loop-off button{background-position:-64px -16px}.mejs-controls .mejs-loop-on button{background-position:-64px 0}.mejs-controls .mejs-backlight-off button{background-position:-80px -16px}.mejs-controls .mejs-backlight-on button{background-position:-80px 0}.mejs-controls .mejs-picturecontrols-button{background-position:-96px 0}.mejs-contextmenu{position:absolute;width:150px;padding:10px;border-radius:4px;top:0;left:0;background:#fff;border:solid 1px #999;z-index:1001}.mejs-contextmenu .mejs-contextmenu-separator{height:1px;font-size:0;margin:5px 6px;background:#333}.mejs-contextmenu .mejs-contextmenu-item{font-family:Helvetica,Arial;font-size:12px;padding:4px 6px;cursor:pointer;color:#333}.mejs-contextmenu .mejs-contextmenu-item:hover{background:#2C7C91;color:#fff}.mejs-controls .mejs-sourcechooser-button{position:relative}.mejs-controls .mejs-sourcechooser-button button{background-position:-128px 0}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector{visibility:hidden;position:absolute;bottom:26px;right:-10px;width:130px;height:100px;background:url(background.png);background:rgba(50,50,50,.7);border:solid 1px transparent;padding:10px;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li{margin:0 0 6px;padding:0;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label{width:100px;float:left;padding:4px 0 0;line-height:15px;font-family:helvetica,arial;font-size:10px}.mejs-postroll-layer{position:absolute;bottom:0;left:0;width:100%;height:100%;background:url(background.png);background:rgba(50,50,50,.7);z-index:1000;overflow:hidden}.mejs-postroll-layer-content{width:100%;height:100%}.mejs-postroll-close{position:absolute;right:0;top:0;background:url(background.png);background:rgba(50,50,50,.7);color:#fff;padding:4px;z-index:100;cursor:pointer}div.mejs-speed-button{width:46px!important;position:relative}.mejs-controls .mejs-button.mejs-speed-button button{background:transparent;width:36px;font-size:11px;line-height:normal;color:#fff}.mejs-controls .mejs-speed-button .mejs-speed-selector{visibility:hidden;position:absolute;top:-100px;left:-10px;width:60px;height:100px;background:url(background.png);background:rgba(50,50,50,.7);border:solid 1px transparent;padding:0;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mejs-controls .mejs-speed-button:hover>.mejs-speed-selector{visibility:visible}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label.mejs-speed-selected{color:rgba(33,248,248,1)}.mejs-controls .mejs-speed-button .mejs-speed-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px;display:none}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label{width:60px;float:left;padding:4px 0 0;line-height:15px;font-family:helvetica,arial;font-size:11.5px;color:#fff;margin-left:5px;cursor:pointer}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li:hover{background-color:#c8c8c8!important;background-color:rgba(255,255,255,.4)!important}.mejs-controls .mejs-button.mejs-skip-back-button{background:transparent url(skipback.png) no-repeat;background-position:3px 3px}.mejs-controls .mejs-button.mejs-skip-back-button button{background:transparent;font-size:9px;line-height:normal;color:#fff}
\ No newline at end of file
+.mejs-offscreen{position:absolute!important;top:-10000px;left:-10000px;overflow:hidden;width:1px;height:1px}.mejs-container{position:relative;background:#000;font-family:Helvetica,Arial;text-align:left;vertical-align:top;text-indent:0}.mejs-container:focus{outline:0}.me-plugin{position:absolute}.mejs-embed,.mejs-embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs-fullscreen{overflow:hidden!important}.mejs-container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:1000}.mejs-container-fullscreen .mejs-mediaelement,.mejs-container-fullscreen video{width:100%;height:100%}.mejs-clear{clear:both}.mejs-background{position:absolute;top:0;left:0}.mejs-mediaelement{position:absolute;top:0;left:0;width:100%;height:100%}.mejs-poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat}:root .mejs-poster img{display:none}.mejs-poster img{border:0;padding:0;border:0}.mejs-overlay{position:absolute;top:0;left:0}.mejs-overlay-play{cursor:pointer}.mejs-overlay-button{position:absolute;top:50%;left:50%;width:100px;height:100px;margin:-50px 0 0 -50px;background:url(bigplay.svg) no-repeat}.no-svg .mejs-overlay-button{background-image:url(bigplay.png)}.mejs-overlay:hover .mejs-overlay-button{background-position:0 -100px}.mejs-overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:#333;background:url(background.png);background:rgba(0,0,0,.9);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(50,50,50,.9)),to(rgba(0,0,0,.9)));background:-webkit-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:-moz-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:-o-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:-ms-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:linear-gradient(rgba(50,50,50,.9),rgba(0,0,0,.9))}.mejs-overlay-loading span{display:block;width:80px;height:80px;background:transparent url(loading.gif) 50% 50% no-repeat}.mejs-container .mejs-controls{position:absolute;list-style-type:none;margin:0;padding:0;bottom:0;left:0;background:url(background.png);background:rgba(0,0,0,.7);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(50,50,50,.7)),to(rgba(0,0,0,.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-moz-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-o-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-ms-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:linear-gradient(rgba(50,50,50,.7),rgba(0,0,0,.7));height:30px;width:100%}.mejs-container .mejs-controls div{list-style-type:none;background-image:none;display:block;float:left;margin:0;padding:0;width:26px;height:26px;font-size:11px;line-height:11px;font-family:Helvetica,Arial;border:0}.mejs-controls .mejs-button button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:7px 5px;padding:0;position:absolute;height:16px;width:16px;border:0;background:transparent url(controls.svg) no-repeat}.no-svg .mejs-controls .mejs-button button{background-image:url(controls.png)}.mejs-controls .mejs-button button:focus{outline:dotted 1px #999}.mejs-container .mejs-controls .mejs-time{color:#fff;display:block;height:17px;width:auto;padding:10px 3px 0;overflow:hidden;text-align:center;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.mejs-container .mejs-controls .mejs-time a{color:#fff;font-size:11px;line-height:12px;display:block;float:left;margin:1px 2px 0 0;width:auto}.mejs-controls .mejs-play button{background-position:0 0}.mejs-controls .mejs-pause button{background-position:0 -16px}.mejs-controls .mejs-stop button{background-position:-112px 0}.mejs-controls div.mejs-time-rail{direction:ltr;width:200px;padding-top:5px}.mejs-controls .mejs-time-rail span,.mejs-controls .mejs-time-rail a{display:block;position:absolute;width:180px;height:10px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;cursor:pointer}.mejs-controls .mejs-time-rail .mejs-time-total{margin:5px;background:#333;background:rgba(50,50,50,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(30,30,30,.8)),to(rgba(60,60,60,.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-moz-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-o-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-ms-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:linear-gradient(rgba(30,30,30,.8),rgba(60,60,60,.8))}.mejs-controls .mejs-time-rail .mejs-time-buffering{width:100%;background-image:-o-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:15px 15px;-moz-background-size:15px 15px;-o-background-size:15px 15px;background-size:15px 15px;-webkit-animation:buffering-stripes 2s linear infinite;-moz-animation:buffering-stripes 2s linear infinite;-ms-animation:buffering-stripes 2s linear infinite;-o-animation:buffering-stripes 2s linear infinite;animation:buffering-stripes 2s linear infinite}@-webkit-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@-moz-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@-ms-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@-o-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}.mejs-controls .mejs-time-rail .mejs-time-loaded{background:#3caac8;background:rgba(60,170,200,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(44,124,145,.8)),to(rgba(78,183,212,.8)));background:-webkit-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:-moz-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:-o-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:-ms-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:linear-gradient(rgba(44,124,145,.8),rgba(78,183,212,.8));width:0}.mejs-controls .mejs-time-rail .mejs-time-current{background:#fff;background:rgba(255,255,255,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,.9)),to(rgba(200,200,200,.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-moz-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-o-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-ms-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:linear-gradient(rgba(255,255,255,.9),rgba(200,200,200,.8));width:0}.mejs-controls .mejs-time-rail .mejs-time-handle{display:none;position:absolute;margin:0;width:10px;background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;cursor:pointer;border:solid 2px #333;top:-2px;text-align:center}.mejs-controls .mejs-time-rail .mejs-time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:solid 1px #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs-controls .mejs-time-rail .mejs-time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs-controls .mejs-time-rail .mejs-time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:solid 5px #eee;border-color:#eee transparent transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;top:15px;left:13px}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float{width:48px}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-current{width:44px}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-corner{left:18px}.mejs-controls .mejs-fullscreen-button button{background-position:-32px 0}.mejs-controls .mejs-unfullscreen button{background-position:-32px -16px}.mejs-controls .mejs-volume-button{}.mejs-controls .mejs-mute button{background-position:-16px -16px}.mejs-controls .mejs-unmute button{background-position:-16px 0}.mejs-controls .mejs-volume-button{position:relative}.mejs-controls .mejs-volume-button .mejs-volume-slider{display:none;height:115px;width:25px;background:url(background.png);background:rgba(50,50,50,.7);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;top:-115px;left:0;z-index:1;position:absolute;margin:0}.mejs-controls .mejs-volume-button:hover{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:#ddd;background:rgba(255,255,255,.5);margin:0}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-current{position:absolute;left:11px;top:8px;width:2px;height:100px;background:#ddd;background:rgba(255,255,255,.9);margin:0}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-handle{position:absolute;left:4px;top:-3px;width:16px;height:6px;background:#ddd;background:rgba(255,255,255,.9);cursor:N-resize;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;margin:0}.mejs-controls a.mejs-horizontal-volume-slider{height:26px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total{position:absolute;left:0;top:11px;width:50px;height:8px;margin:0;padding:0;font-size:1px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#333;background:rgba(50,50,50,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(30,30,30,.8)),to(rgba(60,60,60,.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-moz-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-o-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-ms-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:linear-gradient(rgba(30,30,30,.8),rgba(60,60,60,.8))}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current{position:absolute;left:0;top:11px;width:50px;height:8px;margin:0;padding:0;font-size:1px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#fff;background:rgba(255,255,255,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,.9)),to(rgba(200,200,200,.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-moz-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-o-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-ms-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:linear-gradient(rgba(255,255,255,.9),rgba(200,200,200,.8))}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-handle{display:none}.mejs-controls .mejs-captions-button{position:relative}.mejs-controls .mejs-captions-button button{background-position:-48px 0}.mejs-controls .mejs-captions-button .mejs-captions-selector{visibility:hidden;position:absolute;bottom:26px;right:-51px;width:85px;height:100px;background:url(background.png);background:rgba(50,50,50,.7);border:solid 1px transparent;padding:10px 10px 0;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mejs-controls .mejs-captions-button .mejs-captions-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li{margin:0 0 6px;padding:0;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-family:helvetica,arial;font-size:10px}.mejs-controls .mejs-captions-button .mejs-captions-translations{font-size:10px;margin:0 0 5px}.mejs-chapters{position:absolute;top:0;left:0;-xborder-right:solid 1px #fff;width:10000px;z-index:1}.mejs-chapters .mejs-chapter{position:absolute;float:left;background:#222;background:rgba(0,0,0,.7);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(50,50,50,.7)),to(rgba(0,0,0,.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-moz-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-o-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-ms-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:linear-gradient(rgba(50,50,50,.7),rgba(0,0,0,.7));filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#323232, endColorstr=#000000);overflow:hidden;border:0}.mejs-chapters .mejs-chapter .mejs-chapter-block{font-size:11px;color:#fff;padding:5px;display:block;border-right:solid 1px #333;border-bottom:solid 1px #333;cursor:pointer}.mejs-chapters .mejs-chapter .mejs-chapter-block-last{border-right:0}.mejs-chapters .mejs-chapter .mejs-chapter-block:hover{background:#666;background:rgba(102,102,102,.7);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(102,102,102,.7)),to(rgba(50,50,50,.6)));background:-webkit-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:-moz-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:-o-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:-ms-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:linear-gradient(rgba(102,102,102,.7),rgba(50,50,50,.6));filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#666666, endColorstr=#323232)}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title{font-size:12px;font-weight:700;display:block;white-space:nowrap;text-overflow:ellipsis;margin:0 0 3px;line-height:12px}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan{font-size:12px;line-height:12px;margin:3px 0 4px;display:block;white-space:nowrap;text-overflow:ellipsis}.mejs-captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs-captions-layer a{color:#fff;text-decoration:underline}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs-captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs-captions-position-hover{bottom:35px}.mejs-captions-text{padding:3px 5px;background:url(background.png);background:rgba(20,20,20,.5);white-space:pre-wrap}.me-cannotplay{}.me-cannotplay a{color:#fff;font-weight:700}.me-cannotplay span{padding:15px;display:block}.mejs-controls .mejs-loop-off button{background-position:-64px -16px}.mejs-controls .mejs-loop-on button{background-position:-64px 0}.mejs-controls .mejs-backlight-off button{background-position:-80px -16px}.mejs-controls .mejs-backlight-on button{background-position:-80px 0}.mejs-controls .mejs-picturecontrols-button{background-position:-96px 0}.mejs-contextmenu{position:absolute;width:150px;padding:10px;border-radius:4px;top:0;left:0;background:#fff;border:solid 1px #999;z-index:1001}.mejs-contextmenu .mejs-contextmenu-separator{height:1px;font-size:0;margin:5px 6px;background:#333}.mejs-contextmenu .mejs-contextmenu-item{font-family:Helvetica,Arial;font-size:12px;padding:4px 6px;cursor:pointer;color:#333}.mejs-contextmenu .mejs-contextmenu-item:hover{background:#2C7C91;color:#fff}.mejs-controls .mejs-sourcechooser-button{position:relative}.mejs-controls .mejs-sourcechooser-button button{background-position:-128px 0}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector{visibility:hidden;position:absolute;bottom:26px;right:-10px;width:130px;height:100px;background:url(background.png);background:rgba(50,50,50,.7);border:solid 1px transparent;padding:10px;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li{margin:0 0 6px;padding:0;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label{width:100px;float:left;padding:4px 0 0;line-height:15px;font-family:helvetica,arial;font-size:10px}.mejs-postroll-layer{position:absolute;bottom:0;left:0;width:100%;height:100%;background:url(background.png);background:rgba(50,50,50,.7);z-index:1000;overflow:hidden}.mejs-postroll-layer-content{width:100%;height:100%}.mejs-postroll-close{position:absolute;right:0;top:0;background:url(background.png);background:rgba(50,50,50,.7);color:#fff;padding:4px;z-index:100;cursor:pointer}div.mejs-speed-button{width:46px!important;position:relative}.mejs-controls .mejs-button.mejs-speed-button button{background:transparent;width:36px;font-size:11px;line-height:normal;color:#fff}.mejs-controls .mejs-speed-button .mejs-speed-selector{display:none;position:absolute;top:-100px;left:-10px;width:60px;height:100px;background:url(background.png);background:rgba(50,50,50,.7);border:solid 1px transparent;padding:0;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mejs-controls .mejs-speed-button:hover>.mejs-speed-selector{display:block}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label.mejs-speed-selected{color:rgba(33,248,248,1)}.mejs-controls .mejs-speed-button .mejs-speed-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px;display:none}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label{width:60px;float:left;padding:4px 0 0;line-height:15px;font-family:helvetica,arial;font-size:11.5px;color:#fff;margin-left:5px;cursor:pointer}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li:hover{background-color:#c8c8c8!important;background-color:rgba(255,255,255,.4)!important}.mejs-controls .mejs-button.mejs-jump-forward-button{background:transparent url(jumpforward.png) no-repeat;background-position:3px 3px}.mejs-controls .mejs-button.mejs-jump-forward-button button{background:transparent;font-size:9px;line-height:normal;color:#fff}.mejs-controls .mejs-button.mejs-skip-back-button{background:transparent url(skipback.png) no-repeat;background-position:3px 3px}.mejs-controls .mejs-button.mejs-skip-back-button button{background:transparent;font-size:9px;line-height:normal;color:#fff}
\ No newline at end of file
index daa659d52bc7324f57dbc5c104d1d22bf5ffbc4b..097409b15828ef9eebefb2730f66e144eff80bdf 100644 (file)
@@ -47,7 +47,7 @@
        border-radius: 3px;
        box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6);
        clip: auto;
-       color: #21759b;
+       color: #0073aa;
        display: block;
        font-size: 14px;
        font-weight: bold;
index 8c4364aa329a23bcccd9a38c992490f80ff3b09d..fe47d2f0c129a485024cb5e56c1891e48f039a88 100644 (file)
@@ -1,34 +1,61 @@
 /* global mejs, _wpmejsSettings */
-(function ($) {
+(function( window, $ ) {
+
+       window.wp = window.wp || {};
+
        // add mime-type aliases to MediaElement plugin support
        mejs.plugins.silverlight[0].types.push('video/x-ms-wmv');
        mejs.plugins.silverlight[0].types.push('audio/x-ms-wma');
 
-       $(function () {
+       function wpMediaElement() {
                var settings = {};
 
-               if ( typeof _wpmejsSettings !== 'undefined' ) {
-                       settings = _wpmejsSettings;
-               }
-
-               settings.success = settings.success || function (mejs) {
-                       var autoplay, loop;
-
-                       if ( 'flash' === mejs.pluginType ) {
-                               autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay;
-                               loop = mejs.attributes.loop && 'false' !== mejs.attributes.loop;
+               /**
+                * Initialize media elements.
+                *
+                * Ensures media elements that have already been initialized won't be
+                * processed again.
+                *
+                * @since 4.4.0
+                */
+               function initialize() {
+                       if ( typeof _wpmejsSettings !== 'undefined' ) {
+                               settings = _wpmejsSettings;
+                       }
 
-                               autoplay && mejs.addEventListener( 'canplay', function () {
-                                       mejs.play();
-                               }, false );
+                       settings.success = settings.success || function (mejs) {
+                               var autoplay, loop;
+
+                               if ( 'flash' === mejs.pluginType ) {
+                                       autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay;
+                                       loop = mejs.attributes.loop && 'false' !== mejs.attributes.loop;
+
+                                       autoplay && mejs.addEventListener( 'canplay', function () {
+                                               mejs.play();
+                                       }, false );
+
+                                       loop && mejs.addEventListener( 'ended', function () {
+                                               mejs.play();
+                                       }, false );
+                               }
+                       };
+
+                       // Only initialize new media elements.
+                       $( '.wp-audio-shortcode, .wp-video-shortcode' )
+                               .not( '.mejs-container' )
+                               .filter(function () {
+                                       return ! $( this ).parent().hasClass( '.mejs-mediaelement' );
+                               })
+                               .mediaelementplayer( settings );
+               }
 
-                               loop && mejs.addEventListener( 'ended', function () {
-                                       mejs.play();
-                               }, false );
-                       }
+               return {
+                       initialize: initialize
                };
+       }
+
+       window.wp.mediaelement = new wpMediaElement();
 
-               $('.wp-audio-shortcode, .wp-video-shortcode').mediaelementplayer( settings );
-       });
+       $( document ).on( 'ready', window.wp.mediaelement.initialize );
 
-}(jQuery));
+})( window, jQuery );
index 47a83cea7f498765155b407c891ce6c501a6b220..e477cf9326ec212859ed21cc1ba4e19296dc5270 100644 (file)
Binary files a/wp-includes/js/plupload/plupload.flash.swf and b/wp-includes/js/plupload/plupload.flash.swf differ
index 69d6ad120cb79b5b9baa30d61dc871d2fe31a44b..2af434de4f4054072ec69fa340a34c79bcf1861d 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill
- * v1.2.0
+ * v1.3.4
  *
  * Copyright 2013, Moxiecode Systems AB
  * Released under GPL License.
@@ -8,14 +8,15 @@
  * License: http://www.plupload.com/license
  * Contributing: http://www.plupload.com/contributing
  *
- * Date: 2014-01-16
+ * Date: 2015-07-18
  */
-!function(e,t){"use strict";function n(e,t){for(var n,i=[],r=0;r<e.length;++r){if(n=s[e[r]]||o(e[r]),!n)throw"module definition dependecy not found: "+e[r];i.push(n)}t.apply(null,i)}function i(e,i,r){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(i===t)throw"invalid module definition, dependencies must be specified";if(r===t)throw"invalid module definition, definition function must be specified";n(i,function(){s[e]=r.apply(null,arguments)})}function r(e){return!!s[e]}function o(t){for(var n=e,i=t.split(/[.\/]/),r=0;r<i.length;++r){if(!n[i[r]])return;n=n[i[r]]}return n}function a(n){for(var i=0;i<n.length;i++){for(var r=e,o=n[i],a=o.split(/[.\/]/),u=0;u<a.length-1;++u)r[a[u]]===t&&(r[a[u]]={}),r=r[a[u]];r[a[a.length-1]]=s[o]}}var s={},u="moxie/core/utils/Basic",c="moxie/core/I18n",l="moxie/core/utils/Mime",d="moxie/core/utils/Env",f="moxie/core/utils/Dom",p="moxie/core/Exceptions",h="moxie/core/EventTarget",m="moxie/core/utils/Encode",g="moxie/runtime/Runtime",v="moxie/runtime/RuntimeClient",y="moxie/file/Blob",w="moxie/file/File",E="moxie/file/FileInput",_="moxie/file/FileDrop",x="moxie/runtime/RuntimeTarget",R="moxie/file/FileReader",b="moxie/core/utils/Url",T="moxie/file/FileReaderSync",S="moxie/xhr/FormData",A="moxie/xhr/XMLHttpRequest",O="moxie/runtime/Transporter",I="moxie/image/Image",D="moxie/runtime/html5/Runtime",N="moxie/runtime/html5/file/Blob",L="moxie/core/utils/Events",M="moxie/runtime/html5/file/FileInput",C="moxie/runtime/html5/file/FileDrop",F="moxie/runtime/html5/file/FileReader",H="moxie/runtime/html5/xhr/XMLHttpRequest",P="moxie/runtime/html5/utils/BinaryReader",k="moxie/runtime/html5/image/JPEGHeaders",U="moxie/runtime/html5/image/ExifParser",B="moxie/runtime/html5/image/JPEG",z="moxie/runtime/html5/image/PNG",G="moxie/runtime/html5/image/ImageInfo",q="moxie/runtime/html5/image/MegaPixel",X="moxie/runtime/html5/image/Image",j="moxie/runtime/flash/Runtime",V="moxie/runtime/flash/file/Blob",W="moxie/runtime/flash/file/FileInput",Y="moxie/runtime/flash/file/FileReader",$="moxie/runtime/flash/file/FileReaderSync",J="moxie/runtime/flash/xhr/XMLHttpRequest",Z="moxie/runtime/flash/runtime/Transporter",K="moxie/runtime/flash/image/Image",Q="moxie/runtime/silverlight/Runtime",et="moxie/runtime/silverlight/file/Blob",tt="moxie/runtime/silverlight/file/FileInput",nt="moxie/runtime/silverlight/file/FileDrop",it="moxie/runtime/silverlight/file/FileReader",rt="moxie/runtime/silverlight/file/FileReaderSync",ot="moxie/runtime/silverlight/xhr/XMLHttpRequest",at="moxie/runtime/silverlight/runtime/Transporter",st="moxie/runtime/silverlight/image/Image",ut="moxie/runtime/html4/Runtime",ct="moxie/runtime/html4/file/FileInput",lt="moxie/runtime/html4/file/FileReader",dt="moxie/runtime/html4/xhr/XMLHttpRequest",ft="moxie/runtime/html4/image/Image";i(u,[],function(){var e=function(e){var t;return e===t?"undefined":null===e?"null":e.nodeType?"node":{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()},t=function(i){var r;return n(arguments,function(o,s){s>0&&n(o,function(n,o){n!==r&&(e(i[o])===e(n)&&~a(e(n),["array","object"])?t(i[o],n):i[o]=n)})}),i},n=function(e,t){var n,i,r,o;if(e){try{n=e.length}catch(a){n=o}if(n===o){for(i in e)if(e.hasOwnProperty(i)&&t(e[i],i)===!1)return}else for(r=0;n>r;r++)if(t(e[r],r)===!1)return}},i=function(t){var n;if(!t||"object"!==e(t))return!0;for(n in t)return!1;return!0},r=function(t,n){function i(r){"function"===e(t[r])&&t[r](function(e){++r<o&&!e?i(r):n(e)})}var r=0,o=t.length;"function"!==e(n)&&(n=function(){}),t&&t.length||n(),i(r)},o=function(e,t){var i=0,r=e.length,o=new Array(r);n(e,function(e,n){e(function(e){if(e)return t(e);var a=[].slice.call(arguments);a.shift(),o[n]=a,i++,i===r&&(o.unshift(null),t.apply(this,o))})})},a=function(e,t){if(t){if(Array.prototype.indexOf)return Array.prototype.indexOf.call(t,e);for(var n=0,i=t.length;i>n;n++)if(t[n]===e)return n}return-1},s=function(t,n){var i=[];"array"!==e(t)&&(t=[t]),"array"!==e(n)&&(n=[n]);for(var r in t)-1===a(t[r],n)&&i.push(t[r]);return i.length?i:!1},u=function(e,t){var i=[];return n(e,function(e){-1!==a(e,t)&&i.push(e)}),i.length?i:null},c=function(e){var t,n=[];for(t=0;t<e.length;t++)n[t]=e[t];return n},l=function(){var e=0;return function(t){var n=(new Date).getTime().toString(32),i;for(i=0;5>i;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}(),d=function(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e},f=function(e){if("string"!=typeof e)return e;var t={t:1099511627776,g:1073741824,m:1048576,k:1024},n;return e=/^([0-9]+)([mgk]?)$/.exec(e.toLowerCase().replace(/[^0-9mkg]/g,"")),n=e[2],e=+e[1],t.hasOwnProperty(n)&&(e*=t[n]),e};return{guid:l,typeOf:e,extend:t,each:n,isEmptyObj:i,inSeries:r,inParallel:o,inArray:a,arrayDiff:s,arrayIntersect:u,toArray:c,trim:d,parseSizeStr:f}}),i(c,[u],function(e){var t={};return{addI18n:function(n){return e.extend(t,n)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var n=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=n.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),i(l,[u,c],function(e,t){var n="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",i={mimes:{},extensions:{},addMimeType:function(e){var t=e.split(/,/),n,i,r;for(n=0;n<t.length;n+=2){for(r=t[n+1].split(/ /),i=0;i<r.length;i++)this.mimes[r[i]]=t[n];this.extensions[t[n]]=r}},extList2mimes:function(t,n){var i=this,r,o,a,s,u=[];for(o=0;o<t.length;o++)for(r=t[o].extensions.split(/\s*,\s*/),a=0;a<r.length;a++){if("*"===r[a])return[];if(s=i.mimes[r[a]])-1===e.inArray(s,u)&&u.push(s);else{if(!n||!/^\w+$/.test(r[a]))return[];u.push("."+r[a])}}return u},mimes2exts:function(t){var n=this,i=[];return e.each(t,function(t){if("*"===t)return i=[],!1;var r=t.match(/^(\w+)\/(\*|\w+)$/);r&&("*"===r[2]?e.each(n.extensions,function(e,t){new RegExp("^"+r[1]+"/").test(t)&&[].push.apply(i,n.extensions[t])}):n.extensions[t]&&[].push.apply(i,n.extensions[t]))}),i},mimes2extList:function(n){var i=[],r=[];return"string"===e.typeOf(n)&&(n=e.trim(n).split(/\s*,\s*/)),r=this.mimes2exts(n),i.push({title:t.translate("Files"),extensions:r.length?r.join(","):"*"}),i.mimes=n,i},getFileExtension:function(e){var t=e&&e.match(/\.([^.]+)$/);return t?t[1].toLowerCase():""},getFileMime:function(e){return this.mimes[this.getFileExtension(e)]||""}};return i.addMimeType(n),i}),i(d,[u],function(e){function t(e,t,n){var i=0,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),r=Math.max(e.length,t.length),i=0;r>i;i++)if(e[i]!=t[i]){if(e[i]=u(e[i]),t[i]=u(t[i]),e[i]<t[i]){o=-1;break}if(e[i]>t[i]){o=1;break}}if(!n)return o;switch(n){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var n=function(e){var t="",n="?",i="function",r="undefined",o="object",a="major",s="model",u="name",c="type",l="vendor",d="version",f="architecture",p="console",h="mobile",m="tablet",g={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},v={rgx:function(){for(var t,n=0,a,s,u,c,l,d,f=arguments;n<f.length;n+=2){var p=f[n],h=f[n+1];if(typeof t===r){t={};for(u in h)c=h[u],typeof c===o?t[c[0]]=e:t[c]=e}for(a=s=0;a<p.length;a++)if(l=p[a].exec(this.getUA())){for(u=0;u<h.length;u++)d=l[++s],c=h[u],typeof c===o&&c.length>0?2==c.length?t[c[0]]=typeof c[1]==i?c[1].call(this,d):c[1]:3==c.length?t[c[0]]=typeof c[1]!==i||c[1].exec&&c[1].test?d?d.replace(c[1],c[2]):e:d?c[1].call(this,d,c[2]):e:4==c.length&&(t[c[0]]=d?c[3].call(this,d.replace(c[1],c[2])):e):t[c]=d?d:e;break}if(l)break}return t},str:function(t,i){for(var r in i)if(typeof i[r]===o&&i[r].length>0){for(var a=0;a<i[r].length;a++)if(g.has(i[r][a],t))return r===n?e:r}else if(g.has(i[r],t))return r===n?e:r;return t}},y={browser:{oldsafari:{major:{1:["/8","/1","/3"],2:"/4","?":"/"},version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2000:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",RT:"ARM"}}}},w={browser:[[/(opera\smini)\/((\d+)?[\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/((\d+)?[\w\.-]+)/i,/(opera).+version\/((\d+)?[\w\.]+)/i,/(opera)[\/\s]+((\d+)?[\w\.]+)/i],[u,d,a],[/\s(opr)\/((\d+)?[\w\.]+)/i],[[u,"Opera"],d,a],[/(kindle)\/((\d+)?[\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?((\d+)?[\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?((\d+)?[\w\.]*)/i,/(?:ms|\()(ie)\s((\d+)?[\w\.]+)/i,/(rekonq)((?:\/)[\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron)\/((\d+)?[\w\.-]+)/i],[u,d,a],[/(trident).+rv[:\s]((\d+)?[\w\.]+).+like\sgecko/i],[[u,"IE"],d,a],[/(yabrowser)\/((\d+)?[\w\.]+)/i],[[u,"Yandex"],d,a],[/(comodo_dragon)\/((\d+)?[\w\.]+)/i],[[u,/_/g," "],d,a],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i],[u,d,a],[/(dolfin)\/((\d+)?[\w\.]+)/i],[[u,"Dolphin"],d,a],[/((?:android.+)crmo|crios)\/((\d+)?[\w\.]+)/i],[[u,"Chrome"],d,a],[/((?:android.+))version\/((\d+)?[\w\.]+)\smobile\ssafari/i],[[u,"Android Browser"],d,a],[/version\/((\d+)?[\w\.]+).+?mobile\/\w+\s(safari)/i],[d,a,[u,"Mobile Safari"]],[/version\/((\d+)?[\w\.]+).+?(mobile\s?safari|safari)/i],[d,a,u],[/webkit.+?(mobile\s?safari|safari)((\/[\w\.]+))/i],[u,[a,v.str,y.browser.oldsafari.major],[d,v.str,y.browser.oldsafari.version]],[/(konqueror)\/((\d+)?[\w\.]+)/i,/(webkit|khtml)\/((\d+)?[\w\.]+)/i],[u,d,a],[/(navigator|netscape)\/((\d+)?[\w\.-]+)/i],[[u,"Netscape"],d,a],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?((\d+)?[\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/((\d+)?[\w\.-]+)/i,/(mozilla)\/((\d+)?[\w\.]+).+rv\:.+gecko\/\d+/i,/(uc\s?browser|polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|qqbrowser)[\/\s]?((\d+)?[\w\.]+)/i,/(links)\s\(((\d+)?[\w\.]+)/i,/(gobrowser)\/?((\d+)?[\w\.]+)*/i,/(ice\s?browser)\/v?((\d+)?[\w\._]+)/i,/(mosaic)[\/\s]((\d+)?[\w\.]+)/i],[u,d,a]],engine:[[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[u,d],[/rv\:([\w\.]+).*(gecko)/i],[d,u]],os:[[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[u,[d,v.str,y.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[u,"Windows"],[d,v.str,y.os.windows.version]],[/\((bb)(10);/i],[[u,"BlackBerry"],d],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)\/([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i],[u,d],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[u,"Symbian"],d],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[u,"Firefox OS"],d],[/(nintendo|playstation)\s([wids3portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[u,d],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[u,"Chromium OS"],d],[/(sunos)\s?([\w\.]+\d)*/i],[[u,"Solaris"],d],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[u,d],[/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],[[u,"iOS"],[d,/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i],[u,[d,/_/g,"."]],[/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(macintosh|mac(?=_powerpc)|plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos)/i,/(unix)\s?([\w\.]+)*/i],[u,d]]},E=function(e){var n=e||(window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:t);this.getBrowser=function(){return v.rgx.apply(this,w.browser)},this.getEngine=function(){return v.rgx.apply(this,w.engine)},this.getOS=function(){return v.rgx.apply(this,w.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS()}},this.getUA=function(){return n},this.setUA=function(e){return n=e,this},this.setUA(n)};return(new E).getResult()}(),i=function(){var t={define_property:function(){return!1}(),create_canvas:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))}(),return_response_type:function(t){try{if(-1!==e.inArray(t,["","text","document"]))return!0;if(window.XMLHttpRequest){var n=new XMLHttpRequest;if(n.open("get","/"),"responseType"in n)return n.responseType=t,n.responseType!==t?!1:!0}}catch(i){}return!1},use_data_uri:function(){var e=new Image;return e.onload=function(){t.use_data_uri=1===e.width&&1===e.height},setTimeout(function(){e.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1}(),use_data_uri_over32kb:function(){return t.use_data_uri&&("IE"!==r.browser||r.version>=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(n){var i=[].slice.call(arguments);return i.shift(),"function"===e.typeOf(t[n])?t[n].apply(this,i):!!t[n]}}(),r={can:i,browser:n.browser.name,version:parseFloat(n.browser.major),os:n.os.name,osVersion:n.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return r.OS=r.os,r}),i(f,[d],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},n=function(e,t){if(!e.className)return!1;var n=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return n.test(e.className)},i=function(e,t){n(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var n=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(n,function(e,t,n){return" "===t&&" "===n?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,n){function i(e){var t,n,i=0,r=0;return e&&(n=e.getBoundingClientRect(),t="CSS1Compat"===s.compatMode?s.documentElement:s.body,i=n.left+t.scrollLeft,r=n.top+t.scrollTop),{x:i,y:r}}var r=0,o=0,a,s=document,u,c;if(t=t,n=n||s.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!s.documentMode||s.documentMode<8))return u=i(t),c=i(n),{x:u.x-c.x,y:u.y-c.y};for(a=t;a&&a!=n&&a.nodeType;)r+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=t.parentNode;a&&a!=n&&a.nodeType;)r-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode;return{x:r,y:o}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:n,addClass:i,removeClass:r,getStyle:o,getPos:a,getSize:s}}),i(p,[u],function(e){function t(e,t){var n;for(n in e)if(e[n]===t)return n;return null}return{RuntimeError:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": RuntimeError "+this.code}var i={NOT_INIT_ERR:1,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(n,i),n.prototype=Error.prototype,n}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": ImageError "+this.code}var i={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2};return e.extend(n,i),n.prototype=Error.prototype,n}(),FileException:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": FileException "+this.code}var i={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(n,i),n.prototype=Error.prototype,n}(),DOMException:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": DOMException "+this.code}var i={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(n,i),n.prototype=Error.prototype,n}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),i(h,[p,u],function(e,t){function n(){var n={};t.extend(this,{uid:null,init:function(){this.uid||(this.uid=t.guid("uid_"))},addEventListener:function(e,i,r,o){var a=this,s;return e=t.trim(e),/\s/.test(e)?(t.each(e.split(/\s+/),function(e){a.addEventListener(e,i,r,o)}),void 0):(e=e.toLowerCase(),r=parseInt(r,10)||0,s=n[this.uid]&&n[this.uid][e]||[],s.push({fn:i,priority:r,scope:o||this}),n[this.uid]||(n[this.uid]={}),n[this.uid][e]=s,void 0)},hasEventListener:function(e){return e?!(!n[this.uid]||!n[this.uid][e]):!!n[this.uid]},removeEventListener:function(e,i){e=e.toLowerCase();var r=n[this.uid]&&n[this.uid][e],o;if(r){if(i){for(o=r.length-1;o>=0;o--)if(r[o].fn===i){r.splice(o,1);break}}else r=[];r.length||(delete n[this.uid][e],t.isEmptyObj(n[this.uid])&&delete n[this.uid])}},removeAllEventListeners:function(){n[this.uid]&&delete n[this.uid]},dispatchEvent:function(i){var r,o,a,s,u={},c=!0,l;if("string"!==t.typeOf(i)){if(s=i,"string"!==t.typeOf(s.type))throw new e.EventException(e.EventException.UNSPECIFIED_EVENT_TYPE_ERR);i=s.type,s.total!==l&&s.loaded!==l&&(u.total=s.total,u.loaded=s.loaded),u.async=s.async||!1}if(-1!==i.indexOf("::")?function(e){r=e[0],i=e[1]}(i.split("::")):r=this.uid,i=i.toLowerCase(),o=n[r]&&n[r][i]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),u.type=i,a.unshift(u);var d=[];t.each(o,function(e){a[0].target=e.scope,u.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&t.inSeries(d,function(e){c=!e})}return c},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},convertEventPropsToHandlers:function(e){var n;"array"!==t.typeOf(e)&&(e=[e]);for(var i=0;i<e.length;i++)n="on"+e[i],"function"===t.typeOf(this[n])?this.addEventListener(e[i],this[n]):"undefined"===t.typeOf(this[n])&&(this[n]=null)}})}return n.instance=new n,n}),i(m,[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},n=function(e,n){if("function"==typeof window.atob)return n?t(window.atob(e)):window.atob(e);var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r,o,a,s,u,c,l,d,f=0,p=0,h="",m=[];if(!e)return e;e+="";do s=i.indexOf(e.charAt(f++)),u=i.indexOf(e.charAt(f++)),c=i.indexOf(e.charAt(f++)),l=i.indexOf(e.charAt(f++)),d=s<<18|u<<12|c<<6|l,r=255&d>>16,o=255&d>>8,a=255&d,m[p++]=64==c?String.fromCharCode(r):64==l?String.fromCharCode(r,o):String.fromCharCode(r,o,a);while(f<e.length);return h=m.join(""),n?t(h):h},i=function(t,n){if(n&&e(t),"function"==typeof window.btoa)return window.btoa(t);var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r,o,a,s,u,c,l,d,f=0,p=0,h="",m=[];if(!t)return t;do r=t.charCodeAt(f++),o=t.charCodeAt(f++),a=t.charCodeAt(f++),d=r<<16|o<<8|a,s=63&d>>18,u=63&d>>12,c=63&d>>6,l=63&d,m[p++]=i.charAt(s)+i.charAt(u)+i.charAt(c)+i.charAt(l);while(f<t.length);h=m.join("");var g=t.length%3;return(g?h.slice(0,g-3):h)+"===".slice(g||3)};return{utf8_encode:e,utf8_decode:t,atob:n,btoa:i}}),i(g,[u,f,h],function(e,t,n){function i(n,r,a,s,u){var c=this,l,d=e.guid(r+"_"),f=u||"browser";n=n||{},o[d]=this,a=e.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},a),n.preferred_caps&&(f=i.getMode(s,n.preferred_caps,f)),l=function(){var t={};return{exec:function(e,n,i,r){return l[n]&&(t[e]||(t[e]={context:this,instance:new l[n]}),t[e].instance[i])?t[e].instance[i].apply(this,r):void 0},removeInstance:function(e){delete t[e]},removeAllInstances:function(){var n=this;e.each(t,function(t,i){"function"===e.typeOf(t.instance.destroy)&&t.instance.destroy.call(t.context),n.removeInstance(i)})}}}(),e.extend(this,{initialized:!1,uid:d,type:r,mode:i.getMode(s,n.required_caps,f),shimid:d+"_container",clients:0,options:n,can:function(t,n){var r=arguments[2]||a;if("string"===e.typeOf(t)&&"undefined"===e.typeOf(n)&&(t=i.parseCaps(t)),"object"===e.typeOf(t)){for(var o in t)if(!this.can(o,t[o],r))return!1;return!0}return"function"===e.typeOf(r[t])?r[t].call(this,n):n===r[t]},getShimContainer:function(){var n,i=t.get(this.shimid);return i||(n=this.options.container?t.get(this.options.container):document.body,i=document.createElement("div"),i.id=this.shimid,i.className="moxie-shim moxie-shim-"+this.type,e.extend(i.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),n.appendChild(i),n=null),i},getShim:function(){return l},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec.call(this,this.uid,e,t,n)},exec:function(e,t){var n=[].slice.call(arguments,2);return c[e]&&c[e][t]?c[e][t].apply(this,n):c.shimExec.apply(this,arguments)},destroy:function(){if(c){var e=t.get(this.shimid);e&&e.parentNode.removeChild(e),l&&l.removeAllInstances(),this.unbindAll(),delete o[this.uid],this.uid=null,d=c=l=e=null}}}),this.mode&&n.required_caps&&!this.can(n.required_caps)&&(this.mode=!1)}var r={},o={};return i.order="html5,flash,silverlight,html4",i.getRuntime=function(e){return o[e]?o[e]:!1},i.addConstructor=function(e,t){t.prototype=n.instance,r[e]=t},i.getConstructor=function(e){return r[e]||null},i.getInfo=function(e){var t=i.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},i.parseCaps=function(t){var n={};return"string"!==e.typeOf(t)?t||{}:(e.each(t.split(","),function(e){n[e]=!0}),n)},i.can=function(e,t){var n,r=i.getConstructor(e),o;return r?(n=new r({required_caps:t}),o=n.mode,n.destroy(),!!o):!1},i.thatCan=function(e,t){var n=(t||i.order).split(/\s*,\s*/);for(var r in n)if(i.can(n[r],e))return n[r];return null},i.getMode=function(t,n,i){var r=null;if("undefined"===e.typeOf(i)&&(i="browser"),n&&!e.isEmptyObj(t)){if(e.each(n,function(n,i){if(t.hasOwnProperty(i)){var o=t[i](n);if("string"==typeof o&&(o=[o]),r){if(!(r=e.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==e.inArray(i,r)?i:r[0];if(r===!1)return!1}return i},i.capTrue=function(){return!0},i.capFalse=function(){return!1},i.capTest=function(e){return function(){return!!e}},i}),i(v,[p,u,g],function(e,t,n){return function i(){var i;t.extend(this,{connectRuntime:function(r){function o(t){var s,u;return t.length?(s=t.shift(),(u=n.getConstructor(s))?(i=new u(r),i.bind("Init",function(){i.initialized=!0,setTimeout(function(){i.clients++,a.trigger("RuntimeInit",i)},1)}),i.bind("Error",function(){i.destroy(),o(t)}),i.mode?(i.init(),void 0):(i.trigger("Error"),void 0)):(o(t),void 0)):(a.trigger("RuntimeError",new e.RuntimeError(e.RuntimeError.NOT_INIT_ERR)),i=null,void 0)}var a=this,s;if("string"===t.typeOf(r)?s=r:"string"===t.typeOf(r.ruid)&&(s=r.ruid),s){if(i=n.getRuntime(s))return i.clients++,i;throw new e.RuntimeError(e.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},getRuntime:function(){return i&&i.uid?i:(i=null,null)},disconnectRuntime:function(){i&&--i.clients<=0&&(i.destroy(),i=null)}})}}),i(y,[u,m,v],function(e,t,n){function i(o,a){function s(t,n,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new i(null,{type:o,size:n-t}),a.detach(s.substr(t,a.size)),a):null}n.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,n){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,n)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy",r[this.uid]),this.disconnectRuntime(),this.ruid=null),e=e||"";var n=e.match(/^data:([^;]*);base64,/);n&&(this.type=n[1],e=t.atob(e.substring(e.indexOf("base64,")+7))),this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return i}),i(w,[u,l,y],function(e,t,n){function i(i,r){var o,a;if(r||(r={}),a=r.type&&""!==r.type?r.type:t.getFileMime(r.name),r.name)o=r.name.replace(/\\/g,"/"),o=o.substr(o.lastIndexOf("/")+1);else{var s=a.split("/")[0];o=e.guid((""!==s?s:"file")+"_"),t.extensions[a]&&(o+="."+t.extensions[a][0])}n.apply(this,arguments),e.extend(this,{type:a||"",name:o||e.guid("file_"),lastModifiedDate:r.lastModifiedDate||(new Date).toLocaleString()})}return i.prototype=n.prototype,i}),i(E,[u,l,f,p,h,c,w,g,v],function(e,t,n,i,r,o,a,s,u){function c(r){var c=this,d,f,p;if(-1!==e.inArray(e.typeOf(r),["string","node"])&&(r={browse_button:r}),f=n.get(r.browse_button),!f)throw new i.DOMException(i.DOMException.NOT_FOUND_ERR);p={accept:[{title:o.translate("All Files"),extensions:"*"}],name:"file",multiple:!1,required_caps:!1,container:f.parentNode||document.body},r=e.extend({},p,r),"string"==typeof r.required_caps&&(r.required_caps=s.parseCaps(r.required_caps)),"string"==typeof r.accept&&(r.accept=t.mimes2extList(r.accept)),d=n.get(r.container),d||(d=document.body),"static"===n.getStyle(d,"position")&&(d.style.position="relative"),d=f=null,u.call(c),e.extend(c,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){c.convertEventPropsToHandlers(l),c.bind("RuntimeInit",function(t,i){c.ruid=i.uid,c.shimid=i.shimid,c.bind("Ready",function(){c.trigger("Refresh")},999),c.bind("Change",function(){var t=i.exec.call(c,"FileInput","getFiles");c.files=[],e.each(t,function(e){return 0===e.size?!0:(c.files.push(new a(c.ruid,e)),void 0)})},999),c.bind("Refresh",function(){var t,o,a,s;a=n.get(r.browse_button),s=n.get(i.shimid),a&&(t=n.getPos(a,n.get(r.container)),o=n.getSize(a),s&&e.extend(s.style,{top:t.y+"px",left:t.x+"px",width:o.w+"px",height:o.h+"px"})),s=a=null}),i.exec.call(c,"FileInput","init",r)}),c.connectRuntime(e.extend({},r,{required_caps:{select_file:!0}}))},disable:function(t){var n=this.getRuntime();n&&n.exec.call(this,"FileInput","disable","undefined"===e.typeOf(t)?!0:t)},refresh:function(){c.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,function(e){e.destroy()}),this.files=null}})}var l=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];return c.prototype=r.instance,c}),i(_,[c,f,p,u,w,v,h,l],function(e,t,n,i,r,o,a,s){function u(n){var a=this,u;"string"==typeof n&&(n={drop_zone:n}),u={accept:[{title:e.translate("All Files"),extensions:"*"}],required_caps:{drag_and_drop:!0}},n="object"==typeof n?i.extend({},u,n):u,n.container=t.get(n.drop_zone)||document.body,"static"===t.getStyle(n.container,"position")&&(n.container.style.position="relative"),"string"==typeof n.accept&&(n.accept=s.mimes2extList(n.accept)),o.call(a),i.extend(a,{uid:i.guid("uid_"),ruid:null,files:null,init:function(){a.convertEventPropsToHandlers(c),a.bind("RuntimeInit",function(e,t){a.ruid=t.uid,a.bind("Drop",function(){var e=t.exec.call(a,"FileDrop","getFiles");a.files=[],i.each(e,function(e){a.files.push(new r(a.ruid,e))})},999),t.exec.call(a,"FileDrop","init",n),a.dispatchEvent("ready")}),a.connectRuntime(n)},destroy:function(){var e=this.getRuntime();e&&(e.exec.call(this,"FileDrop","destroy"),this.disconnectRuntime()),this.files=null}})}var c=["ready","dragenter","dragleave","drop","error"];return u.prototype=a.instance,u}),i(x,[u,v,h],function(e,t,n){function i(){this.uid=e.guid("uid_"),t.call(this),this.destroy=function(){this.disconnectRuntime(),this.unbindAll()}}return i.prototype=n.instance,i}),i(R,[u,m,p,h,y,w,x],function(e,t,n,i,r,o,a){function s(){function i(e,i){function l(e){o.readyState=s.DONE,o.error=e,o.trigger("error"),d()}function d(){c.destroy(),c=null,o.trigger("loadend")}function f(t){c.bind("Error",function(e,t){l(t)}),c.bind("Progress",function(e){o.result=t.exec.call(c,"FileReader","getResult"),o.trigger(e)}),c.bind("Load",function(e){o.readyState=s.DONE,o.result=t.exec.call(c,"FileReader","getResult"),o.trigger(e),d()}),t.exec.call(c,"FileReader","read",e,i)}if(c=new a,this.convertEventPropsToHandlers(u),this.readyState===s.LOADING)return l(new n.DOMException(n.DOMException.INVALID_STATE_ERR));if(this.readyState=s.LOADING,this.trigger("loadstart"),i instanceof r)if(i.isDetached()){var p=i.getSource();switch(e){case"readAsText":case"readAsBinaryString":this.result=p;break;case"readAsDataURL":this.result="data:"+i.type+";base64,"+t.btoa(p)}this.readyState=s.DONE,this.trigger("load"),d()}else f(c.connectRuntime(i.ruid));else l(new n.DOMException(n.DOMException.NOT_FOUND_ERR))}var o=this,c;e.extend(this,{uid:e.guid("uid_"),readyState:s.EMPTY,result:null,error:null,readAsBinaryString:function(e){i.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){i.call(this,"readAsDataURL",e)},readAsText:function(e){i.call(this,"readAsText",e)
-},abort:function(){this.result=null,-1===e.inArray(this.readyState,[s.EMPTY,s.DONE])&&(this.readyState===s.LOADING&&(this.readyState=s.DONE),c&&c.getRuntime().exec.call(this,"FileReader","abort"),this.trigger("abort"),this.trigger("loadend"))},destroy:function(){this.abort(),c&&(c.getRuntime().exec.call(this,"FileReader","destroy"),c.disconnectRuntime()),o=c=null}})}var u=["loadstart","progress","load","abort","error","loadend"];return s.EMPTY=0,s.LOADING=1,s.DONE=2,s.prototype=i.instance,s}),i(b,[],function(){var e=function(t,n){for(var i=["source","scheme","authority","userInfo","user","pass","host","port","relative","path","directory","file","query","fragment"],r=i.length,o={http:80,https:443},a={},s=/^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,u=s.exec(t||"");r--;)u[r]&&(a[i[r]]=u[r]);if(!a.scheme){n&&"string"!=typeof n||(n=e(n||document.location.href)),a.scheme=n.scheme,a.host=n.host,a.port=n.port;var c="";/^[^\/]/.test(a.path)&&(c=n.path,/(\/|\/[^\.]+)$/.test(c)?c+="/":c=c.replace(/\/[^\/]+$/,"/")),a.path=c+(a.path||"")}return a.port||(a.port=o[a.scheme]||80),a.port=parseInt(a.port,10),a.path||(a.path="/"),delete a.source,a},t=function(t){var n={http:80,https:443},i=e(t);return i.scheme+"://"+i.host+(i.port!==n[i.scheme]?":"+i.port:"")+i.path+(i.query?i.query:"")},n=function(t){function n(e){return[e.scheme,e.host,e.port].join("/")}return"string"==typeof t&&(t=e(t)),n(e())===n(t)};return{parseUrl:e,resolveUrl:t,hasSameOrigin:n}}),i(T,[u,v,m],function(e,t,n){return function(){function i(e,t){if(!t.isDetached()){var i=this.connectRuntime(t.ruid).exec.call(this,"FileReaderSync","read",e,t);return this.disconnectRuntime(),i}var r=t.getSource();switch(e){case"readAsBinaryString":return r;case"readAsDataURL":return"data:"+t.type+";base64,"+n.btoa(r);case"readAsText":for(var o="",a=0,s=r.length;s>a;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return i.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return i.call(this,"readAsDataURL",e)},readAsText:function(e){return i.call(this,"readAsText",e)}})}}),i(S,[p,u,y],function(e,t,n){function i(){var e,i=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof n?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):i.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(n){t.each(i,function(e){n(e.value,e.name)}),e&&n(e.value,e.name)},destroy:function(){e=null,i=[]}})}return i}),i(A,[u,p,h,m,b,g,x,y,T,S,d,l],function(e,t,n,i,r,o,a,s,u,c,l,d){function f(){this.uid=e.guid("uid_")}function p(){function n(e,t){return y.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?y[e]:v[e]:(l.can("define_property")?y[e]=t:v[e]=t,void 0):void 0}function u(t){function i(){k.destroy(),k=null,s.dispatchEvent("loadend"),s=null}function r(r){k.bind("LoadStart",function(e){n("readyState",p.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),I&&s.upload.dispatchEvent(e)}),k.bind("Progress",function(e){n("readyState")!==p.LOADING&&(n("readyState",p.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),k.bind("UploadProgress",function(e){I&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),k.bind("Load",function(t){n("readyState",p.DONE),n("status",Number(r.exec.call(k,"XMLHttpRequest","getStatus")||0)),n("statusText",h[n("status")]||""),n("response",r.exec.call(k,"XMLHttpRequest","getResponse",n("responseType"))),~e.inArray(n("responseType"),["text",""])?n("responseText",n("response")):"document"===n("responseType")&&n("responseXML",n("response")),U=r.exec.call(k,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),n("status")>0?(I&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(N=!0,s.dispatchEvent("error")),i()}),k.bind("Abort",function(e){s.dispatchEvent(e),i()}),k.bind("Error",function(e){N=!0,n("readyState",p.DONE),s.dispatchEvent("readystatechange"),D=!0,s.dispatchEvent(e),i()}),r.exec.call(k,"XMLHttpRequest","send",{url:E,method:_,async:w,user:R,password:b,headers:x,mimeType:S,encoding:T,responseType:s.responseType,withCredentials:s.withCredentials,options:P},t)}var s=this;M=(new Date).getTime(),k=new a,"string"==typeof P.required_caps&&(P.required_caps=o.parseCaps(P.required_caps)),P.required_caps=e.extend({},P.required_caps,{return_response_type:s.responseType}),t instanceof c&&(P.required_caps.send_multipart=!0),L||(P.required_caps.do_cors=!0),P.ruid?r(k.connectRuntime(P)):(k.bind("RuntimeInit",function(e,t){r(t)}),k.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),k.connectRuntime(P))}function g(){n("responseText",""),n("responseXML",null),n("response",null),n("status",0),n("statusText",""),M=C=null}var v=this,y={timeout:0,readyState:p.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},w=!0,E,_,x={},R,b,T=null,S=null,A=!1,O=!1,I=!1,D=!1,N=!1,L=!1,M,C,F=null,H=null,P={},k,U="",B;e.extend(this,y,{uid:e.guid("uid_"),upload:new f,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||i.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(_=o.toUpperCase()),~e.inArray(_,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=i.utf8_encode(a),l=r.parseUrl(a),L=r.hasSameOrigin(l),E=r.resolveUrl(a),(u||c)&&!L)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(R=u||l.user,b=c||l.pass,w=s||!0,w===!1&&(n("timeout")||n("withCredentials")||""!==n("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);A=!w,O=!1,x={},g.call(this),n("readyState",p.OPENED),this.convertEventPropsToHandlers(["readystatechange"]),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(n("readyState")!==p.OPENED||O)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||i.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(x[r]?x[r]+=", "+o:x[r]=o,!0)},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),N||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(B||(B={},e.each(U.split(/\r\n/),function(t){var n=t.split(/:\s+/);2===n.length&&(n[0]=e.trim(n[0]),B[n[0].toLowerCase()]={header:n[0],value:e.trim(n[1])})})),B.hasOwnProperty(t))?B[t].header+": "+B[t].value:null},overrideMimeType:function(i){var r,o;if(~e.inArray(n("readyState"),[p.LOADING,p.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i=e.trim(i.toLowerCase()),/;/.test(i)&&(r=i.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(i=r[1],r[2]&&(o=r[2])),!d.mimes[i])throw new t.DOMException(t.DOMException.SYNTAX_ERR);F=i,H=o},send:function(n,r){if(P="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.convertEventPropsToHandlers(m),this.upload.convertEventPropsToHandlers(m),this.readyState!==p.OPENED||O)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n instanceof s)P.ruid=n.ruid,S=n.type||"application/octet-stream";else if(n instanceof c){if(n.hasBlob()){var o=n.getBlob();P.ruid=o.ruid,S=o.type||"application/octet-stream"}}else"string"==typeof n&&(T="UTF-8",S="text/plain;charset=UTF-8",n=i.utf8_encode(n));this.withCredentials||(this.withCredentials=P.required_caps&&P.required_caps.send_browser_cookies&&!L),I=!A&&this.upload.hasEventListener(),N=!1,D=!n,A||(O=!0),u.call(this,n)},abort:function(){if(N=!0,A=!1,~e.inArray(n("readyState"),[p.UNSENT,p.OPENED,p.DONE]))n("readyState",p.UNSENT);else{if(n("readyState",p.DONE),O=!1,!k)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);k.getRuntime().exec.call(k,"XMLHttpRequest","abort",D),D=!0}},destroy:function(){k&&("function"===e.typeOf(k.destroy)&&k.destroy(),k=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}})}var h={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};f.prototype=n.instance;var m=["loadstart","progress","abort","error","load","timeout","loadend"],g=1,v=2;return p.UNSENT=0,p.OPENED=1,p.HEADERS_RECEIVED=2,p.LOADING=3,p.DONE=4,p.prototype=n.instance,p}),i(O,[u,m,v,h],function(e,t,n,i){function r(){function i(){l=d=0,c=this.result=null}function o(t,n){var i=this;u=n,i.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(i.state,[r.IDLE,r.DONE])&&a.call(i)},999),i.bind("TransportingComplete",function(){d=l,i.state=r.DONE,c=null,i.result=u.exec.call(i,"Transporter","getAsBlob",t||"")},999),i.state=r.BUSY,i.trigger("TransportingStarted"),a.call(i)}function a(){var e=this,n,i=l-d;f>i&&(f=i),n=t.btoa(c.substr(d,f)),u.exec.call(e,"Transporter","receive",n,l)}var s,u,c,l,d,f;n.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,n,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),f=r.chunk_size,i.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,n,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,n,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),i.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),i.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=i.instance,r}),i(I,[u,f,p,T,A,g,v,O,d,h,y,w,m],function(e,t,n,i,r,o,a,s,u,c,l,d,f){function p(){function i(e){e||(e=this.getRuntime().exec.call(this,"Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name)}function c(t){var i=e.typeOf(t);try{if(t instanceof p){if(!t.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);m.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new n.ImageError(n.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(i,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===i)/^data:[^;]*;base64,/.test(t)?c.call(this,new l(null,{data:t}),arguments[1]):v.apply(this,arguments);else{if("node"!==i||"img"!==t.nodeName.toLowerCase())throw new n.DOMException(n.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r)}}function m(t,n){var i=this.connectRuntime(t.ruid);this.ruid=i.uid,i.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(n)?!0:n)}function g(t,n){function i(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){i(t)}),n&&"string"==typeof n.required_caps&&(n.required_caps=o.parseCaps(n.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},n))):i(this.connectRuntime(t.ruid))}function v(e,t){var n=this,i;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){this.bind("Load Resize",function(){i.call(this)},999),this.convertEventPropsToHandlers(h),c.apply(this,arguments)},downsize:function(t,i,r,o){try{if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);if(this.width>p.MAX_RESIZE_WIDTH||this.height>p.MAX_RESIZE_HEIGHT)throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);(!t&&!i||"undefined"===e.typeOf(r))&&(r=!1),t=t||this.width,i=i||this.height,o="undefined"===e.typeOf(o)?!0:!!o,this.getRuntime().exec.call(this,"Image","downsize",t,i,r,o)}catch(a){this.trigger("error",a)}},crop:function(e,t,n){this.downsize(e,t,!0,n)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return e||(e="image/jpeg"),"image/jpeg"!==e||t||(t=90),this.getRuntime().exec.call(this,"Image","getAsBlob",e,t)},getAsDataURL:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return this.getRuntime().exec.call(this,"Image","getAsDataURL",e,t)},getAsBinaryString:function(e,t){var n=this.getAsDataURL(e,t);return f.atob(n.substring(n.indexOf("base64,")+7))},embed:function(i){function r(){if(u.can("create_canvas")){var t=a.getAsCanvas();if(t)return i.appendChild(t),t=null,a.destroy(),o.trigger("embedded"),void 0}var r=a.getAsDataURL(c,l);if(!r)throw new n.ImageError(n.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",r.length))i.innerHTML='<img src="'+r+'" width="'+a.width+'" height="'+a.height+'" />',a.destroy(),o.trigger("embedded");else{var d=new s;d.bind("TransportingComplete",function(){v=o.connectRuntime(this.result.ruid),o.bind("Embedded",function(){e.extend(v.getShimContainer().style,{top:"0px",left:"0px",width:a.width+"px",height:a.height+"px"}),v=null},999),v.exec.call(o,"ImageView","display",this.result.uid,m,g),a.destroy()}),d.transport(f.atob(r.substring(r.indexOf("base64,")+7)),c,e.extend({},h,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:i}))}}var o=this,a,c,l,d,h=arguments[1]||{},m=this.width,g=this.height,v;try{if(!(i=t.get(i)))throw new n.DOMException(n.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);if(this.width>p.MAX_RESIZE_WIDTH||this.height>p.MAX_RESIZE_HEIGHT)throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);if(c=h.type||this.type||"image/jpeg",l=h.quality||90,d="undefined"!==e.typeOf(h.crop)?h.crop:!1,h.width)m=h.width,g=h.height||m;else{var y=t.getSize(i);y.w&&y.h&&(m=y.w,g=y.h)}return a=new p,a.bind("Resize",function(){r.call(o)}),a.bind("Load",function(){a.downsize(m,g,d,!1)}),a.clone(this,!1),a}catch(w){this.trigger("error",w)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}})}var h=["progress","load","error","resize","embedded"];return p.MAX_RESIZE_WIDTH=6500,p.MAX_RESIZE_HEIGHT=6500,p.prototype=c.instance,p}),i(D,[u,p,g,d],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue,c=e.extend({access_binary:s(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return r.can("access_binary")&&!!a.Image},display_media:s(i.can("create_canvas")||i.can("use_data_uri_over32kb")),do_cors:s(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:s(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==i.browser||i.version>9)}()),filter_by_extension:s(function(){return"Chrome"===i.browser&&i.version>=28||"IE"===i.browser&&i.version>=10}()),return_response_headers:u,return_response_type:function(e){return"json"===e&&window.JSON?!0:i.can("return_response_type",e)},return_status_code:u,report_upload_progress:s(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return r.can("access_binary")&&i.can("create_canvas")},select_file:function(){return i.can("use_fileinput")&&window.File},select_folder:function(){return r.can("select_file")&&"Chrome"===i.browser&&i.version>=21},select_multiple:function(){return!(!r.can("select_file")||"Safari"===i.browser&&"Windows"===i.os||"iOS"===i.os&&i.verComp(i.osVersion,"7.0.4","<"))},send_binary_string:s(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:s(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||r.can("send_binary_string")},slice_blob:s(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return r.can("slice_blob")&&r.can("send_multipart")},summon_file_dialog:s(function(){return"Firefox"===i.browser&&i.version>=4||"Opera"===i.browser&&i.version>=12||"IE"===i.browser&&i.version>=10||!!~e.inArray(i.browser,["Chrome","Safari"])}()),upload_filesize:u},arguments[2]);n.call(this,t,arguments[1]||o,c),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html5",a={};return n.addConstructor(o,r),a}),i(N,[D,y],function(e,t){function n(){function e(e,t,n){var i;if(!window.File.prototype.slice)return(i=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?i.call(e,t,n):null;try{return e.slice(),e.slice(t,n)}catch(r){return e.slice(t,n-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=n}),i(L,[u],function(e){function t(){this.returnValue=!1}function n(){this.cancelBubble=!0}var i={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=n,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),i.hasOwnProperty(o[r])||(i[o[r]]={}),l=i[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,n,o){var a,s;if(n=n.toLowerCase(),t[r]&&i[t[r]]&&i[t[r]][n]){a=i[t[r]][n];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(n,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+n,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete i[t[r]][n],e.isEmptyObj(i[t[r]])){delete i[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,n){t&&t[r]&&e.each(i[t[r]],function(e,i){a(t,i,n)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),i(M,[D,u,f,L,l,d],function(e,t,n,i,r,o){function a(){var e=[],a;t.extend(this,{init:function(s){var u=this,c=u.getRuntime(),l,d,f,p,h,m;a=s,e=[],f=a.accept.mimes||r.extList2mimes(a.accept,c.can("filter_by_extension")),d=c.getShimContainer(),d.innerHTML='<input id="'+c.uid+'" type="file" style="font-size:999px;opacity:0;"'+(a.multiple&&c.can("select_multiple")?"multiple":"")+(a.directory&&c.can("select_folder")?"webkitdirectory directory":"")+(f?' accept="'+f.join(",")+'"':"")+" />",l=n.get(c.uid),t.extend(l.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),p=n.get(a.browse_button),c.can("summon_file_dialog")&&("static"===n.getStyle(p,"position")&&(p.style.position="relative"),h=parseInt(n.getStyle(p,"z-index"),10)||1,p.style.zIndex=h,d.style.zIndex=h-1,i.addEvent(p,"click",function(e){var t=n.get(c.uid);t&&!t.disabled&&t.click(),e.preventDefault()},u.uid)),m=c.can("summon_file_dialog")?p:d,i.addEvent(m,"mouseover",function(){u.trigger("mouseenter")},u.uid),i.addEvent(m,"mouseout",function(){u.trigger("mouseleave")},u.uid),i.addEvent(m,"mousedown",function(){u.trigger("mousedown")},u.uid),i.addEvent(n.get(a.container),"mouseup",function(){u.trigger("mouseup")},u.uid),l.onchange=function g(){if(e=[],a.directory?t.each(this.files,function(t){"."!==t.name&&e.push(t)}):e=[].slice.call(this.files),"IE"!==o.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=g}u.trigger("change")},u.trigger({type:"ready",async:!0}),d=null},getFiles:function(){return e},disable:function(e){var t=this.getRuntime(),i;(i=n.get(t.uid))&&(i.disabled=!!e)},destroy:function(){var t=this.getRuntime(),r=t.getShim(),o=t.getShimContainer();i.removeAllEvents(o,this.uid),i.removeAllEvents(a&&n.get(a.container),this.uid),i.removeAllEvents(a&&n.get(a.browse_button),this.uid),o&&(o.innerHTML=""),r.removeInstance(this.uid),e=a=o=r=null}})}return e.FileInput=a}),i(C,[D,u,f,L,l],function(e,t,n,i,r){function o(){function e(e){for(var n=[],i=0;i<e.length;i++)[].push.apply(n,e[i].extensions.split(/\s*,\s*/));return-1===t.inArray("*",n)?n:[]}function o(e){var n=r.getFileExtension(e.name);return!n||!d.length||-1!==t.inArray(n,d)}function a(e,n){var i=[];t.each(e,function(e){var t=e.webkitGetAsEntry();if(t)if(t.isFile){var n=e.getAsFile();o(n)&&l.push(n)}else i.push(t)}),i.length?s(i,n):n()}function s(e,n){var i=[];t.each(e,function(e){i.push(function(t){u(e,t)})}),t.inSeries(i,function(){n()})}function u(e,t){e.isFile?e.file(function(e){o(e)&&l.push(e),t()},function(){t()}):e.isDirectory?c(e,t):t()}function c(e,t){function n(e){r.readEntries(function(t){t.length?([].push.apply(i,t),n(e)):e()},e)}var i=[],r=e.createReader();n(function(){s(i,t)})}var l=[],d=[],f;t.extend(this,{init:function(n){var r=this,s;f=n,d=e(f.accept),s=f.container,i.addEvent(s,"dragover",function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy"},r.uid),i.addEvent(s,"drop",function(e){e.preventDefault(),e.stopPropagation(),l=[],e.dataTransfer.items&&e.dataTransfer.items[0].webkitGetAsEntry?a(e.dataTransfer.items,function(){r.trigger("drop")}):(t.each(e.dataTransfer.files,function(e){o(e)&&l.push(e)}),r.trigger("drop"))},r.uid),i.addEvent(s,"dragenter",function(e){e.preventDefault(),e.stopPropagation(),r.trigger("dragenter")},r.uid),i.addEvent(s,"dragleave",function(e){e.preventDefault(),e.stopPropagation(),r.trigger("dragleave")},r.uid)},getFiles:function(){return l},destroy:function(){i.removeAllEvents(f&&n.get(f.container),this.uid),l=d=f=null}})}return e.FileDrop=o}),i(F,[D,m,u],function(e,t,n){function i(){function e(e){return t.atob(e.substring(e.indexOf("base64,")+7))}var i,r=!1;n.extend(this,{read:function(e,t){var o=this;i=new window.FileReader,i.addEventListener("progress",function(e){o.trigger(e)}),i.addEventListener("load",function(e){o.trigger(e)}),i.addEventListener("error",function(e){o.trigger(e,i.error)}),i.addEventListener("loadend",function(){i=null}),"function"===n.typeOf(i[e])?(r=!1,i[e](t.getSource())):"readAsBinaryString"===e&&(r=!0,i.readAsDataURL(t.getSource()))},getResult:function(){return i&&i.result?r?e(i.result):i.result:null},abort:function(){i&&i.abort()},destroy:function(){i=null}})}return e.FileReader=i}),i(H,[D,u,l,b,w,y,S,p,d],function(e,t,n,i,r,o,a,s,u){function c(){function e(e,t){var n=this,i,r;i=t.getBlob().getSource(),r=new window.FileReader,r.onload=function(){t.append(t.getBlobName(),new o(null,{type:i.type,data:r.result})),f.send.call(n,e,t)},r.readAsBinaryString(i)}function c(){return!window.XMLHttpRequest||"IE"===u.browser&&u.version<8?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(n){}}():new window.XMLHttpRequest}function l(e){var t=e.responseXML,n=e.responseText;return"IE"===u.browser&&n&&t&&!t.documentElement&&/[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type"))&&(t=new window.ActiveXObject("Microsoft.XMLDOM"),t.async=!1,t.validateOnParse=!1,t.loadXML(n)),t&&("IE"===u.browser&&0!==t.parseError||!t.documentElement||"parsererror"===t.documentElement.tagName)?null:t}function d(e){var t="----moxieboundary"+(new Date).getTime(),n="--",i="\r\n",r="",a=this.getRuntime();if(!a.can("send_binary_string"))throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR);return p.setRequestHeader("Content-Type","multipart/form-data; boundary="+t),e.each(function(e,a){r+=e instanceof o?n+t+i+'Content-Disposition: form-data; name="'+a+'"; filename="'+unescape(encodeURIComponent(e.name||"blob"))+'"'+i+"Content-Type: "+(e.type||"application/octet-stream")+i+i+e.getSource()+i:n+t+i+'Content-Disposition: form-data; name="'+a+'"'+i+i+unescape(encodeURIComponent(e))+i}),r+=n+t+n+i}var f=this,p,h;t.extend(this,{send:function(n,r){var s=this,l="Mozilla"===u.browser&&u.version>=4&&u.version<7,f="Android Browser"===u.browser,m=!1;if(h=n.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),p=c(),p.open(n.method,n.url,n.async,n.user,n.password),r instanceof o)r.isDetached()&&(m=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),m=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,n,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}p.upload?(n.withCredentials&&(p.withCredentials=!0),p.addEventListener("load",function(e){s.trigger(e)}),p.addEventListener("error",function(e){s.trigger(e)}),p.addEventListener("progress",function(e){s.trigger(e)}),p.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):p.onreadystatechange=function v(){switch(p.readyState){case 1:break;case 2:break;case 3:var e,t;try{i.hasSameOrigin(n.url)&&(e=p.getResponseHeader("Content-Length")||0),p.responseText&&(t=p.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:p.onreadystatechange=function(){},0===p.status?s.trigger("error"):s.trigger("load")}},t.isEmptyObj(n.headers)||t.each(n.headers,function(e,t){p.setRequestHeader(t,e)}),""!==n.responseType&&"responseType"in p&&(p.responseType="json"!==n.responseType||u.can("return_response_type","json")?n.responseType:"text"),m?p.sendAsBinary?p.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t<r.length;t++)e[t]=255&r.charCodeAt(t);p.send(e.buffer)}():p.send(r),s.trigger("loadstart")},getStatus:function(){try{if(p)return p.status}catch(e){}return 0},getResponse:function(e){var t=this.getRuntime();try{switch(e){case"blob":var i=new r(t.uid,p.response),o=p.getResponseHeader("Content-Disposition");if(o){var a=o.match(/filename=([\'\"'])([^\1]+)\1/);a&&(h=a[2])}return i.name=h,i.type||(i.type=n.getFileMime(h)),i;case"json":return u.can("return_response_type","json")?p.response:200===p.status&&window.JSON?JSON.parse(p.responseText):null;case"document":return l(p);default:return""!==p.responseText?p.responseText:null}}catch(s){return null}},getAllResponseHeaders:function(){try{return p.getAllResponseHeaders()}catch(e){}return""},abort:function(){p&&p.abort()},destroy:function(){f=h=null}})}return e.XMLHttpRequest=c}),i(P,[],function(){return function(){function e(e,t){var n=r?0:-8*(t-1),i=0,a;for(a=0;t>a;a++)i|=o.charCodeAt(e+a)<<Math.abs(n+8*a);return i}function n(e,t,n){n=3===arguments.length?n:o.length-t-1,o=o.substr(0,t)+e+o.substr(n+t)}function i(e,t,i){var o="",a=r?0:-8*(i-1),s;for(s=0;i>s;s++)o+=String.fromCharCode(255&t>>Math.abs(a+8*s));n(o,e,i)}var r=!1,o;return{II:function(e){return e===t?r:(r=e,void 0)},init:function(e){r=!1,o=e},SEGMENT:function(e,t,i){switch(arguments.length){case 1:return o.substr(e,o.length-e-1);case 2:return o.substr(e,t);case 3:n(i,e,t);break;default:return o}},BYTE:function(t){return e(t,1)},SHORT:function(t){return e(t,2)},LONG:function(n,r){return r===t?e(n,4):(i(n,r,4),void 0)},SLONG:function(t){var n=e(t,4);return n>2147483647?n-4294967296:n},STRING:function(t,n){var i="";for(n+=t;n>t;t++)i+=String.fromCharCode(e(t,1));return i}}}}),i(k,[P],function(e){return function t(n){var i=[],r,o,a,s=0;if(r=new e,r.init(n),65496===r.SHORT(0)){for(o=2;o<=n.length;)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;s=r.SHORT(o+2)+2,a>=65505&&65519>=a&&i.push({hex:a,name:"APP"+(15&a),start:o,length:s,segment:r.SEGMENT(o,s)}),o+=s}return r.init(null),{headers:i,restore:function(e){var t,n;for(r.init(e),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,t=i.length;t>n;n++)r.SEGMENT(o,0,i[n].segment),o+=i[n].length;return e=r.SEGMENT(),r.init(null),e},strip:function(e){var n,i,o;for(i=new t(e),n=i.headers,i.purge(),r.init(e),o=n.length;o--;)r.SEGMENT(n[o].start,n[o].length,"");return e=r.SEGMENT(),r.init(null),e},get:function(e){for(var t=[],n=0,r=i.length;r>n;n++)i[n].name===e.toUpperCase()&&t.push(i[n].segment);return t},set:function(e,t){var n=[],r,o,a;for("string"==typeof t?n.push(t):n=t,r=o=0,a=i.length;a>r&&(i[r].name===e.toUpperCase()&&(i[r].segment=n[o],i[r].length=n[o].length,o++),!(o>=n.length));r++);},purge:function(){i=[],r.init(null),r=null}}}}}),i(U,[u,P],function(e,n){return function i(){function i(e,n){var i=a.SHORT(e),r,o,s,u,d,f,p,h,m=[],g={};for(r=0;i>r;r++)if(p=f=e+12*r+2,s=n[a.SHORT(p)],s!==t){switch(u=a.SHORT(p+=2),d=a.LONG(p+=2),p+=4,m=[],u){case 1:case 7:for(d>4&&(p=a.LONG(p)+c.tiffHeader),o=0;d>o;o++)m[o]=a.BYTE(p+o);break;case 2:d>4&&(p=a.LONG(p)+c.tiffHeader),g[s]=a.STRING(p,d-1);continue;case 3:for(d>2&&(p=a.LONG(p)+c.tiffHeader),o=0;d>o;o++)m[o]=a.SHORT(p+2*o);break;case 4:for(d>1&&(p=a.LONG(p)+c.tiffHeader),o=0;d>o;o++)m[o]=a.LONG(p+4*o);break;case 5:for(p=a.LONG(p)+c.tiffHeader,o=0;d>o;o++)m[o]=a.LONG(p+4*o)/a.LONG(p+4*o+4);break;case 9:for(p=a.LONG(p)+c.tiffHeader,o=0;d>o;o++)m[o]=a.SLONG(p+4*o);break;case 10:for(p=a.LONG(p)+c.tiffHeader,o=0;d>o;o++)m[o]=a.SLONG(p+4*o)/a.SLONG(p+4*o+4);break;default:continue}h=1==d?m[0]:m,g[s]=l.hasOwnProperty(s)&&"object"!=typeof h?l[s][h]:h}return g}function r(){var e=c.tiffHeader;return a.II(18761==a.SHORT(e)),42!==a.SHORT(e+=2)?!1:(c.IFD0=c.tiffHeader+a.LONG(e+=2),u=i(c.IFD0,s.tiff),"ExifIFDPointer"in u&&(c.exifIFD=c.tiffHeader+u.ExifIFDPointer,delete u.ExifIFDPointer),"GPSInfoIFDPointer"in u&&(c.gpsIFD=c.tiffHeader+u.GPSInfoIFDPointer,delete u.GPSInfoIFDPointer),!0)}function o(e,t,n){var i,r,o,u=0;if("string"==typeof t){var l=s[e.toLowerCase()];for(var d in l)if(l[d]===t){t=d;break}}i=c[e.toLowerCase()+"IFD"],r=a.SHORT(i);for(var f=0;r>f;f++)if(o=i+12*f+2,a.SHORT(o)==t){u=o+8;break}return u?(a.LONG(u,n),!0):!1}var a,s,u,c={},l;return a=new n,s={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire.",1:"Flash fired.",5:"Strobe return light not detected.",7:"Strobe return light detected.",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},{init:function(e){return c={tiffHeader:10},e!==t&&e.length?(a.init(e),65505===a.SHORT(0)&&"EXIF\0"===a.STRING(4,5).toUpperCase()?r():!1):!1
-},TIFF:function(){return u},EXIF:function(){var t;if(t=i(c.exifIFD,s.exif),t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n<t.ExifVersion.length;n++)r+=String.fromCharCode(t.ExifVersion[n]);t.ExifVersion=r}return t},GPS:function(){var t;return t=i(c.gpsIFD,s.gps),t.GPSVersionID&&"array"===e.typeOf(t.GPSVersionID)&&(t.GPSVersionID=t.GPSVersionID.join(".")),t},setExif:function(e,t){return"PixelXDimension"!==e&&"PixelYDimension"!==e?!1:o("exif",e,t)},getBinary:function(){return a.SEGMENT()},purge:function(){a.init(null),a=u=null,c={}}}}}),i(B,[u,p,k,P,U],function(e,t,n,i,r){function o(o){function a(){for(var e=0,t,n;e<=u.length;){if(t=c.SHORT(e+=2),t>=65472&&65475>=t)return e+=5,{height:c.SHORT(e),width:c.SHORT(e+=2)};n=c.SHORT(e+=2),e+=n-2}return null}function s(){d&&l&&c&&(d.purge(),l.purge(),c.init(null),u=f=l=d=c=null)}var u,c,l,d,f,p;if(u=o,c=new i,c.init(u),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new n(o),d=new r,p=!!d.init(l.get("app1")[0]),f=a.call(this),e.extend(this,{type:"image/jpeg",size:u.length,width:f&&f.width||0,height:f&&f.height||0,setExif:function(t,n){return p?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,n),l.set("app1",d.getBinary()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):u=l.restore(u)},stripHeaders:function(e){return l.strip(e)},purge:function(){s.call(this)}}),p&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS()})}return o}),i(z,[p,u,P],function(e,t,n){function i(i){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:u.LONG(t),height:u.LONG(t+=4)}):null}function o(){u&&(u.init(null),s=d=c=l=u=null)}function a(e){var t,n,i,r;return t=u.LONG(e),n=u.STRING(e+=4,4),i=e+=4,r=u.LONG(e+t),{length:t,type:n,start:i,CRC:r}}var s,u,c,l,d;s=i,u=new n,u.init(s),function(){var t=0,n=0,i=[35152,20039,3338,6666];for(n=0;n<i.length;n++,t+=2)if(i[n]!=u.SHORT(t))throw new e.ImageError(e.ImageError.WRONG_FORMAT)}(),d=r.call(this),t.extend(this,{type:"image/png",size:s.length,width:d.width,height:d.height,purge:function(){o.call(this)}}),o.call(this)}return i}),i(G,[u,p,B,z],function(e,t,n,i){return function(r){var o=[n,i],a;a=function(){for(var e=0;e<o.length;e++)try{return new o[e](r)}catch(n){}throw new t.ImageError(t.ImageError.WRONG_FORMAT)}(),e.extend(this,{type:"",size:0,width:0,height:0,setExif:function(){},writeHeaders:function(e){return e},stripHeaders:function(e){return e},purge:function(){}}),e.extend(this,a),this.purge=function(){a.purge(),a=null}}}),i(q,[],function(){function e(e,i,r){var o=e.naturalWidth,a=e.naturalHeight,s=r.width,u=r.height,c=r.x||0,l=r.y||0,d=i.getContext("2d");t(e)&&(o/=2,a/=2);var f=1024,p=document.createElement("canvas");p.width=p.height=f;for(var h=p.getContext("2d"),m=n(e,o,a),g=0;a>g;){for(var v=g+f>a?a-g:f,y=0;o>y;){var w=y+f>o?o-y:f;h.clearRect(0,0,f,f),h.drawImage(e,-y,-g);var E=y*s/o+c<<0,_=Math.ceil(w*s/o),x=g*u/a/m+l<<0,R=Math.ceil(v*u/a/m);d.drawImage(p,0,0,w,v,E,x,_,R),y+=f}g+=f}p=h=null}function t(e){var t=e.naturalWidth,n=e.naturalHeight;if(t*n>1048576){var i=document.createElement("canvas");i.width=i.height=1;var r=i.getContext("2d");return r.drawImage(e,-t+1,0),0===r.getImageData(0,0,1,1).data[3]}return!1}function n(e,t,n){var i=document.createElement("canvas");i.width=1,i.height=n;var r=i.getContext("2d");r.drawImage(e,0,0);for(var o=r.getImageData(0,0,1,n).data,a=0,s=n,u=n;u>a;){var c=o[4*(u-1)+3];0===c?s=u:a=u,u=s+a>>1}i=null;var l=u/n;return 0===l?1:l}return{isSubsampled:t,renderTo:e}}),i(X,[D,u,p,m,w,G,q,l,d],function(e,t,n,i,r,o,a,s,u){function c(){function e(){if(!E&&!y)throw new n.ImageError(n.DOMException.INVALID_STATE_ERR);return E||y}function c(e){return i.atob(e.substring(e.indexOf("base64,")+7))}function l(e,t){return"data:"+(t||"")+";base64,"+i.btoa(e)}function d(e){var t=this;y=new Image,y.onerror=function(){g.call(this),t.trigger("error",new n.ImageError(n.ImageError.WRONG_FORMAT))},y.onload=function(){t.trigger("load")},y.src=/^data:[^;]*;base64,/.test(e)?e:l(e,x.type)}function f(e,t){var i=this,r;return window.FileReader?(r=new FileReader,r.onload=function(){t(this.result)},r.onerror=function(){i.trigger("error",new n.FileException(n.FileException.NOT_READABLE_ERR))},r.readAsDataURL(e),void 0):t(e.getAsDataURL())}function p(n,i,r,o){var a=this,s,u,c=0,l=0,d,f,p,g;if(b=o,g=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1,-1!==t.inArray(g,[5,6,7,8])){var v=n;n=i,i=v}return d=e(),u=r?Math.max:Math.min,s=u(n/d.width,i/d.height),s>1&&(!r||o)?(this.trigger("Resize"),void 0):(E||(E=document.createElement("canvas")),f=Math.round(d.width*s),p=Math.round(d.height*s),r?(E.width=n,E.height=i,f>n&&(c=Math.round((f-n)/2)),p>i&&(l=Math.round((p-i)/2))):(E.width=f,E.height=p),b||m(E.width,E.height,g),h.call(this,d,E,-c,-l,f,p),this.width=E.width,this.height=E.height,R=!0,a.trigger("Resize"),void 0)}function h(e,t,n,i,r,o){if("iOS"===u.OS)a.renderTo(e,t,{width:r,height:o,x:n,y:i});else{var s=t.getContext("2d");s.drawImage(e,n,i,r,o)}}function m(e,t,n){switch(n){case 5:case 6:case 7:case 8:E.width=t,E.height=e;break;default:E.width=e,E.height=t}var i=E.getContext("2d");switch(n){case 2:i.translate(e,0),i.scale(-1,1);break;case 3:i.translate(e,t),i.rotate(Math.PI);break;case 4:i.translate(0,t),i.scale(1,-1);break;case 5:i.rotate(.5*Math.PI),i.scale(1,-1);break;case 6:i.rotate(.5*Math.PI),i.translate(0,-t);break;case 7:i.rotate(.5*Math.PI),i.translate(e,-t),i.scale(-1,1);break;case 8:i.rotate(-.5*Math.PI),i.translate(-e,0)}}function g(){w&&(w.purge(),w=null),_=y=E=x=null,R=!1}var v=this,y,w,E,_,x,R=!1,b=!0;t.extend(this,{loadFromBlob:function(e){var t=this,i=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!i.can("access_binary"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);return x=e,e.isDetached()?(_=e.getSource(),d.call(this,_),void 0):(f.call(this,e.getSource(),function(e){r&&(_=c(e)),d.call(t,e)}),void 0)},loadFromImage:function(e,t){this.meta=e.meta,x=new r(null,{name:e.name,size:e.size,type:e.type}),d.call(this,t?_=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t=this.getRuntime(),n;return!w&&_&&t.can("access_image_binary")&&(w=new o(_)),n={width:e().width||0,height:e().height||0,type:x.type||s.getFileMime(x.name),size:_&&_.length||x.size||0,name:x.name||"",meta:w&&w.meta||this.meta||{}}},downsize:function(){p.apply(this,arguments)},getAsCanvas:function(){return E&&(E.id=this.uid+"_canvas"),E},getAsBlob:function(e,t){return e!==this.type&&p.call(this,this.width,this.height,!1),new r(null,{name:x.name||"",type:e,data:v.getAsBinaryString.call(this,e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!R)return y.src;if("image/jpeg"!==e)return E.toDataURL("image/png");try{return E.toDataURL("image/jpeg",t/100)}catch(n){return E.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!R)return _||(_=c(v.getAsDataURL(e,t))),_;if("image/jpeg"!==e)_=c(v.getAsDataURL(e,t));else{var n;t||(t=90);try{n=E.toDataURL("image/jpeg",t/100)}catch(i){n=E.toDataURL("image/jpeg")}_=c(n),w&&(_=w.stripHeaders(_),b&&(w.meta&&w.meta.exif&&w.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),_=w.writeHeaders(_)),w.purge(),w=null)}return R=!1,_},destroy:function(){v=null,g.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),i(j,[u,d,f,p,g],function(e,t,n,i,r){function o(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(n){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function a(a){var c=this,l;a=e.extend({swf_url:t.swf_url},a),r.call(this,a,s,{access_binary:function(e){return e&&"browser"===c.mode},access_image_binary:function(e){return e&&"browser"===c.mode},display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===c.mode},resize_image:r.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===c.mode},return_status_code:function(t){return"browser"===c.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:function(e){return e&&"browser"===c.mode},send_browser_cookies:function(e){return e&&"browser"===c.mode},send_custom_headers:function(e){return e&&"browser"===c.mode},send_multipart:r.capTrue,slice_blob:r.capTrue,stream_upload:function(e){return e&&"browser"===c.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===c.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),o()<10&&(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid)},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec(this.uid,e,t,n)},init:function(){var n,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),n='<object id="'+this.uid+'" type="application/x-shockwave-flash" data="'+a.swf_url+'" ',"IE"===t.browser&&(n+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '),n+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+a.swf_url+'" />'+'<param name="flashvars" value="uid='+escape(this.uid)+"&target="+t.global_event_dispatcher+'" />'+'<param name="wmode" value="transparent" />'+'<param name="allowscriptaccess" value="always" />'+"</object>","IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=n,r=o=null):o.innerHTML=n,l=setTimeout(function(){c&&!c.initialized&&c.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){e.call(c),clearTimeout(l),a=l=e=c=null}}(this.destroy)},u)}var s="flash",u={};return r.addConstructor(s,a),u}),i(V,[j,y],function(e,t){var n={slice:function(e,n,i,r){var o=this.getRuntime();return 0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),e=o.shimExec.call(this,"Blob","slice",n,i,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=n}),i(W,[j],function(e){var t={init:function(e){this.getRuntime().shimExec.call(this,"FileInput","init",{name:e.name,accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=t}),i(Y,[j,m],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i="",r={read:function(e,t){var r=this,o=r.getRuntime();return"readAsDataURL"===e&&(i="data:"+(t.type||"")+";base64,"),r.bind("Progress",function(t,r){r&&(i+=n(r,e))}),o.shimExec.call(this,"FileReader","readAsBase64",t.uid)},getResult:function(){return i},destroy:function(){i=null}};return e.FileReader=r}),i($,[j,m],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i={read:function(e,t){var i,r=this.getRuntime();return(i=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(i="data:"+(t.type||"")+";base64,"+i),n(i,e,t.type)):null}};return e.FileReaderSync=i}),i(J,[j,u,y,w,T,S,O],function(e,t,n,i,r,o,a){var s={send:function(e,i){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,i)}function s(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),i=null,r()}function u(e,t){var n=new a;n.bind("TransportingComplete",function(){t(this.result)}),n.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),i instanceof o){var d;if(i.each(function(e,t){e instanceof n?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),i.hasBlob()){var f=i.getBlob();f.isDetached()?u(f,function(e){f.destroy(),s(d,e)}):s(d,f)}else i=null,r()}else i instanceof n?i.isDetached()?u(i,function(e){i.destroy(),i=e.uid,r()}):(i=i.uid,r()):r()},getResponse:function(e){var n,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new i(a.uid,o),"blob"===e)return o;try{if(n=new r,~t.inArray(e,["","text"]))return n.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(n.readAsText(o))}finally{o.destroy()}}return null},abort:function(e){var t=this.getRuntime();t.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=s}),i(Z,[j,y],function(e,t){var n={getAsBlob:function(e){var n=this.getRuntime(),i=n.shimExec.call(this,"Transporter","getAsBlob",e);return i?new t(n.uid,i):null}};return e.Transporter=n}),i(K,[j,u,O,y,T],function(e,t,n,i,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(i,"Image","loadFromBlob",e.uid),i=r=null}var i=this,r=i.getRuntime();if(e.isDetached()){var o=new n;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getAsBlob:function(e,t){var n=this.getRuntime(),r=n.shimExec.call(this,"Image","getAsBlob",e,t);return r?new i(n.uid,r):null},getAsDataURL:function(){var e=this.getRuntime(),t=e.Image.getAsBlob.apply(this,arguments),n;return t?(n=new r,n.readAsDataURL(t)):null}};return e.Image=o}),i(Q,[u,d,f,p,g],function(e,t,n,i,r){function o(e){var t=!1,n=null,i,r,o,a,s,u=0;try{try{n=new ActiveXObject("AgControl.AgControl"),n.IsVersionSupported(e)&&(t=!0),n=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(i=l.description,"1.0.30226.2"===i&&(i="2.0.30226.2"),r=i.split(".");r.length>3;)r.pop();for(;r.length<4;)r.push(0);for(o=e.split(".");o.length>4;)o.pop();do a=parseInt(o[u],10),s=parseInt(r[u],10),u++;while(u<o.length&&a===s);s>=a&&!isNaN(a)&&(t=!0)}}}catch(d){t=!1}return t}function a(a){var c=this,l;a=e.extend({xap_url:t.xap_url},a),r.call(this,a,s,{access_binary:r.capTrue,access_image_binary:r.capTrue,display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:r.capTrue,resize_image:r.capTrue,return_response_headers:function(e){return e&&"client"===c.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===c.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:r.capTrue,send_browser_cookies:function(e){return e&&"browser"===c.mode},send_custom_headers:function(e){return e&&"client"===c.mode},send_multipart:r.capTrue,slice_blob:r.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:r.capTrue,use_http_method:function(t){return"client"===c.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),o("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid).content.Moxie},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec(this.uid,e,t,n)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='<object id="'+this.uid+'" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;">'+'<param name="source" value="'+a.xap_url+'"/>'+'<param name="background" value="Transparent"/>'+'<param name="windowless" value="true"/>'+'<param name="enablehtmlaccess" value="true"/>'+'<param name="initParams" value="uid='+this.uid+",target="+t.global_event_dispatcher+'"/>'+"</object>",l=setTimeout(function(){c&&!c.initialized&&c.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(c),clearTimeout(l),a=l=e=c=null}}(this.destroy)},u)}var s="silverlight",u={};return r.addConstructor(s,a),u}),i(et,[Q,u,V],function(e,t,n){return e.Blob=t.extend({},n)}),i(tt,[Q],function(e){var t={init:function(e){function t(e){for(var t="",n=0;n<e.length;n++)t+=(""!==t?"|":"")+e[n].title+" | *."+e[n].extensions.replace(/,/g,";*.");return t}this.getRuntime().shimExec.call(this,"FileInput","init",t(e.accept),e.name,e.multiple),this.trigger("ready")}};return e.FileInput=t}),i(nt,[Q,f,L],function(e,t,n){var i={init:function(){var e=this,i=e.getRuntime(),r;return r=i.getShimContainer(),n.addEvent(r,"dragover",function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy"},e.uid),n.addEvent(r,"dragenter",function(e){e.preventDefault();var n=t.get(i.uid).dragEnter(e);n&&e.stopPropagation()},e.uid),n.addEvent(r,"drop",function(e){e.preventDefault();var n=t.get(i.uid).dragDrop(e);n&&e.stopPropagation()},e.uid),i.shimExec.call(this,"FileDrop","init")}};return e.FileDrop=i}),i(it,[Q,u,Y],function(e,t,n){return e.FileReader=t.extend({},n)}),i(rt,[Q,u,$],function(e,t,n){return e.FileReaderSync=t.extend({},n)}),i(ot,[Q,u,J],function(e,t,n){return e.XMLHttpRequest=t.extend({},n)}),i(at,[Q,u,Z],function(e,t,n){return e.Transporter=t.extend({},n)}),i(st,[Q,u,K],function(e,t,n){return e.Image=t.extend({},n,{getInfo:function(){var e=this.getRuntime(),n=["tiff","exif","gps"],i={meta:{}},r=e.shimExec.call(this,"Image","getInfo");return r.meta&&t.each(n,function(e){var t=r.meta[e],n,o,a,s;if(t&&t.keys)for(i.meta[e]={},o=0,a=t.keys.length;a>o;o++)n=t.keys[o],s=t[n],s&&(/^(\d|[1-9]\d+)$/.test(s)?s=parseInt(s,10):/^\d*\.\d+$/.test(s)&&(s=parseFloat(s)),i.meta[e][n]=s)}),i.width=parseInt(r.width,10),i.height=parseInt(r.height,10),i.size=parseInt(r.size,10),i.type=r.type,i.name=r.name,i}})}),i(ut,[u,p,g,d],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue;n.call(this,t,o,{access_binary:s(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:s(a.Image&&(i.can("create_canvas")||i.can("use_data_uri_over32kb"))),do_cors:!1,drag_and_drop:!1,filter_by_extension:s(function(){return"Chrome"===i.browser&&i.version>=28||"IE"===i.browser&&i.version>=10}()),resize_image:function(){return a.Image&&r.can("access_binary")&&i.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return i.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return r.can("select_file")},summon_file_dialog:s(function(){return"Firefox"===i.browser&&i.version>=4||"Opera"===i.browser&&i.version>=12||!!~e.inArray(i.browser,["Chrome","Safari"])}()),upload_filesize:u,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html4",a={};return n.addConstructor(o,r),a}),i(ct,[ut,u,f,L,l,d],function(e,t,n,i,r,o){function a(){function e(){var r=this,l=r.getRuntime(),d,f,p,h,m,g;g=t.guid("uid_"),d=l.getShimContainer(),a&&(p=n.get(a+"_form"),p&&t.extend(p.style,{top:"100%"})),h=document.createElement("form"),h.setAttribute("id",g+"_form"),h.setAttribute("method","post"),h.setAttribute("enctype","multipart/form-data"),h.setAttribute("encoding","multipart/form-data"),t.extend(h.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=document.createElement("input"),m.setAttribute("id",g),m.setAttribute("type","file"),m.setAttribute("name",c.name||"Filedata"),m.setAttribute("accept",u.join(",")),t.extend(m.style,{fontSize:"999px",opacity:0}),h.appendChild(m),d.appendChild(h),t.extend(m.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===o.browser&&o.version<10&&t.extend(m.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),m.onchange=function(){var t;this.value&&(t=this.files?this.files[0]:{name:this.value},s=[t],this.onchange=function(){},e.call(r),r.bind("change",function i(){var e=n.get(g),t=n.get(g+"_form"),o;r.unbind("change",i),r.files.length&&e&&t&&(o=r.files[0],e.setAttribute("id",o.uid),t.setAttribute("id",o.uid+"_form"),t.setAttribute("target",o.uid+"_iframe")),e=t=null},998),m=h=null,r.trigger("change"))},l.can("summon_file_dialog")&&(f=n.get(c.browse_button),i.removeEvent(f,"click",r.uid),i.addEvent(f,"click",function(e){m&&!m.disabled&&m.click(),e.preventDefault()},r.uid)),a=g,d=p=f=null}var a,s=[],u=[],c;t.extend(this,{init:function(t){var o=this,a=o.getRuntime(),s;c=t,u=t.accept.mimes||r.extList2mimes(t.accept,a.can("filter_by_extension")),s=a.getShimContainer(),function(){var e,r,u;e=n.get(t.browse_button),a.can("summon_file_dialog")&&("static"===n.getStyle(e,"position")&&(e.style.position="relative"),r=parseInt(n.getStyle(e,"z-index"),10)||1,e.style.zIndex=r,s.style.zIndex=r-1),u=a.can("summon_file_dialog")?e:s,i.addEvent(u,"mouseover",function(){o.trigger("mouseenter")},o.uid),i.addEvent(u,"mouseout",function(){o.trigger("mouseleave")},o.uid),i.addEvent(u,"mousedown",function(){o.trigger("mousedown")},o.uid),i.addEvent(n.get(t.container),"mouseup",function(){o.trigger("mouseup")},o.uid),e=null}(),e.call(this),s=null,o.trigger({type:"ready",async:!0})},getFiles:function(){return s},disable:function(e){var t;(t=n.get(a))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),r=e.getShimContainer();i.removeAllEvents(r,this.uid),i.removeAllEvents(c&&n.get(c.container),this.uid),i.removeAllEvents(c&&n.get(c.browse_button),this.uid),r&&(r.innerHTML=""),t.removeInstance(this.uid),a=s=u=c=r=t=null}})}return e.FileInput=a}),i(lt,[ut,F],function(e,t){return e.FileReader=t}),i(dt,[ut,u,f,b,p,L,y,S],function(e,t,n,i,r,o,a,s){function u(){function e(e){var t=this,i,r,a,s,u=!1;if(l){if(i=l.id.replace(/_iframe$/,""),r=n.get(i+"_form")){for(a=r.getElementsByTagName("input"),s=a.length;s--;)switch(a[s].getAttribute("type")){case"hidden":a[s].parentNode.removeChild(a[s]);break;case"file":u=!0}a=[],u||r.parentNode.removeChild(r),r=null}setTimeout(function(){o.removeEvent(l,"load",t.uid),l.parentNode&&l.parentNode.removeChild(l);var n=t.getRuntime().getShimContainer();n.children.length||n.parentNode.removeChild(n),n=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,f){function p(){var n=m.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='<iframe id="'+g+'_iframe" name="'+g+'_iframe" src="javascript:&quot;&quot;" style="display:none"></iframe>',l=r.firstChild,n.appendChild(l),o.addEvent(l,"load",function(){var n;try{n=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(n.title)?u=n.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(n.body.innerHTML),h.trigger({type:"progress",loaded:c.length,total:c.length}),w&&h.trigger({type:"uploadprogress",loaded:w.size||1025,total:w.size||1025}))}catch(r){if(!i.hasSameOrigin(d.url))return e.call(h,function(){h.trigger("error")}),void 0;u=404}e.call(h,function(){h.trigger("load")})},h.uid)}var h=this,m=h.getRuntime(),g,v,y,w;if(u=c=null,f instanceof s&&f.hasBlob()){if(w=f.getBlob(),g=w.uid,y=n.get(g),v=n.get(g+"_form"),!v)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else g=t.guid("uid_"),v=document.createElement("form"),v.setAttribute("id",g+"_form"),v.setAttribute("method",d.method),v.setAttribute("enctype","multipart/form-data"),v.setAttribute("encoding","multipart/form-data"),v.setAttribute("target",g+"_iframe"),m.getShimContainer().appendChild(v);f instanceof s&&f.each(function(e,n){if(e instanceof a)y&&y.setAttribute("name",n);else{var i=document.createElement("input");t.extend(i,{type:"hidden",name:n,value:e}),y?v.insertBefore(i,y):v.appendChild(i)}}),v.setAttribute("action",d.url),p(),v.submit(),h.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*<pre[^>]*>/,"").replace(/<\/pre>\s*$/,""))}catch(n){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),i(ft,[ut,X],function(e,t){return e.Image=t}),a([u,c,l,d,f,p,h,m,g,v,y,w,E,_,x,R,b,T,S,A,O,I,L])}(this);;(function(){"use strict";var e={},t=moxie.core.utils.Basic.inArray;return function n(r){var i,s;for(i in r)s=typeof r[i],s==="object"&&!~t(i,["Exceptions","Env","Mime"])?n(r[i]):s==="function"&&(e[i]=r[i])}(window.moxie),e.Env=window.moxie.core.utils.Env,e.Mime=window.moxie.core.utils.Mime,e.Exceptions=window.moxie.core.Exceptions,window.mOxie=e,window.o||(window.o=e),e})();
+!function(e,t){"use strict";function n(e,t){for(var n,i=[],r=0;r<e.length;++r){if(n=s[e[r]]||o(e[r]),!n)throw"module definition dependecy not found: "+e[r];i.push(n)}t.apply(null,i)}function i(e,i,r){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(i===t)throw"invalid module definition, dependencies must be specified";if(r===t)throw"invalid module definition, definition function must be specified";n(i,function(){s[e]=r.apply(null,arguments)})}function r(e){return!!s[e]}function o(t){for(var n=e,i=t.split(/[.\/]/),r=0;r<i.length;++r){if(!n[i[r]])return;n=n[i[r]]}return n}function a(n){for(var i=0;i<n.length;i++){for(var r=e,o=n[i],a=o.split(/[.\/]/),u=0;u<a.length-1;++u)r[a[u]]===t&&(r[a[u]]={}),r=r[a[u]];r[a[a.length-1]]=s[o]}}var s={},u="moxie/core/utils/Basic",c="moxie/core/utils/Env",l="moxie/core/I18n",d="moxie/core/utils/Mime",h="moxie/core/utils/Dom",f="moxie/core/Exceptions",p="moxie/core/EventTarget",m="moxie/runtime/Runtime",g="moxie/runtime/RuntimeClient",v="moxie/file/FileInput",w="moxie/core/utils/Encode",y="moxie/file/Blob",E="moxie/file/File",_="moxie/file/FileDrop",b="moxie/file/FileReader",x="moxie/core/utils/Url",R="moxie/runtime/RuntimeTarget",A="moxie/file/FileReaderSync",I="moxie/xhr/FormData",T="moxie/xhr/XMLHttpRequest",S="moxie/runtime/Transporter",O="moxie/image/Image",D="moxie/runtime/html5/Runtime",N="moxie/core/utils/Events",L="moxie/runtime/html5/file/FileInput",C="moxie/runtime/html5/file/Blob",M="moxie/runtime/html5/file/FileDrop",F="moxie/runtime/html5/file/FileReader",P="moxie/runtime/html5/xhr/XMLHttpRequest",H="moxie/runtime/html5/utils/BinaryReader",B="moxie/runtime/html5/image/JPEGHeaders",k="moxie/runtime/html5/image/ExifParser",U="moxie/runtime/html5/image/JPEG",G="moxie/runtime/html5/image/PNG",z="moxie/runtime/html5/image/ImageInfo",q="moxie/runtime/html5/image/MegaPixel",j="moxie/runtime/html5/image/Image",X="moxie/runtime/flash/Runtime",V="moxie/runtime/flash/file/FileInput",W="moxie/runtime/flash/file/Blob",Y="moxie/runtime/flash/file/FileReader",$="moxie/runtime/flash/file/FileReaderSync",J="moxie/runtime/flash/xhr/XMLHttpRequest",Z="moxie/runtime/flash/runtime/Transporter",K="moxie/runtime/flash/image/Image",Q="moxie/runtime/silverlight/Runtime",ee="moxie/runtime/silverlight/file/FileInput",te="moxie/runtime/silverlight/file/Blob",ne="moxie/runtime/silverlight/file/FileDrop",ie="moxie/runtime/silverlight/file/FileReader",re="moxie/runtime/silverlight/file/FileReaderSync",oe="moxie/runtime/silverlight/xhr/XMLHttpRequest",ae="moxie/runtime/silverlight/runtime/Transporter",se="moxie/runtime/silverlight/image/Image",ue="moxie/runtime/html4/Runtime",ce="moxie/runtime/html4/file/FileInput",le="moxie/runtime/html4/file/FileReader",de="moxie/runtime/html4/xhr/XMLHttpRequest",he="moxie/runtime/html4/image/Image";i(u,[],function(){var e=function(e){var t;return e===t?"undefined":null===e?"null":e.nodeType?"node":{}.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()},t=function(i){var r;return n(arguments,function(o,s){s>0&&n(o,function(n,o){n!==r&&(e(i[o])===e(n)&&~a(e(n),["array","object"])?t(i[o],n):i[o]=n)})}),i},n=function(t,n){var i,r,o,a;if(t)if("number"===e(t.length)){for(o=0,i=t.length;i>o;o++)if(n(t[o],o)===!1)return}else if("object"===e(t))for(r in t)if(t.hasOwnProperty(r)&&n(t[r],r)===!1)return},i=function(t){var n;if(!t||"object"!==e(t))return!0;for(n in t)return!1;return!0},r=function(t,n){function i(r){"function"===e(t[r])&&t[r](function(e){++r<o&&!e?i(r):n(e)})}var r=0,o=t.length;"function"!==e(n)&&(n=function(){}),t&&t.length||n(),i(r)},o=function(e,t){var i=0,r=e.length,o=new Array(r);n(e,function(e,n){e(function(e){if(e)return t(e);var a=[].slice.call(arguments);a.shift(),o[n]=a,i++,i===r&&(o.unshift(null),t.apply(this,o))})})},a=function(e,t){if(t){if(Array.prototype.indexOf)return Array.prototype.indexOf.call(t,e);for(var n=0,i=t.length;i>n;n++)if(t[n]===e)return n}return-1},s=function(t,n){var i=[];"array"!==e(t)&&(t=[t]),"array"!==e(n)&&(n=[n]);for(var r in t)-1===a(t[r],n)&&i.push(t[r]);return i.length?i:!1},u=function(e,t){var i=[];return n(e,function(e){-1!==a(e,t)&&i.push(e)}),i.length?i:null},c=function(e){var t,n=[];for(t=0;t<e.length;t++)n[t]=e[t];return n},l=function(){var e=0;return function(t){var n=(new Date).getTime().toString(32),i;for(i=0;5>i;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}(),d=function(e){return e?String.prototype.trim?String.prototype.trim.call(e):e.toString().replace(/^\s*/,"").replace(/\s*$/,""):e},h=function(e){if("string"!=typeof e)return e;var t={t:1099511627776,g:1073741824,m:1048576,k:1024},n;return e=/^([0-9\.]+)([tmgk]?)$/.exec(e.toLowerCase().replace(/[^0-9\.tmkg]/g,"")),n=e[2],e=+e[1],t.hasOwnProperty(n)&&(e*=t[n]),Math.floor(e)},f=function(t){var n=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=n.shift();return"undefined"!==e(t)?t:""})};return{guid:l,typeOf:e,extend:t,each:n,isEmptyObj:i,inSeries:r,inParallel:o,inArray:a,arrayDiff:s,arrayIntersect:u,toArray:c,trim:d,sprintf:f,parseSizeStr:h}}),i(c,[u],function(e){function t(e,t,n){var i=0,r=0,o=0,a={dev:-6,alpha:-5,a:-5,beta:-4,b:-4,RC:-3,rc:-3,"#":-2,p:1,pl:1},s=function(e){return e=(""+e).replace(/[_\-+]/g,"."),e=e.replace(/([^.\d]+)/g,".$1.").replace(/\.{2,}/g,"."),e.length?e.split("."):[-8]},u=function(e){return e?isNaN(e)?a[e]||-7:parseInt(e,10):0};for(e=s(e),t=s(t),r=Math.max(e.length,t.length),i=0;r>i;i++)if(e[i]!=t[i]){if(e[i]=u(e[i]),t[i]=u(t[i]),e[i]<t[i]){o=-1;break}if(e[i]>t[i]){o=1;break}}if(!n)return o;switch(n){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var n=function(e){var t="",n="?",i="function",r="undefined",o="object",a="major",s="model",u="name",c="type",l="vendor",d="version",h="architecture",f="console",p="mobile",m="tablet",g={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},v={rgx:function(){for(var t,n=0,a,s,u,c,l,d,h=arguments;n<h.length;n+=2){var f=h[n],p=h[n+1];if(typeof t===r){t={};for(u in p)c=p[u],typeof c===o?t[c[0]]=e:t[c]=e}for(a=s=0;a<f.length;a++)if(l=f[a].exec(this.getUA())){for(u=0;u<p.length;u++)d=l[++s],c=p[u],typeof c===o&&c.length>0?2==c.length?typeof c[1]==i?t[c[0]]=c[1].call(this,d):t[c[0]]=c[1]:3==c.length?typeof c[1]!==i||c[1].exec&&c[1].test?t[c[0]]=d?d.replace(c[1],c[2]):e:t[c[0]]=d?c[1].call(this,d,c[2]):e:4==c.length&&(t[c[0]]=d?c[3].call(this,d.replace(c[1],c[2])):e):t[c]=d?d:e;break}if(l)break}return t},str:function(t,i){for(var r in i)if(typeof i[r]===o&&i[r].length>0){for(var a=0;a<i[r].length;a++)if(g.has(i[r][a],t))return r===n?e:r}else if(g.has(i[r],t))return r===n?e:r;return t}},w={browser:{oldsafari:{major:{1:["/8","/1","/3"],2:"/4","?":"/"},version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2000:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",RT:"ARM"}}}},y={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],[u,d],[/\s(opr)\/([\w\.]+)/i],[[u,"Opera"],d],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi)\/([\w\.-]+)/i],[u,d],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[[u,"IE"],d],[/(edge)\/((\d+)?[\w\.]+)/i],[u,d],[/(yabrowser)\/([\w\.]+)/i],[[u,"Yandex"],d],[/(comodo_dragon)\/([\w\.]+)/i],[[u,/_/g," "],d],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i,/(uc\s?browser|qqbrowser)[\/\s]?([\w\.]+)/i],[u,d],[/(dolfin)\/([\w\.]+)/i],[[u,"Dolphin"],d],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[[u,"Chrome"],d],[/XiaoMi\/MiuiBrowser\/([\w\.]+)/i],[d,[u,"MIUI Browser"]],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)/i],[d,[u,"Android Browser"]],[/FBAV\/([\w\.]+);/i],[d,[u,"Facebook"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],[d,[u,"Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],[d,u],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[u,[d,v.str,w.browser.oldsafari.version]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],[u,d],[/(navigator|netscape)\/([\w\.-]+)/i],[[u,"Netscape"],d],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/([\w\.-]+)/i,/(mozilla)\/([\w\.]+).+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]+)*/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],[u,d]],engine:[[/windows.+\sedge\/([\w\.]+)/i],[d,[u,"EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[u,d],[/rv\:([\w\.]+).*(gecko)/i],[d,u]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[u,d],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[u,[d,v.str,w.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[u,"Windows"],[d,v.str,w.os.windows.version]],[/\((bb)(10);/i],[[u,"BlackBerry"],d],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]+)*/i,/linux;.+(sailfish);/i],[u,d],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[u,"Symbian"],d],[/\((series40);/i],[u],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[u,"Firefox OS"],d],[/(nintendo|playstation)\s([wids3portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[u,d],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[u,"Chromium OS"],d],[/(sunos)\s?([\w\.]+\d)*/i],[[u,"Solaris"],d],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[u,d],[/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],[[u,"iOS"],[d,/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i,/(macintosh|mac(?=_powerpc)\s)/i],[[u,"Mac OS"],[d,/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]+)*/i,/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]+)*/i],[u,d]]},E=function(e){var n=e||(window&&window.navigator&&window.navigator.userAgent?window.navigator.userAgent:t);this.getBrowser=function(){return v.rgx.apply(this,y.browser)},this.getEngine=function(){return v.rgx.apply(this,y.engine)},this.getOS=function(){return v.rgx.apply(this,y.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS()}},this.getUA=function(){return n},this.setUA=function(e){return n=e,this},this.setUA(n)};return E}(),i=function(){var t={define_property:function(){return!1}(),create_canvas:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))}(),return_response_type:function(t){try{if(-1!==e.inArray(t,["","text","document"]))return!0;if(window.XMLHttpRequest){var n=new XMLHttpRequest;if(n.open("get","/"),"responseType"in n)return n.responseType=t,n.responseType!==t?!1:!0}}catch(i){}return!1},use_data_uri:function(){var e=new Image;return e.onload=function(){t.use_data_uri=1===e.width&&1===e.height},setTimeout(function(){e.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1}(),use_data_uri_over32kb:function(){return t.use_data_uri&&("IE"!==o.browser||o.version>=9)},use_data_uri_of:function(e){return t.use_data_uri&&33e3>e||t.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),!e.disabled}};return function(n){var i=[].slice.call(arguments);return i.shift(),"function"===e.typeOf(t[n])?t[n].apply(this,i):!!t[n]}}(),r=(new n).getResult(),o={can:i,uaParser:n,browser:r.browser.name,version:r.browser.version,os:r.os.name,osVersion:r.os.version,verComp:t,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return o.OS=o.os,o}),i(l,[u],function(e){var t={};return{addI18n:function(n){return e.extend(t,n)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var n=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=n.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),i(d,[u,l],function(e,t){var n="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb,application/vnd.ms-powerpoint,ppt pps pot,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",i={mimes:{},extensions:{},addMimeType:function(e){var t=e.split(/,/),n,i,r;for(n=0;n<t.length;n+=2){for(r=t[n+1].split(/ /),i=0;i<r.length;i++)this.mimes[r[i]]=t[n];this.extensions[t[n]]=r}},extList2mimes:function(t,n){var i=this,r,o,a,s,u=[];for(o=0;o<t.length;o++)for(r=t[o].extensions.split(/\s*,\s*/),a=0;a<r.length;a++){if("*"===r[a])return[];if(s=i.mimes[r[a]],s&&-1===e.inArray(s,u)&&u.push(s),n&&/^\w+$/.test(r[a]))u.push("."+r[a]);else if(!s)return[]}return u},mimes2exts:function(t){var n=this,i=[];return e.each(t,function(t){if("*"===t)return i=[],!1;var r=t.match(/^(\w+)\/(\*|\w+)$/);r&&("*"===r[2]?e.each(n.extensions,function(e,t){new RegExp("^"+r[1]+"/").test(t)&&[].push.apply(i,n.extensions[t])}):n.extensions[t]&&[].push.apply(i,n.extensions[t]))}),i},mimes2extList:function(n){var i=[],r=[];return"string"===e.typeOf(n)&&(n=e.trim(n).split(/\s*,\s*/)),r=this.mimes2exts(n),i.push({title:t.translate("Files"),extensions:r.length?r.join(","):"*"}),i.mimes=n,i},getFileExtension:function(e){var t=e&&e.match(/\.([^.]+)$/);return t?t[1].toLowerCase():""},getFileMime:function(e){return this.mimes[this.getFileExtension(e)]||""}};return i.addMimeType(n),i}),i(h,[c],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},n=function(e,t){if(!e.className)return!1;var n=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return n.test(e.className)},i=function(e,t){n(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var n=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(n,function(e,t,n){return" "===t&&" "===n?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,n){function i(e){var t,n,i=0,r=0;return e&&(n=e.getBoundingClientRect(),t="CSS1Compat"===s.compatMode?s.documentElement:s.body,i=n.left+t.scrollLeft,r=n.top+t.scrollTop),{x:i,y:r}}var r=0,o=0,a,s=document,u,c;if(t=t,n=n||s.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!s.documentMode||s.documentMode<8))return u=i(t),c=i(n),{x:u.x-c.x,y:u.y-c.y};for(a=t;a&&a!=n&&a.nodeType;)r+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=t.parentNode;a&&a!=n&&a.nodeType;)r-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode;return{x:r,y:o}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:n,addClass:i,removeClass:r,getStyle:o,getPos:a,getSize:s}}),i(f,[u],function(e){function t(e,t){var n;for(n in e)if(e[n]===t)return n;return null}return{RuntimeError:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": RuntimeError "+this.code}var i={NOT_INIT_ERR:1,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(n,i),n.prototype=Error.prototype,n}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": ImageError "+this.code}var i={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(n,i),n.prototype=Error.prototype,n}(),FileException:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": FileException "+this.code}var i={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(n,i),n.prototype=Error.prototype,n}(),DOMException:function(){function n(e){this.code=e,this.name=t(i,e),this.message=this.name+": DOMException "+this.code}var i={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(n,i),n.prototype=Error.prototype,n}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),i(p,[c,f,u],function(e,t,n){function i(){var e={};n.extend(this,{uid:null,init:function(){this.uid||(this.uid=n.guid("uid_"))},addEventListener:function(t,i,r,o){var a=this,s;return this.hasOwnProperty("uid")||(this.uid=n.guid("uid_")),t=n.trim(t),/\s/.test(t)?void n.each(t.split(/\s+/),function(e){a.addEventListener(e,i,r,o)}):(t=t.toLowerCase(),r=parseInt(r,10)||0,s=e[this.uid]&&e[this.uid][t]||[],s.push({fn:i,priority:r,scope:o||this}),e[this.uid]||(e[this.uid]={}),void(e[this.uid][t]=s))},hasEventListener:function(t){var n=t?e[this.uid]&&e[this.uid][t]:e[this.uid];return n?n:!1},removeEventListener:function(t,i){t=t.toLowerCase();var r=e[this.uid]&&e[this.uid][t],o;if(r){if(i){for(o=r.length-1;o>=0;o--)if(r[o].fn===i){r.splice(o,1);break}}else r=[];r.length||(delete e[this.uid][t],n.isEmptyObj(e[this.uid])&&delete e[this.uid])}},removeAllEventListeners:function(){e[this.uid]&&delete e[this.uid]},dispatchEvent:function(i){var r,o,a,s,u={},c=!0,l;if("string"!==n.typeOf(i)){if(s=i,"string"!==n.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);i=s.type,s.total!==l&&s.loaded!==l&&(u.total=s.total,u.loaded=s.loaded),u.async=s.async||!1}if(-1!==i.indexOf("::")?!function(e){r=e[0],i=e[1]}(i.split("::")):r=this.uid,i=i.toLowerCase(),o=e[r]&&e[r][i]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),u.type=i,a.unshift(u);var d=[];n.each(o,function(e){a[0].target=e.scope,d.push(u.async?function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}:function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&n.inSeries(d,function(e){c=!e})}return c},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===n.typeOf(this[t])&&this[t].apply(this,arguments)}),n.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===n.typeOf(t[e])&&(t[e]=null)})}})}return i.instance=new i,i}),i(m,[c,u,h,p],function(e,t,n,i){function r(e,i,o,s,u){var c=this,l,d=t.guid(i+"_"),h=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(h=r.getMode(s,e.preferred_caps,h)),l=function(){var e={};return{exec:function(t,n,i,r){return l[n]&&(e[t]||(e[t]={context:this,instance:new l[n]}),e[t].instance[i])?e[t].instance[i].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var n=this;t.each(e,function(e,i){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),n.removeInstance(i)})}}}(),t.extend(this,{initialized:!1,uid:d,type:i,mode:r.getMode(s,e.required_caps,h),shimid:d+"_container",clients:0,options:e,can:function(e,n){var i=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(n)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],i))return!1;return!0}return"function"===t.typeOf(i[e])?i[e].call(this,n):n===i[e]},getShimContainer:function(){var e,i=n.get(this.shimid);return i||(e=this.options.container?n.get(this.options.container):document.body,i=document.createElement("div"),i.id=this.shimid,i.className="moxie-shim moxie-shim-"+this.type,t.extend(i.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(i),e=null),i},getShim:function(){return l},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec.call(this,this.uid,e,t,n)},exec:function(e,t){var n=[].slice.call(arguments,2);return c[e]&&c[e][t]?c[e][t].apply(this,n):c.shimExec.apply(this,arguments)},destroy:function(){if(c){var e=n.get(this.shimid);e&&e.parentNode.removeChild(e),l&&l.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=c=l=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=i.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var n={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){n[e]=!0}),n)},r.can=function(e,t){var n,i=r.getConstructor(e),o;return i?(n=new i({required_caps:t}),o=n.mode,n.destroy(),!!o):!1},r.thatCan=function(e,t){var n=(t||r.order).split(/\s*,\s*/);for(var i in n)if(r.can(n[i],e))return n[i];return null},r.getMode=function(e,n,i){var r=null;if("undefined"===t.typeOf(i)&&(i="browser"),n&&!t.isEmptyObj(e)){if(t.each(n,function(n,i){if(e.hasOwnProperty(i)){var o=e[i](n);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(i,r)?i:r[0];if(r===!1)return!1}return i},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),i(g,[c,f,u,m],function(e,t,n,i){return function r(){var e;n.extend(this,{connectRuntime:function(r){function o(n){var s,u;return n.length?(s=n.shift().toLowerCase(),(u=i.getConstructor(s))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,a.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(n)}),e.mode?void e.init():void e.trigger("Error")):void o(n)):(a.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),void(e=null))}var a=this,s;if("string"===n.typeOf(r)?s=r:"string"===n.typeOf(r.ruid)&&(s=r.ruid),s){if(e=i.getRuntime(s))return e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||i.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null}})}}),i(v,[u,c,d,h,f,p,l,m,g],function(e,t,n,i,r,o,a,s,u){function c(t){var o=this,c,d,h;if(-1!==e.inArray(e.typeOf(t),["string","node"])&&(t={browse_button:t}),d=i.get(t.browse_button),!d)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR);h={accept:[{title:a.translate("All Files"),extensions:"*"}],name:"file",multiple:!1,required_caps:!1,container:d.parentNode||document.body},t=e.extend({},h,t),"string"==typeof t.required_caps&&(t.required_caps=s.parseCaps(t.required_caps)),"string"==typeof t.accept&&(t.accept=n.mimes2extList(t.accept)),c=i.get(t.container),c||(c=document.body),"static"===i.getStyle(c,"position")&&(c.style.position="relative"),c=d=null,u.call(o),e.extend(o,{uid:e.guid("uid_"),ruid:null,shimid:null,files:null,init:function(){o.bind("RuntimeInit",function(n,r){o.ruid=r.uid,o.shimid=r.shimid,o.bind("Ready",function(){o.trigger("Refresh")},999),o.bind("Refresh",function(){var n,o,a,s;a=i.get(t.browse_button),s=i.get(r.shimid),a&&(n=i.getPos(a,i.get(t.container)),o=i.getSize(a),s&&e.extend(s.style,{top:n.y+"px",left:n.x+"px",width:o.w+"px",height:o.h+"px"})),s=a=null}),r.exec.call(o,"FileInput","init",t)}),o.connectRuntime(e.extend({},t,{required_caps:{select_file:!0}}))},disable:function(t){var n=this.getRuntime();n&&n.exec.call(this,"FileInput","disable","undefined"===e.typeOf(t)?!0:t)},refresh:function(){o.trigger("Refresh")},destroy:function(){var t=this.getRuntime();t&&(t.exec.call(this,"FileInput","destroy"),this.disconnectRuntime()),"array"===e.typeOf(this.files)&&e.each(this.files,function(e){e.destroy()}),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","change","cancel","mouseenter","mouseleave","mousedown","mouseup"];return c.prototype=o.instance,c}),i(w,[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},n=function(e,n){if("function"==typeof window.atob)return n?t(window.atob(e)):window.atob(e);var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r,o,a,s,u,c,l,d,h=0,f=0,p="",m=[];if(!e)return e;e+="";do s=i.indexOf(e.charAt(h++)),u=i.indexOf(e.charAt(h++)),c=i.indexOf(e.charAt(h++)),l=i.indexOf(e.charAt(h++)),d=s<<18|u<<12|c<<6|l,r=d>>16&255,o=d>>8&255,a=255&d,64==c?m[f++]=String.fromCharCode(r):64==l?m[f++]=String.fromCharCode(r,o):m[f++]=String.fromCharCode(r,o,a);while(h<e.length);return p=m.join(""),n?t(p):p},i=function(t,n){if(n&&(t=e(t)),"function"==typeof window.btoa)return window.btoa(t);var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",r,o,a,s,u,c,l,d,h=0,f=0,p="",m=[];if(!t)return t;do r=t.charCodeAt(h++),o=t.charCodeAt(h++),a=t.charCodeAt(h++),d=r<<16|o<<8|a,s=d>>18&63,u=d>>12&63,c=d>>6&63,l=63&d,m[f++]=i.charAt(s)+i.charAt(u)+i.charAt(c)+i.charAt(l);while(h<t.length);p=m.join("");var g=t.length%3;return(g?p.slice(0,g-3):p)+"===".slice(g||3)};return{utf8_encode:e,utf8_decode:t,atob:n,btoa:i}}),i(y,[u,w,g],function(e,t,n){function i(o,a){function s(t,n,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new i(null,{type:o,size:n-t}),a.detach(s.substr(t,a.size)),a):null}n.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,n){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,n)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var n=e.indexOf(";base64,");this.type=e.substring(5,n),e=t.atob(e.substring(n+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return i}),i(E,[u,d,y],function(e,t,n){function i(i,r){r||(r={}),n.apply(this,arguments),this.type||(this.type=t.getFileMime(r.name));var o;if(r.name)o=r.name.replace(/\\/g,"/"),o=o.substr(o.lastIndexOf("/")+1);else if(this.type){var a=this.type.split("/")[0];o=e.guid((""!==a?a:"file")+"_"),t.extensions[this.type]&&(o+="."+t.extensions[this.type][0])}e.extend(this,{name:o||e.guid("file_"),relativePath:"",lastModifiedDate:r.lastModifiedDate||(new Date).toLocaleString()})}return i.prototype=n.prototype,i}),i(_,[l,h,f,u,c,E,g,p,d],function(e,t,n,i,r,o,a,s,u){function c(n){var r=this,o;"string"==typeof n&&(n={drop_zone:n}),o={accept:[{title:e.translate("All Files"),extensions:"*"}],required_caps:{drag_and_drop:!0}},n="object"==typeof n?i.extend({},o,n):o,n.container=t.get(n.drop_zone)||document.body,"static"===t.getStyle(n.container,"position")&&(n.container.style.position="relative"),"string"==typeof n.accept&&(n.accept=u.mimes2extList(n.accept)),a.call(r),i.extend(r,{uid:i.guid("uid_"),ruid:null,files:null,init:function(){r.bind("RuntimeInit",function(e,t){r.ruid=t.uid,t.exec.call(r,"FileDrop","init",n),r.dispatchEvent("ready")}),r.connectRuntime(n)},destroy:function(){var e=this.getRuntime();e&&(e.exec.call(this,"FileDrop","destroy"),this.disconnectRuntime()),this.files=null,this.unbindAll()}}),this.handleEventProps(l)}var l=["ready","dragenter","dragleave","drop","error"];return c.prototype=s.instance,c}),i(b,[u,w,f,p,y,g],function(e,t,n,i,r,o){function a(){function i(e,i){var o=this;if(this.trigger("loadstart"),this.readyState===a.LOADING)return this.trigger("error",new n.DOMException(n.DOMException.INVALID_STATE_ERR)),void this.trigger("loadend");if(!(i instanceof r))return this.trigger("error",new n.DOMException(n.DOMException.NOT_FOUND_ERR)),void this.trigger("loadend");if(this.result=null,this.readyState=a.LOADING,i.isDetached()){var s=i.getSource();switch(e){case"readAsText":case"readAsBinaryString":this.result=s;break;case"readAsDataURL":this.result="data:"+i.type+";base64,"+t.btoa(s)}this.readyState=a.DONE,this.trigger("load"),this.trigger("loadend")}else this.connectRuntime(i.ruid),this.exec("FileReader","read",e,i)}o.call(this),e.extend(this,{uid:e.guid("uid_"),readyState:a.EMPTY,result:null,error:null,readAsBinaryString:function(e){i.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){i.call(this,"readAsDataURL",e)},readAsText:function(e){i.call(this,"readAsText",e);
+},abort:function(){this.result=null,-1===e.inArray(this.readyState,[a.EMPTY,a.DONE])&&(this.readyState===a.LOADING&&(this.readyState=a.DONE),this.exec("FileReader","abort"),this.trigger("abort"),this.trigger("loadend"))},destroy:function(){this.abort(),this.exec("FileReader","destroy"),this.disconnectRuntime(),this.unbindAll()}}),this.handleEventProps(s),this.bind("Error",function(e,t){this.readyState=a.DONE,this.error=t},999),this.bind("Load",function(e){this.readyState=a.DONE},999)}var s=["loadstart","progress","load","abort","error","loadend"];return a.EMPTY=0,a.LOADING=1,a.DONE=2,a.prototype=i.instance,a}),i(x,[],function(){var e=function(t,n){for(var i=["source","scheme","authority","userInfo","user","pass","host","port","relative","path","directory","file","query","fragment"],r=i.length,o={http:80,https:443},a={},s=/^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\\?([^#]*))?(?:#(.*))?)/,u=s.exec(t||"");r--;)u[r]&&(a[i[r]]=u[r]);if(!a.scheme){n&&"string"!=typeof n||(n=e(n||document.location.href)),a.scheme=n.scheme,a.host=n.host,a.port=n.port;var c="";/^[^\/]/.test(a.path)&&(c=n.path,c=/\/[^\/]*\.[^\/]*$/.test(c)?c.replace(/\/[^\/]+$/,"/"):c.replace(/\/?$/,"/")),a.path=c+(a.path||"")}return a.port||(a.port=o[a.scheme]||80),a.port=parseInt(a.port,10),a.path||(a.path="/"),delete a.source,a},t=function(t){var n={http:80,https:443},i="object"==typeof t?t:e(t);return i.scheme+"://"+i.host+(i.port!==n[i.scheme]?":"+i.port:"")+i.path+(i.query?i.query:"")},n=function(t){function n(e){return[e.scheme,e.host,e.port].join("/")}return"string"==typeof t&&(t=e(t)),n(e())===n(t)};return{parseUrl:e,resolveUrl:t,hasSameOrigin:n}}),i(R,[u,g,p],function(e,t,n){function i(){this.uid=e.guid("uid_"),t.call(this),this.destroy=function(){this.disconnectRuntime(),this.unbindAll()}}return i.prototype=n.instance,i}),i(A,[u,g,w],function(e,t,n){return function(){function i(e,t){if(!t.isDetached()){var i=this.connectRuntime(t.ruid).exec.call(this,"FileReaderSync","read",e,t);return this.disconnectRuntime(),i}var r=t.getSource();switch(e){case"readAsBinaryString":return r;case"readAsDataURL":return"data:"+t.type+";base64,"+n.btoa(r);case"readAsText":for(var o="",a=0,s=r.length;s>a;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return i.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return i.call(this,"readAsDataURL",e)},readAsText:function(e){return i.call(this,"readAsText",e)}})}}),i(I,[f,u,y],function(e,t,n){function i(){var e,i=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof n?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):i.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(n){t.each(i,function(e){n(e.value,e.name)}),e&&n(e.value,e.name)},destroy:function(){e=null,i=[]}})}return i}),i(T,[u,f,p,w,x,m,R,y,A,I,c,d],function(e,t,n,i,r,o,a,s,u,c,l,d){function h(){this.uid=e.guid("uid_")}function f(){function n(e,t){return w.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?w[e]:v[e]:void(l.can("define_property")?w[e]=t:v[e]=t):void 0}function u(t){function i(){B&&(B.destroy(),B=null),s.dispatchEvent("loadend"),s=null}function r(r){B.bind("LoadStart",function(e){n("readyState",f.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),O&&s.upload.dispatchEvent(e)}),B.bind("Progress",function(e){n("readyState")!==f.LOADING&&(n("readyState",f.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),B.bind("UploadProgress",function(e){O&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),B.bind("Load",function(t){n("readyState",f.DONE),n("status",Number(r.exec.call(B,"XMLHttpRequest","getStatus")||0)),n("statusText",p[n("status")]||""),n("response",r.exec.call(B,"XMLHttpRequest","getResponse",n("responseType"))),~e.inArray(n("responseType"),["text",""])?n("responseText",n("response")):"document"===n("responseType")&&n("responseXML",n("response")),k=r.exec.call(B,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),n("status")>0?(O&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(N=!0,s.dispatchEvent("error")),i()}),B.bind("Abort",function(e){s.dispatchEvent(e),i()}),B.bind("Error",function(e){N=!0,n("readyState",f.DONE),s.dispatchEvent("readystatechange"),D=!0,s.dispatchEvent(e),i()}),r.exec.call(B,"XMLHttpRequest","send",{url:E,method:_,async:y,user:x,password:R,headers:b,mimeType:I,encoding:A,responseType:s.responseType,withCredentials:s.withCredentials,options:H},t)}var s=this;C=(new Date).getTime(),B=new a,"string"==typeof H.required_caps&&(H.required_caps=o.parseCaps(H.required_caps)),H.required_caps=e.extend({},H.required_caps,{return_response_type:s.responseType}),t instanceof c&&(H.required_caps.send_multipart=!0),e.isEmptyObj(b)||(H.required_caps.send_custom_headers=!0),L||(H.required_caps.do_cors=!0),H.ruid?r(B.connectRuntime(H)):(B.bind("RuntimeInit",function(e,t){r(t)}),B.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),B.connectRuntime(H))}function g(){n("responseText",""),n("responseXML",null),n("response",null),n("status",0),n("statusText",""),C=M=null}var v=this,w={timeout:0,readyState:f.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},y=!0,E,_,b={},x,R,A=null,I=null,T=!1,S=!1,O=!1,D=!1,N=!1,L=!1,C,M,F=null,P=null,H={},B,k="",U;e.extend(this,w,{uid:e.guid("uid_"),upload:new h,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||i.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(_=o.toUpperCase()),~e.inArray(_,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=i.utf8_encode(a),l=r.parseUrl(a),L=r.hasSameOrigin(l),E=r.resolveUrl(a),(u||c)&&!L)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(x=u||l.user,R=c||l.pass,y=s||!0,y===!1&&(n("timeout")||n("withCredentials")||""!==n("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);T=!y,S=!1,b={},g.call(this),n("readyState",f.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(n("readyState")!==f.OPENED||S)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||i.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(b[r]?b[r]+=", "+o:b[r]=o,!0)},getAllResponseHeaders:function(){return k||""},getResponseHeader:function(t){return t=t.toLowerCase(),N||~e.inArray(t,["set-cookie","set-cookie2"])?null:k&&""!==k&&(U||(U={},e.each(k.split(/\r\n/),function(t){var n=t.split(/:\s+/);2===n.length&&(n[0]=e.trim(n[0]),U[n[0].toLowerCase()]={header:n[0],value:e.trim(n[1])})})),U.hasOwnProperty(t))?U[t].header+": "+U[t].value:null},overrideMimeType:function(i){var r,o;if(~e.inArray(n("readyState"),[f.LOADING,f.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i=e.trim(i.toLowerCase()),/;/.test(i)&&(r=i.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(i=r[1],r[2]&&(o=r[2])),!d.mimes[i])throw new t.DOMException(t.DOMException.SYNTAX_ERR);F=i,P=o},send:function(n,r){if(H="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==f.OPENED||S)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n instanceof s)H.ruid=n.ruid,I=n.type||"application/octet-stream";else if(n instanceof c){if(n.hasBlob()){var o=n.getBlob();H.ruid=o.ruid,I=o.type||"application/octet-stream"}}else"string"==typeof n&&(A="UTF-8",I="text/plain;charset=UTF-8",n=i.utf8_encode(n));this.withCredentials||(this.withCredentials=H.required_caps&&H.required_caps.send_browser_cookies&&!L),O=!T&&this.upload.hasEventListener(),N=!1,D=!n,T||(S=!0),u.call(this,n)},abort:function(){if(N=!0,T=!1,~e.inArray(n("readyState"),[f.UNSENT,f.OPENED,f.DONE]))n("readyState",f.UNSENT);else{if(n("readyState",f.DONE),S=!1,!B)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);B.getRuntime().exec.call(B,"XMLHttpRequest","abort",D),D=!0}},destroy:function(){B&&("function"===e.typeOf(B.destroy)&&B.destroy(),B=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(m.concat(["readystatechange"])),this.upload.handleEventProps(m)}var p={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};h.prototype=n.instance;var m=["loadstart","progress","abort","error","load","timeout","loadend"],g=1,v=2;return f.UNSENT=0,f.OPENED=1,f.HEADERS_RECEIVED=2,f.LOADING=3,f.DONE=4,f.prototype=n.instance,f}),i(S,[u,w,g,p],function(e,t,n,i){function r(){function i(){l=d=0,c=this.result=null}function o(t,n){var i=this;u=n,i.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(i.state,[r.IDLE,r.DONE])&&a.call(i)},999),i.bind("TransportingComplete",function(){d=l,i.state=r.DONE,c=null,i.result=u.exec.call(i,"Transporter","getAsBlob",t||"")},999),i.state=r.BUSY,i.trigger("TransportingStarted"),a.call(i)}function a(){var e=this,n,i=l-d;h>i&&(h=i),n=t.btoa(c.substr(d,h)),u.exec.call(e,"Transporter","receive",n,l)}var s,u,c,l,d,h;n.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,n,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),h=r.chunk_size,i.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,n,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,n,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),i.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),i.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=i.instance,r}),i(O,[u,h,f,A,T,m,g,S,c,p,y,E,w],function(e,t,n,i,r,o,a,s,u,c,l,d,h){function f(){function i(e){e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name)}function c(t){var i=e.typeOf(t);try{if(t instanceof f){if(!t.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);m.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new n.ImageError(n.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(i,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===i)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):v.apply(this,arguments);else{if("node"!==i||"img"!==t.nodeName.toLowerCase())throw new n.DOMException(n.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function m(t,n){var i=this.connectRuntime(t.ruid);this.ruid=i.uid,i.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(n)?!0:n)}function g(t,n){function i(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){i(t)}),n&&"string"==typeof n.required_caps&&(n.required_caps=o.parseCaps(n.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},n))):i(this.connectRuntime(t.ruid))}function v(e,t){var n=this,i;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},downsize:function(t){var i={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,preserveHeaders:!0,resample:!1};t="object"==typeof t?e.extend(i,t):e.extend(i,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]});try{if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);if(this.width>f.MAX_RESIZE_WIDTH||this.height>f.MAX_RESIZE_HEIGHT)throw new n.ImageError(n.ImageError.MAX_RESOLUTION_ERR);this.exec("Image","downsize",t.width,t.height,t.crop,t.preserveHeaders)}catch(r){this.trigger("error",r.code)}},crop:function(e,t,n){this.downsize(e,t,!0,n)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);var e=this.connectRuntime(this.ruid);return e.exec.call(this,"Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var n=this.getAsDataURL(e,t);return h.atob(n.substring(n.indexOf("base64,")+7))},embed:function(i,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return i.appendChild(l),l=null,o.destroy(),void a.trigger("embedded")}var d=o.getAsDataURL(t,r);if(!d)throw new n.ImageError(n.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))i.innerHTML='<img src="'+d+'" width="'+o.width+'" height="'+o.height+'" />',o.destroy(),a.trigger("embedded");else{var f=new s;f.bind("TransportingComplete",function(){c=a.connectRuntime(this.result.ruid),a.bind("Embedded",function(){e.extend(c.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),c=null},999),c.exec.call(a,"ImageView","display",this.result.uid,width,height),o.destroy()}),f.transport(h.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:i})}}var a=this,c;r=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90},r||{});try{if(!(i=t.get(i)))throw new n.DOMException(n.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new n.DOMException(n.DOMException.INVALID_STATE_ERR);this.width>f.MAX_RESIZE_WIDTH||this.height>f.MAX_RESIZE_HEIGHT;var l=new f;return l.bind("Resize",function(){o.call(this,r.type,r.quality)}),l.bind("Load",function(){l.downsize(r)}),this.meta.thumb&&this.meta.thumb.width>=r.width&&this.meta.thumb.height>=r.height?l.load(this.meta.thumb.data):l.clone(this,!1),l}catch(d){this.trigger("error",d.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.unbindAll()}}),this.handleEventProps(p),this.bind("Load Resize",function(){i.call(this)},999)}var p=["progress","load","error","resize","embedded"];return f.MAX_RESIZE_WIDTH=8192,f.MAX_RESIZE_HEIGHT=8192,f.prototype=c.instance,f}),i(D,[u,f,m,c],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue,c=e.extend({access_binary:s(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return r.can("access_binary")&&!!a.Image},display_media:s(i.can("create_canvas")||i.can("use_data_uri_over32kb")),do_cors:s(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:s(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==i.browser||i.verComp(i.version,9,">"))}()),filter_by_extension:s(function(){return"Chrome"===i.browser&&i.verComp(i.version,28,">=")||"IE"===i.browser&&i.verComp(i.version,10,">=")||"Safari"===i.browser&&i.verComp(i.version,7,">=")}()),return_response_headers:u,return_response_type:function(e){return"json"===e&&window.JSON?!0:i.can("return_response_type",e)},return_status_code:u,report_upload_progress:s(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return r.can("access_binary")&&i.can("create_canvas")},select_file:function(){return i.can("use_fileinput")&&window.File},select_folder:function(){return r.can("select_file")&&"Chrome"===i.browser&&i.verComp(i.version,21,">=")},select_multiple:function(){return!(!r.can("select_file")||"Safari"===i.browser&&"Windows"===i.os||"iOS"===i.os&&i.verComp(i.osVersion,"7.0.0",">")&&i.verComp(i.osVersion,"8.0.0","<"))},send_binary_string:s(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:s(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||r.can("send_binary_string")},slice_blob:s(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return r.can("slice_blob")&&r.can("send_multipart")},summon_file_dialog:function(){return r.can("select_file")&&("Firefox"===i.browser&&i.verComp(i.version,4,">=")||"Opera"===i.browser&&i.verComp(i.version,12,">=")||"IE"===i.browser&&i.verComp(i.version,10,">=")||!!~e.inArray(i.browser,["Chrome","Safari"]))},upload_filesize:u},arguments[2]);n.call(this,t,arguments[1]||o,c),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html5",a={};return n.addConstructor(o,r),a}),i(N,[u],function(e){function t(){this.returnValue=!1}function n(){this.cancelBubble=!0}var i={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=n,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),i.hasOwnProperty(o[r])||(i[o[r]]={}),l=i[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,n,o){var a,s;if(n=n.toLowerCase(),t[r]&&i[t[r]]&&i[t[r]][n]){a=i[t[r]][n];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(n,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+n,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete i[t[r]][n],e.isEmptyObj(i[t[r]])){delete i[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,n){t&&t[r]&&e.each(i[t[r]],function(e,i){a(t,i,n)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),i(L,[D,E,u,h,N,d,c],function(e,t,n,i,r,o,a){function s(){var e;n.extend(this,{init:function(s){var u=this,c=u.getRuntime(),l,d,h,f,p,m;e=s,h=e.accept.mimes||o.extList2mimes(e.accept,c.can("filter_by_extension")),d=c.getShimContainer(),d.innerHTML='<input id="'+c.uid+'" type="file" style="font-size:999px;opacity:0;"'+(e.multiple&&c.can("select_multiple")?"multiple":"")+(e.directory&&c.can("select_folder")?"webkitdirectory directory":"")+(h?' accept="'+h.join(",")+'"':"")+" />",l=i.get(c.uid),n.extend(l.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),f=i.get(e.browse_button),c.can("summon_file_dialog")&&("static"===i.getStyle(f,"position")&&(f.style.position="relative"),p=parseInt(i.getStyle(f,"z-index"),10)||1,f.style.zIndex=p,d.style.zIndex=p-1,r.addEvent(f,"click",function(e){var t=i.get(c.uid);t&&!t.disabled&&t.click(),e.preventDefault()},u.uid)),m=c.can("summon_file_dialog")?f:d,r.addEvent(m,"mouseover",function(){u.trigger("mouseenter")},u.uid),r.addEvent(m,"mouseout",function(){u.trigger("mouseleave")},u.uid),r.addEvent(m,"mousedown",function(){u.trigger("mousedown")},u.uid),r.addEvent(i.get(e.container),"mouseup",function(){u.trigger("mouseup")},u.uid),l.onchange=function g(i){if(u.files=[],n.each(this.files,function(n){var i="";return e.directory&&"."==n.name?!0:(n.webkitRelativePath&&(i="/"+n.webkitRelativePath.replace(/^\//,"")),n=new t(c.uid,n),n.relativePath=i,void u.files.push(n))}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var r=this.cloneNode(!0);this.parentNode.replaceChild(r,this),r.onchange=g}u.files.length&&u.trigger("change")},u.trigger({type:"ready",async:!0}),d=null},disable:function(e){var t=this.getRuntime(),n;(n=i.get(t.uid))&&(n.disabled=!!e)},destroy:function(){var t=this.getRuntime(),n=t.getShim(),o=t.getShimContainer();r.removeAllEvents(o,this.uid),r.removeAllEvents(e&&i.get(e.container),this.uid),r.removeAllEvents(e&&i.get(e.browse_button),this.uid),o&&(o.innerHTML=""),n.removeInstance(this.uid),e=o=n=null}})}return e.FileInput=s}),i(C,[D,y],function(e,t){function n(){function e(e,t,n){var i;if(!window.File.prototype.slice)return(i=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?i.call(e,t,n):null;try{return e.slice(),e.slice(t,n)}catch(r){return e.slice(t,n-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))}}return e.Blob=n}),i(M,[D,E,u,h,N,d],function(e,t,n,i,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=n.toArray(e.dataTransfer.types||[]);return-1!==n.inArray("Files",t)||-1!==n.inArray("public.file-url",t)||-1!==n.inArray("application/x-moz-file",t)}function a(e,n){if(u(e)){var i=new t(g,e);i.relativePath=n||"",f.push(i)}}function s(e){for(var t=[],i=0;i<e.length;i++)[].push.apply(t,e[i].extensions.split(/\s*,\s*/));return-1===n.inArray("*",t)?t:[]}function u(e){if(!p.length)return!0;var t=o.getFileExtension(e.name);return!t||-1!==n.inArray(t,p)}function c(e,t){var i=[];n.each(e,function(e){var t=e.webkitGetAsEntry();t&&(t.isFile?a(e.getAsFile(),t.fullPath):i.push(t))}),i.length?l(i,t):t()}function l(e,t){var i=[];n.each(e,function(e){i.push(function(t){d(e,t)})}),n.inSeries(i,function(){t()})}function d(e,t){e.isFile?e.file(function(n){a(n,e.fullPath),t()},function(){t()}):e.isDirectory?h(e,t):t()}function h(e,t){function n(e){r.readEntries(function(t){t.length?([].push.apply(i,t),n(e)):e()},e)}var i=[],r=e.createReader();n(function(){l(i,t)})}var f=[],p=[],m,g;n.extend(this,{init:function(t){var i=this,o;m=t,g=i.ruid,p=s(m.accept),o=m.container,r.addEvent(o,"dragover",function(t){e(t)&&(t.preventDefault(),t.dataTransfer.dropEffect="copy")},i.uid),r.addEvent(o,"drop",function(t){e(t)&&(t.preventDefault(),f=[],t.dataTransfer.items&&t.dataTransfer.items[0].webkitGetAsEntry?c(t.dataTransfer.items,function(){i.files=f,i.trigger("drop")}):(n.each(t.dataTransfer.files,function(e){a(e)}),i.files=f,i.trigger("drop")))},i.uid),r.addEvent(o,"dragenter",function(e){i.trigger("dragenter")},i.uid),r.addEvent(o,"dragleave",function(e){i.trigger("dragleave")},i.uid)},destroy:function(){r.removeAllEvents(m&&i.get(m.container),this.uid),g=f=p=m=null}})}return e.FileDrop=a}),i(F,[D,w,u],function(e,t,n){function i(){function e(e){return t.atob(e.substring(e.indexOf("base64,")+7))}var i,r=!1;n.extend(this,{read:function(t,o){var a=this;a.result="",i=new window.FileReader,i.addEventListener("progress",function(e){a.trigger(e)}),i.addEventListener("load",function(t){a.result=r?e(i.result):i.result,a.trigger(t)}),i.addEventListener("error",function(e){a.trigger(e,i.error)}),i.addEventListener("loadend",function(e){i=null,a.trigger(e)}),"function"===n.typeOf(i[t])?(r=!1,i[t](o.getSource())):"readAsBinaryString"===t&&(r=!0,i.readAsDataURL(o.getSource()))},abort:function(){i&&i.abort()},destroy:function(){i=null}})}return e.FileReader=i}),i(P,[D,u,d,x,E,y,I,f,c],function(e,t,n,i,r,o,a,s,u){function c(){function e(e,t){var n=this,i,r;i=t.getBlob().getSource(),r=new window.FileReader,r.onload=function(){t.append(t.getBlobName(),new o(null,{type:i.type,data:r.result})),h.send.call(n,e,t)},r.readAsBinaryString(i)}function c(){return!window.XMLHttpRequest||"IE"===u.browser&&u.verComp(u.version,8,"<")?function(){for(var e=["Msxml2.XMLHTTP.6.0","Microsoft.XMLHTTP"],t=0;t<e.length;t++)try{return new ActiveXObject(e[t])}catch(n){}}():new window.XMLHttpRequest}function l(e){var t=e.responseXML,n=e.responseText;return"IE"===u.browser&&n&&t&&!t.documentElement&&/[^\/]+\/[^\+]+\+xml/.test(e.getResponseHeader("Content-Type"))&&(t=new window.ActiveXObject("Microsoft.XMLDOM"),t.async=!1,t.validateOnParse=!1,t.loadXML(n)),t&&("IE"===u.browser&&0!==t.parseError||!t.documentElement||"parsererror"===t.documentElement.tagName)?null:t}function d(e){var t="----moxieboundary"+(new Date).getTime(),n="--",i="\r\n",r="",a=this.getRuntime();if(!a.can("send_binary_string"))throw new s.RuntimeError(s.RuntimeError.NOT_SUPPORTED_ERR);return f.setRequestHeader("Content-Type","multipart/form-data; boundary="+t),e.each(function(e,a){r+=e instanceof o?n+t+i+'Content-Disposition: form-data; name="'+a+'"; filename="'+unescape(encodeURIComponent(e.name||"blob"))+'"'+i+"Content-Type: "+(e.type||"application/octet-stream")+i+i+e.getSource()+i:n+t+i+'Content-Disposition: form-data; name="'+a+'"'+i+i+unescape(encodeURIComponent(e))+i}),r+=n+t+n+i}var h=this,f,p;t.extend(this,{send:function(n,r){var s=this,l="Mozilla"===u.browser&&u.verComp(u.version,4,">=")&&u.verComp(u.version,7,"<"),h="Android Browser"===u.browser,m=!1;if(p=n.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),f=c(),f.open(n.method,n.url,n.async,n.user,n.password),r instanceof o)r.isDetached()&&(m=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),m=!0;else if((l||h)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return void e.call(s,n,r);if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}f.upload?(n.withCredentials&&(f.withCredentials=!0),f.addEventListener("load",function(e){s.trigger(e)}),f.addEventListener("error",function(e){s.trigger(e)}),f.addEventListener("progress",function(e){s.trigger(e)}),f.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):f.onreadystatechange=function v(){switch(f.readyState){case 1:break;case 2:break;case 3:var e,t;try{i.hasSameOrigin(n.url)&&(e=f.getResponseHeader("Content-Length")||0),f.responseText&&(t=f.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:f.onreadystatechange=function(){},s.trigger(0===f.status?"error":"load")}},t.isEmptyObj(n.headers)||t.each(n.headers,function(e,t){f.setRequestHeader(t,e)}),""!==n.responseType&&"responseType"in f&&("json"!==n.responseType||u.can("return_response_type","json")?f.responseType=n.responseType:f.responseType="text"),m?f.sendAsBinary?f.sendAsBinary(r):!function(){for(var e=new Uint8Array(r.length),t=0;t<r.length;t++)e[t]=255&r.charCodeAt(t);f.send(e.buffer)}():f.send(r),s.trigger("loadstart")},getStatus:function(){try{if(f)return f.status}catch(e){}return 0},getResponse:function(e){var t=this.getRuntime();try{switch(e){case"blob":var i=new r(t.uid,f.response),o=f.getResponseHeader("Content-Disposition");if(o){var a=o.match(/filename=([\'\"'])([^\1]+)\1/);a&&(p=a[2])}return i.name=p,i.type||(i.type=n.getFileMime(p)),i;case"json":return u.can("return_response_type","json")?f.response:200===f.status&&window.JSON?JSON.parse(f.responseText):null;case"document":return l(f);default:return""!==f.responseText?f.responseText:null}}catch(s){return null}},getAllResponseHeaders:function(){try{return f.getAllResponseHeaders()}catch(e){}return""},abort:function(){f&&f.abort()},destroy:function(){h=p=null}})}return e.XMLHttpRequest=c}),i(H,[u],function(e){function t(e){e instanceof ArrayBuffer?n.apply(this,arguments):i.apply(this,arguments)}function n(t){var n=new DataView(t);e.extend(this,{readByteAt:function(e){return n.getUint8(e)},writeByteAt:function(e,t){n.setUint8(e,t)},SEGMENT:function(e,i,r){switch(arguments.length){case 2:return t.slice(e,e+i);case 1:return t.slice(e);case 3:if(null===r&&(r=new ArrayBuffer),r instanceof ArrayBuffer){var o=new Uint8Array(this.length()-i+r.byteLength);e>0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+i)),e+r.byteLength),this.clear(),t=o.buffer,n=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){n=t=null}})}function i(t){function n(e,n,i){i=3===arguments.length?i:t.length-n-1,t=t.substr(0,n)+e+t.substr(i+n)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){n(String.fromCharCode(t),e,1)},SEGMENT:function(e,i,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,i);case 3:n(null!==r?r:"",e,i);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var n,i,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(i=this.littleEndian?0:-8*(t-1),r=0,n=0;t>r;r++)n|=this.readByteAt(e+r)<<Math.abs(i+8*r);return n},write:function(e,t,n){var i,r,o="";if(e>this.length())throw new Error("You are trying to write outside the source boundaries.");for(i=this.littleEndian?0:-8*(n-1),r=0;n>r;r++)this.writeByteAt(e+r,t>>Math.abs(i+8*r)&255)},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,n){for(var i=[],r=0;n>r;r++)i[r]=this[e](t+r);return i}}),t}),i(B,[H,f],function(e,t){return function n(i){var r=[],o,a,s,u=0;if(o=new e(i),65496!==o.SHORT(0))throw o.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(a=2;a<=o.length();)if(s=o.SHORT(a),s>=65488&&65495>=s)a+=2;else{if(65498===s||65497===s)break;u=o.SHORT(a+2)+2,s>=65505&&65519>=s&&r.push({hex:s,name:"APP"+(15&s),start:a,length:u,segment:o.SEGMENT(a,u)}),a+=u}return o.clear(),{headers:r,restore:function(t){var n,i,o;for(o=new e(t),a=65504==o.SHORT(2)?4+o.SHORT(4):2,i=0,n=r.length;n>i;i++)o.SEGMENT(a,0,r[i].segment),a+=r[i].length;return t=o.SEGMENT(),o.clear(),t},strip:function(t){var i,r,o,a;for(o=new n(t),r=o.headers,o.purge(),i=new e(t),a=r.length;a--;)i.SEGMENT(r[a].start,r[a].length,"");return t=i.SEGMENT(),i.clear(),t},get:function(e){for(var t=[],n=0,i=r.length;i>n;n++)r[n].name===e.toUpperCase()&&t.push(r[n].segment);return t},
+set:function(e,t){var n=[],i,o,a;for("string"==typeof t?n.push(t):n=t,i=o=0,a=r.length;a>i&&(r[i].name===e.toUpperCase()&&(r[i].segment=n[o],r[i].length=n[o].length,o++),!(o>=n.length));i++);},purge:function(){this.headers=r=[]}}}}),i(k,[u,H,f],function(e,n,i){function r(o){function a(n,r){var o=this,a,s,u,c,h,f,p,m,g=[],v={},w={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},y={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(a=o.SHORT(n),s=0;a>s;s++)if(g=[],p=n+2+12*s,u=r[o.SHORT(p)],u!==t){if(c=w[o.SHORT(p+=2)],h=o.LONG(p+=2),f=y[c],!f)throw new i.ImageError(i.ImageError.INVALID_META_ERR);if(p+=4,f*h>4&&(p=o.LONG(p)+d.tiffHeader),p+f*h>=this.length())throw new i.ImageError(i.ImageError.INVALID_META_ERR);"ASCII"!==c?(g=o.asArray(c,p,h),m=1==h?g[0]:g,l.hasOwnProperty(u)&&"object"!=typeof m?v[u]=l[u][m]:v[u]=m):v[u]=e.trim(o.STRING(p,h).replace(/\0$/,""))}return v}function s(e,t,n){var i,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}i=d[e.toLowerCase()+"IFD"],r=this.SHORT(i);for(var l=0;r>l;l++)if(o=i+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,n,4)}catch(h){return!1}return!0}var u,c,l,d,h,f;if(n.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},h=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new i.ImageError(i.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new i.ImageError(i.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return f||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(n){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var i=0,r="";i<t.ExifVersion.length;i++)r+=String.fromCharCode(t.ExifVersion[i]);t.ExifVersion=r}}return t},GPS:function(){var t=null;if(d.gpsIFD){try{t=a.call(this,d.gpsIFD,c.gps)}catch(n){return null}t.GPSVersionID&&"array"===e.typeOf(t.GPSVersionID)&&(t.GPSVersionID=t.GPSVersionID.join("."))}return t},thumb:function(){if(d.IFD1)try{var e=a.call(this,d.IFD1,c.thumb);if("JPEGInterchangeFormat"in e)return this.SEGMENT(d.tiffHeader+e.JPEGInterchangeFormat,e.JPEGInterchangeFormatLength)}catch(t){}return null},setExif:function(e,t){return"PixelXDimension"!==e&&"PixelYDimension"!==e?!1:s.call(this,"exif",e,t)},clear:function(){u.clear(),o=c=l=f=d=u=null}}),65505!==this.SHORT(0)||"EXIF\x00"!==this.STRING(4,5).toUpperCase())throw new i.ImageError(i.ImageError.INVALID_META_ERR);if(this.littleEndian=18761==this.SHORT(h),42!==this.SHORT(h+=2))throw new i.ImageError(i.ImageError.INVALID_META_ERR);d.IFD0=d.tiffHeader+this.LONG(h+=2),f=a.call(this,d.IFD0,c.tiff),"ExifIFDPointer"in f&&(d.exifIFD=d.tiffHeader+f.ExifIFDPointer,delete f.ExifIFDPointer),"GPSInfoIFDPointer"in f&&(d.gpsIFD=d.tiffHeader+f.GPSInfoIFDPointer,delete f.GPSInfoIFDPointer),e.isEmptyObj(f)&&(f=null);var p=this.LONG(d.IFD0+12*this.SHORT(d.IFD0)+2);p&&(d.IFD1=d.tiffHeader+p)}return r.prototype=n.prototype,r}),i(U,[u,f,B,H,k],function(e,t,n,i,r){function o(o){function a(e){var t=0,n,i;for(e||(e=c);t<=e.length();){if(n=e.SHORT(t+=2),n>=65472&&65475>=n)return t+=5,{height:e.SHORT(t),width:e.SHORT(t+=2)};i=e.SHORT(t+=2),t+=i-2}return null}function s(){var e=d.thumb(),t,n;return e&&(t=new i(e),n=a(t),t.clear(),n)?(n.data=e,n):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),h=l=d=c=null)}var c,l,d,h;if(c=new i(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new n(o);try{d=new r(l.get("app1")[0])}catch(f){}h=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:h&&h.width||0,height:h&&h.height||0,setExif:function(t,n){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,n),void l.set("app1",d.SEGMENT())):!1},writeHeaders:function(){return l.restore(arguments.length?arguments[0]:o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),i(G,[f,u,H],function(e,t,n){function i(i){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),i=l=u=c=s=null)}function a(e){var t,n,i,r;return t=s.LONG(e),n=s.STRING(e+=4,4),i=e+=4,r=s.LONG(e+t),{length:t,type:n,start:i,CRC:r}}var s,u,c,l;s=new n(i),function(){var t=0,n=0,i=[35152,20039,3338,6666];for(n=0;n<i.length;n++,t+=2)if(i[n]!=s.SHORT(t))throw new e.ImageError(e.ImageError.WRONG_FORMAT)}(),l=r.call(this),t.extend(this,{type:"image/png",size:s.length(),width:l.width,height:l.height,purge:function(){o.call(this)}}),o.call(this)}return i}),i(z,[u,f,U,G],function(e,t,n,i){return function(r){var o=[n,i],a;a=function(){for(var e=0;e<o.length;e++)try{return new o[e](r)}catch(n){}throw new t.ImageError(t.ImageError.WRONG_FORMAT)}(),e.extend(this,{type:"",size:0,width:0,height:0,setExif:function(){},writeHeaders:function(e){return e},stripHeaders:function(e){return e},purge:function(){r=null}}),e.extend(this,a),this.purge=function(){a.purge(),a=null}}}),i(q,[],function(){function e(e,i,r){var o=e.naturalWidth,a=e.naturalHeight,s=r.width,u=r.height,c=r.x||0,l=r.y||0,d=i.getContext("2d");t(e)&&(o/=2,a/=2);var h=1024,f=document.createElement("canvas");f.width=f.height=h;for(var p=f.getContext("2d"),m=n(e,o,a),g=0;a>g;){for(var v=g+h>a?a-g:h,w=0;o>w;){var y=w+h>o?o-w:h;p.clearRect(0,0,h,h),p.drawImage(e,-w,-g);var E=w*s/o+c<<0,_=Math.ceil(y*s/o),b=g*u/a/m+l<<0,x=Math.ceil(v*u/a/m);d.drawImage(f,0,0,y,v,E,b,_,x),w+=h}g+=h}f=p=null}function t(e){var t=e.naturalWidth,n=e.naturalHeight;if(t*n>1048576){var i=document.createElement("canvas");i.width=i.height=1;var r=i.getContext("2d");return r.drawImage(e,-t+1,0),0===r.getImageData(0,0,1,1).data[3]}return!1}function n(e,t,n){var i=document.createElement("canvas");i.width=1,i.height=n;var r=i.getContext("2d");r.drawImage(e,0,0);for(var o=r.getImageData(0,0,1,n).data,a=0,s=n,u=n;u>a;){var c=o[4*(u-1)+3];0===c?s=u:a=u,u=s+a>>1}i=null;var l=u/n;return 0===l?1:l}return{isSubsampled:t,renderTo:e}}),i(j,[D,u,f,w,y,E,z,q,d,c],function(e,t,n,i,r,o,a,s,u,c){function l(){function e(){if(!_&&!y)throw new n.ImageError(n.DOMException.INVALID_STATE_ERR);return _||y}function l(e){return i.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+i.btoa(e)}function h(e){var t=this;y=new Image,y.onerror=function(){v.call(this),t.trigger("error",n.ImageError.WRONG_FORMAT)},y.onload=function(){t.trigger("load")},y.src="data:"==e.substr(0,5)?e:d(e,x.type)}function f(e,t){var i=this,r;return window.FileReader?(r=new FileReader,r.onload=function(){t(this.result)},r.onerror=function(){i.trigger("error",n.ImageError.WRONG_FORMAT)},r.readAsDataURL(e),void 0):t(e.getAsDataURL())}function p(n,i,r,o){var a=this,s,u,c=0,l=0,d,h,f,p;if(A=o,p=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1,-1!==t.inArray(p,[5,6,7,8])){var v=n;n=i,i=v}return d=e(),r?(n=Math.min(n,d.width),i=Math.min(i,d.height),s=Math.max(n/d.width,i/d.height)):s=Math.min(n/d.width,i/d.height),s>1&&!r&&o?void this.trigger("Resize"):(_||(_=document.createElement("canvas")),h=Math.round(d.width*s),f=Math.round(d.height*s),r?(_.width=n,_.height=i,h>n&&(c=Math.round((h-n)/2)),f>i&&(l=Math.round((f-i)/2))):(_.width=h,_.height=f),A||g(_.width,_.height,p),m.call(this,d,_,-c,-l,h,f),this.width=_.width,this.height=_.height,R=!0,void a.trigger("Resize"))}function m(e,t,n,i,r,o){if("iOS"===c.OS)s.renderTo(e,t,{width:r,height:o,x:n,y:i});else{var a=t.getContext("2d");a.drawImage(e,n,i,r,o)}}function g(e,t,n){switch(n){case 5:case 6:case 7:case 8:_.width=t,_.height=e;break;default:_.width=e,_.height=t}var i=_.getContext("2d");switch(n){case 2:i.translate(e,0),i.scale(-1,1);break;case 3:i.translate(e,t),i.rotate(Math.PI);break;case 4:i.translate(0,t),i.scale(1,-1);break;case 5:i.rotate(.5*Math.PI),i.scale(1,-1);break;case 6:i.rotate(.5*Math.PI),i.translate(0,-t);break;case 7:i.rotate(.5*Math.PI),i.translate(e,-t),i.scale(-1,1);break;case 8:i.rotate(-.5*Math.PI),i.translate(-e,0)}}function v(){E&&(E.purge(),E=null),b=y=_=x=null,R=!1}var w=this,y,E,_,b,x,R=!1,A=!0;t.extend(this,{loadFromBlob:function(e){var t=this,i=t.getRuntime(),r=arguments.length>1?arguments[1]:!0;if(!i.can("access_binary"))throw new n.RuntimeError(n.RuntimeError.NOT_SUPPORTED_ERR);return x=e,e.isDetached()?(b=e.getSource(),void h.call(this,b)):void f.call(this,e.getSource(),function(e){r&&(b=l(e)),h.call(t,e)})},loadFromImage:function(e,t){this.meta=e.meta,x=new o(null,{name:e.name,size:e.size,type:e.type}),h.call(this,t?b=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t=this.getRuntime(),n;return!E&&b&&t.can("access_image_binary")&&(E=new a(b)),n={width:e().width||0,height:e().height||0,type:x.type||u.getFileMime(x.name),size:b&&b.length||x.size||0,name:x.name||"",meta:E&&E.meta||this.meta||{}},!n.meta||!n.meta.thumb||n.meta.thumb.data instanceof r||(n.meta.thumb.data=new r(null,{type:"image/jpeg",data:n.meta.thumb.data})),n},downsize:function(){p.apply(this,arguments)},getAsCanvas:function(){return _&&(_.id=this.uid+"_canvas"),_},getAsBlob:function(e,t){return e!==this.type&&p.call(this,this.width,this.height,!1),new o(null,{name:x.name||"",type:e,data:w.getAsBinaryString.call(this,e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!R)return y.src;if("image/jpeg"!==e)return _.toDataURL("image/png");try{return _.toDataURL("image/jpeg",t/100)}catch(n){return _.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!R)return b||(b=l(w.getAsDataURL(e,t))),b;if("image/jpeg"!==e)b=l(w.getAsDataURL(e,t));else{var n;t||(t=90);try{n=_.toDataURL("image/jpeg",t/100)}catch(i){n=_.toDataURL("image/jpeg")}b=l(n),E&&(b=E.stripHeaders(b),A&&(E.meta&&E.meta.exif&&E.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),b=E.writeHeaders(b)),E.purge(),E=null)}return R=!1,b},destroy:function(){w=null,v.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=l}),i(X,[u,c,h,f,m],function(e,t,n,i,r){function o(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(n){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function a(e){var i=n.get(e);i&&"OBJECT"==i.nodeName&&("IE"===t.browser?(i.style.display="none",function r(){4==i.readyState?s(e):setTimeout(r,10)}()):i.parentNode.removeChild(i))}function s(e){var t=n.get(e);if(t){for(var i in t)"function"==typeof t[i]&&(t[i]=null);t.parentNode.removeChild(t)}}function u(s){var u=this,d;s=e.extend({swf_url:t.swf_url},s),r.call(this,s,c,{access_binary:function(e){return e&&"browser"===u.mode},access_image_binary:function(e){return e&&"browser"===u.mode},display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===u.mode},resize_image:r.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===u.mode},return_status_code:function(t){return"browser"===u.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:function(e){return e&&"browser"===u.mode},send_browser_cookies:function(e){return e&&"browser"===u.mode},send_custom_headers:function(e){return e&&"browser"===u.mode},send_multipart:r.capTrue,slice_blob:function(e){return e&&"browser"===u.mode},stream_upload:function(e){return e&&"browser"===u.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===u.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),o()<10&&(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid)},shimExec:function(e,t){var n=[].slice.call(arguments,2);return u.getShim().exec(this.uid,e,t,n)},init:function(){var n,r,o;o=this.getShimContainer(),e.extend(o.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),n='<object id="'+this.uid+'" type="application/x-shockwave-flash" data="'+s.swf_url+'" ',"IE"===t.browser&&(n+='classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '),n+='width="100%" height="100%" style="outline:0"><param name="movie" value="'+s.swf_url+'" /><param name="flashvars" value="uid='+escape(this.uid)+"&target="+t.global_event_dispatcher+'" /><param name="wmode" value="transparent" /><param name="allowscriptaccess" value="always" /></object>',"IE"===t.browser?(r=document.createElement("div"),o.appendChild(r),r.outerHTML=n,r=o=null):o.innerHTML=n,d=setTimeout(function(){u&&!u.initialized&&u.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){a(u.uid),e.call(u),clearTimeout(d),s=d=e=u=null}}(this.destroy)},l)}var c="flash",l={};return r.addConstructor(c,u),l}),i(V,[X,E,u],function(e,t,n){var i={init:function(e){var i=this,r=this.getRuntime();this.bind("Change",function(){var e=r.shimExec.call(i,"FileInput","getFiles");i.files=[],n.each(e,function(e){i.files.push(new t(r.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{name:e.name,accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=i}),i(W,[X,y],function(e,t){var n={slice:function(e,n,i,r){var o=this.getRuntime();return 0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),e=o.shimExec.call(this,"Blob","slice",n,i,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=n}),i(Y,[X,w],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i={read:function(e,t){var i=this;return i.result="","readAsDataURL"===e&&(i.result="data:"+(t.type||"")+";base64,"),i.bind("Progress",function(t,r){r&&(i.result+=n(r,e))},999),i.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=i}),i($,[X,w],function(e,t){function n(e,n){switch(n){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var i={read:function(e,t){var i,r=this.getRuntime();return(i=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(i="data:"+(t.type||"")+";base64,"+i),n(i,e,t.type)):null}};return e.FileReaderSync=i}),i(J,[X,u,y,E,A,I,S],function(e,t,n,i,r,o,a){var s={send:function(e,i){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,i)}function s(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),i=null,r()}function u(e,t){var n=new a;n.bind("TransportingComplete",function(){t(this.result)}),n.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),i instanceof o){var d;if(i.each(function(e,t){e instanceof n?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),i.hasBlob()){var h=i.getBlob();h.isDetached()?u(h,function(e){h.destroy(),s(d,e)}):s(d,h)}else i=null,r()}else i instanceof n?i.isDetached()?u(i,function(e){i.destroy(),i=e.uid,r()}):(i=i.uid,r()):r()},getResponse:function(e){var n,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new i(a.uid,o),"blob"===e)return o;try{if(n=new r,~t.inArray(e,["","text"]))return n.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(n.readAsText(o))}finally{o.destroy()}}return null},abort:function(e){var t=this.getRuntime();t.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=s}),i(Z,[X,y],function(e,t){var n={getAsBlob:function(e){var n=this.getRuntime(),i=n.shimExec.call(this,"Transporter","getAsBlob",e);return i?new t(n.uid,i):null}};return e.Transporter=n}),i(K,[X,u,S,y,A],function(e,t,n,i,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(i,"Image","loadFromBlob",e.uid),i=r=null}var i=this,r=i.getRuntime();if(e.isDetached()){var o=new n;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof i||(t.meta.thumb.data=new i(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var n=this.getRuntime(),r=n.shimExec.call(this,"Image","getAsBlob",e,t);return r?new i(n.uid,r):null},getAsDataURL:function(){var e=this.getRuntime(),t=e.Image.getAsBlob.apply(this,arguments),n;return t?(n=new r,n.readAsDataURL(t)):null}};return e.Image=o}),i(Q,[u,c,h,f,m],function(e,t,n,i,r){function o(e){var t=!1,n=null,i,r,o,a,s,u=0;try{try{n=new ActiveXObject("AgControl.AgControl"),n.IsVersionSupported(e)&&(t=!0),n=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(i=l.description,"1.0.30226.2"===i&&(i="2.0.30226.2"),r=i.split(".");r.length>3;)r.pop();for(;r.length<4;)r.push(0);for(o=e.split(".");o.length>4;)o.pop();do a=parseInt(o[u],10),s=parseInt(r[u],10),u++;while(u<o.length&&a===s);s>=a&&!isNaN(a)&&(t=!0)}}}catch(d){t=!1}return t}function a(a){var c=this,l;a=e.extend({xap_url:t.xap_url},a),r.call(this,a,s,{access_binary:r.capTrue,access_image_binary:r.capTrue,display_media:r.capTrue,do_cors:r.capTrue,drag_and_drop:!1,report_upload_progress:r.capTrue,resize_image:r.capTrue,return_response_headers:function(e){return e&&"client"===c.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===c.mode||!e.arrayDiff(t,[200,404])},select_file:r.capTrue,select_multiple:r.capTrue,send_binary_string:r.capTrue,send_browser_cookies:function(e){return e&&"browser"===c.mode},send_custom_headers:function(e){return e&&"client"===c.mode},send_multipart:r.capTrue,slice_blob:r.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:r.capTrue,use_http_method:function(t){return"client"===c.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),o("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return n.get(this.uid).content.Moxie},shimExec:function(e,t){var n=[].slice.call(arguments,2);return c.getShim().exec(this.uid,e,t,n)},init:function(){var e;e=this.getShimContainer(),e.innerHTML='<object id="'+this.uid+'" data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%" style="outline:none;"><param name="source" value="'+a.xap_url+'"/><param name="background" value="Transparent"/><param name="windowless" value="true"/><param name="enablehtmlaccess" value="true"/><param name="initParams" value="uid='+this.uid+",target="+t.global_event_dispatcher+'"/></object>',l=setTimeout(function(){c&&!c.initialized&&c.trigger("Error",new i.RuntimeError(i.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(c),clearTimeout(l),a=l=e=c=null}}(this.destroy)},u)}var s="silverlight",u={};return r.addConstructor(s,a),u}),i(ee,[Q,E,u],function(e,t,n){var i={init:function(e){function i(e){for(var t="",n=0;n<e.length;n++)t+=(""!==t?"|":"")+e[n].title+" | *."+e[n].extensions.replace(/,/g,";*.");return t}var r=this,o=this.getRuntime();this.bind("Change",function(){var e=o.shimExec.call(r,"FileInput","getFiles");r.files=[],n.each(e,function(e){r.files.push(new t(o.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",i(e.accept),e.name,e.multiple),this.trigger("ready")}};return e.FileInput=i}),i(te,[Q,u,W],function(e,t,n){return e.Blob=t.extend({},n)}),i(ne,[Q,h,N],function(e,t,n){var i={init:function(){var e=this,i=e.getRuntime(),r;return r=i.getShimContainer(),n.addEvent(r,"dragover",function(e){e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect="copy"},e.uid),n.addEvent(r,"dragenter",function(e){e.preventDefault();var n=t.get(i.uid).dragEnter(e);n&&e.stopPropagation()},e.uid),n.addEvent(r,"drop",function(e){e.preventDefault();var n=t.get(i.uid).dragDrop(e);n&&e.stopPropagation()},e.uid),i.shimExec.call(this,"FileDrop","init")}};return e.FileDrop=i}),i(ie,[Q,u,Y],function(e,t,n){return e.FileReader=t.extend({},n)}),i(re,[Q,u,$],function(e,t,n){return e.FileReaderSync=t.extend({},n)}),i(oe,[Q,u,J],function(e,t,n){return e.XMLHttpRequest=t.extend({},n)}),i(ae,[Q,u,Z],function(e,t,n){return e.Transporter=t.extend({},n)}),i(se,[Q,u,y,K],function(e,t,n,i){return e.Image=t.extend({},i,{getInfo:function(){var e=this.getRuntime(),i=["tiff","exif","gps","thumb"],r={meta:{}},o=e.shimExec.call(this,"Image","getInfo");return o.meta&&(t.each(i,function(e){var t=o.meta[e],n,i,a,s;if(t&&t.keys)for(r.meta[e]={},i=0,a=t.keys.length;a>i;i++)n=t.keys[i],s=t[n],s&&(/^(\d|[1-9]\d+)$/.test(s)?s=parseInt(s,10):/^\d*\.\d+$/.test(s)&&(s=parseFloat(s)),r.meta[e][n]=s)}),!r.meta||!r.meta.thumb||r.meta.thumb.data instanceof n||(r.meta.thumb.data=new n(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r}})}),i(ue,[u,f,m,c],function(e,t,n,i){function r(t){var r=this,s=n.capTest,u=n.capTrue;n.call(this,t,o,{access_binary:s(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:s(a.Image&&(i.can("create_canvas")||i.can("use_data_uri_over32kb"))),do_cors:!1,drag_and_drop:!1,filter_by_extension:s(function(){return"Chrome"===i.browser&&i.verComp(i.version,28,">=")||"IE"===i.browser&&i.verComp(i.version,10,">=")||"Safari"===i.browser&&i.verComp(i.version,7,">=")}()),resize_image:function(){return a.Image&&r.can("access_binary")&&i.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return i.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return r.can("select_file")},summon_file_dialog:function(){return r.can("select_file")&&("Firefox"===i.browser&&i.verComp(i.version,4,">=")||"Opera"===i.browser&&i.verComp(i.version,12,">=")||"IE"===i.browser&&i.verComp(i.version,10,">=")||!!~e.inArray(i.browser,["Chrome","Safari"]))},upload_filesize:u,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(r),e=r=null}}(this.destroy)}),e.extend(this.getShim(),a)}var o="html4",a={};return n.addConstructor(o,r),a}),i(ce,[ue,E,u,h,N,d,c],function(e,t,n,i,r,o,a){function s(){function e(){var o=this,l=o.getRuntime(),d,h,f,p,m,g;g=n.guid("uid_"),d=l.getShimContainer(),s&&(f=i.get(s+"_form"),f&&n.extend(f.style,{top:"100%"})),p=document.createElement("form"),p.setAttribute("id",g+"_form"),p.setAttribute("method","post"),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),n.extend(p.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=document.createElement("input"),m.setAttribute("id",g),m.setAttribute("type","file"),m.setAttribute("name",c.name||"Filedata"),m.setAttribute("accept",u.join(",")),n.extend(m.style,{fontSize:"999px",opacity:0}),p.appendChild(m),d.appendChild(p),n.extend(m.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&n.extend(m.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),m.onchange=function(){var n;if(this.value){if(this.files){if(n=this.files[0],0===n.size)return void p.parentNode.removeChild(p)}else n={name:this.value};n=new t(l.uid,n),this.onchange=function(){},e.call(o),o.files=[n],m.setAttribute("id",n.uid),p.setAttribute("id",n.uid+"_form"),o.trigger("change"),m=p=null}},l.can("summon_file_dialog")&&(h=i.get(c.browse_button),r.removeEvent(h,"click",o.uid),r.addEvent(h,"click",function(e){m&&!m.disabled&&m.click(),e.preventDefault()},o.uid)),s=g,d=f=h=null}var s,u=[],c;n.extend(this,{init:function(t){var n=this,a=n.getRuntime(),s;c=t,u=t.accept.mimes||o.extList2mimes(t.accept,a.can("filter_by_extension")),s=a.getShimContainer(),function(){var e,o,u;e=i.get(t.browse_button),a.can("summon_file_dialog")&&("static"===i.getStyle(e,"position")&&(e.style.position="relative"),o=parseInt(i.getStyle(e,"z-index"),10)||1,e.style.zIndex=o,s.style.zIndex=o-1),u=a.can("summon_file_dialog")?e:s,r.addEvent(u,"mouseover",function(){n.trigger("mouseenter")},n.uid),r.addEvent(u,"mouseout",function(){n.trigger("mouseleave")},n.uid),r.addEvent(u,"mousedown",function(){n.trigger("mousedown")},n.uid),r.addEvent(i.get(t.container),"mouseup",function(){n.trigger("mouseup")},n.uid),e=null}(),e.call(this),s=null,n.trigger({type:"ready",async:!0})},disable:function(e){var t;(t=i.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),n=e.getShimContainer();r.removeAllEvents(n,this.uid),r.removeAllEvents(c&&i.get(c.container),this.uid),r.removeAllEvents(c&&i.get(c.browse_button),this.uid),n&&(n.innerHTML=""),t.removeInstance(this.uid),s=u=c=n=t=null}})}return e.FileInput=s}),i(le,[ue,F],function(e,t){return e.FileReader=t}),i(de,[ue,u,h,x,f,N,y,I],function(e,t,n,i,r,o,a,s){function u(){function e(e){var t=this,i,r,a,s,u=!1;if(l){if(i=l.id.replace(/_iframe$/,""),r=n.get(i+"_form")){for(a=r.getElementsByTagName("input"),s=a.length;s--;)switch(a[s].getAttribute("type")){case"hidden":a[s].parentNode.removeChild(a[s]);break;case"file":u=!0}a=[],u||r.parentNode.removeChild(r),r=null}setTimeout(function(){o.removeEvent(l,"load",t.uid),l.parentNode&&l.parentNode.removeChild(l);var n=t.getRuntime().getShimContainer();n.children.length||n.parentNode.removeChild(n),n=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,h){function f(){var n=m.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='<iframe id="'+g+'_iframe" name="'+g+'_iframe" src="javascript:&quot;&quot;" style="display:none"></iframe>',l=r.firstChild,n.appendChild(l),o.addEvent(l,"load",function(){var n;try{n=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(n.title)?u=n.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(n.body.innerHTML),p.trigger({type:"progress",loaded:c.length,total:c.length}),y&&p.trigger({type:"uploadprogress",loaded:y.size||1025,total:y.size||1025}))}catch(r){if(!i.hasSameOrigin(d.url))return void e.call(p,function(){p.trigger("error")});u=404}e.call(p,function(){p.trigger("load")})},p.uid)}var p=this,m=p.getRuntime(),g,v,w,y;if(u=c=null,h instanceof s&&h.hasBlob()){if(y=h.getBlob(),g=y.uid,w=n.get(g),v=n.get(g+"_form"),!v)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else g=t.guid("uid_"),v=document.createElement("form"),v.setAttribute("id",g+"_form"),v.setAttribute("method",d.method),v.setAttribute("enctype","multipart/form-data"),v.setAttribute("encoding","multipart/form-data"),m.getShimContainer().appendChild(v);v.setAttribute("target",g+"_iframe"),h instanceof s&&h.each(function(e,n){if(e instanceof a)w&&w.setAttribute("name",n);else{var i=document.createElement("input");t.extend(i,{type:"hidden",name:n,value:e}),w?v.insertBefore(i,w):v.appendChild(i)}}),v.setAttribute("action",d.url),f(),v.submit(),p.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{
+return JSON.parse(c.replace(/^\s*<pre[^>]*>/,"").replace(/<\/pre>\s*$/,""))}catch(n){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})}})}return e.XMLHttpRequest=u}),i(he,[ue,j],function(e,t){return e.Image=t}),a([u,c,l,d,h,f,p,m,g,v,w,y,E,_,b,x,R,A,I,T,S,O,N])}(this);;(function(e){"use strict";var t={},n=e.moxie.core.utils.Basic.inArray;return function r(e){var i,s;for(i in e)s=typeof e[i],s==="object"&&!~n(i,["Exceptions","Env","Mime"])?r(e[i]):s==="function"&&(t[i]=e[i])}(e.moxie),t.Env=e.moxie.core.utils.Env,t.Mime=e.moxie.core.utils.Mime,t.Exceptions=e.moxie.core.Exceptions,e.mOxie=t,e.o||(e.o=t),t})(this);
 /**
  * Plupload - multi-runtime File Uploader
- * v2.1.1
+ * v2.1.8
  *
  * Copyright 2013, Moxiecode Systems AB
  * Released under GPL License.
@@ -23,6 +24,6 @@
  * License: http://www.plupload.com/license
  * Contributing: http://www.plupload.com/contributing
  *
- * Date: 2014-01-16
+ * Date: 2015-07-21
  */
-;(function(e,t,n){function s(e){function r(e,t,r){var i={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};i[e]?n[i[e]]=t:r||(n[e]=t)}var t=e.required_features,n={};return typeof t=="string"?o.each(t.split(/\s*,\s*/),function(e){r(e,!0)}):typeof t=="object"?o.each(t,function(e,t){r(t,e)}):t===!0&&(e.multipart||(n.send_binary_string=!0),e.chunk_size>0&&(n.slice_blob=!0),e.resize.enabled&&(n.send_binary_string=!0),o.each(e,function(e,t){r(t,!!e,!0)})),n}var r=e.setTimeout,i={},o={VERSION:"2.1.1",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,IMAGE_MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:t.mimes,ua:t.ua,typeOf:t.typeOf,extend:t.extend,guid:t.guid,get:function(n){var r=[],i;t.typeOf(n)!=="array"&&(n=[n]);var s=n.length;while(s--)i=t.get(n[s]),i&&r.push(i);return r.length?r:null},each:t.each,getPos:t.getPos,getSize:t.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},n=/[<>&\"\']/g;return e?(""+e).replace(n,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){var t,n;n=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];for(t=0;t<n.length;t+=2)e=e.replace(n[t],n[t+1]);return e=e.replace(/\s+/g,"_"),e=e.replace(/[^a-z0-9_\-\.]+/gi,""),e},buildUrl:function(e,t){var n="";return o.each(t,function(e,t){n+=(n?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(e)}),n&&(e+=(e.indexOf("?")>0?"&":"?")+n),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===n||/\D/.test(e))return o.translate("N/A");var r=Math.pow(1024,4);return e>r?t(e/r,1)+" "+o.translate("tb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("gb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("mb"):e>1024?Math.round(e/1024)+" "+o.translate("kb"):e+" "+o.translate("b")},parseSize:t.parseSizeStr,predictRuntime:function(e,n){var r,i;return r=new o.Uploader(e),i=t.Runtime.thatCan(r.getOption().required_features,n||e.runtimes),r.destroy(),i},addFileFilter:function(e,t){i[e]=t}};o.addFileFilter("mime_types",function(e,t,n){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:o.FILE_EXTENSION_ERROR,message:o.translate("File extension error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("max_file_size",function(e,t,n){var r;e=o.parseSize(e),t.size!==r&&e&&t.size>e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("prevent_duplicates",function(e,t,n){if(e){var r=this.files.length;while(r--)if(t.name===this.files[r].name&&t.size===this.files[r].size){this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),n(!1);return}}n(!0)}),o.Uploader=function(e){function g(){var e,t=0,n;if(this.state==o.STARTED){for(n=0;n<f.length;n++)!e&&f[n].status==o.QUEUED?(e=f[n],this.trigger("BeforeUpload",e)&&(e.status=o.UPLOADING,this.trigger("UploadFile",e))):t++;t==f.length&&(this.state!==o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged")),this.trigger("UploadComplete",f))}}function y(e){e.percent=e.size>0?Math.ceil(e.loaded/e.size*100):100,b()}function b(){var e,t;d.reset();for(e=0;e<f.length;e++)t=f[e],t.size!==n?(d.size+=t.origSize,d.loaded+=t.loaded*t.origSize/t.size):d.size=n,t.status==o.DONE?d.uploaded++:t.status==o.FAILED?d.failed++:d.queued++;d.size===n?d.percent=f.length>0?Math.ceil(d.uploaded/f.length*100):0:(d.bytesPerSec=Math.ceil(d.loaded/((+(new Date)-p||1)/1e3)),d.percent=d.size>0?Math.ceil(d.loaded/d.size*100):0)}function w(){var e=c[0]||h[0];return e?e.getRuntime().uid:!1}function E(e,n){if(e.ruid){var r=t.Runtime.getInfo(e.ruid);if(r)return r.can(n)}return!1}function S(){this.bind("FilesAdded",C),this.bind("CancelUpload",M),this.bind("BeforeUpload",k),this.bind("UploadFile",L),this.bind("UploadProgress",A),this.bind("StateChanged",O),this.bind("QueueChanged",b),this.bind("Error",D),this.bind("FileUploaded",_),this.bind("Destroy",P)}function x(e,n){var r=this,i=0,s=[],u={accept:e.filters.mime_types,runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:l,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};o.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(u[t]=e[t])}),e.browse_button&&o.each(e.browse_button,function(n){s.push(function(s){var a=new t.FileInput(o.extend({},u,{name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:n}));a.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(r.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),i++,c.push(this),s()},a.onchange=function(){r.addFile(this.files)},a.bind("mouseenter mouseleave mousedown mouseup",function(r){v||(e.browse_button_hover&&("mouseenter"===r.type?t.addClass(n,e.browse_button_hover):"mouseleave"===r.type&&t.removeClass(n,e.browse_button_hover)),e.browse_button_active&&("mousedown"===r.type?t.addClass(n,e.browse_button_active):"mouseup"===r.type&&t.removeClass(n,e.browse_button_active)))}),a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),e.drop_element&&o.each(e.drop_element,function(e){s.push(function(n){var s=new t.FileDrop(o.extend({},u,{drop_zone:e}));s.onready=function(){var e=t.Runtime.getInfo(this.ruid);r.features.dragdrop=e.can("drag_and_drop"),i++,h.push(this),n()},s.ondrop=function(){r.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,n()}),s.init()})}),t.inSeries(s,function(){typeof n=="function"&&n(i)})}function T(e,n,r){var i=new t.Image;try{i.onload=function(){i.downsize(n.width,n.height,n.crop,n.preserve_headers)},i.onresize=function(){r(this.getAsBlob(e.type,n.quality)),this.destroy()},i.onerror=function(){r(e)},i.load(e)}catch(s){r(e)}}function N(e,n,r){function f(e,t,n){var r=a[e];switch(e){case"max_file_size":e==="max_file_size"&&(a.max_file_size=a.filters.max_file_size=t);break;case"chunk_size":if(t=o.parseSize(t))a[e]=t;break;case"filters":o.typeOf(t)==="array"&&(t={mime_types:t}),n?o.extend(a.filters,t):a.filters=t,t.mime_types&&(a.filters.mime_types.regexp=function(e){var t=[];return o.each(e,function(e){o.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(a.filters.mime_types));break;case"resize":n?o.extend(a.resize,t,{enabled:!0}):a.resize=t;break;case"prevent_duplicates":a.prevent_duplicates=a.filters.prevent_duplicates=!!t;break;case"browse_button":case"drop_element":t=o.get(t);case"container":case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":a[e]=t,n||(u=!0);break;default:a[e]=t}n||i.trigger("OptionChanged",e,t,r)}var i=this,u=!1;typeof e=="object"?o.each(e,function(e,t){f(t,e,r)}):f(e,n,r),r?(a.required_features=s(o.extend({},a)),l=s(o.extend({},a,{required_features:!0}))):u&&(i.trigger("Destroy"),x.call(i,a,function(e){e?(i.runtime=t.Runtime.getInfo(w()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})}))}function C(e,t){[].push.apply(f,t),e.trigger("QueueChanged"),e.refresh()}function k(e,t){if(a.unique_names){var n=t.name.match(/\.([^.]+)$/),r="part";n&&(r=n[1]),t.target_name=t.id+"."+r}}function L(e,n){function h(){u-->0?r(p,1e3):(n.loaded=f,e.trigger("Error",{code:o.HTTP_ERROR,message:o.translate("HTTP Error."),file:n,response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()}))}function p(){var d,v,g,y;if(n.status==o.DONE||n.status==o.FAILED||e.state==o.STOPPED)return;g={name:n.target_name||n.name},s&&a.chunks&&c.size>s?(y=Math.min(s,c.size-f),d=c.slice(f,f+y)):(y=c.size,d=c),s&&a.chunks&&(e.settings.send_chunk_number?(g.chunk=Math.ceil(f/s),g.chunks=Math.ceil(c.size/s)):(g.offset=f,g.total=c.size)),m=new t.XMLHttpRequest,m.upload&&(m.upload.onprogress=function(t){n.loaded=Math.min(n.size,f+t.loaded),e.trigger("UploadProgress",n)}),m.onload=function(){if(m.status>=400){h();return}u=e.settings.max_retries,y<c.size?(d.destroy(),f+=y,n.loaded=Math.min(f,c.size),e.trigger("ChunkUploaded",n,{offset:n.loaded,total:c.size,response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()}),t.Env.browser==="Android Browser"&&e.trigger("UploadProgress",n)):n.loaded=n.size,d=v=null,!f||f>=c.size?(n.size!=n.origSize&&(c.destroy(),c=null),e.trigger("UploadProgress",n),n.status=o.DONE,e.trigger("FileUploaded",n,{response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()})):r(p,1)},m.onerror=function(){h()},m.onloadend=function(){this.destroy(),m=null},e.settings.multipart&&a.multipart?(g.name=n.target_name||n.name,m.open("post",i,!0),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),v=new t.FormData,o.each(o.extend(g,e.settings.multipart_params),function(e,t){v.append(t,e)}),v.append(e.settings.file_data_name,d),m.send(v,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(i=o.buildUrl(e.settings.url,o.extend(g,e.settings.multipart_params)),m.open("post",i,!0),m.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),m.send(d,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url}))}var i=e.settings.url,s=e.settings.chunk_size,u=e.settings.max_retries,a=e.features,f=0,c;n.loaded&&(f=n.loaded=s*Math.floor(n.loaded/s)),c=n.getSource(),e.settings.resize.enabled&&E(c,"send_binary_string")&&!!~t.inArray(c.type,["image/jpeg","image/png"])?T.call(this,c,e.settings.resize,function(e){c=e,n.size=e.size,p()}):p()}function A(e,t){y(t)}function O(e){if(e.state==o.STARTED)p=+(new Date);else if(e.state==o.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,b())}function M(){m&&m.abort()}function _(e){b(),r(function(){g.call(e)},1)}function D(e,t){t.file&&(t.file.status=o.FAILED,y(t.file),e.state==o.STARTED&&(e.trigger("CancelUpload"),r(function(){g.call(e)},1)))}function P(e){e.stop(),o.each(f,function(e){e.destroy()}),f=[],c.length&&(o.each(c,function(e){e.destroy()}),c=[]),h.length&&(o.each(h,function(e){e.destroy()}),h=[]),l={},v=!1,p=m=null,d.reset()}var u=o.guid(),a,f=[],l={},c=[],h=[],p,d,v=!1,m;a={runtimes:t.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_chunk_number:!0},N.call(this,e,null,!0),d=new o.QueueProgress,o.extend(this,{id:u,uid:u,state:o.STOPPED,features:{},runtime:null,files:f,settings:a,total:d,init:function(){var e=this;typeof a.preinit=="function"?a.preinit(e):o.each(a.preinit,function(t,n){e.bind(n,t)});if(!a.browse_button||!a.url){this.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")});return}S.call(this),x.call(this,a,function(n){typeof a.init=="function"?a.init(e):o.each(a.init,function(t,n){e.bind(n,t)}),n?(e.runtime=t.Runtime.getInfo(w()).type,e.trigger("Init",{runtime:e.runtime}),e.trigger("PostInit")):e.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})},setOption:function(e,t){N.call(this,e,t,!this.runtime)},getOption:function(e){return e?a[e]:a},refresh:function(){c.length&&o.each(c,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),g.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){v=arguments[0]!==n?arguments[0]:!0,c.length&&o.each(c,function(e){e.disable(v)}),this.trigger("DisableBrowse",v)},getFile:function(e){var t;for(t=f.length-1;t>=0;t--)if(f[t].id===e)return f[t]},addFile:function(e,n){function l(e,n){var r=[];t.each(s.settings.filters,function(t,n){i[n]&&r.push(function(r){i[n].call(s,t,e,function(e){r(!e)})})}),t.inSeries(r,n)}function c(e){var i=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!f)return!1;e.ruid=f,e.connectRuntime(f)}c(new o.File(e))}else e instanceof t.Blob?(c(e.getSource()),e.destroy()):e instanceof o.File?(n&&(e.name=n),u.push(function(t){l(e,function(n){n||(a.push(e),s.trigger("FileFiltered",e)),r(t,1)})})):t.inArray(i,["file","blob"])!==-1?c(new t.File(null,e)):i==="node"&&t.typeOf(e.files)==="filelist"?t.each(e.files,c):i==="array"&&(n=null,t.each(e,c))}var s=this,u=[],a=[],f;f=w(),c(e),u.length&&t.inSeries(u,function(){a.length&&s.trigger("FilesAdded",a)})},removeFile:function(e){var t=typeof e=="string"?e:e.id;for(var n=f.length-1;n>=0;n--)if(f[n].id===t)return this.splice(n,1)[0]},splice:function(e,t){var r=f.splice(e===n?0:e,t===n?f.length:t),i=!1;return this.state==o.STARTED&&(i=!0,this.stop()),this.trigger("FilesRemoved",r),o.each(r,function(e){e.destroy()}),this.trigger("QueueChanged"),this.refresh(),i&&this.start(),r},bind:function(e,t,n){var r=this;o.Uploader.prototype.bind.call(this,e,function(){var e=[].slice.call(arguments);return e.splice(0,1,r),t.apply(this,e)},0,n)},destroy:function(){this.trigger("Destroy"),a=d=null,this.unbindAll()}})},o.Uploader.prototype=t.EventTarget.instance,o.File=function(){function n(n){o.extend(this,{id:o.guid(),name:n.name||n.fileName,type:n.type||"",size:n.size||n.fileSize,origSize:n.size||n.fileSize,loaded:0,percent:0,status:o.QUEUED,lastModifiedDate:n.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return t.inArray(t.typeOf(e),["blob","file"])!==-1?e:null},getSource:function(){return e[this.id]?e[this.id]:null},destroy:function(){var t=this.getSource();t&&(t.destroy(),delete e[this.id])}}),e[this.id]=n}var e={};return n}(),o.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=o})(window,mOxie);
\ No newline at end of file
+;(function(e,t,n){function s(e){function r(e,t,r){var i={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};i[e]?n[i[e]]=t:r||(n[e]=t)}var t=e.required_features,n={};if(typeof t=="string")o.each(t.split(/\s*,\s*/),function(e){r(e,!0)});else if(typeof t=="object")o.each(t,function(e,t){r(t,e)});else if(t===!0){e.chunk_size>0&&(n.slice_blob=!0);if(e.resize.enabled||!e.multipart)n.send_binary_string=!0;o.each(e,function(e,t){r(t,!!e,!0)})}return n}var r=e.setTimeout,i={},o={VERSION:"2.1.8",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,mimeTypes:t.mimes,ua:t.ua,typeOf:t.typeOf,extend:t.extend,guid:t.guid,get:function(n){var r=[],i;t.typeOf(n)!=="array"&&(n=[n]);var s=n.length;while(s--)i=t.get(n[s]),i&&r.push(i);return r.length?r:null},each:t.each,getPos:t.getPos,getSize:t.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},n=/[<>&\"\']/g;return e?(""+e).replace(n,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:t.toArray,inArray:t.inArray,addI18n:t.addI18n,translate:t.translate,isEmptyObj:t.isEmptyObj,hasClass:t.hasClass,addClass:t.addClass,removeClass:t.removeClass,getStyle:t.getStyle,addEvent:t.addEvent,removeEvent:t.removeEvent,removeAllEvents:t.removeAllEvents,cleanName:function(e){var t,n;n=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"];for(t=0;t<n.length;t+=2)e=e.replace(n[t],n[t+1]);return e=e.replace(/\s+/g,"_"),e=e.replace(/[^a-z0-9_\-\.]+/gi,""),e},buildUrl:function(e,t){var n="";return o.each(t,function(e,t){n+=(n?"&":"")+encodeURIComponent(t)+"="+encodeURIComponent(e)}),n&&(e+=(e.indexOf("?")>0?"&":"?")+n),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===n||/\D/.test(e))return o.translate("N/A");var r=Math.pow(1024,4);return e>r?t(e/r,1)+" "+o.translate("tb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("gb"):e>(r/=1024)?t(e/r,1)+" "+o.translate("mb"):e>1024?Math.round(e/1024)+" "+o.translate("kb"):e+" "+o.translate("b")},parseSize:t.parseSizeStr,predictRuntime:function(e,n){var r,i;return r=new o.Uploader(e),i=t.Runtime.thatCan(r.getOption().required_features,n||e.runtimes),r.destroy(),i},addFileFilter:function(e,t){i[e]=t}};o.addFileFilter("mime_types",function(e,t,n){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:o.FILE_EXTENSION_ERROR,message:o.translate("File extension error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("max_file_size",function(e,t,n){var r;e=o.parseSize(e),t.size!==r&&e&&t.size>e?(this.trigger("Error",{code:o.FILE_SIZE_ERROR,message:o.translate("File size error."),file:t}),n(!1)):n(!0)}),o.addFileFilter("prevent_duplicates",function(e,t,n){if(e){var r=this.files.length;while(r--)if(t.name===this.files[r].name&&t.size===this.files[r].size){this.trigger("Error",{code:o.FILE_DUPLICATE_ERROR,message:o.translate("Duplicate file error."),file:t}),n(!1);return}}n(!0)}),o.Uploader=function(e){function g(){var e,t=0,n;if(this.state==o.STARTED){for(n=0;n<f.length;n++)!e&&f[n].status==o.QUEUED?(e=f[n],this.trigger("BeforeUpload",e)&&(e.status=o.UPLOADING,this.trigger("UploadFile",e))):t++;t==f.length&&(this.state!==o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged")),this.trigger("UploadComplete",f))}}function y(e){e.percent=e.size>0?Math.ceil(e.loaded/e.size*100):100,b()}function b(){var e,t;d.reset();for(e=0;e<f.length;e++)t=f[e],t.size!==n?(d.size+=t.origSize,d.loaded+=t.loaded*t.origSize/t.size):d.size=n,t.status==o.DONE?d.uploaded++:t.status==o.FAILED?d.failed++:d.queued++;d.size===n?d.percent=f.length>0?Math.ceil(d.uploaded/f.length*100):0:(d.bytesPerSec=Math.ceil(d.loaded/((+(new Date)-p||1)/1e3)),d.percent=d.size>0?Math.ceil(d.loaded/d.size*100):0)}function w(){var e=c[0]||h[0];return e?e.getRuntime().uid:!1}function E(e,n){if(e.ruid){var r=t.Runtime.getInfo(e.ruid);if(r)return r.can(n)}return!1}function S(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",O),this.bind("BeforeUpload",C),this.bind("UploadFile",k),this.bind("UploadProgress",L),this.bind("StateChanged",A),this.bind("QueueChanged",b),this.bind("Error",_),this.bind("FileUploaded",M),this.bind("Destroy",D)}function x(e,n){var r=this,i=0,s=[],u={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:l,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};o.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(u[t]=e[t])}),e.browse_button&&o.each(e.browse_button,function(n){s.push(function(s){var a=new t.FileInput(o.extend({},u,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:n}));a.onready=function(){var e=t.Runtime.getInfo(this.ruid);t.extend(r.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),i++,c.push(this),s()},a.onchange=function(){r.addFile(this.files)},a.bind("mouseenter mouseleave mousedown mouseup",function(r){v||(e.browse_button_hover&&("mouseenter"===r.type?t.addClass(n,e.browse_button_hover):"mouseleave"===r.type&&t.removeClass(n,e.browse_button_hover)),e.browse_button_active&&("mousedown"===r.type?t.addClass(n,e.browse_button_active):"mouseup"===r.type&&t.removeClass(n,e.browse_button_active)))}),a.bind("mousedown",function(){r.trigger("Browse")}),a.bind("error runtimeerror",function(){a=null,s()}),a.init()})}),e.drop_element&&o.each(e.drop_element,function(e){s.push(function(n){var s=new t.FileDrop(o.extend({},u,{drop_zone:e}));s.onready=function(){var e=t.Runtime.getInfo(this.ruid);r.features.dragdrop=e.can("drag_and_drop"),i++,h.push(this),n()},s.ondrop=function(){r.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,n()}),s.init()})}),t.inSeries(s,function(){typeof n=="function"&&n(i)})}function T(e,r,i){var s=new t.Image;try{s.onload=function(){if(r.width>this.width&&r.height>this.height&&r.quality===n&&r.preserve_headers&&!r.crop)return this.destroy(),i(e);s.downsize(r.width,r.height,r.crop,r.preserve_headers)},s.onresize=function(){i(this.getAsBlob(e.type,r.quality)),this.destroy()},s.onerror=function(){i(e)},s.load(e)}catch(o){i(e)}}function N(e,n,r){function f(e,t,n){var r=a[e];switch(e){case"max_file_size":e==="max_file_size"&&(a.max_file_size=a.filters.max_file_size=t);break;case"chunk_size":if(t=o.parseSize(t))a[e]=t,a.send_file_name=!0;break;case"multipart":a[e]=t,t||(a.send_file_name=!0);break;case"unique_names":a[e]=t,t&&(a.send_file_name=!0);break;case"filters":o.typeOf(t)==="array"&&(t={mime_types:t}),n?o.extend(a.filters,t):a.filters=t,t.mime_types&&(a.filters.mime_types.regexp=function(e){var t=[];return o.each(e,function(e){o.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(a.filters.mime_types));break;case"resize":n?o.extend(a.resize,t,{enabled:!0}):a.resize=t;break;case"prevent_duplicates":a.prevent_duplicates=a.filters.prevent_duplicates=!!t;break;case"browse_button":case"drop_element":t=o.get(t);case"container":case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":a[e]=t,n||(u=!0);break;default:a[e]=t}n||i.trigger("OptionChanged",e,t,r)}var i=this,u=!1;typeof e=="object"?o.each(e,function(e,t){f(t,e,r)}):f(e,n,r),r?(a.required_features=s(o.extend({},a)),l=s(o.extend({},a,{required_features:!0}))):u&&(i.trigger("Destroy"),x.call(i,a,function(e){e?(i.runtime=t.Runtime.getInfo(w()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})}))}function C(e,t){if(e.settings.unique_names){var n=t.name.match(/\.([^.]+)$/),r="part";n&&(r=n[1]),t.target_name=t.id+"."+r}}function k(e,n){function h(){u-->0?r(p,1e3):(n.loaded=f,e.trigger("Error",{code:o.HTTP_ERROR,message:o.translate("HTTP Error."),file:n,response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()}))}function p(){var d,v,g={},y;if(n.status!==o.UPLOADING||e.state===o.STOPPED)return;e.settings.send_file_name&&(g.name=n.target_name||n.name),s&&a.chunks&&c.size>s?(y=Math.min(s,c.size-f),d=c.slice(f,f+y)):(y=c.size,d=c),s&&a.chunks&&(e.settings.send_chunk_number?(g.chunk=Math.ceil(f/s),g.chunks=Math.ceil(c.size/s)):(g.offset=f,g.total=c.size)),m=new t.XMLHttpRequest,m.upload&&(m.upload.onprogress=function(t){n.loaded=Math.min(n.size,f+t.loaded),e.trigger("UploadProgress",n)}),m.onload=function(){if(m.status>=400){h();return}u=e.settings.max_retries,y<c.size?(d.destroy(),f+=y,n.loaded=Math.min(f,c.size),e.trigger("ChunkUploaded",n,{offset:n.loaded,total:c.size,response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()}),t.Env.browser==="Android Browser"&&e.trigger("UploadProgress",n)):n.loaded=n.size,d=v=null,!f||f>=c.size?(n.size!=n.origSize&&(c.destroy(),c=null),e.trigger("UploadProgress",n),n.status=o.DONE,e.trigger("FileUploaded",n,{response:m.responseText,status:m.status,responseHeaders:m.getAllResponseHeaders()})):r(p,1)},m.onerror=function(){h()},m.onloadend=function(){this.destroy(),m=null},e.settings.multipart&&a.multipart?(m.open("post",i,!0),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),v=new t.FormData,o.each(o.extend(g,e.settings.multipart_params),function(e,t){v.append(t,e)}),v.append(e.settings.file_data_name,d),m.send(v,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url})):(i=o.buildUrl(e.settings.url,o.extend(g,e.settings.multipart_params)),m.open("post",i,!0),m.setRequestHeader("Content-Type","application/octet-stream"),o.each(e.settings.headers,function(e,t){m.setRequestHeader(t,e)}),m.send(d,{runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:l,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url}))}var i=e.settings.url,s=e.settings.chunk_size,u=e.settings.max_retries,a=e.features,f=0,c;n.loaded&&(f=n.loaded=s?s*Math.floor(n.loaded/s):0),c=n.getSource(),e.settings.resize.enabled&&E(c,"send_binary_string")&&!!~t.inArray(c.type,["image/jpeg","image/png"])?T.call(this,c,e.settings.resize,function(e){c=e,n.size=e.size,p()}):p()}function L(e,t){y(t)}function A(e){if(e.state==o.STARTED)p=+(new Date);else if(e.state==o.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==o.UPLOADING&&(e.files[t].status=o.QUEUED,b())}function O(){m&&m.abort()}function M(e){b(),r(function(){g.call(e)},1)}function _(e,t){t.code===o.INIT_ERROR?e.destroy():t.code===o.HTTP_ERROR&&(t.file.status=o.FAILED,y(t.file),e.state==o.STARTED&&(e.trigger("CancelUpload"),r(function(){g.call(e)},1)))}function D(e){e.stop(),o.each(f,function(e){e.destroy()}),f=[],c.length&&(o.each(c,function(e){e.destroy()}),c=[]),h.length&&(o.each(h,function(e){e.destroy()}),h=[]),l={},v=!1,p=m=null,d.reset()}var u=o.guid(),a,f=[],l={},c=[],h=[],p,d,v=!1,m;a={runtimes:t.Runtime.order,max_retries:0,chunk_size:0,multipart:!0,multi_selection:!0,file_data_name:"file",flash_swf_url:"js/Moxie.swf",silverlight_xap_url:"js/Moxie.xap",filters:{mime_types:[],prevent_duplicates:!1,max_file_size:0},resize:{enabled:!1,preserve_headers:!0,crop:!1},send_file_name:!0,send_chunk_number:!0},N.call(this,e,null,!0),d=new o.QueueProgress,o.extend(this,{id:u,uid:u,state:o.STOPPED,features:{},runtime:null,files:f,settings:a,total:d,init:function(){var e=this;typeof a.preinit=="function"?a.preinit(e):o.each(a.preinit,function(t,n){e.bind(n,t)}),S.call(this);if(!a.browse_button||!a.url){this.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")});return}x.call(this,a,function(n){typeof a.init=="function"?a.init(e):o.each(a.init,function(t,n){e.bind(n,t)}),n?(e.runtime=t.Runtime.getInfo(w()).type,e.trigger("Init",{runtime:e.runtime}),e.trigger("PostInit")):e.trigger("Error",{code:o.INIT_ERROR,message:o.translate("Init error.")})})},setOption:function(e,t){N.call(this,e,t,!this.runtime)},getOption:function(e){return e?a[e]:a},refresh:function(){c.length&&o.each(c,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=o.STARTED&&(this.state=o.STARTED,this.trigger("StateChanged"),g.call(this))},stop:function(){this.state!=o.STOPPED&&(this.state=o.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){v=arguments[0]!==n?arguments[0]:!0,c.length&&o.each(c,function(e){e.disable(v)}),this.trigger("DisableBrowse",v)},getFile:function(e){var t;for(t=f.length-1;t>=0;t--)if(f[t].id===e)return f[t]},addFile:function(e,n){function c(e,n){var r=[];t.each(s.settings.filters,function(t,n){i[n]&&r.push(function(r){i[n].call(s,t,e,function(e){r(!e)})})}),t.inSeries(r,n)}function h(e){var i=t.typeOf(e);if(e instanceof t.File){if(!e.ruid&&!e.isDetached()){if(!l)return!1;e.ruid=l,e.connectRuntime(l)}h(new o.File(e))}else e instanceof t.Blob?(h(e.getSource()),e.destroy()):e instanceof o.File?(n&&(e.name=n),u.push(function(t){c(e,function(n){n||(f.push(e),a.push(e),s.trigger("FileFiltered",e)),r(t,1)})})):t.inArray(i,["file","blob"])!==-1?h(new t.File(null,e)):i==="node"&&t.typeOf(e.files)==="filelist"?t.each(e.files,h):i==="array"&&(n=null,t.each(e,h))}var s=this,u=[],a=[],l;l=w(),h(e),u.length&&t.inSeries(u,function(){a.length&&s.trigger("FilesAdded",a)})},removeFile:function(e){var t=typeof e=="string"?e:e.id;for(var n=f.length-1;n>=0;n--)if(f[n].id===t)return this.splice(n,1)[0]},splice:function(e,t){var r=f.splice(e===n?0:e,t===n?f.length:t),i=!1;return this.state==o.STARTED&&(o.each(r,function(e){if(e.status===o.UPLOADING)return i=!0,!1}),i&&this.stop()),this.trigger("FilesRemoved",r),o.each(r,function(e){e.destroy()}),i&&this.start(),r},dispatchEvent:function(e){var t,n,r;e=e.toLowerCase(),t=this.hasEventListener(e);if(t){t.sort(function(e,t){return t.priority-e.priority}),n=[].slice.call(arguments),n.shift(),n.unshift(this);for(var i=0;i<t.length;i++)if(t[i].fn.apply(t[i].scope,n)===!1)return!1}return!0},bind:function(e,t,n,r){o.Uploader.prototype.bind.call(this,e,t,r,n)},destroy:function(){this.trigger("Destroy"),a=d=null,this.unbindAll()}})},o.Uploader.prototype=t.EventTarget.instance,o.File=function(){function n(n){o.extend(this,{id:o.guid(),name:n.name||n.fileName,type:n.type||"",size:n.size||n.fileSize,origSize:n.size||n.fileSize,loaded:0,percent:0,status:o.QUEUED,lastModifiedDate:n.lastModifiedDate||(new Date).toLocaleString(),getNative:function(){var e=this.getSource().getSource();return t.inArray(t.typeOf(e),["blob","file"])!==-1?e:null},getSource:function(){return e[this.id]?e[this.id]:null},destroy:function(){var t=this.getSource();t&&(t.destroy(),delete e[this.id])}}),e[this.id]=n}var e={};return n}(),o.QueueProgress=function(){var e=this;e.size=0,e.loaded=0,e.uploaded=0,e.failed=0,e.queued=0,e.percent=0,e.bytesPerSec=0,e.reset=function(){e.size=e.loaded=e.uploaded=e.failed=e.queued=e.percent=e.bytesPerSec=0}},e.plupload=o})(window,mOxie);
\ No newline at end of file
index 3a9f389f43dce1bee4f6b7f57ceeb0f8cb7c123e..fc7fbfe4b24cfbb901d5f05f760b0996493207a5 100644 (file)
Binary files a/wp-includes/js/plupload/plupload.silverlight.xap and b/wp-includes/js/plupload/plupload.silverlight.xap differ
index 34766fb651e2d58d3002099b728db1fbe70fa9fa..7028f6a8bdb5a0888ada2e88633265a041c51771 100644 (file)
@@ -135,7 +135,7 @@ window.wp = window.wp || {};
                        // 6. an unquoted value.
                        // 7. A numeric attribute in double quotes.
                        // 8. An unquoted numeric attribute.
-                       pattern = /(\w+)\s*=\s*"([^"]*)"(?:\s|$)|(\w+)\s*=\s*\'([^\']*)\'(?:\s|$)|(\w+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/g;
+                       pattern = /([\w-]+)\s*=\s*"([^"]*)"(?:\s|$)|([\w-]+)\s*=\s*'([^']*)'(?:\s|$)|([\w-]+)\s*=\s*([^\s'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/g;
 
                        // Map zero-width spaces to actual spaces.
                        text = text.replace( /[\u00a0\u200b]/g, ' ' );
index b3a8f5212d73eebc0737b61d3d3e0adee0c432ab..8544d1417c9802c4399dc146572a2656e3fab7cd 100644 (file)
@@ -1 +1 @@
-window.wp=window.wp||{},function(){wp.shortcode={next:function(a,b,c){var d,e,f=wp.shortcode.regexp(a);return f.lastIndex=c||0,(d=f.exec(b))?"["===d[1]&&"]"===d[7]?wp.shortcode.next(a,b,f.lastIndex):(e={index:d.index,content:d[0],shortcode:wp.shortcode.fromMatch(d)},d[1]&&(e.content=e.content.slice(1),e.index++),d[7]&&(e.content=e.content.slice(0,-1)),e):void 0},replace:function(a,b,c){return b.replace(wp.shortcode.regexp(a),function(a,b,d,e,f,g,h,i){if("["===b&&"]"===i)return a;var j=c(wp.shortcode.fromMatch(arguments));return j?b+j+i:a})},string:function(a){return new wp.shortcode(a).string()},regexp:_.memoize(function(a){return new RegExp("\\[(\\[?)("+a+")(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)","g")}),attrs:_.memoize(function(a){var b,c,d={},e=[];for(b=/(\w+)\s*=\s*"([^"]*)"(?:\s|$)|(\w+)\s*=\s*\'([^\']*)\'(?:\s|$)|(\w+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/g,a=a.replace(/[\u00a0\u200b]/g," ");c=b.exec(a);)c[1]?d[c[1].toLowerCase()]=c[2]:c[3]?d[c[3].toLowerCase()]=c[4]:c[5]?d[c[5].toLowerCase()]=c[6]:c[7]?e.push(c[7]):c[8]&&e.push(c[8]);return{named:d,numeric:e}}),fromMatch:function(a){var b;return b=a[4]?"self-closing":a[6]?"closed":"single",new wp.shortcode({tag:a[2],attrs:a[3],type:b,content:a[5]})}},wp.shortcode=_.extend(function(a){_.extend(this,_.pick(a||{},"tag","attrs","type","content"));var b=this.attrs;this.attrs={named:{},numeric:[]},b&&(_.isString(b)?this.attrs=wp.shortcode.attrs(b):_.isEqual(_.keys(b),["named","numeric"])?this.attrs=b:_.each(a.attrs,function(a,b){this.set(b,a)},this))},wp.shortcode),_.extend(wp.shortcode.prototype,{get:function(a){return this.attrs[_.isNumber(a)?"numeric":"named"][a]},set:function(a,b){return this.attrs[_.isNumber(a)?"numeric":"named"][a]=b,this},string:function(){var a="["+this.tag;return _.each(this.attrs.numeric,function(b){a+=/\s/.test(b)?' "'+b+'"':" "+b}),_.each(this.attrs.named,function(b,c){a+=" "+c+'="'+b+'"'}),"single"===this.type?a+"]":"self-closing"===this.type?a+" /]":(a+="]",this.content&&(a+=this.content),a+"[/"+this.tag+"]")}})}(),function(){wp.html=_.extend(wp.html||{},{attrs:function(a){var b,c;return"/"===a[a.length-1]&&(a=a.slice(0,-1)),b=wp.shortcode.attrs(a),c=b.named,_.each(b.numeric,function(a){/\s/.test(a)||(c[a]="")}),c},string:function(a){var b="<"+a.tag,c=a.content||"";return _.each(a.attrs,function(a,c){b+=" "+c,""!==a&&(_.isBoolean(a)&&(a=a?"true":"false"),b+='="'+a+'"')}),a.single?b+" />":(b+=">",b+=_.isObject(c)?wp.html.string(c):c,b+"</"+a.tag+">")}})}();
\ No newline at end of file
+window.wp=window.wp||{},function(){wp.shortcode={next:function(a,b,c){var d,e,f=wp.shortcode.regexp(a);return f.lastIndex=c||0,(d=f.exec(b))?"["===d[1]&&"]"===d[7]?wp.shortcode.next(a,b,f.lastIndex):(e={index:d.index,content:d[0],shortcode:wp.shortcode.fromMatch(d)},d[1]&&(e.content=e.content.slice(1),e.index++),d[7]&&(e.content=e.content.slice(0,-1)),e):void 0},replace:function(a,b,c){return b.replace(wp.shortcode.regexp(a),function(a,b,d,e,f,g,h,i){if("["===b&&"]"===i)return a;var j=c(wp.shortcode.fromMatch(arguments));return j?b+j+i:a})},string:function(a){return new wp.shortcode(a).string()},regexp:_.memoize(function(a){return new RegExp("\\[(\\[?)("+a+")(?![\\w-])([^\\]\\/]*(?:\\/(?!\\])[^\\]\\/]*)*?)(?:(\\/)\\]|\\](?:([^\\[]*(?:\\[(?!\\/\\2\\])[^\\[]*)*)(\\[\\/\\2\\]))?)(\\]?)","g")}),attrs:_.memoize(function(a){var b,c,d={},e=[];for(b=/([\w-]+)\s*=\s*"([^"]*)"(?:\s|$)|([\w-]+)\s*=\s*'([^']*)'(?:\s|$)|([\w-]+)\s*=\s*([^\s'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/g,a=a.replace(/[\u00a0\u200b]/g," ");c=b.exec(a);)c[1]?d[c[1].toLowerCase()]=c[2]:c[3]?d[c[3].toLowerCase()]=c[4]:c[5]?d[c[5].toLowerCase()]=c[6]:c[7]?e.push(c[7]):c[8]&&e.push(c[8]);return{named:d,numeric:e}}),fromMatch:function(a){var b;return b=a[4]?"self-closing":a[6]?"closed":"single",new wp.shortcode({tag:a[2],attrs:a[3],type:b,content:a[5]})}},wp.shortcode=_.extend(function(a){_.extend(this,_.pick(a||{},"tag","attrs","type","content"));var b=this.attrs;this.attrs={named:{},numeric:[]},b&&(_.isString(b)?this.attrs=wp.shortcode.attrs(b):_.isEqual(_.keys(b),["named","numeric"])?this.attrs=b:_.each(a.attrs,function(a,b){this.set(b,a)},this))},wp.shortcode),_.extend(wp.shortcode.prototype,{get:function(a){return this.attrs[_.isNumber(a)?"numeric":"named"][a]},set:function(a,b){return this.attrs[_.isNumber(a)?"numeric":"named"][a]=b,this},string:function(){var a="["+this.tag;return _.each(this.attrs.numeric,function(b){a+=/\s/.test(b)?' "'+b+'"':" "+b}),_.each(this.attrs.named,function(b,c){a+=" "+c+'="'+b+'"'}),"single"===this.type?a+"]":"self-closing"===this.type?a+" /]":(a+="]",this.content&&(a+=this.content),a+"[/"+this.tag+"]")}})}(),function(){wp.html=_.extend(wp.html||{},{attrs:function(a){var b,c;return"/"===a[a.length-1]&&(a=a.slice(0,-1)),b=wp.shortcode.attrs(a),c=b.named,_.each(b.numeric,function(a){/\s/.test(a)||(c[a]="")}),c},string:function(a){var b="<"+a.tag,c=a.content||"";return _.each(a.attrs,function(a,c){b+=" "+c,""!==a&&(_.isBoolean(a)&&(a=a?"true":"false"),b+='="'+a+'"')}),a.single?b+" />":(b+=">",b+=_.isObject(c)?wp.html.string(c):c,b+"</"+a.tag+">")}})}();
\ No newline at end of file
index 0549c795d129c990ac36f471aeb22954faadcbc6..11673a55627be42cb9a679bc0eaca7fc339bc3fd 100644 (file)
@@ -12,7 +12,7 @@
 
 #TB_window {
        position: fixed;
-       background: #fff;
+       background-color: #fff;
        z-index: 100050; /* Above DFW. */
        visibility: hidden;
        text-align: left;
@@ -55,7 +55,7 @@
        float: left;
        font-weight: 600;
        line-height: 29px;
-       overflow: hidden; 
+       overflow: hidden;
        padding: 0 29px 0 10px;
        text-overflow: ellipsis;
        white-space: nowrap;
 }
 
 .tb-close-icon:before {
-       content: '\f158';
-       font: normal 20px/29px 'dashicons';
+       content: "\f158";
+       font: normal 20px/29px dashicons;
        speak: none;
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
index 60a9eb77a58a24243dbc86d0ff26d1cbf5aff1a7..581838496be11cca1b41f94359117b3ca6e5034a 100644 (file)
@@ -18,9 +18,16 @@ jQuery(document).ready(function(){
        imgLoader.src = tb_pathToImage;
 });
 
-//add thickbox to href & area elements that have a class of .thickbox
+/*
+ * Add thickbox to href & area elements that have a class of .thickbox.
+ * Remove the loading indicator when content in an iframe has loaded.
+ */
 function tb_init(domChunk){
-       jQuery('body').on('click', domChunk, tb_click);
+       jQuery( 'body' )
+               .on( 'click', domChunk, tb_click )
+               .on( 'thickbox:iframe:loaded', function() {
+                       jQuery( '#TB_window' ).removeClass( 'thickbox-loading' );
+               });
 }
 
 function tb_click(){
@@ -39,12 +46,12 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic
                        jQuery("body","html").css({height: "100%", width: "100%"});
                        jQuery("html").css("overflow","hidden");
                        if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
-                               jQuery("body").append("<iframe id='TB_HideSelect'>"+thickboxL10n.noiframes+"</iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
+                               jQuery("body").append("<iframe id='TB_HideSelect'>"+thickboxL10n.noiframes+"</iframe><div id='TB_overlay'></div><div id='TB_window' class='thickbox-loading'></div>");
                                jQuery("#TB_overlay").click(tb_remove);
                        }
                }else{//all others
                        if(document.getElementById("TB_overlay") === null){
-                               jQuery("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
+                               jQuery("body").append("<div id='TB_overlay'></div><div id='TB_window' class='thickbox-loading'></div>");
                                jQuery("#TB_overlay").click(tb_remove);
                                jQuery( 'body' ).addClass( 'modal-open' );
                        }
@@ -195,10 +202,10 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic
                                        urlNoQuery = url.split('TB_');
                                        jQuery("#TB_iframeContent").remove();
                                        if(params['modal'] != "true"){//iframe no modal
-                                               jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'><span class='screen-reader-text'>"+thickboxL10n.close+"</span><div class='tb-close-icon'></div></a></div></div><iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' >"+thickboxL10n.noiframes+"</iframe>");
+                                               jQuery("#TB_window").append("<div id='TB_title'><div id='TB_ajaxWindowTitle'>"+caption+"</div><div id='TB_closeAjaxWindow'><a href='#' id='TB_closeWindowButton'><span class='screen-reader-text'>"+thickboxL10n.close+"</span><div class='tb-close-icon'></div></a></div></div><iframe frameborder='0' hspace='0' allowTransparency='true' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;' >"+thickboxL10n.noiframes+"</iframe>");
                                        }else{//iframe modal
                                        jQuery("#TB_overlay").unbind();
-                                               jQuery("#TB_window").append("<iframe frameborder='0' hspace='0' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'>"+thickboxL10n.noiframes+"</iframe>");
+                                               jQuery("#TB_window").append("<iframe frameborder='0' hspace='0' allowTransparency='true' src='"+urlNoQuery[0]+"' id='TB_iframeContent' name='TB_iframeContent"+Math.round(Math.random()*1000)+"' onload='tb_showIframe()' style='width:"+(ajaxContentW + 29)+"px;height:"+(ajaxContentH + 17)+"px;'>"+thickboxL10n.noiframes+"</iframe>");
                                        }
                        }else{// not an iframe, ajax
                                        if(jQuery("#TB_window").css("visibility") != "visible"){
@@ -260,7 +267,7 @@ function tb_show(caption, url, imageGroup) {//function called when the user clic
 //helper functions below
 function tb_showIframe(){
        jQuery("#TB_load").remove();
-       jQuery("#TB_window").css({'visibility':'visible'});
+       jQuery("#TB_window").css({'visibility':'visible'}).trigger( 'thickbox:iframe:loaded' );
 }
 
 function tb_remove() {
index f7d5a2bf7178947a4011784dcb5f3a0239e5d39a..e31e7379168902c7d14f8d444bc405e2b2dec924 100644 (file)
@@ -218,6 +218,7 @@ tinymce.PluginManager.add('image', function(editor) {
                                        dom.setAttrib(imgElm, 'id', null);
                                } else {
                                        dom.setAttribs(imgElm, data);
+                                       editor.editorUpload.uploadImagesAuto();
                                }
 
                                waitLoad(imgElm);
index b49a19a2d07c9461d542d20778f76f903db223a1..2da62f0dbaa2c65ff6f13ed75891194f2f33893a 100644 (file)
@@ -1 +1 @@
-tinymce.PluginManager.add("image",function(a){function b(a,b){function c(a,c){d.parentNode&&d.parentNode.removeChild(d),b({width:a,height:c})}var d=document.createElement("img");d.onload=function(){c(Math.max(d.width,d.clientWidth),Math.max(d.height,d.clientHeight))},d.onerror=function(){c()};var e=d.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left=0,e.width=e.height="auto",document.body.appendChild(d),d.src=a}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){return function(){var c=a.settings.image_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function e(d){function e(){var a,b,c,d;a=l.find("#width")[0],b=l.find("#height")[0],a&&b&&(c=a.value(),d=b.value(),l.find("#constrain")[0].checked()&&m&&n&&c&&d&&(m!=c?(d=Math.round(c/m*d),isNaN(d)||b.value(d)):(c=Math.round(d/n*c),isNaN(c)||a.value(c))),m=c,n=d)}function f(){function b(b){function c(){b.onload=b.onerror=null,a.selection&&(a.selection.select(b),a.nodeChanged())}b.onload=function(){q.width||q.height||!t||(r.setAttribs(b,{width:b.clientWidth,height:b.clientHeight}),a.fire("wpNewImageRefresh",{node:b})),c()},b.onerror=c}j(),e(),q=tinymce.extend(q,l.toJSON());var c=q.caption;q.alt||(q.alt=""),q.title||(q.title=""),""===q.width&&(q.width=null),""===q.height&&(q.height=null),q.style||(q.style=null),q={src:q.src,alt:q.alt,title:q.title,width:q.width,height:q.height,style:q.style,"class":q["class"]},a.undoManager.transact(function(){var d={node:s,data:q,caption:c};return a.fire("wpImageFormSubmit",{imgData:d}),d.cancel?void b(d.node):q.src?(""===q.title&&(q.title=null),s?r.setAttribs(s,q):(q.id="__mcenew",a.focus(),a.selection.setContent(r.createHTML("img",q)),s=r.get("__mcenew"),r.setAttrib(s,"id",null)),void b(s)):void(s&&(r.remove(s),a.focus(),a.nodeChanged()))})}function g(a){return a&&(a=a.replace(/px$/,"")),a}function h(c){var d,e,f,g=c.meta||{};o&&o.value(a.convertURL(this.value(),"src")),tinymce.each(g,function(a,b){l.find("#"+b).value(a)}),g.width||g.height||(d=a.convertURL(this.value(),"src"),e=a.settings.image_prepend_url,f=new RegExp("^(?:[a-z]+:)?//","i"),e&&!f.test(d)&&d.substring(0,e.length)!==e&&(d=e+d),this.value(d),b(a.documentBaseURI.toAbsolute(this.value()),function(a){a.width&&a.height&&t&&(m=a.width,n=a.height,l.find("#width").value(m),l.find("#height").value(n))}))}function i(a){if(a.margin){var b=a.margin.split(" ");switch(b.length){case 1:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[0],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[0];break;case 2:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[1];break;case 3:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[1];break;case 4:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[3]}delete a.margin}return a}function j(){function b(a){return a.length>0&&/^[0-9]+$/.test(a)&&(a+="px"),a}if(a.settings.image_advtab){var c=l.toJSON(),d=r.parseStyle(c.style);d=i(d),c.vspace&&(d["margin-top"]=d["margin-bottom"]=b(c.vspace)),c.hspace&&(d["margin-left"]=d["margin-right"]=b(c.hspace)),c.border&&(d["border-width"]=b(c.border)),l.find("#style").value(r.serializeStyle(r.parseStyle(r.serializeStyle(d))))}}function k(){if(a.settings.image_advtab){var b=l.toJSON(),c=r.parseStyle(b.style);l.find("#vspace").value(""),l.find("#hspace").value(""),c=i(c),(c["margin-top"]&&c["margin-bottom"]||c["margin-right"]&&c["margin-left"])&&(l.find("#vspace").value(c["margin-top"]===c["margin-bottom"]?g(c["margin-top"]):""),l.find("#hspace").value(c["margin-right"]===c["margin-left"]?g(c["margin-right"]):"")),c["border-width"]&&l.find("#border").value(g(c["border-width"])),l.find("#style").value(r.serializeStyle(r.parseStyle(r.serializeStyle(c))))}}var l,m,n,o,p,q={},r=a.dom,s=a.selection.getNode(),t=a.settings.image_dimensions!==!1;m=r.getAttrib(s,"width"),n=r.getAttrib(s,"height"),"IMG"!=s.nodeName||s.getAttribute("data-mce-object")||s.getAttribute("data-mce-placeholder")?s=null:(q={src:r.getAttrib(s,"src"),alt:r.getAttrib(s,"alt"),title:r.getAttrib(s,"title"),"class":r.getAttrib(s,"class"),width:m,height:n},a.fire("wpLoadImageData",{imgData:{data:q,node:s}})),d&&(o={type:"listbox",label:"Image list",values:c(d,function(b){b.value=a.convertURL(b.value||b.url,"src")},[{text:"None",value:""}]),value:q.src&&a.convertURL(q.src,"src"),onselect:function(a){var b=l.find("#alt");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),l.find("#src").value(a.control.value()).fire("change")},onPostRender:function(){o=this}}),a.settings.image_class_list&&(p={name:"class",type:"listbox",label:"Class",values:c(a.settings.image_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"img",classes:[b.value]})})})});var u=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:h},o];a.settings.image_description!==!1&&u.push({name:"alt",type:"textbox",label:"Image description"}),a.settings.image_title&&u.push({name:"title",type:"textbox",label:"Image Title"}),t&&u.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),u.push(p),a.fire("wpLoadImageForm",{data:u}),a.settings.image_advtab?(s&&(s.style.marginLeft&&s.style.marginRight&&s.style.marginLeft===s.style.marginRight&&(q.hspace=g(s.style.marginLeft)),s.style.marginTop&&s.style.marginBottom&&s.style.marginTop===s.style.marginBottom&&(q.vspace=g(s.style.marginTop)),s.style.borderWidth&&(q.border=g(s.style.borderWidth)),q.style=a.dom.serializeStyle(a.dom.parseStyle(a.dom.getAttrib(s,"style")))),l=a.windowManager.open({title:"Insert/edit image",data:q,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:k},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:j},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:f})):l=a.windowManager.open({title:"Insert/edit image",data:q,body:u,onSubmit:f})}a.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:d(e),stateSelector:"img:not([data-mce-object],[data-mce-placeholder])"}),a.addMenuItem("image",{icon:"image",text:"Insert/edit image",onclick:d(e),context:"insert",prependToContext:!0}),a.addCommand("mceImage",d(e))});
\ No newline at end of file
+tinymce.PluginManager.add("image",function(a){function b(a,b){function c(a,c){d.parentNode&&d.parentNode.removeChild(d),b({width:a,height:c})}var d=document.createElement("img");d.onload=function(){c(Math.max(d.width,d.clientWidth),Math.max(d.height,d.clientHeight))},d.onerror=function(){c()};var e=d.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left=0,e.width=e.height="auto",document.body.appendChild(d),d.src=a}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){return function(){var c=a.settings.image_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function e(d){function e(){var a,b,c,d;a=l.find("#width")[0],b=l.find("#height")[0],a&&b&&(c=a.value(),d=b.value(),l.find("#constrain")[0].checked()&&m&&n&&c&&d&&(m!=c?(d=Math.round(c/m*d),isNaN(d)||b.value(d)):(c=Math.round(d/n*c),isNaN(c)||a.value(c))),m=c,n=d)}function f(){function b(b){function c(){b.onload=b.onerror=null,a.selection&&(a.selection.select(b),a.nodeChanged())}b.onload=function(){q.width||q.height||!t||(r.setAttribs(b,{width:b.clientWidth,height:b.clientHeight}),a.fire("wpNewImageRefresh",{node:b})),c()},b.onerror=c}j(),e(),q=tinymce.extend(q,l.toJSON());var c=q.caption;q.alt||(q.alt=""),q.title||(q.title=""),""===q.width&&(q.width=null),""===q.height&&(q.height=null),q.style||(q.style=null),q={src:q.src,alt:q.alt,title:q.title,width:q.width,height:q.height,style:q.style,"class":q["class"]},a.undoManager.transact(function(){var d={node:s,data:q,caption:c};return a.fire("wpImageFormSubmit",{imgData:d}),d.cancel?void b(d.node):q.src?(""===q.title&&(q.title=null),s?(r.setAttribs(s,q),a.editorUpload.uploadImagesAuto()):(q.id="__mcenew",a.focus(),a.selection.setContent(r.createHTML("img",q)),s=r.get("__mcenew"),r.setAttrib(s,"id",null)),void b(s)):void(s&&(r.remove(s),a.focus(),a.nodeChanged()))})}function g(a){return a&&(a=a.replace(/px$/,"")),a}function h(c){var d,e,f,g=c.meta||{};o&&o.value(a.convertURL(this.value(),"src")),tinymce.each(g,function(a,b){l.find("#"+b).value(a)}),g.width||g.height||(d=a.convertURL(this.value(),"src"),e=a.settings.image_prepend_url,f=new RegExp("^(?:[a-z]+:)?//","i"),e&&!f.test(d)&&d.substring(0,e.length)!==e&&(d=e+d),this.value(d),b(a.documentBaseURI.toAbsolute(this.value()),function(a){a.width&&a.height&&t&&(m=a.width,n=a.height,l.find("#width").value(m),l.find("#height").value(n))}))}function i(a){if(a.margin){var b=a.margin.split(" ");switch(b.length){case 1:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[0],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[0];break;case 2:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[1];break;case 3:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[1];break;case 4:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[3]}delete a.margin}return a}function j(){function b(a){return a.length>0&&/^[0-9]+$/.test(a)&&(a+="px"),a}if(a.settings.image_advtab){var c=l.toJSON(),d=r.parseStyle(c.style);d=i(d),c.vspace&&(d["margin-top"]=d["margin-bottom"]=b(c.vspace)),c.hspace&&(d["margin-left"]=d["margin-right"]=b(c.hspace)),c.border&&(d["border-width"]=b(c.border)),l.find("#style").value(r.serializeStyle(r.parseStyle(r.serializeStyle(d))))}}function k(){if(a.settings.image_advtab){var b=l.toJSON(),c=r.parseStyle(b.style);l.find("#vspace").value(""),l.find("#hspace").value(""),c=i(c),(c["margin-top"]&&c["margin-bottom"]||c["margin-right"]&&c["margin-left"])&&(c["margin-top"]===c["margin-bottom"]?l.find("#vspace").value(g(c["margin-top"])):l.find("#vspace").value(""),c["margin-right"]===c["margin-left"]?l.find("#hspace").value(g(c["margin-right"])):l.find("#hspace").value("")),c["border-width"]&&l.find("#border").value(g(c["border-width"])),l.find("#style").value(r.serializeStyle(r.parseStyle(r.serializeStyle(c))))}}var l,m,n,o,p,q={},r=a.dom,s=a.selection.getNode(),t=a.settings.image_dimensions!==!1;m=r.getAttrib(s,"width"),n=r.getAttrib(s,"height"),"IMG"!=s.nodeName||s.getAttribute("data-mce-object")||s.getAttribute("data-mce-placeholder")?s=null:(q={src:r.getAttrib(s,"src"),alt:r.getAttrib(s,"alt"),title:r.getAttrib(s,"title"),"class":r.getAttrib(s,"class"),width:m,height:n},a.fire("wpLoadImageData",{imgData:{data:q,node:s}})),d&&(o={type:"listbox",label:"Image list",values:c(d,function(b){b.value=a.convertURL(b.value||b.url,"src")},[{text:"None",value:""}]),value:q.src&&a.convertURL(q.src,"src"),onselect:function(a){var b=l.find("#alt");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),l.find("#src").value(a.control.value()).fire("change")},onPostRender:function(){o=this}}),a.settings.image_class_list&&(p={name:"class",type:"listbox",label:"Class",values:c(a.settings.image_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"img",classes:[b.value]})})})});var u=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:h},o];a.settings.image_description!==!1&&u.push({name:"alt",type:"textbox",label:"Image description"}),a.settings.image_title&&u.push({name:"title",type:"textbox",label:"Image Title"}),t&&u.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),u.push(p),a.fire("wpLoadImageForm",{data:u}),a.settings.image_advtab?(s&&(s.style.marginLeft&&s.style.marginRight&&s.style.marginLeft===s.style.marginRight&&(q.hspace=g(s.style.marginLeft)),s.style.marginTop&&s.style.marginBottom&&s.style.marginTop===s.style.marginBottom&&(q.vspace=g(s.style.marginTop)),s.style.borderWidth&&(q.border=g(s.style.borderWidth)),q.style=a.dom.serializeStyle(a.dom.parseStyle(a.dom.getAttrib(s,"style")))),l=a.windowManager.open({title:"Insert/edit image",data:q,bodyType:"tabpanel",body:[{title:"General",type:"form",items:u},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:k},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:j},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:f})):l=a.windowManager.open({title:"Insert/edit image",data:q,body:u,onSubmit:f})}a.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:d(e),stateSelector:"img:not([data-mce-object],[data-mce-placeholder])"}),a.addMenuItem("image",{icon:"image",text:"Insert/edit image",onclick:d(e),context:"insert",prependToContext:!0}),a.addCommand("mceImage",d(e))});
\ No newline at end of file
index e476abcdc2fcb066e868176d1ae75d9db3917c37..4bb987b50bc48b39573bef5ad47c56fbc75da804 100644 (file)
@@ -30,9 +30,23 @@ tinymce.PluginManager.add('lists', function(editor) {
                return node && !!editor.schema.getTextBlockElements()[node.nodeName];
        }
 
+       function isEditorBody(elm) {
+               return elm === editor.getBody();
+       }
+
        editor.on('init', function() {
                var dom = editor.dom, selection = editor.selection;
 
+               function isEmpty(elm, keepBookmarks) {
+                       var empty = dom.isEmpty(elm);
+
+                       if (keepBookmarks && dom.select('span[data-mce-type=bookmark]').length > 0) {
+                               return false;
+                       }
+
+                       return empty;
+               }
+
                /**
                 * Returns a range bookmark. This will convert indexed bookmarks into temporary span elements with
                 * index 0 so that they can be restored properly after the DOM has been modified. Text bookmarks will not have spans
@@ -237,13 +251,13 @@ tinymce.PluginManager.add('lists', function(editor) {
 
                        dom.insertAfter(newBlock, ul);
 
-                       if (dom.isEmpty(li.parentNode)) {
+                       if (isEmpty(li.parentNode)) {
                                removeAndKeepBookmarks(li.parentNode);
                        }
 
                        dom.remove(li);
 
-                       if (dom.isEmpty(ul)) {
+                       if (isEmpty(ul)) {
                                dom.remove(ul);
                        }
                }
@@ -283,7 +297,7 @@ tinymce.PluginManager.add('lists', function(editor) {
                                        if (sibling && sibling.nodeName == 'LI') {
                                                sibling.appendChild(ul);
 
-                                               if (dom.isEmpty(parentNode)) {
+                                               if (isEmpty(parentNode)) {
                                                        dom.remove(parentNode);
                                                }
                                        }
@@ -303,11 +317,15 @@ tinymce.PluginManager.add('lists', function(editor) {
                        var ul = li.parentNode, ulParent = ul.parentNode, newBlock;
 
                        function removeEmptyLi(li) {
-                               if (dom.isEmpty(li)) {
+                               if (isEmpty(li)) {
                                        dom.remove(li);
                                }
                        }
 
+                       if (isEditorBody(ul)) {
+                               return true;
+                       }
+
                        if (li.nodeName == 'DD') {
                                dom.rename(li, 'DT');
                                return true;
@@ -592,7 +610,11 @@ tinymce.PluginManager.add('lists', function(editor) {
                        tinymce.each(getSelectedListItems(), function(li) {
                                var node, rootList;
 
-                               if (dom.isEmpty(li)) {
+                               if (isEditorBody(li.parentNode)) {
+                                       return;
+                               }
+
+                               if (isEmpty(li)) {
                                        outdent(li);
                                        return;
                                }
@@ -612,6 +634,10 @@ tinymce.PluginManager.add('lists', function(editor) {
                function toggleList(listName) {
                        var parentList = dom.getParent(selection.getStart(), 'OL,UL,DL');
 
+                       if (isEditorBody(parentList)) {
+                               return;
+                       }
+
                        if (parentList) {
                                if (parentList.nodeName == listName) {
                                        removeList(listName);
@@ -672,11 +698,11 @@ tinymce.PluginManager.add('lists', function(editor) {
                                        dom.remove(node);
                                }
 
-                               if (dom.isEmpty(toElm)) {
+                               if (isEmpty(toElm, true)) {
                                        dom.$(toElm).empty();
                                }
 
-                               if (!dom.isEmpty(fromElm)) {
+                               if (!isEmpty(fromElm, true)) {
                                        while ((node = fromElm.firstChild)) {
                                                toElm.appendChild(node);
                                        }
@@ -688,17 +714,22 @@ tinymce.PluginManager.add('lists', function(editor) {
 
                                dom.remove(fromElm);
 
-                               if (dom.isEmpty(ul)) {
+                               if (isEmpty(ul) && !isEditorBody(ul)) {
                                        dom.remove(ul);
                                }
                        }
 
                        if (selection.isCollapsed()) {
-                               var li = dom.getParent(selection.getStart(), 'LI');
+                               var li = dom.getParent(selection.getStart(), 'LI'), ul, rng, otherLi;
 
                                if (li) {
-                                       var rng = selection.getRng(true);
-                                       var otherLi = dom.getParent(findNextCaretContainer(rng, isForward), 'LI');
+                                       ul = li.parentNode;
+                                       if (isEditorBody(ul) && dom.isEmpty(ul)) {
+                                               return true;
+                                       }
+
+                                       rng = selection.getRng(true);
+                                       otherLi = dom.getParent(findNextCaretContainer(rng, isForward), 'LI');
 
                                        if (otherLi && otherLi != li) {
                                                var bookmark = createBookmark(rng);
@@ -713,7 +744,7 @@ tinymce.PluginManager.add('lists', function(editor) {
 
                                                return true;
                                        } else if (!otherLi) {
-                                               if (!isForward && removeList(li.parentNode.nodeName)) {
+                                               if (!isForward && removeList(ul.nodeName)) {
                                                        return true;
                                                }
                                        }
index 3d165ac4578cd676e2b7fd88c99ee2ae5203945b..4769ff8d8849a19f619ae7e559254b235afe1b8b 100644 (file)
@@ -1 +1 @@
-tinymce.PluginManager.add("lists",function(a){function b(a){return a&&/^(OL|UL|DL)$/.test(a.nodeName)}function c(a){return a.parentNode.firstChild==a}function d(a){return a.parentNode.lastChild==a}function e(b){return b&&!!a.schema.getTextBlockElements()[b.nodeName]}var f=this;a.on("init",function(){function g(a){function b(b){var d,e,f;e=a[b?"startContainer":"endContainer"],f=a[b?"startOffset":"endOffset"],1==e.nodeType&&(d=v.create("span",{"data-mce-type":"bookmark"}),e.hasChildNodes()?(f=Math.min(f,e.childNodes.length-1),b?e.insertBefore(d,e.childNodes[f]):v.insertAfter(d,e.childNodes[f])):e.appendChild(d),e=d,f=0),c[b?"startContainer":"endContainer"]=e,c[b?"startOffset":"endOffset"]=f}var c={};return b(!0),a.collapsed||b(),c}function h(a){function b(b){function c(a){for(var b=a.parentNode.firstChild,c=0;b;){if(b==a)return c;(1!=b.nodeType||"bookmark"!=b.getAttribute("data-mce-type"))&&c++,b=b.nextSibling}return-1}var d,e,f;d=f=a[b?"startContainer":"endContainer"],e=a[b?"startOffset":"endOffset"],d&&(1==d.nodeType&&(e=c(d),d=d.parentNode,v.remove(f)),a[b?"startContainer":"endContainer"]=d,a[b?"startOffset":"endOffset"]=e)}b(!0),b();var c=v.createRng();c.setStart(a.startContainer,a.startOffset),a.endContainer&&c.setEnd(a.endContainer,a.endOffset),w.setRng(c)}function i(b,c){var d,e,f,g=v.createFragment(),h=a.schema.getBlockElements();if(a.settings.forced_root_block&&(c=c||a.settings.forced_root_block),c&&(e=v.create(c),e.tagName===a.settings.forced_root_block&&v.setAttribs(e,a.settings.forced_root_block_attrs),g.appendChild(e)),b)for(;d=b.firstChild;){var i=d.nodeName;f||"SPAN"==i&&"bookmark"==d.getAttribute("data-mce-type")||(f=!0),h[i]?(g.appendChild(d),e=null):c?(e||(e=v.create(c),g.appendChild(e)),e.appendChild(d)):g.appendChild(d)}return a.settings.forced_root_block?f||tinymce.Env.ie&&!(tinymce.Env.ie>10)||e.appendChild(v.create("br",{"data-mce-bogus":"1"})):g.appendChild(v.create("br")),g}function j(){return tinymce.grep(w.getSelectedBlocks(),function(a){return/^(LI|DT|DD)$/.test(a.nodeName)})}function k(a,b,c){function d(a){tinymce.each(g,function(c){a.parentNode.insertBefore(c,b.parentNode)}),v.remove(a)}var e,f,g,h;for(g=v.select('span[data-mce-type="bookmark"]',a),c=c||i(b),e=v.createRng(),e.setStartAfter(b),e.setEndAfter(a),f=e.extractContents(),h=f.firstChild;h;h=h.firstChild)if("LI"==h.nodeName&&v.isEmpty(h)){v.remove(h);break}v.isEmpty(f)||v.insertAfter(f,a),v.insertAfter(c,a),v.isEmpty(b.parentNode)&&d(b.parentNode),v.remove(b),v.isEmpty(a)&&v.remove(a)}function l(a){var c,d;if(c=a.nextSibling,c&&b(c)&&c.nodeName==a.nodeName){for(;d=c.firstChild;)a.appendChild(d);v.remove(c)}if(c=a.previousSibling,c&&b(c)&&c.nodeName==a.nodeName){for(;d=c.firstChild;)a.insertBefore(d,a.firstChild);v.remove(c)}}function m(a){tinymce.each(tinymce.grep(v.select("ol,ul",a)),function(a){var c,d=a.parentNode;"LI"==d.nodeName&&d.firstChild==a&&(c=d.previousSibling,c&&"LI"==c.nodeName&&(c.appendChild(a),v.isEmpty(d)&&v.remove(d))),b(d)&&(c=d.previousSibling,c&&"LI"==c.nodeName&&c.appendChild(a))})}function n(a){function e(a){v.isEmpty(a)&&v.remove(a)}var f,g=a.parentNode,h=g.parentNode;return"DD"==a.nodeName?(v.rename(a,"DT"),!0):c(a)&&d(a)?("LI"==h.nodeName?(v.insertAfter(a,h),e(h),v.remove(g)):b(h)?v.remove(g,!0):(h.insertBefore(i(a),g),v.remove(g)),!0):c(a)?("LI"==h.nodeName?(v.insertAfter(a,h),a.appendChild(g),e(h)):b(h)?h.insertBefore(a,g):(h.insertBefore(i(a),g),v.remove(a)),!0):d(a)?("LI"==h.nodeName?v.insertAfter(a,h):b(h)?v.insertAfter(a,g):(v.insertAfter(i(a),g),v.remove(a)),!0):("LI"==h.nodeName?(g=h,f=i(a,"LI")):f=b(h)?i(a,"LI"):i(a),k(g,a,f),m(g.parentNode),!0)}function o(a){function c(c,d){var e;if(b(c)){for(;e=a.lastChild.firstChild;)d.appendChild(e);v.remove(c)}}var d,e;return"DT"==a.nodeName?(v.rename(a,"DD"),!0):(d=a.previousSibling,d&&b(d)?(d.appendChild(a),!0):d&&"LI"==d.nodeName&&b(d.lastChild)?(d.lastChild.appendChild(a),c(a.lastChild,d.lastChild),!0):(d=a.nextSibling,d&&b(d)?(d.insertBefore(a,d.firstChild),!0):d&&"LI"==d.nodeName&&b(a.lastChild)?!1:(d=a.previousSibling,d&&"LI"==d.nodeName?(e=v.create(a.parentNode.nodeName),d.appendChild(e),e.appendChild(a),c(a.lastChild,e),!0):!1)))}function p(){var b=j();if(b.length){for(var c=g(w.getRng(!0)),d=0;d<b.length&&(o(b[d])||0!==d);d++);return h(c),a.nodeChanged(),!0}}function q(){var b=j();if(b.length){var c,d,e=g(w.getRng(!0)),f=a.getBody();for(c=b.length;c--;)for(var i=b[c].parentNode;i&&i!=f;){for(d=b.length;d--;)if(b[d]===i){b.splice(c,1);break}i=i.parentNode}for(c=0;c<b.length&&(n(b[c])||0!==c);c++);return h(e),a.nodeChanged(),!0}}function r(c){function d(){function b(a){var b,c;for(b=f[a?"startContainer":"endContainer"],c=f[a?"startOffset":"endOffset"],1==b.nodeType&&(b=b.childNodes[Math.min(c,b.childNodes.length-1)]||b);b.parentNode!=g;){if(e(b))return b;if(/^(TD|TH)$/.test(b.parentNode.nodeName))return b;b=b.parentNode}return b}for(var c,d=[],g=a.getBody(),h=b(!0),i=b(),j=[],k=h;k&&(j.push(k),k!=i);k=k.nextSibling);return tinymce.each(j,function(a){if(e(a))return d.push(a),void(c=null);if(v.isBlock(a)||"BR"==a.nodeName)return"BR"==a.nodeName&&v.remove(a),void(c=null);var b=a.nextSibling;return tinymce.dom.BookmarkManager.isBookmarkNode(a)&&(e(b)||!b&&a.parentNode==g)?void(c=null):(c||(c=v.create("p"),a.parentNode.insertBefore(c,a),d.push(c)),void c.appendChild(a))}),d}var f=w.getRng(!0),i=g(f),j="LI";c=c.toUpperCase(),"DL"==c&&(j="DT"),tinymce.each(d(),function(a){var d,e;e=a.previousSibling,e&&b(e)&&e.nodeName==c?(d=e,a=v.rename(a,j),e.appendChild(a)):(d=v.create(c),a.parentNode.insertBefore(d,a),d.appendChild(a),a=v.rename(a,j)),l(d)}),h(i)}function s(){var c=g(w.getRng(!0)),d=a.getBody();tinymce.each(j(),function(a){var c,e;if(v.isEmpty(a))return void n(a);for(c=a;c&&c!=d;c=c.parentNode)b(c)&&(e=c);k(e,a)}),h(c)}function t(a){var b=v.getParent(w.getStart(),"OL,UL,DL");if(b)if(b.nodeName==a)s(a);else{var c=g(w.getRng(!0));l(v.rename(b,a)),h(c)}else r(a)}function u(b){return function(){var c=v.getParent(a.selection.getStart(),"UL,OL,DL");return c&&c.nodeName==b}}var v=a.dom,w=a.selection;f.backspaceDelete=function(c){function d(b,c){var d,e,f=b.startContainer,g=b.startOffset;if(3==f.nodeType&&(c?g<f.data.length:g>0))return f;for(d=a.schema.getNonEmptyElements(),e=new tinymce.dom.TreeWalker(b.startContainer);f=e[c?"next":"prev"]();){if("LI"==f.nodeName&&!f.hasChildNodes())return f;if(d[f.nodeName])return f;if(3==f.nodeType&&f.data.length>0)return f}}function e(a,c){var d,e,f=a.parentNode;if(b(c.lastChild)&&(e=c.lastChild),d=c.lastChild,d&&"BR"==d.nodeName&&a.hasChildNodes()&&v.remove(d),v.isEmpty(c)&&v.$(c).empty(),!v.isEmpty(a))for(;d=a.firstChild;)c.appendChild(d);e&&c.appendChild(e),v.remove(a),v.isEmpty(f)&&v.remove(f)}if(w.isCollapsed()){var f=v.getParent(w.getStart(),"LI");if(f){var i=w.getRng(!0),j=v.getParent(d(i,c),"LI");if(j&&j!=f){var k=g(i);return c?e(j,f):e(f,j),h(k),!0}if(!j&&!c&&s(f.parentNode.nodeName))return!0}}},a.on("BeforeExecCommand",function(b){var c,d=b.command.toLowerCase();return"indent"==d?p()&&(c=!0):"outdent"==d&&q()&&(c=!0),c?(a.fire("ExecCommand",{command:b.command}),b.preventDefault(),!0):void 0}),a.addCommand("InsertUnorderedList",function(){t("UL")}),a.addCommand("InsertOrderedList",function(){t("OL")}),a.addCommand("InsertDefinitionList",function(){t("DL")}),a.addQueryStateHandler("InsertUnorderedList",u("UL")),a.addQueryStateHandler("InsertOrderedList",u("OL")),a.addQueryStateHandler("InsertDefinitionList",u("DL")),a.on("keydown",function(b){9!=b.keyCode||tinymce.util.VK.metaKeyPressed(b)||a.dom.getParent(a.selection.getStart(),"LI,DT,DD")&&(b.preventDefault(),b.shiftKey?q():p())})}),a.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(){var b=this;a.on("nodechange",function(){for(var d=a.selection.getSelectedBlocks(),e=!1,f=0,g=d.length;!e&&g>f;f++){var h=d[f].nodeName;e="LI"==h&&c(d[f])||"UL"==h||"OL"==h||"DD"==h}b.disabled(e)})}}),a.on("keydown",function(a){a.keyCode==tinymce.util.VK.BACKSPACE?f.backspaceDelete()&&a.preventDefault():a.keyCode==tinymce.util.VK.DELETE&&f.backspaceDelete(!0)&&a.preventDefault()})});
\ No newline at end of file
+tinymce.PluginManager.add("lists",function(a){function b(a){return a&&/^(OL|UL|DL)$/.test(a.nodeName)}function c(a){return a.parentNode.firstChild==a}function d(a){return a.parentNode.lastChild==a}function e(b){return b&&!!a.schema.getTextBlockElements()[b.nodeName]}function f(b){return b===a.getBody()}var g=this;a.on("init",function(){function h(a,b){var c=x.isEmpty(a);return b&&x.select("span[data-mce-type=bookmark]").length>0?!1:c}function i(a){function b(b){var d,e,f;e=a[b?"startContainer":"endContainer"],f=a[b?"startOffset":"endOffset"],1==e.nodeType&&(d=x.create("span",{"data-mce-type":"bookmark"}),e.hasChildNodes()?(f=Math.min(f,e.childNodes.length-1),b?e.insertBefore(d,e.childNodes[f]):x.insertAfter(d,e.childNodes[f])):e.appendChild(d),e=d,f=0),c[b?"startContainer":"endContainer"]=e,c[b?"startOffset":"endOffset"]=f}var c={};return b(!0),a.collapsed||b(),c}function j(a){function b(b){function c(a){for(var b=a.parentNode.firstChild,c=0;b;){if(b==a)return c;(1!=b.nodeType||"bookmark"!=b.getAttribute("data-mce-type"))&&c++,b=b.nextSibling}return-1}var d,e,f;d=f=a[b?"startContainer":"endContainer"],e=a[b?"startOffset":"endOffset"],d&&(1==d.nodeType&&(e=c(d),d=d.parentNode,x.remove(f)),a[b?"startContainer":"endContainer"]=d,a[b?"startOffset":"endOffset"]=e)}b(!0),b();var c=x.createRng();c.setStart(a.startContainer,a.startOffset),a.endContainer&&c.setEnd(a.endContainer,a.endOffset),y.setRng(c)}function k(b,c){var d,e,f,g=x.createFragment(),h=a.schema.getBlockElements();if(a.settings.forced_root_block&&(c=c||a.settings.forced_root_block),c&&(e=x.create(c),e.tagName===a.settings.forced_root_block&&x.setAttribs(e,a.settings.forced_root_block_attrs),g.appendChild(e)),b)for(;d=b.firstChild;){var i=d.nodeName;f||"SPAN"==i&&"bookmark"==d.getAttribute("data-mce-type")||(f=!0),h[i]?(g.appendChild(d),e=null):c?(e||(e=x.create(c),g.appendChild(e)),e.appendChild(d)):g.appendChild(d)}return a.settings.forced_root_block?f||tinymce.Env.ie&&!(tinymce.Env.ie>10)||e.appendChild(x.create("br",{"data-mce-bogus":"1"})):g.appendChild(x.create("br")),g}function l(){return tinymce.grep(y.getSelectedBlocks(),function(a){return/^(LI|DT|DD)$/.test(a.nodeName)})}function m(a,b,c){function d(a){tinymce.each(g,function(c){a.parentNode.insertBefore(c,b.parentNode)}),x.remove(a)}var e,f,g,i;for(g=x.select('span[data-mce-type="bookmark"]',a),c=c||k(b),e=x.createRng(),e.setStartAfter(b),e.setEndAfter(a),f=e.extractContents(),i=f.firstChild;i;i=i.firstChild)if("LI"==i.nodeName&&x.isEmpty(i)){x.remove(i);break}x.isEmpty(f)||x.insertAfter(f,a),x.insertAfter(c,a),h(b.parentNode)&&d(b.parentNode),x.remove(b),h(a)&&x.remove(a)}function n(a){var c,d;if(c=a.nextSibling,c&&b(c)&&c.nodeName==a.nodeName){for(;d=c.firstChild;)a.appendChild(d);x.remove(c)}if(c=a.previousSibling,c&&b(c)&&c.nodeName==a.nodeName){for(;d=c.firstChild;)a.insertBefore(d,a.firstChild);x.remove(c)}}function o(a){tinymce.each(tinymce.grep(x.select("ol,ul",a)),function(a){var c,d=a.parentNode;"LI"==d.nodeName&&d.firstChild==a&&(c=d.previousSibling,c&&"LI"==c.nodeName&&(c.appendChild(a),h(d)&&x.remove(d))),b(d)&&(c=d.previousSibling,c&&"LI"==c.nodeName&&c.appendChild(a))})}function p(a){function e(a){h(a)&&x.remove(a)}var g,i=a.parentNode,j=i.parentNode;return f(i)?!0:"DD"==a.nodeName?(x.rename(a,"DT"),!0):c(a)&&d(a)?("LI"==j.nodeName?(x.insertAfter(a,j),e(j),x.remove(i)):b(j)?x.remove(i,!0):(j.insertBefore(k(a),i),x.remove(i)),!0):c(a)?("LI"==j.nodeName?(x.insertAfter(a,j),a.appendChild(i),e(j)):b(j)?j.insertBefore(a,i):(j.insertBefore(k(a),i),x.remove(a)),!0):d(a)?("LI"==j.nodeName?x.insertAfter(a,j):b(j)?x.insertAfter(a,i):(x.insertAfter(k(a),i),x.remove(a)),!0):("LI"==j.nodeName?(i=j,g=k(a,"LI")):g=b(j)?k(a,"LI"):k(a),m(i,a,g),o(i.parentNode),!0)}function q(a){function c(c,d){var e;if(b(c)){for(;e=a.lastChild.firstChild;)d.appendChild(e);x.remove(c)}}var d,e;return"DT"==a.nodeName?(x.rename(a,"DD"),!0):(d=a.previousSibling,d&&b(d)?(d.appendChild(a),!0):d&&"LI"==d.nodeName&&b(d.lastChild)?(d.lastChild.appendChild(a),c(a.lastChild,d.lastChild),!0):(d=a.nextSibling,d&&b(d)?(d.insertBefore(a,d.firstChild),!0):d&&"LI"==d.nodeName&&b(a.lastChild)?!1:(d=a.previousSibling,d&&"LI"==d.nodeName?(e=x.create(a.parentNode.nodeName),d.appendChild(e),e.appendChild(a),c(a.lastChild,e),!0):!1)))}function r(){var b=l();if(b.length){for(var c=i(y.getRng(!0)),d=0;d<b.length&&(q(b[d])||0!==d);d++);return j(c),a.nodeChanged(),!0}}function s(){var b=l();if(b.length){var c,d,e=i(y.getRng(!0)),f=a.getBody();for(c=b.length;c--;)for(var g=b[c].parentNode;g&&g!=f;){for(d=b.length;d--;)if(b[d]===g){b.splice(c,1);break}g=g.parentNode}for(c=0;c<b.length&&(p(b[c])||0!==c);c++);return j(e),a.nodeChanged(),!0}}function t(c){function d(){function b(a){var b,c;for(b=f[a?"startContainer":"endContainer"],c=f[a?"startOffset":"endOffset"],1==b.nodeType&&(b=b.childNodes[Math.min(c,b.childNodes.length-1)]||b);b.parentNode!=g;){if(e(b))return b;if(/^(TD|TH)$/.test(b.parentNode.nodeName))return b;b=b.parentNode}return b}for(var c,d=[],g=a.getBody(),h=b(!0),i=b(),j=[],k=h;k&&(j.push(k),k!=i);k=k.nextSibling);return tinymce.each(j,function(a){if(e(a))return d.push(a),void(c=null);if(x.isBlock(a)||"BR"==a.nodeName)return"BR"==a.nodeName&&x.remove(a),void(c=null);var b=a.nextSibling;return tinymce.dom.BookmarkManager.isBookmarkNode(a)&&(e(b)||!b&&a.parentNode==g)?void(c=null):(c||(c=x.create("p"),a.parentNode.insertBefore(c,a),d.push(c)),void c.appendChild(a))}),d}var f=y.getRng(!0),g=i(f),h="LI";c=c.toUpperCase(),"DL"==c&&(h="DT"),tinymce.each(d(),function(a){var d,e;e=a.previousSibling,e&&b(e)&&e.nodeName==c?(d=e,a=x.rename(a,h),e.appendChild(a)):(d=x.create(c),a.parentNode.insertBefore(d,a),d.appendChild(a),a=x.rename(a,h)),n(d)}),j(g)}function u(){var c=i(y.getRng(!0)),d=a.getBody();tinymce.each(l(),function(a){var c,e;if(!f(a.parentNode)){if(h(a))return void p(a);for(c=a;c&&c!=d;c=c.parentNode)b(c)&&(e=c);m(e,a)}}),j(c)}function v(a){var b=x.getParent(y.getStart(),"OL,UL,DL");if(!f(b))if(b)if(b.nodeName==a)u(a);else{var c=i(y.getRng(!0));n(x.rename(b,a)),j(c)}else t(a)}function w(b){return function(){var c=x.getParent(a.selection.getStart(),"UL,OL,DL");return c&&c.nodeName==b}}var x=a.dom,y=a.selection;g.backspaceDelete=function(c){function d(b,c){var d,e,f=b.startContainer,g=b.startOffset;if(3==f.nodeType&&(c?g<f.data.length:g>0))return f;for(d=a.schema.getNonEmptyElements(),e=new tinymce.dom.TreeWalker(b.startContainer);f=e[c?"next":"prev"]();){if("LI"==f.nodeName&&!f.hasChildNodes())return f;if(d[f.nodeName])return f;if(3==f.nodeType&&f.data.length>0)return f}}function e(a,c){var d,e,g=a.parentNode;if(b(c.lastChild)&&(e=c.lastChild),d=c.lastChild,d&&"BR"==d.nodeName&&a.hasChildNodes()&&x.remove(d),h(c,!0)&&x.$(c).empty(),!h(a,!0))for(;d=a.firstChild;)c.appendChild(d);e&&c.appendChild(e),x.remove(a),h(g)&&!f(g)&&x.remove(g)}if(y.isCollapsed()){var g,k,l,m=x.getParent(y.getStart(),"LI");if(m){if(g=m.parentNode,f(g)&&x.isEmpty(g))return!0;if(k=y.getRng(!0),l=x.getParent(d(k,c),"LI"),l&&l!=m){var n=i(k);return c?e(l,m):e(m,l),j(n),!0}if(!l&&!c&&u(g.nodeName))return!0}}},a.on("BeforeExecCommand",function(b){var c,d=b.command.toLowerCase();return"indent"==d?r()&&(c=!0):"outdent"==d&&s()&&(c=!0),c?(a.fire("ExecCommand",{command:b.command}),b.preventDefault(),!0):void 0}),a.addCommand("InsertUnorderedList",function(){v("UL")}),a.addCommand("InsertOrderedList",function(){v("OL")}),a.addCommand("InsertDefinitionList",function(){v("DL")}),a.addQueryStateHandler("InsertUnorderedList",w("UL")),a.addQueryStateHandler("InsertOrderedList",w("OL")),a.addQueryStateHandler("InsertDefinitionList",w("DL")),a.on("keydown",function(b){9!=b.keyCode||tinymce.util.VK.metaKeyPressed(b)||a.dom.getParent(a.selection.getStart(),"LI,DT,DD")&&(b.preventDefault(),b.shiftKey?s():r())})}),a.addButton("indent",{icon:"indent",title:"Increase indent",cmd:"Indent",onPostRender:function(){var b=this;a.on("nodechange",function(){for(var d=a.selection.getSelectedBlocks(),e=!1,f=0,g=d.length;!e&&g>f;f++){var h=d[f].nodeName;e="LI"==h&&c(d[f])||"UL"==h||"OL"==h||"DD"==h}b.disabled(e)})}}),a.on("keydown",function(a){a.keyCode==tinymce.util.VK.BACKSPACE?g.backspaceDelete()&&a.preventDefault():a.keyCode==tinymce.util.VK.DELETE&&g.backspaceDelete(!0)&&a.preventDefault()})});
\ No newline at end of file
index a3532093928942d3c8988583672faf3bd26cfd19..d0baf7334cf2c4d9d11d3efa2fcf17bc9897c29b 100644 (file)
@@ -789,5 +789,7 @@ tinymce.PluginManager.add('media', function(editor, url) {
                prependToContext: true
        });
 
+       editor.addCommand('mceMedia', showDialog);
+
        this.showDialog = showDialog;
 });
index 4c333e9073a4d4917ad067205ddf55c04a14d864..1e06d5a4abdba381a764504642c1c63e49d9ce6a 100644 (file)
@@ -1 +1 @@
-tinymce.PluginManager.add("media",function(a,b){function c(a){return a=a.toLowerCase(),-1!=a.indexOf(".mp3")?"audio/mpeg":-1!=a.indexOf(".wav")?"audio/wav":-1!=a.indexOf(".mp4")?"video/mp4":-1!=a.indexOf(".webm")?"video/webm":-1!=a.indexOf(".ogg")?"video/ogg":-1!=a.indexOf(".swf")?"application/x-shockwave-flash":""}function d(b){var c=a.settings.media_scripts;if(c)for(var d=0;d<c.length;d++)if(-1!==b.indexOf(c[d].filter))return c[d]}function e(){function b(a){var b,c,f,g;b=d.find("#width")[0],c=d.find("#height")[0],f=b.value(),g=c.value(),d.find("#constrain")[0].checked()&&e&&j&&f&&g&&(a.control==b?(g=Math.round(f/e*g),isNaN(g)||c.value(g)):(f=Math.round(g/j*f),isNaN(f)||b.value(f))),e=f,j=g}function c(){k=h(this.value()),this.parent().parent().fromJSON(k)}var d,e,j,k,l=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onchange:function(a){tinymce.each(a.meta,function(a,b){d.find("#"+b).value(a)})}}];a.settings.media_alt_source!==!1&&l.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"}),a.settings.media_poster!==!1&&l.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),a.settings.media_dimensions!==!1&&l.push({type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:b,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:b,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),k=i(a.selection.getNode()),e=k.width,j=k.height;var n={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:f(),multiline:!0,label:"Source"};n[m]=c,d=a.windowManager.open({title:"Insert/edit video",data:k,bodyType:"tabpanel",body:[{title:"General",type:"form",onShowTab:function(){k=h(this.next().find("#embed").value()),this.fromJSON(k)},items:l},{title:"Embed",type:"container",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,onShowTab:function(){this.find("#embed").value(g(this.parent().toJSON()))},items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},n]}],onSubmit:function(){var b,c,d,e;for(b=a.dom.select("img[data-mce-object]"),a.insertContent(g(this.toJSON())),c=a.dom.select("img[data-mce-object]"),d=0;d<b.length;d++)for(e=c.length-1;e>=0;e--)b[d]==c[e]&&c.splice(e,1);a.selection.select(c[0]),a.nodeChanged()}})}function f(){var b=a.selection.getNode();return b.getAttribute("data-mce-object")?a.selection.getContent():void 0}function g(e){var f="";if(!e.source1&&(tinymce.extend(e,h(e.embed)),!e.source1))return"";if(e.source2||(e.source2=""),e.poster||(e.poster=""),e.source1=a.convertURL(e.source1,"source"),e.source2=a.convertURL(e.source2,"source"),e.source1mime=c(e.source1),e.source2mime=c(e.source2),e.poster=a.convertURL(e.poster,"poster"),e.flashPlayerUrl=a.convertURL(b+"/moxieplayer.swf","movie"),tinymce.each(l,function(a){var b,c,d;if(b=a.regex.exec(e.source1)){for(d=a.url,c=0;b[c];c++)d=d.replace("$"+c,function(){return b[c]});e.source1=d,e.type=a.type,e.allowFullscreen=a.allowFullscreen,e.width=e.width||a.w,e.height=e.height||a.h}}),e.embed)f=k(e.embed,e,!0);else{var g=d(e.source1);if(g&&(e.type="script",e.width=g.width,e.height=g.height),e.width=e.width||300,e.height=e.height||150,tinymce.each(e,function(b,c){e[c]=a.dom.encode(b)}),"iframe"==e.type){var i=e.allowFullscreen?' allowFullscreen="1"':"";f+='<iframe src="'+e.source1+'" width="'+e.width+'" height="'+e.height+'"'+i+"></iframe>"}else"application/x-shockwave-flash"==e.source1mime?(f+='<object data="'+e.source1+'" width="'+e.width+'" height="'+e.height+'" type="application/x-shockwave-flash">',e.poster&&(f+='<img src="'+e.poster+'" width="'+e.width+'" height="'+e.height+'" />'),f+="</object>"):-1!=e.source1mime.indexOf("audio")?a.settings.audio_template_callback?f=a.settings.audio_template_callback(e):f+='<audio controls="controls" src="'+e.source1+'">'+(e.source2?'\n<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</audio>":"script"==e.type?f+='<script src="'+e.source1+'"></script>':f=a.settings.video_template_callback?a.settings.video_template_callback(e):'<video width="'+e.width+'" height="'+e.height+'"'+(e.poster?' poster="'+e.poster+'"':"")+' controls="controls">\n<source src="'+e.source1+'"'+(e.source1mime?' type="'+e.source1mime+'"':"")+" />\n"+(e.source2?'<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</video>"}return f}function h(a){var b={};return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(a,c){if(b.source1||"param"!=a||(b.source1=c.map.movie),("iframe"==a||"object"==a||"embed"==a||"video"==a||"audio"==a)&&(b.type||(b.type=a),b=tinymce.extend(c.map,b)),"script"==a){var e=d(c.map.src);if(!e)return;b={type:"script",source1:c.map.src,width:e.width,height:e.height}}"source"==a&&(b.source1?b.source2||(b.source2=c.map.src):b.source1=c.map.src),"img"!=a||b.poster||(b.poster=c.map.src)}}).parse(a),b.source1=b.source1||b.src||b.data,b.source2=b.source2||"",b.poster=b.poster||"",b}function i(b){return b.getAttribute("data-mce-object")?h(a.serializer.serialize(b,{selection:!0})):{}}function j(b){if(a.settings.media_filter_html===!1)return b;var c,d=new tinymce.html.Writer;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!1,special:"script,noscript",comment:function(a){d.comment(a)},cdata:function(a){d.cdata(a)},text:function(a,b){d.text(a,b)},start:function(b,e,f){if(c=!0,"script"!=b&&"noscript"!=b){for(var g=0;g<e.length;g++){if(0===e[g].name.indexOf("on"))return;"style"==e[g].name&&(e[g].value=a.dom.serializeStyle(a.dom.parseStyle(e[g].value),b))}d.start(b,e,f),c=!1}},end:function(a){c||d.end(a)}},new tinymce.html.Schema({})).parse(b),d.getContent()}function k(a,b,c){function d(a,b){var c,d,e,f;for(c in b)if(e=""+b[c],a.map[c])for(d=a.length;d--;)f=a[d],f.name==c&&(e?(a.map[c]=e,f.value=e):(delete a.map[c],a.splice(d,1)));else e&&(a.push({name:c,value:e}),a.map[c]=e)}var e,f=new tinymce.html.Writer,g=0;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(a){f.comment(a)},cdata:function(a){f.cdata(a)},text:function(a,b){f.text(a,b)},start:function(a,h,i){switch(a){case"video":case"object":case"embed":case"img":case"iframe":d(h,{width:b.width,height:b.height})}if(c)switch(a){case"video":d(h,{poster:b.poster,src:""}),b.source2&&d(h,{src:""});break;case"iframe":d(h,{src:b.source1});break;case"source":if(g++,2>=g&&(d(h,{src:b["source"+g],type:b["source"+g+"mime"]}),!b["source"+g]))return;break;case"img":if(!b.poster)return;e=!0}f.start(a,h,i)},end:function(a){if("video"==a&&c)for(var h=1;2>=h;h++)if(b["source"+h]){var i=[];i.map={},h>g&&(d(i,{src:b["source"+h],type:b["source"+h+"mime"]}),f.start("source",i,!0))}if(b.poster&&"object"==a&&c&&!e){var j=[];j.map={},d(j,{src:b.poster,width:b.width,height:b.height}),f.start("img",j,!0)}f.end(a)}},new tinymce.html.Schema({})).parse(a),f.getContent()}var l=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$2",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowfullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0",allowfullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1}],m=tinymce.Env.ie&&tinymce.Env.ie<=8?"onChange":"onInput";a.on("ResolveName",function(a){var b;1==a.target.nodeType&&(b=a.target.getAttribute("data-mce-object"))&&(a.name=b)}),a.on("preInit",function(){var b=a.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(a){b[a]=new RegExp("</"+a+"[^>]*>","gi")});var c=a.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(a){c[a]={}}),a.parser.addNodeFilter("iframe,video,audio,object,embed,script",function(b,c){for(var e,f,g,h,i,j,k,l,m=b.length;m--;)if(f=b[m],f.parent&&("script"!=f.name||(l=d(f.attr("src"))))){for(g=new tinymce.html.Node("img",1),g.shortEnded=!0,l&&(l.width&&f.attr("width",l.width.toString()),l.height&&f.attr("height",l.height.toString())),j=f.attributes,e=j.length;e--;)h=j[e].name,i=j[e].value,"width"!==h&&"height"!==h&&"style"!==h&&(("data"==h||"src"==h)&&(i=a.convertURL(i,h)),g.attr("data-mce-p-"+h,i));k=f.firstChild&&f.firstChild.value,k&&(g.attr("data-mce-html",escape(k)),g.firstChild=null),g.attr({width:f.attr("width")||"300",height:f.attr("height")||("audio"==c?"30":"150"),style:f.attr("style"),src:tinymce.Env.transparentSrc,"data-mce-object":c,"class":"mce-object mce-object-"+c}),f.replace(g)}}),a.serializer.addAttributeFilter("data-mce-object",function(a,b){for(var c,d,e,f,g,h,i,k=a.length;k--;)if(c=a[k],c.parent){for(i=c.attr(b),d=new tinymce.html.Node(i,1),"audio"!=i&&"script"!=i&&d.attr({width:c.attr("width"),height:c.attr("height")}),d.attr({style:c.attr("style")}),f=c.attributes,e=f.length;e--;){var l=f[e].name;0===l.indexOf("data-mce-p-")&&d.attr(l.substr(11),f[e].value)}"script"==i&&d.attr("type","text/javascript"),g=c.attr("data-mce-html"),g&&(h=new tinymce.html.Node("#text",3),h.raw=!0,h.value=j(unescape(g)),d.append(h)),c.replace(d)}})}),a.on("ObjectSelected",function(a){var b=a.target.getAttribute("data-mce-object");("audio"==b||"script"==b)&&a.preventDefault()}),a.on("objectResized",function(a){var b,c=a.target;c.getAttribute("data-mce-object")&&(b=c.getAttribute("data-mce-html"),b&&(b=unescape(b),c.setAttribute("data-mce-html",escape(k(b,{width:a.width,height:a.height})))))}),a.addButton("media",{tooltip:"Insert/edit video",onclick:e,stateSelector:["img[data-mce-object=video]","img[data-mce-object=iframe]"]}),a.addMenuItem("media",{icon:"media",text:"Insert/edit video",onclick:e,context:"insert",prependToContext:!0}),this.showDialog=e});
\ No newline at end of file
+tinymce.PluginManager.add("media",function(a,b){function c(a){return a=a.toLowerCase(),-1!=a.indexOf(".mp3")?"audio/mpeg":-1!=a.indexOf(".wav")?"audio/wav":-1!=a.indexOf(".mp4")?"video/mp4":-1!=a.indexOf(".webm")?"video/webm":-1!=a.indexOf(".ogg")?"video/ogg":-1!=a.indexOf(".swf")?"application/x-shockwave-flash":""}function d(b){var c=a.settings.media_scripts;if(c)for(var d=0;d<c.length;d++)if(-1!==b.indexOf(c[d].filter))return c[d]}function e(){function b(a){var b,c,f,g;b=d.find("#width")[0],c=d.find("#height")[0],f=b.value(),g=c.value(),d.find("#constrain")[0].checked()&&e&&j&&f&&g&&(a.control==b?(g=Math.round(f/e*g),isNaN(g)||c.value(g)):(f=Math.round(g/j*f),isNaN(f)||b.value(f))),e=f,j=g}function c(){k=h(this.value()),this.parent().parent().fromJSON(k)}var d,e,j,k,l=[{name:"source1",type:"filepicker",filetype:"media",size:40,autofocus:!0,label:"Source",onchange:function(a){tinymce.each(a.meta,function(a,b){d.find("#"+b).value(a)})}}];a.settings.media_alt_source!==!1&&l.push({name:"source2",type:"filepicker",filetype:"media",size:40,label:"Alternative source"}),a.settings.media_poster!==!1&&l.push({name:"poster",type:"filepicker",filetype:"image",size:40,label:"Poster"}),a.settings.media_dimensions!==!1&&l.push({type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:b,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:b,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),k=i(a.selection.getNode()),e=k.width,j=k.height;var n={id:"mcemediasource",type:"textbox",flex:1,name:"embed",value:f(),multiline:!0,label:"Source"};n[m]=c,d=a.windowManager.open({title:"Insert/edit video",data:k,bodyType:"tabpanel",body:[{title:"General",type:"form",onShowTab:function(){k=h(this.next().find("#embed").value()),this.fromJSON(k)},items:l},{title:"Embed",type:"container",layout:"flex",direction:"column",align:"stretch",padding:10,spacing:10,onShowTab:function(){this.find("#embed").value(g(this.parent().toJSON()))},items:[{type:"label",text:"Paste your embed code below:",forId:"mcemediasource"},n]}],onSubmit:function(){var b,c,d,e;for(b=a.dom.select("img[data-mce-object]"),a.insertContent(g(this.toJSON())),c=a.dom.select("img[data-mce-object]"),d=0;d<b.length;d++)for(e=c.length-1;e>=0;e--)b[d]==c[e]&&c.splice(e,1);a.selection.select(c[0]),a.nodeChanged()}})}function f(){var b=a.selection.getNode();return b.getAttribute("data-mce-object")?a.selection.getContent():void 0}function g(e){var f="";if(!e.source1&&(tinymce.extend(e,h(e.embed)),!e.source1))return"";if(e.source2||(e.source2=""),e.poster||(e.poster=""),e.source1=a.convertURL(e.source1,"source"),e.source2=a.convertURL(e.source2,"source"),e.source1mime=c(e.source1),e.source2mime=c(e.source2),e.poster=a.convertURL(e.poster,"poster"),e.flashPlayerUrl=a.convertURL(b+"/moxieplayer.swf","movie"),tinymce.each(l,function(a){var b,c,d;if(b=a.regex.exec(e.source1)){for(d=a.url,c=0;b[c];c++)d=d.replace("$"+c,function(){return b[c]});e.source1=d,e.type=a.type,e.allowFullscreen=a.allowFullscreen,e.width=e.width||a.w,e.height=e.height||a.h}}),e.embed)f=k(e.embed,e,!0);else{var g=d(e.source1);if(g&&(e.type="script",e.width=g.width,e.height=g.height),e.width=e.width||300,e.height=e.height||150,tinymce.each(e,function(b,c){e[c]=a.dom.encode(b)}),"iframe"==e.type){var i=e.allowFullscreen?' allowFullscreen="1"':"";f+='<iframe src="'+e.source1+'" width="'+e.width+'" height="'+e.height+'"'+i+"></iframe>"}else"application/x-shockwave-flash"==e.source1mime?(f+='<object data="'+e.source1+'" width="'+e.width+'" height="'+e.height+'" type="application/x-shockwave-flash">',e.poster&&(f+='<img src="'+e.poster+'" width="'+e.width+'" height="'+e.height+'" />'),f+="</object>"):-1!=e.source1mime.indexOf("audio")?a.settings.audio_template_callback?f=a.settings.audio_template_callback(e):f+='<audio controls="controls" src="'+e.source1+'">'+(e.source2?'\n<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</audio>":"script"==e.type?f+='<script src="'+e.source1+'"></script>':f=a.settings.video_template_callback?a.settings.video_template_callback(e):'<video width="'+e.width+'" height="'+e.height+'"'+(e.poster?' poster="'+e.poster+'"':"")+' controls="controls">\n<source src="'+e.source1+'"'+(e.source1mime?' type="'+e.source1mime+'"':"")+" />\n"+(e.source2?'<source src="'+e.source2+'"'+(e.source2mime?' type="'+e.source2mime+'"':"")+" />\n":"")+"</video>"}return f}function h(a){var b={};return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",start:function(a,c){if(b.source1||"param"!=a||(b.source1=c.map.movie),("iframe"==a||"object"==a||"embed"==a||"video"==a||"audio"==a)&&(b.type||(b.type=a),b=tinymce.extend(c.map,b)),"script"==a){var e=d(c.map.src);if(!e)return;b={type:"script",source1:c.map.src,width:e.width,height:e.height}}"source"==a&&(b.source1?b.source2||(b.source2=c.map.src):b.source1=c.map.src),"img"!=a||b.poster||(b.poster=c.map.src)}}).parse(a),b.source1=b.source1||b.src||b.data,b.source2=b.source2||"",b.poster=b.poster||"",b}function i(b){return b.getAttribute("data-mce-object")?h(a.serializer.serialize(b,{selection:!0})):{}}function j(b){if(a.settings.media_filter_html===!1)return b;var c,d=new tinymce.html.Writer;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!1,special:"script,noscript",comment:function(a){d.comment(a)},cdata:function(a){d.cdata(a)},text:function(a,b){d.text(a,b)},start:function(b,e,f){if(c=!0,"script"!=b&&"noscript"!=b){for(var g=0;g<e.length;g++){if(0===e[g].name.indexOf("on"))return;"style"==e[g].name&&(e[g].value=a.dom.serializeStyle(a.dom.parseStyle(e[g].value),b))}d.start(b,e,f),c=!1}},end:function(a){c||d.end(a)}},new tinymce.html.Schema({})).parse(b),d.getContent()}function k(a,b,c){function d(a,b){var c,d,e,f;for(c in b)if(e=""+b[c],a.map[c])for(d=a.length;d--;)f=a[d],f.name==c&&(e?(a.map[c]=e,f.value=e):(delete a.map[c],a.splice(d,1)));else e&&(a.push({name:c,value:e}),a.map[c]=e)}var e,f=new tinymce.html.Writer,g=0;return new tinymce.html.SaxParser({validate:!1,allow_conditional_comments:!0,special:"script,noscript",comment:function(a){f.comment(a)},cdata:function(a){f.cdata(a)},text:function(a,b){f.text(a,b)},start:function(a,h,i){switch(a){case"video":case"object":case"embed":case"img":case"iframe":d(h,{width:b.width,height:b.height})}if(c)switch(a){case"video":d(h,{poster:b.poster,src:""}),b.source2&&d(h,{src:""});break;case"iframe":d(h,{src:b.source1});break;case"source":if(g++,2>=g&&(d(h,{src:b["source"+g],type:b["source"+g+"mime"]}),!b["source"+g]))return;break;case"img":if(!b.poster)return;e=!0}f.start(a,h,i)},end:function(a){if("video"==a&&c)for(var h=1;2>=h;h++)if(b["source"+h]){var i=[];i.map={},h>g&&(d(i,{src:b["source"+h],type:b["source"+h+"mime"]}),f.start("source",i,!0))}if(b.poster&&"object"==a&&c&&!e){var j=[];j.map={},d(j,{src:b.poster,width:b.width,height:b.height}),f.start("img",j,!0)}f.end(a)}},new tinymce.html.Schema({})).parse(a),f.getContent()}var l=[{regex:/youtu\.be\/([\w\-.]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$1",allowFullscreen:!0},{regex:/youtube\.com(.+)v=([^&]+)/,type:"iframe",w:425,h:350,url:"//www.youtube.com/embed/$2",allowFullscreen:!0},{regex:/vimeo\.com\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$1?title=0&byline=0&portrait=0&color=8dc7dc",allowfullscreen:!0},{regex:/vimeo\.com\/(.*)\/([0-9]+)/,type:"iframe",w:425,h:350,url:"//player.vimeo.com/video/$2?title=0&amp;byline=0",allowfullscreen:!0},{regex:/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/,type:"iframe",w:425,h:350,url:'//maps.google.com/maps/ms?msid=$2&output=embed"',allowFullscreen:!1}],m=tinymce.Env.ie&&tinymce.Env.ie<=8?"onChange":"onInput";a.on("ResolveName",function(a){var b;1==a.target.nodeType&&(b=a.target.getAttribute("data-mce-object"))&&(a.name=b)}),a.on("preInit",function(){var b=a.schema.getSpecialElements();tinymce.each("video audio iframe object".split(" "),function(a){b[a]=new RegExp("</"+a+"[^>]*>","gi")});var c=a.schema.getBoolAttrs();tinymce.each("webkitallowfullscreen mozallowfullscreen allowfullscreen".split(" "),function(a){c[a]={}}),a.parser.addNodeFilter("iframe,video,audio,object,embed,script",function(b,c){for(var e,f,g,h,i,j,k,l,m=b.length;m--;)if(f=b[m],f.parent&&("script"!=f.name||(l=d(f.attr("src"))))){for(g=new tinymce.html.Node("img",1),g.shortEnded=!0,l&&(l.width&&f.attr("width",l.width.toString()),l.height&&f.attr("height",l.height.toString())),j=f.attributes,e=j.length;e--;)h=j[e].name,i=j[e].value,"width"!==h&&"height"!==h&&"style"!==h&&(("data"==h||"src"==h)&&(i=a.convertURL(i,h)),g.attr("data-mce-p-"+h,i));k=f.firstChild&&f.firstChild.value,k&&(g.attr("data-mce-html",escape(k)),g.firstChild=null),g.attr({width:f.attr("width")||"300",height:f.attr("height")||("audio"==c?"30":"150"),style:f.attr("style"),src:tinymce.Env.transparentSrc,"data-mce-object":c,"class":"mce-object mce-object-"+c}),f.replace(g)}}),a.serializer.addAttributeFilter("data-mce-object",function(a,b){for(var c,d,e,f,g,h,i,k=a.length;k--;)if(c=a[k],c.parent){for(i=c.attr(b),d=new tinymce.html.Node(i,1),"audio"!=i&&"script"!=i&&d.attr({width:c.attr("width"),height:c.attr("height")}),d.attr({style:c.attr("style")}),f=c.attributes,e=f.length;e--;){var l=f[e].name;0===l.indexOf("data-mce-p-")&&d.attr(l.substr(11),f[e].value)}"script"==i&&d.attr("type","text/javascript"),g=c.attr("data-mce-html"),g&&(h=new tinymce.html.Node("#text",3),h.raw=!0,h.value=j(unescape(g)),d.append(h)),c.replace(d)}})}),a.on("ObjectSelected",function(a){var b=a.target.getAttribute("data-mce-object");("audio"==b||"script"==b)&&a.preventDefault()}),a.on("objectResized",function(a){var b,c=a.target;c.getAttribute("data-mce-object")&&(b=c.getAttribute("data-mce-html"),b&&(b=unescape(b),c.setAttribute("data-mce-html",escape(k(b,{width:a.width,height:a.height})))))}),a.addButton("media",{tooltip:"Insert/edit video",onclick:e,stateSelector:["img[data-mce-object=video]","img[data-mce-object=iframe]"]}),a.addMenuItem("media",{icon:"media",text:"Insert/edit video",onclick:e,context:"insert",prependToContext:!0}),a.addCommand("mceMedia",e),this.showDialog=e});
\ No newline at end of file
index 9c504700d95ae8cd5cdb6ccd711902f9649647d6..a814d0b0aa1c17a84210503967e66fbded1d4a51 100644 (file)
@@ -512,6 +512,56 @@ define("tinymce/pasteplugin/Clipboard", [
                        return html;
                }
 
+               /**
+                * Some Windows 10/Edge versions will return a double encoded string. This checks if the
+                * content has this odd encoding and decodes it.
+                */
+               function decodeEdgeData(data) {
+                       var i, out, fingerprint, code;
+
+                       // Check if data is encoded
+                       fingerprint = [25942, 29554, 28521, 14958];
+                       for (i = 0; i < fingerprint.length; i++) {
+                               if (data.charCodeAt(i) != fingerprint[i]) {
+                                       return data;
+                               }
+                       }
+
+                       // Decode UTF-16 to UTF-8
+                       out = '';
+                       for (i = 0; i < data.length; i++) {
+                               code = data.charCodeAt(i);
+
+                               /*eslint no-bitwise:0*/
+                               out += String.fromCharCode((code & 0x00FF));
+                               out += String.fromCharCode((code & 0xFF00) >> 8);
+                       }
+
+                       // Decode UTF-8
+                       return decodeURIComponent(escape(out));
+               }
+
+               /**
+                * Extracts HTML contents from within a fragment.
+                */
+               function extractFragment(data) {
+                       var idx, startFragment, endFragment;
+
+                       startFragment = '<!--StartFragment-->';
+                       idx = data.indexOf(startFragment);
+                       if (idx !== -1) {
+                               data = data.substr(idx + startFragment.length);
+                       }
+
+                       endFragment = '<!--EndFragment-->';
+                       idx = data.indexOf(endFragment);
+                       if (idx !== -1) {
+                               data = data.substr(0, idx);
+                       }
+
+                       return data;
+               }
+
                /**
                 * Gets various content types out of a datatransfer object.
                 *
@@ -519,7 +569,7 @@ define("tinymce/pasteplugin/Clipboard", [
                 * @return {Object} Object with mime types and data for those mime types.
                 */
                function getDataTransferItems(dataTransfer) {
-                       var data = {};
+                       var items = {};
 
                        if (dataTransfer) {
                                // Use old WebKit/IE API
@@ -527,20 +577,26 @@ define("tinymce/pasteplugin/Clipboard", [
                                        var legacyText = dataTransfer.getData('Text');
                                        if (legacyText && legacyText.length > 0) {
                                                if (legacyText.indexOf(mceInternalUrlPrefix) == -1) {
-                                                       data['text/plain'] = legacyText;
+                                                       items['text/plain'] = legacyText;
                                                }
                                        }
                                }
 
                                if (dataTransfer.types) {
                                        for (var i = 0; i < dataTransfer.types.length; i++) {
-                                               var contentType = dataTransfer.types[i];
-                                               data[contentType] = dataTransfer.getData(contentType);
+                                               var contentType = dataTransfer.types[i],
+                                                       data = dataTransfer.getData(contentType);
+
+                                               if (contentType == 'text/html') {
+                                                       data = extractFragment(decodeEdgeData(data));
+                                               }
+
+                                               items[contentType] = data;
                                        }
                                }
                        }
 
-                       return data;
+                       return items;
                }
 
                /**
@@ -1355,7 +1411,9 @@ define("tinymce/pasteplugin/WordFilter", [
                                }
 
                                // Serialize DOM back to HTML
-                               e.content = new Serializer({}, schema).serialize(rootNode);
+                               e.content = new Serializer({
+                                       validate: settings.validate
+                               }, schema).serialize(rootNode);
                        }
                });
        }
index 84b156f55fa57e6d721eebec09f6c8db92804fa2..1e9c4e326442bb63bac02fcbf4121631499abfea 100644 (file)
@@ -1 +1 @@
-!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;f<a.length;++f){if(c=g[a[f]]||e(a[f]),!c)throw"module definition dependecy not found: "+a[f];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){g[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}function f(c){var d,e,f,h,i;for(d=0;d<c.length;d++){e=a,f=c[d],h=f.split(/[.\/]/);for(var j=0;j<h.length-1;++j)e[h[j]]===b&&(e[h[j]]={}),e=e[h[j]];e[h[h.length-1]]=g[f]}if(a.AMDLC_TESTS){i=a.privateModules||{};for(f in g)i[f]=g[f];for(d=0;d<c.length;d++)delete i[c[d]];a.privateModules=i}}var g={};d("tinymce/pasteplugin/Utils",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema"],function(a,b,c){function d(b,c){return a.each(c,function(a){b=a.constructor==RegExp?b.replace(a,""):b.replace(a[0],a[1])}),b}function e(e){function f(a){var b=a.name,c=a;if("br"===b)return void(i+="\n");if(j[b]&&(i+=" "),k[b])return void(i+=" ");if(3==a.type&&(i+=a.value),!a.shortEnded&&(a=a.firstChild))do f(a);while(a=a.next);l[b]&&c.next&&(i+="\n","p"==b&&(i+="\n"))}var g=new c,h=new b({},g),i="",j=g.getShortEndedElements(),k=a.makeMap("script noscript style textarea video audio iframe object"," "),l=g.getBlockElements();return e=d(e,[/<!\[[^\]]+\]>/g]),f(h.parse(e)),i}function f(a){function b(a,b,c){return b||c?"\xa0":" "}return a=d(a,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,b],/<br>$/i])}return{filter:d,innerText:e,trimHtml:f}}),d("tinymce/pasteplugin/Clipboard",["tinymce/Env","tinymce/dom/RangeUtils","tinymce/util/VK","tinymce/pasteplugin/Utils"],function(a,b,c,d){return function(e){function f(a){var b,c=e.dom;if(b=e.fire("BeforePastePreProcess",{content:a}),b=e.fire("PastePreProcess",b),a=b.content,!b.isDefaultPrevented()){if(e.hasEventListeners("PastePostProcess")&&!b.isDefaultPrevented()){var d=c.add(e.getBody(),"div",{style:"display:none"},a);b=e.fire("PastePostProcess",{node:d}),c.remove(d),a=b.node.innerHTML}b.isDefaultPrevented()||e.insertContent(a,{merge:e.settings.paste_merge_formats!==!1,data:{paste:!0}})}}function g(a){a=e.dom.encode(a).replace(/\r\n/g,"\n");var b,c=e.dom.getParent(e.selection.getStart(),e.dom.isBlock),g=e.settings.forced_root_block;g&&(b=e.dom.createHTML(g,e.settings.forced_root_block_attrs),b=b.substr(0,b.length-3)+">"),c&&/^(PRE|DIV)$/.test(c.nodeName)||!g?a=d.filter(a,[[/\n/g,"<br>"]]):(a=d.filter(a,[[/\n\n/g,"</p>"+b],[/^(.*<\/p>)(<p>)$/,b+"$1"],[/\n/g,"<br />"]]),-1!=a.indexOf("<p>")&&(a=b+a)),f(a)}function h(){function b(a){var b,c,e,f=a.startContainer;if(b=a.getClientRects(),b.length)return b[0];if(a.collapsed&&1==f.nodeType){for(e=f.childNodes[t.startOffset];e&&3==e.nodeType&&!e.data.length;)e=e.nextSibling;if(e)return"BR"==e.tagName&&(c=d.doc.createTextNode("\ufeff"),e.parentNode.insertBefore(c,e),a=d.createRng(),a.setStartBefore(c),a.setEndAfter(c),b=a.getClientRects(),d.remove(c)),b.length?b[0]:void 0}}var c,d=e.dom,f=e.getBody(),g=e.dom.getViewPort(e.getWin()),h=g.y,i=20;if(t=e.selection.getRng(),e.inline&&(c=e.selection.getScrollContainer(),c&&c.scrollTop>0&&(h=c.scrollTop)),t.getClientRects){var j=b(t);if(j)i=h+(j.top-d.getPos(f).y);else{i=h;var k=t.startContainer;k&&(3==k.nodeType&&k.parentNode!=f&&(k=k.parentNode),1==k.nodeType&&(i=d.getPos(k,c||f).y))}}s=d.add(e.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: absolute; top: "+i+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},y),(a.ie||a.gecko)&&d.setStyle(s,"left","rtl"==d.getStyle(f,"direction",!0)?65535:-65535),d.bind(s,"beforedeactivate focusin focusout",function(a){a.stopPropagation()}),s.focus(),e.selection.select(s,!0)}function i(){if(s){for(var a;a=e.dom.get("mcepastebin");)e.dom.remove(a),e.dom.unbind(a);t&&e.selection.setRng(t)}s=t=null}function j(){var a,b,c,d,f="";for(a=e.dom.select("div[id=mcepastebin]"),b=0;b<a.length;b++)c=a[b],c.firstChild&&"mcepastebin"==c.firstChild.id&&(c=c.firstChild),d=c.innerHTML,f!=y&&(f+=d);return f}function k(a){var b={};if(a){if(a.getData){var c=a.getData("Text");c&&c.length>0&&-1==c.indexOf(z)&&(b["text/plain"]=c)}if(a.types)for(var d=0;d<a.types.length;d++){var e=a.types[d];b[e]=a.getData(e)}}return b}function l(a){return k(a.clipboardData||e.getDoc().dataTransfer)}function m(a,b){function c(c){function d(a){b&&(e.selection.setRng(b),b=null),f('<img src="'+a.result+'">')}var g,h,i,j=!1;if(c)for(g=0;g<c.length;g++)h=c[g],/^image\/(jpeg|png|gif|bmp)$/.test(h.type)&&(i=new FileReader,i.onload=d.bind(null,i),i.readAsDataURL(h.getAsFile?h.getAsFile():h),a.preventDefault(),j=!0);return j}var d=a.clipboardData||a.dataTransfer;return e.settings.paste_data_images&&d?c(d.items)||c(d.files):void 0}function n(a){var b=a.clipboardData;return-1!=navigator.userAgent.indexOf("Android")&&b&&b.items&&0===b.items.length}function o(a){return b.getCaretRangeFromPoint(a.clientX,a.clientY,e.getDoc())}function p(a,b){return b in a&&a[b].length>0}function q(a){return c.metaKeyPressed(a)&&86==a.keyCode||a.shiftKey&&45==a.keyCode}function r(){e.on("keydown",function(b){function c(a){q(a)&&!a.isDefaultPrevented()&&i()}if(q(b)&&!b.isDefaultPrevented()){if(u=b.shiftKey&&86==b.keyCode,u&&a.webkit&&-1!=navigator.userAgent.indexOf("Version/"))return;if(b.stopImmediatePropagation(),w=(new Date).getTime(),a.ie&&u)return b.preventDefault(),void e.fire("paste",{ieFake:!0});i(),h(),e.once("keyup",c),e.once("paste",function(){e.off("keyup",c)})}}),e.on("paste",function(b){var c=(new Date).getTime(),k=l(b),o=(new Date).getTime()-c,q=(new Date).getTime()-w-o<1e3,r="text"==v.pasteFormat||u;return u=!1,b.isDefaultPrevented()||n(b)?void i():m(b)?void i():(q||b.preventDefault(),!a.ie||q&&!b.ieFake||(h(),e.dom.bind(s,"paste",function(a){a.stopPropagation()}),e.getDoc().execCommand("Paste",!1,null),k["text/html"]=j()),void setTimeout(function(){var a;return p(k,"text/html")?a=k["text/html"]:(a=j(),a==y&&(r=!0)),a=d.trimHtml(a),s&&s.firstChild&&"mcepastebin"===s.firstChild.id&&(r=!0),i(),a.length||(r=!0),r&&(a=p(k,"text/plain")&&-1==a.indexOf("</p>")?k["text/plain"]:d.innerText(a)),a==y?void(q||e.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")):void(r?g(a):f(a))},0))}),e.on("dragstart dragend",function(a){x="dragstart"==a.type}),e.on("drop",function(a){var b=o(a);if(!a.isDefaultPrevented()&&!x&&!m(a,b)&&b&&e.settings.paste_filter_drop!==!1){var c=k(a.dataTransfer),h=c["mce-internal"]||c["text/html"]||c["text/plain"];h&&(a.preventDefault(),e.undoManager.transact(function(){c["mce-internal"]&&e.execCommand("Delete"),e.selection.setRng(b),h=d.trimHtml(h),c["text/html"]?f(h):g(h)}))}}),e.on("dragover dragend",function(a){e.settings.paste_data_images&&a.preventDefault()})}var s,t,u,v=this,w=0,x=!1,y="%MCEPASTEBIN%",z="data:text/mce-internal,";v.pasteHtml=f,v.pasteText=g,e.on("preInit",function(){r(),e.parser.addNodeFilter("img",function(b,c,d){function f(a){return a.data&&a.data.paste===!0}function g(b){b.attr("data-mce-object")||k===a.transparentSrc||b.remove()}function h(a){return 0===a.indexOf("webkit-fake-url")}function i(a){return 0===a.indexOf("data:")}if(!e.settings.paste_data_images&&f(d))for(var j=b.length;j--;){var k=b[j].attributes.map.src;k&&(h(k)?g(b[j]):!e.settings.allow_html_data_urls&&i(k)&&g(b[j]))}})})}}),d("tinymce/pasteplugin/WordFilter",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema","tinymce/html/Serializer","tinymce/html/Node","tinymce/pasteplugin/Utils"],function(a,b,c,d,e,f){function g(a){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(a)||/class="OutlineElement/.test(a)||/id="?docs\-internal\-guid\-/.test(a)}function h(b){var c,d;return d=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],b=b.replace(/^[\u00a0 ]+/,""),a.each(d,function(a){return a.test(b)?(c=!0,!1):void 0}),c}function i(a){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(a)}function j(j){var k=j.settings;j.on("BeforePastePreProcess",function(l){function m(a){function b(a){var c="";if(3===a.type)return a.value;if(a=a.firstChild)do c+=b(a);while(a=a.next);return c}function c(a,b){if(3===a.type&&b.test(a.value))return a.value=a.value.replace(b,""),!1;if(a=a.firstChild)do if(!c(a,b))return!1;while(a=a.next);return!0}function d(a){if(a._listIgnore)return void a.remove();if(a=a.firstChild)do d(a);while(a=a.next)}function f(a,b,f){var h=a._listLevel||k;h!=k&&(k>h?g&&(g=g.parent.parent):(j=g,g=null)),g&&g.name==b?g.append(a):(j=j||g,g=new e(b,1),f>1&&g.attr("start",""+f),a.wrap(g)),a.name="li",h>k&&j&&j.lastChild.append(g),k=h,d(a),c(a,/^\u00a0+/),c(a,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),c(a,/^\u00a0+/)}for(var g,j,k=1,l=[],m=a.firstChild;"undefined"!=typeof m&&null!==m;)if(l.push(m),m=m.walk(),null!==m)for(;"undefined"!=typeof m&&m.parent!==a;)m=m.walk();for(var n=0;n<l.length;n++)if(a=l[n],"p"==a.name&&a.firstChild){var o=b(a);if(i(o)){f(a,"ul");continue}if(h(o)){var p=/([0-9]+)\./.exec(o),q=1;p&&(q=parseInt(p[1],10)),f(a,"ol",q);continue}if(a._listLevel){f(a,"ul",1);continue}g=null}else j=g,g=null}function n(b,c){var d,f={},g=j.dom.parseStyle(c);return a.each(g,function(a,e){switch(e){case"mso-list":d=/\w+ \w+([0-9]+)/i.exec(c),d&&(b._listLevel=parseInt(d[1],10)),/Ignore/i.test(a)&&b.firstChild&&(b._listIgnore=!0,b.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!=a&&(f[e]=a));case"mso-element":if(/^(comment|comment-list)$/i.test(a))return void b.remove()}return 0===e.indexOf("mso-comment")?void b.remove():void(0!==e.indexOf("mso-")&&("all"==o||p&&p[e])&&(f[e]=a))}),/(bold)/i.test(f["font-weight"])&&(delete f["font-weight"],b.wrap(new e("b",1))),/(italic)/i.test(f["font-style"])&&(delete f["font-style"],b.wrap(new e("i",1))),f=j.dom.serializeStyle(f,b.name),f?f:null}var o,p,q=l.content;if(q=q.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi,""),q=q.replace(/<br class="?Apple-interchange-newline"?>/gi,""),o=k.paste_retain_style_properties,o&&(p=a.makeMap(o.split(/[, ]/))),k.paste_enable_default_filters!==!1&&g(l.content)){l.wordContent=!0,q=f.filter(q,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(a,b){return b.length>0?b.replace(/./," ").slice(Math.floor(b.length/2)).split("").join("\xa0"):""}]]);var r=k.paste_word_valid_elements;r||(r="-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody");var s=new c({valid_elements:r,valid_children:"-li[p]"});a.each(s.elements,function(a){a.attributes["class"]||(a.attributes["class"]={},a.attributesOrder.push("class")),a.attributes.style||(a.attributes.style={},a.attributesOrder.push("style"))});var t=new b({},s);t.addAttributeFilter("style",function(a){for(var b,c=a.length;c--;)b=a[c],b.attr("style",n(b,b.attr("style"))),"span"==b.name&&b.parent&&!b.attributes.length&&b.unwrap()}),t.addAttributeFilter("class",function(a){for(var b,c,d=a.length;d--;)b=a[d],c=b.attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(c)&&b.remove(),b.attr("class",null)}),t.addNodeFilter("del",function(a){for(var b=a.length;b--;)a[b].remove()}),t.addNodeFilter("a",function(a){for(var b,c,d,e=a.length;e--;)if(b=a[e],c=b.attr("href"),d=b.attr("name"),c&&-1!=c.indexOf("#_msocom_"))b.remove();else if(c&&0===c.indexOf("file://")&&(c=c.split("#")[1],c&&(c="#"+c)),c||d){if(d&&!/^_?(?:toc|edn|ftn)/i.test(d)){b.unwrap();continue}b.attr({href:c,name:d})}else b.unwrap()});var u=t.parse(q);k.paste_convert_word_fake_lists!==!1&&m(u),l.content=new d({},s).serialize(u)}})}return j.isWordContent=g,j}),d("tinymce/pasteplugin/Quirks",["tinymce/Env","tinymce/util/Tools","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Utils"],function(a,b,c,d){return function(e){function f(a){e.on("BeforePastePreProcess",function(b){b.content=a(b.content)})}function g(a){if(!c.isWordContent(a))return a;var f=[];b.each(e.schema.getBlockElements(),function(a,b){f.push(b)});var g=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+f.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return a=d.filter(a,[[g,"$1"]]),a=d.filter(a,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function h(a){if(c.isWordContent(a))return a;var b=e.settings.paste_webkit_styles;if(e.settings.paste_remove_styles_if_webkit===!1||"all"==b)return a;if(b&&(b=b.split(/[, ]/)),b){var d=e.dom,f=e.selection.getNode();a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(a,c,e,g){var h=d.parseStyle(e,"span"),i={};if("none"===b)return c+g;for(var j=0;j<b.length;j++){var k=h[b[j]],l=d.getStyle(f,b[j],!0);/color/.test(b[j])&&(k=d.toHex(k),l=d.toHex(l)),l!=k&&(i[b[j]]=k)}return i=d.serializeStyle(i,"span"),i?c+' style="'+i+'"'+g:c+g})}else a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return a=a.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(a,b,c,d){return b+' style="'+c+'"'+d})}a.webkit&&f(h),a.ie&&f(g)}}),d("tinymce/pasteplugin/Plugin",["tinymce/PluginManager","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks"],function(a,b,c,d){var e;a.add("paste",function(a){function f(){"text"==g.pasteFormat?(this.active(!1),g.pasteFormat="html"):(g.pasteFormat="text",this.active(!0),e||(a.windowManager.alert("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off."),e=!0))}var g,h=this,i=a.settings;h.clipboard=g=new b(a),h.quirks=new d(a),h.wordFilter=new c(a),a.settings.paste_as_text&&(h.clipboard.pasteFormat="text"),i.paste_preprocess&&a.on("PastePreProcess",function(a){i.paste_preprocess.call(h,h,a)}),i.paste_postprocess&&a.on("PastePostProcess",function(a){i.paste_postprocess.call(h,h,a)}),a.addCommand("mceInsertClipboardContent",function(a,b){b.content&&h.clipboard.pasteHtml(b.content),b.text&&h.clipboard.pasteText(b.text)}),a.paste_block_drop&&a.on("dragend dragover draggesture dragdrop drop drag",function(a){a.preventDefault(),a.stopPropagation()}),a.settings.paste_data_images||a.on("drop",function(a){var b=a.dataTransfer;b&&b.files&&b.files.length>0&&a.preventDefault()}),a.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:f,active:"text"==h.clipboard.pasteFormat}),a.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:g.pasteFormat,onclick:f})})}),f(["tinymce/pasteplugin/Utils"])}(this);
\ No newline at end of file
+!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;f<a.length;++f){if(c=g[a[f]]||e(a[f]),!c)throw"module definition dependecy not found: "+a[f];d.push(c)}b.apply(null,d)}function d(a,d,e){if("string"!=typeof a)throw"invalid module definition, module id must be defined and be a string";if(d===b)throw"invalid module definition, dependencies must be specified";if(e===b)throw"invalid module definition, definition function must be specified";c(d,function(){g[a]=e.apply(null,arguments)})}function e(b){for(var c=a,d=b.split(/[.\/]/),e=0;e<d.length;++e){if(!c[d[e]])return;c=c[d[e]]}return c}function f(c){var d,e,f,h,i;for(d=0;d<c.length;d++){e=a,f=c[d],h=f.split(/[.\/]/);for(var j=0;j<h.length-1;++j)e[h[j]]===b&&(e[h[j]]={}),e=e[h[j]];e[h[h.length-1]]=g[f]}if(a.AMDLC_TESTS){i=a.privateModules||{};for(f in g)i[f]=g[f];for(d=0;d<c.length;d++)delete i[c[d]];a.privateModules=i}}var g={};d("tinymce/pasteplugin/Utils",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema"],function(a,b,c){function d(b,c){return a.each(c,function(a){b=a.constructor==RegExp?b.replace(a,""):b.replace(a[0],a[1])}),b}function e(e){function f(a){var b=a.name,c=a;if("br"===b)return void(i+="\n");if(j[b]&&(i+=" "),k[b])return void(i+=" ");if(3==a.type&&(i+=a.value),!a.shortEnded&&(a=a.firstChild))do f(a);while(a=a.next);l[b]&&c.next&&(i+="\n","p"==b&&(i+="\n"))}var g=new c,h=new b({},g),i="",j=g.getShortEndedElements(),k=a.makeMap("script noscript style textarea video audio iframe object"," "),l=g.getBlockElements();return e=d(e,[/<!\[[^\]]+\]>/g]),f(h.parse(e)),i}function f(a){function b(a,b,c){return b||c?"\xa0":" "}return a=d(a,[/^[\s\S]*<body[^>]*>\s*|\s*<\/body[^>]*>[\s\S]*$/g,/<!--StartFragment-->|<!--EndFragment-->/g,[/( ?)<span class="Apple-converted-space">\u00a0<\/span>( ?)/g,b],/<br>$/i])}return{filter:d,innerText:e,trimHtml:f}}),d("tinymce/pasteplugin/Clipboard",["tinymce/Env","tinymce/dom/RangeUtils","tinymce/util/VK","tinymce/pasteplugin/Utils"],function(a,b,c,d){return function(e){function f(a){var b,c=e.dom;if(b=e.fire("BeforePastePreProcess",{content:a}),b=e.fire("PastePreProcess",b),a=b.content,!b.isDefaultPrevented()){if(e.hasEventListeners("PastePostProcess")&&!b.isDefaultPrevented()){var d=c.add(e.getBody(),"div",{style:"display:none"},a);b=e.fire("PastePostProcess",{node:d}),c.remove(d),a=b.node.innerHTML}b.isDefaultPrevented()||e.insertContent(a,{merge:e.settings.paste_merge_formats!==!1,data:{paste:!0}})}}function g(a){a=e.dom.encode(a).replace(/\r\n/g,"\n");var b,c=e.dom.getParent(e.selection.getStart(),e.dom.isBlock),g=e.settings.forced_root_block;g&&(b=e.dom.createHTML(g,e.settings.forced_root_block_attrs),b=b.substr(0,b.length-3)+">"),c&&/^(PRE|DIV)$/.test(c.nodeName)||!g?a=d.filter(a,[[/\n/g,"<br>"]]):(a=d.filter(a,[[/\n\n/g,"</p>"+b],[/^(.*<\/p>)(<p>)$/,b+"$1"],[/\n/g,"<br />"]]),-1!=a.indexOf("<p>")&&(a=b+a)),f(a)}function h(){function b(a){var b,c,e,f=a.startContainer;if(b=a.getClientRects(),b.length)return b[0];if(a.collapsed&&1==f.nodeType){for(e=f.childNodes[v.startOffset];e&&3==e.nodeType&&!e.data.length;)e=e.nextSibling;if(e)return"BR"==e.tagName&&(c=d.doc.createTextNode("\ufeff"),e.parentNode.insertBefore(c,e),a=d.createRng(),a.setStartBefore(c),a.setEndAfter(c),b=a.getClientRects(),d.remove(c)),b.length?b[0]:void 0}}var c,d=e.dom,f=e.getBody(),g=e.dom.getViewPort(e.getWin()),h=g.y,i=20;if(v=e.selection.getRng(),e.inline&&(c=e.selection.getScrollContainer(),c&&c.scrollTop>0&&(h=c.scrollTop)),v.getClientRects){var j=b(v);if(j)i=h+(j.top-d.getPos(f).y);else{i=h;var k=v.startContainer;k&&(3==k.nodeType&&k.parentNode!=f&&(k=k.parentNode),1==k.nodeType&&(i=d.getPos(k,c||f).y))}}u=d.add(e.getBody(),"div",{id:"mcepastebin",contentEditable:!0,"data-mce-bogus":"all",style:"position: absolute; top: "+i+"px;width: 10px; height: 10px; overflow: hidden; opacity: 0"},A),(a.ie||a.gecko)&&d.setStyle(u,"left","rtl"==d.getStyle(f,"direction",!0)?65535:-65535),d.bind(u,"beforedeactivate focusin focusout",function(a){a.stopPropagation()}),u.focus(),e.selection.select(u,!0)}function i(){if(u){for(var a;a=e.dom.get("mcepastebin");)e.dom.remove(a),e.dom.unbind(a);v&&e.selection.setRng(v)}u=v=null}function j(){var a,b,c,d,f="";for(a=e.dom.select("div[id=mcepastebin]"),b=0;b<a.length;b++)c=a[b],c.firstChild&&"mcepastebin"==c.firstChild.id&&(c=c.firstChild),d=c.innerHTML,f!=A&&(f+=d);return f}function k(a){var b,c,d,e;for(d=[25942,29554,28521,14958],b=0;b<d.length;b++)if(a.charCodeAt(b)!=d[b])return a;for(c="",b=0;b<a.length;b++)e=a.charCodeAt(b),c+=String.fromCharCode(255&e),c+=String.fromCharCode((65280&e)>>8);return decodeURIComponent(escape(c))}function l(a){var b,c,d;return c="<!--StartFragment-->",b=a.indexOf(c),-1!==b&&(a=a.substr(b+c.length)),d="<!--EndFragment-->",b=a.indexOf(d),-1!==b&&(a=a.substr(0,b)),a}function m(a){var b={};if(a){if(a.getData){var c=a.getData("Text");c&&c.length>0&&-1==c.indexOf(B)&&(b["text/plain"]=c)}if(a.types)for(var d=0;d<a.types.length;d++){var e=a.types[d],f=a.getData(e);"text/html"==e&&(f=l(k(f))),b[e]=f}}return b}function n(a){return m(a.clipboardData||e.getDoc().dataTransfer)}function o(a,b){function c(c){function d(a){b&&(e.selection.setRng(b),b=null),f('<img src="'+a.result+'">')}var g,h,i,j=!1;if(c)for(g=0;g<c.length;g++)h=c[g],/^image\/(jpeg|png|gif|bmp)$/.test(h.type)&&(i=new FileReader,i.onload=d.bind(null,i),i.readAsDataURL(h.getAsFile?h.getAsFile():h),a.preventDefault(),j=!0);return j}var d=a.clipboardData||a.dataTransfer;return e.settings.paste_data_images&&d?c(d.items)||c(d.files):void 0}function p(a){var b=a.clipboardData;return-1!=navigator.userAgent.indexOf("Android")&&b&&b.items&&0===b.items.length}function q(a){return b.getCaretRangeFromPoint(a.clientX,a.clientY,e.getDoc())}function r(a,b){return b in a&&a[b].length>0}function s(a){return c.metaKeyPressed(a)&&86==a.keyCode||a.shiftKey&&45==a.keyCode}function t(){e.on("keydown",function(b){function c(a){s(a)&&!a.isDefaultPrevented()&&i()}if(s(b)&&!b.isDefaultPrevented()){if(w=b.shiftKey&&86==b.keyCode,w&&a.webkit&&-1!=navigator.userAgent.indexOf("Version/"))return;if(b.stopImmediatePropagation(),y=(new Date).getTime(),a.ie&&w)return b.preventDefault(),void e.fire("paste",{ieFake:!0});i(),h(),e.once("keyup",c),e.once("paste",function(){e.off("keyup",c)})}}),e.on("paste",function(b){var c=(new Date).getTime(),k=n(b),l=(new Date).getTime()-c,m=(new Date).getTime()-y-l<1e3,q="text"==x.pasteFormat||w;return w=!1,b.isDefaultPrevented()||p(b)?void i():o(b)?void i():(m||b.preventDefault(),!a.ie||m&&!b.ieFake||(h(),e.dom.bind(u,"paste",function(a){a.stopPropagation()}),e.getDoc().execCommand("Paste",!1,null),k["text/html"]=j()),void setTimeout(function(){var a;return r(k,"text/html")?a=k["text/html"]:(a=j(),a==A&&(q=!0)),a=d.trimHtml(a),u&&u.firstChild&&"mcepastebin"===u.firstChild.id&&(q=!0),i(),a.length||(q=!0),q&&(a=r(k,"text/plain")&&-1==a.indexOf("</p>")?k["text/plain"]:d.innerText(a)),a==A?void(m||e.windowManager.alert("Please use Ctrl+V/Cmd+V keyboard shortcuts to paste contents.")):void(q?g(a):f(a))},0))}),e.on("dragstart dragend",function(a){z="dragstart"==a.type}),e.on("drop",function(a){var b=q(a);if(!a.isDefaultPrevented()&&!z&&!o(a,b)&&b&&e.settings.paste_filter_drop!==!1){var c=m(a.dataTransfer),h=c["mce-internal"]||c["text/html"]||c["text/plain"];h&&(a.preventDefault(),e.undoManager.transact(function(){c["mce-internal"]&&e.execCommand("Delete"),e.selection.setRng(b),h=d.trimHtml(h),c["text/html"]?f(h):g(h)}))}}),e.on("dragover dragend",function(a){e.settings.paste_data_images&&a.preventDefault()})}var u,v,w,x=this,y=0,z=!1,A="%MCEPASTEBIN%",B="data:text/mce-internal,";x.pasteHtml=f,x.pasteText=g,e.on("preInit",function(){t(),e.parser.addNodeFilter("img",function(b,c,d){function f(a){return a.data&&a.data.paste===!0}function g(b){b.attr("data-mce-object")||k===a.transparentSrc||b.remove()}function h(a){return 0===a.indexOf("webkit-fake-url")}function i(a){return 0===a.indexOf("data:")}if(!e.settings.paste_data_images&&f(d))for(var j=b.length;j--;){var k=b[j].attributes.map.src;k&&(h(k)?g(b[j]):!e.settings.allow_html_data_urls&&i(k)&&g(b[j]))}})})}}),d("tinymce/pasteplugin/WordFilter",["tinymce/util/Tools","tinymce/html/DomParser","tinymce/html/Schema","tinymce/html/Serializer","tinymce/html/Node","tinymce/pasteplugin/Utils"],function(a,b,c,d,e,f){function g(a){return/<font face="Times New Roman"|class="?Mso|style="[^"]*\bmso-|style='[^'']*\bmso-|w:WordDocument/i.test(a)||/class="OutlineElement/.test(a)||/id="?docs\-internal\-guid\-/.test(a)}function h(b){var c,d;return d=[/^[IVXLMCD]{1,2}\.[ \u00a0]/,/^[ivxlmcd]{1,2}\.[ \u00a0]/,/^[a-z]{1,2}[\.\)][ \u00a0]/,/^[A-Z]{1,2}[\.\)][ \u00a0]/,/^[0-9]+\.[ \u00a0]/,/^[\u3007\u4e00\u4e8c\u4e09\u56db\u4e94\u516d\u4e03\u516b\u4e5d]+\.[ \u00a0]/,/^[\u58f1\u5f10\u53c2\u56db\u4f0d\u516d\u4e03\u516b\u4e5d\u62fe]+\.[ \u00a0]/],b=b.replace(/^[\u00a0 ]+/,""),a.each(d,function(a){return a.test(b)?(c=!0,!1):void 0}),c}function i(a){return/^[\s\u00a0]*[\u2022\u00b7\u00a7\u25CF]\s*/.test(a)}function j(j){var k=j.settings;j.on("BeforePastePreProcess",function(l){function m(a){function b(a){var c="";if(3===a.type)return a.value;if(a=a.firstChild)do c+=b(a);while(a=a.next);return c}function c(a,b){if(3===a.type&&b.test(a.value))return a.value=a.value.replace(b,""),!1;if(a=a.firstChild)do if(!c(a,b))return!1;while(a=a.next);return!0}function d(a){if(a._listIgnore)return void a.remove();if(a=a.firstChild)do d(a);while(a=a.next)}function f(a,b,f){var h=a._listLevel||k;h!=k&&(k>h?g&&(g=g.parent.parent):(j=g,g=null)),g&&g.name==b?g.append(a):(j=j||g,g=new e(b,1),f>1&&g.attr("start",""+f),a.wrap(g)),a.name="li",h>k&&j&&j.lastChild.append(g),k=h,d(a),c(a,/^\u00a0+/),c(a,/^\s*([\u2022\u00b7\u00a7\u25CF]|\w+\.)/),c(a,/^\u00a0+/)}for(var g,j,k=1,l=[],m=a.firstChild;"undefined"!=typeof m&&null!==m;)if(l.push(m),m=m.walk(),null!==m)for(;"undefined"!=typeof m&&m.parent!==a;)m=m.walk();for(var n=0;n<l.length;n++)if(a=l[n],"p"==a.name&&a.firstChild){var o=b(a);if(i(o)){f(a,"ul");continue}if(h(o)){var p=/([0-9]+)\./.exec(o),q=1;p&&(q=parseInt(p[1],10)),f(a,"ol",q);continue}if(a._listLevel){f(a,"ul",1);continue}g=null}else j=g,g=null}function n(b,c){var d,f={},g=j.dom.parseStyle(c);return a.each(g,function(a,e){switch(e){case"mso-list":d=/\w+ \w+([0-9]+)/i.exec(c),d&&(b._listLevel=parseInt(d[1],10)),/Ignore/i.test(a)&&b.firstChild&&(b._listIgnore=!0,b.firstChild._listIgnore=!0);break;case"horiz-align":e="text-align";break;case"vert-align":e="vertical-align";break;case"font-color":case"mso-foreground":e="color";break;case"mso-background":case"mso-highlight":e="background";break;case"font-weight":case"font-style":return void("normal"!=a&&(f[e]=a));case"mso-element":if(/^(comment|comment-list)$/i.test(a))return void b.remove()}return 0===e.indexOf("mso-comment")?void b.remove():void(0!==e.indexOf("mso-")&&("all"==o||p&&p[e])&&(f[e]=a))}),/(bold)/i.test(f["font-weight"])&&(delete f["font-weight"],b.wrap(new e("b",1))),/(italic)/i.test(f["font-style"])&&(delete f["font-style"],b.wrap(new e("i",1))),f=j.dom.serializeStyle(f,b.name),f?f:null}var o,p,q=l.content;if(q=q.replace(/<b[^>]+id="?docs-internal-[^>]*>/gi,""),q=q.replace(/<br class="?Apple-interchange-newline"?>/gi,""),o=k.paste_retain_style_properties,o&&(p=a.makeMap(o.split(/[, ]/))),k.paste_enable_default_filters!==!1&&g(l.content)){l.wordContent=!0,q=f.filter(q,[/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\xa0"],[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(a,b){return b.length>0?b.replace(/./," ").slice(Math.floor(b.length/2)).split("").join("\xa0"):""}]]);var r=k.paste_word_valid_elements;r||(r="-strong/b,-em/i,-u,-span,-p,-ol,-ul,-li,-h1,-h2,-h3,-h4,-h5,-h6,-p/div,-a[href|name],sub,sup,strike,br,del,table[width],tr,td[colspan|rowspan|width],th[colspan|rowspan|width],thead,tfoot,tbody");var s=new c({valid_elements:r,valid_children:"-li[p]"});a.each(s.elements,function(a){a.attributes["class"]||(a.attributes["class"]={},a.attributesOrder.push("class")),a.attributes.style||(a.attributes.style={},a.attributesOrder.push("style"))});var t=new b({},s);t.addAttributeFilter("style",function(a){for(var b,c=a.length;c--;)b=a[c],b.attr("style",n(b,b.attr("style"))),"span"==b.name&&b.parent&&!b.attributes.length&&b.unwrap()}),t.addAttributeFilter("class",function(a){for(var b,c,d=a.length;d--;)b=a[d],c=b.attr("class"),/^(MsoCommentReference|MsoCommentText|msoDel)$/i.test(c)&&b.remove(),b.attr("class",null)}),t.addNodeFilter("del",function(a){for(var b=a.length;b--;)a[b].remove()}),t.addNodeFilter("a",function(a){for(var b,c,d,e=a.length;e--;)if(b=a[e],c=b.attr("href"),d=b.attr("name"),c&&-1!=c.indexOf("#_msocom_"))b.remove();else if(c&&0===c.indexOf("file://")&&(c=c.split("#")[1],c&&(c="#"+c)),c||d){if(d&&!/^_?(?:toc|edn|ftn)/i.test(d)){b.unwrap();continue}b.attr({href:c,name:d})}else b.unwrap()});var u=t.parse(q);k.paste_convert_word_fake_lists!==!1&&m(u),l.content=new d({validate:k.validate},s).serialize(u)}})}return j.isWordContent=g,j}),d("tinymce/pasteplugin/Quirks",["tinymce/Env","tinymce/util/Tools","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Utils"],function(a,b,c,d){return function(e){function f(a){e.on("BeforePastePreProcess",function(b){b.content=a(b.content)})}function g(a){if(!c.isWordContent(a))return a;var f=[];b.each(e.schema.getBlockElements(),function(a,b){f.push(b)});var g=new RegExp("(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*(<\\/?("+f.join("|")+")[^>]*>)(?:<br>&nbsp;[\\s\\r\\n]+|<br>)*","g");return a=d.filter(a,[[g,"$1"]]),a=d.filter(a,[[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}function h(a){if(c.isWordContent(a))return a;var b=e.settings.paste_webkit_styles;if(e.settings.paste_remove_styles_if_webkit===!1||"all"==b)return a;if(b&&(b=b.split(/[, ]/)),b){var d=e.dom,f=e.selection.getNode();a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,function(a,c,e,g){var h=d.parseStyle(e,"span"),i={};if("none"===b)return c+g;for(var j=0;j<b.length;j++){var k=h[b[j]],l=d.getStyle(f,b[j],!0);/color/.test(b[j])&&(k=d.toHex(k),l=d.toHex(l)),l!=k&&(i[b[j]]=k)}return i=d.serializeStyle(i,"span"),i?c+' style="'+i+'"'+g:c+g})}else a=a.replace(/(<[^>]+) style="([^"]*)"([^>]*>)/gi,"$1$3");return a=a.replace(/(<[^>]+) data-mce-style="([^"]+)"([^>]*>)/gi,function(a,b,c,d){return b+' style="'+c+'"'+d})}a.webkit&&f(h),a.ie&&f(g)}}),d("tinymce/pasteplugin/Plugin",["tinymce/PluginManager","tinymce/pasteplugin/Clipboard","tinymce/pasteplugin/WordFilter","tinymce/pasteplugin/Quirks"],function(a,b,c,d){var e;a.add("paste",function(a){function f(){"text"==g.pasteFormat?(this.active(!1),g.pasteFormat="html"):(g.pasteFormat="text",this.active(!0),e||(a.windowManager.alert("Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off."),e=!0))}var g,h=this,i=a.settings;h.clipboard=g=new b(a),h.quirks=new d(a),h.wordFilter=new c(a),a.settings.paste_as_text&&(h.clipboard.pasteFormat="text"),i.paste_preprocess&&a.on("PastePreProcess",function(a){i.paste_preprocess.call(h,h,a)}),i.paste_postprocess&&a.on("PastePostProcess",function(a){i.paste_postprocess.call(h,h,a)}),a.addCommand("mceInsertClipboardContent",function(a,b){b.content&&h.clipboard.pasteHtml(b.content),b.text&&h.clipboard.pasteText(b.text)}),a.paste_block_drop&&a.on("dragend dragover draggesture dragdrop drop drag",function(a){a.preventDefault(),a.stopPropagation()}),a.settings.paste_data_images||a.on("drop",function(a){var b=a.dataTransfer;b&&b.files&&b.files.length>0&&a.preventDefault()}),a.addButton("pastetext",{icon:"pastetext",tooltip:"Paste as text",onclick:f,active:"text"==h.clipboard.pasteFormat}),a.addMenuItem("pastetext",{text:"Paste as text",selectable:!0,active:g.pasteFormat,onclick:f})})}),f(["tinymce/pasteplugin/Utils"])}(this);
\ No newline at end of file
index 64a80c2684cc6b38cb0705e4bd5873475d604d67..8e4d5b6a7407d965edb8e358ec3f984a7b61f9ae 100644 (file)
@@ -100,7 +100,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
 
                                event.content = event.content.replace( /<!--more(.*?)-->/g, function( match, moretext ) {
                                        return '<img src="' + tinymce.Env.transparentSrc + '" data-wp-more="more" data-wp-more-text="' + moretext + '" ' +
-                                               'class="wp-more-tag mce-wp-more" title="' + title + '" data-mce-resize="false" data-mce-placeholder="1" />';
+                                               'class="wp-more-tag mce-wp-more" alt="" title="' + title + '" data-mce-resize="false" data-mce-placeholder="1" />';
                                });
                        }
 
@@ -109,7 +109,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
 
                                event.content = event.content.replace( /<!--nextpage-->/g,
                                        '<img src="' + tinymce.Env.transparentSrc + '" data-wp-more="nextpage" class="wp-more-tag mce-wp-nextpage" ' +
-                                               'title="' + title + '" data-mce-resize="false" data-mce-placeholder="1" />' );
+                                               'alt="" title="' + title + '" data-mce-resize="false" data-mce-placeholder="1" />' );
                        }
 
                        if ( event.load && event.format !== 'raw' && hasWpautop ) {
@@ -162,7 +162,7 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
                classname += ' mce-wp-' + tag;
                title = tag === 'more' ? 'Read more...' : 'Next page';
                title = __( title );
-               html = '<img src="' + tinymce.Env.transparentSrc + '" title="' + title + '" class="' + classname + '" ' +
+               html = '<img src="' + tinymce.Env.transparentSrc + '" alt="" title="' + title + '" class="' + classname + '" ' +
                        'data-wp-more="' + tag + '" data-mce-resize="false" data-mce-placeholder="1" />';
 
                // Most common case
@@ -428,6 +428,8 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
                        dom.setAttrib( doc.documentElement, 'dir', 'rtl' );
                }
 
+               dom.setAttrib( doc.documentElement, 'lang', editor.getParam( 'wp_lang_attr' ) );
+
                if ( env.ie ) {
                        if ( parseInt( env.ie, 10 ) === 9 ) {
                                bodyClass.push('ie9');
@@ -470,16 +472,19 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
                }
 
                if ( editor.getParam( 'wp_paste_filters', true ) ) {
-                       if ( ! tinymce.Env.webkit ) {
-                               // In WebKit handled by removeWebKitStyles()
-                               editor.on( 'PastePreProcess', function( event ) {
+                       editor.on( 'PastePreProcess', function( event ) {
+                               // Remove trailing <br> added by WebKit browsers to the clipboard
+                               event.content = event.content.replace( /<br class="?Apple-interchange-newline"?>/gi, '' );
+
+                               // In WebKit this is handled by removeWebKitStyles()
+                               if ( ! tinymce.Env.webkit ) {
                                        // Remove all inline styles
                                        event.content = event.content.replace( /(<[^>]+) style="[^"]*"([^>]*>)/gi, '$1$2' );
 
                                        // Put back the internal styles
                                        event.content = event.content.replace(/(<[^>]+) data-mce-style=([^>]+>)/gi, '$1 style=$2' );
-                               });
-                       }
+                               }
+                       });
 
                        editor.on( 'PastePostProcess', function( event ) {
                                // Remove empty paragraphs
@@ -734,32 +739,40 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
                                        spaceBottom = windowHeight - iframeRect.top - selection.bottom - blockedBottom,
                                        editorHeight = windowHeight - blockedTop - blockedBottom,
                                        className = '',
+                                       iosOffsetTop = 0,
+                                       iosOffsetBottom = 0,
                                        top, left;
 
                                if ( spaceTop >= editorHeight || spaceBottom >= editorHeight ) {
                                        return this.hide();
                                }
 
+                               // Add offset in iOS to move the menu over the image, out of the way of the default iOS menu.
+                               if ( tinymce.Env.iOS && currentSelection.nodeName === 'IMG' ) {
+                                       iosOffsetTop = 54;
+                                       iosOffsetBottom = 46;
+                               }
+
                                if ( this.bottom ) {
                                        if ( spaceBottom >= spaceNeeded ) {
                                                className = ' mce-arrow-up';
-                                               top = selection.bottom + iframeRect.top + scrollY;
+                                               top = selection.bottom + iframeRect.top + scrollY - iosOffsetBottom;
                                        } else if ( spaceTop >= spaceNeeded ) {
                                                className = ' mce-arrow-down';
-                                               top = selection.top + iframeRect.top + scrollY - toolbarHeight - margin;
+                                               top = selection.top + iframeRect.top + scrollY - toolbarHeight - margin + iosOffsetTop;
                                        }
                                } else {
                                        if ( spaceTop >= spaceNeeded ) {
                                                className = ' mce-arrow-down';
-                                               top = selection.top + iframeRect.top + scrollY - toolbarHeight - margin;
+                                               top = selection.top + iframeRect.top + scrollY - toolbarHeight - margin + iosOffsetTop;
                                        } else if ( spaceBottom >= spaceNeeded && editorHeight / 2 > selection.bottom + iframeRect.top - blockedTop ) {
                                                className = ' mce-arrow-up';
-                                               top = selection.bottom + iframeRect.top + scrollY;
+                                               top = selection.bottom + iframeRect.top + scrollY - iosOffsetBottom;
                                        }
                                }
 
                                if ( typeof top === 'undefined' ) {
-                                       top = scrollY + blockedTop + buffer;
+                                       top = scrollY + blockedTop + buffer + iosOffsetBottom;
                                }
 
                                left = selectionMiddle - toolbarWidth / 2 + iframeRect.left + scrollX;
@@ -779,6 +792,11 @@ tinymce.PluginManager.add( 'wordpress', function( editor ) {
                                        left = selection.right - toolbarWidth + iframeRect.left + scrollX;
                                }
 
+                               // No up/down arrows on the menu over images in iOS.
+                               if ( tinymce.Env.iOS && currentSelection.nodeName === 'IMG' ) {
+                                       className = className.replace( / ?mce-arrow-(up|down)/g, '' );
+                               }
+
                                toolbar.className = toolbar.className.replace( / ?mce-arrow-[\w]+/g, '' ) + className;
 
                                DOM.setStyles( toolbar, {
index 92e653d1b60e5dc263d237a24daa7d020ff1183b..e7cc6bf205897507ca962f898323026fdd425414 100644 (file)
@@ -1 +1 @@
-!function(a){a.ui.FloatPanel.zIndex=100100,a.PluginManager.add("wordpress",function(b){function c(c){var d,f,i,j=0;f="hide"===c,b.theme.panel&&(i=b.theme.panel.find(".toolbar:not(.menubar)")),!i||i.length<2||"hide"===c&&!i[1].visible()||(!c&&i[1].visible()&&(c="hide"),h(i,function(a,b){b>0&&("hide"===c?(a.hide(),j+=30):(a.show(),j-=30))}),j&&!f&&(a.Env.iOS||(d=b.getContentAreaContainer().firstChild,g.setStyle(d,"height",d.clientHeight+j)),"hide"===c?(setUserSetting("hidetb","0"),e&&e.active(!1)):(setUserSetting("hidetb","1"),e&&e.active(!0))),b.fire("wp-toolbar-toggle"))}function d(){}var e,f,g=a.DOM,h=a.each,i=b.editorManager.i18n.translate,j=window.jQuery,k=window.wp,l=k&&k.editor&&k.editor.autop&&b.getParam("wpautop",!0);return j&&j(document).triggerHandler("tinymce-editor-setup",[b]),b.addButton("wp_adv",{tooltip:"Toolbar Toggle",cmd:"WP_Adv",onPostRender:function(){e=this,e.active("1"===getUserSetting("hidetb")?!0:!1)}}),b.on("PostRender",function(){b.getParam("wordpress_adv_hidden",!0)&&"0"===getUserSetting("hidetb","0")&&c("hide")}),b.addCommand("WP_Adv",function(){c()}),b.on("focus",function(){window.wpActiveEditor=b.id}),b.on("BeforeSetContent",function(b){var c;b.content&&(-1!==b.content.indexOf("<!--more")&&(c=i("Read more..."),b.content=b.content.replace(/<!--more(.*?)-->/g,function(b,d){return'<img src="'+a.Env.transparentSrc+'" data-wp-more="more" data-wp-more-text="'+d+'" class="wp-more-tag mce-wp-more" title="'+c+'" data-mce-resize="false" data-mce-placeholder="1" />'})),-1!==b.content.indexOf("<!--nextpage-->")&&(c=i("Page break"),b.content=b.content.replace(/<!--nextpage-->/g,'<img src="'+a.Env.transparentSrc+'" data-wp-more="nextpage" class="wp-more-tag mce-wp-nextpage" title="'+c+'" data-mce-resize="false" data-mce-placeholder="1" />')),b.load&&"raw"!==b.format&&l&&(b.content=k.editor.autop(b.content)),b.content=b.content.replace(/<p>(?:&nbsp;|\u00a0|\uFEFF|\s)+<\/p>/gi,"<p><br /></p>"))}),b.on("PostProcess",function(a){a.get&&(a.content=a.content.replace(/<img[^>]+>/g,function(a){var b,c="";return-1!==a.indexOf('data-wp-more="more"')?((b=a.match(/data-wp-more-text="([^"]+)"/))&&(c=b[1]),a="<!--more"+c+"-->"):-1!==a.indexOf('data-wp-more="nextpage"')&&(a="<!--nextpage-->"),a}))}),b.on("ResolveName",function(a){var c;"IMG"===a.target.nodeName&&(c=b.dom.getAttrib(a.target,"data-wp-more"))&&(a.name=c)}),b.addCommand("WP_More",function(c){var d,e,f,g="wp-more-tag",h=b.dom,j=b.selection.getNode();return c=c||"more",g+=" mce-wp-"+c,f="more"===c?"Read more...":"Next page",f=i(f),e='<img src="'+a.Env.transparentSrc+'" title="'+f+'" class="'+g+'" data-wp-more="'+c+'" data-mce-resize="false" data-mce-placeholder="1" />',"BODY"===j.nodeName||"P"===j.nodeName&&"BODY"===j.parentNode.nodeName?void b.insertContent(e):(d=h.getParent(j,function(a){return a.parentNode&&"BODY"===a.parentNode.nodeName?!0:!1},b.getBody()),void(d&&("P"===d.nodeName?d.appendChild(h.create("p",null,e).firstChild):h.insertAfter(h.create("p",null,e),d),b.nodeChanged())))}),b.addCommand("WP_Code",function(){b.formatter.toggle("code")}),b.addCommand("WP_Page",function(){b.execCommand("WP_More","nextpage")}),b.addCommand("WP_Help",function(){function c(a){var b="<tr>";return h(a,function(a,c){b+=a?"<td><kbd>"+c+"</kbd></td><td>"+i(a)+"</td>":"<td></td><td></td>"}),b+"</tr>"}var d,e,f,g,j=i(a.Env.mac?"Ctrl + Alt + letter:":"Shift + Alt + letter:"),k=i(a.Env.mac?"Cmd + letter:":"Ctrl + letter:"),l=[],m=[];h([{c:"Copy",x:"Cut"},{v:"Paste",a:"Select all"},{z:"Undo",y:"Redo"},{b:"Bold",i:"Italic"},{u:"Underline",k:"Insert/edit link"}],function(a){l.push(c(a))}),h([{1:"Heading 1",2:"Heading 2"},{3:"Heading 3",4:"Heading 4"},{5:"Heading 5",6:"Heading 6"},{l:"Align left",c:"Align center"},{r:"Align right",j:"Justify"},{d:"Strikethrough",q:"Blockquote"},{u:"Bullet list",o:"Numbered list"},{a:"Insert/edit link",s:"Remove link"},{m:"Insert/edit image",t:"Insert Read More tag"},{h:"Keyboard Shortcuts",x:"Code"},{p:"Insert Page Break tag",w:"Distraction-free writing mode"}],function(a){m.push(c(a))}),d=[i("Letter"),i("Action"),i("Letter"),i("Action")],d="<tr><th>"+d.join("</th><th>")+"</th></tr>",e='<div class="wp-editor-help">',e=e+"<h2>"+i("Default shortcuts,")+" "+k+'</h2><table class="wp-help-th-center">'+d+l.join("")+"</table><h2>"+i("Additional shortcuts,")+" "+j+'</h2><table class="wp-help-th-center">'+d+m.join("")+"</table>",b.plugins.wptextpattern&&(e=e+"<h2>"+i("When starting a new paragraph with one of these formatting shortcuts followed by a space, the formatting will be applied automatically. Press Backspace or Escape to undo.")+"</h2><table>"+c({"*":"Bullet list"})+c({"-":"Bullet list"})+c({"1.":"Numbered list"})+c({"1)":"Numbered list"})+"</table>",e=e+"<h2>"+i("The following formatting shortcuts are replaced when pressing Enter. Press Escape or the Undo button to undo.")+"</h2><table>"+c({">":"Blockquote"})+c({"##":"Heading 2"})+c({"###":"Heading 3"})+c({"####":"Heading 4"})+c({"#####":"Heading 5"})+c({"######":"Heading 6"})+"</table>"),e=e+"<h2>"+i("Focus shortcuts:")+"</h2><table>"+c({"Alt + F8":"Inline toolbar (when an image, link or preview is selected)"})+c({"Alt + F9":"Editor menu (when enabled)"})+c({"Alt + F10":"Editor toolbar"})+c({"Alt + F11":"Elements path"})+"</table><p>"+i("To move focus to other buttons use Tab or the arrow keys. To return focus to the editor press Escape or use one of the buttons.")+"</p>",e+="</div>",f=b.windowManager.open({title:"Keyboard Shortcuts",items:{type:"container",classes:"wp-help",html:e},buttons:{text:"Close",onclick:"close"}}),f.$el&&(f.$el.find('div[role="application"]').attr("role","document"),g=f.$el.find(".mce-wp-help"),g[0]&&(g.attr("tabindex","0"),g[0].focus(),g.on("keydown",function(a){a.keyCode>=33&&a.keyCode<=40&&a.stopPropagation()})))}),b.addCommand("WP_Medialib",function(){k&&k.media&&k.media.editor&&k.media.editor.open(b.id)}),b.addButton("wp_more",{tooltip:"Insert Read More tag",onclick:function(){b.execCommand("WP_More","more")}}),b.addButton("wp_page",{tooltip:"Page break",onclick:function(){b.execCommand("WP_More","nextpage")}}),b.addButton("wp_help",{tooltip:"Keyboard Shortcuts",cmd:"WP_Help"}),b.addButton("wp_code",{tooltip:"Code",cmd:"WP_Code",stateSelector:"code"}),k&&k.media&&k.media.editor&&b.addMenuItem("add_media",{text:"Add Media",icon:"wp-media-library",context:"insert",cmd:"WP_Medialib"}),b.addMenuItem("wp_more",{text:"Insert Read More tag",icon:"wp_more",context:"insert",onclick:function(){b.execCommand("WP_More","more")}}),b.addMenuItem("wp_page",{text:"Page break",icon:"wp_page",context:"insert",onclick:function(){b.execCommand("WP_More","nextpage")}}),b.on("BeforeExecCommand",function(c){!a.Env.webkit||"InsertUnorderedList"!==c.command&&"InsertOrderedList"!==c.command||(f||(f=b.dom.create("style",{type:"text/css"},"#tinymce,#tinymce span,#tinymce li,#tinymce li>span,#tinymce p,#tinymce p>span{font:medium sans-serif;color:#000;line-height:normal;}")),b.getDoc().head.appendChild(f))}),b.on("ExecCommand",function(c){a.Env.webkit&&f&&("InsertUnorderedList"===c.command||"InsertOrderedList"===c.command)&&b.dom.remove(f)}),b.on("init",function(){var c=a.Env,d=["mceContentBody"],e=b.getDoc(),f=b.dom;c.iOS&&f.addClass(e.documentElement,"ios"),"rtl"===b.getParam("directionality")&&(d.push("rtl"),f.setAttrib(e.documentElement,"dir","rtl")),c.ie?9===parseInt(c.ie,10)?d.push("ie9"):8===parseInt(c.ie,10)?d.push("ie8"):c.ie<8&&d.push("ie7"):c.webkit&&d.push("webkit"),d.push("wp-editor"),h(d,function(a){a&&f.addClass(e.body,a)}),b.on("BeforeSetContent",function(a){a.content&&(a.content=a.content.replace(/<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)( [^>]*)?>/gi,"<$1$2>").replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)>\s*<\/p>/gi,"</$1>"))}),j&&j(document).triggerHandler("tinymce-editor-init",[b]),window.tinyMCEPreInit&&window.tinyMCEPreInit.dragDropUpload&&f.bind(e,"dragstart dragend dragover drop",function(a){j&&j(document).trigger(new j.Event(a))}),b.getParam("wp_paste_filters",!0)&&(a.Env.webkit||b.on("PastePreProcess",function(a){a.content=a.content.replace(/(<[^>]+) style="[^"]*"([^>]*>)/gi,"$1$2"),a.content=a.content.replace(/(<[^>]+) data-mce-style=([^>]+>)/gi,"$1 style=$2")}),b.on("PastePostProcess",function(a){h(f.select("p",a.node),function(a){f.isEmpty(a)&&f.remove(a)})}))}),b.on("SaveContent",function(a){return!b.inline&&b.isHidden()?void(a.content=a.element.value):(a.content=a.content.replace(/<p>(?:<br ?\/?>|\u00a0|\uFEFF| )*<\/p>/g,"<p>&nbsp;</p>"),void(l&&(a.content=k.editor.removep(a.content))))}),b.on("preInit",function(){var c="@[id|accesskey|class|dir|lang|style|tabindex|title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],i,b,script[src|async|defer|type|charset|crossorigin|integrity]";b.schema.addValidElements(c),a.Env.iOS&&(b.settings.height=300),h({c:"JustifyCenter",r:"JustifyRight",l:"JustifyLeft",j:"JustifyFull",q:"mceBlockQuote",u:"InsertUnorderedList",o:"InsertOrderedList",s:"unlink",m:"WP_Medialib",z:"WP_Adv",t:"WP_More",d:"Strikethrough",h:"WP_Help",p:"WP_Page",x:"WP_Code"},function(a,c){b.shortcuts.add("access+"+c,"",a)}),b.addShortcut("meta+s","",function(){k&&k.autosave&&k.autosave.server.triggerSave()})}),b.on("preinit",function(){function c(a,c){function d(){if(!f)return this;var a,b,c=window.pageXOffset||document.documentElement.scrollLeft,d=window.pageYOffset||document.documentElement.scrollTop,e=window.innerWidth,h=window.innerHeight,i=q?q.getBoundingClientRect():{top:0,right:e,bottom:h,left:0,width:e,height:h},m=this.getEl(),n=m.offsetWidth,o=m.offsetHeight,r=f.getBoundingClientRect(),s=(r.left+r.right)/2,t=5,u=8,v=o+u+t,w=p?p.getBoundingClientRect().bottom:0,x=j?j.getBoundingClientRect().bottom:0,y=k?h-k.getBoundingClientRect().top:0,z=l?h-l.getBoundingClientRect().top:0,A=Math.max(0,w,x,i.top),B=Math.max(0,y,z,h-i.bottom),C=r.top+i.top-A,D=h-i.top-r.bottom-B,E=h-A-B,F="";return C>=E||D>=E?this.hide():(this.bottom?D>=v?(F=" mce-arrow-up",a=r.bottom+i.top+d):C>=v&&(F=" mce-arrow-down",a=r.top+i.top+d-o-u):C>=v?(F=" mce-arrow-down",a=r.top+i.top+d-o-u):D>=v&&E/2>r.bottom+i.top-A&&(F=" mce-arrow-up",a=r.bottom+i.top+d),"undefined"==typeof a&&(a=d+A+t),b=s-n/2+i.left+c,r.left<0||r.right>i.width?b=i.left+c+(i.width-n)/2:n>=e?(F+=" mce-arrow-full",b=0):0>b&&r.left+n>e||b+n>e&&r.right-n<0?b=(e-n)/2:b<i.left+c?(F+=" mce-arrow-left",b=r.left+i.left+c):b+n>i.width+i.left+c&&(F+=" mce-arrow-right",b=r.right-n+i.left+c),m.className=m.className.replace(/ ?mce-arrow-[\w]+/g,"")+F,g.setStyles(m,{left:b,top:a}),this)}var e,i,o=[];return h(a,function(a){function c(){var c=b.selection;"bullist"===d&&c.selectorChanged("ul > li",function(b,c){for(var d,e=c.parents.length;e--&&(d=c.parents[e].nodeName,"OL"!==d&&"UL"!=d););a.active(b&&"UL"===d)}),"numlist"===d&&c.selectorChanged("ol > li",function(b,c){for(var d,e=c.parents.length;e--&&(d=c.parents[e].nodeName,"OL"!==d&&"UL"!==d););a.active(b&&"OL"===d)}),a.settings.stateSelector&&c.selectorChanged(a.settings.stateSelector,function(b){a.active(b)},!0),a.settings.disabledStateSelector&&c.selectorChanged(a.settings.disabledStateSelector,function(b){a.disabled(b)})}var d;"|"===a?i=null:m.has(a)?(a={type:a},n.toolbar_items_size&&(a.size=n.toolbar_items_size),o.push(a),i=null):(i||(i={type:"buttongroup",items:[]},o.push(i)),b.buttons[a]&&(d=a,a=b.buttons[d],"function"==typeof a&&(a=a()),a.type=a.type||"button",n.toolbar_items_size&&(a.size=n.toolbar_items_size),a=m.create(a),i.items.push(a),b.initialized?c():b.on("init",c)))}),e=m.create({type:"panel",layout:"stack",classes:"toolbar-grp inline-toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:[{type:"toolbar",layout:"flow",items:o}]}),e.bottom=c,e.on("show",function(){this.reposition()}),e.on("keydown",function(a){27===a.keyCode&&(this.hide(),b.focus())}),b.on("remove",function(){e.remove()}),e.reposition=d,e.hide().renderTo(document.body),e}function d(a){e&&(e.hide(),"hide"===a.type?e=!1:("resize"===a.type||"scroll"===a.type)&&(clearTimeout(i),i=setTimeout(function(){e&&"function"==typeof e.show&&e.show()},250)))}var e,f,i,j,k,l,m=a.ui.Factory,n=b.settings,o=b.getContainer(),p=document.getElementById("wpadminbar"),q=document.getElementById(b.id+"_ifr");o&&(j=a.$(".mce-toolbar-grp",o)[0],k=a.$(".mce-statusbar",o)[0]),"content"===b.id&&(l=document.getElementById("post-status-info")),b.shortcuts.add("alt+119","",function(){var a;e&&(a=e.find("toolbar")[0],a&&a.focus(!0))}),b.on("nodechange",function(a){var c=b.selection.isCollapsed(),d={element:a.element,parents:a.parents,collapsed:c};b.fire("wptoolbar",d),f=d.selection||d.element,e&&e.hide(),d.toolbar?(e=d.toolbar,e.show()):e=!1}),b.on("focus",function(){e&&e.show()}),g.bind(window,"resize scroll",d),b.dom.bind(b.getWin(),"resize scroll",d),b.on("remove",function(){g.unbind(window,"resize scroll",d),b.dom.unbind(b.getWin(),"resize scroll",d)}),b.on("blur hide",d),b.wp=b.wp||{},b.wp._createToolbar=c},!0),{_showButtons:d,_hideButtons:d,_setEmbed:d,_getEmbed:d}})}(window.tinymce);
\ No newline at end of file
+!function(a){a.ui.FloatPanel.zIndex=100100,a.PluginManager.add("wordpress",function(b){function c(c){var d,f,i,j=0;f="hide"===c,b.theme.panel&&(i=b.theme.panel.find(".toolbar:not(.menubar)")),!i||i.length<2||"hide"===c&&!i[1].visible()||(!c&&i[1].visible()&&(c="hide"),h(i,function(a,b){b>0&&("hide"===c?(a.hide(),j+=30):(a.show(),j-=30))}),j&&!f&&(a.Env.iOS||(d=b.getContentAreaContainer().firstChild,g.setStyle(d,"height",d.clientHeight+j)),"hide"===c?(setUserSetting("hidetb","0"),e&&e.active(!1)):(setUserSetting("hidetb","1"),e&&e.active(!0))),b.fire("wp-toolbar-toggle"))}function d(){}var e,f,g=a.DOM,h=a.each,i=b.editorManager.i18n.translate,j=window.jQuery,k=window.wp,l=k&&k.editor&&k.editor.autop&&b.getParam("wpautop",!0);return j&&j(document).triggerHandler("tinymce-editor-setup",[b]),b.addButton("wp_adv",{tooltip:"Toolbar Toggle",cmd:"WP_Adv",onPostRender:function(){e=this,e.active("1"===getUserSetting("hidetb")?!0:!1)}}),b.on("PostRender",function(){b.getParam("wordpress_adv_hidden",!0)&&"0"===getUserSetting("hidetb","0")&&c("hide")}),b.addCommand("WP_Adv",function(){c()}),b.on("focus",function(){window.wpActiveEditor=b.id}),b.on("BeforeSetContent",function(b){var c;b.content&&(-1!==b.content.indexOf("<!--more")&&(c=i("Read more..."),b.content=b.content.replace(/<!--more(.*?)-->/g,function(b,d){return'<img src="'+a.Env.transparentSrc+'" data-wp-more="more" data-wp-more-text="'+d+'" class="wp-more-tag mce-wp-more" alt="" title="'+c+'" data-mce-resize="false" data-mce-placeholder="1" />'})),-1!==b.content.indexOf("<!--nextpage-->")&&(c=i("Page break"),b.content=b.content.replace(/<!--nextpage-->/g,'<img src="'+a.Env.transparentSrc+'" data-wp-more="nextpage" class="wp-more-tag mce-wp-nextpage" alt="" title="'+c+'" data-mce-resize="false" data-mce-placeholder="1" />')),b.load&&"raw"!==b.format&&l&&(b.content=k.editor.autop(b.content)),b.content=b.content.replace(/<p>(?:&nbsp;|\u00a0|\uFEFF|\s)+<\/p>/gi,"<p><br /></p>"))}),b.on("PostProcess",function(a){a.get&&(a.content=a.content.replace(/<img[^>]+>/g,function(a){var b,c="";return-1!==a.indexOf('data-wp-more="more"')?((b=a.match(/data-wp-more-text="([^"]+)"/))&&(c=b[1]),a="<!--more"+c+"-->"):-1!==a.indexOf('data-wp-more="nextpage"')&&(a="<!--nextpage-->"),a}))}),b.on("ResolveName",function(a){var c;"IMG"===a.target.nodeName&&(c=b.dom.getAttrib(a.target,"data-wp-more"))&&(a.name=c)}),b.addCommand("WP_More",function(c){var d,e,f,g="wp-more-tag",h=b.dom,j=b.selection.getNode();return c=c||"more",g+=" mce-wp-"+c,f="more"===c?"Read more...":"Next page",f=i(f),e='<img src="'+a.Env.transparentSrc+'" alt="" title="'+f+'" class="'+g+'" data-wp-more="'+c+'" data-mce-resize="false" data-mce-placeholder="1" />',"BODY"===j.nodeName||"P"===j.nodeName&&"BODY"===j.parentNode.nodeName?void b.insertContent(e):(d=h.getParent(j,function(a){return a.parentNode&&"BODY"===a.parentNode.nodeName?!0:!1},b.getBody()),void(d&&("P"===d.nodeName?d.appendChild(h.create("p",null,e).firstChild):h.insertAfter(h.create("p",null,e),d),b.nodeChanged())))}),b.addCommand("WP_Code",function(){b.formatter.toggle("code")}),b.addCommand("WP_Page",function(){b.execCommand("WP_More","nextpage")}),b.addCommand("WP_Help",function(){function c(a){var b="<tr>";return h(a,function(a,c){b+=a?"<td><kbd>"+c+"</kbd></td><td>"+i(a)+"</td>":"<td></td><td></td>"}),b+"</tr>"}var d,e,f,g,j=i(a.Env.mac?"Ctrl + Alt + letter:":"Shift + Alt + letter:"),k=i(a.Env.mac?"Cmd + letter:":"Ctrl + letter:"),l=[],m=[];h([{c:"Copy",x:"Cut"},{v:"Paste",a:"Select all"},{z:"Undo",y:"Redo"},{b:"Bold",i:"Italic"},{u:"Underline",k:"Insert/edit link"}],function(a){l.push(c(a))}),h([{1:"Heading 1",2:"Heading 2"},{3:"Heading 3",4:"Heading 4"},{5:"Heading 5",6:"Heading 6"},{l:"Align left",c:"Align center"},{r:"Align right",j:"Justify"},{d:"Strikethrough",q:"Blockquote"},{u:"Bullet list",o:"Numbered list"},{a:"Insert/edit link",s:"Remove link"},{m:"Insert/edit image",t:"Insert Read More tag"},{h:"Keyboard Shortcuts",x:"Code"},{p:"Insert Page Break tag",w:"Distraction-free writing mode"}],function(a){m.push(c(a))}),d=[i("Letter"),i("Action"),i("Letter"),i("Action")],d="<tr><th>"+d.join("</th><th>")+"</th></tr>",e='<div class="wp-editor-help">',e=e+"<h2>"+i("Default shortcuts,")+" "+k+'</h2><table class="wp-help-th-center">'+d+l.join("")+"</table><h2>"+i("Additional shortcuts,")+" "+j+'</h2><table class="wp-help-th-center">'+d+m.join("")+"</table>",b.plugins.wptextpattern&&(e=e+"<h2>"+i("When starting a new paragraph with one of these formatting shortcuts followed by a space, the formatting will be applied automatically. Press Backspace or Escape to undo.")+"</h2><table>"+c({"*":"Bullet list"})+c({"-":"Bullet list"})+c({"1.":"Numbered list"})+c({"1)":"Numbered list"})+"</table>",e=e+"<h2>"+i("The following formatting shortcuts are replaced when pressing Enter. Press Escape or the Undo button to undo.")+"</h2><table>"+c({">":"Blockquote"})+c({"##":"Heading 2"})+c({"###":"Heading 3"})+c({"####":"Heading 4"})+c({"#####":"Heading 5"})+c({"######":"Heading 6"})+"</table>"),e=e+"<h2>"+i("Focus shortcuts:")+"</h2><table>"+c({"Alt + F8":"Inline toolbar (when an image, link or preview is selected)"})+c({"Alt + F9":"Editor menu (when enabled)"})+c({"Alt + F10":"Editor toolbar"})+c({"Alt + F11":"Elements path"})+"</table><p>"+i("To move focus to other buttons use Tab or the arrow keys. To return focus to the editor press Escape or use one of the buttons.")+"</p>",e+="</div>",f=b.windowManager.open({title:"Keyboard Shortcuts",items:{type:"container",classes:"wp-help",html:e},buttons:{text:"Close",onclick:"close"}}),f.$el&&(f.$el.find('div[role="application"]').attr("role","document"),g=f.$el.find(".mce-wp-help"),g[0]&&(g.attr("tabindex","0"),g[0].focus(),g.on("keydown",function(a){a.keyCode>=33&&a.keyCode<=40&&a.stopPropagation()})))}),b.addCommand("WP_Medialib",function(){k&&k.media&&k.media.editor&&k.media.editor.open(b.id)}),b.addButton("wp_more",{tooltip:"Insert Read More tag",onclick:function(){b.execCommand("WP_More","more")}}),b.addButton("wp_page",{tooltip:"Page break",onclick:function(){b.execCommand("WP_More","nextpage")}}),b.addButton("wp_help",{tooltip:"Keyboard Shortcuts",cmd:"WP_Help"}),b.addButton("wp_code",{tooltip:"Code",cmd:"WP_Code",stateSelector:"code"}),k&&k.media&&k.media.editor&&b.addMenuItem("add_media",{text:"Add Media",icon:"wp-media-library",context:"insert",cmd:"WP_Medialib"}),b.addMenuItem("wp_more",{text:"Insert Read More tag",icon:"wp_more",context:"insert",onclick:function(){b.execCommand("WP_More","more")}}),b.addMenuItem("wp_page",{text:"Page break",icon:"wp_page",context:"insert",onclick:function(){b.execCommand("WP_More","nextpage")}}),b.on("BeforeExecCommand",function(c){!a.Env.webkit||"InsertUnorderedList"!==c.command&&"InsertOrderedList"!==c.command||(f||(f=b.dom.create("style",{type:"text/css"},"#tinymce,#tinymce span,#tinymce li,#tinymce li>span,#tinymce p,#tinymce p>span{font:medium sans-serif;color:#000;line-height:normal;}")),b.getDoc().head.appendChild(f))}),b.on("ExecCommand",function(c){a.Env.webkit&&f&&("InsertUnorderedList"===c.command||"InsertOrderedList"===c.command)&&b.dom.remove(f)}),b.on("init",function(){var c=a.Env,d=["mceContentBody"],e=b.getDoc(),f=b.dom;c.iOS&&f.addClass(e.documentElement,"ios"),"rtl"===b.getParam("directionality")&&(d.push("rtl"),f.setAttrib(e.documentElement,"dir","rtl")),f.setAttrib(e.documentElement,"lang",b.getParam("wp_lang_attr")),c.ie?9===parseInt(c.ie,10)?d.push("ie9"):8===parseInt(c.ie,10)?d.push("ie8"):c.ie<8&&d.push("ie7"):c.webkit&&d.push("webkit"),d.push("wp-editor"),h(d,function(a){a&&f.addClass(e.body,a)}),b.on("BeforeSetContent",function(a){a.content&&(a.content=a.content.replace(/<p>\s*<(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)( [^>]*)?>/gi,"<$1$2>").replace(/<\/(p|div|ul|ol|dl|table|blockquote|h[1-6]|fieldset|pre)>\s*<\/p>/gi,"</$1>"))}),j&&j(document).triggerHandler("tinymce-editor-init",[b]),window.tinyMCEPreInit&&window.tinyMCEPreInit.dragDropUpload&&f.bind(e,"dragstart dragend dragover drop",function(a){j&&j(document).trigger(new j.Event(a))}),b.getParam("wp_paste_filters",!0)&&(b.on("PastePreProcess",function(b){b.content=b.content.replace(/<br class="?Apple-interchange-newline"?>/gi,""),a.Env.webkit||(b.content=b.content.replace(/(<[^>]+) style="[^"]*"([^>]*>)/gi,"$1$2"),b.content=b.content.replace(/(<[^>]+) data-mce-style=([^>]+>)/gi,"$1 style=$2"))}),b.on("PastePostProcess",function(a){h(f.select("p",a.node),function(a){f.isEmpty(a)&&f.remove(a)})}))}),b.on("SaveContent",function(a){return!b.inline&&b.isHidden()?void(a.content=a.element.value):(a.content=a.content.replace(/<p>(?:<br ?\/?>|\u00a0|\uFEFF| )*<\/p>/g,"<p>&nbsp;</p>"),void(l&&(a.content=k.editor.removep(a.content))))}),b.on("preInit",function(){var c="@[id|accesskey|class|dir|lang|style|tabindex|title|contenteditable|draggable|dropzone|hidden|spellcheck|translate],i,b,script[src|async|defer|type|charset|crossorigin|integrity]";b.schema.addValidElements(c),a.Env.iOS&&(b.settings.height=300),h({c:"JustifyCenter",r:"JustifyRight",l:"JustifyLeft",j:"JustifyFull",q:"mceBlockQuote",u:"InsertUnorderedList",o:"InsertOrderedList",s:"unlink",m:"WP_Medialib",z:"WP_Adv",t:"WP_More",d:"Strikethrough",h:"WP_Help",p:"WP_Page",x:"WP_Code"},function(a,c){b.shortcuts.add("access+"+c,"",a)}),b.addShortcut("meta+s","",function(){k&&k.autosave&&k.autosave.server.triggerSave()})}),b.on("preinit",function(){function c(c,d){function e(){if(!f)return this;var b,c,d=window.pageXOffset||document.documentElement.scrollLeft,e=window.pageYOffset||document.documentElement.scrollTop,h=window.innerWidth,i=window.innerHeight,m=q?q.getBoundingClientRect():{top:0,right:h,bottom:i,left:0,width:h,height:i},n=this.getEl(),o=n.offsetWidth,r=n.offsetHeight,s=f.getBoundingClientRect(),t=(s.left+s.right)/2,u=5,v=8,w=r+v+u,x=p?p.getBoundingClientRect().bottom:0,y=j?j.getBoundingClientRect().bottom:0,z=k?i-k.getBoundingClientRect().top:0,A=l?i-l.getBoundingClientRect().top:0,B=Math.max(0,x,y,m.top),C=Math.max(0,z,A,i-m.bottom),D=s.top+m.top-B,E=i-m.top-s.bottom-C,F=i-B-C,G="",H=0,I=0;return D>=F||E>=F?this.hide():(a.Env.iOS&&"IMG"===f.nodeName&&(H=54,I=46),this.bottom?E>=w?(G=" mce-arrow-up",b=s.bottom+m.top+e-I):D>=w&&(G=" mce-arrow-down",b=s.top+m.top+e-r-v+H):D>=w?(G=" mce-arrow-down",b=s.top+m.top+e-r-v+H):E>=w&&F/2>s.bottom+m.top-B&&(G=" mce-arrow-up",b=s.bottom+m.top+e-I),"undefined"==typeof b&&(b=e+B+u+I),c=t-o/2+m.left+d,s.left<0||s.right>m.width?c=m.left+d+(m.width-o)/2:o>=h?(G+=" mce-arrow-full",c=0):0>c&&s.left+o>h||c+o>h&&s.right-o<0?c=(h-o)/2:c<m.left+d?(G+=" mce-arrow-left",c=s.left+m.left+d):c+o>m.width+m.left+d&&(G+=" mce-arrow-right",c=s.right-o+m.left+d),a.Env.iOS&&"IMG"===f.nodeName&&(G=G.replace(/ ?mce-arrow-(up|down)/g,"")),n.className=n.className.replace(/ ?mce-arrow-[\w]+/g,"")+G,g.setStyles(n,{left:c,top:b}),this)}var i,o,r=[];return h(c,function(a){function c(){var c=b.selection;"bullist"===d&&c.selectorChanged("ul > li",function(b,c){for(var d,e=c.parents.length;e--&&(d=c.parents[e].nodeName,"OL"!==d&&"UL"!=d););a.active(b&&"UL"===d)}),"numlist"===d&&c.selectorChanged("ol > li",function(b,c){for(var d,e=c.parents.length;e--&&(d=c.parents[e].nodeName,"OL"!==d&&"UL"!==d););a.active(b&&"OL"===d)}),a.settings.stateSelector&&c.selectorChanged(a.settings.stateSelector,function(b){a.active(b)},!0),a.settings.disabledStateSelector&&c.selectorChanged(a.settings.disabledStateSelector,function(b){a.disabled(b)})}var d;"|"===a?o=null:m.has(a)?(a={type:a},n.toolbar_items_size&&(a.size=n.toolbar_items_size),r.push(a),o=null):(o||(o={type:"buttongroup",items:[]},r.push(o)),b.buttons[a]&&(d=a,a=b.buttons[d],"function"==typeof a&&(a=a()),a.type=a.type||"button",n.toolbar_items_size&&(a.size=n.toolbar_items_size),a=m.create(a),o.items.push(a),b.initialized?c():b.on("init",c)))}),i=m.create({type:"panel",layout:"stack",classes:"toolbar-grp inline-toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:[{type:"toolbar",layout:"flow",items:r}]}),i.bottom=d,i.on("show",function(){this.reposition()}),i.on("keydown",function(a){27===a.keyCode&&(this.hide(),b.focus())}),b.on("remove",function(){i.remove()}),i.reposition=e,i.hide().renderTo(document.body),i}function d(a){e&&(e.hide(),"hide"===a.type?e=!1:("resize"===a.type||"scroll"===a.type)&&(clearTimeout(i),i=setTimeout(function(){e&&"function"==typeof e.show&&e.show()},250)))}var e,f,i,j,k,l,m=a.ui.Factory,n=b.settings,o=b.getContainer(),p=document.getElementById("wpadminbar"),q=document.getElementById(b.id+"_ifr");o&&(j=a.$(".mce-toolbar-grp",o)[0],k=a.$(".mce-statusbar",o)[0]),"content"===b.id&&(l=document.getElementById("post-status-info")),b.shortcuts.add("alt+119","",function(){var a;e&&(a=e.find("toolbar")[0],a&&a.focus(!0))}),b.on("nodechange",function(a){var c=b.selection.isCollapsed(),d={element:a.element,parents:a.parents,collapsed:c};b.fire("wptoolbar",d),f=d.selection||d.element,e&&e.hide(),d.toolbar?(e=d.toolbar,e.show()):e=!1}),b.on("focus",function(){e&&e.show()}),g.bind(window,"resize scroll",d),b.dom.bind(b.getWin(),"resize scroll",d),b.on("remove",function(){g.unbind(window,"resize scroll",d),b.dom.unbind(b.getWin(),"resize scroll",d)}),b.on("blur hide",d),b.wp=b.wp||{},b.wp._createToolbar=c},!0),{_showButtons:d,_hideButtons:d,_setEmbed:d,_getEmbed:d}})}(window.tinymce);
\ No newline at end of file
index 2779cd39dd5a80cc369265a80021bd2172d7f6fd..a18401e5cf43954834b5c09ddc137961ff7a7f2c 100644 (file)
@@ -1,6 +1,6 @@
 /* global tinymce */
 tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
-       var toolbar, serializer,
+       var toolbar, serializer, touchOnImage,
                each = tinymce.each,
                trim = tinymce.trim,
                iOS = tinymce.Env.iOS;
@@ -37,7 +37,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
                        tooltip: tooltip,
                        icon: 'dashicon dashicons-align-' + direction,
                        cmd: 'alignnone' === name ? 'wpAlignNone' : 'Justify' + direction.slice( 0, 1 ).toUpperCase() + direction.slice( 1 ),
-                       onPostRender: function() {
+                       onPostRender: function() {
                                var self = this;
 
                                editor.on( 'NodeChange', function( event ) {
@@ -79,21 +79,37 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
                }
        } );
 
-       // Safari on iOS fails to select image nodes in contentEditoble mode on touch/click.
+       // Safari on iOS fails to select images in contentEditoble mode on touch.
        // Select them again.
        if ( iOS ) {
-               editor.on( 'click', function( event ) {
-                       if ( event.target.nodeName === 'IMG' ) {
-                               var node = event.target;
+               editor.on( 'init', function() {
+                       editor.on( 'touchstart', function( event ) {
+                               if ( event.target.nodeName === 'IMG' ) {
+                                       touchOnImage = true;
+                               }
+                       });
 
-                               window.setTimeout( function() {
-                                       editor.selection.select( node );
-                                       editor.nodeChanged();
-                               }, 200 );
-                       } else if ( toolbar ) {
-                               toolbar.hide();
-                       }
-               } );
+                       editor.dom.bind( editor.getDoc(), 'touchmove', function( event ) {
+                               if ( event.target.nodeName === 'IMG' ) {
+                                       touchOnImage = false;
+                               }
+                       });
+
+                       editor.on( 'touchend', function( event ) {
+                               if ( touchOnImage && event.target.nodeName === 'IMG' ) {
+                                       var node = event.target;
+
+                                       touchOnImage = false;
+
+                                       window.setTimeout( function() {
+                                               editor.selection.select( node );
+                                               editor.nodeChanged();
+                                       }, 200 );
+                               } else if ( toolbar ) {
+                                       toolbar.hide();
+                               }
+                       });
+               });
        }
 
        function parseShortcode( content ) {
@@ -159,13 +175,13 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
        }
 
        function getShortcode( content ) {
-               return content.replace( /<div (?:id="attachment_|class="mceTemp)[^>]*>([\s\S]+?)<\/div>/g, function( a, b ) {
+               return content.replace( /(?:<div [^>]+mceTemp[^>]+>)?\s*(<dl [^>]+wp-caption[^>]+>[\s\S]+?<\/dl>)\s*(?:<\/div>)?/g, function( all, dl ) {
                        var out = '';
 
-                       if ( b.indexOf('<img ') === -1 ) {
+                       if ( dl.indexOf('<img ') === -1 ) {
                                // Broken caption. The user managed to drag the image out?
                                // Try to return the caption text as a paragraph.
-                               out = b.match( /<dd [^>]+>([\s\S]+?)<\/dd>/i );
+                               out = dl.match( /<dd [^>]+>([\s\S]+?)<\/dd>/i );
 
                                if ( out && out[1] ) {
                                        return '<p>' + out[1] + '</p>';
@@ -174,7 +190,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
                                return '';
                        }
 
-                       out = b.replace( /\s*<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>\s*/gi, function( a, b, c, caption ) {
+                       out = dl.replace( /\s*<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>\s*/gi, function( a, b, c, caption ) {
                                var id, classes, align, width;
 
                                width = c.match( /width="([0-9]*)"/ );
@@ -214,7 +230,7 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
                        if ( out.indexOf('[caption') === -1 ) {
                                // the caption html seems broken, try to find the image that may be wrapped in a link
                                // and may be followed by <p> with the caption text.
-                               out = b.replace( /[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi, '<p>$1</p>$2' );
+                               out = dl.replace( /[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi, '<p>$1</p>$2' );
                        }
 
                        return out;
@@ -782,15 +798,6 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
                        }
                });
 
-               dom.bind( editor.getDoc(), 'dragstart', function( event ) {
-                       var node = editor.selection.getNode();
-
-                       // Prevent dragging images out of the caption elements
-                       if ( node.nodeName === 'IMG' && dom.getParent( node, '.wp-caption' ) ) {
-                               event.preventDefault();
-                       }
-               });
-
                // Prevent IE11 from making dl.wp-caption resizable
                if ( tinymce.Env.ie && tinymce.Env.ie > 10 ) {
                        // The 'mscontrolselect' event is supported only in IE11+
@@ -964,6 +971,42 @@ tinymce.PluginManager.add( 'wpeditimage', function( editor ) {
                }
        });
 
+       ( function() {
+               var wrap;
+
+               editor.on( 'dragstart', function() {
+                       var node = editor.selection.getNode();
+
+                       if ( node.nodeName === 'IMG' ) {
+                               wrap = editor.dom.getParent( node, '.mceTemp' );
+
+                               if ( ! wrap && node.parentNode.nodeName === 'A' && ! hasTextContent( node.parentNode ) ) {
+                                       wrap = node.parentNode;
+                               }
+                       }
+               } );
+
+               editor.on( 'drop', function( event ) {
+                       var dom = editor.dom,
+                               rng = tinymce.dom.RangeUtils.getCaretRangeFromPoint( event.clientX, event.clientY, editor.getDoc() );
+
+                       // Don't allow anything to be dropped in a captioned image.
+                       if ( dom.getParent( rng.startContainer, '.mceTemp' ) ) {
+                               event.preventDefault();
+                       } else if ( wrap ) {
+                               event.preventDefault();
+
+                               editor.undoManager.transact( function() {
+                                       editor.selection.setRng( rng );
+                                       editor.selection.setNode( wrap );
+                                       dom.remove( wrap );
+                               } );
+                       }
+
+                       wrap = null;
+               } );
+       } )();
+
        // Add to editor.wp
        editor.wp = editor.wp || {};
        editor.wp.isPlaceholder = isPlaceholder;
index 3f01255379ec8c4dfab8c9e116cbecb94992ab73..d10d6915396c3a1e61e77d6cb49800ef41b5ad76 100644 (file)
@@ -1 +1 @@
-tinymce.PluginManager.add("wpeditimage",function(a){function b(b){return!(!a.dom.getAttrib(b,"data-mce-placeholder")&&!a.dom.getAttrib(b,"data-mce-object"))}function c(b){return b.replace(/(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g,function(b,c,d){var e,f,g,h,i,j;return e=c.match(/id=['"]([^'"]*)['"] ?/),e&&(c=c.replace(e[0],"")),f=c.match(/align=['"]([^'"]*)['"] ?/),f&&(c=c.replace(f[0],"")),g=c.match(/class=['"]([^'"]*)['"] ?/),g&&(c=c.replace(g[0],"")),j=c.match(/width=['"]([0-9]*)['"] ?/),j&&(c=c.replace(j[0],"")),d=n(d),i=d.match(/((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i),i&&i[2]?(h=n(i[2]),i=n(i[1])):(h=n(c).replace(/caption=['"]/,"").replace(/['"]$/,""),i=d),e=e&&e[1]?e[1].replace(/[<>&]+/g,""):"",f=f&&f[1]?f[1]:"alignnone",g=g&&g[1]?" "+g[1].replace(/[<>&]+/g,""):"",!j&&i&&(j=i.match(/width=['"]([0-9]*)['"]/)),j&&j[1]&&(j=j[1]),j&&h?(j=parseInt(j,10),a.getParam("wpeditimage_html5_captions")||(j+=10),'<div class="mceTemp"><dl id="'+e+'" class="wp-caption '+f+g+'" style="width: '+j+'px"><dt class="wp-caption-dt">'+i+'</dt><dd class="wp-caption-dd">'+h+"</dd></dl></div>"):d})}function d(a){return a.replace(/<div (?:id="attachment_|class="mceTemp)[^>]*>([\s\S]+?)<\/div>/g,function(a,b){var c="";return-1===b.indexOf("<img ")?(c=b.match(/<dd [^>]+>([\s\S]+?)<\/dd>/i),c&&c[1]?"<p>"+c[1]+"</p>":""):(c=b.replace(/\s*<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>\s*/gi,function(a,b,c,d){var e,f,g,h;return h=c.match(/width="([0-9]*)"/),h=h&&h[1]?h[1]:"",f=b.match(/class="([^"]*)"/),f=f&&f[1]?f[1]:"",g=f.match(/align[a-z]+/i)||"alignnone",h&&d?(e=b.match(/id="([^"]*)"/),e=e&&e[1]?e[1]:"",f=f.replace(/wp-caption ?|align[a-z]+ ?/gi,""),f&&(f=' class="'+f+'"'),d=d.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(a){return a.replace(/[\r\n\t]+/," ")}),d=d.replace(/\s*\n\s*/g,"<br />"),'[caption id="'+e+'" align="'+g+'" width="'+h+'"'+f+"]"+c+" "+d+"[/caption]"):("alignnone"!==g[0]&&(c=c.replace(/><img/,' class="'+g[0]+'"><img')),c)}),-1===c.indexOf("[caption")&&(c=b.replace(/[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi,"<p>$1</p>$2")),c)})}function e(b){var c,d,e,f,g,h,i,j,k=[],l=a.dom,m=/^\d+$/;return e={attachment_id:!1,size:"custom",caption:"",align:"none",extraClasses:"",link:!1,linkUrl:"",linkClassName:"",linkTargetBlank:!1,linkRel:"",title:""},e.url=l.getAttrib(b,"src"),e.alt=l.getAttrib(b,"alt"),e.title=l.getAttrib(b,"title"),i=l.getAttrib(b,"width"),j=l.getAttrib(b,"height"),(!m.test(i)||parseInt(i,10)<1)&&(i=b.naturalWidth||b.width),(!m.test(j)||parseInt(j,10)<1)&&(j=b.naturalHeight||b.height),e.customWidth=e.width=i,e.customHeight=e.height=j,c=tinymce.explode(b.className," "),d=[],tinymce.each(c,function(a){/^wp-image/.test(a)?e.attachment_id=parseInt(a.replace("wp-image-",""),10):/^align/.test(a)?e.align=a.replace("align",""):/^size/.test(a)?e.size=a.replace("size-",""):d.push(a)}),e.extraClasses=d.join(" "),f=l.getParents(b,".wp-caption"),f.length&&(f=f[0],c=f.className.split(" "),tinymce.each(c,function(a){/^align/.test(a)?e.align=a.replace("align",""):a&&"wp-caption"!==a&&k.push(a)}),e.captionClassName=k.join(" "),g=l.select("dd.wp-caption-dd",f),g.length&&(g=g[0],e.caption=a.serializer.serialize(g).replace(/<br[^>]*>/g,"$&\n").replace(/^<p>/,"").replace(/<\/p>$/,""))),b.parentNode&&"A"===b.parentNode.nodeName&&(h=b.parentNode,e.linkUrl=l.getAttrib(h,"href"),e.linkTargetBlank="_blank"===l.getAttrib(h,"target")?!0:!1,e.linkRel=l.getAttrib(h,"rel"),e.linkClassName=h.className),e}function f(a){return a&&!(!a.textContent&&!a.innerText)}function g(b){return!b||-1===b.indexOf("<")&&-1===b.indexOf(">")?b:(l||(l=new tinymce.html.Serializer({},a.schema)),l.serialize(a.parser.parse(b,{forced_root_block:!1})))}function h(b,c){var d,e,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=a.dom;d=tinymce.explode(c.extraClasses," "),d||(d=[]),c.caption||d.push("align"+c.align),c.attachment_id&&(d.push("wp-image-"+c.attachment_id),c.size&&"custom"!==c.size&&d.push("size-"+c.size)),s=c.width,t=c.height,"custom"===c.size&&(s=c.customWidth,t=c.customHeight),q={src:c.url,width:s||null,height:t||null,alt:c.alt,title:c.title||null,"class":d.join(" ")||null},v.setAttribs(b,q),r={href:c.linkUrl,rel:c.linkRel||null,target:c.linkTargetBlank?"_blank":null,"class":c.linkClassName||null},b.parentNode&&"A"===b.parentNode.nodeName&&!f(b.parentNode)?c.linkUrl?v.setAttribs(b.parentNode,r):v.remove(b.parentNode,!0):c.linkUrl&&((l=v.getParent(b,"a"))&&v.insertAfter(b,l),l=v.create("a",r),b.parentNode.insertBefore(l,b),l.appendChild(b)),m=a.dom.getParent(b,".mceTemp"),h=b.parentNode&&"A"===b.parentNode.nodeName&&!f(b.parentNode)?b.parentNode:b,c.caption?(c.caption=g(c.caption),p=c.attachment_id?"attachment_"+c.attachment_id:null,u="align"+(c.align||"none"),e="wp-caption "+u,c.captionClassName&&(e+=" "+c.captionClassName.replace(/[<>&]+/g,"")),a.getParam("wpeditimage_html5_captions")||(s=parseInt(s,10),s+=10),m?(o=v.select("dl.wp-caption",m),o.length&&v.setAttribs(o,{id:p,"class":e,style:"width: "+s+"px"}),n=v.select(".wp-caption-dd",m),n.length&&v.setHTML(n[0],c.caption)):(p=p?'id="'+p+'" ':"",i="<dl "+p+'class="'+e+'" style="width: '+s+'px"><dt class="wp-caption-dt"></dt><dd class="wp-caption-dd">'+c.caption+"</dd></dl>",k=v.create("div",{"class":"mceTemp"},i),(j=v.getParent(h,"p"))?j.parentNode.insertBefore(k,j):h.parentNode.insertBefore(k,h),a.$(k).find("dt.wp-caption-dt").append(h),j&&v.isEmpty(j)&&v.remove(j))):m&&(j=v.create("p"),m.parentNode.insertBefore(j,m),j.appendChild(h),v.remove(m)),wp.media.events&&wp.media.events.trigger("editor:image-update",{editor:a,metadata:c,image:b}),a.nodeChanged()}function i(b){var c,d,f;return"undefined"!=typeof wp&&wp.media?(f=e(b),wp.media.events.trigger("editor:image-edit",{editor:a,metadata:f,image:b}),c=wp.media({frame:"image",state:"image-details",metadata:f}),wp.media.events.trigger("editor:frame-create",{frame:c}),d=function(d){a.focus(),a.undoManager.transact(function(){h(b,d)}),c.detach()},c.state("image-details").on("update",d),c.state("replace-image").on("replace",d),c.on("close",function(){a.focus(),c.detach()}),void c.open()):void a.execCommand("mceImage")}function j(b){var c=a.dom.getParent(b,"div.mceTemp");c||"IMG"!==b.nodeName||(c=a.dom.getParent(b,"a")),c?(c.nextSibling?a.selection.select(c.nextSibling):c.previousSibling?a.selection.select(c.previousSibling):a.selection.select(c.parentNode),a.selection.collapse(!0),a.dom.remove(c)):a.dom.remove(b),a.nodeChanged(),a.undoManager.add()}var k,l,m=tinymce.each,n=tinymce.trim,o=tinymce.Env.iOS;return a.addButton("wp_img_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",onclick:function(){j(a.selection.getNode())}}),a.addButton("wp_img_edit",{tooltip:"Edit ",icon:"dashicon dashicons-edit",onclick:function(){i(a.selection.getNode())}}),m({alignleft:"Align left",aligncenter:"Align center",alignright:"Align right",alignnone:"No alignment"},function(b,c){var d=c.slice(5);a.addButton("wp_img_"+c,{tooltip:b,icon:"dashicon dashicons-align-"+d,cmd:"alignnone"===c?"wpAlignNone":"Justify"+d.slice(0,1).toUpperCase()+d.slice(1),onPostRender:function(){var b=this;a.on("NodeChange",function(d){var e;"IMG"===d.element.nodeName&&(e=a.dom.getParent(d.element,".wp-caption")||d.element,"alignnone"===c?b.active(!/\balign(left|center|right)\b/.test(e.className)):b.active(a.dom.hasClass(e,c)))})}})}),a.once("preinit",function(){a.wp&&a.wp._createToolbar&&(k=a.wp._createToolbar(["wp_img_alignleft","wp_img_aligncenter","wp_img_alignright","wp_img_alignnone","wp_img_edit","wp_img_remove"]))}),a.on("wptoolbar",function(a){"IMG"!==a.element.nodeName||b(a.element)||(a.toolbar=k)}),o&&a.on("click",function(b){if("IMG"===b.target.nodeName){var c=b.target;window.setTimeout(function(){a.selection.select(c),a.nodeChanged()},200)}else k&&k.hide()}),a.on("init",function(){var b=a.dom,c=a.getParam("wpeditimage_html5_captions")?"html5-captions":"html4-captions";b.addClass(a.getBody(),c),a.on("wpLoadImageForm",function(b){if(!a.getParam("wpeditimage_disable_captions")){var c={type:"textbox",flex:1,name:"caption",minHeight:60,multiline:!0,scroll:!0,label:"Image caption"};b.data.splice(b.data.length-1,0,c)}}),a.on("wpNewImageRefresh",function(a){var c,d;(c=b.getParent(a.node,"dl.wp-caption"))&&(c.style.width||(d=parseInt(a.node.clientWidth,10)+10,d=d?d+"px":"50%",b.setStyle(c,"width",d)))}),a.on("wpImageFormSubmit",function(c){var d,e,f,h,i,j=c.imgData.data,k=c.imgData.node,l=c.imgData.caption,m="",n="",o="";return j.id="__wp-temp-img-id",c.imgData.cancel=!0,j.style||(j.style=null),j.src?(l&&(l=l.replace(/\r\n|\r/g,"\n").replace(/<\/?[a-zA-Z0-9]+( [^<>]+)?>/g,function(a){return a.replace(/[\r\n\t]+/," ")}),l=l.replace(/(<br[^>]*>)\s*\n\s*/g,"$1").replace(/\s*\n\s*/g,"<br />"),l=g(l)),k?(i=k.id||null,b.setAttribs(k,j),d=b.getParent(k,"dl.wp-caption"),l?d?(e=b.select("dd.wp-caption-dd",d)[0])&&(e.innerHTML=l):(k.className&&(m=k.className.match(/wp-image-([0-9]+)/),n=k.className.match(/align(left|right|center|none)/)),n?(n=n[0],k.className=k.className.replace(/align(left|right|center|none)/g,"")):n="alignnone",n=' class="wp-caption '+n+'"',m&&(m=' id="attachment_'+m[1]+'"'),o=j.width||k.clientWidth,o&&(o=parseInt(o,10),a.getParam("wpeditimage_html5_captions")||(o+=10),o=' style="width: '+o+'px"'),f=k.parentNode&&"A"===k.parentNode.nodeName?k.parentNode:k,h="<dl "+m+n+o+'><dt class="wp-caption-dt"></dt><dd class="wp-caption-dd">'+l+"</dd></dl>",d=b.create("div",{"class":"mceTemp"},h),(e=b.getParent(f,"p"))?e.parentNode.insertBefore(d,e):f.parentNode.insertBefore(d,f),a.$(d).find("dt.wp-caption-dt").append(f),e&&b.isEmpty(e)&&b.remove(e)):d&&(h="A"===k.parentNode.nodeName?b.getOuterHTML(k.parentNode):b.getOuterHTML(k),e=b.create("p",{},h),b.insertAfter(e,d.parentNode),a.selection.select(e),a.nodeChanged(),b.remove(d.parentNode))):(h=b.createHTML("img",j),l?(f=a.selection.getNode(),j.width&&(o=parseInt(j.width,10),a.getParam("wpeditimage_html5_captions")||(o+=10),o=' style="width: '+o+'px"'),h='<dl class="wp-caption alignnone"'+o+'><dt class="wp-caption-dt">'+h+'</dt><dd class="wp-caption-dd">'+l+"</dd></dl>",e="P"===f.nodeName?f:b.getParent(f,"p"),e&&"P"===e.nodeName?(d=b.create("div",{"class":"mceTemp"},h),e.parentNode.insertBefore(d,e),a.selection.select(d),a.nodeChanged(),b.isEmpty(e)&&b.remove(e)):a.selection.setContent('<div class="mceTemp">'+h+"</div>")):a.selection.setContent(h)),k=b.get("__wp-temp-img-id"),b.setAttrib(k,"id",i),void(c.imgData.node=k)):void(k&&((d=b.getParent(k,"div.mceTemp"))?b.remove(d):"A"===k.parentNode.nodeName?b.remove(k.parentNode):b.remove(k),a.nodeChanged()))}),a.on("wpLoadImageData",function(c){var d,e=c.imgData.data,f=c.imgData.node;(d=b.getParent(f,"dl.wp-caption"))&&(d=b.select("dd.wp-caption-dd",d)[0],d&&(e.caption=a.serializer.serialize(d).replace(/<br[^>]*>/g,"$&\n").replace(/^<p>/,"").replace(/<\/p>$/,"")))}),b.bind(a.getDoc(),"dragstart",function(c){var d=a.selection.getNode();"IMG"===d.nodeName&&b.getParent(d,".wp-caption")&&c.preventDefault()}),tinymce.Env.ie&&tinymce.Env.ie>10&&b.bind(a.getBody(),"mscontrolselect",function(c){"IMG"===c.target.nodeName&&b.getParent(c.target,".wp-caption")?a.getBody().focus():"DL"===c.target.nodeName&&b.hasClass(c.target,"wp-caption")&&c.target.focus()})}),a.on("ObjectResized",function(b){var c=b.target;"IMG"===c.nodeName&&a.undoManager.transact(function(){var d,e,f=a.dom;c.className=c.className.replace(/\bsize-[^ ]+/,""),(d=f.getParent(c,".wp-caption"))&&(e=b.width||f.getAttrib(c,"width"),e&&(e=parseInt(e,10),a.getParam("wpeditimage_html5_captions")||(e+=10),f.setStyle(d,"width",e+"px")))})}),a.on("BeforeExecCommand",function(b){var c,d,e,f,g,h=b.command,i=a.dom;if("mceInsertContent"===h)(c=i.getParent(a.selection.getNode(),"div.mceTemp"))&&(d=i.create("p"),i.insertAfter(d,c),a.selection.setCursorLocation(d,0),a.nodeChanged());else if("JustifyLeft"===h||"JustifyRight"===h||"JustifyCenter"===h||"wpAlignNone"===h){if(c=a.selection.getNode(),f="align"+h.slice(7).toLowerCase(),e=a.dom.getParent(c,".wp-caption"),"IMG"!==c.nodeName&&!e)return;c=e||c,g=a.dom.hasClass(c,f)?" alignnone":" "+f,c.className=n(c.className.replace(/ ?align(left|center|right|none)/g,"")+g),a.nodeChanged(),b.preventDefault(),k&&k.reposition(),a.fire("ExecCommand",{command:h,ui:b.ui,value:b.value})}}),a.on("keydown",function(b){var c,d,e,f,g=a.selection,h=b.keyCode,i=a.dom,k=tinymce.util.VK;if(h===k.ENTER)c=g.getNode(),d=i.getParent(c,"div.mceTemp"),d&&(i.events.cancel(b),tinymce.each(i.select("dt, dd",d),function(a){i.isEmpty(a)&&i.remove(a)}),f=tinymce.Env.ie&&tinymce.Env.ie<11?"":'<br data-mce-bogus="1" />',e=i.create("p",null,f),"DD"===c.nodeName?i.insertAfter(e,d):d.parentNode.insertBefore(e,d),a.nodeChanged(),g.setCursorLocation(e,0));else if((h===k.DELETE||h===k.BACKSPACE)&&(c=g.getNode(),"DIV"===c.nodeName&&i.hasClass(c,"mceTemp")?d=c:("IMG"===c.nodeName||"DT"===c.nodeName||"A"===c.nodeName)&&(d=i.getParent(c,"div.mceTemp")),d))return i.events.cancel(b),j(c),!1}),tinymce.Env.gecko&&a.on("undo redo",function(){"IMG"===a.selection.getNode().nodeName&&a.selection.collapse()}),a.wpSetImgCaption=function(a){return c(a)},a.wpGetImgCaption=function(a){return d(a)},a.on("BeforeSetContent",function(b){"raw"!==b.format&&(b.content=a.wpSetImgCaption(b.content))}),a.on("PostProcess",function(b){b.get&&(b.content=a.wpGetImgCaption(b.content))}),a.wp=a.wp||{},a.wp.isPlaceholder=b,{_do_shcode:c,_get_shcode:d}});
\ No newline at end of file
+tinymce.PluginManager.add("wpeditimage",function(a){function b(b){return!(!a.dom.getAttrib(b,"data-mce-placeholder")&&!a.dom.getAttrib(b,"data-mce-object"))}function c(b){return b.replace(/(?:<p>)?\[(?:wp_)?caption([^\]]+)\]([\s\S]+?)\[\/(?:wp_)?caption\](?:<\/p>)?/g,function(b,c,d){var e,f,g,h,i,j;return e=c.match(/id=['"]([^'"]*)['"] ?/),e&&(c=c.replace(e[0],"")),f=c.match(/align=['"]([^'"]*)['"] ?/),f&&(c=c.replace(f[0],"")),g=c.match(/class=['"]([^'"]*)['"] ?/),g&&(c=c.replace(g[0],"")),j=c.match(/width=['"]([0-9]*)['"] ?/),j&&(c=c.replace(j[0],"")),d=o(d),i=d.match(/((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i),i&&i[2]?(h=o(i[2]),i=o(i[1])):(h=o(c).replace(/caption=['"]/,"").replace(/['"]$/,""),i=d),e=e&&e[1]?e[1].replace(/[<>&]+/g,""):"",f=f&&f[1]?f[1]:"alignnone",g=g&&g[1]?" "+g[1].replace(/[<>&]+/g,""):"",!j&&i&&(j=i.match(/width=['"]([0-9]*)['"]/)),j&&j[1]&&(j=j[1]),j&&h?(j=parseInt(j,10),a.getParam("wpeditimage_html5_captions")||(j+=10),'<div class="mceTemp"><dl id="'+e+'" class="wp-caption '+f+g+'" style="width: '+j+'px"><dt class="wp-caption-dt">'+i+'</dt><dd class="wp-caption-dd">'+h+"</dd></dl></div>"):d})}function d(a){return a.replace(/(?:<div [^>]+mceTemp[^>]+>)?\s*(<dl [^>]+wp-caption[^>]+>[\s\S]+?<\/dl>)\s*(?:<\/div>)?/g,function(a,b){var c="";return-1===b.indexOf("<img ")?(c=b.match(/<dd [^>]+>([\s\S]+?)<\/dd>/i),c&&c[1]?"<p>"+c[1]+"</p>":""):(c=b.replace(/\s*<dl ([^>]+)>\s*<dt [^>]+>([\s\S]+?)<\/dt>\s*<dd [^>]+>([\s\S]*?)<\/dd>\s*<\/dl>\s*/gi,function(a,b,c,d){var e,f,g,h;return h=c.match(/width="([0-9]*)"/),h=h&&h[1]?h[1]:"",f=b.match(/class="([^"]*)"/),f=f&&f[1]?f[1]:"",g=f.match(/align[a-z]+/i)||"alignnone",h&&d?(e=b.match(/id="([^"]*)"/),e=e&&e[1]?e[1]:"",f=f.replace(/wp-caption ?|align[a-z]+ ?/gi,""),f&&(f=' class="'+f+'"'),d=d.replace(/\r\n|\r/g,"\n").replace(/<[a-zA-Z0-9]+( [^<>]+)?>/g,function(a){return a.replace(/[\r\n\t]+/," ")}),d=d.replace(/\s*\n\s*/g,"<br />"),'[caption id="'+e+'" align="'+g+'" width="'+h+'"'+f+"]"+c+" "+d+"[/caption]"):("alignnone"!==g[0]&&(c=c.replace(/><img/,' class="'+g[0]+'"><img')),c)}),-1===c.indexOf("[caption")&&(c=b.replace(/[\s\S]*?((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)(<p>[\s\S]*<\/p>)?[\s\S]*/gi,"<p>$1</p>$2")),c)})}function e(b){var c,d,e,f,g,h,i,j,k=[],l=a.dom,m=/^\d+$/;return e={attachment_id:!1,size:"custom",caption:"",align:"none",extraClasses:"",link:!1,linkUrl:"",linkClassName:"",linkTargetBlank:!1,linkRel:"",title:""},e.url=l.getAttrib(b,"src"),e.alt=l.getAttrib(b,"alt"),e.title=l.getAttrib(b,"title"),i=l.getAttrib(b,"width"),j=l.getAttrib(b,"height"),(!m.test(i)||parseInt(i,10)<1)&&(i=b.naturalWidth||b.width),(!m.test(j)||parseInt(j,10)<1)&&(j=b.naturalHeight||b.height),e.customWidth=e.width=i,e.customHeight=e.height=j,c=tinymce.explode(b.className," "),d=[],tinymce.each(c,function(a){/^wp-image/.test(a)?e.attachment_id=parseInt(a.replace("wp-image-",""),10):/^align/.test(a)?e.align=a.replace("align",""):/^size/.test(a)?e.size=a.replace("size-",""):d.push(a)}),e.extraClasses=d.join(" "),f=l.getParents(b,".wp-caption"),f.length&&(f=f[0],c=f.className.split(" "),tinymce.each(c,function(a){/^align/.test(a)?e.align=a.replace("align",""):a&&"wp-caption"!==a&&k.push(a)}),e.captionClassName=k.join(" "),g=l.select("dd.wp-caption-dd",f),g.length&&(g=g[0],e.caption=a.serializer.serialize(g).replace(/<br[^>]*>/g,"$&\n").replace(/^<p>/,"").replace(/<\/p>$/,""))),b.parentNode&&"A"===b.parentNode.nodeName&&(h=b.parentNode,e.linkUrl=l.getAttrib(h,"href"),e.linkTargetBlank="_blank"===l.getAttrib(h,"target")?!0:!1,e.linkRel=l.getAttrib(h,"rel"),e.linkClassName=h.className),e}function f(a){return a&&!(!a.textContent&&!a.innerText)}function g(b){return!b||-1===b.indexOf("<")&&-1===b.indexOf(">")?b:(l||(l=new tinymce.html.Serializer({},a.schema)),l.serialize(a.parser.parse(b,{forced_root_block:!1})))}function h(b,c){var d,e,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v=a.dom;d=tinymce.explode(c.extraClasses," "),d||(d=[]),c.caption||d.push("align"+c.align),c.attachment_id&&(d.push("wp-image-"+c.attachment_id),c.size&&"custom"!==c.size&&d.push("size-"+c.size)),s=c.width,t=c.height,"custom"===c.size&&(s=c.customWidth,t=c.customHeight),q={src:c.url,width:s||null,height:t||null,alt:c.alt,title:c.title||null,"class":d.join(" ")||null},v.setAttribs(b,q),r={href:c.linkUrl,rel:c.linkRel||null,target:c.linkTargetBlank?"_blank":null,"class":c.linkClassName||null},b.parentNode&&"A"===b.parentNode.nodeName&&!f(b.parentNode)?c.linkUrl?v.setAttribs(b.parentNode,r):v.remove(b.parentNode,!0):c.linkUrl&&((l=v.getParent(b,"a"))&&v.insertAfter(b,l),l=v.create("a",r),b.parentNode.insertBefore(l,b),l.appendChild(b)),m=a.dom.getParent(b,".mceTemp"),h=b.parentNode&&"A"===b.parentNode.nodeName&&!f(b.parentNode)?b.parentNode:b,c.caption?(c.caption=g(c.caption),p=c.attachment_id?"attachment_"+c.attachment_id:null,u="align"+(c.align||"none"),e="wp-caption "+u,c.captionClassName&&(e+=" "+c.captionClassName.replace(/[<>&]+/g,"")),a.getParam("wpeditimage_html5_captions")||(s=parseInt(s,10),s+=10),m?(o=v.select("dl.wp-caption",m),o.length&&v.setAttribs(o,{id:p,"class":e,style:"width: "+s+"px"}),n=v.select(".wp-caption-dd",m),n.length&&v.setHTML(n[0],c.caption)):(p=p?'id="'+p+'" ':"",i="<dl "+p+'class="'+e+'" style="width: '+s+'px"><dt class="wp-caption-dt"></dt><dd class="wp-caption-dd">'+c.caption+"</dd></dl>",k=v.create("div",{"class":"mceTemp"},i),(j=v.getParent(h,"p"))?j.parentNode.insertBefore(k,j):h.parentNode.insertBefore(k,h),a.$(k).find("dt.wp-caption-dt").append(h),j&&v.isEmpty(j)&&v.remove(j))):m&&(j=v.create("p"),m.parentNode.insertBefore(j,m),j.appendChild(h),v.remove(m)),wp.media.events&&wp.media.events.trigger("editor:image-update",{editor:a,metadata:c,image:b}),a.nodeChanged()}function i(b){var c,d,f;return"undefined"!=typeof wp&&wp.media?(f=e(b),wp.media.events.trigger("editor:image-edit",{editor:a,metadata:f,image:b}),c=wp.media({frame:"image",state:"image-details",metadata:f}),wp.media.events.trigger("editor:frame-create",{frame:c}),d=function(d){a.focus(),a.undoManager.transact(function(){h(b,d)}),c.detach()},c.state("image-details").on("update",d),c.state("replace-image").on("replace",d),c.on("close",function(){a.focus(),c.detach()}),void c.open()):void a.execCommand("mceImage")}function j(b){var c=a.dom.getParent(b,"div.mceTemp");c||"IMG"!==b.nodeName||(c=a.dom.getParent(b,"a")),c?(c.nextSibling?a.selection.select(c.nextSibling):c.previousSibling?a.selection.select(c.previousSibling):a.selection.select(c.parentNode),a.selection.collapse(!0),a.dom.remove(c)):a.dom.remove(b),a.nodeChanged(),a.undoManager.add()}var k,l,m,n=tinymce.each,o=tinymce.trim,p=tinymce.Env.iOS;return a.addButton("wp_img_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",onclick:function(){j(a.selection.getNode())}}),a.addButton("wp_img_edit",{tooltip:"Edit ",icon:"dashicon dashicons-edit",onclick:function(){i(a.selection.getNode())}}),n({alignleft:"Align left",aligncenter:"Align center",alignright:"Align right",alignnone:"No alignment"},function(b,c){var d=c.slice(5);a.addButton("wp_img_"+c,{tooltip:b,icon:"dashicon dashicons-align-"+d,cmd:"alignnone"===c?"wpAlignNone":"Justify"+d.slice(0,1).toUpperCase()+d.slice(1),onPostRender:function(){var b=this;a.on("NodeChange",function(d){var e;"IMG"===d.element.nodeName&&(e=a.dom.getParent(d.element,".wp-caption")||d.element,"alignnone"===c?b.active(!/\balign(left|center|right)\b/.test(e.className)):b.active(a.dom.hasClass(e,c)))})}})}),a.once("preinit",function(){a.wp&&a.wp._createToolbar&&(k=a.wp._createToolbar(["wp_img_alignleft","wp_img_aligncenter","wp_img_alignright","wp_img_alignnone","wp_img_edit","wp_img_remove"]))}),a.on("wptoolbar",function(a){"IMG"!==a.element.nodeName||b(a.element)||(a.toolbar=k)}),p&&a.on("init",function(){a.on("touchstart",function(a){"IMG"===a.target.nodeName&&(m=!0)}),a.dom.bind(a.getDoc(),"touchmove",function(a){"IMG"===a.target.nodeName&&(m=!1)}),a.on("touchend",function(b){if(m&&"IMG"===b.target.nodeName){var c=b.target;m=!1,window.setTimeout(function(){a.selection.select(c),a.nodeChanged()},200)}else k&&k.hide()})}),a.on("init",function(){var b=a.dom,c=a.getParam("wpeditimage_html5_captions")?"html5-captions":"html4-captions";b.addClass(a.getBody(),c),a.on("wpLoadImageForm",function(b){if(!a.getParam("wpeditimage_disable_captions")){var c={type:"textbox",flex:1,name:"caption",minHeight:60,multiline:!0,scroll:!0,label:"Image caption"};b.data.splice(b.data.length-1,0,c)}}),a.on("wpNewImageRefresh",function(a){var c,d;(c=b.getParent(a.node,"dl.wp-caption"))&&(c.style.width||(d=parseInt(a.node.clientWidth,10)+10,d=d?d+"px":"50%",b.setStyle(c,"width",d)))}),a.on("wpImageFormSubmit",function(c){var d,e,f,h,i,j=c.imgData.data,k=c.imgData.node,l=c.imgData.caption,m="",n="",o="";return j.id="__wp-temp-img-id",c.imgData.cancel=!0,j.style||(j.style=null),j.src?(l&&(l=l.replace(/\r\n|\r/g,"\n").replace(/<\/?[a-zA-Z0-9]+( [^<>]+)?>/g,function(a){return a.replace(/[\r\n\t]+/," ")}),l=l.replace(/(<br[^>]*>)\s*\n\s*/g,"$1").replace(/\s*\n\s*/g,"<br />"),l=g(l)),k?(i=k.id||null,b.setAttribs(k,j),d=b.getParent(k,"dl.wp-caption"),l?d?(e=b.select("dd.wp-caption-dd",d)[0])&&(e.innerHTML=l):(k.className&&(m=k.className.match(/wp-image-([0-9]+)/),n=k.className.match(/align(left|right|center|none)/)),n?(n=n[0],k.className=k.className.replace(/align(left|right|center|none)/g,"")):n="alignnone",n=' class="wp-caption '+n+'"',m&&(m=' id="attachment_'+m[1]+'"'),o=j.width||k.clientWidth,o&&(o=parseInt(o,10),a.getParam("wpeditimage_html5_captions")||(o+=10),o=' style="width: '+o+'px"'),f=k.parentNode&&"A"===k.parentNode.nodeName?k.parentNode:k,h="<dl "+m+n+o+'><dt class="wp-caption-dt"></dt><dd class="wp-caption-dd">'+l+"</dd></dl>",d=b.create("div",{"class":"mceTemp"},h),(e=b.getParent(f,"p"))?e.parentNode.insertBefore(d,e):f.parentNode.insertBefore(d,f),a.$(d).find("dt.wp-caption-dt").append(f),e&&b.isEmpty(e)&&b.remove(e)):d&&(h="A"===k.parentNode.nodeName?b.getOuterHTML(k.parentNode):b.getOuterHTML(k),e=b.create("p",{},h),b.insertAfter(e,d.parentNode),a.selection.select(e),a.nodeChanged(),b.remove(d.parentNode))):(h=b.createHTML("img",j),l?(f=a.selection.getNode(),j.width&&(o=parseInt(j.width,10),a.getParam("wpeditimage_html5_captions")||(o+=10),o=' style="width: '+o+'px"'),h='<dl class="wp-caption alignnone"'+o+'><dt class="wp-caption-dt">'+h+'</dt><dd class="wp-caption-dd">'+l+"</dd></dl>",e="P"===f.nodeName?f:b.getParent(f,"p"),e&&"P"===e.nodeName?(d=b.create("div",{"class":"mceTemp"},h),e.parentNode.insertBefore(d,e),a.selection.select(d),a.nodeChanged(),b.isEmpty(e)&&b.remove(e)):a.selection.setContent('<div class="mceTemp">'+h+"</div>")):a.selection.setContent(h)),k=b.get("__wp-temp-img-id"),b.setAttrib(k,"id",i),void(c.imgData.node=k)):void(k&&((d=b.getParent(k,"div.mceTemp"))?b.remove(d):"A"===k.parentNode.nodeName?b.remove(k.parentNode):b.remove(k),a.nodeChanged()))}),a.on("wpLoadImageData",function(c){var d,e=c.imgData.data,f=c.imgData.node;(d=b.getParent(f,"dl.wp-caption"))&&(d=b.select("dd.wp-caption-dd",d)[0],d&&(e.caption=a.serializer.serialize(d).replace(/<br[^>]*>/g,"$&\n").replace(/^<p>/,"").replace(/<\/p>$/,"")))}),tinymce.Env.ie&&tinymce.Env.ie>10&&b.bind(a.getBody(),"mscontrolselect",function(c){"IMG"===c.target.nodeName&&b.getParent(c.target,".wp-caption")?a.getBody().focus():"DL"===c.target.nodeName&&b.hasClass(c.target,"wp-caption")&&c.target.focus()})}),a.on("ObjectResized",function(b){var c=b.target;"IMG"===c.nodeName&&a.undoManager.transact(function(){var d,e,f=a.dom;c.className=c.className.replace(/\bsize-[^ ]+/,""),(d=f.getParent(c,".wp-caption"))&&(e=b.width||f.getAttrib(c,"width"),e&&(e=parseInt(e,10),a.getParam("wpeditimage_html5_captions")||(e+=10),f.setStyle(d,"width",e+"px")))})}),a.on("BeforeExecCommand",function(b){var c,d,e,f,g,h=b.command,i=a.dom;if("mceInsertContent"===h)(c=i.getParent(a.selection.getNode(),"div.mceTemp"))&&(d=i.create("p"),i.insertAfter(d,c),a.selection.setCursorLocation(d,0),a.nodeChanged());else if("JustifyLeft"===h||"JustifyRight"===h||"JustifyCenter"===h||"wpAlignNone"===h){if(c=a.selection.getNode(),f="align"+h.slice(7).toLowerCase(),e=a.dom.getParent(c,".wp-caption"),"IMG"!==c.nodeName&&!e)return;c=e||c,g=a.dom.hasClass(c,f)?" alignnone":" "+f,c.className=o(c.className.replace(/ ?align(left|center|right|none)/g,"")+g),a.nodeChanged(),b.preventDefault(),k&&k.reposition(),a.fire("ExecCommand",{command:h,ui:b.ui,value:b.value})}}),a.on("keydown",function(b){var c,d,e,f,g=a.selection,h=b.keyCode,i=a.dom,k=tinymce.util.VK;if(h===k.ENTER)c=g.getNode(),d=i.getParent(c,"div.mceTemp"),d&&(i.events.cancel(b),tinymce.each(i.select("dt, dd",d),function(a){i.isEmpty(a)&&i.remove(a)}),f=tinymce.Env.ie&&tinymce.Env.ie<11?"":'<br data-mce-bogus="1" />',e=i.create("p",null,f),"DD"===c.nodeName?i.insertAfter(e,d):d.parentNode.insertBefore(e,d),a.nodeChanged(),g.setCursorLocation(e,0));else if((h===k.DELETE||h===k.BACKSPACE)&&(c=g.getNode(),"DIV"===c.nodeName&&i.hasClass(c,"mceTemp")?d=c:("IMG"===c.nodeName||"DT"===c.nodeName||"A"===c.nodeName)&&(d=i.getParent(c,"div.mceTemp")),d))return i.events.cancel(b),j(c),!1}),tinymce.Env.gecko&&a.on("undo redo",function(){"IMG"===a.selection.getNode().nodeName&&a.selection.collapse()}),a.wpSetImgCaption=function(a){return c(a)},a.wpGetImgCaption=function(a){return d(a)},a.on("BeforeSetContent",function(b){"raw"!==b.format&&(b.content=a.wpSetImgCaption(b.content))}),a.on("PostProcess",function(b){b.get&&(b.content=a.wpGetImgCaption(b.content))}),function(){var b;a.on("dragstart",function(){var c=a.selection.getNode();"IMG"===c.nodeName&&(b=a.dom.getParent(c,".mceTemp"),b||"A"!==c.parentNode.nodeName||f(c.parentNode)||(b=c.parentNode))}),a.on("drop",function(c){var d=a.dom,e=tinymce.dom.RangeUtils.getCaretRangeFromPoint(c.clientX,c.clientY,a.getDoc());d.getParent(e.startContainer,".mceTemp")?c.preventDefault():b&&(c.preventDefault(),a.undoManager.transact(function(){a.selection.setRng(e),a.selection.setNode(b),d.remove(b)})),b=null})}(),a.wp=a.wp||{},a.wp.isPlaceholder=b,{_do_shcode:c,_get_shcode:d}});
\ No newline at end of file
diff --git a/wp-includes/js/tinymce/plugins/wpembed/plugin.js b/wp-includes/js/tinymce/plugins/wpembed/plugin.js
new file mode 100644 (file)
index 0000000..b6efbc9
--- /dev/null
@@ -0,0 +1,17 @@
+(function ( tinymce ) {
+       'use strict';
+
+       tinymce.PluginManager.add( 'wpembed', function ( editor, url ) {
+               editor.on( 'init', function () {
+                       var scriptId = editor.dom.uniqueId();
+
+                       var scriptElm = editor.dom.create( 'script', {
+                               id: scriptId,
+                               type: 'text/javascript',
+                               src: url + '/../../../wp-embed.js'
+                       } );
+
+                       editor.getDoc().getElementsByTagName( 'head' )[ 0 ].appendChild( scriptElm );
+               } );
+       } );
+})( window.tinymce );
diff --git a/wp-includes/js/tinymce/plugins/wpembed/plugin.min.js b/wp-includes/js/tinymce/plugins/wpembed/plugin.min.js
new file mode 100644 (file)
index 0000000..dc6f896
--- /dev/null
@@ -0,0 +1 @@
+!function(a){"use strict";a.PluginManager.add("wpembed",function(a,b){a.on("init",function(){var c=a.dom.uniqueId(),d=a.dom.create("script",{id:c,type:"text/javascript",src:b+"/../../../wp-embed.js"});a.getDoc().getElementsByTagName("head")[0].appendChild(d)})})}(window.tinymce);
\ No newline at end of file
index 41dcfe5789111eb4885e169fd74495d8b2ca09d9..d9723f2db5996e2429c86053da3bc2b8e7567fbd 100644 (file)
@@ -10,7 +10,7 @@ tinymce.PluginManager.add('wpgallery', function( editor ) {
        function html( cls, data ) {
                data = window.encodeURIComponent( data );
                return '<img src="' + tinymce.Env.transparentSrc + '" class="wp-media mceItem ' + cls + '" ' +
-                       'data-wp-media="' + data + '" data-mce-resize="false" data-mce-placeholder="1" />';
+                       'data-wp-media="' + data + '" data-mce-resize="false" data-mce-placeholder="1" alt="" />';
        }
 
        function restoreMediaShortcodes( content ) {
index 1231ac6cc1e300ba5927a2aa2496f778c8db9aca..689fd25c4a9696c8675f1694329e59aaf639831c 100644 (file)
@@ -1 +1 @@
-tinymce.PluginManager.add("wpgallery",function(a){function b(a){return a.replace(/\[gallery([^\]]*)\]/g,function(a){return c("wp-gallery",a)})}function c(a,b){return b=window.encodeURIComponent(b),'<img src="'+tinymce.Env.transparentSrc+'" class="wp-media mceItem '+a+'" data-wp-media="'+b+'" data-mce-resize="false" data-mce-placeholder="1" />'}function d(a){function b(a,b){return b=new RegExp(b+'="([^"]+)"').exec(a),b?window.decodeURIComponent(b[1]):""}return a.replace(/(?:<p(?: [^>]+)?>)*(<img [^>]+>)(?:<\/p>)*/g,function(a,c){var d=b(c,"data-wp-media");return d?"<p>"+d+"</p>":a})}function e(b){var c,d,e;"IMG"===b.nodeName&&"undefined"!=typeof wp&&wp.media&&(e=window.decodeURIComponent(a.dom.getAttrib(b,"data-wp-media")),a.dom.hasClass(b,"wp-gallery")&&wp.media.gallery&&(c=wp.media.gallery,d=c.edit(e),d.state("gallery-edit").on("update",function(e){var f=c.shortcode(e).string();a.dom.setAttrib(b,"data-wp-media",window.encodeURIComponent(f)),d.detach()})))}a.addCommand("WP_Gallery",function(){e(a.selection.getNode())}),a.on("mouseup",function(b){function c(){d.removeClass(d.select("img.wp-media-selected"),"wp-media-selected")}var d=a.dom,f=b.target;"IMG"===f.nodeName&&d.getAttrib(f,"data-wp-media")?2!==b.button&&(d.hasClass(f,"wp-media-selected")?e(f):(c(),d.addClass(f,"wp-media-selected"))):c()}),a.on("ResolveName",function(b){var c=a.dom,d=b.target;"IMG"===d.nodeName&&c.getAttrib(d,"data-wp-media")&&c.hasClass(d,"wp-gallery")&&(b.name="gallery")}),a.on("BeforeSetContent",function(c){a.plugins.wpview&&"undefined"!=typeof wp&&wp.mce||(c.content=b(c.content))}),a.on("PostProcess",function(a){a.get&&(a.content=d(a.content))})});
\ No newline at end of file
+tinymce.PluginManager.add("wpgallery",function(a){function b(a){return a.replace(/\[gallery([^\]]*)\]/g,function(a){return c("wp-gallery",a)})}function c(a,b){return b=window.encodeURIComponent(b),'<img src="'+tinymce.Env.transparentSrc+'" class="wp-media mceItem '+a+'" data-wp-media="'+b+'" data-mce-resize="false" data-mce-placeholder="1" alt="" />'}function d(a){function b(a,b){return b=new RegExp(b+'="([^"]+)"').exec(a),b?window.decodeURIComponent(b[1]):""}return a.replace(/(?:<p(?: [^>]+)?>)*(<img [^>]+>)(?:<\/p>)*/g,function(a,c){var d=b(c,"data-wp-media");return d?"<p>"+d+"</p>":a})}function e(b){var c,d,e;"IMG"===b.nodeName&&"undefined"!=typeof wp&&wp.media&&(e=window.decodeURIComponent(a.dom.getAttrib(b,"data-wp-media")),a.dom.hasClass(b,"wp-gallery")&&wp.media.gallery&&(c=wp.media.gallery,d=c.edit(e),d.state("gallery-edit").on("update",function(e){var f=c.shortcode(e).string();a.dom.setAttrib(b,"data-wp-media",window.encodeURIComponent(f)),d.detach()})))}a.addCommand("WP_Gallery",function(){e(a.selection.getNode())}),a.on("mouseup",function(b){function c(){d.removeClass(d.select("img.wp-media-selected"),"wp-media-selected")}var d=a.dom,f=b.target;"IMG"===f.nodeName&&d.getAttrib(f,"data-wp-media")?2!==b.button&&(d.hasClass(f,"wp-media-selected")?e(f):(c(),d.addClass(f,"wp-media-selected"))):c()}),a.on("ResolveName",function(b){var c=a.dom,d=b.target;"IMG"===d.nodeName&&c.getAttrib(d,"data-wp-media")&&c.hasClass(d,"wp-gallery")&&(b.name="gallery")}),a.on("BeforeSetContent",function(c){a.plugins.wpview&&"undefined"!=typeof wp&&wp.mce||(c.content=b(c.content))}),a.on("PostProcess",function(a){a.get&&(a.content=d(a.content))})});
\ No newline at end of file
index b13c46a9351c4aa4c961ab6112d277fdbe3476a8..eef8940c63545e95bb19f380d75857fb1e216a61 100644 (file)
@@ -55,9 +55,9 @@
                });
 
                // WP default shortcut
-               editor.addShortcut( 'Alt+Shift+A', '', 'WP_Link' );
+               editor.addShortcut( 'access+a', '', 'WP_Link' );
                // The "de-facto standard" shortcut, see #27305
-               editor.addShortcut( 'Meta+K', '', 'WP_Link' );
+               editor.addShortcut( 'meta+k', '', 'WP_Link' );
 
                editor.addButton( 'link', {
                        icon: 'link',
index 5096e42e8052e961fe06f7b23f2a4c7cb4686dd5..f582eefec1650bf60324383c10bbaff168aaa74e 100644 (file)
@@ -1 +1 @@
-!function(a){a.ui.WPLinkPreview=a.ui.Control.extend({url:"#",renderHtml:function(){return'<div id="'+this._id+'" class="wp-link-preview"><a href="'+this.url+'" target="_blank" tabindex="-1">'+this.url+"</a></div>"},setURL:function(b){var c,d;this.url!==b&&(this.url=b,b=window.decodeURIComponent(b),b=b.replace(/^(?:https?:)?\/\/(?:www\.)?/,""),-1!==(c=b.indexOf("?"))&&(b=b.slice(0,c)),-1!==(c=b.indexOf("#"))&&(b=b.slice(0,c)),b=b.replace(/(?:index)?\.html$/,""),"/"===b.charAt(b.length-1)&&(b=b.slice(0,-1)),b.length>40&&-1!==(c=b.indexOf("/"))&&-1!==(d=b.lastIndexOf("/"))&&d!==c&&(c+b.length-d<40&&(d=-(40-(c+1))),b=b.slice(0,c+1)+"\u2026"+b.slice(d)),a.$(this.getEl().firstChild).attr("href",this.url).text(b))}}),a.PluginManager.add("wplink",function(b){var c;b.addCommand("WP_Link",function(){window.wpLink&&window.wpLink.open(b.id)}),b.addShortcut("Alt+Shift+A","","WP_Link"),b.addShortcut("Meta+K","","WP_Link"),b.addButton("link",{icon:"link",tooltip:"Insert/edit link",cmd:"WP_Link",stateSelector:"a[href]"}),b.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink"}),b.addMenuItem("link",{icon:"link",text:"Insert/edit link",cmd:"WP_Link",stateSelector:"a[href]",context:"insert",prependToContext:!0}),b.on("pastepreprocess",function(c){var d=c.content,e=/^(?:https?:)?\/\/\S+$/i;b.selection.isCollapsed()||e.test(b.selection.getContent())||(d=d.replace(/<[^>]+>/g,""),d=a.trim(d),e.test(d)&&(b.execCommand("mceInsertLink",!1,{href:b.dom.decode(d)}),c.preventDefault()))}),b.addButton("wp_link_preview",{type:"WPLinkPreview",onPostRender:function(){var a=this;b.on("wptoolbar",function(d){var e,f,g=b.dom.getParent(d.element,"a");g&&(e=b.$(g),f=e.attr("href"),f&&!e.find("img").length&&(a.setURL(f),d.element=g,d.toolbar=c))})}}),b.addButton("wp_link_edit",{tooltip:"Edit ",icon:"dashicon dashicons-edit",cmd:"WP_Link"}),b.addButton("wp_link_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",cmd:"unlink"}),b.on("preinit",function(){b.wp&&b.wp._createToolbar&&(c=b.wp._createToolbar(["wp_link_preview","wp_link_edit","wp_link_remove"],!0))})})}(window.tinymce);
\ No newline at end of file
+!function(a){a.ui.WPLinkPreview=a.ui.Control.extend({url:"#",renderHtml:function(){return'<div id="'+this._id+'" class="wp-link-preview"><a href="'+this.url+'" target="_blank" tabindex="-1">'+this.url+"</a></div>"},setURL:function(b){var c,d;this.url!==b&&(this.url=b,b=window.decodeURIComponent(b),b=b.replace(/^(?:https?:)?\/\/(?:www\.)?/,""),-1!==(c=b.indexOf("?"))&&(b=b.slice(0,c)),-1!==(c=b.indexOf("#"))&&(b=b.slice(0,c)),b=b.replace(/(?:index)?\.html$/,""),"/"===b.charAt(b.length-1)&&(b=b.slice(0,-1)),b.length>40&&-1!==(c=b.indexOf("/"))&&-1!==(d=b.lastIndexOf("/"))&&d!==c&&(c+b.length-d<40&&(d=-(40-(c+1))),b=b.slice(0,c+1)+"\u2026"+b.slice(d)),a.$(this.getEl().firstChild).attr("href",this.url).text(b))}}),a.PluginManager.add("wplink",function(b){var c;b.addCommand("WP_Link",function(){window.wpLink&&window.wpLink.open(b.id)}),b.addShortcut("access+a","","WP_Link"),b.addShortcut("meta+k","","WP_Link"),b.addButton("link",{icon:"link",tooltip:"Insert/edit link",cmd:"WP_Link",stateSelector:"a[href]"}),b.addButton("unlink",{icon:"unlink",tooltip:"Remove link",cmd:"unlink"}),b.addMenuItem("link",{icon:"link",text:"Insert/edit link",cmd:"WP_Link",stateSelector:"a[href]",context:"insert",prependToContext:!0}),b.on("pastepreprocess",function(c){var d=c.content,e=/^(?:https?:)?\/\/\S+$/i;b.selection.isCollapsed()||e.test(b.selection.getContent())||(d=d.replace(/<[^>]+>/g,""),d=a.trim(d),e.test(d)&&(b.execCommand("mceInsertLink",!1,{href:b.dom.decode(d)}),c.preventDefault()))}),b.addButton("wp_link_preview",{type:"WPLinkPreview",onPostRender:function(){var a=this;b.on("wptoolbar",function(d){var e,f,g=b.dom.getParent(d.element,"a");g&&(e=b.$(g),f=e.attr("href"),f&&!e.find("img").length&&(a.setURL(f),d.element=g,d.toolbar=c))})}}),b.addButton("wp_link_edit",{tooltip:"Edit ",icon:"dashicon dashicons-edit",cmd:"WP_Link"}),b.addButton("wp_link_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",cmd:"unlink"}),b.on("preinit",function(){b.wp&&b.wp._createToolbar&&(c=b.wp._createToolbar(["wp_link_preview","wp_link_edit","wp_link_remove"],!0))})})}(window.tinymce);
\ No newline at end of file
index 9db30087e9928b4181f5297fb45005840e224f8c..61f34bc4b444d5a9dcd15d2f76ace3f90e44b07c 100644 (file)
@@ -347,6 +347,15 @@ tinymce.PluginManager.add( 'wpview', function( editor ) {
                                attributeFilter: ['class']
                        } );
                }
+
+               if ( tinymce.Env.ie ) {
+                       // Prevent resize handles in newer IE
+                       editor.dom.bind( editor.getBody(), 'controlselect mscontrolselect', function( event ) {
+                               if ( getView( event.target ) ) {
+                                       event.preventDefault();
+                               }
+                       });
+               }
        });
 
        // Empty the wpview wrap and marker nodes
index e8d508922ee6e9b318661ae1167c2b5badeb44b8..d3584177b964e5f86cd4a8c7e85b39dc68145b41 100644 (file)
@@ -1 +1 @@
-tinymce.PluginManager.add("wpview",function(a){function b(a){return c(a,"wpview-wrap")}function c(a,b){for(;a&&a.parentNode;){if(a.className&&-1!==(" "+a.className+" ").indexOf(" "+b+" "))return a;a=a.parentNode}return!1}function d(a){a.stopPropagation()}function e(b,c){var d=b?"before":"after",e=b?0:1;i(),a.selection.setCursorLocation(a.dom.select(".wpview-selection-"+d,c)[0],e),a.nodeChanged()}function f(b,c,d){var f=a.dom,g=f.create("p");w.ie&&w.ie<11||(g.innerHTML='<br data-mce-bogus="1">'),c?b.parentNode.insertBefore(g,b):f.insertAfter(g,b),i(),c&&d===x.ENTER?e(c,b):a.selection.setCursorLocation(g,0),a.nodeChanged()}function g(b){a.undoManager.transact(function(){f(b),wp.mce.views.remove(a,b)})}function h(b){var c,e=a.dom;b&&(b!==n&&(a.getBody().focus(),i(),n=b,e.setAttrib(b,"data-mce-selected",1),c=e.create("div",{"class":"wpview-clipboard",contenteditable:"true"},wp.mce.views.getText(b)),a.dom.select(".wpview-body",b)[0].appendChild(c),e.bind(c,"beforedeactivate focusin focusout",d),e.bind(n,"beforedeactivate focusin focusout",d),C?a.selection.select(c):a.selection.select(c,!0)),a.nodeChanged(),a.fire("wpview-selected",b))}function i(){var b,c=a.dom;n&&(b=a.dom.select(".wpview-clipboard",n)[0],c.unbind(b),c.remove(b),c.unbind(n,"beforedeactivate focusin focusout click mouseup",d),c.setAttrib(n,"data-mce-selected",null)),n=null}function j(a,b){return"<p>"+window.decodeURIComponent(b)+"</p>"}function k(a){return a.replace(/<div[^>]+data-wpview-text="([^"]+)"[^>]*>(?:[\s\S]+?wpview-selection-after[^>]+>[^<>]*<\/p>\s*|\.)<\/div>/g,j).replace(/<p [^>]*?data-wpview-marker="([^"]+)"[^>]*>[\s\S]*?<\/p>/g,j)}function l(a){v("div[data-wpview-text], p[data-wpview-marker]",a).each(function(a,b){b.innerHTML="."})}function m(a){return 47>=a&&a!==x.SPACEBAR&&a!==x.ENTER&&a!==x.DELETE&&a!==x.BACKSPACE&&(37>a||a>40)||a>=224||a>=144&&150>=a||a>=91&&93>=a||a>=112&&135>=a}var n,o,p,q,r,s,t,u,v=a.$,w=tinymce.Env,x=tinymce.util.VK,y=tinymce.dom.TreeWalker,z=!1,A=!0,B=function(){return!1},C=/iPad|iPod|iPhone/.test(navigator.userAgent);return"undefined"!=typeof wp&&wp.mce?(a.on("BeforeAddUndo",function(a){a.level.content&&(a.level.content=k(a.level.content))}),a.on("BeforeSetContent",function(b){var c;if(b.selection||wp.mce.views.unbind(),b.content){if(!b.load&&(n&&g(n),c=a.selection.getNode(),c&&c!==a.getBody()&&/^\s*https?:\/\/\S+\s*$/i.test(b.content))){if(c=a.dom.getParent(c,"p"),!c||!/^[\s\uFEFF\u00A0]*$/.test(v(c).text()||""))return;c.innerHTML=""}b.content=wp.mce.views.setMarkers(b.content)}}),a.on("pastePreProcess",function(a){var b=a.content;b&&(b=tinymce.trim(b.replace(/<[^>]+>/g,"")),/^https?:\/\/\S+$/i.test(b)&&(a.content=b))}),a.on("SetContent",function(){wp.mce.views.render()}),a.on("click",function(c){var d,f,g,h=c.clientX,i=c.clientY,j=a.getBody(),k=j.getBoundingClientRect(),l=j.firstChild,m=j.lastChild;l&&m&&(d=l.getBoundingClientRect(),f=m.getBoundingClientRect(),i<d.top&&(g=b(l))?(e(!0,g),c.preventDefault()):i>f.bottom&&(g=b(m))?(e(!1,g),c.preventDefault()):(h<k.left||h>k.right)&&tinymce.each(a.dom.select(".wpview-wrap"),function(a){var b=a.getBoundingClientRect();return i<b.top?!1:i>=b.top&&i<=b.bottom?(h<k.left?(e(!0,a),c.preventDefault()):h>k.right&&(e(!1,a),c.preventDefault()),!1):void 0}))}),a.on("init",function(){var c=!1,d=a.selection,e=window.MutationObserver||window.WebKitMutationObserver;a.on("BeforeSetContent",function(){var c,e,f=b(d.getNode());f&&(!f.nextSibling||b(f.nextSibling)?(e=a.getDoc().createTextNode(""),a.dom.insertAfter(e,f)):(c=new y(f.nextSibling,f.nextSibling),e=c.next()),d.select(e),d.collapse(!0))}),a.dom.bind(a.getDoc(),"touchmove",function(){c=!0}),a.on("mousedown mouseup click touchend",function(a){var d=b(a.target);return A=!1,d?(a.stopImmediatePropagation(),a.preventDefault(),"touchend"===a.type&&c?c=!1:h(d),!1):(("touchend"===a.type||"mousedown"===a.type)&&i(),void("touchend"===a.type&&c&&(c=!1)))},!0),e&&new e(function(){a.fire("wp-body-class-change")}).observe(a.getBody(),{attributes:!0,attributeFilter:["class"]})}),a.on("PreProcess",function(a){l(a.node)},!0),a.on("hide",function(){wp.mce.views.unbind(),i(),l()}),a.on("PostProcess",function(a){a.content&&(a.content=a.content.replace(/<div [^>]*?data-wpview-text="([^"]+)"[^>]*>[\s\S]*?<\/div>/g,j).replace(/<p [^>]*?data-wpview-marker="([^"]+)"[^>]*>[\s\S]*?<\/p>/g,j))}),a.on("keydown",function(c){var d,j,k,l,o,q,r,s=c.keyCode,t=a.dom,u=a.selection;if(n){if((c.metaKey||c.ctrlKey)&&s!==x.BACKSPACE&&86!==s||s>=112&&123>=s)return void((c.metaKey||c.ctrlKey)&&88===s&&(z=n));if(j=b(u.getNode()),j!==n)return void i();s===x.LEFT?(e(!0,j),c.preventDefault()):s===x.UP?(j.previousSibling?b(j.previousSibling)?e(!0,j.previousSibling):(i(),u.select(j.previousSibling,!0),u.collapse()):e(!0,j),c.preventDefault()):s===x.RIGHT?(e(!1,j),c.preventDefault()):s===x.DOWN?(j.nextSibling?b(j.nextSibling)?e(!1,j.nextSibling):(i(),u.setCursorLocation(j.nextSibling,0)):e(!1,j),c.preventDefault()):m(s)||(g(n),(s===x.ENTER||s===x.DELETE||s===x.BACKSPACE)&&c.preventDefault())}else{if(c.metaKey||c.ctrlKey||s>=112&&123>=s)return;if(d=u.getNode(),p=d,j=b(d),u.isCollapsed()||(o=u.getRng(),(j=b(o.endContainer))?(q=o.cloneRange(),u.select(j.previousSibling,!0),u.collapse(),r=u.getRng(),q.setEnd(r.endContainer,r.endOffset),u.setRng(q)):(j=b(o.startContainer))&&(q=o.cloneRange(),q.setStart(j.nextSibling,0),u.setRng(q))),!j)return void(c.keyCode===x.BACKSPACE&&(a.dom.isEmpty(d)?(j=b(d.previousSibling))&&(e(!1,j),a.dom.remove(d),c.preventDefault()):(o=u.getRng())&&0===o.startOffset&&0===o.endOffset&&(j=b(d.previousSibling))&&(e(!1,j),c.preventDefault())));if(!(k=t.hasClass(j,"wpview-selection-before"))&&!(l=t.hasClass(j,"wpview-selection-after")))return;if(m(s))return;l&&s===x.UP||k&&s===x.BACKSPACE?(j.previousSibling?b(j.previousSibling)?e(!1,j.previousSibling):t.isEmpty(j.previousSibling)&&s===x.BACKSPACE?t.remove(j.previousSibling):(u.select(j.previousSibling,!0),u.collapse()):e(!0,j),c.preventDefault()):!l||s!==x.DOWN&&s!==x.RIGHT?!k||s!==x.UP&&s!==x.LEFT?k&&s===x.DOWN?(j.nextSibling?b(j.nextSibling)?e(!0,j.nextSibling):u.setCursorLocation(j.nextSibling,0):e(!1,j),c.preventDefault()):l&&s===x.LEFT||k&&s===x.RIGHT?(h(j),c.preventDefault()):l&&s===x.BACKSPACE?(g(j),c.preventDefault()):l?f(j):k&&f(j,!0,s):(j.previousSibling&&(b(j.previousSibling)?e(s===x.UP,j.previousSibling):(u.select(j.previousSibling,!0),u.collapse())),c.preventDefault()):(j.nextSibling&&(b(j.nextSibling)?e(s===x.RIGHT,j.nextSibling):u.setCursorLocation(j.nextSibling,0)),c.preventDefault()),s===x.ENTER&&c.preventDefault()}}),a.on("keyup",function(){z&&(g(z),z=!1)}),a.on("focus",function(){var c;r=!0,a.dom.addClass(a.getBody(),"has-focus"),A&&(c=b(a.getBody().firstChild))&&e(!0,c),A=!1}),a.on("blur",function(){r=!1,a.dom.removeClass(a.getBody(),"has-focus")}),a.on("NodeChange",function(d){var f=a.dom,g=a.dom.select(".wpview-wrap"),h=d.element.className,j=b(d.element),k=p;if(p=!1,clearInterval(o),tinymce.each(g,function(a){a.className&&(a.className=a.className.replace(/ ?\bwpview-(?:selection-before|selection-after|cursor-hide)\b/g,""))}),r&&j)if("wpview-selection-before"!==h&&"wpview-selection-after"!==h||!a.selection.isCollapsed())c(d.element,"wpview-clipboard")||q||(i(),q++,e(!0,j));else{if(q=0,i(),k===j.previousSibling)return void e(!0,j);if(k===j.nextSibling)return void e(!1,j);f.addClass(j,h),o=setInterval(function(){f.hasClass(j,"wpview-cursor-hide")?f.removeClass(j,"wpview-cursor-hide"):f.addClass(j,"wpview-cursor-hide")},500)}}),a.on("BeforeExecCommand",function(){var c,d=a.selection.getNode();d&&((t="wpview-selection-before"===d.className)||"wpview-selection-after"===d.className)&&(c=b(d))&&(f(c,t),s=c)}),a.on("ExecCommand",function(){var b,c;n&&(b=n,i(),h(b)),s&&(c=s[t?"previousSibling":"nextSibling"],c&&"P"===c.nodeName&&a.dom.isEmpty(c)&&(a.dom.remove(c),e(t,s)),s=!1)}),a.on("ResolveName",function(c){a.dom.hasClass(c.target,"wpview-wrap")?(c.name=a.dom.getAttrib(c.target,"data-wpview-type")||"wpview",c.stopPropagation()):b(c.target)&&(c.preventDefault(),c.stopPropagation())}),a.addButton("wp_view_edit",{tooltip:"Edit ",icon:"dashicon dashicons-edit",onclick:function(){n&&wp.mce.views.edit(a,n)}}),a.addButton("wp_view_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",onclick:function(){n&&g(n)}}),a.once("preinit",function(){a.wp&&a.wp._createToolbar&&(u=a.wp._createToolbar(["wp_view_edit","wp_view_remove"]))}),a.on("wptoolbar",function(a){n&&(a.element=n,a.toolbar=u)}),a.wp=a.wp||{},a.wp.getView=b,a.wp.setViewCursor=e,{getView:b}):{getView:B}});
\ No newline at end of file
+tinymce.PluginManager.add("wpview",function(a){function b(a){return c(a,"wpview-wrap")}function c(a,b){for(;a&&a.parentNode;){if(a.className&&-1!==(" "+a.className+" ").indexOf(" "+b+" "))return a;a=a.parentNode}return!1}function d(a){a.stopPropagation()}function e(b,c){var d=b?"before":"after",e=b?0:1;i(),a.selection.setCursorLocation(a.dom.select(".wpview-selection-"+d,c)[0],e),a.nodeChanged()}function f(b,c,d){var f=a.dom,g=f.create("p");w.ie&&w.ie<11||(g.innerHTML='<br data-mce-bogus="1">'),c?b.parentNode.insertBefore(g,b):f.insertAfter(g,b),i(),c&&d===x.ENTER?e(c,b):a.selection.setCursorLocation(g,0),a.nodeChanged()}function g(b){a.undoManager.transact(function(){f(b),wp.mce.views.remove(a,b)})}function h(b){var c,e=a.dom;b&&(b!==n&&(a.getBody().focus(),i(),n=b,e.setAttrib(b,"data-mce-selected",1),c=e.create("div",{"class":"wpview-clipboard",contenteditable:"true"},wp.mce.views.getText(b)),a.dom.select(".wpview-body",b)[0].appendChild(c),e.bind(c,"beforedeactivate focusin focusout",d),e.bind(n,"beforedeactivate focusin focusout",d),C?a.selection.select(c):a.selection.select(c,!0)),a.nodeChanged(),a.fire("wpview-selected",b))}function i(){var b,c=a.dom;n&&(b=a.dom.select(".wpview-clipboard",n)[0],c.unbind(b),c.remove(b),c.unbind(n,"beforedeactivate focusin focusout click mouseup",d),c.setAttrib(n,"data-mce-selected",null)),n=null}function j(a,b){return"<p>"+window.decodeURIComponent(b)+"</p>"}function k(a){return a.replace(/<div[^>]+data-wpview-text="([^"]+)"[^>]*>(?:[\s\S]+?wpview-selection-after[^>]+>[^<>]*<\/p>\s*|\.)<\/div>/g,j).replace(/<p [^>]*?data-wpview-marker="([^"]+)"[^>]*>[\s\S]*?<\/p>/g,j)}function l(a){v("div[data-wpview-text], p[data-wpview-marker]",a).each(function(a,b){b.innerHTML="."})}function m(a){return 47>=a&&a!==x.SPACEBAR&&a!==x.ENTER&&a!==x.DELETE&&a!==x.BACKSPACE&&(37>a||a>40)||a>=224||a>=144&&150>=a||a>=91&&93>=a||a>=112&&135>=a}var n,o,p,q,r,s,t,u,v=a.$,w=tinymce.Env,x=tinymce.util.VK,y=tinymce.dom.TreeWalker,z=!1,A=!0,B=function(){return!1},C=/iPad|iPod|iPhone/.test(navigator.userAgent);return"undefined"!=typeof wp&&wp.mce?(a.on("BeforeAddUndo",function(a){a.level.content&&(a.level.content=k(a.level.content))}),a.on("BeforeSetContent",function(b){var c;if(b.selection||wp.mce.views.unbind(),b.content){if(!b.load&&(n&&g(n),c=a.selection.getNode(),c&&c!==a.getBody()&&/^\s*https?:\/\/\S+\s*$/i.test(b.content))){if(c=a.dom.getParent(c,"p"),!c||!/^[\s\uFEFF\u00A0]*$/.test(v(c).text()||""))return;c.innerHTML=""}b.content=wp.mce.views.setMarkers(b.content)}}),a.on("pastePreProcess",function(a){var b=a.content;b&&(b=tinymce.trim(b.replace(/<[^>]+>/g,"")),/^https?:\/\/\S+$/i.test(b)&&(a.content=b))}),a.on("SetContent",function(){wp.mce.views.render()}),a.on("click",function(c){var d,f,g,h=c.clientX,i=c.clientY,j=a.getBody(),k=j.getBoundingClientRect(),l=j.firstChild,m=j.lastChild;l&&m&&(d=l.getBoundingClientRect(),f=m.getBoundingClientRect(),i<d.top&&(g=b(l))?(e(!0,g),c.preventDefault()):i>f.bottom&&(g=b(m))?(e(!1,g),c.preventDefault()):(h<k.left||h>k.right)&&tinymce.each(a.dom.select(".wpview-wrap"),function(a){var b=a.getBoundingClientRect();return i<b.top?!1:i>=b.top&&i<=b.bottom?(h<k.left?(e(!0,a),c.preventDefault()):h>k.right&&(e(!1,a),c.preventDefault()),!1):void 0}))}),a.on("init",function(){var c=!1,d=a.selection,e=window.MutationObserver||window.WebKitMutationObserver;a.on("BeforeSetContent",function(){var c,e,f=b(d.getNode());f&&(!f.nextSibling||b(f.nextSibling)?(e=a.getDoc().createTextNode(""),a.dom.insertAfter(e,f)):(c=new y(f.nextSibling,f.nextSibling),e=c.next()),d.select(e),d.collapse(!0))}),a.dom.bind(a.getDoc(),"touchmove",function(){c=!0}),a.on("mousedown mouseup click touchend",function(a){var d=b(a.target);return A=!1,d?(a.stopImmediatePropagation(),a.preventDefault(),"touchend"===a.type&&c?c=!1:h(d),!1):(("touchend"===a.type||"mousedown"===a.type)&&i(),void("touchend"===a.type&&c&&(c=!1)))},!0),e&&new e(function(){a.fire("wp-body-class-change")}).observe(a.getBody(),{attributes:!0,attributeFilter:["class"]}),tinymce.Env.ie&&a.dom.bind(a.getBody(),"controlselect mscontrolselect",function(a){b(a.target)&&a.preventDefault()})}),a.on("PreProcess",function(a){l(a.node)},!0),a.on("hide",function(){wp.mce.views.unbind(),i(),l()}),a.on("PostProcess",function(a){a.content&&(a.content=a.content.replace(/<div [^>]*?data-wpview-text="([^"]+)"[^>]*>[\s\S]*?<\/div>/g,j).replace(/<p [^>]*?data-wpview-marker="([^"]+)"[^>]*>[\s\S]*?<\/p>/g,j))}),a.on("keydown",function(c){var d,j,k,l,o,q,r,s=c.keyCode,t=a.dom,u=a.selection;if(n){if((c.metaKey||c.ctrlKey)&&s!==x.BACKSPACE&&86!==s||s>=112&&123>=s)return void((c.metaKey||c.ctrlKey)&&88===s&&(z=n));if(j=b(u.getNode()),j!==n)return void i();s===x.LEFT?(e(!0,j),c.preventDefault()):s===x.UP?(j.previousSibling?b(j.previousSibling)?e(!0,j.previousSibling):(i(),u.select(j.previousSibling,!0),u.collapse()):e(!0,j),c.preventDefault()):s===x.RIGHT?(e(!1,j),c.preventDefault()):s===x.DOWN?(j.nextSibling?b(j.nextSibling)?e(!1,j.nextSibling):(i(),u.setCursorLocation(j.nextSibling,0)):e(!1,j),c.preventDefault()):m(s)||(g(n),(s===x.ENTER||s===x.DELETE||s===x.BACKSPACE)&&c.preventDefault())}else{if(c.metaKey||c.ctrlKey||s>=112&&123>=s)return;if(d=u.getNode(),p=d,j=b(d),u.isCollapsed()||(o=u.getRng(),(j=b(o.endContainer))?(q=o.cloneRange(),u.select(j.previousSibling,!0),u.collapse(),r=u.getRng(),q.setEnd(r.endContainer,r.endOffset),u.setRng(q)):(j=b(o.startContainer))&&(q=o.cloneRange(),q.setStart(j.nextSibling,0),u.setRng(q))),!j)return void(c.keyCode===x.BACKSPACE&&(a.dom.isEmpty(d)?(j=b(d.previousSibling))&&(e(!1,j),a.dom.remove(d),c.preventDefault()):(o=u.getRng())&&0===o.startOffset&&0===o.endOffset&&(j=b(d.previousSibling))&&(e(!1,j),c.preventDefault())));if(!(k=t.hasClass(j,"wpview-selection-before"))&&!(l=t.hasClass(j,"wpview-selection-after")))return;if(m(s))return;l&&s===x.UP||k&&s===x.BACKSPACE?(j.previousSibling?b(j.previousSibling)?e(!1,j.previousSibling):t.isEmpty(j.previousSibling)&&s===x.BACKSPACE?t.remove(j.previousSibling):(u.select(j.previousSibling,!0),u.collapse()):e(!0,j),c.preventDefault()):!l||s!==x.DOWN&&s!==x.RIGHT?!k||s!==x.UP&&s!==x.LEFT?k&&s===x.DOWN?(j.nextSibling?b(j.nextSibling)?e(!0,j.nextSibling):u.setCursorLocation(j.nextSibling,0):e(!1,j),c.preventDefault()):l&&s===x.LEFT||k&&s===x.RIGHT?(h(j),c.preventDefault()):l&&s===x.BACKSPACE?(g(j),c.preventDefault()):l?f(j):k&&f(j,!0,s):(j.previousSibling&&(b(j.previousSibling)?e(s===x.UP,j.previousSibling):(u.select(j.previousSibling,!0),u.collapse())),c.preventDefault()):(j.nextSibling&&(b(j.nextSibling)?e(s===x.RIGHT,j.nextSibling):u.setCursorLocation(j.nextSibling,0)),c.preventDefault()),s===x.ENTER&&c.preventDefault()}}),a.on("keyup",function(){z&&(g(z),z=!1)}),a.on("focus",function(){var c;r=!0,a.dom.addClass(a.getBody(),"has-focus"),A&&(c=b(a.getBody().firstChild))&&e(!0,c),A=!1}),a.on("blur",function(){r=!1,a.dom.removeClass(a.getBody(),"has-focus")}),a.on("NodeChange",function(d){var f=a.dom,g=a.dom.select(".wpview-wrap"),h=d.element.className,j=b(d.element),k=p;if(p=!1,clearInterval(o),tinymce.each(g,function(a){a.className&&(a.className=a.className.replace(/ ?\bwpview-(?:selection-before|selection-after|cursor-hide)\b/g,""))}),r&&j)if("wpview-selection-before"!==h&&"wpview-selection-after"!==h||!a.selection.isCollapsed())c(d.element,"wpview-clipboard")||q||(i(),q++,e(!0,j));else{if(q=0,i(),k===j.previousSibling)return void e(!0,j);if(k===j.nextSibling)return void e(!1,j);f.addClass(j,h),o=setInterval(function(){f.hasClass(j,"wpview-cursor-hide")?f.removeClass(j,"wpview-cursor-hide"):f.addClass(j,"wpview-cursor-hide")},500)}}),a.on("BeforeExecCommand",function(){var c,d=a.selection.getNode();d&&((t="wpview-selection-before"===d.className)||"wpview-selection-after"===d.className)&&(c=b(d))&&(f(c,t),s=c)}),a.on("ExecCommand",function(){var b,c;n&&(b=n,i(),h(b)),s&&(c=s[t?"previousSibling":"nextSibling"],c&&"P"===c.nodeName&&a.dom.isEmpty(c)&&(a.dom.remove(c),e(t,s)),s=!1)}),a.on("ResolveName",function(c){a.dom.hasClass(c.target,"wpview-wrap")?(c.name=a.dom.getAttrib(c.target,"data-wpview-type")||"wpview",c.stopPropagation()):b(c.target)&&(c.preventDefault(),c.stopPropagation())}),a.addButton("wp_view_edit",{tooltip:"Edit ",icon:"dashicon dashicons-edit",onclick:function(){n&&wp.mce.views.edit(a,n)}}),a.addButton("wp_view_remove",{tooltip:"Remove",icon:"dashicon dashicons-no",onclick:function(){n&&g(n)}}),a.once("preinit",function(){a.wp&&a.wp._createToolbar&&(u=a.wp._createToolbar(["wp_view_edit","wp_view_remove"]))}),a.on("wptoolbar",function(a){n&&(a.element=n,a.toolbar=u)}),a.wp=a.wp||{},a.wp.getView=b,a.wp.setViewCursor=e,{getView:b}):{getView:B}});
\ No newline at end of file
index 863cbf9fa319f20729a0b1188d6d757f1d2147f1..a974bc8c192a0b7419439423ee690ca54e13cb6e 100644 (file)
@@ -23,7 +23,6 @@ body {
        -webkit-font-smoothing: antialiased !important;
        overflow-wrap: break-word;
        word-wrap: break-word; /* Old syntax */
-       word-break: break-word; /* iOS */
 }
 
 body.rtl {
index f94e37d3424faf913a7ae4cf7d95c5c7dc7f5dd2..774f01226d1db0db0cd6505456aa1ee16f9907da 100644 (file)
@@ -41,8 +41,8 @@ tinymce.ThemeManager.add('modern', function(editor) {
                        function bindSelectorChanged() {
                                var selection = editor.selection;
 
-                               if (itemName == "bullist") {
-                                       selection.selectorChanged('ul > li', function(state, args) {
+                               function setActiveItem(name) {
+                                       return function(state, args) {
                                                var nodeName, i = args.parents.length;
 
                                                while (i--) {
@@ -52,23 +52,16 @@ tinymce.ThemeManager.add('modern', function(editor) {
                                                        }
                                                }
 
-                                               item.active(state && nodeName == "UL");
-                                       });
+                                               item.active(state && nodeName == name);
+                                       };
                                }
 
-                               if (itemName == "numlist") {
-                                       selection.selectorChanged('ol > li', function(state, args) {
-                                               var nodeName, i = args.parents.length;
-
-                                               while (i--) {
-                                                       nodeName = args.parents[i].nodeName;
-                                                       if (nodeName == "OL" || nodeName == "UL") {
-                                                               break;
-                                                       }
-                                               }
+                               if (itemName == "bullist") {
+                                       selection.selectorChanged('ul > li', setActiveItem("UL"));
+                               }
 
-                                               item.active(state && nodeName == "OL");
-                                       });
+                               if (itemName == "numlist") {
+                                       selection.selectorChanged('ol > li', setActiveItem("OL"));
                                }
 
                                if (item.settings.stateSelector) {
@@ -552,7 +545,7 @@ tinymce.ThemeManager.add('modern', function(editor) {
                        return null;
                }
 
-               editor.on('click keyup blur', function() {
+               editor.on('click keyup', function() {
                        // Needs to be delayed to avoid Chrome img focus out bug
                        window.setTimeout(function() {
                                var match;
@@ -570,6 +563,8 @@ tinymce.ThemeManager.add('modern', function(editor) {
                        }, 0);
                });
 
+               editor.on('blur hide', hideAllContextToolbars);
+
                editor.on('ObjectResizeStart', function() {
                        var match = findFrontMostMatch(editor.selection.getNode());
 
index 671d184d1a7259468803c99e55eadfc9e44ce61e..202d39c084730a4ef08fadb6a7500685aad3eaec 100644 (file)
@@ -1 +1 @@
-tinymce.ThemeManager.add("modern",function(a){function b(b,c){var d,e=[];if(b)return n(b.split(/[ ,]/),function(b){function f(){var c=a.selection;"bullist"==g&&c.selectorChanged("ul > li",function(a,c){for(var d,e=c.parents.length;e--&&(d=c.parents[e].nodeName,"OL"!=d&&"UL"!=d););b.active(a&&"UL"==d)}),"numlist"==g&&c.selectorChanged("ol > li",function(a,c){for(var d,e=c.parents.length;e--&&(d=c.parents[e].nodeName,"OL"!=d&&"UL"!=d););b.active(a&&"OL"==d)}),b.settings.stateSelector&&c.selectorChanged(b.settings.stateSelector,function(a){b.active(a)},!0),b.settings.disabledStateSelector&&c.selectorChanged(b.settings.disabledStateSelector,function(a){b.disabled(a)})}var g;"|"==b?d=null:m.has(b)?(b={type:b,size:c},e.push(b),d=null):(d||(d={type:"buttongroup",items:[]},e.push(d)),a.buttons[b]&&(g=b,b=a.buttons[g],"function"==typeof b&&(b=b()),b.type=b.type||"button",b.size=c,b=m.create(b),d.items.push(b),a.initialized?f():a.on("init",f)))}),{type:"toolbar",layout:"flow",items:e}}function c(a){function c(c){return c?(d.push(b(c,a)),!0):void 0}var d=[];if(tinymce.isArray(l.toolbar)){if(0===l.toolbar.length)return;tinymce.each(l.toolbar,function(a,b){l["toolbar"+(b+1)]=a}),delete l.toolbar}for(var e=1;10>e&&c(l["toolbar"+e]);e++);return d.length||l.toolbar===!1||c(l.toolbar||s),d.length?{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:d}:void 0}function d(){function b(b){var c;return"|"==b?{text:"|"}:c=a.menuItems[b]}function c(c){var d,e,f,g,h;if(h=tinymce.makeMap((l.removed_menuitems||"").split(/[ ,]/)),l.menu?(e=l.menu[c],g=!0):e=r[c],e){d={text:e.title},f=[],n((e.items||"").split(/[ ,]/),function(a){var c=b(a);c&&!h[a]&&f.push(b(a))}),g||n(a.menuItems,function(a){a.context==c&&("before"==a.separator&&f.push({text:"|"}),a.prependToContext?f.unshift(a):f.push(a),"after"==a.separator&&f.push({text:"|"}))});for(var i=0;i<f.length;i++)"|"==f[i].text&&(0===i||i==f.length-1)&&f.splice(i,1);if(d.menu=f,!d.menu.length)return null}return d}var d,e=[],f=[];if(l.menu)for(d in l.menu)f.push(d);else for(d in r)f.push(d);for(var g="string"==typeof l.menubar?l.menubar.split(/[ ,]/):f,h=0;h<g.length;h++){var i=g[h];i=c(i),i&&e.push(i)}return e}function e(b){function c(a){var c=b.find(a)[0];c&&c.focus(!0)}a.shortcuts.add("Alt+F9","",function(){c("menubar")}),a.shortcuts.add("Alt+F10","",function(){c("toolbar")}),a.shortcuts.add("Alt+F11","",function(){c("elementpath")}),b.on("cancel",function(){a.focus()})}function f(b,c){function d(a){return{width:a.clientWidth,height:a.clientHeight}}var e,f,g,h;e=a.getContainer(),f=a.getContentAreaContainer().firstChild,g=d(e),h=d(f),null!==b&&(b=Math.max(l.min_width||100,b),b=Math.min(l.max_width||65535,b),o.setStyle(e,"width",b+(g.width-h.width)),o.setStyle(f,"width",b)),c=Math.max(l.min_height||100,c),c=Math.min(l.max_height||65535,c),o.setStyle(f,"height",c),a.fire("ResizeEditor")}function g(b,c){var d=a.getContentAreaContainer();k.resizeTo(d.clientWidth+b,d.clientHeight+c)}function h(){function c(){return a.contextToolbars||[]}function d(b){var c,d,e;return c=tinymce.DOM.getPos(a.getContentAreaContainer()),d=a.dom.getRect(b),e=a.dom.getRoot(),"BODY"==e.nodeName&&(d.x-=e.ownerDocument.documentElement.scrollLeft||e.scrollLeft,d.y-=e.ownerDocument.documentElement.scrollTop||e.scrollTop),d.x+=c.x,d.y+=c.y,d}function e(){n(a.contextToolbars,function(a){a.panel&&a.panel.hide()})}function f(b){var c,f,g,h,i,j,k;if(!a.removed){if(!b||!b.toolbar.panel)return void e();k=["tc-bc","bc-tc","tl-bl","bl-tl","tr-br","br-tr"],i=b.toolbar.panel,i.show(),g=d(b.element),f=tinymce.DOM.getRect(i.getEl()),h=tinymce.DOM.getRect(a.getContentAreaContainer()||a.getBody()),a.inline||(h.w=a.getDoc().documentElement.offsetWidth),a.selection.controlSelection.isResizable(b.element)&&(g=p.inflate(g,0,7)),c=p.findBestRelativePosition(f,g,h,k),c?(n(k.concat("inside"),function(a){i.classes.toggle("tinymce-inline-"+a,a==c)}),j=p.relativePosition(f,g,c),i.moveTo(j.x,j.y)):(n(k,function(a){i.classes.toggle("tinymce-inline-"+a,!1)}),i.classes.toggle("tinymce-inline-inside",!0),g=p.intersect(h,g),g?(c=p.findBestRelativePosition(f,g,h,["tc-tc","tl-tl","tr-tr"]),c?(j=p.relativePosition(f,g,c),i.moveTo(j.x,j.y)):i.moveTo(g.x,g.y)):i.hide())}}function g(){function b(){a.selection&&f(k(a.selection.getNode()))}window.requestAnimationFrame?window.requestAnimationFrame(b):b()}function h(){l||(l=a.selection.getScrollContainer()||a.getWin(),tinymce.$(l).on("scroll",g),a.on("remove",function(){tinymce.$(l).off("scroll")}))}function i(a){var c;return a.toolbar.panel?(a.toolbar.panel.show(),void f(a)):(h(),c=m.create({type:"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:b(a.toolbar.items)}),a.toolbar.panel=c,c.renderTo(document.body).reflow(),void f(a))}function j(){tinymce.each(c(),function(a){a.panel&&a.panel.hide()})}function k(b){var d,e,f,g=c();for(f=a.$(b).parents().add(b),d=f.length-1;d>=0;d--)for(e=g.length-1;e>=0;e--)if(g[e].predicate(f[d]))return{toolbar:g[e],element:f[d]};return null}var l;a.on("click keyup blur",function(){window.setTimeout(function(){var b;a.removed||(b=k(a.selection.getNode()),b?i(b):j())},0)}),a.on("ObjectResizeStart",function(){var b=k(a.selection.getNode());b&&b.toolbar.panel&&b.toolbar.panel.hide()}),a.on("nodeChange ResizeEditor ResizeWindow",g),a.on("remove",function(){tinymce.each(c(),function(a){a.panel&&a.panel.remove()}),a.contextToolbars={}})}function i(b){function f(){if(n&&n.moveRel&&n.visible()&&!n._fixed){var b=a.selection.getScrollContainer(),c=a.getBody(),d=0,e=0;if(b){var f=o.getPos(c),g=o.getPos(b);d=Math.max(0,g.x-f.x),e=Math.max(0,g.y-f.y)}n.fixed(!1).moveRel(c,a.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(d,e)}}function g(){n&&(n.show(),f(),o.addClass(a.getBody(),"mce-edit-focus"))}function i(){n&&(n.hide(),q.hideAll(),o.removeClass(a.getBody(),"mce-edit-focus"))}function j(){return n?void(n.visible()||g()):(n=k.panel=m.create({type:p?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!!p,border:1,items:[l.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:d()},c(l.toolbar_items_size)]}),a.fire("BeforeRenderUI"),n.renderTo(p||document.body).reflow(),e(n),g(),h(),a.on("nodeChange",f),a.on("activate",g),a.on("deactivate",i),void a.nodeChanged())}var n,p;return l.fixed_toolbar_container&&(p=o.select(l.fixed_toolbar_container)[0]),l.content_editable=!0,a.on("focus",function(){b.skinUiCss?tinymce.DOM.styleSheetLoader.load(b.skinUiCss,j,j):j()}),a.on("blur hide",i),a.on("remove",function(){n&&(n.remove(),n=null)}),b.skinUiCss&&tinymce.DOM.styleSheetLoader.load(b.skinUiCss),{}}function j(b){var g,i,j;return b.skinUiCss&&tinymce.DOM.loadCSS(b.skinUiCss),g=k.panel=m.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[l.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:d()},c(l.toolbar_items_size),{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",html:"",border:"1 0 0 0"}]}),l.resize!==!1&&(i={type:"resizehandle",direction:l.resize,onResizeStart:function(){var b=a.getContentAreaContainer().firstChild;j={width:b.clientWidth,height:b.clientHeight}},onResize:function(a){"both"==l.resize?f(j.width+a.deltaX,j.height+a.deltaY):f(null,j.height+a.deltaY)}}),l.statusbar!==!1&&g.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath"},i]}),l.readonly&&g.find("*").disabled(!0),a.fire("BeforeRenderUI"),g.renderBefore(b.targetNode).reflow(),l.width&&tinymce.DOM.setStyle(g.getEl(),"width",l.width),a.on("remove",function(){g.remove(),g=null}),e(g),h(),{iframeContainer:g.find("#iframe")[0].getEl(),editorContainer:g.getEl()}}var k=this,l=a.settings,m=tinymce.ui.Factory,n=tinymce.each,o=tinymce.DOM,p=tinymce.ui.Rect,q=tinymce.ui.FloatPanel,r={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid |"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript | formats | removeformat"},table:{title:"Table"},tools:{title:"Tools"}},s="undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";k.renderUI=function(b){var c=l.skin!==!1?l.skin||"lightgray":!1;if(c){var d=l.skin_url;d=d?a.documentBaseURI.toAbsolute(d):tinymce.baseURL+"/skins/"+c,tinymce.Env.documentMode<=7?b.skinUiCss=d+"/skin.ie7.min.css":b.skinUiCss=d+"/skin.min.css",a.contentCSS.push(d+"/content"+(a.inline?".inline":"")+".min.css")}return a.on("ProgressState",function(a){k.throbber=k.throbber||new tinymce.ui.Throbber(k.panel.getEl("body")),a.state?k.throbber.show(a.time):k.throbber.hide()}),l.inline?i(b):j(b)},k.resizeTo=f,k.resizeBy=g});
\ No newline at end of file
+tinymce.ThemeManager.add("modern",function(a){function b(b,c){var d,e=[];if(b)return n(b.split(/[ ,]/),function(b){function f(){function c(a){return function(c,d){for(var e,f=d.parents.length;f--&&(e=d.parents[f].nodeName,"OL"!=e&&"UL"!=e););b.active(c&&e==a)}}var d=a.selection;"bullist"==g&&d.selectorChanged("ul > li",c("UL")),"numlist"==g&&d.selectorChanged("ol > li",c("OL")),b.settings.stateSelector&&d.selectorChanged(b.settings.stateSelector,function(a){b.active(a)},!0),b.settings.disabledStateSelector&&d.selectorChanged(b.settings.disabledStateSelector,function(a){b.disabled(a)})}var g;"|"==b?d=null:m.has(b)?(b={type:b,size:c},e.push(b),d=null):(d||(d={type:"buttongroup",items:[]},e.push(d)),a.buttons[b]&&(g=b,b=a.buttons[g],"function"==typeof b&&(b=b()),b.type=b.type||"button",b.size=c,b=m.create(b),d.items.push(b),a.initialized?f():a.on("init",f)))}),{type:"toolbar",layout:"flow",items:e}}function c(a){function c(c){return c?(d.push(b(c,a)),!0):void 0}var d=[];if(tinymce.isArray(l.toolbar)){if(0===l.toolbar.length)return;tinymce.each(l.toolbar,function(a,b){l["toolbar"+(b+1)]=a}),delete l.toolbar}for(var e=1;10>e&&c(l["toolbar"+e]);e++);return d.length||l.toolbar===!1||c(l.toolbar||s),d.length?{type:"panel",layout:"stack",classes:"toolbar-grp",ariaRoot:!0,ariaRemember:!0,items:d}:void 0}function d(){function b(b){var c;return"|"==b?{text:"|"}:c=a.menuItems[b]}function c(c){var d,e,f,g,h;if(h=tinymce.makeMap((l.removed_menuitems||"").split(/[ ,]/)),l.menu?(e=l.menu[c],g=!0):e=r[c],e){d={text:e.title},f=[],n((e.items||"").split(/[ ,]/),function(a){var c=b(a);c&&!h[a]&&f.push(b(a))}),g||n(a.menuItems,function(a){a.context==c&&("before"==a.separator&&f.push({text:"|"}),a.prependToContext?f.unshift(a):f.push(a),"after"==a.separator&&f.push({text:"|"}))});for(var i=0;i<f.length;i++)"|"==f[i].text&&(0===i||i==f.length-1)&&f.splice(i,1);if(d.menu=f,!d.menu.length)return null}return d}var d,e=[],f=[];if(l.menu)for(d in l.menu)f.push(d);else for(d in r)f.push(d);for(var g="string"==typeof l.menubar?l.menubar.split(/[ ,]/):f,h=0;h<g.length;h++){var i=g[h];i=c(i),i&&e.push(i)}return e}function e(b){function c(a){var c=b.find(a)[0];c&&c.focus(!0)}a.shortcuts.add("Alt+F9","",function(){c("menubar")}),a.shortcuts.add("Alt+F10","",function(){c("toolbar")}),a.shortcuts.add("Alt+F11","",function(){c("elementpath")}),b.on("cancel",function(){a.focus()})}function f(b,c){function d(a){return{width:a.clientWidth,height:a.clientHeight}}var e,f,g,h;e=a.getContainer(),f=a.getContentAreaContainer().firstChild,g=d(e),h=d(f),null!==b&&(b=Math.max(l.min_width||100,b),b=Math.min(l.max_width||65535,b),o.setStyle(e,"width",b+(g.width-h.width)),o.setStyle(f,"width",b)),c=Math.max(l.min_height||100,c),c=Math.min(l.max_height||65535,c),o.setStyle(f,"height",c),a.fire("ResizeEditor")}function g(b,c){var d=a.getContentAreaContainer();k.resizeTo(d.clientWidth+b,d.clientHeight+c)}function h(){function c(){return a.contextToolbars||[]}function d(b){var c,d,e;return c=tinymce.DOM.getPos(a.getContentAreaContainer()),d=a.dom.getRect(b),e=a.dom.getRoot(),"BODY"==e.nodeName&&(d.x-=e.ownerDocument.documentElement.scrollLeft||e.scrollLeft,d.y-=e.ownerDocument.documentElement.scrollTop||e.scrollTop),d.x+=c.x,d.y+=c.y,d}function e(){n(a.contextToolbars,function(a){a.panel&&a.panel.hide()})}function f(b){var c,f,g,h,i,j,k;if(!a.removed){if(!b||!b.toolbar.panel)return void e();k=["tc-bc","bc-tc","tl-bl","bl-tl","tr-br","br-tr"],i=b.toolbar.panel,i.show(),g=d(b.element),f=tinymce.DOM.getRect(i.getEl()),h=tinymce.DOM.getRect(a.getContentAreaContainer()||a.getBody()),a.inline||(h.w=a.getDoc().documentElement.offsetWidth),a.selection.controlSelection.isResizable(b.element)&&(g=p.inflate(g,0,7)),c=p.findBestRelativePosition(f,g,h,k),c?(n(k.concat("inside"),function(a){i.classes.toggle("tinymce-inline-"+a,a==c)}),j=p.relativePosition(f,g,c),i.moveTo(j.x,j.y)):(n(k,function(a){i.classes.toggle("tinymce-inline-"+a,!1)}),i.classes.toggle("tinymce-inline-inside",!0),g=p.intersect(h,g),g?(c=p.findBestRelativePosition(f,g,h,["tc-tc","tl-tl","tr-tr"]),c?(j=p.relativePosition(f,g,c),i.moveTo(j.x,j.y)):i.moveTo(g.x,g.y)):i.hide())}}function g(){function b(){a.selection&&f(k(a.selection.getNode()))}window.requestAnimationFrame?window.requestAnimationFrame(b):b()}function h(){l||(l=a.selection.getScrollContainer()||a.getWin(),tinymce.$(l).on("scroll",g),a.on("remove",function(){tinymce.$(l).off("scroll")}))}function i(a){var c;return a.toolbar.panel?(a.toolbar.panel.show(),void f(a)):(h(),c=m.create({type:"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!0,border:1,items:b(a.toolbar.items)}),a.toolbar.panel=c,c.renderTo(document.body).reflow(),void f(a))}function j(){tinymce.each(c(),function(a){a.panel&&a.panel.hide()})}function k(b){var d,e,f,g=c();for(f=a.$(b).parents().add(b),d=f.length-1;d>=0;d--)for(e=g.length-1;e>=0;e--)if(g[e].predicate(f[d]))return{toolbar:g[e],element:f[d]};return null}var l;a.on("click keyup",function(){window.setTimeout(function(){var b;a.removed||(b=k(a.selection.getNode()),b?i(b):j())},0)}),a.on("blur hide",j),a.on("ObjectResizeStart",function(){var b=k(a.selection.getNode());b&&b.toolbar.panel&&b.toolbar.panel.hide()}),a.on("nodeChange ResizeEditor ResizeWindow",g),a.on("remove",function(){tinymce.each(c(),function(a){a.panel&&a.panel.remove()}),a.contextToolbars={}})}function i(b){function f(){if(n&&n.moveRel&&n.visible()&&!n._fixed){var b=a.selection.getScrollContainer(),c=a.getBody(),d=0,e=0;if(b){var f=o.getPos(c),g=o.getPos(b);d=Math.max(0,g.x-f.x),e=Math.max(0,g.y-f.y)}n.fixed(!1).moveRel(c,a.rtl?["tr-br","br-tr"]:["tl-bl","bl-tl","tr-br"]).moveBy(d,e)}}function g(){n&&(n.show(),f(),o.addClass(a.getBody(),"mce-edit-focus"))}function i(){n&&(n.hide(),q.hideAll(),o.removeClass(a.getBody(),"mce-edit-focus"))}function j(){return n?void(n.visible()||g()):(n=k.panel=m.create({type:p?"panel":"floatpanel",role:"application",classes:"tinymce tinymce-inline",layout:"flex",direction:"column",align:"stretch",autohide:!1,autofix:!0,fixed:!!p,border:1,items:[l.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:d()},c(l.toolbar_items_size)]}),a.fire("BeforeRenderUI"),n.renderTo(p||document.body).reflow(),e(n),g(),h(),a.on("nodeChange",f),a.on("activate",g),a.on("deactivate",i),void a.nodeChanged())}var n,p;return l.fixed_toolbar_container&&(p=o.select(l.fixed_toolbar_container)[0]),l.content_editable=!0,a.on("focus",function(){b.skinUiCss?tinymce.DOM.styleSheetLoader.load(b.skinUiCss,j,j):j()}),a.on("blur hide",i),a.on("remove",function(){n&&(n.remove(),n=null)}),b.skinUiCss&&tinymce.DOM.styleSheetLoader.load(b.skinUiCss),{}}function j(b){var g,i,j;return b.skinUiCss&&tinymce.DOM.loadCSS(b.skinUiCss),g=k.panel=m.create({type:"panel",role:"application",classes:"tinymce",style:"visibility: hidden",layout:"stack",border:1,items:[l.menubar===!1?null:{type:"menubar",border:"0 0 1 0",items:d()},c(l.toolbar_items_size),{type:"panel",name:"iframe",layout:"stack",classes:"edit-area",html:"",border:"1 0 0 0"}]}),l.resize!==!1&&(i={type:"resizehandle",direction:l.resize,onResizeStart:function(){var b=a.getContentAreaContainer().firstChild;j={width:b.clientWidth,height:b.clientHeight}},onResize:function(a){"both"==l.resize?f(j.width+a.deltaX,j.height+a.deltaY):f(null,j.height+a.deltaY)}}),l.statusbar!==!1&&g.add({type:"panel",name:"statusbar",classes:"statusbar",layout:"flow",border:"1 0 0 0",ariaRoot:!0,items:[{type:"elementpath"},i]}),l.readonly&&g.find("*").disabled(!0),a.fire("BeforeRenderUI"),g.renderBefore(b.targetNode).reflow(),l.width&&tinymce.DOM.setStyle(g.getEl(),"width",l.width),a.on("remove",function(){g.remove(),g=null}),e(g),h(),{iframeContainer:g.find("#iframe")[0].getEl(),editorContainer:g.getEl()}}var k=this,l=a.settings,m=tinymce.ui.Factory,n=tinymce.each,o=tinymce.DOM,p=tinymce.ui.Rect,q=tinymce.ui.FloatPanel,r={file:{title:"File",items:"newdocument"},edit:{title:"Edit",items:"undo redo | cut copy paste pastetext | selectall"},insert:{title:"Insert",items:"|"},view:{title:"View",items:"visualaid |"},format:{title:"Format",items:"bold italic underline strikethrough superscript subscript | formats | removeformat"},table:{title:"Table"},tools:{title:"Tools"}},s="undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image";k.renderUI=function(b){var c=l.skin!==!1?l.skin||"lightgray":!1;if(c){var d=l.skin_url;d=d?a.documentBaseURI.toAbsolute(d):tinymce.baseURL+"/skins/"+c,tinymce.Env.documentMode<=7?b.skinUiCss=d+"/skin.ie7.min.css":b.skinUiCss=d+"/skin.min.css",a.contentCSS.push(d+"/content"+(a.inline?".inline":"")+".min.css")}return a.on("ProgressState",function(a){k.throbber=k.throbber||new tinymce.ui.Throbber(k.panel.getEl("body")),a.state?k.throbber.show(a.time):k.throbber.hide()}),l.inline?i(b):j(b)},k.resizeTo=f,k.resizeBy=g});
\ No newline at end of file
index 93e16d00d24de3fee3ac632054d42bc794314890..b5e918ad33bfaa3cdc7671dad11f5ad26f0e0384 100644 (file)
@@ -1,12 +1,12 @@
-// 4.2.5 (2015-08-31)
-!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){var r,i,o,a,l;for(r=0;r<n.length;r++){i=e,o=n[r],a=o.split(/[.\/]/);for(var c=0;c<a.length-1;++c)i[a[c]]===t&&(i[a[c]]={}),i=i[a[c]];i[a[a.length-1]]=s[o]}if(e.AMDLC_TESTS){l=e.privateModules||{};for(o in s)l[o]=s[o];for(r=0;r<n.length;r++)delete l[n[r]];e.privateModules=l}}var s={},l="tinymce/dom/EventUtils",c="tinymce/dom/Sizzle",u="tinymce/Env",d="tinymce/util/Arr",f="tinymce/util/Tools",h="tinymce/dom/DomQuery",p="tinymce/html/Styles",m="tinymce/dom/TreeWalker",g="tinymce/dom/Range",v="tinymce/html/Entities",y="tinymce/dom/StyleSheetLoader",b="tinymce/dom/DOMUtils",x="tinymce/dom/ScriptLoader",C="tinymce/AddOnManager",w="tinymce/dom/RangeUtils",_="tinymce/NodeChange",E="tinymce/html/Node",N="tinymce/html/Schema",S="tinymce/html/SaxParser",k="tinymce/html/DomParser",T="tinymce/html/Writer",R="tinymce/html/Serializer",A="tinymce/dom/Serializer",B="tinymce/dom/TridentSelection",D="tinymce/util/VK",M="tinymce/dom/ControlSelection",L="tinymce/dom/BookmarkManager",H="tinymce/dom/Selection",P="tinymce/dom/ElementUtils",O="tinymce/fmt/Preview",I="tinymce/Formatter",F="tinymce/UndoManager",z="tinymce/EnterKey",W="tinymce/ForceBlocks",V="tinymce/EditorCommands",U="tinymce/util/URI",$="tinymce/util/Class",q="tinymce/util/EventDispatcher",j="tinymce/data/Binding",K="tinymce/util/Observable",Y="tinymce/data/ObservableObject",G="tinymce/ui/Selector",X="tinymce/ui/Collection",J="tinymce/ui/DomUtils",Q="tinymce/ui/BoxUtils",Z="tinymce/ui/ClassList",ee="tinymce/ui/ReflowQueue",te="tinymce/ui/Control",ne="tinymce/ui/Factory",re="tinymce/ui/KeyboardNavigation",ie="tinymce/ui/Container",oe="tinymce/ui/DragHelper",ae="tinymce/ui/Scrollable",se="tinymce/ui/Panel",le="tinymce/ui/Movable",ce="tinymce/ui/Resizable",ue="tinymce/ui/FloatPanel",de="tinymce/ui/Window",fe="tinymce/ui/MessageBox",he="tinymce/WindowManager",pe="tinymce/util/Quirks",me="tinymce/EditorObservable",ge="tinymce/Shortcuts",ve="tinymce/util/Promise",ye="tinymce/util/Fun",be="tinymce/file/Uploader",xe="tinymce/file/Conversions",Ce="tinymce/file/ImageScanner",we="tinymce/file/BlobCache",_e="tinymce/EditorUpload",Ee="tinymce/Editor",Ne="tinymce/util/I18n",Se="tinymce/FocusManager",ke="tinymce/EditorManager",Te="tinymce/LegacyInput",Re="tinymce/util/XHR",Ae="tinymce/util/JSON",Be="tinymce/util/JSONRequest",De="tinymce/util/JSONP",Me="tinymce/util/LocalStorage",Le="tinymce/Compat",He="tinymce/ui/Layout",Pe="tinymce/ui/AbsoluteLayout",Oe="tinymce/ui/Tooltip",Ie="tinymce/ui/Widget",Fe="tinymce/ui/Button",ze="tinymce/ui/ButtonGroup",We="tinymce/ui/Checkbox",Ve="tinymce/ui/ComboBox",Ue="tinymce/ui/ColorBox",$e="tinymce/ui/PanelButton",qe="tinymce/ui/ColorButton",je="tinymce/util/Color",Ke="tinymce/ui/ColorPicker",Ye="tinymce/ui/Path",Ge="tinymce/ui/ElementPath",Xe="tinymce/ui/FormItem",Je="tinymce/ui/Form",Qe="tinymce/ui/FieldSet",Ze="tinymce/ui/FilePicker",et="tinymce/ui/FitLayout",tt="tinymce/ui/FlexLayout",nt="tinymce/ui/FlowLayout",rt="tinymce/ui/FormatControls",it="tinymce/ui/GridLayout",ot="tinymce/ui/Iframe",at="tinymce/ui/Label",st="tinymce/ui/Toolbar",lt="tinymce/ui/MenuBar",ct="tinymce/ui/MenuButton",ut="tinymce/ui/MenuItem",dt="tinymce/ui/Menu",ft="tinymce/ui/ListBox",ht="tinymce/ui/Radio",pt="tinymce/ui/Rect",mt="tinymce/ui/ResizeHandle",gt="tinymce/ui/Slider",vt="tinymce/ui/Spacer",yt="tinymce/ui/SplitButton",bt="tinymce/ui/StackLayout",xt="tinymce/ui/TabPanel",Ct="tinymce/ui/TextBox",wt="tinymce/ui/Throbber";r(l,[],function(){function e(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function t(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function n(e,t){function n(){return!1}function r(){return!0}var i,o=t||{},l;for(i in e)s[i]||(o[i]=e[i]);if(o.target||(o.target=o.srcElement||document),e&&a.test(e.type)&&e.pageX===l&&e.clientX!==l){var c=o.target.ownerDocument||document,u=c.documentElement,d=c.body;o.pageX=e.clientX+(u&&u.scrollLeft||d&&d.scrollLeft||0)-(u&&u.clientLeft||d&&d.clientLeft||0),o.pageY=e.clientY+(u&&u.scrollTop||d&&d.scrollTop||0)-(u&&u.clientTop||d&&d.clientTop||0)}return o.preventDefault=function(){o.isDefaultPrevented=r,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},o.stopPropagation=function(){o.isPropagationStopped=r,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},o.stopImmediatePropagation=function(){o.isImmediatePropagationStopped=r,o.stopPropagation()},o.isDefaultPrevented||(o.isDefaultPrevented=n,o.isPropagationStopped=n,o.isImmediatePropagationStopped=n),"undefined"==typeof o.metaKey&&(o.metaKey=!1),o}function r(n,r,i){function o(){i.domLoaded||(i.domLoaded=!0,r(c))}function a(){("complete"===l.readyState||"interactive"===l.readyState&&l.body)&&(t(l,"readystatechange",a),o())}function s(){try{l.documentElement.doScroll("left")}catch(e){return void setTimeout(s,0)}o()}var l=n.document,c={type:"ready"};return i.domLoaded?void r(c):(l.addEventListener?"complete"===l.readyState?o():e(n,"DOMContentLoaded",o):(e(l,"readystatechange",a),l.documentElement.doScroll&&n.self===n.top&&s()),void e(n,"load",o))}function i(){function i(e,t){var n,r,i,o,a=s[t];if(n=a&&a[e.type])for(r=0,i=n.length;i>r;r++)if(o=n[r],o&&o.func.call(o.scope,e)===!1&&e.preventDefault(),e.isImmediatePropagationStopped())return}var a=this,s={},l,c,u,d,f;c=o+(+new Date).toString(32),d="onmouseenter"in document.documentElement,u="onfocusin"in document.documentElement,f={mouseenter:"mouseover",mouseleave:"mouseout"},l=1,a.domLoaded=!1,a.events=s,a.bind=function(t,o,h,p){function m(e){i(n(e||_.event),g)}var g,v,y,b,x,C,w,_=window;if(t&&3!==t.nodeType&&8!==t.nodeType){for(t[c]?g=t[c]:(g=l++,t[c]=g,s[g]={}),p=p||t,o=o.split(" "),y=o.length;y--;)b=o[y],C=m,x=w=!1,"DOMContentLoaded"===b&&(b="ready"),a.domLoaded&&"ready"===b&&"complete"==t.readyState?h.call(p,n({type:b})):(d||(x=f[b],x&&(C=function(e){var t,r;if(t=e.currentTarget,r=e.relatedTarget,r&&t.contains)r=t.contains(r);else for(;r&&r!==t;)r=r.parentNode;r||(e=n(e||_.event),e.type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,i(e,g))})),u||"focusin"!==b&&"focusout"!==b||(w=!0,x="focusin"===b?"focus":"blur",C=function(e){e=n(e||_.event),e.type="focus"===e.type?"focusin":"focusout",i(e,g)}),v=s[g][b],v?"ready"===b&&a.domLoaded?h({type:b}):v.push({func:h,scope:p}):(s[g][b]=v=[{func:h,scope:p}],v.fakeName=x,v.capture=w,v.nativeHandler=C,"ready"===b?r(t,C,a):e(t,x||b,C,w)));return t=v=0,h}},a.unbind=function(e,n,r){var i,o,l,u,d,f;if(!e||3===e.nodeType||8===e.nodeType)return a;if(i=e[c]){if(f=s[i],n){for(n=n.split(" "),l=n.length;l--;)if(d=n[l],o=f[d]){if(r)for(u=o.length;u--;)if(o[u].func===r){var h=o.nativeHandler,p=o.fakeName,m=o.capture;o=o.slice(0,u).concat(o.slice(u+1)),o.nativeHandler=h,o.fakeName=p,o.capture=m,f[d]=o}r&&0!==o.length||(delete f[d],t(e,o.fakeName||d,o.nativeHandler,o.capture))}}else{for(d in f)o=f[d],t(e,o.fakeName||d,o.nativeHandler,o.capture);f={}}for(d in f)return a;delete s[i];try{delete e[c]}catch(g){e[c]=null}}return a},a.fire=function(e,t,r){var o;if(!e||3===e.nodeType||8===e.nodeType)return a;r=n(null,r),r.type=t,r.target=e;do o=e[c],o&&i(r,o),e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow;while(e&&!r.isPropagationStopped());return a},a.clean=function(e){var t,n,r=a.unbind;if(!e||3===e.nodeType||8===e.nodeType)return a;if(e[c]&&r(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(r(e),n=e.getElementsByTagName("*"),t=n.length;t--;)e=n[t],e[c]&&r(e);return a},a.destroy=function(){s={}},a.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}}var o="mce-data-",a=/^(?:mouse|contextmenu)|click/,s={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1};return i.Event=new i,i.Event.bind(window,"ready",function(){}),i}),r(c,[],function(){function e(e,t,n,r){var i,o,a,s,l,c,d,h,p,m;if((t?t.ownerDocument||t:z)!==D&&B(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(L&&!r){if(i=ve.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&I(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Z.apply(n,t.getElementsByTagName(e)),n;if((a=i[3])&&C.getElementsByClassName)return Z.apply(n,t.getElementsByClassName(a)),n}if(C.qsa&&(!H||!H.test(e))){if(h=d=F,p=t,m=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(c=N(e),(d=t.getAttribute("id"))?h=d.replace(be,"\\$&"):t.setAttribute("id",h),h="[id='"+h+"'] ",l=c.length;l--;)c[l]=h+f(c[l]);p=ye.test(e)&&u(t.parentNode)||t,m=c.join(",")}if(m)try{return Z.apply(n,p.querySelectorAll(m)),n}catch(g){}finally{d||t.removeAttribute("id")}}}return k(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[F]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=e.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||Y)-(~e.sourceIndex||Y);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function u(e){return e&&typeof e.getElementsByTagName!==K&&e}function d(){}function f(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function h(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=V++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,l,c=[W,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[F]||(t[F]={}),(s=l[r])&&s[0]===W&&s[1]===o)return c[2]=s[2];if(l[r]=c,c[2]=e(t,n,a))return!0}}}function p(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(t,n,r){for(var i=0,o=n.length;o>i;i++)e(t,n[i],r);return r}function g(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),c&&t.push(s));return a}function v(e,t,n,i,o,a){return i&&!i[F]&&(i=v(i)),o&&!o[F]&&(o=v(o,a)),r(function(r,a,s,l){var c,u,d,f=[],h=[],p=a.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,f,e,s,l),b=n?o||(r?e:p||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(c=g(b,h),i(c,[],s,l),u=c.length;u--;)(d=c[u])&&(b[h[u]]=!(y[h[u]]=d));if(r){if(o||e){if(o){for(c=[],u=b.length;u--;)(d=b[u])&&c.push(y[u]=d);o(null,b=[],c,l)}for(u=b.length;u--;)(d=b[u])&&(c=o?te.call(r,d):f[u])>-1&&(r[c]=!(a[c]=d))}}else b=g(b===a?b.splice(p,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=h(function(e){return e===t},a,!0),c=h(function(e){return te.call(t,e)>-1},a,!0),u=[function(e,n,r){return!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):c(e,n,r))}];i>s;s++)if(n=w.relative[e[s].type])u=[h(p(u),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[F]){for(r=++s;i>r&&!w.relative[e[r].type];r++);return v(s>1&&p(u),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&f(e))}u.push(n)}return p(u)}function b(t,n){var i=n.length>0,o=t.length>0,a=function(r,a,s,l,c){var u,d,f,h=0,p="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",c),x=W+=null==y?1:Math.random()||.1,C=b.length;for(c&&(T=a!==D&&a);p!==C&&null!=(u=b[p]);p++){if(o&&u){for(d=0;f=t[d++];)if(f(u,a,s)){l.push(u);break}c&&(W=x)}i&&((u=!f&&u)&&h--,r&&m.push(u))}if(h+=p,i&&p!==h){for(d=0;f=n[d++];)f(m,v,a,s);if(r){if(h>0)for(;p--;)m[p]||v[p]||(v[p]=J.call(l));v=g(v)}Z.apply(l,v),c&&!r&&v.length>0&&h+n.length>1&&e.uniqueSort(l)}return c&&(W=x,T=y),m};return i?r(a):a}var x,C,w,_,E,N,S,k,T,R,A,B,D,M,L,H,P,O,I,F="sizzle"+-new Date,z=window.document,W=0,V=0,U=n(),$=n(),q=n(),j=function(e,t){return e===t&&(A=!0),0},K=typeof t,Y=1<<31,G={}.hasOwnProperty,X=[],J=X.pop,Q=X.push,Z=X.push,ee=X.slice,te=X.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},ne="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",re="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",oe="\\["+re+"*("+ie+")(?:"+re+"*([*^$|!~]?=)"+re+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+re+"*\\]",ae=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+oe+")*)|.*)\\)|)",se=new RegExp("^"+re+"+|((?:^|[^\\\\])(?:\\\\.)*)"+re+"+$","g"),le=new RegExp("^"+re+"*,"+re+"*"),ce=new RegExp("^"+re+"*([>+~]|"+re+")"+re+"*"),ue=new RegExp("="+re+"*([^\\]'\"]*?)"+re+"*\\]","g"),de=new RegExp(ae),fe=new RegExp("^"+ie+"$"),he={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ae),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+re+"*(even|odd|(([+-]|)(\\d*)n|)"+re+"*(?:([+-]|)"+re+"*(\\d+)|))"+re+"*\\)|)","i"),bool:new RegExp("^(?:"+ne+")$","i"),needsContext:new RegExp("^"+re+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+re+"*((?:-\\d)?\\d*)"+re+"*\\)|)(?=[^-]|$)","i")},pe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,xe=new RegExp("\\\\([\\da-f]{1,6}"+re+"?|("+re+")|.)","ig"),Ce=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{Z.apply(X=ee.call(z.childNodes),z.childNodes),X[z.childNodes.length].nodeType}catch(we){Z={apply:X.length?function(e,t){Q.apply(e,ee.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}C=e.support={},E=e.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},B=e.setDocument=function(e){var t,n=e?e.ownerDocument||e:z,r=n.defaultView;return n!==D&&9===n.nodeType&&n.documentElement?(D=n,M=n.documentElement,L=!E(n),r&&r!==r.top&&(r.addEventListener?r.addEventListener("unload",function(){B()},!1):r.attachEvent&&r.attachEvent("onunload",function(){B()})),C.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),C.getElementsByTagName=i(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),C.getElementsByClassName=ge.test(n.getElementsByClassName),C.getById=i(function(e){return M.appendChild(e).id=F,!n.getElementsByName||!n.getElementsByName(F).length}),C.getById?(w.find.ID=function(e,t){if(typeof t.getElementById!==K&&L){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(e){var t=e.replace(xe,Ce);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(xe,Ce);return function(e){var n=typeof e.getAttributeNode!==K&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=C.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==K?t.getElementsByTagName(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=C.getElementsByClassName&&function(e,t){return L?t.getElementsByClassName(e):void 0},P=[],H=[],(C.qsa=ge.test(n.querySelectorAll))&&(i(function(e){e.innerHTML="<select msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&H.push("[*^$]="+re+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||H.push("\\["+re+"*(?:value|"+ne+")"),e.querySelectorAll(":checked").length||H.push(":checked")}),i(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&H.push("name"+re+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||H.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),H.push(",.*:")})),(C.matchesSelector=ge.test(O=M.matches||M.webkitMatchesSelector||M.mozMatchesSelector||M.oMatchesSelector||M.msMatchesSelector))&&i(function(e){C.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),P.push("!=",ae)}),H=H.length&&new RegExp(H.join("|")),P=P.length&&new RegExp(P.join("|")),t=ge.test(M.compareDocumentPosition),I=t||ge.test(M.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return A=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r?r:(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&r||!C.sortDetached&&t.compareDocumentPosition(e)===r?e===n||e.ownerDocument===z&&I(z,e)?-1:t===n||t.ownerDocument===z&&I(z,t)?1:R?te.call(R,e)-te.call(R,t):0:4&r?-1:1)}:function(e,t){if(e===t)return A=!0,0;var r,i=0,o=e.parentNode,s=t.parentNode,l=[e],c=[t];if(!o||!s)return e===n?-1:t===n?1:o?-1:s?1:R?te.call(R,e)-te.call(R,t):0;if(o===s)return a(e,t);for(r=e;r=r.parentNode;)l.unshift(r);for(r=t;r=r.parentNode;)c.unshift(r);for(;l[i]===c[i];)i++;return i?a(l[i],c[i]):l[i]===z?-1:c[i]===z?1:0},n):D},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&B(t),n=n.replace(ue,"='$1']"),C.matchesSelector&&L&&(!P||!P.test(n))&&(!H||!H.test(n)))try{var r=O.call(t,n);if(r||C.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,D,null,[t]).length>0},e.contains=function(e,t){return(e.ownerDocument||e)!==D&&B(e),I(e,t)},e.attr=function(e,n){(e.ownerDocument||e)!==D&&B(e);var r=w.attrHandle[n.toLowerCase()],i=r&&G.call(w.attrHandle,n.toLowerCase())?r(e,n,!L):t;return i!==t?i:C.attributes||!L?e.getAttribute(n):(i=e.getAttributeNode(n))&&i.specified?i.value:null},e.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},e.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!C.detectDuplicates,R=!C.sortStable&&e.slice(0),e.sort(j),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return R=null,e},_=e.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=_(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=_(t);return n},w=e.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,Ce),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,Ce),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&de.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,Ce).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+re+")"+e+"("+re+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==K&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:n?(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o+" ").indexOf(r)>-1:"|="===n?o===r||o.slice(0,r.length+1)===r+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var c,u,d,f,h,p,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;p=m="only"===e&&!p&&"nextSibling"}return!0}if(p=[a?g.firstChild:g.lastChild],a&&y){for(u=g[F]||(g[F]={}),c=u[e]||[],h=c[0]===W&&c[1],f=c[0]===W&&c[2],d=h&&g.childNodes[h];d=++h&&d&&d[m]||(f=h=0)||p.pop();)if(1===d.nodeType&&++f&&d===t){u[e]=[W,h,f];break}}else if(y&&(c=(t[F]||(t[F]={}))[e])&&c[0]===W)f=c[1];else for(;(d=++h&&d&&d[m]||(f=h=0)||p.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[F]||(d[F]={}))[e]=[W,f]),d!==t)););return f-=i,f===r||f%r===0&&f/r>=0}}},PSEUDO:function(t,n){var i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=te.call(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=S(e.replace(se,"$1"));return i[F]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(e){return e=e.replace(xe,Ce),function(t){return(t.textContent||t.innerText||_(t)).indexOf(e)>-1}}),lang:r(function(t){return fe.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(xe,Ce).toLowerCase(),function(e){var n;do if(n=L?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===M},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return pe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}},w.pseudos.nth=w.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})w.pseudos[x]=l(x);return d.prototype=w.filters=w.pseudos,w.setFilters=new d,N=e.tokenize=function(t,n){var r,i,o,a,s,l,c,u=$[t+" "];if(u)return n?0:u.slice(0);for(s=t,l=[],c=w.preFilter;s;){(!r||(i=le.exec(s)))&&(i&&(s=s.slice(i[0].length)||s),l.push(o=[])),r=!1,(i=ce.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se," ")}),s=s.slice(r.length));for(a in w.filter)!(i=he[a].exec(s))||c[a]&&!(i=c[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?e.error(t):$(t,l).slice(0)},S=e.compile=function(e,t){var n,r=[],i=[],o=q[e+" "];if(!o){for(t||(t=N(e)),n=t.length;n--;)o=y(t[n]),o[F]?r.push(o):i.push(o);o=q(e,b(i,r)),o.selector=e}return o},k=e.select=function(e,t,n,r){var i,o,a,s,l,c="function"==typeof e&&e,d=!r&&N(e=c.selector||e);if(n=n||[],1===d.length){if(o=d[0]=d[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&C.getById&&9===t.nodeType&&L&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(xe,Ce),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=he.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(xe,Ce),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&f(o),!e)return Z.apply(n,r),n;break}}return(c||S(e,d))(r,t,!L,n,ye.test(e)&&u(t.parentNode)||t),n},C.sortStable=F.split("").sort(j).join("")===F,C.detectDuplicates=!!A,B(),C.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),C.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(ne,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),e}),r(u,[],function(){var e=navigator,t=e.userAgent,n,r,i,o,a,s,l,c,u,d;n=window.opera&&window.opera.buildNumber,u=/Android/.test(t),r=/WebKit/.test(t),i=!r&&!n&&/MSIE/gi.test(t)&&/Explorer/gi.test(e.appName),i=i&&/MSIE (\w+)\./.exec(t)[1],o=-1==t.indexOf("Trident/")||-1==t.indexOf("rv:")&&-1==e.appName.indexOf("Netscape")?!1:11,a=-1==t.indexOf("Edge/")||i||o?!1:12,i=i||o||a,s=!r&&!o&&/Gecko/.test(t),l=-1!=t.indexOf("Mac"),c=/(iPad|iPhone)/.test(t),d="FormData"in window&&"FileReader"in window&&"URL"in window&&!!URL.createObjectURL,a&&(r=!1);var f=!c||d||t.match(/AppleWebKit\/(\d*)/)[1]>=534;return{opera:n,webkit:r,ie:i,gecko:s,mac:l,iOS:c,android:u,contentEditable:f,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=i,range:window.getSelection&&"Range"in window,documentMode:i&&!a?document.documentMode||7:10,fileApi:d}}),r(d,[],function(){function e(e){var t=e,n,r;if(!s(e))for(t=[],n=0,r=e.length;r>n;n++)t[n]=e[n];return t}function n(e,n,r){var i,o;if(!e)return 0;if(r=r||e,e.length!==t){for(i=0,o=e.length;o>i;i++)if(n.call(r,e[i],i,e)===!1)return 0}else for(i in e)if(e.hasOwnProperty(i)&&n.call(r,e[i],i,e)===!1)return 0;return 1}function r(e,t){var r=[];return n(e,function(n,i){r.push(t(n,i,e))}),r}function i(e,t){var r=[];return n(e,function(e){(!t||t(e))&&r.push(e)}),r}function o(e,t){var n,r;if(e)for(n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}function a(e,t,n,r){var i=0;for(arguments.length<3&&(n=e[0],i=1);i<e.length;i++)n=t.call(r,n,e[i],i);return n}var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return{isArray:s,toArray:e,each:n,map:r,filter:i,indexOf:o,reduce:a}}),r(f,[u,d],function(e,n){function r(e){return null===e||e===t?"":(""+e).replace(h,"")}function i(e,r){return r?"array"==r&&n.isArray(e)?!0:typeof e==r:e!==t}function o(e,t,n){var r;for(e=e||[],t=t||",","string"==typeof e&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n}function a(e,t,n){var r=this,i,o,a,s,l,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),a=e[3].match(/(^|\.)(\w+)$/i)[2],o=r.createNS(e[3].replace(/\.\w+$/,""),n),!o[a]){if("static"==e[2])return o[a]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[a]));t[a]||(t[a]=function(){},c=1),o[a]=t[a],r.extend(o[a].prototype,t),e[5]&&(i=r.resolve(e[5]).prototype,s=e[5].match(/\.(\w+)$/i)[1],l=o[a],c?o[a]=function(){return i[s].apply(this,arguments)}:o[a]=function(){return this.parent=i[s],l.apply(this,arguments)},o[a].prototype[a]=o[a],r.each(i,function(e,t){o[a].prototype[t]=i[t]}),r.each(t,function(e,t){i[t]?o[a].prototype[t]=function(){return this.parent=i[t],e.apply(this,arguments)}:t!=a&&(o[a].prototype[t]=e)})),r.each(t["static"],function(e,t){o[a][t]=e})}}function s(e,n){var r,i,o,a=arguments,s;for(r=1,i=a.length;i>r;r++){n=a[r];for(o in n)n.hasOwnProperty(o)&&(s=n[o],s!==t&&(e[o]=s))}return e}function l(e,t,r,i){i=i||this,e&&(r&&(e=e[r]),n.each(e,function(e,n){return t.call(i,e,n,r)===!1?!1:void l(e,t,r,i)}))}function c(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)r=e[n],t[r]||(t[r]={}),t=t[r];return t}function u(e,t){var n,r;for(t=t||window,e=e.split("."),n=0,r=e.length;r>n&&(t=t[e[n]],t);n++);return t}function d(e,t){return!e||i(e,"array")?e:n.map(e.split(t||","),r)}function f(t){var n=e.cacheSuffix;return n&&(t+=(-1===t.indexOf("?")?"?":"&")+n),t}var h=/^\s*|\s*$/g;return{trim:r,isArray:n.isArray,is:i,toArray:n.toArray,makeMap:o,each:n.each,map:n.map,grep:n.filter,inArray:n.indexOf,extend:s,create:a,walk:l,createNS:c,resolve:u,explode:d,_addCacheSuffix:f}}),r(h,[l,c,f,u],function(e,n,r,i){function o(e){return"undefined"!=typeof e}function a(e){return"string"==typeof e}function s(e){return e&&e==e.window}function l(e,t){var n,r,i;for(t=t||w,i=t.createElement("div"),n=t.createDocumentFragment(),i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return n}function c(e,t,n,r){var i;if(a(t))t=l(t,v(e[0]));else if(t.length&&!t.nodeType){if(t=f.makeArray(t),r)for(i=t.length-1;i>=0;i--)c(e,t[i],n,r);else for(i=0;i<t.length;i++)c(e,t[i],n,r);return e}if(t.nodeType)for(i=e.length;i--;)n.call(e[i],t);return e}function u(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function d(e,t,n){var r,i;return t=f(t)[0],e.each(function(){var e=this;n&&r==e.parentNode?i.appendChild(e):(r=e.parentNode,i=t.cloneNode(!1),e.parentNode.insertBefore(i,e),i.appendChild(e))}),e}function f(e,t){return new f.fn.init(e,t)}function h(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1}function p(e){return null===e||e===k?"":(""+e).replace(L,"")}function m(e,t){var n,r,i,o,a;if(e)if(n=e.length,n===o){for(r in e)if(e.hasOwnProperty(r)&&(a=e[r],t.call(a,r,a)===!1))break}else for(i=0;n>i&&(a=e[i],t.call(a,i,a)!==!1);i++);return e}function g(e,t){var n=[];return m(e,function(e,r){t(r,e)&&n.push(r)}),n}function v(e){return e?9==e.nodeType?e:e.ownerDocument:w}function y(e,n,r){var i=[],o=e[n];for("string"!=typeof r&&r instanceof f&&(r=r[0]);o&&9!==o.nodeType;){if(r!==t){if(o===r)break;if("string"==typeof r&&f(o).is(r))break}1===o.nodeType&&i.push(o),o=o[n]}return i}function b(e,n,r,i){var o=[];for(i instanceof f&&(i=i[0]);e;e=e[n])if(!r||e.nodeType===r){if(i!==t){if(e===i)break;if("string"==typeof i&&f(e).is(i))break}o.push(e)}return o}function x(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType==n)return e;return null}function C(e,t,n){m(n,function(n,r){e[n]=e[n]||{},e[n][t]=r})}var w=document,_=Array.prototype.push,E=Array.prototype.slice,N=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,S=e.Event,k,T=r.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),R=r.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),A={
-"for":"htmlFor","class":"className",readonly:"readOnly"},B={"float":"cssFloat"},D={},M={},L=/^\s*|\s*$/g;return f.fn=f.prototype={constructor:f,selector:"",context:null,length:0,init:function(e,t){var n=this,r,i;if(!e)return n;if(e.nodeType)return n.context=n[0]=e,n.length=1,n;if(t&&t.nodeType)n.context=t;else{if(t)return f(e).attr(t);n.context=t=document}if(a(e)){if(n.selector=e,r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!r)return f(t).find(e);if(r[1])for(i=l(e,v(t)).firstChild;i;)_.call(n,i),i=i.nextSibling;else{if(i=v(t).getElementById(r[2]),!i)return n;if(i.id!==r[2])return n.find(e);n.length=1,n[0]=i}}else this.add(e,!1);return n},toArray:function(){return r.toArray(this)},add:function(e,t){var n=this,r,i;if(a(e))return n.add(f(e));if(t!==!1)for(r=f.unique(n.toArray().concat(f.makeArray(e))),n.length=r.length,i=0;i<r.length;i++)n[i]=r[i];else _.apply(n,f.makeArray(e));return n},attr:function(e,t){var n=this,r;if("object"==typeof e)m(e,function(e,t){n.attr(e,t)});else{if(!o(t)){if(n[0]&&1===n[0].nodeType){if(r=D[e],r&&r.get)return r.get(n[0],e);if(R[e])return n.prop(e)?e:k;t=n[0].getAttribute(e,2),null===t&&(t=k)}return t}this.each(function(){var n;if(1===this.nodeType){if(n=D[e],n&&n.set)return void n.set(this,t);null===t?this.removeAttribute(e,2):this.setAttribute(e,t,2)}})}return n},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if(e=A[e]||e,"object"==typeof e)m(e,function(e,t){n.prop(e,t)});else{if(!o(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1==this.nodeType&&(this[e]=t)})}return n},css:function(e,t){function n(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function r(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var i=this,a,s;if("object"==typeof e)m(e,function(e,t){i.css(e,t)});else if(o(t))e=n(e),"number"!=typeof t||T[e]||(t+="px"),i.each(function(){var n=this.style;if(s=M[e],s&&s.set)return void s.set(this,t);try{this.style[B[e]||e]=t}catch(i){}(null===t||""===t)&&(n.removeProperty?n.removeProperty(r(e)):n.removeAttribute(e))});else{if(a=i[0],s=M[e],s&&s.get)return s.get(a);if(a.ownerDocument.defaultView)try{return a.ownerDocument.defaultView.getComputedStyle(a,null).getPropertyValue(r(e))}catch(l){return k}else if(a.currentStyle)return a.currentStyle[n(e)]}return i},remove:function(){for(var e=this,t,n=this.length;n--;)t=e[n],S.clean(t),t.parentNode&&t.parentNode.removeChild(t);return this},empty:function(){for(var e=this,t,n=this.length;n--;)for(t=e[n];t.firstChild;)t.removeChild(t.firstChild);return this},html:function(e){var t=this,n;if(o(e)){n=t.length;try{for(;n--;)t[n].innerHTML=e}catch(r){f(t[n]).empty().append(e)}return t}return t[0]?t[0].innerHTML:""},text:function(e){var t=this,n;if(o(e)){for(n=t.length;n--;)"innerText"in t[n]?t[n].innerText=e:t[0].textContent=e;return t}return t[0]?t[0].innerText||t[0].textContent:""},append:function(){return c(this,arguments,function(e){1===this.nodeType&&this.appendChild(e)})},prepend:function(){return c(this,arguments,function(e){1===this.nodeType&&this.insertBefore(e,this.firstChild)},!0)},before:function(){var e=this;return e[0]&&e[0].parentNode?c(e,arguments,function(e){this.parentNode.insertBefore(e,this)}):e},after:function(){var e=this;return e[0]&&e[0].parentNode?c(e,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):e},appendTo:function(e){return f(e).append(this),this},prependTo:function(e){return f(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return d(this,e)},wrapAll:function(e){return d(this,e,!0)},wrapInner:function(e){return this.each(function(){f(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){f(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),f(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(e,t){var n=this;return"string"!=typeof e?n:(-1!==e.indexOf(" ")?m(e.split(" "),function(){n.toggleClass(this,t)}):n.each(function(n,r){var i,o;o=u(r,e),o!==t&&(i=r.className,o?r.className=p((" "+i+" ").replace(" "+e+" "," ")):r.className+=i?" "+e:e)}),n)},hasClass:function(e){return u(this[0],e)},each:function(e){return m(this,e)},on:function(e,t){return this.each(function(){S.bind(this,e,t)})},off:function(e,t){return this.each(function(){S.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?S.fire(this,e.type,e):S.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new f(E.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;n>t;t++)f.find(e,this[t],r);return f(r)},filter:function(e){return f("function"==typeof e?g(this.toArray(),function(t,n){return e(n,t)}):f.filter(e,this.toArray()))},closest:function(e){var t=[];return e instanceof f&&(e=e[0]),this.each(function(n,r){for(;r;){if("string"==typeof e&&f(r).is(e)){t.push(r);break}if(r==e){t.push(r);break}r=r.parentNode}}),f(t)},offset:function(e){var t,n,r,i=0,o=0,a;return e?this.css(e):(t=this[0],t&&(n=t.ownerDocument,r=n.documentElement,t.getBoundingClientRect&&(a=t.getBoundingClientRect(),i=a.left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,o=a.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:o})},push:_,sort:[].sort,splice:[].splice},r.extend(f,{extend:r.extend,makeArray:function(e){return s(e)||e.nodeType?[e]:r.toArray(e)},inArray:h,isArray:r.isArray,each:m,trim:p,grep:g,find:n,expr:n.selectors,unique:n.uniqueSort,text:n.getText,contains:n.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!=t[r].nodeType&&t.splice(r,1);return t=1===t.length?f.find.matchesSelector(t[0],e)?[t[0]]:[]:f.find.matches(e,t)}}),m({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return y(e,"parentNode")},next:function(e){return x(e,"nextSibling",1)},prev:function(e){return x(e,"previousSibling",1)},children:function(e){return b(e.firstChild,"nextSibling",1)},contents:function(e){return r.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,t){f.fn[e]=function(n){var r=this,i=[];return r.each(function(){var e=t.call(i,this,n,i);e&&(f.isArray(e)?i.push.apply(i,e):i.push(e))}),this.length>1&&(i=f.unique(i),0===e.indexOf("parents")&&(i=i.reverse())),i=f(i),n?i.filter(n):i}}),m({parentsUntil:function(e,t){return y(e,"parentNode",t)},nextUntil:function(e,t){return b(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return b(e,"previousSibling",1,t).slice(1)}},function(e,t){f.fn[e]=function(n,r){var i=this,o=[];return i.each(function(){var e=t.call(o,this,n,o);e&&(f.isArray(e)?o.push.apply(o,e):o.push(e))}),this.length>1&&(o=f.unique(o),(0===e.indexOf("parents")||"prevUntil"===e)&&(o=o.reverse())),o=f(o),r?o.filter(r):o}}),f.fn.is=function(e){return!!e&&this.filter(e).length>0},f.fn.init.prototype=f.fn,f.overrideDefaults=function(e){function t(r,i){return n=n||e(),0===arguments.length&&(r=n.element),i||(i=n.context),new t.fn.init(r,i)}var n;return f.extend(t,this),t},i.ie&&i.ie<8&&(C(D,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?k:t},size:function(e){var t=e.size;return 20===t?k:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?k:t}}),C(D,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),i.ie&&i.ie<9&&(B["float"]="styleFloat",C(M,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),f.attrHooks=D,f.cssHooks=M,f}),r(p,[],function(){return function(e,t){function n(e,t,n,r){function i(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l,c={},u,d,f,h="\ufeff";for(e=e||{},t&&(d=t.getValidStyles(),f=t.getInvalidStyles()),u=("\\\" \\' \\; \\: ; : "+h).split(" "),l=0;l<u.length;l++)c[u[l]]=h+l,c[h+l]=u[l];return{toHex:function(e){return e.replace(r,n)},parse:function(t){function s(e,t,n){var r,i,o,a;if(r=m[e+"-top"+t],r&&(i=m[e+"-right"+t],i&&(o=m[e+"-bottom"+t],o&&(a=m[e+"-left"+t])))){var s=[r,i,o,a];for(l=s.length-1;l--&&s[l]===s[l+1];);l>-1&&n||(m[e+t]=-1==l?s[0]:s.join(" "),delete m[e+"-top"+t],delete m[e+"-right"+t],delete m[e+"-bottom"+t],delete m[e+"-left"+t])}}function u(e){var t=m[e],n;if(t){for(t=t.split(" "),n=t.length;n--;)if(t[n]!==t[0])return!1;return m[e]=t[0],!0}}function d(e,t,n,r){u(t)&&u(n)&&u(r)&&(m[e]=m[t]+" "+m[n]+" "+m[r],delete m[t],delete m[n],delete m[r])}function f(e){return b=!0,c[e]}function h(e,t){return b&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return c[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function p(t,n,r,i,o,a){if(o=o||a)return o=h(o),"'"+o.replace(/\'/g,"\\'")+"'";if(n=h(n||r||i),!e.allow_script_urls){var s=n.replace(/[\s\r\n]+/,"");if(/(java|vb)script:/i.test(s))return"";if(!e.allow_svg_data_urls&&/^data:image\/svg/i.test(s))return""}return x&&(n=x.call(C,n,"style")),"url('"+n.replace(/\'/g,"\\'")+"')"}var m={},g,v,y,b,x=e.url_converter,C=e.url_converter_scope||this;if(t){for(t=t.replace(/[\u0000-\u001F]/g,""),t=t.replace(/\\[\"\';:\uFEFF]/g,f).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,f)});g=o.exec(t);){if(v=g[1].replace(a,"").toLowerCase(),y=g[2].replace(a,""),y=y.replace(/\\[0-9a-f]+/g,function(e){return String.fromCharCode(parseInt(e.substr(1),16))}),v&&y.length>0){if(!e.allow_script_urls&&("behavior"==v||/expression\s*\(|\/\*|\*\//.test(y)))continue;"font-weight"===v&&"700"===y?y="bold":("color"===v||"background-color"===v)&&(y=y.toLowerCase()),y=y.replace(r,n),y=y.replace(i,p),m[v]=b?h(y,!0):y}o.lastIndex=g.index+g[0].length}s("border","",!0),s("border","-width"),s("border","-color"),s("border","-style"),s("padding",""),s("margin",""),d("border","border-width","border-style","border-color"),"medium none"===m.border&&delete m.border,"none"===m["border-image"]&&delete m["border-image"]}return m},serialize:function(e,t){function n(t){var n,r,o,a;if(n=d[t])for(r=0,o=n.length;o>r;r++)t=n[r],a=e[t],a!==s&&a.length>0&&(i+=(i.length>0?" ":"")+t+": "+a+";")}function r(e,t){var n;return n=f["*"],n&&n[e]?!1:(n=f[t],n&&n[e]?!1:!0)}var i="",o,a;if(t&&d)n("*"),n(t);else for(o in e)a=e[o],a!==s&&a.length>0&&(!f||r(o,t))&&(i+=(i.length>0?" ":"")+o+": "+a+";");return i}}}}),r(m,[],function(){return function(e,t){function n(e,n,r,i){var o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return o}}}var r=e;this.current=function(){return r},this.next=function(e){return r=n(r,"firstChild","nextSibling",e)},this.prev=function(e){return r=n(r,"lastChild","previousSibling",e)}}}),r(g,[f],function(e){function t(n){function r(){return H.createDocumentFragment()}function i(e,t){_(F,e,t)}function o(e,t){_(z,e,t)}function a(e){i(e.parentNode,j(e))}function s(e){i(e.parentNode,j(e)+1)}function l(e){o(e.parentNode,j(e))}function c(e){o(e.parentNode,j(e)+1)}function u(e){e?(L[U]=L[V],L[$]=L[W]):(L[V]=L[U],L[W]=L[$]),L.collapsed=F}function d(e){a(e),c(e)}function f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function h(e,t){var n=L[V],r=L[W],i=L[U],o=L[$],a=t.startContainer,s=t.startOffset,l=t.endContainer,c=t.endOffset;return 0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,c):3===e?w(n,r,l,c):void 0}function p(){E(I)}function m(){return E(P)}function g(){return E(O)}function v(e){var t=this[V],r=this[W],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):3==t.nodeType?n.insertAfter(e,t):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function y(e){var t=L.extractContents();L.insertNode(e),e.appendChild(t),L.selectNode(e)}function b(){return q(new t(n),{startContainer:L[V],startOffset:L[W],endContainer:L[U],endOffset:L[$],collapsed:L.collapsed,commonAncestorContainer:L.commonAncestorContainer})}function x(e,t){var n;if(3==e.nodeType)return e;if(0>t)return e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return n?n:e}function C(){return L[V]==L[U]&&L[W]==L[$]}function w(e,t,r,i){var o,a,s,l,c,u;if(e==r)return t==i?0:i>t?-1:1;for(o=r;o&&o.parentNode!=e;)o=o.parentNode;if(o){for(a=0,s=e.firstChild;s!=o&&t>a;)a++,s=s.nextSibling;return a>=t?-1:1}for(o=e;o&&o.parentNode!=r;)o=o.parentNode;if(o){for(a=0,s=r.firstChild;s!=o&&i>a;)a++,s=s.nextSibling;return i>a?-1:1}for(l=n.findCommonAncestor(e,r),c=e;c&&c.parentNode!=l;)c=c.parentNode;for(c||(c=l),u=r;u&&u.parentNode!=l;)u=u.parentNode;if(u||(u=l),c==u)return 0;for(s=l.firstChild;s;){if(s==c)return-1;if(s==u)return 1;s=s.nextSibling}}function _(e,t,r){var i,o;for(e?(L[V]=t,L[W]=r):(L[U]=t,L[$]=r),i=L[U];i.parentNode;)i=i.parentNode;for(o=L[V];o.parentNode;)o=o.parentNode;o==i?w(L[V],L[W],L[U],L[$])>0&&L.collapse(e):L.collapse(e),L.collapsed=C(),L.commonAncestorContainer=n.findCommonAncestor(L[V],L[U])}function E(e){var t,n=0,r=0,i,o,a,s,l,c;if(L[V]==L[U])return N(e);for(t=L[U],i=t.parentNode;i;t=i,i=i.parentNode){if(i==L[V])return S(t,e);++n}for(t=L[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==L[U])return k(t,e);++r}for(o=r-n,a=L[V];o>0;)a=a.parentNode,o--;for(s=L[U];0>o;)s=s.parentNode,o++;for(l=a.parentNode,c=s.parentNode;l!=c;l=l.parentNode,c=c.parentNode)a=l,s=c;return T(a,s,e)}function N(e){var t,n,i,o,a,s,l,c,u;if(e!=I&&(t=r()),L[W]==L[$])return t;if(3==L[V].nodeType){if(n=L[V].nodeValue,i=n.substring(L[W],L[$]),e!=O&&(o=L[V],c=L[W],u=L[$]-L[W],0===c&&u>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(c,u),L.collapse(F)),e==I)return;return i.length>0&&t.appendChild(H.createTextNode(i)),t}for(o=x(L[V],L[W]),a=L[$]-L[W];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return e!=O&&L.collapse(F),t}function S(e,t){var n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=j(e),a=o-L[W],0>=a)return t!=O&&(L.setEndBefore(e),L.collapse(z)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return t!=O&&(L.setEndBefore(e),L.collapse(z)),n}function k(e,t){var n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=j(e),++i,a=L[$]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return t!=O&&(L.setStartAfter(e),L.collapse(F)),n}function T(e,t,n){var i,o,a,s,l,c,u;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=j(e),s=j(t),++a,l=s-a,c=e.nextSibling;l>0;)u=c.nextSibling,i=D(c,n),o&&o.appendChild(i),c=u,--l;return i=R(t,n),o&&o.appendChild(i),n!=O&&(L.setStartAfter(e),L.collapse(F)),o}function R(e,t){var n=x(L[U],L[$]-1),r,i,o,a,s,l=n!=L[U];if(n==e)return B(n,l,z,t);for(r=n.parentNode,i=B(r,z,z,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,z,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return i;n=r.previousSibling,r=r.parentNode,s=B(r,z,z,t),t!=I&&s.appendChild(i),i=s}}function A(e,t){var n=x(L[V],L[W]),r=n!=L[V],i,o,a,s,l;if(n==e)return B(n,r,F,t);for(i=n.parentNode,o=B(i,z,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return o;n=i.nextSibling,i=i.parentNode,l=B(i,z,F,t),t!=I&&l.appendChild(o),o=l}}function B(e,t,r,i){var o,a,s,l,c;if(t)return D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=L[W],a=o.substring(l),s=o.substring(0,l)):(l=L[$],a=o.substring(0,l),s=o.substring(l)),i!=O&&(e.nodeValue=s),i==I)return;return c=n.clone(e,z),c.nodeValue=a,c}if(i!=I)return n.clone(e,z)}function D(e,t){return t!=I?t==O?n.clone(e,F):e:void e.parentNode.removeChild(e)}function M(){return n.create("body",null,g()).outerText}var L=this,H=n.doc,P=0,O=1,I=2,F=!0,z=!1,W="startOffset",V="startContainer",U="endContainer",$="endOffset",q=e.extend,j=n.nodeIndex;return q(L,{startContainer:H,startOffset:0,endContainer:H,endOffset:0,collapsed:F,commonAncestorContainer:H,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:c,collapse:u,selectNode:d,selectNodeContents:f,compareBoundaryPoints:h,deleteContents:p,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:M}),L}return t.prototype.toString=function(){return this.toStringIE()},t}),r(v,[f],function(e){function t(e){var t;return t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function n(e,t){var n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),o[r]||(i="&"+e[n+1]+";",a[r]=i,a[i]=r);return a}}var r=e.makeMap,i,o,a,s=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=/[<>&\"\']/g,u=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},a={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(c,function(e){return o[e]||e})},encodeNumeric:function(e,t){return e.replace(t?s:l,function(e){return e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return n=n||i,e.replace(t?s:l,function(e){return o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return e.replace(n?s:l,function(e){return o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function c(e,n){return f.encodeNamed(e,n,t)}return t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?c:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return e.replace(u,function(e,n){return n?(n="x"===n.charAt(0).toLowerCase()?parseInt(n.substr(1),16):parseInt(n,10),n>65535?(n-=65536,String.fromCharCode(55296+(n>>10),56320+(1023&n))):d[n]||String.fromCharCode(n)):a[e]||i[e]||t(e)})}};return f}),r(y,[f],function(e){return function(t,n){function r(e){t.getElementsByTagName("head")[0].appendChild(e)}function i(n,i,l){function c(){for(var e=y.passed,t=e.length;t--;)e[t]();y.status=2,y.passed=[],y.failed=[]}function u(){for(var e=y.failed,t=e.length;t--;)e[t]();y.status=3,y.passed=[],y.failed=[]}function d(){var e=navigator.userAgent.match(/WebKit\/(\d*)/);return!!(e&&e[1]<536)}function f(e,t){e()||((new Date).getTime()-v<s?window.setTimeout(t,0):u())}function h(){f(function(){for(var e=t.styleSheets,n,r=e.length,i;r--;)if(n=e[r],i=n.ownerNode?n.ownerNode:n.owningElement,i&&i.id===m.id)return c(),!0},h)}function p(){f(function(){try{var e=g.sheet.cssRules;return c(),!!e}catch(t){}},p)}var m,g,v,y;if(n=e._addCacheSuffix(n),a[n]?y=a[n]:(y={passed:[],failed:[]},a[n]=y),i&&y.passed.push(i),l&&y.failed.push(l),1!=y.status){if(2==y.status)return void c();if(3==y.status)return void u();if(y.status=1,m=t.createElement("link"),m.rel="stylesheet",m.type="text/css",m.id="u"+o++,m.async=!1,m.defer=!1,v=(new Date).getTime(),"onload"in m&&!d())m.onload=h,m.onerror=u;else{if(navigator.userAgent.indexOf("Firefox")>0)return g=t.createElement("style"),g.textContent='@import "'+n+'"',p(),void r(g);h()}r(m),m.href=n}}var o=0,a={},s;n=n||{},s=n.maxLoadTime||5e3,this.load=i}}),r(b,[c,h,p,l,m,g,v,u,f,y],function(e,n,r,i,o,a,s,l,c,u){function d(e,t){var n={},r=t.keep_values,i;return i={set:function(n,r,i){t.url_converter&&(r=t.url_converter.call(t.url_converter_scope||e,r,i,n[0])),n.attr("data-mce-"+i,r).attr(i,r)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},n={style:{set:function(e,t){return null!==t&&"object"==typeof t?void e.css(t):(r&&e.attr("data-mce-style",t),void e.attr("style",t))},get:function(t){var n=t.attr("data-mce-style")||t.attr("style");return n=e.serializeStyle(e.parseStyle(n),t[0].nodeName)}}},r&&(n.href=n.src=i),n}function f(e,t){var o=this,a;o.doc=e,o.win=window,o.files={},o.counter=0,o.stdMode=!v||e.documentMode>=8,o.boxModel=!v||"CSS1Compat"==e.compatMode||o.stdMode,o.styleSheetLoader=new u(e),o.boundEvents=[],o.settings=t=t||{},o.schema=t.schema,o.styles=new r({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),o.fixDoc(e),o.events=t.ownEvents?new i(t.proxy):i.Event,o.attrHooks=d(o,t),a=t.schema?t.schema.getBlockElements():{},o.$=n.overrideDefaults(function(){return{context:e,element:o.getRoot()}}),o.isBlock=function(e){if(!e)return!1;var t=e.nodeType;return t?!(1!==t||!a[e.nodeName]):!!a[e]}}var h=c.each,p=c.is,m=c.grep,g=c.trim,v=l.ie,y=/^([a-z0-9],?)+$/i,b=/^[ \t\r\n]*$/;return f.prototype={$$:function(e){return"string"==typeof e&&(e=this.get(e)),this.$(e)},root:null,fixDoc:function(e){var t=this.settings,n;if(v&&t.schema){"abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video".replace(/\w+/g,function(t){e.createElement(t)});for(n in t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var n=this,r,i;return!v||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),h(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var e=this;return e.settings.root_element||e.doc.body},getViewPort:function(e){var t,n;return e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var t=this,n,r;return e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var t=this,n,r;return e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),-1===n.indexOf("px")&&(n=0),-1===r.indexOf("px")&&(r=0),{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),p(n,"string")&&(a=n,n="*"===n?function(e){return 1==e.nodeType}:function(e){return o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return e&&this.doc&&"string"==typeof e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return this._findSib(e,t,"previousSibling")},select:function(t,n){var r=this;return e(t,r.get(n)||r.settings.root_element||r.doc,[])},is:function(n,r){var i;if(n.length===t){if("*"===r)return 1==n.nodeType;if(y.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}if(n.nodeType&&1!=n.nodeType)return!1;var o=n.nodeType?[n]:n;return e(r,o[0].ownerDocument||o[0],null,o).length>0},add:function(e,t,n,r,i){var o=this;return this.run(e,function(e){var a;return a=p(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var r="",i;r+="<"+e;for(i in t)t.hasOwnProperty(i)&&null!==t[i]&&"undefined"!=typeof t[i]&&(r+=" "+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof n?r+">"+n+"</"+e+">":r+" />"},createFragment:function(e){var t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return t},remove:function(e,t){return e=this.$$(e),t?e.each(function(){for(var e;e=this.firstChild;)3==e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():e.remove(),e.length>1?e.toArray():e[0]},setStyle:function(e,t,n){e=this.$$(e).css(t,n),this.settings.update_styles&&e.attr("data-mce-style",null)},getStyle:function(e,n,r){return e=this.$$(e),r?e.css(n):(n=n.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"float"==n&&(n=l.ie&&l.ie<12?"styleFloat":"cssFloat"),e[0]&&e[0].style?e[0].style[n]:t)},setStyles:function(e,t){e=this.$$(e).css(t),this.settings.update_styles&&e.attr("data-mce-style",null)},removeAllAttribs:function(e){return this.run(e,function(e){var t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var r=this,i,o,a=r.settings;""===n&&(n=null),e=r.$$(e),i=e.attr(t),e.length&&(o=r.attrHooks[t],o&&o.set?o.set(e,n,t):e.attr(t,n),i!=n&&a.onSetAttrib&&a.onSetAttrib({attrElm:e,attrName:t,attrValue:n}))},setAttribs:function(e,t){var n=this;n.$$(e).each(function(e,r){h(t,function(e,t){n.setAttrib(r,t,e)})})},getAttrib:function(e,t,n){var r=this,i,o;return e=r.$$(e),e.length&&(i=r.attrHooks[t],o=i&&i.get?i.get(e,t):e.attr(t)),"undefined"==typeof o&&(o=n||""),o},getPos:function(e,t){var r=this,i=0,o=0,a,s=r.doc,l=s.body,c;if(e=r.get(e),t=t||l,e){if(t===l&&e.getBoundingClientRect&&"static"===n(l).css("position"))return c=e.getBoundingClientRect(),t=r.boxModel?s.documentElement:l,i=c.left+(s.documentElement.scrollLeft||l.scrollLeft)-t.clientLeft,o=c.top+(s.documentElement.scrollTop||l.scrollTop)-t.clientTop,{x:i,y:o};for(a=e;a&&a!=t&&a.nodeType;)i+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=e.parentNode;a&&a!=t&&a.nodeType;)i-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode}return{x:i,y:o}},parseStyle:function(e){return this.styles.parse(e)},serializeStyle:function(e,t){return this.styles.serialize(e,t)},addStyle:function(e){var t=this,n=t.doc,r,i;if(t!==f.DOM&&n===document){var o=f.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,f.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var t=this,n=t.doc,r;return t!==f.DOM&&n===document?void f.DOM.loadCSS(e):(e||(e=""),r=n.getElementsByTagName("head")[0],void h(e.split(","),function(e){var i;e=c._addCacheSuffix(e),t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),v&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}))},addClass:function(e,t){this.$$(e).addClass(t)},removeClass:function(e,t){this.toggleClass(e,t,!1)},hasClass:function(e,t){return this.$$(e).hasClass(t)},toggleClass:function(e,t,r){this.$$(e).toggleClass(t,r).each(function(){""===this.className&&n(this).attr("class",null)})},show:function(e){this.$$(e).show()},hide:function(e){this.$$(e).hide()},isHidden:function(e){return"none"==this.$$(e).css("display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){e=this.$$(e),v?e.each(function(e,r){if(r.canHaveHTML!==!1){for(;r.firstChild;)r.removeChild(r.firstChild);try{r.innerHTML="<br>"+t,r.removeChild(r.firstChild)}catch(i){n("<div>").html("<br>"+t).contents().slice(1).appendTo(r)}return t}}):e.html(t)},getOuterHTML:function(e){return e=this.get(e),1==e.nodeType&&"outerHTML"in e?e.outerHTML:n("<div>").append(n(e).clone()).html()},setOuterHTML:function(e,t){var r=this;r.$$(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}r.remove(n(this).html(t),!0)})},decode:s.decode,encode:s.encodeAllRaw,insertAfter:function(e,t){return t=this.get(t),this.run(e,function(e){var n,r;return n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var r=this;return r.run(t,function(t){return p(t,"array")&&(e=e.cloneNode(!0)),n&&h(m(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var n=this,r;return e.nodeName!=t.toUpperCase()&&(r=n.create(t),h(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return this.styles.toHex(c.trim(e))},run:function(e,t,n){var r=this,i;return"string"==typeof e&&(e=r.get(e)),e?(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],h(e,function(e,o){e&&("string"==typeof e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i)):!1},getAttribs:function(e){var t;if(e=this.get(e),!e)return[];if(v){if(t=[],"OBJECT"==e.nodeName)return e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var n=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;return e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return e.attributes},isEmpty:function(e,t){var n=this,r,i,a,s,l,c=0;if(e=e.firstChild){s=new o(e,e.parentNode),t=t||(n.schema?n.schema.getNonEmptyElements():null);
-do{if(a=e.nodeType,1===a){if(e.getAttribute("data-mce-bogus"))continue;if(l=e.nodeName.toLowerCase(),t&&t[l]){if("br"===l){c++;continue}return!1}for(i=n.getAttribs(e),r=i.length;r--;)if(l=i[r].nodeName,"name"===l||"data-mce-bookmark"===l)return!1}if(8==a)return!1;if(3===a&&!b.test(e.nodeValue))return!1}while(e=s.next())}return 1>=c},createRng:function(){var e=this.doc;return e.createRange?e.createRange():new a(this)},nodeIndex:function(e,t){var n=0,r,i;if(e)for(r=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)i=e.nodeType,(!t||3!=i||i!=r&&e.nodeValue.length)&&(n++,r=i);return n},split:function(e,t,n){function r(e){function t(e){var t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return t&&n}var n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var s=g(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return e}}var i=this,o=i.createRng(),a,s,l;return e&&t?(o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.replaceChild(n,t):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t):void 0},bind:function(e,t,n,r){var i=this;if(c.isArray(e)){for(var o=e.length;o--;)e[o]=i.bind(e[o],t,n,r);return e}return!i.settings.collect||e!==i.doc&&e!==i.win||i.boundEvents.push([e,t,n,r]),i.events.bind(e,t,n,r||i)},unbind:function(e,t,n){var r=this,i;if(c.isArray(e)){for(i=e.length;i--;)e[i]=r.unbind(e[i],t,n);return e}if(r.boundEvents&&(e===r.doc||e===r.win))for(i=r.boundEvents.length;i--;){var o=r.boundEvents[i];e!=o[0]||t&&t!=o[1]||n&&n!=o[2]||this.events.unbind(o[0],o[1],o[2])}return this.events.unbind(e,t,n)},fire:function(e,t,n){return this.events.fire(e,t,n)},getContentEditable:function(e){var t;return e&&1==e.nodeType?(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null):null},getContentEditableParent:function(e){for(var t=this.getRoot(),n=null;e&&e!==t&&(n=this.getContentEditable(e),null===n);e=e.parentNode);return n},destroy:function(){var t=this;if(t.boundEvents){for(var n=t.boundEvents.length;n--;){var r=t.boundEvents[n];this.events.unbind(r[0],r[1],r[2])}t.boundEvents=null}e.setDocument&&e.setDocument(),t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset},_findSib:function(e,t,n){var r=this,i=t;if(e)for("string"==typeof i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return e;return null}},f.DOM=new f(document),f}),r(x,[b,f],function(e,t){function n(){function e(e,n){function i(){a.remove(l),s&&(s.onreadystatechange=s.onload=s=null),n()}function o(){"undefined"!=typeof console&&console.log&&console.log("Failed to load: "+e)}var a=r,s,l;l=a.uniqueId(),s=document.createElement("script"),s.id=l,s.type="text/javascript",s.src=t._addCacheSuffix(e),"onreadystatechange"in s?s.onreadystatechange=function(){/loaded|complete/.test(s.readyState)&&i()}:s.onload=i,s.onerror=o,(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}var n=0,a=1,s=2,l={},c=[],u={},d=[],f=0,h;this.isDone=function(e){return l[e]==s},this.markDone=function(e){l[e]=s},this.add=this.load=function(e,t,r){var i=l[e];i==h&&(c.push(e),l[e]=n),t&&(u[e]||(u[e]=[]),u[e].push({func:t,scope:r||this}))},this.loadQueue=function(e,t){this.loadScripts(c,e,t)},this.loadScripts=function(t,n,r){function c(e){i(u[e],function(e){e.func.call(e.scope)}),u[e]=h}var p;d.push({func:n,scope:r||this}),(p=function(){var n=o(t);t.length=0,i(n,function(t){return l[t]==s?void c(t):void(l[t]!=a&&(l[t]=a,f++,e(t,function(){l[t]=s,f--,c(t),p()})))}),f||(i(d,function(e){e.func.call(e.scope)}),d.length=0)})()}}var r=e.DOM,i=t.each,o=t.grep;return n.ScriptLoader=new n,n}),r(C,[x,f],function(e,n){function r(){var e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return r.prototype={get:function(e){return this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var t;return this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t,n){var i=r.language;if(i&&r.languageLoad!==!1){if(n)if(n=","+n+",",-1!=n.indexOf(","+i.substr(0,2)+","))i=i.substr(0,2);else if(-1==n.indexOf(","+i+","))return;e.ScriptLoader.add(this.urls[t]+"/langs/"+i+".js")}},add:function(e,t,n){return this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},createUrl:function(e,t){return"object"==typeof t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s){function l(){var r=c.dependencies(n);i(r,function(e){var n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&(s?a.call(s):a.call(e))}var c=this,u=o;c.urls[n]||("object"==typeof o&&(u=o.prefix+o.resource+o.suffix),0!==u.indexOf("/")&&-1==u.indexOf("://")&&(u=r.baseURL+"/"+u),c.urls[n]=u.substring(0,u.lastIndexOf("/")),c.lookup[n]?l():e.ScriptLoader.add(u,l,s))}},r.PluginManager=new r,r.ThemeManager=new r,r}),r(w,[f,m],function(e,t){function n(e,t){var n=e.childNodes;return t--,t>n.length-1?t=n.length-1:0>t&&(t=0),n[t]||e}function r(e){this.walk=function(t,r){function o(e){var t;return t=e[0],3===t.nodeType&&t===c&&u>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===f&&e.length>0&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e}function a(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function s(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function l(e,t,n){var i=n?"nextSibling":"previousSibling";for(g=e,v=g.parentNode;g&&g!=t;g=v)v=g.parentNode,y=a(g==e?g:g[i],i),y.length&&(n||y.reverse(),r(o(y)))}var c=t.startContainer,u=t.startOffset,d=t.endContainer,f=t.endOffset,h,p,m,g,v,y,b;if(b=e.select("td.mce-item-selected,th.mce-item-selected"),b.length>0)return void i(b,function(e){r([e])});if(1==c.nodeType&&c.hasChildNodes()&&(c=c.childNodes[u]),1==d.nodeType&&d.hasChildNodes()&&(d=n(d,f)),c==d)return r(o([c]));for(h=e.findCommonAncestor(c,d),g=c;g;g=g.parentNode){if(g===d)return l(c,h,!0);if(g===h)break}for(g=d;g;g=g.parentNode){if(g===c)return l(d,h);if(g===h)break}p=s(c,h)||c,m=s(d,h)||d,l(c,p,!0),y=a(p==c?p:p.nextSibling,"nextSibling",m==d?m.nextSibling:m),y.length&&r(o(y)),l(d,m)},this.split=function(e){function t(e,t){return e.splitText(t)}var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return n==i&&3==n.nodeType?r>0&&r<n.nodeValue.length&&(i=t(n,r),n=i.previousSibling,o>r?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r<n.nodeValue.length&&(n=t(n,r),r=0),3==i.nodeType&&o>0&&o<i.nodeValue.length&&(i=t(i,o).previousSibling,o=i.nodeValue.length)),{startContainer:n,startOffset:r,endContainer:i,endOffset:o}},this.normalize=function(n){function r(r){function a(n,r){for(var i=new t(n,e.getParent(n.parentNode,e.isBlock)||f);n=i[r?"prev":"next"]();)if("BR"===n.nodeName)return!0}function s(e,t){return e.previousSibling&&e.previousSibling.nodeName==t}function l(n,r){var a,s,l;if(r=r||c,l=e.getParent(r.parentNode,e.isBlock)||f,n&&"BR"==r.nodeName&&g&&e.isEmpty(l))return c=r.parentNode,u=e.nodeIndex(r),void(i=!0);for(a=new t(r,l);h=a[n?"prev":"next"]();){if("false"===e.getContentEditableParent(h))return;if(3===h.nodeType&&h.nodeValue.length>0)return c=h,u=n?h.nodeValue.length:0,void(i=!0);if(e.isBlock(h)||p[h.nodeName.toLowerCase()])return;s=h}o&&s&&(c=s,i=!0,u=0)}var c,u,d,f=e.getRoot(),h,p,m,g;if(c=n[(r?"start":"end")+"Container"],u=n[(r?"start":"end")+"Offset"],g=1==c.nodeType&&u===c.childNodes.length,p=e.schema.getNonEmptyElements(),m=r,1==c.nodeType&&u>c.childNodes.length-1&&(m=!1),9===c.nodeType&&(c=e.getRoot(),u=0),c===f){if(m&&(h=c.childNodes[u>0?u-1:0],h&&(p[h.nodeName]||"TABLE"==h.nodeName)))return;if(c.hasChildNodes()&&(u=Math.min(!m&&u>0?u-1:u,c.childNodes.length-1),c=c.childNodes[u],u=0,c.hasChildNodes()&&!/TABLE/.test(c.nodeName))){h=c,d=new t(c,f);do{if(3===h.nodeType&&h.nodeValue.length>0){u=m?0:h.nodeValue.length,c=h,i=!0;break}if(p[h.nodeName.toLowerCase()]){u=e.nodeIndex(h),c=h.parentNode,"IMG"!=h.nodeName||m||u++,i=!0;break}}while(h=m?d.next():d.prev())}}o&&(3===c.nodeType&&0===u&&l(!0),1===c.nodeType&&(h=c.childNodes[u],h||(h=c.childNodes[u-1]),!h||"BR"!==h.nodeName||s(h,"A")||a(h)||a(h,!0)||l(!0,h))),m&&!o&&3===c.nodeType&&u===c.nodeValue.length&&l(!1),i&&n["set"+(r?"Start":"End")](c,u)}var i,o;return o=n.collapsed,r(!0),o||r(),i&&o&&n.collapse(!0),i}}var i=e.each;return r.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},r.getCaretRangeFromPoint=function(e,t,n){var r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r.collapse(t<n.body.clientHeight)}}return r},r.getNode=function(e,t){return 1==e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},r}),r(_,[w,u],function(e,t){return function(n){function r(e){var t,r;if(r=n.$(e).parentsUntil(n.getBody()).add(e),r.length===o.length){for(t=r.length;t>=0&&r[t]===o[t];t--);if(-1===t)return o=r,!0}return o=r,!1}var i,o=[];"onselectionchange"in n.getDoc()||n.on("NodeChange Click MouseUp KeyUp Focus",function(t){var r,o;r=n.selection.getRng(),o={startContainer:r.startContainer,startOffset:r.startOffset,endContainer:r.endContainer,endOffset:r.endOffset},"nodechange"!=t.type&&e.compareRanges(o,i)||n.fire("SelectionChange"),i=o}),n.on("contextmenu",function(){n.fire("SelectionChange")}),n.on("SelectionChange",function(){var e=n.selection.getStart(!0);(t.range||!n.selection.isCollapsed())&&!r(e)&&n.dom.isChildOf(e,n.getBody())&&n.nodeChanged({selectionChange:!0})}),n.on("MouseUp",function(e){e.isDefaultPrevented()||("IMG"==n.selection.getNode().nodeName?setTimeout(function(){n.nodeChanged()},0):n.nodeChanged())}),this.nodeChanged=function(e){var t=n.selection,r,i,o;n.initialized&&t&&!n.settings.disable_nodechange&&!n.settings.readonly&&(o=n.getBody(),r=t.getStart()||o,r=r.ownerDocument!=n.getDoc()?n.getBody():r,"IMG"==r.nodeName&&t.isCollapsed()&&(r=r.parentNode),i=[],n.dom.getParent(r,function(e){return e===o?!0:void i.push(e)}),e=e||{},e.element=r,e.parents=i,n.fire("NodeChange",e))}}}),r(E,[],function(){function e(e,t,n){var r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[o])return e[o];if(e!==t){if(r=e[a])return r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var n=/^[ \t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return t.prototype={replace:function(e){var t=this;return e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var n=this,r,i,o;if("string"!=typeof e){for(i in e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return r=r.splice(i,1),n;return n}if(e in r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else r.push({name:e,value:t});return r.map[e]=t,n}return r.map[e]}},clone:function(){var e=this,n=new t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;i>r;r++)a=o[r],"id"!==a.name&&(s[s.length]={name:a.name,value:a.value},s.map[a.name]=a.value);n.attributes=s}return n.value=e.value,n.shortEnded=e.shortEnded,n},wrap:function(e){var t=this;return t.parent.insert(e,t),e.append(t),t},unwrap:function(){var e=this,t,n;for(t=e.firstChild;t;)n=t.next,e.insert(t,e,!0),t=n;e.remove()},remove:function(){var e=this,t=e.parent,n=e.next,r=e.prev;return t&&(t.firstChild===e?(t.firstChild=n,n&&(n.prev=null)):r.next=n,t.lastChild===e?(t.lastChild=r,r&&(r.next=null)):n.prev=r,e.parent=e.next=e.prev=null),e},append:function(e){var t=this,n;return e.parent&&e.remove(),n=t.lastChild,n?(n.next=e,e.prev=n,t.lastChild=e):t.lastChild=t.firstChild=e,e.parent=t,e},insert:function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,e.next=t,t.prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,e.prev=t,t.next=e),e.parent=r,e},getAll:function(t){var n=this,r,i=[];for(r=n.firstChild;r;r=e(r,n))r.name===t&&i.push(r);return i},empty:function(){var t=this,n,r,i;if(t.firstChild){for(n=[],i=t.firstChild;i;i=e(i,t))n.push(i);for(r=n.length;r--;)i=n[r],i.parent=i.firstChild=i.lastChild=i.next=i.prev=null}return t.firstChild=t.lastChild=null,t},isEmpty:function(t){var r=this,i=r.firstChild,o,a;if(i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(t[i.name])return!1;for(o=i.attributes.length;o--;)if(a=i.attributes[o].name,"name"===a||0===a.indexOf("data-mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!n.test(i.value))return!1}while(i=e(i,r));return!0},walk:function(t){return e(this,null,t)}},t.create=function(e,n){var i,o;if(i=new t(e,r[e]||1),n)for(o in n)i.attr(o,n[o]);return i},t}),r(N,[f],function(e){function t(e,t){return e?e.split(t||" "):[]}function n(e){function n(e,n,r){function i(e,t){var n={},r,i;for(r=0,i=e.length;i>r;r++)n[e[r]]=t||{};return n}var s,c,u,d=arguments;for(r=r||[],n=n||"","string"==typeof r&&(r=t(r)),c=3;c<d.length;c++)"string"==typeof d[c]&&(d[c]=t(d[c])),r.push.apply(r,d[c]);for(e=t(e),s=e.length;s--;)u=[].concat(l,t(n)),a[e[s]]={attributes:i(u),attributesOrder:u,children:i(r,o)}}function r(e,n){var r,i,o,s;for(e=t(e),r=e.length,n=t(n);r--;)for(i=a[e[r]],o=0,s=n.length;s>o;o++)i.attributes[n[o]]={},i.attributesOrder.push(n[o])}var a={},l,c,u,d,f,h;return i[e]?i[e]:(l=t("id accesskey class dir lang style tabindex title"),c=t("address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"),u=t("a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment"),"html4"!=e&&(l.push.apply(l,t("contenteditable contextmenu draggable dropzone hidden spellcheck translate")),c.push.apply(c,t("article aside details dialog figure header footer hgroup section nav")),u.push.apply(u,t("audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"))),"html5-strict"!=e&&(l.push("xml:lang"),h=t("acronym applet basefont big font strike tt"),u.push.apply(u,h),s(h,function(e){n(e,"",u)}),f=t("center dir isindex noframes"),c.push.apply(c,f),d=[].concat(c,u),s(f,function(e){n(e,"",d)})),d=d||[].concat(c,u),n("html","manifest","head body"),n("head","","base command link meta noscript script style title"),n("title hr noscript br"),n("base","href target"),n("link","href rel media hreflang type sizes hreflang"),n("meta","name http-equiv content charset"),n("style","media type scoped"),n("script","src async defer type charset"),n("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",d),n("address dt dd div caption","",d),n("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",u),n("blockquote","cite",d),n("ol","reversed start type","li"),n("ul","","li"),n("li","value",d),n("dl","","dt dd"),n("a","href target rel media hreflang type",u),n("q","cite",u),n("ins del","cite datetime",d),n("img","src sizes srcset alt usemap ismap width height"),n("iframe","src name width height",d),n("embed","src type width height"),n("object","data type typemustmatch name usemap form width height",d,"param"),n("param","name value"),n("map","name",d,"area"),n("area","alt coords shape href target rel media hreflang type"),n("table","border","caption colgroup thead tfoot tbody tr"+("html4"==e?" col":"")),n("colgroup","span","col"),n("col","span"),n("tbody thead tfoot","","tr"),n("tr","","td th"),n("td","colspan rowspan headers",d),n("th","colspan rowspan headers scope abbr",d),n("form","accept-charset action autocomplete enctype method name novalidate target",d),n("fieldset","disabled form name",d,"legend"),n("label","form for",u),n("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),n("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"==e?d:u),n("select","disabled form multiple name required size","option optgroup"),n("optgroup","disabled label","option"),n("option","disabled label selected value"),n("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),n("menu","type label",d,"li"),n("noscript","",d),"html4"!=e&&(n("wbr"),n("ruby","",u,"rt rp"),n("figcaption","",d),n("mark rt rp summary bdi","",u),n("canvas","width height",d),n("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",d,"track source"),n("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",d,"track source"),n("picture","","img source"),n("source","src srcset type media sizes"),n("track","kind src srclang label default"),n("datalist","",u,"option"),n("article section nav aside header footer","",d),n("hgroup","","h1 h2 h3 h4 h5 h6"),n("figure","",d,"figcaption"),n("time","datetime",u),n("dialog","open",d),n("command","type label icon disabled checked radiogroup command"),n("output","for form name",u),n("progress","value max",u),n("meter","value min max low high optimum",u),n("details","open",d,"summary"),n("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!=e&&(r("script","language xml:space"),r("style","xml:space"),r("object","declare classid code codebase codetype archive standby align border hspace vspace"),r("embed","align name hspace vspace"),r("param","valuetype type"),r("a","charset name rev shape coords"),r("br","clear"),r("applet","codebase archive code object alt name width height align hspace vspace"),r("img","name longdesc align border hspace vspace"),r("iframe","longdesc frameborder marginwidth marginheight scrolling align"),r("font basefont","size color face"),r("input","usemap align"),r("select","onchange"),r("textarea"),r("h1 h2 h3 h4 h5 h6 div p legend caption","align"),r("ul","type compact"),r("li","type"),r("ol dl menu dir","compact"),r("pre","width xml:space"),r("hr","align noshade size width"),r("isindex","prompt"),r("table","summary width frame rules cellspacing cellpadding align bgcolor"),r("col","width align char charoff valign"),r("colgroup","width align char charoff valign"),r("thead","align char charoff valign"),r("tr","align char charoff valign bgcolor"),r("th","axis align char charoff valign nowrap bgcolor width height"),r("form","accept"),r("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),r("tfoot","align char charoff valign"),r("tbody","align char charoff valign"),r("area","nohref"),r("body","background bgcolor text link vlink alink")),"html4"!=e&&(r("input button select textarea","autofocus"),r("input textarea","placeholder"),r("a","download"),r("link script img","crossorigin"),r("iframe","sandbox seamless allowfullscreen")),s(t("a form meter progress dfn"),function(e){a[e]&&delete a[e].children[e]}),delete a.caption.children.table,delete a.script,i[e]=a,a)}function r(e,t){var n;return e&&(n={},"string"==typeof e&&(e={"*":e}),s(e,function(e,r){n[r]=n[r.toUpperCase()]="map"==t?a(e,/[, ]/):c(e,/[, ]/)})),n}var i={},o={},a=e.makeMap,s=e.each,l=e.extend,c=e.explode,u=e.inArray;return function(e){function o(t,n,r){var o=e[t];return o?o=a(o,/[, ]/,a(o.toUpperCase(),/[, ]/)):(o=i[t],o||(o=a(n," ",a(n.toUpperCase()," ")),o=l(o,r),i[t]=o)),o}function d(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function f(e){var n,r,i,o,s,l,c,f,h,p,m,g,v,b,C,w,_,E,N,S=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,k=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(e)for(e=t(e,","),y["@"]&&(w=y["@"].attributes,_=y["@"].attributesOrder),n=0,r=e.length;r>n;n++)if(s=S.exec(e[n])){if(b=s[1],h=s[2],C=s[3],f=s[5],g={},v=[],l={attributes:g,attributesOrder:v},"#"===b&&(l.paddEmpty=!0),"-"===b&&(l.removeEmpty=!0),"!"===s[4]&&(l.removeEmptyAttrs=!0),w){for(E in w)g[E]=w[E];v.push.apply(v,_)}if(f)for(f=t(f,"|"),i=0,o=f.length;o>i;i++)if(s=k.exec(f[i])){if(c={},m=s[1],p=s[2].replace(/::/g,":"),b=s[3],N=s[4],"!"===m&&(l.attributesRequired=l.attributesRequired||[],l.attributesRequired.push(p),c.required=!0),"-"===m){delete g[p],v.splice(u(v,p),1);continue}b&&("="===b&&(l.attributesDefault=l.attributesDefault||[],l.attributesDefault.push({name:p,value:N}),c.defaultValue=N),":"===b&&(l.attributesForced=l.attributesForced||[],l.attributesForced.push({name:p,value:N}),c.forcedValue=N),"<"===b&&(c.validValues=a(N,"?"))),T.test(p)?(l.attributePatterns=l.attributePatterns||[],c.pattern=d(p),l.attributePatterns.push(c)):(g[p]||v.push(p),g[p]=c)}w||"@"!=h||(w=g,_=v),C&&(l.outputName=h,y[C]=l),T.test(h)?(l.pattern=d(h),x.push(l)):y[h]=l}}function h(e){y={},x=[],f(e),s(_,function(e,t){b[t]=e.children})}function p(e){var n=/^(~)?(.+)$/;e&&(i.text_block_elements=i.block_elements=null,s(t(e,","),function(e){var t=n.exec(e),r="~"===t[1],i=r?"span":"div",o=t[2];if(b[o]=b[i],L[o]=i,r||(R[o.toUpperCase()]={},R[o]={}),!y[o]){var a=y[i];a=l({},a),delete a.removeEmptyAttrs,delete a.removeEmpty,y[o]=a}s(b,function(e,t){e[i]&&(b[t]=e=l({},b[t]),e[o]=e[i])})}))}function m(n){var r=/^([+\-]?)(\w+)\[([^\]]+)\]$/;i[e.schema]=null,n&&s(t(n,","),function(e){var n=r.exec(e),i,o;n&&(o=n[1],i=o?b[n[2]]:b[n[2]]={"#comment":{}},i=b[n[2]],s(t(n[3],"|"),function(e){"-"===o?delete i[e]:i[e]={}}))})}function g(e){var t=y[e],n;if(t)return t;for(n=x.length;n--;)if(t=x[n],t.pattern.test(e))return t}var v=this,y={},b={},x=[],C,w,_,E,N,S,k,T,R,A,B,D,M,L={},H={};e=e||{},_=n(e.schema),e.verify_html===!1&&(e.valid_elements="*[*]"),C=r(e.valid_styles),w=r(e.invalid_styles,"map"),T=r(e.valid_classes,"map"),E=o("whitespace_elements","pre script noscript style textarea video audio iframe object"),N=o("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),S=o("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),k=o("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),A=o("non_empty_elements","td th iframe video audio object script",S),B=o("move_caret_before_on_enter_elements","table",A),D=o("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"),R=o("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup",D),M=o("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),s((e.special||"script noscript style textarea").split(" "),function(e){H[e]=new RegExp("</"+e+"[^>]*>","gi")}),e.valid_elements?h(e.valid_elements):(s(_,function(e,t){y[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},b[t]=e.children}),"html5"!=e.schema&&s(t("strong/b em/i"),function(e){e=t(e,"/"),y[e[1]].outputName=e[0]}),y.img.attributesDefault=[{name:"alt",value:""}],s(t("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){y[e]&&(y[e].removeEmpty=!0)}),s(t("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(e){y[e].paddEmpty=!0}),s(t("span"),function(e){y[e].removeEmptyAttrs=!0})),p(e.custom_elements),m(e.valid_children),f(e.extended_valid_elements),m("+ol[ul|ol],+ul[ul|ol]"),e.invalid_elements&&s(c(e.invalid_elements),function(e){y[e]&&delete y[e]}),g("span")||f("span[!data-mce-type|*]"),v.children=b,v.getValidStyles=function(){return C},v.getInvalidStyles=function(){return w},v.getValidClasses=function(){return T},v.getBoolAttrs=function(){return k},v.getBlockElements=function(){return R},v.getTextBlockElements=function(){return D},v.getTextInlineElements=function(){return M},v.getShortEndedElements=function(){return S},v.getSelfClosingElements=function(){return N},v.getNonEmptyElements=function(){return A},v.getMoveCaretBeforeOnEnterElements=function(){return B},v.getWhiteSpaceElements=function(){return E},v.getSpecialElements=function(){return H},v.isValidChild=function(e,t){var n=b[e];return!(!n||!n[t])},v.isValid=function(e,t){var n,r,i=g(e);if(i){if(!t)return!0;if(i.attributes[t])return!0;if(n=i.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},v.getElementRule=g,v.getCustomElements=function(){return L},v.addValidElements=f,v.setValidElements=h,v.addCustomElements=p,v.addValidChildren=m,v.elements=y}}),r(S,[N,v,f],function(e,t,n){function r(e,t,n){var r=1,i,o,a,s;for(s=e.getShortEndedElements(),a=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g,a.lastIndex=i=n;o=a.exec(t);){if(i=a.lastIndex,"/"===o[1])r--;else if(!o[1]){if(o[2]in s)continue;r++}if(0===r)break}return i}function i(i,a){function s(){}var l=this;i=i||{},l.schema=a=a||new e,i.fix_self_closing!==!1&&(i.fix_self_closing=!0),o("comment cdata text start end pi doctype".split(" "),function(e){e&&(l[e]=i[e]||s)}),l.parse=function(e){function o(e){var t,n;for(t=h.length;t--&&h[t].name!==e;);if(t>=0){for(n=h.length-1;n>=t;n--)e=h[n],e.valid&&l.end(e.name);h.length=t}}function s(e,t,n,r,o){var a,s,l=/[\s\u0000-\u001F]+/g;if(t=t.toLowerCase(),n=t in C?t:z(n||r||o||""),_&&!y&&0!==t.indexOf("data-")){if(a=T[t],!a&&R){for(s=R.length;s--&&(a=R[s],!a.pattern.test(t)););-1===s&&(a=null)}if(!a)return;if(a.validValues&&!(n in a.validValues))return}if(V[t]&&!i.allow_script_urls){var c=n.replace(l,"");try{c=decodeURIComponent(c)}catch(u){c=unescape(c)}if(U.test(c))return;if(!i.allow_html_data_urls&&$.test(c)&&!/^data:image\//i.test(c))return}p.map[t]=n,p.push({name:t,value:n})}var l=this,c,u=0,d,f,h=[],p,m,g,v,y,b,x,C,w,_,E,N,S,k,T,R,A,B,D,M,L,H,P,O,I,F=0,z=t.decode,W,V=n.makeMap("src,href,data,background,formaction,poster"),U=/((java|vb)script|mhtml):/i,$=/^data:/i;for(H=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),P=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,x=a.getShortEndedElements(),L=i.self_closing_elements||a.getSelfClosingElements(),C=a.getBoolAttrs(),_=i.validate,b=i.remove_internals,W=i.fix_self_closing,O=a.getSpecialElements();c=H.exec(e);){if(u<c.index&&l.text(z(e.substr(u,c.index-u))),d=c[6])d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),o(d);else if(d=c[7]){if(d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),w=d in x,W&&L[d]&&h.length>0&&h[h.length-1].name===d&&o(d),!_||(E=a.getElementRule(d))){if(N=!0,_&&(T=E.attributes,R=E.attributePatterns),(k=c[8])?(y=-1!==k.indexOf("data-mce-type"),y&&b&&(N=!1),p=[],p.map={},k.replace(P,s)):(p=[],p.map={}),_&&!y){if(A=E.attributesRequired,B=E.attributesDefault,D=E.attributesForced,M=E.removeEmptyAttrs,M&&!p.length&&(N=!1),D)for(m=D.length;m--;)S=D[m],v=S.name,I=S.value,"{$uid}"===I&&(I="mce_"+F++),p.map[v]=I,p.push({name:v,value:I});if(B)for(m=B.length;m--;)S=B[m],v=S.name,v in p.map||(I=S.value,"{$uid}"===I&&(I="mce_"+F++),p.map[v]=I,p.push({name:v,value:I}));if(A){for(m=A.length;m--&&!(A[m]in p.map););-1===m&&(N=!1)}if(S=p.map["data-mce-bogus"]){if("all"===S){u=r(a,e,H.lastIndex),H.lastIndex=u;continue}N=!1}}N&&l.start(d,p,w)}else N=!1;if(f=O[d]){f.lastIndex=u=c.index+c[0].length,(c=f.exec(e))?(N&&(g=e.substr(u,c.index-u)),u=c.index+c[0].length):(g=e.substr(u),u=e.length),N&&(g.length>0&&l.text(g,!0),l.end(d)),H.lastIndex=u;continue}w||(k&&k.indexOf("/")==k.length-1?N&&l.end(d):h.push({name:d,valid:N}))}else(d=c[1])?(">"===d.charAt(0)&&(d=" "+d),i.allow_conditional_comments||"[if"!==d.substr(0,3)||(d=" "+d),l.comment(d)):(d=c[2])?l.cdata(d):(d=c[3])?l.doctype(d):(d=c[4])&&l.pi(d,c[5]);u=c.index+c[0].length}for(u<e.length&&l.text(z(e.substr(u))),m=h.length-1;m>=0;m--)d=h[m],d.valid&&l.end(d.name)}}var o=n.each;return i.findEndTag=r,i}),r(k,[E,N,S,f],function(e,t,n,r){var i=r.makeMap,o=r.each,a=r.explode,s=r.extend;return function(r,l){function c(t){var n,r,o,a,s,c,d,f,h,p,m,g,v,y,b;for(m=i("tr,td,th,tbody,thead,tfoot,table"),p=l.getNonEmptyElements(),g=l.getTextBlockElements(),v=l.getSpecialElements(),n=0;n<t.length;n++)if(r=t[n],r.parent&&!r.fixed)if(g[r.name]&&"li"==r.parent.name){for(y=r.next;y&&g[y.name];)y.name="li",y.fixed=!0,r.parent.insert(y,r.parent),y=y.next;r.unwrap(r)}else{for(a=[r],o=r.parent;o&&!l.isValidChild(o.name,r.name)&&!m[o.name];o=o.parent)a.push(o);if(o&&a.length>1){for(a.reverse(),s=c=u.filterNode(a[0].clone()),h=0;h<a.length-1;h++){for(l.isValidChild(c.name,a[h].name)?(d=u.filterNode(a[h].clone()),c.append(d)):d=c,f=a[h].firstChild;f&&f!=a[h+1];)b=f.next,d.append(f),f=b;c=d}s.isEmpty(p)?o.insert(r,a[0],!0):(o.insert(s,a[0],!0),o.insert(r,s)),o=a[0],(o.isEmpty(p)||o.firstChild===o.lastChild&&"br"===o.firstChild.name)&&o.empty().remove()}else if(r.parent){if("li"===r.name){if(y=r.prev,y&&("ul"===y.name||"ul"===y.name)){y.append(r);continue}if(y=r.next,y&&("ul"===y.name||"ul"===y.name)){y.insert(r,y.firstChild,!0);continue}r.wrap(u.filterNode(new e("ul",1)));continue}l.isValidChild(r.parent.name,"div")&&l.isValidChild("div",r.name)?r.wrap(u.filterNode(new e("div",1))):v[r.name]?r.empty().remove():r.unwrap()}}}var u=this,d={},f=[],h={},p={};r=r||{},r.validate="validate"in r?r.validate:!0,r.root_name=r.root_name||"body",u.schema=l=l||new t,u.filterNode=function(e){var t,n,r;n in d&&(r=h[n],r?r.push(e):h[n]=[e]),t=f.length;for(;t--;)n=f[t].name,n in e.attributes.map&&(r=p[n],r?r.push(e):p[n]=[e]);return e},u.addNodeFilter=function(e,t){o(a(e),function(e){var n=d[e];n||(d[e]=n=[]),n.push(t)})},u.addAttributeFilter=function(e,t){o(a(e),function(e){var n;for(n=0;n<f.length;n++)if(f[n].name===e)return void f[n].callbacks.push(t);f.push({name:e,callbacks:[t]})})},u.parse=function(t,o){function a(){function e(e){e&&(t=e.firstChild,t&&3==t.type&&(t.value=t.value.replace(R,"")),t=e.lastChild,t&&3==t.type&&(t.value=t.value.replace(D,"")))}var t=y.firstChild,n,i;if(l.isValidChild(y.name,I.toLowerCase())){for(;t;)n=t.next,3==t.type||1==t.type&&"p"!==t.name&&!T[t.name]&&!t.attr("data-mce-type")?i?i.append(t):(i=u(I,1),i.attr(r.forced_root_block_attrs),y.insert(i,t),i.append(t)):(e(i),i=null),t=n;e(i)}}function u(t,n){var r=new e(t,n),i;return t in d&&(i=h[t],i?i.push(r):h[t]=[r]),r}function m(e){var t,n,r,i,o=l.getBlockElements();for(t=e.prev;t&&3===t.type;){if(r=t.value.replace(D,""),r.length>0)return void(t.value=r);if(n=t.next){if(3==n.type&&n.value.length){t=t.prev;continue}if(!o[n.name]&&"script"!=n.name&&"style"!=n.name){t=t.prev;continue}}i=t.prev,t.remove(),t=i}}function g(e){var t,n={};for(t in e)"li"!==t&&"p"!=t&&(n[t]=e[t]);return n;
-}var v,y,b,x,C,w,_,E,N,S,k,T,R,A=[],B,D,M,L,H,P,O,I;if(o=o||{},h={},p={},T=s(i("script,style,head,html,body,title,meta,param"),l.getBlockElements()),O=l.getNonEmptyElements(),P=l.children,k=r.validate,I="forced_root_block"in o?o.forced_root_block:r.forced_root_block,H=l.getWhiteSpaceElements(),R=/^[ \t\r\n]+/,D=/[ \t\r\n]+$/,M=/[ \t\r\n]+/g,L=/^[ \t\r\n]+$/,v=new n({validate:k,allow_script_urls:r.allow_script_urls,allow_conditional_comments:r.allow_conditional_comments,self_closing_elements:g(l.getSelfClosingElements()),cdata:function(e){b.append(u("#cdata",4)).value=e},text:function(e,t){var n;B||(e=e.replace(M," "),b.lastChild&&T[b.lastChild.name]&&(e=e.replace(R,""))),0!==e.length&&(n=u("#text",3),n.raw=!!t,b.append(n).value=e)},comment:function(e){b.append(u("#comment",8)).value=e},pi:function(e,t){b.append(u(e,7)).value=t,m(b)},doctype:function(e){var t;t=b.append(u("#doctype",10)),t.value=e,m(b)},start:function(e,t,n){var r,i,o,a,s;if(o=k?l.getElementRule(e):{}){for(r=u(o.outputName||e,1),r.attributes=t,r.shortEnded=n,b.append(r),s=P[b.name],s&&P[r.name]&&!s[r.name]&&A.push(r),i=f.length;i--;)a=f[i].name,a in t.map&&(N=p[a],N?N.push(r):p[a]=[r]);T[e]&&m(r),n||(b=r),!B&&H[e]&&(B=!0)}},end:function(t){var n,r,i,o,a;if(r=k?l.getElementRule(t):{}){if(T[t]&&!B){if(n=b.firstChild,n&&3===n.type)if(i=n.value.replace(R,""),i.length>0)n.value=i,n=n.next;else for(o=n.next,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.next,(0===i.length||L.test(i))&&(n.remove(),n=o),n=o;if(n=b.lastChild,n&&3===n.type)if(i=n.value.replace(D,""),i.length>0)n.value=i,n=n.prev;else for(o=n.prev,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.prev,(0===i.length||L.test(i))&&(n.remove(),n=o),n=o}if(B&&H[t]&&(B=!1),(r.removeEmpty||r.paddEmpty)&&b.isEmpty(O))if(r.paddEmpty)b.empty().append(new e("#text","3")).value="\xa0";else if(!b.attributes.map.name&&!b.attributes.map.id)return a=b.parent,T[b.name]?b.empty().remove():b.unwrap(),void(b=a);b=b.parent}}},l),y=b=new e(o.context||r.root_name,11),v.parse(t),k&&A.length&&(o.context?o.invalid=!0:c(A)),I&&("body"==y.name||o.isRootContent)&&a(),!o.invalid){for(S in h){for(N=d[S],x=h[S],_=x.length;_--;)x[_].parent||x.splice(_,1);for(C=0,w=N.length;w>C;C++)N[C](x,S,o)}for(C=0,w=f.length;w>C;C++)if(N=f[C],N.name in p){for(x=p[N.name],_=x.length;_--;)x[_].parent||x.splice(_,1);for(_=0,E=N.callbacks.length;E>_;_++)N.callbacks[_](x,N.name,o)}}return y},r.remove_trailing_brs&&u.addNodeFilter("br",function(t){var n,r=t.length,i,o=s({},l.getBlockElements()),a=l.getNonEmptyElements(),c,u,d,f,h,p;for(o.body=1,n=0;r>n;n++)if(i=t[n],c=i.parent,o[i.parent.name]&&i===c.lastChild){for(d=i.prev;d;){if(f=d.name,"span"!==f||"bookmark"!==d.attr("data-mce-type")){if("br"!==f)break;if("br"===f){i=null;break}}d=d.prev}i&&(i.remove(),c.isEmpty(a)&&(h=l.getElementRule(c.name),h&&(h.removeEmpty?c.remove():h.paddEmpty&&(c.empty().append(new e("#text",3)).value="\xa0"))))}else{for(u=i;c&&c.firstChild===u&&c.lastChild===u&&(u=c,!o[c.name]);)c=c.parent;u===c&&(p=new e("#text",3),p.value="\xa0",i.replace(p))}}),r.allow_html_in_named_anchor||u.addAttributeFilter("id,name",function(e){for(var t=e.length,n,r,i,o;t--;)if(o=e[t],"a"===o.name&&o.firstChild&&!o.attr("href")){i=o.parent,n=o.lastChild;do r=n.prev,i.insert(n,o),n=r;while(n)}}),r.validate&&l.getValidClasses()&&u.addAttributeFilter("class",function(e){for(var t=e.length,n,r,i,o,a,s=l.getValidClasses(),c,u;t--;){for(n=e[t],r=n.attr("class").split(" "),a="",i=0;i<r.length;i++)o=r[i],u=!1,c=s["*"],c&&c[o]&&(u=!0),c=s[n.name],!u&&c&&c[o]&&(u=!0),u&&(a&&(a+=" "),a+=o);a.length||(a=null),n.attr("class",a)}})}}),r(T,[v,f],function(e,t){var n=t.makeMap;return function(t){var r=[],i,o,a,s,l;return t=t||{},i=t.indent,o=n(t.indent_before||""),a=n(t.indent_after||""),s=e.getEncodeFunc(t.entity_encoding||"raw",t.entities),l="html"==t.element_format,{start:function(e,t,n){var c,u,d,f;if(i&&o[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n")),r.push("<",e),t)for(c=0,u=t.length;u>c;c++)d=t[c],r.push(" ",d.name,'="',s(d.value,!0),'"');!n||l?r[r.length]=">":r[r.length]=" />",n&&i&&a[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n"))},end:function(e){var t;r.push("</",e,">"),i&&a[e]&&r.length>0&&(t=r[r.length-1],t.length>0&&"\n"!==t&&r.push("\n"))},text:function(e,t){e.length>0&&(r[r.length]=t?e:s(e))},cdata:function(e){r.push("<![CDATA[",e,"]]>")},comment:function(e){r.push("<!--",e,"-->")},pi:function(e,t){t?r.push("<?",e," ",s(t),"?>"):r.push("<?",e,"?>"),i&&r.push("\n")},doctype:function(e){r.push("<!DOCTYPE",e,">",i?"\n":"")},reset:function(){r.length=0},getContent:function(){return r.join("").replace(/\n$/,"")}}}}),r(R,[T,N],function(e,t){return function(n,r){var i=this,o=new e(n);n=n||{},n.validate="validate"in n?n.validate:!0,i.schema=r=r||new t,i.writer=o,i.serialize=function(e){function t(e){var n=i[e.type],s,l,c,u,d,f,h,p,m;if(n)n(e);else{if(s=e.name,l=e.shortEnded,c=e.attributes,a&&c&&c.length>1){for(f=[],f.map={},m=r.getElementRule(e.name),h=0,p=m.attributesOrder.length;p>h;h++)u=m.attributesOrder[h],u in c.map&&(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));for(h=0,p=c.length;p>h;h++)u=c[h].name,u in f.map||(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));c=f}if(o.start(e.name,c,l),!l){if(e=e.firstChild)do t(e);while(e=e.next);o.end(s)}}}var i,a;return a=n.validate,i={3:function(e){o.text(e.value,e.raw)},8:function(e){o.comment(e.value)},7:function(e){o.pi(e.name,e.value)},10:function(e){o.doctype(e.value)},4:function(e){o.cdata(e.value)},11:function(e){if(e=e.firstChild)do t(e);while(e=e.next)}},o.reset(),1!=e.type||n.inner?i[11](e):t(e),o.getContent()}}}),r(A,[b,k,v,R,E,N,u,f],function(e,t,n,r,i,o,a,s){var l=s.each,c=s.trim,u=e.DOM;return function(e,i){var s,d,f;return i&&(s=i.dom,d=i.schema),s=s||u,d=d||new o(e),e.entity_encoding=e.entity_encoding||"named",e.remove_trailing_brs="remove_trailing_brs"in e?e.remove_trailing_brs:!0,f=new t(e,d),f.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n=e.length,r;n--;)r=e[n],r.attr("tabindex",r.attributes.map["data-mce-tabindex"]),r.attr(t,null)}),f.addAttributeFilter("src,href,style",function(t,n){for(var r=t.length,i,o,a="data-mce-"+n,l=e.url_converter,c=e.url_converter_scope,u;r--;)i=t[r],o=i.attributes.map[a],o!==u?(i.attr(n,o.length>0?o:null),i.attr(a,null)):(o=i.attributes.map[n],"style"===n?o=s.serializeStyle(s.parseStyle(o),i.name):l&&(o=l.call(c,o,n,i.name)),i.attr(n,o.length>0?o:null))}),f.addAttributeFilter("class",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("class"),r&&(r=n.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),n.attr("class",r.length>0?r:null))}),f.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length,i;r--;)i=e[r],"bookmark"!==i.attributes.map["data-mce-type"]||n.cleanup||i.remove()}),f.addNodeFilter("noscript",function(e){for(var t=e.length,r;t--;)r=e[t].firstChild,r&&(r.value=n.decode(r.value))}),f.addNodeFilter("script,style",function(e,t){function n(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}for(var r=e.length,i,o,a;r--;)i=e[r],o=i.firstChild?i.firstChild.value:"","script"===t?(a=i.attr("type"),a&&i.attr("type","mce-no/type"==a?null:a.replace(/^mce\-/,"")),o.length>0&&(i.firstChild.value="// <![CDATA[\n"+n(o)+"\n// ]]>")):o.length>0&&(i.firstChild.value="<!--\n"+n(o)+"\n-->")}),f.addNodeFilter("#comment",function(e){for(var t=e.length,n;t--;)n=e[t],0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=n.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}),f.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length,r;n--;)r=e[n],7===r.type?r.remove():1===r.type&&("input"!==t||"type"in r.attributes.map||r.attr("type","text"))}),e.fix_list_elements&&f.addNodeFilter("ul,ol",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.parent,("ul"===r.name||"ol"===r.name)&&n.prev&&"li"===n.prev.name&&n.prev.append(n)}),f.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:d,addNodeFilter:f.addNodeFilter,addAttributeFilter:f.addAttributeFilter,serialize:function(t,n){var i=this,o,u,h,p,m;return a.ie&&s.select("script,style,select,map").length>0?(m=t.innerHTML,t=t.cloneNode(!1),s.setHTML(t,m)):t=t.cloneNode(!0),o=t.ownerDocument.implementation,o.createHTMLDocument&&(u=o.createHTMLDocument(""),l("BODY"==t.nodeName?t.childNodes:[t],function(e){u.body.appendChild(u.importNode(e,!0))}),t="BODY"!=t.nodeName?u.body.firstChild:u.body,h=s.doc,s.doc=u),n=n||{},n.format=n.format||"html",n.selection&&(n.forced_root_block=""),n.no_events||(n.node=t,i.onPreProcess(n)),p=new r(e,d),n.content=p.serialize(f.parse(c(n.getInner?t.innerHTML:s.getOuterHTML(t)),n)),n.cleanup||(n.content=n.content.replace(/\uFEFF/g,"")),n.no_events||i.onPostProcess(n),h&&(s.doc=h),n.node=null,n.content},addRules:function(e){d.addValidElements(e)},setRules:function(e){d.setValidElements(e)},onPreProcess:function(e){i&&i.fire("PreProcess",e)},onPostProcess:function(e){i&&i.fire("PostProcess",e)}}}}),r(B,[],function(){function e(e){function t(t,n){var r,i=0,o,a,s,l,c,u,d=-1,f;if(r=t.duplicate(),r.collapse(n),f=r.parentElement(),f.ownerDocument===e.dom.doc){for(;"false"===f.contentEditable;)f=f.parentNode;if(!f.hasChildNodes())return{node:f,inside:1};for(s=f.children,o=s.length-1;o>=i;)if(u=Math.floor((i+o)/2),l=s[u],r.moveToElementText(l),d=r.compareEndPoints(n?"StartToStart":"EndToEnd",t),d>0)o=u-1;else{if(!(0>d))return{node:l};i=u+1}if(0>d)for(l?r.collapse(!1):(r.moveToElementText(f),r.collapse(!0),l=f,a=!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",1)&&f==r.parentElement();)c++;else for(r.collapse(!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",-1)&&f==r.parentElement();)c++;return{node:l,position:d,offset:c,inside:a}}}function n(){function n(e){var n=t(o,e),r,i,s=0,l,c,u;if(r=n.node,i=n.offset,n.inside&&!r.hasChildNodes())return void a[e?"setStart":"setEnd"](r,0);if(i===c)return void a[e?"setStartBefore":"setEndAfter"](r);if(n.position<0){if(l=n.inside?r.firstChild:r.nextSibling,!l)return void a[e?"setStartAfter":"setEndAfter"](r);if(!i)return void(3==l.nodeType?a[e?"setStart":"setEnd"](l,0):a[e?"setStartBefore":"setEndBefore"](l));for(;l;){if(3==l.nodeType&&(u=l.nodeValue,s+=u.length,s>=i)){r=l,s-=i,s=u.length-s;break}l=l.nextSibling}}else{if(l=r.previousSibling,!l)return a[e?"setStartBefore":"setEndBefore"](r);if(!i)return void(3==r.nodeType?a[e?"setStart":"setEnd"](l,r.nodeValue.length):a[e?"setStartAfter":"setEndAfter"](l));for(;l;){if(3==l.nodeType&&(s+=l.nodeValue.length,s>=i)){r=l,s-=i;break}l=l.previousSibling}}a[e?"setStart":"setEnd"](r,s)}var o=e.getRng(),a=i.createRng(),s,l,c,u,d;if(s=o.item?o.item(0):o.parentElement(),s.ownerDocument!=i.doc)return a;if(l=e.isCollapsed(),o.item)return a.setStart(s.parentNode,i.nodeIndex(s)),a.setEnd(a.startContainer,a.startOffset+1),a;try{n(!0),l||n()}catch(f){if(-2147024809!=f.number)throw f;d=r.getBookmark(2),c=o.duplicate(),c.collapse(!0),s=c.parentElement(),l||(c=o.duplicate(),c.collapse(!1),u=c.parentElement(),u.innerHTML=u.innerHTML),s.innerHTML=s.innerHTML,r.moveToBookmark(d),o=e.getRng(),n(!0),l||n()}return a}var r=this,i=e.dom,o=!1;this.getBookmark=function(n){function r(e){var t,n,r,o,a=[];for(t=e.parentNode,n=i.getRoot().parentNode;t!=n&&9!==t.nodeType;){for(r=t.children,o=r.length;o--;)if(e===r[o]){a.push(o);break}e=t,t=t.parentNode}return a}function o(e){var n;return n=t(a,e),n?{position:n.position,offset:n.offset,indexes:r(n.node),inside:n.inside}:void 0}var a=e.getRng(),s={};return 2===n&&(a.item?s.start={ctrl:!0,indexes:r(a.item(0))}:(s.start=o(!0),e.isCollapsed()||(s.end=o()))),s},this.moveToBookmark=function(e){function t(e){var t,n,r,o;for(t=i.getRoot(),n=e.length-1;n>=0;n--)o=t.children,r=e[n],r<=o.length-1&&(t=o[r]);return t}function n(n){var i=e[n?"start":"end"],a,s,l,c;i&&(a=i.position>0,s=o.createTextRange(),s.moveToElementText(t(i.indexes)),c=i.offset,c!==l?(s.collapse(i.inside||a),s.moveStart("character",a?-c:c)):s.collapse(n),r.setEndPoint(n?"StartToStart":"EndToStart",s),n&&r.collapse(!0))}var r,o=i.doc.body;e.start&&(e.start.ctrl?(r=o.createControlRange(),r.addElement(t(e.start.indexes)),r.select()):(r=o.createTextRange(),n(!0),n(),r.select()))},this.addRange=function(t){function n(e){var t,n,a,d,p;a=i.create("a"),t=e?s:c,n=e?l:u,d=r.duplicate(),(t==f||t==f.documentElement)&&(t=h,n=0),3==t.nodeType?(t.parentNode.insertBefore(a,t),d.moveToElementText(a),d.moveStart("character",n),i.remove(a),r.setEndPoint(e?"StartToStart":"EndToEnd",d)):(p=t.childNodes,p.length?(n>=p.length?i.insertAfter(a,p[p.length-1]):t.insertBefore(a,p[n]),d.moveToElementText(a)):t.canHaveHTML&&(t.innerHTML="<span>&#xFEFF;</span>",a=t.firstChild,d.moveToElementText(a),d.collapse(o)),r.setEndPoint(e?"StartToStart":"EndToEnd",d),i.remove(a))}var r,a,s,l,c,u,d,f=e.dom.doc,h=f.body,p,m;if(s=t.startContainer,l=t.startOffset,c=t.endContainer,u=t.endOffset,r=h.createTextRange(),s==c&&1==s.nodeType){if(l==u&&!s.hasChildNodes()){if(s.canHaveHTML)return d=s.previousSibling,d&&!d.hasChildNodes()&&i.isBlock(d)?d.innerHTML="&#xFEFF;":d=null,s.innerHTML="<span>&#xFEFF;</span><span>&#xFEFF;</span>",r.moveToElementText(s.lastChild),r.select(),i.doc.selection.clear(),s.innerHTML="",void(d&&(d.innerHTML=""));l=i.nodeIndex(s),s=s.parentNode}if(l==u-1)try{if(m=s.childNodes[l],a=h.createControlRange(),a.addElement(m),a.select(),p=e.getRng(),p.item&&m===p.item(0))return}catch(g){}}n(!0),n(),r.select()},this.getRangeAt=n}return e}),r(D,[u],function(e){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(t){return e.mac?t.metaKey:t.ctrlKey&&!t.altKey}}}),r(M,[D,f,u],function(e,t,n){return function(r,i){function o(e){var t=i.settings.object_resizing;return t===!1||n.iOS?!1:("string"!=typeof t&&(t="table,img,div"),"false"===e.getAttribute("data-mce-resize")?!1:i.dom.is(e,t))}function a(t){var n,r,o,a,s;n=t.screenX-T,r=t.screenY-R,P=n*S[2]+D,O=r*S[3]+M,P=5>P?5:P,O=5>O?5:O,o="IMG"==w.nodeName&&i.settings.resize_img_proportional!==!1?!e.modifierPressed(t):e.modifierPressed(t)||"IMG"==w.nodeName&&S[2]*S[3]!==0,o&&(W(n)>W(r)?(O=V(P*L),P=V(O/L)):(P=V(O/L),O=V(P*L))),x.setStyles(_,{width:P,height:O}),a=S.startPos.x+n,s=S.startPos.y+r,a=a>0?a:0,s=s>0?s:0,x.setStyles(E,{left:a,top:s,display:"block"}),E.innerHTML=P+" &times; "+O,S[2]<0&&_.clientWidth<=P&&x.setStyle(_,"left",A+(D-P)),S[3]<0&&_.clientHeight<=O&&x.setStyle(_,"top",B+(M-O)),n=U.scrollWidth-$,r=U.scrollHeight-q,n+r!==0&&x.setStyles(E,{left:a-n,top:s-r}),H||(i.fire("ObjectResizeStart",{target:w,width:D,height:M}),H=!0)}function s(){function e(e,t){t&&(w.style[e]||!i.schema.isValid(w.nodeName.toLowerCase(),e)?x.setStyle(w,e,t):x.setAttrib(w,e,t))}H=!1,e("width",P),e("height",O),x.unbind(I,"mousemove",a),x.unbind(I,"mouseup",s),F!=I&&(x.unbind(F,"mousemove",a),x.unbind(F,"mouseup",s)),x.remove(_),x.remove(E),z&&"TABLE"!=w.nodeName||l(w),i.fire("ObjectResized",{target:w,width:P,height:O}),x.setAttrib(w,"style",x.getAttrib(w,"style")),i.nodeChanged()}function l(e,t,r){var l,u,d,f,h;g(),l=x.getPos(e,U),A=l.x,B=l.y,h=e.getBoundingClientRect(),u=h.width||h.right-h.left,d=h.height||h.bottom-h.top,w!=e&&(m(),w=e,P=O=0),f=i.fire("ObjectSelected",{target:e}),o(e)&&!f.isDefaultPrevented()?C(N,function(e,i){function o(t){T=t.screenX,R=t.screenY,D=w.clientWidth,M=w.clientHeight,L=M/D,S=e,e.startPos={x:u*e[0]+A,y:d*e[1]+B},$=U.scrollWidth,q=U.scrollHeight,_=w.cloneNode(!0),x.addClass(_,"mce-clonedresizable"),x.setAttrib(_,"data-mce-bogus","all"),_.contentEditable=!1,_.unSelectabe=!0,x.setStyles(_,{left:A,top:B,margin:0}),_.removeAttribute("data-mce-selected"),U.appendChild(_),x.bind(I,"mousemove",a),x.bind(I,"mouseup",s),F!=I&&(x.bind(F,"mousemove",a),x.bind(F,"mouseup",s)),E=x.add(U,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},D+" &times; "+M)}var l;return t?void(i==t&&o(r)):(l=x.get("mceResizeHandle"+i),l&&x.remove(l),l=x.add(U,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize; margin:0; padding:0"}),n.ie&&(l.contentEditable=!1),x.bind(l,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),o(e)}),e.elm=l,void x.setStyles(l,{left:u*e[0]+A-l.offsetWidth/2,top:d*e[1]+B-l.offsetHeight/2}))}):c(),w.setAttribute("data-mce-selected","1")}function c(){var e,t;g(),w&&w.removeAttribute("data-mce-selected");for(e in N)t=x.get("mceResizeHandle"+e),t&&(x.unbind(t),x.remove(t))}function u(e){function t(e,t){if(e)do if(e===t)return!0;while(e=e.parentNode)}var n,o;if(!H&&!i.removed)return C(x.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),o="mousedown"==e.type?e.target:r.getNode(),o=x.$(o).closest(z?"table":"table,img,hr")[0],t(o,U)&&(v(),n=r.getStart(!0),t(n,o)&&t(r.getEnd(!0),o)&&(!z||o!=n&&"IMG"!==n.nodeName))?void l(o):void c()}function d(e,t,n){e&&e.attachEvent&&e.attachEvent("on"+t,n)}function f(e,t,n){e&&e.detachEvent&&e.detachEvent("on"+t,n)}function h(e){var t=e.srcElement,n,r,o,a,s,c,u;n=t.getBoundingClientRect(),c=k.clientX-n.left,u=k.clientY-n.top;for(r in N)if(o=N[r],a=t.offsetWidth*o[0],s=t.offsetHeight*o[1],W(a-c)<8&&W(s-u)<8){S=o;break}H=!0,i.fire("ObjectResizeStart",{target:w,width:w.clientWidth,height:w.clientHeight}),i.getDoc().selection.empty(),l(t,r,k)}function p(e){var t=e.srcElement;if(t!=w){if(i.fire("ObjectSelected",{target:t}),m(),0===t.id.indexOf("mceResizeHandle"))return void(e.returnValue=!1);("IMG"==t.nodeName||"TABLE"==t.nodeName)&&(c(),w=t,d(t,"resizestart",h))}}function m(){f(w,"resizestart",h)}function g(){for(var e in N){var t=N[e];t.elm&&(x.unbind(t.elm),delete t.elm)}}function v(){try{i.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}}function y(e){var t;if(z){t=I.body.createControlRange();try{return t.addElement(e),t.select(),!0}catch(n){}}}function b(){w=_=null,z&&(m(),f(U,"controlselect",p))}var x=i.dom,C=t.each,w,_,E,N,S,k,T,R,A,B,D,M,L,H,P,O,I=i.getDoc(),F=document,z=n.ie&&n.ie<11,W=Math.abs,V=Math.round,U=i.getBody(),$,q;N={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var j=".mce-content-body";return i.contentStyles.push(j+" div.mce-resizehandle {position: absolute;border: 1px solid black;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+j+" .mce-resizehandle:hover {background: #000}"+j+" img[data-mce-selected], hr[data-mce-selected] {outline: 1px solid black;resize: none}"+j+" .mce-clonedresizable {position: absolute;"+(n.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+j+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}"),i.on("init",function(){z?(i.on("ObjectResized",function(e){"TABLE"!=e.target.nodeName&&(c(),y(e.target))}),d(U,"controlselect",p),i.on("mousedown",function(e){k=e})):(v(),n.ie>=11&&(i.on("mousedown click",function(e){var t=e.target.nodeName;!H&&/^(TABLE|IMG|HR)$/.test(t)&&(i.selection.select(e.target,"TABLE"==t),"mousedown"==e.type&&i.nodeChanged())}),i.dom.bind(U,"mscontrolselect",function(e){/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"==e.target.tagName&&window.setTimeout(function(){i.selection.select(e.target)},0))}))),i.on("nodechange ResizeEditor ResizeWindow drop",function(e){window.requestAnimationFrame?window.requestAnimationFrame(function(){u(e)}):u(e)}),i.on("keydown keyup",function(e){w&&"TABLE"==w.nodeName&&u(e)}),i.on("hide",c)}),i.on("remove",g),{isResizable:o,showResizeRect:l,hideResizeRect:c,updateResizeRect:u,controlSelect:y,destroy:b}}}),r(L,[u,f],function(e,t){function n(n){var r=n.dom;this.getBookmark=function(e,i){function o(e,n){var i=0;return t.each(r.select(e),function(e,t){e==n&&(i=t)}),i}function a(e){function t(t){var n,r,i,o=t?"start":"end";n=e[o+"Container"],r=e[o+"Offset"],1==n.nodeType&&"TR"==n.nodeName&&(i=n.childNodes,n=i[Math.min(t?r:r-1,i.length-1)],n&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r)))}return t(!0),t(),e}function s(){function e(e,t){var n=e[t?"startContainer":"endContainer"],a=e[t?"startOffset":"endOffset"],s=[],l,c,u=0;if(3==n.nodeType){if(i)for(l=n.previousSibling;l&&3==l.nodeType;l=l.previousSibling)a+=l.nodeValue.length;s.push(a)}else c=n.childNodes,a>=c.length&&c.length&&(u=1,a=Math.max(0,c.length-1)),s.push(r.nodeIndex(c[a],i)+u);for(;n&&n!=o;n=n.parentNode)s.push(r.nodeIndex(n,i));return s}var t=n.getRng(!0),o=r.getRoot(),a={};return a.start=e(t,!0),n.isCollapsed()||(a.end=e(t)),a}var l,c,u,d,f,h,p="&#xFEFF;",m;if(2==e)return h=n.getNode(),f=h?h.nodeName:null,"IMG"==f?{name:f,index:o(f,h)}:n.tridentSel?n.tridentSel.getBookmark(e):s();if(e)return{rng:n.getRng()};if(l=n.getRng(),u=r.uniqueId(),d=n.isCollapsed(),m="overflow:hidden;line-height:0px",l.duplicate||l.item){if(l.item)return h=l.item(0),f=h.nodeName,{name:f,index:o(f,h)};c=l.duplicate();try{l.collapse(),l.pasteHTML('<span data-mce-type="bookmark" id="'+u+'_start" style="'+m+'">'+p+"</span>"),d||(c.collapse(!1),l.moveToElementText(c.parentElement()),0===l.compareEndPoints("StartToEnd",c)&&c.move("character",-1),c.pasteHTML('<span data-mce-type="bookmark" id="'+u+'_end" style="'+m+'">'+p+"</span>"))}catch(g){return null}}else{if(h=n.getNode(),f=h.nodeName,"IMG"==f)return{name:f,index:o(f,h)};c=a(l.cloneRange()),d||(c.collapse(!1),c.insertNode(r.create("span",{"data-mce-type":"bookmark",id:u+"_end",style:m},p))),l=a(l),l.collapse(!0),l.insertNode(r.create("span",{"data-mce-type":"bookmark",id:u+"_start",style:m},p))}return n.moveToBookmark({id:u,keep:1}),{id:u}},this.moveToBookmark=function(i){function o(e){var t=i[e?"start":"end"],n,r,o,a;if(t){for(o=t[0],r=c,n=t.length-1;n>=1;n--){if(a=r.childNodes,t[n]>a.length-1)return;r=a[t[n]]}3===r.nodeType&&(o=Math.min(t[0],r.nodeValue.length)),1===r.nodeType&&(o=Math.min(t[0],r.childNodes.length)),e?l.setStart(r,o):l.setEnd(r,o)}return!0}function a(n){var o=r.get(i.id+"_"+n),a,s,l,c,p=i.keep;if(o&&(a=o.parentNode,"start"==n?(p?(a=o.firstChild,s=1):s=r.nodeIndex(o),u=d=a,f=h=s):(p?(a=o.firstChild,s=1):s=r.nodeIndex(o),d=a,h=s),!p)){for(c=o.previousSibling,l=o.nextSibling,t.each(t.grep(o.childNodes),function(e){3==e.nodeType&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});o=r.get(i.id+"_"+n);)r.remove(o,1);c&&l&&c.nodeType==l.nodeType&&3==c.nodeType&&!e.opera&&(s=c.nodeValue.length,c.appendData(l.nodeValue),r.remove(l),"start"==n?(u=d=c,f=h=s):(d=c,h=s))}}function s(t){return!r.isBlock(t)||t.innerHTML||e.ie||(t.innerHTML='<br data-mce-bogus="1" />'),t}var l,c,u,d,f,h;if(i)if(i.start){if(l=r.createRng(),c=r.getRoot(),n.tridentSel)return n.tridentSel.moveToBookmark(i);o(!0)&&o()&&n.setRng(l)}else i.id?(a("start"),a("end"),u&&(l=r.createRng(),l.setStart(s(u),f),l.setEnd(s(d),h),n.setRng(l))):i.name?n.select(r.select(i.name)[i.index]):i.rng&&n.setRng(i.rng)}}return n.isBookmarkNode=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},n}),r(H,[m,B,M,w,L,u,f],function(e,n,r,i,o,a,s){function l(e,t,i,a){var s=this;s.dom=e,s.win=t,s.serializer=i,s.editor=a,s.bookmarkManager=new o(s),s.controlSelection=new r(s,a),s.win.getSelection||(s.tridentSel=new n(s))}var c=s.each,u=s.trim,d=a.ie;return l.prototype={setCursorLocation:function(e,t){var n=this,r=n.dom.createRng();e?(r.setStart(e,t),r.setEnd(e,t),n.setRng(r),n.collapse(!1)):(n._moveEndPoint(r,n.editor.getBody(),!0),n.setRng(r))},getContent:function(e){var n=this,r=n.getRng(),i=n.dom.create("body"),o=n.getSel(),a,s,l;return e=e||{},a=s="",e.get=!0,e.format=e.format||"html",e.selection=!0,n.editor.fire("BeforeGetContent",e),"text"==e.format?n.isCollapsed()?"":r.text||(o.toString?o.toString():""):(r.cloneContents?(l=r.cloneContents(),l&&i.appendChild(l)):r.item!==t||r.htmlText!==t?(i.innerHTML="<br>"+(r.item?r.item(0).outerHTML:r.htmlText),i.removeChild(i.firstChild)):i.innerHTML=r.toString(),/^\s/.test(i.innerHTML)&&(a=" "),/\s+$/.test(i.innerHTML)&&(s=" "),e.getInner=!0,e.content=n.isCollapsed()?"":a+n.serializer.serialize(i,e)+s,n.editor.fire("GetContent",e),e.content)},setContent:function(e,t){var n=this,r=n.getRng(),i,o=n.win.document,a,s;if(t=t||{format:"html"},t.set=!0,t.selection=!0,e=t.content=e,t.no_events||n.editor.fire("BeforeSetContent",t),e=t.content,r.insertNode){e+='<span id="__caret">_</span>',r.startContainer==o&&r.endContainer==o?o.body.innerHTML=e:(r.deleteContents(),0===o.body.childNodes.length?o.body.innerHTML=e:r.createContextualFragment?r.insertNode(r.createContextualFragment(e)):(a=o.createDocumentFragment(),s=o.createElement("div"),a.appendChild(s),s.outerHTML=e,r.insertNode(a))),i=n.dom.get("__caret"),r=o.createRange(),r.setStartBefore(i),r.setEndBefore(i),n.setRng(r),n.dom.remove("__caret");try{n.setRng(r)}catch(l){}}else r.item&&(o.execCommand("Delete",!1,null),r=n.getRng()),/^\s+/.test(e)?(r.pasteHTML('<span id="__mce_tmp">_</span>'+e),n.dom.remove("__mce_tmp")):r.pasteHTML(e);t.no_events||n.editor.fire("SetContent",t)},getStart:function(e){var t=this,n=t.getRng(),r,i,o,a;if(n.duplicate||n.item){if(n.item)return n.item(0);for(o=n.duplicate(),o.collapse(1),r=o.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),i=a=n.parentElement();a=a.parentNode;)if(a==r){r=i;break}return r}return r=n.startContainer,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[Math.min(r.childNodes.length-1,n.startOffset)])),r&&3==r.nodeType?r.parentNode:r},getEnd:function(e){var t=this,n=t.getRng(),r,i;return n.duplicate||n.item?n.item?n.item(0):(n=n.duplicate(),n.collapse(0),r=n.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),r&&"BODY"==r.nodeName?r.lastChild||r:r):(r=n.endContainer,i=n.endOffset,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[i>0?i-1:i])),r&&3==r.nodeType?r.parentNode:r)},getBookmark:function(e,t){return this.bookmarkManager.getBookmark(e,t)},moveToBookmark:function(e){return this.bookmarkManager.moveToBookmark(e)},select:function(e,t){var n=this,r=n.dom,i=r.createRng(),o;if(n.lastFocusBookmark=null,e){if(!t&&n.controlSelection.controlSelect(e))return;o=r.nodeIndex(e),i.setStart(e.parentNode,o),i.setEnd(e.parentNode,o+1),t&&(n._moveEndPoint(i,e,!0),n._moveEndPoint(i,e)),n.setRng(i)}return e},isCollapsed:function(){var e=this,t=e.getRng(),n=e.getSel();return!t||t.item?!1:t.compareEndPoints?0===t.compareEndPoints("StartToEnd",t):!n||t.collapsed},collapse:function(e){var t=this,n=t.getRng(),r;n.item&&(r=n.item(0),n=t.win.document.body.createTextRange(),n.moveToElementText(r)),n.collapse(!!e),t.setRng(n)},getSel:function(){var e=this.win;return e.getSelection?e.getSelection():e.document.selection},getRng:function(e){function t(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var n=this,r,i,o,a=n.win.document,s;if(!e&&n.lastFocusBookmark){var l=n.lastFocusBookmark;return l.startContainer?(i=a.createRange(),i.setStart(l.startContainer,l.startOffset),i.setEnd(l.endContainer,l.endOffset)):i=l,i}if(e&&n.tridentSel)return n.tridentSel.getRangeAt(0);try{(r=n.getSel())&&(i=r.rangeCount>0?r.getRangeAt(0):r.createRange?r.createRange():a.createRange())}catch(c){}if(d&&i&&i.setStart&&a.selection){try{s=a.selection.createRange()}catch(c){}s&&s.item&&(o=s.item(0),i=a.createRange(),i.setStartBefore(o),i.setEndAfter(o))}return i||(i=a.createRange?a.createRange():a.body.createTextRange()),i.setStart&&9===i.startContainer.nodeType&&i.collapsed&&(o=n.dom.getRoot(),i.setStart(o,0),i.setEnd(o,0)),n.selectedRange&&n.explicitRange&&(0===t(i.START_TO_START,i,n.selectedRange)&&0===t(i.END_TO_END,i,n.selectedRange)?i=n.explicitRange:(n.selectedRange=null,n.explicitRange=null)),i},setRng:function(e,t){var n=this,r,i;if(e)if(e.select)try{e.select()}catch(o){}else if(n.tridentSel){if(e.cloneRange)try{return void n.tridentSel.addRange(e)}catch(o){}}else{if(r=n.getSel()){n.explicitRange=e;try{r.removeAllRanges(),r.addRange(e)}catch(o){}t===!1&&r.extend&&(r.collapse(e.endContainer,e.endOffset),r.extend(e.startContainer,e.startOffset)),n.selectedRange=r.rangeCount>0?r.getRangeAt(0):null}e.collapsed||e.startContainer!=e.endContainer||!r.setBaseAndExtent||a.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(i=e.startContainer.childNodes[e.startOffset],i&&"IMG"==i.tagName&&n.getSel().setBaseAndExtent(i,0,i,1))}},setNode:function(e){var t=this;return t.setContent(t.dom.getOuterHTML(e)),e},getNode:function(){function e(e,t){for(var n=e;e&&3===e.nodeType&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}var t=this,n=t.getRng(),r,i=n.startContainer,o=n.endContainer,a=n.startOffset,s=n.endOffset,l=t.dom.getRoot();return n?n.setStart?(r=n.commonAncestorContainer,!n.collapsed&&(i==o&&2>s-a&&i.hasChildNodes()&&(r=i.childNodes[a]),3===i.nodeType&&3===o.nodeType&&(i=i.length===a?e(i.nextSibling,!0):i.parentNode,o=0===s?e(o.previousSibling,!1):o.parentNode,i&&i===o))?i:r&&3==r.nodeType?r.parentNode:r):(r=n.item?n.item(0):n.parentElement(),r.ownerDocument!==t.win.document&&(r=l),r):l},getSelectedBlocks:function(t,n){var r=this,i=r.dom,o,a,s=[];if(a=i.getRoot(),t=i.getParent(t||r.getStart(),i.isBlock),n=i.getParent(n||r.getEnd(),i.isBlock),t&&t!=a&&s.push(t),t&&n&&t!=n){o=t;for(var l=new e(t,a);(o=l.next())&&o!=n;)i.isBlock(o)&&s.push(o)}return n&&t!=n&&n!=a&&s.push(n),s},isForward:function(){var e=this.dom,t=this.getSel(),n,r;return t&&t.anchorNode&&t.focusNode?(n=e.createRng(),n.setStart(t.anchorNode,t.anchorOffset),n.collapse(!0),r=e.createRng(),r.setStart(t.focusNode,t.focusOffset),r.collapse(!0),n.compareBoundaryPoints(n.START_TO_START,r)<=0):!0},normalize:function(){var e=this,t=e.getRng();return a.range&&new i(e.dom).normalize(t)&&e.setRng(t,e.isForward()),t},selectorChanged:function(e,t){var n=this,r;return n.selectorChangedData||(n.selectorChangedData={},r={},n.editor.on("NodeChange",function(e){var t=e.element,i=n.dom,o=i.getParents(t,null,i.getRoot()),a={};c(n.selectorChangedData,function(e,t){c(o,function(n){return i.is(n,t)?(r[t]||(c(e,function(e){e(!0,{node:n,selector:t,parents:o})}),r[t]=e),a[t]=e,!1):void 0})}),c(r,function(e,n){a[n]||(delete r[n],c(e,function(e){e(!1,{node:t,selector:n,parents:o})}))})})),n.selectorChangedData[e]||(n.selectorChangedData[e]=[]),n.selectorChangedData[e].push(t),n},getScrollContainer:function(){for(var e,t=this.dom.getRoot();t&&"BODY"!=t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e){function t(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}}var n,r,i=this,o=i.dom,a=o.getRoot(),s,l;if("BODY"!=a.nodeName){var c=i.getScrollContainer();if(c)return n=t(e).y-t(c).y,l=c.clientHeight,s=c.scrollTop,void((s>n||n+25>s+l)&&(c.scrollTop=s>n?n:n-l+25))}r=o.getViewPort(i.editor.getWin()),n=o.getPos(e).y,s=r.y,l=r.h,(n<r.y||n+25>s+l)&&i.editor.getWin().scrollTo(0,s>n?n:n-l+25)},placeCaretAt:function(e,t){var n=this.editor.getDoc(),r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r.collapse(t<n.body.clientHeight)}}this.setRng(r)},_moveEndPoint:function(t,n,r){var i=n,o=new e(n,i),s=this.dom.schema.getNonEmptyElements();
-do{if(3==n.nodeType&&0!==u(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(s[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"==n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(a.ie&&a.ie<11&&this.dom.isBlock(n)&&this.dom.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?o.next():o.prev());"BODY"==i.nodeName&&(r?t.setStart(i,0):t.setEnd(i,i.childNodes.length))},destroy:function(){this.win=null,this.controlSelection.destroy()}},l}),r(P,[L,f],function(e,t){function n(t){this.compare=function(n,i){function o(e){var n={};return r(t.getAttribs(e),function(r){var i=r.nodeName.toLowerCase();0!==i.indexOf("_")&&"style"!==i&&"data-mce-style"!==i&&(n[i]=t.getAttrib(e,i))}),n}function a(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(n=t[r],"undefined"==typeof n)return!1;if(e[r]!=n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return n.nodeName!=i.nodeName?!1:a(o(n),o(i))&&a(t.parseStyle(t.getAttrib(n,"style")),t.parseStyle(t.getAttrib(i,"style")))?!e.isBookmarkNode(n)&&!e.isBookmarkNode(i):!1}}var r=t.each;return n}),r(O,[f],function(e){function t(e,t){function r(e){return e.replace(/%(\w+)/g,"")}var i,o,a=e.dom,s="",l,c;if(c=e.settings.preview_styles,c===!1)return"";if(c||(c="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"),"string"==typeof t){if(t=e.formatter.get(t),!t)return;t=t[0]}return i=t.block||t.inline||"span",o=a.create(i),n(t.styles,function(e,t){e=r(e),e&&a.setStyle(o,t,e)}),n(t.attributes,function(e,t){e=r(e),e&&a.setAttrib(o,t,e)}),n(t.classes,function(e){e=r(e),a.hasClass(o,e)||a.addClass(o,e)}),e.fire("PreviewFormats"),a.setStyles(o,{position:"absolute",left:-65535}),e.getBody().appendChild(o),l=a.getStyle(e.getBody(),"fontSize",!0),l=/px$/.test(l)?parseInt(l,10):0,n(c.split(" "),function(t){var n=a.getStyle(o,t,!0);if(!("background-color"==t&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)&&(n=a.getStyle(e.getBody(),t,!0),"#ffffff"==a.toHex(n).toLowerCase())||"color"==t&&"#000000"==a.toHex(n).toLowerCase())){if("font-size"==t&&/em|%$/.test(n)){if(0===l)return;n=parseFloat(n,10)/(/%$/.test(n)?100:1),n=n*l+"px"}"border"==t&&n&&(s+="padding:0 2px;"),s+=t+":"+n+";"}}),e.fire("AfterPreviewFormats"),a.remove(o),s}var n=e.each;return{getCssText:t}}),r(I,[m,w,L,P,f,O],function(e,t,n,r,i,o){return function(a){function s(e){return e.nodeType&&(e=e.nodeName),!!a.schema.getTextBlockElements()[e.toLowerCase()]}function l(e){return/^(TH|TD)$/.test(e.nodeName)}function c(e){return e&&/^(IMG)$/.test(e.nodeName)}function u(e,t){return q.getParents(e,t,q.getRoot())}function d(e){return 1===e.nodeType&&"_mce_caret"===e.id}function f(){m({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"}}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(e,t,n){le(n,function(t,n){q.setAttrib(e,n,t)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]}),le("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){m(e,{block:e,remove:"all"})}),m(a.settings.formats)}function h(){a.addShortcut("meta+b","bold_desc","Bold"),a.addShortcut("meta+i","italic_desc","Italic"),a.addShortcut("meta+u","underline_desc","Underline");for(var e=1;6>=e;e++)a.addShortcut("access+"+e,"",["FormatBlock",!1,"h"+e]);a.addShortcut("access+7","",["FormatBlock",!1,"p"]),a.addShortcut("access+8","",["FormatBlock",!1,"div"]),a.addShortcut("access+9","",["FormatBlock",!1,"address"])}function p(e){return e?$[e]:$}function m(e,t){e&&("string"!=typeof e?le(e,function(e,t){m(t,e)}):(t=t.length?t:[t],le(t,function(e){e.deep===re&&(e.deep=!e.selector),e.split===re&&(e.split=!e.selector||e.inline),e.remove===re&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),$[e]=t))}function g(e){return e&&$[e]&&delete $[e],$}function v(e){var t;return a.dom.getParent(e,function(e){return t=a.dom.getStyle(e,"text-decoration"),t&&"none"!==t}),t}function y(e){var t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=v(e.parentNode),a.dom.getStyle(e,"color")&&t?a.dom.setStyle(e,"text-decoration",t):a.dom.getStyle(e,"text-decoration")===t&&a.dom.setStyle(e,"text-decoration",null))}function b(t,n,r){function i(e,t){if(t=t||u,e){if(t.onformat&&t.onformat(e,t,n,r),le(t.styles,function(t,r){q.setStyle(e,r,D(t,n))}),t.styles){var i=q.getAttrib(e,"style");i&&e.setAttribute("data-mce-style",i)}le(t.attributes,function(t,r){q.setAttrib(e,r,D(t,n))}),le(t.classes,function(t){t=D(t,n),q.hasClass(e,t)||q.addClass(e,t)})}}function o(){function t(t,n){var i=new e(n);for(r=i.current();r;r=i.prev())if(r.childNodes.length>1||r==t||"BR"==r.tagName)return r}var n=a.selection.getRng(),i=n.startContainer,o=n.endContainer;if(i!=o&&0===n.endOffset){var s=t(i,o),l=3==s.nodeType?s.length:s.childNodes.length;n.setEnd(s,l)}return n}function l(e,r,o){var a=[],l,f,h=!0;l=u.inline||u.block,f=q.create(l),i(f),K.walk(e,function(e){function r(e){var g,v,y,b,x;return x=h,g=e.nodeName.toLowerCase(),v=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&ie(e)&&(x=h,h="true"===ie(e),b=!0),R(g,"br")?(p=0,void(u.block&&q.remove(e))):u.wrapper&&w(e,t,n)?void(p=0):h&&!b&&u.block&&!u.wrapper&&s(g)&&Y(v,l)?(e=q.rename(e,l),i(e),a.push(e),void(p=0)):u.selector&&(le(c,function(t){"collapsed"in t&&t.collapsed!==m||q.is(e,t.selector)&&!d(e)&&(i(e,t),y=!0)}),!u.inline||y)?void(p=0):void(!h||b||!Y(l,g)||!Y(v,l)||!o&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||d(e)||u.inline&&G(e)?(p=0,le(ce(e.childNodes),r),b&&(h=x),p=0):(p||(p=q.clone(f,ee),e.parentNode.insertBefore(p,e),a.push(p)),p.appendChild(e)))}var p;le(e,r)}),u.links===!0&&le(a,function(e){function t(e){"A"===e.nodeName&&i(e,u),le(ce(e.childNodes),t)}t(e)}),le(a,function(e){function r(e){var t=0;return le(e.childNodes,function(e){M(e)||se(e)||t++}),t}function o(e){var t,n;return le(e.childNodes,function(e){return 1!=e.nodeType||se(e)||d(e)?void 0:(t=e,ee)}),t&&!se(t)&&T(t,u)&&(n=q.clone(t,ee),i(n),q.replace(n,e,te),q.remove(t,1)),n||e}var s;if(s=r(e),(a.length>1||!G(e))&&0===s)return void q.remove(e,1);if(u.inline||u.wrapper){if(u.exact||1!==s||(e=o(e)),le(c,function(t){le(q.select(t.inline,e),function(e){se(e)||O(t,n,e,t.exact?e:null)})}),w(e.parentNode,t,n))return q.remove(e,1),e=0,te;u.merge_with_parents&&q.getParent(e.parentNode,function(r){return w(r,t,n)?(q.remove(e,1),e=0,te):void 0}),e&&u.merge_siblings!==!1&&(e=z(F(e),e),e=z(e,F(e,te)))}})}var c=p(t),u=c[0],f,h,m=!r&&j.isCollapsed();if(u)if(r)r.nodeType?(h=q.createRng(),h.setStartBefore(r),h.setEndAfter(r),l(H(h,c),null,!0)):l(r,null,!0);else if(m&&u.inline&&!q.select("td.mce-item-selected,th.mce-item-selected").length)V("apply",t,n);else{var g=a.selection.getNode();X||!c[0].defaultBlock||q.getParent(g,q.isBlock)||b(c[0].defaultBlock),a.selection.setRng(o()),f=j.getBookmark(),l(H(j.getRng(te),c),f),u.styles&&(u.styles.color||u.styles.textDecoration)&&(ue(g,y,"childNodes"),y(g)),j.moveToBookmark(f),U(j.getRng(te)),a.nodeChanged()}}function x(e,t,n,r){function i(e){var n,r,o,a,s;if(1===e.nodeType&&ie(e)&&(a=b,b="true"===ie(e),s=!0),n=ce(e.childNodes),b&&!s)for(r=0,o=h.length;o>r&&!O(h[r],t,e,e);r++);if(m.deep&&n.length){for(r=0,o=n.length;o>r;r++)i(n[r]);s&&(b=a)}}function o(n){var i;return le(u(n.parentNode).reverse(),function(n){var o;i||"_start"==n.id||"_end"==n.id||(o=w(n,e,t,r),o&&o.split!==!1&&(i=n))}),i}function s(e,n,r,i){var o,a,s,l,c,u;if(e){for(u=e.parentNode,o=n.parentNode;o&&o!=u;o=o.parentNode){for(a=q.clone(o,ee),c=0;c<h.length;c++)if(O(h[c],t,a,a)){a=0;break}a&&(s&&a.appendChild(s),l||(l=a),s=a)}!i||m.mixed&&G(e)||(n=q.split(e,n)),s&&(r.parentNode.insertBefore(s,r),l.appendChild(r))}return n}function c(e){return s(o(e),e,e,!0)}function d(e){var t=q.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return se(n)&&(n=n[e?"firstChild":"lastChild"]),3==n.nodeType&&0===n.data.length&&(n=e?t.previousSibling||t.nextSibling:t.nextSibling||t.previousSibling),q.remove(t,!0),n}function f(e){var t,n,r=e.commonAncestorContainer;if(e=H(e,h,te),m.split){if(t=W(e,te),n=W(e),t!=n){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"==t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&l(n)&&n.firstChild&&(n=n.firstChild||n),q.isChildOf(t,n)&&!G(n)&&!l(t)&&!l(n))return t=L(t,"span",{id:"_start","data-mce-type":"bookmark"}),c(t),void(t=d(te));t=L(t,"span",{id:"_start","data-mce-type":"bookmark"}),n=L(n,"span",{id:"_end","data-mce-type":"bookmark"}),c(t),c(n),t=d(te),n=d()}else t=n=c(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=J(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=J(n)+1}K.walk(e,function(e){le(e,function(e){i(e),1===e.nodeType&&"underline"===a.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===v(e.parentNode)&&O({deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var h=p(e),m=h[0],g,y,b=!0;return n?void(n.nodeType?(y=q.createRng(),y.setStartBefore(n),y.setEndAfter(n),f(y)):f(n)):void(j.isCollapsed()&&m.inline&&!q.select("td.mce-item-selected,th.mce-item-selected").length?V("remove",e,t,r):(g=j.getBookmark(),f(j.getRng(te)),j.moveToBookmark(g),m.inline&&_(e,t,j.getStart())&&U(j.getRng(!0)),a.nodeChanged()))}function C(e,t,n){var r=p(e);!_(e,t,n)||"toggle"in r[0]&&!r[0].toggle?b(e,t,n):x(e,t,n)}function w(e,t,n,r){function i(e,t,i){var o,a,s=t[i],l;if(t.onmatch)return t.onmatch(e,t,i);if(s)if(s.length===re){for(o in s)if(s.hasOwnProperty(o)){if(a="attributes"===i?q.getAttrib(e,o):A(e,o),r&&!a&&!t.exact)return;if((!r||t.exact)&&!R(a,B(D(s[o],n),o)))return}}else for(l=0;l<s.length;l++)if("attributes"===i?q.getAttrib(e,s[l]):A(e,s[l]))return t;return t}var o=p(t),a,s,l;if(o&&e)for(s=0;s<o.length;s++)if(a=o[s],T(e,a)&&i(e,a,"attributes")&&i(e,a,"styles")){if(l=a.classes)for(s=0;s<l.length;s++)if(!q.hasClass(e,l[s]))return;return a}}function _(e,t,n){function r(n){var r=q.getRoot();return n===r?!1:(n=q.getParent(n,function(n){return n.parentNode===r||!!w(n,e,t,!0)}),w(n,e,t))}var i;return n?r(n):(n=j.getNode(),r(n)?te:(i=j.getStart(),i!=n&&r(i)?te:ee))}function E(e,t){var n,r=[],i={};return n=j.getStart(),q.getParent(n,function(n){var o,a;for(o=0;o<e.length;o++)a=e[o],!i[a]&&w(n,a,t)&&(i[a]=!0,r.push(a))},q.getRoot()),r}function N(e){var t=p(e),n,r,i,o,a;if(t)for(n=j.getStart(),r=u(n),o=t.length-1;o>=0;o--){if(a=t[o].selector,!a||t[o].defaultBlock)return te;for(i=r.length-1;i>=0;i--)if(q.is(r[i],a))return te}return ee}function S(e,t,n){var r;return ne||(ne={},r={},a.on("NodeChange",function(e){var t=u(e.element),n={};t=i.grep(t,function(e){return 1==e.nodeType&&!e.getAttribute("data-mce-bogus")}),le(ne,function(e,i){le(t,function(o){return w(o,i,{},e.similar)?(r[i]||(le(e,function(e){e(!0,{node:o,format:i,parents:t})}),r[i]=e),n[i]=e,!1):void 0})}),le(r,function(i,o){n[o]||(delete r[o],le(i,function(n){n(!1,{node:e.element,format:o,parents:t})}))})})),le(e.split(","),function(e){ne[e]||(ne[e]=[],ne[e].similar=n),ne[e].push(t)}),this}function k(e){return o.getCssText(a,e)}function T(e,t){return R(e,t.inline)?te:R(e,t.block)?te:t.selector?1==e.nodeType&&q.is(e,t.selector):void 0}function R(e,t){return e=e||"",t=t||"",e=""+(e.nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()==t.toLowerCase()}function A(e,t){return B(q.getStyle(e,t),t)}function B(e,t){return("color"==t||"backgroundColor"==t)&&(e=q.toHex(e)),"fontWeight"==t&&700==e&&(e="bold"),"fontFamily"==t&&(e=e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+e}function D(e,t){return"string"!=typeof e?e=e(t):t&&(e=e.replace(/%(\w+)/g,function(e,n){return t[n]||e})),e}function M(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)}function L(e,t,n){var r=q.create(t,n);return e.parentNode.insertBefore(r,e),r.appendChild(e),r}function H(t,n,r){function i(e){function t(e){return"BR"==e.nodeName&&e.getAttribute("data-mce-bogus")&&!e.nextSibling}var r,i,o,a,s;if(r=i=e?g:y,a=e?"previousSibling":"nextSibling",s=q.getRoot(),3==r.nodeType&&!M(r)&&(e?v>0:b<r.nodeValue.length))return r;for(;;){if(!n[0].block_expand&&G(i))return i;for(o=i[a];o;o=o[a])if(!se(o)&&!M(o)&&!t(o))return i;if(i.parentNode==s){r=i;break}i=i.parentNode}return r}function o(e,t){for(t===re&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)e=e.childNodes[t],e&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function l(e){for(var t=e;t;){if(1===t.nodeType&&ie(t))return"false"===ie(t)?t:e;t=t.parentNode}return e}function c(t,n,i){function o(e,t){var n,o,a=e.nodeValue;return"undefined"==typeof t&&(t=i?a.length:0),i?(n=a.lastIndexOf(" ",t),o=a.lastIndexOf("\xa0",t),n=n>o?n:o,-1===n||r||n++):(n=a.indexOf(" ",t),o=a.indexOf("\xa0",t),n=-1!==n&&(-1===o||o>n)?n:o),n}var s,l,c,u;if(3===t.nodeType){if(c=o(t,n),-1!==c)return{container:t,offset:c};u=t}for(s=new e(t,q.getParent(t,G)||a.getBody());l=s[i?"prev":"next"]();)if(3===l.nodeType){if(u=l,c=o(l),-1!==c)return{container:l,offset:c}}else if(G(l))break;return u?(n=i?0:u.length,{container:u,offset:n}):void 0}function d(e,r){var i,o,a,s;for(3==e.nodeType&&0===e.nodeValue.length&&e[r]&&(e=e[r]),i=u(e),o=0;o<i.length;o++)for(a=0;a<n.length;a++)if(s=n[a],!("collapsed"in s&&s.collapsed!==t.collapsed)&&q.is(i[o],s.selector))return i[o];return e}function f(e,t){var r,i=q.getRoot();if(n[0].wrapper||(r=q.getParent(e,n[0].block,i)),r||(r=q.getParent(3==e.nodeType?e.parentNode:e,function(e){return e!=i&&s(e)})),r&&n[0].wrapper&&(r=u(r,"ul,ol").reverse()[0]||r),!r)for(r=e;r[t]&&!G(r[t])&&(r=r[t],!R(r,"br")););return r||e}var h,p,m,g=t.startContainer,v=t.startOffset,y=t.endContainer,b=t.endOffset;if(1==g.nodeType&&g.hasChildNodes()&&(h=g.childNodes.length-1,g=g.childNodes[v>h?h:v],3==g.nodeType&&(v=0)),1==y.nodeType&&y.hasChildNodes()&&(h=y.childNodes.length-1,y=y.childNodes[b>h?h:b-1],3==y.nodeType&&(b=y.nodeValue.length)),g=l(g),y=l(y),(se(g.parentNode)||se(g))&&(g=se(g)?g:g.parentNode,g=g.nextSibling||g,3==g.nodeType&&(v=0)),(se(y.parentNode)||se(y))&&(y=se(y)?y:y.parentNode,y=y.previousSibling||y,3==y.nodeType&&(b=y.length)),n[0].inline&&(t.collapsed&&(m=c(g,v,!0),m&&(g=m.container,v=m.offset),m=c(y,b),m&&(y=m.container,b=m.offset)),p=o(y,b),p.node)){for(;p.node&&0===p.offset&&p.node.previousSibling;)p=o(p.node.previousSibling);p.node&&p.offset>0&&3===p.node.nodeType&&" "===p.node.nodeValue.charAt(p.offset-1)&&p.offset>1&&(y=p.node,y.splitText(p.offset-1))}return(n[0].inline||n[0].block_expand)&&(n[0].inline&&3==g.nodeType&&0!==v||(g=i(!0)),n[0].inline&&3==y.nodeType&&b!==y.nodeValue.length||(y=i())),n[0].selector&&n[0].expand!==ee&&!n[0].inline&&(g=d(g,"previousSibling"),y=d(y,"nextSibling")),(n[0].block||n[0].selector)&&(g=f(g,"previousSibling"),y=f(y,"nextSibling"),n[0].block&&(G(g)||(g=i(!0)),G(y)||(y=i()))),1==g.nodeType&&(v=J(g),g=g.parentNode),1==y.nodeType&&(b=J(y)+1,y=y.parentNode),{startContainer:g,startOffset:v,endContainer:y,endOffset:b}}function P(e,t){return t.links&&"A"==e.tagName}function O(e,t,n,r){var i,o,a;if(!T(n,e)&&!P(n,e))return ee;if("all"!=e.remove)for(le(e.styles,function(i,o){i=B(D(i,t),o),"number"==typeof o&&(o=i,r=0),(e.remove_similar||!r||R(A(r,o),i))&&q.setStyle(n,o,""),a=1}),a&&""===q.getAttrib(n,"style")&&(n.removeAttribute("style"),n.removeAttribute("data-mce-style")),le(e.attributes,function(e,i){var o;if(e=D(e,t),"number"==typeof i&&(i=e,r=0),!r||R(q.getAttrib(r,i),e)){if("class"==i&&(e=q.getAttrib(n,i),e&&(o="",le(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(o+=(o?" ":"")+e)}),o)))return void q.setAttrib(n,i,o);"class"==i&&n.removeAttribute("className"),Z.test(i)&&n.removeAttribute("data-mce-"+i),n.removeAttribute(i)}}),le(e.classes,function(e){e=D(e,t),(!r||q.hasClass(r,e))&&q.removeClass(n,e)}),o=q.getAttribs(n),i=0;i<o.length;i++)if(0!==o[i].nodeName.indexOf("_"))return ee;return"none"!=e.remove?(I(n,e),te):void 0}function I(e,t){function n(e,t,n){return e=F(e,t,n),!e||"BR"==e.nodeName||G(e)}var r=e.parentNode,i;t.block&&(X?r==q.getRoot()&&(t.list_block&&R(e,t.list_block)||le(ce(e.childNodes),function(e){Y(X,e.nodeName.toLowerCase())?i?i.appendChild(e):(i=L(e,X),q.setAttribs(i,a.settings.forced_root_block_attrs)):i=0})):G(e)&&!G(r)&&(n(e,ee)||n(e.firstChild,te,1)||e.insertBefore(q.create("br"),e.firstChild),n(e,te)||n(e.lastChild,ee,1)||e.appendChild(q.create("br")))),t.selector&&t.inline&&!R(t.inline,e)||q.remove(e,1)}function F(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1==e.nodeType||!M(e))return e}function z(e,t){function n(e,t){for(i=e;i;i=i[t]){if(3==i.nodeType&&0!==i.nodeValue.length)return e;if(1==i.nodeType&&!se(i))return i}return e}var i,o,a=new r(q);if(e&&t&&(e=n(e,"previousSibling"),t=n(t,"nextSibling"),a.compare(e,t))){for(i=e.nextSibling;i&&i!=t;)o=i,i=i.nextSibling,e.appendChild(o);return q.remove(t),le(ce(t.childNodes),function(t){e.appendChild(t)}),e}return t}function W(t,n){var r,i,o;return r=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],1==r.nodeType&&(o=r.childNodes.length-1,!n&&i&&i--,r=r.childNodes[i>o?o:i]),3===r.nodeType&&n&&i>=r.nodeValue.length&&(r=new e(r,a.getBody()).next()||r),3!==r.nodeType||n||0!==i||(r=new e(r,a.getBody()).prev()||r),r}function V(t,n,r,i){function o(e){var t=q.create("span",{id:g,"data-mce-bogus":!0,style:v?"color:red":""});return e&&t.appendChild(a.getDoc().createTextNode(Q)),t}function l(e,t){for(;e;){if(3===e.nodeType&&e.nodeValue!==Q||e.childNodes.length>1)return!1;t&&1===e.nodeType&&t.push(e),e=e.firstChild}return!0}function c(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function u(t){var n;if(t)for(n=new e(t,t),t=n.current();t;t=n.next())if(3===t.nodeType)return t}function d(e,t){var n,r;if(e)r=j.getRng(!0),l(e)?(t!==!1&&(r.setStartBefore(e),r.setEndBefore(e)),q.remove(e)):(n=u(e),n.nodeValue.charAt(0)===Q&&(n.deleteData(0,1),r.startContainer==n&&r.startOffset>0&&r.setStart(n,r.startOffset-1),r.endContainer==n&&r.endOffset>0&&r.setEnd(n,r.endOffset-1)),q.remove(e,1)),j.setRng(r);else if(e=c(j.getStart()),!e)for(;e=q.get(g);)d(e,!1)}function f(){var e,t,i,a,s,l,d;e=j.getRng(!0),a=e.startOffset,l=e.startContainer,d=l.nodeValue,t=c(j.getStart()),t&&(i=u(t)),d&&a>0&&a<d.length&&/\w/.test(d.charAt(a))&&/\w/.test(d.charAt(a-1))?(s=j.getBookmark(),e.collapse(!0),e=H(e,p(n)),e=K.split(e),b(n,r,e),j.moveToBookmark(s)):(t&&i.nodeValue===Q?b(n,r,t):(t=o(!0),i=t.firstChild,e.insertNode(t),a=1,b(n,r,t)),j.setCursorLocation(i,a))}function h(){var e=j.getRng(!0),t,a,l,c,u,d,f=[],h,m;for(t=e.startContainer,a=e.startOffset,u=t,3==t.nodeType&&(a!=t.nodeValue.length&&(c=!0),u=u.parentNode);u;){if(w(u,n,r,i)){d=u;break}u.nextSibling&&(c=!0),f.push(u),u=u.parentNode}if(d)if(c)l=j.getBookmark(),e.collapse(!0),e=H(e,p(n),!0),e=K.split(e),x(n,r,e),j.moveToBookmark(l);else{for(m=o(),u=m,h=f.length-1;h>=0;h--)u.appendChild(q.clone(f[h],!1)),u=u.firstChild;u.appendChild(q.doc.createTextNode(Q)),u=u.firstChild;var g=q.getParent(d,s);g&&q.isEmpty(g)?d.parentNode.replaceChild(m,d):q.insertAfter(m,d),j.setCursorLocation(u,1),q.isEmpty(d)&&q.remove(d)}}function m(){var e;e=c(j.getStart()),e&&!q.isEmpty(e)&&ue(e,function(e){1!=e.nodeType||e.id===g||q.isEmpty(e)||q.setAttrib(e,"data-mce-bogus",null)},"childNodes")}var g="_mce_caret",v=a.settings.caret_debug;a._hasCaretEvents||(ae=function(){var e=[],t;if(l(c(j.getStart()),e))for(t=e.length;t--;)q.setAttrib(e[t],"data-mce-bogus","1")},oe=function(e){var t=e.keyCode;d(),(8==t&&j.isCollapsed()||37==t||39==t)&&d(c(j.getStart())),m()},a.on("SetContent",function(e){e.selection&&m()}),a._hasCaretEvents=!0),"apply"==t?f():h()}function U(t){var n=t.startContainer,r=t.startOffset,i,o,a,s,l;if((t.startContainer!=t.endContainer||!c(t.startContainer.childNodes[t.startOffset]))&&(3==n.nodeType&&r>=n.nodeValue.length&&(r=J(n),n=n.parentNode,i=!0),1==n.nodeType))for(s=n.childNodes,n=s[Math.min(r,s.length-1)],o=new e(n,q.getParent(n,q.isBlock)),(r>s.length-1||i)&&o.next(),a=o.current();a;a=o.next())if(3==a.nodeType&&!M(a))return l=q.create("a",{"data-mce-bogus":"all"},Q),a.parentNode.insertBefore(l,a),t.setStart(a,0),j.setRng(t),void q.remove(l)}var $={},q=a.dom,j=a.selection,K=new t(q),Y=a.schema.isValidChild,G=q.isBlock,X=a.settings.forced_root_block,J=q.nodeIndex,Q="\ufeff",Z=/^(src|href|style)$/,ee=!1,te=!0,ne,re,ie=q.getContentEditable,oe,ae,se=n.isBookmarkNode,le=i.each,ce=i.grep,ue=i.walk,de=i.extend;de(this,{get:p,register:m,unregister:g,apply:b,remove:x,toggle:C,match:_,matchAll:E,matchNode:w,canApply:N,formatChanged:S,getCssText:k}),f(),h(),a.on("BeforeGetContent",function(e){ae&&"raw"!=e.format&&ae()}),a.on("mouseup keydown",function(e){oe&&oe(e)})}}),r(F,[D,u,f,S],function(e,t,n,r){var i=n.trim,o;return o=new RegExp(["<span[^>]+data-mce-bogus[^>]+>[\u200b\ufeff]+<\\/span>",'\\s?data-mce-selected="[^"]+"'].join("|"),"gi"),function(e){function n(){var t=e.getContent({format:"raw",no_events:1}),n=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,a,s,l,c,u,d=e.schema;for(t=t.replace(o,""),u=d.getShortEndedElements();c=n.exec(t);)s=n.lastIndex,l=c[0].length,a=u[c[1]]?s:r.findEndTag(d,t,s),t=t.substring(0,s-l)+t.substring(a),n.lastIndex=s-l;return i(t)}function a(t){e.isNotDirty=!t}function s(e){l.typing=!1,l.add({},e)}var l=this,c=0,u=[],d,f,h=0;return e.on("init",function(){l.add()}),e.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&l.beforeChange()}),e.on("ExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&s(e)}),e.on("ObjectResizeStart",function(){l.beforeChange()}),e.on("SaveContent ObjectResized blur",s),e.on("DragEnd",s),e.on("KeyUp",function(r){var i=r.keyCode;(i>=33&&36>=i||i>=37&&40>=i||45==i||13==i||r.ctrlKey)&&(s(),e.nodeChanged()),(46==i||8==i||t.mac&&(91==i||93==i))&&e.nodeChanged(),f&&l.typing&&(e.isDirty()||(a(u[0]&&n()!=u[0].content),e.isNotDirty||e.fire("change",{level:u[0],lastLevel:null})),e.fire("TypingUndo"),f=!1,e.nodeChanged())}),e.on("KeyDown",function(e){var t=e.keyCode;if(t>=33&&36>=t||t>=37&&40>=t||45==t)return void(l.typing&&s(e));var n=e.ctrlKey&&!e.altKey||e.metaKey;!(16>t||t>20)||224==t||91==t||l.typing||n||(l.beforeChange(),l.typing=!0,l.add({},e),f=!0)}),e.on("MouseDown",function(e){l.typing&&s(e)}),e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),e.on("AddUndo Undo Redo ClearUndos",function(t){t.isDefaultPrevented()||e.nodeChanged()}),l={data:u,typing:!1,beforeChange:function(){h||(d=e.selection.getBookmark(2,!0))},add:function(t,r){var i,o=e.settings,s;if(t=t||{},t.content=n(),h||e.removed)return null;if(s=u[c],e.fire("BeforeAddUndo",{level:t,lastLevel:s,originalEvent:r}).isDefaultPrevented())return null;if(s&&s.content==t.content)return null;if(u[c]&&(u[c].beforeBookmark=d),o.custom_undo_redo_levels&&u.length>o.custom_undo_redo_levels){for(i=0;i<u.length-1;i++)u[i]=u[i+1];u.length--,c=u.length}t.bookmark=e.selection.getBookmark(2,!0),c<u.length-1&&(u.length=c+1),u.push(t),c=u.length-1;var l={level:t,lastLevel:s,originalEvent:r};return e.fire("AddUndo",l),c>0&&(a(!0),e.fire("change",l)),t},undo:function(){var t;return l.typing&&(l.add(),l.typing=!1),c>0&&(t=u[--c],0===c&&a(!1),e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(t.beforeBookmark),e.fire("undo",{level:t})),t},redo:function(){var t;return c<u.length-1&&(t=u[++c],e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(t.bookmark),a(!0),e.fire("redo",{level:t})),t},clear:function(){u=[],c=0,l.typing=!1,e.fire("ClearUndos")},hasUndo:function(){return c>0||l.typing&&u[0]&&n()!=u[0].content},hasRedo:function(){return c<u.length-1&&!this.typing},transact:function(e){l.beforeChange();try{h++,e()}finally{h--}l.add()}}}}),r(z,[m,w,u],function(e,t,n){var r=n.ie&&n.ie<11;return function(i){function o(o){function h(e){return e&&a.isBlock(e)&&!/^(TD|TH|CAPTION|FORM)$/.test(e.nodeName)&&!/^(fixed|absolute)/i.test(e.style.position)&&"true"!==a.getContentEditable(e)}function p(e){var t;a.isBlock(e)&&(t=s.getRng(),e.appendChild(a.create("span",null,"\xa0")),s.select(e),e.lastChild.outerHTML="",s.setRng(t))}function m(e){var t=e,n=[],r;if(t){for(;t=t.firstChild;){if(a.isBlock(t))return;1!=t.nodeType||d[t.nodeName.toLowerCase()]||n.push(t)}for(r=n.length;r--;)t=n[r],!t.hasChildNodes()||t.firstChild==t.lastChild&&""===t.firstChild.nodeValue?a.remove(t):"A"==t.nodeName&&" "===(t.innerText||t.textContent)&&a.remove(t)}}function g(t){function r(e){for(;e;){if(1==e.nodeType||3==e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}var i,o,l,c=t,u;if(t){if(n.ie&&n.ie<9&&D&&D.firstChild&&D.firstChild==D.lastChild&&"BR"==D.firstChild.tagName&&a.remove(D.firstChild),/^(LI|DT|DD)$/.test(t.nodeName)){var d=r(t.firstChild);d&&/^(UL|OL|DL)$/.test(d.nodeName)&&t.insertBefore(a.doc.createTextNode("\xa0"),t.firstChild)}if(l=a.createRng(),n.ie||t.normalize(),t.hasChildNodes()){for(i=new e(t,t);o=i.current();){if(3==o.nodeType){l.setStart(o,0),l.setEnd(o,0);break}if(f[o.nodeName.toLowerCase()]){l.setStartBefore(o),l.setEndBefore(o);break}c=o,o=i.next()}o||(l.setStart(c,0),l.setEnd(c,0))}else"BR"==t.nodeName?t.nextSibling&&a.isBlock(t.nextSibling)?((!M||9>M)&&(u=a.create("br"),t.parentNode.insertBefore(u,t)),l.setStartBefore(t),l.setEndBefore(t)):(l.setStartAfter(t),l.setEndAfter(t)):(l.setStart(t,0),l.setEnd(t,0));s.setRng(l),a.remove(u),s.scrollIntoView(t)}}function v(e){var t=l.forced_root_block;t&&t.toLowerCase()===e.tagName.toLowerCase()&&a.setAttribs(e,l.forced_root_block_attrs)}function y(e){var t=A,n,i,o,s=u.getTextInlineElements();if(e||"TABLE"==I?(n=a.create(e||z),v(n)):n=D.cloneNode(!1),o=n,l.keep_styles!==!1)do if(s[t.nodeName]){if("_mce_caret"==t.id)continue;i=t.cloneNode(!1),a.setAttrib(i,"id",""),n.hasChildNodes()?(i.appendChild(n.firstChild),n.appendChild(i)):(o=i,n.appendChild(i))}while(t=t.parentNode);return r||(o.innerHTML='<br data-mce-bogus="1">'),n}function b(t){var n,r,i;if(3==A.nodeType&&(t?B>0:B<A.nodeValue.length))return!1;if(A.parentNode==D&&W&&!t)return!0;if(t&&1==A.nodeType&&A==D.firstChild)return!0;if("TABLE"===A.nodeName||A.previousSibling&&"TABLE"==A.previousSibling.nodeName)return W&&!t||!W&&t;for(n=new e(A,D),3==A.nodeType&&(t&&0===B?n.prev():t||B!=A.nodeValue.length||n.next());r=n.current();){if(1===r.nodeType){if(!r.getAttribute("data-mce-bogus")&&(i=r.nodeName.toLowerCase(),d[i]&&"br"!==i))return!1}else if(3===r.nodeType&&!/^[ \t\r\n]*$/.test(r.nodeValue))return!1;t?n.prev():n.next()}return!0}function x(e,t){var n,r,o,s,l,c,d=z||"P";if(r=a.getParent(e,a.isBlock),c=i.getBody().nodeName.toLowerCase(),!r||!h(r)){if(r=r||R,!r.hasChildNodes())return n=a.create(d),v(n),r.appendChild(n),k.setStart(n,0),k.setEnd(n,0),n;for(s=e;s.parentNode!=r;)s=s.parentNode;for(;s&&!a.isBlock(s);)o=s,s=s.previousSibling;if(o&&u.isValidChild(c,d.toLowerCase())){for(n=a.create(d),v(n),o.parentNode.insertBefore(n,o),s=o;s&&!a.isBlock(s);)l=s.nextSibling,n.appendChild(s),s=l;k.setStart(e,t),k.setEnd(e,t)}}return e}function C(){function e(e){for(var t=O[e?"firstChild":"lastChild"];t&&1!=t.nodeType;)t=t[e?"nextSibling":"previousSibling"];return t===D}function t(){var e=O.parentNode;return/^(LI|DT|DD)$/.test(e.nodeName)?e:O}var n=O.parentNode.nodeName;/^(OL|UL|LI)$/.test(n)&&(z="LI"),H=z?y(z):a.create("BR"),e(!0)&&e()?"LI"==n?a.insertAfter(H,t()):a.replace(H,O):e(!0)?"LI"==n?(a.insertAfter(H,t()),H.appendChild(a.doc.createTextNode(" ")),H.appendChild(O)):O.parentNode.insertBefore(H,O):e()?(a.insertAfter(H,t()),p(H)):(O=t(),T=k.cloneRange(),T.setStartAfter(D),T.setEndAfter(O),P=T.extractContents(),"LI"==z&&"LI"==P.firstChild.nodeName?(H=P.firstChild,a.insertAfter(P,O)):(a.insertAfter(P,O),a.insertAfter(H,O))),a.remove(D),g(H),c.add()}function w(){i.execCommand("InsertLineBreak",!1,o)}function _(e){do 3===e.nodeType&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;while(e)}function E(e){var t=a.getRoot(),n,r;for(n=e;n!==t&&"false"!==a.getContentEditable(n);)"true"===a.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==t?r:t}function N(e){var t;r||(e.normalize(),t=e.lastChild,(!t||/^(left|right)$/gi.test(a.getStyle(t,"float",!0)))&&a.add(e,"br"))}function S(){H=/^(H[1-6]|PRE|FIGURE)$/.test(I)&&"HGROUP"!=F?y(z):y(),l.end_container_on_empty_block&&h(O)&&a.isEmpty(D)?H=a.split(O,D):a.insertAfter(H,D),g(H)}var k,T,R,A,B,D,M,L,H,P,O,I,F,z,W;if(k=s.getRng(!0),!o.isDefaultPrevented()){if(!k.collapsed)return void i.execCommand("Delete");if(new t(a).normalize(k),A=k.startContainer,B=k.startOffset,z=(l.force_p_newlines?"p":"")||l.forced_root_block,z=z?z.toUpperCase():"",M=a.doc.documentMode,L=o.shiftKey,1==A.nodeType&&A.hasChildNodes()&&(W=B>A.childNodes.length-1,A=A.childNodes[Math.min(B,A.childNodes.length-1)]||A,B=W&&3==A.nodeType?A.nodeValue.length:0),R=E(A)){if(c.beforeChange(),!a.isBlock(R)&&R!=a.getRoot())return void((!z||L)&&w());if((z&&!L||!z&&L)&&(A=x(A,B)),D=a.getParent(A,a.isBlock),O=D?a.getParent(D.parentNode,a.isBlock):null,I=D?D.nodeName.toUpperCase():"",F=O?O.nodeName.toUpperCase():"","LI"!=F||o.ctrlKey||(D=O,I=F),/^(LI|DT|DD)$/.test(I)){if(!z&&L)return void w();if(a.isEmpty(D))return void C()}if("PRE"==I&&l.br_in_pre!==!1){if(!L)return void w()}else if(!z&&!L&&"LI"!=I||z&&L)return void w();z&&D===i.getBody()||(z=z||"P",b()?S():b(!0)?(H=D.parentNode.insertBefore(y(),D),p(H),g(D)):(T=k.cloneRange(),T.setEndAfter(D),P=T.extractContents(),_(P),H=P.firstChild,a.insertAfter(P,D),m(H),N(D),a.isEmpty(H)?(a.remove(H),S()):g(H)),a.setAttrib(H,"id",""),i.fire("NewBlock",{newBlock:H}),c.add())}}}var a=i.dom,s=i.selection,l=i.settings,c=i.undoManager,u=i.schema,d=u.getNonEmptyElements(),f=u.getMoveCaretBeforeOnEnterElements();i.on("keydown",function(e){13==e.keyCode&&o(e)!==!1&&e.preventDefault()})}}),r(W,[],function(){return function(e){function t(){var t=i.getStart(),s=e.getBody(),l,c,u,d,f,h,p,m=-16777215,g,v,y,b,x;if(x=n.forced_root_block,t&&1===t.nodeType&&x){
-for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){c=l.startContainer,u=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(C){}}else l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),u=-1*y.move("character",m),y.collapsed||(y=l.duplicate(),y.collapse(!1),f=-1*y.move("character",m)-u);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,x.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){p=t,t=t.nextSibling,r.remove(p);continue}h||(h=r.create(x,e.settings.forced_root_block_attrs),t.parentNode.insertBefore(h,t),g=!0),p=t,t=t.nextSibling,h.appendChild(p)}else h=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(c,u),l.setEnd(d,f),i.setRng(l);else try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",u),f>0&&l.moveEnd("character",f),l.select()}catch(C){}e.nodeChanged()}}}var n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(V,[R,u,f,P,w,m],function(e,n,r,i,o,a){var s=r.each,l=r.extend,c=r.map,u=r.inArray,d=r.explode,f=n.gecko,h=n.ie,p=n.ie&&n.ie<11,m=!0,g=!1;return function(r){function v(e,t,n,i){var o,a,c=0;if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||i&&i.skip_focus||r.focus(),i=l({},i),i=r.fire("BeforeExecCommand",{command:e,ui:t,value:n}),i.isDefaultPrevented())return!1;if(a=e.toLowerCase(),o=L.exec[a])return o(a,t,n),r.fire("ExecCommand",{command:e,ui:t,value:n}),!0;if(s(r.plugins,function(i){return i.execCommand&&i.execCommand(e,t,n)?(r.fire("ExecCommand",{command:e,ui:t,value:n}),c=!0,!1):void 0}),c)return c;if(r.theme&&r.theme.execCommand&&r.theme.execCommand(e,t,n))return r.fire("ExecCommand",{command:e,ui:t,value:n}),!0;try{c=r.getDoc().execCommand(e,t,n)}catch(u){}return c?(r.fire("ExecCommand",{command:e,ui:t,value:n}),!0):!1}function y(e){var t;if(!r._isHidden()){if(e=e.toLowerCase(),t=L.state[e])return t(e);try{return r.getDoc().queryCommandState(e)}catch(n){}return!1}}function b(e){var t;if(!r._isHidden()){if(e=e.toLowerCase(),t=L.value[e])return t(e);try{return r.getDoc().queryCommandValue(e)}catch(n){}}}function x(e,t){t=t||"exec",s(e,function(e,n){s(n.toLowerCase().split(","),function(n){L[t][n]=e})})}function C(e,t,n){e=e.toLowerCase(),L.exec[e]=function(e,i,o,a){return t.call(n||r,i,o,a)}}function w(e){if(e=e.toLowerCase(),L.exec[e])return!0;try{return r.getDoc().queryCommandSupported(e)}catch(t){}return!1}function _(e,t,n){e=e.toLowerCase(),L.state[e]=function(){return t.call(n||r)}}function E(e,t,n){e=e.toLowerCase(),L.value[e]=function(){return t.call(n||r)}}function N(e){return e=e.toLowerCase(),!!L.exec[e]}function S(e,n,i){return n===t&&(n=g),i===t&&(i=null),r.getDoc().execCommand(e,n,i)}function k(e){return M.match(e)}function T(e,n){M.toggle(e,n?{value:n}:t),r.nodeChanged()}function R(e){P=D.getBookmark(e)}function A(){D.moveToBookmark(P)}var B,D,M,L={state:{},exec:{},value:{}},H=r.settings,P;r.on("PreInit",function(){B=r.dom,D=r.selection,H=r.settings,M=r.formatter}),l(this,{execCommand:v,queryCommandState:y,queryCommandValue:b,queryCommandSupported:w,addCommands:x,addCommand:C,addQueryStateHandler:_,addQueryValueHandler:E,hasCustomCommand:N}),x({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){r.undoManager.add()},"Cut,Copy,Paste":function(e){var t=r.getDoc(),i;try{S(e)}catch(o){i=m}if(i||!t.queryCommandSupported(e)){var a=r.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");n.mac&&(a=a.replace(/Ctrl\+/g,"\u2318+")),r.windowManager.alert(a)}},unlink:function(){if(D.isCollapsed()){var e=D.getNode();return void("A"==e.tagName&&r.dom.remove(e,!0))}M.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"==t&&(t="justify"),s("left,center,right,justify".split(","),function(e){t!=e&&M.remove("align"+e)}),"none"!=t&&(T("align"+t),v("mceRepaint"))},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;S(e),t=B.getParent(D.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(R(),B.split(n,t),A()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){T(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){T(e,n)},FontSize:function(e,t,n){var r,i;n>=1&&7>=n&&(i=d(H.font_size_style_values),r=d(H.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),T(e,n)},RemoveFormat:function(e){M.remove(e)},mceBlockQuote:function(){T("blockquote")},FormatBlock:function(e,t,n){return T(n||"p")},mceCleanup:function(){var e=D.getBookmark();r.setContent(r.getContent({cleanup:m}),{cleanup:m}),D.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var i=n||D.getNode();i!=r.getBody()&&(R(),r.dom.remove(i,m),A())},mceSelectNodeDepth:function(e,t,n){var i=0;B.getParent(D.getNode(),function(e){return 1==e.nodeType&&i++==n?(D.select(e),g):void 0},r.getBody())},mceSelectNode:function(e,t,n){D.select(n)},mceInsertContent:function(t,n,o){function a(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return n=D.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^&nbsp;/," "):t("previousSibling")||(e=e.replace(/^ /,"&nbsp;")),i<r.length?e=e.replace(/&nbsp;(<br>|)$/," "):t("nextSibling")||(e=e.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),e}function l(){var e,t,n;e=D.getRng(!0),t=e.startContainer,n=e.startOffset,3==t.nodeType&&e.collapsed&&("\xa0"===t.data[n]?(t.deleteData(n,1),/[\u00a0| ]$/.test(o)||(o+=" ")):"\xa0"===t.data[n-1]&&(t.deleteData(n-1,1),/[\u00a0| ]$/.test(o)||(o=" "+o)))}function c(e){if(_)for(x=e.firstChild;x;x=x.walk(!0))N[x.name]&&x.attr("data-mce-new","true")}function u(){if(_){var e=r.getBody(),t=new i(B);s(B.select("*[data-mce-new]"),function(n){n.removeAttribute("data-mce-new");for(var r=n.parentNode;r&&r!=e;r=r.parentNode)t.compare(r,n)&&B.remove(n,!0)})}}var d,f,p,m,g,v,y,b,x,C,w,_,E,N=r.schema.getTextInlineElements();"string"!=typeof o&&(_=o.merge,E=o.data,o=o.content),/^ | $/.test(o)&&(o=a(o)),d=r.parser,f=new e({},r.schema),w='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>',v={content:o,format:"html",selection:!0},r.fire("BeforeSetContent",v),o=v.content,-1==o.indexOf("{$caret}")&&(o+="{$caret}"),o=o.replace(/\{\$caret\}/,w),b=D.getRng();var S=b.startContainer||(b.parentElement?b.parentElement():null),k=r.getBody();S===k&&D.isCollapsed()&&B.isBlock(k.firstChild)&&B.isEmpty(k.firstChild)&&(b=B.createRng(),b.setStart(k.firstChild,0),b.setEnd(k.firstChild,0),D.setRng(b)),D.isCollapsed()||(r.getDoc().execCommand("Delete",!1,null),l()),p=D.getNode();var T={context:p.nodeName.toLowerCase(),data:E};if(g=d.parse(o,T),c(g),x=g.lastChild,"mce_marker"==x.attr("id"))for(y=x,x=x.prev;x;x=x.walk(!0))if(3==x.type||!B.isBlock(x.name)){r.schema.isValidChild(x.parent.name,"span")&&x.parent.insert(y,x,"br"===x.name);break}if(T.invalid){for(D.setContent(w),p=D.getNode(),m=r.getBody(),9==p.nodeType?p=x=m:x=p;x!==m;)p=x,x=x.parentNode;o=p==m?m.innerHTML:B.getOuterHTML(p),o=f.serialize(d.parse(o.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return f.serialize(g)}))),p==m?B.setHTML(m,o):B.setOuterHTML(p,o)}else o=f.serialize(g),x=p.firstChild,C=p.lastChild,!x||x===C&&"BR"===x.nodeName?B.setHTML(p,o):D.setContent(o);u(),y=B.get("mce_marker"),D.scrollIntoView(y),b=B.createRng(),x=y.previousSibling,x&&3==x.nodeType?(b.setStart(x,x.nodeValue.length),h||(C=y.nextSibling,C&&3==C.nodeType&&(x.appendData(C.data),C.parentNode.removeChild(C)))):(b.setStartBefore(y),b.setEndBefore(y)),B.remove(y),D.setRng(b),r.fire("SetContent",v),r.addVisual()},mceInsertRawHTML:function(e,t,n){D.setContent("tiny_mce_marker"),r.setContent(r.getContent().replace(/tiny_mce_marker/g,function(){return n}))},mceToggleFormat:function(e,t,n){T(n)},mceSetContent:function(e,t,n){r.setContent(n)},"Indent,Outdent":function(e){var t,n,i;t=H.indentation,n=/[a-z%]+$/i.exec(t),t=parseInt(t,10),y("InsertUnorderedList")||y("InsertOrderedList")?S(e):(H.forced_root_block||B.getParent(D.getNode(),B.isBlock)||M.apply("div"),s(D.getSelectedBlocks(),function(o){if("LI"!=o.nodeName){var a=r.getParam("indent_use_margin",!1)?"margin":"padding";a+="rtl"==B.getStyle(o,"direction",!0)?"Right":"Left","outdent"==e?(i=Math.max(0,parseInt(o.style[a]||0,10)-t),B.setStyle(o,a,i?i+n:"")):(i=parseInt(o.style[a]||0,10)+t+n,B.setStyle(o,a,i))}}))},mceRepaint:function(){if(f)try{R(m),D.getSel()&&D.getSel().selectAllChildren(r.getBody()),D.collapse(m),A()}catch(e){}},InsertHorizontalRule:function(){r.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){r.hasVisual=!r.hasVisual,r.addVisual()},mceReplaceContent:function(e,t,n){r.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,D.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=B.getParent(D.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||M.remove("link"),n.href&&M.apply("link",n,r)},selectAll:function(){var e=B.getRoot(),t;D.getRng().setStart?(t=B.createRng(),t.setStart(e,0),t.setEnd(e,e.childNodes.length),D.setRng(t)):(t=D.getRng(),t.item||(t.moveToElementText(e),t.select()))},"delete":function(){S("Delete");var e=r.getBody();B.isEmpty(e)&&(r.setContent(""),e.firstChild&&B.isBlock(e.firstChild)?r.selection.setCursorLocation(e.firstChild,0):r.selection.setCursorLocation(e,0))},mceNewDocument:function(){r.setContent("")},InsertLineBreak:function(e,t,n){function i(){for(var e=new a(h,v),t,n=r.schema.getNonEmptyElements();t=e.next();)if(n[t.nodeName.toLowerCase()]||t.length>0)return!0}var s=n,l,c,u,d=D.getRng(!0);new o(B).normalize(d);var f=d.startOffset,h=d.startContainer;if(1==h.nodeType&&h.hasChildNodes()){var g=f>h.childNodes.length-1;h=h.childNodes[Math.min(f,h.childNodes.length-1)]||h,f=g&&3==h.nodeType?h.nodeValue.length:0}var v=B.getParent(h,B.isBlock),y=v?v.nodeName.toUpperCase():"",b=v?B.getParent(v.parentNode,B.isBlock):null,x=b?b.nodeName.toUpperCase():"",C=s&&s.ctrlKey;"LI"!=x||C||(v=b,y=x),h&&3==h.nodeType&&f>=h.nodeValue.length&&(p||i()||(l=B.create("br"),d.insertNode(l),d.setStartAfter(l),d.setEndAfter(l),c=!0)),l=B.create("br"),d.insertNode(l);var w=B.doc.documentMode;return p&&"PRE"==y&&(!w||8>w)&&l.parentNode.insertBefore(B.doc.createTextNode("\r"),l),u=B.create("span",{},"&nbsp;"),l.parentNode.insertBefore(u,l),D.scrollIntoView(u),B.remove(u),c?(d.setStartBefore(l),d.setEndBefore(l)):(d.setStartAfter(l),d.setEndAfter(l)),D.setRng(d),r.undoManager.add(),m}}),x({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=D.isCollapsed()?[B.getParent(D.getNode(),B.isBlock)]:D.getSelectedBlocks(),r=c(n,function(e){return!!M.matchNode(e,t)});return-1!==u(r,m)},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return k(e)},mceBlockQuote:function(){return k("blockquote")},Outdent:function(){var e;if(H.inline_styles){if((e=B.getParent(D.getStart(),B.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return m;if((e=B.getParent(D.getEnd(),B.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return m}return y("InsertUnorderedList")||y("InsertOrderedList")||!H.inline_styles&&!!B.getParent(D.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=B.getParent(D.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),x({"FontSize,FontName":function(e){var t=0,n;return(n=B.getParent(D.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),x({Undo:function(){r.undoManager.undo()},Redo:function(){r.undoManager.redo()}})}}),r(U,[f],function(e){function t(e,o){var a=this,s,l;if(e=r(e),o=a.settings=o||{},s=o.base_uri,/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))return void(a.source=e);var c=0===e.indexOf("//");0!==e.indexOf("/")||c||(e=(s?s.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(l=o.base_uri?o.base_uri.path:new t(location.href).directory,""===o.base_uri.protocol?e="//mce_host"+a.toAbsPath(l,e):(e=/([^#?]*)([#?]?.*)/.exec(e),e=(s&&s.protocol||"http")+"://mce_host"+a.toAbsPath(l,e[1])+e[2])),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(i,function(t,n){var r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),a[t]=r}),s&&(a.protocol||(a.protocol=s.protocol),a.userInfo||(a.userInfo=s.userInfo),a.port||"mce_host"!==a.host||(a.port=s.port),a.host&&"mce_host"!==a.host||(a.host=s.host),a.source=""),c&&(a.protocol="")}var n=e.each,r=e.trim,i="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),o={ftp:21,http:80,https:443,mailto:25};return t.prototype={setPath:function(e){var t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var n=this,r;if("./"===e)return e;if(e=new t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol&&""!==e.protocol)return e.getURI();var i=n.getURI(),o=e.getURI();return i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return e=new t(e,{base_uri:this}),e.getURI(n&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=o[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;a>o;o++)if(o>=n.length||e[o]!=n[o]){r=o+1;break}if(e.length<n.length)for(o=0,a=n.length;a>o;o++)if(o>=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return t;for(o=0,a=e.length-(r-1);a>o;o++)i+="../";for(o=r-1,a=n.length;a>o;o++)i+=o!=r-1?"/"+n[o]:n[o];return i},toAbsPath:function(e,t){var r,i=0,o=[],a,s;for(a=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),n(e,function(e){e&&o.push(e)}),e=o,r=t.length-1,o=[];r>=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return r=e.length-i,s=0>=r?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var t,n=this;return(!n.source||e)&&(t="",e||(t+=n.protocol?n.protocol+"://":"//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}},t}),r($,[f],function(e){function t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function t(){var e,t,n,r=this;if(!o&&(r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function a(){return this}function s(e,t){return function(){var n=this,r=n._super,i;return n._super=c[e],i=t.apply(n,arguments),n._super=r,i}}var l=this,c=l.prototype,u,d,f;o=!0,u=new l,o=!1,e.Mixins&&(n(e.Mixins,function(t){t=t;for(var n in t)"init"!==n&&(e[n]=t[n])}),c.Mixins&&(e.Mixins=c.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var n="_"+t;e[t]=function(e){var t=this,r;return e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&c.Defaults&&(e.Defaults=r({},c.Defaults,e.Defaults));for(d in e)f=e[d],"function"==typeof f&&c[d]?u[d]=s(d,f):u[d]=f;return t.prototype=u,t.constructor=t,t.extend=i,t},t}),r(q,[f],function(e){function t(t){function n(){return!1}function r(){return!0}function i(e,i){var o,s,l,c;if(e=e.toLowerCase(),i=i||{},i.type=e,i.target||(i.target=u),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=r},i.stopPropagation=function(){i.isPropagationStopped=r},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=r},i.isDefaultPrevented=n,i.isPropagationStopped=n,i.isImmediatePropagationStopped=n),t.beforeFire&&t.beforeFire(i),o=d[e])for(s=0,l=o.length;l>s;s++){if(c=o[s],c.once&&a(e,c.func),i.isImmediatePropagationStopped())return i.stopPropagation(),i;if(c.func.call(u,i)===!1)return i.preventDefault(),i}return i}function o(t,r,i,o){var a,s,l;if(r===!1&&(r=n),r)for(r={func:r},o&&e.extend(r,o),s=t.toLowerCase().split(" "),l=s.length;l--;)t=s[l],a=d[t],a||(a=d[t]=[],f(t,!0)),i?a.unshift(r):a.push(r);return c}function a(e,t){var n,r,i,o,a;if(e)for(o=e.toLowerCase().split(" "),n=o.length;n--;){if(e=o[n],r=d[e],!e){for(i in d)f(i,!1),delete d[i];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),d[e]=r);else r.length=0;r.length||(f(e,!1),delete d[e])}}else{for(e in d)f(e,!1);d={}}return c}function s(e,t,n){return o(e,t,n,{once:!0})}function l(e){return e=e.toLowerCase(),!(!d[e]||0===d[e].length)}var c=this,u,d={},f;t=t||{},u=t.scope||c,f=t.toggleEvent||n,c.fire=i,c.on=o,c.off=a,c.once=s,c.has=l}var n=e.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchend"," ");return t.isNative=function(e){return!!n[e.toLowerCase()]},t}),r(j,[],function(){function e(e){this.create=e.create}return e.create=function(t,n){return new e({create:function(e,r){function i(t){e.set(r,t.value)}function o(e){t.set(n,e.value)}var a;return e.on("change:"+r,o),t.on("change:"+n,i),a=e._bindings,a||(a=e._bindings=[],e.on("destroy",function(){for(var e=a.length;e--;)a[e]()})),a.push(function(){t.off("change:"+n,i)}),t.get(n)}})},e}),r(K,[q],function(e){function t(t){return t._eventDispatcher||(t._eventDispatcher=new e({scope:t,toggleEvent:function(n,r){e.isNative(n)&&t.toggleNativeEvent&&t.toggleNativeEvent(n,r)}})),t._eventDispatcher}return{fire:function(e,n,r){var i=this;if(i.removed&&"remove"!==e)return n;if(n=t(i).fire(e,n,r),r!==!1&&i.parent)for(var o=i.parent();o&&!n.isPropagationStopped();)o.fire(e,n,!1),o=o.parent();return n},on:function(e,n,r){return t(this).on(e,n,r)},off:function(e,n){return t(this).off(e,n)},once:function(e,n){return t(this).once(e,n)},hasEventListeners:function(e){return t(this).has(e)}}}),r(Y,[j,K,$,f],function(e,t,n,r){function i(e){return e.nodeType>0}function o(e,t){var n,a;if(e===t)return!0;if(null===e||null===t)return e===t;if("object"!=typeof e||"object"!=typeof t)return e===t;if(r.isArray(t)){if(e.length!==t.length)return!1;for(n=e.length;n--;)if(!o(e[n],t[n]))return!1}if(i(e)||i(t))return e===t;a={};for(n in t){if(!o(e[n],t[n]))return!1;a[n]=!0}for(n in e)if(!a[n]&&!o(e[n],t[n]))return!1;return!0}return n.extend({Mixins:[t],init:function(t){var n,r;t=t||{};for(n in t)r=t[n],r instanceof e&&(t[n]=r.create(this,n));this.data=t},set:function(t,n){var r,i,a=this.data[t];if(n instanceof e&&(n=n.create(this,t)),"object"==typeof t){for(r in t)this.set(r,t[r]);return this}return o(a,n)||(this.data[t]=n,i={target:this,name:t,value:n,oldValue:a},this.fire("change:"+t,i),this.fire("change",i)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(t){return e.create(this,t)},destroy:function(){this.fire("destroy")}})}),r(G,[$],function(e){function t(e){for(var t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete t[n].__checked;return t}var n=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i=/^\s*|\s*$/g,o,a=e.extend({init:function(e){function t(e){return e?(e=e.toLowerCase(),function(t){return"*"===e||t.type===e}):void 0}function o(e){return e?function(t){return t._name===e}:void 0}function a(e){return e?(e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.classes.contains(e[n]))return!1;return!0}):void 0}function s(e,t,n){return e?function(r){var i=r[e]?r[e]():"";return t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?(" "+i+" ").indexOf(" "+n+" ")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t?i.substr(i.length-n.length)===n:!1:!!n}:void 0}function l(e){var t;return e?(e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=u(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?n%2===0:"odd"===e?n%2===1:t[e]?t[e]():!1})):void 0}function c(e,r,c){function u(e){e&&r.push(e)}var d;return d=n.exec(e.replace(i,"")),u(t(d[1])),u(o(d[2])),u(a(d[3])),u(s(d[4],d[5],d[6])),u(l(d[7])),r.psuedo=!!d[7],r.direct=c,r}function u(e,t){var n=[],i,o,a;do if(r.exec(""),o=r.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){i=o[3];break}while(o);for(i&&u(i,t),e=[],a=0;a<n.length;a++)">"!=n[a]&&e.push(c(n[a],[],">"===n[a-1]));return t.push(e),t}var d=this.match;this._selectors=u(e,[])},match:function(e,t){var n,r,i,o,a,s,l,c,u,d,f,h,p;for(t=t||this._selectors,n=0,r=t.length;r>n;n++){for(a=t[n],o=a.length,p=e,h=0,i=o-1;i>=0;i--)for(c=a[i];p;){if(c.psuedo)for(f=p.parent().items(),u=d=f.length;u--&&f[u]!==p;);for(s=0,l=c.length;l>s;s++)if(!c[s](p,u,d)){s=l+1;break}if(s===l){h++;break}if(i===o-1)break;p=p.parent()}if(h===o)return!0}return!1},find:function(e){function n(e,t,i){var o,a,s,l,c,u=t[i];for(o=0,a=e.length;a>o;o++){for(c=e[o],s=0,l=u.length;l>s;s++)if(!u[s](c,o,a)){s=l+1;break}if(s===l)i==t.length-1?r.push(c):c.items&&n(c.items(),t,i+1);else if(u.direct)return;c.items&&n(c.items(),t,i)}}var r=[],i,s,l=this._selectors;if(e.items){for(i=0,s=l.length;s>i;i++)n(e.items(),l[i],0);s>1&&(r=t(r))}return o||(o=a.Collection),new o(r)}});return a}),r(X,[f,G,$],function(e,t,n){var r,i,o=Array.prototype.push,a=Array.prototype.slice;return i={length:0,init:function(e){e&&this.add(e)},add:function(t){var n=this;return e.isArray(t)?o.apply(n,t):t instanceof r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;n>r;r++)delete t[r];return t},filter:function(e){var n=this,i,o,a=[],s,l;for("string"==typeof e?(e=new t(e),l=function(t){return e.match(t)}):l=e,i=0,o=n.length;o>i;i++)s=n[i],l(s)&&a.push(s);return new r(a)},slice:function(){return new r(a.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(t){return e.each(this,t),this},toArray:function(){return e.toArray(this)},indexOf:function(e){for(var t=this,n=t.length;n--&&t[n]!==e;);return n},reverse:function(){return new r(e.toArray(this).reverse())},hasClass:function(e){return this[0]?this[0].classes.contains(e):!1},prop:function(e,t){var n=this,r,i;return t!==r?(n.each(function(n){n[e]&&n[e](t)}),n):(i=n[0],i&&i[e]?i[e]():void 0)},exec:function(t){var n=this,r=e.toArray(arguments).slice(1);return n.each(function(e){e[t]&&e[t].apply(e,r)}),n},remove:function(){for(var e=this.length;e--;)this[e].remove();return this},addClass:function(e){return this.each(function(t){t.classes.add(e)})},removeClass:function(e){return this.each(function(t){t.classes.remove(e)})}},e.each("fire on off show hide append prepend before after reflow".split(" "),function(t){i[t]=function(){var n=e.toArray(arguments);return this.each(function(e){t in e&&e[t].apply(e,n)}),this}}),e.each("text name disabled active selected checked visible parent value data".split(" "),function(e){i[e]=function(t){return this.prop(e,t)}}),r=n.extend(i),t.Collection=r,r}),r(J,[f,b],function(e,t){var n=0;return{id:function(){return"mceu_"+n++},createFragment:function(e){return t.DOM.createFragment(e)},getWindowSize:function(){return t.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var r=e.getBoundingClientRect();t=Math.max(r.width||r.right-r.left,e.offsetWidth),n=Math.max(r.height||r.bottom-r.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,n){return t.DOM.getPos(e,n)},getViewPort:function(e){return t.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,n){return t.DOM.addClass(e,n)},removeClass:function(e,n){return t.DOM.removeClass(e,n)},hasClass:function(e,n){return t.DOM.hasClass(e,n)},toggleClass:function(e,n,r){return t.DOM.toggleClass(e,n,r)},css:function(e,n,r){return t.DOM.setStyle(e,n,r)},getRuntimeStyle:function(e,n){return t.DOM.getStyle(e,n,!0)},on:function(e,n,r,i){return t.DOM.bind(e,n,r,i)},off:function(e,n,r){return t.DOM.unbind(e,n,r)},fire:function(e,n,r){return t.DOM.fire(e,n,r)},innerHtml:function(e,n){t.DOM.setHTML(e,n)}}}),r(Q,[],function(){return{parseBox:function(e){var t,n=10;if(e)return"number"==typeof e?(e=e||0,{top:e,left:e,bottom:e,right:e}):(e=e.split(" "),t=e.length,1===t?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],n)||0,right:parseInt(e[1],n)||0,bottom:parseInt(e[2],n)||0,left:parseInt(e[3],n)||0})},measureBox:function(e,t){function n(t){var n=document.defaultView;return n?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),n.getComputedStyle(e,null).getPropertyValue(t)):e.currentStyle[t]}function r(e){var t=parseFloat(n(e),10);return isNaN(t)?0:t}return{top:r(t+"TopWidth"),right:r(t+"RightWidth"),bottom:r(t+"BottomWidth"),left:r(t+"LeftWidth")}}}}),r(Z,[f],function(e){function t(){}function n(e){this.cls=[],this.cls._map={},this.onchange=e||t,this.prefix=""}return e.extend(n.prototype,{add:function(e){return e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){for(var t=0;t<this.cls.length&&this.cls[t]!==e;t++);this.cls.splice(t,1),delete this.cls._map[e],this._change()}return this},toggle:function(e,t){var n=this.contains(e);return n!==t&&(n?this.remove(e):this.add(e),this._change()),this},contains:function(e){return!!this.cls._map[e]},_change:function(){delete this.clsValue,this.onchange.call(this)}}),n.prototype.toString=function(){var e;if(this.clsValue)return this.clsValue;e="";for(var t=0;t<this.cls.length;t++)t>0&&(e+=" "),e+=this.prefix+this.cls[t];return e},n}),r(ee,[],function(){function e(e,t){function n(e){window.setTimeout(e,0)}var r,i=window.requestAnimationFrame,o=["ms","moz","webkit"];for(r=0;r<o.length&&!i;r++)i=window[o[r]+"RequestAnimationFrame"];i||(i=n),i(e,t)}var t={},n;return{add:function(r){var i=r.parent();if(i){if(!i._layout||i._layout.isNative())return;t[i._id]||(t[i._id]=i),n||(n=!0,e(function(){var e,r;n=!1;for(e in t)r=t[e],r.state.get("rendered")&&r.reflow();t={}},document.body))}},remove:function(e){t[e._id]&&delete t[e._id]}}}),r(te,[$,f,q,Y,X,J,h,Q,Z,ee],function(e,t,n,r,i,o,a,s,l,c){function u(e){return e._eventDispatcher||(e._eventDispatcher=new n({scope:e,toggleEvent:function(t,r){r&&n.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e.state.get("rendered")&&d(e))}})),e._eventDispatcher}function d(e){function t(t){var n=e.getParentCtrl(t.target);n&&n.fire(t.type,t)}function n(){var e=c._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),c._lastHoverCtrl=null)}function r(t){var n=e.getParentCtrl(t.target),r=c._lastHoverCtrl,i=0,o,a,s;if(n!==r){if(c._lastHoverCtrl=n,a=n.parents().toArray().reverse(),a.push(n),r){for(s=r.parents().toArray().reverse(),s.push(r),i=0;i<s.length&&a[i]===s[i];i++);for(o=s.length-1;o>=i;o--)r=s[o],r.fire("mouseleave",{target:r.getEl()})}for(o=i;o<a.length;o++)n=a[o],n.fire("mouseenter",{target:n.getEl()})}}function i(t){t.preventDefault(),"mousewheel"==t.type?(t.deltaY=-1/40*t.wheelDelta,t.wheelDeltaX&&(t.deltaX=-1/40*t.wheelDeltaX)):(t.deltaX=0,t.deltaY=t.detail),t=e.fire("wheel",t)}var o,s,l,c,u,d;if(u=e._nativeEvents){for(l=e.parents().toArray(),l.unshift(e),o=0,s=l.length;!c&&s>o;o++)c=l[o]._eventsRoot;for(c||(c=l[l.length-1]||e),e._eventsRoot=c,s=o,o=0;s>o;o++)l[o]._eventsRoot=c;var p=c._delegates;p||(p=c._delegates={});for(d in u){if(!u)return!1;"wheel"!==d||h?("mouseenter"===d||"mouseleave"===d?c._hasMouseEnter||(a(c.getEl()).on("mouseleave",n).on("mouseover",r),c._hasMouseEnter=1):p[d]||(a(c.getEl()).on(d,t),p[d]=!0),u[d]=!1):f?a(e.getEl()).on("mousewheel",i):a(e.getEl()).on("DOMMouseScroll",i)}}}var f="onmousewheel"in document,h=!1,p="mce-",m,g=0,v={Statics:{classPrefix:p},isRtl:function(){return m.rtl},classPrefix:p,init:function(e){function n(e){var t;for(e=e.split(" "),t=0;t<e.length;t++)i.classes.add(e[t])}var i=this,o,c;i.settings=e=t.extend({},i.Defaults,e),i._id=e.id||"mceu_"+g++,i._aria={role:e.role},i._elmCache={},i.$=a,i.state=new r({visible:!0,active:!1,disabled:!1,value:""}),i.data=new r(e.data),i.classes=new l(function(){i.state.get("rendered")&&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,o=e.classes,o&&(i.Defaults&&(c=i.Defaults.classes,c&&o!=c&&n(c)),n(o)),t.each("title text name visible disabled active value".split(" "),function(t){t in e&&i[t](e[t])}),i.on("click",function(){return i.disabled()?!1:void 0}),i.settings=e,i.borderBox=s.parseBox(e.border),i.paddingBox=s.parseBox(e.padding),i.marginBox=s.parseBox(e.margin),e.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){return document.body},getParentCtrl:function(e){for(var t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return t},initLayoutRect:function(){var e=this,t=e.settings,n,r,i=e.getEl(),a,l,c,u,d,f,h,p;n=e.borderBox=e.borderBox||s.measureBox(i,"border"),e.paddingBox=e.paddingBox||s.measureBox(i,"padding"),e.marginBox=e.marginBox||s.measureBox(i,"margin"),p=o.getSize(i),f=t.minWidth,h=t.minHeight,c=f||p.width,u=h||p.height,a=t.width,l=t.height,d=t.autoResize,d="undefined"!=typeof d?d:!a&&!l,a=a||c,l=l||u;var m=n.left+n.right,g=n.top+n.bottom,v=t.maxWidth||65535,y=t.maxHeight||65535;return e._layoutRect=r={x:t.x||0,y:t.y||0,w:a,h:l,deltaW:m,deltaH:g,contentW:a-m,contentH:l-g,innerW:a-m,innerH:l-g,startMinWidth:f||0,startMinHeight:h||0,minW:Math.min(c,v),minH:Math.min(u,y),maxW:v,maxH:y,autoResize:d,scrollW:0},e._lastLayoutRect={},r},layoutRect:function(e){var t=this,n=t._layoutRect,r,i,o,a,s,l;return n||(n=t.initLayoutRect()),e?(o=n.deltaW,a=n.deltaH,e.x!==s&&(n.x=e.x),e.y!==s&&(n.y=e.y),e.minW!==s&&(n.minW=e.minW),e.minH!==s&&(n.minH=e.minH),i=e.w,i!==s&&(i=i<n.minW?n.minW:i,i=i>n.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=i<n.minH?n.minH:i,i=i>n.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=i<n.minW-o?n.minW-o:i,i=i>n.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=i<n.minH-a?n.minH-a:i,i=i>n.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,(r.x!==n.x||r.y!==n.y||r.w!==n.w||r.h!==n.h)&&(l=m.repaintControls,l&&l.map&&!l.map[t._id]&&(l.push(t),l.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var e=this,t,n,r,i,o,a=0,s=0,l,c,u;c=document.createRange?function(e){return e}:Math.round,t=e.getEl().style,i=e._layoutRect,l=e._lastRepaintRect||{},o=e.borderBox,a=o.left+o.right,s=o.top+o.bottom,i.x!==l.x&&(t.left=c(i.x)+"px",l.x=i.x),i.y!==l.y&&(t.top=c(i.y)+"px",l.y=i.y),i.w!==l.w&&(u=c(i.w-a),t.width=(u>=0?u:0)+"px",l.w=i.w),i.h!==l.h&&(u=c(i.h-s),t.height=(u>=0?u:0)+"px",l.h=i.h),e._hasBody&&i.innerW!==l.innerW&&(u=c(i.innerW),r=e.getEl("body"),r&&(n=r.style,n.width=(u>=0?u:0)+"px"),l.innerW=i.innerW),
-e._hasBody&&i.innerH!==l.innerH&&(u=c(i.innerH),r=r||e.getEl("body"),r&&(n=n||r.style,n.height=(u>=0?u:0)+"px"),l.innerH=i.innerH),e._lastRepaintRect=l,e.fire("repaint",{},!1)},on:function(e,t){function n(e){var t,n;return"string"!=typeof e?e:function(i){return t||r.parentsAndSelf().each(function(r){var i=r.settings.callbacks;return i&&(t=i[e])?(n=r,!1):void 0}),t?t.call(n,i):(i.action=e,void this.fire("execute",i))}}var r=this;return u(r).on(e,n(t)),r},off:function(e,t){return u(this).off(e,t),this},fire:function(e,t,n){var r=this;if(t=t||{},t.control||(t.control=r),t=u(r).fire(e,t),n!==!1&&r.parent)for(var i=r.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return u(this).has(e)},parents:function(e){var t=this,n,r=new i;for(n=t.parent();n;n=n.parent())r.add(n);return e&&(r=r.filter(e)),r},parentsAndSelf:function(e){return new i(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=a("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,r=n.getEl(n.ariaTarget);return"undefined"==typeof t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&r.setAttribute("role"==e?e:"aria-"+e,t),n)},encode:function(e,t){return t!==!1&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return m.translate?m.translate(e):e},before:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var e=this,t=e.getEl(),n=e.parent(),r,i;if(e.items){var o=e.items().toArray();for(i=o.length;i--;)o[i].remove()}n&&n.items&&(r=[],n.items().each(function(t){t!==e&&r.push(t)}),n.items().set(r),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&a(t).off();var s=e.getRoot().controlIdLookup;return s&&delete s[e._id],t&&t.parentNode&&t.parentNode.removeChild(t),e.state.set("rendered",!1),e.state.destroy(),e.fire("remove"),e},renderBefore:function(e){return a(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return a(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var e=this,t=e.settings,n,r,i,o,s;e.$el=a(e.getEl()),e.state.set("rendered",!0);for(o in t)0===o.indexOf("on")&&e.on(o.substr(2),t[o]);if(e._eventsRoot){for(i=e.parent();!s&&i;i=i.parent())s=i._eventsRoot;if(s)for(o in s._nativeEvents)e._nativeEvents[o]=!0}d(e),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e.settings.border&&(r=e.borderBox,e.$el.css({"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left}));var l=e.getRoot();l.controlIdLookup||(l.controlIdLookup={}),l.controlIdLookup[e._id]=e;for(var u in e._aria)e.aria(u,e._aria[u]);e.state.get("visible")===!1&&(e.getEl().style.display="none"),e.bindStates(),e.state.on("change:visible",function(t){var n=t.value,r;e.state.get("rendered")&&(e.getEl().style.display=n===!1?"none":"",e.getEl().getBoundingClientRect()),r=e.parent(),r&&(r._lastRect=null),e.fire(n?"show":"hide"),c.add(e)}),e.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){function t(e,t){var n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var n=this.getEl(),r=n.parentNode,i,o,a,s,l,c,u=t(n,r);return i=u.x,o=u.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,c=r.clientHeight,"end"==e?(i-=l-a,o-=c-s):"center"==e&&(i-=l/2-a/2,o-=c/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},getRoot:function(){for(var e=this,t,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var r=n.length;r--;)n[r].rootControl=t;return t},reflow:function(){c.remove(this);var e=this.parent();return e._layout&&!e._layout.isNative()&&e.reflow(),this}};return t.each("text title visible disabled active value".split(" "),function(e){v[e]=function(t){return 0===arguments.length?this.state.get(e):("undefined"!=typeof t&&this.state.set(e,t),this)}}),m=e.extend(v)}),r(ne,[],function(){var e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var i,o,a;if(!t){a=tinymce.ui;for(o in a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new Error("Could not find control by type: "+n);return i=new i(r),i.type=n,i}}}),r(re,[],function(){return function(e){function t(e){return e&&1===e.nodeType}function n(e){return e=e||x,t(e)?e.getAttribute("role"):null}function r(e){for(var t,r=e||x;r=r.parentNode;)if(t=n(r))return t}function i(e){var n=x;return t(n)?n.getAttribute("aria-"+e):void 0}function o(e){var t=e.tagName.toUpperCase();return"INPUT"==t||"TEXTAREA"==t}function a(e){return o(e)&&!e.hidden?!0:/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell)$/.test(n(e))?!0:!1}function s(e){function t(e){if(1==e.nodeType&&"none"!=e.style.display){a(e)&&n.push(e);for(var r=0;r<e.childNodes.length;r++)t(e.childNodes[r])}}var n=[];return t(e||b.getEl()),n}function l(e){var t,n;e=e||C,n=e.parents().toArray(),n.unshift(e);for(var r=0;r<n.length&&(t=n[r],!t.settings.ariaRoot);r++);return t}function c(e){var t=l(e),n=s(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?u(t.lastAriaIndex,n):u(0,n)}function u(e,t){return 0>e?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function d(e,t){var n=-1,r=l();t=t||s(r.getEl());for(var i=0;i<t.length;i++)t[i]===x&&(n=i);n+=e,r.lastAriaIndex=u(n,t)}function f(){var e=r();"tablist"==e?d(-1,s(x.parentNode)):C.parent().submenu?v():d(-1)}function h(){var e=n(),t=r();"tablist"==t?d(1,s(x.parentNode)):"menuitem"==e&&"menu"==t&&i("haspopup")?y():d(1)}function p(){d(-1)}function m(){var e=n(),t=r();"menuitem"==e&&"menubar"==t?y():"button"==e&&i("haspopup")?y({key:"down"}):d(1)}function g(e){var t=r();if("tablist"==t){var n=s(C.getEl("body"))[0];n&&n.focus()}else d(e.shiftKey?-1:1)}function v(){C.fire("cancel")}function y(e){e=e||{},C.fire("click",{target:x,aria:e})}var b=e.root,x,C;try{x=document.activeElement}catch(w){x=document.body}return C=b.getParentCtrl(x),b.on("keydown",function(e){function t(e,t){o(x)||t(e)!==!1&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,f);break;case 39:t(e,h);break;case 38:t(e,p);break;case 40:t(e,m);break;case 27:v();break;case 14:case 13:case 32:t(e,y);break;case 9:g(e)!==!1&&e.preventDefault()}}),b.on("focusin",function(e){x=e.target,C=e.control}),{focusFirst:c}}}),r(ie,[te,X,G,ne,re,f,h,Z,ee],function(e,t,n,r,i,o,a,s,l){var c={};return e.extend({init:function(e){var n=this;n._super(e),e=n.settings,e.fixed&&n.state.set("fixed",!0),n._items=new t,n.isRtl()&&n.classes.add("rtl"),n.bodyClasses=new s(function(){n.state.get("rendered")&&(n.getEl("body").className=this.toString())}),n.bodyClasses.prefix=n.classPrefix,n.classes.add("container"),n.bodyClasses.add("container-body"),e.containerCls&&n.classes.add(e.containerCls),n._layout=r.create((e.layout||"")+"layout"),n.settings.items?n.add(n.settings.items):n.add(n.render()),n._hasBody=!0},items:function(){return this._items},find:function(e){return e=c[e]=c[e]||new n(e),e.find(this)},add:function(e){var t=this;return t.items().add(t.create(e)).parent(t),t},focus:function(e){var t=this,n,r,i;return e&&(r=t.keyboardNav||t.parents().eq(-1)[0].keyboardNav)?void r.focusFirst(t):(i=t.find("*"),t.statusbar&&i.add(t.statusbar.items()),i.each(function(e){return e.settings.autofocus?(n=null,!1):void(e.canFocus&&(n=n||e))}),n&&n.focus(),t)},replace:function(e,t){for(var n,r=this.items(),i=r.length;i--;)if(r[i]===e){r[i]=t;break}i>=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var n=this,i,a=[];return o.isArray(t)||(t=[t]),o.each(t,function(t){t&&(t instanceof e||("string"==typeof t&&(t={type:t}),i=o.extend({},n.settings.defaults,t),t.type=i.type=i.type||t.type||n.settings.defaultType||(i.defaults?i.defaults.type:null),t=r.create(i)),a.push(t))}),a},renderNew:function(){var e=this;return e.items().each(function(t,n){var r;t.parent(e),t.state.get("rendered")||(r=e.getEl("body"),r.hasChildNodes()&&n<=r.childNodes.length-1?a(r.childNodes[n]).before(t.renderHtml()):a(r).append(t.renderHtml()),t.postRender(),l.add(t))}),e._layout.applyClasses(e.items().filter(":visible")),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){var t=this;return t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var r=this,i,o,a;return e=r.create(e),i=r.items(),!n&&t<i.length-1&&(t+=1),t>=0&&t<i.length&&(o=i.slice(0,t).toArray(),a=i.slice(t).toArray(),i.set(o.concat(e,a))),r.renderNew()},fromJSON:function(e){var t=this;for(var n in e)t.find("#"+n).value(e[n]);return t},toJSON:function(){var e=this,t={};return e.find("*").each(function(e){var n=e.name(),r=e.value();n&&"undefined"!=typeof r&&(t[n]=r)}),t},renderHtml:function(){var e=this,t=e._layout,n=this.settings.role;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this,t;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e.state.set("rendered",!0),e.settings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=new i({root:e})),e},initLayoutRect:function(){var e=this,t=e._super();return e._layout.recalc(e),t},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;return n&&n.w==t.w&&n.h==t.h?void 0:(e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0)},reflow:function(){var t;if(l.remove(this),this.visible()){for(e.repaintControls=[],e.repaintControls.map={},this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return this}})}),r(oe,[h],function(e){function t(e){var t,n,r,i,o,a,s,l,c=Math.max;return t=e.documentElement,n=e.body,r=c(t.scrollWidth,n.scrollWidth),i=c(t.clientWidth,n.clientWidth),o=c(t.offsetWidth,n.offsetWidth),a=c(t.scrollHeight,n.scrollHeight),s=c(t.clientHeight,n.clientHeight),l=c(t.offsetHeight,n.offsetHeight),{width:o>r?i:r,height:l>a?s:a}}function n(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<t.length;n++)e[t[n]]=e.changedTouches[0][t[n]]}return function(r,i){function o(){return s.getElementById(i.handle||r)}var a,s=i.document||document,l,c,u,d,f,h;i=i||{},c=function(r){var c=t(s),p,m;n(r),r.preventDefault(),l=r.button,p=o(),f=r.screenX,h=r.screenY,m=window.getComputedStyle?window.getComputedStyle(p,null).getPropertyValue("cursor"):p.runtimeStyle.cursor,a=e("<div>").css({position:"absolute",top:0,left:0,width:c.width,height:c.height,zIndex:2147483647,opacity:1e-4,cursor:m}).appendTo(s.body),e(s).on("mousemove touchmove",d).on("mouseup touchend",u),i.start(r)},d=function(e){return n(e),e.button!==l?u(e):(e.deltaX=e.screenX-f,e.deltaY=e.screenY-h,e.preventDefault(),void i.drag(e))},u=function(t){n(t),e(s).off("mousemove touchmove",d).off("mouseup touchend",u),a.remove(),i.stop&&i.stop(t)},this.destroy=function(){e(o()).off()},e(o()).on("mousedown touchstart",c)}}),r(ae,[h,oe],function(e,t){return{init:function(){var e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function n(){function t(t,a,s,l,c,u){var d,f,h,p,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),e(i.getEl("absend")).css(y,i.layoutRect()[l]-1),!c)return void e(f).css("display","none");e(f).css("display","block"),d=i.getEl("body"),h=i.getEl("scroll"+t+"t"),p=d["client"+s]-2*o,p-=n&&r?f["client"+u]:0,m=d["scroll"+s],g=p/m,v={},v[y]=d["offset"+a]+o,v[b]=p,e(f).css(v),v={},v[y]=d["scroll"+a]*g,v[b]=p*g,e(h).css(v)}}var n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function r(){function n(n,r,a,s,l){var c,u=i._id+"-scroll"+n,d=i.classPrefix;e(i.getEl()).append('<div id="'+u+'" class="'+d+"scrollbar "+d+"scrollbar-"+n+'"><div id="'+u+'t" class="'+d+'scrollbar-thumb"></div></div>'),i.draghelper=new t(u+"t",{start:function(){c=i.getEl("body")["scroll"+r],e("#"+u).addClass(d+"active")},drag:function(e){var t,u,d,f,h=i.layoutRect();u=h.contentW>h.innerW,d=h.contentH>h.innerH,f=i.getEl("body")["client"+a]-2*o,f-=u&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=c+e["delta"+s]/t},stop:function(){e("#"+u).removeClass(d+"active")}})}i.classes.add("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e(i.getEl("body")).on("scroll",n)),n())}}}),r(se,[ie,ae],function(e,t){return e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),"undefined"==typeof n?n='<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1" role="group">'+(e._preBodyHtml||"")+n+"</div>"}})}),r(le,[J],function(e){function t(t,n,r){var i,o,a,s,l,c,u,d,f,h;return f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t.state.get("fixed")&&"static"==e.getRuntimeStyle(document.body,"position")&&(a-=f.x,s-=f.y),i=t.getEl(),h=e.getSize(i),l=h.width,c=h.height,h=e.getSize(n),u=h.width,d=h.height,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=u),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(u/2)),"b"===r[3]&&(s-=c),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(c/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:c}}return{testMoveRel:function(n,r){for(var i=e.getViewPort(),o=0;o<r.length;o++){var a=t(this,n,r[o]);if(this.state.get("fixed")){if(a.x>0&&a.x+a.w<i.w&&a.y>0&&a.y+a.h<i.h)return r[o]}else if(a.x>i.x&&a.x+a.w<i.w+i.x&&a.y>i.y&&a.y+a.h<i.h+i.y)return r[o]}return r[0]},moveRel:function(e,n){"string"!=typeof n&&(n=this.testMoveRel(e,n));var r=t(this,e,n);return this.moveTo(r.x,r.y)},moveBy:function(e,t){var n=this,r=n.layoutRect();return n.moveTo(r.x+e,r.y+t),n},moveTo:function(t,n){function r(e,t,n){return 0>e?0:e+n>t?(e=t-n,0>e?0:e):e}var i=this;if(i.settings.constrainToViewport){var o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return i.state.get("rendered")?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(ce,[J],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(1>=t||1>=n){var r=e.getWindowSize();t=1>=t?t*r.w:t,n=1>=n?n*r.h:n}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var n=this,r=n.layoutRect();return n.resizeTo(r.w+e,r.h+t)}}}),r(ue,[se,le,ce,J,h],function(e,t,n,r,i){function o(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}function a(e){for(var t=g.length;t--;){var n=g[t],r=n.getParentCtrl(e.target);if(n.settings.autohide){if(r&&(o(r,n)||n.parent()===r))continue;e=n.fire("autohide",{target:e.target}),e.isDefaultPrevented()||n.hide()}}}function s(){h||(h=function(e){2!=e.button&&a(e)},i(document).on("click touchstart",h))}function l(){p||(p=function(){var e;for(e=g.length;e--;)u(g[e])},i(window).on("scroll",p))}function c(){if(!m){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;m=function(){document.all&&t==e.clientWidth&&n==e.clientHeight||(t=e.clientWidth,n=e.clientHeight,b.hideAll())},i(window).on("resize",m)}}function u(e){function t(t,n){for(var r,i=0;i<g.length;i++)if(g[i]!=e)for(r=g[i].parent();r&&(r=r.parent());)r==e&&g[i].fixed(t).moveBy(0,n).repaint()}var n=r.getViewPort().y;e.settings.autofix&&(e.state.get("fixed")?e._autoFixY>n&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY<n&&(e.fixed(!0).layoutRect({y:0}).repaint(),t(!0,n-e._autoFixY))))}function d(e,t){var n,r=b.zIndex||65535,o;if(e)v.push(t);else for(n=v.length;n--;)v[n]===t&&v.splice(n,1);if(v.length)for(n=0;n<v.length;n++)v[n].modal&&(r++,o=v[n]),v[n].getEl().style.zIndex=r,v[n].zIndex=r,r++;var a=document.getElementById(t.classPrefix+"modal-block");o?i(a).css("z-index",o.zIndex-1):a&&(a.parentNode.removeChild(a),y=!1),b.currentZIndex=r}function f(e){var t;for(t=g.length;t--;)g[t]===e&&g.splice(t,1);for(t=v.length;t--;)v[t]===e&&v.splice(t,1)}var h,p,m,g=[],v=[],y,b=e.extend({Mixins:[t,n],init:function(e){var t=this;t._super(e),t._eventsRoot=t,t.classes.add("floatpanel"),e.autohide&&(s(),c(),g.push(t)),e.autofix&&(l(),t.on("move",function(){u(this)})),t.on("postrender show",function(e){if(e.control==t){var n,r=t.classPrefix;t.modal&&!y&&(n=i("#"+r+"modal-block"),n[0]||(n=i('<div id="'+r+'modal-block" class="'+r+"reset "+r+'fade"></div>').appendTo(t.getContainerElm())),setTimeout(function(){n.addClass(r+"in"),i(t.getEl()).addClass(r+"in")},0),y=!0),d(!0,t)}}),t.on("show",function(){t.parents().each(function(e){return e.state.get("fixed")?(t.fixed(!0),!1):void 0})}),e.popover&&(t._preBodyHtml='<div class="'+t.classPrefix+'arrow"></div>',t.classes.add("popover").add("bottom").add(t.isRtl()?"end":"start"))},fixed:function(e){var t=this;if(t.state.get("fixed")!=e){if(t.state.get("rendered")){var n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e=this,t,n=e._super();for(t=g.length;t--&&g[t]!==e;);return-1===t&&g.push(e),n},hide:function(){return f(this),d(!1,this),this._super()},hideAll:function(){b.hideAll()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||(e.remove(),d(!1,e)),e},remove:function(){f(this),this._super()},postRender:function(){var e=this;return e.settings.bodyRole&&this.getEl("body").setAttribute("role",e.settings.bodyRole),e._super()}});return b.hideAll=function(){for(var e=g.length;e--;){var t=g[e];t&&t.settings.autohide&&(t.hide(),g.splice(e,1))}},b}),r(de,[ue,se,J,h,oe,Q,u],function(e,t,n,r,i,o,a){function s(e){var t="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0",n=r("meta[name=viewport]")[0],i;a.overrideViewPort!==!1&&(n||(n=document.createElement("meta"),n.setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),i=n.getAttribute("content"),i&&"undefined"!=typeof d&&(d=i),n.setAttribute("content",e?t:d))}function l(e){for(var t=0;t<u.length;t++)if(u[t]._fullscreen)return;r([document.documentElement,document.body]).removeClass(e+"fullscreen")}function c(){function e(){var e,t=n.getWindowSize(),r;for(e=0;e<u.length;e++)r=u[e].layoutRect(),u[e].moveTo(u[e].settings.x||Math.max(0,t.w/2-r.w/2),u[e].settings.y||Math.max(0,t.h/2-r.h/2))}var t={w:window.innerWidth,h:window.innerHeight};window.setInterval(function(){var e=window.innerWidth,n=window.innerHeight;(t.w!=e||t.h!=n)&&(t={w:e,h:n},r(window).trigger("resize"))},0),r(window).on("resize",e)}var u=[],d="",f=e.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var n=this;n._super(e),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add("window-body"),n.state.set("fixed",!0),e.buttons&&(n.statusbar=new t({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(e){-1!=e.target.className.indexOf(n.classPrefix+"close")&&n.close()}),n.on("cancel",function(){n.close()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",e.title),n._fullscreen=!1},recalc:function(){var e=this,t=e.statusbar,r,i,o,a;e._fullscreen&&(e.layoutRect(n.getWindowSize()),e.layoutRect().contentH=e.layoutRect().innerH),e._super(),r=e.layoutRect(),e.settings.title&&!e._fullscreen&&(i=r.headerW,i>r.w&&(o=r.x-Math.max(0,i/2),e.layoutRect({w:i,x:o}),a=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(o=r.x-Math.max(0,i-r.w),e.layoutRect({w:i,x:o}),a=!0)),a&&e.recalc()},initLayoutRect:function(){var e=this,t=e._super(),r=0,i;if(e.settings.title&&!e._fullscreen){i=e.getEl("head");var o=n.getSize(i);t.headerW=o.width,t.headerH=o.height,r+=t.headerH}e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var a=n.getWindowSize();return t.x=e.settings.x||Math.max(0,a.w/2-t.w/2),t.y=e.settings.y||Math.max(0,a.h/2-t.h/2),t},renderHtml:function(){var e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return e.preRender(),t.preRender(e),i.title&&(o='<div id="'+n+'-head" class="'+r+'window-head"><div id="'+n+'-title" class="'+r+'title">'+e.encode(i.title)+'</div><button type="button" class="'+r+'close" aria-hidden="true">\xd7</button><div id="'+n+'-dragh" class="'+r+'dragh"></div></div>'),i.url&&(s='<iframe src="'+i.url+'" tabindex="-1"></iframe>'),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes+'" hidefocus="1"><div class="'+e.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+e.bodyClasses+'">'+s+"</div>"+a+"</div></div>"},fullscreen:function(e){var t=this,i=document.documentElement,a,s=t.classPrefix,l;if(e!=t._fullscreen)if(r(window).on("resize",function(){var e;if(t._fullscreen)if(a)t._timer||(t._timer=setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(a=!0)}}),l=t.layoutRect(),t._fullscreen=e,e){t._initial={x:l.x,y:l.y,w:l.w,h:l.h},t.borderBox=o.parseBox("0"),t.getEl("head").style.display="none",l.deltaH-=l.headerH+2,r([i,document.body]).addClass(s+"fullscreen"),t.classes.add("fullscreen");var c=n.getWindowSize();t.moveTo(0,0).resizeTo(c.w,c.h)}else t.borderBox=o.parseBox(t.settings.border),t.getEl("head").style.display="",l.deltaH+=l.headerH,r([i,document.body]).removeClass(s+"fullscreen"),t.classes.remove("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t;setTimeout(function(){e.classes.add("in")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new i(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()}),u.push(e),s(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this,t;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),t=u.length;t--;)u[t]===e&&u.splice(t,1);s(u.length>0),l(e.classPrefix)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});return a.desktop||c(),f}),r(fe,[de],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){function r(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),o(t)}}}var i,o=n.callback||function(){};switch(n.buttons){case t.OK_CANCEL:i=[r("Ok",!0,!0),r("Cancel",!1)];break;case t.YES_NO:case t.YES_NO_CANCEL:i=[r("Yes",1,!0),r("No",0)],n.buttons==t.YES_NO_CANCEL&&i.push(r("Cancel",-1));break;default:i=[r("Ok",!0,!0)]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:i,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){o(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(he,[de,fe],function(e,t){return function(n){function r(){return o.length?o[o.length-1]:void 0}var i=this,o=[];i.windows=o,n.on("remove",function(){for(var e=o.length;e--;)o[e].close()}),i.open=function(t,r){var i;return n.editorManager.setActive(n),t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),i=new e(t),o.push(i),i.on("close",function(){for(var e=o.length;e--;)o[e]===i&&o.splice(e,1);o.length||n.focus()}),t.data&&i.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),i.features=t||{},i.params=r||{},1===o.length&&n.nodeChanged(),i.renderTo().reflow()},i.alert=function(e,r,i){t.alert(e,function(){r?r.call(i||this):n.focus()})},i.confirm=function(e,n,r){t.confirm(e,function(e){n.call(r||this,e)})},i.close=function(){r()&&r().close()},i.getParams=function(){return r()?r().params:null},i.setParams=function(e){r()&&(r().params=e)},i.getWindows=function(){return o}}}),r(pe,[D,w,m,E,v,u,f],function(e,t,n,r,i,o,a){return function(s){function l(e,t){try{s.getDoc().execCommand(e,!1,t)}catch(n){}}function c(){var e=s.getDoc().documentMode;return e?e:6}function u(e){return e.isDefaultPrevented()}function d(e){var t,n;e.dataTransfer&&(s.selection.isCollapsed()&&"IMG"==e.target.tagName&&J.select(e.target),t=s.selection.getContent(),t.length>0&&(n=ie+escape(s.id)+","+escape(t),e.dataTransfer.setData(oe,n)))}function f(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(oe),t&&t.indexOf(ie)>=0)?(t=t.substr(ie.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}function h(e){s.queryCommandSupported("mceInsertClipboardContent")?s.execCommand("mceInsertClipboardContent",!1,{content:e}):s.execCommand("mceInsertContent",!1,e)}function p(){function r(e){var t=v.schema.getBlockElements(),n=s.getBody();if("BR"!=e.nodeName)return!1;for(e=e;e!=n&&!t[e.nodeName];e=e.parentNode)if(e.nextSibling)return!1;return!0}function i(e,t){var n;for(n=e.nextSibling;n&&n!=t;n=n.nextSibling)if((3!=n.nodeType||0!==K.trim(n.data).length)&&n!==t)return!1;return n===t}function o(e,t,i){var o,a,s;for(s=v.schema.getNonEmptyElements(),o=new n(i||e,e);a=o[t?"next":"prev"]();){if(s[a.nodeName]&&!r(a))return a;if(3==a.nodeType&&a.data.length>0)return a}}function l(e){var n,r,i,a,l;if(!e.collapsed&&(n=v.getParent(t.getNode(e.startContainer,e.startOffset),v.isBlock),r=v.getParent(t.getNode(e.endContainer,e.endOffset),v.isBlock),l=s.schema.getTextBlockElements(),n!=r&&l[n.nodeName]&&l[r.nodeName]&&"false"!==v.getContentEditable(n)&&"false"!==v.getContentEditable(r)))return e.deleteContents(),i=o(n,!1),a=o(r,!0),v.isEmpty(r)||K(n).append(r.childNodes),K(r).remove(),i?1==i.nodeType?"BR"==i.nodeName?(e.setStartBefore(i),e.setEndBefore(i)):(e.setStartAfter(i),e.setEndAfter(i)):(e.setStart(i,i.data.length),e.setEnd(i,i.data.length)):a&&(1==a.nodeType?(e.setStartBefore(a),e.setEndBefore(a)):(e.setStart(a,0),e.setEnd(a,0))),y.setRng(e),!0}function c(e,n){var r,a,l,c,u,d;if(!e.collapsed)return e;if(u=e.startContainer,d=e.startOffset,3==u.nodeType)if(n){if(d<u.data.length)return e}else if(d>0)return e;if(r=t.getNode(e.startContainer,e.startOffset),l=v.getParent(r,v.isBlock),a=o(s.getBody(),n,r),c=v.getParent(a,v.isBlock),!r||!a)return e;if(c&&l!=c)if(n){if(!i(l,c))return e;1==r.nodeType?"BR"==r.nodeName?e.setStartBefore(r):e.setStartAfter(r):e.setStart(r,r.data.length),1==a.nodeType?e.setEnd(a,0):e.setEndBefore(a)}else{if(!i(c,l))return e;1==a.nodeType?"BR"==a.nodeName?e.setStartBefore(a):e.setStartAfter(a):e.setStart(a,a.data.length),1==r.nodeType?e.setEnd(r,0):e.setEndBefore(r)}return e}function p(e){var t=y.getRng();return t=c(t,e),l(t)?!0:void 0}function m(e){var t,n,r;p(e)||(a.each(s.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&s.dom.setAttrib(e,"style",s.dom.getAttrib(e,"style"))}),t=new b(function(){}),t.observe(s.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),s.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),n=s.selection.getRng(),r=n.startContainer.parentNode,a.each(t.takeRecords(),function(e){if(v.isChildOf(e.target,s.getBody())){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style")}a.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),v.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),s.selection.setRng(n))}})}}),t.disconnect(),a.each(s.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")}))}var g=s.getDoc(),v=s.dom,y=s.selection,b=window.MutationObserver,x,C;b||(x=!0,b=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return n}}),s.on("keydown",function(e){var t=e.keyCode==G,n=e.ctrlKey||e.metaKey;if(!u(e)&&(t||e.keyCode==Y)){var r=s.selection.getRng(),i=r.startContainer,o=r.startOffset;if(!n&&r.collapsed&&3==i.nodeType&&(t?o<i.data.length:o>0))return;e.preventDefault(),n&&s.selection.getSel().modify("extend",t?"forward":"backward",e.metaKey?"lineboundary":"word"),m(t)}}),s.on("keypress",function(t){if(!u(t)&&!y.isCollapsed()&&t.charCode&&!e.metaKeyPressed(t)){var n,r,i,o,a,l;n=s.selection.getRng(),l=String.fromCharCode(t.charCode),t.preventDefault(),r=K(n.startContainer).parents().filter(function(e,t){return!!s.schema.getTextInlineElements()[t.nodeName]}),m(!0),r=r.filter(function(e,t){return!K.contains(s.getBody(),t)}),r.length?(i=v.createFragment(),
-r.each(function(e,t){t=t.cloneNode(!1),i.hasChildNodes()?(t.appendChild(i.firstChild),i.appendChild(t)):(a=t,i.appendChild(t)),i.appendChild(t)}),a.appendChild(s.getDoc().createTextNode(l)),o=v.getParent(n.startContainer,v.isBlock),v.isEmpty(o)?K(o).empty().append(i):n.insertNode(i),n.setStart(a.firstChild,1),n.setEnd(a.firstChild,1),s.selection.setRng(n)):s.selection.setContent(l)}}),s.addCommand("Delete",function(){m()}),s.addCommand("ForwardDelete",function(){m(!0)}),x||(s.on("dragstart",function(e){C=y.getRng(),d(e)}),s.on("drop",function(e){if(!u(e)){var n=f(e);n&&(e.preventDefault(),window.setTimeout(function(){var r=t.getCaretRangeFromPoint(e.x,e.y,g);C&&(y.setRng(C),C=null),m(),y.setRng(r),h(n.html)},0))}}),s.on("cut",function(e){u(e)||!e.clipboardData||s.selection.isCollapsed()||(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",s.selection.getContent()),e.clipboardData.setData("text/plain",s.selection.getContent({format:"text"})),window.setTimeout(function(){m(!0)},0))}))}function m(){function e(e){var t=X.create("body"),n=e.cloneContents();return t.appendChild(n),J.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(s.getBody()),t.compareRanges(n,r)}var i=e(n),o=X.createRng();o.selectNode(s.getBody());var a=e(o);return i===a}s.on("keydown",function(e){var t=e.keyCode,r,i;if(!u(e)&&(t==G||t==Y)){if(r=s.selection.isCollapsed(),i=s.getBody(),r&&!X.isEmpty(i))return;if(!r&&!n(s.selection.getRng()))return;e.preventDefault(),s.setContent(""),i.firstChild&&X.isBlock(i.firstChild)?s.selection.setCursorLocation(i.firstChild,0):s.selection.setCursorLocation(i,0),s.nodeChanged()}})}function g(){s.shortcuts.add("meta+a",null,"SelectAll")}function v(){s.settings.content_editable||(X.bind(s.getDoc(),"focusin",function(){J.setRng(J.getRng())}),X.bind(s.getDoc(),"mousedown mouseup",function(e){e.target==s.getDoc().documentElement&&(s.getBody().focus(),"mousedown"==e.type?J.placeCaretAt(e.clientX,e.clientY):J.setRng(J.getRng()))}))}function y(){s.on("keydown",function(e){if(!u(e)&&e.keyCode===Y){if(!s.getBody().getElementsByTagName("hr").length)return;if(J.isCollapsed()&&0===J.getRng(!0).startOffset){var t=J.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return X.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(X.remove(n),e.preventDefault())}}})}function b(){window.Range.prototype.getClientRects||s.on("mousedown",function(e){if(!u(e)&&"HTML"===e.target.nodeName){var t=s.getBody();t.blur(),setTimeout(function(){t.focus()},0)}})}function x(){s.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&(e.preventDefault(),J.getSel().setBaseAndExtent(t,0,t,1),s.nodeChanged()),"A"==t.nodeName&&X.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),J.select(t))})}function C(){function e(){var e=X.getAttribs(J.getStart().cloneNode(!1));return function(){var t=J.getStart();t!==s.getBody()&&(X.setAttrib(t,"style",null),j(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!J.isCollapsed()&&X.getParent(J.getStart(),X.isBlock)!=X.getParent(J.getEnd(),X.isBlock)}s.on("keypress",function(n){var r;return u(n)||8!=n.keyCode&&46!=n.keyCode||!t()?void 0:(r=e(),s.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1)}),X.bind(s.getDoc(),"cut",function(n){var r;!u(n)&&t()&&(r=e(),setTimeout(function(){r()},0))})}function w(){document.body.setAttribute("role","application")}function _(){s.on("keydown",function(e){if(!u(e)&&e.keyCode===Y&&J.isCollapsed()&&0===J.getRng(!0).startOffset){var t=J.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function E(){c()>7||(l("RespectVisibilityInDesign",!0),s.contentStyles.push(".mceHideBrInPre pre br {display: none}"),X.addClass(s.getBody(),"mceHideBrInPre"),Z.addNodeFilter("pre",function(e){for(var t=e.length,n,i,o,a;t--;)for(n=e[t].getAll("br"),i=n.length;i--;)o=n[i],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new r("#text",3),o,!0).value="\n"}),ee.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function N(){X.bind(s.getBody(),"mouseup",function(){var e,t=J.getNode();"IMG"==t.nodeName&&((e=X.getStyle(t,"width"))&&(X.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),X.setStyle(t,"width","")),(e=X.getStyle(t,"height"))&&(X.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),X.setStyle(t,"height","")))})}function S(){s.on("keydown",function(t){var n,r,i,o,a;if(!u(t)&&t.keyCode==e.BACKSPACE&&(n=J.getRng(),r=n.startContainer,i=n.startOffset,o=X.getRoot(),a=r,n.collapsed&&0===i)){for(;a&&a.parentNode&&a.parentNode.firstChild==a&&a.parentNode!=o;)a=a.parentNode;"BLOCKQUOTE"===a.tagName&&(s.formatter.toggle("blockquote",null,a),n=X.createRng(),n.setStart(r,0),n.setEnd(r,0),J.setRng(n))}})}function k(){function e(){s._refreshContentEditable(),l("StyleWithCSS",!1),l("enableInlineTableEditing",!1),Q.object_resizing||l("enableObjectResizing",!1)}Q.readonly||s.on("BeforeExecCommand MouseDown",e)}function T(){function e(){j(X.select("a"),function(e){var t=e.parentNode,n=X.getRoot();if(t.lastChild===e){for(;t&&!X.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}X.add(t,"br",{"data-mce-bogus":1})}})}s.on("SetContent ExecCommand",function(t){("setcontent"==t.type||"mceInsertLink"===t.command)&&e()})}function R(){Q.forced_root_block&&s.on("init",function(){l("DefaultParagraphSeparator",Q.forced_root_block)})}function A(){s.on("Undo Redo SetContent",function(e){e.initial||s.execCommand("mceRepaint")})}function B(){s.on("keydown",function(e){var t;u(e)||e.keyCode!=Y||(t=s.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),s.undoManager.beforeChange(),X.remove(t.item(0)),s.undoManager.add()))})}function D(){var e;c()>=10&&(e="",j("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),s.contentStyles.push(e+"{padding-right: 1px !important}"))}function M(){c()<9&&(Z.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),ee.addNodeFilter("noscript",function(e){for(var t=e.length,n,o,a;t--;)n=e[t],o=e[t].firstChild,o?o.value=i.decode(o.value):(a=n.attributes.map["data-mce-innertext"],a&&(n.attr("data-mce-innertext",null),o=new r("#text",3),o.value=a,o.raw=!0,n.append(o)))}))}function L(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),X.unbind(r,"mouseup",n),X.unbind(r,"mousemove",t),a=o=0}var r=X.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,X.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(X.bind(r,"mouseup",n),X.bind(r,"mousemove",t),X.getRoot().focus(),a.select())}})}function H(){s.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||J.normalize()},!0)}function P(){s.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function O(){s.inline||s.on("keydown",function(){document.activeElement==document.body&&s.getWin().focus()})}function I(){s.inline||(s.contentStyles.push("body {min-height: 150px}"),s.on("click",function(e){if("HTML"==e.target.nodeName){var t;t=s.selection.getRng(),s.getBody().focus(),s.selection.setRng(t),s.selection.normalize(),s.nodeChanged()}}))}function F(){o.mac&&s.on("keydown",function(t){!e.metaKeyPressed(t)||t.shiftKey||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),s.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","lineboundary"))})}function z(){l("AutoUrlDetect",!1)}function W(){s.inline||s.on("focus blur beforegetcontent",function(){var e=s.dom.create("br");s.getBody().appendChild(e),e.parentNode.removeChild(e)},!0)}function V(){s.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),s.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function U(){s.on("init",function(){s.dom.bind(s.getBody(),"submit",function(e){e.preventDefault()})})}function $(){Z.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}function q(){s.on("dragstart",function(e){d(e)}),s.on("drop",function(e){if(!u(e)){var n=f(e);if(n&&n.id!=s.id){e.preventDefault();var r=t.getCaretRangeFromPoint(e.x,e.y,s.getDoc());J.setRng(r),h(n.html)}}})}var j=a.each,K=s.$,Y=e.BACKSPACE,G=e.DELETE,X=s.dom,J=s.selection,Q=s.settings,Z=s.parser,ee=s.serializer,te=o.gecko,ne=o.ie,re=o.webkit,ie="data:text/mce-internal,",oe=ne?"Text":"URL";S(),m(),H(),re&&(p(),v(),x(),R(),U(),_(),$(),o.iOS?(O(),I(),V()):g()),ne&&o.ie<11&&(y(),w(),E(),N(),B(),D(),M(),L()),o.ie>=11&&(I(),W(),_()),o.ie&&(g(),z(),q()),te&&(y(),b(),C(),k(),T(),A(),P(),F(),_())}}),r(me,[K,b,f],function(e,t,n){function r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function i(e,t){var n=r(e,t),i;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var t;if(!e.editorManager.activeEditor&&a){for(t in a)e.dom.unbind(r(e,t));a=null}})),a[t])return;i=function(n){for(var r=n.target,i=e.editorManager.editors,a=i.length;a--;){var s=i[a].getBody();(s===r||o.isChildOf(r,s))&&(i[a].hidden||i[a].fire(t,n))}},a[t]=i,o.bind(n,t,i)}else i=function(n){e.hidden||e.fire(t,n)},o.bind(n,t,i),e.delegates[t]=i}var o=t.DOM,a,s={bindPendingEventDelegates:function(){var e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var n=this;n.settings.readonly||"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e=this,t;if(e.delegates){for(t in e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return s=n.extend({},e,s)}),r(ge,[f,u],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122},o=e.makeMap("alt,ctrl,shift,meta,access");return function(a){function s(e,s,l,c){var u,d,f;f={func:l,scope:c||a,desc:a.translate(s)},n(r(e,"+"),function(e){e in o?f[e]=!0:/^[0-9]{2,}$/.test(e)?f.keyCode=parseInt(e,10):(f.charCode=e.charCodeAt(0),f.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}),u=[f.keyCode];for(d in o)f[d]?u.push(d):f[d]=!1;return f.id=u.join(","),f.access&&(f.alt=!0,t.mac?f.ctrl=!0:f.shift=!0),f.meta&&(t.mac?f.meta=!0:(f.ctrl=!0,f.meta=!1)),f}var l=this,c={};a.on("keyup keypress keydown",function(e){(e.altKey||e.ctrlKey||e.metaKey)&&!e.isDefaultPrevented()&&n(c,function(t){return t.ctrl==e.ctrlKey&&t.meta==e.metaKey&&t.alt==e.altKey&&t.shift==e.shiftKey&&(e.keyCode==t.keyCode||e.charCode&&e.charCode==t.charCode)?(e.preventDefault(),"keydown"==e.type&&t.func.call(t.scope),!0):void 0})}),l.add=function(t,i,o,l){var u;return u=o,"string"==typeof o?o=function(){a.execCommand(u,!1,null)}:e.isArray(u)&&(o=function(){a.execCommand(u[0],u[1],u[2])}),n(r(t.toLowerCase()),function(e){var t=s(e,i,o,l);c[t.id]=t}),!0},l.remove=function(e){var t=s(e);return c[t.id]?(delete c[t.id],!0):!1}}}),r(ve,[],function(){function e(e,t){return function(){e.apply(t,arguments)}}function t(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],s(t,e(r,this),e(i,this))}function n(e){var t=this;return null===this._state?void this._deferreds.push(e):void l(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function r(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void s(e(n,t),e(r,this),e(i,this))}this._state=!0,this._value=t,o.call(this)}catch(a){i.call(this,a)}}function i(e){this._state=!1,this._value=e,o.call(this)}function o(){for(var e=0,t=this._deferreds.length;t>e;e++)n.call(this,this._deferreds[e]);this._deferreds=null}function a(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function s(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}if(window.Promise)return window.Promise;var l=t.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)},c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return t.prototype["catch"]=function(e){return this.then(null,e)},t.prototype.then=function(e,r){var i=this;return new t(function(t,o){n.call(i,new a(e,r,t,o))})},t.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&c(arguments[0])?arguments[0]:arguments);return new t(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(l){n(l)}}if(0===e.length)return t([]);for(var i=e.length,o=0;o<e.length;o++)r(o,e[o])})},t.resolve=function(e){return e&&"object"==typeof e&&e.constructor===t?e:new t(function(t){t(e)})},t.reject=function(e){return new t(function(t,n){n(e)})},t.race=function(e){return new t(function(t,n){for(var r=0,i=e.length;i>r;r++)e[r].then(t,n)})},t}),r(ye,[],function(){function e(e){return function(){return e}}return{constant:e}}),r(be,[ve,f,ye],function(e,t,n){return function(r){function i(e){var t,n;return n={"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"},t=n[e.blob().type.toLowerCase()]||"dat",e.id()+"."+t}function o(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}function a(e){return{id:e.id,blob:e.blob,base64:e.base64,filename:n.constant(i(e))}}function s(e,t,n){var a,s;a=new XMLHttpRequest,a.open("POST",r.url),a.withCredentials=r.credentials,a.onload=function(){var e;return 200!=a.status?void n("HTTP Error: "+a.status):(e=JSON.parse(a.responseText),e&&"string"==typeof e.location?void t(o(r.basePath,e.location)):void n("Invalid JSON: "+a.responseText))},s=new FormData,s.append("file",e.blob(),i(e)),a.send(s)}function l(n){function i(t){return new e(function(e){var n=r.handler;n(a(t),function(n){e({url:n,blobInfo:t,status:!0})},function(n){e({url:"",blobInfo:t,status:!1,error:n})})})}var o;return r.url||r.handler!==s?(o=t.map(n,function(e){var t,n=e.id();return c[n]?c[n]:(t=i(e).then(function(e){return delete c[n],e})["catch"](function(e){return delete c[n],e}),c[n]=t,t)}),e.all(o)):new e(function(e){e([])})}var c={};return r=t.extend({credentials:!1,handler:s},r),{upload:l}}}),r(xe,[ve],function(e){function t(t){return new e(function(e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function n(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}}function r(t){return new e(function(e){var r,i,o;t=n(t);try{r=atob(t.data)}catch(a){return void e(new Blob([]))}for(i=new Uint8Array(r.length),o=0;o<i.length;o++)i[o]=r.charCodeAt(o);e(new Blob([i],{type:t.type}))})}function i(e){return 0===e.indexOf("blob:")?t(e):0===e.indexOf("data:")?r(e):null}function o(t){return new e(function(e){var n=new FileReader;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}return{uriToBlob:i,blobToDataUri:o,parseDataUri:n}}),r(Ce,[ve,d,xe,u],function(e,t,n,r){var i=0;return function(o){function a(a){function l(e,t){var r,a;return 0===e.src.indexOf("blob:")?(a=o.getByUri(e.src),void(a&&t({image:e,blobInfo:a}))):(r=n.parseDataUri(e.src).data,a=o.findFirst(function(e){return e.base64()===r}),void(a?t({image:e,blobInfo:a}):n.uriToBlob(e.src).then(function(n){var a="blobid"+i++,s=o.create(a,n,r);o.add(s),t({image:e,blobInfo:s})})))}var c,u;return c=t.filter(a.getElementsByTagName("img"),function(e){var t=e.src;return r.fileApi?e.hasAttribute("data-mce-bogus")?!1:e.hasAttribute("data-mce-placeholder")?!1:t&&t!=r.transparentSrc?0===t.indexOf("data:")||0===t.indexOf("blob:"):!1:!1}),u=t.map(c,function(t){var n;return s[t.src]?new e(function(e){s[t.src].then(function(n){e({image:t,blobInfo:n.blobInfo})})}):(n=new e(function(e){l(t,e)}).then(function(e){return delete s[e.image.src],e})["catch"](function(e){return delete s[t.src],e}),s[t.src]=n,n)}),e.all(u)}var s={};return{findAll:a}}}),r(we,[d,ye],function(e,t){return function(){function n(e,t,n){return{id:c(e),blob:c(t),base64:c(n),blobUri:c(URL.createObjectURL(t))}}function r(e){i(e.id())||l.push(e)}function i(e){return o(function(t){return t.id()===e})}function o(t){return e.filter(l,t)[0]}function a(e){return o(function(t){return t.blobUri()==e})}function s(){e.each(l,function(e){URL.revokeObjectURL(e.blobUri())}),l=[]}var l=[],c=t.constant;return{create:n,add:r,get:i,getByUri:a,findFirst:o,destroy:s}}}),r(_e,[d,be,Ce,we],function(e,t,n,r){return function(i){function o(e,t,n){var r=0;do r=e.indexOf(t,r),-1!==r&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1);while(-1!==r);return e}function a(e,t,n){return e=o(e,'src="'+t+'"','src="'+n+'"'),e=o(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')}function s(t,n){e.each(i.undoManager.data,function(e){e.content=a(e.content,t,n)})}function l(n){return h||(h=new t({url:i.settings.images_upload_url,basePath:i.settings.images_upload_base_path,credentials:i.settings.images_upload_credentials,handler:i.settings.images_upload_handler})),c().then(function(t){var r;return r=e.map(t,function(e){return e.blobInfo}),h.upload(r).then(function(r){return r=e.map(r,function(e,n){var r=t[n].image;return s(r.src,e.url),i.$(r).attr({src:e.url,"data-mce-src":i.convertURL(e.url,"src")}),{element:r,status:e.status}}),n&&n(r),r})})}function c(){return p||(p=new n(f)),p.findAll(i.getBody()).then(function(t){return e.each(t,function(e){s(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri()}),t})}function u(){f.destroy(),p=h=null}function d(t){return t.replace(/src="(blob:[^"]+)"/g,function(t,n){var r=f.getByUri(n);return r||(r=e.reduce(i.editorManager.editors,function(e,t){return e||t.editorUpload.blobCache.getByUri(n)},null)),r?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':t[0]})}var f=new r,h,p;return i.on("setContent paste",c),i.on("RawSaveContent",function(e){e.content=d(e.content)}),i.on("getContent",function(e){e.source_view||"raw"==e.format||(e.content=d(e.content))}),{blobCache:f,uploadImages:l,scanForImages:c,destroy:u}}}),r(Ee,[b,h,C,_,E,A,R,H,I,F,z,W,V,U,x,l,he,N,k,pe,u,f,me,ge,_e],function(e,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,x,C,w,_,E,N){function S(e,t,i){var o=this,a,s;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,o.settings=t=A({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},t),r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.isNotDirty=!0,o.plugins={},o.documentBaseURI=new p(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new E(o),o.loadedCSS={},o.editorCommands=new h(o),t.target&&(o.targetElm=t.target),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,t.cache_suffix&&(C.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),t.override_viewport===!1&&(C.overrideViewPort=!1),i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var k=e.DOM,T=r.ThemeManager,R=r.PluginManager,A=w.extend,B=w.each,D=w.explode,M=w.inArray,L=w.trim,H=w.resolve,P=g.Event,O=C.gecko,I=C.ie;return S.prototype={render:function(){function e(){k.unbind(window,"ready",e),n.render()}function t(){var e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!T.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",T.load(r.theme,t)}w.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),B(r.external_plugins,function(e,t){R.load(t,e),r.plugins+=" "+t}),B(r.plugins.split(/[ ,]/),function(e){if(e=L(e),e&&!R.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=R.dependencies(e);B(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=R.createUrl(t,e),R.load(e.resource,e)})}else R.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!P.domLoaded)return void k.bind(window,"ready",e);if(n.getElement()&&C.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||k.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(k.insertAfter(k.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},k.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.isNotDirty=!0,a._mceOldSubmit(a)})),n.windowManager=new v(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=k.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),t()}},init:function(){function e(n){var r=R.get(n),i,o;i=R.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=L(n),r&&-1===M(m,n)&&(B(R.dependencies(n),function(t){e(t)}),o=new r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n)))}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,c,u,d,f,h,p,m=[];if(this.editorManager.i18n.setCode(n.language),t.rtl=n.rtl_ui||this.editorManager.i18n.rtl,t.editorManager.add(t),n.aria_label=n.aria_label||k.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),c=T.get(n.theme),t.theme=new c(t,T.urls[n.theme]),t.theme.init&&t.theme.init(t,T.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),B(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,h=/^[0-9\.]+(|px)$/i,h.test(""+i)&&(i=Math.max(parseInt(i,10),100)),h.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),a>o&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer=l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer=l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&B(D(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();for(t.iframeHTML=n.doctype+"<html><head>",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+='<base href="'+t.documentBaseURI.getURI()+'" />'),!C.caretAfter&&n.ie7_compat&&(t.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'),t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',p=0;p<t.contentCSS.length;p++){var g=t.contentCSS[p];t.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+w._addCacheSuffix(g)+'" />',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",-1!=d.indexOf("=")&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",-1!=f.indexOf("=")&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),n.content_security_policy&&(t.iframeHTML+='<meta http-equiv="Content-Security-Policy" content="'+n.content_security_policy+'" />'),t.iframeHTML+='</head><body id="'+d+'" class="mce-content-body '+f+'" data-id="'+t.id+'"><br></body></html>';var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&(u=v);var y=k.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},k.setAttrib(y,"src",u||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=k.add(l.iframeContainer,y),I)try{t.getDoc()}catch(b){s.src=u=v}l.editorContainer&&(k.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=k.isHidden(l.editorContainer)),t.getElement().style.display="none",k.setAttrib(t.id,"aria-hidden",!0),u||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,r=n.settings,s=n.getElement(),h=n.getDoc(),p,m;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(h.open(),h.write(n.iframeHTML),h.close()),r.content_editable&&(n.on("remove",function(){var e=this.getBody();k.removeClass(e,"mce-content-body"),k.removeClass(e,"mce-edit-focus"),k.setAttrib(e,"contentEditable",null)}),k.addClass(s,"mce-content-body"),n.contentDocument=h=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),p=n.getBody(),p.disabled=!0,r.readonly||(n.inline&&"static"==k.getStyle(p,"position",!0)&&(p.style.position="relative"),p.contentEditable=n.getParam("content_editable_state",!0)),p.disabled=!1,n.editorUpload=new N(n),n.schema=new y(r),n.dom=new e(h,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new b(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)if(i=e[r],a=i.attr(t),s="data-mce-"+t,!i.attributes.map[s]){if(0===a.indexOf("data:")||0===a.indexOf("blob:"))continue;"style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name))}}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n;t--;)n=e[t],n.attr("type","mce-"+(n.attr("type")||"no/type"))}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&(r.append(new o("br",1)).shortEnded=!0)}),n.serializer=new a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new c(n),n.undoManager=new u(n),n.forceBlocks=new f(n),n.enterKey=new d(n),n._nodeChangeDispatcher=new i(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(h.body.spellcheck=!1,k.setAttrib(p,"spellcheck","false")),n.fire("PostRender"),n.quirks=new x(n),r.directionality&&(p.dir=r.directionality),r.nowrap&&(p.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){B(r.protect,function(t){e.content=e.content.replace(t,function(e){return"<!--mce:protected "+escape(e)+"-->"})})}),n.on("SetContent",function(){n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.contentStyles.length>0&&(m="",B(n.contentStyles,function(e){m+=e+"\r\n"}),n.dom.addStyle(m)),B(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&setTimeout(function(){var e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.destroyed||e.focus()},100),s=h=p=null},focus:function(e){var t=this,n=t.selection,r=t.settings.content_editable,i,o,a=t.getDoc(),s;if(!e){if(i=n.getRng(),i.item&&(o=i.item(0)),t._refreshContentEditable(),r||(C.opera||t.getBody().focus(),t.getWin().focus()),O||r){if(s=t.getBody(),s.setActive)try{s.setActive()}catch(l){s.focus()}else s.focus();r&&n.normalize()}o&&o.ownerDocument==a&&(i=a.body.createControlRange(),i.addElement(o),i.select())}t.editorManager.setActive(t)},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?H(r):0,n=H(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?B(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(e){e=e.split("="),
-e.length>1?i[L(e[0])]=L(e[1]):i[L(e[0])]=L(e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addContextToolbar:function(e,t){var n=this,r;n.contextToolbars=n.contextToolbars||[],"string"==typeof e&&(r=e,e=function(e){return n.dom.is(e,r)}),n.contextToolbars.push({predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){var e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(k.show(e.getContainer()),k.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(I&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(k.hide(e.getContainer()),k.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;return r?(e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i):void 0},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),"raw"==e.format&&t.fire("RawSaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=k.getParent(t.id,"form"))&&B(i.elements,function(e){return e.name==t.id?(e.value=r,!1):void 0})),e.element=n=null,e.set_dirty!==!1&&(t.isNotDirty=!0),r},setContent:function(e,t){var n=this,r=n.getBody(),i;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=I&&11>I?"":'<br data-mce-bogus="1">',e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):I||(e='<br data-mce-bogus="1">'),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new s({},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=L(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?r.innerHTML:"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),"text"!=e.format?e.content=L(n):e.content=n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=A({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},getContainer:function(){var e=this;return e.container||(e.container=k.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=k.get(this.id)),this.targetElm},getWin:function(){var e=this,t;return e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),B(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&k.remove(e.getElement().nextSibling),e.inline||(I&&10>I&&e.getDoc().execCommand("SelectAll",!1,null),k.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),k.remove(e.getContainer()),e.editorUpload.destroy(),e.destroy())},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),k.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()},_refreshContentEditable:function(){var e=this,t,n;e._isHidden()&&(t=e.getBody(),n=t.parentNode,n.removeChild(t),n.appendChild(t),t.focus())},_isHidden:function(){var e;return O?(e=this.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}},A(S.prototype,_),S}),r(Ne,[],function(){var e={},t="en";return{setCode:function(e){e&&(t=e,this.rtl=this.data[e]?"rtl"===this.data[e]._dir:!1)},getCode:function(){return t},rtl:!1,add:function(t,n){var r=e[t];r||(e[t]=r={});for(var i in n)r[i]=n[i];this.setCode(t)},translate:function(n){var r;if(r=e[t],r||(r={}),"undefined"==typeof n)return n;if("string"!=typeof n&&n.raw)return n.raw;if(n.push){var i=n.slice(1);n=(r[n[0]]||n[0]).replace(/\{([0-9]+)\}/g,function(e,t){return i[t]})}return(r[n]||n).replace(/{context:\w+}$/,"")},data:e}}),r(Se,[b,u],function(e,t){function n(e){function s(){try{return document.activeElement}catch(e){return document.body}}function l(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return t}function c(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function u(e){return!!a.getParent(e,n.isEditorUIElement)}function d(n){var d=n.editor;d.on("init",function(){(d.inline||t.ie)&&("onbeforedeactivate"in document&&t.ie<9?d.dom.bind(d.getBody(),"beforedeactivate",function(e){if(e.target==d.getBody())try{d.lastRng=d.selection.getRng()}catch(t){}}):d.on("nodechange mouseup keyup",function(e){var t=s();"nodechange"==e.type&&e.selectionChange||(t&&t.id==d.id+"_ifr"&&(t=d.getBody()),d.dom.isChildOf(t,d.getBody())&&(d.lastRng=d.selection.getRng()))}),t.webkit&&!r&&(r=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(d.lastRng=n)}},a.bind(document,"selectionchange",r)))}),d.on("setcontent",function(){d.lastRng=null}),d.on("mousedown",function(){d.selection.lastFocusBookmark=null}),d.on("focusin",function(){var t=e.focusedEditor;d.selection.lastFocusBookmark&&(d.selection.setRng(c(d,d.selection.lastFocusBookmark)),d.selection.lastFocusBookmark=null),t!=d&&(t&&t.fire("blur",{focusedEditor:d}),e.setActive(d),e.focusedEditor=d,d.fire("focus",{blurredEditor:t}),d.focus(!0)),d.lastRng=null}),d.on("focusout",function(){window.setTimeout(function(){var t=e.focusedEditor;u(s())||t!=d||(d.fire("blur",{focusedEditor:null}),e.focusedEditor=null,d.selection&&(d.selection.lastFocusBookmark=null))},0)}),i||(i=function(t){var n=e.activeEditor;n&&t.target.ownerDocument==document&&(n.selection&&t.target!=n.getBody()&&(n.selection.lastFocusBookmark=l(n.dom,n.lastRng)),t.target==document.body||u(t.target)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},a.bind(document,"focusin",i)),d.inline&&!o&&(o=function(t){var n=e.activeEditor;if(n.inline&&!n.dom.isChildOf(t.target,n.getBody())){var r=n.selection.getRng();r.collapsed||(n.lastRng=r)}},a.bind(document,"mouseup",o))}function f(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(a.unbind(document,"selectionchange",r),a.unbind(document,"focusin",i),a.unbind(document,"mouseup",o),r=i=o=null)}e.on("AddEditor",d),e.on("RemoveEditor",f)}var r,i,o,a=e.DOM;return n.isEditorUIElement=function(e){return-1!==e.className.toString().indexOf("mce-")},n}),r(ke,[Ee,h,b,U,u,f,K,Ne,Se],function(e,t,n,r,i,o,a,s,l){function c(e){m(b.editors,function(t){t.fire("ResizeWindow",e)})}function u(e,n){n!==x&&(n?t(window).on("resize",c):t(window).off("resize",c),x=n)}function d(e){var t=b.editors,n;delete t[e.id];for(var r=0;r<t.length;r++)if(t[r]==e){t.splice(r,1),n=!0;break}return b.activeEditor==e&&(b.activeEditor=t[0]),b.focusedEditor==e&&(b.focusedEditor=null),n}function f(e){return e&&!(e.getContainer()||e.getBody()).parentNode&&(d(e),e.unbindAllNativeEvents(),e.destroy(!0),e=null),e}var h=n.DOM,p=o.explode,m=o.each,g=o.extend,v=0,y,b,x=!1;return b={$:t,majorVersion:"4",minorVersion:"2.5",releaseDate:"2015-08-31",editors:[],i18n:s,activeEditor:null,setup:function(){var e=this,t,n,i="",o,a;if(n=document.location.href,/^[^:]+:\/\/\/?[^\/]+\//.test(n)&&(n=n.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(n)||(n+="/")),o=window.tinymce||window.tinyMCEPreInit)t=o.base||o.baseURL,i=o.suffix;else{for(var s=document.getElementsByTagName("script"),c=0;c<s.length;c++){a=s[c].src;var u=a.substring(a.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){-1!=u.indexOf(".min")&&(i=".min"),t=a.substring(0,a.lastIndexOf("/"));break}}!t&&document.currentScript&&(a=document.currentScript.src,-1!=a.indexOf(".min")&&(i=".min"),t=a.substring(0,a.lastIndexOf("/")))}e.baseURL=new r(n).toAbsolute(t),e.documentBaseURL=n,e.baseURI=new r(e.baseURL),e.suffix=i,e.focusManager=new l(e)},init:function(t){function n(e){var t=e.id;return t||(t=e.name,t=t&&!h.get(t)?e.name:h.uniqueId(),e.setAttribute("id",t)),t}function r(t,n,r){if(!f(s.get(t))){var i=new e(t,n,s);i.targetElm=i.targetElm||r,l.push(i),i.render()}}function i(e){var n=t[e];if(n)return n.apply(s,Array.prototype.slice.call(arguments,2))}function o(e,t){return t.constructor===RegExp?t.test(e.className):h.hasClass(e,t)}function a(){var e,s;if(h.unbind(window,"ready",a),i("onpageload"),t.types)return void m(t.types,function(e){m(h.select(e.selector),function(i){r(n(i),g({},t,e),i)})});if(t.selector)return void m(h.select(t.selector),function(e){r(n(e),t,e)});switch(t.target&&r(n(t.target),t),t.mode){case"exact":e=t.elements||"",e.length>0&&m(p(e),function(e){var n;(n=h.get(e))?r(e,t,n):m(document.forms,function(n){m(n.elements,function(n){n.name===e&&(e="mce_editor_"+v++,h.setAttrib(n,"id",e),r(e,t,n))})})});break;case"textareas":case"specific_textareas":m(h.select("textarea"),function(e){t.editor_deselector&&o(e,t.editor_deselector)||(!t.editor_selector||o(e,t.editor_selector))&&r(n(e),t,e)})}t.oninit&&(e=s=0,m(l,function(t){s++,t.initialized?e++:t.on("init",function(){e++,e==s&&i("oninit")}),e==s&&i("oninit")}))}var s=this,l=[];s.settings=t,h.bind(window,"ready",a)},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),u(n,!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),y||(y=function(){t.fire("BeforeUnload")},h.bind(window,"beforeunload",y)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;{if(e)return"string"==typeof e?(e=e.selector||e,void m(h.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(d(i)&&t.fire("RemoveEditor",{editor:i}),r.length||h.unbind(window,"beforeunload",y),i.remove(),u(r,r.length>0),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return i.activeEditor?i.activeEditor.execCommand(t,n,r):!1},triggerSave:function(){m(this.editors,function(e){e.save()})},addI18n:function(e,t){s.add(e,t)},translate:function(e){return s.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!=e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},g(b,a),b.setup(),window.tinymce=window.tinyMCE=b,b}),r(Te,[ke,f],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(n,r){"html4"===t.settings.schema&&e(r,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(Re,[K,f],function(e,t){var n={send:function(e){function t(){!e.async||4==r.readyState||i++>1e4?(e.success&&1e4>i&&200==r.status?e.success.call(e.success_scope,""+r.responseText,r,e):e.error&&e.error.call(e.error_scope,i>1e4?"TIMED_OUT":"GENERAL",r,e),r=null):setTimeout(t,10)}var r,i=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async===!1?!1:!0,e.data=e.data||"",r=new XMLHttpRequest){if(r.overrideMimeType&&r.overrideMimeType(e.content_type),r.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(r.withCredentials=!0),e.content_type&&r.setRequestHeader("Content-Type",e.content_type),r.setRequestHeader("X-Requested-With","XMLHttpRequest"),r=n.fire("beforeSend",{xhr:r,settings:e}).xhr,r.send(e.data),!e.async)return t();setTimeout(t,10)}}};return t.extend(n,e),n}),r(Ae,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb     t\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r<t.length;r++)i+=(r>0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(Be,[Ae,Re,f],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(De,[b],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(Me,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?u+e:i.indexOf(",",u),-1===r||r>i.length?null:(n=i.substring(u,r),u=r+1,n)}var r,i,s,u=0;if(a={},c){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(c){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,c;try{if(window.localStorage)return localStorage}catch(u){}return l="tinymce",o=document.documentElement,c=!!o.addBehavior,c&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(Le,[b,l,x,C,f,u],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each(i,function(e,t){a[t]=e}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(He,[$,f],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t=this,n=t.settings,r,i,o,a;r=n.firstControlClass,i=n.lastControlClass,e.each(function(e){e.classes.remove(r).remove(i).add(n.controlClass),e.visible()&&(o||(o=e),a=e)}),o&&o.classes.add(r),a&&a.classes.add(i)},renderHtml:function(e){var t=this,n="";return t.applyClasses(e.items()),e.items().each(function(e){n+=e.renderHtml()}),n},recalc:function(){},postRender:function(){},isNative:function(){return!1}})}),r(Pe,[He],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}})}),r(Oe,[te,le],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'" role="presentation"><div class="'+t+'tooltip-arrow"></div><div class="'+t+'tooltip-inner">'+e.encode(e.state.get("text"))+"</div></div>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._super()},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Ie,[te,Oe],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.classes.toggle("tooltip-n","bc-tc"==i),r.classes.toggle("tooltip-nw","bc-tl"==i),r.classes.toggle("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return n||(n=new t({type:"tooltip"}),n.renderTo()),n},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){function e(e){n.aria("disabled",e),n.classes.toggle("disabled",e)}function t(e){n.aria("pressed",e),n.classes.toggle("active",e)}var n=this;return n.state.on("change:disabled",function(t){e(t.value)}),n.state.on("change:active",function(e){t(e.value)}),n.state.get("disabled")&&e(!0),n.state.get("active")&&t(!0),n._super()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(Fe,[Ie],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t._super(e),e=t.settings,n=t.settings.size,t.on("click mousedown",function(e){e.preventDefault()}),t.on("touchstart",function(e){t.fire("click",e),e.preventDefault()}),e.subtype&&t.classes.add(e.subtype),n&&t.classes.add("btn-"+n),e.icon&&t.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e=this.getEl().firstChild,t;e&&(t=e.style,t.width=t.height="100%"),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("icon"),i,o=e.state.get("text");return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",o&&e.classes.add("btn-has-text"),r=e.settings.icon?n+"ico "+n+"i-"+r:"",'<div id="'+t+'" class="'+e.classes+'" tabindex="-1" aria-labelledby="'+t+'"><button role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+i+"></i>":"")+(o?e.encode(o):"")+"</button></div>"},bindStates:function(){function e(e){for(var n=t.getEl().firstChild.firstChild;n;n=n.nextSibling)3==n.nodeType&&(n.data=t.translate(e));t.classes.toggle("btn-has-text",!!e)}var t=this;return t.state.on("change:text",function(t){e(t.value)}),t.state.on("change:icon",function(n){var r=n.value,i=t.classPrefix;t.settings.icon=r,r=r?i+"ico "+i+"i-"+t.settings.icon:"";var o=t.getEl().firstChild,a=o.getElementsByTagName("i")[0];r?(a&&a==o.firstChild||(a=document.createElement("i"),o.insertBefore(a,o.firstChild)),a.className=r):a&&o.removeChild(a),e(t.state.get("text"))}),t._super()}})}),r(ze,[ie],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(We,[Ie],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'" unselectable="on" aria-labelledby="'+t+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+t+'-al" class="'+n+'label">'+e.encode(e.state.get("text"))+"</span></div>"},bindStates:function(){function e(e){t.classes.toggle("checked",e),t.aria("checked",e)}var t=this;return t.state.on("change:text",function(e){t.getEl("al").firstChild.data=t.translate(e.value)}),t.state.on("change:checked change:value",function(n){t.fire("change"),e(n.value)}),t.state.on("change:icon",function(e){var n=e.value,r=t.classPrefix;if("undefined"==typeof n)return t.settings.icon;t.settings.icon=n,n=n?r+"ico "+r+"i-"+t.settings.icon:"";var i=t.getEl().firstChild,o=i.getElementsByTagName("i")[0];n?(o&&o==i.firstChild||(o=document.createElement("i"),i.insertBefore(o,i.firstChild)),o.className=n):o&&i.removeChild(o)}),t.state.get("checked")&&e(!0),t._super()}})}),r(Ve,[Ie,ne,J,h],function(e,t,n,r){return e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.classes.add("combobox"),t.subinput=!0,t.ariaTarget="inp",e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){var i=n.target,o=t.getEl();if(r.contains(o,i)||i==o)for(;i&&i!=o;)i.id&&-1!=i.id.indexOf("-open")&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),i=i.parentNode}),t.on("keydown",function(e){"INPUT"==e.target.nodeName&&13==e.keyCode&&t.parents().reverse().each(function(n){var r=t.state.get("value"),i=t.getEl("inp").value;return e.preventDefault(),t.state.set("value",i),r!=i&&t.fire("change"),n.hasEventListeners("submit")&&n.toJSON?(n.fire("submit",{data:n.toJSON()}),!1):void 0})}),t.on("keyup",function(e){"INPUT"==e.target.nodeName&&t.state.set("value",e.target.value)})},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),i=e.getEl("open"),o=e.layoutRect(),a,s;a=i?o.w-n.getSize(i).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(s=e.layoutRect().h-2+"px"),r(t.firstChild).css({width:a,lineHeight:s}),e._super(),e},postRender:function(){var e=this;return r(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=e.state.get("value")||"",o,a,s="",l="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e.state.get("text"),(o||a)&&(s='<div id="'+t+'-open" class="'+r+"btn "+r+'open" tabIndex="-1" role="button"><button id="'+t+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!=o?'<i class="'+o+'"></i>':'<i class="'+r+'caret"></i>')+(a?(o?" ":"")+a:"")+"</button></div>",e.classes.add("has-open")),'<div id="'+t+'" class="'+e.classes+'"><input id="'+t+'-inp" class="'+r+'textbox" value="'+e.encode(i,!1)+'" hidefocus="1"'+l+' placeholder="'+e.encode(n.placeholder)+'" />'+s+"</div>"},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl("inp").value!=t.value&&(e.getEl("inp").value=t.value)}),e.state.on("change:disabled",function(t){e.getEl("inp").disabled=t.value}),e._super()},remove:function(){r(this.getEl("inp")).off(),this._super()}})}),r(Ue,[Ve],function(e){return e.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl().getElementsByTagName("i")[0];if(t)try{t.style.background=e}catch(n){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e._rendered&&e.repaintColor(t.value)}),e._super()}})}),r($e,[Fe,ue],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(qe,[$e,b],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("text"),i=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"";return'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(i?'<i class="'+i+'"'+o+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+(r?(i?" ":"")+r:"")+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(je,[],function(){function e(e){function i(e,i,o){var a,s,l,c,u,d;return a=0,s=0,l=0,e/=255,i/=255,o/=255,u=t(e,t(i,o)),d=n(e,n(i,o)),u==d?(l=u,{h:0,s:0,v:100*l}):(c=e==u?i-o:o==u?e-i:o-e,a=e==u?3:o==u?1:5,a=60*(a-c/(d-u)),s=(d-u)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function o(e,i,o){var a,s,l,c;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return void(d=f=h=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),c=o-s,Math.floor(a)){case 0:d=s,f=l,h=0;break;case 1:d=l,f=s,h=0;break;case 2:d=0,f=s,h=l;break;case 3:d=0,f=l,h=s;break;case 4:d=l,f=0,h=s;break;case 5:d=s,f=0,h=l;break;default:d=f=h=0}d=r(255*(d+c)),f=r(255*(f+c)),h=r(255*(h+c))}function a(){function e(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(h)}function s(){return{r:d,g:f,b:h}}function l(){return i(d,f,h)}function c(e){var t;return"object"==typeof e?"r"in e?(d=e.r,f=e.g,h=e.b):"v"in e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),h=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),h=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),h=parseInt(t[3]+t[3],16)),d=0>d?0:d>255?255:d,f=0>f?0:f>255?255:f,h=0>h?0:h>255?255:h,u}var u=this,d=0,f=0,h=0;
-e&&c(e),u.toRgb=s,u.toHsv=l,u.toHex=a,u.parse=c}var t=Math.min,n=Math.max,r=Math.round;return e}),r(Ke,[Ie,oe,J,je],function(e,t,n,r){return e.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){function e(e,t){var r=n.getPos(e),i,o;return i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function i(e,t){var i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(h,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function o(t){var n;n=e(f,t),c.s=100*n.x,c.v=100*(1-n.y),i(c),s.fire("change")}function a(t){var n;n=e(u,t),c=l.toHsv(),c.h=360*(1-n.y),i(c,!0),s.fire("change")}var s=this,l=s.color(),c,u,d,f,h;u=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),h=s.getEl("svp"),s._repaint=function(){c=l.toHsv(),i(c)},s._super(),s._svdraghelper=new t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){var t=this;return arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return this._color||(this._color=new r),this._color},renderHtml:function(){function e(){var e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;t>e;e++)n+='<div class="'+r+'colorpicker-h-chunk" style="height:'+100/t+"%;"+i+a[e]+",endColorstr="+a[e+1]+");-ms-"+i+a[e]+",endColorstr="+a[e+1]+')"></div>';return n}var t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background: -ms-linear-gradient(top,"+o+");background: linear-gradient(to bottom,"+o+");";return i='<div id="'+n+'-h" class="'+r+'colorpicker-h" style="'+a+'">'+e()+'<div id="'+n+'-hp" class="'+r+'colorpicker-h-marker"></div></div>','<div id="'+n+'" class="'+t.classes+'"><div id="'+n+'-sv" class="'+r+'colorpicker-sv"><div class="'+r+'colorpicker-overlay1"><div class="'+r+'colorpicker-overlay2"><div id="'+n+'-svp" class="'+r+'colorpicker-selector1"><div class="'+r+'colorpicker-selector2"></div></div></div></div></div>'+i+"</div>"}})}),r(Ye,[Ie],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.classes.add("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.row()[n],index:n})}),t.row(t.settings.row)},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){var e=this;return'<div id="'+e._id+'" class="'+e.classes+'">'+e._getDataPathHtml(e.state.get("row"))+"</div>"},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(e){var t=this,n=e||[],r,i,o="",a=t.classPrefix;for(r=0,i=n.length;i>r;r++)o+=(r>0?'<div class="'+a+'divider" aria-hidden="true"> '+t.settings.delimiter+" </div>":"")+'<div role="button" class="'+a+"path-item"+(r==i-1?" "+a+"last":"")+'" data-index="'+r+'" tabindex="-1" id="'+t._id+"-"+r+'" aria-level="'+r+'">'+n[r].name+"</div>";return o||(o='<div class="'+a+'path-item">\xa0</div>'),o}})}),r(Ge,[Ye,ke],function(e,t){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var n=this,r=t.activeEditor;return r.settings.elementpath!==!1&&(n.on("select",function(e){r.focus(),r.selection.select(this.row()[e.index].element),r.nodeChanged()}),r.on("nodeChange",function(t){for(var i=[],o=t.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=r.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}n.row(i)})),n._super()}})}),r(Xe,[ie],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(Je,[ie,Xe,f],function(e,t,n){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var i,o=r.settings.label;o&&(i=new t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.fromJSON(e.settings.data)},bindStates:function(){function e(){var e=0,n=[],r,i,o;if(t.settings.labelGapCalc!==!1)for(o="children"==t.settings.labelGapCalc?t.find("formitem"):t.items(),o.filter("formitem").each(function(t){var r=t.items()[0],i=r.getEl().clientWidth;e=i>e?i:e,n.push(r)}),i=t.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=e+i}var t=this;t._super(),t.on("show",e),e()}})}),r(Qe,[Je],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}})}),r(Ze,[Ve,f],function(e,t){return e.extend({init:function(e){var n=this,r=tinymce.activeEditor,i=r.settings,o,a,s;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[, ]/)),(!s||s[e.filetype])&&(a=i.file_picker_callback,!a||s&&!s[e.filetype]?(a=i.file_browser_callback,!a||s&&!s[e.filetype]||(o=function(){a(n.getEl("inp").id,n.value(),e.filetype,window)})):o=function(){var i=n.fire("beforecall").meta;i=t.extend({filetype:e.filetype},i),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),i)}),o&&(e.icon="browse",e.onaction=o),n._super(e)}})}),r(et,[Pe],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(tt,[Pe],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v=[],y,b,x,C,w,_,E,N,S,k,T,R,A,B,D,M,L,H,P,O,I,F,z=Math.max,W=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e.paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,c=a.spacing||0,("row-reversed"==f||"column-reverse"==f)&&(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(S="y",E="h",N="minH",k="maxH",R="innerH",T="top",A="deltaH",B="contentH",P="left",L="w",D="x",M="innerW",H="minW",O="right",I="deltaW",F="contentW"):(S="x",E="w",N="minW",k="maxW",R="innerW",T="left",A="deltaW",B="contentW",P="top",L="h",D="y",M="innerH",H="minH",O="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],_=u=0,t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),m=h.settings,g=m.flex,d-=n-1>t?c:0,g>0&&(u+=g,p[k]&&v.push(h),p.flex=g),d-=p[N],y=o[P]+p[H]+o[O],y>_&&(_=y);if(C={},0>d?C[N]=i[N]-d+i[A]:C[N]=i[R]-d+i[A],C[H]=_+i[I],C[B]=i[R]-d,C[F]=_,C.minW=W(C.minW,i.maxW),C.minH=W(C.minH,i.maxH),C.minW=z(C.minW,i.startMinWidth),C.minH=z(C.minH,i.startMinHeight),!i.autoResize||C.minW==i.minW&&C.minH==i.minH){for(x=d/u,t=0,n=v.length;n>t;t++)h=v[t],p=h.layoutRect(),b=p[k],y=p[N]+p.flex*x,y>b?(d-=p[k]-p[N],u-=p.flex,p.flex=0,p.maxFlexSize=b):p.maxFlexSize=0;for(x=d/u,w=o[T],C={},0===u&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],0>w&&(w=o[T])):"justify"==l&&(w=o[T],c=Math.floor(d/(r.length-1)))),C[D]=o[P],t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),y=p.maxFlexSize||p[N],"center"===s?C[D]=Math.round(i[M]/2-p[L]/2):"stretch"===s?(C[L]=z(p[H]||0,i[M]-o[P]-o[O]),C[D]=o[P]):"end"===s&&(C[D]=i[M]-p[L]-o.top),p.flex>0&&(y+=p.flex*x),C[E]=y,C[S]=w,h.layoutRect(C),h.recalc&&h.recalc(),w+=y+c}else if(C.w=C.minW,C.h=C.minH,e.layoutRect(C),this.recalc(e),null===e._lastRect){var V=e.parent();V&&(V._lastRect=null,V.recalc())}}})}),r(nt,[He],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}})}),r(rt,[te,Ie,ue,f,ke,u],function(e,t,n,r,i,o){function a(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;s(i.parents,function(e){return s(t,function(t){return n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a?!1:void 0}),a?!1:void 0}),r.value(a)})}}function r(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function i(){function t(e){var n=[];if(e)return s(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){s(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){return this.settings.format?e.formatter.getCssText(this.settings.format):void 0},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&l(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function o(t){return function(){function n(){return e.undoManager?e.undoManager[t]():!1}var r=this;t="redo"==t?"hasRedo":"hasUndo",r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos",function(){r.disabled(!n())})}}function a(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function l(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}var c;c=i(),s({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:function(){var t=this;e.formatter?e.formatter.formatChanged(n,function(e){t.active(e)}):e.on("init",function(){e.formatter.formatChanged(n,function(e){t.active(e)})})},onclick:function(){l(n)}})}),s({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),s({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:function(){var t=this;e.formatter?e.formatter.formatChanged(n,function(e){t.active(e)}):e.on("init",function(){e.formatter.formatChanged(n,function(e){t.active(e)})})}})}),e.addButton("undo",{tooltip:"Undo",onPostRender:o("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:o("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:o("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:o("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:a,cmd:"mceToggleVisualAid"}),e.addButton("remove",{tooltip:"Remove",icon:"remove",cmd:"Delete"}),s({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:c}),e.addButton("formatselect",function(){var n=[],i=r(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");return s(i,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:i[0][0],values:n,fixedWidth:!0,onselect:l,onPostRender:t(n)}}),e.addButton("fontselect",function(){var n="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",i=[],o=r(e.settings.font_formats||n);return s(o,function(e){i.push({text:{raw:e[0]},value:e[1],textStyle:-1==e[1].indexOf("dings")?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:i,fixedWidth:!0,onPostRender:t(i,"fontname"),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var n=[],r="8pt 10pt 12pt 14pt 18pt 24pt 36pt",i=e.settings.fontsize_formats||r;return s(i.split(" "),function(e){var t=e,r=e,i=e.split("=");i.length>1&&(t=i[0],r=i[1]),n.push({text:t,value:r})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:n,fixedWidth:!0,onPostRender:t(n,"fontsize"),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:c})}var s=r.each;i.on("AddEditor",function(t){t.editor.rtl&&(e.rtl=!0),a(t.editor)}),e.translate=function(e){return i.translate(e)},t.tooltips=!o.iOS}),r(it,[Pe],function(e){return e.extend({recalc:function(e){var t=e.settings,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,x,C,w,_,E=[],N=[],S,k,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,x=t.alignH||t.align,C=t.alignV||t.align,g=e.paddingBox,A="reverseRows"in t?t.reverseRows:e.isRtl(),x&&"string"==typeof x&&(x=[x]),C&&"string"==typeof C&&(C=[C]);for(d=0;r>d;d++)E.push(0);for(f=0;n>f;f++)N.push(0);for(f=0;n>f;f++)for(d=0;r>d&&(u=i[f*r+d],u);d++)c=u.layoutRect(),S=c.minW,k=c.minH,E[d]=S>E[d]?S:E[d],N[f]=k>N[f]?k:N[f];for(T=o.innerW-g.left-g.right,w=0,d=0;r>d;d++)w+=E[d]+(d>0?y:0),T-=(d>0?y:0)+E[d];for(R=o.innerH-g.top-g.bottom,_=0,f=0;n>f;f++)_+=N[f]+(f>0?b:0),R-=(f>0?b:0)+N[f];if(w+=g.left+g.right,_+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=_+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var M=0,L=t.flexWidths;if(L)for(d=0;d<L.length;d++)M+=L[d];else M=r;var H=T/M;for(d=0;r>d;d++)E[d]+=L?L[d]*H:H;for(p=g.top,f=0;n>f;f++){for(h=g.left,s=N[f]+D,d=0;r>d&&(B=A?f*r+r-1-d:f*r+d,u=i[B],u);d++)m=u.settings,c=u.layoutRect(),a=Math.max(E[d],c.startMinWidth),c.x=h,c.y=p,v=m.alignH||(x?x[d]||x[0]:null),"center"==v?c.x=h+a/2-c.w/2:"right"==v?c.x=h+a-c.w:"stretch"==v&&(c.w=a),v=m.alignV||(C?C[d]||C[0]:null),"center"==v?c.y=p+s/2-c.h/2:"bottom"==v?c.y=p+s-c.h:"stretch"==v&&(c.h=s),u.layoutRect(c),h+=a+y,u.recalc&&u.recalc();p+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var P=e.parent();P&&(P._lastRect=null,P.recalc())}}})}),r(ot,[Ie],function(e){return e.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes+'" tabindex="-1" src="'+(e.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,t){var n=this,r=this.getEl().contentWindow.document.body;return r?(r.innerHTML=e,t&&t()):setTimeout(function(){n.html(e)},0),this}})}),r(at,[Ie,J],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,n=e._super();if(e.settings.multiline){var r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.classes.add("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return n},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},renderHtml:function(){var e=this,t=e.settings.forId;return'<label id="'+e._id+'" class="'+e.classes+'"'+(t?' for="'+t+'"':"")+">"+e.encode(e.state.get("text"))+"</label>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value))}),e._super()}})}),r(st,[ie],function(e){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.classes.add("toolbar")},postRender:function(){var e=this;return e.items().each(function(e){e.classes.add("toolbar-item")}),e._super()}})}),r(lt,[st],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(ct,[Fe,ne,lt],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(){var e=this,n;return e.menu&&e.menu.visible()?e.hideMenu():(e.menu||(n=e.state.get("menu")||[],n.length?n={type:"menu",items:n}:n.type=n.type||"menu",n.renderTo?e.menu=n.parent(e).show().renderTo():e.menu=t.create(n).parent(e).renderTo(),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control.parent()===e.menu&&(t.stopPropagation(),e.focus(),e.hideMenu())}),e.menu.on("select",function(){e.focus()}),e.menu.on("show hide",function(t){t.control==e.menu&&e.activeMenu("show"==t.type),e.aria("expanded","show"==t.type)}).fire("show")),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),void e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]))},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon,o,a=e.state.get("text");return o=e.settings.image,o?(i="none","string"!=typeof o&&(o=window.getSelection?o[0]:o[1]),o=" style=\"background-image: url('"+o+"')\""):o="",i=e.settings.icon?r+"ico "+r+"i-"+i:"",e.aria("role",e.parent()instanceof n?"menuitem":"button"),'<div id="'+t+'" class="'+e.classes+'" tabindex="-1" aria-labelledby="'+t+'"><button id="'+t+'-open" role="presentation" type="button" tabindex="-1">'+(i?'<i class="'+i+'"'+o+"></i>":"")+(a?(i?"\xa0":"")+e.encode(a):"")+' <i class="'+r+'caret"></i></button></div>'},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.showMenu(),t.aria&&e.menu.items()[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});return i}),r(ut,[Ie,ne,u],function(e,t,n){return e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t=this,n;t._super(e),e=t.settings,t.classes.add("menu-item"),e.menu&&t.classes.add("menu-item-expand"),e.preview&&t.classes.add("menu-item-preview"),n=t.state.get("text"),("-"===n||"|"===n)&&(t.classes.add("menu-item-sep"),t.aria("role","separator"),t.state.set("text","-")),e.selectable&&(t.aria("role","menuitemcheckbox"),t.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||t.classes.add("menu-item-normal"),t.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(),r.reflow(),r.on("cancel",function(t){t.stopPropagation(),e.focus(),r.hide()}),r.on("show hide",function(e){e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),r.on("hide",function(t){t.control===r&&e.classes.remove("selected")}),r.submenu=!0),r._parentMenu=i,r.classes.add("menu-sub");var o=r.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),r.rel=o,o="menu-sub-"+o,r.classes.remove(r._lastRel).add(o),r._lastRel=o,e.classes.add("selected"),e.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){function e(e){var t,r,i={};for(i=n.mac?{alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{meta:"Ctrl"},e=e.split("+"),t=0;t<e.length;t++)r=i[e[t].toLowerCase()],r&&(e[t]=r);return e.join("+")}var t=this,r=t._id,i=t.settings,o=t.classPrefix,a=t.encode(t.state.get("text")),s=t.settings.icon,l="",c=i.shortcut;return s&&t.parent().classes.add("menu-has-icons"),i.image&&(s="none",l=" style=\"background-image: url('"+i.image+"')\""),c&&(c=e(c)),s=o+"ico "+o+"i-"+(t.settings.icon||"none"),'<div id="'+r+'" class="'+t.classes+'" tabindex="-1">'+("-"!==a?'<i class="'+s+'"'+l+"></i>\xa0":"")+("-"!==a?'<span id="'+r+'-text" class="'+o+'text">'+a+"</span>":"")+(c?'<div id="'+r+'-shortcut" class="'+o+'menu-shortcut">'+c+"</div>":"")+(i.menu?'<div class="'+o+'caret"></div>':"")+"</div>"},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var r=e.getEl("text");r&&r.setAttribute("style",n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),e.parent().hideAll()))}),e._super(),e},active:function(e){return"undefined"!=typeof e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(dt,[ue,ut,f],function(e,t,n){var r=e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var t=this;if(e.autohide=!0,e.constrainToViewport=!0,e.itemDefaults)for(var r=e.items,i=r.length;i--;)r[i]=n.extend({},e.itemDefaults,r[i]);t._super(e),t.classes.add("menu")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("select")},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;return n.icon||n.image||n.selectable?(e._hasIcons=!0,!1):void 0}),e._super()}});return r}),r(ft,[ct,dt],function(e,t){return e.extend({init:function(e){function t(r){for(var a=0;a<r.length;a++){if(i=r[a].selected||e.value===r[a].value)return o=o||r[a].text,n.state.set("value",r[a].value),!0;if(r[a].menu&&t(r[a].menu))return!0}}var n=this,r,i,o,a;n._super(e),e=n.settings,n._values=r=e.values,r&&("undefined"!=typeof e.value&&t(r),!i&&r.length>0&&(o=r[0].text,n.state.set("value",r[0].value)),n.state.set("menu",r)),n.state.set("text",e.text||o||r[0].text),n.classes.add("listbox"),n.on("select",function(t){var r=t.control;a&&(t.lastControl=a),e.multiple?r.active(!r.active()):n.value(t.control.value()),a=r})},bindStates:function(){function e(e,n){e instanceof t&&e.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}function n(e,t){var r;if(e)for(var i=0;i<e.length;i++){if(e[i].value===t)return e[i];if(e[i].menu&&(r=n(e[i].menu,t)))return r}}var r=this;return r.on("show",function(t){e(t.control,r.value())}),r.state.on("change:value",function(e){var t=n(r.state.get("menu"),e.value);t?r.text(t.text):r.text(r.settings.text)}),r._super()}})}),r(ht,[We],function(e){return e.extend({Defaults:{classes:"radio",role:"radio"}})}),r(pt,[],function(){function e(e,t,n){var r,i,o,a,l,c;return r=t.x,i=t.y,o=e.w,a=e.h,l=t.w,c=t.h,n=(n||"").split(""),"b"===n[0]&&(i+=c),"r"===n[1]&&(r+=l),"c"===n[0]&&(i+=s(c/2)),"c"===n[1]&&(r+=s(l/2)),"b"===n[3]&&(i-=a),"r"===n[4]&&(r-=o),"c"===n[3]&&(i-=s(a/2)),"c"===n[4]&&(r-=s(o/2)),{x:r,y:i,w:o,h:a}}function t(t,n,r,i){var o,a;for(a=0;a<i.length;a++)if(o=e(t,n,i[a]),o.x>=r.x&&o.x+o.w<=r.w+r.x&&o.y>=r.y&&o.y+o.h<=r.h+r.y)return i[a]}function n(e,t,n){return{x:e.x-t,y:e.y-n,w:e.w+2*t,h:e.h+2*n}}function r(e,t){var n,r,i,s;return n=a(e.x,t.x),r=a(e.y,t.y),i=o(e.x+e.w,t.x+t.w),s=o(e.y+e.h,t.y+t.h),0>i-n||0>s-r?null:{x:n,y:r,w:i-n,h:s-r}}function i(e,t,n){var r,i,o,s,l,c,u,d,f,h;return l=e.x,c=e.y,u=e.x+e.w,d=e.y+e.h,f=t.x+t.w,h=t.y+t.h,r=a(0,t.x-l),i=a(0,t.y-c),o=a(0,u-f),s=a(0,d-h),l+=r,c+=i,n&&(u+=r,d+=i,l-=o,c-=s),u-=o,d-=s,{x:l,y:c,w:u-l,h:d-c}}var o=Math.min,a=Math.max,s=Math.round;return{inflate:n,relativePosition:e,findBestRelativePosition:t,intersect:r,clamp:i}}),r(mt,[Ie,oe],function(e,t){return e.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.classes.add("resizehandle"),"both"==e.settings.direction&&e.classes.add("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"><i class="'+t+"ico "+t+'i-resize"></i></div>'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(gt,[Ie,oe,J],function(e,t,n){function r(e,t,n){return t>e&&(e=t),e>n&&(e=n),e}function i(e,t){var r,i,o,a,s;"v"==e.settings.orientation?(a="top",o="height",i="h"):(a="left",o="width",i="w"),r=(e.layoutRect()[i]||100)-n.getSize(e.getEl("handle"))[o],s=r*((t-e._minValue)/(e._maxValue-e._minValue))+"px",e.getEl("handle").style[a]=s,e.getEl("handle").style.height=e.layoutRect().h+"px"}return e.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"==e.orientation&&t.classes.add("vertical"),t._minValue=e.minValue||0,t._maxValue=e.maxValue||100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'"><div id="'+t+'-handle" class="'+n+'slider-handle"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){var e=this,i,o,a=0,s,l,c,u,d,f,h,p;l=e._minValue,c=e._maxValue,s=e.value(),"v"==e.settings.orientation?(d="screenY",f="top",h="height",p="h"):(d="screenX",f="left",h="width",p="w"),e._super(),e._dragHelper=new t(e._id,{handle:e._id+"-handle",start:function(t){i=t[d],o=parseInt(e.getEl("handle").style[f],10),u=(e.layoutRect()[p]||100)-n.getSize(e.getEl("handle"))[h],e.fire("dragstart",{value:s})},drag:function(t){var n=t[d]-i,h=e.getEl("handle");a=r(o+n,0,u),h.style[f]=a+"px",s=l+a/u*(c-l),e.value(s),e.tooltip().text(""+e.settings.previewFilter(s)).show().moveRel(h,"bc tc"),e.fire("drag",{value:s})},stop:function(){e.tooltip().hide(),e.fire("dragend",{value:s})}})},repaint:function(){this._super(),i(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){i(e,t.value)}),e._super()}})}),r(vt,[Ie],function(e){return e.extend({renderHtml:function(){var e=this;return e.classes.add("spacer"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"></div>'}})}),r(yt,[ct,J,h],function(e,t,n){return e.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e=this,r=e.getEl(),i=e.layoutRect(),o,a;return e._super(),o=r.firstChild,a=r.lastChild,n(o).css({width:i.w-t.getSize(a).width,height:i.h-2}),n(a).css({height:i.h-2}),e},activeMenu:function(e){
-var t=this;n(t.getEl().lastChild).toggleClass(t.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r,i=e.state.get("icon"),o=e.state.get("text");return r=e.settings.image,r?(i="none","string"!=typeof r&&(r=window.getSelection?r[0]:r[1]),r=" style=\"background-image: url('"+r+"')\""):r="",i=e.settings.icon?n+"ico "+n+"i-"+i:"",'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(i?'<i class="'+i+'"'+r+"></i>":"")+(o?(i?" ":"")+o:"")+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1">'+(e._menuBtnText?(i?"\xa0":"")+e._menuBtnText:"")+' <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){var n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&-1==n.className.indexOf("open"))return e.stopImmediatePropagation(),void(t&&t.call(this,e));n=n.parentNode}}),delete e.settings.onclick,e._super()}})}),r(bt,[nt],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}})}),r(xt,[se,h,J],function(e,t,n){return e.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var n;this.activeTabId&&(n=this.getEl(this.activeTabId),t(n).removeClass(this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t(n).addClass(this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!=n&&t.hide()})},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){var o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='<div id="'+o+'" class="'+r+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+e.encode(t.settings.title)+"</div>"}),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1"><div id="'+e._id+'-head" class="'+r+'tabs" role="tablist">'+n+'</div><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(t.target.parentNode.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,t,r,i;r=n.getSize(e.getEl("head")).width,r=0>r?0:r,i=0,e.items().each(function(e){r=Math.max(r,e.layoutRect().minW),i=Math.max(i,e.layoutRect().minH)}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var o=n.getSize(e.getEl("head")).height;return e.settings.minWidth=r,e.settings.minHeight=i+o,t=e._super(),t.deltaH+=o,t.innerH=t.h-t.deltaH,t}})}),r(Ct,[Ie],function(e){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("textbox"),e.multiline?t.classes.add("multiline"):(t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){return e.toJSON?(n=e,!1):void 0}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){t.state.set("value",e.target.value)}))},repaint:function(){var e=this,t,n,r,i=0,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e.borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.encode(e.state.get("value"),!1),i="";return"spellcheck"in n&&(i+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(i+=' maxlength="'+n.maxLength+'"'),n.size&&(i+=' size="'+n.size+'"'),n.subtype&&(i+=' type="'+n.subtype+'"'),e.disabled()&&(i+=' disabled="disabled"'),n.multiline?'<textarea id="'+t+'" class="'+e.classes+'" '+(n.rows?' rows="'+n.rows+'"':"")+' hidefocus="1"'+i+">"+r+"</textarea>":'<input id="'+t+'" class="'+e.classes+'" value="'+r+'" hidefocus="1"'+i+" />"},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var e=this;e._super(),e.$el.on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl().value!=t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.value}),e._super()},remove:function(){this.$el.off(),this._super()}})}),r(wt,[h,te],function(e,t){return function(n,r){var i=this,o,a=t.classPrefix;i.show=function(t,s){return i.hide(),o=!0,window.setTimeout(function(){o&&(e(n).append('<div class="'+a+"throbber"+(r?" "+a+"throbber-inline":"")+'"></div>'),s&&s())},t||0),i},i.hide=function(){var e=n.lastChild;return e&&-1!=e.className.indexOf("throbber")&&e.parentNode.removeChild(e),o=!1,i}}}),a([l,c,u,f,h,p,m,v,b,x,C,w,E,N,S,k,T,R,A,D,M,L,H,I,F,V,U,$,q,K,G,X,ee,te,ne,re,ie,oe,ae,se,le,ce,ue,de,fe,he,me,ge,ve,Ee,Ne,Se,ke,Re,Ae,Be,De,Me,Le,He,Pe,Oe,Ie,Fe,ze,We,Ve,Ue,$e,qe,je,Ke,Ye,Ge,Xe,Je,Qe,Ze,et,tt,nt,rt,it,ot,at,st,lt,ct,ut,dt,ft,ht,pt,mt,gt,vt,yt,bt,xt,Ct,wt])}(this);
\ No newline at end of file
+// 4.2.8 (2015-11-13)
+!function(e,t){"use strict";function n(e,t){for(var n,r=[],i=0;i<e.length;++i){if(n=s[e[i]]||o(e[i]),!n)throw"module definition dependecy not found: "+e[i];r.push(n)}t.apply(null,r)}function r(e,r,i){if("string"!=typeof e)throw"invalid module definition, module id must be defined and be a string";if(r===t)throw"invalid module definition, dependencies must be specified";if(i===t)throw"invalid module definition, definition function must be specified";n(r,function(){s[e]=i.apply(null,arguments)})}function i(e){return!!s[e]}function o(t){for(var n=e,r=t.split(/[.\/]/),i=0;i<r.length;++i){if(!n[r[i]])return;n=n[r[i]]}return n}function a(n){var r,i,o,a,l;for(r=0;r<n.length;r++){i=e,o=n[r],a=o.split(/[.\/]/);for(var c=0;c<a.length-1;++c)i[a[c]]===t&&(i[a[c]]={}),i=i[a[c]];i[a[a.length-1]]=s[o]}if(e.AMDLC_TESTS){l=e.privateModules||{};for(o in s)l[o]=s[o];for(r=0;r<n.length;r++)delete l[n[r]];e.privateModules=l}}var s={},l="tinymce/dom/EventUtils",c="tinymce/dom/Sizzle",u="tinymce/Env",d="tinymce/util/Arr",f="tinymce/util/Tools",h="tinymce/dom/DomQuery",p="tinymce/html/Styles",m="tinymce/dom/TreeWalker",g="tinymce/dom/Range",v="tinymce/html/Entities",y="tinymce/dom/StyleSheetLoader",b="tinymce/dom/DOMUtils",x="tinymce/dom/ScriptLoader",C="tinymce/AddOnManager",w="tinymce/dom/RangeUtils",_="tinymce/NodeChange",E="tinymce/html/Node",N="tinymce/html/Schema",S="tinymce/html/SaxParser",k="tinymce/html/DomParser",T="tinymce/html/Writer",R="tinymce/html/Serializer",A="tinymce/dom/Serializer",B="tinymce/dom/TridentSelection",D="tinymce/util/VK",L="tinymce/dom/ControlSelection",M="tinymce/dom/BookmarkManager",H="tinymce/dom/Selection",P="tinymce/dom/ElementUtils",O="tinymce/fmt/Preview",I="tinymce/Formatter",F="tinymce/UndoManager",z="tinymce/EnterKey",W="tinymce/ForceBlocks",V="tinymce/EditorCommands",U="tinymce/util/URI",$="tinymce/util/Class",q="tinymce/util/EventDispatcher",j="tinymce/data/Binding",K="tinymce/util/Observable",Y="tinymce/data/ObservableObject",G="tinymce/ui/Selector",X="tinymce/ui/Collection",J="tinymce/ui/DomUtils",Q="tinymce/ui/BoxUtils",Z="tinymce/ui/ClassList",ee="tinymce/ui/ReflowQueue",te="tinymce/ui/Control",ne="tinymce/ui/Factory",re="tinymce/ui/KeyboardNavigation",ie="tinymce/ui/Container",oe="tinymce/ui/DragHelper",ae="tinymce/ui/Scrollable",se="tinymce/ui/Panel",le="tinymce/ui/Movable",ce="tinymce/ui/Resizable",ue="tinymce/ui/FloatPanel",de="tinymce/ui/Window",fe="tinymce/ui/MessageBox",he="tinymce/WindowManager",pe="tinymce/dom/NodePath",me="tinymce/util/Quirks",ge="tinymce/EditorObservable",ve="tinymce/Shortcuts",ye="tinymce/util/Promise",be="tinymce/util/Fun",xe="tinymce/file/Uploader",Ce="tinymce/file/Conversions",we="tinymce/file/ImageScanner",_e="tinymce/file/BlobCache",Ee="tinymce/EditorUpload",Ne="tinymce/Editor",Se="tinymce/util/I18n",ke="tinymce/FocusManager",Te="tinymce/EditorManager",Re="tinymce/LegacyInput",Ae="tinymce/util/XHR",Be="tinymce/util/JSON",De="tinymce/util/JSONRequest",Le="tinymce/util/JSONP",Me="tinymce/util/LocalStorage",He="tinymce/Compat",Pe="tinymce/ui/Layout",Oe="tinymce/ui/AbsoluteLayout",Ie="tinymce/ui/Tooltip",Fe="tinymce/ui/Widget",ze="tinymce/ui/Button",We="tinymce/ui/ButtonGroup",Ve="tinymce/ui/Checkbox",Ue="tinymce/ui/ComboBox",$e="tinymce/ui/ColorBox",qe="tinymce/ui/PanelButton",je="tinymce/ui/ColorButton",Ke="tinymce/util/Color",Ye="tinymce/ui/ColorPicker",Ge="tinymce/ui/Path",Xe="tinymce/ui/ElementPath",Je="tinymce/ui/FormItem",Qe="tinymce/ui/Form",Ze="tinymce/ui/FieldSet",et="tinymce/ui/FilePicker",tt="tinymce/ui/FitLayout",nt="tinymce/ui/FlexLayout",rt="tinymce/ui/FlowLayout",it="tinymce/ui/FormatControls",ot="tinymce/ui/GridLayout",at="tinymce/ui/Iframe",st="tinymce/ui/Label",lt="tinymce/ui/Toolbar",ct="tinymce/ui/MenuBar",ut="tinymce/ui/MenuButton",dt="tinymce/ui/MenuItem",ft="tinymce/ui/Menu",ht="tinymce/ui/ListBox",pt="tinymce/ui/Radio",mt="tinymce/ui/Rect",gt="tinymce/ui/ResizeHandle",vt="tinymce/ui/Slider",yt="tinymce/ui/Spacer",bt="tinymce/ui/SplitButton",xt="tinymce/ui/StackLayout",Ct="tinymce/ui/TabPanel",wt="tinymce/ui/TextBox",_t="tinymce/ui/Throbber";r(l,[],function(){function e(e,t,n,r){e.addEventListener?e.addEventListener(t,n,r||!1):e.attachEvent&&e.attachEvent("on"+t,n)}function t(e,t,n,r){e.removeEventListener?e.removeEventListener(t,n,r||!1):e.detachEvent&&e.detachEvent("on"+t,n)}function n(e,t){function n(){return!1}function r(){return!0}var i,o=t||{},l;for(i in e)s[i]||(o[i]=e[i]);if(o.target||(o.target=o.srcElement||document),e&&a.test(e.type)&&e.pageX===l&&e.clientX!==l){var c=o.target.ownerDocument||document,u=c.documentElement,d=c.body;o.pageX=e.clientX+(u&&u.scrollLeft||d&&d.scrollLeft||0)-(u&&u.clientLeft||d&&d.clientLeft||0),o.pageY=e.clientY+(u&&u.scrollTop||d&&d.scrollTop||0)-(u&&u.clientTop||d&&d.clientTop||0)}return o.preventDefault=function(){o.isDefaultPrevented=r,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},o.stopPropagation=function(){o.isPropagationStopped=r,e&&(e.stopPropagation?e.stopPropagation():e.cancelBubble=!0)},o.stopImmediatePropagation=function(){o.isImmediatePropagationStopped=r,o.stopPropagation()},o.isDefaultPrevented||(o.isDefaultPrevented=n,o.isPropagationStopped=n,o.isImmediatePropagationStopped=n),"undefined"==typeof o.metaKey&&(o.metaKey=!1),o}function r(n,r,i){function o(){i.domLoaded||(i.domLoaded=!0,r(c))}function a(){("complete"===l.readyState||"interactive"===l.readyState&&l.body)&&(t(l,"readystatechange",a),o())}function s(){try{l.documentElement.doScroll("left")}catch(e){return void setTimeout(s,0)}o()}var l=n.document,c={type:"ready"};return i.domLoaded?void r(c):(l.addEventListener?"complete"===l.readyState?o():e(n,"DOMContentLoaded",o):(e(l,"readystatechange",a),l.documentElement.doScroll&&n.self===n.top&&s()),void e(n,"load",o))}function i(){function i(e,t){var n,r,i,o,a=s[t];if(n=a&&a[e.type])for(r=0,i=n.length;i>r;r++)if(o=n[r],o&&o.func.call(o.scope,e)===!1&&e.preventDefault(),e.isImmediatePropagationStopped())return}var a=this,s={},l,c,u,d,f;c=o+(+new Date).toString(32),d="onmouseenter"in document.documentElement,u="onfocusin"in document.documentElement,f={mouseenter:"mouseover",mouseleave:"mouseout"},l=1,a.domLoaded=!1,a.events=s,a.bind=function(t,o,h,p){function m(e){i(n(e||_.event),g)}var g,v,y,b,x,C,w,_=window;if(t&&3!==t.nodeType&&8!==t.nodeType){for(t[c]?g=t[c]:(g=l++,t[c]=g,s[g]={}),p=p||t,o=o.split(" "),y=o.length;y--;)b=o[y],C=m,x=w=!1,"DOMContentLoaded"===b&&(b="ready"),a.domLoaded&&"ready"===b&&"complete"==t.readyState?h.call(p,n({type:b})):(d||(x=f[b],x&&(C=function(e){var t,r;if(t=e.currentTarget,r=e.relatedTarget,r&&t.contains)r=t.contains(r);else for(;r&&r!==t;)r=r.parentNode;r||(e=n(e||_.event),e.type="mouseout"===e.type?"mouseleave":"mouseenter",e.target=t,i(e,g))})),u||"focusin"!==b&&"focusout"!==b||(w=!0,x="focusin"===b?"focus":"blur",C=function(e){e=n(e||_.event),e.type="focus"===e.type?"focusin":"focusout",i(e,g)}),v=s[g][b],v?"ready"===b&&a.domLoaded?h({type:b}):v.push({func:h,scope:p}):(s[g][b]=v=[{func:h,scope:p}],v.fakeName=x,v.capture=w,v.nativeHandler=C,"ready"===b?r(t,C,a):e(t,x||b,C,w)));return t=v=0,h}},a.unbind=function(e,n,r){var i,o,l,u,d,f;if(!e||3===e.nodeType||8===e.nodeType)return a;if(i=e[c]){if(f=s[i],n){for(n=n.split(" "),l=n.length;l--;)if(d=n[l],o=f[d]){if(r)for(u=o.length;u--;)if(o[u].func===r){var h=o.nativeHandler,p=o.fakeName,m=o.capture;o=o.slice(0,u).concat(o.slice(u+1)),o.nativeHandler=h,o.fakeName=p,o.capture=m,f[d]=o}r&&0!==o.length||(delete f[d],t(e,o.fakeName||d,o.nativeHandler,o.capture))}}else{for(d in f)o=f[d],t(e,o.fakeName||d,o.nativeHandler,o.capture);f={}}for(d in f)return a;delete s[i];try{delete e[c]}catch(g){e[c]=null}}return a},a.fire=function(e,t,r){var o;if(!e||3===e.nodeType||8===e.nodeType)return a;r=n(null,r),r.type=t,r.target=e;do o=e[c],o&&i(r,o),e=e.parentNode||e.ownerDocument||e.defaultView||e.parentWindow;while(e&&!r.isPropagationStopped());return a},a.clean=function(e){var t,n,r=a.unbind;if(!e||3===e.nodeType||8===e.nodeType)return a;if(e[c]&&r(e),e.getElementsByTagName||(e=e.document),e&&e.getElementsByTagName)for(r(e),n=e.getElementsByTagName("*"),t=n.length;t--;)e=n[t],e[c]&&r(e);return a},a.destroy=function(){s={}},a.cancel=function(e){return e&&(e.preventDefault(),e.stopImmediatePropagation()),!1}}var o="mce-data-",a=/^(?:mouse|contextmenu)|click/,s={keyLocation:1,layerX:1,layerY:1,returnValue:1,webkitMovementX:1,webkitMovementY:1};return i.Event=new i,i.Event.bind(window,"ready",function(){}),i}),r(c,[],function(){function e(e,t,n,r){var i,o,a,s,l,c,d,h,p,m;if((t?t.ownerDocument||t:z)!==D&&B(t),t=t||D,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(M&&!r){if(i=ve.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&I(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return Z.apply(n,t.getElementsByTagName(e)),n;if((a=i[3])&&C.getElementsByClassName)return Z.apply(n,t.getElementsByClassName(a)),n}if(C.qsa&&(!H||!H.test(e))){if(h=d=F,p=t,m=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){for(c=N(e),(d=t.getAttribute("id"))?h=d.replace(be,"\\$&"):t.setAttribute("id",h),h="[id='"+h+"'] ",l=c.length;l--;)c[l]=h+f(c[l]);p=ye.test(e)&&u(t.parentNode)||t,m=c.join(",")}if(m)try{return Z.apply(n,p.querySelectorAll(m)),n}catch(g){}finally{d||t.removeAttribute("id")}}}return k(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>w.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[F]=!0,e}function i(e){var t=D.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=e.length;r--;)w.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||Y)-(~e.sourceIndex||Y);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function l(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function c(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function u(e){return e&&typeof e.getElementsByTagName!==K&&e}function d(){}function f(e){for(var t=0,n=e.length,r="";n>t;t++)r+=e[t].value;return r}function h(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=V++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,l,c=[W,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[F]||(t[F]={}),(s=l[r])&&s[0]===W&&s[1]===o)return c[2]=s[2];if(l[r]=c,c[2]=e(t,n,a))return!0}}}function p(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function m(t,n,r){for(var i=0,o=n.length;o>i;i++)e(t,n[i],r);return r}function g(e,t,n,r,i){for(var o,a=[],s=0,l=e.length,c=null!=t;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),c&&t.push(s));return a}function v(e,t,n,i,o,a){return i&&!i[F]&&(i=v(i)),o&&!o[F]&&(o=v(o,a)),r(function(r,a,s,l){var c,u,d,f=[],h=[],p=a.length,v=r||m(t||"*",s.nodeType?[s]:s,[]),y=!e||!r&&t?v:g(v,f,e,s,l),b=n?o||(r?e:p||i)?[]:a:y;if(n&&n(y,b,s,l),i)for(c=g(b,h),i(c,[],s,l),u=c.length;u--;)(d=c[u])&&(b[h[u]]=!(y[h[u]]=d));if(r){if(o||e){if(o){for(c=[],u=b.length;u--;)(d=b[u])&&c.push(y[u]=d);o(null,b=[],c,l)}for(u=b.length;u--;)(d=b[u])&&(c=o?te.call(r,d):f[u])>-1&&(r[c]=!(a[c]=d))}}else b=g(b===a?b.splice(p,b.length):b),o?o(null,a,b,l):Z.apply(a,b)})}function y(e){for(var t,n,r,i=e.length,o=w.relative[e[0].type],a=o||w.relative[" "],s=o?1:0,l=h(function(e){return e===t},a,!0),c=h(function(e){return te.call(t,e)>-1},a,!0),u=[function(e,n,r){return!o&&(r||n!==T)||((t=n).nodeType?l(e,n,r):c(e,n,r))}];i>s;s++)if(n=w.relative[e[s].type])u=[h(p(u),n)];else{if(n=w.filter[e[s].type].apply(null,e[s].matches),n[F]){for(r=++s;i>r&&!w.relative[e[r].type];r++);return v(s>1&&p(u),s>1&&f(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,r>s&&y(e.slice(s,r)),i>r&&y(e=e.slice(r)),i>r&&f(e))}u.push(n)}return p(u)}function b(t,n){var i=n.length>0,o=t.length>0,a=function(r,a,s,l,c){var u,d,f,h=0,p="0",m=r&&[],v=[],y=T,b=r||o&&w.find.TAG("*",c),x=W+=null==y?1:Math.random()||.1,C=b.length;for(c&&(T=a!==D&&a);p!==C&&null!=(u=b[p]);p++){if(o&&u){for(d=0;f=t[d++];)if(f(u,a,s)){l.push(u);break}c&&(W=x)}i&&((u=!f&&u)&&h--,r&&m.push(u))}if(h+=p,i&&p!==h){for(d=0;f=n[d++];)f(m,v,a,s);if(r){if(h>0)for(;p--;)m[p]||v[p]||(v[p]=J.call(l));v=g(v)}Z.apply(l,v),c&&!r&&v.length>0&&h+n.length>1&&e.uniqueSort(l)}return c&&(W=x,T=y),m};return i?r(a):a}var x,C,w,_,E,N,S,k,T,R,A,B,D,L,M,H,P,O,I,F="sizzle"+-new Date,z=window.document,W=0,V=0,U=n(),$=n(),q=n(),j=function(e,t){return e===t&&(A=!0),0},K=typeof t,Y=1<<31,G={}.hasOwnProperty,X=[],J=X.pop,Q=X.push,Z=X.push,ee=X.slice,te=X.indexOf||function(e){for(var t=0,n=this.length;n>t;t++)if(this[t]===e)return t;return-1},ne="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",re="[\\x20\\t\\r\\n\\f]",ie="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",oe="\\["+re+"*("+ie+")(?:"+re+"*([*^$|!~]?=)"+re+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+ie+"))|)"+re+"*\\]",ae=":("+ie+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+oe+")*)|.*)\\)|)",se=new RegExp("^"+re+"+|((?:^|[^\\\\])(?:\\\\.)*)"+re+"+$","g"),le=new RegExp("^"+re+"*,"+re+"*"),ce=new RegExp("^"+re+"*([>+~]|"+re+")"+re+"*"),ue=new RegExp("="+re+"*([^\\]'\"]*?)"+re+"*\\]","g"),de=new RegExp(ae),fe=new RegExp("^"+ie+"$"),he={ID:new RegExp("^#("+ie+")"),CLASS:new RegExp("^\\.("+ie+")"),TAG:new RegExp("^("+ie+"|[*])"),ATTR:new RegExp("^"+oe),PSEUDO:new RegExp("^"+ae),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+re+"*(even|odd|(([+-]|)(\\d*)n|)"+re+"*(?:([+-]|)"+re+"*(\\d+)|))"+re+"*\\)|)","i"),bool:new RegExp("^(?:"+ne+")$","i"),needsContext:new RegExp("^"+re+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+re+"*((?:-\\d)?\\d*)"+re+"*\\)|)(?=[^-]|$)","i")},pe=/^(?:input|select|textarea|button)$/i,me=/^h\d$/i,ge=/^[^{]+\{\s*\[native \w/,ve=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ye=/[+~]/,be=/'|\\/g,xe=new RegExp("\\\\([\\da-f]{1,6}"+re+"?|("+re+")|.)","ig"),Ce=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)};try{Z.apply(X=ee.call(z.childNodes),z.childNodes),X[z.childNodes.length].nodeType}catch(we){Z={apply:X.length?function(e,t){Q.apply(e,ee.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}C=e.support={},E=e.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},B=e.setDocument=function(e){var t,n=e?e.ownerDocument||e:z,r=n.defaultView;return n!==D&&9===n.nodeType&&n.documentElement?(D=n,L=n.documentElement,M=!E(n),r&&r!==r.top&&(r.addEventListener?r.addEventListener("unload",function(){B()},!1):r.attachEvent&&r.attachEvent("onunload",function(){B()})),C.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),C.getElementsByTagName=i(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),C.getElementsByClassName=ge.test(n.getElementsByClassName),C.getById=i(function(e){return L.appendChild(e).id=F,!n.getElementsByName||!n.getElementsByName(F).length}),C.getById?(w.find.ID=function(e,t){if(typeof t.getElementById!==K&&M){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},w.filter.ID=function(e){var t=e.replace(xe,Ce);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(xe,Ce);return function(e){var n=typeof e.getAttributeNode!==K&&e.getAttributeNode("id");return n&&n.value===t}}),w.find.TAG=C.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==K?t.getElementsByTagName(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},w.find.CLASS=C.getElementsByClassName&&function(e,t){return M?t.getElementsByClassName(e):void 0},P=[],H=[],(C.qsa=ge.test(n.querySelectorAll))&&(i(function(e){e.innerHTML="<select msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&H.push("[*^$]="+re+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||H.push("\\["+re+"*(?:value|"+ne+")"),e.querySelectorAll(":checked").length||H.push(":checked")}),i(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&H.push("name"+re+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||H.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),H.push(",.*:")})),(C.matchesSelector=ge.test(O=L.matches||L.webkitMatchesSelector||L.mozMatchesSelector||L.oMatchesSelector||L.msMatchesSelector))&&i(function(e){C.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),P.push("!=",ae)}),H=H.length&&new RegExp(H.join("|")),P=P.length&&new RegExp(P.join("|")),t=ge.test(L.compareDocumentPosition),I=t||ge.test(L.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return A=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r?r:(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&r||!C.sortDetached&&t.compareDocumentPosition(e)===r?e===n||e.ownerDocument===z&&I(z,e)?-1:t===n||t.ownerDocument===z&&I(z,t)?1:R?te.call(R,e)-te.call(R,t):0:4&r?-1:1)}:function(e,t){if(e===t)return A=!0,0;var r,i=0,o=e.parentNode,s=t.parentNode,l=[e],c=[t];if(!o||!s)return e===n?-1:t===n?1:o?-1:s?1:R?te.call(R,e)-te.call(R,t):0;if(o===s)return a(e,t);for(r=e;r=r.parentNode;)l.unshift(r);for(r=t;r=r.parentNode;)c.unshift(r);for(;l[i]===c[i];)i++;return i?a(l[i],c[i]):l[i]===z?-1:c[i]===z?1:0},n):D},e.matches=function(t,n){return e(t,null,null,n)},e.matchesSelector=function(t,n){if((t.ownerDocument||t)!==D&&B(t),n=n.replace(ue,"='$1']"),C.matchesSelector&&M&&(!P||!P.test(n))&&(!H||!H.test(n)))try{var r=O.call(t,n);if(r||C.disconnectedMatch||t.document&&11!==t.document.nodeType)return r}catch(i){}return e(n,D,null,[t]).length>0},e.contains=function(e,t){return(e.ownerDocument||e)!==D&&B(e),I(e,t)},e.attr=function(e,n){(e.ownerDocument||e)!==D&&B(e);var r=w.attrHandle[n.toLowerCase()],i=r&&G.call(w.attrHandle,n.toLowerCase())?r(e,n,!M):t;return i!==t?i:C.attributes||!M?e.getAttribute(n):(i=e.getAttributeNode(n))&&i.specified?i.value:null},e.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},e.uniqueSort=function(e){var t,n=[],r=0,i=0;if(A=!C.detectDuplicates,R=!C.sortStable&&e.slice(0),e.sort(j),A){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return R=null,e},_=e.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=_(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=_(t);return n},w=e.selectors={cacheLength:50,createPseudo:r,match:he,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(xe,Ce),e[3]=(e[3]||e[4]||e[5]||"").replace(xe,Ce),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||e.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&e.error(t[0]),t},PSEUDO:function(e){var t,n=!e[6]&&e[2];return he.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&de.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(xe,Ce).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=U[e+" "];return t||(t=new RegExp("(^|"+re+")"+e+"("+re+"|$)"))&&U(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==K&&e.getAttribute("class")||"")})},ATTR:function(t,n,r){return function(i){var o=e.attr(i,t);return null==o?"!="===n:n?(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o+" ").indexOf(r)>-1:"|="===n?o===r||o.slice(0,r.length+1)===r+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var c,u,d,f,h,p,m=o!==a?"nextSibling":"previousSibling",g=t.parentNode,v=s&&t.nodeName.toLowerCase(),y=!l&&!s;if(g){if(o){for(;m;){for(d=t;d=d[m];)if(s?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;p=m="only"===e&&!p&&"nextSibling"}return!0}if(p=[a?g.firstChild:g.lastChild],a&&y){for(u=g[F]||(g[F]={}),c=u[e]||[],h=c[0]===W&&c[1],f=c[0]===W&&c[2],d=h&&g.childNodes[h];d=++h&&d&&d[m]||(f=h=0)||p.pop();)if(1===d.nodeType&&++f&&d===t){u[e]=[W,h,f];break}}else if(y&&(c=(t[F]||(t[F]={}))[e])&&c[0]===W)f=c[1];else for(;(d=++h&&d&&d[m]||(f=h=0)||p.pop())&&((s?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++f||(y&&((d[F]||(d[F]={}))[e]=[W,f]),d!==t)););return f-=i,f===r||f%r===0&&f/r>=0}}},PSEUDO:function(t,n){var i,o=w.pseudos[t]||w.setFilters[t.toLowerCase()]||e.error("unsupported pseudo: "+t);return o[F]?o(n):o.length>1?(i=[t,t,"",n],w.setFilters.hasOwnProperty(t.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=te.call(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=S(e.replace(se,"$1"));return i[F]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),!n.pop()}}),has:r(function(t){return function(n){return e(t,n).length>0}}),contains:r(function(e){return e=e.replace(xe,Ce),function(t){return(t.textContent||t.innerText||_(t)).indexOf(e)>-1}}),lang:r(function(t){return fe.test(t||"")||e.error("unsupported lang: "+t),t=t.replace(xe,Ce).toLowerCase(),function(e){var n;do if(n=M?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return n=n.toLowerCase(),n===t||0===n.indexOf(t+"-");while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=window.location&&window.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===L},focus:function(e){return e===D.activeElement&&(!D.hasFocus||D.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!w.pseudos.empty(e)},header:function(e){return me.test(e.nodeName)},input:function(e){return pe.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:c(function(){return[0]}),last:c(function(e,t){return[t-1]}),eq:c(function(e,t,n){return[0>n?n+t:n]}),even:c(function(e,t){for(var n=0;t>n;n+=2)e.push(n);return e}),odd:c(function(e,t){for(var n=1;t>n;n+=2)e.push(n);return e}),lt:c(function(e,t,n){for(var r=0>n?n+t:n;--r>=0;)e.push(r);return e}),gt:c(function(e,t,n){for(var r=0>n?n+t:n;++r<t;)e.push(r);return e})}},w.pseudos.nth=w.pseudos.eq;for(x in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})w.pseudos[x]=s(x);for(x in{submit:!0,reset:!0})w.pseudos[x]=l(x);return d.prototype=w.filters=w.pseudos,w.setFilters=new d,N=e.tokenize=function(t,n){var r,i,o,a,s,l,c,u=$[t+" "];if(u)return n?0:u.slice(0);for(s=t,l=[],c=w.preFilter;s;){(!r||(i=le.exec(s)))&&(i&&(s=s.slice(i[0].length)||s),l.push(o=[])),r=!1,(i=ce.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se," ")}),s=s.slice(r.length));for(a in w.filter)!(i=he[a].exec(s))||c[a]&&!(i=c[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?e.error(t):$(t,l).slice(0)},S=e.compile=function(e,t){var n,r=[],i=[],o=q[e+" "];if(!o){for(t||(t=N(e)),n=t.length;n--;)o=y(t[n]),o[F]?r.push(o):i.push(o);o=q(e,b(i,r)),o.selector=e}return o},k=e.select=function(e,t,n,r){var i,o,a,s,l,c="function"==typeof e&&e,d=!r&&N(e=c.selector||e);if(n=n||[],1===d.length){if(o=d[0]=d[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&C.getById&&9===t.nodeType&&M&&w.relative[o[1].type]){if(t=(w.find.ID(a.matches[0].replace(xe,Ce),t)||[])[0],!t)return n;c&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=he.needsContext.test(e)?0:o.length;i--&&(a=o[i],!w.relative[s=a.type]);)if((l=w.find[s])&&(r=l(a.matches[0].replace(xe,Ce),ye.test(o[0].type)&&u(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&f(o),!e)return Z.apply(n,r),n;break}}return(c||S(e,d))(r,t,!M,n,ye.test(e)&&u(t.parentNode)||t),n},C.sortStable=F.split("").sort(j).join("")===F,C.detectDuplicates=!!A,B(),C.sortDetached=i(function(e){return 1&e.compareDocumentPosition(D.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){return n?void 0:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),C.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?void 0:e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(ne,function(e,t,n){var r;return n?void 0:e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),e}),r(u,[],function(){var e=navigator,t=e.userAgent,n,r,i,o,a,s,l,c,u,d;n=window.opera&&window.opera.buildNumber,u=/Android/.test(t),r=/WebKit/.test(t),i=!r&&!n&&/MSIE/gi.test(t)&&/Explorer/gi.test(e.appName),i=i&&/MSIE (\w+)\./.exec(t)[1],o=-1==t.indexOf("Trident/")||-1==t.indexOf("rv:")&&-1==e.appName.indexOf("Netscape")?!1:11,a=-1==t.indexOf("Edge/")||i||o?!1:12,i=i||o||a,s=!r&&!o&&/Gecko/.test(t),l=-1!=t.indexOf("Mac"),c=/(iPad|iPhone)/.test(t),d="FormData"in window&&"FileReader"in window&&"URL"in window&&!!URL.createObjectURL,a&&(r=!1);var f=!c||d||t.match(/AppleWebKit\/(\d*)/)[1]>=534;return{opera:n,webkit:r,ie:i,gecko:s,mac:l,iOS:c,android:u,contentEditable:f,transparentSrc:"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",caretAfter:8!=i,range:window.getSelection&&"Range"in window,documentMode:i&&!a?document.documentMode||7:10,fileApi:d}}),r(d,[],function(){function e(e){var t=e,n,r;if(!s(e))for(t=[],n=0,r=e.length;r>n;n++)t[n]=e[n];return t}function n(e,n,r){var i,o;if(!e)return 0;if(r=r||e,e.length!==t){for(i=0,o=e.length;o>i;i++)if(n.call(r,e[i],i,e)===!1)return 0}else for(i in e)if(e.hasOwnProperty(i)&&n.call(r,e[i],i,e)===!1)return 0;return 1}function r(e,t){var r=[];return n(e,function(n,i){r.push(t(n,i,e))}),r}function i(e,t){var r=[];return n(e,function(e){(!t||t(e))&&r.push(e)}),r}function o(e,t){var n,r;if(e)for(n=0,r=e.length;r>n;n++)if(e[n]===t)return n;return-1}function a(e,t,n,r){var i=0;for(arguments.length<3&&(n=e[0],i=1);i<e.length;i++)n=t.call(r,n,e[i],i);return n}var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return{isArray:s,toArray:e,each:n,map:r,filter:i,indexOf:o,reduce:a}}),r(f,[u,d],function(e,n){function r(e){return null===e||e===t?"":(""+e).replace(h,"")}function i(e,r){return r?"array"==r&&n.isArray(e)?!0:typeof e==r:e!==t}function o(e,t,n){var r;for(e=e||[],t=t||",","string"==typeof e&&(e=e.split(t)),n=n||{},r=e.length;r--;)n[e[r]]={};return n}function a(e,t,n){var r=this,i,o,a,s,l,c=0;if(e=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(e),a=e[3].match(/(^|\.)(\w+)$/i)[2],o=r.createNS(e[3].replace(/\.\w+$/,""),n),!o[a]){if("static"==e[2])return o[a]=t,void(this.onCreate&&this.onCreate(e[2],e[3],o[a]));t[a]||(t[a]=function(){},c=1),o[a]=t[a],r.extend(o[a].prototype,t),e[5]&&(i=r.resolve(e[5]).prototype,s=e[5].match(/\.(\w+)$/i)[1],l=o[a],c?o[a]=function(){return i[s].apply(this,arguments)}:o[a]=function(){return this.parent=i[s],l.apply(this,arguments)},o[a].prototype[a]=o[a],r.each(i,function(e,t){o[a].prototype[t]=i[t]}),r.each(t,function(e,t){i[t]?o[a].prototype[t]=function(){return this.parent=i[t],e.apply(this,arguments)}:t!=a&&(o[a].prototype[t]=e)})),r.each(t["static"],function(e,t){o[a][t]=e})}}function s(e,n){var r,i,o,a=arguments,s;for(r=1,i=a.length;i>r;r++){n=a[r];for(o in n)n.hasOwnProperty(o)&&(s=n[o],s!==t&&(e[o]=s))}return e}function l(e,t,r,i){i=i||this,e&&(r&&(e=e[r]),n.each(e,function(e,n){return t.call(i,e,n,r)===!1?!1:void l(e,t,r,i)}))}function c(e,t){var n,r;for(t=t||window,e=e.split("."),n=0;n<e.length;n++)r=e[n],t[r]||(t[r]={}),t=t[r];return t}function u(e,t){var n,r;for(t=t||window,e=e.split("."),n=0,r=e.length;r>n&&(t=t[e[n]],t);n++);return t}function d(e,t){return!e||i(e,"array")?e:n.map(e.split(t||","),r)}function f(t){var n=e.cacheSuffix;return n&&(t+=(-1===t.indexOf("?")?"?":"&")+n),t}var h=/^\s*|\s*$/g;return{trim:r,isArray:n.isArray,is:i,toArray:n.toArray,makeMap:o,each:n.each,map:n.map,grep:n.filter,inArray:n.indexOf,extend:s,create:a,walk:l,createNS:c,resolve:u,explode:d,_addCacheSuffix:f}}),r(h,[l,c,f,u],function(e,n,r,i){function o(e){return"undefined"!=typeof e}function a(e){return"string"==typeof e}function s(e){return e&&e==e.window}function l(e,t){var n,r,i;for(t=t||w,i=t.createElement("div"),n=t.createDocumentFragment(),i.innerHTML=e;r=i.firstChild;)n.appendChild(r);return n}function c(e,t,n,r){var i;if(a(t))t=l(t,v(e[0]));else if(t.length&&!t.nodeType){if(t=f.makeArray(t),r)for(i=t.length-1;i>=0;i--)c(e,t[i],n,r);else for(i=0;i<t.length;i++)c(e,t[i],n,r);return e}if(t.nodeType)for(i=e.length;i--;)n.call(e[i],t);return e}function u(e,t){return e&&t&&-1!==(" "+e.className+" ").indexOf(" "+t+" ")}function d(e,t,n){var r,i;return t=f(t)[0],e.each(function(){var e=this;n&&r==e.parentNode?i.appendChild(e):(r=e.parentNode,i=t.cloneNode(!1),e.parentNode.insertBefore(i,e),i.appendChild(e))}),e}function f(e,t){return new f.fn.init(e,t)}function h(e,t){var n;if(t.indexOf)return t.indexOf(e);for(n=t.length;n--;)if(t[n]===e)return n;return-1}function p(e){return null===e||e===k?"":(""+e).replace(H,"")}function m(e,t){var n,r,i,o,a;if(e)if(n=e.length,n===o){for(r in e)if(e.hasOwnProperty(r)&&(a=e[r],t.call(a,r,a)===!1))break}else for(i=0;n>i&&(a=e[i],t.call(a,i,a)!==!1);i++);return e}function g(e,t){var n=[];return m(e,function(e,r){t(r,e)&&n.push(r)}),n}function v(e){return e?9==e.nodeType?e:e.ownerDocument:w}function y(e,n,r){var i=[],o=e[n];for("string"!=typeof r&&r instanceof f&&(r=r[0]);o&&9!==o.nodeType;){if(r!==t){if(o===r)break;if("string"==typeof r&&f(o).is(r))break}1===o.nodeType&&i.push(o),o=o[n]}return i}function b(e,n,r,i){var o=[];for(i instanceof f&&(i=i[0]);e;e=e[n])if(!r||e.nodeType===r){if(i!==t){if(e===i)break;if("string"==typeof i&&f(e).is(i))break}o.push(e)}return o}function x(e,t,n){for(e=e[t];e;e=e[t])if(e.nodeType==n)return e;return null}function C(e,t,n){m(n,function(n,r){e[n]=e[n]||{},e[n][t]=r})}var w=document,_=Array.prototype.push,E=Array.prototype.slice,N=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,S=e.Event,k,T=r.makeMap("children,contents,next,prev"),R=r.makeMap("fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom"," "),A=r.makeMap("checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected"," "),B={
+"for":"htmlFor","class":"className",readonly:"readOnly"},D={"float":"cssFloat"},L={},M={},H=/^\s*|\s*$/g;return f.fn=f.prototype={constructor:f,selector:"",context:null,length:0,init:function(e,t){var n=this,r,i;if(!e)return n;if(e.nodeType)return n.context=n[0]=e,n.length=1,n;if(t&&t.nodeType)n.context=t;else{if(t)return f(e).attr(t);n.context=t=document}if(a(e)){if(n.selector=e,r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!r)return f(t).find(e);if(r[1])for(i=l(e,v(t)).firstChild;i;)_.call(n,i),i=i.nextSibling;else{if(i=v(t).getElementById(r[2]),!i)return n;if(i.id!==r[2])return n.find(e);n.length=1,n[0]=i}}else this.add(e,!1);return n},toArray:function(){return r.toArray(this)},add:function(e,t){var n=this,r,i;if(a(e))return n.add(f(e));if(t!==!1)for(r=f.unique(n.toArray().concat(f.makeArray(e))),n.length=r.length,i=0;i<r.length;i++)n[i]=r[i];else _.apply(n,f.makeArray(e));return n},attr:function(e,t){var n=this,r;if("object"==typeof e)m(e,function(e,t){n.attr(e,t)});else{if(!o(t)){if(n[0]&&1===n[0].nodeType){if(r=L[e],r&&r.get)return r.get(n[0],e);if(A[e])return n.prop(e)?e:k;t=n[0].getAttribute(e,2),null===t&&(t=k)}return t}this.each(function(){var n;if(1===this.nodeType){if(n=L[e],n&&n.set)return void n.set(this,t);null===t?this.removeAttribute(e,2):this.setAttribute(e,t,2)}})}return n},removeAttr:function(e){return this.attr(e,null)},prop:function(e,t){var n=this;if(e=B[e]||e,"object"==typeof e)m(e,function(e,t){n.prop(e,t)});else{if(!o(t))return n[0]&&n[0].nodeType&&e in n[0]?n[0][e]:t;this.each(function(){1==this.nodeType&&(this[e]=t)})}return n},css:function(e,t){function n(e){return e.replace(/-(\D)/g,function(e,t){return t.toUpperCase()})}function r(e){return e.replace(/[A-Z]/g,function(e){return"-"+e})}var i=this,a,s;if("object"==typeof e)m(e,function(e,t){i.css(e,t)});else if(o(t))e=n(e),"number"!=typeof t||R[e]||(t+="px"),i.each(function(){var n=this.style;if(s=M[e],s&&s.set)return void s.set(this,t);try{this.style[D[e]||e]=t}catch(i){}(null===t||""===t)&&(n.removeProperty?n.removeProperty(r(e)):n.removeAttribute(e))});else{if(a=i[0],s=M[e],s&&s.get)return s.get(a);if(a.ownerDocument.defaultView)try{return a.ownerDocument.defaultView.getComputedStyle(a,null).getPropertyValue(r(e))}catch(l){return k}else if(a.currentStyle)return a.currentStyle[n(e)]}return i},remove:function(){for(var e=this,t,n=this.length;n--;)t=e[n],S.clean(t),t.parentNode&&t.parentNode.removeChild(t);return this},empty:function(){for(var e=this,t,n=this.length;n--;)for(t=e[n];t.firstChild;)t.removeChild(t.firstChild);return this},html:function(e){var t=this,n;if(o(e)){n=t.length;try{for(;n--;)t[n].innerHTML=e}catch(r){f(t[n]).empty().append(e)}return t}return t[0]?t[0].innerHTML:""},text:function(e){var t=this,n;if(o(e)){for(n=t.length;n--;)"innerText"in t[n]?t[n].innerText=e:t[0].textContent=e;return t}return t[0]?t[0].innerText||t[0].textContent:""},append:function(){return c(this,arguments,function(e){1===this.nodeType&&this.appendChild(e)})},prepend:function(){return c(this,arguments,function(e){1===this.nodeType&&this.insertBefore(e,this.firstChild)},!0)},before:function(){var e=this;return e[0]&&e[0].parentNode?c(e,arguments,function(e){this.parentNode.insertBefore(e,this)}):e},after:function(){var e=this;return e[0]&&e[0].parentNode?c(e,arguments,function(e){this.parentNode.insertBefore(e,this.nextSibling)},!0):e},appendTo:function(e){return f(e).append(this),this},prependTo:function(e){return f(e).prepend(this),this},replaceWith:function(e){return this.before(e).remove()},wrap:function(e){return d(this,e)},wrapAll:function(e){return d(this,e,!0)},wrapInner:function(e){return this.each(function(){f(this).contents().wrapAll(e)}),this},unwrap:function(){return this.parent().each(function(){f(this).replaceWith(this.childNodes)})},clone:function(){var e=[];return this.each(function(){e.push(this.cloneNode(!0))}),f(e)},addClass:function(e){return this.toggleClass(e,!0)},removeClass:function(e){return this.toggleClass(e,!1)},toggleClass:function(e,t){var n=this;return"string"!=typeof e?n:(-1!==e.indexOf(" ")?m(e.split(" "),function(){n.toggleClass(this,t)}):n.each(function(n,r){var i,o;o=u(r,e),o!==t&&(i=r.className,o?r.className=p((" "+i+" ").replace(" "+e+" "," ")):r.className+=i?" "+e:e)}),n)},hasClass:function(e){return u(this[0],e)},each:function(e){return m(this,e)},on:function(e,t){return this.each(function(){S.bind(this,e,t)})},off:function(e,t){return this.each(function(){S.unbind(this,e,t)})},trigger:function(e){return this.each(function(){"object"==typeof e?S.fire(this,e.type,e):S.fire(this,e)})},show:function(){return this.css("display","")},hide:function(){return this.css("display","none")},slice:function(){return new f(E.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},find:function(e){var t,n,r=[];for(t=0,n=this.length;n>t;t++)f.find(e,this[t],r);return f(r)},filter:function(e){return f("function"==typeof e?g(this.toArray(),function(t,n){return e(n,t)}):f.filter(e,this.toArray()))},closest:function(e){var t=[];return e instanceof f&&(e=e[0]),this.each(function(n,r){for(;r;){if("string"==typeof e&&f(r).is(e)){t.push(r);break}if(r==e){t.push(r);break}r=r.parentNode}}),f(t)},offset:function(e){var t,n,r,i=0,o=0,a;return e?this.css(e):(t=this[0],t&&(n=t.ownerDocument,r=n.documentElement,t.getBoundingClientRect&&(a=t.getBoundingClientRect(),i=a.left+(r.scrollLeft||n.body.scrollLeft)-r.clientLeft,o=a.top+(r.scrollTop||n.body.scrollTop)-r.clientTop)),{left:i,top:o})},push:_,sort:[].sort,splice:[].splice},r.extend(f,{extend:r.extend,makeArray:function(e){return s(e)||e.nodeType?[e]:r.toArray(e)},inArray:h,isArray:r.isArray,each:m,trim:p,grep:g,find:n,expr:n.selectors,unique:n.uniqueSort,text:n.getText,contains:n.contains,filter:function(e,t,n){var r=t.length;for(n&&(e=":not("+e+")");r--;)1!=t[r].nodeType&&t.splice(r,1);return t=1===t.length?f.find.matchesSelector(t[0],e)?[t[0]]:[]:f.find.matches(e,t)}}),m({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return y(e,"parentNode")},next:function(e){return x(e,"nextSibling",1)},prev:function(e){return x(e,"previousSibling",1)},children:function(e){return b(e.firstChild,"nextSibling",1)},contents:function(e){return r.toArray(("iframe"===e.nodeName?e.contentDocument||e.contentWindow.document:e).childNodes)}},function(e,t){f.fn[e]=function(n){var r=this,i=[];return r.each(function(){var e=t.call(i,this,n,i);e&&(f.isArray(e)?i.push.apply(i,e):i.push(e))}),this.length>1&&(T[e]||(i=f.unique(i)),0===e.indexOf("parents")&&(i=i.reverse())),i=f(i),n?i.filter(n):i}}),m({parentsUntil:function(e,t){return y(e,"parentNode",t)},nextUntil:function(e,t){return b(e,"nextSibling",1,t).slice(1)},prevUntil:function(e,t){return b(e,"previousSibling",1,t).slice(1)}},function(e,t){f.fn[e]=function(n,r){var i=this,o=[];return i.each(function(){var e=t.call(o,this,n,o);e&&(f.isArray(e)?o.push.apply(o,e):o.push(e))}),this.length>1&&(o=f.unique(o),(0===e.indexOf("parents")||"prevUntil"===e)&&(o=o.reverse())),o=f(o),r?o.filter(r):o}}),f.fn.is=function(e){return!!e&&this.filter(e).length>0},f.fn.init.prototype=f.fn,f.overrideDefaults=function(e){function t(r,i){return n=n||e(),0===arguments.length&&(r=n.element),i||(i=n.context),new t.fn.init(r,i)}var n;return f.extend(t,this),t},i.ie&&i.ie<8&&(C(L,"get",{maxlength:function(e){var t=e.maxLength;return 2147483647===t?k:t},size:function(e){var t=e.size;return 20===t?k:t},"class":function(e){return e.className},style:function(e){var t=e.style.cssText;return 0===t.length?k:t}}),C(L,"set",{"class":function(e,t){e.className=t},style:function(e,t){e.style.cssText=t}})),i.ie&&i.ie<9&&(D["float"]="styleFloat",C(M,"set",{opacity:function(e,t){var n=e.style;null===t||""===t?n.removeAttribute("filter"):(n.zoom=1,n.filter="alpha(opacity="+100*t+")")}})),f.attrHooks=L,f.cssHooks=M,f}),r(p,[],function(){return function(e,t){function n(e,t,n,r){function i(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+i(t)+i(n)+i(r)}var r=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,i=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,o=/\s*([^:]+):\s*([^;]+);?/g,a=/\s+$/,s,l,c={},u,d,f,h="\ufeff";for(e=e||{},t&&(d=t.getValidStyles(),f=t.getInvalidStyles()),u=("\\\" \\' \\; \\: ; : "+h).split(" "),l=0;l<u.length;l++)c[u[l]]=h+l,c[h+l]=u[l];return{toHex:function(e){return e.replace(r,n)},parse:function(t){function s(e,t,n){var r,i,o,a;if(r=m[e+"-top"+t],r&&(i=m[e+"-right"+t],i&&(o=m[e+"-bottom"+t],o&&(a=m[e+"-left"+t])))){var s=[r,i,o,a];for(l=s.length-1;l--&&s[l]===s[l+1];);l>-1&&n||(m[e+t]=-1==l?s[0]:s.join(" "),delete m[e+"-top"+t],delete m[e+"-right"+t],delete m[e+"-bottom"+t],delete m[e+"-left"+t])}}function u(e){var t=m[e],n;if(t){for(t=t.split(" "),n=t.length;n--;)if(t[n]!==t[0])return!1;return m[e]=t[0],!0}}function d(e,t,n,r){u(t)&&u(n)&&u(r)&&(m[e]=m[t]+" "+m[n]+" "+m[r],delete m[t],delete m[n],delete m[r])}function f(e){return b=!0,c[e]}function h(e,t){return b&&(e=e.replace(/\uFEFF[0-9]/g,function(e){return c[e]})),t||(e=e.replace(/\\([\'\";:])/g,"$1")),e}function p(t,n,r,i,o,a){if(o=o||a)return o=h(o),"'"+o.replace(/\'/g,"\\'")+"'";if(n=h(n||r||i),!e.allow_script_urls){var s=n.replace(/[\s\r\n]+/,"");if(/(java|vb)script:/i.test(s))return"";if(!e.allow_svg_data_urls&&/^data:image\/svg/i.test(s))return""}return x&&(n=x.call(C,n,"style")),"url('"+n.replace(/\'/g,"\\'")+"')"}var m={},g,v,y,b,x=e.url_converter,C=e.url_converter_scope||this;if(t){for(t=t.replace(/[\u0000-\u001F]/g,""),t=t.replace(/\\[\"\';:\uFEFF]/g,f).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(e){return e.replace(/[;:]/g,f)});g=o.exec(t);){if(v=g[1].replace(a,"").toLowerCase(),y=g[2].replace(a,""),y=y.replace(/\\[0-9a-f]+/g,function(e){return String.fromCharCode(parseInt(e.substr(1),16))}),v&&y.length>0){if(!e.allow_script_urls&&("behavior"==v||/expression\s*\(|\/\*|\*\//.test(y)))continue;"font-weight"===v&&"700"===y?y="bold":("color"===v||"background-color"===v)&&(y=y.toLowerCase()),y=y.replace(r,n),y=y.replace(i,p),m[v]=b?h(y,!0):y}o.lastIndex=g.index+g[0].length}s("border","",!0),s("border","-width"),s("border","-color"),s("border","-style"),s("padding",""),s("margin",""),d("border","border-width","border-style","border-color"),"medium none"===m.border&&delete m.border,"none"===m["border-image"]&&delete m["border-image"]}return m},serialize:function(e,t){function n(t){var n,r,o,a;if(n=d[t])for(r=0,o=n.length;o>r;r++)t=n[r],a=e[t],a!==s&&a.length>0&&(i+=(i.length>0?" ":"")+t+": "+a+";")}function r(e,t){var n;return n=f["*"],n&&n[e]?!1:(n=f[t],n&&n[e]?!1:!0)}var i="",o,a;if(t&&d)n("*"),n(t);else for(o in e)a=e[o],a!==s&&a.length>0&&(!f||r(o,t))&&(i+=(i.length>0?" ":"")+o+": "+a+";");return i}}}}),r(m,[],function(){return function(e,t){function n(e,n,r,i){var o,a;if(e){if(!i&&e[n])return e[n];if(e!=t){if(o=e[r])return o;for(a=e.parentNode;a&&a!=t;a=a.parentNode)if(o=a[r])return o}}}var r=e;this.current=function(){return r},this.next=function(e){return r=n(r,"firstChild","nextSibling",e)},this.prev=function(e){return r=n(r,"lastChild","previousSibling",e)}}}),r(g,[f],function(e){function t(n){function r(){return H.createDocumentFragment()}function i(e,t){_(F,e,t)}function o(e,t){_(z,e,t)}function a(e){i(e.parentNode,j(e))}function s(e){i(e.parentNode,j(e)+1)}function l(e){o(e.parentNode,j(e))}function c(e){o(e.parentNode,j(e)+1)}function u(e){e?(M[U]=M[V],M[$]=M[W]):(M[V]=M[U],M[W]=M[$]),M.collapsed=F}function d(e){a(e),c(e)}function f(e){i(e,0),o(e,1===e.nodeType?e.childNodes.length:e.nodeValue.length)}function h(e,t){var n=M[V],r=M[W],i=M[U],o=M[$],a=t.startContainer,s=t.startOffset,l=t.endContainer,c=t.endOffset;return 0===e?w(n,r,a,s):1===e?w(i,o,a,s):2===e?w(i,o,l,c):3===e?w(n,r,l,c):void 0}function p(){E(I)}function m(){return E(P)}function g(){return E(O)}function v(e){var t=this[V],r=this[W],i,o;3!==t.nodeType&&4!==t.nodeType||!t.nodeValue?(t.childNodes.length>0&&(o=t.childNodes[r]),o?t.insertBefore(e,o):3==t.nodeType?n.insertAfter(e,t):t.appendChild(e)):r?r>=t.nodeValue.length?n.insertAfter(e,t):(i=t.splitText(r),t.parentNode.insertBefore(e,i)):t.parentNode.insertBefore(e,t)}function y(e){var t=M.extractContents();M.insertNode(e),e.appendChild(t),M.selectNode(e)}function b(){return q(new t(n),{startContainer:M[V],startOffset:M[W],endContainer:M[U],endOffset:M[$],collapsed:M.collapsed,commonAncestorContainer:M.commonAncestorContainer})}function x(e,t){var n;if(3==e.nodeType)return e;if(0>t)return e;for(n=e.firstChild;n&&t>0;)--t,n=n.nextSibling;return n?n:e}function C(){return M[V]==M[U]&&M[W]==M[$]}function w(e,t,r,i){var o,a,s,l,c,u;if(e==r)return t==i?0:i>t?-1:1;for(o=r;o&&o.parentNode!=e;)o=o.parentNode;if(o){for(a=0,s=e.firstChild;s!=o&&t>a;)a++,s=s.nextSibling;return a>=t?-1:1}for(o=e;o&&o.parentNode!=r;)o=o.parentNode;if(o){for(a=0,s=r.firstChild;s!=o&&i>a;)a++,s=s.nextSibling;return i>a?-1:1}for(l=n.findCommonAncestor(e,r),c=e;c&&c.parentNode!=l;)c=c.parentNode;for(c||(c=l),u=r;u&&u.parentNode!=l;)u=u.parentNode;if(u||(u=l),c==u)return 0;for(s=l.firstChild;s;){if(s==c)return-1;if(s==u)return 1;s=s.nextSibling}}function _(e,t,r){var i,o;for(e?(M[V]=t,M[W]=r):(M[U]=t,M[$]=r),i=M[U];i.parentNode;)i=i.parentNode;for(o=M[V];o.parentNode;)o=o.parentNode;o==i?w(M[V],M[W],M[U],M[$])>0&&M.collapse(e):M.collapse(e),M.collapsed=C(),M.commonAncestorContainer=n.findCommonAncestor(M[V],M[U])}function E(e){var t,n=0,r=0,i,o,a,s,l,c;if(M[V]==M[U])return N(e);for(t=M[U],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[V])return S(t,e);++n}for(t=M[V],i=t.parentNode;i;t=i,i=i.parentNode){if(i==M[U])return k(t,e);++r}for(o=r-n,a=M[V];o>0;)a=a.parentNode,o--;for(s=M[U];0>o;)s=s.parentNode,o++;for(l=a.parentNode,c=s.parentNode;l!=c;l=l.parentNode,c=c.parentNode)a=l,s=c;return T(a,s,e)}function N(e){var t,n,i,o,a,s,l,c,u;if(e!=I&&(t=r()),M[W]==M[$])return t;if(3==M[V].nodeType){if(n=M[V].nodeValue,i=n.substring(M[W],M[$]),e!=O&&(o=M[V],c=M[W],u=M[$]-M[W],0===c&&u>=o.nodeValue.length-1?o.parentNode.removeChild(o):o.deleteData(c,u),M.collapse(F)),e==I)return;return i.length>0&&t.appendChild(H.createTextNode(i)),t}for(o=x(M[V],M[W]),a=M[$]-M[W];o&&a>0;)s=o.nextSibling,l=D(o,e),t&&t.appendChild(l),--a,o=s;return e!=O&&M.collapse(F),t}function S(e,t){var n,i,o,a,s,l;if(t!=I&&(n=r()),i=R(e,t),n&&n.appendChild(i),o=j(e),a=o-M[W],0>=a)return t!=O&&(M.setEndBefore(e),M.collapse(z)),n;for(i=e.previousSibling;a>0;)s=i.previousSibling,l=D(i,t),n&&n.insertBefore(l,n.firstChild),--a,i=s;return t!=O&&(M.setEndBefore(e),M.collapse(z)),n}function k(e,t){var n,i,o,a,s,l;for(t!=I&&(n=r()),o=A(e,t),n&&n.appendChild(o),i=j(e),++i,a=M[$]-i,o=e.nextSibling;o&&a>0;)s=o.nextSibling,l=D(o,t),n&&n.appendChild(l),--a,o=s;return t!=O&&(M.setStartAfter(e),M.collapse(F)),n}function T(e,t,n){var i,o,a,s,l,c,u;for(n!=I&&(o=r()),i=A(e,n),o&&o.appendChild(i),a=j(e),s=j(t),++a,l=s-a,c=e.nextSibling;l>0;)u=c.nextSibling,i=D(c,n),o&&o.appendChild(i),c=u,--l;return i=R(t,n),o&&o.appendChild(i),n!=O&&(M.setStartAfter(e),M.collapse(F)),o}function R(e,t){var n=x(M[U],M[$]-1),r,i,o,a,s,l=n!=M[U];if(n==e)return B(n,l,z,t);for(r=n.parentNode,i=B(r,z,z,t);r;){for(;n;)o=n.previousSibling,a=B(n,l,z,t),t!=I&&i.insertBefore(a,i.firstChild),l=F,n=o;if(r==e)return i;n=r.previousSibling,r=r.parentNode,s=B(r,z,z,t),t!=I&&s.appendChild(i),i=s}}function A(e,t){var n=x(M[V],M[W]),r=n!=M[V],i,o,a,s,l;if(n==e)return B(n,r,F,t);for(i=n.parentNode,o=B(i,z,F,t);i;){for(;n;)a=n.nextSibling,s=B(n,r,F,t),t!=I&&o.appendChild(s),r=F,n=a;if(i==e)return o;n=i.nextSibling,i=i.parentNode,l=B(i,z,F,t),t!=I&&l.appendChild(o),o=l}}function B(e,t,r,i){var o,a,s,l,c;if(t)return D(e,i);if(3==e.nodeType){if(o=e.nodeValue,r?(l=M[W],a=o.substring(l),s=o.substring(0,l)):(l=M[$],a=o.substring(0,l),s=o.substring(l)),i!=O&&(e.nodeValue=s),i==I)return;return c=n.clone(e,z),c.nodeValue=a,c}if(i!=I)return n.clone(e,z)}function D(e,t){return t!=I?t==O?n.clone(e,F):e:void e.parentNode.removeChild(e)}function L(){return n.create("body",null,g()).outerText}var M=this,H=n.doc,P=0,O=1,I=2,F=!0,z=!1,W="startOffset",V="startContainer",U="endContainer",$="endOffset",q=e.extend,j=n.nodeIndex;return q(M,{startContainer:H,startOffset:0,endContainer:H,endOffset:0,collapsed:F,commonAncestorContainer:H,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:i,setEnd:o,setStartBefore:a,setStartAfter:s,setEndBefore:l,setEndAfter:c,collapse:u,selectNode:d,selectNodeContents:f,compareBoundaryPoints:h,deleteContents:p,extractContents:m,cloneContents:g,insertNode:v,surroundContents:y,cloneRange:b,toStringIE:L}),M}return t.prototype.toString=function(){return this.toStringIE()},t}),r(v,[f],function(e){function t(e){var t;return t=document.createElement("div"),t.innerHTML=e,t.textContent||t.innerText||e}function n(e,t){var n,r,i,a={};if(e){for(e=e.split(","),t=t||10,n=0;n<e.length;n+=2)r=String.fromCharCode(parseInt(e[n],t)),o[r]||(i="&"+e[n+1]+";",a[r]=i,a[i]=r);return a}}var r=e.makeMap,i,o,a,s=/[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,l=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,c=/[<>&\"\']/g,u=/&#([a-z0-9]+);?|&([a-z0-9]+);/gi,d={128:"\u20ac",130:"\u201a",131:"\u0192",132:"\u201e",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02c6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017d",145:"\u2018",146:"\u2019",147:"\u201c",148:"\u201d",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02dc",153:"\u2122",154:"\u0161",155:"\u203a",156:"\u0153",158:"\u017e",159:"\u0178"};o={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;","`":"&#96;"},a={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"},i=n("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);var f={encodeRaw:function(e,t){return e.replace(t?s:l,function(e){return o[e]||e})},encodeAllRaw:function(e){return(""+e).replace(c,function(e){return o[e]||e})},encodeNumeric:function(e,t){return e.replace(t?s:l,function(e){return e.length>1?"&#"+(1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536)+";":o[e]||"&#"+e.charCodeAt(0)+";"})},encodeNamed:function(e,t,n){return n=n||i,e.replace(t?s:l,function(e){return o[e]||n[e]||e})},getEncodeFunc:function(e,t){function a(e,n){return e.replace(n?s:l,function(e){return o[e]||t[e]||"&#"+e.charCodeAt(0)+";"||e})}function c(e,n){return f.encodeNamed(e,n,t)}return t=n(t)||i,e=r(e.replace(/\+/g,",")),e.named&&e.numeric?a:e.named?t?c:f.encodeNamed:e.numeric?f.encodeNumeric:f.encodeRaw},decode:function(e){return e.replace(u,function(e,n){return n?(n="x"===n.charAt(0).toLowerCase()?parseInt(n.substr(1),16):parseInt(n,10),n>65535?(n-=65536,String.fromCharCode(55296+(n>>10),56320+(1023&n))):d[n]||String.fromCharCode(n)):a[e]||i[e]||t(e)})}};return f}),r(y,[f],function(e){return function(t,n){function r(e){t.getElementsByTagName("head")[0].appendChild(e)}function i(n,i,l){function c(){for(var e=y.passed,t=e.length;t--;)e[t]();y.status=2,y.passed=[],y.failed=[]}function u(){for(var e=y.failed,t=e.length;t--;)e[t]();y.status=3,y.passed=[],y.failed=[]}function d(){var e=navigator.userAgent.match(/WebKit\/(\d*)/);return!!(e&&e[1]<536)}function f(e,t){e()||((new Date).getTime()-v<s?window.setTimeout(t,0):u())}function h(){f(function(){for(var e=t.styleSheets,n,r=e.length,i;r--;)if(n=e[r],i=n.ownerNode?n.ownerNode:n.owningElement,i&&i.id===m.id)return c(),!0},h)}function p(){f(function(){try{var e=g.sheet.cssRules;return c(),!!e}catch(t){}},p)}var m,g,v,y;if(n=e._addCacheSuffix(n),a[n]?y=a[n]:(y={passed:[],failed:[]},a[n]=y),i&&y.passed.push(i),l&&y.failed.push(l),1!=y.status){if(2==y.status)return void c();if(3==y.status)return void u();if(y.status=1,m=t.createElement("link"),m.rel="stylesheet",m.type="text/css",m.id="u"+o++,m.async=!1,m.defer=!1,v=(new Date).getTime(),"onload"in m&&!d())m.onload=h,m.onerror=u;else{if(navigator.userAgent.indexOf("Firefox")>0)return g=t.createElement("style"),g.textContent='@import "'+n+'"',p(),void r(g);h()}r(m),m.href=n}}var o=0,a={},s;n=n||{},s=n.maxLoadTime||5e3,this.load=i}}),r(b,[c,h,p,l,m,g,v,u,f,y],function(e,n,r,i,o,a,s,l,c,u){function d(e,t){var n={},r=t.keep_values,i;return i={set:function(n,r,i){t.url_converter&&(r=t.url_converter.call(t.url_converter_scope||e,r,i,n[0])),n.attr("data-mce-"+i,r).attr(i,r)},get:function(e,t){return e.attr("data-mce-"+t)||e.attr(t)}},n={style:{set:function(e,t){return null!==t&&"object"==typeof t?void e.css(t):(r&&e.attr("data-mce-style",t),void e.attr("style",t))},get:function(t){var n=t.attr("data-mce-style")||t.attr("style");return n=e.serializeStyle(e.parseStyle(n),t[0].nodeName)}}},r&&(n.href=n.src=i),n}function f(e,t){var n=t.attr("style");n=e.serializeStyle(e.parseStyle(n),t[0].nodeName),n||(n=null),t.attr("data-mce-style",n)}function h(e,t){var n=0,r,i;if(e)for(r=e.nodeType,e=e.previousSibling;e;e=e.previousSibling)i=e.nodeType,(!t||3!=i||i!=r&&e.nodeValue.length)&&(n++,r=i);return n}function p(e,t){var o=this,a;o.doc=e,o.win=window,o.files={},o.counter=0,o.stdMode=!b||e.documentMode>=8,o.boxModel=!b||"CSS1Compat"==e.compatMode||o.stdMode,o.styleSheetLoader=new u(e),o.boundEvents=[],o.settings=t=t||{},o.schema=t.schema,o.styles=new r({url_converter:t.url_converter,url_converter_scope:t.url_converter_scope},t.schema),o.fixDoc(e),o.events=t.ownEvents?new i(t.proxy):i.Event,o.attrHooks=d(o,t),a=t.schema?t.schema.getBlockElements():{},o.$=n.overrideDefaults(function(){return{context:e,element:o.getRoot()}}),o.isBlock=function(e){if(!e)return!1;var t=e.nodeType;return t?!(1!==t||!a[e.nodeName]):!!a[e]}}var m=c.each,g=c.is,v=c.grep,y=c.trim,b=l.ie,x=/^([a-z0-9],?)+$/i,C=/^[ \t\r\n]*$/;return p.prototype={$$:function(e){return"string"==typeof e&&(e=this.get(e)),this.$(e)},root:null,fixDoc:function(e){var t=this.settings,n;if(b&&t.schema){"abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video".replace(/\w+/g,function(t){e.createElement(t)});for(n in t.schema.getCustomElements())e.createElement(n)}},clone:function(e,t){var n=this,r,i;return!b||1!==e.nodeType||t?e.cloneNode(t):(i=n.doc,t?r.firstChild:(r=i.createElement(e.nodeName),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),r))},getRoot:function(){var e=this;return e.settings.root_element||e.doc.body},getViewPort:function(e){var t,n;return e=e?e:this.win,t=e.document,n=this.boxModel?t.documentElement:t.body,{x:e.pageXOffset||n.scrollLeft,y:e.pageYOffset||n.scrollTop,w:e.innerWidth||n.clientWidth,h:e.innerHeight||n.clientHeight}},getRect:function(e){var t=this,n,r;return e=t.get(e),n=t.getPos(e),r=t.getSize(e),{x:n.x,y:n.y,w:r.w,h:r.h}},getSize:function(e){var t=this,n,r;return e=t.get(e),n=t.getStyle(e,"width"),r=t.getStyle(e,"height"),-1===n.indexOf("px")&&(n=0),-1===r.indexOf("px")&&(r=0),{w:parseInt(n,10)||e.offsetWidth||e.clientWidth,h:parseInt(r,10)||e.offsetHeight||e.clientHeight}},getParent:function(e,t,n){return this.getParents(e,t,n,!1)},getParents:function(e,n,r,i){var o=this,a,s=[];for(e=o.get(e),i=i===t,r=r||("BODY"!=o.getRoot().nodeName?o.getRoot().parentNode:null),g(n,"string")&&(a=n,n="*"===n?function(e){return 1==e.nodeType}:function(e){return o.is(e,a)});e&&e!=r&&e.nodeType&&9!==e.nodeType;){if(!n||n(e)){if(!i)return e;s.push(e)}e=e.parentNode}return i?s:null},get:function(e){var t;return e&&this.doc&&"string"==typeof e&&(t=e,e=this.doc.getElementById(e),e&&e.id!==t)?this.doc.getElementsByName(t)[1]:e},getNext:function(e,t){return this._findSib(e,t,"nextSibling")},getPrev:function(e,t){return this._findSib(e,t,"previousSibling")},select:function(t,n){var r=this;return e(t,r.get(n)||r.settings.root_element||r.doc,[])},is:function(n,r){var i;if(n.length===t){if("*"===r)return 1==n.nodeType;if(x.test(r)){for(r=r.toLowerCase().split(/,/),n=n.nodeName.toLowerCase(),i=r.length-1;i>=0;i--)if(r[i]==n)return!0;return!1}}if(n.nodeType&&1!=n.nodeType)return!1;var o=n.nodeType?[n]:n;return e(r,o[0].ownerDocument||o[0],null,o).length>0},add:function(e,t,n,r,i){var o=this;return this.run(e,function(e){var a;return a=g(t,"string")?o.doc.createElement(t):t,o.setAttribs(a,n),r&&(r.nodeType?a.appendChild(r):o.setHTML(a,r)),i?a:e.appendChild(a)})},create:function(e,t,n){return this.add(this.doc.createElement(e),e,t,n,1)},createHTML:function(e,t,n){var r="",i;r+="<"+e;for(i in t)t.hasOwnProperty(i)&&null!==t[i]&&"undefined"!=typeof t[i]&&(r+=" "+i+'="'+this.encode(t[i])+'"');return"undefined"!=typeof n?r+">"+n+"</"+e+">":r+" />"},createFragment:function(e){var t,n,r=this.doc,i;for(i=r.createElement("div"),t=r.createDocumentFragment(),e&&(i.innerHTML=e);n=i.firstChild;)t.appendChild(n);return t},remove:function(e,t){return e=this.$$(e),t?e.each(function(){for(var e;e=this.firstChild;)3==e.nodeType&&0===e.data.length?this.removeChild(e):this.parentNode.insertBefore(e,this)}).remove():e.remove(),e.length>1?e.toArray():e[0]},setStyle:function(e,t,n){e=this.$$(e).css(t,n),this.settings.update_styles&&f(this,e)},getStyle:function(e,n,r){return e=this.$$(e),r?e.css(n):(n=n.replace(/-(\D)/g,function(e,t){return t.toUpperCase()}),"float"==n&&(n=l.ie&&l.ie<12?"styleFloat":"cssFloat"),e[0]&&e[0].style?e[0].style[n]:t)},setStyles:function(e,t){e=this.$$(e).css(t),this.settings.update_styles&&f(this,e)},removeAllAttribs:function(e){return this.run(e,function(e){var t,n=e.attributes;for(t=n.length-1;t>=0;t--)e.removeAttributeNode(n.item(t))})},setAttrib:function(e,t,n){var r=this,i,o,a=r.settings;""===n&&(n=null),e=r.$$(e),i=e.attr(t),e.length&&(o=r.attrHooks[t],o&&o.set?o.set(e,n,t):e.attr(t,n),i!=n&&a.onSetAttrib&&a.onSetAttrib({attrElm:e,attrName:t,attrValue:n}))},setAttribs:function(e,t){var n=this;n.$$(e).each(function(e,r){m(t,function(e,t){n.setAttrib(r,t,e)})})},getAttrib:function(e,t,n){var r=this,i,o;return e=r.$$(e),e.length&&(i=r.attrHooks[t],o=i&&i.get?i.get(e,t):e.attr(t)),"undefined"==typeof o&&(o=n||""),o},getPos:function(e,t){var r=this,i=0,o=0,a,s=r.doc,l=s.body,c;if(e=r.get(e),t=t||l,e){if(t===l&&e.getBoundingClientRect&&"static"===n(l).css("position"))return c=e.getBoundingClientRect(),t=r.boxModel?s.documentElement:l,i=c.left+(s.documentElement.scrollLeft||l.scrollLeft)-t.clientLeft,o=c.top+(s.documentElement.scrollTop||l.scrollTop)-t.clientTop,{x:i,y:o};for(a=e;a&&a!=t&&a.nodeType;)i+=a.offsetLeft||0,o+=a.offsetTop||0,a=a.offsetParent;for(a=e.parentNode;a&&a!=t&&a.nodeType;)i-=a.scrollLeft||0,o-=a.scrollTop||0,a=a.parentNode}return{x:i,y:o}},parseStyle:function(e){return this.styles.parse(e)},serializeStyle:function(e,t){return this.styles.serialize(e,t)},addStyle:function(e){var t=this,n=t.doc,r,i;if(t!==p.DOM&&n===document){var o=p.DOM.addedStyles;if(o=o||[],o[e])return;o[e]=!0,p.DOM.addedStyles=o}i=n.getElementById("mceDefaultStyles"),i||(i=n.createElement("style"),i.id="mceDefaultStyles",i.type="text/css",r=n.getElementsByTagName("head")[0],r.firstChild?r.insertBefore(i,r.firstChild):r.appendChild(i)),i.styleSheet?i.styleSheet.cssText+=e:i.appendChild(n.createTextNode(e))},loadCSS:function(e){var t=this,n=t.doc,r;return t!==p.DOM&&n===document?void p.DOM.loadCSS(e):(e||(e=""),r=n.getElementsByTagName("head")[0],void m(e.split(","),function(e){var i;e=c._addCacheSuffix(e),t.files[e]||(t.files[e]=!0,i=t.create("link",{rel:"stylesheet",href:e}),b&&n.documentMode&&n.recalc&&(i.onload=function(){n.recalc&&n.recalc(),i.onload=null}),r.appendChild(i))}))},addClass:function(e,t){this.$$(e).addClass(t)},removeClass:function(e,t){this.toggleClass(e,t,!1)},hasClass:function(e,t){return this.$$(e).hasClass(t)},toggleClass:function(e,t,r){this.$$(e).toggleClass(t,r).each(function(){""===this.className&&n(this).attr("class",null)})},show:function(e){this.$$(e).show()},hide:function(e){this.$$(e).hide()},isHidden:function(e){return"none"==this.$$(e).css("display")},uniqueId:function(e){return(e?e:"mce_")+this.counter++},setHTML:function(e,t){e=this.$$(e),b?e.each(function(e,r){if(r.canHaveHTML!==!1){for(;r.firstChild;)r.removeChild(r.firstChild);try{r.innerHTML="<br>"+t,r.removeChild(r.firstChild)}catch(i){n("<div>").html("<br>"+t).contents().slice(1).appendTo(r)}return t}}):e.html(t)},getOuterHTML:function(e){return e=this.get(e),1==e.nodeType&&"outerHTML"in e?e.outerHTML:n("<div>").append(n(e).clone()).html()},setOuterHTML:function(e,t){var r=this;r.$$(e).each(function(){try{if("outerHTML"in this)return void(this.outerHTML=t)}catch(e){}r.remove(n(this).html(t),!0)})},decode:s.decode,encode:s.encodeAllRaw,insertAfter:function(e,t){return t=this.get(t),this.run(e,function(e){var n,r;return n=t.parentNode,r=t.nextSibling,r?n.insertBefore(e,r):n.appendChild(e),e})},replace:function(e,t,n){var r=this;return r.run(t,function(t){return g(t,"array")&&(e=e.cloneNode(!0)),n&&m(v(t.childNodes),function(t){e.appendChild(t)}),t.parentNode.replaceChild(e,t)})},rename:function(e,t){var n=this,r;return e.nodeName!=t.toUpperCase()&&(r=n.create(t),m(n.getAttribs(e),function(t){n.setAttrib(r,t.nodeName,n.getAttrib(e,t.nodeName))}),n.replace(r,e,1)),r||e},findCommonAncestor:function(e,t){for(var n=e,r;n;){for(r=t;r&&n!=r;)r=r.parentNode;if(n==r)break;n=n.parentNode}return!n&&e.ownerDocument?e.ownerDocument.documentElement:n},toHex:function(e){return this.styles.toHex(c.trim(e))},run:function(e,t,n){var r=this,i;return"string"==typeof e&&(e=r.get(e)),e?(n=n||this,e.nodeType||!e.length&&0!==e.length?t.call(n,e):(i=[],m(e,function(e,o){e&&("string"==typeof e&&(e=r.get(e)),i.push(t.call(n,e,o)))}),i)):!1},getAttribs:function(e){var t;if(e=this.get(e),!e)return[];if(b){if(t=[],"OBJECT"==e.nodeName)return e.attributes;"OPTION"===e.nodeName&&this.getAttrib(e,"selected")&&t.push({specified:1,nodeName:"selected"});var n=/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi;
+return e.cloneNode(!1).outerHTML.replace(n,"").replace(/[\w:\-]+/gi,function(e){t.push({specified:1,nodeName:e})}),t}return e.attributes},isEmpty:function(e,t){var n=this,r,i,a,s,l,c=0;if(e=e.firstChild){s=new o(e,e.parentNode),t=t||(n.schema?n.schema.getNonEmptyElements():null);do{if(a=e.nodeType,1===a){if(e.getAttribute("data-mce-bogus"))continue;if(l=e.nodeName.toLowerCase(),t&&t[l]){if("br"===l){c++;continue}return!1}for(i=n.getAttribs(e),r=i.length;r--;)if(l=i[r].nodeName,"name"===l||"data-mce-bookmark"===l)return!1}if(8==a)return!1;if(3===a&&!C.test(e.nodeValue))return!1}while(e=s.next())}return 1>=c},createRng:function(){var e=this.doc;return e.createRange?e.createRange():new a(this)},nodeIndex:h,split:function(e,t,n){function r(e){function t(e){var t=e.previousSibling&&"SPAN"==e.previousSibling.nodeName,n=e.nextSibling&&"SPAN"==e.nextSibling.nodeName;return t&&n}var n,o=e.childNodes,a=e.nodeType;if(1!=a||"bookmark"!=e.getAttribute("data-mce-type")){for(n=o.length-1;n>=0;n--)r(o[n]);if(9!=a){if(3==a&&e.nodeValue.length>0){var s=y(e.nodeValue).length;if(!i.isBlock(e.parentNode)||s>0||0===s&&t(e))return}else if(1==a&&(o=e.childNodes,1==o.length&&o[0]&&1==o[0].nodeType&&"bookmark"==o[0].getAttribute("data-mce-type")&&e.parentNode.insertBefore(o[0],e),o.length||/^(br|hr|input|img)$/i.test(e.nodeName)))return;i.remove(e)}return e}}var i=this,o=i.createRng(),a,s,l;return e&&t?(o.setStart(e.parentNode,i.nodeIndex(e)),o.setEnd(t.parentNode,i.nodeIndex(t)),a=o.extractContents(),o=i.createRng(),o.setStart(t.parentNode,i.nodeIndex(t)+1),o.setEnd(e.parentNode,i.nodeIndex(e)+1),s=o.extractContents(),l=e.parentNode,l.insertBefore(r(a),e),n?l.replaceChild(n,t):l.insertBefore(t,e),l.insertBefore(r(s),e),i.remove(e),n||t):void 0},bind:function(e,t,n,r){var i=this;if(c.isArray(e)){for(var o=e.length;o--;)e[o]=i.bind(e[o],t,n,r);return e}return!i.settings.collect||e!==i.doc&&e!==i.win||i.boundEvents.push([e,t,n,r]),i.events.bind(e,t,n,r||i)},unbind:function(e,t,n){var r=this,i;if(c.isArray(e)){for(i=e.length;i--;)e[i]=r.unbind(e[i],t,n);return e}if(r.boundEvents&&(e===r.doc||e===r.win))for(i=r.boundEvents.length;i--;){var o=r.boundEvents[i];e!=o[0]||t&&t!=o[1]||n&&n!=o[2]||this.events.unbind(o[0],o[1],o[2])}return this.events.unbind(e,t,n)},fire:function(e,t,n){return this.events.fire(e,t,n)},getContentEditable:function(e){var t;return e&&1==e.nodeType?(t=e.getAttribute("data-mce-contenteditable"),t&&"inherit"!==t?t:"inherit"!==e.contentEditable?e.contentEditable:null):null},getContentEditableParent:function(e){for(var t=this.getRoot(),n=null;e&&e!==t&&(n=this.getContentEditable(e),null===n);e=e.parentNode);return n},destroy:function(){var t=this;if(t.boundEvents){for(var n=t.boundEvents.length;n--;){var r=t.boundEvents[n];this.events.unbind(r[0],r[1],r[2])}t.boundEvents=null}e.setDocument&&e.setDocument(),t.win=t.doc=t.root=t.events=t.frag=null},isChildOf:function(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1},dumpRng:function(e){return"startContainer: "+e.startContainer.nodeName+", startOffset: "+e.startOffset+", endContainer: "+e.endContainer.nodeName+", endOffset: "+e.endOffset},_findSib:function(e,t,n){var r=this,i=t;if(e)for("string"==typeof i&&(i=function(e){return r.is(e,t)}),e=e[n];e;e=e[n])if(i(e))return e;return null}},p.DOM=new p(document),p.nodeIndex=h,p}),r(x,[b,f],function(e,t){function n(){function e(e,n){function i(){a.remove(l),s&&(s.onreadystatechange=s.onload=s=null),n()}function o(){"undefined"!=typeof console&&console.log&&console.log("Failed to load: "+e)}var a=r,s,l;l=a.uniqueId(),s=document.createElement("script"),s.id=l,s.type="text/javascript",s.src=t._addCacheSuffix(e),"onreadystatechange"in s?s.onreadystatechange=function(){/loaded|complete/.test(s.readyState)&&i()}:s.onload=i,s.onerror=o,(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}var n=0,a=1,s=2,l={},c=[],u={},d=[],f=0,h;this.isDone=function(e){return l[e]==s},this.markDone=function(e){l[e]=s},this.add=this.load=function(e,t,r){var i=l[e];i==h&&(c.push(e),l[e]=n),t&&(u[e]||(u[e]=[]),u[e].push({func:t,scope:r||this}))},this.loadQueue=function(e,t){this.loadScripts(c,e,t)},this.loadScripts=function(t,n,r){function c(e){i(u[e],function(e){e.func.call(e.scope)}),u[e]=h}var p;d.push({func:n,scope:r||this}),(p=function(){var n=o(t);t.length=0,i(n,function(t){return l[t]==s?void c(t):void(l[t]!=a&&(l[t]=a,f++,e(t,function(){l[t]=s,f--,c(t),p()})))}),f||(i(d,function(e){e.func.call(e.scope)}),d.length=0)})()}}var r=e.DOM,i=t.each,o=t.grep;return n.ScriptLoader=new n,n}),r(C,[x,f],function(e,n){function r(){var e=this;e.items=[],e.urls={},e.lookup={}}var i=n.each;return r.prototype={get:function(e){return this.lookup[e]?this.lookup[e].instance:t},dependencies:function(e){var t;return this.lookup[e]&&(t=this.lookup[e].dependencies),t||[]},requireLangPack:function(t,n){var i=r.language;if(i&&r.languageLoad!==!1){if(n)if(n=","+n+",",-1!=n.indexOf(","+i.substr(0,2)+","))i=i.substr(0,2);else if(-1==n.indexOf(","+i+","))return;e.ScriptLoader.add(this.urls[t]+"/langs/"+i+".js")}},add:function(e,t,n){return this.items.push(t),this.lookup[e]={instance:t,dependencies:n},t},createUrl:function(e,t){return"object"==typeof t?t:{prefix:e.prefix,resource:t,suffix:e.suffix}},addComponents:function(t,n){var r=this.urls[t];i(n,function(t){e.ScriptLoader.add(r+"/"+t)})},load:function(n,o,a,s){function l(){var r=c.dependencies(n);i(r,function(e){var n=c.createUrl(o,e);c.load(n.resource,n,t,t)}),a&&(s?a.call(s):a.call(e))}var c=this,u=o;c.urls[n]||("object"==typeof o&&(u=o.prefix+o.resource+o.suffix),0!==u.indexOf("/")&&-1==u.indexOf("://")&&(u=r.baseURL+"/"+u),c.urls[n]=u.substring(0,u.lastIndexOf("/")),c.lookup[n]?l():e.ScriptLoader.add(u,l,s))}},r.PluginManager=new r,r.ThemeManager=new r,r}),r(w,[f,m],function(e,t){function n(e,t){var n=e.childNodes;return t--,t>n.length-1?t=n.length-1:0>t&&(t=0),n[t]||e}function r(e){this.walk=function(t,r){function o(e){var t;return t=e[0],3===t.nodeType&&t===c&&u>=t.nodeValue.length&&e.splice(0,1),t=e[e.length-1],0===f&&e.length>0&&t===d&&3===t.nodeType&&e.splice(e.length-1,1),e}function a(e,t,n){for(var r=[];e&&e!=n;e=e[t])r.push(e);return r}function s(e,t){do{if(e.parentNode==t)return e;e=e.parentNode}while(e)}function l(e,t,n){var i=n?"nextSibling":"previousSibling";for(g=e,v=g.parentNode;g&&g!=t;g=v)v=g.parentNode,y=a(g==e?g:g[i],i),y.length&&(n||y.reverse(),r(o(y)))}var c=t.startContainer,u=t.startOffset,d=t.endContainer,f=t.endOffset,h,p,m,g,v,y,b;if(b=e.select("td.mce-item-selected,th.mce-item-selected"),b.length>0)return void i(b,function(e){r([e])});if(1==c.nodeType&&c.hasChildNodes()&&(c=c.childNodes[u]),1==d.nodeType&&d.hasChildNodes()&&(d=n(d,f)),c==d)return r(o([c]));for(h=e.findCommonAncestor(c,d),g=c;g;g=g.parentNode){if(g===d)return l(c,h,!0);if(g===h)break}for(g=d;g;g=g.parentNode){if(g===c)return l(d,h);if(g===h)break}p=s(c,h)||c,m=s(d,h)||d,l(c,p,!0),y=a(p==c?p:p.nextSibling,"nextSibling",m==d?m.nextSibling:m),y.length&&r(o(y)),l(d,m)},this.split=function(e){function t(e,t){return e.splitText(t)}var n=e.startContainer,r=e.startOffset,i=e.endContainer,o=e.endOffset;return n==i&&3==n.nodeType?r>0&&r<n.nodeValue.length&&(i=t(n,r),n=i.previousSibling,o>r?(o-=r,n=i=t(i,o).previousSibling,o=i.nodeValue.length,r=0):o=0):(3==n.nodeType&&r>0&&r<n.nodeValue.length&&(n=t(n,r),r=0),3==i.nodeType&&o>0&&o<i.nodeValue.length&&(i=t(i,o).previousSibling,o=i.nodeValue.length)),{startContainer:n,startOffset:r,endContainer:i,endOffset:o}},this.normalize=function(n){function r(r){function a(e){return e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}function s(n,r){for(var i=new t(n,e.getParent(n.parentNode,e.isBlock)||h);n=i[r?"prev":"next"]();)if("BR"===n.nodeName)return!0}function l(e,t){return e.previousSibling&&e.previousSibling.nodeName==t}function c(n,r){var a,s,l;if(r=r||u,l=e.getParent(r.parentNode,e.isBlock)||h,n&&"BR"==r.nodeName&&v&&e.isEmpty(l))return u=r.parentNode,d=e.nodeIndex(r),void(i=!0);for(a=new t(r,l);p=a[n?"prev":"next"]();){if("false"===e.getContentEditableParent(p))return;if(3===p.nodeType&&p.nodeValue.length>0)return u=p,d=n?p.nodeValue.length:0,void(i=!0);if(e.isBlock(p)||m[p.nodeName.toLowerCase()])return;s=p}o&&s&&(u=s,i=!0,d=0)}var u,d,f,h=e.getRoot(),p,m,g,v;if(u=n[(r?"start":"end")+"Container"],d=n[(r?"start":"end")+"Offset"],v=1==u.nodeType&&d===u.childNodes.length,m=e.schema.getNonEmptyElements(),g=r,1==u.nodeType&&d>u.childNodes.length-1&&(g=!1),9===u.nodeType&&(u=e.getRoot(),d=0),u===h){if(g&&(p=u.childNodes[d>0?d-1:0],p&&(m[p.nodeName]||"TABLE"==p.nodeName)))return;if(u.hasChildNodes()&&(d=Math.min(!g&&d>0?d-1:d,u.childNodes.length-1),u=u.childNodes[d],d=0,u.hasChildNodes()&&!/TABLE/.test(u.nodeName))){p=u,f=new t(u,h);do{if(3===p.nodeType&&p.nodeValue.length>0){d=g?0:p.nodeValue.length,u=p,i=!0;break}if(m[p.nodeName.toLowerCase()]&&!a(p)){d=e.nodeIndex(p),u=p.parentNode,"IMG"!=p.nodeName||g||d++,i=!0;break}}while(p=g?f.next():f.prev())}}o&&(3===u.nodeType&&0===d&&c(!0),1===u.nodeType&&(p=u.childNodes[d],p||(p=u.childNodes[d-1]),!p||"BR"!==p.nodeName||l(p,"A")||s(p)||s(p,!0)||c(!0,p))),g&&!o&&3===u.nodeType&&d===u.nodeValue.length&&c(!1),i&&n["set"+(r?"Start":"End")](u,d)}var i,o;return o=n.collapsed,r(!0),o||r(),i&&o&&n.collapse(!0),i}}var i=e.each;return r.compareRanges=function(e,t){if(e&&t){if(!e.item&&!e.duplicate)return e.startContainer==t.startContainer&&e.startOffset==t.startOffset;if(e.item&&t.item&&e.item(0)===t.item(0))return!0;if(e.isEqual&&t.isEqual&&t.isEqual(e))return!0}return!1},r.getCaretRangeFromPoint=function(e,t,n){var r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r.collapse(t<n.body.clientHeight)}}return r},r.getNode=function(e,t){return 1==e.nodeType&&e.hasChildNodes()&&(t>=e.childNodes.length&&(t=e.childNodes.length-1),e=e.childNodes[t]),e},r}),r(_,[w,u],function(e,t){return function(n){function r(e){var t,r;if(r=n.$(e).parentsUntil(n.getBody()).add(e),r.length===o.length){for(t=r.length;t>=0&&r[t]===o[t];t--);if(-1===t)return o=r,!0}return o=r,!1}var i,o=[];"onselectionchange"in n.getDoc()||n.on("NodeChange Click MouseUp KeyUp Focus",function(t){var r,o;r=n.selection.getRng(),o={startContainer:r.startContainer,startOffset:r.startOffset,endContainer:r.endContainer,endOffset:r.endOffset},"nodechange"!=t.type&&e.compareRanges(o,i)||n.fire("SelectionChange"),i=o}),n.on("contextmenu",function(){n.fire("SelectionChange")}),n.on("SelectionChange",function(){var e=n.selection.getStart(!0);(t.range||!n.selection.isCollapsed())&&!r(e)&&n.dom.isChildOf(e,n.getBody())&&n.nodeChanged({selectionChange:!0})}),n.on("MouseUp",function(e){e.isDefaultPrevented()||("IMG"==n.selection.getNode().nodeName?setTimeout(function(){n.nodeChanged()},0):n.nodeChanged())}),this.nodeChanged=function(e){var t=n.selection,r,i,o;n.initialized&&t&&!n.settings.disable_nodechange&&!n.settings.readonly&&(o=n.getBody(),r=t.getStart()||o,r=r.ownerDocument!=n.getDoc()?n.getBody():r,"IMG"==r.nodeName&&t.isCollapsed()&&(r=r.parentNode),i=[],n.dom.getParent(r,function(e){return e===o?!0:void i.push(e)}),e=e||{},e.element=r,e.parents=i,n.fire("NodeChange",e))}}}),r(E,[],function(){function e(e,t,n){var r,i,o=n?"lastChild":"firstChild",a=n?"prev":"next";if(e[o])return e[o];if(e!==t){if(r=e[a])return r;for(i=e.parent;i&&i!==t;i=i.parent)if(r=i[a])return r}}function t(e,t){this.name=e,this.type=t,1===t&&(this.attributes=[],this.attributes.map={})}var n=/^[ \t\r\n]*$/,r={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};return t.prototype={replace:function(e){var t=this;return e.parent&&e.remove(),t.insert(e,t),t.remove(),t},attr:function(e,t){var n=this,r,i,o;if("string"!=typeof e){for(i in e)n.attr(i,e[i]);return n}if(r=n.attributes){if(t!==o){if(null===t){if(e in r.map)for(delete r.map[e],i=r.length;i--;)if(r[i].name===e)return r=r.splice(i,1),n;return n}if(e in r.map){for(i=r.length;i--;)if(r[i].name===e){r[i].value=t;break}}else r.push({name:e,value:t});return r.map[e]=t,n}return r.map[e]}},clone:function(){var e=this,n=new t(e.name,e.type),r,i,o,a,s;if(o=e.attributes){for(s=[],s.map={},r=0,i=o.length;i>r;r++)a=o[r],"id"!==a.name&&(s[s.length]={name:a.name,value:a.value},s.map[a.name]=a.value);n.attributes=s}return n.value=e.value,n.shortEnded=e.shortEnded,n},wrap:function(e){var t=this;return t.parent.insert(e,t),e.append(t),t},unwrap:function(){var e=this,t,n;for(t=e.firstChild;t;)n=t.next,e.insert(t,e,!0),t=n;e.remove()},remove:function(){var e=this,t=e.parent,n=e.next,r=e.prev;return t&&(t.firstChild===e?(t.firstChild=n,n&&(n.prev=null)):r.next=n,t.lastChild===e?(t.lastChild=r,r&&(r.next=null)):n.prev=r,e.parent=e.next=e.prev=null),e},append:function(e){var t=this,n;return e.parent&&e.remove(),n=t.lastChild,n?(n.next=e,e.prev=n,t.lastChild=e):t.lastChild=t.firstChild=e,e.parent=t,e},insert:function(e,t,n){var r;return e.parent&&e.remove(),r=t.parent||this,n?(t===r.firstChild?r.firstChild=e:t.prev.next=e,e.prev=t.prev,e.next=t,t.prev=e):(t===r.lastChild?r.lastChild=e:t.next.prev=e,e.next=t.next,e.prev=t,t.next=e),e.parent=r,e},getAll:function(t){var n=this,r,i=[];for(r=n.firstChild;r;r=e(r,n))r.name===t&&i.push(r);return i},empty:function(){var t=this,n,r,i;if(t.firstChild){for(n=[],i=t.firstChild;i;i=e(i,t))n.push(i);for(r=n.length;r--;)i=n[r],i.parent=i.firstChild=i.lastChild=i.next=i.prev=null}return t.firstChild=t.lastChild=null,t},isEmpty:function(t){var r=this,i=r.firstChild,o,a;if(i)do{if(1===i.type){if(i.attributes.map["data-mce-bogus"])continue;if(t[i.name])return!1;for(o=i.attributes.length;o--;)if(a=i.attributes[o].name,"name"===a||0===a.indexOf("data-mce-bookmark"))return!1}if(8===i.type)return!1;if(3===i.type&&!n.test(i.value))return!1}while(i=e(i,r));return!0},walk:function(t){return e(this,null,t)}},t.create=function(e,n){var i,o;if(i=new t(e,r[e]||1),n)for(o in n)i.attr(o,n[o]);return i},t}),r(N,[f],function(e){function t(e,t){return e?e.split(t||" "):[]}function n(e){function n(e,n,r){function i(e,t){var n={},r,i;for(r=0,i=e.length;i>r;r++)n[e[r]]=t||{};return n}var s,c,u,d=arguments;for(r=r||[],n=n||"","string"==typeof r&&(r=t(r)),c=3;c<d.length;c++)"string"==typeof d[c]&&(d[c]=t(d[c])),r.push.apply(r,d[c]);for(e=t(e),s=e.length;s--;)u=[].concat(l,t(n)),a[e[s]]={attributes:i(u),attributesOrder:u,children:i(r,o)}}function r(e,n){var r,i,o,s;for(e=t(e),r=e.length,n=t(n);r--;)for(i=a[e[r]],o=0,s=n.length;s>o;o++)i.attributes[n[o]]={},i.attributesOrder.push(n[o])}var a={},l,c,u,d,f,h;return i[e]?i[e]:(l=t("id accesskey class dir lang style tabindex title"),c=t("address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul"),u=t("a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd label map noscript object q s samp script select small span strong sub sup textarea u var #text #comment"),"html4"!=e&&(l.push.apply(l,t("contenteditable contextmenu draggable dropzone hidden spellcheck translate")),c.push.apply(c,t("article aside details dialog figure header footer hgroup section nav")),u.push.apply(u,t("audio canvas command datalist mark meter output picture progress time wbr video ruby bdi keygen"))),"html5-strict"!=e&&(l.push("xml:lang"),h=t("acronym applet basefont big font strike tt"),u.push.apply(u,h),s(h,function(e){n(e,"",u)}),f=t("center dir isindex noframes"),c.push.apply(c,f),d=[].concat(c,u),s(f,function(e){n(e,"",d)})),d=d||[].concat(c,u),n("html","manifest","head body"),n("head","","base command link meta noscript script style title"),n("title hr noscript br"),n("base","href target"),n("link","href rel media hreflang type sizes hreflang"),n("meta","name http-equiv content charset"),n("style","media type scoped"),n("script","src async defer type charset"),n("body","onafterprint onbeforeprint onbeforeunload onblur onerror onfocus onhashchange onload onmessage onoffline ononline onpagehide onpageshow onpopstate onresize onscroll onstorage onunload",d),n("address dt dd div caption","",d),n("h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn","",u),n("blockquote","cite",d),n("ol","reversed start type","li"),n("ul","","li"),n("li","value",d),n("dl","","dt dd"),n("a","href target rel media hreflang type",u),n("q","cite",u),n("ins del","cite datetime",d),n("img","src sizes srcset alt usemap ismap width height"),n("iframe","src name width height",d),n("embed","src type width height"),n("object","data type typemustmatch name usemap form width height",d,"param"),n("param","name value"),n("map","name",d,"area"),n("area","alt coords shape href target rel media hreflang type"),n("table","border","caption colgroup thead tfoot tbody tr"+("html4"==e?" col":"")),n("colgroup","span","col"),n("col","span"),n("tbody thead tfoot","","tr"),n("tr","","td th"),n("td","colspan rowspan headers",d),n("th","colspan rowspan headers scope abbr",d),n("form","accept-charset action autocomplete enctype method name novalidate target",d),n("fieldset","disabled form name",d,"legend"),n("label","form for",u),n("input","accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate formtarget height list max maxlength min multiple name pattern readonly required size src step type value width"),n("button","disabled form formaction formenctype formmethod formnovalidate formtarget name type value","html4"==e?d:u),n("select","disabled form multiple name required size","option optgroup"),n("optgroup","disabled label","option"),n("option","disabled label selected value"),n("textarea","cols dirname disabled form maxlength name readonly required rows wrap"),n("menu","type label",d,"li"),n("noscript","",d),"html4"!=e&&(n("wbr"),n("ruby","",u,"rt rp"),n("figcaption","",d),n("mark rt rp summary bdi","",u),n("canvas","width height",d),n("video","src crossorigin poster preload autoplay mediagroup loop muted controls width height buffered",d,"track source"),n("audio","src crossorigin preload autoplay mediagroup loop muted controls buffered volume",d,"track source"),n("picture","","img source"),n("source","src srcset type media sizes"),n("track","kind src srclang label default"),n("datalist","",u,"option"),n("article section nav aside header footer","",d),n("hgroup","","h1 h2 h3 h4 h5 h6"),n("figure","",d,"figcaption"),n("time","datetime",u),n("dialog","open",d),n("command","type label icon disabled checked radiogroup command"),n("output","for form name",u),n("progress","value max",u),n("meter","value min max low high optimum",u),n("details","open",d,"summary"),n("keygen","autofocus challenge disabled form keytype name")),"html5-strict"!=e&&(r("script","language xml:space"),r("style","xml:space"),r("object","declare classid code codebase codetype archive standby align border hspace vspace"),r("embed","align name hspace vspace"),r("param","valuetype type"),r("a","charset name rev shape coords"),r("br","clear"),r("applet","codebase archive code object alt name width height align hspace vspace"),r("img","name longdesc align border hspace vspace"),r("iframe","longdesc frameborder marginwidth marginheight scrolling align"),r("font basefont","size color face"),r("input","usemap align"),r("select","onchange"),r("textarea"),r("h1 h2 h3 h4 h5 h6 div p legend caption","align"),r("ul","type compact"),r("li","type"),r("ol dl menu dir","compact"),r("pre","width xml:space"),r("hr","align noshade size width"),r("isindex","prompt"),r("table","summary width frame rules cellspacing cellpadding align bgcolor"),r("col","width align char charoff valign"),r("colgroup","width align char charoff valign"),r("thead","align char charoff valign"),r("tr","align char charoff valign bgcolor"),r("th","axis align char charoff valign nowrap bgcolor width height"),r("form","accept"),r("td","abbr axis scope align char charoff valign nowrap bgcolor width height"),r("tfoot","align char charoff valign"),r("tbody","align char charoff valign"),r("area","nohref"),r("body","background bgcolor text link vlink alink")),"html4"!=e&&(r("input button select textarea","autofocus"),r("input textarea","placeholder"),r("a","download"),r("link script img","crossorigin"),r("iframe","sandbox seamless allowfullscreen")),s(t("a form meter progress dfn"),function(e){a[e]&&delete a[e].children[e]}),delete a.caption.children.table,delete a.script,i[e]=a,a)}function r(e,t){var n;return e&&(n={},"string"==typeof e&&(e={"*":e}),s(e,function(e,r){n[r]=n[r.toUpperCase()]="map"==t?a(e,/[, ]/):c(e,/[, ]/)})),n}var i={},o={},a=e.makeMap,s=e.each,l=e.extend,c=e.explode,u=e.inArray;return function(e){function o(t,n,r){var o=e[t];return o?o=a(o,/[, ]/,a(o.toUpperCase(),/[, ]/)):(o=i[t],o||(o=a(n," ",a(n.toUpperCase()," ")),o=l(o,r),i[t]=o)),o}function d(e){return new RegExp("^"+e.replace(/([?+*])/g,".$1")+"$")}function f(e){var n,r,i,o,s,l,c,f,h,p,m,g,v,b,C,w,_,E,N,S=/^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/,k=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,T=/[*?+]/;if(e)for(e=t(e,","),y["@"]&&(w=y["@"].attributes,_=y["@"].attributesOrder),n=0,r=e.length;r>n;n++)if(s=S.exec(e[n])){if(b=s[1],h=s[2],C=s[3],f=s[5],g={},v=[],l={attributes:g,attributesOrder:v},"#"===b&&(l.paddEmpty=!0),"-"===b&&(l.removeEmpty=!0),"!"===s[4]&&(l.removeEmptyAttrs=!0),w){for(E in w)g[E]=w[E];v.push.apply(v,_)}if(f)for(f=t(f,"|"),i=0,o=f.length;o>i;i++)if(s=k.exec(f[i])){if(c={},m=s[1],p=s[2].replace(/::/g,":"),b=s[3],N=s[4],"!"===m&&(l.attributesRequired=l.attributesRequired||[],l.attributesRequired.push(p),c.required=!0),"-"===m){delete g[p],v.splice(u(v,p),1);continue}b&&("="===b&&(l.attributesDefault=l.attributesDefault||[],l.attributesDefault.push({name:p,value:N}),c.defaultValue=N),":"===b&&(l.attributesForced=l.attributesForced||[],l.attributesForced.push({name:p,value:N}),c.forcedValue=N),"<"===b&&(c.validValues=a(N,"?"))),T.test(p)?(l.attributePatterns=l.attributePatterns||[],c.pattern=d(p),l.attributePatterns.push(c)):(g[p]||v.push(p),g[p]=c)}w||"@"!=h||(w=g,_=v),C&&(l.outputName=h,y[C]=l),T.test(h)?(l.pattern=d(h),x.push(l)):y[h]=l}}function h(e){y={},x=[],f(e),s(_,function(e,t){b[t]=e.children})}function p(e){var n=/^(~)?(.+)$/;e&&(i.text_block_elements=i.block_elements=null,s(t(e,","),function(e){var t=n.exec(e),r="~"===t[1],i=r?"span":"div",o=t[2];if(b[o]=b[i],M[o]=i,r||(R[o.toUpperCase()]={},R[o]={}),!y[o]){var a=y[i];a=l({},a),delete a.removeEmptyAttrs,delete a.removeEmpty,y[o]=a}s(b,function(e,t){e[i]&&(b[t]=e=l({},b[t]),e[o]=e[i])})}))}function m(n){var r=/^([+\-]?)(\w+)\[([^\]]+)\]$/;i[e.schema]=null,n&&s(t(n,","),function(e){var n=r.exec(e),i,o;n&&(o=n[1],i=o?b[n[2]]:b[n[2]]={"#comment":{}},i=b[n[2]],s(t(n[3],"|"),function(e){"-"===o?delete i[e]:i[e]={}}))})}function g(e){var t=y[e],n;if(t)return t;for(n=x.length;n--;)if(t=x[n],t.pattern.test(e))return t}var v=this,y={},b={},x=[],C,w,_,E,N,S,k,T,R,A,B,D,L,M={},H={};e=e||{},_=n(e.schema),e.verify_html===!1&&(e.valid_elements="*[*]"),C=r(e.valid_styles),w=r(e.invalid_styles,"map"),T=r(e.valid_classes,"map"),E=o("whitespace_elements","pre script noscript style textarea video audio iframe object"),N=o("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr"),S=o("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr track"),k=o("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls"),A=o("non_empty_elements","td th iframe video audio object script",S),B=o("move_caret_before_on_enter_elements","table",A),D=o("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure"),R=o("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex option datalist select optgroup",D),L=o("text_inline_elements","span strong b em i font strike u var cite dfn code mark q sup sub samp"),s((e.special||"script noscript style textarea").split(" "),function(e){H[e]=new RegExp("</"+e+"[^>]*>","gi")}),e.valid_elements?h(e.valid_elements):(s(_,function(e,t){y[t]={attributes:e.attributes,attributesOrder:e.attributesOrder},b[t]=e.children}),"html5"!=e.schema&&s(t("strong/b em/i"),function(e){e=t(e,"/"),y[e[1]].outputName=e[0]}),y.img.attributesDefault=[{name:"alt",value:""}],s(t("ol ul sub sup blockquote span font a table tbody tr strong em b i"),function(e){y[e]&&(y[e].removeEmpty=!0)}),s(t("p h1 h2 h3 h4 h5 h6 th td pre div address caption"),function(e){y[e].paddEmpty=!0}),s(t("span"),function(e){y[e].removeEmptyAttrs=!0})),p(e.custom_elements),m(e.valid_children),f(e.extended_valid_elements),m("+ol[ul|ol],+ul[ul|ol]"),e.invalid_elements&&s(c(e.invalid_elements),function(e){y[e]&&delete y[e]}),g("span")||f("span[!data-mce-type|*]"),v.children=b,v.getValidStyles=function(){return C},v.getInvalidStyles=function(){return w},v.getValidClasses=function(){return T},v.getBoolAttrs=function(){return k},v.getBlockElements=function(){return R},v.getTextBlockElements=function(){return D},v.getTextInlineElements=function(){return L},v.getShortEndedElements=function(){return S},v.getSelfClosingElements=function(){return N},v.getNonEmptyElements=function(){return A},v.getMoveCaretBeforeOnEnterElements=function(){return B},v.getWhiteSpaceElements=function(){return E},v.getSpecialElements=function(){return H},v.isValidChild=function(e,t){var n=b[e];return!(!n||!n[t])},v.isValid=function(e,t){var n,r,i=g(e);if(i){if(!t)return!0;if(i.attributes[t])return!0;if(n=i.attributePatterns)for(r=n.length;r--;)if(n[r].pattern.test(e))return!0}return!1},v.getElementRule=g,v.getCustomElements=function(){return M},v.addValidElements=f,v.setValidElements=h,v.addCustomElements=p,v.addValidChildren=m,v.elements=y}}),r(S,[N,v,f],function(e,t,n){function r(e,t,n){var r=1,i,o,a,s;for(s=e.getShortEndedElements(),a=/<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g,a.lastIndex=i=n;o=a.exec(t);){if(i=a.lastIndex,"/"===o[1])r--;else if(!o[1]){if(o[2]in s)continue;r++}if(0===r)break}return i}function i(i,a){function s(){}var l=this;i=i||{},l.schema=a=a||new e,i.fix_self_closing!==!1&&(i.fix_self_closing=!0),o("comment cdata text start end pi doctype".split(" "),function(e){e&&(l[e]=i[e]||s)}),l.parse=function(e){function o(e){var t,n;for(t=h.length;t--&&h[t].name!==e;);if(t>=0){for(n=h.length-1;n>=t;n--)e=h[n],e.valid&&l.end(e.name);h.length=t}}function s(e,t,n,r,o){var a,s,l=/[\s\u0000-\u001F]+/g;if(t=t.toLowerCase(),n=t in C?t:z(n||r||o||""),_&&!y&&0!==t.indexOf("data-")){if(a=T[t],!a&&R){for(s=R.length;s--&&(a=R[s],!a.pattern.test(t)););-1===s&&(a=null)}if(!a)return;if(a.validValues&&!(n in a.validValues))return}if(V[t]&&!i.allow_script_urls){var c=n.replace(l,"");try{c=decodeURIComponent(c)}catch(u){c=unescape(c)}if(U.test(c))return;if(!i.allow_html_data_urls&&$.test(c)&&!/^data:image\//i.test(c))return}p.map[t]=n,p.push({name:t,value:n})}var l=this,c,u=0,d,f,h=[],p,m,g,v,y,b,x,C,w,_,E,N,S,k,T,R,A,B,D,L,M,H,P,O,I,F=0,z=t.decode,W,V=n.makeMap("src,href,data,background,formaction,poster"),U=/((java|vb)script|mhtml):/i,$=/^data:/i;for(H=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-_\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g"),P=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g,x=a.getShortEndedElements(),M=i.self_closing_elements||a.getSelfClosingElements(),C=a.getBoolAttrs(),_=i.validate,b=i.remove_internals,W=i.fix_self_closing,O=a.getSpecialElements();c=H.exec(e);){if(u<c.index&&l.text(z(e.substr(u,c.index-u))),d=c[6])d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),o(d);else if(d=c[7]){if(d=d.toLowerCase(),":"===d.charAt(0)&&(d=d.substr(1)),w=d in x,W&&M[d]&&h.length>0&&h[h.length-1].name===d&&o(d),!_||(E=a.getElementRule(d))){if(N=!0,_&&(T=E.attributes,R=E.attributePatterns),(k=c[8])?(y=-1!==k.indexOf("data-mce-type"),y&&b&&(N=!1),p=[],p.map={},k.replace(P,s)):(p=[],p.map={}),_&&!y){if(A=E.attributesRequired,B=E.attributesDefault,D=E.attributesForced,L=E.removeEmptyAttrs,L&&!p.length&&(N=!1),D)for(m=D.length;m--;)S=D[m],v=S.name,I=S.value,"{$uid}"===I&&(I="mce_"+F++),p.map[v]=I,p.push({name:v,value:I});if(B)for(m=B.length;m--;)S=B[m],v=S.name,v in p.map||(I=S.value,"{$uid}"===I&&(I="mce_"+F++),p.map[v]=I,p.push({name:v,value:I}));if(A){for(m=A.length;m--&&!(A[m]in p.map););-1===m&&(N=!1)}if(S=p.map["data-mce-bogus"]){if("all"===S){u=r(a,e,H.lastIndex),H.lastIndex=u;continue}N=!1}}N&&l.start(d,p,w)}else N=!1;if(f=O[d]){f.lastIndex=u=c.index+c[0].length,(c=f.exec(e))?(N&&(g=e.substr(u,c.index-u)),u=c.index+c[0].length):(g=e.substr(u),u=e.length),N&&(g.length>0&&l.text(g,!0),l.end(d)),H.lastIndex=u;continue}w||(k&&k.indexOf("/")==k.length-1?N&&l.end(d):h.push({name:d,valid:N}))}else(d=c[1])?(">"===d.charAt(0)&&(d=" "+d),i.allow_conditional_comments||"[if"!==d.substr(0,3)||(d=" "+d),l.comment(d)):(d=c[2])?l.cdata(d):(d=c[3])?l.doctype(d):(d=c[4])&&l.pi(d,c[5]);u=c.index+c[0].length}for(u<e.length&&l.text(z(e.substr(u))),m=h.length-1;m>=0;m--)d=h[m],d.valid&&l.end(d.name)}}var o=n.each;return i.findEndTag=r,i}),r(k,[E,N,S,f],function(e,t,n,r){var i=r.makeMap,o=r.each,a=r.explode,s=r.extend;return function(r,l){function c(t){var n,r,o,a,s,c,d,f,h,p,m,g,v,y,b;for(m=i("tr,td,th,tbody,thead,tfoot,table"),p=l.getNonEmptyElements(),g=l.getTextBlockElements(),v=l.getSpecialElements(),n=0;n<t.length;n++)if(r=t[n],r.parent&&!r.fixed)if(g[r.name]&&"li"==r.parent.name){for(y=r.next;y&&g[y.name];)y.name="li",y.fixed=!0,r.parent.insert(y,r.parent),y=y.next;r.unwrap(r)}else{for(a=[r],o=r.parent;o&&!l.isValidChild(o.name,r.name)&&!m[o.name];o=o.parent)a.push(o);if(o&&a.length>1){for(a.reverse(),s=c=u.filterNode(a[0].clone()),h=0;h<a.length-1;h++){for(l.isValidChild(c.name,a[h].name)?(d=u.filterNode(a[h].clone()),c.append(d)):d=c,f=a[h].firstChild;f&&f!=a[h+1];)b=f.next,d.append(f),f=b;c=d}s.isEmpty(p)?o.insert(r,a[0],!0):(o.insert(s,a[0],!0),o.insert(r,s)),o=a[0],(o.isEmpty(p)||o.firstChild===o.lastChild&&"br"===o.firstChild.name)&&o.empty().remove()}else if(r.parent){if("li"===r.name){if(y=r.prev,y&&("ul"===y.name||"ul"===y.name)){y.append(r);continue}if(y=r.next,y&&("ul"===y.name||"ul"===y.name)){y.insert(r,y.firstChild,!0);continue}r.wrap(u.filterNode(new e("ul",1)));continue}l.isValidChild(r.parent.name,"div")&&l.isValidChild("div",r.name)?r.wrap(u.filterNode(new e("div",1))):v[r.name]?r.empty().remove():r.unwrap()}}}var u=this,d={},f=[],h={},p={};r=r||{},r.validate="validate"in r?r.validate:!0,r.root_name=r.root_name||"body",u.schema=l=l||new t,u.filterNode=function(e){var t,n,r;n in d&&(r=h[n],r?r.push(e):h[n]=[e]),t=f.length;for(;t--;)n=f[t].name,n in e.attributes.map&&(r=p[n],r?r.push(e):p[n]=[e]);return e},u.addNodeFilter=function(e,t){o(a(e),function(e){var n=d[e];n||(d[e]=n=[]),n.push(t)})},u.addAttributeFilter=function(e,t){o(a(e),function(e){var n;for(n=0;n<f.length;n++)if(f[n].name===e)return void f[n].callbacks.push(t);f.push({name:e,callbacks:[t]})})},u.parse=function(t,o){function a(){function e(e){e&&(t=e.firstChild,t&&3==t.type&&(t.value=t.value.replace(R,"")),t=e.lastChild,t&&3==t.type&&(t.value=t.value.replace(D,"")))}var t=y.firstChild,n,i;if(l.isValidChild(y.name,I.toLowerCase())){for(;t;)n=t.next,3==t.type||1==t.type&&"p"!==t.name&&!T[t.name]&&!t.attr("data-mce-type")?i?i.append(t):(i=u(I,1),i.attr(r.forced_root_block_attrs),y.insert(i,t),i.append(t)):(e(i),i=null),t=n;e(i)}}function u(t,n){var r=new e(t,n),i;return t in d&&(i=h[t],i?i.push(r):h[t]=[r]),r}function m(e){var t,n,r,i,o=l.getBlockElements();for(t=e.prev;t&&3===t.type;){if(r=t.value.replace(D,""),r.length>0)return void(t.value=r);if(n=t.next){if(3==n.type&&n.value.length){
+t=t.prev;continue}if(!o[n.name]&&"script"!=n.name&&"style"!=n.name){t=t.prev;continue}}i=t.prev,t.remove(),t=i}}function g(e){var t,n={};for(t in e)"li"!==t&&"p"!=t&&(n[t]=e[t]);return n}var v,y,b,x,C,w,_,E,N,S,k,T,R,A=[],B,D,L,M,H,P,O,I;if(o=o||{},h={},p={},T=s(i("script,style,head,html,body,title,meta,param"),l.getBlockElements()),O=l.getNonEmptyElements(),P=l.children,k=r.validate,I="forced_root_block"in o?o.forced_root_block:r.forced_root_block,H=l.getWhiteSpaceElements(),R=/^[ \t\r\n]+/,D=/[ \t\r\n]+$/,L=/[ \t\r\n]+/g,M=/^[ \t\r\n]+$/,v=new n({validate:k,allow_script_urls:r.allow_script_urls,allow_conditional_comments:r.allow_conditional_comments,self_closing_elements:g(l.getSelfClosingElements()),cdata:function(e){b.append(u("#cdata",4)).value=e},text:function(e,t){var n;B||(e=e.replace(L," "),b.lastChild&&T[b.lastChild.name]&&(e=e.replace(R,""))),0!==e.length&&(n=u("#text",3),n.raw=!!t,b.append(n).value=e)},comment:function(e){b.append(u("#comment",8)).value=e},pi:function(e,t){b.append(u(e,7)).value=t,m(b)},doctype:function(e){var t;t=b.append(u("#doctype",10)),t.value=e,m(b)},start:function(e,t,n){var r,i,o,a,s;if(o=k?l.getElementRule(e):{}){for(r=u(o.outputName||e,1),r.attributes=t,r.shortEnded=n,b.append(r),s=P[b.name],s&&P[r.name]&&!s[r.name]&&A.push(r),i=f.length;i--;)a=f[i].name,a in t.map&&(N=p[a],N?N.push(r):p[a]=[r]);T[e]&&m(r),n||(b=r),!B&&H[e]&&(B=!0)}},end:function(t){var n,r,i,o,a;if(r=k?l.getElementRule(t):{}){if(T[t]&&!B){if(n=b.firstChild,n&&3===n.type)if(i=n.value.replace(R,""),i.length>0)n.value=i,n=n.next;else for(o=n.next,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.next,(0===i.length||M.test(i))&&(n.remove(),n=o),n=o;if(n=b.lastChild,n&&3===n.type)if(i=n.value.replace(D,""),i.length>0)n.value=i,n=n.prev;else for(o=n.prev,n.remove(),n=o;n&&3===n.type;)i=n.value,o=n.prev,(0===i.length||M.test(i))&&(n.remove(),n=o),n=o}if(B&&H[t]&&(B=!1),(r.removeEmpty||r.paddEmpty)&&b.isEmpty(O))if(r.paddEmpty)b.empty().append(new e("#text","3")).value="\xa0";else if(!b.attributes.map.name&&!b.attributes.map.id)return a=b.parent,T[b.name]?b.empty().remove():b.unwrap(),void(b=a);b=b.parent}}},l),y=b=new e(o.context||r.root_name,11),v.parse(t),k&&A.length&&(o.context?o.invalid=!0:c(A)),I&&("body"==y.name||o.isRootContent)&&a(),!o.invalid){for(S in h){for(N=d[S],x=h[S],_=x.length;_--;)x[_].parent||x.splice(_,1);for(C=0,w=N.length;w>C;C++)N[C](x,S,o)}for(C=0,w=f.length;w>C;C++)if(N=f[C],N.name in p){for(x=p[N.name],_=x.length;_--;)x[_].parent||x.splice(_,1);for(_=0,E=N.callbacks.length;E>_;_++)N.callbacks[_](x,N.name,o)}}return y},r.remove_trailing_brs&&u.addNodeFilter("br",function(t){var n,r=t.length,i,o=s({},l.getBlockElements()),a=l.getNonEmptyElements(),c,u,d,f,h,p;for(o.body=1,n=0;r>n;n++)if(i=t[n],c=i.parent,o[i.parent.name]&&i===c.lastChild){for(d=i.prev;d;){if(f=d.name,"span"!==f||"bookmark"!==d.attr("data-mce-type")){if("br"!==f)break;if("br"===f){i=null;break}}d=d.prev}i&&(i.remove(),c.isEmpty(a)&&(h=l.getElementRule(c.name),h&&(h.removeEmpty?c.remove():h.paddEmpty&&(c.empty().append(new e("#text",3)).value="\xa0"))))}else{for(u=i;c&&c.firstChild===u&&c.lastChild===u&&(u=c,!o[c.name]);)c=c.parent;u===c&&(p=new e("#text",3),p.value="\xa0",i.replace(p))}}),r.allow_html_in_named_anchor||u.addAttributeFilter("id,name",function(e){for(var t=e.length,n,r,i,o;t--;)if(o=e[t],"a"===o.name&&o.firstChild&&!o.attr("href")){i=o.parent,n=o.lastChild;do r=n.prev,i.insert(n,o),n=r;while(n)}}),r.validate&&l.getValidClasses()&&u.addAttributeFilter("class",function(e){for(var t=e.length,n,r,i,o,a,s=l.getValidClasses(),c,u;t--;){for(n=e[t],r=n.attr("class").split(" "),a="",i=0;i<r.length;i++)o=r[i],u=!1,c=s["*"],c&&c[o]&&(u=!0),c=s[n.name],!u&&c&&c[o]&&(u=!0),u&&(a&&(a+=" "),a+=o);a.length||(a=null),n.attr("class",a)}})}}),r(T,[v,f],function(e,t){var n=t.makeMap;return function(t){var r=[],i,o,a,s,l;return t=t||{},i=t.indent,o=n(t.indent_before||""),a=n(t.indent_after||""),s=e.getEncodeFunc(t.entity_encoding||"raw",t.entities),l="html"==t.element_format,{start:function(e,t,n){var c,u,d,f;if(i&&o[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n")),r.push("<",e),t)for(c=0,u=t.length;u>c;c++)d=t[c],r.push(" ",d.name,'="',s(d.value,!0),'"');!n||l?r[r.length]=">":r[r.length]=" />",n&&i&&a[e]&&r.length>0&&(f=r[r.length-1],f.length>0&&"\n"!==f&&r.push("\n"))},end:function(e){var t;r.push("</",e,">"),i&&a[e]&&r.length>0&&(t=r[r.length-1],t.length>0&&"\n"!==t&&r.push("\n"))},text:function(e,t){e.length>0&&(r[r.length]=t?e:s(e))},cdata:function(e){r.push("<![CDATA[",e,"]]>")},comment:function(e){r.push("<!--",e,"-->")},pi:function(e,t){t?r.push("<?",e," ",s(t),"?>"):r.push("<?",e,"?>"),i&&r.push("\n")},doctype:function(e){r.push("<!DOCTYPE",e,">",i?"\n":"")},reset:function(){r.length=0},getContent:function(){return r.join("").replace(/\n$/,"")}}}}),r(R,[T,N],function(e,t){return function(n,r){var i=this,o=new e(n);n=n||{},n.validate="validate"in n?n.validate:!0,i.schema=r=r||new t,i.writer=o,i.serialize=function(e){function t(e){var n=i[e.type],s,l,c,u,d,f,h,p,m;if(n)n(e);else{if(s=e.name,l=e.shortEnded,c=e.attributes,a&&c&&c.length>1&&(f=[],f.map={},m=r.getElementRule(e.name))){for(h=0,p=m.attributesOrder.length;p>h;h++)u=m.attributesOrder[h],u in c.map&&(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));for(h=0,p=c.length;p>h;h++)u=c[h].name,u in f.map||(d=c.map[u],f.map[u]=d,f.push({name:u,value:d}));c=f}if(o.start(e.name,c,l),!l){if(e=e.firstChild)do t(e);while(e=e.next);o.end(s)}}}var i,a;return a=n.validate,i={3:function(e){o.text(e.value,e.raw)},8:function(e){o.comment(e.value)},7:function(e){o.pi(e.name,e.value)},10:function(e){o.doctype(e.value)},4:function(e){o.cdata(e.value)},11:function(e){if(e=e.firstChild)do t(e);while(e=e.next)}},o.reset(),1!=e.type||n.inner?i[11](e):t(e),o.getContent()}}}),r(A,[b,k,v,R,E,N,u,f],function(e,t,n,r,i,o,a,s){function l(e){function t(e){return e&&"br"===e.name}var n,r;n=e.lastChild,t(n)&&(r=n.prev,t(r)&&(n.remove(),r.remove()))}var c=s.each,u=s.trim,d=e.DOM;return function(e,i){var s,f,h;return i&&(s=i.dom,f=i.schema),s=s||d,f=f||new o(e),e.entity_encoding=e.entity_encoding||"named",e.remove_trailing_brs="remove_trailing_brs"in e?e.remove_trailing_brs:!0,h=new t(e,f),h.addAttributeFilter("data-mce-tabindex",function(e,t){for(var n=e.length,r;n--;)r=e[n],r.attr("tabindex",r.attributes.map["data-mce-tabindex"]),r.attr(t,null)}),h.addAttributeFilter("src,href,style",function(t,n){for(var r=t.length,i,o,a="data-mce-"+n,l=e.url_converter,c=e.url_converter_scope,u;r--;)i=t[r],o=i.attributes.map[a],o!==u?(i.attr(n,o.length>0?o:null),i.attr(a,null)):(o=i.attributes.map[n],"style"===n?o=s.serializeStyle(s.parseStyle(o),i.name):l&&(o=l.call(c,o,n,i.name)),i.attr(n,o.length>0?o:null))}),h.addAttributeFilter("class",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("class"),r&&(r=n.attr("class").replace(/(?:^|\s)mce-item-\w+(?!\S)/g,""),n.attr("class",r.length>0?r:null))}),h.addAttributeFilter("data-mce-type",function(e,t,n){for(var r=e.length,i;r--;)i=e[r],"bookmark"!==i.attributes.map["data-mce-type"]||n.cleanup||i.remove()}),h.addNodeFilter("noscript",function(e){for(var t=e.length,r;t--;)r=e[t].firstChild,r&&(r.value=n.decode(r.value))}),h.addNodeFilter("script,style",function(e,t){function n(e){return e.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}for(var r=e.length,i,o,a;r--;)i=e[r],o=i.firstChild?i.firstChild.value:"","script"===t?(a=i.attr("type"),a&&i.attr("type","mce-no/type"==a?null:a.replace(/^mce\-/,"")),o.length>0&&(i.firstChild.value="// <![CDATA[\n"+n(o)+"\n// ]]>")):o.length>0&&(i.firstChild.value="<!--\n"+n(o)+"\n-->")}),h.addNodeFilter("#comment",function(e){for(var t=e.length,n;t--;)n=e[t],0===n.value.indexOf("[CDATA[")?(n.name="#cdata",n.type=4,n.value=n.value.replace(/^\[CDATA\[|\]\]$/g,"")):0===n.value.indexOf("mce:protected ")&&(n.name="#text",n.type=3,n.raw=!0,n.value=unescape(n.value).substr(14))}),h.addNodeFilter("xml:namespace,input",function(e,t){for(var n=e.length,r;n--;)r=e[n],7===r.type?r.remove():1===r.type&&("input"!==t||"type"in r.attributes.map||r.attr("type","text"))}),e.fix_list_elements&&h.addNodeFilter("ul,ol",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.parent,("ul"===r.name||"ol"===r.name)&&n.prev&&"li"===n.prev.name&&n.prev.append(n)}),h.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style,data-mce-selected,data-mce-expando,data-mce-type,data-mce-resize",function(e,t){for(var n=e.length;n--;)e[n].attr(t,null)}),{schema:f,addNodeFilter:h.addNodeFilter,addAttributeFilter:h.addAttributeFilter,serialize:function(t,n){var i=this,o,d,p,m,g,v;return a.ie&&s.select("script,style,select,map").length>0?(g=t.innerHTML,t=t.cloneNode(!1),s.setHTML(t,g)):t=t.cloneNode(!0),o=t.ownerDocument.implementation,o.createHTMLDocument&&(d=o.createHTMLDocument(""),c("BODY"==t.nodeName?t.childNodes:[t],function(e){d.body.appendChild(d.importNode(e,!0))}),t="BODY"!=t.nodeName?d.body.firstChild:d.body,p=s.doc,s.doc=d),n=n||{},n.format=n.format||"html",n.selection&&(n.forced_root_block=""),n.no_events||(n.node=t,i.onPreProcess(n)),v=h.parse(u(n.getInner?t.innerHTML:s.getOuterHTML(t)),n),l(v),m=new r(e,f),n.content=m.serialize(v),n.cleanup||(n.content=n.content.replace(/\uFEFF/g,"")),n.no_events||i.onPostProcess(n),p&&(s.doc=p),n.node=null,n.content},addRules:function(e){f.addValidElements(e)},setRules:function(e){f.setValidElements(e)},onPreProcess:function(e){i&&i.fire("PreProcess",e)},onPostProcess:function(e){i&&i.fire("PostProcess",e)}}}}),r(B,[],function(){function e(e){function t(t,n){var r,i=0,o,a,s,l,c,u,d=-1,f;if(r=t.duplicate(),r.collapse(n),f=r.parentElement(),f.ownerDocument===e.dom.doc){for(;"false"===f.contentEditable;)f=f.parentNode;if(!f.hasChildNodes())return{node:f,inside:1};for(s=f.children,o=s.length-1;o>=i;)if(u=Math.floor((i+o)/2),l=s[u],r.moveToElementText(l),d=r.compareEndPoints(n?"StartToStart":"EndToEnd",t),d>0)o=u-1;else{if(!(0>d))return{node:l};i=u+1}if(0>d)for(l?r.collapse(!1):(r.moveToElementText(f),r.collapse(!0),l=f,a=!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",1)&&f==r.parentElement();)c++;else for(r.collapse(!0),c=0;0!==r.compareEndPoints(n?"StartToStart":"StartToEnd",t)&&0!==r.move("character",-1)&&f==r.parentElement();)c++;return{node:l,position:d,offset:c,inside:a}}}function n(){function n(e){var n=t(o,e),r,i,s=0,l,c,u;if(r=n.node,i=n.offset,n.inside&&!r.hasChildNodes())return void a[e?"setStart":"setEnd"](r,0);if(i===c)return void a[e?"setStartBefore":"setEndAfter"](r);if(n.position<0){if(l=n.inside?r.firstChild:r.nextSibling,!l)return void a[e?"setStartAfter":"setEndAfter"](r);if(!i)return void(3==l.nodeType?a[e?"setStart":"setEnd"](l,0):a[e?"setStartBefore":"setEndBefore"](l));for(;l;){if(3==l.nodeType&&(u=l.nodeValue,s+=u.length,s>=i)){r=l,s-=i,s=u.length-s;break}l=l.nextSibling}}else{if(l=r.previousSibling,!l)return a[e?"setStartBefore":"setEndBefore"](r);if(!i)return void(3==r.nodeType?a[e?"setStart":"setEnd"](l,r.nodeValue.length):a[e?"setStartAfter":"setEndAfter"](l));for(;l;){if(3==l.nodeType&&(s+=l.nodeValue.length,s>=i)){r=l,s-=i;break}l=l.previousSibling}}a[e?"setStart":"setEnd"](r,s)}var o=e.getRng(),a=i.createRng(),s,l,c,u,d;if(s=o.item?o.item(0):o.parentElement(),s.ownerDocument!=i.doc)return a;if(l=e.isCollapsed(),o.item)return a.setStart(s.parentNode,i.nodeIndex(s)),a.setEnd(a.startContainer,a.startOffset+1),a;try{n(!0),l||n()}catch(f){if(-2147024809!=f.number)throw f;d=r.getBookmark(2),c=o.duplicate(),c.collapse(!0),s=c.parentElement(),l||(c=o.duplicate(),c.collapse(!1),u=c.parentElement(),u.innerHTML=u.innerHTML),s.innerHTML=s.innerHTML,r.moveToBookmark(d),o=e.getRng(),n(!0),l||n()}return a}var r=this,i=e.dom,o=!1;this.getBookmark=function(n){function r(e){var t,n,r,o,a=[];for(t=e.parentNode,n=i.getRoot().parentNode;t!=n&&9!==t.nodeType;){for(r=t.children,o=r.length;o--;)if(e===r[o]){a.push(o);break}e=t,t=t.parentNode}return a}function o(e){var n;return n=t(a,e),n?{position:n.position,offset:n.offset,indexes:r(n.node),inside:n.inside}:void 0}var a=e.getRng(),s={};return 2===n&&(a.item?s.start={ctrl:!0,indexes:r(a.item(0))}:(s.start=o(!0),e.isCollapsed()||(s.end=o()))),s},this.moveToBookmark=function(e){function t(e){var t,n,r,o;for(t=i.getRoot(),n=e.length-1;n>=0;n--)o=t.children,r=e[n],r<=o.length-1&&(t=o[r]);return t}function n(n){var i=e[n?"start":"end"],a,s,l,c;i&&(a=i.position>0,s=o.createTextRange(),s.moveToElementText(t(i.indexes)),c=i.offset,c!==l?(s.collapse(i.inside||a),s.moveStart("character",a?-c:c)):s.collapse(n),r.setEndPoint(n?"StartToStart":"EndToStart",s),n&&r.collapse(!0))}var r,o=i.doc.body;e.start&&(e.start.ctrl?(r=o.createControlRange(),r.addElement(t(e.start.indexes)),r.select()):(r=o.createTextRange(),n(!0),n(),r.select()))},this.addRange=function(t){function n(e){var t,n,a,d,p;a=i.create("a"),t=e?s:c,n=e?l:u,d=r.duplicate(),(t==f||t==f.documentElement)&&(t=h,n=0),3==t.nodeType?(t.parentNode.insertBefore(a,t),d.moveToElementText(a),d.moveStart("character",n),i.remove(a),r.setEndPoint(e?"StartToStart":"EndToEnd",d)):(p=t.childNodes,p.length?(n>=p.length?i.insertAfter(a,p[p.length-1]):t.insertBefore(a,p[n]),d.moveToElementText(a)):t.canHaveHTML&&(t.innerHTML="<span>&#xFEFF;</span>",a=t.firstChild,d.moveToElementText(a),d.collapse(o)),r.setEndPoint(e?"StartToStart":"EndToEnd",d),i.remove(a))}var r,a,s,l,c,u,d,f=e.dom.doc,h=f.body,p,m;if(s=t.startContainer,l=t.startOffset,c=t.endContainer,u=t.endOffset,r=h.createTextRange(),s==c&&1==s.nodeType){if(l==u&&!s.hasChildNodes()){if(s.canHaveHTML)return d=s.previousSibling,d&&!d.hasChildNodes()&&i.isBlock(d)?d.innerHTML="&#xFEFF;":d=null,s.innerHTML="<span>&#xFEFF;</span><span>&#xFEFF;</span>",r.moveToElementText(s.lastChild),r.select(),i.doc.selection.clear(),s.innerHTML="",void(d&&(d.innerHTML=""));l=i.nodeIndex(s),s=s.parentNode}if(l==u-1)try{if(m=s.childNodes[l],a=h.createControlRange(),a.addElement(m),a.select(),p=e.getRng(),p.item&&m===p.item(0))return}catch(g){}}n(!0),n(),r.select()},this.getRangeAt=n}return e}),r(D,[u],function(e){return{BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(e){return e.shiftKey||e.ctrlKey||e.altKey||this.metaKeyPressed(e)},metaKeyPressed:function(t){return e.mac?t.metaKey:t.ctrlKey&&!t.altKey}}}),r(L,[D,f,u],function(e,t,n){return function(r,i){function o(e){var t=i.settings.object_resizing;return t===!1||n.iOS?!1:("string"!=typeof t&&(t="table,img,div"),"false"===e.getAttribute("data-mce-resize")?!1:e==i.getBody()?!1:i.dom.is(e,t))}function a(t){var n,r,o,a,s;n=t.screenX-T,r=t.screenY-R,P=n*S[2]+D,O=r*S[3]+L,P=5>P?5:P,O=5>O?5:O,o="IMG"==w.nodeName&&i.settings.resize_img_proportional!==!1?!e.modifierPressed(t):e.modifierPressed(t)||"IMG"==w.nodeName&&S[2]*S[3]!==0,o&&(W(n)>W(r)?(O=V(P*M),P=V(O/M)):(P=V(O/M),O=V(P*M))),x.setStyles(_,{width:P,height:O}),a=S.startPos.x+n,s=S.startPos.y+r,a=a>0?a:0,s=s>0?s:0,x.setStyles(E,{left:a,top:s,display:"block"}),E.innerHTML=P+" &times; "+O,S[2]<0&&_.clientWidth<=P&&x.setStyle(_,"left",A+(D-P)),S[3]<0&&_.clientHeight<=O&&x.setStyle(_,"top",B+(L-O)),n=U.scrollWidth-$,r=U.scrollHeight-q,n+r!==0&&x.setStyles(E,{left:a-n,top:s-r}),H||(i.fire("ObjectResizeStart",{target:w,width:D,height:L}),H=!0)}function s(){function e(e,t){t&&(w.style[e]||!i.schema.isValid(w.nodeName.toLowerCase(),e)?x.setStyle(w,e,t):x.setAttrib(w,e,t))}H=!1,e("width",P),e("height",O),x.unbind(I,"mousemove",a),x.unbind(I,"mouseup",s),F!=I&&(x.unbind(F,"mousemove",a),x.unbind(F,"mouseup",s)),x.remove(_),x.remove(E),z&&"TABLE"!=w.nodeName||l(w),i.fire("ObjectResized",{target:w,width:P,height:O}),x.setAttrib(w,"style",x.getAttrib(w,"style")),i.nodeChanged()}function l(e,t,r){var l,u,d,f,h;g(),l=x.getPos(e,U),A=l.x,B=l.y,h=e.getBoundingClientRect(),u=h.width||h.right-h.left,d=h.height||h.bottom-h.top,w!=e&&(m(),w=e,P=O=0),f=i.fire("ObjectSelected",{target:e}),o(e)&&!f.isDefaultPrevented()?C(N,function(e,i){function o(t){T=t.screenX,R=t.screenY,D=w.clientWidth,L=w.clientHeight,M=L/D,S=e,e.startPos={x:u*e[0]+A,y:d*e[1]+B},$=U.scrollWidth,q=U.scrollHeight,_=w.cloneNode(!0),x.addClass(_,"mce-clonedresizable"),x.setAttrib(_,"data-mce-bogus","all"),_.contentEditable=!1,_.unSelectabe=!0,x.setStyles(_,{left:A,top:B,margin:0}),_.removeAttribute("data-mce-selected"),U.appendChild(_),x.bind(I,"mousemove",a),x.bind(I,"mouseup",s),F!=I&&(x.bind(F,"mousemove",a),x.bind(F,"mouseup",s)),E=x.add(U,"div",{"class":"mce-resize-helper","data-mce-bogus":"all"},D+" &times; "+L)}var l;return t?void(i==t&&o(r)):(l=x.get("mceResizeHandle"+i),l&&x.remove(l),l=x.add(U,"div",{id:"mceResizeHandle"+i,"data-mce-bogus":"all","class":"mce-resizehandle",unselectable:!0,style:"cursor:"+i+"-resize; margin:0; padding:0"}),n.ie&&(l.contentEditable=!1),x.bind(l,"mousedown",function(e){e.stopImmediatePropagation(),e.preventDefault(),o(e)}),e.elm=l,void x.setStyles(l,{left:u*e[0]+A-l.offsetWidth/2,top:d*e[1]+B-l.offsetHeight/2}))}):c(),w.setAttribute("data-mce-selected","1")}function c(){var e,t;g(),w&&w.removeAttribute("data-mce-selected");for(e in N)t=x.get("mceResizeHandle"+e),t&&(x.unbind(t),x.remove(t))}function u(e){function t(e,t){if(e)do if(e===t)return!0;while(e=e.parentNode)}var n,o;if(!H&&!i.removed)return C(x.select("img[data-mce-selected],hr[data-mce-selected]"),function(e){e.removeAttribute("data-mce-selected")}),o="mousedown"==e.type?e.target:r.getNode(),o=x.$(o).closest(z?"table":"table,img,hr")[0],t(o,U)&&(v(),n=r.getStart(!0),t(n,o)&&t(r.getEnd(!0),o)&&(!z||o!=n&&"IMG"!==n.nodeName))?void l(o):void c()}function d(e,t,n){e&&e.attachEvent&&e.attachEvent("on"+t,n)}function f(e,t,n){e&&e.detachEvent&&e.detachEvent("on"+t,n)}function h(e){var t=e.srcElement,n,r,o,a,s,c,u;n=t.getBoundingClientRect(),c=k.clientX-n.left,u=k.clientY-n.top;for(r in N)if(o=N[r],a=t.offsetWidth*o[0],s=t.offsetHeight*o[1],W(a-c)<8&&W(s-u)<8){S=o;break}H=!0,i.fire("ObjectResizeStart",{target:w,width:w.clientWidth,height:w.clientHeight}),i.getDoc().selection.empty(),l(t,r,k)}function p(e){var t=e.srcElement;if(t!=w){if(i.fire("ObjectSelected",{target:t}),m(),0===t.id.indexOf("mceResizeHandle"))return void(e.returnValue=!1);("IMG"==t.nodeName||"TABLE"==t.nodeName)&&(c(),w=t,d(t,"resizestart",h))}}function m(){f(w,"resizestart",h)}function g(){for(var e in N){var t=N[e];t.elm&&(x.unbind(t.elm),delete t.elm)}}function v(){try{i.getDoc().execCommand("enableObjectResizing",!1,!1)}catch(e){}}function y(e){var t;if(z){t=I.body.createControlRange();try{return t.addElement(e),t.select(),!0}catch(n){}}}function b(){w=_=null,z&&(m(),f(U,"controlselect",p))}var x=i.dom,C=t.each,w,_,E,N,S,k,T,R,A,B,D,L,M,H,P,O,I=i.getDoc(),F=document,z=n.ie&&n.ie<11,W=Math.abs,V=Math.round,U=i.getBody(),$,q;N={nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};var j=".mce-content-body";return i.contentStyles.push(j+" div.mce-resizehandle {position: absolute;border: 1px solid black;background: #FFF;width: 7px;height: 7px;z-index: 10000}"+j+" .mce-resizehandle:hover {background: #000}"+j+" img[data-mce-selected], hr[data-mce-selected] {outline: 1px solid black;resize: none}"+j+" .mce-clonedresizable {position: absolute;"+(n.gecko?"":"outline: 1px dashed black;")+"opacity: .5;filter: alpha(opacity=50);z-index: 10000}"+j+" .mce-resize-helper {background: #555;background: rgba(0,0,0,0.75);border-radius: 3px;border: 1px;color: white;display: none;font-family: sans-serif;font-size: 12px;white-space: nowrap;line-height: 14px;margin: 5px 10px;padding: 5px;position: absolute;z-index: 10001}"),i.on("init",function(){z?(i.on("ObjectResized",function(e){"TABLE"!=e.target.nodeName&&(c(),y(e.target))}),d(U,"controlselect",p),i.on("mousedown",function(e){k=e})):(v(),n.ie>=11&&(i.on("mousedown click",function(e){var t=e.target.nodeName;!H&&/^(TABLE|IMG|HR)$/.test(t)&&(i.selection.select(e.target,"TABLE"==t),"mousedown"==e.type&&i.nodeChanged())}),i.dom.bind(U,"mscontrolselect",function(e){/^(TABLE|IMG|HR)$/.test(e.target.nodeName)&&(e.preventDefault(),"IMG"==e.target.tagName&&window.setTimeout(function(){i.selection.select(e.target)},0))}))),i.on("nodechange ResizeEditor ResizeWindow drop",function(e){window.requestAnimationFrame?window.requestAnimationFrame(function(){u(e)}):u(e)}),i.on("keydown keyup",function(e){w&&"TABLE"==w.nodeName&&u(e)}),i.on("hide blur",c)}),i.on("remove",g),{isResizable:o,showResizeRect:l,hideResizeRect:c,updateResizeRect:u,controlSelect:y,destroy:b}}}),r(M,[u,f],function(e,t){function n(n){var r=n.dom;this.getBookmark=function(e,i){function o(e,n){var i=0;return t.each(r.select(e),function(e,t){e==n&&(i=t)}),i}function a(e){function t(t){var n,r,i,o=t?"start":"end";n=e[o+"Container"],r=e[o+"Offset"],1==n.nodeType&&"TR"==n.nodeName&&(i=n.childNodes,n=i[Math.min(t?r:r-1,i.length-1)],n&&(r=t?0:n.childNodes.length,e["set"+(t?"Start":"End")](n,r)))}return t(!0),t(),e}function s(){function e(e,t){var n=e[t?"startContainer":"endContainer"],a=e[t?"startOffset":"endOffset"],s=[],l,c,u=0;if(3==n.nodeType){if(i)for(l=n.previousSibling;l&&3==l.nodeType;l=l.previousSibling)a+=l.nodeValue.length;s.push(a)}else c=n.childNodes,a>=c.length&&c.length&&(u=1,a=Math.max(0,c.length-1)),s.push(r.nodeIndex(c[a],i)+u);for(;n&&n!=o;n=n.parentNode)s.push(r.nodeIndex(n,i));return s}var t=n.getRng(!0),o=r.getRoot(),a={};return a.start=e(t,!0),n.isCollapsed()||(a.end=e(t)),a}var l,c,u,d,f,h,p="&#xFEFF;",m;if(2==e)return h=n.getNode(),f=h?h.nodeName:null,"IMG"==f?{name:f,index:o(f,h)}:n.tridentSel?n.tridentSel.getBookmark(e):s();if(e)return{rng:n.getRng()};if(l=n.getRng(),u=r.uniqueId(),d=n.isCollapsed(),m="overflow:hidden;line-height:0px",l.duplicate||l.item){if(l.item)return h=l.item(0),f=h.nodeName,{name:f,index:o(f,h)};c=l.duplicate();try{l.collapse(),l.pasteHTML('<span data-mce-type="bookmark" id="'+u+'_start" style="'+m+'">'+p+"</span>"),d||(c.collapse(!1),l.moveToElementText(c.parentElement()),0===l.compareEndPoints("StartToEnd",c)&&c.move("character",-1),c.pasteHTML('<span data-mce-type="bookmark" id="'+u+'_end" style="'+m+'">'+p+"</span>"))}catch(g){return null}}else{if(h=n.getNode(),f=h.nodeName,"IMG"==f)return{name:f,index:o(f,h)};c=a(l.cloneRange()),d||(c.collapse(!1),c.insertNode(r.create("span",{"data-mce-type":"bookmark",id:u+"_end",style:m},p))),l=a(l),l.collapse(!0),l.insertNode(r.create("span",{"data-mce-type":"bookmark",id:u+"_start",style:m},p))}return n.moveToBookmark({id:u,keep:1}),{id:u}},this.moveToBookmark=function(i){function o(e){var t=i[e?"start":"end"],n,r,o,a;if(t){for(o=t[0],r=c,n=t.length-1;n>=1;n--){if(a=r.childNodes,t[n]>a.length-1)return;r=a[t[n]]}3===r.nodeType&&(o=Math.min(t[0],r.nodeValue.length)),1===r.nodeType&&(o=Math.min(t[0],r.childNodes.length)),e?l.setStart(r,o):l.setEnd(r,o)}return!0}function a(n){var o=r.get(i.id+"_"+n),a,s,l,c,p=i.keep;if(o&&(a=o.parentNode,"start"==n?(p?(a=o.firstChild,s=1):s=r.nodeIndex(o),u=d=a,f=h=s):(p?(a=o.firstChild,s=1):s=r.nodeIndex(o),d=a,h=s),!p)){for(c=o.previousSibling,l=o.nextSibling,t.each(t.grep(o.childNodes),function(e){3==e.nodeType&&(e.nodeValue=e.nodeValue.replace(/\uFEFF/g,""))});o=r.get(i.id+"_"+n);)r.remove(o,1);c&&l&&c.nodeType==l.nodeType&&3==c.nodeType&&!e.opera&&(s=c.nodeValue.length,c.appendData(l.nodeValue),r.remove(l),"start"==n?(u=d=c,f=h=s):(d=c,h=s))}}function s(t){return!r.isBlock(t)||t.innerHTML||e.ie||(t.innerHTML='<br data-mce-bogus="1" />'),t}var l,c,u,d,f,h;if(i)if(i.start){if(l=r.createRng(),c=r.getRoot(),n.tridentSel)return n.tridentSel.moveToBookmark(i);o(!0)&&o()&&n.setRng(l)}else i.id?(a("start"),a("end"),u&&(l=r.createRng(),l.setStart(s(u),f),l.setEnd(s(d),h),n.setRng(l))):i.name?n.select(r.select(i.name)[i.index]):i.rng&&n.setRng(i.rng)}}return n.isBookmarkNode=function(e){return e&&"SPAN"===e.tagName&&"bookmark"===e.getAttribute("data-mce-type")},n}),r(H,[m,B,L,w,M,u,f],function(e,n,r,i,o,a,s){function l(e,t,i,a){var s=this;s.dom=e,s.win=t,s.serializer=i,s.editor=a,s.bookmarkManager=new o(s),s.controlSelection=new r(s,a),s.win.getSelection||(s.tridentSel=new n(s))}var c=s.each,u=s.trim,d=a.ie;return l.prototype={setCursorLocation:function(e,t){var n=this,r=n.dom.createRng();e?(r.setStart(e,t),r.setEnd(e,t),n.setRng(r),n.collapse(!1)):(n._moveEndPoint(r,n.editor.getBody(),!0),n.setRng(r))},getContent:function(e){var n=this,r=n.getRng(),i=n.dom.create("body"),o=n.getSel(),a,s,l;return e=e||{},a=s="",e.get=!0,e.format=e.format||"html",e.selection=!0,n.editor.fire("BeforeGetContent",e),"text"==e.format?n.isCollapsed()?"":r.text||(o.toString?o.toString():""):(r.cloneContents?(l=r.cloneContents(),l&&i.appendChild(l)):r.item!==t||r.htmlText!==t?(i.innerHTML="<br>"+(r.item?r.item(0).outerHTML:r.htmlText),i.removeChild(i.firstChild)):i.innerHTML=r.toString(),/^\s/.test(i.innerHTML)&&(a=" "),/\s+$/.test(i.innerHTML)&&(s=" "),e.getInner=!0,e.content=n.isCollapsed()?"":a+n.serializer.serialize(i,e)+s,n.editor.fire("GetContent",e),e.content)},setContent:function(e,t){var n=this,r=n.getRng(),i,o=n.win.document,a,s;if(t=t||{format:"html"},t.set=!0,t.selection=!0,t.content=e,t.no_events||n.editor.fire("BeforeSetContent",t),e=t.content,r.insertNode){e+='<span id="__caret">_</span>',r.startContainer==o&&r.endContainer==o?o.body.innerHTML=e:(r.deleteContents(),0===o.body.childNodes.length?o.body.innerHTML=e:r.createContextualFragment?r.insertNode(r.createContextualFragment(e)):(a=o.createDocumentFragment(),s=o.createElement("div"),a.appendChild(s),s.outerHTML=e,r.insertNode(a))),i=n.dom.get("__caret"),r=o.createRange(),r.setStartBefore(i),r.setEndBefore(i),n.setRng(r),n.dom.remove("__caret");try{n.setRng(r)}catch(l){}}else r.item&&(o.execCommand("Delete",!1,null),r=n.getRng()),/^\s+/.test(e)?(r.pasteHTML('<span id="__mce_tmp">_</span>'+e),n.dom.remove("__mce_tmp")):r.pasteHTML(e);t.no_events||n.editor.fire("SetContent",t)},getStart:function(e){var t=this,n=t.getRng(),r,i,o,a;if(n.duplicate||n.item){if(n.item)return n.item(0);for(o=n.duplicate(),o.collapse(1),r=o.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),i=a=n.parentElement();a=a.parentNode;)if(a==r){r=i;break}return r}return r=n.startContainer,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[Math.min(r.childNodes.length-1,n.startOffset)])),r&&3==r.nodeType?r.parentNode:r},getEnd:function(e){var t=this,n=t.getRng(),r,i;return n.duplicate||n.item?n.item?n.item(0):(n=n.duplicate(),n.collapse(0),r=n.parentElement(),r.ownerDocument!==t.dom.doc&&(r=t.dom.getRoot()),r&&"BODY"==r.nodeName?r.lastChild||r:r):(r=n.endContainer,i=n.endOffset,1==r.nodeType&&r.hasChildNodes()&&(e&&n.collapsed||(r=r.childNodes[i>0?i-1:i])),r&&3==r.nodeType?r.parentNode:r)},getBookmark:function(e,t){return this.bookmarkManager.getBookmark(e,t)},moveToBookmark:function(e){return this.bookmarkManager.moveToBookmark(e)},select:function(e,t){var n=this,r=n.dom,i=r.createRng(),o;if(n.lastFocusBookmark=null,e){if(!t&&n.controlSelection.controlSelect(e))return;o=r.nodeIndex(e),i.setStart(e.parentNode,o),i.setEnd(e.parentNode,o+1),t&&(n._moveEndPoint(i,e,!0),n._moveEndPoint(i,e)),n.setRng(i)}return e},isCollapsed:function(){var e=this,t=e.getRng(),n=e.getSel();return!t||t.item?!1:t.compareEndPoints?0===t.compareEndPoints("StartToEnd",t):!n||t.collapsed},collapse:function(e){var t=this,n=t.getRng(),r;n.item&&(r=n.item(0),n=t.win.document.body.createTextRange(),n.moveToElementText(r)),n.collapse(!!e),t.setRng(n)},getSel:function(){var e=this.win;return e.getSelection?e.getSelection():e.document.selection},getRng:function(e){function t(e,t,n){try{return t.compareBoundaryPoints(e,n)}catch(r){return-1}}var n=this,r,i,o,a=n.win.document,s;if(!e&&n.lastFocusBookmark){var l=n.lastFocusBookmark;return l.startContainer?(i=a.createRange(),i.setStart(l.startContainer,l.startOffset),i.setEnd(l.endContainer,l.endOffset)):i=l,i}if(e&&n.tridentSel)return n.tridentSel.getRangeAt(0);try{(r=n.getSel())&&(i=r.rangeCount>0?r.getRangeAt(0):r.createRange?r.createRange():a.createRange())}catch(c){}if(d&&i&&i.setStart&&a.selection){try{s=a.selection.createRange()}catch(c){}s&&s.item&&(o=s.item(0),i=a.createRange(),i.setStartBefore(o),i.setEndAfter(o))}return i||(i=a.createRange?a.createRange():a.body.createTextRange()),i.setStart&&9===i.startContainer.nodeType&&i.collapsed&&(o=n.dom.getRoot(),i.setStart(o,0),i.setEnd(o,0)),n.selectedRange&&n.explicitRange&&(0===t(i.START_TO_START,i,n.selectedRange)&&0===t(i.END_TO_END,i,n.selectedRange)?i=n.explicitRange:(n.selectedRange=null,n.explicitRange=null)),i},setRng:function(e,t){var n=this,r,i;if(e)if(e.select)try{e.select()}catch(o){}else if(n.tridentSel){if(e.cloneRange)try{n.tridentSel.addRange(e)}catch(o){}}else{if(r=n.getSel()){n.explicitRange=e;try{r.removeAllRanges(),r.addRange(e)}catch(o){}t===!1&&r.extend&&(r.collapse(e.endContainer,e.endOffset),r.extend(e.startContainer,e.startOffset)),n.selectedRange=r.rangeCount>0?r.getRangeAt(0):null}e.collapsed||e.startContainer!=e.endContainer||!r.setBaseAndExtent||a.ie||e.endOffset-e.startOffset<2&&e.startContainer.hasChildNodes()&&(i=e.startContainer.childNodes[e.startOffset],i&&"IMG"==i.tagName&&n.getSel().setBaseAndExtent(i,0,i,1))}},setNode:function(e){var t=this;return t.setContent(t.dom.getOuterHTML(e)),e},getNode:function(){function e(e,t){for(var n=e;e&&3===e.nodeType&&0===e.length;)e=t?e.nextSibling:e.previousSibling;return e||n}var t=this,n=t.getRng(),r,i=n.startContainer,o=n.endContainer,a=n.startOffset,s=n.endOffset,l=t.dom.getRoot();return n?n.setStart?(r=n.commonAncestorContainer,!n.collapsed&&(i==o&&2>s-a&&i.hasChildNodes()&&(r=i.childNodes[a]),3===i.nodeType&&3===o.nodeType&&(i=i.length===a?e(i.nextSibling,!0):i.parentNode,o=0===s?e(o.previousSibling,!1):o.parentNode,i&&i===o))?i:r&&3==r.nodeType?r.parentNode:r):(r=n.item?n.item(0):n.parentElement(),r.ownerDocument!==t.win.document&&(r=l),r):l},getSelectedBlocks:function(t,n){var r=this,i=r.dom,o,a,s=[];if(a=i.getRoot(),t=i.getParent(t||r.getStart(),i.isBlock),n=i.getParent(n||r.getEnd(),i.isBlock),t&&t!=a&&s.push(t),t&&n&&t!=n){o=t;for(var l=new e(t,a);(o=l.next())&&o!=n;)i.isBlock(o)&&s.push(o)}return n&&t!=n&&n!=a&&s.push(n),s},isForward:function(){var e=this.dom,t=this.getSel(),n,r;return t&&t.anchorNode&&t.focusNode?(n=e.createRng(),n.setStart(t.anchorNode,t.anchorOffset),n.collapse(!0),r=e.createRng(),r.setStart(t.focusNode,t.focusOffset),r.collapse(!0),n.compareBoundaryPoints(n.START_TO_START,r)<=0):!0},normalize:function(){var e=this,t=e.getRng();return a.range&&new i(e.dom).normalize(t)&&e.setRng(t,e.isForward()),t},selectorChanged:function(e,t){var n=this,r;return n.selectorChangedData||(n.selectorChangedData={},r={},n.editor.on("NodeChange",function(e){var t=e.element,i=n.dom,o=i.getParents(t,null,i.getRoot()),a={};c(n.selectorChangedData,function(e,t){c(o,function(n){return i.is(n,t)?(r[t]||(c(e,function(e){e(!0,{node:n,selector:t,parents:o})}),r[t]=e),a[t]=e,!1):void 0})}),c(r,function(e,n){a[n]||(delete r[n],c(e,function(e){e(!1,{node:t,selector:n,parents:o})}))})})),n.selectorChangedData[e]||(n.selectorChangedData[e]=[]),n.selectorChangedData[e].push(t),n},getScrollContainer:function(){for(var e,t=this.dom.getRoot();t&&"BODY"!=t.nodeName;){if(t.scrollHeight>t.clientHeight){e=t;break}t=t.parentNode}return e},scrollIntoView:function(e){function t(e){for(var t=0,n=0,r=e;r&&r.nodeType;)t+=r.offsetLeft||0,n+=r.offsetTop||0,r=r.offsetParent;return{x:t,y:n}}var n,r,i=this,o=i.dom,a=o.getRoot(),s,l;if("BODY"!=a.nodeName){var c=i.getScrollContainer();if(c)return n=t(e).y-t(c).y,l=c.clientHeight,s=c.scrollTop,void((s>n||n+25>s+l)&&(c.scrollTop=s>n?n:n-l+25))}r=o.getViewPort(i.editor.getWin()),n=o.getPos(e).y,s=r.y,l=r.h,(n<r.y||n+25>s+l)&&i.editor.getWin().scrollTo(0,s>n?n:n-l+25)},placeCaretAt:function(e,t){var n=this.editor.getDoc(),r,i;if(n.caretPositionFromPoint)i=n.caretPositionFromPoint(e,t),r=n.createRange(),
+r.setStart(i.offsetNode,i.offset),r.collapse(!0);else if(n.caretRangeFromPoint)r=n.caretRangeFromPoint(e,t);else if(n.body.createTextRange){r=n.body.createTextRange();try{r.moveToPoint(e,t),r.collapse(!0)}catch(o){r.collapse(t<n.body.clientHeight)}}this.setRng(r)},_moveEndPoint:function(t,n,r){var i=n,o=new e(n,i),s=this.dom.schema.getNonEmptyElements();do{if(3==n.nodeType&&0!==u(n.nodeValue).length)return void(r?t.setStart(n,0):t.setEnd(n,n.nodeValue.length));if(s[n.nodeName]&&!/^(TD|TH)$/.test(n.nodeName))return void(r?t.setStartBefore(n):"BR"==n.nodeName?t.setEndBefore(n):t.setEndAfter(n));if(a.ie&&a.ie<11&&this.dom.isBlock(n)&&this.dom.isEmpty(n))return void(r?t.setStart(n,0):t.setEnd(n,0))}while(n=r?o.next():o.prev());"BODY"==i.nodeName&&(r?t.setStart(i,0):t.setEnd(i,i.childNodes.length))},destroy:function(){this.win=null,this.controlSelection.destroy()}},l}),r(P,[M,f],function(e,t){function n(t){this.compare=function(n,i){function o(e){var n={};return r(t.getAttribs(e),function(r){var i=r.nodeName.toLowerCase();0!==i.indexOf("_")&&"style"!==i&&"data-mce-style"!==i&&(n[i]=t.getAttrib(e,i))}),n}function a(e,t){var n,r;for(r in e)if(e.hasOwnProperty(r)){if(n=t[r],"undefined"==typeof n)return!1;if(e[r]!=n)return!1;delete t[r]}for(r in t)if(t.hasOwnProperty(r))return!1;return!0}return n.nodeName!=i.nodeName?!1:a(o(n),o(i))&&a(t.parseStyle(t.getAttrib(n,"style")),t.parseStyle(t.getAttrib(i,"style")))?!e.isBookmarkNode(n)&&!e.isBookmarkNode(i):!1}}var r=t.each;return n}),r(O,[f],function(e){function t(e,t){function r(e){return e.replace(/%(\w+)/g,"")}var i,o,a=e.dom,s="",l,c;if(c=e.settings.preview_styles,c===!1)return"";if(c||(c="font-family font-size font-weight font-style text-decoration text-transform color background-color border border-radius outline text-shadow"),"string"==typeof t){if(t=e.formatter.get(t),!t)return;t=t[0]}return i=t.block||t.inline||"span",o=a.create(i),n(t.styles,function(e,t){e=r(e),e&&a.setStyle(o,t,e)}),n(t.attributes,function(e,t){e=r(e),e&&a.setAttrib(o,t,e)}),n(t.classes,function(e){e=r(e),a.hasClass(o,e)||a.addClass(o,e)}),e.fire("PreviewFormats"),a.setStyles(o,{position:"absolute",left:-65535}),e.getBody().appendChild(o),l=a.getStyle(e.getBody(),"fontSize",!0),l=/px$/.test(l)?parseInt(l,10):0,n(c.split(" "),function(t){var n=a.getStyle(o,t,!0);if(!("background-color"==t&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(n)&&(n=a.getStyle(e.getBody(),t,!0),"#ffffff"==a.toHex(n).toLowerCase())||"color"==t&&"#000000"==a.toHex(n).toLowerCase())){if("font-size"==t&&/em|%$/.test(n)){if(0===l)return;n=parseFloat(n,10)/(/%$/.test(n)?100:1),n=n*l+"px"}"border"==t&&n&&(s+="padding:0 2px;"),s+=t+":"+n+";"}}),e.fire("AfterPreviewFormats"),a.remove(o),s}var n=e.each;return{getCssText:t}}),r(I,[m,w,M,P,f,O],function(e,t,n,r,i,o){return function(a){function s(e){return e.nodeType&&(e=e.nodeName),!!a.schema.getTextBlockElements()[e.toLowerCase()]}function l(e){return/^(TH|TD)$/.test(e.nodeName)}function c(e){return e&&/^(IMG)$/.test(e.nodeName)}function u(e,t){return q.getParents(e,t,q.getRoot())}function d(e){return 1===e.nodeType&&"_mce_caret"===e.id}function f(){m({valigntop:[{selector:"td,th",styles:{verticalAlign:"top"}}],valignmiddle:[{selector:"td,th",styles:{verticalAlign:"middle"}}],valignbottom:[{selector:"td,th",styles:{verticalAlign:"bottom"}}],alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:!1,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:!1,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:!1,styles:{"float":"right"}}],alignjustify:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:!0},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:!0},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},links:!0,remove_similar:!0},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},code:{inline:"code"},link:{inline:"a",selector:"a",remove:"all",split:!0,deep:!0,onmatch:function(){return!0},onformat:function(e,t,n){le(n,function(t,n){q.setAttrib(e,n,t)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins",remove:"all",split:!0,expand:!1,block_expand:!0,deep:!0},{selector:"span",attributes:["style","class"],remove:"empty",split:!0,expand:!1,deep:!0},{selector:"*",attributes:["style","class"],split:!1,expand:!1,deep:!0}]}),le("p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp".split(/\s/),function(e){m(e,{block:e,remove:"all"})}),m(a.settings.formats)}function h(){a.addShortcut("meta+b","bold_desc","Bold"),a.addShortcut("meta+i","italic_desc","Italic"),a.addShortcut("meta+u","underline_desc","Underline");for(var e=1;6>=e;e++)a.addShortcut("access+"+e,"",["FormatBlock",!1,"h"+e]);a.addShortcut("access+7","",["FormatBlock",!1,"p"]),a.addShortcut("access+8","",["FormatBlock",!1,"div"]),a.addShortcut("access+9","",["FormatBlock",!1,"address"])}function p(e){return e?$[e]:$}function m(e,t){e&&("string"!=typeof e?le(e,function(e,t){m(t,e)}):(t=t.length?t:[t],le(t,function(e){e.deep===re&&(e.deep=!e.selector),e.split===re&&(e.split=!e.selector||e.inline),e.remove===re&&e.selector&&!e.inline&&(e.remove="none"),e.selector&&e.inline&&(e.mixed=!0,e.block_expand=!0),"string"==typeof e.classes&&(e.classes=e.classes.split(/\s+/))}),$[e]=t))}function g(e){return e&&$[e]&&delete $[e],$}function v(e){var t;return a.dom.getParent(e,function(e){return t=a.dom.getStyle(e,"text-decoration"),t&&"none"!==t}),t}function y(e){var t;1===e.nodeType&&e.parentNode&&1===e.parentNode.nodeType&&(t=v(e.parentNode),a.dom.getStyle(e,"color")&&t?a.dom.setStyle(e,"text-decoration",t):a.dom.getStyle(e,"text-decoration")===t&&a.dom.setStyle(e,"text-decoration",null))}function b(t,n,r){function i(e,t){if(t=t||u,e){if(t.onformat&&t.onformat(e,t,n,r),le(t.styles,function(t,r){q.setStyle(e,r,D(t,n))}),t.styles){var i=q.getAttrib(e,"style");i&&e.setAttribute("data-mce-style",i)}le(t.attributes,function(t,r){q.setAttrib(e,r,D(t,n))}),le(t.classes,function(t){t=D(t,n),q.hasClass(e,t)||q.addClass(e,t)})}}function o(){function t(t,n){var i=new e(n);for(r=i.current();r;r=i.prev())if(r.childNodes.length>1||r==t||"BR"==r.tagName)return r}var n=a.selection.getRng(),i=n.startContainer,o=n.endContainer;if(i!=o&&0===n.endOffset){var s=t(i,o),l=3==s.nodeType?s.length:s.childNodes.length;n.setEnd(s,l)}return n}function l(e,r,o){var a=[],l,f,h=!0;l=u.inline||u.block,f=q.create(l),i(f),K.walk(e,function(e){function r(e){var g,v,y,b,x;return x=h,g=e.nodeName.toLowerCase(),v=e.parentNode.nodeName.toLowerCase(),1===e.nodeType&&ie(e)&&(x=h,h="true"===ie(e),b=!0),R(g,"br")?(p=0,void(u.block&&q.remove(e))):u.wrapper&&w(e,t,n)?void(p=0):h&&!b&&u.block&&!u.wrapper&&s(g)&&Y(v,l)?(e=q.rename(e,l),i(e),a.push(e),void(p=0)):u.selector&&(le(c,function(t){"collapsed"in t&&t.collapsed!==m||q.is(e,t.selector)&&!d(e)&&(i(e,t),y=!0)}),!u.inline||y)?void(p=0):void(!h||b||!Y(l,g)||!Y(v,l)||!o&&3===e.nodeType&&1===e.nodeValue.length&&65279===e.nodeValue.charCodeAt(0)||d(e)||u.inline&&G(e)?(p=0,le(ce(e.childNodes),r),b&&(h=x),p=0):(p||(p=q.clone(f,ee),e.parentNode.insertBefore(p,e),a.push(p)),p.appendChild(e)))}var p;le(e,r)}),u.links===!0&&le(a,function(e){function t(e){"A"===e.nodeName&&i(e,u),le(ce(e.childNodes),t)}t(e)}),le(a,function(e){function r(e){var t=0;return le(e.childNodes,function(e){L(e)||se(e)||t++}),t}function o(e){var t,n;return le(e.childNodes,function(e){return 1!=e.nodeType||se(e)||d(e)?void 0:(t=e,ee)}),t&&!se(t)&&T(t,u)&&(n=q.clone(t,ee),i(n),q.replace(n,e,te),q.remove(t,1)),n||e}var s;if(s=r(e),(a.length>1||!G(e))&&0===s)return void q.remove(e,1);if(u.inline||u.wrapper){if(u.exact||1!==s||(e=o(e)),le(c,function(t){le(q.select(t.inline,e),function(e){se(e)||O(t,n,e,t.exact?e:null)})}),w(e.parentNode,t,n))return q.remove(e,1),e=0,te;u.merge_with_parents&&q.getParent(e.parentNode,function(r){return w(r,t,n)?(q.remove(e,1),e=0,te):void 0}),e&&u.merge_siblings!==!1&&(e=z(F(e),e),e=z(e,F(e,te)))}})}var c=p(t),u=c[0],f,h,m=!r&&j.isCollapsed();if(u)if(r)r.nodeType?(h=q.createRng(),h.setStartBefore(r),h.setEndAfter(r),l(H(h,c),null,!0)):l(r,null,!0);else if(m&&u.inline&&!q.select("td.mce-item-selected,th.mce-item-selected").length)V("apply",t,n);else{var g=a.selection.getNode();X||!c[0].defaultBlock||q.getParent(g,q.isBlock)||b(c[0].defaultBlock),a.selection.setRng(o()),f=j.getBookmark(),l(H(j.getRng(te),c),f),u.styles&&(u.styles.color||u.styles.textDecoration)&&(ue(g,y,"childNodes"),y(g)),j.moveToBookmark(f),U(j.getRng(te)),a.nodeChanged()}}function x(e,t,n,r){function i(e){var n,r,o,a,s;if(1===e.nodeType&&ie(e)&&(a=b,b="true"===ie(e),s=!0),n=ce(e.childNodes),b&&!s)for(r=0,o=h.length;o>r&&!O(h[r],t,e,e);r++);if(m.deep&&n.length){for(r=0,o=n.length;o>r;r++)i(n[r]);s&&(b=a)}}function o(n){var i;return le(u(n.parentNode).reverse(),function(n){var o;i||"_start"==n.id||"_end"==n.id||(o=w(n,e,t,r),o&&o.split!==!1&&(i=n))}),i}function s(e,n,r,i){var o,a,s,l,c,u;if(e){for(u=e.parentNode,o=n.parentNode;o&&o!=u;o=o.parentNode){for(a=q.clone(o,ee),c=0;c<h.length;c++)if(O(h[c],t,a,a)){a=0;break}a&&(s&&a.appendChild(s),l||(l=a),s=a)}!i||m.mixed&&G(e)||(n=q.split(e,n)),s&&(r.parentNode.insertBefore(s,r),l.appendChild(r))}return n}function c(e){return s(o(e),e,e,!0)}function d(e){var t=q.get(e?"_start":"_end"),n=t[e?"firstChild":"lastChild"];return se(n)&&(n=n[e?"firstChild":"lastChild"]),3==n.nodeType&&0===n.data.length&&(n=e?t.previousSibling||t.nextSibling:t.nextSibling||t.previousSibling),q.remove(t,!0),n}function f(e){var t,n,r=e.commonAncestorContainer;if(e=H(e,h,te),m.split){if(t=W(e,te),n=W(e),t!=n){if(/^(TR|TH|TD)$/.test(t.nodeName)&&t.firstChild&&(t="TR"==t.nodeName?t.firstChild.firstChild||t:t.firstChild||t),r&&/^T(HEAD|BODY|FOOT|R)$/.test(r.nodeName)&&l(n)&&n.firstChild&&(n=n.firstChild||n),q.isChildOf(t,n)&&!G(n)&&!l(t)&&!l(n))return t=M(t,"span",{id:"_start","data-mce-type":"bookmark"}),c(t),void(t=d(te));t=M(t,"span",{id:"_start","data-mce-type":"bookmark"}),n=M(n,"span",{id:"_end","data-mce-type":"bookmark"}),c(t),c(n),t=d(te),n=d()}else t=n=c(t);e.startContainer=t.parentNode?t.parentNode:t,e.startOffset=J(t),e.endContainer=n.parentNode?n.parentNode:n,e.endOffset=J(n)+1}K.walk(e,function(e){le(e,function(e){i(e),1===e.nodeType&&"underline"===a.dom.getStyle(e,"text-decoration")&&e.parentNode&&"underline"===v(e.parentNode)&&O({deep:!1,exact:!0,inline:"span",styles:{textDecoration:"underline"}},null,e)})})}var h=p(e),m=h[0],g,y,b=!0;return n?void(n.nodeType?(y=q.createRng(),y.setStartBefore(n),y.setEndAfter(n),f(y)):f(n)):void(j.isCollapsed()&&m.inline&&!q.select("td.mce-item-selected,th.mce-item-selected").length?V("remove",e,t,r):(g=j.getBookmark(),f(j.getRng(te)),j.moveToBookmark(g),m.inline&&_(e,t,j.getStart())&&U(j.getRng(!0)),a.nodeChanged()))}function C(e,t,n){var r=p(e);!_(e,t,n)||"toggle"in r[0]&&!r[0].toggle?b(e,t,n):x(e,t,n)}function w(e,t,n,r){function i(e,t,i){var o,a,s=t[i],l;if(t.onmatch)return t.onmatch(e,t,i);if(s)if(s.length===re){for(o in s)if(s.hasOwnProperty(o)){if(a="attributes"===i?q.getAttrib(e,o):A(e,o),r&&!a&&!t.exact)return;if((!r||t.exact)&&!R(a,B(D(s[o],n),o)))return}}else for(l=0;l<s.length;l++)if("attributes"===i?q.getAttrib(e,s[l]):A(e,s[l]))return t;return t}var o=p(t),a,s,l;if(o&&e)for(s=0;s<o.length;s++)if(a=o[s],T(e,a)&&i(e,a,"attributes")&&i(e,a,"styles")){if(l=a.classes)for(s=0;s<l.length;s++)if(!q.hasClass(e,l[s]))return;return a}}function _(e,t,n){function r(n){var r=q.getRoot();return n===r?!1:(n=q.getParent(n,function(n){return n.parentNode===r||!!w(n,e,t,!0)}),w(n,e,t))}var i;return n?r(n):(n=j.getNode(),r(n)?te:(i=j.getStart(),i!=n&&r(i)?te:ee))}function E(e,t){var n,r=[],i={};return n=j.getStart(),q.getParent(n,function(n){var o,a;for(o=0;o<e.length;o++)a=e[o],!i[a]&&w(n,a,t)&&(i[a]=!0,r.push(a))},q.getRoot()),r}function N(e){var t=p(e),n,r,i,o,a;if(t)for(n=j.getStart(),r=u(n),o=t.length-1;o>=0;o--){if(a=t[o].selector,!a||t[o].defaultBlock)return te;for(i=r.length-1;i>=0;i--)if(q.is(r[i],a))return te}return ee}function S(e,t,n){var r;return ne||(ne={},r={},a.on("NodeChange",function(e){var t=u(e.element),n={};t=i.grep(t,function(e){return 1==e.nodeType&&!e.getAttribute("data-mce-bogus")}),le(ne,function(e,i){le(t,function(o){return w(o,i,{},e.similar)?(r[i]||(le(e,function(e){e(!0,{node:o,format:i,parents:t})}),r[i]=e),n[i]=e,!1):void 0})}),le(r,function(i,o){n[o]||(delete r[o],le(i,function(n){n(!1,{node:e.element,format:o,parents:t})}))})})),le(e.split(","),function(e){ne[e]||(ne[e]=[],ne[e].similar=n),ne[e].push(t)}),this}function k(e){return o.getCssText(a,e)}function T(e,t){return R(e,t.inline)?te:R(e,t.block)?te:t.selector?1==e.nodeType&&q.is(e,t.selector):void 0}function R(e,t){return e=e||"",t=t||"",e=""+(e.nodeName||e),t=""+(t.nodeName||t),e.toLowerCase()==t.toLowerCase()}function A(e,t){return B(q.getStyle(e,t),t)}function B(e,t){return("color"==t||"backgroundColor"==t)&&(e=q.toHex(e)),"fontWeight"==t&&700==e&&(e="bold"),"fontFamily"==t&&(e=e.replace(/[\'\"]/g,"").replace(/,\s+/g,",")),""+e}function D(e,t){return"string"!=typeof e?e=e(t):t&&(e=e.replace(/%(\w+)/g,function(e,n){return t[n]||e})),e}function L(e){return e&&3===e.nodeType&&/^([\t \r\n]+|)$/.test(e.nodeValue)}function M(e,t,n){var r=q.create(t,n);return e.parentNode.insertBefore(r,e),r.appendChild(e),r}function H(t,n,r){function i(e){function t(e){return"BR"==e.nodeName&&e.getAttribute("data-mce-bogus")&&!e.nextSibling}var r,i,o,a,s;if(r=i=e?g:y,a=e?"previousSibling":"nextSibling",s=q.getRoot(),3==r.nodeType&&!L(r)&&(e?v>0:b<r.nodeValue.length))return r;for(;;){if(!n[0].block_expand&&G(i))return i;for(o=i[a];o;o=o[a])if(!se(o)&&!L(o)&&!t(o))return i;if(i.parentNode==s){r=i;break}i=i.parentNode}return r}function o(e,t){for(t===re&&(t=3===e.nodeType?e.length:e.childNodes.length);e&&e.hasChildNodes();)e=e.childNodes[t],e&&(t=3===e.nodeType?e.length:e.childNodes.length);return{node:e,offset:t}}function l(e){for(var t=e;t;){if(1===t.nodeType&&ie(t))return"false"===ie(t)?t:e;t=t.parentNode}return e}function c(t,n,i){function o(e,t){var n,o,a=e.nodeValue;return"undefined"==typeof t&&(t=i?a.length:0),i?(n=a.lastIndexOf(" ",t),o=a.lastIndexOf("\xa0",t),n=n>o?n:o,-1===n||r||n++):(n=a.indexOf(" ",t),o=a.indexOf("\xa0",t),n=-1!==n&&(-1===o||o>n)?n:o),n}var s,l,c,u;if(3===t.nodeType){if(c=o(t,n),-1!==c)return{container:t,offset:c};u=t}for(s=new e(t,q.getParent(t,G)||a.getBody());l=s[i?"prev":"next"]();)if(3===l.nodeType){if(u=l,c=o(l),-1!==c)return{container:l,offset:c}}else if(G(l))break;return u?(n=i?0:u.length,{container:u,offset:n}):void 0}function d(e,r){var i,o,a,s;for(3==e.nodeType&&0===e.nodeValue.length&&e[r]&&(e=e[r]),i=u(e),o=0;o<i.length;o++)for(a=0;a<n.length;a++)if(s=n[a],!("collapsed"in s&&s.collapsed!==t.collapsed)&&q.is(i[o],s.selector))return i[o];return e}function f(e,t){var r,i=q.getRoot();if(n[0].wrapper||(r=q.getParent(e,n[0].block,i)),r||(r=q.getParent(3==e.nodeType?e.parentNode:e,function(e){return e!=i&&s(e)})),r&&n[0].wrapper&&(r=u(r,"ul,ol").reverse()[0]||r),!r)for(r=e;r[t]&&!G(r[t])&&(r=r[t],!R(r,"br")););return r||e}var h,p,m,g=t.startContainer,v=t.startOffset,y=t.endContainer,b=t.endOffset;if(1==g.nodeType&&g.hasChildNodes()&&(h=g.childNodes.length-1,g=g.childNodes[v>h?h:v],3==g.nodeType&&(v=0)),1==y.nodeType&&y.hasChildNodes()&&(h=y.childNodes.length-1,y=y.childNodes[b>h?h:b-1],3==y.nodeType&&(b=y.nodeValue.length)),g=l(g),y=l(y),(se(g.parentNode)||se(g))&&(g=se(g)?g:g.parentNode,g=g.nextSibling||g,3==g.nodeType&&(v=0)),(se(y.parentNode)||se(y))&&(y=se(y)?y:y.parentNode,y=y.previousSibling||y,3==y.nodeType&&(b=y.length)),n[0].inline&&(t.collapsed&&(m=c(g,v,!0),m&&(g=m.container,v=m.offset),m=c(y,b),m&&(y=m.container,b=m.offset)),p=o(y,b),p.node)){for(;p.node&&0===p.offset&&p.node.previousSibling;)p=o(p.node.previousSibling);p.node&&p.offset>0&&3===p.node.nodeType&&" "===p.node.nodeValue.charAt(p.offset-1)&&p.offset>1&&(y=p.node,y.splitText(p.offset-1))}return(n[0].inline||n[0].block_expand)&&(n[0].inline&&3==g.nodeType&&0!==v||(g=i(!0)),n[0].inline&&3==y.nodeType&&b!==y.nodeValue.length||(y=i())),n[0].selector&&n[0].expand!==ee&&!n[0].inline&&(g=d(g,"previousSibling"),y=d(y,"nextSibling")),(n[0].block||n[0].selector)&&(g=f(g,"previousSibling"),y=f(y,"nextSibling"),n[0].block&&(G(g)||(g=i(!0)),G(y)||(y=i()))),1==g.nodeType&&(v=J(g),g=g.parentNode),1==y.nodeType&&(b=J(y)+1,y=y.parentNode),{startContainer:g,startOffset:v,endContainer:y,endOffset:b}}function P(e,t){return t.links&&"A"==e.tagName}function O(e,t,n,r){var i,o,a;if(!T(n,e)&&!P(n,e))return ee;if("all"!=e.remove)for(le(e.styles,function(i,o){i=B(D(i,t),o),"number"==typeof o&&(o=i,r=0),(e.remove_similar||!r||R(A(r,o),i))&&q.setStyle(n,o,""),a=1}),a&&""===q.getAttrib(n,"style")&&(n.removeAttribute("style"),n.removeAttribute("data-mce-style")),le(e.attributes,function(e,i){var o;if(e=D(e,t),"number"==typeof i&&(i=e,r=0),!r||R(q.getAttrib(r,i),e)){if("class"==i&&(e=q.getAttrib(n,i),e&&(o="",le(e.split(/\s+/),function(e){/mce\-\w+/.test(e)&&(o+=(o?" ":"")+e)}),o)))return void q.setAttrib(n,i,o);"class"==i&&n.removeAttribute("className"),Z.test(i)&&n.removeAttribute("data-mce-"+i),n.removeAttribute(i)}}),le(e.classes,function(e){e=D(e,t),(!r||q.hasClass(r,e))&&q.removeClass(n,e)}),o=q.getAttribs(n),i=0;i<o.length;i++)if(0!==o[i].nodeName.indexOf("_"))return ee;return"none"!=e.remove?(I(n,e),te):void 0}function I(e,t){function n(e,t,n){return e=F(e,t,n),!e||"BR"==e.nodeName||G(e)}var r=e.parentNode,i;t.block&&(X?r==q.getRoot()&&(t.list_block&&R(e,t.list_block)||le(ce(e.childNodes),function(e){Y(X,e.nodeName.toLowerCase())?i?i.appendChild(e):(i=M(e,X),q.setAttribs(i,a.settings.forced_root_block_attrs)):i=0})):G(e)&&!G(r)&&(n(e,ee)||n(e.firstChild,te,1)||e.insertBefore(q.create("br"),e.firstChild),n(e,te)||n(e.lastChild,ee,1)||e.appendChild(q.create("br")))),t.selector&&t.inline&&!R(t.inline,e)||q.remove(e,1)}function F(e,t,n){if(e)for(t=t?"nextSibling":"previousSibling",e=n?e:e[t];e;e=e[t])if(1==e.nodeType||!L(e))return e}function z(e,t){function n(e,t){for(i=e;i;i=i[t]){if(3==i.nodeType&&0!==i.nodeValue.length)return e;if(1==i.nodeType&&!se(i))return i}return e}var i,o,a=new r(q);if(e&&t&&(e=n(e,"previousSibling"),t=n(t,"nextSibling"),a.compare(e,t))){for(i=e.nextSibling;i&&i!=t;)o=i,i=i.nextSibling,e.appendChild(o);return q.remove(t),le(ce(t.childNodes),function(t){e.appendChild(t)}),e}return t}function W(t,n){var r,i,o;return r=t[n?"startContainer":"endContainer"],i=t[n?"startOffset":"endOffset"],1==r.nodeType&&(o=r.childNodes.length-1,!n&&i&&i--,r=r.childNodes[i>o?o:i]),3===r.nodeType&&n&&i>=r.nodeValue.length&&(r=new e(r,a.getBody()).next()||r),3!==r.nodeType||n||0!==i||(r=new e(r,a.getBody()).prev()||r),r}function V(t,n,r,i){function o(e){var t=q.create("span",{id:g,"data-mce-bogus":!0,style:v?"color:red":""});return e&&t.appendChild(a.getDoc().createTextNode(Q)),t}function l(e,t){for(;e;){if(3===e.nodeType&&e.nodeValue!==Q||e.childNodes.length>1)return!1;t&&1===e.nodeType&&t.push(e),e=e.firstChild}return!0}function c(e){for(;e;){if(e.id===g)return e;e=e.parentNode}}function u(t){var n;if(t)for(n=new e(t,t),t=n.current();t;t=n.next())if(3===t.nodeType)return t}function d(e,t){var n,r;if(e)r=j.getRng(!0),l(e)?(t!==!1&&(r.setStartBefore(e),r.setEndBefore(e)),q.remove(e)):(n=u(e),n.nodeValue.charAt(0)===Q&&(n.deleteData(0,1),r.startContainer==n&&r.startOffset>0&&r.setStart(n,r.startOffset-1),r.endContainer==n&&r.endOffset>0&&r.setEnd(n,r.endOffset-1)),q.remove(e,1)),j.setRng(r);else if(e=c(j.getStart()),!e)for(;e=q.get(g);)d(e,!1)}function f(){var e,t,i,a,s,l,d;e=j.getRng(!0),a=e.startOffset,l=e.startContainer,d=l.nodeValue,t=c(j.getStart()),t&&(i=u(t)),d&&a>0&&a<d.length&&/\w/.test(d.charAt(a))&&/\w/.test(d.charAt(a-1))?(s=j.getBookmark(),e.collapse(!0),e=H(e,p(n)),e=K.split(e),b(n,r,e),j.moveToBookmark(s)):(t&&i.nodeValue===Q?b(n,r,t):(t=o(!0),i=t.firstChild,e.insertNode(t),a=1,b(n,r,t)),j.setCursorLocation(i,a))}function h(){var e=j.getRng(!0),t,a,l,c,u,d,f=[],h,m;for(t=e.startContainer,a=e.startOffset,u=t,3==t.nodeType&&(a!=t.nodeValue.length&&(c=!0),u=u.parentNode);u;){if(w(u,n,r,i)){d=u;break}u.nextSibling&&(c=!0),f.push(u),u=u.parentNode}if(d)if(c)l=j.getBookmark(),e.collapse(!0),e=H(e,p(n),!0),e=K.split(e),x(n,r,e),j.moveToBookmark(l);else{for(m=o(),u=m,h=f.length-1;h>=0;h--)u.appendChild(q.clone(f[h],!1)),u=u.firstChild;u.appendChild(q.doc.createTextNode(Q)),u=u.firstChild;var g=q.getParent(d,s);g&&q.isEmpty(g)?d.parentNode.replaceChild(m,d):q.insertAfter(m,d),j.setCursorLocation(u,1),q.isEmpty(d)&&q.remove(d)}}function m(){var e;e=c(j.getStart()),e&&!q.isEmpty(e)&&ue(e,function(e){1!=e.nodeType||e.id===g||q.isEmpty(e)||q.setAttrib(e,"data-mce-bogus",null)},"childNodes")}var g="_mce_caret",v=a.settings.caret_debug;a._hasCaretEvents||(ae=function(){var e=[],t;if(l(c(j.getStart()),e))for(t=e.length;t--;)q.setAttrib(e[t],"data-mce-bogus","1")},oe=function(e){var t=e.keyCode;d(),8==t&&j.isCollapsed()&&j.getStart().innerHTML==Q&&d(c(j.getStart())),(37==t||39==t)&&d(c(j.getStart())),m()},a.on("SetContent",function(e){e.selection&&m()}),a._hasCaretEvents=!0),"apply"==t?f():h()}function U(t){var n=t.startContainer,r=t.startOffset,i,o,a,s,l;if((t.startContainer!=t.endContainer||!c(t.startContainer.childNodes[t.startOffset]))&&(3==n.nodeType&&r>=n.nodeValue.length&&(r=J(n),n=n.parentNode,i=!0),1==n.nodeType))for(s=n.childNodes,n=s[Math.min(r,s.length-1)],o=new e(n,q.getParent(n,q.isBlock)),(r>s.length-1||i)&&o.next(),a=o.current();a;a=o.next())if(3==a.nodeType&&!L(a))return l=q.create("a",{"data-mce-bogus":"all"},Q),a.parentNode.insertBefore(l,a),t.setStart(a,0),j.setRng(t),void q.remove(l)}var $={},q=a.dom,j=a.selection,K=new t(q),Y=a.schema.isValidChild,G=q.isBlock,X=a.settings.forced_root_block,J=q.nodeIndex,Q="\ufeff",Z=/^(src|href|style)$/,ee=!1,te=!0,ne,re,ie=q.getContentEditable,oe,ae,se=n.isBookmarkNode,le=i.each,ce=i.grep,ue=i.walk,de=i.extend;de(this,{get:p,register:m,unregister:g,apply:b,remove:x,toggle:C,match:_,matchAll:E,matchNode:w,canApply:N,formatChanged:S,getCssText:k}),f(),h(),a.on("BeforeGetContent",function(e){ae&&"raw"!=e.format&&ae()}),a.on("mouseup keydown",function(e){oe&&oe(e)})}}),r(F,[D,u,f,S],function(e,t,n,r){var i=n.trim,o;return o=new RegExp(["<span[^>]+data-mce-bogus[^>]+>[\u200b\ufeff]+<\\/span>",'\\s?data-mce-selected="[^"]+"'].join("|"),"gi"),function(e){function n(){var t=e.getContent({format:"raw",no_events:1}),n=/<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g,a,s,l,c,u,d=e.schema;for(t=t.replace(o,""),u=d.getShortEndedElements();c=n.exec(t);)s=n.lastIndex,l=c[0].length,a=u[c[1]]?s:r.findEndTag(d,t,s),t=t.substring(0,s-l)+t.substring(a),n.lastIndex=s-l;return i(t)}function a(t){e.isNotDirty=!t}function s(e){l.typing=!1,l.add({},e)}var l=this,c=0,u=[],d,f,h=0;return e.on("init",function(){l.add()}),e.on("BeforeExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&l.beforeChange()}),e.on("ExecCommand",function(e){var t=e.command;"Undo"!=t&&"Redo"!=t&&"mceRepaint"!=t&&s(e)}),e.on("ObjectResizeStart Cut",function(){l.beforeChange()}),e.on("SaveContent ObjectResized blur",s),e.on("DragEnd",s),e.on("KeyUp",function(r){var i=r.keyCode;r.isDefaultPrevented()||((i>=33&&36>=i||i>=37&&40>=i||45==i||13==i||r.ctrlKey)&&(s(),e.nodeChanged()),(46==i||8==i||t.mac&&(91==i||93==i))&&e.nodeChanged(),f&&l.typing&&(e.isDirty()||(a(u[0]&&n()!=u[0].content),e.isNotDirty||e.fire("change",{level:u[0],lastLevel:null})),e.fire("TypingUndo"),f=!1,e.nodeChanged()))}),e.on("KeyDown",function(e){var t=e.keyCode;if(!e.isDefaultPrevented()){if(t>=33&&36>=t||t>=37&&40>=t||45==t)return void(l.typing&&s(e));var n=e.ctrlKey&&!e.altKey||e.metaKey;!(16>t||t>20)||224==t||91==t||l.typing||n||(l.beforeChange(),l.typing=!0,l.add({},e),f=!0)}}),e.on("MouseDown",function(e){l.typing&&s(e)}),e.addShortcut("meta+z","","Undo"),e.addShortcut("meta+y,meta+shift+z","","Redo"),e.on("AddUndo Undo Redo ClearUndos",function(t){t.isDefaultPrevented()||e.nodeChanged()}),l={data:u,typing:!1,beforeChange:function(){h||(d=e.selection.getBookmark(2,!0))},add:function(t,r){var i,o=e.settings,s;if(t=t||{},t.content=n(),h||e.removed)return null;if(s=u[c],e.fire("BeforeAddUndo",{level:t,lastLevel:s,originalEvent:r}).isDefaultPrevented())return null;if(s&&s.content==t.content)return null;if(u[c]&&(u[c].beforeBookmark=d),o.custom_undo_redo_levels&&u.length>o.custom_undo_redo_levels){for(i=0;i<u.length-1;i++)u[i]=u[i+1];u.length--,c=u.length}t.bookmark=e.selection.getBookmark(2,!0),c<u.length-1&&(u.length=c+1),u.push(t),c=u.length-1;var l={level:t,lastLevel:s,originalEvent:r};return e.fire("AddUndo",l),c>0&&(a(!0),e.fire("change",l)),t},undo:function(){var t;return l.typing&&(l.add(),l.typing=!1),c>0&&(t=u[--c],0===c&&a(!1),e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(t.beforeBookmark),e.fire("undo",{level:t})),t},redo:function(){var t;return c<u.length-1&&(t=u[++c],e.setContent(t.content,{format:"raw"}),e.selection.moveToBookmark(t.bookmark),a(!0),e.fire("redo",{level:t})),t},clear:function(){u=[],c=0,l.typing=!1,e.fire("ClearUndos")},hasUndo:function(){return c>0||l.typing&&u[0]&&n()!=u[0].content},hasRedo:function(){return c<u.length-1&&!this.typing},transact:function(e){l.beforeChange();try{h++,e()}finally{h--}l.add()}}}}),r(z,[m,w,u],function(e,t,n){var r=n.ie&&n.ie<11;return function(i){function o(o){function h(e){return e&&a.isBlock(e)&&!/^(TD|TH|CAPTION|FORM)$/.test(e.nodeName)&&!/^(fixed|absolute)/i.test(e.style.position)&&"true"!==a.getContentEditable(e)}function p(e){return e&&/^(TD|TH|CAPTION)$/.test(e.nodeName)}function m(e){var t;a.isBlock(e)&&(t=s.getRng(),e.appendChild(a.create("span",null,"\xa0")),s.select(e),e.lastChild.outerHTML="",s.setRng(t))}function g(e){var t=e,n=[],r;if(t){for(;t=t.firstChild;){if(a.isBlock(t))return;1!=t.nodeType||d[t.nodeName.toLowerCase()]||n.push(t)}for(r=n.length;r--;)t=n[r],!t.hasChildNodes()||t.firstChild==t.lastChild&&""===t.firstChild.nodeValue?a.remove(t):"A"==t.nodeName&&" "===(t.innerText||t.textContent)&&a.remove(t)}}function v(t){function r(e){for(;e;){if(1==e.nodeType||3==e.nodeType&&e.data&&/[\r\n\s]/.test(e.data))return e;e=e.nextSibling}}var i,o,l,c=t,u;if(t){if(n.ie&&n.ie<9&&M&&M.firstChild&&M.firstChild==M.lastChild&&"BR"==M.firstChild.tagName&&a.remove(M.firstChild),/^(LI|DT|DD)$/.test(t.nodeName)){var d=r(t.firstChild);d&&/^(UL|OL|DL)$/.test(d.nodeName)&&t.insertBefore(a.doc.createTextNode("\xa0"),t.firstChild)}if(l=a.createRng(),n.ie||t.normalize(),t.hasChildNodes()){for(i=new e(t,t);o=i.current();){if(3==o.nodeType){l.setStart(o,0),l.setEnd(o,0);break}if(f[o.nodeName.toLowerCase()]){l.setStartBefore(o),l.setEndBefore(o);break}c=o,o=i.next()}o||(l.setStart(c,0),l.setEnd(c,0))}else"BR"==t.nodeName?t.nextSibling&&a.isBlock(t.nextSibling)?((!H||9>H)&&(u=a.create("br"),t.parentNode.insertBefore(u,t)),l.setStartBefore(t),l.setEndBefore(t)):(l.setStartAfter(t),l.setEndAfter(t)):(l.setStart(t,0),l.setEnd(t,0));s.setRng(l),a.remove(u),s.scrollIntoView(t)}}function y(e){var t=l.forced_root_block;t&&t.toLowerCase()===e.tagName.toLowerCase()&&a.setAttribs(e,l.forced_root_block_attrs)}function b(e){e.innerHTML=r?"":'<br data-mce-bogus="1">'}function x(e){var t=D,n,i,o,s=u.getTextInlineElements();if(e||"TABLE"==z?(n=a.create(e||V),y(n)):n=M.cloneNode(!1),o=n,l.keep_styles!==!1)do if(s[t.nodeName]){if("_mce_caret"==t.id)continue;i=t.cloneNode(!1),a.setAttrib(i,"id",""),n.hasChildNodes()?(i.appendChild(n.firstChild),n.appendChild(i)):(o=i,n.appendChild(i))}while(t=t.parentNode);return r||(o.innerHTML='<br data-mce-bogus="1">'),n}function C(t){var n,r,i;if(3==D.nodeType&&(t?L>0:L<D.nodeValue.length))return!1;if(D.parentNode==M&&U&&!t)return!0;if(t&&1==D.nodeType&&D==M.firstChild)return!0;if("TABLE"===D.nodeName||D.previousSibling&&"TABLE"==D.previousSibling.nodeName)return U&&!t||!U&&t;for(n=new e(D,M),3==D.nodeType&&(t&&0===L?n.prev():t||L!=D.nodeValue.length||n.next());r=n.current();){if(1===r.nodeType){if(!r.getAttribute("data-mce-bogus")&&(i=r.nodeName.toLowerCase(),d[i]&&"br"!==i))return!1}else if(3===r.nodeType&&!/^[ \t\r\n]*$/.test(r.nodeValue))return!1;t?n.prev():n.next()}return!0}function w(e,t){var n,r,o,s,l,c,d=V||"P";if(r=a.getParent(e,a.isBlock),!r||!h(r)){if(r=r||B,c=r==i.getBody()||p(r)?r.nodeName.toLowerCase():r.parentNode.nodeName.toLowerCase(),!r.hasChildNodes())return n=a.create(d),y(n),r.appendChild(n),R.setStart(n,0),R.setEnd(n,0),n;for(s=e;s.parentNode!=r;)s=s.parentNode;for(;s&&!a.isBlock(s);)o=s,s=s.previousSibling;if(o&&u.isValidChild(c,d.toLowerCase())){for(n=a.create(d),y(n),o.parentNode.insertBefore(n,o),s=o;s&&!a.isBlock(s);)l=s.nextSibling,n.appendChild(s),s=l;R.setStart(e,t),R.setEnd(e,t)}}return e}function _(){function e(e){for(var t=F[e?"firstChild":"lastChild"];t&&1!=t.nodeType;)t=t[e?"nextSibling":"previousSibling"];return t===M}function t(){var e=F.parentNode;return/^(LI|DT|DD)$/.test(e.nodeName)?e:F}if(F!=i.getBody()){var n=F.parentNode.nodeName;/^(OL|UL|LI)$/.test(n)&&(V="LI"),O=V?x(V):a.create("BR"),e(!0)&&e()?"LI"==n?a.insertAfter(O,t()):a.replace(O,F):e(!0)?"LI"==n?(a.insertAfter(O,t()),O.appendChild(a.doc.createTextNode(" ")),O.appendChild(F)):F.parentNode.insertBefore(O,F):e()?(a.insertAfter(O,t()),m(O)):(F=t(),A=R.cloneRange(),A.setStartAfter(M),A.setEndAfter(F),I=A.extractContents(),"LI"==V&&"LI"==I.firstChild.nodeName?(O=I.firstChild,a.insertAfter(I,F)):(a.insertAfter(I,F),a.insertAfter(O,F))),a.remove(M),v(O),c.add()}}function E(){i.execCommand("InsertLineBreak",!1,o)}function N(e){do 3===e.nodeType&&(e.nodeValue=e.nodeValue.replace(/^[\r\n]+/,"")),e=e.firstChild;while(e)}function S(e){var t=a.getRoot(),n,r;for(n=e;n!==t&&"false"!==a.getContentEditable(n);)"true"===a.getContentEditable(n)&&(r=n),n=n.parentNode;return n!==t?r:t}function k(e){var t;r||(e.normalize(),t=e.lastChild,(!t||/^(left|right)$/gi.test(a.getStyle(t,"float",!0)))&&a.add(e,"br"))}function T(){O=/^(H[1-6]|PRE|FIGURE)$/.test(z)&&"HGROUP"!=W?x(V):x(),l.end_container_on_empty_block&&h(F)&&a.isEmpty(M)?O=a.split(F,M):a.insertAfter(O,M),v(O)}var R,A,B,D,L,M,H,P,O,I,F,z,W,V,U;if(R=s.getRng(!0),!o.isDefaultPrevented()){if(!R.collapsed)return void i.execCommand("Delete");if(new t(a).normalize(R),D=R.startContainer,L=R.startOffset,V=(l.force_p_newlines?"p":"")||l.forced_root_block,V=V?V.toUpperCase():"",H=a.doc.documentMode,P=o.shiftKey,1==D.nodeType&&D.hasChildNodes()&&(U=L>D.childNodes.length-1,D=D.childNodes[Math.min(L,D.childNodes.length-1)]||D,L=U&&3==D.nodeType?D.nodeValue.length:0),B=S(D)){if(c.beforeChange(),!a.isBlock(B)&&B!=a.getRoot())return void((!V||P)&&E());if((V&&!P||!V&&P)&&(D=w(D,L)),M=a.getParent(D,a.isBlock),F=M?a.getParent(M.parentNode,a.isBlock):null,z=M?M.nodeName.toUpperCase():"",W=F?F.nodeName.toUpperCase():"","LI"!=W||o.ctrlKey||(M=F,z=W),/^(LI|DT|DD)$/.test(z)){if(!V&&P)return void E();if(a.isEmpty(M))return void _()}if("PRE"==z&&l.br_in_pre!==!1){if(!P)return void E()}else if(!V&&!P&&"LI"!=z||V&&P)return void E();V&&M===i.getBody()||(V=V||"P",
+C()?T():C(!0)?(O=M.parentNode.insertBefore(x(),M),m(O),v(M)):(A=R.cloneRange(),A.setEndAfter(M),I=A.extractContents(),N(I),O=I.firstChild,a.insertAfter(I,M),g(O),k(M),a.isEmpty(M)&&b(M),a.isEmpty(O)?(a.remove(O),T()):v(O)),a.setAttrib(O,"id",""),i.fire("NewBlock",{newBlock:O}),c.add())}}}var a=i.dom,s=i.selection,l=i.settings,c=i.undoManager,u=i.schema,d=u.getNonEmptyElements(),f=u.getMoveCaretBeforeOnEnterElements();i.on("keydown",function(e){13==e.keyCode&&o(e)!==!1&&e.preventDefault()})}}),r(W,[],function(){return function(e){function t(){var t=i.getStart(),s=e.getBody(),l,c,u,d,f,h,p,m=-16777215,g,v,y,b,x;if(x=n.forced_root_block,t&&1===t.nodeType&&x){for(;t&&t!=s;){if(a[t.nodeName])return;t=t.parentNode}if(l=i.getRng(),l.setStart){c=l.startContainer,u=l.startOffset,d=l.endContainer,f=l.endOffset;try{v=e.getDoc().activeElement===s}catch(C){}}else l.item&&(t=l.item(0),l=e.getDoc().body.createTextRange(),l.moveToElementText(t)),v=l.parentElement().ownerDocument===e.getDoc(),y=l.duplicate(),y.collapse(!0),u=-1*y.move("character",m),y.collapsed||(y=l.duplicate(),y.collapse(!1),f=-1*y.move("character",m)-u);for(t=s.firstChild,b=s.nodeName.toLowerCase();t;)if((3===t.nodeType||1==t.nodeType&&!a[t.nodeName])&&o.isValidChild(b,x.toLowerCase())){if(3===t.nodeType&&0===t.nodeValue.length){p=t,t=t.nextSibling,r.remove(p);continue}h||(h=r.create(x,e.settings.forced_root_block_attrs),t.parentNode.insertBefore(h,t),g=!0),p=t,t=t.nextSibling,h.appendChild(p)}else h=null,t=t.nextSibling;if(g&&v){if(l.setStart)l.setStart(c,u),l.setEnd(d,f),i.setRng(l);else try{l=e.getDoc().body.createTextRange(),l.moveToElementText(s),l.collapse(!0),l.moveStart("character",u),f>0&&l.moveEnd("character",f),l.select()}catch(C){}e.nodeChanged()}}}var n=e.settings,r=e.dom,i=e.selection,o=e.schema,a=o.getBlockElements();n.forced_root_block&&e.on("NodeChange",t)}}),r(V,[R,u,f,P,w,m],function(e,n,r,i,o,a){var s=r.each,l=r.extend,c=r.map,u=r.inArray,d=r.explode,f=n.gecko,h=n.ie,p=n.ie&&n.ie<11,m=!0,g=!1;return function(r){function v(e,t,n,i){var o,a,l=0;if(/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(e)||i&&i.skip_focus||r.focus(),i=r.fire("BeforeExecCommand",{command:e,ui:t,value:n}),i.isDefaultPrevented())return!1;if(a=e.toLowerCase(),o=M.exec[a])return o(a,t,n),r.fire("ExecCommand",{command:e,ui:t,value:n}),!0;if(s(r.plugins,function(i){return i.execCommand&&i.execCommand(e,t,n)?(r.fire("ExecCommand",{command:e,ui:t,value:n}),l=!0,!1):void 0}),l)return l;if(r.theme&&r.theme.execCommand&&r.theme.execCommand(e,t,n))return r.fire("ExecCommand",{command:e,ui:t,value:n}),!0;try{l=r.getDoc().execCommand(e,t,n)}catch(c){}return l?(r.fire("ExecCommand",{command:e,ui:t,value:n}),!0):!1}function y(e){var t;if(!r._isHidden()){if(e=e.toLowerCase(),t=M.state[e])return t(e);try{return r.getDoc().queryCommandState(e)}catch(n){}return!1}}function b(e){var t;if(!r._isHidden()){if(e=e.toLowerCase(),t=M.value[e])return t(e);try{return r.getDoc().queryCommandValue(e)}catch(n){}}}function x(e,t){t=t||"exec",s(e,function(e,n){s(n.toLowerCase().split(","),function(n){M[t][n]=e})})}function C(e,t,n){e=e.toLowerCase(),M.exec[e]=function(e,i,o,a){return t.call(n||r,i,o,a)}}function w(e){if(e=e.toLowerCase(),M.exec[e])return!0;try{return r.getDoc().queryCommandSupported(e)}catch(t){}return!1}function _(e,t,n){e=e.toLowerCase(),M.state[e]=function(){return t.call(n||r)}}function E(e,t,n){e=e.toLowerCase(),M.value[e]=function(){return t.call(n||r)}}function N(e){return e=e.toLowerCase(),!!M.exec[e]}function S(e,n,i){return n===t&&(n=g),i===t&&(i=null),r.getDoc().execCommand(e,n,i)}function k(e){return L.match(e)}function T(e,n){L.toggle(e,n?{value:n}:t),r.nodeChanged()}function R(e){P=D.getBookmark(e)}function A(){D.moveToBookmark(P)}var B,D,L,M={state:{},exec:{},value:{}},H=r.settings,P;r.on("PreInit",function(){B=r.dom,D=r.selection,H=r.settings,L=r.formatter}),l(this,{execCommand:v,queryCommandState:y,queryCommandValue:b,queryCommandSupported:w,addCommands:x,addCommand:C,addQueryStateHandler:_,addQueryValueHandler:E,hasCustomCommand:N}),x({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){r.undoManager.add()},"Cut,Copy,Paste":function(e){var t=r.getDoc(),i;try{S(e)}catch(o){i=m}if(i||!t.queryCommandSupported(e)){var a=r.translate("Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X/C/V keyboard shortcuts instead.");n.mac&&(a=a.replace(/Ctrl\+/g,"\u2318+")),r.windowManager.alert(a)}},unlink:function(){if(D.isCollapsed()){var e=D.getNode();return void("A"==e.tagName&&r.dom.remove(e,!0))}L.remove("link")},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone":function(e){var t=e.substring(7);"full"==t&&(t="justify"),s("left,center,right,justify".split(","),function(e){t!=e&&L.remove("align"+e)}),"none"!=t&&(T("align"+t),v("mceRepaint"))},"InsertUnorderedList,InsertOrderedList":function(e){var t,n;S(e),t=B.getParent(D.getNode(),"ol,ul"),t&&(n=t.parentNode,/^(H[1-6]|P|ADDRESS|PRE)$/.test(n.nodeName)&&(R(),B.split(n,t),A()))},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){T(e)},"ForeColor,HiliteColor,FontName":function(e,t,n){T(e,n)},FontSize:function(e,t,n){var r,i;n>=1&&7>=n&&(i=d(H.font_size_style_values),r=d(H.font_size_classes),n=r?r[n-1]||n:i[n-1]||n),T(e,n)},RemoveFormat:function(e){L.remove(e)},mceBlockQuote:function(){T("blockquote")},FormatBlock:function(e,t,n){return T(n||"p")},mceCleanup:function(){var e=D.getBookmark();r.setContent(r.getContent({cleanup:m}),{cleanup:m}),D.moveToBookmark(e)},mceRemoveNode:function(e,t,n){var i=n||D.getNode();i!=r.getBody()&&(R(),r.dom.remove(i,m),A())},mceSelectNodeDepth:function(e,t,n){var i=0;B.getParent(D.getNode(),function(e){return 1==e.nodeType&&i++==n?(D.select(e),g):void 0},r.getBody())},mceSelectNode:function(e,t,n){D.select(n)},mceInsertContent:function(t,n,o){function a(e){function t(e){return r[e]&&3==r[e].nodeType}var n,r,i;return n=D.getRng(!0),r=n.startContainer,i=n.startOffset,3==r.nodeType&&(i>0?e=e.replace(/^&nbsp;/," "):t("previousSibling")||(e=e.replace(/^ /,"&nbsp;")),i<r.length?e=e.replace(/&nbsp;(<br>|)$/," "):t("nextSibling")||(e=e.replace(/(&nbsp;| )(<br>|)$/,"&nbsp;"))),e}function l(){var e,t,n;e=D.getRng(!0),t=e.startContainer,n=e.startOffset,3==t.nodeType&&e.collapsed&&("\xa0"===t.data[n]?(t.deleteData(n,1),/[\u00a0| ]$/.test(o)||(o+=" ")):"\xa0"===t.data[n-1]&&(t.deleteData(n-1,1),/[\u00a0| ]$/.test(o)||(o=" "+o)))}function c(e){if(_)for(x=e.firstChild;x;x=x.walk(!0))N[x.name]&&x.attr("data-mce-new","true")}function u(){if(_){var e=r.getBody(),t=new i(B);s(B.select("*[data-mce-new]"),function(n){n.removeAttribute("data-mce-new");for(var r=n.parentNode;r&&r!=e;r=r.parentNode)t.compare(r,n)&&B.remove(n,!0)})}}var d,f,p,m,g,v,y,b,x,C,w,_,E,N=r.schema.getTextInlineElements();"string"!=typeof o&&(_=o.merge,E=o.data,o=o.content),/^ | $/.test(o)&&(o=a(o)),d=r.parser,f=new e({validate:H.validate},r.schema),w='<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>',v={content:o,format:"html",selection:!0},r.fire("BeforeSetContent",v),o=v.content,-1==o.indexOf("{$caret}")&&(o+="{$caret}"),o=o.replace(/\{\$caret\}/,w),b=D.getRng();var S=b.startContainer||(b.parentElement?b.parentElement():null),k=r.getBody();S===k&&D.isCollapsed()&&B.isBlock(k.firstChild)&&B.isEmpty(k.firstChild)&&(b=B.createRng(),b.setStart(k.firstChild,0),b.setEnd(k.firstChild,0),D.setRng(b)),D.isCollapsed()||(r.getDoc().execCommand("Delete",!1,null),l()),p=D.getNode();var T={context:p.nodeName.toLowerCase(),data:E};if(g=d.parse(o,T),c(g),x=g.lastChild,"mce_marker"==x.attr("id"))for(y=x,x=x.prev;x;x=x.walk(!0))if(3==x.type||!B.isBlock(x.name)){r.schema.isValidChild(x.parent.name,"span")&&x.parent.insert(y,x,"br"===x.name);break}if(T.invalid){for(D.setContent(w),p=D.getNode(),m=r.getBody(),9==p.nodeType?p=x=m:x=p;x!==m;)p=x,x=x.parentNode;o=p==m?m.innerHTML:B.getOuterHTML(p),o=f.serialize(d.parse(o.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return f.serialize(g)}))),p==m?B.setHTML(m,o):B.setOuterHTML(p,o)}else o=f.serialize(g),x=p.firstChild,C=p.lastChild,!x||x===C&&"BR"===x.nodeName?B.setHTML(p,o):D.setContent(o);u(),y=B.get("mce_marker"),D.scrollIntoView(y),b=B.createRng(),x=y.previousSibling,x&&3==x.nodeType?(b.setStart(x,x.nodeValue.length),h||(C=y.nextSibling,C&&3==C.nodeType&&(x.appendData(C.data),C.parentNode.removeChild(C)))):(b.setStartBefore(y),b.setEndBefore(y)),B.remove(y),D.setRng(b),r.fire("SetContent",v),r.addVisual()},mceInsertRawHTML:function(e,t,n){D.setContent("tiny_mce_marker"),r.setContent(r.getContent().replace(/tiny_mce_marker/g,function(){return n}))},mceToggleFormat:function(e,t,n){T(n)},mceSetContent:function(e,t,n){r.setContent(n)},"Indent,Outdent":function(e){var t,n,i;t=H.indentation,n=/[a-z%]+$/i.exec(t),t=parseInt(t,10),y("InsertUnorderedList")||y("InsertOrderedList")?S(e):(H.forced_root_block||B.getParent(D.getNode(),B.isBlock)||L.apply("div"),s(D.getSelectedBlocks(),function(o){if("LI"!=o.nodeName){var a=r.getParam("indent_use_margin",!1)?"margin":"padding";a+="rtl"==B.getStyle(o,"direction",!0)?"Right":"Left","outdent"==e?(i=Math.max(0,parseInt(o.style[a]||0,10)-t),B.setStyle(o,a,i?i+n:"")):(i=parseInt(o.style[a]||0,10)+t+n,B.setStyle(o,a,i))}}))},mceRepaint:function(){if(f)try{R(m),D.getSel()&&D.getSel().selectAllChildren(r.getBody()),D.collapse(m),A()}catch(e){}},InsertHorizontalRule:function(){r.execCommand("mceInsertContent",!1,"<hr />")},mceToggleVisualAid:function(){r.hasVisual=!r.hasVisual,r.addVisual()},mceReplaceContent:function(e,t,n){r.execCommand("mceInsertContent",!1,n.replace(/\{\$selection\}/g,D.getContent({format:"text"})))},mceInsertLink:function(e,t,n){var r;"string"==typeof n&&(n={href:n}),r=B.getParent(D.getNode(),"a"),n.href=n.href.replace(" ","%20"),r&&n.href||L.remove("link"),n.href&&L.apply("link",n,r)},selectAll:function(){var e=B.getRoot(),t;D.getRng().setStart?(t=B.createRng(),t.setStart(e,0),t.setEnd(e,e.childNodes.length),D.setRng(t)):(t=D.getRng(),t.item||(t.moveToElementText(e),t.select()))},"delete":function(){S("Delete");var e=r.getBody();B.isEmpty(e)&&(r.setContent(""),e.firstChild&&B.isBlock(e.firstChild)?r.selection.setCursorLocation(e.firstChild,0):r.selection.setCursorLocation(e,0))},mceNewDocument:function(){r.setContent("")},InsertLineBreak:function(e,t,n){function i(){for(var e=new a(h,v),t,n=r.schema.getNonEmptyElements();t=e.next();)if(n[t.nodeName.toLowerCase()]||t.length>0)return!0}var s=n,l,c,u,d=D.getRng(!0);new o(B).normalize(d);var f=d.startOffset,h=d.startContainer;if(1==h.nodeType&&h.hasChildNodes()){var g=f>h.childNodes.length-1;h=h.childNodes[Math.min(f,h.childNodes.length-1)]||h,f=g&&3==h.nodeType?h.nodeValue.length:0}var v=B.getParent(h,B.isBlock),y=v?v.nodeName.toUpperCase():"",b=v?B.getParent(v.parentNode,B.isBlock):null,x=b?b.nodeName.toUpperCase():"",C=s&&s.ctrlKey;"LI"!=x||C||(v=b,y=x),h&&3==h.nodeType&&f>=h.nodeValue.length&&(p||i()||(l=B.create("br"),d.insertNode(l),d.setStartAfter(l),d.setEndAfter(l),c=!0)),l=B.create("br"),d.insertNode(l);var w=B.doc.documentMode;return p&&"PRE"==y&&(!w||8>w)&&l.parentNode.insertBefore(B.doc.createTextNode("\r"),l),u=B.create("span",{},"&nbsp;"),l.parentNode.insertBefore(u,l),D.scrollIntoView(u),B.remove(u),c?(d.setStartBefore(l),d.setEndBefore(l)):(d.setStartAfter(l),d.setEndAfter(l)),D.setRng(d),r.undoManager.add(),m}}),x({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(e){var t="align"+e.substring(7),n=D.isCollapsed()?[B.getParent(D.getNode(),B.isBlock)]:D.getSelectedBlocks(),r=c(n,function(e){return!!L.matchNode(e,t)});return-1!==u(r,m)},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(e){return k(e)},mceBlockQuote:function(){return k("blockquote")},Outdent:function(){var e;if(H.inline_styles){if((e=B.getParent(D.getStart(),B.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return m;if((e=B.getParent(D.getEnd(),B.isBlock))&&parseInt(e.style.paddingLeft,10)>0)return m}return y("InsertUnorderedList")||y("InsertOrderedList")||!H.inline_styles&&!!B.getParent(D.getNode(),"BLOCKQUOTE")},"InsertUnorderedList,InsertOrderedList":function(e){var t=B.getParent(D.getNode(),"ul,ol");return t&&("insertunorderedlist"===e&&"UL"===t.tagName||"insertorderedlist"===e&&"OL"===t.tagName)}},"state"),x({"FontSize,FontName":function(e){var t=0,n;return(n=B.getParent(D.getNode(),"span"))&&(t="fontsize"==e?n.style.fontSize:n.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()),t}},"value"),x({Undo:function(){r.undoManager.undo()},Redo:function(){r.undoManager.redo()}})}}),r(U,[f],function(e){function t(e,o){var a=this,s,l;if(e=r(e),o=a.settings=o||{},s=o.base_uri,/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e))return void(a.source=e);var c=0===e.indexOf("//");0!==e.indexOf("/")||c||(e=(s?s.protocol||"http":"http")+"://mce_host"+e),/^[\w\-]*:?\/\//.test(e)||(l=o.base_uri?o.base_uri.path:new t(location.href).directory,""===o.base_uri.protocol?e="//mce_host"+a.toAbsPath(l,e):(e=/([^#?]*)([#?]?.*)/.exec(e),e=(s&&s.protocol||"http")+"://mce_host"+a.toAbsPath(l,e[1])+e[2])),e=e.replace(/@@/g,"(mce_at)"),e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e),n(i,function(t,n){var r=e[n];r&&(r=r.replace(/\(mce_at\)/g,"@@")),a[t]=r}),s&&(a.protocol||(a.protocol=s.protocol),a.userInfo||(a.userInfo=s.userInfo),a.port||"mce_host"!==a.host||(a.port=s.port),a.host&&"mce_host"!==a.host||(a.host=s.host),a.source=""),c&&(a.protocol="")}var n=e.each,r=e.trim,i="source protocol authority userInfo user password host port relative path directory file query anchor".split(" "),o={ftp:21,http:80,https:443,mailto:25};return t.prototype={setPath:function(e){var t=this;e=/^(.*?)\/?(\w+)?$/.exec(e),t.path=e[0],t.directory=e[1],t.file=e[2],t.source="",t.getURI()},toRelative:function(e){var n=this,r;if("./"===e)return e;if(e=new t(e,{base_uri:n}),"mce_host"!=e.host&&n.host!=e.host&&e.host||n.port!=e.port||n.protocol!=e.protocol&&""!==e.protocol)return e.getURI();var i=n.getURI(),o=e.getURI();return i==o||"/"==i.charAt(i.length-1)&&i.substr(0,i.length-1)==o?i:(r=n.toRelPath(n.path,e.path),e.query&&(r+="?"+e.query),e.anchor&&(r+="#"+e.anchor),r)},toAbsolute:function(e,n){return e=new t(e,{base_uri:this}),e.getURI(n&&this.isSameOrigin(e))},isSameOrigin:function(e){if(this.host==e.host&&this.protocol==e.protocol){if(this.port==e.port)return!0;var t=o[this.protocol];if(t&&(this.port||t)==(e.port||t))return!0}return!1},toRelPath:function(e,t){var n,r=0,i="",o,a;if(e=e.substring(0,e.lastIndexOf("/")),e=e.split("/"),n=t.split("/"),e.length>=n.length)for(o=0,a=e.length;a>o;o++)if(o>=n.length||e[o]!=n[o]){r=o+1;break}if(e.length<n.length)for(o=0,a=n.length;a>o;o++)if(o>=e.length||e[o]!=n[o]){r=o+1;break}if(1===r)return t;for(o=0,a=e.length-(r-1);a>o;o++)i+="../";for(o=r-1,a=n.length;a>o;o++)i+=o!=r-1?"/"+n[o]:n[o];return i},toAbsPath:function(e,t){var r,i=0,o=[],a,s;for(a=/\/$/.test(t)?"/":"",e=e.split("/"),t=t.split("/"),n(e,function(e){e&&o.push(e)}),e=o,r=t.length-1,o=[];r>=0;r--)0!==t[r].length&&"."!==t[r]&&(".."!==t[r]?i>0?i--:o.push(t[r]):i++);return r=e.length-i,s=0>=r?o.reverse().join("/"):e.slice(0,r).join("/")+"/"+o.reverse().join("/"),0!==s.indexOf("/")&&(s="/"+s),a&&s.lastIndexOf("/")!==s.length-1&&(s+=a),s},getURI:function(e){var t,n=this;return(!n.source||e)&&(t="",e||(t+=n.protocol?n.protocol+"://":"//",n.userInfo&&(t+=n.userInfo+"@"),n.host&&(t+=n.host),n.port&&(t+=":"+n.port)),n.path&&(t+=n.path),n.query&&(t+="?"+n.query),n.anchor&&(t+="#"+n.anchor),n.source=t),n.source}},t.parseDataUri=function(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}},t}),r($,[f],function(e){function t(){}var n=e.each,r=e.extend,i,o;return t.extend=i=function(e){function t(){var e,t,n,r=this;if(!o&&(r.init&&r.init.apply(r,arguments),t=r.Mixins))for(e=t.length;e--;)n=t[e],n.init&&n.init.apply(r,arguments)}function a(){return this}function s(e,t){return function(){var n=this,r=n._super,i;return n._super=c[e],i=t.apply(n,arguments),n._super=r,i}}var l=this,c=l.prototype,u,d,f;o=!0,u=new l,o=!1,e.Mixins&&(n(e.Mixins,function(t){t=t;for(var n in t)"init"!==n&&(e[n]=t[n])}),c.Mixins&&(e.Mixins=c.Mixins.concat(e.Mixins))),e.Methods&&n(e.Methods.split(","),function(t){e[t]=a}),e.Properties&&n(e.Properties.split(","),function(t){var n="_"+t;e[t]=function(e){var t=this,r;return e!==r?(t[n]=e,t):t[n]}}),e.Statics&&n(e.Statics,function(e,n){t[n]=e}),e.Defaults&&c.Defaults&&(e.Defaults=r({},c.Defaults,e.Defaults));for(d in e)f=e[d],"function"==typeof f&&c[d]?u[d]=s(d,f):u[d]=f;return t.prototype=u,t.constructor=t,t.extend=i,t},t}),r(q,[f],function(e){function t(t){function n(){return!1}function r(){return!0}function i(e,i){var o,s,l,c;if(e=e.toLowerCase(),i=i||{},i.type=e,i.target||(i.target=u),i.preventDefault||(i.preventDefault=function(){i.isDefaultPrevented=r},i.stopPropagation=function(){i.isPropagationStopped=r},i.stopImmediatePropagation=function(){i.isImmediatePropagationStopped=r},i.isDefaultPrevented=n,i.isPropagationStopped=n,i.isImmediatePropagationStopped=n),t.beforeFire&&t.beforeFire(i),o=d[e])for(s=0,l=o.length;l>s;s++){if(c=o[s],c.once&&a(e,c.func),i.isImmediatePropagationStopped())return i.stopPropagation(),i;if(c.func.call(u,i)===!1)return i.preventDefault(),i}return i}function o(t,r,i,o){var a,s,l;if(r===!1&&(r=n),r)for(r={func:r},o&&e.extend(r,o),s=t.toLowerCase().split(" "),l=s.length;l--;)t=s[l],a=d[t],a||(a=d[t]=[],f(t,!0)),i?a.unshift(r):a.push(r);return c}function a(e,t){var n,r,i,o,a;if(e)for(o=e.toLowerCase().split(" "),n=o.length;n--;){if(e=o[n],r=d[e],!e){for(i in d)f(i,!1),delete d[i];return c}if(r){if(t)for(a=r.length;a--;)r[a].func===t&&(r=r.slice(0,a).concat(r.slice(a+1)),d[e]=r);else r.length=0;r.length||(f(e,!1),delete d[e])}}else{for(e in d)f(e,!1);d={}}return c}function s(e,t,n){return o(e,t,n,{once:!0})}function l(e){return e=e.toLowerCase(),!(!d[e]||0===d[e].length)}var c=this,u,d={},f;t=t||{},u=t.scope||c,f=t.toggleEvent||n,c.fire=i,c.on=o,c.off=a,c.once=s,c.has=l}var n=e.makeMap("focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover draggesture dragdrop drop drag submit compositionstart compositionend compositionupdate touchstart touchend"," ");return t.isNative=function(e){return!!n[e.toLowerCase()]},t}),r(j,[],function(){function e(e){this.create=e.create}return e.create=function(t,n){return new e({create:function(e,r){function i(t){e.set(r,t.value)}function o(e){t.set(n,e.value)}var a;return e.on("change:"+r,o),t.on("change:"+n,i),a=e._bindings,a||(a=e._bindings=[],e.on("destroy",function(){for(var e=a.length;e--;)a[e]()})),a.push(function(){t.off("change:"+n,i)}),t.get(n)}})},e}),r(K,[q],function(e){function t(t){return t._eventDispatcher||(t._eventDispatcher=new e({scope:t,toggleEvent:function(n,r){e.isNative(n)&&t.toggleNativeEvent&&t.toggleNativeEvent(n,r)}})),t._eventDispatcher}return{fire:function(e,n,r){var i=this;if(i.removed&&"remove"!==e)return n;if(n=t(i).fire(e,n,r),r!==!1&&i.parent)for(var o=i.parent();o&&!n.isPropagationStopped();)o.fire(e,n,!1),o=o.parent();return n},on:function(e,n,r){return t(this).on(e,n,r)},off:function(e,n){return t(this).off(e,n)},once:function(e,n){return t(this).once(e,n)},hasEventListeners:function(e){return t(this).has(e)}}}),r(Y,[j,K,$,f],function(e,t,n,r){function i(e){return e.nodeType>0}function o(e,t){var n,a;if(e===t)return!0;if(null===e||null===t)return e===t;if("object"!=typeof e||"object"!=typeof t)return e===t;if(r.isArray(t)){if(e.length!==t.length)return!1;for(n=e.length;n--;)if(!o(e[n],t[n]))return!1}if(i(e)||i(t))return e===t;a={};for(n in t){if(!o(e[n],t[n]))return!1;a[n]=!0}for(n in e)if(!a[n]&&!o(e[n],t[n]))return!1;return!0}return n.extend({Mixins:[t],init:function(t){var n,r;t=t||{};for(n in t)r=t[n],r instanceof e&&(t[n]=r.create(this,n));this.data=t},set:function(t,n){var r,i,a=this.data[t];if(n instanceof e&&(n=n.create(this,t)),"object"==typeof t){for(r in t)this.set(r,t[r]);return this}return o(a,n)||(this.data[t]=n,i={target:this,name:t,value:n,oldValue:a},this.fire("change:"+t,i),this.fire("change",i)),this},get:function(e){return this.data[e]},has:function(e){return e in this.data},bind:function(t){return e.create(this,t)},destroy:function(){this.fire("destroy")}})}),r(G,[$],function(e){function t(e){for(var t=[],n=e.length,r;n--;)r=e[n],r.__checked||(t.push(r),r.__checked=1);for(n=t.length;n--;)delete t[n].__checked;return t}var n=/^([\w\\*]+)?(?:#([\w\\]+))?(?:\.([\w\\\.]+))?(?:\[\@?([\w\\]+)([\^\$\*!~]?=)([\w\\]+)\])?(?:\:(.+))?/i,r=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i=/^\s*|\s*$/g,o,a=e.extend({init:function(e){function t(e){return e?(e=e.toLowerCase(),function(t){return"*"===e||t.type===e}):void 0}function o(e){return e?function(t){return t._name===e}:void 0}function a(e){return e?(e=e.split("."),function(t){for(var n=e.length;n--;)if(!t.classes.contains(e[n]))return!1;return!0}):void 0}function s(e,t,n){return e?function(r){var i=r[e]?r[e]():"";return t?"="===t?i===n:"*="===t?i.indexOf(n)>=0:"~="===t?(" "+i+" ").indexOf(" "+n+" ")>=0:"!="===t?i!=n:"^="===t?0===i.indexOf(n):"$="===t?i.substr(i.length-n.length)===n:!1:!!n}:void 0}function l(e){var t;return e?(e=/(?:not\((.+)\))|(.+)/i.exec(e),e[1]?(t=u(e[1],[]),function(e){return!d(e,t)}):(e=e[2],function(t,n,r){return"first"===e?0===n:"last"===e?n===r-1:"even"===e?n%2===0:"odd"===e?n%2===1:t[e]?t[e]():!1})):void 0}function c(e,r,c){function u(e){e&&r.push(e)}var d;return d=n.exec(e.replace(i,"")),u(t(d[1])),u(o(d[2])),u(a(d[3])),u(s(d[4],d[5],d[6])),u(l(d[7])),r.pseudo=!!d[7],r.direct=c,r}function u(e,t){var n=[],i,o,a;do if(r.exec(""),o=r.exec(e),o&&(e=o[3],n.push(o[1]),o[2])){i=o[3];break}while(o);for(i&&u(i,t),e=[],a=0;a<n.length;a++)">"!=n[a]&&e.push(c(n[a],[],">"===n[a-1]));return t.push(e),t}var d=this.match;this._selectors=u(e,[])},match:function(e,t){var n,r,i,o,a,s,l,c,u,d,f,h,p;for(t=t||this._selectors,n=0,r=t.length;r>n;n++){for(a=t[n],o=a.length,p=e,h=0,i=o-1;i>=0;i--)for(c=a[i];p;){if(c.pseudo)for(f=p.parent().items(),u=d=f.length;u--&&f[u]!==p;);for(s=0,l=c.length;l>s;s++)if(!c[s](p,u,d)){s=l+1;break}if(s===l){h++;break}if(i===o-1)break;p=p.parent()}if(h===o)return!0}return!1},find:function(e){function n(e,t,i){var o,a,s,l,c,u=t[i];for(o=0,a=e.length;a>o;o++){for(c=e[o],s=0,l=u.length;l>s;s++)if(!u[s](c,o,a)){s=l+1;break}if(s===l)i==t.length-1?r.push(c):c.items&&n(c.items(),t,i+1);else if(u.direct)return;c.items&&n(c.items(),t,i)}}var r=[],i,s,l=this._selectors;if(e.items){for(i=0,s=l.length;s>i;i++)n(e.items(),l[i],0);s>1&&(r=t(r))}return o||(o=a.Collection),new o(r)}});return a}),r(X,[f,G,$],function(e,t,n){var r,i,o=Array.prototype.push,a=Array.prototype.slice;return i={length:0,init:function(e){e&&this.add(e)},add:function(t){var n=this;return e.isArray(t)?o.apply(n,t):t instanceof r?n.add(t.toArray()):o.call(n,t),n},set:function(e){var t=this,n=t.length,r;for(t.length=0,t.add(e),r=t.length;n>r;r++)delete t[r];return t},filter:function(e){var n=this,i,o,a=[],s,l;for("string"==typeof e?(e=new t(e),l=function(t){return e.match(t)}):l=e,i=0,o=n.length;o>i;i++)s=n[i],l(s)&&a.push(s);return new r(a)},slice:function(){return new r(a.apply(this,arguments))},eq:function(e){return-1===e?this.slice(e):this.slice(e,+e+1)},each:function(t){return e.each(this,t),this},toArray:function(){return e.toArray(this)},indexOf:function(e){for(var t=this,n=t.length;n--&&t[n]!==e;);return n},reverse:function(){return new r(e.toArray(this).reverse())},hasClass:function(e){return this[0]?this[0].classes.contains(e):!1},prop:function(e,t){var n=this,r,i;return t!==r?(n.each(function(n){n[e]&&n[e](t)}),n):(i=n[0],i&&i[e]?i[e]():void 0)},exec:function(t){var n=this,r=e.toArray(arguments).slice(1);return n.each(function(e){e[t]&&e[t].apply(e,r)}),n},remove:function(){for(var e=this.length;e--;)this[e].remove();return this},addClass:function(e){return this.each(function(t){t.classes.add(e)})},removeClass:function(e){return this.each(function(t){t.classes.remove(e)})}},e.each("fire on off show hide append prepend before after reflow".split(" "),function(t){i[t]=function(){var n=e.toArray(arguments);return this.each(function(e){t in e&&e[t].apply(e,n)}),this}}),e.each("text name disabled active selected checked visible parent value data".split(" "),function(e){i[e]=function(t){return this.prop(e,t)}}),r=n.extend(i),t.Collection=r,r}),r(J,[f,b],function(e,t){var n=0;return{id:function(){return"mceu_"+n++},createFragment:function(e){return t.DOM.createFragment(e)},getWindowSize:function(){return t.DOM.getViewPort()},getSize:function(e){var t,n;if(e.getBoundingClientRect){var r=e.getBoundingClientRect();t=Math.max(r.width||r.right-r.left,e.offsetWidth),n=Math.max(r.height||r.bottom-r.bottom,e.offsetHeight)}else t=e.offsetWidth,n=e.offsetHeight;return{width:t,height:n}},getPos:function(e,n){return t.DOM.getPos(e,n)},getViewPort:function(e){return t.DOM.getViewPort(e)},get:function(e){return document.getElementById(e)},addClass:function(e,n){return t.DOM.addClass(e,n)},removeClass:function(e,n){return t.DOM.removeClass(e,n)},hasClass:function(e,n){return t.DOM.hasClass(e,n)},toggleClass:function(e,n,r){return t.DOM.toggleClass(e,n,r)},css:function(e,n,r){return t.DOM.setStyle(e,n,r)},getRuntimeStyle:function(e,n){return t.DOM.getStyle(e,n,!0)},on:function(e,n,r,i){return t.DOM.bind(e,n,r,i)},off:function(e,n,r){return t.DOM.unbind(e,n,r)},fire:function(e,n,r){return t.DOM.fire(e,n,r)},innerHtml:function(e,n){t.DOM.setHTML(e,n)}}}),r(Q,[],function(){return{parseBox:function(e){var t,n=10;if(e)return"number"==typeof e?(e=e||0,{top:e,left:e,bottom:e,right:e}):(e=e.split(" "),t=e.length,1===t?e[1]=e[2]=e[3]=e[0]:2===t?(e[2]=e[0],e[3]=e[1]):3===t&&(e[3]=e[1]),{top:parseInt(e[0],n)||0,right:parseInt(e[1],n)||0,bottom:parseInt(e[2],n)||0,left:parseInt(e[3],n)||0})},measureBox:function(e,t){function n(t){var n=document.defaultView;return n?(t=t.replace(/[A-Z]/g,function(e){return"-"+e}),n.getComputedStyle(e,null).getPropertyValue(t)):e.currentStyle[t]}function r(e){var t=parseFloat(n(e),10);return isNaN(t)?0:t}return{top:r(t+"TopWidth"),right:r(t+"RightWidth"),bottom:r(t+"BottomWidth"),left:r(t+"LeftWidth")}}}}),r(Z,[f],function(e){function t(){}function n(e){this.cls=[],this.cls._map={},this.onchange=e||t,this.prefix=""}return e.extend(n.prototype,{add:function(e){return e&&!this.contains(e)&&(this.cls._map[e]=!0,this.cls.push(e),this._change()),this},remove:function(e){if(this.contains(e)){for(var t=0;t<this.cls.length&&this.cls[t]!==e;t++);this.cls.splice(t,1),delete this.cls._map[e],this._change()}return this},toggle:function(e,t){var n=this.contains(e);return n!==t&&(n?this.remove(e):this.add(e),this._change()),this},contains:function(e){return!!this.cls._map[e]},_change:function(){delete this.clsValue,this.onchange.call(this)}}),n.prototype.toString=function(){var e;if(this.clsValue)return this.clsValue;e="";for(var t=0;t<this.cls.length;t++)t>0&&(e+=" "),e+=this.prefix+this.cls[t];return e},n}),r(ee,[],function(){function e(e,t){function n(e){window.setTimeout(e,0)}var r,i=window.requestAnimationFrame,o=["ms","moz","webkit"];for(r=0;r<o.length&&!i;r++)i=window[o[r]+"RequestAnimationFrame"];i||(i=n),i(e,t)}var t={},n;return{add:function(r){var i=r.parent();if(i){if(!i._layout||i._layout.isNative())return;t[i._id]||(t[i._id]=i),n||(n=!0,e(function(){var e,r;n=!1;for(e in t)r=t[e],r.state.get("rendered")&&r.reflow();t={}},document.body))}},remove:function(e){t[e._id]&&delete t[e._id]}}}),r(te,[$,f,q,Y,X,J,h,Q,Z,ee],function(e,t,n,r,i,o,a,s,l,c){function u(e){return e._eventDispatcher||(e._eventDispatcher=new n({scope:e,toggleEvent:function(t,r){r&&n.isNative(t)&&(e._nativeEvents||(e._nativeEvents={}),e._nativeEvents[t]=!0,e.state.get("rendered")&&d(e))}})),e._eventDispatcher}function d(e){function t(t){var n=e.getParentCtrl(t.target);n&&n.fire(t.type,t)}function n(){var e=c._lastHoverCtrl;e&&(e.fire("mouseleave",{target:e.getEl()}),e.parents().each(function(e){e.fire("mouseleave",{target:e.getEl()})}),c._lastHoverCtrl=null)}function r(t){var n=e.getParentCtrl(t.target),r=c._lastHoverCtrl,i=0,o,a,s;if(n!==r){if(c._lastHoverCtrl=n,a=n.parents().toArray().reverse(),a.push(n),r){for(s=r.parents().toArray().reverse(),s.push(r),i=0;i<s.length&&a[i]===s[i];i++);for(o=s.length-1;o>=i;o--)r=s[o],r.fire("mouseleave",{target:r.getEl()})}for(o=i;o<a.length;o++)n=a[o],n.fire("mouseenter",{target:n.getEl()})}}function i(t){t.preventDefault(),"mousewheel"==t.type?(t.deltaY=-1/40*t.wheelDelta,t.wheelDeltaX&&(t.deltaX=-1/40*t.wheelDeltaX)):(t.deltaX=0,t.deltaY=t.detail),t=e.fire("wheel",t)}var o,s,l,c,u,d;if(u=e._nativeEvents){for(l=e.parents().toArray(),l.unshift(e),o=0,s=l.length;!c&&s>o;o++)c=l[o]._eventsRoot;for(c||(c=l[l.length-1]||e),e._eventsRoot=c,s=o,o=0;s>o;o++)l[o]._eventsRoot=c;var p=c._delegates;p||(p=c._delegates={});for(d in u){if(!u)return!1;"wheel"!==d||h?("mouseenter"===d||"mouseleave"===d?c._hasMouseEnter||(a(c.getEl()).on("mouseleave",n).on("mouseover",r),c._hasMouseEnter=1):p[d]||(a(c.getEl()).on(d,t),p[d]=!0),u[d]=!1):f?a(e.getEl()).on("mousewheel",i):a(e.getEl()).on("DOMMouseScroll",i)}}}var f="onmousewheel"in document,h=!1,p="mce-",m,g=0,v={Statics:{classPrefix:p},isRtl:function(){return m.rtl},classPrefix:p,init:function(e){function n(e){var t;for(e=e.split(" "),t=0;t<e.length;t++)i.classes.add(e[t])}var i=this,o,c;i.settings=e=t.extend({},i.Defaults,e),i._id=e.id||"mceu_"+g++,i._aria={role:e.role},i._elmCache={},i.$=a,i.state=new r({visible:!0,active:!1,disabled:!1,value:""}),i.data=new r(e.data),i.classes=new l(function(){i.state.get("rendered")&&(i.getEl().className=this.toString())}),i.classes.prefix=i.classPrefix,o=e.classes,o&&(i.Defaults&&(c=i.Defaults.classes,c&&o!=c&&n(c)),n(o)),t.each("title text name visible disabled active value".split(" "),function(t){t in e&&i[t](e[t])}),i.on("click",function(){return i.disabled()?!1:void 0}),i.settings=e,i.borderBox=s.parseBox(e.border),i.paddingBox=s.parseBox(e.padding),i.marginBox=s.parseBox(e.margin),e.hidden&&i.hide()},Properties:"parent,name",getContainerElm:function(){return document.body},getParentCtrl:function(e){for(var t,n=this.getRoot().controlIdLookup;e&&n&&!(t=n[e.id]);)e=e.parentNode;return t},initLayoutRect:function(){var e=this,t=e.settings,n,r,i=e.getEl(),a,l,c,u,d,f,h,p;n=e.borderBox=e.borderBox||s.measureBox(i,"border"),e.paddingBox=e.paddingBox||s.measureBox(i,"padding"),e.marginBox=e.marginBox||s.measureBox(i,"margin"),p=o.getSize(i),f=t.minWidth,h=t.minHeight,c=f||p.width,u=h||p.height,a=t.width,l=t.height,d=t.autoResize,d="undefined"!=typeof d?d:!a&&!l,a=a||c,l=l||u;var m=n.left+n.right,g=n.top+n.bottom,v=t.maxWidth||65535,y=t.maxHeight||65535;return e._layoutRect=r={x:t.x||0,y:t.y||0,w:a,h:l,deltaW:m,deltaH:g,contentW:a-m,contentH:l-g,innerW:a-m,innerH:l-g,startMinWidth:f||0,startMinHeight:h||0,minW:Math.min(c,v),minH:Math.min(u,y),maxW:v,maxH:y,autoResize:d,scrollW:0},e._lastLayoutRect={},r},layoutRect:function(e){var t=this,n=t._layoutRect,r,i,o,a,s,l;return n||(n=t.initLayoutRect()),e?(o=n.deltaW,a=n.deltaH,e.x!==s&&(n.x=e.x),e.y!==s&&(n.y=e.y),e.minW!==s&&(n.minW=e.minW),e.minH!==s&&(n.minH=e.minH),i=e.w,i!==s&&(i=i<n.minW?n.minW:i,i=i>n.maxW?n.maxW:i,n.w=i,n.innerW=i-o),i=e.h,i!==s&&(i=i<n.minH?n.minH:i,i=i>n.maxH?n.maxH:i,n.h=i,n.innerH=i-a),i=e.innerW,i!==s&&(i=i<n.minW-o?n.minW-o:i,i=i>n.maxW-o?n.maxW-o:i,n.innerW=i,n.w=i+o),i=e.innerH,i!==s&&(i=i<n.minH-a?n.minH-a:i,i=i>n.maxH-a?n.maxH-a:i,n.innerH=i,n.h=i+a),e.contentW!==s&&(n.contentW=e.contentW),e.contentH!==s&&(n.contentH=e.contentH),r=t._lastLayoutRect,(r.x!==n.x||r.y!==n.y||r.w!==n.w||r.h!==n.h)&&(l=m.repaintControls,
+l&&l.map&&!l.map[t._id]&&(l.push(t),l.map[t._id]=!0),r.x=n.x,r.y=n.y,r.w=n.w,r.h=n.h),t):n},repaint:function(){var e=this,t,n,r,i,o,a,s,l,c,u;c=document.createRange?function(e){return e}:Math.round,t=e.getEl().style,i=e._layoutRect,l=e._lastRepaintRect||{},o=e.borderBox,a=o.left+o.right,s=o.top+o.bottom,i.x!==l.x&&(t.left=c(i.x)+"px",l.x=i.x),i.y!==l.y&&(t.top=c(i.y)+"px",l.y=i.y),i.w!==l.w&&(u=c(i.w-a),t.width=(u>=0?u:0)+"px",l.w=i.w),i.h!==l.h&&(u=c(i.h-s),t.height=(u>=0?u:0)+"px",l.h=i.h),e._hasBody&&i.innerW!==l.innerW&&(u=c(i.innerW),r=e.getEl("body"),r&&(n=r.style,n.width=(u>=0?u:0)+"px"),l.innerW=i.innerW),e._hasBody&&i.innerH!==l.innerH&&(u=c(i.innerH),r=r||e.getEl("body"),r&&(n=n||r.style,n.height=(u>=0?u:0)+"px"),l.innerH=i.innerH),e._lastRepaintRect=l,e.fire("repaint",{},!1)},on:function(e,t){function n(e){var t,n;return"string"!=typeof e?e:function(i){return t||r.parentsAndSelf().each(function(r){var i=r.settings.callbacks;return i&&(t=i[e])?(n=r,!1):void 0}),t?t.call(n,i):(i.action=e,void this.fire("execute",i))}}var r=this;return u(r).on(e,n(t)),r},off:function(e,t){return u(this).off(e,t),this},fire:function(e,t,n){var r=this;if(t=t||{},t.control||(t.control=r),t=u(r).fire(e,t),n!==!1&&r.parent)for(var i=r.parent();i&&!t.isPropagationStopped();)i.fire(e,t,!1),i=i.parent();return t},hasEventListeners:function(e){return u(this).has(e)},parents:function(e){var t=this,n,r=new i;for(n=t.parent();n;n=n.parent())r.add(n);return e&&(r=r.filter(e)),r},parentsAndSelf:function(e){return new i(this).add(this.parents(e))},next:function(){var e=this.parent().items();return e[e.indexOf(this)+1]},prev:function(){var e=this.parent().items();return e[e.indexOf(this)-1]},innerHtml:function(e){return this.$el.html(e),this},getEl:function(e){var t=e?this._id+"-"+e:this._id;return this._elmCache[t]||(this._elmCache[t]=a("#"+t)[0]),this._elmCache[t]},show:function(){return this.visible(!0)},hide:function(){return this.visible(!1)},focus:function(){try{this.getEl().focus()}catch(e){}return this},blur:function(){return this.getEl().blur(),this},aria:function(e,t){var n=this,r=n.getEl(n.ariaTarget);return"undefined"==typeof t?n._aria[e]:(n._aria[e]=t,n.state.get("rendered")&&r.setAttribute("role"==e?e:"aria-"+e,t),n)},encode:function(e,t){return t!==!1&&(e=this.translate(e)),(e||"").replace(/[&<>"]/g,function(e){return"&#"+e.charCodeAt(0)+";"})},translate:function(e){return m.translate?m.translate(e):e},before:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t),!0),t},after:function(e){var t=this,n=t.parent();return n&&n.insert(e,n.items().indexOf(t)),t},remove:function(){var e=this,t=e.getEl(),n=e.parent(),r,i;if(e.items){var o=e.items().toArray();for(i=o.length;i--;)o[i].remove()}n&&n.items&&(r=[],n.items().each(function(t){t!==e&&r.push(t)}),n.items().set(r),n._lastRect=null),e._eventsRoot&&e._eventsRoot==e&&a(t).off();var s=e.getRoot().controlIdLookup;return s&&delete s[e._id],t&&t.parentNode&&t.parentNode.removeChild(t),e.state.set("rendered",!1),e.state.destroy(),e.fire("remove"),e},renderBefore:function(e){return a(e).before(this.renderHtml()),this.postRender(),this},renderTo:function(e){return a(e||this.getContainerElm()).append(this.renderHtml()),this.postRender(),this},preRender:function(){},render:function(){},renderHtml:function(){return'<div id="'+this._id+'" class="'+this.classes+'"></div>'},postRender:function(){var e=this,t=e.settings,n,r,i,o,s;e.$el=a(e.getEl()),e.state.set("rendered",!0);for(o in t)0===o.indexOf("on")&&e.on(o.substr(2),t[o]);if(e._eventsRoot){for(i=e.parent();!s&&i;i=i.parent())s=i._eventsRoot;if(s)for(o in s._nativeEvents)e._nativeEvents[o]=!0}d(e),t.style&&(n=e.getEl(),n&&(n.setAttribute("style",t.style),n.style.cssText=t.style)),e.settings.border&&(r=e.borderBox,e.$el.css({"border-top-width":r.top,"border-right-width":r.right,"border-bottom-width":r.bottom,"border-left-width":r.left}));var l=e.getRoot();l.controlIdLookup||(l.controlIdLookup={}),l.controlIdLookup[e._id]=e;for(var u in e._aria)e.aria(u,e._aria[u]);e.state.get("visible")===!1&&(e.getEl().style.display="none"),e.bindStates(),e.state.on("change:visible",function(t){var n=t.value,r;e.state.get("rendered")&&(e.getEl().style.display=n===!1?"none":"",e.getEl().getBoundingClientRect()),r=e.parent(),r&&(r._lastRect=null),e.fire(n?"show":"hide"),c.add(e)}),e.fire("postrender",{},!1)},bindStates:function(){},scrollIntoView:function(e){function t(e,t){var n,r,i=e;for(n=r=0;i&&i!=t&&i.nodeType;)n+=i.offsetLeft||0,r+=i.offsetTop||0,i=i.offsetParent;return{x:n,y:r}}var n=this.getEl(),r=n.parentNode,i,o,a,s,l,c,u=t(n,r);return i=u.x,o=u.y,a=n.offsetWidth,s=n.offsetHeight,l=r.clientWidth,c=r.clientHeight,"end"==e?(i-=l-a,o-=c-s):"center"==e&&(i-=l/2-a/2,o-=c/2-s/2),r.scrollLeft=i,r.scrollTop=o,this},getRoot:function(){for(var e=this,t,n=[];e;){if(e.rootControl){t=e.rootControl;break}n.push(e),t=e,e=e.parent()}t||(t=this);for(var r=n.length;r--;)n[r].rootControl=t;return t},reflow:function(){c.remove(this);var e=this.parent();return e._layout&&!e._layout.isNative()&&e.reflow(),this}};return t.each("text title visible disabled active value".split(" "),function(e){v[e]=function(t){return 0===arguments.length?this.state.get(e):("undefined"!=typeof t&&this.state.set(e,t),this)}}),m=e.extend(v)}),r(ne,[],function(){var e={},t;return{add:function(t,n){e[t.toLowerCase()]=n},has:function(t){return!!e[t.toLowerCase()]},create:function(n,r){var i,o,a;if(!t){a=tinymce.ui;for(o in a)e[o.toLowerCase()]=a[o];t=!0}if("string"==typeof n?(r=r||{},r.type=n):(r=n,n=r.type),n=n.toLowerCase(),i=e[n],!i)throw new Error("Could not find control by type: "+n);return i=new i(r),i.type=n,i}}}),r(re,[],function(){return function(e){function t(e){return e&&1===e.nodeType}function n(e){return e=e||x,t(e)?e.getAttribute("role"):null}function r(e){for(var t,r=e||x;r=r.parentNode;)if(t=n(r))return t}function i(e){var n=x;return t(n)?n.getAttribute("aria-"+e):void 0}function o(e){var t=e.tagName.toUpperCase();return"INPUT"==t||"TEXTAREA"==t}function a(e){return o(e)&&!e.hidden?!0:/^(button|menuitem|checkbox|tab|menuitemcheckbox|option|gridcell)$/.test(n(e))?!0:!1}function s(e){function t(e){if(1==e.nodeType&&"none"!=e.style.display){a(e)&&n.push(e);for(var r=0;r<e.childNodes.length;r++)t(e.childNodes[r])}}var n=[];return t(e||b.getEl()),n}function l(e){var t,n;e=e||C,n=e.parents().toArray(),n.unshift(e);for(var r=0;r<n.length&&(t=n[r],!t.settings.ariaRoot);r++);return t}function c(e){var t=l(e),n=s(t.getEl());t.settings.ariaRemember&&"lastAriaIndex"in t?u(t.lastAriaIndex,n):u(0,n)}function u(e,t){return 0>e?e=t.length-1:e>=t.length&&(e=0),t[e]&&t[e].focus(),e}function d(e,t){var n=-1,r=l();t=t||s(r.getEl());for(var i=0;i<t.length;i++)t[i]===x&&(n=i);n+=e,r.lastAriaIndex=u(n,t)}function f(){var e=r();"tablist"==e?d(-1,s(x.parentNode)):C.parent().submenu?v():d(-1)}function h(){var e=n(),t=r();"tablist"==t?d(1,s(x.parentNode)):"menuitem"==e&&"menu"==t&&i("haspopup")?y():d(1)}function p(){d(-1)}function m(){var e=n(),t=r();"menuitem"==e&&"menubar"==t?y():"button"==e&&i("haspopup")?y({key:"down"}):d(1)}function g(e){var t=r();if("tablist"==t){var n=s(C.getEl("body"))[0];n&&n.focus()}else d(e.shiftKey?-1:1)}function v(){C.fire("cancel")}function y(e){e=e||{},C.fire("click",{target:x,aria:e})}var b=e.root,x,C;try{x=document.activeElement}catch(w){x=document.body}return C=b.getParentCtrl(x),b.on("keydown",function(e){function t(e,t){o(x)||t(e)!==!1&&e.preventDefault()}if(!e.isDefaultPrevented())switch(e.keyCode){case 37:t(e,f);break;case 39:t(e,h);break;case 38:t(e,p);break;case 40:t(e,m);break;case 27:v();break;case 14:case 13:case 32:t(e,y);break;case 9:g(e)!==!1&&e.preventDefault()}}),b.on("focusin",function(e){x=e.target,C=e.control}),{focusFirst:c}}}),r(ie,[te,X,G,ne,re,f,h,Z,ee],function(e,t,n,r,i,o,a,s,l){var c={};return e.extend({init:function(e){var n=this;n._super(e),e=n.settings,e.fixed&&n.state.set("fixed",!0),n._items=new t,n.isRtl()&&n.classes.add("rtl"),n.bodyClasses=new s(function(){n.state.get("rendered")&&(n.getEl("body").className=this.toString())}),n.bodyClasses.prefix=n.classPrefix,n.classes.add("container"),n.bodyClasses.add("container-body"),e.containerCls&&n.classes.add(e.containerCls),n._layout=r.create((e.layout||"")+"layout"),n.settings.items?n.add(n.settings.items):n.add(n.render()),n._hasBody=!0},items:function(){return this._items},find:function(e){return e=c[e]=c[e]||new n(e),e.find(this)},add:function(e){var t=this;return t.items().add(t.create(e)).parent(t),t},focus:function(e){var t=this,n,r,i;return e&&(r=t.keyboardNav||t.parents().eq(-1)[0].keyboardNav)?void r.focusFirst(t):(i=t.find("*"),t.statusbar&&i.add(t.statusbar.items()),i.each(function(e){return e.settings.autofocus?(n=null,!1):void(e.canFocus&&(n=n||e))}),n&&n.focus(),t)},replace:function(e,t){for(var n,r=this.items(),i=r.length;i--;)if(r[i]===e){r[i]=t;break}i>=0&&(n=t.getEl(),n&&n.parentNode.removeChild(n),n=e.getEl(),n&&n.parentNode.removeChild(n)),t.parent(this)},create:function(t){var n=this,i,a=[];return o.isArray(t)||(t=[t]),o.each(t,function(t){t&&(t instanceof e||("string"==typeof t&&(t={type:t}),i=o.extend({},n.settings.defaults,t),t.type=i.type=i.type||t.type||n.settings.defaultType||(i.defaults?i.defaults.type:null),t=r.create(i)),a.push(t))}),a},renderNew:function(){var e=this;return e.items().each(function(t,n){var r;t.parent(e),t.state.get("rendered")||(r=e.getEl("body"),r.hasChildNodes()&&n<=r.childNodes.length-1?a(r.childNodes[n]).before(t.renderHtml()):a(r).append(t.renderHtml()),t.postRender(),l.add(t))}),e._layout.applyClasses(e.items().filter(":visible")),e._lastRect=null,e},append:function(e){return this.add(e).renderNew()},prepend:function(e){var t=this;return t.items().set(t.create(e).concat(t.items().toArray())),t.renderNew()},insert:function(e,t,n){var r=this,i,o,a;return e=r.create(e),i=r.items(),!n&&t<i.length-1&&(t+=1),t>=0&&t<i.length&&(o=i.slice(0,t).toArray(),a=i.slice(t).toArray(),i.set(o.concat(e,a))),r.renderNew()},fromJSON:function(e){var t=this;for(var n in e)t.find("#"+n).value(e[n]);return t},toJSON:function(){var e=this,t={};return e.find("*").each(function(e){var n=e.name(),r=e.value();n&&"undefined"!=typeof r&&(t[n]=r)}),t},renderHtml:function(){var e=this,t=e._layout,n=this.settings.role;return e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"'+(n?' role="'+this.settings.role+'"':"")+'><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this,t;return e.items().exec("postRender"),e._super(),e._layout.postRender(e),e.state.set("rendered",!0),e.settings.style&&e.$el.css(e.settings.style),e.settings.border&&(t=e.borderBox,e.$el.css({"border-top-width":t.top,"border-right-width":t.right,"border-bottom-width":t.bottom,"border-left-width":t.left})),e.parent()||(e.keyboardNav=new i({root:e})),e},initLayoutRect:function(){var e=this,t=e._super();return e._layout.recalc(e),t},recalc:function(){var e=this,t=e._layoutRect,n=e._lastRect;return n&&n.w==t.w&&n.h==t.h?void 0:(e._layout.recalc(e),t=e.layoutRect(),e._lastRect={x:t.x,y:t.y,w:t.w,h:t.h},!0)},reflow:function(){var t;if(l.remove(this),this.visible()){for(e.repaintControls=[],e.repaintControls.map={},this.recalc(),t=e.repaintControls.length;t--;)e.repaintControls[t].repaint();"flow"!==this.settings.layout&&"stack"!==this.settings.layout&&this.repaint(),e.repaintControls=[]}return this}})}),r(oe,[h],function(e){function t(e){var t,n,r,i,o,a,s,l,c=Math.max;return t=e.documentElement,n=e.body,r=c(t.scrollWidth,n.scrollWidth),i=c(t.clientWidth,n.clientWidth),o=c(t.offsetWidth,n.offsetWidth),a=c(t.scrollHeight,n.scrollHeight),s=c(t.clientHeight,n.clientHeight),l=c(t.offsetHeight,n.offsetHeight),{width:o>r?i:r,height:l>a?s:a}}function n(e){var t,n;if(e.changedTouches)for(t="screenX screenY pageX pageY clientX clientY".split(" "),n=0;n<t.length;n++)e[t[n]]=e.changedTouches[0][t[n]]}return function(r,i){function o(){return s.getElementById(i.handle||r)}var a,s=i.document||document,l,c,u,d,f,h;i=i||{},c=function(r){var c=t(s),p,m;n(r),r.preventDefault(),l=r.button,p=o(),f=r.screenX,h=r.screenY,m=window.getComputedStyle?window.getComputedStyle(p,null).getPropertyValue("cursor"):p.runtimeStyle.cursor,a=e("<div>").css({position:"absolute",top:0,left:0,width:c.width,height:c.height,zIndex:2147483647,opacity:1e-4,cursor:m}).appendTo(s.body),e(s).on("mousemove touchmove",d).on("mouseup touchend",u),i.start(r)},d=function(e){return n(e),e.button!==l?u(e):(e.deltaX=e.screenX-f,e.deltaY=e.screenY-h,e.preventDefault(),void i.drag(e))},u=function(t){n(t),e(s).off("mousemove touchmove",d).off("mouseup touchend",u),a.remove(),i.stop&&i.stop(t)},this.destroy=function(){e(o()).off()},e(o()).on("mousedown touchstart",c)}}),r(ae,[h,oe],function(e,t){return{init:function(){var e=this;e.on("repaint",e.renderScroll)},renderScroll:function(){function n(){function t(t,a,s,l,c,u){var d,f,h,p,m,g,v,y,b;if(f=i.getEl("scroll"+t)){if(y=a.toLowerCase(),b=s.toLowerCase(),e(i.getEl("absend")).css(y,i.layoutRect()[l]-1),!c)return void e(f).css("display","none");e(f).css("display","block"),d=i.getEl("body"),h=i.getEl("scroll"+t+"t"),p=d["client"+s]-2*o,p-=n&&r?f["client"+u]:0,m=d["scroll"+s],g=p/m,v={},v[y]=d["offset"+a]+o,v[b]=p,e(f).css(v),v={},v[y]=d["scroll"+a]*g,v[b]=p*g,e(h).css(v)}}var n,r,a;a=i.getEl("body"),n=a.scrollWidth>a.clientWidth,r=a.scrollHeight>a.clientHeight,t("h","Left","Width","contentW",n,"Height"),t("v","Top","Height","contentH",r,"Width")}function r(){function n(n,r,a,s,l){var c,u=i._id+"-scroll"+n,d=i.classPrefix;e(i.getEl()).append('<div id="'+u+'" class="'+d+"scrollbar "+d+"scrollbar-"+n+'"><div id="'+u+'t" class="'+d+'scrollbar-thumb"></div></div>'),i.draghelper=new t(u+"t",{start:function(){c=i.getEl("body")["scroll"+r],e("#"+u).addClass(d+"active")},drag:function(e){var t,u,d,f,h=i.layoutRect();u=h.contentW>h.innerW,d=h.contentH>h.innerH,f=i.getEl("body")["client"+a]-2*o,f-=u&&d?i.getEl("scroll"+n)["client"+l]:0,t=f/i.getEl("body")["scroll"+a],i.getEl("body")["scroll"+r]=c+e["delta"+s]/t},stop:function(){e("#"+u).removeClass(d+"active")}})}i.classes.add("scroll"),n("v","Top","Height","Y","Width"),n("h","Left","Width","X","Height")}var i=this,o=2;i.settings.autoScroll&&(i._hasScroll||(i._hasScroll=!0,r(),i.on("wheel",function(e){var t=i.getEl("body");t.scrollLeft+=10*(e.deltaX||0),t.scrollTop+=10*e.deltaY,n()}),e(i.getEl("body")).on("scroll",n)),n())}}}),r(se,[ie,ae],function(e,t){return e.extend({Defaults:{layout:"fit",containerCls:"panel"},Mixins:[t],renderHtml:function(){var e=this,t=e._layout,n=e.settings.html;return e.preRender(),t.preRender(e),"undefined"==typeof n?n='<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div>":("function"==typeof n&&(n=n.call(e)),e._hasBody=!1),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1" role="group">'+(e._preBodyHtml||"")+n+"</div>"}})}),r(le,[J],function(e){function t(t,n,r){var i,o,a,s,l,c,u,d,f,h;return f=e.getViewPort(),o=e.getPos(n),a=o.x,s=o.y,t.state.get("fixed")&&"static"==e.getRuntimeStyle(document.body,"position")&&(a-=f.x,s-=f.y),i=t.getEl(),h=e.getSize(i),l=h.width,c=h.height,h=e.getSize(n),u=h.width,d=h.height,r=(r||"").split(""),"b"===r[0]&&(s+=d),"r"===r[1]&&(a+=u),"c"===r[0]&&(s+=Math.round(d/2)),"c"===r[1]&&(a+=Math.round(u/2)),"b"===r[3]&&(s-=c),"r"===r[4]&&(a-=l),"c"===r[3]&&(s-=Math.round(c/2)),"c"===r[4]&&(a-=Math.round(l/2)),{x:a,y:s,w:l,h:c}}return{testMoveRel:function(n,r){for(var i=e.getViewPort(),o=0;o<r.length;o++){var a=t(this,n,r[o]);if(this.state.get("fixed")){if(a.x>0&&a.x+a.w<i.w&&a.y>0&&a.y+a.h<i.h)return r[o]}else if(a.x>i.x&&a.x+a.w<i.w+i.x&&a.y>i.y&&a.y+a.h<i.h+i.y)return r[o]}return r[0]},moveRel:function(e,n){"string"!=typeof n&&(n=this.testMoveRel(e,n));var r=t(this,e,n);return this.moveTo(r.x,r.y)},moveBy:function(e,t){var n=this,r=n.layoutRect();return n.moveTo(r.x+e,r.y+t),n},moveTo:function(t,n){function r(e,t,n){return 0>e?0:e+n>t?(e=t-n,0>e?0:e):e}var i=this;if(i.settings.constrainToViewport){var o=e.getViewPort(window),a=i.layoutRect();t=r(t,o.w+o.x,a.w),n=r(n,o.h+o.y,a.h)}return i.state.get("rendered")?i.layoutRect({x:t,y:n}).repaint():(i.settings.x=t,i.settings.y=n),i.fire("move",{x:t,y:n}),i}}}),r(ce,[J],function(e){return{resizeToContent:function(){this._layoutRect.autoResize=!0,this._lastRect=null,this.reflow()},resizeTo:function(t,n){if(1>=t||1>=n){var r=e.getWindowSize();t=1>=t?t*r.w:t,n=1>=n?n*r.h:n}return this._layoutRect.autoResize=!1,this.layoutRect({minW:t,minH:n,w:t,h:n}).reflow()},resizeBy:function(e,t){var n=this,r=n.layoutRect();return n.resizeTo(r.w+e,r.h+t)}}}),r(ue,[se,le,ce,J,h],function(e,t,n,r,i){function o(e,t){for(;e;){if(e==t)return!0;e=e.parent()}}function a(e){for(var t=g.length;t--;){var n=g[t],r=n.getParentCtrl(e.target);if(n.settings.autohide){if(r&&(o(r,n)||n.parent()===r))continue;e=n.fire("autohide",{target:e.target}),e.isDefaultPrevented()||n.hide()}}}function s(){h||(h=function(e){2!=e.button&&a(e)},i(document).on("click touchstart",h))}function l(){p||(p=function(){var e;for(e=g.length;e--;)u(g[e])},i(window).on("scroll",p))}function c(){if(!m){var e=document.documentElement,t=e.clientWidth,n=e.clientHeight;m=function(){document.all&&t==e.clientWidth&&n==e.clientHeight||(t=e.clientWidth,n=e.clientHeight,b.hideAll())},i(window).on("resize",m)}}function u(e){function t(t,n){for(var r,i=0;i<g.length;i++)if(g[i]!=e)for(r=g[i].parent();r&&(r=r.parent());)r==e&&g[i].fixed(t).moveBy(0,n).repaint()}var n=r.getViewPort().y;e.settings.autofix&&(e.state.get("fixed")?e._autoFixY>n&&(e.fixed(!1).layoutRect({y:e._autoFixY}).repaint(),t(!1,e._autoFixY-n)):(e._autoFixY=e.layoutRect().y,e._autoFixY<n&&(e.fixed(!0).layoutRect({y:0}).repaint(),t(!0,n-e._autoFixY))))}function d(e,t){var n,r=b.zIndex||65535,o;if(e)v.push(t);else for(n=v.length;n--;)v[n]===t&&v.splice(n,1);if(v.length)for(n=0;n<v.length;n++)v[n].modal&&(r++,o=v[n]),v[n].getEl().style.zIndex=r,v[n].zIndex=r,r++;var a=document.getElementById(t.classPrefix+"modal-block");o?i(a).css("z-index",o.zIndex-1):a&&(a.parentNode.removeChild(a),y=!1),b.currentZIndex=r}function f(e){var t;for(t=g.length;t--;)g[t]===e&&g.splice(t,1);for(t=v.length;t--;)v[t]===e&&v.splice(t,1)}var h,p,m,g=[],v=[],y,b=e.extend({Mixins:[t,n],init:function(e){var t=this;t._super(e),t._eventsRoot=t,t.classes.add("floatpanel"),e.autohide&&(s(),c(),g.push(t)),e.autofix&&(l(),t.on("move",function(){u(this)})),t.on("postrender show",function(e){if(e.control==t){var n,r=t.classPrefix;t.modal&&!y&&(n=i("#"+r+"modal-block"),n[0]||(n=i('<div id="'+r+'modal-block" class="'+r+"reset "+r+'fade"></div>').appendTo(t.getContainerElm())),setTimeout(function(){n.addClass(r+"in"),i(t.getEl()).addClass(r+"in")},0),y=!0),d(!0,t)}}),t.on("show",function(){t.parents().each(function(e){return e.state.get("fixed")?(t.fixed(!0),!1):void 0})}),e.popover&&(t._preBodyHtml='<div class="'+t.classPrefix+'arrow"></div>',t.classes.add("popover").add("bottom").add(t.isRtl()?"end":"start"))},fixed:function(e){var t=this;if(t.state.get("fixed")!=e){if(t.state.get("rendered")){var n=r.getViewPort();e?t.layoutRect().y-=n.y:t.layoutRect().y+=n.y}t.classes.toggle("fixed",e),t.state.set("fixed",e)}return t},show:function(){var e=this,t,n=e._super();for(t=g.length;t--&&g[t]!==e;);return-1===t&&g.push(e),n},hide:function(){return f(this),d(!1,this),this._super()},hideAll:function(){b.hideAll()},close:function(){var e=this;return e.fire("close").isDefaultPrevented()||(e.remove(),d(!1,e)),e},remove:function(){f(this),this._super()},postRender:function(){var e=this;return e.settings.bodyRole&&this.getEl("body").setAttribute("role",e.settings.bodyRole),e._super()}});return b.hideAll=function(){for(var e=g.length;e--;){var t=g[e];t&&t.settings.autohide&&(t.hide(),g.splice(e,1))}},b}),r(de,[ue,se,J,h,oe,Q,u],function(e,t,n,r,i,o,a){function s(e){var t="width=device-width,initial-scale=1.0,user-scalable=0,minimum-scale=1.0,maximum-scale=1.0",n=r("meta[name=viewport]")[0],i;a.overrideViewPort!==!1&&(n||(n=document.createElement("meta"),n.setAttribute("name","viewport"),document.getElementsByTagName("head")[0].appendChild(n)),i=n.getAttribute("content"),i&&"undefined"!=typeof d&&(d=i),n.setAttribute("content",e?t:d))}function l(e){for(var t=0;t<u.length;t++)if(u[t]._fullscreen)return;r([document.documentElement,document.body]).removeClass(e+"fullscreen")}function c(){function e(){var e,t=n.getWindowSize(),r;for(e=0;e<u.length;e++)r=u[e].layoutRect(),u[e].moveTo(u[e].settings.x||Math.max(0,t.w/2-r.w/2),u[e].settings.y||Math.max(0,t.h/2-r.h/2))}var t={w:window.innerWidth,h:window.innerHeight};window.setInterval(function(){var e=window.innerWidth,n=window.innerHeight;(t.w!=e||t.h!=n)&&(t={w:e,h:n},r(window).trigger("resize"))},0),r(window).on("resize",e)}var u=[],d="",f=e.extend({modal:!0,Defaults:{border:1,layout:"flex",containerCls:"panel",role:"dialog",callbacks:{submit:function(){this.fire("submit",{data:this.toJSON()})},close:function(){this.close()}}},init:function(e){var n=this;n._super(e),n.isRtl()&&n.classes.add("rtl"),n.classes.add("window"),n.bodyClasses.add("window-body"),n.state.set("fixed",!0),e.buttons&&(n.statusbar=new t({layout:"flex",border:"1 0 0 0",spacing:3,padding:10,align:"center",pack:n.isRtl()?"start":"end",defaults:{type:"button"},items:e.buttons}),n.statusbar.classes.add("foot"),n.statusbar.parent(n)),n.on("click",function(e){-1!=e.target.className.indexOf(n.classPrefix+"close")&&n.close()}),n.on("cancel",function(){n.close()}),n.aria("describedby",n.describedBy||n._id+"-none"),n.aria("label",e.title),n._fullscreen=!1},recalc:function(){var e=this,t=e.statusbar,r,i,o,a;e._fullscreen&&(e.layoutRect(n.getWindowSize()),e.layoutRect().contentH=e.layoutRect().innerH),e._super(),r=e.layoutRect(),e.settings.title&&!e._fullscreen&&(i=r.headerW,i>r.w&&(o=r.x-Math.max(0,i/2),e.layoutRect({w:i,x:o}),a=!0)),t&&(t.layoutRect({w:e.layoutRect().innerW}).recalc(),i=t.layoutRect().minW+r.deltaW,i>r.w&&(o=r.x-Math.max(0,i-r.w),e.layoutRect({w:i,x:o}),a=!0)),a&&e.recalc()},initLayoutRect:function(){var e=this,t=e._super(),r=0,i;if(e.settings.title&&!e._fullscreen){i=e.getEl("head");var o=n.getSize(i);t.headerW=o.width,t.headerH=o.height,r+=t.headerH}e.statusbar&&(r+=e.statusbar.layoutRect().h),t.deltaH+=r,t.minH+=r,t.h+=r;var a=n.getWindowSize();return t.x=e.settings.x||Math.max(0,a.w/2-t.w/2),t.y=e.settings.y||Math.max(0,a.h/2-t.h/2),t},renderHtml:function(){var e=this,t=e._layout,n=e._id,r=e.classPrefix,i=e.settings,o="",a="",s=i.html;return e.preRender(),t.preRender(e),i.title&&(o='<div id="'+n+'-head" class="'+r+'window-head"><div id="'+n+'-title" class="'+r+'title">'+e.encode(i.title)+'</div><button type="button" class="'+r+'close" aria-hidden="true">\xd7</button><div id="'+n+'-dragh" class="'+r+'dragh"></div></div>'),i.url&&(s='<iframe src="'+i.url+'" tabindex="-1"></iframe>'),"undefined"==typeof s&&(s=t.renderHtml(e)),e.statusbar&&(a=e.statusbar.renderHtml()),'<div id="'+n+'" class="'+e.classes+'" hidefocus="1"><div class="'+e.classPrefix+'reset" role="application">'+o+'<div id="'+n+'-body" class="'+e.bodyClasses+'">'+s+"</div>"+a+"</div></div>"},fullscreen:function(e){var t=this,i=document.documentElement,a,s=t.classPrefix,l;if(e!=t._fullscreen)if(r(window).on("resize",function(){var e;if(t._fullscreen)if(a)t._timer||(t._timer=setTimeout(function(){var e=n.getWindowSize();t.moveTo(0,0).resizeTo(e.w,e.h),t._timer=0},50));else{e=(new Date).getTime();var r=n.getWindowSize();t.moveTo(0,0).resizeTo(r.w,r.h),(new Date).getTime()-e>50&&(a=!0)}}),l=t.layoutRect(),t._fullscreen=e,e){t._initial={x:l.x,y:l.y,w:l.w,h:l.h},t.borderBox=o.parseBox("0"),t.getEl("head").style.display="none",l.deltaH-=l.headerH+2,r([i,document.body]).addClass(s+"fullscreen"),t.classes.add("fullscreen");var c=n.getWindowSize();t.moveTo(0,0).resizeTo(c.w,c.h)}else t.borderBox=o.parseBox(t.settings.border),t.getEl("head").style.display="",l.deltaH+=l.headerH,r([i,document.body]).removeClass(s+"fullscreen"),t.classes.remove("fullscreen"),t.moveTo(t._initial.x,t._initial.y).resizeTo(t._initial.w,t._initial.h);return t.reflow()},postRender:function(){var e=this,t;setTimeout(function(){e.classes.add("in")},0),e._super(),e.statusbar&&e.statusbar.postRender(),e.focus(),this.dragHelper=new i(e._id+"-dragh",{start:function(){t={x:e.layoutRect().x,y:e.layoutRect().y}},drag:function(n){e.moveTo(t.x+n.deltaX,t.y+n.deltaY)}}),e.on("submit",function(t){t.isDefaultPrevented()||e.close()}),u.push(e),s(!0)},submit:function(){return this.fire("submit",{data:this.toJSON()})},remove:function(){var e=this,t;for(e.dragHelper.destroy(),e._super(),e.statusbar&&this.statusbar.remove(),t=u.length;t--;)u[t]===e&&u.splice(t,1);s(u.length>0),l(e.classPrefix)},getContentWindow:function(){var e=this.getEl().getElementsByTagName("iframe")[0];return e?e.contentWindow:null}});return a.desktop||c(),f}),r(fe,[de],function(e){var t=e.extend({init:function(e){e={border:1,padding:20,layout:"flex",pack:"center",align:"center",containerCls:"panel",autoScroll:!0,buttons:{type:"button",text:"Ok",action:"ok"},items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200}},this._super(e)},Statics:{OK:1,OK_CANCEL:2,YES_NO:3,YES_NO_CANCEL:4,msgBox:function(n){function r(e,t,n){return{type:"button",text:e,subtype:n?"primary":"",onClick:function(e){e.control.parents()[1].close(),o(t)}}}var i,o=n.callback||function(){};switch(n.buttons){case t.OK_CANCEL:i=[r("Ok",!0,!0),r("Cancel",!1)];break;case t.YES_NO:case t.YES_NO_CANCEL:i=[r("Yes",1,!0),r("No",0)],n.buttons==t.YES_NO_CANCEL&&i.push(r("Cancel",-1));break;default:i=[r("Ok",!0,!0)]}return new e({padding:20,x:n.x,y:n.y,minWidth:300,minHeight:100,layout:"flex",pack:"center",align:"center",buttons:i,title:n.title,role:"alertdialog",items:{type:"label",multiline:!0,maxWidth:500,maxHeight:200,text:n.text},onPostRender:function(){this.aria("describedby",this.items()[0]._id)},onClose:n.onClose,onCancel:function(){o(!1)}}).renderTo(document.body).reflow()},alert:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,t.msgBox(e)},confirm:function(e,n){return"string"==typeof e&&(e={text:e}),e.callback=n,e.buttons=t.OK_CANCEL,t.msgBox(e)}}});return t}),r(he,[de,fe],function(e,t){return function(n){function r(){return o.length?o[o.length-1]:void 0}var i=this,o=[];i.windows=o,n.on("remove",function(){for(var e=o.length;e--;)o[e].close()}),i.open=function(t,r){var i;return n.editorManager.setActive(n),t.title=t.title||" ",t.url=t.url||t.file,t.url&&(t.width=parseInt(t.width||320,10),t.height=parseInt(t.height||240,10)),t.body&&(t.items={defaults:t.defaults,type:t.bodyType||"form",items:t.body}),t.url||t.buttons||(t.buttons=[{text:"Ok",subtype:"primary",onclick:function(){i.find("form")[0].submit()}},{text:"Cancel",onclick:function(){i.close()}}]),i=new e(t),o.push(i),i.on("close",function(){for(var e=o.length;e--;)o[e]===i&&o.splice(e,1);o.length||n.focus()}),t.data&&i.on("postRender",function(){this.find("*").each(function(e){var n=e.name();n in t.data&&e.value(t.data[n])})}),i.features=t||{},i.params=r||{},1===o.length&&n.nodeChanged(),i.renderTo().reflow()},i.alert=function(e,r,i){t.alert(e,function(){r?r.call(i||this):n.focus()})},i.confirm=function(e,n,r){t.confirm(e,function(e){n.call(r||this,e)})},i.close=function(){r()&&r().close()},i.getParams=function(){return r()?r().params:null},i.setParams=function(e){r()&&(r().params=e)},i.getWindows=function(){return o}}}),r(pe,[b],function(e){function t(t,n,r){for(var i=[];n&&n!=t;n=n.parentNode)i.push(e.nodeIndex(n,r));return i}function n(e,t){var n,r,i;for(r=e,n=t.length-1;n>=0;n--){if(i=r.childNodes,t[n]>i.length-1)return null;r=i[t[n]]}return r}return{create:t,resolve:n}}),r(me,[D,w,m,pe,E,v,u,f],function(e,t,n,r,i,o,a,s){return function(l){function c(e,t){try{l.getDoc().execCommand(e,!1,t)}catch(n){}}function u(){var e=l.getDoc().documentMode;return e?e:6}function d(e){return e.isDefaultPrevented()}function f(e){var t,n;e.dataTransfer&&(l.selection.isCollapsed()&&"IMG"==e.target.tagName&&J.select(e.target),t=l.selection.getContent(),t.length>0&&(n=ie+escape(l.id)+","+escape(t),e.dataTransfer.setData(oe,n)))}function h(e){var t;return e.dataTransfer&&(t=e.dataTransfer.getData(oe),t&&t.indexOf(ie)>=0)?(t=t.substr(ie.length).split(","),{id:unescape(t[0]),html:unescape(t[1])}):null}function p(e){l.queryCommandSupported("mceInsertClipboardContent")?l.execCommand("mceInsertClipboardContent",!1,{content:e}):l.execCommand("mceInsertContent",!1,e)}function m(){function i(e){var t=b.schema.getBlockElements(),n=l.getBody();if("BR"!=e.nodeName)return!1;for(e=e;e!=n&&!t[e.nodeName];e=e.parentNode)if(e.nextSibling)return!1;return!0}function o(e,t){var n;for(n=e.nextSibling;n&&n!=t;n=n.nextSibling)if((3!=n.nodeType||0!==K.trim(n.data).length)&&n!==t)return!1;return n===t}function a(e,t,r){var o,a,s;for(s=b.schema.getNonEmptyElements(),o=new n(r||e,e);a=o[t?"next":"prev"]();){if(s[a.nodeName]&&!i(a))return a;if(3==a.nodeType&&a.data.length>0)return a}}function c(e){var n,r,i,o,s;if(!e.collapsed&&(n=b.getParent(t.getNode(e.startContainer,e.startOffset),b.isBlock),r=b.getParent(t.getNode(e.endContainer,e.endOffset),b.isBlock),s=l.schema.getTextBlockElements(),n!=r&&s[n.nodeName]&&s[r.nodeName]&&"false"!==b.getContentEditable(n)&&"false"!==b.getContentEditable(r)))return e.deleteContents(),i=a(n,!1),o=a(r,!0),b.isEmpty(r)||K(n).append(r.childNodes),K(r).remove(),i?1==i.nodeType?"BR"==i.nodeName?(e.setStartBefore(i),e.setEndBefore(i)):(e.setStartAfter(i),e.setEndAfter(i)):(e.setStart(i,i.data.length),e.setEnd(i,i.data.length)):o&&(1==o.nodeType?(e.setStartBefore(o),e.setEndBefore(o)):(e.setStart(o,0),e.setEnd(o,0))),x.setRng(e),!0}function u(e,n){var r,i,s,c,u,d;if(!e.collapsed)return e;if(u=e.startContainer,d=e.startOffset,3==u.nodeType)if(n){if(d<u.data.length)return e}else if(d>0)return e;if(r=t.getNode(e.startContainer,e.startOffset),s=b.getParent(r,b.isBlock),i=a(l.getBody(),n,r),c=b.getParent(i,b.isBlock),!r||!i)return e;if(c&&s!=c)if(n){if(!o(s,c))return e;1==r.nodeType?"BR"==r.nodeName?e.setStartBefore(r):e.setStartAfter(r):e.setStart(r,r.data.length),1==i.nodeType?e.setEnd(i,0):e.setEndBefore(i)}else{if(!o(c,s))return e;1==i.nodeType?"BR"==i.nodeName?e.setStartBefore(i):e.setStartAfter(i):e.setStart(i,i.data.length),1==r.nodeType?e.setEnd(r,0):e.setEndBefore(r)}return e}function m(e){var t=x.getRng();return t=u(t,e),c(t)?!0:void 0}function g(e,t){function n(e,n){return m=K(n).parents().filter(function(e,t){return!!l.schema.getTextInlineElements()[t.nodeName]}),c=e.cloneNode(!1),m=s.map(m,function(e){return e=e.cloneNode(!1),c.hasChildNodes()?(e.appendChild(c.firstChild),c.appendChild(e)):c.appendChild(e),c.appendChild(e),e}),m.length?(p=b.create("br"),m[0].appendChild(p),b.replace(c,e),t.setStartBefore(p),t.setEndBefore(p),l.selection.setRng(t),p):null}function i(e){return e&&l.schema.getTextBlockElements()[e.tagName]}var o,a,c,u,d,f,h,p,m;if(t.collapsed&&(f=t.startContainer,h=t.startOffset,a=b.getParent(f,b.isBlock),i(a)))if(1==f.nodeType){if(f=f.childNodes[h],f&&"BR"!=f.tagName)return;if(d=e?a.nextSibling:a.previousSibling,b.isEmpty(a)&&i(d)&&b.isEmpty(d)&&n(a,f))return b.remove(d),!0}else if(3==f.nodeType){if(o=r.create(a,f),u=a.cloneNode(!0),f=r.resolve(u,o),e){if(h>=f.data.length)return;f.deleteData(h,1)}else{if(0>=h)return;f.deleteData(h-1,1)}if(b.isEmpty(u))return n(a,f)}}function v(e){var t,n,r;m(e)||(s.each(l.getBody().getElementsByTagName("*"),function(e){"SPAN"==e.tagName&&e.setAttribute("mce-data-marked",1),!e.hasAttribute("data-mce-style")&&e.hasAttribute("style")&&l.dom.setAttrib(e,"style",l.dom.getAttrib(e,"style"))}),t=new C(function(){}),t.observe(l.getDoc(),{childList:!0,attributes:!0,subtree:!0,attributeFilter:["style"]}),l.getDoc().execCommand(e?"ForwardDelete":"Delete",!1,null),n=l.selection.getRng(),r=n.startContainer.parentNode,s.each(t.takeRecords(),function(e){if(b.isChildOf(e.target,l.getBody())){if("style"==e.attributeName){var t=e.target.getAttribute("data-mce-style");t?e.target.setAttribute("style",t):e.target.removeAttribute("style");
+}s.each(e.addedNodes,function(e){if("SPAN"==e.nodeName&&!e.getAttribute("mce-data-marked")){var t,i;e==r&&(t=n.startOffset,i=e.firstChild),b.remove(e,!0),i&&(n.setStart(i,t),n.setEnd(i,t),l.selection.setRng(n))}})}}),t.disconnect(),s.each(l.dom.select("span[mce-data-marked]"),function(e){e.removeAttribute("mce-data-marked")}))}var y=l.getDoc(),b=l.dom,x=l.selection,C=window.MutationObserver,w,_;C||(w=!0,C=function(){function e(e){var t=e.relatedNode||e.target;n.push({target:t,addedNodes:[t]})}function t(e){var t=e.relatedNode||e.target;n.push({target:t,attributeName:e.attrName})}var n=[],r;this.observe=function(n){r=n,r.addEventListener("DOMSubtreeModified",e,!1),r.addEventListener("DOMNodeInsertedIntoDocument",e,!1),r.addEventListener("DOMNodeInserted",e,!1),r.addEventListener("DOMAttrModified",t,!1)},this.disconnect=function(){r.removeEventListener("DOMSubtreeModified",e,!1),r.removeEventListener("DOMNodeInsertedIntoDocument",e,!1),r.removeEventListener("DOMNodeInserted",e,!1),r.removeEventListener("DOMAttrModified",t,!1)},this.takeRecords=function(){return n}}),l.on("keydown",function(e){var t=e.keyCode==G,n=e.ctrlKey||e.metaKey;if(!d(e)&&(t||e.keyCode==Y)){var r=l.selection.getRng(),i=r.startContainer,o=r.startOffset;if(t&&e.shiftKey)return;if(g(t,r))return void e.preventDefault();if(!n&&r.collapsed&&3==i.nodeType&&(t?o<i.data.length:o>0))return;e.preventDefault(),n&&l.selection.getSel().modify("extend",t?"forward":"backward",e.metaKey?"lineboundary":"word"),v(t)}}),l.on("keypress",function(t){if(!d(t)&&!x.isCollapsed()&&t.charCode>31&&!e.metaKeyPressed(t)){var n,r,i,o,a,s;n=l.selection.getRng(),s=String.fromCharCode(t.charCode),t.preventDefault(),r=K(n.startContainer).parents().filter(function(e,t){return!!l.schema.getTextInlineElements()[t.nodeName]}),v(!0),r=r.filter(function(e,t){return!K.contains(l.getBody(),t)}),r.length?(i=b.createFragment(),r.each(function(e,t){t=t.cloneNode(!1),i.hasChildNodes()?(t.appendChild(i.firstChild),i.appendChild(t)):(a=t,i.appendChild(t)),i.appendChild(t)}),a.appendChild(l.getDoc().createTextNode(s)),o=b.getParent(n.startContainer,b.isBlock),b.isEmpty(o)?K(o).empty().append(i):n.insertNode(i),n.setStart(a.firstChild,1),n.setEnd(a.firstChild,1),l.selection.setRng(n)):l.selection.setContent(s)}}),l.addCommand("Delete",function(){v()}),l.addCommand("ForwardDelete",function(){v(!0)}),w||(l.on("dragstart",function(e){_=x.getRng(),f(e)}),l.on("drop",function(e){if(!d(e)){var n=h(e);n&&(e.preventDefault(),window.setTimeout(function(){var r=t.getCaretRangeFromPoint(e.x,e.y,y);_&&(x.setRng(_),_=null),v(),x.setRng(r),p(n.html)},0))}}),l.on("cut",function(e){d(e)||!e.clipboardData||l.selection.isCollapsed()||(e.preventDefault(),e.clipboardData.clearData(),e.clipboardData.setData("text/html",l.selection.getContent()),e.clipboardData.setData("text/plain",l.selection.getContent({format:"text"})),window.setTimeout(function(){v(!0)},0))}))}function g(){function e(e){var t=X.create("body"),n=e.cloneContents();return t.appendChild(n),J.serializer.serialize(t,{format:"html"})}function n(n){if(!n.setStart){if(n.item)return!1;var r=n.duplicate();return r.moveToElementText(l.getBody()),t.compareRanges(n,r)}var i=e(n),o=X.createRng();o.selectNode(l.getBody());var a=e(o);return i===a}l.on("keydown",function(e){var t=e.keyCode,r,i;if(!d(e)&&(t==G||t==Y)){if(r=l.selection.isCollapsed(),i=l.getBody(),r&&!X.isEmpty(i))return;if(!r&&!n(l.selection.getRng()))return;e.preventDefault(),l.setContent(""),i.firstChild&&X.isBlock(i.firstChild)?l.selection.setCursorLocation(i.firstChild,0):l.selection.setCursorLocation(i,0),l.nodeChanged()}})}function v(){l.shortcuts.add("meta+a",null,"SelectAll")}function y(){l.settings.content_editable||(X.bind(l.getDoc(),"focusin",function(){J.setRng(J.getRng())}),X.bind(l.getDoc(),"mousedown mouseup",function(e){e.target==l.getDoc().documentElement&&(l.getBody().focus(),"mousedown"==e.type?J.placeCaretAt(e.clientX,e.clientY):J.setRng(J.getRng()))}))}function b(){l.on("keydown",function(e){if(!d(e)&&e.keyCode===Y){if(!l.getBody().getElementsByTagName("hr").length)return;if(J.isCollapsed()&&0===J.getRng(!0).startOffset){var t=J.getNode(),n=t.previousSibling;if("HR"==t.nodeName)return X.remove(t),void e.preventDefault();n&&n.nodeName&&"hr"===n.nodeName.toLowerCase()&&(X.remove(n),e.preventDefault())}}})}function x(){window.Range.prototype.getClientRects||l.on("mousedown",function(e){if(!d(e)&&"HTML"===e.target.nodeName){var t=l.getBody();t.blur(),setTimeout(function(){t.focus()},0)}})}function C(){l.on("click",function(e){var t=e.target;/^(IMG|HR)$/.test(t.nodeName)&&(e.preventDefault(),J.getSel().setBaseAndExtent(t,0,t,1),l.nodeChanged()),"A"==t.nodeName&&X.hasClass(t,"mce-item-anchor")&&(e.preventDefault(),J.select(t))})}function w(){function e(){var e=X.getAttribs(J.getStart().cloneNode(!1));return function(){var t=J.getStart();t!==l.getBody()&&(X.setAttrib(t,"style",null),j(e,function(e){t.setAttributeNode(e.cloneNode(!0))}))}}function t(){return!J.isCollapsed()&&X.getParent(J.getStart(),X.isBlock)!=X.getParent(J.getEnd(),X.isBlock)}l.on("keypress",function(n){var r;return d(n)||8!=n.keyCode&&46!=n.keyCode||!t()?void 0:(r=e(),l.getDoc().execCommand("delete",!1,null),r(),n.preventDefault(),!1)}),X.bind(l.getDoc(),"cut",function(n){var r;!d(n)&&t()&&(r=e(),setTimeout(function(){r()},0))})}function _(){document.body.setAttribute("role","application")}function E(){l.on("keydown",function(e){if(!d(e)&&e.keyCode===Y&&J.isCollapsed()&&0===J.getRng(!0).startOffset){var t=J.getNode().previousSibling;if(t&&t.nodeName&&"table"===t.nodeName.toLowerCase())return e.preventDefault(),!1}})}function N(){u()>7||(c("RespectVisibilityInDesign",!0),l.contentStyles.push(".mceHideBrInPre pre br {display: none}"),X.addClass(l.getBody(),"mceHideBrInPre"),Z.addNodeFilter("pre",function(e){for(var t=e.length,n,r,o,a;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)o=n[r],a=o.prev,a&&3===a.type&&"\n"!=a.value.charAt(a.value-1)?a.value+="\n":o.parent.insert(new i("#text",3),o,!0).value="\n"}),ee.addNodeFilter("pre",function(e){for(var t=e.length,n,r,i,o;t--;)for(n=e[t].getAll("br"),r=n.length;r--;)i=n[r],o=i.prev,o&&3==o.type&&(o.value=o.value.replace(/\r?\n$/,""))}))}function S(){X.bind(l.getBody(),"mouseup",function(){var e,t=J.getNode();"IMG"==t.nodeName&&((e=X.getStyle(t,"width"))&&(X.setAttrib(t,"width",e.replace(/[^0-9%]+/g,"")),X.setStyle(t,"width","")),(e=X.getStyle(t,"height"))&&(X.setAttrib(t,"height",e.replace(/[^0-9%]+/g,"")),X.setStyle(t,"height","")))})}function k(){l.on("keydown",function(t){var n,r,i,o,a;if(!d(t)&&t.keyCode==e.BACKSPACE&&(n=J.getRng(),r=n.startContainer,i=n.startOffset,o=X.getRoot(),a=r,n.collapsed&&0===i)){for(;a&&a.parentNode&&a.parentNode.firstChild==a&&a.parentNode!=o;)a=a.parentNode;"BLOCKQUOTE"===a.tagName&&(l.formatter.toggle("blockquote",null,a),n=X.createRng(),n.setStart(r,0),n.setEnd(r,0),J.setRng(n))}})}function T(){function e(){l._refreshContentEditable(),c("StyleWithCSS",!1),c("enableInlineTableEditing",!1),Q.object_resizing||c("enableObjectResizing",!1)}Q.readonly||l.on("BeforeExecCommand MouseDown",e)}function R(){function e(){j(X.select("a"),function(e){var t=e.parentNode,n=X.getRoot();if(t.lastChild===e){for(;t&&!X.isBlock(t);){if(t.parentNode.lastChild!==t||t===n)return;t=t.parentNode}X.add(t,"br",{"data-mce-bogus":1})}})}l.on("SetContent ExecCommand",function(t){("setcontent"==t.type||"mceInsertLink"===t.command)&&e()})}function A(){Q.forced_root_block&&l.on("init",function(){c("DefaultParagraphSeparator",Q.forced_root_block)})}function B(){l.on("Undo Redo SetContent",function(e){e.initial||l.execCommand("mceRepaint")})}function D(){l.on("keydown",function(e){var t;d(e)||e.keyCode!=Y||(t=l.getDoc().selection.createRange(),t&&t.item&&(e.preventDefault(),l.undoManager.beforeChange(),X.remove(t.item(0)),l.undoManager.add()))})}function L(){var e;u()>=10&&(e="",j("p div h1 h2 h3 h4 h5 h6".split(" "),function(t,n){e+=(n>0?",":"")+t+":empty"}),l.contentStyles.push(e+"{padding-right: 1px !important}"))}function M(){u()<9&&(Z.addNodeFilter("noscript",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.firstChild,r&&n.attr("data-mce-innertext",r.value)}),ee.addNodeFilter("noscript",function(e){for(var t=e.length,n,r,a;t--;)n=e[t],r=e[t].firstChild,r?r.value=o.decode(r.value):(a=n.attributes.map["data-mce-innertext"],a&&(n.attr("data-mce-innertext",null),r=new i("#text",3),r.value=a,r.raw=!0,n.append(r)))}))}function H(){function e(e,t){var n=i.createTextRange();try{n.moveToPoint(e,t)}catch(r){n=null}return n}function t(t){var r;t.button?(r=e(t.x,t.y),r&&(r.compareEndPoints("StartToStart",a)>0?r.setEndPoint("StartToStart",a):r.setEndPoint("EndToEnd",a),r.select())):n()}function n(){var e=r.selection.createRange();a&&!e.item&&0===e.compareEndPoints("StartToEnd",e)&&a.select(),X.unbind(r,"mouseup",n),X.unbind(r,"mousemove",t),a=o=0}var r=X.doc,i=r.body,o,a,s;r.documentElement.unselectable=!0,X.bind(r,"mousedown contextmenu",function(i){if("HTML"===i.target.nodeName){if(o&&n(),s=r.documentElement,s.scrollHeight>s.clientHeight)return;o=1,a=e(i.x,i.y),a&&(X.bind(r,"mouseup",n),X.bind(r,"mousemove",t),X.getRoot().focus(),a.select())}})}function P(){l.on("keyup focusin mouseup",function(t){65==t.keyCode&&e.metaKeyPressed(t)||J.normalize()},!0)}function O(){l.contentStyles.push("img:-moz-broken {-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}")}function I(){l.inline||l.on("keydown",function(){document.activeElement==document.body&&l.getWin().focus()})}function F(){l.inline||(l.contentStyles.push("body {min-height: 150px}"),l.on("click",function(e){var t;if("HTML"==e.target.nodeName){if(a.ie>11)return void l.getBody().focus();t=l.selection.getRng(),l.getBody().focus(),l.selection.setRng(t),l.selection.normalize(),l.nodeChanged()}}))}function z(){a.mac&&l.on("keydown",function(t){!e.metaKeyPressed(t)||t.shiftKey||37!=t.keyCode&&39!=t.keyCode||(t.preventDefault(),l.selection.getSel().modify("move",37==t.keyCode?"backward":"forward","lineboundary"))})}function W(){c("AutoUrlDetect",!1)}function V(){l.on("click",function(e){var t=e.target;do if("A"===t.tagName)return void e.preventDefault();while(t=t.parentNode)}),l.contentStyles.push(".mce-content-body {-webkit-touch-callout: none}")}function U(){l.on("init",function(){l.dom.bind(l.getBody(),"submit",function(e){e.preventDefault()})})}function $(){Z.addNodeFilter("br",function(e){for(var t=e.length;t--;)"Apple-interchange-newline"==e[t].attr("class")&&e[t].remove()})}function q(){l.on("dragstart",function(e){f(e)}),l.on("drop",function(e){if(!d(e)){var n=h(e);if(n&&n.id!=l.id){e.preventDefault();var r=t.getCaretRangeFromPoint(e.x,e.y,l.getDoc());J.setRng(r),p(n.html)}}})}var j=s.each,K=l.$,Y=e.BACKSPACE,G=e.DELETE,X=l.dom,J=l.selection,Q=l.settings,Z=l.parser,ee=l.serializer,te=a.gecko,ne=a.ie,re=a.webkit,ie="data:text/mce-internal,",oe=ne?"Text":"URL";k(),g(),P(),re&&(m(),y(),C(),A(),U(),E(),$(),a.iOS?(I(),F(),V()):v()),ne&&a.ie<11&&(b(),_(),N(),S(),D(),L(),M(),H()),a.ie>=11&&(F(),E()),a.ie&&(v(),W(),q()),te&&(b(),x(),w(),T(),R(),B(),O(),z(),E())}}),r(ge,[K,b,f],function(e,t,n){function r(e,t){return"selectionchange"==t?e.getDoc():!e.inline&&/^mouse|click|contextmenu|drop|dragover|dragend/.test(t)?e.getDoc().documentElement:e.settings.event_root?(e.eventRoot||(e.eventRoot=o.select(e.settings.event_root)[0]),e.eventRoot):e.getBody()}function i(e,t){var n=r(e,t),i;if(e.delegates||(e.delegates={}),!e.delegates[t])if(e.settings.event_root){if(a||(a={},e.editorManager.on("removeEditor",function(){var t;if(!e.editorManager.activeEditor&&a){for(t in a)e.dom.unbind(r(e,t));a=null}})),a[t])return;i=function(n){for(var r=n.target,i=e.editorManager.editors,a=i.length;a--;){var s=i[a].getBody();(s===r||o.isChildOf(r,s))&&(i[a].hidden||i[a].fire(t,n))}},a[t]=i,o.bind(n,t,i)}else i=function(n){e.hidden||e.fire(t,n)},o.bind(n,t,i),e.delegates[t]=i}var o=t.DOM,a,s={bindPendingEventDelegates:function(){var e=this;n.each(e._pendingNativeEvents,function(t){i(e,t)})},toggleNativeEvent:function(e,t){var n=this;n.settings.readonly||"focus"!=e&&"blur"!=e&&(t?n.initialized?i(n,e):n._pendingNativeEvents?n._pendingNativeEvents.push(e):n._pendingNativeEvents=[e]:n.initialized&&(n.dom.unbind(r(n,e),e,n.delegates[e]),delete n.delegates[e]))},unbindAllNativeEvents:function(){var e=this,t;if(e.delegates){for(t in e.delegates)e.dom.unbind(r(e,t),t,e.delegates[t]);delete e.delegates}e.inline||(e.getBody().onload=null,e.dom.unbind(e.getWin()),e.dom.unbind(e.getDoc())),e.dom.unbind(e.getBody()),e.dom.unbind(e.getContainer())}};return s=n.extend({},e,s)}),r(ve,[f,u],function(e,t){var n=e.each,r=e.explode,i={f9:120,f10:121,f11:122},o=e.makeMap("alt,ctrl,shift,meta,access");return function(a){function s(e,s,l,c){var u,d,f;f={func:l,scope:c||a,desc:a.translate(s)},n(r(e,"+"),function(e){e in o?f[e]=!0:/^[0-9]{2,}$/.test(e)?f.keyCode=parseInt(e,10):(f.charCode=e.charCodeAt(0),f.keyCode=i[e]||e.toUpperCase().charCodeAt(0))}),u=[f.keyCode];for(d in o)f[d]?u.push(d):f[d]=!1;return f.id=u.join(","),f.access&&(f.alt=!0,t.mac?f.ctrl=!0:f.shift=!0),f.meta&&(t.mac?f.meta=!0:(f.ctrl=!0,f.meta=!1)),f}var l=this,c={};a.on("keyup keypress keydown",function(e){(e.altKey||e.ctrlKey||e.metaKey)&&!e.isDefaultPrevented()&&n(c,function(t){return t.ctrl==e.ctrlKey&&t.meta==e.metaKey&&t.alt==e.altKey&&t.shift==e.shiftKey&&(e.keyCode==t.keyCode||e.charCode&&e.charCode==t.charCode)?(e.preventDefault(),"keydown"==e.type&&t.func.call(t.scope),!0):void 0})}),l.add=function(t,i,o,l){var u;return u=o,"string"==typeof o?o=function(){a.execCommand(u,!1,null)}:e.isArray(u)&&(o=function(){a.execCommand(u[0],u[1],u[2])}),n(r(t.toLowerCase()),function(e){var t=s(e,i,o,l);c[t.id]=t}),!0},l.remove=function(e){var t=s(e);return c[t.id]?(delete c[t.id],!0):!1}}}),r(ye,[],function(){function e(e,t){return function(){e.apply(t,arguments)}}function t(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],s(t,e(r,this),e(i,this))}function n(e){var t=this;return null===this._state?void this._deferreds.push(e):void l(function(){var n=t._state?e.onFulfilled:e.onRejected;if(null===n)return void(t._state?e.resolve:e.reject)(t._value);var r;try{r=n(t._value)}catch(i){return void e.reject(i)}e.resolve(r)})}function r(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var n=t.then;if("function"==typeof n)return void s(e(n,t),e(r,this),e(i,this))}this._state=!0,this._value=t,o.call(this)}catch(a){i.call(this,a)}}function i(e){this._state=!1,this._value=e,o.call(this)}function o(){for(var e=0,t=this._deferreds.length;t>e;e++)n.call(this,this._deferreds[e]);this._deferreds=null}function a(e,t,n,r){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.resolve=n,this.reject=r}function s(e,t,n){var r=!1;try{e(function(e){r||(r=!0,t(e))},function(e){r||(r=!0,n(e))})}catch(i){if(r)return;r=!0,n(i)}}if(window.Promise)return window.Promise;var l=t.immediateFn||"function"==typeof setImmediate&&setImmediate||function(e){setTimeout(e,1)},c=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};return t.prototype["catch"]=function(e){return this.then(null,e)},t.prototype.then=function(e,r){var i=this;return new t(function(t,o){n.call(i,new a(e,r,t,o))})},t.all=function(){var e=Array.prototype.slice.call(1===arguments.length&&c(arguments[0])?arguments[0]:arguments);return new t(function(t,n){function r(o,a){try{if(a&&("object"==typeof a||"function"==typeof a)){var s=a.then;if("function"==typeof s)return void s.call(a,function(e){r(o,e)},n)}e[o]=a,0===--i&&t(e)}catch(l){n(l)}}if(0===e.length)return t([]);for(var i=e.length,o=0;o<e.length;o++)r(o,e[o])})},t.resolve=function(e){return e&&"object"==typeof e&&e.constructor===t?e:new t(function(t){t(e)})},t.reject=function(e){return new t(function(t,n){n(e)})},t.race=function(e){return new t(function(t,n){for(var r=0,i=e.length;i>r;r++)e[r].then(t,n)})},t}),r(be,[],function(){function e(e){return function(){return e}}return{constant:e}}),r(xe,[ye,f,be],function(e,t,n){return function(r){function i(e){var t,n;return n={"image/jpeg":"jpg","image/jpg":"jpg","image/gif":"gif","image/png":"png"},t=n[e.blob().type.toLowerCase()]||"dat",e.id()+"."+t}function o(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t}function a(e){return{id:e.id,blob:e.blob,base64:e.base64,filename:n.constant(i(e))}}function s(e,t,n){var a,s;a=new XMLHttpRequest,a.open("POST",r.url),a.withCredentials=r.credentials,a.onload=function(){var e;return 200!=a.status?void n("HTTP Error: "+a.status):(e=JSON.parse(a.responseText),e&&"string"==typeof e.location?void t(o(r.basePath,e.location)):void n("Invalid JSON: "+a.responseText))},s=new FormData,s.append("file",e.blob(),i(e)),a.send(s)}function l(n){function i(t){return new e(function(e){var n=r.handler;n(a(t),function(n){e({url:n,blobInfo:t,status:!0})},function(n){e({url:"",blobInfo:t,status:!1,error:n})})})}var o;return r.url||r.handler!==s?(o=t.map(n,function(e){var t,n=e.id();return c[n]?c[n]:(t=i(e).then(function(e){return delete c[n],e})["catch"](function(e){return delete c[n],e}),c[n]=t,t)}),e.all(o)):new e(function(e){e([])})}var c={};return r=t.extend({credentials:!1,handler:s},r),{upload:l}}}),r(Ce,[ye],function(e){function t(t){return new e(function(e){var n=new XMLHttpRequest;n.open("GET",t,!0),n.responseType="blob",n.onload=function(){200==this.status&&e(this.response)},n.send()})}function n(e){var t,n;return e=decodeURIComponent(e).split(","),n=/data:([^;]+)/.exec(e[0]),n&&(t=n[1]),{type:t,data:e[1]}}function r(t){return new e(function(e){var r,i,o;t=n(t);try{r=atob(t.data)}catch(a){return void e(new Blob([]))}for(i=new Uint8Array(r.length),o=0;o<i.length;o++)i[o]=r.charCodeAt(o);e(new Blob([i],{type:t.type}))})}function i(e){return 0===e.indexOf("blob:")?t(e):0===e.indexOf("data:")?r(e):null}function o(t){return new e(function(e){var n=new FileReader;n.onloadend=function(){e(n.result)},n.readAsDataURL(t)})}return{uriToBlob:i,blobToDataUri:o,parseDataUri:n}}),r(we,[ye,d,Ce,u],function(e,t,n,r){var i=0;return function(o){function a(a){function l(e,t){var r,a;return 0===e.src.indexOf("blob:")?(a=o.getByUri(e.src),void(a&&t({image:e,blobInfo:a}))):(r=n.parseDataUri(e.src).data,a=o.findFirst(function(e){return e.base64()===r}),void(a?t({image:e,blobInfo:a}):n.uriToBlob(e.src).then(function(n){var a="blobid"+i++,s=o.create(a,n,r);o.add(s),t({image:e,blobInfo:s})})))}var c,u;return c=t.filter(a.getElementsByTagName("img"),function(e){var t=e.src;return r.fileApi?e.hasAttribute("data-mce-bogus")?!1:e.hasAttribute("data-mce-placeholder")?!1:t&&t!=r.transparentSrc?0===t.indexOf("data:")||0===t.indexOf("blob:"):!1:!1}),u=t.map(c,function(t){var n;return s[t.src]?new e(function(e){s[t.src].then(function(n){e({image:t,blobInfo:n.blobInfo})})}):(n=new e(function(e){l(t,e)}).then(function(e){return delete s[e.image.src],e})["catch"](function(e){return delete s[t.src],e}),s[t.src]=n,n)}),e.all(u)}var s={};return{findAll:a}}}),r(_e,[d,be],function(e,t){return function(){function n(e,t,n){return{id:c(e),blob:c(t),base64:c(n),blobUri:c(URL.createObjectURL(t))}}function r(e){i(e.id())||l.push(e)}function i(e){return o(function(t){return t.id()===e})}function o(t){return e.filter(l,t)[0]}function a(e){return o(function(t){return t.blobUri()==e})}function s(){e.each(l,function(e){URL.revokeObjectURL(e.blobUri())}),l=[]}var l=[],c=t.constant;return{create:n,add:r,get:i,getByUri:a,findFirst:o,destroy:s}}}),r(Ee,[d,xe,we,_e],function(e,t,n,r){return function(i){function o(e){return function(t){return i.selection?e(t):[]}}function a(e,t,n){var r=0;do r=e.indexOf(t,r),-1!==r&&(e=e.substring(0,r)+n+e.substr(r+t.length),r+=n.length-t.length+1);while(-1!==r);return e}function s(e,t,n){return e=a(e,'src="'+t+'"','src="'+n+'"'),e=a(e,'data-mce-src="'+t+'"','data-mce-src="'+n+'"')}function l(t,n){e.each(i.undoManager.data,function(e){e.content=s(e.content,t,n)})}function c(n){return m||(m=new t({url:i.settings.images_upload_url,basePath:i.settings.images_upload_base_path,credentials:i.settings.images_upload_credentials,handler:i.settings.images_upload_handler})),d().then(o(function(t){var r;return r=e.map(t,function(e){return e.blobInfo}),m.upload(r).then(o(function(r){return r=e.map(r,function(e,n){var r=t[n].image;return l(r.src,e.url),i.$(r).attr({src:e.url,"data-mce-src":i.convertURL(e.url,"src")}),{element:r,status:e.status}}),n&&n(r),r}))}))}function u(e){return i.settings.automatic_uploads!==!1?c(e):void 0}function d(){return g||(g=new n(p)),g.findAll(i.getBody()).then(o(function(t){return e.each(t,function(e){l(e.image.src,e.blobInfo.blobUri()),e.image.src=e.blobInfo.blobUri()}),t}))}function f(){p.destroy(),g=m=null}function h(t){return t.replace(/src="(blob:[^"]+)"/g,function(t,n){var r=p.getByUri(n);return r||(r=e.reduce(i.editorManager.editors,function(e,t){return e||t.editorUpload.blobCache.getByUri(n)},null)),r?'src="data:'+r.blob().type+";base64,"+r.base64()+'"':t})}var p=new r,m,g;return i.on("setContent",function(){i.settings.automatic_uploads!==!1?u():d()}),i.on("RawSaveContent",function(e){e.content=h(e.content)}),i.on("getContent",function(e){e.source_view||"raw"==e.format||(e.content=h(e.content))}),{blobCache:p,uploadImages:c,uploadImagesAuto:u,scanForImages:d,destroy:f}}}),r(Ne,[b,h,C,_,E,A,R,H,I,F,z,W,V,U,x,l,he,N,k,me,u,f,ge,ve,Ee],function(e,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,x,C,w,_,E,N){function S(e,t,i){var o=this,a,s;a=o.documentBaseUrl=i.documentBaseURL,s=i.baseURI,o.settings=t=A({id:e,theme:"modern",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:a,add_form_submit_trigger:!0,submit_patch:!0,add_unload_trigger:!0,convert_urls:!0,relative_urls:!0,remove_script_host:!0,object_resizing:!0,doctype:"<!DOCTYPE html>",visual:!0,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",forced_root_block:"p",hidden_input:!0,padd_empty_editor:!0,render_ui:!0,indentation:"30px",inline_styles:!0,convert_fonts_to_spans:!0,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:!0,entity_encoding:"named",url_converter:o.convertURL,url_converter_scope:o,ie7_compat:!0},t),r.language=t.language||"en",r.languageLoad=t.language_load,r.baseURL=i.baseURL,o.id=t.id=e,o.isNotDirty=!0,o.plugins={},o.documentBaseURI=new p(t.document_base_url||a,{base_uri:s}),o.baseURI=s,o.contentCSS=[],o.contentStyles=[],o.shortcuts=new E(o),o.loadedCSS={},o.editorCommands=new h(o),t.target&&(o.targetElm=t.target),o.suffix=i.suffix,o.editorManager=i,o.inline=t.inline,t.cache_suffix&&(C.cacheSuffix=t.cache_suffix.replace(/^[\?\&]+/,"")),t.override_viewport===!1&&(C.overrideViewPort=!1),i.fire("SetupEditor",o),o.execCallback("setup",o),o.$=n.overrideDefaults(function(){return{context:o.inline?o.getBody():o.getDoc(),element:o.getBody()}})}var k=e.DOM,T=r.ThemeManager,R=r.PluginManager,A=w.extend,B=w.each,D=w.explode,L=w.inArray,M=w.trim,H=w.resolve,P=g.Event,O=C.gecko,I=C.ie;return S.prototype={render:function(){function e(){k.unbind(window,"ready",e),n.render()}function t(){var e=m.ScriptLoader;if(r.language&&"en"!=r.language&&!r.language_url&&(r.language_url=n.editorManager.baseURL+"/langs/"+r.language+".js"),r.language_url&&e.add(r.language_url),r.theme&&"function"!=typeof r.theme&&"-"!=r.theme.charAt(0)&&!T.urls[r.theme]){var t=r.theme_url;t=t?n.documentBaseURI.toAbsolute(t):"themes/"+r.theme+"/theme"+o+".js",T.load(r.theme,t)}w.isArray(r.plugins)&&(r.plugins=r.plugins.join(" ")),B(r.external_plugins,function(e,t){R.load(t,e),r.plugins+=" "+t}),B(r.plugins.split(/[ ,]/),function(e){if(e=M(e),e&&!R.urls[e])if("-"==e.charAt(0)){e=e.substr(1,e.length);var t=R.dependencies(e);B(t,function(e){var t={prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"};e=R.createUrl(t,e),R.load(e.resource,e)})}else R.load(e,{prefix:"plugins/",resource:e,suffix:"/plugin"+o+".js"})}),e.loadQueue(function(){n.removed||n.init()})}var n=this,r=n.settings,i=n.id,o=n.suffix;if(!P.domLoaded)return void k.bind(window,"ready",e);if(n.getElement()&&C.contentEditable){r.inline?n.inline=!0:(n.orgVisibility=n.getElement().style.visibility,n.getElement().style.visibility="hidden");var a=n.getElement().form||k.getParent(i,"form");a&&(n.formElement=a,r.hidden_input&&!/TEXTAREA|INPUT/i.test(n.getElement().nodeName)&&(k.insertAfter(k.create("input",{type:"hidden",name:i}),i),n.hasHiddenInput=!0),n.formEventDelegate=function(e){n.fire(e.type,e)},k.bind(a,"submit reset",n.formEventDelegate),n.on("reset",function(){n.setContent(n.startContent,{format:"raw"})}),!r.submit_patch||a.submit.nodeType||a.submit.length||a._mceOldSubmit||(a._mceOldSubmit=a.submit,a.submit=function(){return n.editorManager.triggerSave(),n.isNotDirty=!0,a._mceOldSubmit(a)})),n.windowManager=new v(n),"xml"==r.encoding&&n.on("GetContent",function(e){e.save&&(e.content=k.encode(e.content))}),r.add_form_submit_trigger&&n.on("submit",function(){n.initialized&&n.save()}),r.add_unload_trigger&&(n._beforeUnload=function(){!n.initialized||n.destroyed||n.isHidden()||n.save({format:"raw",no_events:!0,set_dirty:!1})},n.editorManager.on("BeforeUnload",n._beforeUnload)),t()}},init:function(){function e(n){var r=R.get(n),i,o;i=R.urls[n]||t.documentBaseUrl.replace(/\/$/,""),n=M(n),r&&-1===L(m,n)&&(B(R.dependencies(n),function(t){e(t)}),o=new r(t,i,t.$),t.plugins[n]=o,o.init&&(o.init(t,i),m.push(n)))}var t=this,n=t.settings,r=t.getElement(),i,o,a,s,l,c,u,d,f,h,p,m=[];if(this.editorManager.i18n.setCode(n.language),t.rtl=n.rtl_ui||this.editorManager.i18n.rtl,t.editorManager.add(t),n.aria_label=n.aria_label||k.getAttrib(r,"aria-label",t.getLang("aria.rich_text_area")),n.theme&&("function"!=typeof n.theme?(n.theme=n.theme.replace(/-/,""),c=T.get(n.theme),t.theme=new c(t,T.urls[n.theme]),t.theme.init&&t.theme.init(t,T.urls[n.theme]||t.documentBaseUrl.replace(/\/$/,""),t.$)):t.theme=n.theme),B(n.plugins.replace(/\-/g,"").split(/[ ,]/),e),n.render_ui&&t.theme&&(t.orgDisplay=r.style.display,"function"!=typeof n.theme?(i=n.width||r.style.width||r.offsetWidth,o=n.height||r.style.height||r.offsetHeight,a=n.min_height||100,h=/^[0-9\.]+(|px)$/i,h.test(""+i)&&(i=Math.max(parseInt(i,10),100)),h.test(""+o)&&(o=Math.max(parseInt(o,10),a)),l=t.theme.renderUI({targetNode:r,width:i,height:o,deltaWidth:n.delta_width,deltaHeight:n.delta_height}),n.content_editable||(o=(l.iframeHeight||o)+("number"==typeof o?l.deltaHeight||0:""),a>o&&(o=a))):(l=n.theme(t,r),l.editorContainer.nodeType&&(l.editorContainer=l.editorContainer.id=l.editorContainer.id||t.id+"_parent"),l.iframeContainer.nodeType&&(l.iframeContainer=l.iframeContainer.id=l.iframeContainer.id||t.id+"_iframecontainer"),o=l.iframeHeight||r.offsetHeight),t.editorContainer=l.editorContainer),n.content_css&&B(D(n.content_css),function(e){t.contentCSS.push(t.documentBaseURI.toAbsolute(e))}),n.content_style&&t.contentStyles.push(n.content_style),n.content_editable)return r=s=l=null,t.initContentBody();for(t.iframeHTML=n.doctype+"<html><head>",n.document_base_url!=t.documentBaseUrl&&(t.iframeHTML+='<base href="'+t.documentBaseURI.getURI()+'" />'),!C.caretAfter&&n.ie7_compat&&(t.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'),t.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />',p=0;p<t.contentCSS.length;p++){var g=t.contentCSS[p];t.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+w._addCacheSuffix(g)+'" />',t.loadedCSS[g]=!0}d=n.body_id||"tinymce",-1!=d.indexOf("=")&&(d=t.getParam("body_id","","hash"),d=d[t.id]||d),f=n.body_class||"",-1!=f.indexOf("=")&&(f=t.getParam("body_class","","hash"),f=f[t.id]||""),n.content_security_policy&&(t.iframeHTML+='<meta http-equiv="Content-Security-Policy" content="'+n.content_security_policy+'" />'),t.iframeHTML+='</head><body id="'+d+'" class="mce-content-body '+f+'" data-id="'+t.id+'"><br></body></html>';var v='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinymce.get("'+t.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody(true);})()';document.domain!=location.hostname&&C.ie&&C.ie<12&&(u=v);var y=k.create("iframe",{id:t.id+"_ifr",frameBorder:"0",allowTransparency:"true",title:t.editorManager.translate("Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help"),style:{width:"100%",height:o,display:"block"}});if(y.onload=function(){y.onload=null,t.fire("load")},k.setAttrib(y,"src",u||'javascript:""'),t.contentAreaContainer=l.iframeContainer,t.iframeElement=y,s=k.add(l.iframeContainer,y),I)try{t.getDoc()}catch(b){s.src=u=v}l.editorContainer&&(k.get(l.editorContainer).style.display=t.orgDisplay,t.hidden=k.isHidden(l.editorContainer)),t.getElement().style.display="none",k.setAttrib(t.id,"aria-hidden",!0),u||t.initContentBody(),r=s=l=null},initContentBody:function(t){var n=this,r=n.settings,s=n.getElement(),h=n.getDoc(),p,m;r.inline||(n.getElement().style.visibility=n.orgVisibility),t||r.content_editable||(h.open(),h.write(n.iframeHTML),h.close()),r.content_editable&&(n.on("remove",function(){var e=this.getBody();k.removeClass(e,"mce-content-body"),k.removeClass(e,"mce-edit-focus"),k.setAttrib(e,"contentEditable",null)}),k.addClass(s,"mce-content-body"),n.contentDocument=h=r.content_document||document,n.contentWindow=r.content_window||window,n.bodyElement=s,r.content_document=r.content_window=null,r.root_name=s.nodeName.toLowerCase()),p=n.getBody(),p.disabled=!0,r.readonly||(n.inline&&"static"==k.getStyle(p,"position",!0)&&(p.style.position="relative"),p.contentEditable=n.getParam("content_editable_state",!0)),p.disabled=!1,n.editorUpload=new N(n),n.schema=new y(r),n.dom=new e(h,{keep_values:!0,url_converter:n.convertURL,url_converter_scope:n,hex_colors:r.force_hex_style_colors,class_filter:r.class_filter,update_styles:!0,root_element:n.inline?n.getBody():null,collect:r.content_editable,schema:n.schema,onSetAttrib:function(e){n.fire("SetAttrib",e)}}),n.parser=new b(r,n.schema),n.parser.addAttributeFilter("src,href,style,tabindex",function(e,t){for(var r=e.length,i,o=n.dom,a,s;r--;)if(i=e[r],a=i.attr(t),s="data-mce-"+t,!i.attributes.map[s]){if(0===a.indexOf("data:")||0===a.indexOf("blob:"))continue;"style"===t?(a=o.serializeStyle(o.parseStyle(a),i.name),a.length||(a=null),i.attr(s,a),i.attr(t,a)):"tabindex"===t?(i.attr(s,a),i.attr(t,null)):i.attr(s,n.convertURL(a,t,i.name))}}),n.parser.addNodeFilter("script",function(e){for(var t=e.length,n,r;t--;)n=e[t],r=n.attr("type")||"no/type",0!==r.indexOf("mce-")&&n.attr("type","mce-"+r)}),n.parser.addNodeFilter("#cdata",function(e){for(var t=e.length,n;t--;)n=e[t],n.type=8,n.name="#comment",n.value="[CDATA["+n.value+"]]"}),n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(e){for(var t=e.length,r,i=n.schema.getNonEmptyElements();t--;)r=e[t],r.isEmpty(i)&&(r.append(new o("br",1)).shortEnded=!0)}),n.serializer=new a(r,n),n.selection=new l(n.dom,n.getWin(),n.serializer,n),n.formatter=new c(n),n.undoManager=new u(n),n.forceBlocks=new f(n),n.enterKey=new d(n),n._nodeChangeDispatcher=new i(n),n.fire("PreInit"),r.browser_spellcheck||r.gecko_spellcheck||(h.body.spellcheck=!1,k.setAttrib(p,"spellcheck","false")),n.fire("PostRender"),n.quirks=new x(n),r.directionality&&(p.dir=r.directionality),r.nowrap&&(p.style.whiteSpace="nowrap"),r.protect&&n.on("BeforeSetContent",function(e){B(r.protect,function(t){e.content=e.content.replace(t,function(e){return"<!--mce:protected "+escape(e)+"-->"})})}),n.on("SetContent",function(){
+n.addVisual(n.getBody())}),r.padd_empty_editor&&n.on("PostProcess",function(e){e.content=e.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")}),n.load({initial:!0,format:"html"}),n.startContent=n.getContent({format:"raw"}),n.initialized=!0,n.bindPendingEventDelegates(),n.fire("init"),n.focus(!0),n.nodeChanged({initial:!0}),n.execCallback("init_instance_callback",n),n.contentStyles.length>0&&(m="",B(n.contentStyles,function(e){m+=e+"\r\n"}),n.dom.addStyle(m)),B(n.contentCSS,function(e){n.loadedCSS[e]||(n.dom.loadCSS(e),n.loadedCSS[e]=!0)}),r.auto_focus&&setTimeout(function(){var e;e=r.auto_focus===!0?n:n.editorManager.get(r.auto_focus),e.destroyed||e.focus()},100),s=h=p=null},focus:function(e){var t=this,n=t.selection,r=t.settings.content_editable,i,o,a=t.getDoc(),s;if(!e){if(i=n.getRng(),i.item&&(o=i.item(0)),t._refreshContentEditable(),r||(C.opera||t.getBody().focus(),t.getWin().focus()),O||r){if(s=t.getBody(),s.setActive)try{s.setActive()}catch(l){s.focus()}else s.focus();r&&n.normalize()}o&&o.ownerDocument==a&&(i=a.body.createControlRange(),i.addElement(o),i.select())}t.editorManager.setActive(t)},execCallback:function(e){var t=this,n=t.settings[e],r;if(n)return t.callbackLookup&&(r=t.callbackLookup[e])&&(n=r.func,r=r.scope),"string"==typeof n&&(r=n.replace(/\.\w+$/,""),r=r?H(r):0,n=H(n),t.callbackLookup=t.callbackLookup||{},t.callbackLookup[e]={func:n,scope:r}),n.apply(r||t,Array.prototype.slice.call(arguments,1))},translate:function(e){var t=this.settings.language||"en",n=this.editorManager.i18n;return e?n.data[t+"."+e]||e.replace(/\{\#([^\}]+)\}/g,function(e,r){return n.data[t+"."+r]||"{#"+r+"}"}):""},getLang:function(e,n){return this.editorManager.i18n.data[(this.settings.language||"en")+"."+e]||(n!==t?n:"{#"+e+"}")},getParam:function(e,t,n){var r=e in this.settings?this.settings[e]:t,i;return"hash"===n?(i={},"string"==typeof r?B(r.indexOf("=")>0?r.split(/[;,](?![^=;,]*(?:[;,]|$))/):r.split(","),function(e){e=e.split("="),e.length>1?i[M(e[0])]=M(e[1]):i[M(e[0])]=M(e)}):i=r,i):r},nodeChanged:function(e){this._nodeChangeDispatcher.nodeChanged(e)},addButton:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),t.text||t.icon||(t.icon=e),n.buttons=n.buttons||{},t.tooltip=t.tooltip||t.title,n.buttons[e]=t},addMenuItem:function(e,t){var n=this;t.cmd&&(t.onclick=function(){n.execCommand(t.cmd)}),n.menuItems=n.menuItems||{},n.menuItems[e]=t},addContextToolbar:function(e,t){var n=this,r;n.contextToolbars=n.contextToolbars||[],"string"==typeof e&&(r=e,e=function(e){return n.dom.is(e,r)}),n.contextToolbars.push({predicate:e,items:t})},addCommand:function(e,t,n){this.editorCommands.addCommand(e,t,n)},addQueryStateHandler:function(e,t,n){this.editorCommands.addQueryStateHandler(e,t,n)},addQueryValueHandler:function(e,t,n){this.editorCommands.addQueryValueHandler(e,t,n)},addShortcut:function(e,t,n,r){this.shortcuts.add(e,t,n,r)},execCommand:function(e,t,n,r){return this.editorCommands.execCommand(e,t,n,r)},queryCommandState:function(e){return this.editorCommands.queryCommandState(e)},queryCommandValue:function(e){return this.editorCommands.queryCommandValue(e)},queryCommandSupported:function(e){return this.editorCommands.queryCommandSupported(e)},show:function(){var e=this;e.hidden&&(e.hidden=!1,e.inline?e.getBody().contentEditable=!0:(k.show(e.getContainer()),k.hide(e.id)),e.load(),e.fire("show"))},hide:function(){var e=this,t=e.getDoc();e.hidden||(I&&t&&!e.inline&&t.execCommand("SelectAll"),e.save(),e.inline?(e.getBody().contentEditable=!1,e==e.editorManager.focusedEditor&&(e.editorManager.focusedEditor=null)):(k.hide(e.getContainer()),k.setStyle(e.id,"display",e.orgDisplay)),e.hidden=!0,e.fire("hide"))},isHidden:function(){return!!this.hidden},setProgressState:function(e,t){this.fire("ProgressState",{state:e,time:t})},load:function(e){var n=this,r=n.getElement(),i;return r?(e=e||{},e.load=!0,i=n.setContent(r.value!==t?r.value:r.innerHTML,e),e.element=r,e.no_events||n.fire("LoadContent",e),e.element=r=null,i):void 0},save:function(e){var t=this,n=t.getElement(),r,i;if(n&&t.initialized)return e=e||{},e.save=!0,e.element=n,r=e.content=t.getContent(e),e.no_events||t.fire("SaveContent",e),"raw"==e.format&&t.fire("RawSaveContent",e),r=e.content,/TEXTAREA|INPUT/i.test(n.nodeName)?n.value=r:(t.inline||(n.innerHTML=r),(i=k.getParent(t.id,"form"))&&B(i.elements,function(e){return e.name==t.id?(e.value=r,!1):void 0})),e.element=n=null,e.set_dirty!==!1&&(t.isNotDirty=!0),r},setContent:function(e,t){var n=this,r=n.getBody(),i,o;return t=t||{},t.format=t.format||"html",t.set=!0,t.content=e,t.no_events||n.fire("BeforeSetContent",t),e=t.content,0===e.length||/^\s+$/.test(e)?(o=I&&11>I?"":'<br data-mce-bogus="1">',"TABLE"==r.nodeName?e="<tr><td>"+o+"</td></tr>":/^(UL|OL)$/.test(r.nodeName)&&(e="<li>"+o+"</li>"),i=n.settings.forced_root_block,i&&n.schema.isValidChild(r.nodeName.toLowerCase(),i.toLowerCase())?(e=o,e=n.dom.createHTML(i,n.settings.forced_root_block_attrs,e)):I||e||(e='<br data-mce-bogus="1">'),n.dom.setHTML(r,e),n.fire("SetContent",t)):("raw"!==t.format&&(e=new s({validate:n.validate},n.schema).serialize(n.parser.parse(e,{isRootContent:!0}))),t.content=M(e),n.dom.setHTML(r,t.content),t.no_events||n.fire("SetContent",t)),t.content},getContent:function(e){var t=this,n,r=t.getBody();return e=e||{},e.format=e.format||"html",e.get=!0,e.getInner=!0,e.no_events||t.fire("BeforeGetContent",e),n="raw"==e.format?r.innerHTML:"text"==e.format?r.innerText||r.textContent:t.serializer.serialize(r,e),"text"!=e.format?e.content=M(n):e.content=n,e.no_events||t.fire("GetContent",e),e.content},insertContent:function(e,t){t&&(e=A({content:e},t)),this.execCommand("mceInsertContent",!1,e)},isDirty:function(){return!this.isNotDirty},getContainer:function(){var e=this;return e.container||(e.container=k.get(e.editorContainer||e.id+"_parent")),e.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return this.targetElm||(this.targetElm=k.get(this.id)),this.targetElm},getWin:function(){var e=this,t;return e.contentWindow||(t=e.iframeElement,t&&(e.contentWindow=t.contentWindow)),e.contentWindow},getDoc:function(){var e=this,t;return e.contentDocument||(t=e.getWin(),t&&(e.contentDocument=t.document)),e.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(e,t,n){var r=this,i=r.settings;return i.urlconverter_callback?r.execCallback("urlconverter_callback",e,n,!0,t):!i.convert_urls||n&&"LINK"==n.nodeName||0===e.indexOf("file:")||0===e.length?e:i.relative_urls?r.documentBaseURI.toRelative(e):e=r.documentBaseURI.toAbsolute(e,i.remove_script_host)},addVisual:function(e){var n=this,r=n.settings,i=n.dom,o;e=e||n.getBody(),n.hasVisual===t&&(n.hasVisual=r.visual),B(i.select("table,a",e),function(e){var t;switch(e.nodeName){case"TABLE":return o=r.visual_table_class||"mce-item-table",t=i.getAttrib(e,"border"),void(t&&"0"!=t||!n.hasVisual?i.removeClass(e,o):i.addClass(e,o));case"A":return void(i.getAttrib(e,"href",!1)||(t=i.getAttrib(e,"name")||e.id,o=r.visual_anchor_class||"mce-item-anchor",t&&n.hasVisual?i.addClass(e,o):i.removeClass(e,o)))}}),n.fire("VisualAid",{element:e,hasVisual:n.hasVisual})},remove:function(){var e=this;e.removed||(e.save(),e.removed=1,e.unbindAllNativeEvents(),e.hasHiddenInput&&k.remove(e.getElement().nextSibling),e.inline||(I&&10>I&&e.getDoc().execCommand("SelectAll",!1,null),k.setStyle(e.id,"display",e.orgDisplay),e.getBody().onload=null),e.fire("remove"),e.editorManager.remove(e),k.remove(e.getContainer()),e.editorUpload.destroy(),e.destroy())},destroy:function(e){var t=this,n;if(!t.destroyed){if(!e&&!t.removed)return void t.remove();e||(t.editorManager.off("beforeunload",t._beforeUnload),t.theme&&t.theme.destroy&&t.theme.destroy(),t.selection.destroy(),t.dom.destroy()),n=t.formElement,n&&(n._mceOldSubmit&&(n.submit=n._mceOldSubmit,n._mceOldSubmit=null),k.unbind(n,"submit reset",t.formEventDelegate)),t.contentAreaContainer=t.formElement=t.container=t.editorContainer=null,t.bodyElement=t.contentDocument=t.contentWindow=null,t.iframeElement=t.targetElm=null,t.selection&&(t.selection=t.selection.win=t.selection.dom=t.selection.dom.doc=null),t.destroyed=1}},uploadImages:function(e){return this.editorUpload.uploadImages(e)},_scanForImages:function(){return this.editorUpload.scanForImages()},_refreshContentEditable:function(){var e=this,t,n;e._isHidden()&&(t=e.getBody(),n=t.parentNode,n.removeChild(t),n.appendChild(t),t.focus())},_isHidden:function(){var e;return O?(e=this.selection.getSel(),!e||!e.rangeCount||0===e.rangeCount):0}},A(S.prototype,_),S}),r(Se,[],function(){var e={},t="en";return{setCode:function(e){e&&(t=e,this.rtl=this.data[e]?"rtl"===this.data[e]._dir:!1)},getCode:function(){return t},rtl:!1,add:function(t,n){var r=e[t];r||(e[t]=r={});for(var i in n)r[i]=n[i];this.setCode(t)},translate:function(n){var r;if(r=e[t],r||(r={}),"undefined"==typeof n)return n;if("string"!=typeof n&&n.raw)return n.raw;if(n.push){var i=n.slice(1);n=(r[n[0]]||n[0]).replace(/\{([0-9]+)\}/g,function(e,t){return i[t]})}return(r[n]||n).replace(/{context:\w+}$/,"")},data:e}}),r(ke,[b,u],function(e,t){function n(e){function s(){try{return document.activeElement}catch(e){return document.body}}function l(e,t){if(t&&t.startContainer){if(!e.isChildOf(t.startContainer,e.getRoot())||!e.isChildOf(t.endContainer,e.getRoot()))return;return{startContainer:t.startContainer,startOffset:t.startOffset,endContainer:t.endContainer,endOffset:t.endOffset}}return t}function c(e,t){var n;return t.startContainer?(n=e.getDoc().createRange(),n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset)):n=t,n}function u(e){return!!a.getParent(e,n.isEditorUIElement)}function d(n){var d=n.editor;d.on("init",function(){(d.inline||t.ie)&&("onbeforedeactivate"in document&&t.ie<9?d.dom.bind(d.getBody(),"beforedeactivate",function(e){if(e.target==d.getBody())try{d.lastRng=d.selection.getRng()}catch(t){}}):d.on("nodechange mouseup keyup",function(e){var t=s();"nodechange"==e.type&&e.selectionChange||(t&&t.id==d.id+"_ifr"&&(t=d.getBody()),d.dom.isChildOf(t,d.getBody())&&(d.lastRng=d.selection.getRng()))}),t.webkit&&!r&&(r=function(){var t=e.activeEditor;if(t&&t.selection){var n=t.selection.getRng();n&&!n.collapsed&&(d.lastRng=n)}},a.bind(document,"selectionchange",r)))}),d.on("setcontent",function(){d.lastRng=null}),d.on("mousedown",function(){d.selection.lastFocusBookmark=null}),d.on("focusin",function(){var t=e.focusedEditor;d.selection.lastFocusBookmark&&(d.selection.setRng(c(d,d.selection.lastFocusBookmark)),d.selection.lastFocusBookmark=null),t!=d&&(t&&t.fire("blur",{focusedEditor:d}),e.setActive(d),e.focusedEditor=d,d.fire("focus",{blurredEditor:t}),d.focus(!0)),d.lastRng=null}),d.on("focusout",function(){window.setTimeout(function(){var t=e.focusedEditor;u(s())||t!=d||(d.fire("blur",{focusedEditor:null}),e.focusedEditor=null,d.selection&&(d.selection.lastFocusBookmark=null))},0)}),i||(i=function(t){var n=e.activeEditor;n&&t.target.ownerDocument==document&&(n.selection&&t.target!=n.getBody()&&(n.selection.lastFocusBookmark=l(n.dom,n.lastRng)),t.target==document.body||u(t.target)||e.focusedEditor!=n||(n.fire("blur",{focusedEditor:null}),e.focusedEditor=null))},a.bind(document,"focusin",i)),d.inline&&!o&&(o=function(t){var n=e.activeEditor;if(n.inline&&!n.dom.isChildOf(t.target,n.getBody())){var r=n.selection.getRng();r.collapsed||(n.lastRng=r)}},a.bind(document,"mouseup",o))}function f(t){e.focusedEditor==t.editor&&(e.focusedEditor=null),e.activeEditor||(a.unbind(document,"selectionchange",r),a.unbind(document,"focusin",i),a.unbind(document,"mouseup",o),r=i=o=null)}e.on("AddEditor",d),e.on("RemoveEditor",f)}var r,i,o,a=e.DOM;return n.isEditorUIElement=function(e){return-1!==e.className.toString().indexOf("mce-")},n}),r(Te,[Ne,h,b,U,u,f,K,Se,ke],function(e,t,n,r,i,o,a,s,l){function c(e){m(b.editors,function(t){t.fire("ResizeWindow",e)})}function u(e,n){n!==x&&(n?t(window).on("resize",c):t(window).off("resize",c),x=n)}function d(e){var t=b.editors,n;delete t[e.id];for(var r=0;r<t.length;r++)if(t[r]==e){t.splice(r,1),n=!0;break}return b.activeEditor==e&&(b.activeEditor=t[0]),b.focusedEditor==e&&(b.focusedEditor=null),n}function f(e){return e&&!(e.getContainer()||e.getBody()).parentNode&&(d(e),e.unbindAllNativeEvents(),e.destroy(!0),e=null),e}var h=n.DOM,p=o.explode,m=o.each,g=o.extend,v=0,y,b,x=!1;return b={$:t,majorVersion:"4",minorVersion:"2.8",releaseDate:"2015-11-13",editors:[],i18n:s,activeEditor:null,setup:function(){var e=this,t,n,i="",o,a;if(n=document.location.href,/^[^:]+:\/\/\/?[^\/]+\//.test(n)&&(n=n.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,""),/[\/\\]$/.test(n)||(n+="/")),o=window.tinymce||window.tinyMCEPreInit)t=o.base||o.baseURL,i=o.suffix;else{for(var s=document.getElementsByTagName("script"),c=0;c<s.length;c++){a=s[c].src;var u=a.substring(a.lastIndexOf("/"));if(/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(a)){-1!=u.indexOf(".min")&&(i=".min"),t=a.substring(0,a.lastIndexOf("/"));break}}!t&&document.currentScript&&(a=document.currentScript.src,-1!=a.indexOf(".min")&&(i=".min"),t=a.substring(0,a.lastIndexOf("/")))}e.baseURL=new r(n).toAbsolute(t),e.documentBaseURL=n,e.baseURI=new r(e.baseURL),e.suffix=i,e.focusManager=new l(e)},init:function(t){function n(e){var t=e.id;return t||(t=e.name,t=t&&!h.get(t)?e.name:h.uniqueId(),e.setAttribute("id",t)),t}function r(t,n,r){if(!f(s.get(t))){var i=new e(t,n,s);i.targetElm=i.targetElm||r,l.push(i),i.render()}}function i(e){var n=t[e];if(n)return n.apply(s,Array.prototype.slice.call(arguments,2))}function o(e,t){return t.constructor===RegExp?t.test(e.className):h.hasClass(e,t)}function a(){var e,s;if(h.unbind(window,"ready",a),i("onpageload"),t.types)return void m(t.types,function(e){m(h.select(e.selector),function(i){r(n(i),g({},t,e),i)})});if(t.selector)return void m(h.select(t.selector),function(e){r(n(e),t,e)});switch(t.target&&r(n(t.target),t),t.mode){case"exact":e=t.elements||"",e.length>0&&m(p(e),function(e){var n;(n=h.get(e))?r(e,t,n):m(document.forms,function(n){m(n.elements,function(n){n.name===e&&(e="mce_editor_"+v++,h.setAttrib(n,"id",e),r(e,t,n))})})});break;case"textareas":case"specific_textareas":m(h.select("textarea"),function(e){t.editor_deselector&&o(e,t.editor_deselector)||(!t.editor_selector||o(e,t.editor_selector))&&r(n(e),t,e)})}t.oninit&&(e=s=0,m(l,function(t){s++,t.initialized?e++:t.on("init",function(){e++,e==s&&i("oninit")}),e==s&&i("oninit")}))}var s=this,l=[];s.settings=t,h.bind(window,"ready",a)},get:function(e){return arguments.length?e in this.editors?this.editors[e]:null:this.editors},add:function(e){var t=this,n=t.editors;return n[e.id]=e,n.push(e),u(n,!0),t.activeEditor=e,t.fire("AddEditor",{editor:e}),y||(y=function(){t.fire("BeforeUnload")},h.bind(window,"beforeunload",y)),e},createEditor:function(t,n){return this.add(new e(t,n,this))},remove:function(e){var t=this,n,r=t.editors,i;{if(e)return"string"==typeof e?(e=e.selector||e,void m(h.select(e),function(e){i=r[e.id],i&&t.remove(i)})):(i=e,r[i.id]?(d(i)&&t.fire("RemoveEditor",{editor:i}),r.length||h.unbind(window,"beforeunload",y),i.remove(),u(r,r.length>0),i):null);for(n=r.length-1;n>=0;n--)t.remove(r[n])}},execCommand:function(t,n,r){var i=this,o=i.get(r);switch(t){case"mceAddEditor":return i.get(r)||new e(r,i.settings,i).render(),!0;case"mceRemoveEditor":return o&&o.remove(),!0;case"mceToggleEditor":return o?(o.isHidden()?o.show():o.hide(),!0):(i.execCommand("mceAddEditor",0,r),!0)}return i.activeEditor?i.activeEditor.execCommand(t,n,r):!1},triggerSave:function(){m(this.editors,function(e){e.save()})},addI18n:function(e,t){s.add(e,t)},translate:function(e){return s.translate(e)},setActive:function(e){var t=this.activeEditor;this.activeEditor!=e&&(t&&t.fire("deactivate",{relatedTarget:e}),e.fire("activate",{relatedTarget:t})),this.activeEditor=e}},g(b,a),b.setup(),window.tinymce=window.tinyMCE=b,b}),r(Re,[Te,f],function(e,t){var n=t.each,r=t.explode;e.on("AddEditor",function(e){var t=e.editor;t.on("preInit",function(){function e(e,t){n(t,function(t,n){t&&s.setStyle(e,n,t)}),s.rename(e,"span")}function i(e){s=t.dom,l.convert_fonts_to_spans&&n(s.select("font,u,strike",e.node),function(e){o[e.nodeName.toLowerCase()](s,e)})}var o,a,s,l=t.settings;l.inline_styles&&(a=r(l.font_size_legacy_values),o={font:function(t,n){e(n,{backgroundColor:n.style.backgroundColor,color:n.color,fontFamily:n.face,fontSize:a[parseInt(n.size,10)-1]})},u:function(n,r){"html4"===t.settings.schema&&e(r,{textDecoration:"underline"})},strike:function(t,n){e(n,{textDecoration:"line-through"})}},t.on("PreProcess SetContent",i))})})}),r(Ae,[K,f],function(e,t){var n={send:function(e){function r(){!e.async||4==i.readyState||o++>1e4?(e.success&&1e4>o&&200==i.status?e.success.call(e.success_scope,""+i.responseText,i,e):e.error&&e.error.call(e.error_scope,o>1e4?"TIMED_OUT":"GENERAL",i,e),i=null):setTimeout(r,10)}var i,o=0;if(e.scope=e.scope||this,e.success_scope=e.success_scope||e.scope,e.error_scope=e.error_scope||e.scope,e.async=e.async===!1?!1:!0,e.data=e.data||"",i=new XMLHttpRequest){if(i.overrideMimeType&&i.overrideMimeType(e.content_type),i.open(e.type||(e.data?"POST":"GET"),e.url,e.async),e.crossDomain&&(i.withCredentials=!0),e.content_type&&i.setRequestHeader("Content-Type",e.content_type),e.requestheaders&&t.each(e.requestheaders,function(e){i.setRequestHeader(e.key,e.value)}),i.setRequestHeader("X-Requested-With","XMLHttpRequest"),i=n.fire("beforeSend",{xhr:i,settings:e}).xhr,i.send(e.data),!e.async)return r();setTimeout(r,10)}}};return t.extend(n,e),n}),r(Be,[],function(){function e(t,n){var r,i,o,a;if(n=n||'"',null===t)return"null";if(o=typeof t,"string"==o)return i="\bb    t\nn\ff\rr\"\"''\\\\",n+t.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(e,t){return'"'===n&&"'"===e?e:(r=i.indexOf(t),r+1?"\\"+i.charAt(r+1):(e=t.charCodeAt().toString(16),"\\u"+"0000".substring(e.length)+e))})+n;if("object"==o){if(t.hasOwnProperty&&"[object Array]"===Object.prototype.toString.call(t)){for(r=0,i="[";r<t.length;r++)i+=(r>0?",":"")+e(t[r],n);return i+"]"}i="{";for(a in t)t.hasOwnProperty(a)&&(i+="function"!=typeof t[a]?(i.length>1?","+n:n)+a+n+":"+e(t[a],n):"");return i+"}"}return""+t}return{serialize:e,parse:function(e){try{return window[String.fromCharCode(101)+"val"]("("+e+")")}catch(t){}}}}),r(De,[Be,Ae,f],function(e,t,n){function r(e){this.settings=i({},e),this.count=0}var i=n.extend;return r.sendRPC=function(e){return(new r).send(e)},r.prototype={send:function(n){var r=n.error,o=n.success;n=i(this.settings,n),n.success=function(t,i){t=e.parse(t),"undefined"==typeof t&&(t={error:"JSON Parse error."}),t.error?r.call(n.error_scope||n.scope,t.error,i):o.call(n.success_scope||n.scope,t.result)},n.error=function(e,t){r&&r.call(n.error_scope||n.scope,e,t)},n.data=e.serialize({id:n.id||"c"+this.count++,method:n.method,params:n.params}),n.content_type="application/json",t.send(n)}},r}),r(Le,[b],function(e){return{callbacks:{},count:0,send:function(n){var r=this,i=e.DOM,o=n.count!==t?n.count:r.count,a="tinymce_jsonp_"+o;r.callbacks[o]=function(e){i.remove(a),delete r.callbacks[o],n.callback(e)},i.add(i.doc.body,"script",{id:a,src:n.url,type:"text/javascript"}),r.count++}}}),r(Me,[],function(){function e(){s=[];for(var e in a)s.push(e);i.length=s.length}function n(){function n(e){var n,r;return r=e!==t?u+e:i.indexOf(",",u),-1===r||r>i.length?null:(n=i.substring(u,r),u=r+1,n)}var r,i,s,u=0;if(a={},c){o.load(l),i=o.getAttribute(l)||"";do{var d=n();if(null===d)break;if(r=n(parseInt(d,32)||0),null!==r){if(d=n(),null===d)break;s=n(parseInt(d,32)||0),r&&(a[r]=s)}}while(null!==r);e()}}function r(){var t,n="";if(c){for(var r in a)t=a[r],n+=(n?",":"")+r.length.toString(32)+","+r+","+t.length.toString(32)+","+t;o.setAttribute(l,n);try{o.save(l)}catch(i){}e()}}var i,o,a,s,l,c;try{if(window.localStorage)return localStorage}catch(u){}return l="tinymce",o=document.documentElement,c=!!o.addBehavior,c&&o.addBehavior("#default#userData"),i={key:function(e){return s[e]},getItem:function(e){return e in a?a[e]:null},setItem:function(e,t){a[e]=""+t,r()},removeItem:function(e){delete a[e],r()},clear:function(){a={},r()}},n(),i}),r(He,[b,l,x,C,f,u],function(e,t,n,r,i,o){var a=window.tinymce;return a.DOM=e.DOM,a.ScriptLoader=n.ScriptLoader,a.PluginManager=r.PluginManager,a.ThemeManager=r.ThemeManager,a.dom=a.dom||{},a.dom.Event=t.Event,i.each(i,function(e,t){a[t]=e}),i.each("isOpera isWebKit isIE isGecko isMac".split(" "),function(e){a[e]=o[e.substr(2).toLowerCase()]}),{}}),r(Pe,[$,f],function(e,t){return e.extend({Defaults:{firstControlClass:"first",lastControlClass:"last"},init:function(e){this.settings=t.extend({},this.Defaults,e)},preRender:function(e){e.bodyClasses.add(this.settings.containerClass)},applyClasses:function(e){var t=this,n=t.settings,r,i,o,a;r=n.firstControlClass,i=n.lastControlClass,e.each(function(e){e.classes.remove(r).remove(i).add(n.controlClass),e.visible()&&(o||(o=e),a=e)}),o&&o.classes.add(r),a&&a.classes.add(i)},renderHtml:function(e){var t=this,n="";return t.applyClasses(e.items()),e.items().each(function(e){n+=e.renderHtml()}),n},recalc:function(){},postRender:function(){},isNative:function(){return!1}})}),r(Oe,[Pe],function(e){return e.extend({Defaults:{containerClass:"abs-layout",controlClass:"abs-layout-item"},recalc:function(e){e.items().filter(":visible").each(function(e){var t=e.settings;e.layoutRect({x:t.x,y:t.y,w:t.w,h:t.h}),e.recalc&&e.recalc()})},renderHtml:function(e){return'<div id="'+e._id+'-absend" class="'+e.classPrefix+'abs-end"></div>'+this._super(e)}})}),r(Ie,[te,le],function(e,t){return e.extend({Mixins:[t],Defaults:{classes:"widget tooltip tooltip-n"},renderHtml:function(){var e=this,t=e.classPrefix;return'<div id="'+e._id+'" class="'+e.classes+'" role="presentation"><div class="'+t+'tooltip-arrow"></div><div class="'+t+'tooltip-inner">'+e.encode(e.state.get("text"))+"</div></div>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.getEl().lastChild.innerHTML=e.encode(t.value)}),e._super()},repaint:function(){var e=this,t,n;t=e.getEl().style,n=e._layoutRect,t.left=n.x+"px",t.top=n.y+"px",t.zIndex=131070}})}),r(Fe,[te,Ie],function(e,t){var n,r=e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.canFocus=!0,e.tooltip&&r.tooltips!==!1&&(t.on("mouseenter",function(n){var r=t.tooltip().moveTo(-65535);if(n.control==t){var i=r.text(e.tooltip).show().testMoveRel(t.getEl(),["bc-tc","bc-tl","bc-tr"]);r.classes.toggle("tooltip-n","bc-tc"==i),r.classes.toggle("tooltip-nw","bc-tl"==i),r.classes.toggle("tooltip-ne","bc-tr"==i),r.moveRel(t.getEl(),i)}else r.hide()}),t.on("mouseleave mousedown click",function(){t.tooltip().hide()})),t.aria("label",e.ariaLabel||e.tooltip)},tooltip:function(){return n||(n=new t({type:"tooltip"}),n.renderTo()),n},postRender:function(){var e=this,t=e.settings;e._super(),e.parent()||!t.width&&!t.height||(e.initLayoutRect(),e.repaint()),t.autofocus&&e.focus()},bindStates:function(){function e(e){n.aria("disabled",e),n.classes.toggle("disabled",e)}function t(e){n.aria("pressed",e),n.classes.toggle("active",e)}var n=this;return n.state.on("change:disabled",function(t){e(t.value)}),n.state.on("change:active",function(e){t(e.value)}),n.state.get("disabled")&&e(!0),n.state.get("active")&&t(!0),n._super()},remove:function(){this._super(),n&&(n.remove(),n=null)}});return r}),r(ze,[Fe],function(e){return e.extend({Defaults:{classes:"widget btn",role:"button"},init:function(e){var t=this,n;t._super(e),e=t.settings,n=t.settings.size,t.on("click mousedown",function(e){e.preventDefault()}),t.on("touchstart",function(e){t.fire("click",e),e.preventDefault()}),e.subtype&&t.classes.add(e.subtype),n&&t.classes.add("btn-"+n),e.icon&&t.icon(e.icon)},icon:function(e){return arguments.length?(this.state.set("icon",e),this):this.state.get("icon")},repaint:function(){var e=this.getEl().firstChild,t;e&&(t=e.style,t.width=t.height="100%"),this._super()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("icon"),i,o=e.state.get("text");return i=e.settings.image,i?(r="none","string"!=typeof i&&(i=window.getSelection?i[0]:i[1]),i=" style=\"background-image: url('"+i+"')\""):i="",o&&e.classes.add("btn-has-text"),r=e.settings.icon?n+"ico "+n+"i-"+r:"",'<div id="'+t+'" class="'+e.classes+'" tabindex="-1" aria-labelledby="'+t+'"><button role="presentation" type="button" tabindex="-1">'+(r?'<i class="'+r+'"'+i+"></i>":"")+(o?e.encode(o):"")+"</button></div>"},bindStates:function(){function e(e){for(var n=t.getEl().firstChild.firstChild;n;n=n.nextSibling)3==n.nodeType&&(n.data=t.translate(e));t.classes.toggle("btn-has-text",!!e)}var t=this;return t.state.on("change:text",function(t){e(t.value)}),t.state.on("change:icon",function(n){var r=n.value,i=t.classPrefix;t.settings.icon=r,r=r?i+"ico "+i+"i-"+t.settings.icon:"";var o=t.getEl().firstChild,a=o.getElementsByTagName("i")[0];r?(a&&a==o.firstChild||(a=document.createElement("i"),o.insertBefore(a,o.firstChild)),a.className=r):a&&o.removeChild(a),e(t.state.get("text"))}),t._super()}})}),r(We,[ie],function(e){return e.extend({Defaults:{defaultType:"button",role:"group"},renderHtml:function(){var e=this,t=e._layout;return e.classes.add("btn-group"),e.preRender(),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'"><div id="'+e._id+'-body">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(Ve,[Fe],function(e){return e.extend({Defaults:{classes:"checkbox",role:"checkbox",checked:!1},init:function(e){var t=this;t._super(e),t.on("click mousedown",function(e){e.preventDefault()}),t.on("click",function(e){e.preventDefault(),t.disabled()||t.checked(!t.checked())}),t.checked(t.settings.checked)},checked:function(e){return arguments.length?(this.state.set("checked",e),this):this.state.get("checked")},value:function(e){return arguments.length?this.checked(e):this.checked()},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'" unselectable="on" aria-labelledby="'+t+'-al" tabindex="-1"><i class="'+n+"ico "+n+'i-checkbox"></i><span id="'+t+'-al" class="'+n+'label">'+e.encode(e.state.get("text"))+"</span></div>"},bindStates:function(){function e(e){t.classes.toggle("checked",e),t.aria("checked",e)}var t=this;return t.state.on("change:text",function(e){t.getEl("al").firstChild.data=t.translate(e.value)}),t.state.on("change:checked change:value",function(n){t.fire("change"),e(n.value)}),t.state.on("change:icon",function(e){var n=e.value,r=t.classPrefix;if("undefined"==typeof n)return t.settings.icon;t.settings.icon=n,n=n?r+"ico "+r+"i-"+t.settings.icon:"";var i=t.getEl().firstChild,o=i.getElementsByTagName("i")[0];n?(o&&o==i.firstChild||(o=document.createElement("i"),i.insertBefore(o,i.firstChild)),o.className=n):o&&i.removeChild(o)}),t.state.get("checked")&&e(!0),t._super()}})}),r(Ue,[Fe,ne,J,h],function(e,t,n,r){return e.extend({init:function(e){var t=this;t._super(e),e=t.settings,t.classes.add("combobox"),t.subinput=!0,t.ariaTarget="inp",e.menu=e.menu||e.values,e.menu&&(e.icon="caret"),t.on("click",function(n){var i=n.target,o=t.getEl();if(r.contains(o,i)||i==o)for(;i&&i!=o;)i.id&&-1!=i.id.indexOf("-open")&&(t.fire("action"),e.menu&&(t.showMenu(),n.aria&&t.menu.items()[0].focus())),i=i.parentNode}),t.on("keydown",function(e){"INPUT"==e.target.nodeName&&13==e.keyCode&&t.parents().reverse().each(function(n){var r=t.state.get("value"),i=t.getEl("inp").value;return e.preventDefault(),t.state.set("value",i),r!=i&&t.fire("change"),n.hasEventListeners("submit")&&n.toJSON?(n.fire("submit",{data:n.toJSON()}),!1):void 0})}),t.on("keyup",function(e){"INPUT"==e.target.nodeName&&t.state.set("value",e.target.value)})},showMenu:function(){var e=this,n=e.settings,r;e.menu||(r=n.menu||[],r.length?r={type:"menu",items:r}:r.type=r.type||"menu",e.menu=t.create(r).parent(e).renderTo(e.getContainerElm()),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control===e.menu&&e.focus()}),e.menu.on("show hide",function(t){t.control.items().each(function(t){t.active(t.value()==e.value())})}).fire("show"),e.menu.on("select",function(t){e.value(t.control.value())}),e.on("focusin",function(t){"INPUT"==t.target.tagName.toUpperCase()&&e.menu.hide()}),e.aria("expanded",!0)),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"])},focus:function(){this.getEl("inp").focus()},repaint:function(){var e=this,t=e.getEl(),i=e.getEl("open"),o=e.layoutRect(),a,s;a=i?o.w-n.getSize(i).width-10:o.w-10;var l=document;return l.all&&(!l.documentMode||l.documentMode<=8)&&(s=e.layoutRect().h-2+"px"),r(t.firstChild).css({width:a,lineHeight:s}),e._super(),e},postRender:function(){var e=this;return r(this.getEl("inp")).on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)}),e._super()},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.classPrefix,i=e.state.get("value")||"",o,a,s="",l="";return"spellcheck"in n&&(l+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(l+=' maxlength="'+n.maxLength+'"'),n.size&&(l+=' size="'+n.size+'"'),n.subtype&&(l+=' type="'+n.subtype+'"'),e.disabled()&&(l+=' disabled="disabled"'),o=n.icon,o&&"caret"!=o&&(o=r+"ico "+r+"i-"+n.icon),a=e.state.get("text"),(o||a)&&(s='<div id="'+t+'-open" class="'+r+"btn "+r+'open" tabIndex="-1" role="button"><button id="'+t+'-action" type="button" hidefocus="1" tabindex="-1">'+("caret"!=o?'<i class="'+o+'"></i>':'<i class="'+r+'caret"></i>')+(a?(o?" ":"")+a:"")+"</button></div>",e.classes.add("has-open")),'<div id="'+t+'" class="'+e.classes+'"><input id="'+t+'-inp" class="'+r+'textbox" value="'+e.encode(i,!1)+'" hidefocus="1"'+l+' placeholder="'+e.encode(n.placeholder)+'" />'+s+"</div>"},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl("inp").value),this.state.get("value"))},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl("inp").value!=t.value&&(e.getEl("inp").value=t.value)}),e.state.on("change:disabled",function(t){e.getEl("inp").disabled=t.value}),e._super()},remove:function(){r(this.getEl("inp")).off(),this._super()}})}),r($e,[Ue],function(e){return e.extend({init:function(e){var t=this;e.spellcheck=!1,e.onaction&&(e.icon="none"),t._super(e),t.classes.add("colorbox"),t.on("change keyup postrender",function(){t.repaintColor(t.value())})},repaintColor:function(e){var t=this.getEl().getElementsByTagName("i")[0];if(t)try{t.style.background=e}catch(n){}},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e._rendered&&e.repaintColor(t.value)}),e._super()}})}),r(qe,[ze,ue],function(e,t){return e.extend({showPanel:function(){var e=this,n=e.settings;if(e.active(!0),e.panel)e.panel.show();else{var r=n.panel;r.type&&(r={layout:"grid",items:r}),r.role=r.role||"dialog",r.popover=!0,r.autohide=!0,r.ariaRoot=!0,e.panel=new t(r).on("hide",function(){e.active(!1)}).on("cancel",function(t){t.stopPropagation(),e.focus(),e.hidePanel()}).parent(e).renderTo(e.getContainerElm()),e.panel.fire("show"),e.panel.reflow()}e.panel.moveRel(e.getEl(),n.popoverAlign||(e.isRtl()?["bc-tr","bc-tc"]:["bc-tl","bc-tc"]))},hidePanel:function(){var e=this;e.panel&&e.panel.hide()},postRender:function(){var e=this;return e.aria("haspopup",!0),e.on("click",function(t){t.control===e&&(e.panel&&e.panel.visible()?e.hidePanel():(e.showPanel(),e.panel.focus(!!t.aria)))}),e._super()},remove:function(){return this.panel&&(this.panel.remove(),this.panel=null),this._super()}})}),r(je,[qe,b],function(e,t){var n=t.DOM;return e.extend({init:function(e){this._super(e),this.classes.add("colorbutton")},color:function(e){return e?(this._color=e,this.getEl("preview").style.backgroundColor=e,this):this._color},resetColor:function(){return this._color=null,this.getEl("preview").style.backgroundColor=null,this},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r=e.state.get("text"),i=e.settings.icon?n+"ico "+n+"i-"+e.settings.icon:"",o=e.settings.image?" style=\"background-image: url('"+e.settings.image+"')\"":"";
+return'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1" aria-haspopup="true"><button role="presentation" hidefocus="1" type="button" tabindex="-1">'+(i?'<i class="'+i+'"'+o+"></i>":"")+'<span id="'+t+'-preview" class="'+n+'preview"></span>'+(r?(i?" ":"")+r:"")+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1"> <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(r){r.aria&&"down"==r.aria.key||r.control!=e||n.getParent(r.target,"."+e.classPrefix+"open")||(r.stopImmediatePropagation(),t.call(e,r))}),delete e.settings.onclick,e._super()}})}),r(Ke,[],function(){function e(e){function i(e,i,o){var a,s,l,c,u,d;return a=0,s=0,l=0,e/=255,i/=255,o/=255,u=t(e,t(i,o)),d=n(e,n(i,o)),u==d?(l=u,{h:0,s:0,v:100*l}):(c=e==u?i-o:o==u?e-i:o-e,a=e==u?3:o==u?1:5,a=60*(a-c/(d-u)),s=(d-u)/d,l=d,{h:r(a),s:r(100*s),v:r(100*l)})}function o(e,i,o){var a,s,l,c;if(e=(parseInt(e,10)||0)%360,i=parseInt(i,10)/100,o=parseInt(o,10)/100,i=n(0,t(i,1)),o=n(0,t(o,1)),0===i)return void(d=f=h=r(255*o));switch(a=e/60,s=o*i,l=s*(1-Math.abs(a%2-1)),c=o-s,Math.floor(a)){case 0:d=s,f=l,h=0;break;case 1:d=l,f=s,h=0;break;case 2:d=0,f=s,h=l;break;case 3:d=0,f=l,h=s;break;case 4:d=l,f=0,h=s;break;case 5:d=s,f=0,h=l;break;default:d=f=h=0}d=r(255*(d+c)),f=r(255*(f+c)),h=r(255*(h+c))}function a(){function e(e){return e=parseInt(e,10).toString(16),e.length>1?e:"0"+e}return"#"+e(d)+e(f)+e(h)}function s(){return{r:d,g:f,b:h}}function l(){return i(d,f,h)}function c(e){var t;return"object"==typeof e?"r"in e?(d=e.r,f=e.g,h=e.b):"v"in e&&o(e.h,e.s,e.v):(t=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(e))?(d=parseInt(t[1],10),f=parseInt(t[2],10),h=parseInt(t[3],10)):(t=/#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(e))?(d=parseInt(t[1],16),f=parseInt(t[2],16),h=parseInt(t[3],16)):(t=/#([0-F])([0-F])([0-F])/gi.exec(e))&&(d=parseInt(t[1]+t[1],16),f=parseInt(t[2]+t[2],16),h=parseInt(t[3]+t[3],16)),d=0>d?0:d>255?255:d,f=0>f?0:f>255?255:f,h=0>h?0:h>255?255:h,u}var u=this,d=0,f=0,h=0;e&&c(e),u.toRgb=s,u.toHsv=l,u.toHex=a,u.parse=c}var t=Math.min,n=Math.max,r=Math.round;return e}),r(Ye,[Fe,oe,J,Ke],function(e,t,n,r){return e.extend({Defaults:{classes:"widget colorpicker"},init:function(e){this._super(e)},postRender:function(){function e(e,t){var r=n.getPos(e),i,o;return i=t.pageX-r.x,o=t.pageY-r.y,i=Math.max(0,Math.min(i/e.clientWidth,1)),o=Math.max(0,Math.min(o/e.clientHeight,1)),{x:i,y:o}}function i(e,t){var i=(360-e.h)/360;n.css(d,{top:100*i+"%"}),t||n.css(h,{left:e.s+"%",top:100-e.v+"%"}),f.style.background=new r({s:100,v:100,h:e.h}).toHex(),s.color().parse({s:e.s,v:e.v,h:e.h})}function o(t){var n;n=e(f,t),c.s=100*n.x,c.v=100*(1-n.y),i(c),s.fire("change")}function a(t){var n;n=e(u,t),c=l.toHsv(),c.h=360*(1-n.y),i(c,!0),s.fire("change")}var s=this,l=s.color(),c,u,d,f,h;u=s.getEl("h"),d=s.getEl("hp"),f=s.getEl("sv"),h=s.getEl("svp"),s._repaint=function(){c=l.toHsv(),i(c)},s._super(),s._svdraghelper=new t(s._id+"-sv",{start:o,drag:o}),s._hdraghelper=new t(s._id+"-h",{start:a,drag:a}),s._repaint()},rgb:function(){return this.color().toRgb()},value:function(e){var t=this;return arguments.length?(t.color().parse(e),void(t._rendered&&t._repaint())):t.color().toHex()},color:function(){return this._color||(this._color=new r),this._color},renderHtml:function(){function e(){var e,t,n="",i,a;for(i="filter:progid:DXImageTransform.Microsoft.gradient(GradientType=0,startColorstr=",a=o.split(","),e=0,t=a.length-1;t>e;e++)n+='<div class="'+r+'colorpicker-h-chunk" style="height:'+100/t+"%;"+i+a[e]+",endColorstr="+a[e+1]+");-ms-"+i+a[e]+",endColorstr="+a[e+1]+')"></div>';return n}var t=this,n=t._id,r=t.classPrefix,i,o="#ff0000,#ff0080,#ff00ff,#8000ff,#0000ff,#0080ff,#00ffff,#00ff80,#00ff00,#80ff00,#ffff00,#ff8000,#ff0000",a="background: -ms-linear-gradient(top,"+o+");background: linear-gradient(to bottom,"+o+");";return i='<div id="'+n+'-h" class="'+r+'colorpicker-h" style="'+a+'">'+e()+'<div id="'+n+'-hp" class="'+r+'colorpicker-h-marker"></div></div>','<div id="'+n+'" class="'+t.classes+'"><div id="'+n+'-sv" class="'+r+'colorpicker-sv"><div class="'+r+'colorpicker-overlay1"><div class="'+r+'colorpicker-overlay2"><div id="'+n+'-svp" class="'+r+'colorpicker-selector1"><div class="'+r+'colorpicker-selector2"></div></div></div></div></div>'+i+"</div>"}})}),r(Ge,[Fe],function(e){return e.extend({init:function(e){var t=this;e.delimiter||(e.delimiter="\xbb"),t._super(e),t.classes.add("path"),t.canFocus=!0,t.on("click",function(e){var n,r=e.target;(n=r.getAttribute("data-index"))&&t.fire("select",{value:t.row()[n],index:n})}),t.row(t.settings.row)},focus:function(){var e=this;return e.getEl().firstChild.focus(),e},row:function(e){return arguments.length?(this.state.set("row",e),this):this.state.get("row")},renderHtml:function(){var e=this;return'<div id="'+e._id+'" class="'+e.classes+'">'+e._getDataPathHtml(e.state.get("row"))+"</div>"},bindStates:function(){var e=this;return e.state.on("change:row",function(t){e.innerHtml(e._getDataPathHtml(t.value))}),e._super()},_getDataPathHtml:function(e){var t=this,n=e||[],r,i,o="",a=t.classPrefix;for(r=0,i=n.length;i>r;r++)o+=(r>0?'<div class="'+a+'divider" aria-hidden="true"> '+t.settings.delimiter+" </div>":"")+'<div role="button" class="'+a+"path-item"+(r==i-1?" "+a+"last":"")+'" data-index="'+r+'" tabindex="-1" id="'+t._id+"-"+r+'" aria-level="'+r+'">'+n[r].name+"</div>";return o||(o='<div class="'+a+'path-item">\xa0</div>'),o}})}),r(Xe,[Ge,Te],function(e,t){return e.extend({postRender:function(){function e(e){if(1===e.nodeType){if("BR"==e.nodeName||e.getAttribute("data-mce-bogus"))return!0;if("bookmark"===e.getAttribute("data-mce-type"))return!0}return!1}var n=this,r=t.activeEditor;return r.settings.elementpath!==!1&&(n.on("select",function(e){r.focus(),r.selection.select(this.row()[e.index].element),r.nodeChanged()}),r.on("nodeChange",function(t){for(var i=[],o=t.parents,a=o.length;a--;)if(1==o[a].nodeType&&!e(o[a])){var s=r.fire("ResolveName",{name:o[a].nodeName.toLowerCase(),target:o[a]});if(s.isDefaultPrevented()||i.push({name:s.name,element:o[a]}),s.isPropagationStopped())break}n.row(i)})),n._super()}})}),r(Je,[ie],function(e){return e.extend({Defaults:{layout:"flex",align:"center",defaults:{flex:1}},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.classes.add("formitem"),t.preRender(e),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<div id="'+e._id+'-title" class="'+n+'title">'+e.settings.title+"</div>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></div>"}})}),r(Qe,[ie,Je,f],function(e,t,n){return e.extend({Defaults:{containerCls:"form",layout:"flex",direction:"column",align:"stretch",flex:1,padding:20,labelGap:30,spacing:10,callbacks:{submit:function(){this.submit()}}},preRender:function(){var e=this,r=e.items();e.settings.formItemDefaults||(e.settings.formItemDefaults={layout:"flex",autoResize:"overflow",defaults:{flex:1}}),r.each(function(r){var i,o=r.settings.label;o&&(i=new t(n.extend({items:{type:"label",id:r._id+"-l",text:o,flex:0,forId:r._id,disabled:r.disabled()}},e.settings.formItemDefaults)),i.type="formitem",r.aria("labelledby",r._id+"-l"),"undefined"==typeof r.settings.flex&&(r.settings.flex=1),e.replace(r,i),i.add(r))})},submit:function(){return this.fire("submit",{data:this.toJSON()})},postRender:function(){var e=this;e._super(),e.fromJSON(e.settings.data)},bindStates:function(){function e(){var e=0,n=[],r,i,o;if(t.settings.labelGapCalc!==!1)for(o="children"==t.settings.labelGapCalc?t.find("formitem"):t.items(),o.filter("formitem").each(function(t){var r=t.items()[0],i=r.getEl().clientWidth;e=i>e?i:e,n.push(r)}),i=t.settings.labelGap||0,r=n.length;r--;)n[r].settings.minWidth=e+i}var t=this;t._super(),t.on("show",e),e()}})}),r(Ze,[Qe],function(e){return e.extend({Defaults:{containerCls:"fieldset",layout:"flex",direction:"column",align:"stretch",flex:1,padding:"25 15 5 15",labelGap:30,spacing:10,border:1},renderHtml:function(){var e=this,t=e._layout,n=e.classPrefix;return e.preRender(),t.preRender(e),'<fieldset id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1">'+(e.settings.title?'<legend id="'+e._id+'-title" class="'+n+'fieldset-title">'+e.settings.title+"</legend>":"")+'<div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+(e.settings.html||"")+t.renderHtml(e)+"</div></fieldset>"}})}),r(et,[Ue,f],function(e,t){return e.extend({init:function(e){var n=this,r=tinymce.activeEditor,i=r.settings,o,a,s;e.spellcheck=!1,s=i.file_picker_types||i.file_browser_callback_types,s&&(s=t.makeMap(s,/[, ]/)),(!s||s[e.filetype])&&(a=i.file_picker_callback,!a||s&&!s[e.filetype]?(a=i.file_browser_callback,!a||s&&!s[e.filetype]||(o=function(){a(n.getEl("inp").id,n.value(),e.filetype,window)})):o=function(){var i=n.fire("beforecall").meta;i=t.extend({filetype:e.filetype},i),a.call(r,function(e,t){n.value(e).fire("change",{meta:t})},n.value(),i)}),o&&(e.icon="browse",e.onaction=o),n._super(e)}})}),r(tt,[Oe],function(e){return e.extend({recalc:function(e){var t=e.layoutRect(),n=e.paddingBox;e.items().filter(":visible").each(function(e){e.layoutRect({x:n.left,y:n.top,w:t.innerW-n.right-n.left,h:t.innerH-n.top-n.bottom}),e.recalc&&e.recalc()})}})}),r(nt,[Oe],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v=[],y,b,x,C,w,_,E,N,S,k,T,R,A,B,D,L,M,H,P,O,I,F,z=Math.max,W=Math.min;for(r=e.items().filter(":visible"),i=e.layoutRect(),o=e.paddingBox,a=e.settings,f=e.isRtl()?a.direction||"row-reversed":a.direction,s=a.align,l=e.isRtl()?a.pack||"end":a.pack,c=a.spacing||0,("row-reversed"==f||"column-reverse"==f)&&(r=r.set(r.toArray().reverse()),f=f.split("-")[0]),"column"==f?(S="y",E="h",N="minH",k="maxH",R="innerH",T="top",A="deltaH",B="contentH",P="left",M="w",D="x",L="innerW",H="minW",O="right",I="deltaW",F="contentW"):(S="x",E="w",N="minW",k="maxW",R="innerW",T="left",A="deltaW",B="contentW",P="top",M="h",D="y",L="innerH",H="minH",O="bottom",I="deltaH",F="contentH"),d=i[R]-o[T]-o[T],_=u=0,t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),m=h.settings,g=m.flex,d-=n-1>t?c:0,g>0&&(u+=g,p[k]&&v.push(h),p.flex=g),d-=p[N],y=o[P]+p[H]+o[O],y>_&&(_=y);if(C={},0>d?C[N]=i[N]-d+i[A]:C[N]=i[R]-d+i[A],C[H]=_+i[I],C[B]=i[R]-d,C[F]=_,C.minW=W(C.minW,i.maxW),C.minH=W(C.minH,i.maxH),C.minW=z(C.minW,i.startMinWidth),C.minH=z(C.minH,i.startMinHeight),!i.autoResize||C.minW==i.minW&&C.minH==i.minH){for(x=d/u,t=0,n=v.length;n>t;t++)h=v[t],p=h.layoutRect(),b=p[k],y=p[N]+p.flex*x,y>b?(d-=p[k]-p[N],u-=p.flex,p.flex=0,p.maxFlexSize=b):p.maxFlexSize=0;for(x=d/u,w=o[T],C={},0===u&&("end"==l?w=d+o[T]:"center"==l?(w=Math.round(i[R]/2-(i[R]-d)/2)+o[T],0>w&&(w=o[T])):"justify"==l&&(w=o[T],c=Math.floor(d/(r.length-1)))),C[D]=o[P],t=0,n=r.length;n>t;t++)h=r[t],p=h.layoutRect(),y=p.maxFlexSize||p[N],"center"===s?C[D]=Math.round(i[L]/2-p[M]/2):"stretch"===s?(C[M]=z(p[H]||0,i[L]-o[P]-o[O]),C[D]=o[P]):"end"===s&&(C[D]=i[L]-p[M]-o.top),p.flex>0&&(y+=p.flex*x),C[E]=y,C[S]=w,h.layoutRect(C),h.recalc&&h.recalc(),w+=y+c}else if(C.w=C.minW,C.h=C.minH,e.layoutRect(C),this.recalc(e),null===e._lastRect){var V=e.parent();V&&(V._lastRect=null,V.recalc())}}})}),r(rt,[Pe],function(e){return e.extend({Defaults:{containerClass:"flow-layout",controlClass:"flow-layout-item",endClass:"break"},recalc:function(e){e.items().filter(":visible").each(function(e){e.recalc&&e.recalc()})},isNative:function(){return!0}})}),r(it,[te,Fe,ue,f,Te,u],function(e,t,n,r,i,o){function a(e){function t(t,n){return function(){var r=this;e.on("nodeChange",function(i){var o=e.formatter,a=null;s(i.parents,function(e){return s(t,function(t){return n?o.matchNode(e,n,{value:t.value})&&(a=t.value):o.matchNode(e,t.value)&&(a=t.value),a?!1:void 0}),a?!1:void 0}),r.value(a)})}}function r(e){e=e.replace(/;$/,"").split(";");for(var t=e.length;t--;)e[t]=e[t].split("=");return e}function i(){function t(e){var n=[];if(e)return s(e,function(e){var o={text:e.title,icon:e.icon};if(e.items)o.menu=t(e.items);else{var a=e.format||"custom"+r++;e.format||(e.name=a,i.push(e)),o.format=a,o.cmd=e.cmd}n.push(o)}),n}function n(){var n;return n=t(e.settings.style_formats_merge?e.settings.style_formats?o.concat(e.settings.style_formats):o:e.settings.style_formats||o)}var r=0,i=[],o=[{title:"Headings",items:[{title:"Heading 1",format:"h1"},{title:"Heading 2",format:"h2"},{title:"Heading 3",format:"h3"},{title:"Heading 4",format:"h4"},{title:"Heading 5",format:"h5"},{title:"Heading 6",format:"h6"}]},{title:"Inline",items:[{title:"Bold",icon:"bold",format:"bold"},{title:"Italic",icon:"italic",format:"italic"},{title:"Underline",icon:"underline",format:"underline"},{title:"Strikethrough",icon:"strikethrough",format:"strikethrough"},{title:"Superscript",icon:"superscript",format:"superscript"},{title:"Subscript",icon:"subscript",format:"subscript"},{title:"Code",icon:"code",format:"code"}]},{title:"Blocks",items:[{title:"Paragraph",format:"p"},{title:"Blockquote",format:"blockquote"},{title:"Div",format:"div"},{title:"Pre",format:"pre"}]},{title:"Alignment",items:[{title:"Left",icon:"alignleft",format:"alignleft"},{title:"Center",icon:"aligncenter",format:"aligncenter"},{title:"Right",icon:"alignright",format:"alignright"},{title:"Justify",icon:"alignjustify",format:"alignjustify"}]}];return e.on("init",function(){s(i,function(t){e.formatter.register(t.name,t)})}),{type:"menu",items:n(),onPostRender:function(t){e.fire("renderFormatsMenu",{control:t.control})},itemDefaults:{preview:!0,textStyle:function(){return this.settings.format?e.formatter.getCssText(this.settings.format):void 0},onPostRender:function(){var t=this;t.parent().on("show",function(){var n,r;n=t.settings.format,n&&(t.disabled(!e.formatter.canApply(n)),t.active(e.formatter.match(n))),r=t.settings.cmd,r&&t.active(e.queryCommandState(r))})},onclick:function(){this.settings.format&&c(this.settings.format),this.settings.cmd&&e.execCommand(this.settings.cmd)}}}}function o(t){return function(){var n=this;e.formatter?e.formatter.formatChanged(t,function(e){n.active(e)}):e.on("init",function(){e.formatter.formatChanged(t,function(e){n.active(e)})})}}function a(t){return function(){function n(){return e.undoManager?e.undoManager[t]():!1}var r=this;t="redo"==t?"hasRedo":"hasUndo",r.disabled(!n()),e.on("Undo Redo AddUndo TypingUndo ClearUndos",function(){r.disabled(!n())})}}function l(){var t=this;e.on("VisualAid",function(e){t.active(e.hasVisual)}),t.active(e.hasVisual)}function c(t){t.control&&(t=t.control.value()),t&&e.execCommand("mceToggleFormat",!1,t)}var u;u=i(),s({bold:"Bold",italic:"Italic",underline:"Underline",strikethrough:"Strikethrough",subscript:"Subscript",superscript:"Superscript"},function(t,n){e.addButton(n,{tooltip:t,onPostRender:o(n),onclick:function(){c(n)}})}),s({outdent:["Decrease indent","Outdent"],indent:["Increase indent","Indent"],cut:["Cut","Cut"],copy:["Copy","Copy"],paste:["Paste","Paste"],help:["Help","mceHelp"],selectall:["Select all","SelectAll"],removeformat:["Clear formatting","RemoveFormat"],visualaid:["Visual aids","mceToggleVisualAid"],newdocument:["New document","mceNewDocument"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1]})}),s({blockquote:["Blockquote","mceBlockQuote"],numlist:["Numbered list","InsertOrderedList"],bullist:["Bullet list","InsertUnorderedList"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],alignleft:["Align left","JustifyLeft"],aligncenter:["Align center","JustifyCenter"],alignright:["Align right","JustifyRight"],alignjustify:["Justify","JustifyFull"],alignnone:["No alignment","JustifyNone"]},function(t,n){e.addButton(n,{tooltip:t[0],cmd:t[1],onPostRender:o(n)})}),e.addButton("undo",{tooltip:"Undo",onPostRender:a("undo"),cmd:"undo"}),e.addButton("redo",{tooltip:"Redo",onPostRender:a("redo"),cmd:"redo"}),e.addMenuItem("newdocument",{text:"New document",icon:"newdocument",cmd:"mceNewDocument"}),e.addMenuItem("undo",{text:"Undo",icon:"undo",shortcut:"Meta+Z",onPostRender:a("undo"),cmd:"undo"}),e.addMenuItem("redo",{text:"Redo",icon:"redo",shortcut:"Meta+Y",onPostRender:a("redo"),cmd:"redo"}),e.addMenuItem("visualaid",{text:"Visual aids",selectable:!0,onPostRender:l,cmd:"mceToggleVisualAid"}),e.addButton("remove",{tooltip:"Remove",icon:"remove",cmd:"Delete"}),s({cut:["Cut","Cut","Meta+X"],copy:["Copy","Copy","Meta+C"],paste:["Paste","Paste","Meta+V"],selectall:["Select all","SelectAll","Meta+A"],bold:["Bold","Bold","Meta+B"],italic:["Italic","Italic","Meta+I"],underline:["Underline","Underline"],strikethrough:["Strikethrough","Strikethrough"],subscript:["Subscript","Subscript"],superscript:["Superscript","Superscript"],removeformat:["Clear formatting","RemoveFormat"]},function(t,n){e.addMenuItem(n,{text:t[0],icon:n,shortcut:t[2],cmd:t[1]})}),e.on("mousedown",function(){n.hideAll()}),e.addButton("styleselect",{type:"menubutton",text:"Formats",menu:u}),e.addButton("formatselect",function(){var n=[],i=r(e.settings.block_formats||"Paragraph=p;Heading 1=h1;Heading 2=h2;Heading 3=h3;Heading 4=h4;Heading 5=h5;Heading 6=h6;Preformatted=pre");return s(i,function(t){n.push({text:t[0],value:t[1],textStyle:function(){return e.formatter.getCssText(t[1])}})}),{type:"listbox",text:i[0][0],values:n,fixedWidth:!0,onselect:c,onPostRender:t(n)}}),e.addButton("fontselect",function(){var n="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats",i=[],o=r(e.settings.font_formats||n);return s(o,function(e){i.push({text:{raw:e[0]},value:e[1],textStyle:-1==e[1].indexOf("dings")?"font-family:"+e[1]:""})}),{type:"listbox",text:"Font Family",tooltip:"Font Family",values:i,fixedWidth:!0,onPostRender:t(i,"fontname"),onselect:function(t){t.control.settings.value&&e.execCommand("FontName",!1,t.control.settings.value)}}}),e.addButton("fontsizeselect",function(){var n=[],r="8pt 10pt 12pt 14pt 18pt 24pt 36pt",i=e.settings.fontsize_formats||r;return s(i.split(" "),function(e){var t=e,r=e,i=e.split("=");i.length>1&&(t=i[0],r=i[1]),n.push({text:t,value:r})}),{type:"listbox",text:"Font Sizes",tooltip:"Font Sizes",values:n,fixedWidth:!0,onPostRender:t(n,"fontsize"),onclick:function(t){t.control.settings.value&&e.execCommand("FontSize",!1,t.control.settings.value)}}}),e.addMenuItem("formats",{text:"Formats",menu:u})}var s=r.each;i.on("AddEditor",function(t){t.editor.rtl&&(e.rtl=!0),a(t.editor)}),e.translate=function(e){return i.translate(e)},t.tooltips=!o.iOS}),r(ot,[Oe],function(e){return e.extend({recalc:function(e){var t,n,r,i,o,a,s,l,c,u,d,f,h,p,m,g,v,y,b,x,C,w,_,E=[],N=[],S,k,T,R,A,B;t=e.settings,i=e.items().filter(":visible"),o=e.layoutRect(),r=t.columns||Math.ceil(Math.sqrt(i.length)),n=Math.ceil(i.length/r),y=t.spacingH||t.spacing||0,b=t.spacingV||t.spacing||0,x=t.alignH||t.align,C=t.alignV||t.align,g=e.paddingBox,A="reverseRows"in t?t.reverseRows:e.isRtl(),x&&"string"==typeof x&&(x=[x]),C&&"string"==typeof C&&(C=[C]);for(d=0;r>d;d++)E.push(0);for(f=0;n>f;f++)N.push(0);for(f=0;n>f;f++)for(d=0;r>d&&(u=i[f*r+d],u);d++)c=u.layoutRect(),S=c.minW,k=c.minH,E[d]=S>E[d]?S:E[d],N[f]=k>N[f]?k:N[f];for(T=o.innerW-g.left-g.right,w=0,d=0;r>d;d++)w+=E[d]+(d>0?y:0),T-=(d>0?y:0)+E[d];for(R=o.innerH-g.top-g.bottom,_=0,f=0;n>f;f++)_+=N[f]+(f>0?b:0),R-=(f>0?b:0)+N[f];if(w+=g.left+g.right,_+=g.top+g.bottom,l={},l.minW=w+(o.w-o.innerW),l.minH=_+(o.h-o.innerH),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH,l.minW=Math.min(l.minW,o.maxW),l.minH=Math.min(l.minH,o.maxH),l.minW=Math.max(l.minW,o.startMinWidth),l.minH=Math.max(l.minH,o.startMinHeight),!o.autoResize||l.minW==o.minW&&l.minH==o.minH){o.autoResize&&(l=e.layoutRect(l),l.contentW=l.minW-o.deltaW,l.contentH=l.minH-o.deltaH);var D;D="start"==t.packV?0:R>0?Math.floor(R/n):0;var L=0,M=t.flexWidths;if(M)for(d=0;d<M.length;d++)L+=M[d];else L=r;var H=T/L;for(d=0;r>d;d++)E[d]+=M?M[d]*H:H;for(p=g.top,f=0;n>f;f++){for(h=g.left,s=N[f]+D,d=0;r>d&&(B=A?f*r+r-1-d:f*r+d,u=i[B],u);d++)m=u.settings,c=u.layoutRect(),a=Math.max(E[d],c.startMinWidth),c.x=h,c.y=p,v=m.alignH||(x?x[d]||x[0]:null),"center"==v?c.x=h+a/2-c.w/2:"right"==v?c.x=h+a-c.w:"stretch"==v&&(c.w=a),v=m.alignV||(C?C[d]||C[0]:null),"center"==v?c.y=p+s/2-c.h/2:"bottom"==v?c.y=p+s-c.h:"stretch"==v&&(c.h=s),u.layoutRect(c),h+=a+y,u.recalc&&u.recalc();p+=s+b}}else if(l.w=l.minW,l.h=l.minH,e.layoutRect(l),this.recalc(e),null===e._lastRect){var P=e.parent();P&&(P._lastRect=null,P.recalc())}}})}),r(at,[Fe],function(e){return e.extend({renderHtml:function(){var e=this;return e.classes.add("iframe"),e.canFocus=!1,'<iframe id="'+e._id+'" class="'+e.classes+'" tabindex="-1" src="'+(e.settings.url||"javascript:''")+'" frameborder="0"></iframe>'},src:function(e){this.getEl().src=e},html:function(e,t){var n=this,r=this.getEl().contentWindow.document.body;return r?(r.innerHTML=e,t&&t()):setTimeout(function(){n.html(e)},0),this}})}),r(st,[Fe,J],function(e,t){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("widget").add("label"),t.canFocus=!1,e.multiline&&t.classes.add("autoscroll"),e.strong&&t.classes.add("strong")},initLayoutRect:function(){var e=this,n=e._super();if(e.settings.multiline){var r=t.getSize(e.getEl());r.width>n.maxW&&(n.minW=n.maxW,e.classes.add("multiline")),e.getEl().style.width=n.minW+"px",n.startMinH=n.h=n.minH=Math.min(n.maxH,t.getSize(e.getEl()).height)}return n},repaint:function(){var e=this;return e.settings.multiline||(e.getEl().style.lineHeight=e.layoutRect().h+"px"),e._super()},renderHtml:function(){var e=this,t=e.settings.forId;return'<label id="'+e._id+'" class="'+e.classes+'"'+(t?' for="'+t+'"':"")+">"+e.encode(e.state.get("text"))+"</label>"},bindStates:function(){var e=this;return e.state.on("change:text",function(t){e.innerHtml(e.encode(t.value))}),e._super()}})}),r(lt,[ie],function(e){return e.extend({Defaults:{role:"toolbar",layout:"flow"},init:function(e){var t=this;t._super(e),t.classes.add("toolbar")},postRender:function(){var e=this;return e.items().each(function(e){e.classes.add("toolbar-item")}),e._super()}})}),r(ct,[lt],function(e){return e.extend({Defaults:{role:"menubar",containerCls:"menubar",ariaRoot:!0,defaults:{type:"menubutton"}}})}),r(ut,[ze,ne,ct],function(e,t,n){function r(e,t){for(;e;){if(t===e)return!0;e=e.parentNode}return!1}var i=e.extend({init:function(e){var t=this;t._renderOpen=!0,t._super(e),e=t.settings,t.classes.add("menubtn"),e.fixedWidth&&t.classes.add("fixed-width"),t.aria("haspopup",!0),t.state.set("menu",e.menu||t.render())},showMenu:function(){var e=this,n;return e.menu&&e.menu.visible()?e.hideMenu():(e.menu||(n=e.state.get("menu")||[],n.length?n={type:"menu",items:n}:n.type=n.type||"menu",n.renderTo?e.menu=n.parent(e).show().renderTo():e.menu=t.create(n).parent(e).renderTo(),e.fire("createmenu"),e.menu.reflow(),e.menu.on("cancel",function(t){t.control.parent()===e.menu&&(t.stopPropagation(),e.focus(),e.hideMenu())}),e.menu.on("select",function(){e.focus()}),e.menu.on("show hide",function(t){t.control==e.menu&&e.activeMenu("show"==t.type),e.aria("expanded","show"==t.type)}).fire("show")),e.menu.show(),e.menu.layoutRect({w:e.layoutRect().w}),void e.menu.moveRel(e.getEl(),e.isRtl()?["br-tr","tr-br"]:["bl-tl","tl-bl"]))},hideMenu:function(){var e=this;e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide())},activeMenu:function(e){this.classes.toggle("active",e)},renderHtml:function(){var e=this,t=e._id,r=e.classPrefix,i=e.settings.icon,o,a=e.state.get("text");return o=e.settings.image,o?(i="none","string"!=typeof o&&(o=window.getSelection?o[0]:o[1]),o=" style=\"background-image: url('"+o+"')\""):o="",i=e.settings.icon?r+"ico "+r+"i-"+i:"",e.aria("role",e.parent()instanceof n?"menuitem":"button"),'<div id="'+t+'" class="'+e.classes+'" tabindex="-1" aria-labelledby="'+t+'"><button id="'+t+'-open" role="presentation" type="button" tabindex="-1">'+(i?'<i class="'+i+'"'+o+"></i>":"")+(a?(i?"\xa0":"")+e.encode(a):"")+' <i class="'+r+'caret"></i></button></div>'},postRender:function(){var e=this;return e.on("click",function(t){t.control===e&&r(t.target,e.getEl())&&(e.showMenu(),t.aria&&e.menu.items()[0].focus())}),e.on("mouseenter",function(t){var n=t.control,r=e.parent(),o;n&&r&&n instanceof i&&n.parent()==r&&(r.items().filter("MenuButton").each(function(e){e.hideMenu&&e!=n&&(e.menu&&e.menu.visible()&&(o=!0),e.hideMenu())}),o&&(n.focus(),n.showMenu()))}),e._super()},bindStates:function(){var e=this;return e.state.on("change:menu",function(){e.menu&&e.menu.remove(),e.menu=null}),e._super()},remove:function(){this._super(),this.menu&&this.menu.remove()}});return i}),r(dt,[Fe,ne,u],function(e,t,n){return e.extend({Defaults:{border:0,role:"menuitem"},init:function(e){var t=this,n;t._super(e),e=t.settings,t.classes.add("menu-item"),e.menu&&t.classes.add("menu-item-expand"),e.preview&&t.classes.add("menu-item-preview"),n=t.state.get("text"),("-"===n||"|"===n)&&(t.classes.add("menu-item-sep"),t.aria("role","separator"),t.state.set("text","-")),e.selectable&&(t.aria("role","menuitemcheckbox"),t.classes.add("menu-item-checkbox"),e.icon="selected"),e.preview||e.selectable||t.classes.add("menu-item-normal"),t.on("mousedown",function(e){e.preventDefault()}),e.menu&&!e.ariaHideMenu&&t.aria("haspopup",!0)},hasMenus:function(){return!!this.settings.menu},showMenu:function(){var e=this,n=e.settings,r,i=e.parent();if(i.items().each(function(t){t!==e&&t.hideMenu()}),n.menu){r=e.menu,r?r.show():(r=n.menu,r.length?r={type:"menu",items:r}:r.type=r.type||"menu",i.settings.itemDefaults&&(r.itemDefaults=i.settings.itemDefaults),r=e.menu=t.create(r).parent(e).renderTo(),r.reflow(),r.on("cancel",function(t){t.stopPropagation(),e.focus(),r.hide()}),r.on("show hide",function(e){e.control.items().each(function(e){e.active(e.settings.selected)})}).fire("show"),r.on("hide",function(t){t.control===r&&e.classes.remove("selected")}),r.submenu=!0),r._parentMenu=i,r.classes.add("menu-sub");var o=r.testMoveRel(e.getEl(),e.isRtl()?["tl-tr","bl-br","tr-tl","br-bl"]:["tr-tl","br-bl","tl-tr","bl-br"]);r.moveRel(e.getEl(),o),r.rel=o,o="menu-sub-"+o,r.classes.remove(r._lastRel).add(o),r._lastRel=o,e.classes.add("selected"),e.aria("expanded",!0)}},hideMenu:function(){var e=this;return e.menu&&(e.menu.items().each(function(e){e.hideMenu&&e.hideMenu()}),e.menu.hide(),e.aria("expanded",!1)),e},renderHtml:function(){function e(e){var t,r,i={};for(i=n.mac?{alt:"&#x2325;",ctrl:"&#x2318;",shift:"&#x21E7;",meta:"&#x2318;"}:{meta:"Ctrl"},e=e.split("+"),t=0;t<e.length;t++)r=i[e[t].toLowerCase()],r&&(e[t]=r);return e.join("+")}var t=this,r=t._id,i=t.settings,o=t.classPrefix,a=t.encode(t.state.get("text")),s=t.settings.icon,l="",c=i.shortcut;return s&&t.parent().classes.add("menu-has-icons"),i.image&&(l=" style=\"background-image: url('"+i.image+"')\""),c&&(c=e(c)),s=o+"ico "+o+"i-"+(t.settings.icon||"none"),'<div id="'+r+'" class="'+t.classes+'" tabindex="-1">'+("-"!==a?'<i class="'+s+'"'+l+"></i>\xa0":"")+("-"!==a?'<span id="'+r+'-text" class="'+o+'text">'+a+"</span>":"")+(c?'<div id="'+r+'-shortcut" class="'+o+'menu-shortcut">'+c+"</div>":"")+(i.menu?'<div class="'+o+'caret"></div>':"")+"</div>"},postRender:function(){var e=this,t=e.settings,n=t.textStyle;if("function"==typeof n&&(n=n.call(this)),n){var r=e.getEl("text");r&&r.setAttribute("style",n)}return e.on("mouseenter click",function(n){n.control===e&&(t.menu||"click"!==n.type?(e.showMenu(),n.aria&&e.menu.focus(!0)):(e.fire("select"),e.parent().hideAll()))}),e._super(),e},active:function(e){return"undefined"!=typeof e&&this.aria("checked",e),this._super(e)},remove:function(){this._super(),this.menu&&this.menu.remove()}})}),r(ft,[ue,dt,f],function(e,t,n){return e.extend({Defaults:{defaultType:"menuitem",border:1,layout:"stack",role:"application",bodyRole:"menu",ariaRoot:!0},init:function(e){var t=this;if(e.autohide=!0,e.constrainToViewport=!0,e.itemDefaults)for(var r=e.items,i=r.length;i--;)r[i]=n.extend({},e.itemDefaults,r[i]);t._super(e),t.classes.add("menu")},repaint:function(){return this.classes.toggle("menu-align",!0),this._super(),this.getEl().style.height="",this.getEl("body").style.height="",this},cancel:function(){var e=this;e.hideAll(),e.fire("select")},hideAll:function(){var e=this;return this.find("menuitem").exec("hideMenu"),e._super()},preRender:function(){var e=this;return e.items().each(function(t){var n=t.settings;return n.icon||n.image||n.selectable?(e._hasIcons=!0,!1):void 0}),e._super()}})}),r(ht,[ut,ft],function(e,t){return e.extend({init:function(e){function t(r){for(var a=0;a<r.length;a++){if(i=r[a].selected||e.value===r[a].value)return o=o||r[a].text,n.state.set("value",r[a].value),!0;if(r[a].menu&&t(r[a].menu))return!0}}var n=this,r,i,o,a;n._super(e),e=n.settings,n._values=r=e.values,r&&("undefined"!=typeof e.value&&t(r),!i&&r.length>0&&(o=r[0].text,n.state.set("value",r[0].value)),n.state.set("menu",r)),n.state.set("text",e.text||o||r[0].text),n.classes.add("listbox"),n.on("select",function(t){var r=t.control;a&&(t.lastControl=a),e.multiple?r.active(!r.active()):n.value(t.control.value()),a=r})},bindStates:function(){function e(e,n){e instanceof t&&e.items().each(function(e){e.hasMenus()||e.active(e.value()===n)})}function n(e,t){var r;if(e)for(var i=0;i<e.length;i++){if(e[i].value===t)return e[i];if(e[i].menu&&(r=n(e[i].menu,t)))return r}}var r=this;return r.on("show",function(t){e(t.control,r.value())}),r.state.on("change:value",function(e){var t=n(r.state.get("menu"),e.value);t?r.text(t.text):r.text(r.settings.text)}),r._super()}})}),r(pt,[Ve],function(e){return e.extend({Defaults:{classes:"radio",role:"radio"}})}),r(mt,[],function(){function e(e,t,n){var r,i,o,a,l,c;return r=t.x,i=t.y,o=e.w,a=e.h,l=t.w,c=t.h,n=(n||"").split(""),"b"===n[0]&&(i+=c),"r"===n[1]&&(r+=l),"c"===n[0]&&(i+=s(c/2)),"c"===n[1]&&(r+=s(l/2)),"b"===n[3]&&(i-=a),"r"===n[4]&&(r-=o),"c"===n[3]&&(i-=s(a/2)),"c"===n[4]&&(r-=s(o/2)),{x:r,y:i,w:o,h:a}}function t(t,n,r,i){var o,a;for(a=0;a<i.length;a++)if(o=e(t,n,i[a]),o.x>=r.x&&o.x+o.w<=r.w+r.x&&o.y>=r.y&&o.y+o.h<=r.h+r.y)return i[a]}function n(e,t,n){return{x:e.x-t,y:e.y-n,w:e.w+2*t,h:e.h+2*n}}function r(e,t){var n,r,i,s;return n=a(e.x,t.x),r=a(e.y,t.y),i=o(e.x+e.w,t.x+t.w),s=o(e.y+e.h,t.y+t.h),0>i-n||0>s-r?null:{x:n,y:r,w:i-n,h:s-r}}function i(e,t,n){var r,i,o,s,l,c,u,d,f,h;return l=e.x,c=e.y,u=e.x+e.w,d=e.y+e.h,f=t.x+t.w,h=t.y+t.h,r=a(0,t.x-l),i=a(0,t.y-c),o=a(0,u-f),s=a(0,d-h),l+=r,c+=i,n&&(u+=r,d+=i,l-=o,c-=s),u-=o,d-=s,{x:l,y:c,w:u-l,h:d-c}}var o=Math.min,a=Math.max,s=Math.round;return{inflate:n,relativePosition:e,findBestRelativePosition:t,intersect:r,clamp:i}}),r(gt,[Fe,oe],function(e,t){return e.extend({renderHtml:function(){var e=this,t=e.classPrefix;return e.classes.add("resizehandle"),"both"==e.settings.direction&&e.classes.add("resizehandle-both"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"><i class="'+t+"ico "+t+'i-resize"></i></div>'},postRender:function(){var e=this;e._super(),e.resizeDragHelper=new t(this._id,{start:function(){e.fire("ResizeStart")},drag:function(t){"both"!=e.settings.direction&&(t.deltaX=0),e.fire("Resize",t)},stop:function(){e.fire("ResizeEnd")}})},remove:function(){return this.resizeDragHelper&&this.resizeDragHelper.destroy(),this._super()}})}),r(vt,[Fe,oe,J],function(e,t,n){function r(e,t,n){return t>e&&(e=t),e>n&&(e=n),e}function i(e,t){var r,i,o,a,s;"v"==e.settings.orientation?(a="top",o="height",i="h"):(a="left",o="width",i="w"),r=(e.layoutRect()[i]||100)-n.getSize(e.getEl("handle"))[o],s=r*((t-e._minValue)/(e._maxValue-e._minValue))+"px",e.getEl("handle").style[a]=s,
+e.getEl("handle").style.height=e.layoutRect().h+"px"}return e.extend({init:function(e){var t=this;e.previewFilter||(e.previewFilter=function(e){return Math.round(100*e)/100}),t._super(e),t.classes.add("slider"),"v"==e.orientation&&t.classes.add("vertical"),t._minValue=e.minValue||0,t._maxValue=e.maxValue||100,t._initValue=t.state.get("value")},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix;return'<div id="'+t+'" class="'+e.classes+'"><div id="'+t+'-handle" class="'+n+'slider-handle"></div></div>'},reset:function(){this.value(this._initValue).repaint()},postRender:function(){var e=this,i,o,a=0,s,l,c,u,d,f,h,p;l=e._minValue,c=e._maxValue,s=e.value(),"v"==e.settings.orientation?(d="screenY",f="top",h="height",p="h"):(d="screenX",f="left",h="width",p="w"),e._super(),e._dragHelper=new t(e._id,{handle:e._id+"-handle",start:function(t){i=t[d],o=parseInt(e.getEl("handle").style[f],10),u=(e.layoutRect()[p]||100)-n.getSize(e.getEl("handle"))[h],e.fire("dragstart",{value:s})},drag:function(t){var n=t[d]-i,h=e.getEl("handle");a=r(o+n,0,u),h.style[f]=a+"px",s=l+a/u*(c-l),e.value(s),e.tooltip().text(""+e.settings.previewFilter(s)).show().moveRel(h,"bc tc"),e.fire("drag",{value:s})},stop:function(){e.tooltip().hide(),e.fire("dragend",{value:s})}})},repaint:function(){this._super(),i(this,this.value())},bindStates:function(){var e=this;return e.state.on("change:value",function(t){i(e,t.value)}),e._super()}})}),r(yt,[Fe],function(e){return e.extend({renderHtml:function(){var e=this;return e.classes.add("spacer"),e.canFocus=!1,'<div id="'+e._id+'" class="'+e.classes+'"></div>'}})}),r(bt,[ut,J,h],function(e,t,n){return e.extend({Defaults:{classes:"widget btn splitbtn",role:"button"},repaint:function(){var e=this,r=e.getEl(),i=e.layoutRect(),o,a;return e._super(),o=r.firstChild,a=r.lastChild,n(o).css({width:i.w-t.getSize(a).width,height:i.h-2}),n(a).css({height:i.h-2}),e},activeMenu:function(e){var t=this;n(t.getEl().lastChild).toggleClass(t.classPrefix+"active",e)},renderHtml:function(){var e=this,t=e._id,n=e.classPrefix,r,i=e.state.get("icon"),o=e.state.get("text");return r=e.settings.image,r?(i="none","string"!=typeof r&&(r=window.getSelection?r[0]:r[1]),r=" style=\"background-image: url('"+r+"')\""):r="",i=e.settings.icon?n+"ico "+n+"i-"+i:"",'<div id="'+t+'" class="'+e.classes+'" role="button" tabindex="-1"><button type="button" hidefocus="1" tabindex="-1">'+(i?'<i class="'+i+'"'+r+"></i>":"")+(o?(i?" ":"")+o:"")+'</button><button type="button" class="'+n+'open" hidefocus="1" tabindex="-1">'+(e._menuBtnText?(i?"\xa0":"")+e._menuBtnText:"")+' <i class="'+n+'caret"></i></button></div>'},postRender:function(){var e=this,t=e.settings.onclick;return e.on("click",function(e){var n=e.target;if(e.control==this)for(;n;){if(e.aria&&"down"!=e.aria.key||"BUTTON"==n.nodeName&&-1==n.className.indexOf("open"))return e.stopImmediatePropagation(),void(t&&t.call(this,e));n=n.parentNode}}),delete e.settings.onclick,e._super()}})}),r(xt,[rt],function(e){return e.extend({Defaults:{containerClass:"stack-layout",controlClass:"stack-layout-item",endClass:"break"},isNative:function(){return!0}})}),r(Ct,[se,h,J],function(e,t,n){return e.extend({Defaults:{layout:"absolute",defaults:{type:"panel"}},activateTab:function(e){var n;this.activeTabId&&(n=this.getEl(this.activeTabId),t(n).removeClass(this.classPrefix+"active"),n.setAttribute("aria-selected","false")),this.activeTabId="t"+e,n=this.getEl("t"+e),n.setAttribute("aria-selected","true"),t(n).addClass(this.classPrefix+"active"),this.items()[e].show().fire("showtab"),this.reflow(),this.items().each(function(t,n){e!=n&&t.hide()})},renderHtml:function(){var e=this,t=e._layout,n="",r=e.classPrefix;return e.preRender(),t.preRender(e),e.items().each(function(t,i){var o=e._id+"-t"+i;t.aria("role","tabpanel"),t.aria("labelledby",o),n+='<div id="'+o+'" class="'+r+'tab" unselectable="on" role="tab" aria-controls="'+t._id+'" aria-selected="false" tabIndex="-1">'+e.encode(t.settings.title)+"</div>"}),'<div id="'+e._id+'" class="'+e.classes+'" hidefocus="1" tabindex="-1"><div id="'+e._id+'-head" class="'+r+'tabs" role="tablist">'+n+'</div><div id="'+e._id+'-body" class="'+e.bodyClasses+'">'+t.renderHtml(e)+"</div></div>"},postRender:function(){var e=this;e._super(),e.settings.activeTab=e.settings.activeTab||0,e.activateTab(e.settings.activeTab),this.on("click",function(t){var n=t.target.parentNode;if(t.target.parentNode.id==e._id+"-head")for(var r=n.childNodes.length;r--;)n.childNodes[r]==t.target&&e.activateTab(r)})},initLayoutRect:function(){var e=this,t,r,i;r=n.getSize(e.getEl("head")).width,r=0>r?0:r,i=0,e.items().each(function(e){r=Math.max(r,e.layoutRect().minW),i=Math.max(i,e.layoutRect().minH)}),e.items().each(function(e){e.settings.x=0,e.settings.y=0,e.settings.w=r,e.settings.h=i,e.layoutRect({x:0,y:0,w:r,h:i})});var o=n.getSize(e.getEl("head")).height;return e.settings.minWidth=r,e.settings.minHeight=i+o,t=e._super(),t.deltaH+=o,t.innerH=t.h-t.deltaH,t}})}),r(wt,[Fe],function(e){return e.extend({init:function(e){var t=this;t._super(e),t.classes.add("textbox"),e.multiline?t.classes.add("multiline"):(t.on("keydown",function(e){var n;13==e.keyCode&&(e.preventDefault(),t.parents().reverse().each(function(e){return e.toJSON?(n=e,!1):void 0}),t.fire("submit",{data:n.toJSON()}))}),t.on("keyup",function(e){t.state.set("value",e.target.value)}))},repaint:function(){var e=this,t,n,r,i,o=0,a;t=e.getEl().style,n=e._layoutRect,a=e._lastRepaintRect||{};var s=document;return!e.settings.multiline&&s.all&&(!s.documentMode||s.documentMode<=8)&&(t.lineHeight=n.h-o+"px"),r=e.borderBox,i=r.left+r.right+8,o=r.top+r.bottom+(e.settings.multiline?8:0),n.x!==a.x&&(t.left=n.x+"px",a.x=n.x),n.y!==a.y&&(t.top=n.y+"px",a.y=n.y),n.w!==a.w&&(t.width=n.w-i+"px",a.w=n.w),n.h!==a.h&&(t.height=n.h-o+"px",a.h=n.h),e._lastRepaintRect=a,e.fire("repaint",{},!1),e},renderHtml:function(){var e=this,t=e._id,n=e.settings,r=e.encode(e.state.get("value"),!1),i="";return"spellcheck"in n&&(i+=' spellcheck="'+n.spellcheck+'"'),n.maxLength&&(i+=' maxlength="'+n.maxLength+'"'),n.size&&(i+=' size="'+n.size+'"'),n.subtype&&(i+=' type="'+n.subtype+'"'),e.disabled()&&(i+=' disabled="disabled"'),n.multiline?'<textarea id="'+t+'" class="'+e.classes+'" '+(n.rows?' rows="'+n.rows+'"':"")+' hidefocus="1"'+i+">"+r+"</textarea>":'<input id="'+t+'" class="'+e.classes+'" value="'+r+'" hidefocus="1"'+i+" />"},value:function(e){return arguments.length?(this.state.set("value",e),this):(this.state.get("rendered")&&this.state.set("value",this.getEl().value),this.state.get("value"))},postRender:function(){var e=this;e._super(),e.$el.on("change",function(t){e.state.set("value",t.target.value),e.fire("change",t)})},bindStates:function(){var e=this;return e.state.on("change:value",function(t){e.getEl().value!=t.value&&(e.getEl().value=t.value)}),e.state.on("change:disabled",function(t){e.getEl().disabled=t.value}),e._super()},remove:function(){this.$el.off(),this._super()}})}),r(_t,[h,te],function(e,t){return function(n,r){var i=this,o,a=t.classPrefix;i.show=function(t,s){return i.hide(),o=!0,window.setTimeout(function(){o&&(e(n).append('<div class="'+a+"throbber"+(r?" "+a+"throbber-inline":"")+'"></div>'),s&&s())},t||0),i},i.hide=function(){var e=n.lastChild;return e&&-1!=e.className.indexOf("throbber")&&e.parentNode.removeChild(e),o=!1,i}}}),a([l,c,u,f,h,p,m,v,b,x,C,w,E,N,S,k,T,R,A,D,L,M,H,I,F,V,U,$,q,K,G,X,ee,te,ne,re,ie,oe,ae,se,le,ce,ue,de,fe,he,ge,ve,ye,Ne,Se,ke,Te,Ae,Be,De,Le,Me,He,Pe,Oe,Ie,Fe,ze,We,Ve,Ue,$e,qe,je,Ke,Ye,Ge,Xe,Je,Qe,Ze,et,tt,nt,rt,it,ot,at,st,lt,ct,ut,dt,ft,ht,pt,mt,gt,vt,yt,bt,xt,Ct,wt,_t])}(this);
\ No newline at end of file
index 57a42b511517db33cbfc94a25404cd705fc12284..7014f240373939c1fe42ca30d74374fc860560a6 100644 (file)
Binary files a/wp-includes/js/tinymce/wp-tinymce.js.gz and b/wp-includes/js/tinymce/wp-tinymce.js.gz differ
index 8922e1308c696f1ab73432bd5d6356eb63c71aaf..6432308507b681abe066078451076d2ab4a04d2d 100644 (file)
@@ -233,7 +233,7 @@ var twemoji = (function (
 
     // RegExp based on emoji's official Unicode standards
     // http://www.unicode.org/Public/UNIDATA/EmojiSources.txt
-    re = /((?:\ud83c\udde8\ud83c\uddf3|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddef\ud83c\uddf5|\ud83c\uddee\ud83c\uddf9|\ud83c\uddec\ud83c\udde7|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddea\ud83c\uddf8|\ud83c\udde9\ud83c\uddea|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83d\ude8b|\ud83d\ude8a|\ud83d\ude88|\ud83d\ude86|\ud83d\ude82|\ud83d\ude81|\ud83d\ude36|\ud83d\ude34|\ud83d\ude2f|\ud83d\ude2e|\ud83d\ude2c|\ud83d\ude27|\ud83d\ude26|\ud83d\ude1f|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfe4|\ud83c\udfc9|\ud83c\udfc7|\ud83c\udf7c|\ud83c\udf50|\ud83c\udf4b|\ud83c\udf33|\ud83c\udf32|\ud83c\udf1e|\ud83c\udf1d|\ud83c\udf1c|\ud83c\udf1a|\ud83c\udf18|\ud83c\udccf|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc77|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83d\udebf|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83c\ude01|\ud83c\ude02|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude37|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udeb4|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udc94|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udde6|\ud83c\udde7|\ud83c\udde8|\ud83c\udde9|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83c\udded|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83c\uddf8|\ud83c\uddf9|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ue50a|\u3030|\u27b0|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u274e|\u274c|\u2728|\u270b|\u270a|\u2705|\u26ce|\u23f3|\u23f0|\u23ec|\u23eb|\u23ea|\u23e9|\u2122|\u27bf|\u00a9|\u00ae)|(?:(?:\ud83c\udc04|\ud83c\udd7f|\ud83c\ude1a|\ud83c\ude2f|\u3299|\u303d|\u2b55|\u2b50|\u2b1c|\u2b1b|\u2b07|\u2b06|\u2b05|\u2935|\u2934|\u27a1|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u270f|\u270c|\u2709|\u2708|\u2702|\u26fd|\u26fa|\u26f5|\u26f3|\u26f2|\u26ea|\u26d4|\u26c5|\u26c4|\u26be|\u26bd|\u26ab|\u26aa|\u26a1|\u26a0|\u2693|\u267f|\u267b|\u3297|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u264f|\u264e|\u264d|\u264c|\u264b|\u264a|\u2649|\u2648|\u263a|\u261d|\u2615|\u2614|\u2611|\u260e|\u2601|\u2600|\u25fe|\u25fd|\u25fc|\u25fb|\u25c0|\u25b6|\u25ab|\u25aa|\u24c2|\u231b|\u231a|\u21aa|\u21a9|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2049|\u203c|\u2668)([\uFE0E\uFE0F]?)))/g,
+    re = /((?:\u0039\ufe0f\u20e3|\u0038\ufe0f\u20e3|\u0037\ufe0f\u20e3|\u0036\ufe0f\u20e3|\u0035\ufe0f\u20e3|\u0034\ufe0f\u20e3|\u0033\ufe0f\u20e3|\u0032\ufe0f\u20e3|\u0031\ufe0f\u20e3|\u0030\ufe0f\u20e3|\u0023\ufe0f\u20e3|\ud83c\uddea\ud83c\uddf8|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddec\ud83c\udde7|\ud83c\uddee\ud83c\uddf9|\ud83c\uddef\ud83c\uddf5|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddea\ud83c\udde8|\ud83c\udde9\ud83c\uddff|\ud83c\uddf9\ud83c\uddf7|\ud83c\udde8\ud83c\uddf7|\ud83c\uddfa\ud83c\uddfe|\ud83c\udde8\ud83c\udde6|\ud83c\uddf8\ud83c\uddec|\ud83c\udde7\ud83c\uddf7|\ud83c\uddf8\ud83c\udde6|\ud83c\udde6\ud83c\uddfa|\ud83c\uddf5\ud83c\uddf9|\ud83c\uddf2\ud83c\uddfd|\ud83c\uddee\ud83c\uddf7|\ud83c\uddee\ud83c\uddf3|\ud83c\udded\ud83c\uddf7|\ud83c\udde8\ud83c\uddf3|\ud83c\udde9\ud83c\uddea|\ud83c\udde6\ud83c\uddf7|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfff|\ud83c\udffe|\ud83c\udffd|\ud83c\udffc|\ud83c\udffb|\ud83c\udfe4|\ud83c\udfd2|\ud83c\udfd0|\ud83c\udfcf|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc94|\ud83e\udd18|\ud83e\udd16|\ud83e\udd15|\ud83d\udecf|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udc77|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udebf|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udfce|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83d\udeb4|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83c\udde6|\ud83d\ude8b|\ud83c\udde7|\ud83d\ude8a|\ud83d\ude88|\ud83c\udde8|\ud83d\ude86|\ud83c\udde9|\ud83d\ude82|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83d\ude81|\ud83c\udded|\ud83d\ude36|\ud83d\ude34|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83d\ude2f|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83d\ude2e|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83d\ude2c|\ud83d\ude27|\ud83c\uddf8|\ud83d\ude26|\ud83c\uddf9|\ud83d\ude1f|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ud83c\udf18|\ud83c\udf1a|\ud83c\udf1c|\ud83c\udf1d|\ud83c\udf1e|\ud83c\udf2d|\ud83c\udf2e|\ud83c\udf2f|\ud83c\udf32|\ud83c\udf33|\ud83c\udf4b|\ud83c\udf50|\ud83c\udf7c|\ud83c\udfc7|\ud83c\udfc9|\ue50a|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u2728|\u2705|\u274c|\u274e|\u270a|\u270b|\u269c|\u27bf|\u27b0|\u26f8|\u26ce|\u23e9|\u23ea|\u23eb|\u23ec|\u23f0|\u23f3|\u00a9|\u00ae|\ud800\udc00)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u3297|\u3030|\u2935|\u2934|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u2709|\u2708|\u2702|\u2693|\u2668|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u2649|\u2648|\u2615|\u2614|\u2611|\u2601|\u2600|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u303d|\u270c|\u270f|\u267f|\u267b|\u264e|\u264d|\u264c|\u264b|\u264f|\u264a|\u263a|\u261d|\u260e|\u231b|\u231a|\u203c|\u27a1|\u26fd|\u26f5|\u26fa|\u26a1|\u26aa|\u26ab|\u26bd|\u26be|\u26d4|\u26c4|\u26c5|\u26a0|\u26f2|\u26f3|\u26ea|\u25ab|\u25aa|\u25fd|\u25b6|\u25fb|\u25c0|\u25fe|\u25fc|\u24c2|\u21a9|\u21aa|\u2b07|\u2b05|\u2b06|\u2b50|\u2b55|\u2b1c|\u2b1b)([\uFE0E\uFE0F]?)))/g,
 
     // used to find HTML special chars in attributes
     rescaper = /[&<>'"]/g,
@@ -386,7 +386,7 @@ var twemoji = (function (
           );
           if (src) {
             img = new Image();
-            img.onerror = twemoji.onerror;
+            img.onerror = options.onerror;
             img.setAttribute('draggable', 'false');
             attrib = options.attributes(icon, variant);
             for (attrname in attrib) {
@@ -550,7 +550,8 @@ var twemoji = (function (
       base:       typeof how.base === 'string' ? how.base : twemoji.base,
       ext:        how.ext || twemoji.ext,
       size:       how.folder || toSizeSquaredAsset(how.size || twemoji.size),
-      className:  how.className || twemoji.className
+      className:  how.className || twemoji.className,
+      onerror:    how.onerror || twemoji.onerror
     });
   }
 
index b5d45c5cf8335da63d302d4d5f0a2cd7ac407c10..9423d351b413d8d3dbf841ebd41b1847708e0ff8 100644 (file)
@@ -1 +1 @@
-var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(s,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||t.test(c.nodeName)||d(c,b);return b}function e(a,b){return o("\ufe0f"===b?a.slice(0,-1):3===a.length&&"\ufe0f"===a.charAt(1)?a.charAt(0)+a.charAt(2):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,q,s,t,u,v=d(b,[]),w=v.length;w--;){for(h=!1,i=document.createDocumentFragment(),j=v[w],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),q=l[0],s=l[1],t=l[2],m=n+q.length,"\ufe0e"!==t&&(u=c.callback(e(s,t),c,t))){o=new Image,o.onerror=p.onerror,o.setAttribute("draggable","false"),f=c.attributes(s,t);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=q,o.src=u,h=!0,i.appendChild(o)}o||i.appendChild(a(q)),o=null}h&&(m<k.length&&i.appendChild(a(k.slice(m))),j.parentNode.replaceChild(i,j))}return b}function g(a,c){return m(a,function(a,d,f){var g,h,i,j=a;if("\ufe0e"!==f&&(i=c.callback(e(d,f),c,f))){j="<img ".concat('class="',c.className,'" ','draggable="false" ','alt="',a,'"',' src="',i,'"'),g=c.attributes(d,f);for(h in g)g.hasOwnProperty(h)&&0!==h.indexOf("on")&&-1===j.indexOf(" "+h+"=")&&(j=j.concat(" ",h,'="',b(g[h]),'"'));j=j.concat(">")}return j})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return 65536>b?u(b):(b-=65536,u(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f<a.length;)d=a.charCodeAt(f++),e?(c.push((65536+(e-55296<<10)+(d-56320)).toString(16)),e=0):d>=55296&&56319>=d?e=d:c.push(d.toString(16));return c.join(b||"-")}var p={base:("https:"===location.protocol?"https:":"http:")+"//twemoji.maxcdn.com/",ext:".png",size:"36x36",className:"emoji",convert:{fromCodePoint:k,toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(a(this.alt),this)},parse:l,replace:m,test:n},q={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},r=/((?:\ud83c\udde8\ud83c\uddf3|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddef\ud83c\uddf5|\ud83c\uddee\ud83c\uddf9|\ud83c\uddec\ud83c\udde7|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddea\ud83c\uddf8|\ud83c\udde9\ud83c\uddea|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83d\ude8b|\ud83d\ude8a|\ud83d\ude88|\ud83d\ude86|\ud83d\ude82|\ud83d\ude81|\ud83d\ude36|\ud83d\ude34|\ud83d\ude2f|\ud83d\ude2e|\ud83d\ude2c|\ud83d\ude27|\ud83d\ude26|\ud83d\ude1f|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfe4|\ud83c\udfc9|\ud83c\udfc7|\ud83c\udf7c|\ud83c\udf50|\ud83c\udf4b|\ud83c\udf33|\ud83c\udf32|\ud83c\udf1e|\ud83c\udf1d|\ud83c\udf1c|\ud83c\udf1a|\ud83c\udf18|\ud83c\udccf|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc77|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83d\udebf|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83c\ude01|\ud83c\ude02|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude37|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udeb4|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udc94|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udde6|\ud83c\udde7|\ud83c\udde8|\ud83c\udde9|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83c\udded|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83c\uddf8|\ud83c\uddf9|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ue50a|\u3030|\u27b0|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u274e|\u274c|\u2728|\u270b|\u270a|\u2705|\u26ce|\u23f3|\u23f0|\u23ec|\u23eb|\u23ea|\u23e9|\u2122|\u27bf|\u00a9|\u00ae)|(?:(?:\ud83c\udc04|\ud83c\udd7f|\ud83c\ude1a|\ud83c\ude2f|\u3299|\u303d|\u2b55|\u2b50|\u2b1c|\u2b1b|\u2b07|\u2b06|\u2b05|\u2935|\u2934|\u27a1|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u270f|\u270c|\u2709|\u2708|\u2702|\u26fd|\u26fa|\u26f5|\u26f3|\u26f2|\u26ea|\u26d4|\u26c5|\u26c4|\u26be|\u26bd|\u26ab|\u26aa|\u26a1|\u26a0|\u2693|\u267f|\u267b|\u3297|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u264f|\u264e|\u264d|\u264c|\u264b|\u264a|\u2649|\u2648|\u263a|\u261d|\u2615|\u2614|\u2611|\u260e|\u2601|\u2600|\u25fe|\u25fd|\u25fc|\u25fb|\u25c0|\u25b6|\u25ab|\u25aa|\u24c2|\u231b|\u231a|\u21aa|\u21a9|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2049|\u203c|\u2668)([\uFE0E\uFE0F]?)))/g,s=/[&<>'"]/g,t=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,u=String.fromCharCode;return p}();
\ No newline at end of file
+var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(s,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||t.test(c.nodeName)||d(c,b);return b}function e(a,b){return o("\ufe0f"===b?a.slice(0,-1):3===a.length&&"\ufe0f"===a.charAt(1)?a.charAt(0)+a.charAt(2):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,p,q,s,t,u=d(b,[]),v=u.length;v--;){for(h=!1,i=document.createDocumentFragment(),j=u[v],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),p=l[0],q=l[1],s=l[2],m=n+p.length,"\ufe0e"!==s&&(t=c.callback(e(q,s),c,s))){o=new Image,o.onerror=c.onerror,o.setAttribute("draggable","false"),f=c.attributes(q,s);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=p,o.src=t,h=!0,i.appendChild(o)}o||i.appendChild(a(p)),o=null}h&&(m<k.length&&i.appendChild(a(k.slice(m))),j.parentNode.replaceChild(i,j))}return b}function g(a,c){return m(a,function(a,d,f){var g,h,i,j=a;if("\ufe0e"!==f&&(i=c.callback(e(d,f),c,f))){j="<img ".concat('class="',c.className,'" ','draggable="false" ','alt="',a,'"',' src="',i,'"'),g=c.attributes(d,f);for(h in g)g.hasOwnProperty(h)&&0!==h.indexOf("on")&&-1===j.indexOf(" "+h+"=")&&(j=j.concat(" ",h,'="',b(g[h]),'"'));j=j.concat(">")}return j})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return 65536>b?u(b):(b-=65536,u(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className,onerror:b.onerror||p.onerror})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f<a.length;)d=a.charCodeAt(f++),e?(c.push((65536+(e-55296<<10)+(d-56320)).toString(16)),e=0):d>=55296&&56319>=d?e=d:c.push(d.toString(16));return c.join(b||"-")}var p={base:("https:"===location.protocol?"https:":"http:")+"//twemoji.maxcdn.com/",ext:".png",size:"36x36",className:"emoji",convert:{fromCodePoint:k,toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(a(this.alt),this)},parse:l,replace:m,test:n},q={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},r=/((?:\u0039\ufe0f\u20e3|\u0038\ufe0f\u20e3|\u0037\ufe0f\u20e3|\u0036\ufe0f\u20e3|\u0035\ufe0f\u20e3|\u0034\ufe0f\u20e3|\u0033\ufe0f\u20e3|\u0032\ufe0f\u20e3|\u0031\ufe0f\u20e3|\u0030\ufe0f\u20e3|\u0023\ufe0f\u20e3|\ud83c\uddea\ud83c\uddf8|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddec\ud83c\udde7|\ud83c\uddee\ud83c\uddf9|\ud83c\uddef\ud83c\uddf5|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddea\ud83c\udde8|\ud83c\udde9\ud83c\uddff|\ud83c\uddf9\ud83c\uddf7|\ud83c\udde8\ud83c\uddf7|\ud83c\uddfa\ud83c\uddfe|\ud83c\udde8\ud83c\udde6|\ud83c\uddf8\ud83c\uddec|\ud83c\udde7\ud83c\uddf7|\ud83c\uddf8\ud83c\udde6|\ud83c\udde6\ud83c\uddfa|\ud83c\uddf5\ud83c\uddf9|\ud83c\uddf2\ud83c\uddfd|\ud83c\uddee\ud83c\uddf7|\ud83c\uddee\ud83c\uddf3|\ud83c\udded\ud83c\uddf7|\ud83c\udde8\ud83c\uddf3|\ud83c\udde9\ud83c\uddea|\ud83c\udde6\ud83c\uddf7|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfff|\ud83c\udffe|\ud83c\udffd|\ud83c\udffc|\ud83c\udffb|\ud83c\udfe4|\ud83c\udfd2|\ud83c\udfd0|\ud83c\udfcf|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc94|\ud83e\udd18|\ud83e\udd16|\ud83e\udd15|\ud83d\udecf|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udc77|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udebf|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udfce|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83d\udeb4|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83c\udde6|\ud83d\ude8b|\ud83c\udde7|\ud83d\ude8a|\ud83d\ude88|\ud83c\udde8|\ud83d\ude86|\ud83c\udde9|\ud83d\ude82|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83d\ude81|\ud83c\udded|\ud83d\ude36|\ud83d\ude34|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83d\ude2f|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83d\ude2e|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83d\ude2c|\ud83d\ude27|\ud83c\uddf8|\ud83d\ude26|\ud83c\uddf9|\ud83d\ude1f|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ud83c\udf18|\ud83c\udf1a|\ud83c\udf1c|\ud83c\udf1d|\ud83c\udf1e|\ud83c\udf2d|\ud83c\udf2e|\ud83c\udf2f|\ud83c\udf32|\ud83c\udf33|\ud83c\udf4b|\ud83c\udf50|\ud83c\udf7c|\ud83c\udfc7|\ud83c\udfc9|\ue50a|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u2728|\u2705|\u274c|\u274e|\u270a|\u270b|\u269c|\u27bf|\u27b0|\u26f8|\u26ce|\u23e9|\u23ea|\u23eb|\u23ec|\u23f0|\u23f3|\u00a9|\u00ae|\ud800\udc00)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u3297|\u3030|\u2935|\u2934|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u2709|\u2708|\u2702|\u2693|\u2668|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u2649|\u2648|\u2615|\u2614|\u2611|\u2601|\u2600|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u303d|\u270c|\u270f|\u267f|\u267b|\u264e|\u264d|\u264c|\u264b|\u264f|\u264a|\u263a|\u261d|\u260e|\u231b|\u231a|\u203c|\u27a1|\u26fd|\u26f5|\u26fa|\u26a1|\u26aa|\u26ab|\u26bd|\u26be|\u26d4|\u26c4|\u26c5|\u26a0|\u26f2|\u26f3|\u26ea|\u25ab|\u25aa|\u25fd|\u25b6|\u25fb|\u25c0|\u25fe|\u25fc|\u24c2|\u21a9|\u21aa|\u2b07|\u2b05|\u2b06|\u2b50|\u2b55|\u2b1c|\u2b1b)([\uFE0E\uFE0F]?)))/g,s=/[&<>'"]/g,t=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,u=String.fromCharCode;return p}();
\ No newline at end of file
index d7d8f0187f5feb32b9d1881b6f70acf33bea6857..60c274620332c30ba38e9df2d67e5ac65bdbe5d6 100644 (file)
@@ -161,12 +161,12 @@ function setUserSetting( name, value, _del ) {
                path = userSettings.url,
                secure = !! userSettings.secure;
 
-       name = name.toString().replace( /[^A-Za-z0-9_]/, '' );
+       name = name.toString().replace( /[^A-Za-z0-9_-]/g, '' );
 
        if ( typeof value === 'number' ) {
                value = parseInt( value, 10 );
        } else {
-               value = value.toString().replace( /[^A-Za-z0-9_]/, '' );
+               value = value.toString().replace( /[^A-Za-z0-9_-]/g, '' );
        }
 
        settings = settings || {};
index 4bb7c9a240c0fec565f7f571f6271cfdc8fd23e2..744c9fac4319f6026aad80a9923f45638a2e8928 100644 (file)
@@ -1 +1 @@
-function getUserSetting(a,b){var c=getAllUserSettings();return c.hasOwnProperty(a)?c[a]:"undefined"!=typeof b?b:""}function setUserSetting(a,b,c){if("object"!=typeof userSettings)return!1;var d=userSettings.uid,e=wpCookies.getHash("wp-settings-"+d),f=userSettings.url,g=!!userSettings.secure;return a=a.toString().replace(/[^A-Za-z0-9_]/,""),b="number"==typeof b?parseInt(b,10):b.toString().replace(/[^A-Za-z0-9_]/,""),e=e||{},c?delete e[a]:e[a]=b,wpCookies.setHash("wp-settings-"+d,e,31536e3,f,"",g),wpCookies.set("wp-settings-time-"+d,userSettings.time,31536e3,f,"",g),a}function deleteUserSetting(a){return setUserSetting(a,"",1)}function getAllUserSettings(){return"object"!=typeof userSettings?{}:wpCookies.getHash("wp-settings-"+userSettings.uid)||{}}var wpCookies={each:function(a,b,c){var d,e;if(!a)return 0;if(c=c||a,"undefined"!=typeof a.length){for(d=0,e=a.length;e>d;d++)if(b.call(c,a[d],d,a)===!1)return 0}else for(d in a)if(a.hasOwnProperty(d)&&b.call(c,a[d],d,a)===!1)return 0;return 1},getHash:function(a){var b,c=this.get(a);return c&&this.each(c.split("&"),function(a){a=a.split("="),b=b||{},b[a[0]]=a[1]}),b},setHash:function(a,b,c,d,e,f){var g="";this.each(b,function(a,b){g+=(g?"&":"")+b+"="+a}),this.set(a,g,c,d,e,f)},get:function(a){var b,c,d=document.cookie,e=a+"=";if(d){if(c=d.indexOf("; "+e),-1===c){if(c=d.indexOf(e),0!==c)return null}else c+=2;return b=d.indexOf(";",c),-1===b&&(b=d.length),decodeURIComponent(d.substring(c+e.length,b))}},set:function(a,b,c,d,e,f){var g=new Date;"object"==typeof c&&c.toGMTString?c=c.toGMTString():parseInt(c,10)?(g.setTime(g.getTime()+1e3*parseInt(c,10)),c=g.toGMTString()):c="",document.cookie=a+"="+encodeURIComponent(b)+(c?"; expires="+c:"")+(d?"; path="+d:"")+(e?"; domain="+e:"")+(f?"; secure":"")},remove:function(a,b,c,d){this.set(a,"",-1e3,b,c,d)}};
\ No newline at end of file
+function getUserSetting(a,b){var c=getAllUserSettings();return c.hasOwnProperty(a)?c[a]:"undefined"!=typeof b?b:""}function setUserSetting(a,b,c){if("object"!=typeof userSettings)return!1;var d=userSettings.uid,e=wpCookies.getHash("wp-settings-"+d),f=userSettings.url,g=!!userSettings.secure;return a=a.toString().replace(/[^A-Za-z0-9_-]/g,""),b="number"==typeof b?parseInt(b,10):b.toString().replace(/[^A-Za-z0-9_-]/g,""),e=e||{},c?delete e[a]:e[a]=b,wpCookies.setHash("wp-settings-"+d,e,31536e3,f,"",g),wpCookies.set("wp-settings-time-"+d,userSettings.time,31536e3,f,"",g),a}function deleteUserSetting(a){return setUserSetting(a,"",1)}function getAllUserSettings(){return"object"!=typeof userSettings?{}:wpCookies.getHash("wp-settings-"+userSettings.uid)||{}}var wpCookies={each:function(a,b,c){var d,e;if(!a)return 0;if(c=c||a,"undefined"!=typeof a.length){for(d=0,e=a.length;e>d;d++)if(b.call(c,a[d],d,a)===!1)return 0}else for(d in a)if(a.hasOwnProperty(d)&&b.call(c,a[d],d,a)===!1)return 0;return 1},getHash:function(a){var b,c=this.get(a);return c&&this.each(c.split("&"),function(a){a=a.split("="),b=b||{},b[a[0]]=a[1]}),b},setHash:function(a,b,c,d,e,f){var g="";this.each(b,function(a,b){g+=(g?"&":"")+b+"="+a}),this.set(a,g,c,d,e,f)},get:function(a){var b,c,d=document.cookie,e=a+"=";if(d){if(c=d.indexOf("; "+e),-1===c){if(c=d.indexOf(e),0!==c)return null}else c+=2;return b=d.indexOf(";",c),-1===b&&(b=d.length),decodeURIComponent(d.substring(c+e.length,b))}},set:function(a,b,c,d,e,f){var g=new Date;"object"==typeof c&&c.toGMTString?c=c.toGMTString():parseInt(c,10)?(g.setTime(g.getTime()+1e3*parseInt(c,10)),c=g.toGMTString()):c="",document.cookie=a+"="+encodeURIComponent(b)+(c?"; expires="+c:"")+(d?"; path="+d:"")+(e?"; domain="+e:"")+(f?"; secure":"")},remove:function(a,b,c,d){this.set(a,"",-1e3,b,c,d)}};
\ No newline at end of file
index 4c0b71d9c22cc4a40582f11b8e56f090811cff20..8b78de953f5156adf35b8a434a8b75b083a58216 100644 (file)
@@ -75,6 +75,7 @@
                if ( typeof adminpage !== 'undefined' && ( adminpage === 'post-php' || adminpage === 'post-new-php' ) &&
                        typeof wp !== 'undefined' && wp.heartbeat ) {
 
+                       $(document).off( 'heartbeat-tick.wp-auth-check' );
                        wp.heartbeat.connectNow();
                }
 
index 41a130804d7b99c6a204440755a2cc9799c7bae6..1ac98fd6b4fd13b6f77cacaca3257a2ab9603dd5 100644 (file)
@@ -1 +1 @@
-!function(a){function b(){var b,d=a("#wp-auth-check"),f=a("#wp-auth-check-form"),g=e.find(".wp-auth-fallback-expired"),h=!1;f.length&&(a(window).on("beforeunload.wp-auth-check",function(a){a.originalEvent.returnValue=window.authcheckL10n.beforeunload}),b=a('<iframe id="wp-auth-check-frame" frameborder="0">').attr("title",g.text()),b.load(function(){var b,i;h=!0;try{i=a(this).contents().find("body"),b=i.height()}catch(j){return e.addClass("fallback"),d.css("max-height",""),f.remove(),void g.focus()}b?i&&i.hasClass("interim-login-success")?c():d.css("max-height",b+40+"px"):i&&i.length||(e.addClass("fallback"),d.css("max-height",""),f.remove(),g.focus())}).attr("src",f.data("src")),a("#wp-auth-check-form").append(b)),a("body").addClass("modal-open"),e.removeClass("hidden"),b?(b.focus(),setTimeout(function(){h||(e.addClass("fallback"),f.remove(),g.focus())},1e4)):g.focus()}function c(){a(window).off("beforeunload.wp-auth-check"),"undefined"==typeof adminpage||"post-php"!==adminpage&&"post-new-php"!==adminpage||"undefined"==typeof wp||!wp.heartbeat||wp.heartbeat.connectNow(),e.fadeOut(200,function(){e.addClass("hidden").css("display",""),a("#wp-auth-check-frame").remove(),a("body").removeClass("modal-open")})}function d(){var a=parseInt(window.authcheckL10n.interval,10)||180;f=(new Date).getTime()+1e3*a}var e,f;a(document).on("heartbeat-tick.wp-auth-check",function(a,f){"wp-auth-check"in f&&(d(),!f["wp-auth-check"]&&e.hasClass("hidden")?b():f["wp-auth-check"]&&!e.hasClass("hidden")&&c())}).on("heartbeat-send.wp-auth-check",function(a,b){(new Date).getTime()>f&&(b["wp-auth-check"]=!0)}).ready(function(){d(),e=a("#wp-auth-check-wrap"),e.find(".wp-auth-check-close").on("click",function(){c()})})}(jQuery);
\ No newline at end of file
+!function(a){function b(){var b,d=a("#wp-auth-check"),f=a("#wp-auth-check-form"),g=e.find(".wp-auth-fallback-expired"),h=!1;f.length&&(a(window).on("beforeunload.wp-auth-check",function(a){a.originalEvent.returnValue=window.authcheckL10n.beforeunload}),b=a('<iframe id="wp-auth-check-frame" frameborder="0">').attr("title",g.text()),b.load(function(){var b,i;h=!0;try{i=a(this).contents().find("body"),b=i.height()}catch(j){return e.addClass("fallback"),d.css("max-height",""),f.remove(),void g.focus()}b?i&&i.hasClass("interim-login-success")?c():d.css("max-height",b+40+"px"):i&&i.length||(e.addClass("fallback"),d.css("max-height",""),f.remove(),g.focus())}).attr("src",f.data("src")),a("#wp-auth-check-form").append(b)),a("body").addClass("modal-open"),e.removeClass("hidden"),b?(b.focus(),setTimeout(function(){h||(e.addClass("fallback"),f.remove(),g.focus())},1e4)):g.focus()}function c(){a(window).off("beforeunload.wp-auth-check"),"undefined"==typeof adminpage||"post-php"!==adminpage&&"post-new-php"!==adminpage||"undefined"==typeof wp||!wp.heartbeat||(a(document).off("heartbeat-tick.wp-auth-check"),wp.heartbeat.connectNow()),e.fadeOut(200,function(){e.addClass("hidden").css("display",""),a("#wp-auth-check-frame").remove(),a("body").removeClass("modal-open")})}function d(){var a=parseInt(window.authcheckL10n.interval,10)||180;f=(new Date).getTime()+1e3*a}var e,f;a(document).on("heartbeat-tick.wp-auth-check",function(a,f){"wp-auth-check"in f&&(d(),!f["wp-auth-check"]&&e.hasClass("hidden")?b():f["wp-auth-check"]&&!e.hasClass("hidden")&&c())}).on("heartbeat-send.wp-auth-check",function(a,b){(new Date).getTime()>f&&(b["wp-auth-check"]=!0)}).ready(function(){d(),e=a("#wp-auth-check-wrap"),e.find(".wp-auth-check-close").on("click",function(){c()})})}(jQuery);
\ No newline at end of file
diff --git a/wp-includes/js/wp-embed-template.js b/wp-includes/js/wp-embed-template.js
new file mode 100644 (file)
index 0000000..ddcad26
--- /dev/null
@@ -0,0 +1,205 @@
+(function ( window, document ) {
+       'use strict';
+
+       var supportedBrowser = ( document.querySelector && window.addEventListener ),
+               loaded = false,
+               secret,
+               secretTimeout,
+               resizing;
+
+       function sendEmbedMessage( message, value ) {
+               window.parent.postMessage( {
+                       message: message,
+                       value: value,
+                       secret: secret
+               }, '*' );
+       }
+
+       function onLoad() {
+               if ( loaded ) {
+                       return;
+               }
+               loaded = true;
+
+               var share_dialog = document.querySelector( '.wp-embed-share-dialog' ),
+                       share_dialog_open = document.querySelector( '.wp-embed-share-dialog-open' ),
+                       share_dialog_close = document.querySelector( '.wp-embed-share-dialog-close' ),
+                       share_input = document.querySelectorAll( '.wp-embed-share-input' ),
+                       share_dialog_tabs = document.querySelectorAll( '.wp-embed-share-tab-button button' ),
+                       links = document.getElementsByTagName( 'a' ),
+                       i;
+
+               if ( share_input ) {
+                       for ( i = 0; i < share_input.length; i++ ) {
+                               share_input[ i ].addEventListener( 'click', function ( e ) {
+                                       e.target.select();
+                               } );
+                       }
+               }
+
+               function openSharingDialog() {
+                       share_dialog.className = share_dialog.className.replace( 'hidden', '' );
+                       // Initial focus should go on the currently selected tab in the dialog.
+                       document.querySelector( '.wp-embed-share-tab-button [aria-selected="true"]' ).focus();
+               }
+
+               function closeSharingDialog() {
+                       share_dialog.className += ' hidden';
+                       document.querySelector( '.wp-embed-share-dialog-open' ).focus();
+               }
+
+               if ( share_dialog_open ) {
+                       share_dialog_open.addEventListener( 'click', function () {
+                               openSharingDialog();
+                       } );
+               }
+
+               if ( share_dialog_close ) {
+                       share_dialog_close.addEventListener( 'click', function () {
+                               closeSharingDialog();
+                       } );
+               }
+
+               function shareClickHandler( e ) {
+                       var currentTab = document.querySelector( '.wp-embed-share-tab-button [aria-selected="true"]' );
+                       currentTab.setAttribute( 'aria-selected', 'false' );
+                       document.querySelector( '#' + currentTab.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'true' );
+
+                       e.target.setAttribute( 'aria-selected', 'true' );
+                       document.querySelector( '#' + e.target.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'false' );
+               }
+
+               function shareKeyHandler( e ) {
+                       var target = e.target,
+                               previousSibling = target.parentElement.previousElementSibling,
+                               nextSibling = target.parentElement.nextElementSibling,
+                               newTab, newTabChild;
+
+                       if ( 37 === e.keyCode ) {
+                               newTab = previousSibling;
+                       } else if ( 39 === e.keyCode ) {
+                               newTab = nextSibling;
+                       } else {
+                               return false;
+                       }
+
+                       if ( 'rtl' === document.documentElement.getAttribute( 'dir' ) ) {
+                               newTab = ( newTab === previousSibling ) ? nextSibling : previousSibling;
+                       }
+
+                       if ( newTab ) {
+                               newTabChild = newTab.firstElementChild;
+
+                               target.setAttribute( 'tabindex', '-1' );
+                               target.setAttribute( 'aria-selected', false );
+                               document.querySelector( '#' + target.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'true' );
+
+                               newTabChild.setAttribute( 'tabindex', '0' );
+                               newTabChild.setAttribute( 'aria-selected', 'true' );
+                               newTabChild.focus();
+                               document.querySelector( '#' + newTabChild.getAttribute( 'aria-controls' ) ).setAttribute( 'aria-hidden', 'false' );
+                       }
+               }
+
+               if ( share_dialog_tabs ) {
+                       for ( i = 0; i < share_dialog_tabs.length; i++ ) {
+                               share_dialog_tabs[ i ].addEventListener( 'click', shareClickHandler );
+
+                               share_dialog_tabs[ i ].addEventListener( 'keydown', shareKeyHandler );
+                       }
+               }
+
+               document.addEventListener( 'keydown', function ( e ) {
+                       if ( 27 === e.keyCode && -1 === share_dialog.className.indexOf( 'hidden' ) ) {
+                               closeSharingDialog();
+                       } else if ( 9 === e.keyCode ) {
+                               constrainTabbing( e );
+                       }
+               }, false );
+
+               function constrainTabbing( e ) {
+                       // Need to re-get the selected tab each time.
+                       var firstFocusable = document.querySelector( '.wp-embed-share-tab-button [aria-selected="true"]' );
+
+                       if ( share_dialog_close === e.target && ! e.shiftKey ) {
+                               firstFocusable.focus();
+                               e.preventDefault();
+                       } else if ( firstFocusable === e.target && e.shiftKey ) {
+                               share_dialog_close.focus();
+                               e.preventDefault();
+                       }
+               }
+
+               if ( window.self === window.top ) {
+                       return;
+               }
+
+               /**
+                * Send this document's height to the parent (embedding) site.
+                */
+               sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) );
+
+               /**
+                * Detect clicks to external (_top) links.
+                */
+               function linkClickHandler( e ) {
+                       var target = e.target,
+                               href;
+                       if ( target.hasAttribute( 'href' ) ) {
+                               href = target.getAttribute( 'href' );
+                       } else {
+                               href = target.parentElement.getAttribute( 'href' );
+                       }
+
+                       /**
+                        * Send link target to the parent (embedding) site.
+                        */
+                       sendEmbedMessage( 'link', href );
+                       e.preventDefault();
+               }
+
+               for ( i = 0; i < links.length; i++ ) {
+                       links[ i ].addEventListener( 'click', linkClickHandler );
+               }
+       }
+
+       /**
+        * Iframe resize handler.
+        */
+       function onResize() {
+               if ( window.self === window.top ) {
+                       return;
+               }
+
+               clearTimeout( resizing );
+
+               resizing = setTimeout( function () {
+                       sendEmbedMessage( 'height', Math.ceil( document.body.getBoundingClientRect().height ) );
+               }, 100 );
+       }
+
+       /**
+        * Re-get the secret when it was added later on.
+        */
+       function getSecret() {
+               if ( window.self === window.top || !!secret ) {
+                       return;
+               }
+
+               secret = window.location.hash.replace( /.*secret=([\d\w]{10}).*/, '$1' );
+
+               clearTimeout( secretTimeout );
+
+               secretTimeout = setTimeout( function () {
+                       getSecret();
+               }, 100 );
+       }
+
+       if ( supportedBrowser ) {
+               getSecret();
+               document.documentElement.className = document.documentElement.className.replace( /\bno-js\b/, '' ) + ' js';
+               document.addEventListener( 'DOMContentLoaded', onLoad, false );
+               window.addEventListener( 'load', onLoad, false );
+               window.addEventListener( 'resize', onResize, false );
+       }
+})( window, document );
diff --git a/wp-includes/js/wp-embed-template.min.js b/wp-includes/js/wp-embed-template.min.js
new file mode 100644 (file)
index 0000000..7f8c1b5
--- /dev/null
@@ -0,0 +1 @@
+!function(a,b){"use strict";function c(b,c){a.parent.postMessage({message:b,value:c,secret:g},"*")}function d(){function d(){l.className=l.className.replace("hidden",""),b.querySelector('.wp-embed-share-tab-button [aria-selected="true"]').focus()}function e(){l.className+=" hidden",b.querySelector(".wp-embed-share-dialog-open").focus()}function f(a){var c=b.querySelector('.wp-embed-share-tab-button [aria-selected="true"]');c.setAttribute("aria-selected","false"),b.querySelector("#"+c.getAttribute("aria-controls")).setAttribute("aria-hidden","true"),a.target.setAttribute("aria-selected","true"),b.querySelector("#"+a.target.getAttribute("aria-controls")).setAttribute("aria-hidden","false")}function g(a){var c,d,e=a.target,f=e.parentElement.previousElementSibling,g=e.parentElement.nextElementSibling;if(37===a.keyCode)c=f;else{if(39!==a.keyCode)return!1;c=g}"rtl"===b.documentElement.getAttribute("dir")&&(c=c===f?g:f),c&&(d=c.firstElementChild,e.setAttribute("tabindex","-1"),e.setAttribute("aria-selected",!1),b.querySelector("#"+e.getAttribute("aria-controls")).setAttribute("aria-hidden","true"),d.setAttribute("tabindex","0"),d.setAttribute("aria-selected","true"),d.focus(),b.querySelector("#"+d.getAttribute("aria-controls")).setAttribute("aria-hidden","false"))}function h(a){var c=b.querySelector('.wp-embed-share-tab-button [aria-selected="true"]');n!==a.target||a.shiftKey?c===a.target&&a.shiftKey&&(n.focus(),a.preventDefault()):(c.focus(),a.preventDefault())}function i(a){var b,d=a.target;b=d.hasAttribute("href")?d.getAttribute("href"):d.parentElement.getAttribute("href"),c("link",b),a.preventDefault()}if(!k){k=!0;var j,l=b.querySelector(".wp-embed-share-dialog"),m=b.querySelector(".wp-embed-share-dialog-open"),n=b.querySelector(".wp-embed-share-dialog-close"),o=b.querySelectorAll(".wp-embed-share-input"),p=b.querySelectorAll(".wp-embed-share-tab-button button"),q=b.getElementsByTagName("a");if(o)for(j=0;j<o.length;j++)o[j].addEventListener("click",function(a){a.target.select()});if(m&&m.addEventListener("click",function(){d()}),n&&n.addEventListener("click",function(){e()}),p)for(j=0;j<p.length;j++)p[j].addEventListener("click",f),p[j].addEventListener("keydown",g);if(b.addEventListener("keydown",function(a){27===a.keyCode&&-1===l.className.indexOf("hidden")?e():9===a.keyCode&&h(a)},!1),a.self!==a.top)for(c("height",Math.ceil(b.body.getBoundingClientRect().height)),j=0;j<q.length;j++)q[j].addEventListener("click",i)}}function e(){a.self!==a.top&&(clearTimeout(i),i=setTimeout(function(){c("height",Math.ceil(b.body.getBoundingClientRect().height))},100))}function f(){a.self===a.top||g||(g=a.location.hash.replace(/.*secret=([\d\w]{10}).*/,"$1"),clearTimeout(h),h=setTimeout(function(){f()},100))}var g,h,i,j=b.querySelector&&a.addEventListener,k=!1;j&&(f(),b.documentElement.className=b.documentElement.className.replace(/\bno-js\b/,"")+" js",b.addEventListener("DOMContentLoaded",d,!1),a.addEventListener("load",d,!1),a.addEventListener("resize",e,!1))}(window,document);
\ No newline at end of file
diff --git a/wp-includes/js/wp-embed.js b/wp-includes/js/wp-embed.js
new file mode 100644 (file)
index 0000000..660558e
--- /dev/null
@@ -0,0 +1,128 @@
+/**
+ * WordPress inline HTML embed
+ *
+ * @since 4.4.0
+ *
+ * This file cannot have ampersands in it. This is to ensure
+ * it can be embedded in older versions of WordPress.
+ * See https://core.trac.wordpress.org/changeset/35708.
+ */
+(function ( window, document ) {
+       'use strict';
+
+       var supportedBrowser = false,
+               loaded = false;
+
+               if ( document.querySelector ) {
+                       if ( window.addEventListener ) {
+                               supportedBrowser = true;
+                       }
+               }
+
+       window.wp = window.wp || {};
+
+       if ( !! window.wp.receiveEmbedMessage ) {
+               return;
+       }
+
+       window.wp.receiveEmbedMessage = function( e ) {
+               var data = e.data;
+               if ( ! ( data.secret || data.message || data.value ) ) {
+                       return;
+               }
+
+               if ( /[^a-zA-Z0-9]/.test( data.secret ) ) {
+                       return;
+               }
+
+               var iframes = document.querySelectorAll( 'iframe[data-secret="' + data.secret + '"]' ),
+                       blockquotes = document.querySelectorAll( 'blockquote[data-secret="' + data.secret + '"]' ),
+                       i, source, height, sourceURL, targetURL;
+
+               for ( i = 0; i < blockquotes.length; i++ ) {
+                       blockquotes[ i ].style.display = 'none';
+               }
+
+               for ( i = 0; i < iframes.length; i++ ) {
+                       source = iframes[ i ];
+
+                       if ( e.source !== source.contentWindow ) {
+                               continue;
+                       }
+
+                       source.style.display = '';
+
+                       /* Resize the iframe on request. */
+                       if ( 'height' === data.message ) {
+                               height = parseInt( data.value, 10 );
+                               if ( height > 1000 ) {
+                                       height = 1000;
+                               } else if ( ~~height < 200 ) {
+                                       height = 200;
+                               }
+
+                               source.height = height;
+                       }
+
+                       /* Link to a specific URL on request. */
+                       if ( 'link' === data.message ) {
+                               sourceURL = document.createElement( 'a' );
+                               targetURL = document.createElement( 'a' );
+
+                               sourceURL.href = source.getAttribute( 'src' );
+                               targetURL.href = data.value;
+
+                               /* Only continue if link hostname matches iframe's hostname. */
+                               if ( targetURL.host === sourceURL.host ) {
+                                       if ( document.activeElement === source ) {
+                                               window.top.location.href = data.value;
+                                       }
+                               }
+                       }
+               }
+       };
+
+       function onLoad() {
+               if ( loaded ) {
+                       return;
+               }
+               loaded = true;
+
+               var isIE10 = -1 !== navigator.appVersion.indexOf( 'MSIE 10' ),
+                       isIE11 = !!navigator.userAgent.match( /Trident.*rv:11\./ ),
+                       iframes = document.querySelectorAll( 'iframe.wp-embedded-content' ),
+                       blockquotes = document.querySelectorAll( 'blockquote.wp-embedded-content' ),
+                       iframeClone, i, source, secret;
+
+               for ( i = 0; i < blockquotes.length; i++ ) {
+                       blockquotes[ i ].style.display = 'none';
+               }
+
+               for ( i = 0; i < iframes.length; i++ ) {
+                       source = iframes[ i ];
+                       source.style.display = '';
+
+                       if ( source.getAttribute( 'data-secret' ) ) {
+                               continue;
+                       }
+
+                       /* Add secret to iframe */
+                       secret = Math.random().toString( 36 ).substr( 2, 10 );
+                       source.src += '#?secret=' + secret;
+                       source.setAttribute( 'data-secret', secret );
+
+                       /* Remove security attribute from iframes in IE10 and IE11. */
+                       if ( ( isIE10 || isIE11 ) ) {
+                               iframeClone = source.cloneNode( true );
+                               iframeClone.removeAttribute( 'security' );
+                               source.parentNode.replaceChild( iframeClone, source );
+                       }
+               }
+       }
+
+       if ( supportedBrowser ) {
+               window.addEventListener( 'message', window.wp.receiveEmbedMessage, false );
+               document.addEventListener( 'DOMContentLoaded', onLoad, false );
+               window.addEventListener( 'load', onLoad, false );
+       }
+})( window, document );
diff --git a/wp-includes/js/wp-embed.min.js b/wp-includes/js/wp-embed.min.js
new file mode 100644 (file)
index 0000000..6c4be09
--- /dev/null
@@ -0,0 +1 @@
+!function(a,b){"use strict";function c(){if(!e){e=!0;var a,c,d,f,g=-1!==navigator.appVersion.indexOf("MSIE 10"),h=!!navigator.userAgent.match(/Trident.*rv:11\./),i=b.querySelectorAll("iframe.wp-embedded-content"),j=b.querySelectorAll("blockquote.wp-embedded-content");for(c=0;c<j.length;c++)j[c].style.display="none";for(c=0;c<i.length;c++)if(d=i[c],d.style.display="",!d.getAttribute("data-secret")){if(f=Math.random().toString(36).substr(2,10),d.src+="#?secret="+f,d.setAttribute("data-secret",f),g||h)a=d.cloneNode(!0),a.removeAttribute("security"),d.parentNode.replaceChild(a,d)}else;}}var d=!1,e=!1;if(b.querySelector)if(a.addEventListener)d=!0;if(a.wp=a.wp||{},!a.wp.receiveEmbedMessage)if(a.wp.receiveEmbedMessage=function(c){var d=c.data;if(d.secret||d.message||d.value)if(!/[^a-zA-Z0-9]/.test(d.secret)){var e,f,g,h,i,j=b.querySelectorAll('iframe[data-secret="'+d.secret+'"]'),k=b.querySelectorAll('blockquote[data-secret="'+d.secret+'"]');for(e=0;e<k.length;e++)k[e].style.display="none";for(e=0;e<j.length;e++)if(f=j[e],c.source===f.contentWindow){if(f.style.display="","height"===d.message){if(g=parseInt(d.value,10),g>1e3)g=1e3;else if(200>~~g)g=200;f.height=g}if("link"===d.message)if(h=b.createElement("a"),i=b.createElement("a"),h.href=f.getAttribute("src"),i.href=d.value,i.host===h.host)if(b.activeElement===f)a.top.location.href=d.value}else;}},d)a.addEventListener("message",a.wp.receiveEmbedMessage,!1),b.addEventListener("DOMContentLoaded",c,!1),a.addEventListener("load",c,!1)}(window,document);
\ No newline at end of file
index 619157f71007ebd44bbaad39d03b59663e28c954..a495f3552b847899b66b96ff2ff49fcd05729367 100644 (file)
                context.textBaseline = 'top';
                context.font = '600 32px Arial';
 
-               if ( type === 'flag' ) {
+               if ( 'flag' === type ) {
                        /*
                         * This works because the image will be one of three things:
                         * - Two empty squares, if the browser doesn't render emoji
-                        * - Two squares with 'G' and 'B' in them, if the browser doesn't render flag emoji
-                        * - The British flag
+                        * - Two squares with 'A' and 'U' in them, if the browser doesn't render flag emoji
+                        * - The Australian flag
                         *
                         * The first two will encode to small images (1-2KB data URLs), the third will encode
                         * to a larger image (4-5KB data URL).
                         */
-                       context.fillText( String.fromCharCode( 55356, 56812, 55356, 56807 ), 0, 0 );
+                       context.fillText( String.fromCharCode( 55356, 56806, 55356, 56826 ), 0, 0 );
                        return canvas.toDataURL().length > 3000;
                } else {
-                       /*
-                        * This creates a smiling emoji, and checks to see if there is any image data in the
-                        * center pixel. In browsers that don't support emoji, the character will be rendered
-                        * as an empty square, so the center pixel will be blank.
-                        */
-                       context.fillText( String.fromCharCode( 55357, 56835 ), 0, 0 );
+                       if ( 'simple' === type ) {
+                               /*
+                                * This creates a smiling emoji, and checks to see if there is any image data in the
+                                * center pixel. In browsers that don't support emoji, the character will be rendered
+                                * as an empty square, so the center pixel will be blank.
+                                */
+                               context.fillText( String.fromCharCode( 55357, 56835 ), 0, 0 );
+                       } else {
+                               /*
+                                * To check for Unicode 8 support, let's try rendering the most important advancement
+                                * that the Unicode Consortium have made in years: the burrito.
+                                */
+                               context.fillText( String.fromCharCode( 55356, 57135 ), 0, 0 );
+                       }
                        return context.getImageData( 16, 16, 1, 1 ).data[0] !== 0;
                }
        }
@@ -58,8 +66,9 @@
        }
 
        settings.supports = {
-               simple: browserSupportsEmoji( 'simple' ),
-               flag:   browserSupportsEmoji( 'flag' )
+               simple:   browserSupportsEmoji( 'simple' ),
+               flag:     browserSupportsEmoji( 'flag' ),
+               unicode8: browserSupportsEmoji( 'unicode8' )
        };
 
        settings.DOMReady = false;
@@ -67,7 +76,7 @@
                settings.DOMReady = true;
        };
 
-       if ( ! settings.supports.simple || ! settings.supports.flag ) {
+       if ( ! settings.supports.simple || ! settings.supports.flag || ! settings.supports.unicode8 ) {
                ready = function() {
                        settings.readyCallback();
                };
index d3ea75aabb7a5af02262ef2a2ec38a96a8fc39ce..03f21d768efa533af2d80a74130226e56ae9f4d6 100644 (file)
@@ -1 +1 @@
-!function(a,b,c){function d(a){var c=b.createElement("canvas"),d=c.getContext&&c.getContext("2d");return d&&d.fillText?(d.textBaseline="top",d.font="600 32px Arial","flag"===a?(d.fillText(String.fromCharCode(55356,56812,55356,56807),0,0),c.toDataURL().length>3e3):(d.fillText(String.fromCharCode(55357,56835),0,0),0!==d.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
\ No newline at end of file
+!function(a,b,c){function d(a){var c=b.createElement("canvas"),d=c.getContext&&c.getContext("2d");return d&&d.fillText?(d.textBaseline="top",d.font="600 32px Arial","flag"===a?(d.fillText(String.fromCharCode(55356,56806,55356,56826),0,0),c.toDataURL().length>3e3):("simple"===a?d.fillText(String.fromCharCode(55357,56835),0,0):d.fillText(String.fromCharCode(55356,57135),0,0),0!==d.getImageData(16,16,1,1).data[0])):!1}function e(a){var c=b.createElement("script");c.src=a,c.type="text/javascript",b.getElementsByTagName("head")[0].appendChild(c)}var f,g;c.supports={simple:d("simple"),flag:d("flag"),unicode8:d("unicode8")},c.DOMReady=!1,c.readyCallback=function(){c.DOMReady=!0},c.supports.simple&&c.supports.flag&&c.supports.unicode8||(g=function(){c.readyCallback()},b.addEventListener?(b.addEventListener("DOMContentLoaded",g,!1),a.addEventListener("load",g,!1)):(a.attachEvent("onload",g),b.attachEvent("onreadystatechange",function(){"complete"===b.readyState&&c.readyCallback()})),f=c.source||{},f.concatemoji?e(f.concatemoji):f.wpemoji&&f.twemoji&&(e(f.twemoji),e(f.wpemoji)))}(window,document,window._wpemojiSettings);
\ No newline at end of file
index 8273d09076ea1edfd107d018ddc542127b77b75d..6b9972b4bcfe32c27a61aa806044de136140f8bf 100644 (file)
@@ -1,4 +1,4 @@
 // Source: wp-includes/js/twemoji.min.js
-var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(s,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||t.test(c.nodeName)||d(c,b);return b}function e(a,b){return o("\ufe0f"===b?a.slice(0,-1):3===a.length&&"\ufe0f"===a.charAt(1)?a.charAt(0)+a.charAt(2):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,q,s,t,u,v=d(b,[]),w=v.length;w--;){for(h=!1,i=document.createDocumentFragment(),j=v[w],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),q=l[0],s=l[1],t=l[2],m=n+q.length,"\ufe0e"!==t&&(u=c.callback(e(s,t),c,t))){o=new Image,o.onerror=p.onerror,o.setAttribute("draggable","false"),f=c.attributes(s,t);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=q,o.src=u,h=!0,i.appendChild(o)}o||i.appendChild(a(q)),o=null}h&&(m<k.length&&i.appendChild(a(k.slice(m))),j.parentNode.replaceChild(i,j))}return b}function g(a,c){return m(a,function(a,d,f){var g,h,i,j=a;if("\ufe0e"!==f&&(i=c.callback(e(d,f),c,f))){j="<img ".concat('class="',c.className,'" ','draggable="false" ','alt="',a,'"',' src="',i,'"'),g=c.attributes(d,f);for(h in g)g.hasOwnProperty(h)&&0!==h.indexOf("on")&&-1===j.indexOf(" "+h+"=")&&(j=j.concat(" ",h,'="',b(g[h]),'"'));j=j.concat(">")}return j})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return 65536>b?u(b):(b-=65536,u(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f<a.length;)d=a.charCodeAt(f++),e?(c.push((65536+(e-55296<<10)+(d-56320)).toString(16)),e=0):d>=55296&&56319>=d?e=d:c.push(d.toString(16));return c.join(b||"-")}var p={base:("https:"===location.protocol?"https:":"http:")+"//twemoji.maxcdn.com/",ext:".png",size:"36x36",className:"emoji",convert:{fromCodePoint:k,toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(a(this.alt),this)},parse:l,replace:m,test:n},q={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},r=/((?:\ud83c\udde8\ud83c\uddf3|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddef\ud83c\uddf5|\ud83c\uddee\ud83c\uddf9|\ud83c\uddec\ud83c\udde7|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddea\ud83c\uddf8|\ud83c\udde9\ud83c\uddea|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83d\ude8b|\ud83d\ude8a|\ud83d\ude88|\ud83d\ude86|\ud83d\ude82|\ud83d\ude81|\ud83d\ude36|\ud83d\ude34|\ud83d\ude2f|\ud83d\ude2e|\ud83d\ude2c|\ud83d\ude27|\ud83d\ude26|\ud83d\ude1f|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfe4|\ud83c\udfc9|\ud83c\udfc7|\ud83c\udf7c|\ud83c\udf50|\ud83c\udf4b|\ud83c\udf33|\ud83c\udf32|\ud83c\udf1e|\ud83c\udf1d|\ud83c\udf1c|\ud83c\udf1a|\ud83c\udf18|\ud83c\udccf|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc77|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83d\udebf|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83c\ude01|\ud83c\ude02|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude37|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udeb4|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udc94|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udde6|\ud83c\udde7|\ud83c\udde8|\ud83c\udde9|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83c\udded|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83c\uddf8|\ud83c\uddf9|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ue50a|\u3030|\u27b0|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u274e|\u274c|\u2728|\u270b|\u270a|\u2705|\u26ce|\u23f3|\u23f0|\u23ec|\u23eb|\u23ea|\u23e9|\u2122|\u27bf|\u00a9|\u00ae)|(?:(?:\ud83c\udc04|\ud83c\udd7f|\ud83c\ude1a|\ud83c\ude2f|\u3299|\u303d|\u2b55|\u2b50|\u2b1c|\u2b1b|\u2b07|\u2b06|\u2b05|\u2935|\u2934|\u27a1|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u270f|\u270c|\u2709|\u2708|\u2702|\u26fd|\u26fa|\u26f5|\u26f3|\u26f2|\u26ea|\u26d4|\u26c5|\u26c4|\u26be|\u26bd|\u26ab|\u26aa|\u26a1|\u26a0|\u2693|\u267f|\u267b|\u3297|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u264f|\u264e|\u264d|\u264c|\u264b|\u264a|\u2649|\u2648|\u263a|\u261d|\u2615|\u2614|\u2611|\u260e|\u2601|\u2600|\u25fe|\u25fd|\u25fc|\u25fb|\u25c0|\u25b6|\u25ab|\u25aa|\u24c2|\u231b|\u231a|\u21aa|\u21a9|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2049|\u203c|\u2668)([\uFE0E\uFE0F]?)))/g,s=/[&<>'"]/g,t=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,u=String.fromCharCode;return p}();
+var twemoji=function(){"use strict";function a(a){return document.createTextNode(a)}function b(a){return a.replace(s,h)}function c(a,b){return"".concat(b.base,b.size,"/",a,b.ext)}function d(a,b){for(var c,e,f=a.childNodes,g=f.length;g--;)c=f[g],e=c.nodeType,3===e?b.push(c):1!==e||t.test(c.nodeName)||d(c,b);return b}function e(a,b){return o("\ufe0f"===b?a.slice(0,-1):3===a.length&&"\ufe0f"===a.charAt(1)?a.charAt(0)+a.charAt(2):a)}function f(b,c){for(var f,g,h,i,j,k,l,m,n,o,p,q,s,t,u=d(b,[]),v=u.length;v--;){for(h=!1,i=document.createDocumentFragment(),j=u[v],k=j.nodeValue,m=0;l=r.exec(k);){if(n=l.index,n!==m&&i.appendChild(a(k.slice(m,n))),p=l[0],q=l[1],s=l[2],m=n+p.length,"\ufe0e"!==s&&(t=c.callback(e(q,s),c,s))){o=new Image,o.onerror=c.onerror,o.setAttribute("draggable","false"),f=c.attributes(q,s);for(g in f)f.hasOwnProperty(g)&&0!==g.indexOf("on")&&!o.hasAttribute(g)&&o.setAttribute(g,f[g]);o.className=c.className,o.alt=p,o.src=t,h=!0,i.appendChild(o)}o||i.appendChild(a(p)),o=null}h&&(m<k.length&&i.appendChild(a(k.slice(m))),j.parentNode.replaceChild(i,j))}return b}function g(a,c){return m(a,function(a,d,f){var g,h,i,j=a;if("\ufe0e"!==f&&(i=c.callback(e(d,f),c,f))){j="<img ".concat('class="',c.className,'" ','draggable="false" ','alt="',a,'"',' src="',i,'"'),g=c.attributes(d,f);for(h in g)g.hasOwnProperty(h)&&0!==h.indexOf("on")&&-1===j.indexOf(" "+h+"=")&&(j=j.concat(" ",h,'="',b(g[h]),'"'));j=j.concat(">")}return j})}function h(a){return q[a]}function i(){return null}function j(a){return"number"==typeof a?a+"x"+a:a}function k(a){var b="string"==typeof a?parseInt(a,16):a;return 65536>b?u(b):(b-=65536,u(55296+(b>>10),56320+(1023&b)))}function l(a,b){return b&&"function"!=typeof b||(b={callback:b}),("string"==typeof a?g:f)(a,{callback:b.callback||c,attributes:"function"==typeof b.attributes?b.attributes:i,base:"string"==typeof b.base?b.base:p.base,ext:b.ext||p.ext,size:b.folder||j(b.size||p.size),className:b.className||p.className,onerror:b.onerror||p.onerror})}function m(a,b){return String(a).replace(r,b)}function n(a){r.lastIndex=0;var b=r.test(a);return r.lastIndex=0,b}function o(a,b){for(var c=[],d=0,e=0,f=0;f<a.length;)d=a.charCodeAt(f++),e?(c.push((65536+(e-55296<<10)+(d-56320)).toString(16)),e=0):d>=55296&&56319>=d?e=d:c.push(d.toString(16));return c.join(b||"-")}var p={base:("https:"===location.protocol?"https:":"http:")+"//twemoji.maxcdn.com/",ext:".png",size:"36x36",className:"emoji",convert:{fromCodePoint:k,toCodePoint:o},onerror:function(){this.parentNode&&this.parentNode.replaceChild(a(this.alt),this)},parse:l,replace:m,test:n},q={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#39;",'"':"&quot;"},r=/((?:\u0039\ufe0f\u20e3|\u0038\ufe0f\u20e3|\u0037\ufe0f\u20e3|\u0036\ufe0f\u20e3|\u0035\ufe0f\u20e3|\u0034\ufe0f\u20e3|\u0033\ufe0f\u20e3|\u0032\ufe0f\u20e3|\u0031\ufe0f\u20e3|\u0030\ufe0f\u20e3|\u0023\ufe0f\u20e3|\ud83c\uddea\ud83c\uddf8|\ud83c\uddeb\ud83c\uddf7|\ud83c\uddec\ud83c\udde7|\ud83c\uddee\ud83c\uddf9|\ud83c\uddef\ud83c\uddf5|\ud83c\uddf0\ud83c\uddf7|\ud83c\uddf7\ud83c\uddfa|\ud83c\uddfa\ud83c\uddf8|\ud83c\uddea\ud83c\udde8|\ud83c\udde9\ud83c\uddff|\ud83c\uddf9\ud83c\uddf7|\ud83c\udde8\ud83c\uddf7|\ud83c\uddfa\ud83c\uddfe|\ud83c\udde8\ud83c\udde6|\ud83c\uddf8\ud83c\uddec|\ud83c\udde7\ud83c\uddf7|\ud83c\uddf8\ud83c\udde6|\ud83c\udde6\ud83c\uddfa|\ud83c\uddf5\ud83c\uddf9|\ud83c\uddf2\ud83c\uddfd|\ud83c\uddee\ud83c\uddf7|\ud83c\uddee\ud83c\uddf3|\ud83c\udded\ud83c\uddf7|\ud83c\udde8\ud83c\uddf3|\ud83c\udde9\ud83c\uddea|\ud83c\udde6\ud83c\uddf7|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\u0039\ufe0f?\u20e3|\u0038\ufe0f?\u20e3|\u0037\ufe0f?\u20e3|\u0036\ufe0f?\u20e3|\u0035\ufe0f?\u20e3|\u0034\ufe0f?\u20e3|\u0033\ufe0f?\u20e3|\u0032\ufe0f?\u20e3|\u0031\ufe0f?\u20e3|\u0030\ufe0f?\u20e3|\u0023\ufe0f?\u20e3|\ud83d\ude1b|\ud83d\ude19|\ud83d\ude17|\ud83d\ude15|\ud83d\ude11|\ud83d\ude10|\ud83d\ude0e|\ud83d\ude08|\ud83d\ude07|\ud83d\ude00|\ud83d\udd67|\ud83d\udd66|\ud83d\udd65|\ud83d\udd64|\ud83d\udd63|\ud83d\udd62|\ud83d\udd61|\ud83d\udd60|\ud83d\udd5f|\ud83d\udd5e|\ud83d\udd5d|\ud83d\udd5c|\ud83d\udd2d|\ud83d\udd2c|\ud83d\udd15|\ud83d\udd09|\ud83d\udd08|\ud83d\udd07|\ud83d\udd06|\ud83d\udd05|\ud83d\udd04|\ud83d\udd02|\ud83d\udd01|\ud83d\udd00|\ud83d\udcf5|\ud83d\udcef|\ud83d\udced|\ud83d\udcec|\ud83d\udcb7|\ud83d\udcb6|\ud83d\udcad|\ud83d\udc6d|\ud83d\udc6c|\ud83d\udc65|\ud83d\udc2a|\ud83d\udc16|\ud83d\udc15|\ud83d\udc13|\ud83d\udc10|\ud83d\udc0f|\ud83d\udc0b|\ud83d\udc0a|\ud83d\udc09|\ud83d\udc08|\ud83d\udc07|\ud83d\udc06|\ud83d\udc05|\ud83d\udc04|\ud83d\udc03|\ud83d\udc02|\ud83d\udc01|\ud83d\udc00|\ud83c\udfff|\ud83c\udffe|\ud83c\udffd|\ud83c\udffc|\ud83c\udffb|\ud83c\udfe4|\ud83c\udfd2|\ud83c\udfd0|\ud83c\udfcf|\ud83c\udccf|\ud83c\udd8e|\ud83c\udd91|\ud83c\udd92|\ud83c\udd93|\ud83c\udd94|\ud83c\udd95|\ud83c\udd96|\ud83c\udd97|\ud83c\udd98|\ud83c\udd99|\ud83c\udd9a|\ud83d\udc94|\ud83e\udd18|\ud83e\udd16|\ud83e\udd15|\ud83d\udecf|\ud83d\udec5|\ud83d\udec4|\ud83d\udec3|\ud83d\udec2|\ud83d\udec1|\ud83c\ude01|\ud83c\ude32|\ud83c\ude33|\ud83c\ude34|\ud83c\ude35|\ud83c\ude36|\ud83c\ude38|\ud83c\ude39|\ud83c\ude3a|\ud83c\ude50|\ud83c\ude51|\ud83c\udf00|\ud83c\udf01|\ud83c\udf02|\ud83c\udf03|\ud83c\udf04|\ud83c\udf05|\ud83c\udf06|\ud83c\udf07|\ud83c\udf08|\ud83c\udf09|\ud83c\udf0a|\ud83c\udf0b|\ud83c\udf0c|\ud83c\udf0f|\ud83c\udf11|\ud83c\udf13|\ud83c\udf14|\ud83c\udf15|\ud83c\udf19|\ud83c\udf1b|\ud83c\udf1f|\ud83c\udf20|\ud83c\udf30|\ud83c\udf31|\ud83c\udf34|\ud83c\udf35|\ud83c\udf37|\ud83c\udf38|\ud83c\udf39|\ud83c\udf3a|\ud83c\udf3b|\ud83c\udf3c|\ud83c\udf3d|\ud83c\udf3e|\ud83c\udf3f|\ud83c\udf40|\ud83c\udf41|\ud83c\udf42|\ud83c\udf43|\ud83c\udf44|\ud83c\udf45|\ud83c\udf46|\ud83c\udf47|\ud83c\udf48|\ud83c\udf49|\ud83c\udf4a|\ud83c\udf4c|\ud83c\udf4d|\ud83c\udf4e|\ud83c\udf4f|\ud83c\udf51|\ud83c\udf52|\ud83c\udf53|\ud83c\udf54|\ud83c\udf55|\ud83c\udf56|\ud83c\udf57|\ud83c\udf58|\ud83c\udf59|\ud83c\udf5a|\ud83c\udf5b|\ud83c\udf5c|\ud83c\udf5d|\ud83c\udf5e|\ud83c\udf5f|\ud83c\udf60|\ud83c\udf61|\ud83c\udf62|\ud83c\udf63|\ud83c\udf64|\ud83c\udf65|\ud83c\udf66|\ud83c\udf67|\ud83c\udf68|\ud83c\udf69|\ud83c\udf6a|\ud83c\udf6b|\ud83c\udf6c|\ud83c\udf6d|\ud83c\udf6e|\ud83c\udf6f|\ud83c\udf70|\ud83c\udf71|\ud83c\udf72|\ud83c\udf73|\ud83c\udf74|\ud83c\udf75|\ud83c\udf76|\ud83c\udf77|\ud83c\udf78|\ud83c\udf79|\ud83c\udf7a|\ud83c\udf7b|\ud83c\udf80|\ud83c\udf81|\ud83c\udf82|\ud83c\udf83|\ud83c\udf84|\ud83c\udf85|\ud83c\udf86|\ud83c\udf87|\ud83c\udf88|\ud83c\udf89|\ud83c\udf8a|\ud83c\udf8b|\ud83c\udf8c|\ud83c\udf8d|\ud83c\udf8e|\ud83c\udf8f|\ud83c\udf90|\ud83c\udf91|\ud83c\udf92|\ud83c\udf93|\ud83c\udfa0|\ud83c\udfa1|\ud83c\udfa2|\ud83c\udfa3|\ud83c\udfa4|\ud83c\udfa5|\ud83c\udfa6|\ud83c\udfa7|\ud83c\udfa8|\ud83c\udfa9|\ud83c\udfaa|\ud83c\udfab|\ud83c\udfac|\ud83c\udfad|\ud83c\udfae|\ud83c\udfaf|\ud83c\udfb0|\ud83c\udfb1|\ud83c\udfb2|\ud83c\udfb3|\ud83c\udfb4|\ud83c\udfb5|\ud83c\udfb6|\ud83c\udfb7|\ud83c\udfb8|\ud83c\udfb9|\ud83c\udfba|\ud83c\udfbb|\ud83c\udfbc|\ud83c\udfbd|\ud83c\udfbe|\ud83c\udfbf|\ud83c\udfc0|\ud83c\udfc1|\ud83c\udfc2|\ud83c\udfc3|\ud83c\udfc4|\ud83c\udfc6|\ud83c\udfc8|\ud83c\udfca|\ud83c\udfe0|\ud83c\udfe1|\ud83c\udfe2|\ud83c\udfe3|\ud83c\udfe5|\ud83c\udfe6|\ud83c\udfe7|\ud83c\udfe8|\ud83c\udfe9|\ud83c\udfea|\ud83c\udfeb|\ud83c\udfec|\ud83c\udfed|\ud83c\udfee|\ud83c\udfef|\ud83c\udff0|\ud83d\udc0c|\ud83d\udc0d|\ud83d\udc0e|\ud83d\udc11|\ud83d\udc12|\ud83d\udc14|\ud83d\udc17|\ud83d\udc18|\ud83d\udc19|\ud83d\udc1a|\ud83d\udc1b|\ud83d\udc1c|\ud83d\udc1d|\ud83d\udc1e|\ud83d\udc1f|\ud83d\udc20|\ud83d\udc21|\ud83d\udc22|\ud83d\udc23|\ud83d\udc24|\ud83d\udc25|\ud83d\udc26|\ud83d\udc27|\ud83d\udc28|\ud83d\udc29|\ud83d\udc2b|\ud83d\udc2c|\ud83d\udc2d|\ud83d\udc2e|\ud83d\udc2f|\ud83d\udc30|\ud83d\udc31|\ud83d\udc32|\ud83d\udc33|\ud83d\udc34|\ud83d\udc35|\ud83d\udc36|\ud83d\udc37|\ud83d\udc38|\ud83d\udc39|\ud83d\udc3a|\ud83d\udc3b|\ud83d\udc3c|\ud83d\udc3d|\ud83d\udc3e|\ud83d\udc40|\ud83d\udc42|\ud83d\udc43|\ud83d\udc44|\ud83d\udc45|\ud83d\udc46|\ud83d\udc47|\ud83d\udc48|\ud83d\udc49|\ud83d\udc4a|\ud83d\udc4b|\ud83d\udc4c|\ud83d\udc4d|\ud83d\udc4e|\ud83d\udc4f|\ud83d\udc50|\ud83d\udc51|\ud83d\udc52|\ud83d\udc53|\ud83d\udc54|\ud83d\udc55|\ud83d\udc56|\ud83d\udc57|\ud83d\udc58|\ud83d\udc59|\ud83d\udc5a|\ud83d\udc5b|\ud83d\udc5c|\ud83d\udc5d|\ud83d\udc5e|\ud83d\udc5f|\ud83d\udc60|\ud83d\udc61|\ud83d\udc62|\ud83d\udc63|\ud83d\udc64|\ud83d\udc66|\ud83d\udc67|\ud83d\udc68|\ud83d\udc69|\ud83d\udc6a|\ud83d\udc6b|\ud83d\udc6e|\ud83d\udc6f|\ud83d\udc70|\ud83d\udc71|\ud83d\udc72|\ud83d\udc73|\ud83d\udc74|\ud83d\udc75|\ud83d\udc76|\ud83d\udc77|\ud83d\udc78|\ud83d\udc79|\ud83d\udc7a|\ud83d\udc7b|\ud83d\udc7c|\ud83d\udc7d|\ud83d\udc7e|\ud83d\udc7f|\ud83d\udc80|\ud83d\udc81|\ud83d\udc82|\ud83d\udc83|\ud83d\udc84|\ud83d\udc85|\ud83d\udc86|\ud83d\udc87|\ud83d\udc88|\ud83d\udc89|\ud83d\udc8a|\ud83d\udc8b|\ud83d\udc8c|\ud83d\udc8d|\ud83d\udc8e|\ud83d\udc8f|\ud83d\udc90|\ud83d\udc91|\ud83d\udc92|\ud83d\udc93|\ud83d\udebf|\ud83d\udc95|\ud83d\udc96|\ud83d\udc97|\ud83d\udc98|\ud83d\udc99|\ud83d\udc9a|\ud83d\udc9b|\ud83d\udc9c|\ud83d\udc9d|\ud83d\udc9e|\ud83d\udc9f|\ud83d\udca0|\ud83d\udca1|\ud83d\udca2|\ud83d\udca3|\ud83d\udca4|\ud83d\udca5|\ud83d\udca6|\ud83d\udca7|\ud83d\udca8|\ud83d\udca9|\ud83d\udcaa|\ud83d\udcab|\ud83d\udcac|\ud83d\udcae|\ud83d\udcaf|\ud83d\udcb0|\ud83d\udcb1|\ud83d\udcb2|\ud83d\udcb3|\ud83d\udcb4|\ud83d\udcb5|\ud83d\udcb8|\ud83d\udcb9|\ud83d\udcba|\ud83d\udcbb|\ud83d\udcbc|\ud83d\udcbd|\ud83d\udcbe|\ud83d\udcbf|\ud83d\udcc0|\ud83d\udcc1|\ud83d\udcc2|\ud83d\udcc3|\ud83d\udcc4|\ud83d\udcc5|\ud83d\udcc6|\ud83d\udcc7|\ud83d\udcc8|\ud83d\udcc9|\ud83d\udcca|\ud83d\udccb|\ud83d\udccc|\ud83d\udccd|\ud83d\udcce|\ud83d\udccf|\ud83d\udcd0|\ud83d\udcd1|\ud83d\udcd2|\ud83d\udcd3|\ud83d\udcd4|\ud83d\udcd5|\ud83d\udcd6|\ud83d\udcd7|\ud83d\udcd8|\ud83d\udcd9|\ud83d\udcda|\ud83d\udcdb|\ud83d\udcdc|\ud83d\udcdd|\ud83d\udcde|\ud83d\udcdf|\ud83d\udce0|\ud83d\udce1|\ud83d\udce2|\ud83d\udce3|\ud83d\udce4|\ud83d\udce5|\ud83d\udce6|\ud83d\udce7|\ud83d\udce8|\ud83d\udce9|\ud83d\udcea|\ud83d\udceb|\ud83d\udcee|\ud83d\udcf0|\ud83d\udcf1|\ud83d\udcf2|\ud83d\udcf3|\ud83d\udcf4|\ud83d\udcf6|\ud83d\udcf7|\ud83d\udcf9|\ud83d\udcfa|\ud83d\udcfb|\ud83d\udcfc|\ud83d\udd03|\ud83d\udd0a|\ud83d\udd0b|\ud83d\udd0c|\ud83d\udd0d|\ud83d\udd0e|\ud83d\udd0f|\ud83d\udd10|\ud83d\udd11|\ud83d\udd12|\ud83d\udd13|\ud83d\udd14|\ud83d\udd16|\ud83d\udd17|\ud83d\udd18|\ud83d\udd19|\ud83d\udd1a|\ud83d\udd1b|\ud83d\udd1c|\ud83d\udd1d|\ud83d\udd1e|\ud83d\udd1f|\ud83d\udd20|\ud83d\udd21|\ud83d\udd22|\ud83d\udd23|\ud83d\udd24|\ud83d\udd25|\ud83d\udd26|\ud83d\udd27|\ud83d\udd28|\ud83d\udd29|\ud83d\udd2a|\ud83d\udd2b|\ud83d\udd2e|\ud83d\udd2f|\ud83d\udd30|\ud83d\udd31|\ud83d\udd32|\ud83d\udd33|\ud83d\udd34|\ud83d\udd35|\ud83d\udd36|\ud83d\udd37|\ud83d\udd38|\ud83d\udd39|\ud83d\udd3a|\ud83d\udd3b|\ud83d\udd3c|\ud83d\udd3d|\ud83d\udd50|\ud83d\udd51|\ud83d\udd52|\ud83d\udd53|\ud83d\udd54|\ud83d\udd55|\ud83d\udd56|\ud83d\udd57|\ud83d\udd58|\ud83d\udd59|\ud83d\udd5a|\ud83d\udd5b|\ud83d\uddfb|\ud83d\uddfc|\ud83d\uddfd|\ud83d\uddfe|\ud83d\uddff|\ud83d\ude01|\ud83d\ude02|\ud83d\ude03|\ud83d\ude04|\ud83d\ude05|\ud83d\ude06|\ud83d\ude09|\ud83d\ude0a|\ud83d\ude0b|\ud83d\ude0c|\ud83d\ude0d|\ud83d\ude0f|\ud83d\ude12|\ud83d\ude13|\ud83d\ude14|\ud83d\ude16|\ud83d\ude18|\ud83d\ude1a|\ud83d\ude1c|\ud83d\ude1d|\ud83d\ude1e|\ud83d\ude20|\ud83d\ude21|\ud83d\ude22|\ud83d\ude23|\ud83d\ude24|\ud83d\ude25|\ud83d\ude28|\ud83d\ude29|\ud83d\ude2a|\ud83d\ude2b|\ud83d\ude2d|\ud83d\ude30|\ud83d\ude31|\ud83d\ude32|\ud83d\ude33|\ud83d\ude35|\ud83d\ude37|\ud83d\ude38|\ud83d\ude39|\ud83d\ude3a|\ud83d\ude3b|\ud83d\ude3c|\ud83d\ude3d|\ud83d\ude3e|\ud83d\ude3f|\ud83d\ude40|\ud83d\ude45|\ud83d\ude46|\ud83d\ude47|\ud83d\ude48|\ud83d\ude49|\ud83d\ude4a|\ud83d\ude4b|\ud83d\ude4c|\ud83d\ude4d|\ud83d\ude4e|\ud83d\ude4f|\ud83d\ude80|\ud83d\ude83|\ud83d\ude84|\ud83d\ude85|\ud83d\ude87|\ud83d\ude89|\ud83d\ude8c|\ud83d\ude8f|\ud83d\ude91|\ud83d\ude92|\ud83d\ude93|\ud83d\ude95|\ud83d\ude97|\ud83d\ude99|\ud83d\ude9a|\ud83d\udea2|\ud83d\udea4|\ud83d\udea5|\ud83d\udea7|\ud83d\udea8|\ud83d\udea9|\ud83d\udeaa|\ud83d\udeab|\ud83d\udeac|\ud83d\udead|\ud83d\udeb2|\ud83d\udeb6|\ud83d\udeb9|\ud83d\udeba|\ud83d\udebb|\ud83d\udebc|\ud83d\udebd|\ud83d\udebe|\ud83d\udec0|\ud83c\udfce|\ud83d\udeb8|\ud83d\udeb7|\ud83d\udeb5|\ud83d\udeb4|\ud83d\udeb3|\ud83d\udeb1|\ud83d\udeb0|\ud83d\udeaf|\ud83d\udeae|\ud83d\udea6|\ud83d\udea3|\ud83d\udea1|\ud83d\udea0|\ud83d\ude9f|\ud83d\ude9e|\ud83d\ude9d|\ud83d\ude9c|\ud83d\ude9b|\ud83d\ude98|\ud83d\ude96|\ud83d\ude94|\ud83d\ude90|\ud83d\ude8e|\ud83d\ude8d|\ud83c\udde6|\ud83d\ude8b|\ud83c\udde7|\ud83d\ude8a|\ud83d\ude88|\ud83c\udde8|\ud83d\ude86|\ud83c\udde9|\ud83d\ude82|\ud83c\uddea|\ud83c\uddeb|\ud83c\uddec|\ud83d\ude81|\ud83c\udded|\ud83d\ude36|\ud83d\ude34|\ud83c\uddee|\ud83c\uddef|\ud83c\uddf0|\ud83c\uddf1|\ud83d\ude2f|\ud83c\uddf2|\ud83c\uddf3|\ud83c\uddf4|\ud83d\ude2e|\ud83c\uddf5|\ud83c\uddf6|\ud83c\uddf7|\ud83d\ude2c|\ud83d\ude27|\ud83c\uddf8|\ud83d\ude26|\ud83c\uddf9|\ud83d\ude1f|\ud83c\uddfa|\ud83c\uddfb|\ud83c\uddfc|\ud83c\uddfd|\ud83c\uddfe|\ud83c\uddff|\ud83c\udf0d|\ud83c\udf0e|\ud83c\udf10|\ud83c\udf12|\ud83c\udf16|\ud83c\udf17|\ud83c\udf18|\ud83c\udf1a|\ud83c\udf1c|\ud83c\udf1d|\ud83c\udf1e|\ud83c\udf2d|\ud83c\udf2e|\ud83c\udf2f|\ud83c\udf32|\ud83c\udf33|\ud83c\udf4b|\ud83c\udf50|\ud83c\udf7c|\ud83c\udfc7|\ud83c\udfc9|\ue50a|\u2797|\u2796|\u2795|\u2755|\u2754|\u2753|\u2728|\u2705|\u274c|\u274e|\u270a|\u270b|\u269c|\u27bf|\u27b0|\u26f8|\u26ce|\u23e9|\u23ea|\u23eb|\u23ec|\u23f0|\u23f3|\u00a9|\u00ae|\ud800\udc00)|(?:(?:\ud83c\udc04|\ud83c\udd70|\ud83c\udd71|\ud83c\udd7e|\ud83c\udd7f|\ud83c\ude02|\ud83c\ude1a|\ud83c\ude2f|\ud83c\ude37|\u3299|\u3297|\u3030|\u2935|\u2934|\u2764|\u2757|\u2747|\u2744|\u2734|\u2733|\u2716|\u2714|\u2712|\u2709|\u2708|\u2702|\u2693|\u2668|\u2666|\u2665|\u2663|\u2660|\u2653|\u2652|\u2651|\u2650|\u2649|\u2648|\u2615|\u2614|\u2611|\u2601|\u2600|\u2199|\u2198|\u2197|\u2196|\u2195|\u2194|\u2139|\u2122|\u2049|\u303d|\u270c|\u270f|\u267f|\u267b|\u264e|\u264d|\u264c|\u264b|\u264f|\u264a|\u263a|\u261d|\u260e|\u231b|\u231a|\u203c|\u27a1|\u26fd|\u26f5|\u26fa|\u26a1|\u26aa|\u26ab|\u26bd|\u26be|\u26d4|\u26c4|\u26c5|\u26a0|\u26f2|\u26f3|\u26ea|\u25ab|\u25aa|\u25fd|\u25b6|\u25fb|\u25c0|\u25fe|\u25fc|\u24c2|\u21a9|\u21aa|\u2b07|\u2b05|\u2b06|\u2b50|\u2b55|\u2b1c|\u2b1b)([\uFE0E\uFE0F]?)))/g,s=/[&<>'"]/g,t=/IFRAME|NOFRAMES|NOSCRIPT|SCRIPT|SELECT|STYLE|TEXTAREA|[a-z]/,u=String.fromCharCode;return p}();
 // Source: wp-includes/js/wp-emoji.min.js
-!function(a,b){function c(){function c(){if(!j){if("undefined"==typeof a.twemoji){if(k>600)return;return a.clearTimeout(g),g=a.setTimeout(c,50),void k++}f=a.twemoji,j=!0,h&&new h(function(a){for(var b,c,f,g,h=a.length;h--;){if(b=a[h].addedNodes,c=a[h].removedNodes,f=b.length,1===f&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt)return;for(;f--;)g=b[f],3===g.nodeType&&(g=g.parentNode),!g||1!==g.nodeType||g.className&&"string"==typeof g.className&&-1!==g.className.indexOf("wp-exclude-emoji")||d(g.textContent)&&e(g)}}).observe(document.body,{childList:!0,subtree:!0}),e(document.body)}}function d(a){var b=/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,c=/[\uDC00-\uDFFF]/;return a?c.test(a)||b.test(a):!1}function e(a,c){var d;return i&&f&&a&&("string"==typeof a||a.childNodes&&a.childNodes.length)?(c=c||{},d={base:b.baseUrl,ext:b.ext,className:c.className||"emoji",callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return b.supports.flag||!b.supports.simple||/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)?"".concat(c.base,a,c.ext):!1}},"object"==typeof c.imgAttr&&(d.attributes=function(){return c.imgAttr}),f.parse(a,d)):a}var f,g,h=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,i=!1,j=!1,k=0;return b&&(i=!b.supports.simple||!b.supports.flag,b.DOMReady?c():b.readyCallback=c),{replaceEmoji:i,parse:e,test:d}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings);
\ No newline at end of file
+!function(a,b){function c(){function c(){if(!j){if("undefined"==typeof a.twemoji){if(k>600)return;return a.clearTimeout(g),g=a.setTimeout(c,50),void k++}f=a.twemoji,j=!0,h&&new h(function(a){for(var b,c,f,g,h=a.length;h--;){if(b=a[h].addedNodes,c=a[h].removedNodes,f=b.length,1===f&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt&&"load-failed"===c[0].getAttribute("data-error"))return;for(;f--;)g=b[f],3===g.nodeType&&(g=g.parentNode),!g||1!==g.nodeType||g.className&&"string"==typeof g.className&&-1!==g.className.indexOf("wp-exclude-emoji")||d(g.textContent)&&e(g)}}).observe(document.body,{childList:!0,subtree:!0}),e(document.body)}}function d(a){var b=/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,c=/[\uDC00-\uDFFF]/;return a?c.test(a)||b.test(a):!1}function e(a,c){var d;return i&&f&&a&&("string"==typeof a||a.childNodes&&a.childNodes.length)?(c=c||{},d={base:b.baseUrl,ext:b.ext,className:c.className||"emoji",callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return!b.supports.flag&&b.supports.simple&&b.supports.unicode8&&!/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)?!1:"".concat(c.base,a,c.ext)},onerror:function(){f.parentNode&&(this.setAttribute("data-error","load-failed"),f.parentNode.replaceChild(document.createTextNode(f.alt),f))}},"object"==typeof c.imgAttr&&(d.attributes=function(){return c.imgAttr}),f.parse(a,d)):a}var f,g,h=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,i=!1,j=!1,k=0;return b&&(i=!b.supports.simple||!b.supports.flag||!b.supports.unicode8,b.DOMReady?c():b.readyCallback=c),{replaceEmoji:i,parse:e,test:d}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings);
\ No newline at end of file
index 4acf43421d7fe9905a0cc359ca91bab142a7fb71..f87e0839869d30cbb1790b7e9bb9e055cbca1ff5 100644 (file)
@@ -58,7 +58,8 @@
                                                        ii === 1 && removedNodes.length === 1 &&
                                                        addedNodes[0].nodeType === 3 &&
                                                        removedNodes[0].nodeName === 'IMG' &&
-                                                       addedNodes[0].data === removedNodes[0].alt
+                                                       addedNodes[0].data === removedNodes[0].alt &&
+                                                       'load-failed' === removedNodes[0].getAttribute( 'data-error' )
                                                ) {
                                                        return;
                                                }
                                                        return false;
                                        }
 
-                                       if ( ! settings.supports.flag && settings.supports.simple &&
+                                       if ( ! settings.supports.flag && settings.supports.simple && settings.supports.unicode8 &&
                                                ! /^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test( icon ) ) {
 
                                                return false;
                                        }
 
                                        return ''.concat( options.base, icon, options.ext );
+                               },
+                               onerror: function() {
+                                       if ( twemoji.parentNode ) {
+                                               this.setAttribute( 'data-error', 'load-failed' );
+                                               twemoji.parentNode.replaceChild( document.createTextNode( twemoji.alt ), twemoji );
+                                       }
                                }
                        };
 
                 * Initialize our emoji support, and set up listeners.
                 */
                if ( settings ) {
-                       replaceEmoji = ! settings.supports.simple || ! settings.supports.flag;
+                       replaceEmoji = ! settings.supports.simple || ! settings.supports.flag || ! settings.supports.unicode8;
 
                        if ( settings.DOMReady ) {
                                load();
index 87e5866f709679ab031ff16a4ab3613663692bcc..eb51b0a742780f5dad8f6a03b5aa25d8d122977c 100644 (file)
@@ -1 +1 @@
-!function(a,b){function c(){function c(){if(!j){if("undefined"==typeof a.twemoji){if(k>600)return;return a.clearTimeout(g),g=a.setTimeout(c,50),void k++}f=a.twemoji,j=!0,h&&new h(function(a){for(var b,c,f,g,h=a.length;h--;){if(b=a[h].addedNodes,c=a[h].removedNodes,f=b.length,1===f&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt)return;for(;f--;)g=b[f],3===g.nodeType&&(g=g.parentNode),!g||1!==g.nodeType||g.className&&"string"==typeof g.className&&-1!==g.className.indexOf("wp-exclude-emoji")||d(g.textContent)&&e(g)}}).observe(document.body,{childList:!0,subtree:!0}),e(document.body)}}function d(a){var b=/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,c=/[\uDC00-\uDFFF]/;return a?c.test(a)||b.test(a):!1}function e(a,c){var d;return i&&f&&a&&("string"==typeof a||a.childNodes&&a.childNodes.length)?(c=c||{},d={base:b.baseUrl,ext:b.ext,className:c.className||"emoji",callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return b.supports.flag||!b.supports.simple||/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)?"".concat(c.base,a,c.ext):!1}},"object"==typeof c.imgAttr&&(d.attributes=function(){return c.imgAttr}),f.parse(a,d)):a}var f,g,h=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,i=!1,j=!1,k=0;return b&&(i=!b.supports.simple||!b.supports.flag,b.DOMReady?c():b.readyCallback=c),{replaceEmoji:i,parse:e,test:d}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings);
\ No newline at end of file
+!function(a,b){function c(){function c(){if(!j){if("undefined"==typeof a.twemoji){if(k>600)return;return a.clearTimeout(g),g=a.setTimeout(c,50),void k++}f=a.twemoji,j=!0,h&&new h(function(a){for(var b,c,f,g,h=a.length;h--;){if(b=a[h].addedNodes,c=a[h].removedNodes,f=b.length,1===f&&1===c.length&&3===b[0].nodeType&&"IMG"===c[0].nodeName&&b[0].data===c[0].alt&&"load-failed"===c[0].getAttribute("data-error"))return;for(;f--;)g=b[f],3===g.nodeType&&(g=g.parentNode),!g||1!==g.nodeType||g.className&&"string"==typeof g.className&&-1!==g.className.indexOf("wp-exclude-emoji")||d(g.textContent)&&e(g)}}).observe(document.body,{childList:!0,subtree:!0}),e(document.body)}}function d(a){var b=/[\u203C\u2049\u20E3\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2300\u231A\u231B\u2328\u2388\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638\u2639\u263A\u2648-\u2653\u2660\u2663\u2665\u2666\u2668\u267B\u267F\u2692\u2693\u2694\u2696\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753\u2754\u2755\u2757\u2763\u2764\u2795\u2796\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05\u2B06\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]/,c=/[\uDC00-\uDFFF]/;return a?c.test(a)||b.test(a):!1}function e(a,c){var d;return i&&f&&a&&("string"==typeof a||a.childNodes&&a.childNodes.length)?(c=c||{},d={base:b.baseUrl,ext:b.ext,className:c.className||"emoji",callback:function(a,c){switch(a){case"a9":case"ae":case"2122":case"2194":case"2660":case"2663":case"2665":case"2666":return!1}return!b.supports.flag&&b.supports.simple&&b.supports.unicode8&&!/^1f1(?:e[6-9a-f]|f[0-9a-f])-1f1(?:e[6-9a-f]|f[0-9a-f])$/.test(a)?!1:"".concat(c.base,a,c.ext)},onerror:function(){f.parentNode&&(this.setAttribute("data-error","load-failed"),f.parentNode.replaceChild(document.createTextNode(f.alt),f))}},"object"==typeof c.imgAttr&&(d.attributes=function(){return c.imgAttr}),f.parse(a,d)):a}var f,g,h=a.MutationObserver||a.WebKitMutationObserver||a.MozMutationObserver,i=!1,j=!1,k=0;return b&&(i=!b.supports.simple||!b.supports.flag||!b.supports.unicode8,b.DOMReady?c():b.readyCallback=c),{replaceEmoji:i,parse:e,test:d}}a.wp=a.wp||{},a.wp.emoji=new c}(window,window._wpemojiSettings);
\ No newline at end of file
index 5b69c88d302944617ce655556fa279af69d12d5e..b5a84aecb7f7862bef50dcab28aae7e6f1dfd976 100644 (file)
@@ -382,7 +382,7 @@ var wpLink;
                                editor.dom.setAttribs( link, attrs );
                        } else {
                                if ( text ) {
-                                       editor.selection.setNode( editor.dom.create( 'a', attrs, text ) );
+                                       editor.selection.setNode( editor.dom.create( 'a', attrs, editor.dom.encode( text ) ) );
                                } else {
                                        editor.execCommand( 'mceInsertLink', false, attrs );
                                }
@@ -459,13 +459,14 @@ var wpLink;
                },
 
                keydown: function( event ) {
-                       var fn, id,
-                               key = $.ui.keyCode;
+                       var fn, id;
 
-                       if ( key.ESCAPE === event.keyCode ) {
+                       // Escape key.
+                       if ( 27 === event.keyCode ) {
                                wpLink.close();
                                event.stopImmediatePropagation();
-                       } else if ( key.TAB === event.keyCode ) {
+                       // Tab key.
+                       } else if ( 9 === event.keyCode ) {
                                id = event.target.id;
 
                                // wp-link-submit must always be the last focusable element in the dialog.
@@ -479,7 +480,8 @@ var wpLink;
                                }
                        }
 
-                       if ( event.keyCode !== key.UP && event.keyCode !== key.DOWN ) {
+                       // Up Arrow and Down Arrow keys.
+                       if ( 38 !== event.keyCode && 40 !== event.keyCode ) {
                                return;
                        }
 
@@ -488,7 +490,8 @@ var wpLink;
                                return;
                        }
 
-                       fn = event.keyCode === key.UP ? 'prev' : 'next';
+                       // Up Arrow key.
+                       fn = 38 === event.keyCode ? 'prev' : 'next';
                        clearInterval( wpLink.keyInterval );
                        wpLink[ fn ]();
                        wpLink.keyInterval = setInterval( wpLink[ fn ], wpLink.keySensitivity );
@@ -496,9 +499,8 @@ var wpLink;
                },
 
                keyup: function( event ) {
-                       var key = $.ui.keyCode;
-
-                       if ( event.which === key.UP || event.which === key.DOWN ) {
+                       // Up Arrow and Down Arrow keys.
+                       if ( 38 === event.keyCode || 40 === event.keyCode ) {
                                clearInterval( wpLink.keyInterval );
                                event.preventDefault();
                        }
index 2bdd4d5ad68a24802559ab4a77cc617e7c7dd20a..cb209184d458153f4ad392a8d6de0c51d2d8973d 100644 (file)
@@ -1 +1 @@
-var wpLink;!function(a){function b(){return c.dom.getParent(c.selection.getNode(),"a")}var c,d,e,f,g,h={},i={},j="ontouchend"in document;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",init:function(){h.wrap=a("#wp-link-wrap"),h.dialog=a("#wp-link"),h.backdrop=a("#wp-link-backdrop"),h.submit=a("#wp-link-submit"),h.close=a("#wp-link-close"),h.text=a("#wp-link-text"),h.url=a("#wp-link-url"),h.nonce=a("#_ajax_linking_nonce"),h.openInNewTab=a("#wp-link-target"),h.search=a("#wp-link-search"),i.search=new e(a("#search-results")),i.recent=new e(a("#most-recent-results")),i.elements=h.dialog.find(".query-results"),h.queryNotice=a("#query-notice-message"),h.queryNoticeTextDefault=h.queryNotice.find(".query-notice-default"),h.queryNoticeTextHint=h.queryNotice.find(".query-notice-hint"),h.dialog.keydown(wpLink.keydown),h.dialog.keyup(wpLink.keyup),h.submit.click(function(a){a.preventDefault(),wpLink.update()}),h.close.add(h.backdrop).add("#wp-link-cancel a").click(function(a){a.preventDefault(),wpLink.close()}),a("#wp-link-search-toggle").on("click",wpLink.toggleInternalLinking),i.elements.on("river-select",wpLink.updateFields),h.search.on("focus.wplink",function(){h.queryNoticeTextDefault.hide(),h.queryNoticeTextHint.removeClass("screen-reader-text").show()}).on("blur.wplink",function(){h.queryNoticeTextDefault.show(),h.queryNoticeTextHint.addClass("screen-reader-text").hide()}),h.search.on("keyup input",function(){var a=this;window.clearTimeout(d),d=window.setTimeout(function(){wpLink.searchInternalLinks.call(a)},500)}),h.url.on("paste",function(){setTimeout(wpLink.correctURL,0)}),h.url.on("blur",wpLink.correctURL)},correctURL:function(){var b=a.trim(h.url.val());b&&g!==b&&!/^(?:[a-z]+:|#|\?|\.|\/)/.test(b)&&(h.url.val("http://"+b),g=b)},open:function(b){var d,e=a(document.body);e.addClass("modal-open"),wpLink.range=null,b&&(window.wpActiveEditor=b),window.wpActiveEditor&&(this.textarea=a("#"+window.wpActiveEditor).get(0),"undefined"!=typeof tinymce&&(e.append(h.backdrop,h.wrap),d=tinymce.get(wpActiveEditor),c=d&&!d.isHidden()?d:null,c&&tinymce.isIE&&(c.windowManager.bookmark=c.selection.getBookmark())),!wpLink.isMCE()&&document.selection&&(this.textarea.focus(),this.range=document.selection.createRange()),h.wrap.show(),h.backdrop.show(),wpLink.refresh(),a(document).trigger("wplink-open",h.wrap))},isMCE:function(){return c&&!c.isHidden()},refresh:function(){var a="";i.search.refresh(),i.recent.refresh(),wpLink.isMCE()?wpLink.mceRefresh():(h.wrap.hasClass("has-text-field")||h.wrap.addClass("has-text-field"),document.selection?a=document.selection.createRange().text||"":"undefined"!=typeof this.textarea.selectionStart&&this.textarea.selectionStart!==this.textarea.selectionEnd&&(a=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)||""),h.text.val(a),wpLink.setDefaultValues()),j?h.url.focus().blur():h.url.focus()[0].select(),i.recent.ul.children().length||i.recent.ajax(),g=h.url.val().replace(/^http:\/\//,"")},hasSelectedText:function(a){var b=c.selection.getContent();if(/</.test(b)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(b)||-1===b.indexOf("href=")))return!1;if(a){var d,e=a.childNodes;if(0===e.length)return!1;for(d=e.length-1;d>=0;d--)if(3!=e[d].nodeType)return!1}return!0},mceRefresh:function(){var a,b=c.selection.getNode(),d=c.dom.getParent(b,"a[href]"),e=this.hasSelectedText(d);d?(a=d.innerText||d.textContent,h.url.val(c.dom.getAttrib(d,"href")),h.openInNewTab.prop("checked","_blank"===c.dom.getAttrib(d,"target")),h.submit.val(wpLinkL10n.update)):(a=c.selection.getContent({format:"text"}),this.setDefaultValues()),e?(h.text.val(a||""),h.wrap.addClass("has-text-field")):(h.text.val(""),h.wrap.removeClass("has-text-field"))},close:function(){a(document.body).removeClass("modal-open"),wpLink.isMCE()?c.focus():(wpLink.textarea.focus(),wpLink.range&&(wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select())),h.backdrop.hide(),h.wrap.hide(),g=!1,a(document).trigger("wplink-close",h.wrap)},getAttrs:function(){return wpLink.correctURL(),{href:a.trim(h.url.val()),target:h.openInNewTab.prop("checked")?"_blank":""}},buildHtml:function(a){var b='<a href="'+a.href+'"';return a.target&&(b+=' target="'+a.target+'"'),b+">"},update:function(){wpLink.isMCE()?wpLink.mceUpdate():wpLink.htmlUpdate()},htmlUpdate:function(){var a,b,c,d,e,f,g,i=wpLink.textarea;i&&(a=wpLink.getAttrs(),b=h.text.val(),a.href&&(c=wpLink.buildHtml(a),document.selection&&wpLink.range?(i.focus(),wpLink.range.text=c+(b||wpLink.range.text)+"</a>",wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select(),wpLink.range=null):"undefined"!=typeof i.selectionStart&&(d=i.selectionStart,e=i.selectionEnd,g=b||i.value.substring(d,e),c=c+g+"</a>",f=d+c.length,d!==e||g||(f-=4),i.value=i.value.substring(0,d)+c+i.value.substring(e,i.value.length),i.selectionStart=i.selectionEnd=f),wpLink.close(),i.focus()))},mceUpdate:function(){var a,d,e=wpLink.getAttrs();return wpLink.close(),c.focus(),tinymce.isIE&&c.selection.moveToBookmark(c.windowManager.bookmark),e.href?(a=b(),h.wrap.hasClass("has-text-field")&&(d=h.text.val()||e.href),a?(d&&("innerText"in a?a.innerText=d:a.textContent=d),c.dom.setAttribs(a,e)):d?c.selection.setNode(c.dom.create("a",e,d)):c.execCommand("mceInsertLink",!1,e),void c.nodeChanged()):void c.execCommand("unlink")},updateFields:function(a,b){h.url.val(b.children(".item-permalink").val())},setDefaultValues:function(){var a,b=/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,d=/^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,4}[^ "]*$/i;this.isMCE()?a=c.selection.getContent():document.selection&&wpLink.range?a=wpLink.range.text:"undefined"!=typeof this.textarea.selectionStart&&(a=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)),a&&b.test(a)?h.url.val("mailto:"+a):a&&d.test(a)?h.url.val(a.replace(/&amp;|&#0?38;/gi,"&")):h.url.val(""),h.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var b,c=a(this),d=c.val();if(d.length>2){if(i.recent.hide(),i.search.show(),wpLink.lastSearch==d)return;wpLink.lastSearch=d,b=c.parent().find(".spinner").addClass("is-active"),i.search.change(d),i.search.ajax(function(){b.removeClass("is-active")})}else i.search.hide(),i.recent.show()},next:function(){i.search.next(),i.recent.next()},prev:function(){i.search.prev(),i.recent.prev()},keydown:function(b){var c,d,e=a.ui.keyCode;e.ESCAPE===b.keyCode?(wpLink.close(),b.stopImmediatePropagation()):e.TAB===b.keyCode&&(d=b.target.id,"wp-link-submit"!==d||b.shiftKey?"wp-link-close"===d&&b.shiftKey&&(h.submit.focus(),b.preventDefault()):(h.close.focus(),b.preventDefault())),(b.keyCode===e.UP||b.keyCode===e.DOWN)&&(!document.activeElement||"link-title-field"!==document.activeElement.id&&"url-field"!==document.activeElement.id)&&(c=b.keyCode===e.UP?"prev":"next",clearInterval(wpLink.keyInterval),wpLink[c](),wpLink.keyInterval=setInterval(wpLink[c],wpLink.keySensitivity),b.preventDefault())},keyup:function(b){var c=a.ui.keyCode;(b.which===c.UP||b.which===c.DOWN)&&(clearInterval(wpLink.keyInterval),b.preventDefault())},delayedCallback:function(a,b){var c,d,e,f;return b?(setTimeout(function(){return d?a.apply(f,e):void(c=!0)},b),function(){return c?a.apply(this,arguments):(e=arguments,f=this,void(d=!0))}):a},toggleInternalLinking:function(a){var b=h.wrap.hasClass("search-panel-visible");h.wrap.toggleClass("search-panel-visible",!b),setUserSetting("wplink",b?"0":"1"),h[b?"url":"search"].focus(),a.preventDefault()}},e=function(b,c){var d=this;this.element=b,this.ul=b.children("ul"),this.contentHeight=b.children("#link-selector-height"),this.waiting=b.find(".river-waiting"),this.change(c),this.refresh(),a("#wp-link .query-results, #wp-link #link-selector").scroll(function(){d.maybeLoad()}),b.on("click","li",function(b){d.select(a(this),b)})},a.extend(e.prototype,{refresh:function(){this.deselect(),this.visible=this.element.is(":visible")},show:function(){this.visible||(this.deselect(),this.element.show(),this.visible=!0)},hide:function(){this.element.hide(),this.visible=!1},select:function(a,b){var c,d,e,f;a.hasClass("unselectable")||a==this.selected||(this.deselect(),this.selected=a.addClass("selected"),c=a.outerHeight(),d=this.element.height(),e=a.position().top,f=this.element.scrollTop(),0>e?this.element.scrollTop(f+e):e+c>d&&this.element.scrollTop(f+e-d+c),this.element.trigger("river-select",[a,b,this]))},deselect:function(){this.selected&&this.selected.removeClass("selected"),this.selected=!1},prev:function(){if(this.visible){var a;this.selected&&(a=this.selected.prev("li"),a.length&&this.select(a))}},next:function(){if(this.visible){var b=this.selected?this.selected.next("li"):a("li:not(.unselectable):first",this.element);b.length&&this.select(b)}},ajax:function(a){var b=this,c=1==this.query.page?0:wpLink.minRiverAJAXDuration,d=wpLink.delayedCallback(function(c,d){b.process(c,d),a&&a(c,d)},c);this.query.ajax(d)},change:function(a){this.query&&this._search==a||(this._search=a,this.query=new f(a),this.element.scrollTop(0))},process:function(b,c){var d="",e=!0,f="",g=1==c.page;b?a.each(b,function(){f=e?"alternate":"",f+=this.title?"":" no-title",d+=f?'<li class="'+f+'">':"<li>",d+='<input type="hidden" class="item-permalink" value="'+this.permalink+'" />',d+='<span class="item-title">',d+=this.title?this.title:wpLinkL10n.noTitle,d+='</span><span class="item-info">'+this.info+"</span></li>",e=!e}):g&&(d+='<li class="unselectable no-matches-found"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"),this.ul[g?"html":"append"](d)},maybeLoad:function(){var a=this,b=this.element,c=b.scrollTop()+b.height();!this.query.ready()||c<this.contentHeight.height()-wpLink.riverBottomThreshold||setTimeout(function(){var c=b.scrollTop(),d=c+b.height();!a.query.ready()||d<a.contentHeight.height()-wpLink.riverBottomThreshold||(a.waiting.addClass("is-active"),b.scrollTop(c+a.waiting.outerHeight()),a.ajax(function(){a.waiting.removeClass("is-active")}))},wpLink.timeToTriggerRiver)}}),f=function(a){this.page=1,this.allLoaded=!1,this.querying=!1,this.search=a},a.extend(f.prototype,{ready:function(){return!(this.querying||this.allLoaded)},ajax:function(b){var c=this,d={action:"wp-link-ajax",page:this.page,_ajax_linking_nonce:h.nonce.val()};this.search&&(d.search=this.search),this.querying=!0,a.post(ajaxurl,d,function(a){c.page++,c.querying=!1,c.allLoaded=!a,b(a,d)},"json")}}),a(document).ready(wpLink.init)}(jQuery);
\ No newline at end of file
+var wpLink;!function(a){function b(){return c.dom.getParent(c.selection.getNode(),"a")}var c,d,e,f,g,h={},i={},j="ontouchend"in document;wpLink={timeToTriggerRiver:150,minRiverAJAXDuration:200,riverBottomThreshold:5,keySensitivity:100,lastSearch:"",textarea:"",init:function(){h.wrap=a("#wp-link-wrap"),h.dialog=a("#wp-link"),h.backdrop=a("#wp-link-backdrop"),h.submit=a("#wp-link-submit"),h.close=a("#wp-link-close"),h.text=a("#wp-link-text"),h.url=a("#wp-link-url"),h.nonce=a("#_ajax_linking_nonce"),h.openInNewTab=a("#wp-link-target"),h.search=a("#wp-link-search"),i.search=new e(a("#search-results")),i.recent=new e(a("#most-recent-results")),i.elements=h.dialog.find(".query-results"),h.queryNotice=a("#query-notice-message"),h.queryNoticeTextDefault=h.queryNotice.find(".query-notice-default"),h.queryNoticeTextHint=h.queryNotice.find(".query-notice-hint"),h.dialog.keydown(wpLink.keydown),h.dialog.keyup(wpLink.keyup),h.submit.click(function(a){a.preventDefault(),wpLink.update()}),h.close.add(h.backdrop).add("#wp-link-cancel a").click(function(a){a.preventDefault(),wpLink.close()}),a("#wp-link-search-toggle").on("click",wpLink.toggleInternalLinking),i.elements.on("river-select",wpLink.updateFields),h.search.on("focus.wplink",function(){h.queryNoticeTextDefault.hide(),h.queryNoticeTextHint.removeClass("screen-reader-text").show()}).on("blur.wplink",function(){h.queryNoticeTextDefault.show(),h.queryNoticeTextHint.addClass("screen-reader-text").hide()}),h.search.on("keyup input",function(){var a=this;window.clearTimeout(d),d=window.setTimeout(function(){wpLink.searchInternalLinks.call(a)},500)}),h.url.on("paste",function(){setTimeout(wpLink.correctURL,0)}),h.url.on("blur",wpLink.correctURL)},correctURL:function(){var b=a.trim(h.url.val());b&&g!==b&&!/^(?:[a-z]+:|#|\?|\.|\/)/.test(b)&&(h.url.val("http://"+b),g=b)},open:function(b){var d,e=a(document.body);e.addClass("modal-open"),wpLink.range=null,b&&(window.wpActiveEditor=b),window.wpActiveEditor&&(this.textarea=a("#"+window.wpActiveEditor).get(0),"undefined"!=typeof tinymce&&(e.append(h.backdrop,h.wrap),d=tinymce.get(wpActiveEditor),c=d&&!d.isHidden()?d:null,c&&tinymce.isIE&&(c.windowManager.bookmark=c.selection.getBookmark())),!wpLink.isMCE()&&document.selection&&(this.textarea.focus(),this.range=document.selection.createRange()),h.wrap.show(),h.backdrop.show(),wpLink.refresh(),a(document).trigger("wplink-open",h.wrap))},isMCE:function(){return c&&!c.isHidden()},refresh:function(){var a="";i.search.refresh(),i.recent.refresh(),wpLink.isMCE()?wpLink.mceRefresh():(h.wrap.hasClass("has-text-field")||h.wrap.addClass("has-text-field"),document.selection?a=document.selection.createRange().text||"":"undefined"!=typeof this.textarea.selectionStart&&this.textarea.selectionStart!==this.textarea.selectionEnd&&(a=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)||""),h.text.val(a),wpLink.setDefaultValues()),j?h.url.focus().blur():h.url.focus()[0].select(),i.recent.ul.children().length||i.recent.ajax(),g=h.url.val().replace(/^http:\/\//,"")},hasSelectedText:function(a){var b=c.selection.getContent();if(/</.test(b)&&(!/^<a [^>]+>[^<]+<\/a>$/.test(b)||-1===b.indexOf("href=")))return!1;if(a){var d,e=a.childNodes;if(0===e.length)return!1;for(d=e.length-1;d>=0;d--)if(3!=e[d].nodeType)return!1}return!0},mceRefresh:function(){var a,b=c.selection.getNode(),d=c.dom.getParent(b,"a[href]"),e=this.hasSelectedText(d);d?(a=d.innerText||d.textContent,h.url.val(c.dom.getAttrib(d,"href")),h.openInNewTab.prop("checked","_blank"===c.dom.getAttrib(d,"target")),h.submit.val(wpLinkL10n.update)):(a=c.selection.getContent({format:"text"}),this.setDefaultValues()),e?(h.text.val(a||""),h.wrap.addClass("has-text-field")):(h.text.val(""),h.wrap.removeClass("has-text-field"))},close:function(){a(document.body).removeClass("modal-open"),wpLink.isMCE()?c.focus():(wpLink.textarea.focus(),wpLink.range&&(wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select())),h.backdrop.hide(),h.wrap.hide(),g=!1,a(document).trigger("wplink-close",h.wrap)},getAttrs:function(){return wpLink.correctURL(),{href:a.trim(h.url.val()),target:h.openInNewTab.prop("checked")?"_blank":""}},buildHtml:function(a){var b='<a href="'+a.href+'"';return a.target&&(b+=' target="'+a.target+'"'),b+">"},update:function(){wpLink.isMCE()?wpLink.mceUpdate():wpLink.htmlUpdate()},htmlUpdate:function(){var a,b,c,d,e,f,g,i=wpLink.textarea;i&&(a=wpLink.getAttrs(),b=h.text.val(),a.href&&(c=wpLink.buildHtml(a),document.selection&&wpLink.range?(i.focus(),wpLink.range.text=c+(b||wpLink.range.text)+"</a>",wpLink.range.moveToBookmark(wpLink.range.getBookmark()),wpLink.range.select(),wpLink.range=null):"undefined"!=typeof i.selectionStart&&(d=i.selectionStart,e=i.selectionEnd,g=b||i.value.substring(d,e),c=c+g+"</a>",f=d+c.length,d!==e||g||(f-=4),i.value=i.value.substring(0,d)+c+i.value.substring(e,i.value.length),i.selectionStart=i.selectionEnd=f),wpLink.close(),i.focus()))},mceUpdate:function(){var a,d,e=wpLink.getAttrs();return wpLink.close(),c.focus(),tinymce.isIE&&c.selection.moveToBookmark(c.windowManager.bookmark),e.href?(a=b(),h.wrap.hasClass("has-text-field")&&(d=h.text.val()||e.href),a?(d&&("innerText"in a?a.innerText=d:a.textContent=d),c.dom.setAttribs(a,e)):d?c.selection.setNode(c.dom.create("a",e,c.dom.encode(d))):c.execCommand("mceInsertLink",!1,e),void c.nodeChanged()):void c.execCommand("unlink")},updateFields:function(a,b){h.url.val(b.children(".item-permalink").val())},setDefaultValues:function(){var a,b=/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,d=/^(https?|ftp):\/\/[A-Z0-9.-]+\.[A-Z]{2,4}[^ "]*$/i;this.isMCE()?a=c.selection.getContent():document.selection&&wpLink.range?a=wpLink.range.text:"undefined"!=typeof this.textarea.selectionStart&&(a=this.textarea.value.substring(this.textarea.selectionStart,this.textarea.selectionEnd)),a&&b.test(a)?h.url.val("mailto:"+a):a&&d.test(a)?h.url.val(a.replace(/&amp;|&#0?38;/gi,"&")):h.url.val(""),h.submit.val(wpLinkL10n.save)},searchInternalLinks:function(){var b,c=a(this),d=c.val();if(d.length>2){if(i.recent.hide(),i.search.show(),wpLink.lastSearch==d)return;wpLink.lastSearch=d,b=c.parent().find(".spinner").addClass("is-active"),i.search.change(d),i.search.ajax(function(){b.removeClass("is-active")})}else i.search.hide(),i.recent.show()},next:function(){i.search.next(),i.recent.next()},prev:function(){i.search.prev(),i.recent.prev()},keydown:function(a){var b,c;27===a.keyCode?(wpLink.close(),a.stopImmediatePropagation()):9===a.keyCode&&(c=a.target.id,"wp-link-submit"!==c||a.shiftKey?"wp-link-close"===c&&a.shiftKey&&(h.submit.focus(),a.preventDefault()):(h.close.focus(),a.preventDefault())),(38===a.keyCode||40===a.keyCode)&&(!document.activeElement||"link-title-field"!==document.activeElement.id&&"url-field"!==document.activeElement.id)&&(b=38===a.keyCode?"prev":"next",clearInterval(wpLink.keyInterval),wpLink[b](),wpLink.keyInterval=setInterval(wpLink[b],wpLink.keySensitivity),a.preventDefault())},keyup:function(a){(38===a.keyCode||40===a.keyCode)&&(clearInterval(wpLink.keyInterval),a.preventDefault())},delayedCallback:function(a,b){var c,d,e,f;return b?(setTimeout(function(){return d?a.apply(f,e):void(c=!0)},b),function(){return c?a.apply(this,arguments):(e=arguments,f=this,void(d=!0))}):a},toggleInternalLinking:function(a){var b=h.wrap.hasClass("search-panel-visible");h.wrap.toggleClass("search-panel-visible",!b),setUserSetting("wplink",b?"0":"1"),h[b?"url":"search"].focus(),a.preventDefault()}},e=function(b,c){var d=this;this.element=b,this.ul=b.children("ul"),this.contentHeight=b.children("#link-selector-height"),this.waiting=b.find(".river-waiting"),this.change(c),this.refresh(),a("#wp-link .query-results, #wp-link #link-selector").scroll(function(){d.maybeLoad()}),b.on("click","li",function(b){d.select(a(this),b)})},a.extend(e.prototype,{refresh:function(){this.deselect(),this.visible=this.element.is(":visible")},show:function(){this.visible||(this.deselect(),this.element.show(),this.visible=!0)},hide:function(){this.element.hide(),this.visible=!1},select:function(a,b){var c,d,e,f;a.hasClass("unselectable")||a==this.selected||(this.deselect(),this.selected=a.addClass("selected"),c=a.outerHeight(),d=this.element.height(),e=a.position().top,f=this.element.scrollTop(),0>e?this.element.scrollTop(f+e):e+c>d&&this.element.scrollTop(f+e-d+c),this.element.trigger("river-select",[a,b,this]))},deselect:function(){this.selected&&this.selected.removeClass("selected"),this.selected=!1},prev:function(){if(this.visible){var a;this.selected&&(a=this.selected.prev("li"),a.length&&this.select(a))}},next:function(){if(this.visible){var b=this.selected?this.selected.next("li"):a("li:not(.unselectable):first",this.element);b.length&&this.select(b)}},ajax:function(a){var b=this,c=1==this.query.page?0:wpLink.minRiverAJAXDuration,d=wpLink.delayedCallback(function(c,d){b.process(c,d),a&&a(c,d)},c);this.query.ajax(d)},change:function(a){this.query&&this._search==a||(this._search=a,this.query=new f(a),this.element.scrollTop(0))},process:function(b,c){var d="",e=!0,f="",g=1==c.page;b?a.each(b,function(){f=e?"alternate":"",f+=this.title?"":" no-title",d+=f?'<li class="'+f+'">':"<li>",d+='<input type="hidden" class="item-permalink" value="'+this.permalink+'" />',d+='<span class="item-title">',d+=this.title?this.title:wpLinkL10n.noTitle,d+='</span><span class="item-info">'+this.info+"</span></li>",e=!e}):g&&(d+='<li class="unselectable no-matches-found"><span class="item-title"><em>'+wpLinkL10n.noMatchesFound+"</em></span></li>"),this.ul[g?"html":"append"](d)},maybeLoad:function(){var a=this,b=this.element,c=b.scrollTop()+b.height();!this.query.ready()||c<this.contentHeight.height()-wpLink.riverBottomThreshold||setTimeout(function(){var c=b.scrollTop(),d=c+b.height();!a.query.ready()||d<a.contentHeight.height()-wpLink.riverBottomThreshold||(a.waiting.addClass("is-active"),b.scrollTop(c+a.waiting.outerHeight()),a.ajax(function(){a.waiting.removeClass("is-active")}))},wpLink.timeToTriggerRiver)}}),f=function(a){this.page=1,this.allLoaded=!1,this.querying=!1,this.search=a},a.extend(f.prototype,{ready:function(){return!(this.querying||this.allLoaded)},ajax:function(b){var c=this,d={action:"wp-link-ajax",page:this.page,_ajax_linking_nonce:h.nonce.val()};this.search&&(d.search=this.search),this.querying=!0,a.post(ajaxurl,d,function(a){c.page++,c.querying=!1,c.allLoaded=!a,b(a,d)},"json")}}),a(document).ready(wpLink.init)}(jQuery);
\ No newline at end of file
index 578c5ba4ff69bfcd49f9bebe3bf2fe9056a6caf4..d34608b89f3eacb482ce1ac65960f3ab101d669a 100644 (file)
@@ -97,6 +97,9 @@ if ( ! CUSTOM_TAGS ) {
                        'src' => true,
                ),
                'b' => array(),
+               'bdo' => array(
+                       'dir' => true,
+               ),
                'big' => array(),
                'blockquote' => array(
                        'cite' => true,
@@ -1694,10 +1697,10 @@ function safecss_filter_attr( $css, $deprecated = '' ) {
        'border-right-style', 'border-right-width', 'border-spacing', 'border-style', 'border-top',
        'border-top-color', 'border-top-style', 'border-top-width', 'border-width', 'caption-side',
        'clear', 'cursor', 'direction', 'font', 'font-family', 'font-size', 'font-style',
-       'font-variant', 'font-weight', 'height', 'letter-spacing', 'line-height', 'margin-bottom',
+       'font-variant', 'font-weight', 'height', 'min-height','max-height' , 'letter-spacing', 'line-height', 'margin-bottom',
        'margin-left', 'margin-right', 'margin-top', 'overflow', 'padding', 'padding-bottom',
        'padding-left', 'padding-right', 'padding-top', 'text-decoration', 'text-indent', 'vertical-align',
-       'width' ) );
+       'width', 'min-width', 'max-width' ) );
 
        if ( empty($allowed_attr) )
                return $css;
index 7caf8790594c9a07913d876f91c8a4b82b69954c..c0179525169fe162bc8ec396960c919b9b13a5d8 100644 (file)
@@ -1,30 +1,31 @@
 <?php
 /**
- * WordPress Translation API
+ * Core Translation API
  *
  * @package WordPress
  * @subpackage i18n
+ * @since 1.2.0
  */
 
 /**
- * Get the current locale.
+ * Retrieves the current locale.
  *
- * If the locale is set, then it will filter the locale in the 'locale' filter
- * hook and return the value.
+ * If the locale is set, then it will filter the locale in the {@see 'locale'}
+ * filter hook and return the value.
  *
  * If the locale is not set already, then the WPLANG constant is used if it is
- * defined. Then it is filtered through the 'locale' filter hook and the value
- * for the locale global set and the locale is returned.
+ * defined. Then it is filtered through the {@see 'locale'} filter hook and
+ * the value for the locale global set and the locale is returned.
  *
  * The process to get the locale should only be done once, but the locale will
- * always be filtered using the 'locale' hook.
+ * always be filtered using the {@see 'locale'} hook.
  *
  * @since 1.5.0
  *
  * @global string $locale
  * @global string $wp_local_package
  *
- * @return string The locale of the blog or from the 'locale' hook.
+ * @return string The locale of the blog or from the {@see 'locale'} hook.
  */
 function get_locale() {
        global $locale, $wp_local_package;
@@ -52,7 +53,7 @@ function get_locale() {
        // If multisite, check options.
        if ( is_multisite() ) {
                // Don't check blog option when installing.
-               if ( defined( 'WP_INSTALLING' ) || ( false === $ms_locale = get_option( 'WPLANG' ) ) ) {
+               if ( wp_installing() || ( false === $ms_locale = get_option( 'WPLANG' ) ) ) {
                        $ms_locale = get_site_option( 'WPLANG' );
                }
 
@@ -79,12 +80,13 @@ function get_locale() {
  *
  * If there is no translation, or the text domain isn't loaded, the original text is returned.
  *
- * *Note:* Don't use {@see translate()} directly, use `{@see __()} or related functions.
+ * *Note:* Don't use translate() directly, use __() or related functions.
  *
  * @since 2.2.0
  *
  * @param string $text   Text to translate.
  * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                       Default 'default'.
  * @return string Translated text
  */
 function translate( $text, $domain = 'default' ) {
@@ -128,11 +130,14 @@ function before_last_bar( $string ) {
  * If there is no translation, or the text domain isn't loaded the original
  * text is returned.
  *
+ * *Note:* Don't use translate_with_gettext_context() directly, use _x() or related functions.
+ *
  * @since 2.8.0
  *
  * @param string $text    Text to translate.
  * @param string $context Context information for the translators.
  * @param string $domain  Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                        Default 'default'.
  * @return string Translated text on success, original text on failure.
  */
 function translate_with_gettext_context( $text, $context, $domain = 'default' ) {
@@ -152,13 +157,15 @@ function translate_with_gettext_context( $text, $context, $domain = 'default' )
 }
 
 /**
- * Retrieve the translation of $text. If there is no translation,
- * or the text domain isn't loaded, the original text is returned.
+ * Retrieve the translation of $text.
+ *
+ * If there is no translation, or the text domain isn't loaded, the original text is returned.
  *
  * @since 2.1.0
  *
  * @param string $text   Text to translate.
  * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                       Default 'default'.
  * @return string Translated text.
  */
 function __( $text, $domain = 'default' ) {
@@ -174,6 +181,7 @@ function __( $text, $domain = 'default' ) {
  *
  * @param string $text   Text to translate.
  * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                       Default 'default'.
  * @return string Translated text on success, original text on failure.
  */
 function esc_attr__( $text, $domain = 'default' ) {
@@ -189,6 +197,7 @@ function esc_attr__( $text, $domain = 'default' ) {
  *
  * @param string $text   Text to translate.
  * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                       Default 'default'.
  * @return string Translated text
  */
 function esc_html__( $text, $domain = 'default' ) {
@@ -202,6 +211,7 @@ function esc_html__( $text, $domain = 'default' ) {
  *
  * @param string $text   Text to translate.
  * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                       Default 'default'.
  */
 function _e( $text, $domain = 'default' ) {
        echo translate( $text, $domain );
@@ -214,6 +224,7 @@ function _e( $text, $domain = 'default' ) {
  *
  * @param string $text   Text to translate.
  * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                       Default 'default'.
  */
 function esc_attr_e( $text, $domain = 'default' ) {
        echo esc_attr( translate( $text, $domain ) );
@@ -226,6 +237,7 @@ function esc_attr_e( $text, $domain = 'default' ) {
  *
  * @param string $text   Text to translate.
  * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                       Default 'default'.
  */
 function esc_html_e( $text, $domain = 'default' ) {
        echo esc_html( translate( $text, $domain ) );
@@ -245,6 +257,7 @@ function esc_html_e( $text, $domain = 'default' ) {
  * @param string $text    Text to translate.
  * @param string $context Context information for the translators.
  * @param string $domain  Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                        Default 'default'.
  * @return string Translated context string without pipe.
  */
 function _x( $text, $context, $domain = 'default' ) {
@@ -259,6 +272,7 @@ function _x( $text, $context, $domain = 'default' ) {
  * @param string $text    Text to translate.
  * @param string $context Context information for the translators.
  * @param string $domain  Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                        Default 'default'.
  * @return string Translated context string without pipe.
  */
 function _ex( $text, $context, $domain = 'default' ) {
@@ -273,6 +287,7 @@ function _ex( $text, $context, $domain = 'default' ) {
  * @param string $text    Text to translate.
  * @param string $context Context information for the translators.
  * @param string $domain  Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                        Default 'default'.
  * @return string Translated text
  */
 function esc_attr_x( $text, $context, $domain = 'default' ) {
@@ -287,6 +302,7 @@ function esc_attr_x( $text, $context, $domain = 'default' ) {
  * @param string $text    Text to translate.
  * @param string $context Context information for the translators.
  * @param string $domain  Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                        Default 'default'.
  * @return string Translated text.
  */
 function esc_html_x( $text, $context, $domain = 'default' ) {
@@ -294,67 +310,77 @@ function esc_html_x( $text, $context, $domain = 'default' ) {
 }
 
 /**
- * Retrieve the plural or single form based on the supplied amount.
+ * Translates and retrieves the singular or plural form based on the supplied number.
  *
- * If the text domain is not set in the $l10n list, then a comparison will be made
- * and either $plural or $single parameters returned.
+ * Used when you want to use the appropriate form of a string based on whether a
+ * number is singular or plural.
  *
- * If the text domain does exist, then the parameters $single, $plural, and $number
- * will first be passed to the text domain's ngettext method. Then it will be passed
- * to the 'ngettext' filter hook along with the same parameters. The expected
- * type will be a string.
+ * Example:
+ *
+ *     $people = sprintf( _n( '%s person', '%s people', $count, 'text-domain' ), number_format_i18n( $count ) );
  *
  * @since 2.8.0
  *
- * @param string $single The text that will be used if $number is 1.
- * @param string $plural The text that will be used if $number is not 1.
- * @param int    $number The number to compare against to use either $single or $plural.
+ * @param string $single The text to be used if the number is singular.
+ * @param string $plural The text to be used if the number is plural.
+ * @param int    $number The number to compare against to use either the singular or plural form.
  * @param string $domain Optional. Text domain. Unique identifier for retrieving translated strings.
- * @return string Either $single or $plural translated text.
+ *                       Default 'default'.
+ * @return string The translated singular or plural form.
  */
 function _n( $single, $plural, $number, $domain = 'default' ) {
        $translations = get_translations_for_domain( $domain );
        $translation = $translations->translate_plural( $single, $plural, $number );
+
        /**
-        * Filter text with its translation when plural option is available.
+        * Filter the singular or plural form of a string.
         *
         * @since 2.2.0
         *
         * @param string $translation Translated text.
-        * @param string $single      The text that will be used if $number is 1.
-        * @param string $plural      The text that will be used if $number is not 1.
-        * @param string $number      The number to compare against to use either $single or $plural.
+        * @param string $single      The text to be used if the number is singular.
+        * @param string $plural      The text to be used if the number is plural.
+        * @param string $number      The number to compare against to use either the singular or plural form.
         * @param string $domain      Text domain. Unique identifier for retrieving translated strings.
         */
        return apply_filters( 'ngettext', $translation, $single, $plural, $number, $domain );
 }
 
 /**
- * Retrieve the plural or single form based on the supplied amount with gettext context.
+ * Translates and retrieves the singular or plural form based on the supplied number, with gettext context.
  *
- * This is a hybrid of _n() and _x(). It supports contexts and plurals.
+ * This is a hybrid of _n() and _x(). It supports context and plurals.
+ *
+ * Used when you want to use the appropriate form of a string with context based on whether a
+ * number is singular or plural.
+ *
+ * Example:
+ *
+ *     $people = sprintf( _n( '%s person', '%s people', $count, 'context', 'text-domain' ), number_format_i18n( $count ) );
  *
  * @since 2.8.0
  *
- * @param string $single  The text that will be used if $number is 1.
- * @param string $plural  The text that will be used if $number is not 1.
- * @param int    $number  The number to compare against to use either $single or $plural.
+ * @param string $single  The text to be used if the number is singular.
+ * @param string $plural  The text to be used if the number is plural.
+ * @param int    $number  The number to compare against to use either the singular or plural form.
  * @param string $context Context information for the translators.
  * @param string $domain  Optional. Text domain. Unique identifier for retrieving translated strings.
- * @return string Either $single or $plural translated text with context.
+ *                        Default 'default'.
+ * @return string The translated singular or plural form.
  */
 function _nx($single, $plural, $number, $context, $domain = 'default') {
        $translations = get_translations_for_domain( $domain );
        $translation = $translations->translate_plural( $single, $plural, $number, $context );
+
        /**
-        * Filter text with its translation while plural option and context are available.
+        * Filter the singular or plural form of a string with gettext context.
         *
         * @since 2.8.0
         *
         * @param string $translation Translated text.
-        * @param string $single      The text that will be used if $number is 1.
-        * @param string $plural      The text that will be used if $number is not 1.
-        * @param string $number      The number to compare against to use either $single or $plural.
+        * @param string $single      The text to be used if the number is singular.
+        * @param string $plural      The text to be used if the number is plural.
+        * @param string $number      The number to compare against to use either the singular or plural form.
         * @param string $context     Context information for the translators.
         * @param string $domain      Text domain. Unique identifier for retrieving translated strings.
         */
@@ -362,55 +388,102 @@ function _nx($single, $plural, $number, $context, $domain = 'default') {
 }
 
 /**
- * Register plural strings in POT file, but don't translate them.
+ * Registers plural strings in POT file, but don't translate them.
  *
  * Used when you want to keep structures with translatable plural
- * strings and use them later.
+ * strings and use them later when the number is known.
  *
  * Example:
  *
  *     $messages = array(
- *             'post' => _n_noop( '%s post', '%s posts' ),
- *             'page' => _n_noop( '%s pages', '%s pages' ),
+ *             'post' => _n_noop( '%s post', '%s posts', 'text-domain' ),
+ *             'page' => _n_noop( '%s pages', '%s pages', 'text-domain' ),
  *     );
  *     ...
  *     $message = $messages[ $type ];
- *     $usable_text = sprintf( translate_nooped_plural( $message, $count ), $count );
+ *     $usable_text = sprintf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) );
  *
  * @since 2.5.0
  *
- * @param string $singular Single form to be i18ned.
- * @param string $plural   Plural form to be i18ned.
+ * @param string $singular Singular form to be localized.
+ * @param string $plural   Plural form to be localized.
  * @param string $domain   Optional. Text domain. Unique identifier for retrieving translated strings.
- * @return array array($singular, $plural)
+ *                         Default null.
+ * @return array {
+ *     Array of translation information for the strings.
+ *
+ *     @type string $0        Singular form to be localized. No longer used.
+ *     @type string $1        Plural form to be localized. No longer used.
+ *     @type string $singular Singular form to be localized.
+ *     @type string $plural   Plural form to be localized.
+ *     @type null   $context  Context information for the translators.
+ *     @type string $domain   Text domain.
+ * }
  */
 function _n_noop( $singular, $plural, $domain = null ) {
        return array( 0 => $singular, 1 => $plural, 'singular' => $singular, 'plural' => $plural, 'context' => null, 'domain' => $domain );
 }
 
 /**
- * Register plural strings with context in POT file, but don't translate them.
+ * Register plural strings with gettext context in the POT file, but don't translate them.
+ *
+ * Used when you want to keep structures with translatable plural
+ * strings and use them later when the number is known.
+ *
+ * Example:
+ *
+ *     $messages = array(
+ *             'post' => _n_noop( '%s post', '%s posts', 'context', 'text-domain' ),
+ *             'page' => _n_noop( '%s pages', '%s pages', 'context', 'text-domain' ),
+ *     );
+ *     ...
+ *     $message = $messages[ $type ];
+ *     $usable_text = sprintf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) );
  *
  * @since 2.8.0
- * @param string $singular
- * @param string $plural
- * @param string $context
- * @param string|null $domain
- * @return array
+ *
+ * @param string $singular Singular form to be localized.
+ * @param string $plural   Plural form to be localized.
+ * @param string $domain   Optional. Text domain. Unique identifier for retrieving translated strings.
+ *                         Default null.
+ * @return array {
+ *     Array of translation information for the strings.
+ *
+ *     @type string $0        Singular form to be localized. No longer used.
+ *     @type string $1        Plural form to be localized. No longer used.
+ *     @type string $2        Context information for the translators. No longer used.
+ *     @type string $singular Singular form to be localized.
+ *     @type string $plural   Plural form to be localized.
+ *     @type string $context  Context information for the translators.
+ *     @type string $domain   Text domain.
+ * }
  */
 function _nx_noop( $singular, $plural, $context, $domain = null ) {
        return array( 0 => $singular, 1 => $plural, 2 => $context, 'singular' => $singular, 'plural' => $plural, 'context' => $context, 'domain' => $domain );
 }
 
 /**
- * Translate the result of _n_noop() or _nx_noop().
+ * Translates and retrieves the singular or plural form of a string that's been registered
+ * with _n_noop() or _nx_noop().
+ *
+ * Used when you want to use a translatable plural string once the number is known.
+ *
+ * Example:
+ *
+ *     $messages = array(
+ *             'post' => _n_noop( '%s post', '%s posts', 'text-domain' ),
+ *             'page' => _n_noop( '%s pages', '%s pages', 'text-domain' ),
+ *     );
+ *     ...
+ *     $message = $messages[ $type ];
+ *     $usable_text = sprintf( translate_nooped_plural( $message, $count, 'text-domain' ), number_format_i18n( $count ) );
  *
  * @since 3.1.0
  *
- * @param array  $nooped_plural Array with singular, plural and context keys, usually the result of _n_noop() or _nx_noop()
- * @param int    $count         Number of objects
+ * @param array  $nooped_plural Array with singular, plural, and context keys, usually the result of _n_noop() or _nx_noop().
+ * @param int    $count         Number of objects.
  * @param string $domain        Optional. Text domain. Unique identifier for retrieving translated strings. If $nooped_plural contains
- *                              a text domain passed to _n_noop() or _nx_noop(), it will override this value.
+ *                              a text domain passed to _n_noop() or _nx_noop(), it will override this value. Default 'default'.
  * @return string Either $single or $plural translated text.
  */
 function translate_nooped_plural( $nooped_plural, $count, $domain = 'default' ) {
@@ -562,7 +635,7 @@ function load_default_textdomain( $locale = null ) {
                return $return;
        }
 
-       if ( is_admin() || defined( 'WP_INSTALLING' ) || ( defined( 'WP_REPAIRING' ) && WP_REPAIRING ) ) {
+       if ( is_admin() || wp_installing() || ( defined( 'WP_REPAIRING' ) && WP_REPAIRING ) ) {
                load_textdomain( 'default', WP_LANG_DIR . "/admin-$locale.mo" );
        }
 
@@ -776,7 +849,7 @@ function get_available_languages( $dir = null ) {
 
        $lang_files = glob( ( is_null( $dir) ? WP_LANG_DIR : $dir ) . '/*.mo' );
        if ( $lang_files ) {
-               foreach( $lang_files as $lang_file ) {
+               foreach ( $lang_files as $lang_file ) {
                        $lang_file = basename( $lang_file, '.mo' );
                        if ( 0 !== strpos( $lang_file, 'continents-cities' ) && 0 !== strpos( $lang_file, 'ms-' ) &&
                                0 !== strpos( $lang_file, 'admin-' ) ) {
index 0929004e1666ebcb31b1ca65ec2092b6d385d640..5aabffa61d705875e418ff1370824cfa2b25b2eb 100644 (file)
  * Display the permalink for the current post.
  *
  * @since 1.2.0
+ * @since 4.4.0 Added the `$post` parameter.
+ *
+ * @param int|WP_Post $post Optional. Post ID or post object. Default is the global `$post`.
  */
-function the_permalink() {
+function the_permalink( $post = 0 ) {
        /**
         * Filter the display of the permalink for the current post.
         *
         * @since 1.5.0
+        * @since 4.4.0 Added the `$post` parameter.
         *
-        * @param string $permalink The permalink for the current post.
+        * @param string      $permalink The permalink for the current post.
+        * @param int|WP_Post $post      Post ID, WP_Post object, or 0. Default 0.
         */
-       echo esc_url( apply_filters( 'the_permalink', get_permalink() ) );
+       echo esc_url( apply_filters( 'the_permalink', get_permalink( $post ), $post ) );
 }
 
 /**
@@ -91,12 +96,13 @@ function permalink_anchor( $mode = 'id' ) {
  *
  * @see get_permalink()
  *
- * @param int|WP_Post $id        Optional. Post ID or post object. Default is the current post.
+ * @param int|WP_Post $post      Optional. Post ID or post object. Default is the global `$post`.
  * @param bool        $leavename Optional. Whether to keep post name or page name. Default false.
+ *
  * @return string|false The permalink URL or false if post does not exist.
  */
-function get_the_permalink( $id = 0, $leavename = false ) {
-       return get_permalink( $id, $leavename );
+function get_the_permalink( $post = 0, $leavename = false ) {
+       return get_permalink( $post, $leavename );
 }
 
 /**
@@ -104,11 +110,11 @@ function get_the_permalink( $id = 0, $leavename = false ) {
  *
  * @since 1.0.0
  *
- * @param int|WP_Post $id        Optional. Post ID or post object. Default current post.
+ * @param int|WP_Post $post      Optional. Post ID or post object. Default is the global `$post`.
  * @param bool        $leavename Optional. Whether to keep post name or page name. Default false.
  * @return string|false The permalink URL or false if post does not exist.
  */
-function get_permalink( $id = 0, $leavename = false ) {
+function get_permalink( $post = 0, $leavename = false ) {
        $rewritecode = array(
                '%year%',
                '%monthnum%',
@@ -123,11 +129,10 @@ function get_permalink( $id = 0, $leavename = false ) {
                $leavename? '' : '%pagename%',
        );
 
-       if ( is_object($id) && isset($id->filter) && 'sample' == $id->filter ) {
-               $post = $id;
+       if ( is_object( $post ) && isset( $post->filter ) && 'sample' == $post->filter ) {
                $sample = true;
        } else {
-               $post = get_post($id);
+               $post = get_post( $post );
                $sample = false;
        }
 
@@ -254,7 +259,7 @@ function get_post_permalink( $id = 0, $leavename = false, $sample = false ) {
 
        $slug = $post->post_name;
 
-       $draft_or_pending = isset( $post->post_status ) && in_array( $post->post_status, array( 'draft', 'pending', 'auto-draft', 'future' ) );
+       $draft_or_pending = get_post_status( $id ) && in_array( get_post_status( $id ), array( 'draft', 'pending', 'auto-draft', 'future' ) );
 
        $post_type = get_post_type_object($post->post_type);
 
@@ -288,22 +293,6 @@ function get_post_permalink( $id = 0, $leavename = false, $sample = false ) {
        return apply_filters( 'post_type_link', $post_link, $post, $leavename, $sample );
 }
 
-/**
- * Retrieve permalink from post ID.
- *
- * @since 1.0.0
- *
- * @param int|WP_Post $post_id    Optional. Post ID or WP_Post object. Default is global $post.
- * @param mixed       $deprecated Not used.
- * @return string|false
- */
-function post_permalink( $post_id = 0, $deprecated = '' ) {
-       if ( !empty( $deprecated ) )
-               _deprecated_argument( __FUNCTION__, '1.3' );
-
-       return get_permalink($post_id);
-}
-
 /**
  * Retrieve the permalink for current page or page ID.
  *
@@ -402,6 +391,9 @@ function get_attachment_link( $post = null, $leavename = false ) {
 
        $post = get_post( $post );
        $parent = ( $post->post_parent > 0 && $post->post_parent != $post->ID ) ? get_post( $post->post_parent ) : false;
+       if ( $parent && ! in_array( $parent->post_type, get_post_types() ) ) {
+               $parent = false;
+       }
 
        if ( $wp_rewrite->using_permalinks() && $parent ) {
                if ( 'page' == $parent->post_type )
@@ -419,6 +411,8 @@ function get_attachment_link( $post = null, $leavename = false ) {
 
                if ( ! $leavename )
                        $link = str_replace( '%postname%', $name, $link );
+       } elseif ( $wp_rewrite->using_permalinks() && ! $leavename ) {
+               $link = home_url( user_trailingslashit( $post->post_name ) );
        }
 
        if ( ! $link )
@@ -638,22 +632,35 @@ function get_post_comments_feed_link($post_id = 0, $feed = '') {
        if ( empty( $feed ) )
                $feed = get_default_feed();
 
+       $post = get_post( $post_id );
+       $unattached = 'attachment' === $post->post_type && 0 === (int) $post->post_parent;
+
        if ( '' != get_option('permalink_structure') ) {
                if ( 'page' == get_option('show_on_front') && $post_id == get_option('page_on_front') )
                        $url = _get_page_link( $post_id );
                else
                        $url = get_permalink($post_id);
 
-               $url = trailingslashit($url) . 'feed';
-               if ( $feed != get_default_feed() )
-                       $url .= "/$feed";
-               $url = user_trailingslashit($url, 'single_feed');
+               if ( $unattached ) {
+                       $url =  home_url( '/feed/' );
+                       if ( $feed !== get_default_feed() ) {
+                               $url .= "$feed/";
+                       }
+                       $url = add_query_arg( 'attachment_id', $post_id, $url );
+               } else {
+                       $url = trailingslashit($url) . 'feed';
+                       if ( $feed != get_default_feed() )
+                               $url .= "/$feed";
+                       $url = user_trailingslashit($url, 'single_feed');
+               }
        } else {
-               $type = get_post_field('post_type', $post_id);
-               if ( 'page' == $type )
+               if ( $unattached ) {
+                       $url = add_query_arg( array( 'feed' => $feed, 'attachment_id' => $post_id ), home_url( '/' ) );
+               } elseif ( 'page' == $post->post_type ) {
                        $url = add_query_arg( array( 'feed' => $feed, 'page_id' => $post_id ), home_url( '/' ) );
-               else
+               } else {
                        $url = add_query_arg( array( 'feed' => $feed, 'p' => $post_id ), home_url( '/' ) );
+               }
        }
 
        /**
@@ -680,10 +687,12 @@ function get_post_comments_feed_link($post_id = 0, $feed = '') {
  * @param string $feed      Optional. Feed format.
 */
 function post_comments_feed_link( $link_text = '', $post_id = '', $feed = '' ) {
-       $url = esc_url( get_post_comments_feed_link( $post_id, $feed ) );
-       if ( empty($link_text) )
+       $url = get_post_comments_feed_link( $post_id, $feed );
+       if ( empty( $link_text ) ) {
                $link_text = __('Comments Feed');
+       }
 
+       $link = '<a href="' . esc_url( $url ) . '">' . $link_text . '</a>';
        /**
         * Filter the post comment feed link anchor tag.
         *
@@ -693,7 +702,7 @@ function post_comments_feed_link( $link_text = '', $post_id = '', $feed = '' ) {
         * @param int    $post_id Post ID.
         * @param string $feed    The feed type, or an empty string for the default feed type.
         */
-       echo apply_filters( 'post_comments_feed_link_html', "<a href='$url'>$link_text</a>", $post_id, $feed );
+       echo apply_filters( 'post_comments_feed_link_html', $link, $post_id, $feed );
 }
 
 /**
@@ -928,7 +937,11 @@ function get_edit_term_link( $term_id, $taxonomy, $object_type = '' ) {
                $args['post_type'] = reset( $tax->object_type );
        }
 
-       $location = add_query_arg( $args, admin_url( 'edit-tags.php' ) );
+       if ( $tax->show_ui ) {
+               $location = add_query_arg( $args, admin_url( 'edit-tags.php' ) );
+       } else {
+               $location = '';
+       }
 
        /**
         * Filter the edit link for a term.
@@ -1011,7 +1024,7 @@ function get_search_link( $query = '' ) {
                $link = home_url('?s=' . urlencode($search) );
        } else {
                $search = urlencode($search);
-               $search = str_replace('%2F', '/', $search); // %2F(/) is not valid within a URL, send it unencoded.
+               $search = str_replace('%2F', '/', $search); // %2F(/) is not valid within a URL, send it un-encoded.
                $link = str_replace( '%search%', $search, $permastruct );
                $link = home_url( user_trailingslashit( $link, 'search' ) );
        }
@@ -1174,6 +1187,46 @@ function get_post_type_archive_feed_link( $post_type, $feed = '' ) {
        return apply_filters( 'post_type_archive_feed_link', $link, $feed );
 }
 
+/**
+ * Retrieve URL used for the post preview.
+ *
+ * Get the preview post URL. Allows additional query args to be appended.
+ *
+ * @since 4.4.0
+ *
+ * @param int|WP_Post $post         Optional. Post ID or `WP_Post` object. Defaults to global post.
+ * @param array       $query_args   Optional. Array of additional query args to be appended to the link.
+ * @param string      $preview_link Optional. Base preview link to be used if it should differ from the post permalink.
+ * @return string URL used for the post preview.
+ */
+function get_preview_post_link( $post = null, $query_args = array(), $preview_link = '' ) {
+       $post = get_post( $post );
+       if ( ! $post ) {
+               return;
+       }
+
+       $post_type_object = get_post_type_object( $post->post_type );
+       if ( is_post_type_viewable( $post_type_object ) ) {
+               if ( ! $preview_link ) {
+                       $preview_link = get_permalink( $post );
+               }
+
+               $query_args['preview'] = 'true';
+               $preview_link = add_query_arg( $query_args, $preview_link );
+       }
+
+       /**
+        * Filter the URL used for a post preview.
+        *
+        * @since 2.0.5
+        * @since 4.0.0 Added the `$post` parameter.
+        *
+        * @param string  $preview_link URL used for the post preview.
+        * @param WP_Post $post         Post object.
+        */
+       return apply_filters( 'preview_post_link', $preview_link, $post );
+}
+
 /**
  * Retrieve edit posts link for post.
  *
@@ -1184,7 +1237,8 @@ function get_post_type_archive_feed_link( $post_type, $feed = '' ) {
  *
  * @param int    $id      Optional. Post ID.
  * @param string $context Optional, defaults to display. How to write the '&', defaults to '&amp;'.
- * @return string|void The edit post link for the given post.
+ * @return string|null The edit post link for the given post. null if the post type is invalid or does
+ *                     not allow an editing UI.
  */
 function get_edit_post_link( $id = 0, $context = 'display' ) {
        if ( ! $post = get_post( $id ) )
@@ -1204,6 +1258,12 @@ function get_edit_post_link( $id = 0, $context = 'display' ) {
        if ( !current_user_can( 'edit_post', $post->ID ) )
                return;
 
+       if ( $post_type_object->_edit_link ) {
+               $link = admin_url( sprintf( $post_type_object->_edit_link . $action, $post->ID ) );
+       } else {
+               $link = '';
+       }
+
        /**
         * Filter the post edit link.
         *
@@ -1214,20 +1274,22 @@ function get_edit_post_link( $id = 0, $context = 'display' ) {
         * @param string $context The link context. If set to 'display' then ampersands
         *                        are encoded.
         */
-       return apply_filters( 'get_edit_post_link', admin_url( sprintf( $post_type_object->_edit_link . $action, $post->ID ) ), $post->ID, $context );
+       return apply_filters( 'get_edit_post_link', $link, $post->ID, $context );
 }
 
 /**
  * Display edit post link for post.
  *
  * @since 1.0.0
+ * @since 4.4.0 The `$class` argument was added.
  *
  * @param string $text   Optional. Anchor text.
  * @param string $before Optional. Display before edit link.
  * @param string $after  Optional. Display after edit link.
  * @param int    $id     Optional. Post ID.
+ * @param string $class  Optional. Add custom class to link.
  */
-function edit_post_link( $text = null, $before = '', $after = '', $id = 0 ) {
+function edit_post_link( $text = null, $before = '', $after = '', $id = 0, $class = 'post-edit-link' ) {
        if ( ! $post = get_post( $id ) ) {
                return;
        }
@@ -1240,7 +1302,7 @@ function edit_post_link( $text = null, $before = '', $after = '', $id = 0 ) {
                $text = __( 'Edit This' );
        }
 
-       $link = '<a class="post-edit-link" href="' . $url . '">' . $text . '</a>';
+       $link = '<a class="' . esc_attr( $class ) . '" href="' . esc_url( $url ) . '">' . $text . '</a>';
 
        /**
         * Filter the post edit link anchor tag.
@@ -1301,7 +1363,7 @@ function get_delete_post_link( $id = 0, $deprecated = '', $force_delete = false
  *
  * @since 2.3.0
  *
- * @param int $comment_id Optional. Comment ID.
+ * @param int|WP_Comment $comment_id Optional. Comment ID or WP_Comment object.
  * @return string|void The edit comment link URL for the given comment.
  */
 function get_edit_comment_link( $comment_id = 0 ) {
@@ -1327,14 +1389,12 @@ function get_edit_comment_link( $comment_id = 0 ) {
  *
  * @since 1.0.0
  *
- * @global object $comment
- *
  * @param string $text   Optional. Anchor text.
  * @param string $before Optional. Display before edit link.
  * @param string $after  Optional. Display after edit link.
  */
 function edit_comment_link( $text = null, $before = '', $after = '' ) {
-       global $comment;
+       $comment = get_comment();
 
        if ( ! current_user_can( 'edit_comment', $comment->comment_ID ) ) {
                return;
@@ -1344,7 +1404,7 @@ function edit_comment_link( $text = null, $before = '', $after = '' ) {
                $text = __( 'Edit This' );
        }
 
-       $link = '<a class="comment-edit-link" href="' . get_edit_comment_link( $comment->comment_ID ) . '">' . $text . '</a>';
+       $link = '<a class="comment-edit-link" href="' . esc_url( get_edit_comment_link( $comment ) ) . '">' . $text . '</a>';
 
        /**
         * Filter the comment edit link anchor tag.
@@ -1404,7 +1464,7 @@ function edit_bookmark_link( $link = '', $before = '', $after = '', $bookmark =
        if ( empty($link) )
                $link = __('Edit This');
 
-       $link = '<a href="' . get_edit_bookmark_link( $bookmark ) . '">' . $link . '</a>';
+       $link = '<a href="' . esc_url( get_edit_bookmark_link( $bookmark ) ) . '">' . $link . '</a>';
 
        /**
         * Filter the bookmark edit link anchor tag.
@@ -1490,7 +1550,7 @@ function get_next_post( $in_same_term = false, $excluded_terms = '', $taxonomy =
  *
  * @since 2.5.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param bool         $in_same_term   Optional. Whether post should be in a same taxonomy term.
  * @param array|string $excluded_terms Optional. Array or comma-separated list of excluded term IDs.
@@ -1510,9 +1570,6 @@ function get_adjacent_post( $in_same_term = false, $excluded_terms = '', $previo
        $where = '';
 
        if ( $in_same_term || ! empty( $excluded_terms ) ) {
-               $join = " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id";
-               $where = $wpdb->prepare( "AND tt.taxonomy = %s", $taxonomy );
-
                if ( ! empty( $excluded_terms ) && ! is_array( $excluded_terms ) ) {
                        // back-compat, $excluded_terms used to be $excluded_terms with IDs separated by " and "
                        if ( false !== strpos( $excluded_terms, ' and ' ) ) {
@@ -1526,6 +1583,9 @@ function get_adjacent_post( $in_same_term = false, $excluded_terms = '', $previo
                }
 
                if ( $in_same_term ) {
+                       $join .= " INNER JOIN $wpdb->term_relationships AS tr ON p.ID = tr.object_id INNER JOIN $wpdb->term_taxonomy tt ON tr.term_taxonomy_id = tt.term_taxonomy_id";
+                       $where .= $wpdb->prepare( "AND tt.taxonomy = %s", $taxonomy );
+
                        if ( ! is_object_in_taxonomy( $post->post_type, $taxonomy ) )
                                return '';
                        $term_array = wp_get_object_terms( $post->ID, $taxonomy, array( 'fields' => 'ids' ) );
@@ -1579,6 +1639,18 @@ function get_adjacent_post( $in_same_term = false, $excluded_terms = '', $previo
        $op = $previous ? '<' : '>';
        $order = $previous ? 'DESC' : 'ASC';
 
+       /**
+        * Filter the excluded term ids
+        *
+        * The dynamic portion of the hook name, `$adjacent`, refers to the type
+        * of adjacency, 'next' or 'previous'.
+        *
+        * @since 4.4.0
+        *
+        * @param string $excluded_terms Array of excluded term IDs.
+        */
+       $excluded_terms = apply_filters( "get_{$adjacent}_post_excluded_terms", $excluded_terms );
+
        /**
         * Filter the JOIN clause in the SQL for an adjacent post query.
         *
@@ -1586,12 +1658,15 @@ function get_adjacent_post( $in_same_term = false, $excluded_terms = '', $previo
         * of adjacency, 'next' or 'previous'.
         *
         * @since 2.5.0
+        * @since 4.4.0 Added the `$taxonomy` and `$post` parameters.
         *
-        * @param string $join           The JOIN clause in the SQL.
-        * @param bool   $in_same_term   Whether post should be in a same taxonomy term.
-        * @param array  $excluded_terms Array of excluded term IDs.
+        * @param string  $join           The JOIN clause in the SQL.
+        * @param bool    $in_same_term   Whether post should be in a same taxonomy term.
+        * @param array   $excluded_terms Array of excluded term IDs.
+        * @param string  $taxonomy       Taxonomy. Used to identify the term used when `$in_same_term` is true.
+        * @param WP_Post $post           WP_Post object.
         */
-       $join  = apply_filters( "get_{$adjacent}_post_join", $join, $in_same_term, $excluded_terms );
+       $join = apply_filters( "get_{$adjacent}_post_join", $join, $in_same_term, $excluded_terms, $taxonomy, $post );
 
        /**
         * Filter the WHERE clause in the SQL for an adjacent post query.
@@ -1600,12 +1675,15 @@ function get_adjacent_post( $in_same_term = false, $excluded_terms = '', $previo
         * of adjacency, 'next' or 'previous'.
         *
         * @since 2.5.0
+        * @since 4.4.0 Added the `$taxonomy` and `$post` parameters.
         *
         * @param string $where          The `WHERE` clause in the SQL.
         * @param bool   $in_same_term   Whether post should be in a same taxonomy term.
         * @param array  $excluded_terms Array of excluded term IDs.
+        * @param string $taxonomy       Taxonomy. Used to identify the term used when `$in_same_term` is true.
+        * @param WP_Post $post           WP_Post object.
         */
-       $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare( "WHERE p.post_date $op %s AND p.post_type = %s $where", $current_post_date, $post->post_type ), $in_same_term, $excluded_terms );
+       $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare( "WHERE p.post_date $op %s AND p.post_type = %s $where", $current_post_date, $post->post_type ), $in_same_term, $excluded_terms, $taxonomy, $post );
 
        /**
         * Filter the ORDER BY clause in the SQL for an adjacent post query.
@@ -1614,10 +1692,12 @@ function get_adjacent_post( $in_same_term = false, $excluded_terms = '', $previo
         * of adjacency, 'next' or 'previous'.
         *
         * @since 2.5.0
+        * @since 4.4.0 Added the `$post` parameter.
         *
         * @param string $order_by The `ORDER BY` clause in the SQL.
+        * @param WP_Post $post    WP_Post object.
         */
-       $sort  = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1" );
+       $sort  = apply_filters( "get_{$adjacent}_post_sort", "ORDER BY p.post_date $order LIMIT 1", $post );
 
        $query = "SELECT p.ID FROM $wpdb->posts AS p $join $where $sort";
        $query_key = 'adjacent_post_' . md5( $query );
@@ -1961,7 +2041,7 @@ function adjacent_post_link( $format, $link, $in_same_term = false, $excluded_te
  *
  * @param int  $pagenum Optional. Page ID.
  * @param bool $escape  Optional. Whether to escape the URL for display, with esc_url(). Defaults to true.
-                         Otherwise, prepares the URL with esc_url_raw().
+ *                         Otherwise, prepares the URL with esc_url_raw().
  * @return string The link URL for the given page number.
  */
 function get_pagenum_link($pagenum = 1, $escape = true ) {
@@ -2262,13 +2342,17 @@ function posts_nav_link( $sep = '', $prelabel = '', $nxtlabel = '' ) {
  * Return navigation to next/previous post when applicable.
  *
  * @since 4.1.0
+ * @since 4.4.0 Introduced the `in_same_term`, `excluded_terms`, and `taxonomy` arguments.
  *
  * @param array $args {
  *     Optional. Default post navigation arguments. Default empty array.
  *
- *     @type string $prev_text          Anchor text to display in the previous post link. Default `%title`.
- *     @type string $next_text          Anchor text to display in the next post link. Default `%title`.
- *     @type string $screen_reader_text Screen reader text for nav element. Default 'Post navigation'.
+ *     @type string       $prev_text          Anchor text to display in the previous post link. Default '%title'.
+ *     @type string       $next_text          Anchor text to display in the next post link. Default '%title'.
+ *     @type bool         $in_same_term       Whether link should be in a same taxonomy term. Default false.
+ *     @type array|string $excluded_terms     Array or comma-separated list of excluded term IDs. Default empty.
+ *     @type string       $taxonomy           Taxonomy, if `$in_same_term` is true. Default 'category'.
+ *     @type string       $screen_reader_text Screen reader text for nav element. Default 'Post navigation'.
  * }
  * @return string Markup for post links.
  */
@@ -2276,12 +2360,29 @@ function get_the_post_navigation( $args = array() ) {
        $args = wp_parse_args( $args, array(
                'prev_text'          => '%title',
                'next_text'          => '%title',
+               'in_same_term'       => false,
+               'excluded_terms'     => '',
+               'taxonomy'           => 'category',
                'screen_reader_text' => __( 'Post navigation' ),
        ) );
 
        $navigation = '';
-       $previous   = get_previous_post_link( '<div class="nav-previous">%link</div>', $args['prev_text'] );
-       $next       = get_next_post_link( '<div class="nav-next">%link</div>', $args['next_text'] );
+
+       $previous = get_previous_post_link(
+               '<div class="nav-previous">%link</div>',
+               $args['prev_text'],
+               $args['in_same_term'],
+               $args['excluded_terms'],
+               $args['taxonomy']
+       );
+
+       $next = get_next_post_link(
+               '<div class="nav-next">%link</div>',
+               $args['next_text'],
+               $args['in_same_term'],
+               $args['excluded_terms'],
+               $args['taxonomy']
+       );
 
        // Only add markup if there's somewhere to navigate to.
        if ( $previous || $next ) {
@@ -2439,6 +2540,26 @@ function _navigation_markup( $links, $class = 'posts-navigation', $screen_reader
                <div class="nav-links">%3$s</div>
        </nav>';
 
+       /**
+        * Filter the navigation markup template.
+        *
+        * Note: The filtered template HTML must contain specifiers for the navigation
+        * class (%1$s), the screen-reader-text value (%2$s), and placement of the
+        * navigation links (%3$s):
+        *
+        *     <nav class="navigation %1$s" role="navigation">
+        *         <h2 class="screen-reader-text">%2$s</h2>
+        *         <div class="nav-links">%3$s</div>
+        *     </nav>
+        *
+        * @since 4.4.0
+        *
+        * @param string $template The default template.
+        * @param string $class    The class passed by the calling function.
+        * @return string Navigation template.
+        */
+       $template = apply_filters( 'navigation_markup_template', $template, $class );
+
        return sprintf( $template, sanitize_html_class( $class ), esc_html( $screen_reader_text ), $links );
 }
 
@@ -2500,7 +2621,7 @@ function get_comments_pagenum_link( $pagenum = 1, $max_page = 0 ) {
 function get_next_comments_link( $label = '', $max_page = 0 ) {
        global $wp_query;
 
-       if ( !is_singular() || !get_option('page_comments') )
+       if ( ! is_singular() )
                return;
 
        $page = get_query_var('cpage');
@@ -2554,7 +2675,7 @@ function next_comments_link( $label = '', $max_page = 0 ) {
  * @return string|void HTML-formatted link for the previous page of comments.
  */
 function get_previous_comments_link( $label = '' ) {
-       if ( !is_singular() || !get_option('page_comments') )
+       if ( ! is_singular() )
                return;
 
        $page = get_query_var('cpage');
@@ -2602,7 +2723,7 @@ function previous_comments_link( $label = '' ) {
 function paginate_comments_links($args = array()) {
        global $wp_rewrite;
 
-       if ( !is_singular() || !get_option('page_comments') )
+       if ( ! is_singular() )
                return;
 
        $page = get_query_var('cpage');
@@ -2629,6 +2750,105 @@ function paginate_comments_links($args = array()) {
                return $page_links;
 }
 
+/**
+ * Returns navigation to next/previous set of comments when applicable.
+ *
+ * @since 4.4.0
+ *
+ * @param array $args {
+ *     Optional. Default comments navigation arguments.
+ *
+ *     @type string $prev_text          Anchor text to display in the previous comments link. Default 'Older comments'.
+ *     @type string $next_text          Anchor text to display in the next comments link. Default 'Newer comments'.
+ *     @type string $screen_reader_text Screen reader text for nav element. Default 'Comments navigation'.
+ * }
+ * @return string Markup for comments links.
+ */
+function get_the_comments_navigation( $args = array() ) {
+       $navigation = '';
+
+       // Are there comments to navigate through?
+       if ( get_comment_pages_count() > 1 ) {
+               $args = wp_parse_args( $args, array(
+                       'prev_text'          => __( 'Older comments' ),
+                       'next_text'          => __( 'Newer comments' ),
+                       'screen_reader_text' => __( 'Comments navigation' ),
+               ) );
+
+               $prev_link = get_previous_comments_link( $args['prev_text'] );
+               $next_link = get_next_comments_link( $args['next_text'] );
+
+               if ( $prev_link ) {
+                       $navigation .= '<div class="nav-previous">' . $prev_link . '</div>';
+               }
+
+               if ( $next_link ) {
+                       $navigation .= '<div class="nav-next">' . $next_link . '</div>';
+               }
+
+               $navigation = _navigation_markup( $navigation, 'comment-navigation', $args['screen_reader_text'] );
+       }
+
+       return $navigation;
+}
+
+/**
+ * Displays navigation to next/previous set of comments when applicable.
+ *
+ * @since 4.4.0
+ *
+ * @param array $args See {@see get_the_comments_navigation()} for available arguments.
+ */
+function the_comments_navigation( $args = array() ) {
+       echo get_the_comments_navigation( $args );
+}
+
+/**
+ * Returns a paginated navigation to next/previous set of comments,
+ * when applicable.
+ *
+ * @since 4.4.0
+ *
+ * @see paginate_comments_links()
+ *
+ * @param array $args {
+ *     Optional. Default pagination arguments.
+ *
+ *     @type string $screen_reader_text Screen reader text for nav element. Default 'Comments navigation'.
+ * }
+ * @return string Markup for pagination links.
+ */
+function get_the_comments_pagination( $args = array() ) {
+       $navigation = '';
+       $args       = wp_parse_args( $args, array(
+               'screen_reader_text' => __( 'Comments navigation' ),
+       ) );
+       $args['echo'] = false;
+
+       // Make sure we get plain links, so we get a string we can work with.
+       $args['type'] = 'plain';
+
+       $links = paginate_comments_links( $args );
+
+       if ( $links ) {
+               $navigation = _navigation_markup( $links, 'comments-pagination', $args['screen_reader_text'] );
+       }
+
+       return $navigation;
+}
+
+/**
+ * Displays a paginated navigation to next/previous set of comments,
+ * when applicable.
+ *
+ * @since 4.4.0
+ *
+ * @param array $args See {@see get_the_comments_pagination()} for available arguments.
+ */
+function the_comments_pagination( $args = array() ) {
+       echo get_the_comments_pagination( $args );
+}
+
 /**
  * Retrieve the Press This bookmarklet link.
  *
@@ -2700,9 +2920,9 @@ function get_shortcut_link() {
  *
  * @since 3.0.0
  *
- * @param  string $path   Optional. Path relative to the home url. Default empty.
- * @param  string $scheme Optional. Scheme to give the home url context. Accepts
- *                        'http', 'https', or 'relative'. Default null.
+ * @param  string      $path   Optional. Path relative to the home url. Default empty.
+ * @param  string|null $scheme Optional. Scheme to give the home url context. Accepts
+ *                             'http', 'https', 'relative', 'rest', or null. Default null.
  * @return string Home url link with optional path appended.
 */
 function home_url( $path = '', $scheme = null ) {
@@ -2724,10 +2944,12 @@ function home_url( $path = '', $scheme = null ) {
  * @param  int         $blog_id     Optional. Blog ID. Default null (current blog).
  * @param  string      $path        Optional. Path relative to the home URL. Default empty.
  * @param  string|null $orig_scheme Optional. Scheme to give the home URL context. Accepts
- *                                  'http', 'https', 'relative', or null. Default null.
+ *                                  'http', 'https', 'relative', 'rest', or null. Default null.
  * @return string Home URL link with optional path appended.
 */
 function get_home_url( $blog_id = null, $path = '', $scheme = null ) {
+       global $pagenow;
+
        $orig_scheme = $scheme;
 
        if ( empty( $blog_id ) || !is_multisite() ) {
@@ -2739,7 +2961,7 @@ function get_home_url( $blog_id = null, $path = '', $scheme = null ) {
        }
 
        if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) {
-               if ( is_ssl() && ! is_admin() && 'wp-login.php' !== $GLOBALS['pagenow'] )
+               if ( is_ssl() && ! is_admin() && 'wp-login.php' !== $pagenow )
                        $scheme = 'https';
                else
                        $scheme = parse_url( $url, PHP_URL_SCHEME );
@@ -2757,7 +2979,8 @@ function get_home_url( $blog_id = null, $path = '', $scheme = null ) {
         *
         * @param string      $url         The complete home URL including scheme and path.
         * @param string      $path        Path relative to the home URL. Blank string if no path is specified.
-        * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https', 'relative' or null.
+        * @param string|null $orig_scheme Scheme to give the home URL context. Accepts 'http', 'https',
+        *                                 'relative', 'rest', or null.
         * @param int|null    $blog_id     Blog ID, or null for the current blog.
         */
        return apply_filters( 'home_url', $url, $path, $orig_scheme, $blog_id );
@@ -3134,12 +3357,14 @@ function self_admin_url($path = '', $scheme = 'admin') {
 }
 
 /**
- * Set the scheme for a URL
+ * Sets the scheme for a URL.
  *
  * @since 3.4.0
+ * @since 4.4.0 The 'rest' scheme was added.
  *
- * @param string $url    Absolute url that includes a scheme
- * @param string $scheme Optional. Scheme to give $url. Currently 'http', 'https', 'login', 'login_post', 'admin', or 'relative'.
+ * @param string      $url    Absolute url that includes a scheme
+ * @param string|null $scheme Optional. Scheme to give $url. Currently 'http', 'https', 'login',
+ *                            'login_post', 'admin', 'relative', 'rest', 'rpc', or null. Default null.
  * @return string $url URL with chosen scheme.
  */
 function set_url_scheme( $url, $scheme = null ) {
@@ -3170,10 +3395,10 @@ function set_url_scheme( $url, $scheme = null ) {
         *
         * @since 3.4.0
         *
-        * @param string $url         The complete URL including scheme and path.
-        * @param string $scheme      Scheme applied to the URL. One of 'http', 'https', or 'relative'.
-        * @param string $orig_scheme Scheme requested for the URL. One of 'http', 'https', 'login',
-        *                            'login_post', 'admin', 'rpc', or 'relative'.
+        * @param string      $url         The complete URL including scheme and path.
+        * @param string      $scheme      Scheme applied to the URL. One of 'http', 'https', or 'relative'.
+        * @param string|null $orig_scheme Scheme requested for the URL. One of 'http', 'https', 'login',
+        *                                 'login_post', 'admin', 'relative', 'rest', 'rpc', or null.
         */
        return apply_filters( 'set_url_scheme', $url, $scheme, $orig_scheme );
 }
@@ -3264,23 +3489,28 @@ function get_edit_profile_url( $user_id = 0, $scheme = 'admin' ) {
  * Output rel=canonical for singular queries.
  *
  * @since 2.9.0
- *
- * @global WP_Query $wp_the_query
 */
 function rel_canonical() {
-       if ( !is_singular() )
+       if ( ! is_singular() ) {
                return;
+       }
 
-       global $wp_the_query;
-       if ( !$id = $wp_the_query->get_queried_object_id() )
+       if ( ! $id = get_queried_object_id() ) {
                return;
+       }
 
-       $link = get_permalink( $id );
+       $url = get_permalink( $id );
 
-       if ( $page = get_query_var('cpage') )
-               $link = get_comments_pagenum_link( $page );
+       $page = get_query_var( 'page' );
+       if ( $page ) {
+               $url = trailingslashit( $url ) . user_trailingslashit( $page, 'single_paged' );
+       }
 
-       echo "<link rel='canonical' href='$link' />\n";
+       $cpage = get_query_var( 'cpage' );
+       if ( $cpage ) {
+               $url = get_comments_pagenum_link( $cpage );
+       }
+       echo '<link rel="canonical" href="' . esc_url( $url ) . "\" />\n";
 }
 
 /**
@@ -3293,8 +3523,6 @@ function rel_canonical() {
  *
  * @since 3.0.0.
  *
- * @global WP_Query $wp_query
- *
  * @param int    $id          A post or blog id. Default is 0, which means the current post or blog.
  * @param string $context     Whether the id is a 'blog' id, 'post' id, or 'media' id.
  *                            If 'post', the post_type of the post is consulted.
@@ -3319,13 +3547,13 @@ function wp_get_shortlink($id = 0, $context = 'post', $allow_slugs = true) {
         */
        $shortlink = apply_filters( 'pre_get_shortlink', false, $id, $context, $allow_slugs );
 
-       if ( false !== $shortlink )
+       if ( false !== $shortlink ) {
                return $shortlink;
+       }
 
-       global $wp_query;
        $post_id = 0;
        if ( 'query' == $context && is_singular() ) {
-               $post_id = $wp_query->get_queried_object_id();
+               $post_id = get_queried_object_id();
                $post = get_post( $post_id );
        } elseif ( 'post' == $context ) {
                $post = get_post( $id );
@@ -3444,7 +3672,7 @@ function the_shortlink( $text = '', $title = '', $before = '', $after = '' ) {
  * @since 4.2.0
  *
  * @param mixed $id_or_email The Gravatar to retrieve a URL for. Accepts a user_id, gravatar md5 hash,
- *                           user email, WP_User object, WP_Post object, or comment object.
+ *                           user email, WP_User object, WP_Post object, or WP_Comment object.
  * @param array $args {
  *     Optional. Arguments to return instead of the default arguments.
  *
@@ -3452,7 +3680,7 @@ function the_shortlink( $text = '', $title = '', $before = '', $after = '' ) {
  *     @type string $default        URL for the default image or a default type. Accepts '404' (return
  *                                  a 404 instead of a default image), 'retro' (8bit), 'monsterid' (monster),
  *                                  'wavatar' (cartoon face), 'indenticon' (the "quilt"), 'mystery', 'mm',
- *                                  or 'mysterman' (The Oyster Man), 'blank' (transparent GIF), or
+ *                                  or 'mysteryman' (The Oyster Man), 'blank' (transparent GIF), or
  *                                  'gravatar_default' (the Gravatar logo). Default is the value of the
  *                                  'avatar_default' option, with a fallback of 'mystery'.
  *     @type bool   $force_default  Whether to always show the default image, never the Gravatar. Default false.
@@ -3475,8 +3703,8 @@ function get_avatar_url( $id_or_email, $args = null ) {
  *
  * @since 4.2.0
  *
- * @param mixed $id_or_email The Gravatar to check the data against. Accepts a user_id, gravatar md5 hash,
- *                           user email, WP_User object, WP_Post object, or comment object.
+ * @param mixed $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
+ *                            user email, WP_User object, WP_Post object, or WP_Comment object.
  * @param array $args {
  *     Optional. Arguments to return instead of the default arguments.
  *
@@ -3486,7 +3714,7 @@ function get_avatar_url( $id_or_email, $args = null ) {
  *     @type string $default        URL for the default image or a default type. Accepts '404' (return
  *                                  a 404 instead of a default image), 'retro' (8bit), 'monsterid' (monster),
  *                                  'wavatar' (cartoon face), 'indenticon' (the "quilt"), 'mystery', 'mm',
- *                                  or 'mysterman' (The Oyster Man), 'blank' (transparent GIF), or
+ *                                  or 'mysteryman' (The Oyster Man), 'blank' (transparent GIF), or
  *                                  'gravatar_default' (the Gravatar logo). Default is the value of the
  *                                  'avatar_default' option, with a fallback of 'mystery'.
  *     @type bool   $force_default  Whether to always show the default image, never the Gravatar. Default false.
@@ -3576,8 +3804,9 @@ function get_avatar_data( $id_or_email, $args = null ) {
         *
         * @since 4.2.0
         *
-        * @param array             $args          Arguments passed to get_avatar_data(), after processing.
-        * @param int|object|string $id_or_email   A user ID, email address, or comment object.
+        * @param array  $args        Arguments passed to get_avatar_data(), after processing.
+        * @param mixed  $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
+        *                            user email, WP_User object, WP_Post object, or WP_Comment object.
         */
        $args = apply_filters( 'pre_get_avatar_data', $args, $id_or_email );
 
@@ -3589,6 +3818,10 @@ function get_avatar_data( $id_or_email, $args = null ) {
        $email_hash = '';
        $user = $email = false;
 
+       if ( is_object( $id_or_email ) && isset( $id_or_email->comment_ID ) ) {
+               $id_or_email = get_comment( $id_or_email );
+       }
+
        // Process the user identifier.
        if ( is_numeric( $id_or_email ) ) {
                $user = get_user_by( 'id', absint( $id_or_email ) );
@@ -3606,9 +3839,7 @@ function get_avatar_data( $id_or_email, $args = null ) {
        } elseif ( $id_or_email instanceof WP_Post ) {
                // Post Object
                $user = get_user_by( 'id', (int) $id_or_email->post_author );
-       } elseif ( is_object( $id_or_email ) && isset( $id_or_email->comment_ID ) ) {
-               // Comment Object
-
+       } elseif ( $id_or_email instanceof WP_Comment ) {
                /**
                 * Filter the list of allowed comment types for retrieving avatars.
                 *
@@ -3671,9 +3902,10 @@ function get_avatar_data( $id_or_email, $args = null ) {
         *
         * @since 4.2.0
         *
-        * @param string            $url         The URL of the avatar.
-        * @param int|object|string $id_or_email A user ID, email address, or comment object.
-        * @param array             $args        Arguments passed to get_avatar_data(), after processing.
+        * @param string $url         The URL of the avatar.
+        * @param mixed  $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
+        *                            user email, WP_User object, WP_Post object, or WP_Comment object.
+        * @param array  $args        Arguments passed to get_avatar_data(), after processing.
         */
        $args['url'] = apply_filters( 'get_avatar_url', $url, $id_or_email, $args );
 
@@ -3682,8 +3914,9 @@ function get_avatar_data( $id_or_email, $args = null ) {
         *
         * @since 4.2.0
         *
-        * @param array             $args        Arguments passed to get_avatar_data(), after processing.
-        * @param int|object|string $id_or_email A user ID, email address, or comment object.
+        * @param array  $args        Arguments passed to get_avatar_data(), after processing.
+        * @param mixed  $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
+        *                            user email, WP_User object, WP_Post object, or WP_Comment object.
         */
        return apply_filters( 'get_avatar_data', $args, $id_or_email );
 }
index a6ad0222a29be9a2411e795cf8b2ebecd76b3820..9d247baa9024a2fcbbe1e055f2c68c839d4fd36a 100644 (file)
@@ -7,6 +7,21 @@
  * @package WordPress
  */
 
+/**
+ * Return the HTTP protocol sent by the server.
+ *
+ * @since 4.4.0
+ *
+ * @return string The HTTP protocol. Default: HTTP/1.0.
+ */
+function wp_get_server_protocol() {
+       $protocol = $_SERVER['SERVER_PROTOCOL'];
+       if ( ! in_array( $protocol, array( 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0' ) ) ) {
+               $protocol = 'HTTP/1.0';
+       }
+       return $protocol;
+}
+
 /**
  * Turn register globals off.
  *
@@ -111,13 +126,19 @@ function wp_check_php_mysql_versions() {
 
        if ( version_compare( $required_php_version, $php_version, '>' ) ) {
                wp_load_translations_early();
+
+               $protocol = wp_get_server_protocol();
+               header( sprintf( '%s 500 Internal Server Error', $protocol ), true, 500 );
                header( 'Content-Type: text/html; charset=utf-8' );
                die( sprintf( __( 'Your server is running PHP version %1$s but WordPress %2$s requires at least %3$s.' ), $php_version, $wp_version, $required_php_version ) );
        }
 
        if ( ! extension_loaded( 'mysql' ) && ! extension_loaded( 'mysqli' ) && ! file_exists( WP_CONTENT_DIR . '/db.php' ) ) {
                wp_load_translations_early();
-                header( 'Content-Type: text/html; charset=utf-8' );
+
+               $protocol = wp_get_server_protocol();
+               header( sprintf( '%s 500 Internal Server Error', $protocol ), true, 500 );
+               header( 'Content-Type: text/html; charset=utf-8' );
                die( __( 'Your PHP installation appears to be missing the MySQL extension which is required by WordPress.' ) );
        }
 }
@@ -132,7 +153,6 @@ function wp_check_php_mysql_versions() {
 function wp_favicon_request() {
        if ( '/favicon.ico' == $_SERVER['REQUEST_URI'] ) {
                header('Content-Type: image/vnd.microsoft.icon');
-               header('Content-Length: 0');
                exit;
        }
 }
@@ -154,7 +174,7 @@ function wp_favicon_request() {
  * @global int $upgrading the unix timestamp marking when upgrading WordPress began.
  */
 function wp_maintenance() {
-       if ( !file_exists( ABSPATH . '.maintenance' ) || defined( 'WP_INSTALLING' ) )
+       if ( ! file_exists( ABSPATH . '.maintenance' ) || wp_installing() )
                return;
 
        global $upgrading;
@@ -171,9 +191,7 @@ function wp_maintenance() {
 
        wp_load_translations_early();
 
-       $protocol = $_SERVER["SERVER_PROTOCOL"];
-       if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol )
-               $protocol = 'HTTP/1.0';
+       $protocol = wp_get_server_protocol();
        header( "$protocol 503 Service Unavailable", true, 503 );
        header( 'Content-Type: text/html; charset=utf-8' );
        header( 'Retry-After: 600' );
@@ -379,7 +397,13 @@ function wp_set_wpdb_vars() {
 
        if ( is_wp_error( $prefix ) ) {
                wp_load_translations_early();
-               wp_die( __( '<strong>ERROR</strong>: <code>$table_prefix</code> in <code>wp-config.php</code> can only contain numbers, letters, and underscores.' ) );
+               wp_die(
+                       /* translators: 1: $table_prefix 2: wp-config.php */
+                       sprintf( __( '<strong>ERROR</strong>: %1$s in %2$s can only contain numbers, letters, and underscores.' ),
+                               '<code>$table_prefix</code>',
+                               '<code>wp-config.php</code>'
+                       )
+               );
        }
 }
 
@@ -464,12 +488,12 @@ function wp_start_object_cache() {
  */
 function wp_not_installed() {
        if ( is_multisite() ) {
-               if ( ! is_blog_installed() && ! defined( 'WP_INSTALLING' ) ) {
+               if ( ! is_blog_installed() && ! wp_installing() ) {
                        nocache_headers();
 
                        wp_die( __( 'The site you have requested is not installed properly. Please contact the system administrator.' ) );
                }
-       } elseif ( ! is_blog_installed() && ! defined( 'WP_INSTALLING' ) ) {
+       } elseif ( ! is_blog_installed() && ! wp_installing() ) {
                nocache_headers();
 
                require( ABSPATH . WPINC . '/kses.php' );
@@ -535,7 +559,7 @@ function wp_get_active_and_valid_plugins() {
                array_unshift( $plugins, ABSPATH . 'my-hacks.php' );
        }
 
-       if ( empty( $active_plugins ) || defined( 'WP_INSTALLING' ) )
+       if ( empty( $active_plugins ) || wp_installing() )
                return $plugins;
 
        $network_plugins = is_multisite() ? wp_get_active_network_plugins() : false;
@@ -837,3 +861,34 @@ function wp_load_translations_early() {
 
        $wp_locale = new WP_Locale();
 }
+
+/**
+ * Check or set whether WordPress is in "installation" mode.
+ *
+ * If the `WP_INSTALLING` constant is defined during the bootstrap, `wp_installing()` will default to `true`.
+ *
+ * @since 4.4.0
+ *
+ * @staticvar bool $installing
+ *
+ * @param bool $is_installing Optional. True to set WP into Installing mode, false to turn Installing mode off.
+ *                            Omit this parameter if you only want to fetch the current status.
+ * @return bool True if WP is installing, otherwise false. When a `$is_installing` is passed, the function will
+ *              report whether WP was in installing mode prior to the change to `$is_installing`.
+ */
+function wp_installing( $is_installing = null ) {
+       static $installing = null;
+
+       // Support for the `WP_INSTALLING` constant, defined before WP is loaded.
+       if ( is_null( $installing ) ) {
+               $installing = defined( 'WP_INSTALLING' ) && WP_INSTALLING;
+       }
+
+       if ( ! is_null( $is_installing ) ) {
+               $old_installing = $installing;
+               $installing = $is_installing;
+               return (bool) $old_installing;
+       }
+
+       return (bool) $installing;
+}
index 1319c49daebdd81acfec6d618fdc7176dd5c8738..040fa5563a7c20d48d605cbd5ff27dc904e7f9fd 100644 (file)
@@ -41,6 +41,14 @@ class WP_Locale {
         */
        public $weekday_abbrev;
 
+       /**
+        * Stores the default start of the week.
+        *
+        * @since 4.4.0
+        * @var string
+        */
+       public $start_of_week;
+
        /**
         * Stores the translated strings for the full month names.
         *
@@ -78,6 +86,10 @@ class WP_Locale {
        public $text_direction = 'ltr';
 
        /**
+        * The thousands separator and decimal point values used for localizing numbers.
+        *
+        * @since 2.3.0
+        * @access public
         * @var array
         */
        public $number_format;
@@ -105,19 +117,14 @@ class WP_Locale {
                $this->weekday[5] = /* translators: weekday */ __('Friday');
                $this->weekday[6] = /* translators: weekday */ __('Saturday');
 
-               // The first letter of each day. The _%day%_initial suffix is a hack to make
-               // sure the day initials are unique.
-               $this->weekday_initial[__('Sunday')]    = /* translators: one-letter abbreviation of the weekday */ __('S_Sunday_initial');
-               $this->weekday_initial[__('Monday')]    = /* translators: one-letter abbreviation of the weekday */ __('M_Monday_initial');
-               $this->weekday_initial[__('Tuesday')]   = /* translators: one-letter abbreviation of the weekday */ __('T_Tuesday_initial');
-               $this->weekday_initial[__('Wednesday')] = /* translators: one-letter abbreviation of the weekday */ __('W_Wednesday_initial');
-               $this->weekday_initial[__('Thursday')]  = /* translators: one-letter abbreviation of the weekday */ __('T_Thursday_initial');
-               $this->weekday_initial[__('Friday')]    = /* translators: one-letter abbreviation of the weekday */ __('F_Friday_initial');
-               $this->weekday_initial[__('Saturday')]  = /* translators: one-letter abbreviation of the weekday */ __('S_Saturday_initial');
-
-               foreach ($this->weekday_initial as $weekday_ => $weekday_initial_) {
-                       $this->weekday_initial[$weekday_] = preg_replace('/_.+_initial$/', '', $weekday_initial_);
-               }
+               // The first letter of each day.
+               $this->weekday_initial[ __( 'Sunday' ) ]    = /* translators: one-letter abbreviation of the weekday */ _x( 'S', 'Sunday initial' );
+               $this->weekday_initial[ __( 'Monday' ) ]    = /* translators: one-letter abbreviation of the weekday */ _x( 'M', 'Monday initial' );
+               $this->weekday_initial[ __( 'Tuesday' ) ]   = /* translators: one-letter abbreviation of the weekday */ _x( 'T', 'Tuesday initial' );
+               $this->weekday_initial[ __( 'Wednesday' ) ] = /* translators: one-letter abbreviation of the weekday */ _x( 'W', 'Wednesday initial' );
+               $this->weekday_initial[ __( 'Thursday' ) ]  = /* translators: one-letter abbreviation of the weekday */ _x( 'T', 'Thursday initial' );
+               $this->weekday_initial[ __( 'Friday' ) ]    = /* translators: one-letter abbreviation of the weekday */ _x( 'F', 'Friday initial' );
+               $this->weekday_initial[ __( 'Saturday' ) ]  = /* translators: one-letter abbreviation of the weekday */ _x( 'S', 'Saturday initial' );
 
                // Abbreviations for each day.
                $this->weekday_abbrev[__('Sunday')]    = /* translators: three-letter abbreviation of the weekday */ __('Sun');
@@ -129,37 +136,46 @@ class WP_Locale {
                $this->weekday_abbrev[__('Saturday')]  = /* translators: three-letter abbreviation of the weekday */ __('Sat');
 
                // The Months
-               $this->month['01'] = /* translators: month name */ __('January');
-               $this->month['02'] = /* translators: month name */ __('February');
-               $this->month['03'] = /* translators: month name */ __('March');
-               $this->month['04'] = /* translators: month name */ __('April');
-               $this->month['05'] = /* translators: month name */ __('May');
-               $this->month['06'] = /* translators: month name */ __('June');
-               $this->month['07'] = /* translators: month name */ __('July');
-               $this->month['08'] = /* translators: month name */ __('August');
-               $this->month['09'] = /* translators: month name */ __('September');
-               $this->month['10'] = /* translators: month name */ __('October');
-               $this->month['11'] = /* translators: month name */ __('November');
-               $this->month['12'] = /* translators: month name */ __('December');
-
-               // Abbreviations for each month. Uses the same hack as above to get around the
-               // 'May' duplication.
-               $this->month_abbrev[__('January')] = /* translators: three-letter abbreviation of the month */ __('Jan_January_abbreviation');
-               $this->month_abbrev[__('February')] = /* translators: three-letter abbreviation of the month */ __('Feb_February_abbreviation');
-               $this->month_abbrev[__('March')] = /* translators: three-letter abbreviation of the month */ __('Mar_March_abbreviation');
-               $this->month_abbrev[__('April')] = /* translators: three-letter abbreviation of the month */ __('Apr_April_abbreviation');
-               $this->month_abbrev[__('May')] = /* translators: three-letter abbreviation of the month */ __('May_May_abbreviation');
-               $this->month_abbrev[__('June')] = /* translators: three-letter abbreviation of the month */ __('Jun_June_abbreviation');
-               $this->month_abbrev[__('July')] = /* translators: three-letter abbreviation of the month */ __('Jul_July_abbreviation');
-               $this->month_abbrev[__('August')] = /* translators: three-letter abbreviation of the month */ __('Aug_August_abbreviation');
-               $this->month_abbrev[__('September')] = /* translators: three-letter abbreviation of the month */ __('Sep_September_abbreviation');
-               $this->month_abbrev[__('October')] = /* translators: three-letter abbreviation of the month */ __('Oct_October_abbreviation');
-               $this->month_abbrev[__('November')] = /* translators: three-letter abbreviation of the month */ __('Nov_November_abbreviation');
-               $this->month_abbrev[__('December')] = /* translators: three-letter abbreviation of the month */ __('Dec_December_abbreviation');
-
-               foreach ($this->month_abbrev as $month_ => $month_abbrev_) {
-                       $this->month_abbrev[$month_] = preg_replace('/_.+_abbreviation$/', '', $month_abbrev_);
-               }
+               $this->month['01'] = /* translators: month name */ __( 'January' );
+               $this->month['02'] = /* translators: month name */ __( 'February' );
+               $this->month['03'] = /* translators: month name */ __( 'March' );
+               $this->month['04'] = /* translators: month name */ __( 'April' );
+               $this->month['05'] = /* translators: month name */ __( 'May' );
+               $this->month['06'] = /* translators: month name */ __( 'June' );
+               $this->month['07'] = /* translators: month name */ __( 'July' );
+               $this->month['08'] = /* translators: month name */ __( 'August' );
+               $this->month['09'] = /* translators: month name */ __( 'September' );
+               $this->month['10'] = /* translators: month name */ __( 'October' );
+               $this->month['11'] = /* translators: month name */ __( 'November' );
+               $this->month['12'] = /* translators: month name */ __( 'December' );
+
+               // The Months, genitive
+               $this->month_genitive['01'] = /* translators: month name, genitive */ _x( 'January', 'genitive' );
+               $this->month_genitive['02'] = /* translators: month name, genitive */ _x( 'February', 'genitive' );
+               $this->month_genitive['03'] = /* translators: month name, genitive */ _x( 'March', 'genitive' );
+               $this->month_genitive['04'] = /* translators: month name, genitive */ _x( 'April', 'genitive' );
+               $this->month_genitive['05'] = /* translators: month name, genitive */ _x( 'May', 'genitive' );
+               $this->month_genitive['06'] = /* translators: month name, genitive */ _x( 'June', 'genitive' );
+               $this->month_genitive['07'] = /* translators: month name, genitive */ _x( 'July', 'genitive' );
+               $this->month_genitive['08'] = /* translators: month name, genitive */ _x( 'August', 'genitive' );
+               $this->month_genitive['09'] = /* translators: month name, genitive */ _x( 'September', 'genitive' );
+               $this->month_genitive['10'] = /* translators: month name, genitive */ _x( 'October', 'genitive' );
+               $this->month_genitive['11'] = /* translators: month name, genitive */ _x( 'November', 'genitive' );
+               $this->month_genitive['12'] = /* translators: month name, genitive */ _x( 'December', 'genitive' );
+
+               // Abbreviations for each month.
+               $this->month_abbrev[ __( 'January' ) ]   = /* translators: three-letter abbreviation of the month */ _x( 'Jan', 'January abbreviation' );
+               $this->month_abbrev[ __( 'February' ) ]  = /* translators: three-letter abbreviation of the month */ _x( 'Feb', 'February abbreviation' );
+               $this->month_abbrev[ __( 'March' ) ]     = /* translators: three-letter abbreviation of the month */ _x( 'Mar', 'March abbreviation' );
+               $this->month_abbrev[ __( 'April' ) ]     = /* translators: three-letter abbreviation of the month */ _x( 'Apr', 'April abbreviation' );
+               $this->month_abbrev[ __( 'May' ) ]       = /* translators: three-letter abbreviation of the month */ _x( 'May', 'May abbreviation' );
+               $this->month_abbrev[ __( 'June' ) ]      = /* translators: three-letter abbreviation of the month */ _x( 'Jun', 'June abbreviation' );
+               $this->month_abbrev[ __( 'July' ) ]      = /* translators: three-letter abbreviation of the month */ _x( 'Jul', 'July abbreviation' );
+               $this->month_abbrev[ __( 'August' ) ]    = /* translators: three-letter abbreviation of the month */ _x( 'Aug', 'August abbreviation' );
+               $this->month_abbrev[ __( 'September' ) ] = /* translators: three-letter abbreviation of the month */ _x( 'Sep', 'September abbreviation' );
+               $this->month_abbrev[ __( 'October' ) ]   = /* translators: three-letter abbreviation of the month */ _x( 'Oct', 'October abbreviation' );
+               $this->month_abbrev[ __( 'November' ) ]  = /* translators: three-letter abbreviation of the month */ _x( 'Nov', 'November abbreviation' );
+               $this->month_abbrev[ __( 'December' ) ]  = /* translators: three-letter abbreviation of the month */ _x( 'Dec', 'December abbreviation' );
 
                // The Meridiems
                $this->meridiem['am'] = __('am');
index 8edeb62ebf2df5863d388578ce0ec83c8cf3bc8c..8d7c758c500aeeec6ab48adf92b7ca3b31a6f2f5 100644 (file)
@@ -50,7 +50,7 @@ function wp_underscore_audio_template() {
 function wp_underscore_video_template() {
        $video_types = wp_get_video_extensions();
 ?>
-<#  var w_rule = h_rule = '', classes = [],
+<#  var w_rule = '', classes = [],
                w, h, settings = wp.media.view.settings,
                isYouTube = isVimeo = false;
 
@@ -69,14 +69,11 @@ function wp_underscore_video_template() {
                h = Math.ceil( ( data.model.height * w ) / data.model.width );
        } else {
                h = data.model.height;
-       }
+       }
 
        if ( w ) {
                w_rule = 'width: ' + w + 'px; ';
        }
-       if ( h ) {
-               h_rule = 'height: ' + h + 'px;';
-       }
 
        if ( isYouTube ) {
                classes.push( 'youtube-video' );
@@ -87,7 +84,7 @@ function wp_underscore_video_template() {
        }
 
 #>
-<div style="{{ w_rule }}{{ h_rule }}" class="wp-video">
+<div style="{{ w_rule }}" class="wp-video">
 <video controls
        class="wp-video-shortcode {{ classes.join( ' ' ) }}"
        <# if ( w ) { #>width="{{ w }}"<# } #>
@@ -174,7 +171,7 @@ function wp_print_media_templates() {
 
        <script type="text/html" id="tmpl-uploader-window">
                <div class="uploader-window-content">
-                       <h3><?php _e( 'Drop files to upload' ); ?></h3>
+                       <h1><?php _e( 'Drop files to upload' ); ?></h1>
                </div>
        </script>
 
@@ -191,19 +188,19 @@ function wp_print_media_templates() {
                <# } #>
                <div class="uploader-inline-content {{ messageClass }}">
                <# if ( data.message ) { #>
-                       <h3 class="upload-message">{{ data.message }}</h3>
+                       <h2 class="upload-message">{{ data.message }}</h2>
                <# } #>
                <?php if ( ! _device_can_upload() ) : ?>
-                       <h3 class="upload-instructions"><?php printf( __('The web browser on your device cannot be used to upload files. You may be able to use the <a href="%s">native app for your device</a> instead.'), 'https://apps.wordpress.org/' ); ?></h3>
+                       <h2 class="upload-instructions"><?php printf( __( 'The web browser on your device cannot be used to upload files. You may be able to use the <a href="%s">native app for your device</a> instead.' ), 'https://apps.wordpress.org/' ); ?></h2>
                <?php elseif ( is_multisite() && ! is_upload_space_available() ) : ?>
-                       <h3 class="upload-instructions"><?php _e( 'Upload Limit Exceeded' ); ?></h3>
+                       <h2 class="upload-instructions"><?php _e( 'Upload Limit Exceeded' ); ?></h2>
                        <?php
                        /** This action is documented in wp-admin/includes/media.php */
                        do_action( 'upload_ui_over_quota' ); ?>
 
                <?php else : ?>
                        <div class="upload-ui">
-                               <h3 class="upload-instructions drop-instructions"><?php _e( 'Drop files anywhere to upload' ); ?></h3>
+                               <h2 class="upload-instructions drop-instructions"><?php _e( 'Drop files anywhere to upload' ); ?></h2>
                                <p class="upload-instructions drop-instructions"><?php _ex( 'or', 'Uploader: Drop files here - or - Select Files' ); ?></p>
                                <button type="button" class="browser button button-hero"><?php _e( 'Select Files' ); ?></button>
                        </div>
@@ -260,7 +257,7 @@ function wp_print_media_templates() {
        </script>
 
        <script type="text/html" id="tmpl-uploader-status">
-               <h3><?php _e( 'Uploading' ); ?></h3>
+               <h2><?php _e( 'Uploading' ); ?></h2>
                <button type="button" class="button-link upload-dismiss-errors"><span class="screen-reader-text"><?php _e( 'Dismiss Errors' ); ?></span></button>
 
                <div class="media-progress-bar"><div></div></div>
@@ -294,11 +291,11 @@ function wp_print_media_templates() {
                                <# if ( data.uploading ) { #>
                                        <div class="media-progress-bar"><div></div></div>
                                <# } else if ( 'image' === data.type && data.sizes && data.sizes.large ) { #>
-                                       <img class="details-image" src="{{ data.sizes.large.url }}" draggable="false" />
+                                       <img class="details-image" src="{{ data.sizes.large.url }}" draggable="false" alt="" />
                                <# } else if ( 'image' === data.type && data.sizes && data.sizes.full ) { #>
-                                       <img class="details-image" src="{{ data.sizes.full.url }}" draggable="false" />
+                                       <img class="details-image" src="{{ data.sizes.full.url }}" draggable="false" alt="" />
                                <# } else if ( -1 === jQuery.inArray( data.type, [ 'audio', 'video' ] ) ) { #>
-                                       <img class="details-image icon" src="{{ data.icon }}" draggable="false" />
+                                       <img class="details-image icon" src="{{ data.icon }}" draggable="false" alt="" />
                                <# } #>
 
                                <# if ( 'audio' === data.type ) { #>
@@ -308,17 +305,14 @@ function wp_print_media_templates() {
                                        </audio>
                                </div>
                                <# } else if ( 'video' === data.type ) {
-                                       var w_rule = h_rule = '';
+                                       var w_rule = '';
                                        if ( data.width ) {
                                                w_rule = 'width: ' + data.width + 'px;';
                                        } else if ( wp.media.view.settings.contentWidth ) {
                                                w_rule = 'width: ' + wp.media.view.settings.contentWidth + 'px;';
                                        }
-                                       if ( data.height ) {
-                                               h_rule = 'height: ' + data.height + 'px;';
-                                       }
                                #>
-                               <div style="{{ w_rule }}{{ h_rule }}" class="wp-media-wrapper wp-video">
+                               <div style="{{ w_rule }}" class="wp-media-wrapper wp-video">
                                        <video controls="controls" class="wp-video-shortcode" preload="metadata"
                                                <# if ( data.width ) { #>width="{{ data.width }}"<# } #>
                                                <# if ( data.height ) { #>height="{{ data.height }}"<# } #>
@@ -459,9 +453,9 @@ function wp_print_media_templates() {
                                <# } else { #>
                                        <div class="centered">
                                                <# if ( data.image && data.image.src && data.image.src !== data.icon ) { #>
-                                                       <img src="{{ data.image.src }}" class="thumbnail" draggable="false" />
+                                                       <img src="{{ data.image.src }}" class="thumbnail" draggable="false" alt="" />
                                                <# } else { #>
-                                                       <img src="{{ data.icon }}" class="icon" draggable="false" />
+                                                       <img src="{{ data.icon }}" class="icon" draggable="false" alt="" />
                                                <# } #>
                                        </div>
                                        <div class="filename">
@@ -496,22 +490,21 @@ function wp_print_media_templates() {
        </script>
 
        <script type="text/html" id="tmpl-attachment-details">
-               <h3>
-                       <?php _e('Attachment Details'); ?>
-
+               <h2>
+                       <?php _e( 'Attachment Details' ); ?>
                        <span class="settings-save-status">
                                <span class="spinner"></span>
                                <span class="saved"><?php esc_html_e('Saved.'); ?></span>
                        </span>
-               </h3>
+               </h2>
                <div class="attachment-info">
                        <div class="thumbnail thumbnail-{{ data.type }}">
                                <# if ( data.uploading ) { #>
                                        <div class="media-progress-bar"><div></div></div>
                                <# } else if ( 'image' === data.type && data.sizes ) { #>
-                                       <img src="{{ data.size.url }}" draggable="false" />
+                                       <img src="{{ data.size.url }}" draggable="false" alt="" />
                                <# } else { #>
-                                       <img src="{{ data.icon }}" class="icon" draggable="false" />
+                                       <img src="{{ data.icon }}" class="icon" draggable="false" alt="" />
                                <# } #>
                        </div>
                        <div class="details">
@@ -605,7 +598,7 @@ function wp_print_media_templates() {
        </script>
 
        <script type="text/html" id="tmpl-attachment-display-settings">
-               <h3><?php _e('Attachment Display Settings'); ?></h3>
+               <h2><?php _e( 'Attachment Display Settings' ); ?></h2>
 
                <# if ( 'image' === data.type ) { #>
                        <label class="setting">
@@ -652,7 +645,10 @@ function wp_print_media_templates() {
                                        </option>
                                        <option value="file">
                                <# } else { #>
-                                       <option value="file" selected>
+                                       <option value="none" selected>
+                                               <?php esc_attr_e('None'); ?>
+                                       </option>
+                                       <option value="file">
                                <# } #>
                                        <# if ( data.model.canEmbed ) { #>
                                                <?php esc_attr_e('Link to Media File'); ?>
@@ -671,9 +667,6 @@ function wp_print_media_templates() {
                                        <option value="custom">
                                                <?php esc_attr_e('Custom URL'); ?>
                                        </option>
-                                       <option value="none">
-                                               <?php esc_attr_e('None'); ?>
-                                       </option>
                                <# } #>
                                </select>
                        </label>
@@ -712,7 +705,7 @@ function wp_print_media_templates() {
        </script>
 
        <script type="text/html" id="tmpl-gallery-settings">
-               <h3><?php _e('Gallery Settings'); ?></h3>
+               <h2><?php _e( 'Gallery Settings' ); ?></h2>
 
                <label class="setting">
                        <span><?php _e('Link To'); ?></span>
@@ -782,7 +775,7 @@ function wp_print_media_templates() {
        </script>
 
        <script type="text/html" id="tmpl-playlist-settings">
-               <h3><?php _e( 'Playlist Settings' ); ?></h3>
+               <h2><?php _e( 'Playlist Settings' ); ?></h2>
 
                <# var emptyModel = _.isEmpty( data.model ),
                        isVideo = 'video' === data.controller.get('library').props.get('type'); #>
@@ -827,7 +820,7 @@ function wp_print_media_templates() {
 
        <script type="text/html" id="tmpl-embed-image-settings">
                <div class="thumbnail">
-                       <img src="{{ data.model.url }}" draggable="false" />
+                       <img src="{{ data.model.url }}" draggable="false" alt="" />
                </div>
 
                <?php
@@ -884,7 +877,7 @@ function wp_print_media_templates() {
                        <div class="embed-media-settings">
                                <div class="column-image">
                                        <div class="image">
-                                               <img src="{{ data.model.url }}" draggable="false" />
+                                               <img src="{{ data.model.url }}" draggable="false" alt="" />
 
                                                <# if ( data.attachment && window.imageEdit ) { #>
                                                        <div class="actions">
@@ -909,7 +902,7 @@ function wp_print_media_templates() {
                                                <input type="text" data-setting="alt" value="{{ data.model.alt }}" />
                                        </label>
 
-                                       <h3><?php _e( 'Display Settings' ); ?></h3>
+                                       <h2><?php _e( 'Display Settings' ); ?></h2>
                                        <div class="setting align">
                                                <span><?php _e('Align'); ?></span>
                                                <div class="button-group button-large" data-setting="align">
@@ -991,7 +984,7 @@ function wp_print_media_templates() {
                                                <input type="text" class="link-to-custom" data-setting="linkUrl" />
                                        </div>
                                        <div class="advanced-section">
-                                               <h3><button type="button" class="button-link advanced-toggle"><?php _e( 'Advanced Options' ); ?></button></h3>
+                                               <h2><button type="button" class="button-link advanced-toggle"><?php _e( 'Advanced Options' ); ?></button></h2>
                                                <div class="advanced-settings hidden">
                                                        <div class="advanced-image">
                                                                <label class="setting title-text">
@@ -1005,7 +998,7 @@ function wp_print_media_templates() {
                                                        </div>
                                                        <div class="advanced-link">
                                                                <div class="setting link-target">
-                                                                       <label><input type="checkbox" data-setting="linkTargetBlank" value="_blank" <# if ( data.model.linkTargetBlank ) { #>checked="checked"<# } #>><?php _e( 'Open link in a new window/tab' ); ?></label>
+                                                                       <label><input type="checkbox" data-setting="linkTargetBlank" value="_blank" <# if ( data.model.linkTargetBlank ) { #>checked="checked"<# } #>><?php _e( 'Open link in a new tab' ); ?></label>
                                                                </div>
                                                                <label class="setting link-rel">
                                                                        <span><?php _e('Link Rel'); ?></span>
@@ -1215,14 +1208,14 @@ function wp_print_media_templates() {
                                        <dl class="gallery-item">
                                                <dt class="gallery-icon">
                                                        <# if ( attachment.thumbnail ) { #>
-                                                               <img src="{{ attachment.thumbnail.url }}" width="{{ attachment.thumbnail.width }}" height="{{ attachment.thumbnail.height }}" />
+                                                               <img src="{{ attachment.thumbnail.url }}" width="{{ attachment.thumbnail.width }}" height="{{ attachment.thumbnail.height }}" alt="" />
                                                        <# } else { #>
-                                                               <img src="{{ attachment.url }}" />
+                                                               <img src="{{ attachment.url }}" alt="" />
                                                        <# } #>
                                                </dt>
                                                <# if ( attachment.caption ) { #>
                                                        <dd class="wp-caption-text gallery-caption">
-                                                               {{ attachment.caption }}
+                                                               {{{ data.verifyHTML( attachment.caption ) }}}
                                                        </dd>
                                                <# } #>
                                        </dl>
@@ -1239,7 +1232,7 @@ function wp_print_media_templates() {
        </script>
 
        <script type="text/html" id="tmpl-crop-content">
-               <img class="crop-image" src="{{ data.url }}">
+               <img class="crop-image" src="{{ data.url }}" alt="">
                <div class="upload-errors"></div>
        </script>
 
@@ -1247,7 +1240,7 @@ function wp_print_media_templates() {
                <h2><?php _e( 'Preview' ); ?></h2>
                <strong><?php _e( 'As a browser icon' ); ?></strong>
                <div class="favicon-preview">
-                       <img src="images/browser.png" class="browser-preview" width="182" height="" alt=""/>
+                       <img src="images/browser.png" class="browser-preview" width="182" height="" alt="" />
 
                        <div class="favicon">
                                <img id="preview-favicon" src="{{ data.url }}" alt="<?php esc_attr_e( 'Preview as a browser icon' ); ?>"/>
index 49d1717c2d7377ad498162f5e9a026ece97d26f9..e6c27b0c85af3b2c90c438c9846d5bcb87030037 100644 (file)
@@ -14,7 +14,7 @@
  * The `$size` parameter accepts either an array or a string. The supported string
  * values are 'thumb' or 'thumbnail' for the given thumbnail size or defaults at
  * 128 width and 96 height in pixels. Also supported for the string value is
- * 'medium' and 'full'. The 'full' isn't actually supported, but any value other
+ * 'medium', 'medium_large' and 'full'. The 'full' isn't actually supported, but any value other
  * than the supported will result in the content_width size or 500 if that is
  * not set.
  *
@@ -31,8 +31,9 @@
  *
  * @param int          $width   Width of the image in pixels.
  * @param int          $height  Height of the image in pixels.
- * @param string|array $size    Optional. Size or array of sizes of what the result image
- *                              should be. Accepts any valid image size name. Default 'medium'.
+ * @param string|array $size    Optional. Image size. Accepts any valid image size, or an array
+ *                              of width and height values in pixels (in that order).
+ *                              Default 'medium'.
  * @param string       $context Optional. Could be 'display' (like in a theme) or 'edit'
  *                              (like inserting into an editor). Default null.
  * @return array Width and height of what the result image should resize to.
@@ -59,7 +60,15 @@ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co
        elseif ( $size == 'medium' ) {
                $max_width = intval(get_option('medium_size_w'));
                $max_height = intval(get_option('medium_size_h'));
-               // if no width is set, default to the theme content width if available
+
+       }
+       elseif ( $size == 'medium_large' ) {
+               $max_width = intval( get_option( 'medium_large_size_w' ) );
+               $max_height = intval( get_option( 'medium_large_size_h' ) );
+
+               if ( intval( $content_width ) > 0 ) {
+                       $max_width = min( intval( $content_width ), $max_width );
+               }
        }
        elseif ( $size == 'large' ) {
                /*
@@ -70,8 +79,9 @@ function image_constrain_size_for_editor( $width, $height, $size = 'medium', $co
                 */
                $max_width = intval(get_option('large_size_w'));
                $max_height = intval(get_option('large_size_h'));
-               if ( intval($content_width) > 0 )
+               if ( intval($content_width) > 0 ) {
                        $max_width = min( intval($content_width), $max_width );
+               }
        } elseif ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) && in_array( $size, array_keys( $_wp_additional_image_sizes ) ) ) {
                $max_width = intval( $_wp_additional_image_sizes[$size]['width'] );
                $max_height = intval( $_wp_additional_image_sizes[$size]['height'] );
@@ -146,9 +156,11 @@ function image_hwstring( $width, $height ) {
  * @since 2.5.0
  *
  * @param int          $id   Attachment ID for image.
- * @param array|string $size Optional. Image size to scale to. Accepts a registered image size
- *                           or flat array of height and width values. Default 'medium'.
- * @return false|array False on failure, array on success.
+ * @param array|string $size Optional. Image size to scale to. Accepts any valid image size,
+ *                           or an array of width and height values in pixels (in that order).
+ *                           Default 'medium'.
+ * @return false|array Array containing the image URL, width, height, and boolean for whether
+ *                     the image is an intermediate size. False on failure.
  */
 function image_downsize( $id, $size = 'medium' ) {
 
@@ -165,7 +177,8 @@ function image_downsize( $id, $size = 'medium' ) {
         *
         * @param bool         $downsize Whether to short-circuit the image downsize. Default false.
         * @param int          $id       Attachment ID for image.
-        * @param array|string $size     Size of image, either array or string. Default 'medium'.
+        * @param array|string $size     Size of image. Image size or array of width and height values (in that order).
+        *                               Default 'medium'.
         */
        if ( $out = apply_filters( 'image_downsize', false, $id, $size ) ) {
                return $out;
@@ -227,7 +240,7 @@ function image_downsize( $id, $size = 'medium' ) {
  * @param string     $name   Image size identifier.
  * @param int        $width  Image width in pixels.
  * @param int        $height Image height in pixels.
- * @param bool|array $crop   Optional. Whether to crop images to specified height and width or resize.
+ * @param bool|array $crop   Optional. Whether to crop images to specified width and height or resize.
  *                           An array can specify positioning of the crop area. Default false.
  */
 function add_image_size( $name, $width = 0, $height = 0, $crop = false ) {
@@ -286,7 +299,7 @@ function remove_image_size( $name ) {
  *
  * @param int        $width  Image width in pixels.
  * @param int        $height Image height in pixels.
- * @param bool|array $crop   Optional. Whether to crop images to specified height and width or resize.
+ * @param bool|array $crop   Optional. Whether to crop images to specified width and height or resize.
  *                           An array can specify positioning of the crop area. Default false.
  */
 function set_post_thumbnail_size( $width = 0, $height = 0, $crop = false ) {
@@ -311,8 +324,9 @@ function set_post_thumbnail_size( $width = 0, $height = 0, $crop = false ) {
  * @param string       $alt   Image Description for the alt attribute.
  * @param string       $title Image Description for the title attribute.
  * @param string       $align Part of the class name for aligning the image.
- * @param string|array $size  Optional. Registered image size to retrieve a tag for, or flat array
- *                            of height and width values. Default 'medium'.
+ * @param string|array $size  Optional. Registered image size to retrieve a tag for. Accepts any
+ *                            valid image size, or an array of width and height values in pixels
+ *                            (in that order). Default 'medium'.
  * @return string HTML IMG element for given image attachment
  */
 function get_image_tag( $id, $alt, $title, $align, $size = 'medium' ) {
@@ -329,10 +343,11 @@ function get_image_tag( $id, $alt, $title, $align, $size = 'medium' ) {
         *
         * @since 2.6.0
         *
-        * @param string $class CSS class name or space-separated list of classes.
-        * @param int    $id    Attachment ID.
-        * @param string $align Part of the class name for aligning the image.
-        * @param string $size  Optional. Default is 'medium'.
+        * @param string       $class CSS class name or space-separated list of classes.
+        * @param int          $id    Attachment ID.
+        * @param string       $align Part of the class name for aligning the image.
+        * @param string|array $size  Size of image. Image size or array of width and height values (in that order).
+        *                            Default 'medium'.
         */
        $class = apply_filters( 'get_image_tag_class', $class, $id, $align, $size );
 
@@ -343,12 +358,13 @@ function get_image_tag( $id, $alt, $title, $align, $size = 'medium' ) {
         *
         * @since 2.6.0
         *
-        * @param string $html  HTML content for the image.
-        * @param int    $id    Attachment ID.
-        * @param string $alt   Alternate text.
-        * @param string $title Attachment title.
-        * @param string $align Part of the class name for aligning the image.
-        * @param string $size  Optional. Default is 'medium'.
+        * @param string       $html  HTML content for the image.
+        * @param int          $id    Attachment ID.
+        * @param string       $alt   Alternate text.
+        * @param string       $title Attachment title.
+        * @param string       $align Part of the class name for aligning the image.
+        * @param string|array $size  Size of image. Image size or array of width and height values (in that order).
+        *                            Default 'medium'.
         */
        return apply_filters( 'get_image_tag', $html, $id, $alt, $title, $align, $size );
 }
@@ -448,11 +464,11 @@ function wp_constrain_dimensions( $current_width, $current_height, $max_width =
  * @param int        $orig_h Original height in pixels.
  * @param int        $dest_w New width in pixels.
  * @param int        $dest_h New height in pixels.
- * @param bool|array $crop   Optional. Whether to crop image to specified height and width or resize.
+ * @param bool|array $crop   Optional. Whether to crop image to specified width and height or resize.
  *                           An array can specify positioning of the crop area. Default false.
  * @return false|array False on failure. Returned array matches parameters for `imagecopyresampled()`.
  */
-function image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = false) {
+function image_resize_dimensions( $orig_w, $orig_h, $dest_w, $dest_h, $crop = false ) {
 
        if ($orig_w <= 0 || $orig_h <= 0)
                return false;
@@ -473,7 +489,7 @@ function image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = fal
         * @param int        $orig_h Original height in pixels.
         * @param int        $dest_w New width in pixels.
         * @param int        $dest_h New height in pixels.
-        * @param bool|array $crop   Whether to crop image to specified height and width or resize.
+        * @param bool|array $crop   Whether to crop image to specified width and height or resize.
         *                           An array can specify positioning of the crop area. Default false.
         */
        $output = apply_filters( 'image_resize_dimensions', null, $orig_w, $orig_h, $dest_w, $dest_h, $crop );
@@ -554,7 +570,7 @@ function image_resize_dimensions($orig_w, $orig_h, $dest_w, $dest_h, $crop = fal
  * @param string $file   File path.
  * @param int    $width  Image width.
  * @param int    $height Image height.
- * @param bool   $crop   Optional. Whether to crop image to specified height and width or resize.
+ * @param bool   $crop   Optional. Whether to crop image to specified width and height or resize.
  *                       Default false.
  * @return false|array False, if no image was created. Metadata array on success.
  */
@@ -597,9 +613,21 @@ function image_make_intermediate_size( $file, $width, $height, $crop = false ) {
  * @since 2.5.0
  *
  * @param int          $post_id Attachment ID.
- * @param array|string $size    Optional. Registered image size to retrieve or flat array of height
- *                              and width dimensions. Default 'thumbnail'.
- * @return false|array False on failure or array of file path, width, and height on success.
+ * @param array|string $size    Optional. Image size. Accepts any valid image size, or an array
+ *                              of width and height values in pixels (in that order).
+ *                              Default 'thumbnail'.
+ * @return false|array $data {
+ *     Array of file relative path, width, and height on success. Additionally includes absolute
+ *     path and URL if registered size is passed to $size parameter. False on failure.
+ *
+ *     @type string $file   Image's path relative to uploads directory
+ *     @type int    $width  Width of image
+ *     @type int    $height Height of image
+ *     @type string $path   Optional. Image's absolute filesystem path. Only returned if registered
+ *                          size is passed to `$size` parameter.
+ *     @type string $url    Optional. Image's URL. Only returned if registered size is passed to `$size`
+ *                          parameter.
+ * }
  */
 function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) {
        if ( !is_array( $imagedata = wp_get_attachment_metadata( $post_id ) ) )
@@ -607,35 +635,44 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) {
 
        // get the best one for a specified set of dimensions
        if ( is_array($size) && !empty($imagedata['sizes']) ) {
-               $areas = array();
+               $candidates = array();
 
                foreach ( $imagedata['sizes'] as $_size => $data ) {
-                       // already cropped to width or height; so use this size
-                       if ( ( $data['width'] == $size[0] && $data['height'] <= $size[1] ) || ( $data['height'] == $size[1] && $data['width'] <= $size[0] ) ) {
-                               $file = $data['file'];
-                               list($width, $height) = image_constrain_size_for_editor( $data['width'], $data['height'], $size );
-                               return compact( 'file', 'width', 'height' );
+                       // If there's an exact match to an existing image size, short circuit.
+                       if ( $data['width'] == $size[0] && $data['height'] == $size[1] ) {
+                               list( $data['width'], $data['height'] ) = image_constrain_size_for_editor( $data['width'], $data['height'], $size );
+
+                               /** This filter is documented in wp-includes/media.php */
+                               return apply_filters( 'image_get_intermediate_size', $data, $post_id, $size );
+                       }
+                       // If it's not an exact match but it's at least the dimensions requested.
+                       if ( $data['width'] >= $size[0] && $data['height'] >= $size[1] ) {
+                               $candidates[ $data['width'] * $data['height'] ] = $_size;
                        }
-                       // add to lookup table: area => size
-                       $areas[$data['width'] * $data['height']] = $_size;
                }
-               if ( !$size || !empty($areas) ) {
+
+               if ( ! empty( $candidates ) ) {
                        // find for the smallest image not smaller than the desired size
-                       ksort($areas);
-                       foreach ( $areas as $_size ) {
+                       ksort( $candidates );
+                       foreach ( $candidates as $_size ) {
                                $data = $imagedata['sizes'][$_size];
-                               if ( $data['width'] >= $size[0] || $data['height'] >= $size[1] ) {
-                                       // Skip images with unexpectedly divergent aspect ratios (crops)
-                                       // First, we calculate what size the original image would be if constrained to a box the size of the current image in the loop
-                                       $maybe_cropped = image_resize_dimensions($imagedata['width'], $imagedata['height'], $data['width'], $data['height'], false );
-                                       // If the size doesn't match within one pixel, then it is of a different aspect ratio, so we skip it, unless it's the thumbnail size
-                                       if ( 'thumbnail' != $_size && ( !$maybe_cropped || ( $maybe_cropped[4] != $data['width'] && $maybe_cropped[4] + 1 != $data['width'] ) || ( $maybe_cropped[5] != $data['height'] && $maybe_cropped[5] + 1 != $data['height'] ) ) )
-                                               continue;
-                                       // If we're still here, then we're going to use this size
-                                       $file = $data['file'];
-                                       list($width, $height) = image_constrain_size_for_editor( $data['width'], $data['height'], $size );
-                                       return compact( 'file', 'width', 'height' );
+
+                               // Skip images with unexpectedly divergent aspect ratios (crops)
+                               // First, we calculate what size the original image would be if constrained to a box the size of the current image in the loop
+                               $maybe_cropped = image_resize_dimensions($imagedata['width'], $imagedata['height'], $data['width'], $data['height'], false );
+                               // If the size doesn't match within one pixel, then it is of a different aspect ratio, so we skip it, unless it's the thumbnail size
+                               if ( 'thumbnail' != $_size &&
+                                 ( ! $maybe_cropped
+                                   || ( $maybe_cropped[4] != $data['width'] && $maybe_cropped[4] + 1 != $data['width'] )
+                                   || ( $maybe_cropped[5] != $data['height'] && $maybe_cropped[5] + 1 != $data['height'] )
+                                 ) ) {
+                                 continue;
                                }
+                               // If we're still here, then we're going to use this size.
+                               list( $data['width'], $data['height'] ) = image_constrain_size_for_editor( $data['width'], $data['height'], $size );
+
+                               /** This filter is documented in wp-includes/media.php */
+                               return apply_filters( 'image_get_intermediate_size', $data, $post_id, $size );
                        }
                }
        }
@@ -650,7 +687,21 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) {
                $data['path'] = path_join( dirname($imagedata['file']), $data['file'] );
                $data['url'] = path_join( dirname($file_url), $data['file'] );
        }
-       return $data;
+
+       /**
+        * Filter the output of image_get_intermediate_size()
+        *
+        * @since 4.4.0
+        *
+        * @see image_get_intermediate_size()
+        *
+        * @param array        $data    Array of file relative path, width, and height on success. May also include
+        *                              file absolute path and URL.
+        * @param int          $post_id The post_id of the image attachment
+        * @param string|array $size    Registered image size or flat array of initially-requested height and width
+        *                              dimensions (in that order).
+        */
+       return apply_filters( 'image_get_intermediate_size', $data, $post_id, $size );
 }
 
 /**
@@ -664,7 +715,7 @@ function image_get_intermediate_size( $post_id, $size = 'thumbnail' ) {
  */
 function get_intermediate_image_sizes() {
        global $_wp_additional_image_sizes;
-       $image_sizes = array('thumbnail', 'medium', 'large'); // Standard sizes
+       $image_sizes = array('thumbnail', 'medium', 'medium_large', 'large'); // Standard sizes
        if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) )
                $image_sizes = array_merge( $image_sizes, array_keys( $_wp_additional_image_sizes ) );
 
@@ -674,7 +725,7 @@ function get_intermediate_image_sizes() {
         * @since 2.5.0
         *
         * @param array $image_sizes An array of intermediate image sizes. Defaults
-        *                           are 'thumbnail', 'medium', 'large'.
+        *                           are 'thumbnail', 'medium', 'medium_large', 'large'.
         */
        return apply_filters( 'intermediate_image_sizes', $image_sizes );
 }
@@ -684,13 +735,18 @@ function get_intermediate_image_sizes() {
  *
  * A mime icon for files, thumbnail or intermediate size for images.
  *
+ * The returned array contains four values: the URL of the attachment image src,
+ * the width of the image file, the height of the image file, and a boolean
+ * representing whether the returned array describes an intermediate (generated)
+ * image size or the original, full-sized upload.
+ *
  * @since 2.5.0
  *
  * @param int          $attachment_id Image attachment ID.
- * @param string|array $size          Optional. Registered image size to retrieve the source for or a flat
- *                                    array of height and width dimensions. Default 'thumbnail'.
+ * @param string|array $size          Optional. Image size. Accepts any valid image size, or an array of width
+ *                                    and height values in pixels (in that order). Default 'thumbnail'.
  * @param bool         $icon          Optional. Whether the image should be treated as an icon. Default false.
- * @return false|array Returns an array (url, width, height), or false, if no image is available.
+ * @return false|array Returns an array (url, width, height, is_intermediate), or false, if no image is available.
  */
 function wp_get_attachment_image_src( $attachment_id, $size = 'thumbnail', $icon = false ) {
        // get a thumbnail or intermediate image if there is one
@@ -717,8 +773,8 @@ function wp_get_attachment_image_src( $attachment_id, $size = 'thumbnail', $icon
         *
         * @param array|false  $image         Either array with src, width & height, icon src, or false.
         * @param int          $attachment_id Image attachment ID.
-        * @param string|array $size          Registered image size to retrieve the source for or a flat
-        *                                    array of height and width dimensions. Default 'thumbnail'.
+        * @param string|array $size          Size of image. Image size or array of width and height values
+        *                                    (in that order). Default 'thumbnail'.
         * @param bool         $icon          Whether the image should be treated as an icon. Default false.
         */
        return apply_filters( 'wp_get_attachment_image_src', $image, $attachment_id, $size, $icon );
@@ -735,8 +791,8 @@ function wp_get_attachment_image_src( $attachment_id, $size = 'thumbnail', $icon
  * @since 2.5.0
  *
  * @param int          $attachment_id Image attachment ID.
- * @param string|array $size          Optional. Registered image size or flat array of height and width
- *                                    dimensions. Default 'thumbnail'.
+ * @param string|array $size          Optional. Image size. Accepts any valid image size, or an array of width
+ *                                    and height values in pixels (in that order). Default 'thumbnail'.
  * @param bool         $icon          Optional. Whether the image should be treated as an icon. Default false.
  * @param string|array $attr          Optional. Attributes for the image markup. Default empty.
  * @return string HTML img element or empty string on failure.
@@ -754,7 +810,7 @@ function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = fa
                $attachment = get_post($attachment_id);
                $default_attr = array(
                        'src'   => $src,
-                       'class' => "attachment-$size_class",
+                       'class' => "attachment-$size_class size-$size_class",
                        'alt'   => trim(strip_tags( get_post_meta($attachment_id, '_wp_attachment_image_alt', true) )), // Use Alt field first
                );
                if ( empty($default_attr['alt']) )
@@ -762,7 +818,26 @@ function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = fa
                if ( empty($default_attr['alt']) )
                        $default_attr['alt'] = trim(strip_tags( $attachment->post_title )); // Finally, use the title
 
-               $attr = wp_parse_args($attr, $default_attr);
+               $attr = wp_parse_args( $attr, $default_attr );
+
+               // Generate 'srcset' and 'sizes' if not already present.
+               if ( empty( $attr['srcset'] ) ) {
+                       $image_meta = get_post_meta( $attachment_id, '_wp_attachment_metadata', true );
+
+                       if ( is_array( $image_meta ) ) {
+                               $size_array = array( absint( $width ), absint( $height ) );
+                               $srcset = wp_calculate_image_srcset( $size_array, $src, $image_meta, $attachment_id );
+                               $sizes = wp_calculate_image_sizes( $size_array, $src, $image_meta, $attachment_id );
+
+                               if ( $srcset && ( $sizes || ! empty( $attr['sizes'] ) ) ) {
+                                       $attr['srcset'] = $srcset;
+
+                                       if ( empty( $attr['sizes'] ) ) {
+                                               $attr['sizes'] = $sizes;
+                                       }
+                               }
+                       }
+               }
 
                /**
                 * Filter the list of attachment image attributes.
@@ -771,7 +846,8 @@ function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = fa
                 *
                 * @param array        $attr       Attributes for the image markup.
                 * @param WP_Post      $attachment Image attachment post.
-                * @param string|array $size       Requested size.
+                * @param string|array $size       Requested size. Image size or array of width and height values
+                *                                 (in that order). Default 'thumbnail'.
                 */
                $attr = apply_filters( 'wp_get_attachment_image_attributes', $attr, $attachment, $size );
                $attr = array_map( 'esc_attr', $attr );
@@ -785,6 +861,500 @@ function wp_get_attachment_image($attachment_id, $size = 'thumbnail', $icon = fa
        return $html;
 }
 
+/**
+ * Get the URL of an image attachment.
+ *
+ * @since 4.4.0
+ *
+ * @param int          $attachment_id Image attachment ID.
+ * @param string|array $size          Optional. Image size to retrieve. Accepts any valid image size, or an array
+ *                                    of width and height values in pixels (in that order). Default 'thumbnail'.
+ * @param bool         $icon          Optional. Whether the image should be treated as an icon. Default false.
+ * @return string|false Attachment URL or false if no image is available.
+ */
+function wp_get_attachment_image_url( $attachment_id, $size = 'thumbnail', $icon = false ) {
+       $image = wp_get_attachment_image_src( $attachment_id, $size, $icon );
+       return isset( $image['0'] ) ? $image['0'] : false;
+}
+
+/**
+ * Caches and returns the base URL of the uploads directory.
+ *
+ * @since 4.4.0
+ * @access private
+ *
+ * @return string The base URL, cached.
+ */
+function _wp_upload_dir_baseurl() {
+       static $baseurl = array();
+
+       $blog_id = get_current_blog_id();
+
+       if ( empty( $baseurl[$blog_id] ) ) {
+               $uploads_dir = wp_upload_dir();
+               $baseurl[$blog_id] = $uploads_dir['baseurl'];
+       }
+
+       return $baseurl[$blog_id];
+}
+
+/**
+ * Get the image size as array from its meta data.
+ *
+ * Used for responsive images.
+ *
+ * @since 4.4.0
+ * @access private
+ *
+ * @param string $size_name  Image size. Accepts any valid image size name ('thumbnail', 'medium', etc.).
+ * @param array  $image_meta The image meta data.
+ * @return array|bool Array of width and height values in pixels (in that order)
+ *                    or false if the size doesn't exist.
+ */
+function _wp_get_image_size_from_meta( $size_name, $image_meta ) {
+       if ( $size_name === 'full' ) {
+               return array(
+                       absint( $image_meta['width'] ),
+                       absint( $image_meta['height'] ),
+               );
+       } elseif ( ! empty( $image_meta['sizes'][$size_name] ) ) {
+               return array(
+                       absint( $image_meta['sizes'][$size_name]['width'] ),
+                       absint( $image_meta['sizes'][$size_name]['height'] ),
+               );
+       }
+
+       return false;
+}
+
+/**
+ * Retrieves the value for an image attachment's 'srcset' attribute.
+ *
+ * @since 4.4.0
+ *
+ * @see wp_calculate_image_srcset()
+ *
+ * @param int          $attachment_id Image attachment ID.
+ * @param array|string $size          Optional. Image size. Accepts any valid image size, or an array of
+ *                                    width and height values in pixels (in that order). Default 'medium'.
+ * @param array        $image_meta    Optional. The image meta data as returned by 'wp_get_attachment_metadata()'.
+ *                                    Default null.
+ * @return string|bool A 'srcset' value string or false.
+ */
+function wp_get_attachment_image_srcset( $attachment_id, $size = 'medium', $image_meta = null ) {
+       if ( ! $image = wp_get_attachment_image_src( $attachment_id, $size ) ) {
+               return false;
+       }
+
+       if ( ! is_array( $image_meta ) ) {
+               $image_meta = get_post_meta( $attachment_id, '_wp_attachment_metadata', true );
+       }
+
+       $image_src = $image[0];
+       $size_array = array(
+               absint( $image[1] ),
+               absint( $image[2] )
+       );
+
+       return wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attachment_id );
+}
+
+/**
+ * A helper function to calculate the image sources to include in a 'srcset' attribute.
+ *
+ * @since 4.4.0
+ *
+ * @param array  $size_array    Array of width and height values in pixels (in that order).
+ * @param string $image_src     The 'src' of the image.
+ * @param array  $image_meta    The image meta data as returned by 'wp_get_attachment_metadata()'.
+ * @param int    $attachment_id Optional. The image attachment ID to pass to the filter. Default 0.
+ * @return string|bool          The 'srcset' attribute value. False on error or when only one source exists.
+ */
+function wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attachment_id = 0 ) {
+       if ( empty( $image_meta['sizes'] ) ) {
+               return false;
+       }
+
+       $image_sizes = $image_meta['sizes'];
+
+       // Get the width and height of the image.
+       $image_width = (int) $size_array[0];
+       $image_height = (int) $size_array[1];
+
+       // Bail early if error/no width.
+       if ( $image_width < 1 ) {
+               return false;
+       }
+
+       $image_basename = wp_basename( $image_meta['file'] );
+       $image_baseurl = _wp_upload_dir_baseurl();
+
+       /*
+        * WordPress flattens animated GIFs into one frame when generating intermediate sizes.
+        * To avoid hiding animation in user content, if src is a full size GIF, a srcset attribute is not generated.
+        * If src is an intermediate size GIF, the full size is excluded from srcset to keep a flattened GIF from becoming animated.
+        */
+       if ( ! isset( $image_sizes['thumbnail']['mime-type'] ) || 'image/gif' !== $image_sizes['thumbnail']['mime-type'] ) {
+               $image_sizes['full'] = array(
+                       'width'  => $image_meta['width'],
+                       'height' => $image_meta['height'],
+                       'file'   => $image_basename,
+               );
+       } elseif ( strpos( $image_src, $image_meta['file'] ) ) {
+               return false;
+       }
+
+       // Uploads are (or have been) in year/month sub-directories.
+       if ( $image_basename !== $image_meta['file'] ) {
+               $dirname = dirname( $image_meta['file'] );
+
+               if ( $dirname !== '.' ) {
+                       $image_baseurl = trailingslashit( $image_baseurl ) . $dirname;
+               }
+       }
+
+       $image_baseurl = trailingslashit( $image_baseurl );
+
+       // Calculate the image aspect ratio.
+       $image_ratio = $image_height / $image_width;
+
+       /*
+        * Images that have been edited in WordPress after being uploaded will
+        * contain a unique hash. Look for that hash and use it later to filter
+        * out images that are leftovers from previous versions.
+        */
+       $image_edited = preg_match( '/-e[0-9]{13}/', wp_basename( $image_src ), $image_edit_hash );
+
+       /**
+        * Filter the maximum image width to be included in a 'srcset' attribute.
+        *
+        * @since 4.4.0
+        *
+        * @param int   $max_width  The maximum image width to be included in the 'srcset'. Default '1600'.
+        * @param array $size_array Array of width and height values in pixels (in that order).
+        */
+       $max_srcset_image_width = apply_filters( 'max_srcset_image_width', 1600, $size_array );
+
+       // Array to hold URL candidates.
+       $sources = array();
+
+       /*
+        * Loop through available images. Only use images that are resized
+        * versions of the same edit.
+        */
+       foreach ( $image_sizes as $image ) {
+
+               // Filter out images that are from previous edits.
+               if ( $image_edited && ! strpos( $image['file'], $image_edit_hash[0] ) ) {
+                       continue;
+               }
+
+               // Filter out images that are wider than '$max_srcset_image_width'.
+               if ( $max_srcset_image_width && $image['width'] > $max_srcset_image_width ) {
+                       continue;
+               }
+
+               // Calculate the new image ratio.
+               if ( $image['width'] ) {
+                       $image_ratio_compare = $image['height'] / $image['width'];
+               } else {
+                       $image_ratio_compare = 0;
+               }
+
+               // If the new ratio differs by less than 0.002, use it.
+               if ( abs( $image_ratio - $image_ratio_compare ) < 0.002 ) {
+                       // Add the URL, descriptor, and value to the sources array to be returned.
+                       $sources[ $image['width'] ] = array(
+                               'url'        => $image_baseurl . $image['file'],
+                               'descriptor' => 'w',
+                               'value'      => $image['width'],
+                       );
+               }
+       }
+
+       /**
+        * Filter an image's 'srcset' sources.
+        *
+        * @since 4.4.0
+        *
+        * @param array  $sources {
+        *     One or more arrays of source data to include in the 'srcset'.
+        *
+        *     @type array $width {
+        *         @type string $url        The URL of an image source.
+        *         @type string $descriptor The descriptor type used in the image candidate string,
+        *                                  either 'w' or 'x'.
+        *         @type int    $value      The source width if paired with a 'w' descriptor, or a
+        *                                  pixel density value if paired with an 'x' descriptor.
+        *     }
+        * }
+        * @param array  $size_array    Array of width and height values in pixels (in that order).
+        * @param string $image_src     The 'src' of the image.
+        * @param array  $image_meta    The image meta data as returned by 'wp_get_attachment_metadata()'.
+        * @param int    $attachment_id Image attachment ID or 0.
+        */
+       $sources = apply_filters( 'wp_calculate_image_srcset', $sources, $size_array, $image_src, $image_meta, $attachment_id );
+
+       // Only return a 'srcset' value if there is more than one source.
+       if ( count( $sources ) < 2 ) {
+               return false;
+       }
+
+       $srcset = '';
+
+       foreach ( $sources as $source ) {
+               $srcset .= $source['url'] . ' ' . $source['value'] . $source['descriptor'] . ', ';
+       }
+
+       return rtrim( $srcset, ', ' );
+}
+
+/**
+ * Retrieves the value for an image attachment's 'sizes' attribute.
+ *
+ * @since 4.4.0
+ *
+ * @see wp_calculate_image_sizes()
+ *
+ * @param int          $attachment_id Image attachment ID.
+ * @param array|string $size          Optional. Image size. Accepts any valid image size, or an array of width
+ *                                    and height values in pixels (in that order). Default 'medium'.
+ * @param array        $image_meta    Optional. The image meta data as returned by 'wp_get_attachment_metadata()'.
+ *                                    Default null.
+ * @return string|bool A valid source size value for use in a 'sizes' attribute or false.
+ */
+function wp_get_attachment_image_sizes( $attachment_id, $size = 'medium', $image_meta = null ) {
+       if ( ! $image = wp_get_attachment_image_src( $attachment_id, $size ) ) {
+               return false;
+       }
+
+       if ( ! is_array( $image_meta ) ) {
+               $image_meta = get_post_meta( $attachment_id, '_wp_attachment_metadata', true );
+       }
+
+       $image_src = $image[0];
+       $size_array = array(
+               absint( $image[1] ),
+               absint( $image[2] )
+       );
+
+       return wp_calculate_image_sizes( $size_array, $image_src, $image_meta, $attachment_id );
+}
+
+/**
+ * Creates a 'sizes' attribute value for an image.
+ *
+ * @since 4.4.0
+ *
+ * @param array|string $size          Image size to retrieve. Accepts any valid image size, or an array
+ *                                    of width and height values in pixels (in that order). Default 'medium'.
+ * @param string       $image_src     Optional. The URL to the image file. Default null.
+ * @param array        $image_meta    Optional. The image meta data as returned by 'wp_get_attachment_metadata()'.
+ *                                    Default null.
+ * @param int          $attachment_id Optional. Image attachment ID. Either `$image_meta` or `$attachment_id`
+ *                                    is needed when using the image size name as argument for `$size`. Default 0.
+ * @return string|bool A valid source size value for use in a 'sizes' attribute or false.
+ */
+function wp_calculate_image_sizes( $size, $image_src = null, $image_meta = null, $attachment_id = 0 ) {
+       $width = 0;
+
+       if ( is_array( $size ) ) {
+               $width = absint( $size[0] );
+       } elseif ( is_string( $size ) ) {
+               if ( ! $image_meta && $attachment_id ) {
+                       $image_meta = get_post_meta( $attachment_id, '_wp_attachment_metadata', true );
+               }
+
+               if ( is_array( $image_meta ) ) {
+                       $size_array = _wp_get_image_size_from_meta( $size, $image_meta );
+                       if ( $size_array ) {
+                               $width = absint( $size_array[0] );
+                       }
+               }
+       }
+
+       if ( ! $width ) {
+               return false;
+       }
+
+       // Setup the default 'sizes' attribute.
+       $sizes = sprintf( '(max-width: %1$dpx) 100vw, %1$dpx', $width );
+
+       /**
+        * Filter the output of 'wp_calculate_image_sizes()'.
+        *
+        * @since 4.4.0
+        *
+        * @param string       $sizes         A source size value for use in a 'sizes' attribute.
+        * @param array|string $size          Requested size. Image size or array of width and height values
+        *                                    in pixels (in that order).
+        * @param string|null  $image_src     The URL to the image file or null.
+        * @param array|null   $image_meta    The image meta data as returned by wp_get_attachment_metadata() or null.
+        * @param int          $attachment_id Image attachment ID of the original image or 0.
+        */
+       return apply_filters( 'wp_calculate_image_sizes', $sizes, $size, $image_src, $image_meta, $attachment_id );
+}
+
+/**
+ * Filters 'img' elements in post content to add 'srcset' and 'sizes' attributes.
+ *
+ * @since 4.4.0
+ *
+ * @see wp_image_add_srcset_and_sizes()
+ *
+ * @param string $content The raw post content to be filtered.
+ * @return string Converted content with 'srcset' and 'sizes' attributes added to images.
+ */
+function wp_make_content_images_responsive( $content ) {
+       if ( ! preg_match_all( '/<img [^>]+>/', $content, $matches ) ) {
+               return $content;
+       }
+
+       $selected_images = $attachment_ids = array();
+
+       foreach( $matches[0] as $image ) {
+               if ( false === strpos( $image, ' srcset=' ) && preg_match( '/wp-image-([0-9]+)/i', $image, $class_id ) &&
+                       ( $attachment_id = absint( $class_id[1] ) ) ) {
+
+                       /*
+                        * If exactly the same image tag is used more than once, overwrite it.
+                        * All identical tags will be replaced later with 'str_replace()'.
+                        */
+                       $selected_images[ $image ] = $attachment_id;
+                       // Overwrite the ID when the same image is included more than once.
+                       $attachment_ids[ $attachment_id ] = true;
+               }
+       }
+
+       if ( count( $attachment_ids ) > 1 ) {
+               /*
+                * Warm object cache for use with 'get_post_meta()'.
+                *
+                * To avoid making a database call for each image, a single query
+                * warms the object cache with the meta information for all images.
+                */
+               update_meta_cache( 'post', array_keys( $attachment_ids ) );
+       }
+
+       foreach ( $selected_images as $image => $attachment_id ) {
+               $image_meta = get_post_meta( $attachment_id, '_wp_attachment_metadata', true );
+               $content = str_replace( $image, wp_image_add_srcset_and_sizes( $image, $image_meta, $attachment_id ), $content );
+       }
+
+       return $content;
+}
+
+/**
+ * Adds 'srcset' and 'sizes' attributes to an existing 'img' element.
+ *
+ * @since 4.4.0
+ *
+ * @see wp_calculate_image_srcset()
+ * @see wp_calculate_image_sizes()
+ *
+ * @param string $image         An HTML 'img' element to be filtered.
+ * @param array  $image_meta    The image meta data as returned by 'wp_get_attachment_metadata()'.
+ * @param int    $attachment_id Image attachment ID.
+ * @return string Converted 'img' element with 'srcset' and 'sizes' attributes added.
+ */
+function wp_image_add_srcset_and_sizes( $image, $image_meta, $attachment_id ) {
+       // Ensure the image meta exists.
+       if ( empty( $image_meta['sizes'] ) ) {
+               return $image;
+       }
+
+       $image_src = preg_match( '/src="([^"]+)"/', $image, $match_src ) ? $match_src[1] : '';
+       list( $image_src ) = explode( '?', $image_src );
+
+       // Return early if we couldn't get the image source.
+       if ( ! $image_src ) {
+               return $image;
+       }
+
+       // Bail early if an image has been inserted and later edited.
+       if ( preg_match( '/-e[0-9]{13}/', $image_meta['file'], $img_edit_hash ) &&
+               strpos( wp_basename( $image_src ), $img_edit_hash[0] ) === false ) {
+
+               return $image;
+       }
+
+       $base_url = trailingslashit( _wp_upload_dir_baseurl() );
+       $image_base_url = $base_url;
+
+       $dirname = dirname( $image_meta['file'] );
+       if ( $dirname !== '.' ) {
+               $image_base_url .= trailingslashit( $dirname );
+       }
+
+       $all_sizes = wp_list_pluck( $image_meta['sizes'], 'file' );
+
+       foreach ( $all_sizes as $key => $file ) {
+               $all_sizes[ $key ] = $image_base_url . $file;
+       }
+
+       // Add the original image.
+       $all_sizes[] = $base_url . $image_meta['file'];
+
+       // Bail early if the image src doesn't match any of the known image sizes.
+       if ( ! in_array( $image_src, $all_sizes ) ) {
+               return $image;
+       }
+
+       $width  = preg_match( '/ width="([0-9]+)"/',  $image, $match_width  ) ? (int) $match_width[1]  : 0;
+       $height = preg_match( '/ height="([0-9]+)"/', $image, $match_height ) ? (int) $match_height[1] : 0;
+
+       if ( ! $width || ! $height ) {
+               /*
+                * If attempts to parse the size value failed, attempt to use the image meta data to match
+                * the image file name from 'src' against the available sizes for an attachment.
+                */
+               $image_filename = wp_basename( $image_src );
+
+               if ( $image_filename === wp_basename( $image_meta['file'] ) ) {
+                       $width = (int) $image_meta['width'];
+                       $height = (int) $image_meta['height'];
+               } else {
+                       foreach( $image_meta['sizes'] as $image_size_data ) {
+                               if ( $image_filename === $image_size_data['file'] ) {
+                                       $width = (int) $image_size_data['width'];
+                                       $height = (int) $image_size_data['height'];
+                                       break;
+                               }
+                       }
+               }
+       }
+
+       if ( ! $width || ! $height ) {
+               return $image;
+       }
+
+       $size_array = array( $width, $height );
+       $srcset = wp_calculate_image_srcset( $size_array, $image_src, $image_meta, $attachment_id );
+
+       if ( $srcset ) {
+               // Check if there is already a 'sizes' attribute.
+               $sizes = strpos( $image, ' sizes=' );
+
+               if ( ! $sizes ) {
+                       $sizes = wp_calculate_image_sizes( $size_array, $image_src, $image_meta, $attachment_id );
+               }
+       }
+
+       if ( $srcset && $sizes ) {
+               // Format the 'srcset' and 'sizes' string and escape attributes.
+               $attr = sprintf( ' srcset="%s"', esc_attr( $srcset ) );
+
+               if ( is_string( $sizes ) ) {
+                       $attr .= sprintf( ' sizes="%s"', esc_attr( $sizes ) );
+               }
+
+               // Add 'srcset' and 'sizes' attributes to the image markup.
+               $image = preg_replace( '/<img ([^>]+?)[\/ ]*>/', '<img $1' . $attr . ' />', $image );
+       }
+
+       return $image;
+}
+
 /**
  * Adds a 'wp-post-image' class to post thumbnails. Internal use only.
  *
@@ -902,12 +1472,9 @@ function img_caption_shortcode( $attr, $content = null ) {
 
        $class = trim( 'wp-caption ' . $atts['align'] . ' ' . $atts['class'] );
 
-       if ( current_theme_supports( 'html5', 'caption' ) ) {
-               return '<figure ' . $atts['id'] . 'style="width: ' . (int) $atts['width'] . 'px;" class="' . esc_attr( $class ) . '">'
-               . do_shortcode( $content ) . '<figcaption class="wp-caption-text">' . $atts['caption'] . '</figcaption></figure>';
-       }
-
-       $caption_width = 10 + $atts['width'];
+       $html5 = current_theme_supports( 'html5', 'caption' );
+       // HTML5 captions never added the extra 10px to the image width
+       $width = $html5 ? $atts['width'] : ( 10 + $atts['width'] );
 
        /**
         * Filter the width of an image's caption.
@@ -919,19 +1486,27 @@ function img_caption_shortcode( $attr, $content = null ) {
         *
         * @see img_caption_shortcode()
         *
-        * @param int    $caption_width Width of the caption in pixels. To remove this inline style,
-        *                              return zero.
-        * @param array  $atts          Attributes of the caption shortcode.
-        * @param string $content       The image element, possibly wrapped in a hyperlink.
+        * @param int    $width    Width of the caption in pixels. To remove this inline style,
+        *                         return zero.
+        * @param array  $atts     Attributes of the caption shortcode.
+        * @param string $content  The image element, possibly wrapped in a hyperlink.
         */
-       $caption_width = apply_filters( 'img_caption_shortcode_width', $caption_width, $atts, $content );
+       $caption_width = apply_filters( 'img_caption_shortcode_width', $width, $atts, $content );
 
        $style = '';
        if ( $caption_width )
                $style = 'style="width: ' . (int) $caption_width . 'px" ';
 
-       return '<div ' . $atts['id'] . $style . 'class="' . esc_attr( $class ) . '">'
-       . do_shortcode( $content ) . '<p class="wp-caption-text">' . $atts['caption'] . '</p></div>';
+       $html = '';
+       if ( $html5 ) {
+               $html = '<figure ' . $atts['id'] . $style . 'class="' . esc_attr( $class ) . '">'
+               . do_shortcode( $content ) . '<figcaption class="wp-caption-text">' . $atts['caption'] . '</figcaption></figure>';
+       } else {
+               $html = '<div ' . $atts['id'] . $style . 'class="' . esc_attr( $class ) . '">'
+               . do_shortcode( $content ) . '<p class="wp-caption-text">' . $atts['caption'] . '</p></div>';
+       }
+
+       return $html;
 }
 
 add_shortcode('gallery', 'gallery_shortcode');
@@ -949,23 +1524,24 @@ add_shortcode('gallery', 'gallery_shortcode');
  * @param array $attr {
  *     Attributes of the gallery shortcode.
  *
- *     @type string $order      Order of the images in the gallery. Default 'ASC'. Accepts 'ASC', 'DESC'.
- *     @type string $orderby    The field to use when ordering the images. Default 'menu_order ID'.
- *                              Accepts any valid SQL ORDERBY statement.
- *     @type int    $id         Post ID.
- *     @type string $itemtag    HTML tag to use for each image in the gallery.
- *                              Default 'dl', or 'figure' when the theme registers HTML5 gallery support.
- *     @type string $icontag    HTML tag to use for each image's icon.
- *                              Default 'dt', or 'div' when the theme registers HTML5 gallery support.
- *     @type string $captiontag HTML tag to use for each image's caption.
- *                              Default 'dd', or 'figcaption' when the theme registers HTML5 gallery support.
- *     @type int    $columns    Number of columns of images to display. Default 3.
- *     @type string $size       Size of the images to display. Default 'thumbnail'.
- *     @type string $ids        A comma-separated list of IDs of attachments to display. Default empty.
- *     @type string $include    A comma-separated list of IDs of attachments to include. Default empty.
- *     @type string $exclude    A comma-separated list of IDs of attachments to exclude. Default empty.
- *     @type string $link       What to link each image to. Default empty (links to the attachment page).
- *                              Accepts 'file', 'none'.
+ *     @type string       $order      Order of the images in the gallery. Default 'ASC'. Accepts 'ASC', 'DESC'.
+ *     @type string       $orderby    The field to use when ordering the images. Default 'menu_order ID'.
+ *                                    Accepts any valid SQL ORDERBY statement.
+ *     @type int          $id         Post ID.
+ *     @type string       $itemtag    HTML tag to use for each image in the gallery.
+ *                                    Default 'dl', or 'figure' when the theme registers HTML5 gallery support.
+ *     @type string       $icontag    HTML tag to use for each image's icon.
+ *                                    Default 'dt', or 'div' when the theme registers HTML5 gallery support.
+ *     @type string       $captiontag HTML tag to use for each image's caption.
+ *                                    Default 'dd', or 'figcaption' when the theme registers HTML5 gallery support.
+ *     @type int          $columns    Number of columns of images to display. Default 3.
+ *     @type string|array $size       Size of the images to display. Accepts any valid image size, or an array of width
+ *                                    and height values in pixels (in that order). Default 'thumbnail'.
+ *     @type string       $ids        A comma-separated list of IDs of attachments to display. Default empty.
+ *     @type string       $include    A comma-separated list of IDs of attachments to include. Default empty.
+ *     @type string       $exclude    A comma-separated list of IDs of attachments to exclude. Default empty.
+ *     @type string       $link       What to link each image to. Default empty (links to the attachment page).
+ *                                    Accepts 'file', 'none'.
  * }
  * @return string HTML content to display gallery.
  */
@@ -1165,10 +1741,13 @@ function wp_underscore_playlist_templates() {
 ?>
 <script type="text/html" id="tmpl-wp-playlist-current-item">
        <# if ( data.image ) { #>
-       <img src="{{ data.thumb.src }}"/>
+       <img src="{{ data.thumb.src }}" alt="" />
        <# } #>
        <div class="wp-playlist-caption">
-               <span class="wp-playlist-item-meta wp-playlist-item-title">&#8220;{{ data.title }}&#8221;</span>
+               <span class="wp-playlist-item-meta wp-playlist-item-title"><?php
+                       /* translators: playlist item title */
+                       printf( _x( '&#8220;%s&#8221;', 'playlist item title' ), '{{ data.title }}' );
+               ?></span>
                <# if ( data.meta.album ) { #><span class="wp-playlist-item-meta wp-playlist-item-album">{{ data.meta.album }}</span><# } #>
                <# if ( data.meta.artist ) { #><span class="wp-playlist-item-meta wp-playlist-item-artist">{{ data.meta.artist }}</span><# } #>
        </div>
@@ -1180,7 +1759,10 @@ function wp_underscore_playlist_templates() {
                        <# if ( data.caption ) { #>
                                {{ data.caption }}
                        <# } else { #>
-                               <span class="wp-playlist-item-title">&#8220;{{{ data.title }}}&#8221;</span>
+                               <span class="wp-playlist-item-title"><?php
+                                       /* translators: playlist item title */
+                                       printf( _x( '&#8220;%s&#8221;', 'playlist item title' ), '{{{ data.title }}}' );
+                               ?></span>
                                <# if ( data.artists && data.meta.artist ) { #>
                                <span class="wp-playlist-item-artist"> &mdash; {{ data.meta.artist }}</span>
                                <# } #>
@@ -1971,8 +2553,9 @@ add_shortcode( 'video', 'wp_video_shortcode' );
  *
  * @see adjacent_image_link()
  *
- * @param string|array $size Optional. Registered image size or flat array of height and width dimensions.
- *                           0 or 'none' will default to 'post_title' or `$text`. Default 'thumbnail'.
+ * @param string|array $size Optional. Image size. Accepts any valid image size, an array of width and
+ *                           height values in pixels (in that order), 0, or 'none'. 0 or 'none' will
+ *                           default to 'post_title' or `$text`. Default 'thumbnail'.
  * @param string       $text Optional. Link text. Default false.
  */
 function previous_image_link( $size = 'thumbnail', $text = false ) {
@@ -1986,11 +2569,12 @@ function previous_image_link( $size = 'thumbnail', $text = false ) {
  *
  * @see adjacent_image_link()
  *
- * @param string|array $size Optional. Registered image size or flat array of height and width dimensions.
- *                           0 or 'none' will default to 'post_title' or `$text`. Default 'thumbnail'.
+ * @param string|array $size Optional. Image size. Accepts any valid image size, an array of width and
+ *                           height values in pixels (in that order), 0, or 'none'. 0 or 'none' will
+ *                           default to 'post_title' or `$text`. Default 'thumbnail'.
  * @param string       $text Optional. Link text. Default false.
  */
-function next_image_link($size = 'thumbnail', $text = false) {
+function next_image_link( $size = 'thumbnail', $text = false ) {
        adjacent_image_link(false, $size, $text);
 }
 
@@ -2002,8 +2586,8 @@ function next_image_link($size = 'thumbnail', $text = false) {
  * @since 2.5.0
  *
  * @param bool         $prev Optional. Whether to display the next (false) or previous (true) link. Default true.
- * @param string|array $size Optional. Registered image size or flat array of height and width dimensions.
- *                                     Default 'thumbnail'.
+ * @param string|array $size Optional. Image size. Accepts any valid image size, or an array of width and height
+ *                           values in pixels (in that order). Default 'thumbnail'.
  * @param bool         $text Optional. Link text. Default false.
  */
 function adjacent_image_link( $prev = true, $size = 'thumbnail', $text = false ) {
@@ -2063,7 +2647,8 @@ function get_attachment_taxonomies( $attachment ) {
        if ( ! is_object($attachment) )
                return array();
 
-       $filename = basename($attachment->guid);
+       $file = get_attached_file( $attachment->ID );
+       $filename = basename( $file );
 
        $objects = array('attachment');
 
@@ -2135,80 +2720,6 @@ function wp_imagecreatetruecolor($width, $height) {
        return $img;
 }
 
-/**
- * Registers an embed handler.
- *
- * Should probably only be used for sites that do not support oEmbed.
- *
- * @since 2.9.0
- *
- * @global WP_Embed $wp_embed
- *
- * @param string   $id       An internal ID/name for the handler. Needs to be unique.
- * @param string   $regex    The regex that will be used to see if this handler should be used for a URL.
- * @param callback $callback The callback function that will be called if the regex is matched.
- * @param int      $priority Optional. Used to specify the order in which the registered handlers will
- *                           be tested. Default 10.
- */
-function wp_embed_register_handler( $id, $regex, $callback, $priority = 10 ) {
-       global $wp_embed;
-       $wp_embed->register_handler( $id, $regex, $callback, $priority );
-}
-
-/**
- * Unregisters a previously-registered embed handler.
- *
- * @since 2.9.0
- *
- * @global WP_Embed $wp_embed
- *
- * @param string $id       The handler ID that should be removed.
- * @param int    $priority Optional. The priority of the handler to be removed. Default 10.
- */
-function wp_embed_unregister_handler( $id, $priority = 10 ) {
-       global $wp_embed;
-       $wp_embed->unregister_handler( $id, $priority );
-}
-
-/**
- * Create default array of embed parameters.
- *
- * The width defaults to the content width as specified by the theme. If the
- * theme does not specify a content width, then 500px is used.
- *
- * The default height is 1.5 times the width, or 1000px, whichever is smaller.
- *
- * The 'embed_defaults' filter can be used to adjust either of these values.
- *
- * @since 2.9.0
- *
- * @global int $content_width
- *
- * @param string $url Optional. The URL that should be embedded. Default empty.
- *
- * @return array Default embed parameters.
- */
-function wp_embed_defaults( $url = '' ) {
-       if ( ! empty( $GLOBALS['content_width'] ) )
-               $width = (int) $GLOBALS['content_width'];
-
-       if ( empty( $width ) )
-               $width = 500;
-
-       $height = min( ceil( $width * 1.5 ), 1000 );
-
-       /**
-        * Filter the default array of embed dimensions.
-        *
-        * @since 2.9.0
-        *
-        * @param int    $width  Width of the embed in pixels.
-        * @param int    $height Height of the embed in pixels.
-        * @param string $url    The URL that should be embedded.
-        */
-       return apply_filters( 'embed_defaults', compact( 'width', 'height' ), $url );
-}
-
 /**
  * Based on a supplied width/height example, return the biggest possible dimensions based on the max width/height.
  *
@@ -2231,252 +2742,6 @@ function wp_expand_dimensions( $example_width, $example_height, $max_width, $max
        return wp_constrain_dimensions( $example_width * 1000000, $example_height * 1000000, $max_width, $max_height );
 }
 
-/**
- * Attempts to fetch the embed HTML for a provided URL using oEmbed.
- *
- * @since 2.9.0
- *
- * @see WP_oEmbed
- *
- * @param string $url  The URL that should be embedded.
- * @param array  $args Optional. Additional arguments and parameters for retrieving embed HTML.
- *                     Default empty.
- * @return false|string False on failure or the embed HTML on success.
- */
-function wp_oembed_get( $url, $args = '' ) {
-       require_once( ABSPATH . WPINC . '/class-oembed.php' );
-       $oembed = _wp_oembed_get_object();
-       return $oembed->get_html( $url, $args );
-}
-
-/**
- * Adds a URL format and oEmbed provider URL pair.
- *
- * @since 2.9.0
- *
- * @see WP_oEmbed
- *
- * @param string  $format   The format of URL that this provider can handle. You can use asterisks
- *                          as wildcards.
- * @param string  $provider The URL to the oEmbed provider.
- * @param boolean $regex    Optional. Whether the `$format` parameter is in a RegEx format. Default false.
- */
-function wp_oembed_add_provider( $format, $provider, $regex = false ) {
-       require_once( ABSPATH . WPINC . '/class-oembed.php' );
-
-       if ( did_action( 'plugins_loaded' ) ) {
-               $oembed = _wp_oembed_get_object();
-               $oembed->providers[$format] = array( $provider, $regex );
-       } else {
-               WP_oEmbed::_add_provider_early( $format, $provider, $regex );
-       }
-}
-
-/**
- * Removes an oEmbed provider.
- *
- * @since 3.5.0
- *
- * @see WP_oEmbed
- *
- * @param string $format The URL format for the oEmbed provider to remove.
- * @return bool Was the provider removed successfully?
- */
-function wp_oembed_remove_provider( $format ) {
-       require_once( ABSPATH . WPINC . '/class-oembed.php' );
-
-       if ( did_action( 'plugins_loaded' ) ) {
-               $oembed = _wp_oembed_get_object();
-
-               if ( isset( $oembed->providers[ $format ] ) ) {
-                       unset( $oembed->providers[ $format ] );
-                       return true;
-               }
-       } else {
-               WP_oEmbed::_remove_provider_early( $format );
-       }
-
-       return false;
-}
-
-/**
- * Determines if default embed handlers should be loaded.
- *
- * Checks to make sure that the embeds library hasn't already been loaded. If
- * it hasn't, then it will load the embeds library.
- *
- * @since 2.9.0
- *
- * @see wp_embed_register_handler()
- */
-function wp_maybe_load_embeds() {
-       /**
-        * Filter whether to load the default embed handlers.
-        *
-        * Returning a falsey value will prevent loading the default embed handlers.
-        *
-        * @since 2.9.0
-        *
-        * @param bool $maybe_load_embeds Whether to load the embeds library. Default true.
-        */
-       if ( ! apply_filters( 'load_default_embeds', true ) ) {
-               return;
-       }
-
-       wp_embed_register_handler( 'youtube_embed_url', '#https?://(www.)?youtube\.com/(?:v|embed)/([^/]+)#i', 'wp_embed_handler_youtube' );
-
-       wp_embed_register_handler( 'googlevideo', '#http://video\.google\.([A-Za-z.]{2,5})/videoplay\?docid=([\d-]+)(.*?)#i', 'wp_embed_handler_googlevideo' );
-
-       /**
-        * Filter the audio embed handler callback.
-        *
-        * @since 3.6.0
-        *
-        * @param callback $handler Audio embed handler callback function.
-        */
-       wp_embed_register_handler( 'audio', '#^https?://.+?\.(' . join( '|', wp_get_audio_extensions() ) . ')$#i', apply_filters( 'wp_audio_embed_handler', 'wp_embed_handler_audio' ), 9999 );
-
-       /**
-        * Filter the video embed handler callback.
-        *
-        * @since 3.6.0
-        *
-        * @param callback $handler Video embed handler callback function.
-        */
-       wp_embed_register_handler( 'video', '#^https?://.+?\.(' . join( '|', wp_get_video_extensions() ) . ')$#i', apply_filters( 'wp_video_embed_handler', 'wp_embed_handler_video' ), 9999 );
-}
-
-/**
- * The Google Video embed handler callback.
- *
- * Google Video does not support oEmbed.
- *
- * @see WP_Embed::register_handler()
- * @see WP_Embed::shortcode()
- *
- * @param array  $matches The RegEx matches from the provided regex when calling wp_embed_register_handler().
- * @param array  $attr    Embed attributes.
- * @param string $url     The original URL that was matched by the regex.
- * @param array  $rawattr The original unmodified attributes.
- * @return string The embed HTML.
- */
-function wp_embed_handler_googlevideo( $matches, $attr, $url, $rawattr ) {
-       // If the user supplied a fixed width AND height, use it
-       if ( !empty($rawattr['width']) && !empty($rawattr['height']) ) {
-               $width  = (int) $rawattr['width'];
-               $height = (int) $rawattr['height'];
-       } else {
-               list( $width, $height ) = wp_expand_dimensions( 425, 344, $attr['width'], $attr['height'] );
-       }
-
-       /**
-        * Filter the Google Video embed output.
-        *
-        * @since 2.9.0
-        *
-        * @param string $html    Google Video HTML embed markup.
-        * @param array  $matches The RegEx matches from the provided regex.
-        * @param array  $attr    An array of embed attributes.
-        * @param string $url     The original URL that was matched by the regex.
-        * @param array  $rawattr The original unmodified attributes.
-        */
-       return apply_filters( 'embed_googlevideo', '<embed type="application/x-shockwave-flash" src="http://video.google.com/googleplayer.swf?docid=' . esc_attr($matches[2]) . '&amp;hl=en&amp;fs=true" style="width:' . esc_attr($width) . 'px;height:' . esc_attr($height) . 'px" allowFullScreen="true" allowScriptAccess="always" />', $matches, $attr, $url, $rawattr );
-}
-
-/**
- * YouTube iframe embed handler callback.
- *
- * Catches YouTube iframe embed URLs that are not parsable by oEmbed but can be translated into a URL that is.
- *
- * @since 4.0.0
- *
- * @global WP_Embed $wp_embed
- *
- * @param array  $matches The RegEx matches from the provided regex when calling
- *                        wp_embed_register_handler().
- * @param array  $attr    Embed attributes.
- * @param string $url     The original URL that was matched by the regex.
- * @param array  $rawattr The original unmodified attributes.
- * @return string The embed HTML.
- */
-function wp_embed_handler_youtube( $matches, $attr, $url, $rawattr ) {
-       global $wp_embed;
-       $embed = $wp_embed->autoembed( "https://youtube.com/watch?v={$matches[2]}" );
-
-       /**
-        * Filter the YoutTube embed output.
-        *
-        * @since 4.0.0
-        *
-        * @see wp_embed_handler_youtube()
-        *
-        * @param string $embed   YouTube embed output.
-        * @param array  $attr    An array of embed attributes.
-        * @param string $url     The original URL that was matched by the regex.
-        * @param array  $rawattr The original unmodified attributes.
-        */
-       return apply_filters( 'wp_embed_handler_youtube', $embed, $attr, $url, $rawattr );
-}
-
-/**
- * Audio embed handler callback.
- *
- * @since 3.6.0
- *
- * @param array  $matches The RegEx matches from the provided regex when calling wp_embed_register_handler().
- * @param array  $attr Embed attributes.
- * @param string $url The original URL that was matched by the regex.
- * @param array  $rawattr The original unmodified attributes.
- * @return string The embed HTML.
- */
-function wp_embed_handler_audio( $matches, $attr, $url, $rawattr ) {
-       $audio = sprintf( '[audio src="%s" /]', esc_url( $url ) );
-
-       /**
-        * Filter the audio embed output.
-        *
-        * @since 3.6.0
-        *
-        * @param string $audio   Audio embed output.
-        * @param array  $attr    An array of embed attributes.
-        * @param string $url     The original URL that was matched by the regex.
-        * @param array  $rawattr The original unmodified attributes.
-        */
-       return apply_filters( 'wp_embed_handler_audio', $audio, $attr, $url, $rawattr );
-}
-
-/**
- * Video embed handler callback.
- *
- * @since 3.6.0
- *
- * @param array  $matches The RegEx matches from the provided regex when calling wp_embed_register_handler().
- * @param array  $attr    Embed attributes.
- * @param string $url     The original URL that was matched by the regex.
- * @param array  $rawattr The original unmodified attributes.
- * @return string The embed HTML.
- */
-function wp_embed_handler_video( $matches, $attr, $url, $rawattr ) {
-       $dimensions = '';
-       if ( ! empty( $rawattr['width'] ) && ! empty( $rawattr['height'] ) ) {
-               $dimensions .= sprintf( 'width="%d" ', (int) $rawattr['width'] );
-               $dimensions .= sprintf( 'height="%d" ', (int) $rawattr['height'] );
-       }
-       $video = sprintf( '[video %s src="%s" /]', $dimensions, esc_url( $url ) );
-
-       /**
-        * Filter the video embed output.
-        *
-        * @since 3.6.0
-        *
-        * @param string $video   Video embed output.
-        * @param array  $attr    An array of embed attributes.
-        * @param string $url     The original URL that was matched by the regex.
-        * @param array  $rawattr The original unmodified attributes.
-        */
-       return apply_filters( 'wp_embed_handler_video', $video, $attr, $url, $rawattr );
-}
-
 /**
  * Converts a shorthand byte value to an integer byte value.
  *
@@ -2489,11 +2754,11 @@ function wp_convert_hr_to_bytes( $size ) {
        $size  = strtolower( $size );
        $bytes = (int) $size;
        if ( strpos( $size, 'k' ) !== false )
-               $bytes = intval( $size ) * 1024;
+               $bytes = intval( $size ) * KB_IN_BYTES;
        elseif ( strpos( $size, 'm' ) !== false )
-               $bytes = intval($size) * 1024 * 1024;
+               $bytes = intval($size) * MB_IN_BYTES;
        elseif ( strpos( $size, 'g' ) !== false )
-               $bytes = intval( $size ) * 1024 * 1024 * 1024;
+               $bytes = intval( $size ) * GB_IN_BYTES;
        return $bytes;
 }
 
@@ -2764,8 +3029,16 @@ function wp_prepare_attachment_for_js( $attachment ) {
        }
 
        $attached_file = get_attached_file( $attachment->ID );
-       if ( file_exists( $attached_file ) ) {
+
+       if ( isset( $meta['filesize'] ) ) {
+               $bytes = $meta['filesize'];
+       } elseif ( file_exists( $attached_file ) ) {
                $bytes = filesize( $attached_file );
+       } else {
+               $bytes = '';
+       }
+
+       if ( $bytes ) {
                $response['filesizeInBytes'] = $bytes;
                $response['filesizeHumanReadable'] = size_format( $bytes );
        }
@@ -3017,8 +3290,6 @@ function wp_enqueue_media( $args = array() ) {
                }
        }
 
-       $hier = $post && is_post_type_hierarchical( $post->post_type );
-
        if ( $post ) {
                $post_type_object = get_post_type_object( $post->post_type );
        } else {
@@ -3057,10 +3328,10 @@ function wp_enqueue_media( $args = array() ) {
                'allMediaItems'          => __( 'All media items' ),
                'allDates'               => __( 'All dates' ),
                'noItemsFound'           => __( 'No items found.' ),
-               'insertIntoPost'         => $hier ? __( 'Insert into page' ) : __( 'Insert into post' ),
+               'insertIntoPost'         => $post_type_object->labels->insert_into_item,
                'unattached'             => __( 'Unattached' ),
                'trash'                  => _x( 'Trash', 'noun' ),
-               'uploadedToThisPost'     => $hier ? __( 'Uploaded to this page' ) : __( 'Uploaded to this post' ),
+               'uploadedToThisPost'     => $post_type_object->labels->uploaded_to_this_item,
                'warnDelete'             => __( "You are about to permanently delete this item.\n  'Cancel' to stop, 'OK' to delete." ),
                'warnBulkDelete'         => __( "You are about to permanently delete these items.\n  'Cancel' to stop, 'OK' to delete." ),
                'warnBulkTrash'          => __( "You are about to trash these items.\n  'Cancel' to stop, 'OK' to delete." ),
@@ -3433,6 +3704,14 @@ function attachment_url_to_postid( $url ) {
        $dir = wp_upload_dir();
        $path = $url;
 
+       $site_url = parse_url( $dir['url'] );
+       $image_path = parse_url( $path );
+
+       //force the protocols to match if needed
+       if ( isset( $image_path['scheme'] ) && ( $image_path['scheme'] !== $site_url['scheme'] ) ) {
+               $path = str_replace( $image_path['scheme'], $site_url['scheme'], $path );
+       }
+
        if ( 0 === strpos( $path, $dir['baseurl'] . '/' ) ) {
                $path = substr( $path, strlen( $dir['baseurl'] . '/' ) );
        }
@@ -3451,9 +3730,7 @@ function attachment_url_to_postid( $url ) {
         * @param int|null $post_id The post_id (if any) found by the function.
         * @param string   $url     The URL being looked up.
         */
-       $post_id = apply_filters( 'attachment_url_to_postid', $post_id, $url );
-
-       return (int) $post_id;
+       return (int) apply_filters( 'attachment_url_to_postid', $post_id, $url );
 }
 
 /**
index a0700b07b4d4938be3726316d626c309723fc767..2a5f45fdc70a9b50335931b8502bcc2edd1cf8e7 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * Metadata API
+ * Core Metadata API
  *
  * Functions for retrieving and manipulating metadata of various WordPress object types. Metadata
  * for an object is a represented by a simple key-value pair. Objects may contain multiple
@@ -8,7 +8,6 @@
  *
  * @package WordPress
  * @subpackage Meta
- * @since 2.9.0
  */
 
 /**
@@ -475,12 +474,11 @@ function get_metadata($meta_type, $object_id, $meta_key = '', $single = false) {
         *
         * @since 3.1.0
         *
-        * @param null|array|string $value     The value get_metadata() should
-        *                                     return - a single metadata value,
+        * @param null|array|string $value     The value get_metadata() should return - a single metadata value,
         *                                     or an array of values.
         * @param int               $object_id Object ID.
         * @param string            $meta_key  Meta key.
-        * @param string|array      $single    Meta value, or an array of values.
+        * @param bool              $single    Whether to return only the first value of the specified $meta_key.
         */
        $check = apply_filters( "get_{$meta_type}_metadata", null, $object_id, $meta_key, $single );
        if ( null !== $check ) {
@@ -557,9 +555,9 @@ function metadata_exists( $meta_type, $object_id, $meta_key ) {
  *
  * @since 3.3.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param string $meta_type Type of object metadata is for (e.g., comment, post, or user)
+ * @param string $meta_type Type of object metadata is for (e.g., comment, post, term, or user).
  * @param int    $meta_id   ID for a specific meta row
  * @return object|false Meta object or false.
  */
@@ -598,7 +596,7 @@ function get_metadata_by_mid( $meta_type, $meta_id ) {
  *
  * @since 3.3.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $meta_type  Type of object metadata is for (e.g., comment, post, or user)
  * @param int    $meta_id    ID for a specific meta row
@@ -691,9 +689,9 @@ function update_metadata_by_mid( $meta_type, $meta_id, $meta_value, $meta_key =
  *
  * @since 3.3.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param string $meta_type Type of object metadata is for (e.g., comment, post, or user)
+ * @param string $meta_type Type of object metadata is for (e.g., comment, post, term, or user).
  * @param int    $meta_id   ID for a specific meta row
  * @return bool True on successful delete, false on failure.
  */
@@ -869,742 +867,6 @@ function get_meta_sql( $meta_query, $type, $primary_table, $primary_id_column, $
        return $meta_query_obj->get_sql( $type, $primary_table, $primary_id_column, $context );
 }
 
-/**
- * Class for generating SQL clauses that filter a primary query according to metadata keys and values.
- *
- * `WP_Meta_Query` is a helper that allows primary query classes, such as {@see WP_Query} and {@see WP_User_Query},
- * to filter their results by object metadata, by generating `JOIN` and `WHERE` subclauses to be attached
- * to the primary SQL query string.
- *
- * @since 3.2.0
- */
-class WP_Meta_Query {
-       /**
-        * Array of metadata queries.
-        *
-        * See {@see WP_Meta_Query::__construct()} for information on meta query arguments.
-        *
-        * @since 3.2.0
-        * @access public
-        * @var array
-        */
-       public $queries = array();
-
-       /**
-        * The relation between the queries. Can be one of 'AND' or 'OR'.
-        *
-        * @since 3.2.0
-        * @access public
-        * @var string
-        */
-       public $relation;
-
-       /**
-        * Database table to query for the metadata.
-        *
-        * @since 4.1.0
-        * @access public
-        * @var string
-        */
-       public $meta_table;
-
-       /**
-        * Column in meta_table that represents the ID of the object the metadata belongs to.
-        *
-        * @since 4.1.0
-        * @access public
-        * @var string
-        */
-       public $meta_id_column;
-
-       /**
-        * Database table that where the metadata's objects are stored (eg $wpdb->users).
-        *
-        * @since 4.1.0
-        * @access public
-        * @var string
-        */
-       public $primary_table;
-
-       /**
-        * Column in primary_table that represents the ID of the object.
-        *
-        * @since 4.1.0
-        * @access public
-        * @var string
-        */
-       public $primary_id_column;
-
-       /**
-        * A flat list of table aliases used in JOIN clauses.
-        *
-        * @since 4.1.0
-        * @access protected
-        * @var array
-        */
-       protected $table_aliases = array();
-
-       /**
-        * A flat list of clauses, keyed by clause 'name'.
-        *
-        * @since 4.2.0
-        * @access protected
-        * @var array
-        */
-       protected $clauses = array();
-
-       /**
-        * Whether the query contains any OR relations.
-        *
-        * @since 4.3.0
-        * @access protected
-        * @var bool
-        */
-       protected $has_or_relation = false;
-
-       /**
-        * Constructor.
-        *
-        * @since 3.2.0
-        * @since 4.2.0 Introduced support for naming query clauses by associative array keys.
-        *
-        * @access public
-        *
-        * @param array $meta_query {
-        *     Array of meta query clauses. When first-order clauses use strings as their array keys, they may be
-        *     referenced in the 'orderby' parameter of the parent query.
-        *
-        *     @type string $relation Optional. The MySQL keyword used to join
-        *                            the clauses of the query. Accepts 'AND', or 'OR'. Default 'AND'.
-        *     @type array {
-        *         Optional. An array of first-order clause parameters, or another fully-formed meta query.
-        *
-        *         @type string $key     Meta key to filter by.
-        *         @type string $value   Meta value to filter by.
-        *         @type string $compare MySQL operator used for comparing the $value. Accepts '=',
-        *                               '!=', '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN',
-        *                               'BETWEEN', 'NOT BETWEEN', 'REGEXP', 'NOT REGEXP', or 'RLIKE'.
-        *                               Default is 'IN' when `$value` is an array, '=' otherwise.
-        *         @type string $type    MySQL data type that the meta_value column will be CAST to for
-        *                               comparisons. Accepts 'NUMERIC', 'BINARY', 'CHAR', 'DATE',
-        *                               'DATETIME', 'DECIMAL', 'SIGNED', 'TIME', or 'UNSIGNED'.
-        *                               Default is 'CHAR'.
-        *     }
-        * }
-        */
-       public function __construct( $meta_query = false ) {
-               if ( !$meta_query )
-                       return;
-
-               if ( isset( $meta_query['relation'] ) && strtoupper( $meta_query['relation'] ) == 'OR' ) {
-                       $this->relation = 'OR';
-               } else {
-                       $this->relation = 'AND';
-               }
-
-               $this->queries = $this->sanitize_query( $meta_query );
-       }
-
-       /**
-        * Ensure the 'meta_query' argument passed to the class constructor is well-formed.
-        *
-        * Eliminates empty items and ensures that a 'relation' is set.
-        *
-        * @since 4.1.0
-        * @access public
-        *
-        * @param array $queries Array of query clauses.
-        * @return array Sanitized array of query clauses.
-        */
-       public function sanitize_query( $queries ) {
-               $clean_queries = array();
-
-               if ( ! is_array( $queries ) ) {
-                       return $clean_queries;
-               }
-
-               foreach ( $queries as $key => $query ) {
-                       if ( 'relation' === $key ) {
-                               $relation = $query;
-
-                       } elseif ( ! is_array( $query ) ) {
-                               continue;
-
-                       // First-order clause.
-                       } elseif ( $this->is_first_order_clause( $query ) ) {
-                               if ( isset( $query['value'] ) && array() === $query['value'] ) {
-                                       unset( $query['value'] );
-                               }
-
-                               $clean_queries[ $key ] = $query;
-
-                       // Otherwise, it's a nested query, so we recurse.
-                       } else {
-                               $cleaned_query = $this->sanitize_query( $query );
-
-                               if ( ! empty( $cleaned_query ) ) {
-                                       $clean_queries[ $key ] = $cleaned_query;
-                               }
-                       }
-               }
-
-               if ( empty( $clean_queries ) ) {
-                       return $clean_queries;
-               }
-
-               // Sanitize the 'relation' key provided in the query.
-               if ( isset( $relation ) && 'OR' === strtoupper( $relation ) ) {
-                       $clean_queries['relation'] = 'OR';
-                       $this->has_or_relation = true;
-
-               /*
-                * If there is only a single clause, call the relation 'OR'.
-                * This value will not actually be used to join clauses, but it
-                * simplifies the logic around combining key-only queries.
-                */
-               } elseif ( 1 === count( $clean_queries ) ) {
-                       $clean_queries['relation'] = 'OR';
-
-               // Default to AND.
-               } else {
-                       $clean_queries['relation'] = 'AND';
-               }
-
-               return $clean_queries;
-       }
-
-       /**
-        * Determine whether a query clause is first-order.
-        *
-        * A first-order meta query clause is one that has either a 'key' or
-        * a 'value' array key.
-        *
-        * @since 4.1.0
-        * @access protected
-        *
-        * @param array $query Meta query arguments.
-        * @return bool Whether the query clause is a first-order clause.
-        */
-       protected function is_first_order_clause( $query ) {
-               return isset( $query['key'] ) || isset( $query['value'] );
-       }
-
-       /**
-        * Constructs a meta query based on 'meta_*' query vars
-        *
-        * @since 3.2.0
-        * @access public
-        *
-        * @param array $qv The query variables
-        */
-       public function parse_query_vars( $qv ) {
-               $meta_query = array();
-
-               /*
-                * For orderby=meta_value to work correctly, simple query needs to be
-                * first (so that its table join is against an unaliased meta table) and
-                * needs to be its own clause (so it doesn't interfere with the logic of
-                * the rest of the meta_query).
-                */
-               $primary_meta_query = array();
-               foreach ( array( 'key', 'compare', 'type' ) as $key ) {
-                       if ( ! empty( $qv[ "meta_$key" ] ) ) {
-                               $primary_meta_query[ $key ] = $qv[ "meta_$key" ];
-                       }
-               }
-
-               // WP_Query sets 'meta_value' = '' by default.
-               if ( isset( $qv['meta_value'] ) && '' !== $qv['meta_value'] && ( ! is_array( $qv['meta_value'] ) || $qv['meta_value'] ) ) {
-                       $primary_meta_query['value'] = $qv['meta_value'];
-               }
-
-               $existing_meta_query = isset( $qv['meta_query'] ) && is_array( $qv['meta_query'] ) ? $qv['meta_query'] : array();
-
-               if ( ! empty( $primary_meta_query ) && ! empty( $existing_meta_query ) ) {
-                       $meta_query = array(
-                               'relation' => 'AND',
-                               $primary_meta_query,
-                               $existing_meta_query,
-                       );
-               } elseif ( ! empty( $primary_meta_query ) ) {
-                       $meta_query = array(
-                               $primary_meta_query,
-                       );
-               } elseif ( ! empty( $existing_meta_query ) ) {
-                       $meta_query = $existing_meta_query;
-               }
-
-               $this->__construct( $meta_query );
-       }
-
-       /**
-        * Return the appropriate alias for the given meta type if applicable.
-        *
-        * @since 3.7.0
-        * @access public
-        *
-        * @param string $type MySQL type to cast meta_value.
-        * @return string MySQL type.
-        */
-       public function get_cast_for_type( $type = '' ) {
-               if ( empty( $type ) )
-                       return 'CHAR';
-
-               $meta_type = strtoupper( $type );
-
-               if ( ! preg_match( '/^(?:BINARY|CHAR|DATE|DATETIME|SIGNED|UNSIGNED|TIME|NUMERIC(?:\(\d+(?:,\s?\d+)?\))?|DECIMAL(?:\(\d+(?:,\s?\d+)?\))?)$/', $meta_type ) )
-                       return 'CHAR';
-
-               if ( 'NUMERIC' == $meta_type )
-                       $meta_type = 'SIGNED';
-
-               return $meta_type;
-       }
-
-       /**
-        * Generates SQL clauses to be appended to a main query.
-        *
-        * @since 3.2.0
-        * @access public
-        *
-        * @param string $type              Type of meta, eg 'user', 'post'.
-        * @param string $primary_table     Database table where the object being filtered is stored (eg wp_users).
-        * @param string $primary_id_column ID column for the filtered object in $primary_table.
-        * @param object $context           Optional. The main query object.
-        * @return false|array {
-        *     Array containing JOIN and WHERE SQL clauses to append to the main query.
-        *
-        *     @type string $join  SQL fragment to append to the main JOIN clause.
-        *     @type string $where SQL fragment to append to the main WHERE clause.
-        * }
-        */
-       public function get_sql( $type, $primary_table, $primary_id_column, $context = null ) {
-               if ( ! $meta_table = _get_meta_table( $type ) ) {
-                       return false;
-               }
-
-               $this->meta_table     = $meta_table;
-               $this->meta_id_column = sanitize_key( $type . '_id' );
-
-               $this->primary_table     = $primary_table;
-               $this->primary_id_column = $primary_id_column;
-
-               $sql = $this->get_sql_clauses();
-
-               /*
-                * If any JOINs are LEFT JOINs (as in the case of NOT EXISTS), then all JOINs should
-                * be LEFT. Otherwise posts with no metadata will be excluded from results.
-                */
-               if ( false !== strpos( $sql['join'], 'LEFT JOIN' ) ) {
-                       $sql['join'] = str_replace( 'INNER JOIN', 'LEFT JOIN', $sql['join'] );
-               }
-
-               /**
-                * Filter the meta query's generated SQL.
-                *
-                * @since 3.1.0
-                *
-                * @param array $args {
-                *     An array of meta query SQL arguments.
-                *
-                *     @type array  $clauses           Array containing the query's JOIN and WHERE clauses.
-                *     @type array  $queries           Array of meta queries.
-                *     @type string $type              Type of meta.
-                *     @type string $primary_table     Primary table.
-                *     @type string $primary_id_column Primary column ID.
-                *     @type object $context           The main query object.
-                * }
-                */
-               return apply_filters_ref_array( 'get_meta_sql', array( $sql, $this->queries, $type, $primary_table, $primary_id_column, $context ) );
-       }
-
-       /**
-        * Generate SQL clauses to be appended to a main query.
-        *
-        * Called by the public {@see WP_Meta_Query::get_sql()}, this method
-        * is abstracted out to maintain parity with the other Query classes.
-        *
-        * @since 4.1.0
-        * @access protected
-        *
-        * @return array {
-        *     Array containing JOIN and WHERE SQL clauses to append to the main query.
-        *
-        *     @type string $join  SQL fragment to append to the main JOIN clause.
-        *     @type string $where SQL fragment to append to the main WHERE clause.
-        * }
-        */
-       protected function get_sql_clauses() {
-               /*
-                * $queries are passed by reference to get_sql_for_query() for recursion.
-                * To keep $this->queries unaltered, pass a copy.
-                */
-               $queries = $this->queries;
-               $sql = $this->get_sql_for_query( $queries );
-
-               if ( ! empty( $sql['where'] ) ) {
-                       $sql['where'] = ' AND ' . $sql['where'];
-               }
-
-               return $sql;
-       }
-
-       /**
-        * Generate SQL clauses for a single query array.
-        *
-        * If nested subqueries are found, this method recurses the tree to
-        * produce the properly nested SQL.
-        *
-        * @since 4.1.0
-        * @access protected
-        *
-        * @param array $query Query to parse, passed by reference.
-        * @param int   $depth Optional. Number of tree levels deep we currently are.
-        *                     Used to calculate indentation. Default 0.
-        * @return array {
-        *     Array containing JOIN and WHERE SQL clauses to append to a single query array.
-        *
-        *     @type string $join  SQL fragment to append to the main JOIN clause.
-        *     @type string $where SQL fragment to append to the main WHERE clause.
-        * }
-        */
-       protected function get_sql_for_query( &$query, $depth = 0 ) {
-               $sql_chunks = array(
-                       'join'  => array(),
-                       'where' => array(),
-               );
-
-               $sql = array(
-                       'join'  => '',
-                       'where' => '',
-               );
-
-               $indent = '';
-               for ( $i = 0; $i < $depth; $i++ ) {
-                       $indent .= "  ";
-               }
-
-               foreach ( $query as $key => &$clause ) {
-                       if ( 'relation' === $key ) {
-                               $relation = $query['relation'];
-                       } elseif ( is_array( $clause ) ) {
-
-                               // This is a first-order clause.
-                               if ( $this->is_first_order_clause( $clause ) ) {
-                                       $clause_sql = $this->get_sql_for_clause( $clause, $query, $key );
-
-                                       $where_count = count( $clause_sql['where'] );
-                                       if ( ! $where_count ) {
-                                               $sql_chunks['where'][] = '';
-                                       } elseif ( 1 === $where_count ) {
-                                               $sql_chunks['where'][] = $clause_sql['where'][0];
-                                       } else {
-                                               $sql_chunks['where'][] = '( ' . implode( ' AND ', $clause_sql['where'] ) . ' )';
-                                       }
-
-                                       $sql_chunks['join'] = array_merge( $sql_chunks['join'], $clause_sql['join'] );
-                               // This is a subquery, so we recurse.
-                               } else {
-                                       $clause_sql = $this->get_sql_for_query( $clause, $depth + 1 );
-
-                                       $sql_chunks['where'][] = $clause_sql['where'];
-                                       $sql_chunks['join'][]  = $clause_sql['join'];
-                               }
-                       }
-               }
-
-               // Filter to remove empties.
-               $sql_chunks['join']  = array_filter( $sql_chunks['join'] );
-               $sql_chunks['where'] = array_filter( $sql_chunks['where'] );
-
-               if ( empty( $relation ) ) {
-                       $relation = 'AND';
-               }
-
-               // Filter duplicate JOIN clauses and combine into a single string.
-               if ( ! empty( $sql_chunks['join'] ) ) {
-                       $sql['join'] = implode( ' ', array_unique( $sql_chunks['join'] ) );
-               }
-
-               // Generate a single WHERE clause with proper brackets and indentation.
-               if ( ! empty( $sql_chunks['where'] ) ) {
-                       $sql['where'] = '( ' . "\n  " . $indent . implode( ' ' . "\n  " . $indent . $relation . ' ' . "\n  " . $indent, $sql_chunks['where'] ) . "\n" . $indent . ')';
-               }
-
-               return $sql;
-       }
-
-       /**
-        * Generate SQL JOIN and WHERE clauses for a first-order query clause.
-        *
-        * "First-order" means that it's an array with a 'key' or 'value'.
-        *
-        * @since 4.1.0
-        * @access public
-        *
-        * @global wpdb $wpdb
-        *
-        * @param array  $clause       Query clause, passed by reference.
-        * @param array  $parent_query Parent query array.
-        * @param string $clause_key   Optional. The array key used to name the clause in the original `$meta_query`
-        *                             parameters. If not provided, a key will be generated automatically.
-        * @return array {
-        *     Array containing JOIN and WHERE SQL clauses to append to a first-order query.
-        *
-        *     @type string $join  SQL fragment to append to the main JOIN clause.
-        *     @type string $where SQL fragment to append to the main WHERE clause.
-        * }
-        */
-       public function get_sql_for_clause( &$clause, $parent_query, $clause_key = '' ) {
-               global $wpdb;
-
-               $sql_chunks = array(
-                       'where' => array(),
-                       'join' => array(),
-               );
-
-               if ( isset( $clause['compare'] ) ) {
-                       $clause['compare'] = strtoupper( $clause['compare'] );
-               } else {
-                       $clause['compare'] = isset( $clause['value'] ) && is_array( $clause['value'] ) ? 'IN' : '=';
-               }
-
-               if ( ! in_array( $clause['compare'], array(
-                       '=', '!=', '>', '>=', '<', '<=',
-                       'LIKE', 'NOT LIKE',
-                       'IN', 'NOT IN',
-                       'BETWEEN', 'NOT BETWEEN',
-                       'EXISTS', 'NOT EXISTS',
-                       'REGEXP', 'NOT REGEXP', 'RLIKE'
-               ) ) ) {
-                       $clause['compare'] = '=';
-               }
-
-               $meta_compare = $clause['compare'];
-
-               // First build the JOIN clause, if one is required.
-               $join = '';
-
-               // We prefer to avoid joins if possible. Look for an existing join compatible with this clause.
-               $alias = $this->find_compatible_table_alias( $clause, $parent_query );
-               if ( false === $alias ) {
-                       $i = count( $this->table_aliases );
-                       $alias = $i ? 'mt' . $i : $this->meta_table;
-
-                       // JOIN clauses for NOT EXISTS have their own syntax.
-                       if ( 'NOT EXISTS' === $meta_compare ) {
-                               $join .= " LEFT JOIN $this->meta_table";
-                               $join .= $i ? " AS $alias" : '';
-                               $join .= $wpdb->prepare( " ON ($this->primary_table.$this->primary_id_column = $alias.$this->meta_id_column AND $alias.meta_key = %s )", $clause['key'] );
-
-                       // All other JOIN clauses.
-                       } else {
-                               $join .= " INNER JOIN $this->meta_table";
-                               $join .= $i ? " AS $alias" : '';
-                               $join .= " ON ( $this->primary_table.$this->primary_id_column = $alias.$this->meta_id_column )";
-                       }
-
-                       $this->table_aliases[] = $alias;
-                       $sql_chunks['join'][] = $join;
-               }
-
-               // Save the alias to this clause, for future siblings to find.
-               $clause['alias'] = $alias;
-
-               // Determine the data type.
-               $_meta_type = isset( $clause['type'] ) ? $clause['type'] : '';
-               $meta_type  = $this->get_cast_for_type( $_meta_type );
-               $clause['cast'] = $meta_type;
-
-               // Fallback for clause keys is the table alias.
-               if ( ! $clause_key ) {
-                       $clause_key = $clause['alias'];
-               }
-
-               // Ensure unique clause keys, so none are overwritten.
-               $iterator = 1;
-               $clause_key_base = $clause_key;
-               while ( isset( $this->clauses[ $clause_key ] ) ) {
-                       $clause_key = $clause_key_base . '-' . $iterator;
-                       $iterator++;
-               }
-
-               // Store the clause in our flat array.
-               $this->clauses[ $clause_key ] =& $clause;
-
-               // Next, build the WHERE clause.
-
-               // meta_key.
-               if ( array_key_exists( 'key', $clause ) ) {
-                       if ( 'NOT EXISTS' === $meta_compare ) {
-                               $sql_chunks['where'][] = $alias . '.' . $this->meta_id_column . ' IS NULL';
-                       } else {
-                               $sql_chunks['where'][] = $wpdb->prepare( "$alias.meta_key = %s", trim( $clause['key'] ) );
-                       }
-               }
-
-               // meta_value.
-               if ( array_key_exists( 'value', $clause ) ) {
-                       $meta_value = $clause['value'];
-
-                       if ( in_array( $meta_compare, array( 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN' ) ) ) {
-                               if ( ! is_array( $meta_value ) ) {
-                                       $meta_value = preg_split( '/[,\s]+/', $meta_value );
-                               }
-                       } else {
-                               $meta_value = trim( $meta_value );
-                       }
-
-                       switch ( $meta_compare ) {
-                               case 'IN' :
-                               case 'NOT IN' :
-                                       $meta_compare_string = '(' . substr( str_repeat( ',%s', count( $meta_value ) ), 1 ) . ')';
-                                       $where = $wpdb->prepare( $meta_compare_string, $meta_value );
-                                       break;
-
-                               case 'BETWEEN' :
-                               case 'NOT BETWEEN' :
-                                       $meta_value = array_slice( $meta_value, 0, 2 );
-                                       $where = $wpdb->prepare( '%s AND %s', $meta_value );
-                                       break;
-
-                               case 'LIKE' :
-                               case 'NOT LIKE' :
-                                       $meta_value = '%' . $wpdb->esc_like( $meta_value ) . '%';
-                                       $where = $wpdb->prepare( '%s', $meta_value );
-                                       break;
-
-                               // EXISTS with a value is interpreted as '='.
-                               case 'EXISTS' :
-                                       $meta_compare = '=';
-                                       $where = $wpdb->prepare( '%s', $meta_value );
-                                       break;
-
-                               // 'value' is ignored for NOT EXISTS.
-                               case 'NOT EXISTS' :
-                                       $where = '';
-                                       break;
-
-                               default :
-                                       $where = $wpdb->prepare( '%s', $meta_value );
-                                       break;
-
-                       }
-
-                       if ( $where ) {
-                               $sql_chunks['where'][] = "CAST($alias.meta_value AS {$meta_type}) {$meta_compare} {$where}";
-                       }
-               }
-
-               /*
-                * Multiple WHERE clauses (for meta_key and meta_value) should
-                * be joined in parentheses.
-                */
-               if ( 1 < count( $sql_chunks['where'] ) ) {
-                       $sql_chunks['where'] = array( '( ' . implode( ' AND ', $sql_chunks['where'] ) . ' )' );
-               }
-
-               return $sql_chunks;
-       }
-
-       /**
-        * Get a flattened list of sanitized meta clauses.
-        *
-        * This array should be used for clause lookup, as when the table alias and CAST type must be determined for
-        * a value of 'orderby' corresponding to a meta clause.
-        *
-        * @since 4.2.0
-        * @access public
-        *
-        * @return array Meta clauses.
-        */
-       public function get_clauses() {
-               return $this->clauses;
-       }
-
-       /**
-        * Identify an existing table alias that is compatible with the current
-        * query clause.
-        *
-        * We avoid unnecessary table joins by allowing each clause to look for
-        * an existing table alias that is compatible with the query that it
-        * needs to perform.
-        *
-        * An existing alias is compatible if (a) it is a sibling of `$clause`
-        * (ie, it's under the scope of the same relation), and (b) the combination
-        * of operator and relation between the clauses allows for a shared table join.
-        * In the case of {@see WP_Meta_Query}, this only applies to 'IN' clauses that
-        * are connected by the relation 'OR'.
-        *
-        * @since 4.1.0
-        * @access protected
-        *
-        * @param  array       $clause       Query clause.
-        * @param  array       $parent_query Parent query of $clause.
-        * @return string|bool Table alias if found, otherwise false.
-        */
-       protected function find_compatible_table_alias( $clause, $parent_query ) {
-               $alias = false;
-
-               foreach ( $parent_query as $sibling ) {
-                       // If the sibling has no alias yet, there's nothing to check.
-                       if ( empty( $sibling['alias'] ) ) {
-                               continue;
-                       }
-
-                       // We're only interested in siblings that are first-order clauses.
-                       if ( ! is_array( $sibling ) || ! $this->is_first_order_clause( $sibling ) ) {
-                               continue;
-                       }
-
-                       $compatible_compares = array();
-
-                       // Clauses connected by OR can share joins as long as they have "positive" operators.
-                       if ( 'OR' === $parent_query['relation'] ) {
-                               $compatible_compares = array( '=', 'IN', 'BETWEEN', 'LIKE', 'REGEXP', 'RLIKE', '>', '>=', '<', '<=' );
-
-                       // Clauses joined by AND with "negative" operators share a join only if they also share a key.
-                       } elseif ( isset( $sibling['key'] ) && isset( $clause['key'] ) && $sibling['key'] === $clause['key'] ) {
-                               $compatible_compares = array( '!=', 'NOT IN', 'NOT LIKE' );
-                       }
-
-                       $clause_compare  = strtoupper( $clause['compare'] );
-                       $sibling_compare = strtoupper( $sibling['compare'] );
-                       if ( in_array( $clause_compare, $compatible_compares ) && in_array( $sibling_compare, $compatible_compares ) ) {
-                               $alias = $sibling['alias'];
-                               break;
-                       }
-               }
-
-               /**
-                * Filter the table alias identified as compatible with the current clause.
-                *
-                * @since 4.1.0
-                *
-                * @param string|bool $alias        Table alias, or false if none was found.
-                * @param array       $clause       First-order query clause.
-                * @param array       $parent_query Parent of $clause.
-                * @param object      $this         WP_Meta_Query object.
-                */
-               return apply_filters( 'meta_query_find_compatible_table_alias', $alias, $clause, $parent_query, $this ) ;
-       }
-
-       /**
-        * Checks whether the current query has any OR relations.
-        *
-        * In some cases, the presence of an OR relation somewhere in the query will require
-        * the use of a `DISTINCT` or `GROUP BY` keyword in the `SELECT` clause. The current
-        * method can be used in these cases to determine whether such a clause is necessary.
-        *
-        * @since 4.3.0
-        *
-        * @return bool True if the query contains any `OR` relations, otherwise false.
-        */
-       public function has_or_relation() {
-               return $this->has_or_relation;
-       }
-}
-
 /**
  * Retrieve the name of the metadata table for the specified object type.
  *
index 966fb73f1dbf33fe5d5c703b5d85884eb82fb514..84f63ed71dd0e5e5f648fcd88b82ba8538c7ff7b 100644 (file)
@@ -13,7 +13,7 @@
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function wpmu_update_blogs_date() {
        global $wpdb;
@@ -38,8 +38,16 @@ function wpmu_update_blogs_date() {
  * @return string Full URL of the blog if found. Empty string if not.
  */
 function get_blogaddress_by_id( $blog_id ) {
-       $bloginfo = get_blog_details( (int) $blog_id, false ); // only get bare details!
-       return ( $bloginfo ) ? esc_url( 'http://' . $bloginfo->domain . $bloginfo->path ) : '';
+       $bloginfo = get_blog_details( (int) $blog_id );
+
+       if ( empty( $bloginfo ) ) {
+               return '';
+       }
+
+       $scheme = parse_url( $bloginfo->home, PHP_URL_SCHEME );
+       $scheme = empty( $scheme ) ? 'http' : $scheme;
+
+       return esc_url( $scheme . '://' . $bloginfo->domain . $bloginfo->path );
 }
 
 /**
@@ -68,7 +76,7 @@ function get_blogaddress_by_name( $blogname ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $slug
  * @return int A blog id
@@ -101,7 +109,7 @@ function get_id_from_blogname( $slug ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int|string|array $fields  Optional. A blog ID, a blog slug, or an array of fields to query against.
  *                                  If not specified the current blog ID is used.
@@ -216,9 +224,10 @@ function get_blog_details( $fields = null, $get_all = true ) {
        }
 
        switch_to_blog( $blog_id );
-       $details->blogname              = get_option( 'blogname' );
-       $details->siteurl               = get_option( 'siteurl' );
-       $details->post_count    = get_option( 'post_count' );
+       $details->blogname   = get_option( 'blogname' );
+       $details->siteurl    = get_option( 'siteurl' );
+       $details->post_count = get_option( 'post_count' );
+       $details->home       = get_option( 'home' );
        restore_current_blog();
 
        /**
@@ -280,7 +289,7 @@ function refresh_blog_details( $blog_id = 0 ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int   $blog_id Blog ID
  * @param array $details Array of details keyed by blogs table field names.
@@ -781,7 +790,7 @@ function update_archived( $id, $archived ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int    $blog_id BLog ID
  * @param string $pref    A field name
@@ -857,7 +866,7 @@ function update_blog_status( $blog_id, $pref, $value, $deprecated = null ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int    $id   The blog id
  * @param string $pref A field name
@@ -878,7 +887,7 @@ function get_blog_status( $id, $pref ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param mixed $deprecated Not used
  * @param int   $start      The offset
index 05b1eeb2d01a341c86b4d06e0403f2c97a2c2942..55137e245dc3f5c3cede5e65e5b7e942a7c208eb 100644 (file)
@@ -15,7 +15,7 @@
  *
  * @since 3.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function ms_upload_constants() {
        global $wpdb;
index 5fa60baa3087f8701b251cd3393e710cea99b0f8..08d752a34d1bdebb5f47da617f6c95147b6e8c69 100644 (file)
@@ -25,12 +25,19 @@ add_filter( 'wpmu_validate_user_signup', 'signup_nonce_check' );
 add_action( 'init', 'maybe_add_existing_user_to_blog' );
 add_action( 'wpmu_new_user', 'newuser_notify_siteadmin' );
 add_action( 'wpmu_activate_user', 'add_new_user_to_blog', 10, 3 );
+add_action( 'wpmu_activate_user', 'wpmu_welcome_user_notification', 10, 3 );
+add_action( 'after_signup_user', 'wpmu_signup_user_notification', 10, 4 );
+add_action( 'network_site_new_created_user',   'wp_send_new_user_notifications' );
+add_action( 'network_site_users_created_user', 'wp_send_new_user_notifications' );
+add_action( 'network_user_new_created_user',   'wp_send_new_user_notifications' );
 add_filter( 'sanitize_user', 'strtolower' );
 
 // Blogs
 add_filter( 'wpmu_validate_blog_signup', 'signup_nonce_check' );
 add_action( 'wpmu_new_blog', 'wpmu_log_new_registrations', 10, 2 );
 add_action( 'wpmu_new_blog', 'newblog_notify_siteadmin', 10, 2 );
+add_action( 'wpmu_activate_blog', 'wpmu_welcome_notification', 10, 5 );
+add_action( 'after_signup_site', 'wpmu_signup_blog_notification', 10, 7 );
 
 // Register Nonce
 add_action( 'signup_hidden_fields', 'signup_nonce_fields' );
index 5b6702090bf2d91ec893007b298139415ccd1add..e9ab99a777ce1c3c0ff7a1f75886038381a90f82 100644 (file)
  * Dashboard blog functionality was removed in WordPress 3.1, replaced by the user admin.
  *
  * @since MU
- * @deprecated 3.1.0
+ * @deprecated 3.1.0 Use get_blog_details()
  * @see get_blog_details()
- * @return int
+ *
+ * @return int Current site ID.
  */
 function get_dashboard_blog() {
     _deprecated_function( __FUNCTION__, '3.1' );
@@ -31,9 +32,10 @@ function get_dashboard_blog() {
 }
 
 /**
+ * Generates a random password.
+ *
  * @since MU
- * @deprecated 3.0.0
- * @deprecated Use wp_generate_password()
+ * @deprecated 3.0.0 Use wp_generate_password()
  * @see wp_generate_password()
  */
 function generate_random_password( $len = 8 ) {
@@ -51,11 +53,8 @@ function generate_random_password( $len = 8 ) {
  * legacy function_exists() checks to determine if multisite is enabled.
  *
  * @since MU
- * @deprecated 3.0.0
- * @deprecated Use is_super_admin()
+ * @deprecated 3.0.0 Use is_super_admin()
  * @see is_super_admin()
- * @see is_multisite()
- *
  */
 function is_site_admin( $user_login = '' ) {
        _deprecated_function( __FUNCTION__, '3.0', 'is_super_admin()' );
@@ -76,9 +75,10 @@ function is_site_admin( $user_login = '' ) {
 
 if ( !function_exists( 'graceful_fail' ) ) :
 /**
+ * Deprecated functionality to gracefully fail.
+ *
  * @since MU
- * @deprecated 3.0.0
- * @deprecated Use wp_die()
+ * @deprecated 3.0.0 Use wp_die()
  * @see wp_die()
  */
 function graceful_fail( $message ) {
@@ -113,9 +113,10 @@ text-align: center;
 endif;
 
 /**
+ * Deprecated functionality to retrieve user information.
+ *
  * @since MU
- * @deprecated 3.0.0
- * @deprecated Use get_user_by()
+ * @deprecated 3.0.0 Use get_user_by()
  * @see get_user_by()
  */
 function get_user_details( $username ) {
@@ -124,9 +125,10 @@ function get_user_details( $username ) {
 }
 
 /**
+ * Deprecated functionality to clear the global post cache.
+ *
  * @since MU
- * @deprecated 3.0.0
- * @deprecated Use clean_post_cache()
+ * @deprecated 3.0.0 Use clean_post_cache()
  * @see clean_post_cache()
  */
 function clear_global_post_cache( $post_id ) {
@@ -134,9 +136,10 @@ function clear_global_post_cache( $post_id ) {
 }
 
 /**
+ * Deprecated functionality to determin if the current site is the main site.
+ *
  * @since MU
- * @deprecated 3.0.0
- * @deprecated Use is_main_site()
+ * @deprecated 3.0.0 Use is_main_site()
  * @see is_main_site()
  */
 function is_main_blog() {
@@ -145,9 +148,10 @@ function is_main_blog() {
 }
 
 /**
+ * Deprecated functionality to validate an email address.
+ *
  * @since MU
- * @deprecated 3.0.0
- * @deprecated Use is_email()
+ * @deprecated 3.0.0 Use is_email()
  * @see is_email()
  */
 function validate_email( $email, $check_domain = true) {
@@ -156,9 +160,11 @@ function validate_email( $email, $check_domain = true) {
 }
 
 /**
+ * Deprecated functionality to retrieve a list of all sites.
+ *
  * @since MU
- * @deprecated 3.0.0
- * @deprecated No alternative available. For performance reasons this function is not recommended.
+ * @deprecated 3.0.0 Use wp_get_sites()
+ * @see wp_get_sites()
  */
 function get_blog_list( $start = 0, $num = 10, $deprecated = '' ) {
        _deprecated_function( __FUNCTION__, '3.0', 'wp_get_sites()' );
@@ -184,9 +190,12 @@ function get_blog_list( $start = 0, $num = 10, $deprecated = '' ) {
 }
 
 /**
+ * Deprecated functionality to retrieve a list of the most active sites.
+ *
  * @since MU
  * @deprecated 3.0.0
- * @deprecated No alternative available. For performance reasons this function is not recommended.
+ *
+ * @return array List of "most active" sites.
  */
 function get_most_active_blogs( $num = 10, $display = true ) {
        _deprecated_function( __FUNCTION__, '3.0' );
@@ -234,8 +243,8 @@ function get_most_active_blogs( $num = 10, $display = true ) {
  * 6) $url
  *
  * @since MU
- * @deprecated 3.3.0
- * @deprecated Use wp_redirect()
+ * @deprecated 3.3.0 Use wp_redirect()
+ * @see wp_redirect()
  *
  * @param string $url
  */
@@ -273,8 +282,8 @@ function wpmu_admin_do_redirect( $url = '' ) {
  * Adds an 'updated=true' argument to a URL.
  *
  * @since MU
- * @deprecated 3.3.0
- * @deprecated Use add_query_arg()
+ * @deprecated 3.3.0 Use add_query_arg()
+ * @see add_query_arg()
  *
  * @param string $url
  * @return string
@@ -298,8 +307,8 @@ function wpmu_admin_redirect_add_updated_param( $url = '' ) {
  * and is simply returned as such.
  *
  * @since MU
- * @deprecated 3.6.0
- * @deprecated Use get_user_by()
+ * @deprecated 3.6.0 Use get_user_by()
+ * @see get_user_by()
  *
  * @param string $string Either an email address or a login.
  * @return int
@@ -346,4 +355,68 @@ function get_blogaddress_by_domain( $domain, $path ) {
                }
        }
        return esc_url_raw( $url );
-}
\ No newline at end of file
+}
+
+/**
+ * Create an empty blog.
+ *
+ * @since MU 1.0
+ * @deprecated 4.4.0
+ *
+ * @param string $domain       The new blog's domain.
+ * @param string $path         The new blog's path.
+ * @param string $weblog_title The new blog's title.
+ * @param int    $site_id      Optional. Defaults to 1.
+ * @return string|int The ID of the newly created blog
+ */
+function create_empty_blog( $domain, $path, $weblog_title, $site_id = 1 ) {
+       _deprecated_function( __FUNCTION__, '4.4' );
+
+       if ( empty($path) )
+               $path = '/';
+
+       // Check if the domain has been used already. We should return an error message.
+       if ( domain_exists($domain, $path, $site_id) )
+               return __( '<strong>ERROR</strong>: Site URL already taken.' );
+
+       // Need to back up wpdb table names, and create a new wp_blogs entry for new blog.
+       // Need to get blog_id from wp_blogs, and create new table names.
+       // Must restore table names at the end of function.
+
+       if ( ! $blog_id = insert_blog($domain, $path, $site_id) )
+               return __( '<strong>ERROR</strong>: problem creating site entry.' );
+
+       switch_to_blog($blog_id);
+       install_blog($blog_id);
+       restore_current_blog();
+
+       return $blog_id;
+}
+
+/**
+ * Get the admin for a domain/path combination.
+ *
+ * @since MU 1.0
+ * @deprecated 4.4.0
+ *
+ * @global wpdb $wpdb WordPress database abstraction object.
+ *
+ * @param string $sitedomain Optional. Site domain.
+ * @param string $path       Optional. Site path.
+ * @return array|false The network admins
+ */
+function get_admin_users_for_domain( $sitedomain = '', $path = '' ) {
+       _deprecated_function( __FUNCTION__, '4.4' );
+
+       global $wpdb;
+
+       if ( ! $sitedomain )
+               $site_id = $wpdb->siteid;
+       else
+               $site_id = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM $wpdb->site WHERE domain = %s AND path = %s", $sitedomain, $path ) );
+
+       if ( $site_id )
+               return $wpdb->get_results( $wpdb->prepare( "SELECT u.ID, u.user_login, u.user_pass FROM $wpdb->users AS u, $wpdb->sitemeta AS sm WHERE sm.meta_key = 'admin_user_id' AND u.ID = sm.meta_value AND sm.site_id = %d", $site_id ), ARRAY_A );
+
+       return false;
+}
index edbb98425543221bc58f91ceed6b419c3eba5dcd..f41d2b67c7dde0539c45025c9a25c4160910f2d5 100644 (file)
@@ -23,31 +23,6 @@ function get_sitestats() {
        return $stats;
 }
 
-/**
- * Get the admin for a domain/path combination.
- *
- * @since MU 1.0
- *
- * @global wpdb $wpdb
- *
- * @param string $sitedomain Optional. Site domain.
- * @param string $path       Optional. Site path.
- * @return array|false The network admins
- */
-function get_admin_users_for_domain( $sitedomain = '', $path = '' ) {
-       global $wpdb;
-
-       if ( ! $sitedomain )
-               $site_id = $wpdb->siteid;
-       else
-               $site_id = $wpdb->get_var( $wpdb->prepare( "SELECT id FROM $wpdb->site WHERE domain = %s AND path = %s", $sitedomain, $path ) );
-
-       if ( $site_id )
-               return $wpdb->get_results( $wpdb->prepare( "SELECT u.ID, u.user_login, u.user_pass FROM $wpdb->users AS u, $wpdb->sitemeta AS sm WHERE sm.meta_key = 'admin_user_id' AND u.ID = sm.meta_value AND sm.site_id = %d", $site_id ), ARRAY_A );
-
-       return false;
-}
-
 /**
  * Get one of a user's active blogs
  *
@@ -59,7 +34,7 @@ function get_admin_users_for_domain( $sitedomain = '', $path = '' ) {
  *
  * @since MU 1.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $user_id The unique ID of the user
  * @return object|void The blog object
@@ -220,7 +195,7 @@ function add_user_to_blog( $blog_id, $user_id, $role ) {
  *
  * @since MU 1.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int    $user_id  ID of the user you're removing.
  * @param int    $blog_id  ID of the blog you're removing the user from.
@@ -296,39 +271,6 @@ function remove_user_from_blog($user_id, $blog_id = '', $reassign = '') {
        return true;
 }
 
-/**
- * Create an empty blog.
- *
- * @since MU 1.0
- *
- * @param string $domain       The new blog's domain.
- * @param string $path         The new blog's path.
- * @param string $weblog_title The new blog's title.
- * @param int    $site_id      Optional. Defaults to 1.
- * @return string|int The ID of the newly created blog
- */
-function create_empty_blog( $domain, $path, $weblog_title, $site_id = 1 ) {
-       if ( empty($path) )
-               $path = '/';
-
-       // Check if the domain has been used already. We should return an error message.
-       if ( domain_exists($domain, $path, $site_id) )
-               return __( '<strong>ERROR</strong>: Site URL already taken.' );
-
-       // Need to back up wpdb table names, and create a new wp_blogs entry for new blog.
-       // Need to get blog_id from wp_blogs, and create new table names.
-       // Must restore table names at the end of function.
-
-       if ( ! $blog_id = insert_blog($domain, $path, $site_id) )
-               return __( '<strong>ERROR</strong>: problem creating site entry.' );
-
-       switch_to_blog($blog_id);
-       install_blog($blog_id);
-       restore_current_blog();
-
-       return $blog_id;
-}
-
 /**
  * Get the permalink for a post on another blog.
  *
@@ -356,7 +298,7 @@ function get_blog_permalink( $blog_id, $post_id ) {
  *
  * @since MU 2.6.5
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $domain
  * @param string $path   Optional. Not required for subdomain installations.
@@ -456,7 +398,7 @@ function is_email_address_unsafe( $user_email ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $user_name  The login name provided by the user.
  * @param string $user_email The email provided by the user.
@@ -471,7 +413,7 @@ function wpmu_validate_user_signup($user_name, $user_email) {
        $user_name = preg_replace( '/\s+/', '', sanitize_user( $user_name, true ) );
 
        if ( $user_name != $orig_username || preg_match( '/[^a-z0-9]/', $user_name ) ) {
-               $errors->add( 'user_name', __( 'Only lowercase letters (a-z) and numbers are allowed.' ) );
+               $errors->add( 'user_name', __( 'Usernames can only contain lowercase letters (a-z) and numbers.' ) );
                $user_name = $orig_username;
        }
 
@@ -485,8 +427,16 @@ function wpmu_validate_user_signup($user_name, $user_email) {
                $illegal_names = array(  'www', 'web', 'root', 'admin', 'main', 'invite', 'administrator' );
                add_site_option( 'illegal_names', $illegal_names );
        }
-       if ( in_array( $user_name, $illegal_names ) )
-               $errors->add('user_name',  __( 'That username is not allowed.' ) );
+       if ( in_array( $user_name, $illegal_names ) ) {
+               $errors->add( 'user_name',  __( 'Sorry, that username is not allowed.' ) );
+       }
+
+       /** This filter is documented in wp-includes/user.php */
+       $illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
+
+       if ( in_array( strtolower( $user_name ), array_map( 'strtolower', $illegal_logins ) ) ) {
+               $errors->add( 'user_name',  __( 'Sorry, that username is not allowed.' ) );
+       }
 
        if ( is_email_address_unsafe( $user_email ) )
                $errors->add('user_email',  __('You cannot use that email address to signup. We are having problems with them blocking some of our email. Please use another email provider.'));
@@ -498,9 +448,6 @@ function wpmu_validate_user_signup($user_name, $user_email) {
                $errors->add( 'user_name', __( 'Username may not be longer than 60 characters.' ) );
        }
 
-       if ( strpos( $user_name, '_' ) !== false )
-               $errors->add( 'user_name', __( 'Sorry, usernames may not contain the character &#8220;_&#8221;!' ) );
-
        // all numeric?
        if ( preg_match( '/^[0-9]*$/', $user_name ) )
                $errors->add('user_name', __('Sorry, usernames must have letters too!'));
@@ -588,8 +535,9 @@ function wpmu_validate_user_signup($user_name, $user_email) {
  * @global wpdb   $wpdb
  * @global string $domain
  *
- * @param string $blogname   The blog name provided by the user. Must be unique.
- * @param string $blog_title The blog title provided by the user.
+ * @param string         $blogname   The blog name provided by the user. Must be unique.
+ * @param string         $blog_title The blog title provided by the user.
+ * @param WP_User|string $user       Optional. The user object to check against the new site name.
  * @return array Contains the new site data and error messages.
  */
 function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) {
@@ -599,7 +547,6 @@ function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) {
        $base = $current_site->path;
 
        $blog_title = strip_tags( $blog_title );
-       $blog_title = substr( $blog_title, 0, 50 );
 
        $errors = new WP_Error();
        $illegal_names = get_site_option( 'illegal_names' );
@@ -613,24 +560,15 @@ function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) {
         * spring them from jail.
         */
        if ( ! is_subdomain_install() ) {
-               $illegal_names = array_merge(
-                       $illegal_names,
-                       /**
-                        * Filter reserved site names on a sub-directory Multisite install.
-                        *
-                        * @since 3.0.0
-                        *
-                        * @param array $subdirectory_reserved_names Array of reserved names.
-                        */
-                       apply_filters( 'subdirectory_reserved_names', array( 'page', 'comments', 'blog', 'files', 'feed' ) )
-               );
+               $illegal_names = array_merge( $illegal_names, get_subdirectory_reserved_names() );
        }
 
        if ( empty( $blogname ) )
                $errors->add('blogname', __( 'Please enter a site name.' ) );
 
-       if ( preg_match( '/[^a-z0-9]+/', $blogname ) )
-               $errors->add('blogname', __( 'Only lowercase letters (a-z) and numbers are allowed.' ) );
+       if ( preg_match( '/[^a-z0-9]+/', $blogname ) ) {
+               $errors->add( 'blogname', __( 'Site names can only contain lowercase letters (a-z) and numbers.' ) );
+       }
 
        if ( in_array( $blogname, $illegal_names ) )
                $errors->add('blogname',  __( 'That name is not allowed.' ) );
@@ -638,9 +576,6 @@ function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) {
        if ( strlen( $blogname ) < 4 && !is_super_admin() )
                $errors->add('blogname',  __( 'Site name must be at least 4 characters.' ) );
 
-       if ( strpos( $blogname, '_' ) !== false )
-               $errors->add( 'blogname', __( 'Sorry, site names may not contain the character &#8220;_&#8221;!' ) );
-
        // do not allow users to create a blog that conflicts with a page on the main blog.
        if ( !is_subdomain_install() && $wpdb->get_var( $wpdb->prepare( "SELECT post_name FROM " . $wpdb->get_blog_prefix( $current_site->blog_id ) . "posts WHERE post_type = 'page' AND post_name = %s", $blogname ) ) )
                $errors->add( 'blogname', __( 'Sorry, you may not use that site name.' ) );
@@ -703,12 +638,12 @@ function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) {
         * @param array $result {
         *     Array of domain, path, blog name, blog title, user and error messages.
         *
-        *     @type string   $domain     Domain for the site.
-        *     @type string   $path       Path for the site. Used in subdirectory installs.
-        *     @type string   $blogname   The unique site name (slug).
-        *     @type string   $blog_title Blog title.
-        *     @type string   $user       User email address.
-        *     @type WP_Error $errors     WP_Error containing any errors found.
+        *     @type string         $domain     Domain for the site.
+        *     @type string         $path       Path for the site. Used in subdirectory installs.
+        *     @type string         $blogname   The unique site name (slug).
+        *     @type string         $blog_title Blog title.
+        *     @type string|WP_User $user       By default, an empty string. A user object if provided.
+        *     @type WP_Error       $errors     WP_Error containing any errors found.
         * }
         */
        return apply_filters( 'wpmu_validate_blog_signup', $result );
@@ -719,7 +654,7 @@ function wpmu_validate_blog_signup( $blogname, $blog_title, $user = '' ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $domain     The requested domain.
  * @param string $path       The requested path.
@@ -745,7 +680,20 @@ function wpmu_signup_blog( $domain, $path, $title, $user, $user_email, $meta = a
                'meta' => $meta
        ) );
 
-       wpmu_signup_blog_notification($domain, $path, $title, $user, $user_email, $key, $meta);
+       /**
+        * Fires after site signup information has been written to the database.
+        *
+        * @since 4.4.0
+        *
+        * @param string $domain     The requested domain.
+        * @param string $path       The requested path.
+        * @param string $title      The requested site title.
+        * @param string $user       The user's requested login name.
+        * @param string $user_email The user's email address.
+        * @param string $key        The user's activation key
+        * @param array  $meta       By default, contains the requested privacy setting and lang_id.
+        */
+       do_action( 'after_signup_site', $domain, $path, $title, $user, $user_email, $key, $meta );
 }
 
 /**
@@ -756,7 +704,7 @@ function wpmu_signup_blog( $domain, $path, $title, $user, $user_email, $meta = a
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $user       The user's requested login name.
  * @param string $user_email The user's email address.
@@ -782,7 +730,17 @@ function wpmu_signup_user( $user, $user_email, $meta = array() ) {
                'meta' => $meta
        ) );
 
-       wpmu_signup_user_notification($user, $user_email, $key, $meta);
+       /**
+        * Fires after a user's signup information has been written to the database.
+        *
+        * @since 4.4.0
+        *
+        * @param string $user       The user's requested login name.
+        * @param string $user_email The user's email address.
+        * @param string $key        The user's activation key
+        * @param array  $meta       Additional signup meta. By default, this is an empty array.
+        */
+       do_action( 'after_signup_user', $user, $user_email, $key, $meta );
 }
 
 /**
@@ -986,7 +944,7 @@ function wpmu_signup_user_notification( $user, $user_email, $key, $meta = array(
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $key The activation key provided to the user.
  * @return array|WP_Error An array containing information about the activated user and/or blog
@@ -1027,7 +985,6 @@ function wpmu_activate_signup($key) {
                if ( isset( $user_already_exists ) )
                        return new WP_Error( 'user_already_exists', __( 'That username is already activated.' ), $signup);
 
-               wpmu_welcome_user_notification( $user_id, $password, $meta );
                /**
                 * Fires immediately after a new user is activated.
                 *
@@ -1055,7 +1012,6 @@ function wpmu_activate_signup($key) {
        }
 
        $wpdb->update( $wpdb->signups, array('active' => 1, 'activated' => $now), array('activation_key' => $key) );
-       wpmu_welcome_notification($blog_id, $user_id, $password, $signup->title, $meta);
        /**
         * Fires immediately after a site is activated.
         *
@@ -1151,8 +1107,9 @@ function wpmu_create_blog( $domain, $path, $title, $user_id, $meta = array(), $s
        if ( domain_exists($domain, $path, $site_id) )
                return new WP_Error( 'blog_taken', __( 'Sorry, that site already exists!' ) );
 
-       if ( !defined('WP_INSTALLING') )
-               define( 'WP_INSTALLING', true );
+       if ( ! wp_installing() ) {
+               wp_installing( true );
+       }
 
        if ( ! $blog_id = insert_blog($domain, $path, $site_id) )
                return new WP_Error('insert_blog', __('Could not create site.'));
@@ -1289,7 +1246,7 @@ Disable these notifications: %3$s'), $user->user_login, wp_unslash( $_SERVER['RE
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $domain  The domain to be checked.
  * @param string $path    The path to be checked.
@@ -1322,7 +1279,7 @@ function domain_exists($domain, $path, $site_id = 1) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $domain  The domain of the new site.
  * @param string $path    The path of the new site.
@@ -1363,7 +1320,7 @@ function insert_blog($domain, $path, $site_id) {
  * @param string $blog_title The title of the new site.
  */
 function install_blog( $blog_id, $blog_title = '' ) {
-       global $wpdb, $wp_roles;
+       global $wpdb, $wp_roles, $current_site;
 
        // Cast for security
        $blog_id = (int) $blog_id;
@@ -1385,10 +1342,21 @@ function install_blog( $blog_id, $blog_title = '' ) {
        // populate_roles() clears previous role definitions so we start over.
        $wp_roles = new WP_Roles();
 
-       $url = untrailingslashit( $url );
+       $siteurl = $home = untrailingslashit( $url );
+
+       if ( ! is_subdomain_install() ) {
+
+               if ( 'https' === parse_url( get_site_option( 'siteurl' ), PHP_URL_SCHEME ) ) {
+                       $siteurl = set_url_scheme( $siteurl, 'https' );
+               }
+               if ( 'https' === parse_url( get_home_url( $current_site->blog_id ), PHP_URL_SCHEME ) ) {
+                       $home = set_url_scheme( $home, 'https' );
+               }
+
+       }
 
-       update_option( 'siteurl', $url );
-       update_option( 'home', $url );
+       update_option( 'siteurl', $siteurl );
+       update_option( 'home', $home );
 
        if ( get_site_option( 'ms_files_rewriting' ) )
                update_option( 'upload_path', UPLOADBLOGSDIR . "/$blog_id/files" );
@@ -1413,7 +1381,7 @@ function install_blog( $blog_id, $blog_title = '' ) {
  * @deprecated MU
  * @deprecated Use wp_install_defaults()
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $blog_id Ignored in this function.
  * @param int $user_id
@@ -1638,7 +1606,7 @@ function get_current_site() {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $user_id
  * @return array Contains the blog_id, post_id, post_date_gmt, and post_gmt_ts
@@ -1785,7 +1753,7 @@ function check_upload_mimes( $mimes ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function update_posts_count( $deprecated = '' ) {
        global $wpdb;
@@ -1797,7 +1765,7 @@ function update_posts_count( $deprecated = '' ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $blog_id
  * @param int $user_id
@@ -1816,7 +1784,7 @@ function wpmu_log_new_registrations( $blog_id, $user_id ) {
  *
  * @see term_id_filter
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  * @staticvar int $global_terms_recurse
  *
  * @param int $term_id An ID for a term on the current blog.
@@ -1899,6 +1867,8 @@ function redirect_this_site( $deprecated = '' ) {
  *
  * @since MU
  *
+ * @blessed
+ *
  * @param array $upload
  * @return string|array If the upload is under the size limit, $upload is returned. Otherwise returns an error message.
  */
@@ -1906,8 +1876,9 @@ function upload_is_file_too_big( $upload ) {
        if ( ! is_array( $upload ) || defined( 'WP_IMPORTING' ) || get_site_option( 'upload_space_check_disabled' ) )
                return $upload;
 
-       if ( strlen( $upload['bits'] )  > ( 1024 * get_site_option( 'fileupload_maxk', 1500 ) ) )
-               return sprintf( __( 'This file is too big. Files must be less than %d KB in size.' ) . '<br />', get_site_option( 'fileupload_maxk', 1500 ));
+       if ( strlen( $upload['bits'] )  > ( KB_IN_BYTES * get_site_option( 'fileupload_maxk', 1500 ) ) ) {
+               return sprintf( __( 'This file is too big. Files must be less than %d KB in size.' ) . '<br />', get_site_option( 'fileupload_maxk', 1500 ) );
+       }
 
        return $upload;
 }
@@ -2093,7 +2064,7 @@ function update_blog_public( $old_value, $value ) {
  *
  * @since MU
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $key
  * @param int    $user_id Optional. Defaults to current user.
@@ -2205,7 +2176,7 @@ function wp_schedule_update_network_counts() {
        if ( !is_main_site() )
                return;
 
-       if ( !wp_next_scheduled('update_network_counts') && !defined('WP_INSTALLING') )
+       if ( ! wp_next_scheduled('update_network_counts') && ! wp_installing() )
                wp_schedule_event(time(), 'twicedaily', 'update_network_counts');
 }
 
@@ -2269,7 +2240,7 @@ function wp_maybe_update_network_user_counts() {
  *
  * @since 3.7.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function wp_update_network_site_counts() {
        global $wpdb;
@@ -2283,7 +2254,7 @@ function wp_update_network_site_counts() {
  *
  * @since 3.7.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  */
 function wp_update_network_user_counts() {
        global $wpdb;
@@ -2310,7 +2281,7 @@ function get_space_used() {
        $space_used = apply_filters( 'pre_get_space_used', false );
        if ( false === $space_used ) {
                $upload_dir = wp_upload_dir();
-               $space_used = get_dirsize( $upload_dir['basedir'] ) / 1024 / 1024;
+               $space_used = get_dirsize( $upload_dir['basedir'] ) / MB_IN_BYTES;
        }
 
        return $space_used;
@@ -2329,7 +2300,7 @@ function get_space_allowed() {
        if ( ! is_numeric( $space_allowed ) )
                $space_allowed = get_site_option( 'blog_upload_space' );
 
-       if ( empty( $space_allowed ) || ! is_numeric( $space_allowed ) )
+       if ( ! is_numeric( $space_allowed ) )
                $space_allowed = 100;
 
        /**
@@ -2350,11 +2321,15 @@ function get_space_allowed() {
  * @return int of upload space available in bytes
  */
 function get_upload_space_available() {
-       $space_allowed = get_space_allowed() * 1024 * 1024;
+       $allowed = get_space_allowed();
+       if ( $allowed < 0 ) {
+               $allowed = 0;
+       }
+       $space_allowed = $allowed * MB_IN_BYTES;
        if ( get_site_option( 'upload_space_check_disabled' ) )
                return $space_allowed;
 
-       $space_used = get_space_used() * 1024 * 1024;
+       $space_used = get_space_used() * MB_IN_BYTES;
 
        if ( ( $space_allowed - $space_used ) <= 0 )
                return 0;
@@ -2381,7 +2356,7 @@ function is_upload_space_available() {
  * @return int of upload size limit in bytes
  */
 function upload_size_limit_filter( $size ) {
-       $fileupload_maxk = 1024 * get_site_option( 'fileupload_maxk', 1500 );
+       $fileupload_maxk = KB_IN_BYTES * get_site_option( 'fileupload_maxk', 1500 );
        if ( get_site_option( 'upload_space_check_disabled' ) )
                return min( $size, $fileupload_maxk );
 
@@ -2424,7 +2399,7 @@ function wp_is_large_network( $using = 'sites' ) {
  *
  * @since 3.7.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param array $args {
  *     Array of default arguments. Optional.
@@ -2496,3 +2471,28 @@ function wp_get_sites( $args = array() ) {
 
        return $site_results;
 }
+
+/**
+ * Retrieves a list of reserved site on a sub-directory Multisite install.
+ *
+ * @since 4.4.0
+ *
+ * @return array $names Array of reserved subdirectory names.
+ */
+function get_subdirectory_reserved_names() {
+       $names = array(
+               'page', 'comments', 'blog', 'files', 'feed', 'wp-admin',
+               'wp-content', 'wp-includes', 'wp-json', 'embed'
+       );
+
+       /**
+        * Filter reserved site names on a sub-directory Multisite install.
+        *
+        * @since 3.0.0
+        * @since 4.4.0 'wp-admin', 'wp-content', 'wp-includes', 'wp-json', and 'embed' were added
+        *              to the reserved names list.
+        *
+        * @param array $subdirectory_reserved_names Array of reserved names.
+        */
+       return apply_filters( 'subdirectory_reserved_names', $names );
+}
index e067193f46c5389f0aa16f1d9d827fd8cdfcd3b0..a1923155231969fc001775d005741062b223d421 100644 (file)
@@ -93,10 +93,17 @@ function ms_site_check() {
        }
 
        if ( '2' == $blog->deleted ) {
-               if ( file_exists( WP_CONTENT_DIR . '/blog-inactive.php' ) )
+               if ( file_exists( WP_CONTENT_DIR . '/blog-inactive.php' ) ) {
                        return WP_CONTENT_DIR . '/blog-inactive.php';
-               else
-                       wp_die( sprintf( __( 'This site has not been activated yet. If you are having problems activating your site, please contact <a href="mailto:%1$s">%1$s</a>.' ), str_replace( '@', ' AT ', get_site_option( 'admin_email', 'support@' . get_current_site()->domain ) ) ) );
+               } else {
+                       $admin_email = str_replace( '@', ' AT ', get_site_option( 'admin_email', 'support@' . get_current_site()->domain ) );
+                       wp_die(
+                               /* translators: %s: admin email link */
+                               sprintf( __( 'This site has not been activated yet. If you are having problems activating your site, please contact %s.' ),
+                                       sprintf( '<a href="mailto:%s">%s</a>', $admin_email )
+                               )
+                       );
+               }
        }
 
        if ( $blog->archived == '1' || $blog->spam == '1' ) {
@@ -110,168 +117,34 @@ function ms_site_check() {
 }
 
 /**
- * Retrieve a network object by its domain and path.
+ * Retrieve the closest matching network for a domain and path.
  *
  * @since 3.9.0
- *
- * @global wpdb $wpdb
+ * @since 4.4.0 Converted to a wrapper for WP_Network::get_by_path()
  *
  * @param string   $domain   Domain to check.
  * @param string   $path     Path to check.
  * @param int|null $segments Path segments to use. Defaults to null, or the full path.
- * @return object|false Network object if successful. False when no network is found.
+ * @return WP_Network|false Network object if successful. False when no network is found.
  */
 function get_network_by_path( $domain, $path, $segments = null ) {
-       global $wpdb;
-
-       $domains = array( $domain );
-       $pieces = explode( '.', $domain );
-
-       /*
-        * It's possible one domain to search is 'com', but it might as well
-        * be 'localhost' or some other locally mapped domain.
-        */
-       while ( array_shift( $pieces ) ) {
-               if ( $pieces ) {
-                       $domains[] = implode( '.', $pieces );
-               }
-       }
-
-       /*
-        * If we've gotten to this function during normal execution, there is
-        * more than one network installed. At this point, who knows how many
-        * we have. Attempt to optimize for the situation where networks are
-        * only domains, thus meaning paths never need to be considered.
-        *
-        * This is a very basic optimization; anything further could have drawbacks
-        * depending on the setup, so this is best done per-install.
-        */
-       $using_paths = true;
-       if ( wp_using_ext_object_cache() ) {
-               $using_paths = wp_cache_get( 'networks_have_paths', 'site-options' );
-               if ( false === $using_paths ) {
-                       $using_paths = (bool) $wpdb->get_var( "SELECT id FROM $wpdb->site WHERE path <> '/' LIMIT 1" );
-                       wp_cache_add( 'networks_have_paths', (int) $using_paths, 'site-options'  );
-               }
-       }
-
-       $paths = array();
-       if ( $using_paths ) {
-               $path_segments = array_filter( explode( '/', trim( $path, "/" ) ) );
-
-               /**
-                * Filter the number of path segments to consider when searching for a site.
-                *
-                * @since 3.9.0
-                *
-                * @param int|null $segments The number of path segments to consider. WordPress by default looks at
-                *                           one path segment. The function default of null only makes sense when you
-                *                           know the requested path should match a network.
-                * @param string   $domain   The requested domain.
-                * @param string   $path     The requested path, in full.
-                */
-               $segments = apply_filters( 'network_by_path_segments_count', $segments, $domain, $path );
-
-               if ( null !== $segments && count($path_segments ) > $segments ) {
-                       $path_segments = array_slice( $path_segments, 0, $segments );
-               }
-
-               while ( count( $path_segments ) ) {
-                       $paths[] = '/' . implode( '/', $path_segments ) . '/';
-                       array_pop( $path_segments );
-               }
-
-               $paths[] = '/';
-       }
-
-       /**
-        * Determine a network by its domain and path.
-        *
-        * This allows one to short-circuit the default logic, perhaps by
-        * replacing it with a routine that is more optimal for your setup.
-        *
-        * Return null to avoid the short-circuit. Return false if no network
-        * can be found at the requested domain and path. Otherwise, return
-        * an object from wp_get_network().
-        *
-        * @since 3.9.0
-        *
-        * @param null|bool|object $network  Network value to return by path.
-        * @param string           $domain   The requested domain.
-        * @param string           $path     The requested path, in full.
-        * @param int|null         $segments The suggested number of paths to consult.
-        *                                   Default null, meaning the entire path was to be consulted.
-        * @param array            $paths    The paths to search for, based on $path and $segments.
-        */
-       $pre = apply_filters( 'pre_get_network_by_path', null, $domain, $path, $segments, $paths );
-       if ( null !== $pre ) {
-               return $pre;
-       }
-
-       // @todo Consider additional optimization routes, perhaps as an opt-in for plugins.
-       // We already have paths covered. What about how far domains should be drilled down (including www)?
-
-       $search_domains = "'" . implode( "', '", $wpdb->_escape( $domains ) ) . "'";
-
-       if ( ! $using_paths ) {
-               $network = $wpdb->get_row( "SELECT id, domain, path FROM $wpdb->site
-                       WHERE domain IN ($search_domains) ORDER BY CHAR_LENGTH(domain) DESC LIMIT 1" );
-               if ( $network ) {
-                       return wp_get_network( $network );
-               }
-               return false;
-
-       } else {
-               $search_paths = "'" . implode( "', '", $wpdb->_escape( $paths ) ) . "'";
-               $networks = $wpdb->get_results( "SELECT id, domain, path FROM $wpdb->site
-                       WHERE domain IN ($search_domains) AND path IN ($search_paths)
-                       ORDER BY CHAR_LENGTH(domain) DESC, CHAR_LENGTH(path) DESC" );
-       }
-
-       /*
-        * Domains are sorted by length of domain, then by length of path.
-        * The domain must match for the path to be considered. Otherwise,
-        * a network with the path of / will suffice.
-        */
-       $found = false;
-       foreach ( $networks as $network ) {
-               if ( $network->domain === $domain || "www.$network->domain" === $domain ) {
-                       if ( in_array( $network->path, $paths, true ) ) {
-                               $found = true;
-                               break;
-                       }
-               }
-               if ( $network->path === '/' ) {
-                       $found = true;
-                       break;
-               }
-       }
-
-       if ( $found ) {
-               return wp_get_network( $network );
-       }
-
-       return false;
+       return WP_Network::get_by_path( $domain, $path, $segments );
 }
 
 /**
  * Retrieve an object containing information about the requested network.
  *
  * @since 3.9.0
- *
- * @global wpdb $wpdb
+ * @since 4.4.0 Converted to leverage WP_Network
  *
  * @param object|int $network The network's database row or ID.
- * @return object|false Object containing network information if found, false if not.
+ * @return WP_Network|false Object containing network information if found, false if not.
  */
 function wp_get_network( $network ) {
-       global $wpdb;
-
        if ( ! is_object( $network ) ) {
-               $network = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->site WHERE id = %d", $network ) );
-               if ( ! $network ) {
-                       return false;
-               }
+               $network = WP_Network::get_instance( $network );
+       } else {
+               $network = new WP_Network( $network );
        }
 
        return $network;
@@ -282,7 +155,7 @@ function wp_get_network( $network ) {
  *
  * @since 3.9.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string   $domain   Domain to check.
  * @param string   $path     Path to check.
@@ -394,13 +267,15 @@ function get_site_by_path( $domain, $path, $segments = null ) {
  *
  * @access private
  * @since 3.0.0
+ * @since 4.4.0 The `$domain` and `$path` parameters were added.
  *
- * @global wpdb   $wpdb
- * @global string $domain
- * @global string $path
+ * @global wpdb $wpdb WordPress database abstraction object.
+ *
+ * @param string $domain The requested domain for the error to reference.
+ * @param string $path   The requested path for the error to reference.
  */
-function ms_not_installed() {
-       global $wpdb, $domain, $path;
+function ms_not_installed( $domain, $path ) {
+       global $wpdb;
 
        if ( ! is_admin() ) {
                dead_db();
@@ -430,7 +305,10 @@ function ms_not_installed() {
                ) . '</p>';
        }
        $msg .= '<p><strong>' . __( 'What do I do now?' ) . '</strong> ';
-       $msg .= __( 'Read the <a target="_blank" href="https://codex.wordpress.org/Debugging_a_WordPress_Network">bug report</a> page. Some of the guidelines there may help you figure out what went wrong.' );
+       /* translators: %s: Codex URL */
+       $msg .= sprintf( __( 'Read the <a href="%s" target="_blank">bug report</a> page. Some of the guidelines there may help you figure out what went wrong.' ),
+               __( 'https://codex.wordpress.org/Debugging_a_WordPress_Network' )
+       );
        $msg .= ' ' . __( 'If you&#8217;re still stuck with this message, then check that your database contains the following tables:' ) . '</p><ul>';
        foreach ( $wpdb->tables('global') as $t => $table ) {
                if ( 'sitecategories' == $t )
index 7b35e7616fa5c54d02e19e036a13778384eb6033..a490c22248841711fb34933a97234e43afb4cc11 100644 (file)
  * @since 3.0.0
  */
 
-/** Include Multisite initialization functions */
+/** WP_Network class */
+require_once( ABSPATH . WPINC . '/class-wp-network.php' );
+
+/** Multisite loader */
 require_once( ABSPATH . WPINC . '/ms-load.php' );
+
+/** Default Multisite constants */
 require_once( ABSPATH . WPINC . '/ms-default-constants.php' );
 
 if ( defined( 'SUNRISE' ) ) {
@@ -75,18 +80,31 @@ if ( !isset( $current_site ) || !isset( $current_blog ) ) {
                        // Are there even two networks installed?
                        $one_network = $wpdb->get_row( "SELECT * FROM $wpdb->site LIMIT 2" ); // [sic]
                        if ( 1 === $wpdb->num_rows ) {
-                               $current_site = wp_get_network( $one_network );
+                               $current_site = new WP_Network( $one_network );
                                wp_cache_add( 'current_network', $current_site, 'site-options' );
                        } elseif ( 0 === $wpdb->num_rows ) {
-                               ms_not_installed();
+                               ms_not_installed( $domain, $path );
                        }
                }
                if ( empty( $current_site ) ) {
-                       $current_site = get_network_by_path( $domain, $path, 1 );
+                       $current_site = WP_Network::get_by_path( $domain, $path, 1 );
                }
 
                if ( empty( $current_site ) ) {
-                       ms_not_installed();
+                       /**
+                        * Fires when a network cannot be found based on the requested domain and path.
+                        *
+                        * At the time of this action, the only recourse is to redirect somewhere
+                        * and exit. If you want to declare a particular network, do so earlier.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param string $domain       The domain used to search for a network.
+                        * @param string $path         The path used to search for a path.
+                        */
+                       do_action( 'ms_network_not_found', $domain, $path );
+
+                       ms_not_installed( $domain, $path );
                } elseif ( $path === $current_site->path ) {
                        $current_blog = get_site_by_path( $domain, $path );
                } else {
@@ -97,25 +115,28 @@ if ( !isset( $current_site ) || !isset( $current_blog ) ) {
                // Find the site by the domain and at most the first path segment.
                $current_blog = get_site_by_path( $domain, $path, 1 );
                if ( $current_blog ) {
-                       $current_site = wp_get_network( $current_blog->site_id ? $current_blog->site_id : 1 );
+                       $current_site = WP_Network::get_instance( $current_blog->site_id ? $current_blog->site_id : 1 );
                } else {
                        // If you don't have a site with the same domain/path as a network, you're pretty screwed, but:
-                       $current_site = get_network_by_path( $domain, $path, 1 );
+                       $current_site = WP_Network::get_by_path( $domain, $path, 1 );
                }
        }
 
        // The network declared by the site trumps any constants.
        if ( $current_blog && $current_blog->site_id != $current_site->id ) {
-               $current_site = wp_get_network( $current_blog->site_id );
+               $current_site = WP_Network::get_instance( $current_blog->site_id );
        }
 
        // No network has been found, bail.
        if ( empty( $current_site ) ) {
-               ms_not_installed();
+               /** This action is documented in wp-includes/ms-settings.php */
+               do_action( 'ms_network_not_found', $domain, $path );
+
+               ms_not_installed( $domain, $path );
        }
 
        // @todo Investigate when exactly this can occur.
-       if ( empty( $current_blog ) && defined( 'WP_INSTALLING' ) ) {
+       if ( empty( $current_blog ) && wp_installing() ) {
                $current_blog = new stdClass;
                $current_blog->blog_id = $blog_id = 1;
        }
@@ -156,21 +177,15 @@ if ( !isset( $current_site ) || !isset( $current_blog ) ) {
                         * it's no use redirecting back to ourselves -- it'll cause a loop.
                         * As we couldn't find a site, we're simply not installed.
                         */
-                       ms_not_installed();
+                       ms_not_installed( $domain, $path );
                }
 
                header( 'Location: ' . $destination );
                exit;
        }
 
-       // @todo What if the domain of the network doesn't match the current site?
-       $current_site->cookie_domain = $current_site->domain;
-       if ( 'www.' === substr( $current_site->cookie_domain, 0, 4 ) ) {
-               $current_site->cookie_domain = substr( $current_site->cookie_domain, 4 );
-       }
-
        // Figure out the current network's main site.
-       if ( ! isset( $current_site->blog_id ) ) {
+       if ( empty( $current_site->blog_id ) ) {
                if ( $current_blog->domain === $current_site->domain && $current_blog->path === $current_site->path ) {
                        $current_site->blog_id = $current_blog->blog_id;
                } elseif ( ! $current_site->blog_id = wp_cache_get( 'network:' . $current_site->id . ':main_site', 'site-options' ) ) {
@@ -202,11 +217,8 @@ $switched = false;
 // need to init cache again after blog_id is set
 wp_start_object_cache();
 
-if ( ! isset( $current_site->site_name ) ) {
-       $current_site->site_name = get_site_option( 'site_name' );
-       if ( ! $current_site->site_name ) {
-               $current_site->site_name = ucfirst( $current_site->domain );
-       }
+if ( ! $current_site instanceof WP_Network ) {
+       $current_site = new WP_Network( $current_site );
 }
 
 // Define upload directory constants
index bcc9b6325ca06d1a537cee65753908a53959d360..253b6547cdbe7b29d5378ab2a82128c94520fe1c 100644 (file)
@@ -71,6 +71,7 @@ class Walker_Nav_Menu extends Walker {
         * @see Walker::start_el()
         *
         * @since 3.0.0
+        * @since 4.4.0 'nav_menu_item_args' filter was added.
         *
         * @param string $output Passed by reference. Used to append additional content.
         * @param object $item   Menu item data object.
@@ -84,6 +85,17 @@ class Walker_Nav_Menu extends Walker {
                $classes = empty( $item->classes ) ? array() : (array) $item->classes;
                $classes[] = 'menu-item-' . $item->ID;
 
+               /**
+                * Filter the arguments for a single nav menu item.
+                *
+                * @since 4.4.0
+                *
+                * @param array  $args  An array of arguments.
+                * @param object $item  Menu item data object.
+                * @param int    $depth Depth of menu item. Used for padding.
+                */
+               $args = apply_filters( 'nav_menu_item_args', $args, $item, $depth );
+
                /**
                 * Filter the CSS class(es) applied to a menu item's list item element.
                 *
@@ -148,10 +160,24 @@ class Walker_Nav_Menu extends Walker {
                        }
                }
 
+               /** This filter is documented in wp-includes/post-template.php */
+               $title = apply_filters( 'the_title', $item->title, $item->ID );
+
+               /**
+                * Filter a menu item's title.
+                *
+                * @since 4.4.0
+                *
+                * @param string $title The menu item's title.
+                * @param object $item  The current menu item.
+                * @param array  $args  An array of {@see wp_nav_menu()} arguments.
+                * @param int    $depth Depth of menu item. Used for padding.
+                */
+               $title = apply_filters( 'nav_menu_item_title', $title, $item, $args, $depth );
+
                $item_output = $args->before;
                $item_output .= '<a'. $attributes .'>';
-               /** This filter is documented in wp-includes/post-template.php */
-               $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after;
+               $item_output .= $args->link_before . $title . $args->link_after;
                $item_output .= '</a>';
                $item_output .= $args->after;
 
@@ -185,7 +211,7 @@ class Walker_Nav_Menu extends Walker {
         * @param array  $args   An array of arguments. @see wp_nav_menu()
         */
        public function end_el( &$output, $item, $depth = 0, $args = array() ) {
-               $output .= "</li>\n";
+               $output .= '</li>';
        }
 
 } // Walker_Nav_Menu
@@ -207,7 +233,7 @@ class Walker_Nav_Menu extends Walker {
  *     @type string        $container       Whether to wrap the ul, and what to wrap it with. Default 'div'.
  *     @type string        $container_class Class that is applied to the container. Default 'menu-{menu slug}-container'.
  *     @type string        $container_id    The ID that is applied to the container. Default empty.
- *     @type callback|bool $fallback_cb     If the menu doesn't exists, a callback function will fire.
+ *     @type callable|bool $fallback_cb     If the menu doesn't exists, a callback function will fire.
  *                                          Default is 'wp_page_menu'. Set to false for no fallback.
  *     @type string        $before          Text before the link text. Default empty.
  *     @type string        $after           Text after the link text. Default empty.
@@ -322,7 +348,7 @@ function wp_nav_menu( $args = array() ) {
                 *                    Default is array containing 'div' and 'nav'.
                 */
                $allowed_tags = apply_filters( 'wp_nav_menu_container_allowedtags', array( 'div', 'nav' ) );
-               if ( in_array( $args->container, $allowed_tags ) ) {
+               if ( is_string( $args->container ) && in_array( $args->container, $allowed_tags ) ) {
                        $show_container = true;
                        $class = $args->container_class ? ' class="' . esc_attr( $args->container_class ) . '"' : ' class="menu-'. $menu->slug .'-container"';
                        $id = $args->container_id ? ' id="' . esc_attr( $args->container_id ) . '"' : '';
@@ -552,8 +578,15 @@ function _wp_menu_item_classes_by_context( &$menu_items ) {
                        $active_parent_object_ids[] = (int) $menu_item->post_parent;
                        $active_object = $menu_item->object;
 
+               // if the menu item corresponds to the currently-queried post type archive
+               } elseif (
+                       'post_type_archive' == $menu_item->type &&
+                       is_post_type_archive( array( $menu_item->object ) )
+               ) {
+                       $classes[] = 'current-menu-item';
+                       $menu_items[$key]->current = true;
                // if the menu item corresponds to the currently-requested URL
-               } elseif ( 'custom' == $menu_item->object ) {
+               } elseif ( 'custom' == $menu_item->object && isset( $_SERVER['HTTP_HOST'] ) ) {
                        $_root_relative_current = untrailingslashit( $_SERVER['REQUEST_URI'] );
                        $current_url = set_url_scheme( 'http://' . $_SERVER['HTTP_HOST'] . $_root_relative_current );
                        $raw_item_url = strpos( $menu_item->url, '#' ) ? substr( $menu_item->url, 0, strpos( $menu_item->url, '#' ) ) : $menu_item->url;
index 9eb101933c7c5ff59e17fe79081925422b349c96..91a102a8809948a9ca25f31a3648440ee5c18bdf 100644 (file)
@@ -277,15 +277,27 @@ function wp_update_nav_menu_object( $menu_id = 0, $menu_data = array() ) {
                ! is_wp_error( $_possible_existing ) &&
                isset( $_possible_existing->term_id ) &&
                $_possible_existing->term_id != $menu_id
-       )
-               return new WP_Error( 'menu_exists', sprintf( __('The menu name <strong>%s</strong> conflicts with another menu name. Please try another.'), esc_html( $menu_data['menu-name'] ) ) );
+       ) {
+               return new WP_Error( 'menu_exists',
+                       /* translators: %s: menu name */
+                       sprintf( __( 'The menu name %s conflicts with another menu name. Please try another.' ),
+                               '<strong>' . esc_html( $menu_data['menu-name'] ) . '</strong>'
+                       )
+               );
+       }
 
        // menu doesn't already exist, so create a new menu
        if ( ! $_menu || is_wp_error( $_menu ) ) {
                $menu_exists = get_term_by( 'name', $menu_data['menu-name'], 'nav_menu' );
 
-               if ( $menu_exists )
-                       return new WP_Error( 'menu_exists', sprintf( __('The menu name <strong>%s</strong> conflicts with another menu name. Please try another.'), esc_html( $menu_data['menu-name'] ) ) );
+               if ( $menu_exists ) {
+                       return new WP_Error( 'menu_exists',
+                               /* translators: %s: menu name */
+                               sprintf( __( 'The menu name %s conflicts with another menu name. Please try another.' ),
+                                       '<strong>' . esc_html( $menu_data['menu-name'] ) . '</strong>'
+                               )
+                       );
+               }
 
                $_menu = wp_insert_term( $menu_data['menu-name'], 'nav_menu', $args );
 
@@ -403,6 +415,9 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
                        $original_object = get_post( $args['menu-item-object-id'] );
                        $original_parent = (int) $original_object->post_parent;
                        $original_title = $original_object->post_title;
+               } elseif ( 'post_type_archive' == $args['menu-item-type'] ) {
+                       $original_object = get_post_type_object( $args['menu-item-object'] );
+                       $original_title = $original_object->labels->archives;
                }
 
                if ( $args['menu-item-title'] == $original_title )
@@ -433,6 +448,19 @@ function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item
                $menu_item_db_id = wp_insert_post( $post );
                if ( ! $menu_item_db_id || is_wp_error( $menu_item_db_id ) )
                        return $menu_item_db_id;
+
+               /**
+                * Fires immediately after a new navigation menu item has been added.
+                *
+                * @since 4.4.0
+                *
+                * @see wp_update_nav_menu_item()
+                *
+                * @param int   $menu_id         ID of the updated menu.
+                * @param int   $menu_item_db_id ID of the new menu item.
+                * @param array $args            An array of arguments used to update/add the menu item.
+                */
+               do_action( 'wp_add_nav_menu_item', $menu_id, $menu_item_db_id, $args );
        }
 
        // Associate the menu item with the menu term
@@ -644,7 +672,7 @@ function wp_get_nav_menu_items( $menu, $args = array() ) {
                $GLOBALS['_menu_item_sort_prop'] = $args['output_key'];
                usort($items, '_sort_nav_menu_items');
                $i = 1;
-               foreach( $items as $k => $item ) {
+               foreach ( $items as $k => $item ) {
                        $items[$k]->{$args['output_key']} = $i++;
                }
        }
@@ -718,6 +746,17 @@ function wp_setup_nav_menu_item( $menu_item ) {
 
                                $menu_item->title = '' == $menu_item->post_title ? $original_title : $menu_item->post_title;
 
+                       } elseif ( 'post_type_archive' == $menu_item->type ) {
+                               $object =  get_post_type_object( $menu_item->object );
+                               if ( $object ) {
+                                       $menu_item->title = '' == $menu_item->post_title ? $object->labels->archives : $menu_item->post_title;
+                               } else {
+                                       $menu_item->_invalid = true;
+                               }
+
+                               $menu_item->type_label = __( 'Post Type Archive' );
+                               $menu_item->description = '';
+                               $menu_item->url = get_post_type_archive_link( $menu_item->object );
                        } elseif ( 'taxonomy' == $menu_item->type ) {
                                $object = get_taxonomy( $menu_item->object );
                                if ( $object ) {
@@ -848,7 +887,7 @@ function wp_get_associated_nav_menu_items( $object_id = 0, $object_type = 'post_
                        'posts_per_page' => -1,
                )
        );
-       foreach( (array) $menu_items as $menu_item ) {
+       foreach ( (array) $menu_items as $menu_item ) {
                if ( isset( $menu_item->ID ) && is_nav_menu_item( $menu_item->ID ) ) {
                        $menu_item_type = get_post_meta( $menu_item->ID, '_menu_item_type', true );
                        if (
@@ -883,7 +922,7 @@ function _wp_delete_post_menu_item( $object_id = 0 ) {
 
        $menu_item_ids = wp_get_associated_nav_menu_items( $object_id, 'post_type' );
 
-       foreach( (array) $menu_item_ids as $menu_item_id ) {
+       foreach ( (array) $menu_item_ids as $menu_item_id ) {
                wp_delete_post( $menu_item_id, true );
        }
 }
@@ -902,7 +941,7 @@ function _wp_delete_tax_menu_item( $object_id = 0, $tt_id, $taxonomy ) {
 
        $menu_item_ids = wp_get_associated_nav_menu_items( $object_id, 'taxonomy', $taxonomy );
 
-       foreach( (array) $menu_item_ids as $menu_item_id ) {
+       foreach ( (array) $menu_item_ids as $menu_item_id ) {
                wp_delete_post( $menu_item_id, true );
        }
 }
index 1b5dde235cfbc23b47bc152eba6e53ac526cf06f..6d9fe645c61da24b94a2932cc03beaa24578c272 100644 (file)
@@ -18,7 +18,7 @@
  *
  * @since 1.5.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $option  Name of option to retrieve. Expected to not be SQL-escaped.
  * @param mixed  $default Optional. Default value to return if the option does not exist.
@@ -40,18 +40,20 @@ function get_option( $option, $default = false ) {
         * the option value, returning the passed value instead.
         *
         * @since 1.5.0
+        * @since 4.4.0 The `$option` parameter was added.
         *
         * @param bool|mixed $pre_option Value to return instead of the option value.
         *                               Default false to skip it.
+        * @param string     $option     Option name.
         */
-       $pre = apply_filters( 'pre_option_' . $option, false );
+       $pre = apply_filters( 'pre_option_' . $option, false, $option );
        if ( false !== $pre )
                return $pre;
 
        if ( defined( 'WP_SETUP_CONFIG' ) )
                return false;
 
-       if ( ! defined( 'WP_INSTALLING' ) ) {
+       if ( ! wp_installing() ) {
                // prevent non-existent options from triggering multiple queries
                $notoptions = wp_cache_get( 'notoptions', 'options' );
                if ( isset( $notoptions[ $option ] ) ) {
@@ -61,11 +63,13 @@ function get_option( $option, $default = false ) {
                         * The dynamic portion of the hook name, `$option`, refers to the option name.
                         *
                         * @since 3.4.0
+                        * @since 4.4.0 The `$option` parameter was added.
                         *
-                        * @param mixed $default The default value to return if the option does not exist
-                        *                       in the database.
+                        * @param mixed  $default The default value to return if the option does not exist
+                        *                        in the database.
+                        * @param string $option  Option name.
                         */
-                       return apply_filters( 'default_option_' . $option, $default );
+                       return apply_filters( 'default_option_' . $option, $default, $option );
                }
 
                $alloptions = wp_load_alloptions();
@@ -90,7 +94,7 @@ function get_option( $option, $default = false ) {
                                        wp_cache_set( 'notoptions', $notoptions, 'options' );
 
                                        /** This filter is documented in wp-includes/option.php */
-                                       return apply_filters( 'default_option_' . $option, $default );
+                                       return apply_filters( 'default_option_' . $option, $default, $option );
                                }
                        }
                }
@@ -102,7 +106,7 @@ function get_option( $option, $default = false ) {
                        $value = $row->option_value;
                } else {
                        /** This filter is documented in wp-includes/option.php */
-                       return apply_filters( 'default_option_' . $option, $default );
+                       return apply_filters( 'default_option_' . $option, $default, $option );
                }
        }
 
@@ -120,11 +124,13 @@ function get_option( $option, $default = false ) {
         *
         * @since 1.5.0 As 'option_' . $setting
         * @since 3.0.0
+        * @since 4.4.0 The `$option` parameter was added.
         *
-        * @param mixed $value Value of the option. If stored serialized, it will be
-        *                     unserialized prior to being returned.
+        * @param mixed  $value  Value of the option. If stored serialized, it will be
+        *                       unserialized prior to being returned.
+        * @param string $option Option name.
         */
-       return apply_filters( 'option_' . $option, maybe_unserialize( $value ) );
+       return apply_filters( 'option_' . $option, maybe_unserialize( $value ), $option );
 }
 
 /**
@@ -158,14 +164,14 @@ function form_option( $option ) {
  *
  * @since 2.2.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @return array List of all options.
  */
 function wp_load_alloptions() {
        global $wpdb;
 
-       if ( !defined( 'WP_INSTALLING' ) || !is_multisite() )
+       if ( ! wp_installing() || ! is_multisite() )
                $alloptions = wp_cache_get( 'alloptions', 'options' );
        else
                $alloptions = false;
@@ -179,7 +185,7 @@ function wp_load_alloptions() {
                foreach ( (array) $alloptions_db as $o ) {
                        $alloptions[$o->option_name] = $o->option_value;
                }
-               if ( !defined( 'WP_INSTALLING' ) || !is_multisite() )
+               if ( ! wp_installing() || ! is_multisite() )
                        wp_cache_add( 'alloptions', $alloptions, 'options' );
        }
 
@@ -191,14 +197,14 @@ function wp_load_alloptions() {
  *
  * @since 3.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int $site_id Optional site ID for which to query the options. Defaults to the current site.
  */
 function wp_load_core_site_options( $site_id = null ) {
        global $wpdb;
 
-       if ( !is_multisite() || wp_using_ext_object_cache() || defined( 'WP_INSTALLING' ) )
+       if ( ! is_multisite() || wp_using_ext_object_cache() || wp_installing() )
                return;
 
        if ( empty($site_id) )
@@ -231,7 +237,7 @@ function wp_load_core_site_options( $site_id = null ) {
  * @since 1.0.0
  * @since 4.2.0 The `$autoload` parameter was added.
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string      $option   Option name. Expected to not be SQL-escaped.
  * @param mixed       $value    Option value. Must be serializable if non-scalar. Expected to not be SQL-escaped.
@@ -262,11 +268,13 @@ function update_option( $option, $value, $autoload = null ) {
         * The dynamic portion of the hook name, `$option`, refers to the option name.
         *
         * @since 2.6.0
+        * @since 4.4.0 The `$option` parameter was added.
         *
-        * @param mixed $value     The new, unserialized option value.
-        * @param mixed $old_value The old option value.
+        * @param mixed  $value     The new, unserialized option value.
+        * @param mixed  $old_value The old option value.
+        * @param string $option    Option name.
         */
-       $value = apply_filters( 'pre_update_option_' . $option, $value, $old_value );
+       $value = apply_filters( 'pre_update_option_' . $option, $value, $old_value, $option );
 
        /**
         * Filter an option before its value is (maybe) serialized and updated.
@@ -324,7 +332,7 @@ function update_option( $option, $value, $autoload = null ) {
                wp_cache_set( 'notoptions', $notoptions, 'options' );
        }
 
-       if ( ! defined( 'WP_INSTALLING' ) ) {
+       if ( ! wp_installing() ) {
                $alloptions = wp_load_alloptions();
                if ( isset( $alloptions[$option] ) ) {
                        $alloptions[ $option ] = $serialized_value;
@@ -340,11 +348,13 @@ function update_option( $option, $value, $autoload = null ) {
         * The dynamic portion of the hook name, `$option`, refers to the option name.
         *
         * @since 2.0.1
+        * @since 4.4.0 The `$option` parameter was added.
         *
-        * @param mixed $old_value The old option value.
-        * @param mixed $value     The new option value.
+        * @param mixed  $old_value The old option value.
+        * @param mixed  $value     The new option value.
+        * @param string $option    Option name.
         */
-       do_action( "update_option_{$option}", $old_value, $value );
+       do_action( "update_option_{$option}", $old_value, $value, $option );
 
        /**
         * Fires after the value of an option has been successfully updated.
@@ -373,7 +383,7 @@ function update_option( $option, $value, $autoload = null ) {
  *
  * @since 1.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string         $option      Name of option to add. Expected to not be SQL-escaped.
  * @param mixed          $value       Optional. Option value. Must be serializable if non-scalar. Expected to not be SQL-escaped.
@@ -423,7 +433,7 @@ function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' )
        if ( ! $result )
                return false;
 
-       if ( ! defined( 'WP_INSTALLING' ) ) {
+       if ( ! wp_installing() ) {
                if ( 'yes' == $autoload ) {
                        $alloptions = wp_load_alloptions();
                        $alloptions[ $option ] = $serialized_value;
@@ -470,7 +480,7 @@ function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' )
  *
  * @since 1.2.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $option Name of option to remove. Expected to not be SQL-escaped.
  * @return bool True, if option is successfully deleted. False on failure.
@@ -499,7 +509,7 @@ function delete_option( $option ) {
        do_action( 'delete_option', $option );
 
        $result = $wpdb->delete( $wpdb->options, array( 'option_name' => $option ) );
-       if ( ! defined( 'WP_INSTALLING' ) ) {
+       if ( ! wp_installing() ) {
                if ( 'yes' == $row->autoload ) {
                        $alloptions = wp_load_alloptions();
                        if ( is_array( $alloptions ) && isset( $alloptions[$option] ) ) {
@@ -595,7 +605,7 @@ function delete_transient( $transient ) {
  */
 function get_transient( $transient ) {
 
-       /**
+       /**
         * Filter the value of an existing transient.
         *
         * The dynamic portion of the hook name, `$transient`, refers to the transient name.
@@ -604,12 +614,14 @@ function get_transient( $transient ) {
         * of the transient, returning the passed value instead.
         *
         * @since 2.8.0
+        * @since 4.4.0 The `$transient` parameter was added
         *
-        * @param mixed $pre_transient The default value to return if the transient does not exist.
-        *                             Any value other than false will short-circuit the retrieval
-        *                             of the transient, and return the returned value.
+        * @param mixed  $pre_transient The default value to return if the transient does not exist.
+        *                              Any value other than false will short-circuit the retrieval
+        *                              of the transient, and return the returned value.
+        * @param string $transient     Transient name.
         */
-       $pre = apply_filters( 'pre_transient_' . $transient, false );
+       $pre = apply_filters( 'pre_transient_' . $transient, false, $transient );
        if ( false !== $pre )
                return $pre;
 
@@ -617,7 +629,7 @@ function get_transient( $transient ) {
                $value = wp_cache_get( $transient, 'transient' );
        } else {
                $transient_option = '_transient_' . $transient;
-               if ( ! defined( 'WP_INSTALLING' ) ) {
+               if ( ! wp_installing() ) {
                        // If option is not in alloptions, it is not autoloaded and thus has a timeout
                        $alloptions = wp_load_alloptions();
                        if ( !isset( $alloptions[$transient_option] ) ) {
@@ -641,10 +653,12 @@ function get_transient( $transient ) {
         * The dynamic portion of the hook name, `$transient`, refers to the transient name.
         *
         * @since 2.8.0
+        * @since 4.4.0 The `$transient` parameter was added
         *
-        * @param mixed $value Value of transient.
+        * @param mixed  $value     Value of transient.
+        * @param string $transient Transient name.
         */
-       return apply_filters( 'transient_' . $transient, $value );
+       return apply_filters( 'transient_' . $transient, $value, $transient );
 }
 
 /**
@@ -656,10 +670,10 @@ function get_transient( $transient ) {
  * @since 2.8.0
  *
  * @param string $transient  Transient name. Expected to not be SQL-escaped. Must be
- *                           45 characters or fewer in length.
+ *                           172 characters or fewer in length.
  * @param mixed  $value      Transient value. Must be serializable if non-scalar.
  *                           Expected to not be SQL-escaped.
- * @param int    $expiration Optional. Time until expiration in seconds. Default 0.
+ * @param int    $expiration Optional. Time until expiration in seconds. Default 0 (no expiration).
  * @return bool False if value was not set and true if value was set.
  */
 function set_transient( $transient, $value, $expiration = 0 ) {
@@ -672,41 +686,56 @@ function set_transient( $transient, $value, $expiration = 0 ) {
         * The dynamic portion of the hook name, `$transient`, refers to the transient name.
         *
         * @since 3.0.0
-        * @since 4.2.0 Added `$expiration` parameter.
+        * @since 4.2.0 The `$expiration` parameter was added.
+        * @since 4.4.0 The `$transient` parameter was added.
+        *
+        * @param mixed  $value      New value of transient.
+        * @param int    $expiration Time until expiration in seconds.
+        * @param string $transient  Transient name.
+        */
+       $value = apply_filters( 'pre_set_transient_' . $transient, $value, $expiration, $transient );
+
+       /**
+        * Filter the expiration for a transient before its value is set.
+        *
+        * The dynamic portion of the hook name, `$transient`, refers to the transient name.
         *
-        * @param mixed $value      New value of transient.
-        * @param int   $expiration Time until expiration in seconds.
+        * @since 4.4.0
+        *
+        * @param int    $expiration Time until expiration in seconds. Use 0 for no expiration.
+        * @param mixed  $value      New value of transient.
+        * @param string $transient  Transient name.
         */
-       $value = apply_filters( 'pre_set_transient_' . $transient, $value, $expiration );
+       $expiration = apply_filters( 'expiration_of_transient_' . $transient, $expiration, $value, $transient );
 
        if ( wp_using_ext_object_cache() ) {
                $result = wp_cache_set( $transient, $value, 'transient', $expiration );
        } else {
                $transient_timeout = '_transient_timeout_' . $transient;
-               $transient = '_transient_' . $transient;
-               if ( false === get_option( $transient ) ) {
+               $transient_option = '_transient_' . $transient;
+               if ( false === get_option( $transient_option ) ) {
                        $autoload = 'yes';
                        if ( $expiration ) {
                                $autoload = 'no';
                                add_option( $transient_timeout, time() + $expiration, '', 'no' );
                        }
-                       $result = add_option( $transient, $value, '', $autoload );
+                       $result = add_option( $transient_option, $value, '', $autoload );
                } else {
                        // If expiration is requested, but the transient has no timeout option,
                        // delete, then re-create transient rather than update.
                        $update = true;
                        if ( $expiration ) {
                                if ( false === get_option( $transient_timeout ) ) {
-                                       delete_option( $transient );
+                                       delete_option( $transient_option );
                                        add_option( $transient_timeout, time() + $expiration, '', 'no' );
-                                       $result = add_option( $transient, $value, '', 'no' );
+                                       $result = add_option( $transient_option, $value, '', 'no' );
                                        $update = false;
                                } else {
                                        update_option( $transient_timeout, time() + $expiration );
                                }
                        }
                        if ( $update ) {
-                               $result = update_option( $transient, $value );
+                               $result = update_option( $transient_option, $value );
                        }
                }
        }
@@ -719,20 +748,24 @@ function set_transient( $transient, $value, $expiration = 0 ) {
                 * The dynamic portion of the hook name, `$transient`, refers to the transient name.
                 *
                 * @since 3.0.0
+                * @since 3.6.0 The `$value` and `$expiration` parameters were added.
+                * @since 4.4.0 The `$transient` parameter was added.
                 *
-                * @param mixed $value      Transient value.
-                * @param int   $expiration Time until expiration in seconds. Default 0.
+                * @param mixed  $value      Transient value.
+                * @param int    $expiration Time until expiration in seconds.
+                * @param string $transient  The name of the transient.
                 */
-               do_action( 'set_transient_' . $transient, $value, $expiration );
+               do_action( 'set_transient_' . $transient, $value, $expiration, $transient );
 
                /**
                 * Fires after the value for a transient has been set.
                 *
                 * @since 3.0.0
+                * @since 3.6.0 The `$value` and `$expiration` parameters were added.
                 *
                 * @param string $transient  The name of the transient.
                 * @param mixed  $value      Transient value.
-                * @param int    $expiration Time until expiration in seconds. Default 0.
+                * @param int    $expiration Time until expiration in seconds.
                 */
                do_action( 'setted_transient', $transient, $value, $expiration );
        }
@@ -783,7 +816,7 @@ function wp_user_settings() {
        }
 
        // The cookie is not set in the current browser or the saved value is newer.
-       $secure = ( 'https' === parse_url( site_url(), PHP_URL_SCHEME ) );
+       $secure = ( 'https' === parse_url( admin_url(), PHP_URL_SCHEME ) );
        setcookie( 'wp-settings-' . $user_id, $settings, time() + YEAR_IN_SECONDS, SITECOOKIEPATH, null, $secure );
        setcookie( 'wp-settings-time-' . $user_id, time(), time() + YEAR_IN_SECONDS, SITECOOKIEPATH, null, $secure );
        $_COOKIE['wp-settings-' . $user_id] = $settings;
@@ -884,7 +917,7 @@ function get_all_user_settings() {
        $user_settings = array();
 
        if ( isset( $_COOKIE['wp-settings-' . $user_id] ) ) {
-               $cookie = preg_replace( '/[^A-Za-z0-9=&_]/', '', $_COOKIE['wp-settings-' . $user_id] );
+               $cookie = preg_replace( '/[^A-Za-z0-9=&_-]/', '', $_COOKIE['wp-settings-' . $user_id] );
 
                if ( strpos( $cookie, '=' ) ) { // '=' cannot be 1st char
                        parse_str( $cookie, $user_settings );
@@ -924,8 +957,8 @@ function wp_set_all_user_settings( $user_settings ) {
 
        $settings = '';
        foreach ( $user_settings as $name => $value ) {
-               $_name = preg_replace( '/[^A-Za-z0-9_]+/', '', $name );
-               $_value = preg_replace( '/[^A-Za-z0-9_]+/', '', $value );
+               $_name = preg_replace( '/[^A-Za-z0-9_-]+/', '', $name );
+               $_value = preg_replace( '/[^A-Za-z0-9_-]+/', '', $value );
 
                if ( ! empty( $_name ) ) {
                        $settings .= $_name . '=' . $_value . '&';
@@ -956,24 +989,103 @@ function delete_all_user_settings() {
 }
 
 /**
- * Retrieve site option value based on name of option.
+ * Retrieve an option value for the current network based on name of option.
+ *
+ * @since 2.8.0
+ * @since 4.4.0 The `$use_cache` parameter was deprecated.
+ * @since 4.4.0 Modified into wrapper for get_network_option()
+ *
+ * @see get_network_option()
+ *
+ * @param string $option     Name of option to retrieve. Expected to not be SQL-escaped.
+ * @param mixed  $default    Optional value to return if option doesn't exist. Default false.
+ * @param bool   $deprecated Whether to use cache. Multisite only. Always set to true.
+ * @return mixed Value set for the option.
+ */
+function get_site_option( $option, $default = false, $deprecated = true ) {
+       return get_network_option( null, $option, $default );
+}
+
+/**
+ * Add a new option for the current network.
+ *
+ * Existing options will not be updated. Note that prior to 3.3 this wasn't the case.
  *
  * @since 2.8.0
+ * @since 4.4.0 Modified into wrapper for add_network_option()
+ *
+ * @see add_network_option()
+ *
+ * @param string $option Name of option to add. Expected to not be SQL-escaped.
+ * @param mixed  $value  Option value, can be anything. Expected to not be SQL-escaped.
+ * @return bool False if the option was not added. True if the option was added.
+ */
+function add_site_option( $option, $value ) {
+       return add_network_option( null, $option, $value );
+}
+
+/**
+ * Removes a option by name for the current network.
+ *
+ * @since 2.8.0
+ * @since 4.4.0 Modified into wrapper for delete_network_option()
+ *
+ * @see delete_network_option()
+ *
+ * @param string $option Name of option to remove. Expected to not be SQL-escaped.
+ * @return bool True, if succeed. False, if failure.
+ */
+function delete_site_option( $option ) {
+       return delete_network_option( null, $option );
+}
+
+/**
+ * Update the value of an option that was already added for the current network.
+ *
+ * @since 2.8.0
+ * @since 4.4.0 Modified into wrapper for update_network_option()
+ *
+ * @see update_network_option()
+ *
+ * @param string $option Name of option. Expected to not be SQL-escaped.
+ * @param mixed  $value  Option value. Expected to not be SQL-escaped.
+ * @return bool False if value was not updated. True if value was updated.
+ */
+function update_site_option( $option, $value ) {
+       return update_network_option( null, $option, $value );
+}
+
+/**
+ * Retrieve a network's option value based on the option name.
+ *
+ * @since 4.4.0
  *
  * @see get_option()
  *
- * @global wpdb $wpdb
+ * @global wpdb   $wpdb
+ * @global object $current_site
  *
- * @param string $option    Name of option to retrieve. Expected to not be SQL-escaped.
- * @param mixed  $default   Optional value to return if option doesn't exist. Default false.
- * @param bool   $use_cache Whether to use cache. Multisite only. Default true.
+ * @param int      $network_id ID of the network. Can be null to default to the current network ID.
+ * @param string   $option     Name of option to retrieve. Expected to not be SQL-escaped.
+ * @param mixed    $default    Optional. Value to return if the option doesn't exist. Default false.
  * @return mixed Value set for the option.
  */
-function get_site_option( $option, $default = false, $use_cache = true ) {
-       global $wpdb;
+function get_network_option( $network_id, $option, $default = false ) {
+       global $wpdb, $current_site;
+
+       if ( $network_id && ! is_numeric( $network_id ) ) {
+               return false;
+       }
+
+       $network_id = (int) $network_id;
+
+       // Fallback to the current network if a network ID is not specified.
+       if ( ! $network_id && is_multisite() ) {
+               $network_id = $current_site->id;
+       }
 
        /**
-        * Filter an existing site option before it is retrieved.
+        * Filter an existing network option before it is retrieved.
         *
         * The dynamic portion of the hook name, `$option`, refers to the option name.
         *
@@ -982,45 +1094,48 @@ function get_site_option( $option, $default = false, $use_cache = true ) {
         *
         * @since 2.9.0 As 'pre_site_option_' . $key
         * @since 3.0.0
+        * @since 4.4.0 The `$option` parameter was added
         *
-        * @param mixed $pre_option The default value to return if the option does not exist.
+        * @param mixed  $pre_option The default value to return if the option does not exist.
+        * @param string $option     Option name.
         */
-       $pre = apply_filters( 'pre_site_option_' . $option, false );
+       $pre = apply_filters( 'pre_site_option_' . $option, false, $option );
 
-       if ( false !== $pre )
-               return $pre;
+       if ( false !== $pre ) {
+               return $pre;
+       }
 
        // prevent non-existent options from triggering multiple queries
-       $notoptions_key = "{$wpdb->siteid}:notoptions";
+       $notoptions_key = "$network_id:notoptions";
        $notoptions = wp_cache_get( $notoptions_key, 'site-options' );
 
-       if ( isset( $notoptions[$option] ) ) {
+       if ( isset( $notoptions[ $option ] ) ) {
 
                /**
-                * Filter a specific default site option.
+                * Filter a specific default network option.
                 *
                 * The dynamic portion of the hook name, `$option`, refers to the option name.
                 *
                 * @since 3.4.0
+                * @since 4.4.0 The `$option` parameter was added.
                 *
-                * @param mixed $default The value to return if the site option does not exist
-                *                       in the database.
+                * @param mixed  $default The value to return if the site option does not exist
+                *                        in the database.
+                * @param string $option  Option name.
                 */
-               return apply_filters( 'default_site_option_' . $option, $default );
+               return apply_filters( 'default_site_option_' . $option, $default, $option );
        }
 
        if ( ! is_multisite() ) {
-
                /** This filter is documented in wp-includes/option.php */
-               $default = apply_filters( 'default_site_option_' . $option, $default );
-               $value = get_option($option, $default);
+               $default = apply_filters( 'default_site_option_' . $option, $default, $option );
+               $value = get_option( $option, $default );
        } else {
-               $cache_key = "{$wpdb->siteid}:$option";
-               if ( $use_cache )
-                       $value = wp_cache_get($cache_key, 'site-options');
+               $cache_key = "$network_id:$option";
+               $value = wp_cache_get( $cache_key, 'site-options' );
 
-               if ( !isset($value) || (false === $value) ) {
-                       $row = $wpdb->get_row( $wpdb->prepare("SELECT meta_value FROM $wpdb->sitemeta WHERE meta_key = %s AND site_id = %d", $option, $wpdb->siteid ) );
+               if ( ! isset( $value ) || false === $value ) {
+                       $row = $wpdb->get_row( $wpdb->prepare( "SELECT meta_value FROM $wpdb->sitemeta WHERE meta_key = %s AND site_id = %d", $option, $network_id ) );
 
                        // Has to be get_row instead of get_var because of funkiness with 0, false, null values
                        if ( is_object( $row ) ) {
@@ -1029,89 +1144,109 @@ function get_site_option( $option, $default = false, $use_cache = true ) {
                                wp_cache_set( $cache_key, $value, 'site-options' );
                        } else {
                                if ( ! is_array( $notoptions ) ) {
-                                        $notoptions = array();
+                                       $notoptions = array();
                                }
-                               $notoptions[$option] = true;
+                               $notoptions[ $option ] = true;
                                wp_cache_set( $notoptions_key, $notoptions, 'site-options' );
 
                                /** This filter is documented in wp-includes/option.php */
-                               $value = apply_filters( 'default_site_option_' . $option, $default );
+                               $value = apply_filters( 'default_site_option_' . $option, $default, $option );
                        }
                }
        }
 
        /**
-        * Filter the value of an existing site option.
+        * Filter the value of an existing network option.
         *
         * The dynamic portion of the hook name, `$option`, refers to the option name.
         *
         * @since 2.9.0 As 'site_option_' . $key
         * @since 3.0.0
+        * @since 4.4.0 The `$option` parameter was added
         *
-        * @param mixed $value Value of site option.
+        * @param mixed  $value  Value of network option.
+        * @param string $option Option name.
         */
-       return apply_filters( 'site_option_' . $option, $value );
+       return apply_filters( 'site_option_' . $option, $value, $option );
 }
 
 /**
- * Add a new site option.
+ * Add a new network option.
  *
- * Existing options will not be updated. Note that prior to 3.3 this wasn't the case.
+ * Existing options will not be updated.
  *
- * @since 2.8.0
+ * @since 4.4.0
  *
  * @see add_option()
  *
- * @global wpdb $wpdb
+ * @global wpdb   $wpdb
+ * @global object $current_site
  *
- * @param string $option Name of option to add. Expected to not be SQL-escaped.
- * @param mixed  $value  Optional. Option value, can be anything. Expected to not be SQL-escaped.
+ * @param int    $network_id ID of the network. Can be null to default to the current network ID.
+ * @param string $option     Name of option to add. Expected to not be SQL-escaped.
+ * @param mixed  $value      Option value, can be anything. Expected to not be SQL-escaped.
  * @return bool False if option was not added and true if option was added.
  */
-function add_site_option( $option, $value ) {
-       global $wpdb;
+function add_network_option( $network_id, $option, $value ) {
+       global $wpdb, $current_site;
+
+       if ( $network_id && ! is_numeric( $network_id ) ) {
+               return false;
+       }
+
+       $network_id = (int) $network_id;
+
+       // Fallback to the current network if a network ID is not specified.
+       if ( ! $network_id && is_multisite() ) {
+               $network_id = $current_site->id;
+       }
 
        wp_protect_special_option( $option );
 
        /**
-        * Filter the value of a specific site option before it is added.
+        * Filter the value of a specific network option before it is added.
         *
         * The dynamic portion of the hook name, `$option`, refers to the option name.
         *
         * @since 2.9.0 As 'pre_add_site_option_' . $key
         * @since 3.0.0
+        * @since 4.4.0 The `$option` parameter was added
         *
-        * @param mixed $value Value of site option.
+        * @param mixed  $value  Value of network option.
+        * @param string $option Option name.
         */
-       $value = apply_filters( 'pre_add_site_option_' . $option, $value );
+       $value = apply_filters( 'pre_add_site_option_' . $option, $value, $option );
 
-       $notoptions_key = "{$wpdb->siteid}:notoptions";
+       $notoptions_key = "$network_id:notoptions";
 
-       if ( !is_multisite() ) {
+       if ( ! is_multisite() ) {
                $result = add_option( $option, $value );
        } else {
-               $cache_key = "{$wpdb->siteid}:$option";
+               $cache_key = "$network_id:$option";
 
                // Make sure the option doesn't already exist. We can check the 'notoptions' cache before we ask for a db query
                $notoptions = wp_cache_get( $notoptions_key, 'site-options' );
-               if ( ! is_array( $notoptions ) || ! isset( $notoptions[$option] ) )
-                       if ( false !== get_site_option( $option ) )
+               if ( ! is_array( $notoptions ) || ! isset( $notoptions[ $option ] ) ) {
+                       if ( false !== get_network_option( $network_id, $option, false ) ) {
                                return false;
+                       }
+               }
 
                $value = sanitize_option( $option, $value );
 
                $serialized_value = maybe_serialize( $value );
-               $result = $wpdb->insert( $wpdb->sitemeta, array('site_id' => $wpdb->siteid, 'meta_key' => $option, 'meta_value' => $serialized_value ) );
+               $result = $wpdb->insert( $wpdb->sitemeta, array( 'site_id'    => $network_id, 'meta_key'   => $option, 'meta_value' => $serialized_value ) );
 
-               if ( ! $result )
+               if ( ! $result ) {
                        return false;
+               }
 
                wp_cache_set( $cache_key, $value, 'site-options' );
 
                // This option exists now
                $notoptions = wp_cache_get( $notoptions_key, 'site-options' ); // yes, again... we need it to be fresh
-               if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
-                       unset( $notoptions[$option] );
+               if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
+                       unset( $notoptions[ $option ] );
                        wp_cache_set( $notoptions_key, $notoptions, 'site-options' );
                }
        }
@@ -1119,155 +1254,189 @@ function add_site_option( $option, $value ) {
        if ( $result ) {
 
                /**
-                * Fires after a specific site option has been successfully added.
+                * Fires after a specific network option has been successfully added.
                 *
                 * The dynamic portion of the hook name, `$option`, refers to the option name.
                 *
                 * @since 2.9.0 As "add_site_option_{$key}"
                 * @since 3.0.0
                 *
-                * @param string $option Name of site option.
-                * @param mixed  $value  Value of site option.
+                * @param string $option Name of the network option.
+                * @param mixed  $value  Value of the network option.
                 */
-               do_action( "add_site_option_{$option}", $option, $value );
+               do_action( 'add_site_option_' . $option, $option, $value );
 
                /**
-                * Fires after a site option has been successfully added.
+                * Fires after a network option has been successfully added.
                 *
                 * @since 3.0.0
                 *
-                * @param string $option Name of site option.
-                * @param mixed  $value  Value of site option.
+                * @param string $option Name of the network option.
+                * @param mixed  $value  Value of the network option.
                 */
-               do_action( "add_site_option", $option, $value );
+               do_action( 'add_site_option', $option, $value );
 
                return true;
        }
+
        return false;
 }
 
 /**
- * Removes site option by name.
+ * Removes a network option by name.
  *
- * @since 2.8.0
+ * @since 4.4.0
  *
  * @see delete_option()
  *
- * @global wpdb $wpdb
+ * @global wpdb   $wpdb
+ * @global object $current_site
  *
- * @param string $option Name of option to remove. Expected to not be SQL-escaped.
+ * @param int    $network_id ID of the network. Can be null to default to the current network ID.
+ * @param string $option     Name of option to remove. Expected to not be SQL-escaped.
  * @return bool True, if succeed. False, if failure.
  */
-function delete_site_option( $option ) {
-       global $wpdb;
+function delete_network_option( $network_id, $option ) {
+       global $wpdb, $current_site;
+
+       if ( $network_id && ! is_numeric( $network_id ) ) {
+               return false;
+       }
+
+       $network_id = (int) $network_id;
 
-       // ms_protect_special_option( $option ); @todo
+       // Fallback to the current network if a network ID is not specified.
+       if ( ! $network_id && is_multisite() ) {
+               $network_id = $current_site->id;
+       }
 
        /**
-        * Fires immediately before a specific site option is deleted.
+        * Fires immediately before a specific network option is deleted.
         *
         * The dynamic portion of the hook name, `$option`, refers to the option name.
         *
         * @since 3.0.0
+        * @since 4.4.0 The `$option` parameter was added
+        *
+        * @param string $option Option name.
         */
-       do_action( 'pre_delete_site_option_' . $option );
+       do_action( 'pre_delete_site_option_' . $option, $option );
 
-       if ( !is_multisite() ) {
+       if ( ! is_multisite() ) {
                $result = delete_option( $option );
        } else {
-               $row = $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM {$wpdb->sitemeta} WHERE meta_key = %s AND site_id = %d", $option, $wpdb->siteid ) );
-               if ( is_null( $row ) || !$row->meta_id )
+               $row = $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM {$wpdb->sitemeta} WHERE meta_key = %s AND site_id = %d", $option, $network_id ) );
+               if ( is_null( $row ) || ! $row->meta_id ) {
                        return false;
-               $cache_key = "{$wpdb->siteid}:$option";
+               }
+               $cache_key = "$network_id:$option";
                wp_cache_delete( $cache_key, 'site-options' );
 
-               $result = $wpdb->delete( $wpdb->sitemeta, array( 'meta_key' => $option, 'site_id' => $wpdb->siteid ) );
+               $result = $wpdb->delete( $wpdb->sitemeta, array( 'meta_key' => $option, 'site_id' => $network_id ) );
        }
 
        if ( $result ) {
 
                /**
-                * Fires after a specific site option has been deleted.
+                * Fires after a specific network option has been deleted.
                 *
                 * The dynamic portion of the hook name, `$option`, refers to the option name.
                 *
                 * @since 2.9.0 As "delete_site_option_{$key}"
                 * @since 3.0.0
                 *
-                * @param string $option Name of the site option.
+                * @param string $option Name of the network option.
                 */
-               do_action( "delete_site_option_{$option}", $option );
+               do_action( 'delete_site_option_' . $option, $option );
 
                /**
-                * Fires after a site option has been deleted.
+                * Fires after a network option has been deleted.
                 *
                 * @since 3.0.0
                 *
-                * @param string $option Name of the site option.
+                * @param string $option Name of the network option.
                 */
-               do_action( "delete_site_option", $option );
+               do_action( 'delete_site_option', $option );
 
                return true;
        }
+
        return false;
 }
 
 /**
- * Update the value of a site option that was already added.
+ * Update the value of a network option that was already added.
  *
- * @since 2.8.0
+ * @since 4.4.0
  *
  * @see update_option()
  *
- * @global wpdb $wpdb
+ * @global wpdb   $wpdb
+ * @global object $current_site
  *
- * @param string $option Name of option. Expected to not be SQL-escaped.
- * @param mixed  $value  Option value. Expected to not be SQL-escaped.
+ * @param int      $network_id ID of the network. Can be null to default to the current network ID.
+ * @param string   $option     Name of option. Expected to not be SQL-escaped.
+ * @param mixed    $value      Option value. Expected to not be SQL-escaped.
  * @return bool False if value was not updated and true if value was updated.
  */
-function update_site_option( $option, $value ) {
-       global $wpdb;
+function update_network_option( $network_id, $option, $value ) {
+       global $wpdb, $current_site;
+
+       if ( $network_id && ! is_numeric( $network_id ) ) {
+               return false;
+       }
+
+       $network_id = (int) $network_id;
+
+       // Fallback to the current network if a network ID is not specified.
+       if ( ! $network_id && is_multisite() ) {
+               $network_id = $current_site->id;
+       }
 
        wp_protect_special_option( $option );
 
-       $old_value = get_site_option( $option );
+       $old_value = get_network_option( $network_id, $option, false );
 
        /**
-        * Filter a specific site option before its value is updated.
+        * Filter a specific network option before its value is updated.
         *
         * The dynamic portion of the hook name, `$option`, refers to the option name.
         *
         * @since 2.9.0 As 'pre_update_site_option_' . $key
         * @since 3.0.0
+        * @since 4.4.0 The `$option` parameter was added
         *
-        * @param mixed $value     New value of site option.
-        * @param mixed $old_value Old value of site option.
+        * @param mixed  $value     New value of the network option.
+        * @param mixed  $old_value Old value of the network option.
+        * @param string $option    Option name.
         */
-       $value = apply_filters( 'pre_update_site_option_' . $option, $value, $old_value );
+       $value = apply_filters( 'pre_update_site_option_' . $option, $value, $old_value, $option );
 
-       if ( $value === $old_value )
+       if ( $value === $old_value ) {
                return false;
+       }
 
-       if ( false === $old_value )
-               return add_site_option( $option, $value );
+       if ( false === $old_value ) {
+               return add_network_option( $network_id, $option, $value );
+       }
 
-       $notoptions_key = "{$wpdb->siteid}:notoptions";
+       $notoptions_key = "$network_id:notoptions";
        $notoptions = wp_cache_get( $notoptions_key, 'site-options' );
-       if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
-               unset( $notoptions[$option] );
+       if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
+               unset( $notoptions[ $option ] );
                wp_cache_set( $notoptions_key, $notoptions, 'site-options' );
        }
 
-       if ( !is_multisite() ) {
+       if ( ! is_multisite() ) {
                $result = update_option( $option, $value );
        } else {
                $value = sanitize_option( $option, $value );
 
                $serialized_value = maybe_serialize( $value );
-               $result = $wpdb->update( $wpdb->sitemeta, array( 'meta_value' => $serialized_value ), array( 'site_id' => $wpdb->siteid, 'meta_key' => $option ) );
+               $result = $wpdb->update( $wpdb->sitemeta, array( 'meta_value' => $serialized_value ), array( 'site_id' => $network_id, 'meta_key' => $option ) );
 
                if ( $result ) {
-                       $cache_key = "{$wpdb->siteid}:$option";
+                       $cache_key = "$network_id:$option";
                        wp_cache_set( $cache_key, $value, 'site-options' );
                }
        }
@@ -1275,32 +1444,33 @@ function update_site_option( $option, $value ) {
        if ( $result ) {
 
                /**
-                * Fires after the value of a specific site option has been successfully updated.
+                * Fires after the value of a specific network option has been successfully updated.
                 *
                 * The dynamic portion of the hook name, `$option`, refers to the option name.
                 *
                 * @since 2.9.0 As "update_site_option_{$key}"
                 * @since 3.0.0
                 *
-                * @param string $option    Name of site option.
-                * @param mixed  $value     Current value of site option.
-                * @param mixed  $old_value Old value of site option.
+                * @param string $option    Name of the network option.
+                * @param mixed  $value     Current value of the network option.
+                * @param mixed  $old_value Old value of the network option.
                 */
-               do_action( "update_site_option_{$option}", $option, $value, $old_value );
+               do_action( 'update_site_option_' . $option, $option, $value, $old_value );
 
                /**
-                * Fires after the value of a site option has been successfully updated.
+                * Fires after the value of a network option has been successfully updated.
                 *
                 * @since 3.0.0
                 *
-                * @param string $option    Name of site option.
-                * @param mixed  $value     Current value of site option.
-                * @param mixed  $old_value Old value of site option.
+                * @param string $option    Name of the network option.
+                * @param mixed  $value     Current value of the network option.
+                * @param mixed  $old_value Old value of the network option.
                 */
-               do_action( "update_site_option", $option, $value, $old_value );
+               do_action( 'update_site_option', $option, $value, $old_value );
 
                return true;
        }
+
        return false;
 }
 
@@ -1373,12 +1543,14 @@ function get_site_transient( $transient ) {
         * returning the passed value instead.
         *
         * @since 2.9.0
+        * @since 4.4.0 The `$transient` parameter was added.
         *
-        * @param mixed $pre_site_transient The default value to return if the site transient does not exist.
-        *                                  Any value other than false will short-circuit the retrieval
-        *                                  of the transient, and return the returned value.
+        * @param mixed  $pre_site_transient The default value to return if the site transient does not exist.
+        *                                   Any value other than false will short-circuit the retrieval
+        *                                   of the transient, and return the returned value.
+        * @param string $transient          Transient name.
         */
-       $pre = apply_filters( 'pre_site_transient_' . $transient, false );
+       $pre = apply_filters( 'pre_site_transient_' . $transient, false, $transient );
 
        if ( false !== $pre )
                return $pre;
@@ -1409,10 +1581,12 @@ function get_site_transient( $transient ) {
         * The dynamic portion of the hook name, `$transient`, refers to the transient name.
         *
         * @since 2.9.0
+        * @since 4.4.0 The `$transient` parameter was added.
         *
-        * @param mixed $value Value of site transient.
+        * @param mixed  $value     Value of site transient.
+        * @param string $transient Transient name.
         */
-       return apply_filters( 'site_transient_' . $transient, $value );
+       return apply_filters( 'site_transient_' . $transient, $value, $transient );
 }
 
 /**
@@ -1428,7 +1602,7 @@ function get_site_transient( $transient ) {
  * @param string $transient  Transient name. Expected to not be SQL-escaped. Must be
  *                           40 characters or fewer in length.
  * @param mixed  $value      Transient value. Expected to not be SQL-escaped.
- * @param int    $expiration Optional. Time until expiration in seconds. Default 0.
+ * @param int    $expiration Optional. Time until expiration in seconds. Default 0 (no expiration).
  * @return bool False if value was not set and true if value was set.
  */
 function set_site_transient( $transient, $value, $expiration = 0 ) {
@@ -1439,13 +1613,28 @@ function set_site_transient( $transient, $value, $expiration = 0 ) {
         * The dynamic portion of the hook name, `$transient`, refers to the transient name.
         *
         * @since 3.0.0
+        * @since 4.4.0 The `$transient` parameter was added.
         *
-        * @param mixed $value Value of site transient.
+        * @param mixed  $value     New value of site transient.
+        * @param string $transient Transient name.
         */
-       $value = apply_filters( 'pre_set_site_transient_' . $transient, $value );
+       $value = apply_filters( 'pre_set_site_transient_' . $transient, $value, $transient );
 
        $expiration = (int) $expiration;
 
+       /**
+        * Filter the expiration for a site transient before its value is set.
+        *
+        * The dynamic portion of the hook name, `$transient`, refers to the transient name.
+        *
+        * @since 4.4.0
+        *
+        * @param int    $expiration Time until expiration in seconds. Use 0 for no expiration.
+        * @param mixed  $value      New value of site transient.
+        * @param string $transient  Transient name.
+        */
+       $expiration = apply_filters( 'expiration_of_site_transient_' . $transient, $expiration, $value, $transient );
+
        if ( wp_using_ext_object_cache() ) {
                $result = wp_cache_set( $transient, $value, 'site-transient', $expiration );
        } else {
@@ -1469,11 +1658,13 @@ function set_site_transient( $transient, $value, $expiration = 0 ) {
                 * The dynamic portion of the hook name, `$transient`, refers to the transient name.
                 *
                 * @since 3.0.0
+                * @since 4.4.0 The `$transient` parameter was added
                 *
-                * @param mixed $value      Site transient value.
-                * @param int   $expiration Time until expiration in seconds. Default 0.
+                * @param mixed  $value      Site transient value.
+                * @param int    $expiration Time until expiration in seconds.
+                * @param string $transient  Transient name.
                 */
-               do_action( 'set_site_transient_' . $transient, $value, $expiration );
+               do_action( 'set_site_transient_' . $transient, $value, $expiration, $transient );
 
                /**
                 * Fires after the value for a site transient has been set.
@@ -1482,7 +1673,7 @@ function set_site_transient( $transient, $value, $expiration = 0 ) {
                 *
                 * @param string $transient  The name of the site transient.
                 * @param mixed  $value      Site transient value.
-                * @param int    $expiration Time until expiration in seconds. Default 0.
+                * @param int    $expiration Time until expiration in seconds.
                 */
                do_action( 'setted_site_transient', $transient, $value, $expiration );
        }
index d9757ab405595d66c50349110bf10b0190783fd5..39fcd49d989c707ef85b2a54fb4821b6a3d0a6fd 100644 (file)
@@ -22,9 +22,8 @@ if ( !function_exists('set_current_user') ) :
  * Set $id to null and specify a name if you do not know a user's ID.
  *
  * @since 2.0.1
- * @see wp_set_current_user() An alias of wp_set_current_user()
- * @deprecated 3.0.0
- * @deprecated Use wp_set_current_user()
+ * @deprecated 3.0.0 Use wp_set_current_user()
+ * @see wp_set_current_user()
  *
  * @param int|null $id User ID.
  * @param string $name Optional. The user's username
@@ -41,8 +40,8 @@ if ( !function_exists('get_userdatabylogin') ) :
  * Retrieve user info by login name.
  *
  * @since 0.71
- * @deprecated 3.3.0
- * @deprecated Use get_user_by('login')
+ * @deprecated 3.3.0 Use get_user_by()
+ * @see get_user_by()
  *
  * @param string $user_login User's username
  * @return bool|object False on failure, User DB row object
@@ -58,8 +57,8 @@ if ( !function_exists('get_user_by_email') ) :
  * Retrieve user info by email.
  *
  * @since 2.5.0
- * @deprecated 3.3.0
- * @deprecated Use get_user_by('email')
+ * @deprecated 3.3.0 Use get_user_by()
+ * @see get_user_by()
  *
  * @param string $email User's email address
  * @return bool|object False on failure, User DB row object
@@ -75,8 +74,7 @@ if ( !function_exists('wp_setcookie') ) :
  * Sets a cookie for a user who just logged in. This function is deprecated.
  *
  * @since 1.5.0
- * @deprecated 2.5.0
- * @deprecated Use wp_set_auth_cookie()
+ * @deprecated 2.5.0 Use wp_set_auth_cookie()
  * @see wp_set_auth_cookie()
  *
  * @param string $username The user's username
@@ -100,8 +98,7 @@ if ( !function_exists('wp_clearcookie') ) :
  * Clears the authentication cookie, logging the user out. This function is deprecated.
  *
  * @since 1.5.0
- * @deprecated 2.5.0
- * @deprecated Use wp_clear_auth_cookie()
+ * @deprecated 2.5.0 Use wp_clear_auth_cookie()
  * @see wp_clear_auth_cookie()
  */
 function wp_clearcookie() {
@@ -121,7 +118,6 @@ if ( !function_exists('wp_get_cookie_login') ):
  *
  * @since 2.0.3
  * @deprecated 2.5.0
- * @deprecated No alternative
  *
  * @return bool Always returns false
  */
@@ -145,7 +141,9 @@ if ( !function_exists('wp_login') ) :
  * failure can utilize it later.
  *
  * @since 1.2.2
- * @deprecated Use wp_signon()
+ * @deprecated 2.5.0 Use wp_signon()
+ * @see wp_signon()
+ *
  * @global string $error Error when false is returned
  *
  * @param string $username   User's username
@@ -177,9 +175,10 @@ endif;
  *
  * @since 2.2.0
  * @deprecated 3.5.0
+ *
  * @link https://wordpress.org/plugins/atom-publishing-protocol/
  */
-if ( ! class_exists( 'wp_atom_server' ) ) {
+if ( ! class_exists( 'wp_atom_server', false ) ) {
        class wp_atom_server {
                public function __call( $name, $arguments ) {
                        _deprecated_function( __CLASS__ . '::' . $name, '3.5', 'the Atom Publishing Protocol plugin' );
index e41cbfe585183a51c520d68bb88731f18674165d..88d1440599cd1af83069d0e0cc8a8966d97f47ec 100644 (file)
@@ -26,8 +26,14 @@ if ( !function_exists('wp_set_current_user') ) :
 function wp_set_current_user($id, $name = '') {
        global $current_user;
 
-       if ( isset( $current_user ) && ( $current_user instanceof WP_User ) && ( $id == $current_user->ID ) )
+       // If `$id` matches the user who's already current, there's nothing to do.
+       if ( isset( $current_user )
+               && ( $current_user instanceof WP_User )
+               && ( $id == $current_user->ID )
+               && ( null !== $id )
+       ) {
                return $current_user;
+       }
 
        $current_user = new WP_User( $id, $name );
 
@@ -145,8 +151,9 @@ if ( !function_exists('get_user_by') ) :
  * Retrieve user info by a given field
  *
  * @since 2.8.0
+ * @since 4.4.0 Added 'ID' as an alias of 'id' for the `$field` parameter.
  *
- * @param string     $field The field to retrieve the user with. id | slug | email | login
+ * @param string     $field The field to retrieve the user with. id | ID | slug | email | login.
  * @param int|string $value A value for $field. A user ID, slug, email address, or login name.
  * @return WP_User|false WP_User object on success, false on failure.
  */
@@ -169,7 +176,7 @@ if ( !function_exists('cache_users') ) :
  *
  * @since 3.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param array $user_ids User ID numbers list
  */
@@ -502,7 +509,7 @@ function wp_mail( $to, $subject, $message, $headers = '', $attachments = array()
 
        // Set custom headers
        if ( !empty( $headers ) ) {
-               foreach( (array) $headers as $name => $content ) {
+               foreach ( (array) $headers as $name => $content ) {
                        $phpmailer->AddCustomHeader( sprintf( '%1$s: %2$s', $name, $content ) );
                }
 
@@ -533,6 +540,19 @@ function wp_mail( $to, $subject, $message, $headers = '', $attachments = array()
        try {
                return $phpmailer->Send();
        } catch ( phpmailerException $e ) {
+
+               $mail_error_data = compact( $to, $subject, $message, $headers, $attachments );
+
+               /**
+                * Fires after a phpmailerException is caught.
+                *
+                * @since 4.4.0
+                *
+                * @param WP_Error $error A WP_Error object with the phpmailerException code, message, and an array
+                *                        containing the mail recipient, subject, message, headers, and attachments.
+                */
+               do_action( 'wp_mail_failed', new WP_Error( $e->getCode(), $e->getMessage(), $mail_error_data ) );
+
                return false;
        }
 }
@@ -1139,13 +1159,6 @@ function check_ajax_referer( $action = -1, $query_arg = false, $die = true ) {
 
        $result = wp_verify_nonce( $nonce, $action );
 
-       if ( $die && false === $result ) {
-               if ( defined( 'DOING_AJAX' ) && DOING_AJAX )
-                       wp_die( -1 );
-               else
-                       die( '-1' );
-       }
-
        /**
         * Fires once the AJAX request has been validated or not.
         *
@@ -1157,6 +1170,14 @@ function check_ajax_referer( $action = -1, $query_arg = false, $die = true ) {
         */
        do_action( 'check_ajax_referer', $action, $result );
 
+       if ( $die && false === $result ) {
+               if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
+                       wp_die( -1 );
+               } else {
+                       die( '-1' );
+               }
+       }
+
        return $result;
 }
 endif;
@@ -1232,7 +1253,7 @@ function wp_sanitize_redirect($location) {
                ){1,40}                              # ...one or more times
                )/x';
        $location = preg_replace_callback( $regex, '_wp_sanitize_utf8_in_redirect', $location );
-       $location = preg_replace('|[^a-z0-9-~+_.?#=&;,/:%!*\[\]()]|i', '', $location);
+       $location = preg_replace('|[^a-z0-9-~+_.?#=&;,/:%!*\[\]()@]|i', '', $location);
        $location = wp_kses_no_null($location);
 
        // remove %0d and %0a from location
@@ -1351,8 +1372,8 @@ if ( ! function_exists('wp_notify_postauthor') ) :
  *
  * @since 1.0.0
  *
- * @param int    $comment_id Comment ID
- * @param string $deprecated Not used
+ * @param int|WP_Comment  $comment_id Comment ID or WP_Comment object.
+ * @param string          $deprecated Not used
  * @return bool True on completion. False if no email addresses were specified.
  */
 function wp_notify_postauthor( $comment_id, $deprecated = null ) {
@@ -1361,7 +1382,7 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) {
        }
 
        $comment = get_comment( $comment_id );
-       if ( empty( $comment ) )
+       if ( empty( $comment ) || empty( $comment->comment_post_ID ) )
                return false;
 
        $post    = get_post( $comment->comment_post_ID );
@@ -1384,7 +1405,7 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) {
         * @param array $emails     An array of email addresses to receive a comment notification.
         * @param int   $comment_id The comment ID.
         */
-       $emails = apply_filters( 'comment_notification_recipients', $emails, $comment_id );
+       $emails = apply_filters( 'comment_notification_recipients', $emails, $comment->comment_ID );
        $emails = array_filter( $emails );
 
        // If there are no addresses to send the comment to, bail.
@@ -1407,7 +1428,7 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) {
         *                         Default false.
         * @param int  $comment_id The comment ID.
         */
-       $notify_author = apply_filters( 'comment_notification_notify_author', false, $comment_id );
+       $notify_author = apply_filters( 'comment_notification_notify_author', false, $comment->comment_ID );
 
        // The comment was left by the author
        if ( $author && ! $notify_author && $comment->user_id == $post->post_author ) {
@@ -1436,6 +1457,7 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) {
        // The blogname option is escaped with esc_html on the way into the database in sanitize_option
        // we want to reverse this for the plain text arena of emails.
        $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
+       $comment_content = wp_specialchars_decode( $comment->comment_content );
 
        switch ( $comment->comment_type ) {
                case 'trackback':
@@ -1443,7 +1465,7 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) {
                        /* translators: 1: website name, 2: website IP, 3: website hostname */
                        $notify_message .= sprintf( __('Website: %1$s (IP: %2$s, %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
                        $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n";
-                       $notify_message .= sprintf( __( 'Comment: %s' ), "\r\n" . $comment->comment_content ) . "\r\n\r\n";
+                       $notify_message .= sprintf( __( 'Comment: %s' ), "\r\n" . $comment_content ) . "\r\n\r\n";
                        $notify_message .= __( 'You can see all trackbacks on this post here:' ) . "\r\n";
                        /* translators: 1: blog name, 2: post title */
                        $subject = sprintf( __('[%1$s] Trackback: "%2$s"'), $blogname, $post->post_title );
@@ -1453,7 +1475,7 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) {
                        /* translators: 1: website name, 2: website IP, 3: website hostname */
                        $notify_message .= sprintf( __('Website: %1$s (IP: %2$s, %3$s)'), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
                        $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n";
-                       $notify_message .= sprintf( __( 'Comment: %s' ), "\r\n" . $comment->comment_content ) . "\r\n\r\n";
+                       $notify_message .= sprintf( __( 'Comment: %s' ), "\r\n" . $comment_content ) . "\r\n\r\n";
                        $notify_message .= __( 'You can see all pingbacks on this post here:' ) . "\r\n";
                        /* translators: 1: blog name, 2: post title */
                        $subject = sprintf( __('[%1$s] Pingback: "%2$s"'), $blogname, $post->post_title );
@@ -1462,23 +1484,24 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) {
                        $notify_message  = sprintf( __( 'New comment on your post "%s"' ), $post->post_title ) . "\r\n";
                        /* translators: 1: comment author, 2: author IP, 3: author domain */
                        $notify_message .= sprintf( __( 'Author: %1$s (IP: %2$s, %3$s)' ), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
-                       $notify_message .= sprintf( __( 'E-mail: %s' ), $comment->comment_author_email ) . "\r\n";
+                       $notify_message .= sprintf( __( 'Email: %s' ), $comment->comment_author_email ) . "\r\n";
                        $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n";
-                       $notify_message .= sprintf( __('Comment: %s' ), "\r\n" . $comment->comment_content ) . "\r\n\r\n";
+                       $notify_message .= sprintf( __('Comment: %s' ), "\r\n" . $comment_content ) . "\r\n\r\n";
                        $notify_message .= __( 'You can see all comments on this post here:' ) . "\r\n";
                        /* translators: 1: blog name, 2: post title */
                        $subject = sprintf( __('[%1$s] Comment: "%2$s"'), $blogname, $post->post_title );
                        break;
        }
        $notify_message .= get_permalink($comment->comment_post_ID) . "#comments\r\n\r\n";
-       $notify_message .= sprintf( __('Permalink: %s'), get_comment_link( $comment_id ) ) . "\r\n";
+       $notify_message .= sprintf( __('Permalink: %s'), get_comment_link( $comment ) ) . "\r\n";
 
-       if ( user_can( $post->post_author, 'edit_comment', $comment_id ) ) {
-               if ( EMPTY_TRASH_DAYS )
-                       $notify_message .= sprintf( __('Trash it: %s'), admin_url("comment.php?action=trash&c=$comment_id") ) . "\r\n";
-               else
-                       $notify_message .= sprintf( __('Delete it: %s'), admin_url("comment.php?action=delete&c=$comment_id") ) . "\r\n";
-               $notify_message .= sprintf( __('Spam it: %s'), admin_url("comment.php?action=spam&c=$comment_id") ) . "\r\n";
+       if ( user_can( $post->post_author, 'edit_comment', $comment->comment_ID ) ) {
+               if ( EMPTY_TRASH_DAYS ) {
+                       $notify_message .= sprintf( __('Trash it: %s'), admin_url("comment.php?action=trash&c={$comment->comment_ID}") ) . "\r\n";
+               } else {
+                       $notify_message .= sprintf( __('Delete it: %s'), admin_url("comment.php?action=delete&c={$comment->comment_ID}") ) . "\r\n";
+               }
+               $notify_message .= sprintf( __('Spam it: %s'), admin_url("comment.php?action=spam&c={$comment->comment_ID}") ) . "\r\n";
        }
 
        $wp_email = 'wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));
@@ -1507,7 +1530,7 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) {
         * @param string $notify_message The comment notification email text.
         * @param int    $comment_id     Comment ID.
         */
-       $notify_message = apply_filters( 'comment_notification_text', $notify_message, $comment_id );
+       $notify_message = apply_filters( 'comment_notification_text', $notify_message, $comment->comment_ID );
 
        /**
         * Filter the comment notification email subject.
@@ -1517,7 +1540,7 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) {
         * @param string $subject    The comment notification email subject.
         * @param int    $comment_id Comment ID.
         */
-       $subject = apply_filters( 'comment_notification_subject', $subject, $comment_id );
+       $subject = apply_filters( 'comment_notification_subject', $subject, $comment->comment_ID );
 
        /**
         * Filter the comment notification email headers.
@@ -1527,7 +1550,7 @@ function wp_notify_postauthor( $comment_id, $deprecated = null ) {
         * @param string $message_headers Headers for the comment notification email.
         * @param int    $comment_id      Comment ID.
         */
-       $message_headers = apply_filters( 'comment_notification_headers', $message_headers, $comment_id );
+       $message_headers = apply_filters( 'comment_notification_headers', $message_headers, $comment->comment_ID );
 
        foreach ( $emails as $email ) {
                @wp_mail( $email, wp_specialchars_decode( $subject ), $notify_message, $message_headers );
@@ -1539,20 +1562,36 @@ endif;
 
 if ( !function_exists('wp_notify_moderator') ) :
 /**
- * Notifies the moderator of the blog about a new comment that is awaiting approval.
+ * Notifies the moderator of the site about a new comment that is awaiting approval.
  *
  * @since 1.0.0
  *
  * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param int $comment_id Comment ID
- * @return true Always returns true
+ * Uses the {@see 'notify_moderator'} filter to determine whether the site moderator
+ * should be notified, overriding the site setting.
+ *
+ * @param int $comment_id Comment ID.
+ * @return true Always returns true.
  */
 function wp_notify_moderator($comment_id) {
        global $wpdb;
 
-       if ( 0 == get_option( 'moderation_notify' ) )
+       $maybe_notify = get_option( 'moderation_notify' );
+
+       /**
+        * Filter whether to send the site moderator email notifications, overriding the site setting.
+        *
+        * @since 4.4.0
+        *
+        * @param bool $maybe_notify Whether to notify blog moderator.
+        * @param int  $comment_ID   The id of the comment for the notification.
+        */
+       $maybe_notify = apply_filters( 'notify_moderator', $maybe_notify, $comment_id );
+
+       if ( ! $maybe_notify ) {
                return true;
+       }
 
        $comment = get_comment($comment_id);
        $post = get_post($comment->comment_post_ID);
@@ -1570,6 +1609,7 @@ function wp_notify_moderator($comment_id) {
        // The blogname option is escaped with esc_html on the way into the database in sanitize_option
        // we want to reverse this for the plain text arena of emails.
        $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
+       $comment_content = wp_specialchars_decode( $comment->comment_content );
 
        switch ( $comment->comment_type ) {
                case 'trackback':
@@ -1578,7 +1618,7 @@ function wp_notify_moderator($comment_id) {
                        /* translators: 1: website name, 2: website IP, 3: website hostname */
                        $notify_message .= sprintf( __( 'Website: %1$s (IP: %2$s, %3$s)' ), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
                        $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n";
-                       $notify_message .= __('Trackback excerpt: ') . "\r\n" . $comment->comment_content . "\r\n\r\n";
+                       $notify_message .= __('Trackback excerpt: ') . "\r\n" . $comment_content . "\r\n\r\n";
                        break;
                case 'pingback':
                        $notify_message  = sprintf( __('A new pingback on the post "%s" is waiting for your approval'), $post->post_title ) . "\r\n";
@@ -1586,15 +1626,15 @@ function wp_notify_moderator($comment_id) {
                        /* translators: 1: website name, 2: website IP, 3: website hostname */
                        $notify_message .= sprintf( __( 'Website: %1$s (IP: %2$s, %3$s)' ), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
                        $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n";
-                       $notify_message .= __('Pingback excerpt: ') . "\r\n" . $comment->comment_content . "\r\n\r\n";
+                       $notify_message .= __('Pingback excerpt: ') . "\r\n" . $comment_content . "\r\n\r\n";
                        break;
                default: // Comments
                        $notify_message  = sprintf( __('A new comment on the post "%s" is waiting for your approval'), $post->post_title ) . "\r\n";
                        $notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n";
                        $notify_message .= sprintf( __( 'Author: %1$s (IP: %2$s, %3$s)' ), $comment->comment_author, $comment->comment_author_IP, $comment_author_domain ) . "\r\n";
-                       $notify_message .= sprintf( __( 'E-mail: %s' ), $comment->comment_author_email ) . "\r\n";
+                       $notify_message .= sprintf( __( 'Email: %s' ), $comment->comment_author_email ) . "\r\n";
                        $notify_message .= sprintf( __( 'URL: %s' ), $comment->comment_author_url ) . "\r\n";
-                       $notify_message .= sprintf( __( 'Comment: %s' ), "\r\n" . $comment->comment_content ) . "\r\n\r\n";
+                       $notify_message .= sprintf( __( 'Comment: %s' ), "\r\n" . $comment_content ) . "\r\n\r\n";
                        break;
        }
 
@@ -1666,9 +1706,9 @@ if ( !function_exists('wp_password_change_notification') ) :
  *
  * @since 2.7.0
  *
- * @param object $user User Object
+ * @param WP_User $user User object.
  */
-function wp_password_change_notification(&$user) {
+function wp_password_change_notification( $user ) {
        // send a copy of password change notification to the admin
        // but check to see if it's the admin whose password we're changing, and skip this
        if ( 0 !== strcasecmp( $user->user_email, get_option( 'admin_email' ) ) ) {
@@ -1697,8 +1737,7 @@ if ( !function_exists('wp_new_user_notification') ) :
  * @param int    $user_id    User ID.
  * @param null   $deprecated Not used (argument deprecated).
  * @param string $notify     Optional. Type of notification that should happen. Accepts 'admin' or an empty
- *                           string (admin only), or 'both' (admin and user). The empty string value was kept
- *                           for backward-compatibility purposes with the renamed parameter. Default empty.
+ *                           string (admin only), or 'both' (admin and user). Default empty.
  */
 function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' ) {
        if ( $deprecated !== null ) {
@@ -1714,11 +1753,12 @@ function wp_new_user_notification( $user_id, $deprecated = null, $notify = '' )
 
        $message  = sprintf(__('New user registration on your site %s:'), $blogname) . "\r\n\r\n";
        $message .= sprintf(__('Username: %s'), $user->user_login) . "\r\n\r\n";
-       $message .= sprintf(__('E-mail: %s'), $user->user_email) . "\r\n";
+       $message .= sprintf(__('Email: %s'), $user->user_email) . "\r\n";
 
        @wp_mail(get_option('admin_email'), sprintf(__('[%s] New User Registration'), $blogname), $message);
 
-       if ( 'admin' === $notify || empty( $notify ) ) {
+       // `$deprecated was pre-4.3 `$plaintext_pass`. An empty `$plaintext_pass` didn't sent a user notifcation.
+       if ( 'admin' === $notify || ( empty( $deprecated ) && empty( $notify ) ) ) {
                return;
        }
 
@@ -1820,6 +1860,18 @@ function wp_verify_nonce( $nonce, $action = -1 ) {
                return 2;
        }
 
+       /**
+        * Fires when nonce verification fails.
+        *
+        * @since 4.4.0
+        *
+        * @param string     $nonce  The invalid nonce.
+        * @param string|int $action The nonce action.
+        * @param WP_User    $user   The current user object.
+        * @param string     $token  The user's session token.
+        */
+       do_action( 'wp_verify_nonce_failed', $nonce, $action, $user, $token );
+
        // Invalid nonce
        return false;
 }
@@ -1827,9 +1879,11 @@ endif;
 
 if ( !function_exists('wp_create_nonce') ) :
 /**
- * Creates a cryptographic token tied to a specific action, user, and window of time.
+ * Creates a cryptographic token tied to a specific action, user, user session,
+ * and window of time.
  *
  * @since 2.0.3
+ * @since 4.0.0 Session tokens were integrated with nonce creation
  *
  * @param string|int $action Scalar value to add context to the nonce.
  * @return string The token.
@@ -2102,9 +2156,11 @@ if ( !function_exists('wp_rand') ) :
  * Generates a random number
  *
  * @since 2.6.2
+ * @since 4.4.0 Uses PHP7 random_int() or the random_compat library if available.
  *
  * @global string $rnd_value
  * @staticvar string $seed
+ * @staticvar bool $external_rand_source_available
  *
  * @param int $min Lower limit for the generated number
  * @param int $max Upper limit for the generated number
@@ -2113,6 +2169,34 @@ if ( !function_exists('wp_rand') ) :
 function wp_rand( $min = 0, $max = 0 ) {
        global $rnd_value;
 
+       // Some misconfigured 32bit environments (Entropy PHP, for example) truncate integers larger than PHP_INT_MAX to PHP_INT_MAX rather than overflowing them to floats.
+       $max_random_number = 3000000000 === 2147483647 ? (float) "4294967295" : 4294967295; // 4294967295 = 0xffffffff
+
+       // We only handle Ints, floats are truncated to their integer value.
+       $min = (int) $min;
+       $max = (int) $max;
+
+       // Use PHP's CSPRNG, or a compatible method
+       static $use_random_int_functionality = true;
+       if ( $use_random_int_functionality ) {
+               try {
+                       $_max = ( 0 != $max ) ? $max : $max_random_number;
+                       // wp_rand() can accept arguements in either order, PHP cannot.
+                       $_max = max( $min, $_max );
+                       $_min = min( $min, $_max );
+                       $val = random_int( $_min, $_max );
+                       if ( false !== $val ) {
+                               return absint( $val );
+                       } else {
+                               $use_random_int_functionality = false;
+                       }
+               } catch ( Error $e ) {
+                       $use_random_int_functionality = false;
+               } catch ( Exception $e ) {
+                       $use_random_int_functionality = false;
+               }
+       }
+
        // Reset $rnd_value after 14 uses
        // 32(md5) + 40(sha1) + 40(sha1) / 8 = 14 random numbers from $rnd_value
        if ( strlen($rnd_value) < 8 ) {
@@ -2137,9 +2221,6 @@ function wp_rand( $min = 0, $max = 0 ) {
 
        $value = abs(hexdec($value));
 
-       // Some misconfigured 32bit environments (Entropy PHP, for example) truncate integers larger than PHP_INT_MAX to PHP_INT_MAX rather than overflowing them to floats.
-       $max_random_number = 3000000000 === 2147483647 ? (float) "4294967295" : 4294967295; // 4294967295 = 0xffffffff
-
        // Reduce the value to be within the min - max range
        if ( $max != 0 )
                $value = $min + ( $max - $min + 1 ) * $value / ( $max_random_number + 1 );
@@ -2184,12 +2265,12 @@ if ( !function_exists( 'get_avatar' ) ) :
  * @since 4.2.0 Optional `$args` parameter added.
  *
  * @param mixed $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
- *                           user email, WP_User object, WP_Post object, or comment object.
+ *                           user email, WP_User object, WP_Post object, or WP_Comment object.
  * @param int    $size       Optional. Height and width of the avatar image file in pixels. Default 96.
  * @param string $default    Optional. URL for the default image or a default type. Accepts '404'
  *                           (return a 404 instead of a default image), 'retro' (8bit), 'monsterid'
  *                           (monster), 'wavatar' (cartoon face), 'indenticon' (the "quilt"),
- *                           'mystery', 'mm', or 'mysterman' (The Oyster Man), 'blank' (transparent GIF),
+ *                           'mystery', 'mm', or 'mysteryman' (The Oyster Man), 'blank' (transparent GIF),
  *                           or 'gravatar_default' (the Gravatar logo). Default is the value of the
  *                           'avatar_default' option, with a fallback of 'mystery'.
  * @param string $alt        Optional. Alternative text to use in &lt;img&gt; tag. Default empty.
@@ -2244,6 +2325,10 @@ function get_avatar( $id_or_email, $size = 96, $default = '', $alt = '', $args =
                $args['width'] = $args['size'];
        }
 
+       if ( is_object( $id_or_email ) && isset( $id_or_email->comment_ID ) ) {
+               $id_or_email = get_comment( $id_or_email );
+       }
+
        /**
         * Filter whether to retrieve the avatar URL early.
         *
@@ -2252,9 +2337,10 @@ function get_avatar( $id_or_email, $size = 96, $default = '', $alt = '', $args =
         *
         * @since 4.2.0
         *
-        * @param string            $avatar      HTML for the user's avatar. Default null.
-        * @param int|object|string $id_or_email A user ID, email address, or comment object.
-        * @param array             $args        Arguments passed to get_avatar_url(), after processing.
+        * @param string $avatar      HTML for the user's avatar. Default null.
+        * @param mixed  $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
+        *                            user email, WP_User object, WP_Post object, or WP_Comment object.
+        * @param array  $args        Arguments passed to get_avatar_url(), after processing.
         */
        $avatar = apply_filters( 'pre_get_avatar', null, $id_or_email, $args );
 
@@ -2308,12 +2394,13 @@ function get_avatar( $id_or_email, $size = 96, $default = '', $alt = '', $args =
         * @since 2.5.0
         * @since 4.2.0 The `$args` parameter was added.
         *
-        * @param string            $avatar      &lt;img&gt; tag for the user's avatar.
-        * @param int|object|string $id_or_email A user ID, email address, or comment object.
-        * @param int               $size        Square avatar width and height in pixels to retrieve.
-        * @param string            $alt         Alternative text to use in the avatar image tag.
+        * @param string $avatar      &lt;img&gt; tag for the user's avatar.
+        * @param mixed  $id_or_email The Gravatar to retrieve. Accepts a user_id, gravatar md5 hash,
+        *                            user email, WP_User object, WP_Post object, or WP_Comment object.
+        * @param int    $size        Square avatar width and height in pixels to retrieve.
+        * @param string $alt         Alternative text to use in the avatar image tag.
         *                                       Default empty.
-        * @param array             $args        Arguments passed to get_avatar_data(), after processing.
+        * @param array  $args        Arguments passed to get_avatar_data(), after processing.
         */
        return apply_filters( 'get_avatar', $avatar, $id_or_email, $args['size'], $args['default'], $args['alt'], $args );
 }
@@ -2351,7 +2438,7 @@ function wp_text_diff( $left_string, $right_string, $args = null ) {
        $defaults = array( 'title' => '', 'title_left' => '', 'title_right' => '' );
        $args = wp_parse_args( $args, $defaults );
 
-       if ( !class_exists( 'WP_Text_Diff_Renderer_Table' ) )
+       if ( ! class_exists( 'WP_Text_Diff_Renderer_Table', false ) )
                require( ABSPATH . WPINC . '/wp-diff.php' );
 
        $left_string  = normalize_whitespace($left_string);
index 0042c5bb60e913c956a3bffc84c5b48903397097..1ec2497ef352775fd8448db40abc493b60f4da62 100644 (file)
@@ -54,13 +54,35 @@ if ( ! isset( $wp_current_filter ) )
  *     }
  *     add_filter( 'example_filter', 'example_callback' );
  *
- * Since WordPress 1.5.1, bound callbacks can take as many arguments as are
- * passed as parameters in the corresponding apply_filters() call. The `$accepted_args`
- * parameter allows for calling functions only when the number of args match.
+ * Bound callbacks can accept from none to the total number of arguments passed as parameters
+ * in the corresponding apply_filters() call.
+ *
+ * In other words, if an apply_filters() call passes four total arguments, callbacks bound to
+ * it can accept none (the same as 1) of the arguments or up to four. The important part is that
+ * the `$accepted_args` value must reflect the number of arguments the bound callback *actually*
+ * opted to accept. If no arguments were accepted by the callback that is considered to be the
+ * same as accepting 1 argument. For example:
+ *
+ *     // Filter call.
+ *     $value = apply_filters( 'hook', $value, $arg2, $arg3 );
+ *
+ *     // Accepting zero/one arguments.
+ *     function example_callback() {
+ *         ...
+ *         return 'some value';
+ *     }
+ *     add_filter( 'hook', 'example_callback' ); // Where $priority is default 10, $accepted_args is default 1.
+ *
+ *     // Accepting two arguments (three possible).
+ *     function example_callback( $value, $arg2 ) {
+ *         ...
+ *         return $maybe_modified_value;
+ *     }
+ *     add_filter( 'hook', 'example_callback', 10, 2 ); // Where $priority is 10, $accepted_args is 2.
  *
- * *Note:* the function will return true whether or not the callback is valid.
- * It is up to you to take care. This is done for optimization purposes,
- * so everything is as quick as possible.
+ * *Note:* The function will return true whether or not the callback is valid.
+ * It is up to you to take care. This is done for optimization purposes, so
+ * everything is as quick as possible.
  *
  * @since 0.71
  *
@@ -69,7 +91,7 @@ if ( ! isset( $wp_current_filter ) )
  *                               it doesn't need to run through that process.
  *
  * @param string   $tag             The name of the filter to hook the $function_to_add callback to.
- * @param callback $function_to_add The callback to be run when the filter is applied.
+ * @param callable $function_to_add The callback to be run when the filter is applied.
  * @param int      $priority        Optional. Used to specify the order in which the functions
  *                                  associated with a particular action are executed. Default 10.
  *                                  Lower numbers correspond with earlier execution,
@@ -95,7 +117,7 @@ function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1
  * @global array $wp_filter Stores all of the filters.
  *
  * @param string        $tag               The name of the filter hook.
- * @param callback|bool $function_to_check Optional. The callback to check for. Default false.
+ * @param callable|bool $function_to_check Optional. The callback to check for. Default false.
  * @return false|int If $function_to_check is omitted, returns boolean for whether the hook has
  *                   anything registered. When checking a specific function, the priority of that
  *                   hook is returned, or false if the function is not attached. When using the
@@ -207,7 +229,7 @@ function apply_filters( $tag, $value ) {
                $args = func_get_args();
 
        do {
-               foreach( (array) current($wp_filter[$tag]) as $the_ )
+               foreach ( (array) current($wp_filter[$tag]) as $the_ )
                        if ( !is_null($the_['function']) ){
                                $args[1] = $value;
                                $value = call_user_func_array($the_['function'], array_slice($args, 1, (int) $the_['accepted_args']));
@@ -264,7 +286,7 @@ function apply_filters_ref_array($tag, $args) {
        reset( $wp_filter[ $tag ] );
 
        do {
-               foreach( (array) current($wp_filter[$tag]) as $the_ )
+               foreach ( (array) current($wp_filter[$tag]) as $the_ )
                        if ( !is_null($the_['function']) )
                                $args[0] = call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));
 
@@ -292,7 +314,7 @@ function apply_filters_ref_array($tag, $args) {
  * @global array $merged_filters    Merges the filter hooks using this function.
  *
  * @param string   $tag                The filter hook to which the function to be removed is hooked.
- * @param callback $function_to_remove The name of the function which should be removed.
+ * @param callable $function_to_remove The name of the function which should be removed.
  * @param int      $priority           Optional. The priority of the function. Default 10.
  * @return bool    Whether the function existed before it was removed.
  */
@@ -423,7 +445,7 @@ function doing_action( $action = null ) {
  * @since 1.2.0
  *
  * @param string   $tag             The name of the action to which the $function_to_add is hooked.
- * @param callback $function_to_add The name of the function you wish to be called.
+ * @param callable $function_to_add The name of the function you wish to be called.
  * @param int      $priority        Optional. Used to specify the order in which the functions
  *                                  associated with a particular action are executed. Default 10.
  *                                  Lower numbers correspond with earlier execution,
@@ -574,7 +596,7 @@ function do_action_ref_array($tag, $args) {
        reset( $wp_filter[ $tag ] );
 
        do {
-               foreach( (array) current($wp_filter[$tag]) as $the_ )
+               foreach ( (array) current($wp_filter[$tag]) as $the_ )
                        if ( !is_null($the_['function']) )
                                call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));
 
@@ -591,7 +613,7 @@ function do_action_ref_array($tag, $args) {
  * @see has_filter() has_action() is an alias of has_filter().
  *
  * @param string        $tag               The name of the action hook.
- * @param callback|bool $function_to_check Optional. The callback to check for. Default false.
+ * @param callable|bool $function_to_check Optional. The callback to check for. Default false.
  * @return bool|int If $function_to_check is omitted, returns boolean for whether the hook has
  *                  anything registered. When checking a specific function, the priority of that
  *                  hook is returned, or false if the function is not attached. When using the
@@ -613,7 +635,7 @@ function has_action($tag, $function_to_check = false) {
  * @since 1.2.0
  *
  * @param string   $tag                The action hook to which the function to be removed is hooked.
- * @param callback $function_to_remove The name of the function which should be removed.
+ * @param callable $function_to_remove The name of the function which should be removed.
  * @param int      $priority           Optional. The priority of the function. Default 10.
  * @return bool Whether the function is removed.
  */
@@ -749,7 +771,7 @@ function plugin_dir_url( $file ) {
  * @since 2.0.0
  *
  * @param string   $file     The filename of the plugin including the path.
- * @param callback $function The function hooked to the 'activate_PLUGIN' action.
+ * @param callable $function The function hooked to the 'activate_PLUGIN' action.
  */
 function register_activation_hook($file, $function) {
        $file = plugin_basename($file);
@@ -772,7 +794,7 @@ function register_activation_hook($file, $function) {
  * @since 2.0.0
  *
  * @param string   $file     The filename of the plugin including the path.
- * @param callback $function The function hooked to the 'deactivate_PLUGIN' action.
+ * @param callable $function The function hooked to the 'deactivate_PLUGIN' action.
  */
 function register_deactivation_hook($file, $function) {
        $file = plugin_basename($file);
@@ -802,7 +824,7 @@ function register_deactivation_hook($file, $function) {
  * @since 2.7.0
  *
  * @param string   $file     Plugin file.
- * @param callback $callback The callback to run when the hook is called. Must be
+ * @param callable $callback The callback to run when the hook is called. Must be
  *                           a static method or function.
  */
 function register_uninstall_hook( $file, $callback ) {
@@ -845,7 +867,7 @@ function _wp_call_all_hook($args) {
 
        reset( $wp_filter['all'] );
        do {
-               foreach( (array) current($wp_filter['all']) as $the_ )
+               foreach ( (array) current($wp_filter['all']) as $the_ )
                        if ( !is_null($the_['function']) )
                                call_user_func_array($the_['function'], $args);
 
@@ -878,7 +900,7 @@ function _wp_call_all_hook($args) {
  * @staticvar int $filter_id_count
  *
  * @param string   $tag      Used in counting how many hooks were applied
- * @param callback $function Used for creating unique id
+ * @param callable $function Used for creating unique id
  * @param int|bool $priority Used in counting how many hooks were applied. If === false
  *                           and $function is an object reference, we return the unique
  *                           id only if it already has one, false otherwise.
index ca706fca16c4022d37ff4b166acb1807f90a25b5..788092ba4b5f4fdce639459e31952d700fbd77d1 100644 (file)
@@ -2,12 +2,12 @@
 /**
  * Contains Translation_Entry class
  *
- * @version $Id: entry.php 718 2012-10-31 00:32:02Z nbachiyski $
+ * @version $Id: entry.php 1157 2015-11-20 04:30:11Z dd32 $
  * @package pomo
  * @subpackage entry
  */
 
-if ( !class_exists( 'Translation_Entry' ) ):
+if ( ! class_exists( 'Translation_Entry', false ) ):
 /**
  * Translation_Entry class encapsulates a translatable string
  */
@@ -49,7 +49,7 @@ class Translation_Entry {
                foreach ($args as $varname => $value) {
                        $this->$varname = $value;
                }
-               if (isset($args['plural'])) $this->is_plural = true;
+               if (isset($args['plural']) && $args['plural']) $this->is_plural = true;
                if (!is_array($this->translations)) $this->translations = array();
                if (!is_array($this->references)) $this->references = array();
                if (!is_array($this->flags)) $this->flags = array();
@@ -68,9 +68,14 @@ class Translation_Entry {
         * @return string|bool the key or false if the entry is empty
         */
        function key() {
-               if (is_null($this->singular)) return false;
-               // prepend context and EOT, like in MO files
-               return is_null($this->context)? $this->singular : $this->context.chr(4).$this->singular;
+               if ( null === $this->singular || '' === $this->singular ) return false;
+
+               // Prepend context and EOT, like in MO files
+               $key = !$this->context? $this->singular : $this->context.chr(4).$this->singular;
+               // Standardize on \n line endings
+               $key = str_replace( array( "\r\n", "\r" ), "\n", $key );
+
+               return $key;
        }
 
        /**
index 1757061960f6ebfc59fb7f15cdd18f2428a82292..6bc44d614d69c899078889a62f8035ae44f8131e 100644 (file)
@@ -2,7 +2,7 @@
 /**
  * Class for working with MO files
  *
- * @version $Id: mo.php 718 2012-10-31 00:32:02Z nbachiyski $
+ * @version $Id: mo.php 1157 2015-11-20 04:30:11Z dd32 $
  * @package pomo
  * @subpackage mo
  */
@@ -10,7 +10,7 @@
 require_once dirname(__FILE__) . '/translations.php';
 require_once dirname(__FILE__) . '/streams.php';
 
-if ( !class_exists( 'MO' ) ):
+if ( ! class_exists( 'MO', false ) ):
 class MO extends Gettext_Translations {
 
        var $_nplurals = 2;
@@ -124,7 +124,7 @@ class MO extends Gettext_Translations {
                //TODO: warnings for control characters
                $exported = $entry->singular;
                if ($entry->is_plural) $exported .= chr(0).$entry->plural;
-               if (!is_null($entry->context)) $exported = $entry->context . chr(4) . $exported;
+               if ($entry->context) $exported = $entry->context . chr(4) . $exported;
                return $exported;
        }
 
@@ -134,7 +134,7 @@ class MO extends Gettext_Translations {
         */
        function export_translations($entry) {
                //TODO: warnings for control characters
-               return implode(chr(0), $entry->translations);
+               return $entry->is_plural ? implode(chr(0), $entry->translations) : $entry->translations[0];
        }
 
        /**
index 381977c5cfd7525c88f3f36505d635881dca72a3..65d65ff39eb1640594432d1d7af22d0240e5e336 100644 (file)
@@ -2,21 +2,23 @@
 /**
  * Class for working with PO files
  *
- * @version $Id: po.php 718 2012-10-31 00:32:02Z nbachiyski $
+ * @version $Id: po.php 1158 2015-11-20 04:31:23Z dd32 $
  * @package pomo
  * @subpackage po
  */
 
 require_once dirname(__FILE__) . '/translations.php';
 
-define('PO_MAX_LINE_LEN', 79);
+if ( ! defined( 'PO_MAX_LINE_LEN' ) ) {
+       define('PO_MAX_LINE_LEN', 79);
+}
 
 ini_set('auto_detect_line_endings', 1);
 
 /**
  * Routines for working with PO files
  */
-if ( !class_exists( 'PO' ) ):
+if ( ! class_exists( 'PO', false ) ):
 class PO extends Gettext_Translations {
 
        var $comments_before_headers = '';
@@ -97,7 +99,7 @@ class PO extends Gettext_Translations {
         * @param string $string the string to format
         * @return string the poified string
         */
-       function poify($string) {
+       public static function poify($string) {
                $quote = '"';
                $slash = '\\';
                $newline = "\n";
@@ -128,8 +130,8 @@ class PO extends Gettext_Translations {
         * @param string $string PO-formatted string
         * @return string enascaped string
         */
-       function unpoify($string) {
-               $escapes = array('t' => "\t", 'n' => "\n", '\\' => '\\');
+       public static function unpoify($string) {
+               $escapes = array('t' => "\t", 'n' => "\n", 'r' => "\r", '\\' => '\\');
                $lines = array_map('trim', explode("\n", $string));
                $lines = array_map(array('PO', 'trim_quotes'), $lines);
                $unpoified = '';
@@ -149,6 +151,10 @@ class PO extends Gettext_Translations {
                                }
                        }
                }
+
+               // Standardise the line endings on imported content, technically PO files shouldn't contain \r
+               $unpoified = str_replace( array( "\r\n", "\r" ), "\n", $unpoified );
+
                return $unpoified;
        }
 
@@ -160,7 +166,7 @@ class PO extends Gettext_Translations {
         * @param string $string prepend lines in this string
         * @param string $with prepend lines with this string
         */
-       function prepend_each_line($string, $with) {
+       public static function prepend_each_line($string, $with) {
                $php_with = var_export($with, true);
                $lines = explode("\n", $string);
                // do not prepend the string on the last empty line, artefact by explode
@@ -180,7 +186,7 @@ class PO extends Gettext_Translations {
         * @param string $char character to denote a special PO comment,
         *      like :, default is a space
         */
-       function comment_block($text, $char=' ') {
+       public static function comment_block($text, $char=' ') {
                $text = wordwrap($text, PO_MAX_LINE_LEN - 3);
                return PO::prepend_each_line($text, "#$char ");
        }
@@ -193,28 +199,59 @@ class PO extends Gettext_Translations {
         * @return false|string PO-style formatted string for the entry or
         *      false if the entry is empty
         */
-       function export_entry(&$entry) {
-               if (is_null($entry->singular)) return false;
+       public static function export_entry(&$entry) {
+               if ( null === $entry->singular || '' === $entry->singular ) return false;
                $po = array();
                if (!empty($entry->translator_comments)) $po[] = PO::comment_block($entry->translator_comments);
                if (!empty($entry->extracted_comments)) $po[] = PO::comment_block($entry->extracted_comments, '.');
                if (!empty($entry->references)) $po[] = PO::comment_block(implode(' ', $entry->references), ':');
                if (!empty($entry->flags)) $po[] = PO::comment_block(implode(", ", $entry->flags), ',');
-               if (!is_null($entry->context)) $po[] = 'msgctxt '.PO::poify($entry->context);
+               if ($entry->context) $po[] = 'msgctxt '.PO::poify($entry->context);
                $po[] = 'msgid '.PO::poify($entry->singular);
                if (!$entry->is_plural) {
                        $translation = empty($entry->translations)? '' : $entry->translations[0];
+                       $translation = PO::match_begin_and_end_newlines( $translation, $entry->singular );
                        $po[] = 'msgstr '.PO::poify($translation);
                } else {
                        $po[] = 'msgid_plural '.PO::poify($entry->plural);
                        $translations = empty($entry->translations)? array('', '') : $entry->translations;
                        foreach($translations as $i => $translation) {
+                               $translation = PO::match_begin_and_end_newlines( $translation, $entry->plural );
                                $po[] = "msgstr[$i] ".PO::poify($translation);
                        }
                }
                return implode("\n", $po);
        }
 
+       public static function match_begin_and_end_newlines( $translation, $original ) {
+               if ( '' === $translation ) {
+                       return $translation;
+               }
+
+               $original_begin = "\n" === substr( $original, 0, 1 );
+               $original_end = "\n" === substr( $original, -1 );
+               $translation_begin = "\n" === substr( $translation, 0, 1 );
+               $translation_end = "\n" === substr( $translation, -1 );
+
+               if ( $original_begin ) {
+                       if ( ! $translation_begin ) {
+                               $translation = "\n" . $translation;
+                       }
+               } elseif ( $translation_begin ) {
+                       $translation = ltrim( $translation, "\n" );
+               }
+
+               if ( $original_end ) {
+                       if ( ! $translation_end ) {
+                               $translation .= "\n";
+                       }
+               } elseif ( $translation_end ) {
+                       $translation = rtrim( $translation, "\n" );
+               }
+
+               return $translation;
+       }
+
        /**
         * @param string $filename
         * @return boolean
@@ -355,7 +392,7 @@ class PO extends Gettext_Translations {
        /**
         * @staticvar string   $last_line
         * @staticvar boolean  $use_last_line
-        * 
+        *
         * @param     resource $f
         * @param     string   $action
         * @return boolean
@@ -400,7 +437,7 @@ class PO extends Gettext_Translations {
         * @param string $s
         * @return sring
         */
-       function trim_quotes($s) {
+       public static function trim_quotes($s) {
                if ( substr($s, 0, 1) == '"') $s = substr($s, 1);
                if ( substr($s, -1, 1) == '"') $s = substr($s, 0, -1);
                return $s;
index 1b6b2282bb396362793cce8faf269b59a711b14d..5e37c9c41203900323261fbd119c3a3418e6e27b 100644 (file)
@@ -3,12 +3,12 @@
  * Classes, which help reading streams of data from files.
  * Based on the classes from Danilo Segan <danilo@kvota.net>
  *
- * @version $Id: streams.php 718 2012-10-31 00:32:02Z nbachiyski $
+ * @version $Id: streams.php 1157 2015-11-20 04:30:11Z dd32 $
  * @package pomo
  * @subpackage streams
  */
 
-if ( !class_exists( 'POMO_Reader' ) ):
+if ( ! class_exists( 'POMO_Reader', false ) ):
 class POMO_Reader {
 
        var $endian = 'little';
@@ -134,7 +134,7 @@ class POMO_Reader {
 }
 endif;
 
-if ( !class_exists( 'POMO_FileReader' ) ):
+if ( ! class_exists( 'POMO_FileReader', false ) ):
 class POMO_FileReader extends POMO_Reader {
 
        /**
@@ -204,7 +204,7 @@ class POMO_FileReader extends POMO_Reader {
 }
 endif;
 
-if ( !class_exists( 'POMO_StringReader' ) ):
+if ( ! class_exists( 'POMO_StringReader', false ) ):
 /**
  * Provides file-like methods for manipulating a string instead
  * of a physical file.
@@ -267,7 +267,7 @@ class POMO_StringReader extends POMO_Reader {
 }
 endif;
 
-if ( !class_exists( 'POMO_CachedFileReader' ) ):
+if ( ! class_exists( 'POMO_CachedFileReader', false ) ):
 /**
  * Reads the contents of the file in the beginning.
  */
@@ -292,7 +292,7 @@ class POMO_CachedFileReader extends POMO_StringReader {
 }
 endif;
 
-if ( !class_exists( 'POMO_CachedIntFileReader' ) ):
+if ( ! class_exists( 'POMO_CachedIntFileReader', false ) ):
 /**
  * Reads the contents of the file in the beginning.
  */
index 8db80c85a61b0665832e4db23f8d2088213d42a3..66971d95954a9b178516642da055c5c901f27cd3 100644 (file)
@@ -2,14 +2,14 @@
 /**
  * Class for a set of entries for translation and their associated headers
  *
- * @version $Id: translations.php 718 2012-10-31 00:32:02Z nbachiyski $
+ * @version $Id: translations.php 1157 2015-11-20 04:30:11Z dd32 $
  * @package pomo
  * @subpackage translations
  */
 
 require_once dirname(__FILE__) . '/entry.php';
 
-if ( !class_exists( 'Translations' ) ):
+if ( ! class_exists( 'Translations', false ) ):
 class Translations {
        var $entries = array();
        var $headers = array();
@@ -272,7 +272,7 @@ class Gettext_Translations extends Translations {
 }
 endif;
 
-if ( !class_exists( 'NOOP_Translations' ) ):
+if ( ! class_exists( 'NOOP_Translations', false ) ):
 /**
  * Provides the same interface as Translations, but doesn't do anything
  */
index b904408e463df98c4aa52e135b95266bf249c0ad..7800ba0bd64c54ead08be926bb5d1802d8b69e6e 100644 (file)
@@ -221,7 +221,7 @@ function _post_format_get_term( $term ) {
 function _post_format_get_terms( $terms, $taxonomies, $args ) {
        if ( in_array( 'post_format', (array) $taxonomies ) ) {
                if ( isset( $args['fields'] ) && 'names' == $args['fields'] ) {
-                       foreach( $terms as $order => $name ) {
+                       foreach ( $terms as $order => $name ) {
                                $terms[$order] = get_post_format_string( str_replace( 'post-format-', '', $name ) );
                        }
                } else {
index 1b4901cc925e641e8d644be1136066e383a2e50b..3164509b8e4fda1d3986c0c0a1b1be04277b079a 100644 (file)
@@ -244,7 +244,7 @@ function the_content( $more_link_text = null, $strip_teaser = false) {
  * @global int   $multipage
  *
  * @param string $more_link_text Optional. Content for when there is more text.
- * @param bool $strip_teaser Optional. Strip teaser content before the more text. Default is false.
+ * @param bool   $strip_teaser   Optional. Strip teaser content before the more text. Default is false.
  * @return string
  */
 function get_the_content( $more_link_text = null, $strip_teaser = false ) {
@@ -316,7 +316,8 @@ function get_the_content( $more_link_text = null, $strip_teaser = false ) {
  *
  * @since 3.1.0
  * @access private
- * @param array $match Match array from preg_replace_callback
+ *
+ * @param array $match Match array from preg_replace_callback.
  * @return string
  */
 function _convert_urlencoded_to_entities( $match ) {
@@ -391,8 +392,8 @@ function has_excerpt( $id = 0 ) {
  *
  * @since 2.7.0
  *
- * @param string|array $class One or more classes to add to the class list.
- * @param int|WP_Post $post_id Optional. Post ID or post object.
+ * @param string|array $class   One or more classes to add to the class list.
+ * @param int|WP_Post  $post_id Optional. Post ID or post object. Defaults to the global `$post`.
  */
 function post_class( $class = '', $post_id = null ) {
        // Separates classes with a single space, collates classes for post DIV
@@ -428,6 +429,9 @@ function get_post_class( $class = '', $post_id = null ) {
                        $class = preg_split( '#\s+#', $class );
                }
                $classes = array_map( 'esc_attr', $class );
+       } else {
+               // Ensure that we always coerce class to being an array.
+               $class = array();
        }
 
        if ( ! $post ) {
@@ -450,11 +454,17 @@ function get_post_class( $class = '', $post_id = null ) {
                        $classes[] = 'format-standard';
        }
 
-       // Post requires password
-       if ( post_password_required( $post->ID ) ) {
+       $post_password_required = post_password_required( $post->ID );
+
+       // Post requires password.
+       if ( $post_password_required ) {
                $classes[] = 'post-password-required';
-       // Post thumbnails
-       } elseif ( ! is_attachment( $post ) && current_theme_supports( 'post-thumbnails' ) && has_post_thumbnail( $post->ID ) ) {
+       } elseif ( ! empty( $post->post_password ) ) {
+               $classes[] = 'post-password-protected';
+       }
+
+       // Post thumbnails.
+       if ( current_theme_supports( 'post-thumbnails' ) && has_post_thumbnail( $post->ID ) && ! is_attachment( $post ) && ! $post_password_required ) {
                $classes[] = 'has-post-thumbnail';
        }
 
@@ -501,9 +511,9 @@ function get_post_class( $class = '', $post_id = null ) {
         *
         * @since 2.7.0
         *
-        * @param array  $classes An array of post classes.
-        * @param string $class   A comma-separated list of additional classes added to the post.
-        * @param int    $post_id The post ID.
+        * @param array $classes An array of post classes.
+        * @param array $class   An array of additional classes added to the post.
+        * @param int   $post_id The post ID.
         */
        $classes = apply_filters( 'post_class', $classes, $class, $post->ID );
 
@@ -528,13 +538,12 @@ function body_class( $class = '' ) {
  * @since 2.8.0
  *
  * @global WP_Query $wp_query
- * @global wpdb     $wpdb
  *
  * @param string|array $class One or more classes to add to the class list.
  * @return array Array of classes.
  */
 function get_body_class( $class = '' ) {
-       global $wp_query, $wpdb;
+       global $wp_query;
 
        $classes = array();
 
@@ -722,8 +731,8 @@ function get_body_class( $class = '' ) {
         *
         * @since 2.8.0
         *
-        * @param array  $classes An array of body classes.
-        * @param string $class   A comma-separated list of additional classes added to the body.
+        * @param array $classes An array of body classes.
+        * @param array $class   An array of additional classes added to the body.
         */
        $classes = apply_filters( 'body_class', $classes, $class );
 
@@ -849,7 +858,7 @@ function wp_link_pages( $args = '' ) {
                } elseif ( $more ) {
                        $output .= $r['before'];
                        $prev = $page - 1;
-                       if ( $prev ) {
+                       if ( $prev > 0 ) {
                                $link = _wp_link_page( $prev ) . $r['link_before'] . $r['previouspagelink'] . $r['link_after'] . '</a>';
 
                                /** This filter is documented in wp-includes/post-template.php */
@@ -899,6 +908,7 @@ function wp_link_pages( $args = '' ) {
 function _wp_link_page( $i ) {
        global $wp_rewrite;
        $post = get_post();
+       $query_args = array();
 
        if ( 1 == $i ) {
                $url = get_permalink();
@@ -912,16 +922,13 @@ function _wp_link_page( $i ) {
        }
 
        if ( is_preview() ) {
-               $url = add_query_arg( array(
-                       'preview' => 'true'
-               ), $url );
 
                if ( ( 'draft' !== $post->post_status ) && isset( $_GET['preview_id'], $_GET['preview_nonce'] ) ) {
-                       $url = add_query_arg( array(
-                               'preview_id'    => wp_unslash( $_GET['preview_id'] ),
-                               'preview_nonce' => wp_unslash( $_GET['preview_nonce'] )
-                       ), $url );
+                       $query_args['preview_id'] = wp_unslash( $_GET['preview_id'] );
+                       $query_args['preview_nonce'] = wp_unslash( $_GET['preview_nonce'] );
                }
+
+               $url = get_preview_post_link( $post, $query_args, $url );
        }
 
        return '<a href="' . esc_url( $url ) . '">';
@@ -953,8 +960,10 @@ function post_custom( $key = '' ) {
 /**
  * Display list of post custom fields.
  *
- * @internal This will probably change at some point...
  * @since 1.2.0
+ *
+ * @internal This will probably change at some point...
+ *
  */
 function the_meta() {
        if ( $keys = get_post_custom_keys() ) {
@@ -1054,10 +1063,13 @@ function wp_dropdown_pages( $args = '' ) {
         * Filter the HTML output of a list of pages as a drop down.
         *
         * @since 2.1.0
+        * @since 4.4.0 `$r` and `$pages` added as arguments.
         *
         * @param string $output HTML output for drop down list of pages.
-        */
-       $html = apply_filters( 'wp_dropdown_pages', $output );
+        * @param array  $r      The parsed arguments array.
+        * @param array  $pages  List of WP_Post objects returned by `get_pages()`
+        */
+       $html = apply_filters( 'wp_dropdown_pages', $output, $r, $pages );
 
        if ( $r['echo'] ) {
                echo $html;
@@ -1161,13 +1173,15 @@ function wp_list_pages( $args = '' ) {
         * Filter the HTML output of the pages to list.
         *
         * @since 1.5.1
+        * @since 4.4.0 `$pages` added as arguments.
         *
         * @see wp_list_pages()
         *
         * @param string $output HTML output of the pages list.
         * @param array  $r      An array of page-listing arguments.
+        * @param array  $pages  List of WP_Post objects returned by `get_pages()`
         */
-       $html = apply_filters( 'wp_list_pages', $output, $r );
+       $html = apply_filters( 'wp_list_pages', $output, $r, $pages );
 
        if ( $r['echo'] ) {
                echo $html;
@@ -1184,24 +1198,41 @@ function wp_list_pages( $args = '' ) {
  * arguments.
  *
  * @since 2.7.0
+ * @since 4.4.0 Added `menu_id`, `container`, `before`, `after`, and `walker` arguments.
  *
  * @param array|string $args {
  *     Optional. Arguments to generate a page menu. See wp_list_pages() for additional arguments.
  *
  *     @type string          $sort_column How to short the list of pages. Accepts post column names.
  *                                        Default 'menu_order, post_title'.
- *     @type string          $menu_class  Class to use for the div ID containing the page list. Default 'menu'.
+ *     @type string          $menu_id     ID for the div containing the page list. Default is empty string.
+ *     @type string          $menu_class  Class to use for the element containing the page list. Default 'menu'.
+ *     @type string          $container   Element to use for the element containing the page list. Default 'div'.
  *     @type bool            $echo        Whether to echo the list or return it. Accepts true (echo) or false (return).
  *                                        Default true.
- *     @type string          $link_before The HTML or text to prepend to $show_home text. Default empty.
- *     @type string          $link_after  The HTML or text to append to $show_home text. Default empty.
  *     @type int|bool|string $show_home   Whether to display the link to the home page. Can just enter the text
  *                                        you'd like shown for the home link. 1|true defaults to 'Home'.
+ *     @type string          $link_before The HTML or text to prepend to $show_home text. Default empty.
+ *     @type string          $link_after  The HTML or text to append to $show_home text. Default empty.
+ *     @type string          $before      The HTML or text to prepend to the menu. Default is '<ul>'.
+ *     @type string          $after       The HTML or text to append to the menu. Default is '</ul>'.
+ *     @type Walker          $walker      Walker instance to use for listing pages. Default empty (Walker_Page).
  * }
  * @return string|void HTML menu
  */
 function wp_page_menu( $args = array() ) {
-       $defaults = array('sort_column' => 'menu_order, post_title', 'menu_class' => 'menu', 'echo' => true, 'link_before' => '', 'link_after' => '');
+       $defaults = array(
+               'sort_column' => 'menu_order, post_title',
+               'menu_id'     => '',
+               'menu_class'  => 'menu',
+               'container'   => 'div',
+               'echo'        => true,
+               'link_before' => '',
+               'link_after'  => '',
+               'before'      => '<ul>',
+               'after'       => '</ul>',
+               'walker'      => '',
+       );
        $args = wp_parse_args( $args, $defaults );
 
        /**
@@ -1244,10 +1275,36 @@ function wp_page_menu( $args = array() ) {
        $list_args['title_li'] = '';
        $menu .= str_replace( array( "\r", "\n", "\t" ), '', wp_list_pages($list_args) );
 
-       if ( $menu )
-               $menu = '<ul>' . $menu . '</ul>';
+       $container = sanitize_text_field( $args['container'] );
+
+       // Fallback in case `wp_nav_menu()` was called without a container.
+       if ( empty( $container ) ) {
+               $container = 'div';
+       }
+
+       if ( $menu ) {
+
+               // wp_nav_menu doesn't set before and after
+               if ( isset( $args['fallback_cb'] ) &&
+                       'wp_page_menu' === $args['fallback_cb'] &&
+                       'ul' !== $container ) {
+                       $args['before'] = '<ul>';
+                       $args['after'] = '</ul>';
+               }
+
+               $menu = $args['before'] . $menu . $args['after'];
+       }
+
+       $attrs = '';
+       if ( ! empty( $args['menu_id'] ) ) {
+               $attrs .= ' id="' . esc_attr( $args['menu_id'] ) . '"';
+       }
+
+       if ( ! empty( $args['menu_class'] ) ) {
+               $attrs .= ' class="' . esc_attr( $args['menu_class'] ) . '"';
+       }
 
-       $menu = '<div class="' . esc_attr($args['menu_class']) . '">' . $menu . "</div>\n";
+       $menu = "<{$container}{$attrs}>" . $menu . "</{$container}>\n";
 
        /**
         * Filter the HTML output of a page-based menu.
@@ -1316,217 +1373,6 @@ function walk_page_dropdown_tree() {
        return call_user_func_array(array($walker, 'walk'), $args);
 }
 
-/**
- * Create HTML list of pages.
- *
- * @since 2.1.0
- * @uses Walker
- */
-class Walker_Page extends Walker {
-       /**
-        * @see Walker::$tree_type
-        * @since 2.1.0
-        * @var string
-        */
-       public $tree_type = 'page';
-
-       /**
-        * @see Walker::$db_fields
-        * @since 2.1.0
-        * @todo Decouple this.
-        * @var array
-        */
-       public $db_fields = array ('parent' => 'post_parent', 'id' => 'ID');
-
-       /**
-        * @see Walker::start_lvl()
-        * @since 2.1.0
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param int    $depth  Depth of page. Used for padding.
-        * @param array  $args
-        */
-       public function start_lvl( &$output, $depth = 0, $args = array() ) {
-               $indent = str_repeat("\t", $depth);
-               $output .= "\n$indent<ul class='children'>\n";
-       }
-
-       /**
-        * @see Walker::end_lvl()
-        * @since 2.1.0
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param int    $depth  Depth of page. Used for padding.
-        * @param array  $args
-        */
-       public function end_lvl( &$output, $depth = 0, $args = array() ) {
-               $indent = str_repeat("\t", $depth);
-               $output .= "$indent</ul>\n";
-       }
-
-       /**
-        * @see Walker::start_el()
-        * @since 2.1.0
-        *
-        * @param string $output       Passed by reference. Used to append additional content.
-        * @param object $page         Page data object.
-        * @param int    $depth        Depth of page. Used for padding.
-        * @param int    $current_page Page ID.
-        * @param array  $args
-        */
-       public function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) {
-               if ( $depth ) {
-                       $indent = str_repeat( "\t", $depth );
-               } else {
-                       $indent = '';
-               }
-
-               $css_class = array( 'page_item', 'page-item-' . $page->ID );
-
-               if ( isset( $args['pages_with_children'][ $page->ID ] ) ) {
-                       $css_class[] = 'page_item_has_children';
-               }
-
-               if ( ! empty( $current_page ) ) {
-                       $_current_page = get_post( $current_page );
-                       if ( $_current_page && in_array( $page->ID, $_current_page->ancestors ) ) {
-                               $css_class[] = 'current_page_ancestor';
-                       }
-                       if ( $page->ID == $current_page ) {
-                               $css_class[] = 'current_page_item';
-                       } elseif ( $_current_page && $page->ID == $_current_page->post_parent ) {
-                               $css_class[] = 'current_page_parent';
-                       }
-               } elseif ( $page->ID == get_option('page_for_posts') ) {
-                       $css_class[] = 'current_page_parent';
-               }
-
-               /**
-                * Filter the list of CSS classes to include with each page item in the list.
-                *
-                * @since 2.8.0
-                *
-                * @see wp_list_pages()
-                *
-                * @param array   $css_class    An array of CSS classes to be applied
-                *                             to each list item.
-                * @param WP_Post $page         Page data object.
-                * @param int     $depth        Depth of page, used for padding.
-                * @param array   $args         An array of arguments.
-                * @param int     $current_page ID of the current page.
-                */
-               $css_classes = implode( ' ', apply_filters( 'page_css_class', $css_class, $page, $depth, $args, $current_page ) );
-
-               if ( '' === $page->post_title ) {
-                       /* translators: %d: ID of a post */
-                       $page->post_title = sprintf( __( '#%d (no title)' ), $page->ID );
-               }
-
-               $args['link_before'] = empty( $args['link_before'] ) ? '' : $args['link_before'];
-               $args['link_after'] = empty( $args['link_after'] ) ? '' : $args['link_after'];
-
-               /** This filter is documented in wp-includes/post-template.php */
-               $output .= $indent . sprintf(
-                       '<li class="%s"><a href="%s">%s%s%s</a>',
-                       $css_classes,
-                       get_permalink( $page->ID ),
-                       $args['link_before'],
-                       apply_filters( 'the_title', $page->post_title, $page->ID ),
-                       $args['link_after']
-               );
-
-               if ( ! empty( $args['show_date'] ) ) {
-                       if ( 'modified' == $args['show_date'] ) {
-                               $time = $page->post_modified;
-                       } else {
-                               $time = $page->post_date;
-                       }
-
-                       $date_format = empty( $args['date_format'] ) ? '' : $args['date_format'];
-                       $output .= " " . mysql2date( $date_format, $time );
-               }
-       }
-
-       /**
-        * @see Walker::end_el()
-        * @since 2.1.0
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param object $page Page data object. Not used.
-        * @param int    $depth Depth of page. Not Used.
-        * @param array  $args
-        */
-       public function end_el( &$output, $page, $depth = 0, $args = array() ) {
-               $output .= "</li>\n";
-       }
-
-}
-
-/**
- * Create HTML dropdown list of pages.
- *
- * @since 2.1.0
- * @uses Walker
- */
-class Walker_PageDropdown extends Walker {
-       /**
-        * @see Walker::$tree_type
-        * @since 2.1.0
-        * @var string
-        */
-       public $tree_type = 'page';
-
-       /**
-        * @see Walker::$db_fields
-        * @since 2.1.0
-        * @todo Decouple this
-        * @var array
-        */
-       public $db_fields = array ('parent' => 'post_parent', 'id' => 'ID');
-
-       /**
-        * @see Walker::start_el()
-        * @since 2.1.0
-        *
-        * @param string $output Passed by reference. Used to append additional content.
-        * @param object $page   Page data object.
-        * @param int    $depth  Depth of page in reference to parent pages. Used for padding.
-        * @param array  $args   Uses 'selected' argument for selected page to set selected HTML attribute for option
-        *                       element. Uses 'value_field' argument to fill "value" attribute. See {@see wp_dropdown_pages()}.
-        * @param int    $id
-        */
-       public function start_el( &$output, $page, $depth = 0, $args = array(), $id = 0 ) {
-               $pad = str_repeat('&nbsp;', $depth * 3);
-
-               if ( ! isset( $args['value_field'] ) || ! isset( $page->{$args['value_field']} ) ) {
-                       $args['value_field'] = 'ID';
-               }
-
-               $output .= "\t<option class=\"level-$depth\" value=\"" . esc_attr( $page->{$args['value_field']} ) . "\"";
-               if ( $page->ID == $args['selected'] )
-                       $output .= ' selected="selected"';
-               $output .= '>';
-
-               $title = $page->post_title;
-               if ( '' === $title ) {
-                       /* translators: %d: ID of a post */
-                       $title = sprintf( __( '#%d (no title)' ), $page->ID );
-               }
-
-               /**
-                * Filter the page title when creating an HTML drop-down list of pages.
-                *
-                * @since 3.1.0
-                *
-                * @param string $title Page title.
-                * @param object $page  Page data object.
-                */
-               $title = apply_filters( 'list_pages', $title, $page );
-               $output .= $pad . esc_html( $title );
-               $output .= "</option>\n";
-       }
-}
-
 //
 // Attachments
 //
@@ -1555,17 +1401,20 @@ function the_attachment_link( $id = 0, $fullsize = false, $deprecated = false, $
  * Retrieve an attachment page link using an image or icon, if possible.
  *
  * @since 2.5.0
+ * @since 4.4.0 The `$id` parameter can now accept either a post ID or `WP_Post` object.
  *
  * @param int|WP_Post  $id        Optional. Post ID or post object.
- * @param string       $size      Optional, default is 'thumbnail'. Size of image, either array or string.
- * @param bool         $permalink Optional, default is false. Whether to add permalink to image.
- * @param bool         $icon      Optional, default is false. Whether to include icon.
- * @param string|bool  $text      Optional, default is false. If string, then will be link text.
- * @param array|string $attr      Optional. Array or string of attributes.
+ * @param string|array $size      Optional. Image size. Accepts any valid image size, or an array
+ *                                of width and height values in pixels (in that order).
+ *                                Default 'thumbnail'.
+ * @param bool         $permalink Optional, Whether to add permalink to image. Default false.
+ * @param bool         $icon      Optional. Whether the attachment is an icon. Default false.
+ * @param string|false $text      Optional. Link text to use. Activated by passing a string, false otherwise.
+ *                                Default false.
+ * @param array|string $attr      Optional. Array or string of attributes. Default empty.
  * @return string HTML content.
  */
 function wp_get_attachment_link( $id = 0, $size = 'thumbnail', $permalink = false, $icon = false, $text = false, $attr = '' ) {
-       $id = intval( $id );
        $_post = get_post( $id );
 
        if ( empty( $_post ) || ( 'attachment' != $_post->post_type ) || ! $url = wp_get_attachment_url( $_post->ID ) )
@@ -1577,7 +1426,7 @@ function wp_get_attachment_link( $id = 0, $size = 'thumbnail', $permalink = fals
        if ( $text ) {
                $link_text = $text;
        } elseif ( $size && 'none' != $size ) {
-               $link_text = wp_get_attachment_image( $id, $size, $icon, $attr );
+               $link_text = wp_get_attachment_image( $_post->ID, $size, $icon, $attr );
        } else {
                $link_text = '';
        }
@@ -1590,12 +1439,13 @@ function wp_get_attachment_link( $id = 0, $size = 'thumbnail', $permalink = fals
         *
         * @since 2.7.0
         *
-        * @param string      $link_html The page link HTML output.
-        * @param int         $id        Post ID.
-        * @param string      $size      Image size. Default 'thumbnail'.
-        * @param bool        $permalink Whether to add permalink to image. Default false.
-        * @param bool        $icon      Whether to include an icon. Default false.
-        * @param string|bool $text      If string, will be link text. Default false.
+        * @param string       $link_html The page link HTML output.
+        * @param int          $id        Post ID.
+        * @param string|array $size      Size of the image. Image size or array of width and height values (in that order).
+        *                                Default 'thumbnail'.
+        * @param bool         $permalink Whether to add permalink to image. Default false.
+        * @param bool         $icon      Whether to include an icon. Default false.
+        * @param string|bool  $text      If string, will be link text. Default false.
         */
        return apply_filters( 'wp_get_attachment_link', "<a href='$url'>$link_text</a>", $id, $size, $permalink, $icon, $text );
 }
@@ -1815,7 +1665,17 @@ function wp_post_revision_title_expanded( $revision, $link = true ) {
        elseif ( wp_is_post_autosave( $revision ) )
                $revision_date_author = sprintf( $autosavef, $revision_date_author );
 
-       return $revision_date_author;
+       /**
+        * Filter the formatted author and date for a revision.
+        *
+        * @since 4.4.0
+        *
+        * @param string  $revision_date_author The formatted string.
+        * @param WP_Post $revision             The revision object.
+        * @param bool    $link                 Whether to link to the revisions page, as passed into
+        *                                      wp_post_revision_title_expanded().
+        */
+       return apply_filters( 'wp_post_revision_title_expanded', $revision_date_author, $revision, $link );
 }
 
 /**
index 7b8d1a2f25c7aa3f6e11ac1fa6b5e7867faa5b18..2862bdc93cc02df5f6139946491eb563daa370d4 100644 (file)
  * Check if post has an image attached.
  *
  * @since 2.9.0
+ * @since 4.4.0 `$post` can be a post ID or WP_Post object.
  *
- * @param int $post_id Optional. Post ID.
- * @return bool Whether post has an image attached.
+ * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global `$post`.
+ * @return bool Whether the post has an image attached.
  */
-function has_post_thumbnail( $post_id = null ) {
-       return (bool) get_post_thumbnail_id( $post_id );
+function has_post_thumbnail( $post = null ) {
+       return (bool) get_post_thumbnail_id( $post );
 }
 
 /**
- * Retrieve Post Thumbnail ID.
+ * Retrieve post thumbnail ID.
  *
  * @since 2.9.0
+ * @since 4.4.0 `$post` can be a post ID or WP_Post object.
  *
- * @param int|null $post_id Optional. Post ID.
- * @return mixed
+ * @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global `$post`.
+ * @return string|int Post thumbnail ID or empty string.
  */
-function get_post_thumbnail_id( $post_id = null ) {
-       $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
-       return get_post_meta( $post_id, '_thumbnail_id', true );
+function get_post_thumbnail_id( $post = null ) {
+       $post = get_post( $post );
+       if ( ! $post ) {
+               return '';
+       }
+       return get_post_meta( $post->ID, '_thumbnail_id', true );
 }
 
 /**
@@ -48,8 +53,9 @@ function get_post_thumbnail_id( $post_id = null ) {
  *
  * @see get_the_post_thumbnail()
  *
- * @param string|array $size Optional. Registered image size to use, or flat array of height
- *                           and width values. Default 'post-thumbnail'.
+ * @param string|array $size Optional. Image size to use. Accepts any valid image size, or
+ *                           an array of width and height values in pixels (in that order).
+ *                           Default 'post-thumbnail'.
  * @param string|array $attr Optional. Query string or array of attributes. Default empty.
  */
 function the_post_thumbnail( $size = 'post-thumbnail', $attr = '' ) {
@@ -57,7 +63,7 @@ function the_post_thumbnail( $size = 'post-thumbnail', $attr = '' ) {
 }
 
 /**
- * Update cache for thumbnails in the current loop
+ * Update cache for thumbnails in the current loop.
  *
  * @since 3.2.0
  *
@@ -96,23 +102,29 @@ function update_post_thumbnail_cache( $wp_query = null ) {
  * size is used by default, though a different size can be specified instead as needed.
  *
  * @since 2.9.0
+ * @since 4.4.0 `$post` can be a post ID or WP_Post object.
  *
- * @param int $post_id       Post ID. Default is the ID of the `$post` global.
- * @param string|array $size Optional. Registered image size to use, or flat array of height
- *                           and width values. Default 'post-thumbnail'.
+ * @param int|WP_Post  $post Optional. Post ID or WP_Post object.  Default is global `$post`.
+ * @param string|array $size Optional. Image size to use. Accepts any valid image size, or
+ *                           an array of width and height values in pixels (in that order).
+ *                           Default 'post-thumbnail'.
  * @param string|array $attr Optional. Query string or array of attributes. Default empty.
- * @return string
+ * @return string The post thumbnail image tag.
  */
-function get_the_post_thumbnail( $post_id = null, $size = 'post-thumbnail', $attr = '' ) {
-       $post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
-       $post_thumbnail_id = get_post_thumbnail_id( $post_id );
+function get_the_post_thumbnail( $post = null, $size = 'post-thumbnail', $attr = '' ) {
+       $post = get_post( $post );
+       if ( ! $post ) {
+               return '';
+       }
+       $post_thumbnail_id = get_post_thumbnail_id( $post );
 
        /**
         * Filter the post thumbnail size.
         *
         * @since 2.9.0
         *
-        * @param string $size The post thumbnail size.
+        * @param string|array $size The post thumbnail size. Image size or array of width and height
+        *                           values (in that order). Default 'post-thumbnail'.
         */
        $size = apply_filters( 'post_thumbnail_size', $size );
 
@@ -125,11 +137,12 @@ function get_the_post_thumbnail( $post_id = null, $size = 'post-thumbnail', $att
                 *
                 * @since 2.9.0
                 *
-                * @param string $post_id           The post ID.
-                * @param string $post_thumbnail_id The post thumbnail ID.
-                * @param string $size              The post thumbnail size.
+                * @param int          $post_id           The post ID.
+                * @param string       $post_thumbnail_id The post thumbnail ID.
+                * @param string|array $size              The post thumbnail size. Image size or array of width
+                *                                        and height values (in that order). Default 'post-thumbnail'.
                 */
-               do_action( 'begin_fetch_post_thumbnail_html', $post_id, $post_thumbnail_id, $size );
+               do_action( 'begin_fetch_post_thumbnail_html', $post->ID, $post_thumbnail_id, $size );
                if ( in_the_loop() )
                        update_post_thumbnail_cache();
                $html = wp_get_attachment_image( $post_thumbnail_id, $size, false, $attr );
@@ -139,11 +152,12 @@ function get_the_post_thumbnail( $post_id = null, $size = 'post-thumbnail', $att
                 *
                 * @since 2.9.0
                 *
-                * @param string $post_id           The post ID.
-                * @param string $post_thumbnail_id The post thumbnail ID.
-                * @param string $size              The post thumbnail size.
+                * @param int          $post_id           The post ID.
+                * @param string       $post_thumbnail_id The post thumbnail ID.
+                * @param string|array $size              The post thumbnail size. Image size or array of width
+                *                                        and height values (in that order). Default 'post-thumbnail'.
                 */
-               do_action( 'end_fetch_post_thumbnail_html', $post_id, $post_thumbnail_id, $size );
+               do_action( 'end_fetch_post_thumbnail_html', $post->ID, $post_thumbnail_id, $size );
 
        } else {
                $html = '';
@@ -153,11 +167,46 @@ function get_the_post_thumbnail( $post_id = null, $size = 'post-thumbnail', $att
         *
         * @since 2.9.0
         *
-        * @param string $html              The post thumbnail HTML.
-        * @param string $post_id           The post ID.
-        * @param string $post_thumbnail_id The post thumbnail ID.
-        * @param string $size              The post thumbnail size.
-        * @param string $attr              Query string of attributes.
+        * @param string       $html              The post thumbnail HTML.
+        * @param int          $post_id           The post ID.
+        * @param string       $post_thumbnail_id The post thumbnail ID.
+        * @param string|array $size              The post thumbnail size. Image size or array of width and height
+        *                                        values (in that order). Default 'post-thumbnail'.
+        * @param string       $attr              Query string of attributes.
         */
-       return apply_filters( 'post_thumbnail_html', $html, $post_id, $post_thumbnail_id, $size, $attr );
+       return apply_filters( 'post_thumbnail_html', $html, $post->ID, $post_thumbnail_id, $size, $attr );
+}
+
+/**
+ * Return the post thumbnail URL.
+ *
+ * @since 4.4.0
+ *
+ * @param int|WP_Post  $post Optional. Post ID or WP_Post object.  Default is global `$post`.
+ * @param string|array $size Optional. Registered image size to retrieve the source for or a flat
+ *                           array of height and width dimensions. Default 'post-thumbnail'.
+ * @return string|false Post thumbnail URL or false if no URL is available.
+ */
+function get_the_post_thumbnail_url( $post = null, $size = 'post-thumbnail' ) {
+       $post_thumbnail_id = get_post_thumbnail_id( $post );
+       if ( ! $post_thumbnail_id ) {
+               return false;
+       }
+       return wp_get_attachment_image_url( $post_thumbnail_id, $size );
+}
+
+/**
+ * Display the post thumbnail URL.
+ *
+ * @since 4.4.0
+ *
+ * @param string|array $size Optional. Image size to use. Accepts any valid image size,
+ *                           or an array of width and height values in pixels (in that order).
+ *                           Default 'post-thumbnail'.
+ */
+function the_post_thumbnail_url( $size = 'post-thumbnail' ) {
+       $url = get_the_post_thumbnail_url( null, $size );
+       if ( $url ) {
+               echo esc_url( $url );
+       }
 }
index 912a03c8c83fe47d7b6820723ab02faa2f85bdca..d0bc1a3d863f29af075d626f27498d3891cfe07f 100644 (file)
@@ -1,10 +1,9 @@
 <?php
 /**
- * Post functions and post utility function.
+ * Core Post API
  *
  * @package WordPress
  * @subpackage Post
- * @since 1.5.0
  */
 
 //
@@ -26,6 +25,7 @@ function create_initial_post_types() {
                '_edit_link' => 'post.php?post=%d', /* internal use only. don't use this when registering your own post type. */
                'capability_type' => 'post',
                'map_meta_cap' => true,
+               'menu_position' => 5,
                'hierarchical' => false,
                'rewrite' => false,
                'query_var' => false,
@@ -43,6 +43,7 @@ function create_initial_post_types() {
                '_edit_link' => 'post.php?post=%d', /* internal use only. don't use this when registering your own post type. */
                'capability_type' => 'page',
                'map_meta_cap' => true,
+               'menu_position' => 20,
                'hierarchical' => true,
                'rewrite' => false,
                'query_var' => false,
@@ -277,7 +278,7 @@ function _wp_relative_upload_path( $path ) {
  * Attachments may also be made the child of a post, so if that is an accurate
  * statement (which needs to be verified), it would then be possible to get
  * all of the attachments for a post. Attachments have since changed since
- * version 2.5, so this is most likely unaccurate, but serves generally as an
+ * version 2.5, so this is most likely inaccurate, but serves generally as an
  * example of what is possible.
  *
  * The arguments listed as defaults are for this function and also of the
@@ -312,7 +313,7 @@ function _wp_relative_upload_path( $path ) {
  *
  * @param mixed  $args   Optional. User defined arguments for replacing the defaults. Default empty.
  * @param string $output Optional. Constant for return type. Accepts OBJECT, ARRAY_A, ARRAY_N.
- *                       Default OBJECt.
+ *                       Default OBJECT.
  * @return array Array of children, where the type of each element is determined by $output parameter.
  *               Empty array on failure.
  */
@@ -383,7 +384,7 @@ function get_children( $args = '', $output = OBJECT ) {
  * @since 1.0.0
  *
  * @param string $post Post content.
- * @return array Post before ('main'), after ('extended'), and custom readmore ('more_text').
+ * @return array Post before ('main'), after ('extended'), and custom read more ('more_text').
  */
 function get_extended( $post ) {
        //Match the new style more links.
@@ -454,338 +455,6 @@ function get_post( $post = null, $output = OBJECT, $filter = 'raw' ) {
        return $_post;
 }
 
-/**
- * WordPress Post class.
- *
- * @since 3.5.0
- *
- * @property string $page_template
- *
- * @property-read array  $ancestors
- * @property-read int    $post_category
- * @property-read string $tag_input
- *
- */
-final class WP_Post {
-
-       /**
-        * Post ID.
-        *
-        * @var int
-        */
-       public $ID;
-
-       /**
-        * ID of post author.
-        *
-        * A numeric string, for compatibility reasons.
-        *
-        * @var string
-        */
-       public $post_author = 0;
-
-       /**
-        * The post's local publication time.
-        *
-        * @var string
-        */
-       public $post_date = '0000-00-00 00:00:00';
-
-       /**
-        * The post's GMT publication time.
-        *
-        * @var string
-        */
-       public $post_date_gmt = '0000-00-00 00:00:00';
-
-       /**
-        * The post's content.
-        *
-        * @var string
-        */
-       public $post_content = '';
-
-       /**
-        * The post's title.
-        *
-        * @var string
-        */
-       public $post_title = '';
-
-       /**
-        * The post's excerpt.
-        *
-        * @var string
-        */
-       public $post_excerpt = '';
-
-       /**
-        * The post's status.
-        *
-        * @var string
-        */
-       public $post_status = 'publish';
-
-       /**
-        * Whether comments are allowed.
-        *
-        * @var string
-        */
-       public $comment_status = 'open';
-
-       /**
-        * Whether pings are allowed.
-        *
-        * @var string
-        */
-       public $ping_status = 'open';
-
-       /**
-        * The post's password in plain text.
-        *
-        * @var string
-        */
-       public $post_password = '';
-
-       /**
-        * The post's slug.
-        *
-        * @var string
-        */
-       public $post_name = '';
-
-       /**
-        * URLs queued to be pinged.
-        *
-        * @var string
-        */
-       public $to_ping = '';
-
-       /**
-        * URLs that have been pinged.
-        *
-        * @var string
-        */
-       public $pinged = '';
-
-       /**
-        * The post's local modified time.
-        *
-        * @var string
-        */
-       public $post_modified = '0000-00-00 00:00:00';
-
-       /**
-        * The post's GMT modified time.
-        *
-        * @var string
-        */
-       public $post_modified_gmt = '0000-00-00 00:00:00';
-
-       /**
-        * A utility DB field for post content.
-        *
-        *
-        * @var string
-        */
-       public $post_content_filtered = '';
-
-       /**
-        * ID of a post's parent post.
-        *
-        * @var int
-        */
-       public $post_parent = 0;
-
-       /**
-        * The unique identifier for a post, not necessarily a URL, used as the feed GUID.
-        *
-        * @var string
-        */
-       public $guid = '';
-
-       /**
-        * A field used for ordering posts.
-        *
-        * @var int
-        */
-       public $menu_order = 0;
-
-       /**
-        * The post's type, like post or page.
-        *
-        * @var string
-        */
-       public $post_type = 'post';
-
-       /**
-        * An attachment's mime type.
-        *
-        * @var string
-        */
-       public $post_mime_type = '';
-
-       /**
-        * Cached comment count.
-        *
-        * A numeric string, for compatibility reasons.
-        *
-        * @var string
-        */
-       public $comment_count = 0;
-
-       /**
-        * Stores the post object's sanitization level.
-        *
-        * Does not correspond to a DB field.
-        *
-        * @var string
-        */
-       public $filter;
-
-       /**
-        * Retrieve WP_Post instance.
-        *
-        * @static
-        * @access public
-        *
-        * @global wpdb $wpdb
-        *
-        * @param int $post_id Post ID.
-        * @return WP_Post|false Post object, false otherwise.
-        */
-       public static function get_instance( $post_id ) {
-               global $wpdb;
-
-               $post_id = (int) $post_id;
-               if ( ! $post_id )
-                       return false;
-
-               $_post = wp_cache_get( $post_id, 'posts' );
-
-               if ( ! $_post ) {
-                       $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post_id ) );
-
-                       if ( ! $_post )
-                               return false;
-
-                       $_post = sanitize_post( $_post, 'raw' );
-                       wp_cache_add( $_post->ID, $_post, 'posts' );
-               } elseif ( empty( $_post->filter ) ) {
-                       $_post = sanitize_post( $_post, 'raw' );
-               }
-
-               return new WP_Post( $_post );
-       }
-
-       /**
-        * Constructor.
-        *
-        * @param WP_Post|object $post Post object.
-        */
-       public function __construct( $post ) {
-               foreach ( get_object_vars( $post ) as $key => $value )
-                       $this->$key = $value;
-       }
-
-       /**
-        * Isset-er.
-        *
-        * @param string $key Property to check if set.
-        * @return bool
-        */
-       public function __isset( $key ) {
-               if ( 'ancestors' == $key )
-                       return true;
-
-               if ( 'page_template' == $key )
-                       return ( 'page' == $this->post_type );
-
-               if ( 'post_category' == $key )
-                  return true;
-
-               if ( 'tags_input' == $key )
-                  return true;
-
-               return metadata_exists( 'post', $this->ID, $key );
-       }
-
-       /**
-        * Getter.
-        *
-        * @param string $key Key to get.
-        * @return mixed
-        */
-       public function __get( $key ) {
-               if ( 'page_template' == $key && $this->__isset( $key ) ) {
-                       return get_post_meta( $this->ID, '_wp_page_template', true );
-               }
-
-               if ( 'post_category' == $key ) {
-                       if ( is_object_in_taxonomy( $this->post_type, 'category' ) )
-                               $terms = get_the_terms( $this, 'category' );
-
-                       if ( empty( $terms ) )
-                               return array();
-
-                       return wp_list_pluck( $terms, 'term_id' );
-               }
-
-               if ( 'tags_input' == $key ) {
-                       if ( is_object_in_taxonomy( $this->post_type, 'post_tag' ) )
-                               $terms = get_the_terms( $this, 'post_tag' );
-
-                       if ( empty( $terms ) )
-                               return array();
-
-                       return wp_list_pluck( $terms, 'name' );
-               }
-
-               // Rest of the values need filtering.
-               if ( 'ancestors' == $key )
-                       $value = get_post_ancestors( $this );
-               else
-                       $value = get_post_meta( $this->ID, $key, true );
-
-               if ( $this->filter )
-                       $value = sanitize_post_field( $key, $value, $this->ID, $this->filter );
-
-               return $value;
-       }
-
-       /**
-        * {@Missing Summary}
-        *
-        * @param string $filter Filter.
-        * @return self|array|bool|object|WP_Post
-        */
-       public function filter( $filter ) {
-               if ( $this->filter == $filter )
-                       return $this;
-
-               if ( $filter == 'raw' )
-                       return self::get_instance( $this->ID );
-
-               return sanitize_post( $this, $filter );
-       }
-
-       /**
-        * Convert object to array.
-        *
-        * @return array Object as array.
-        */
-       public function to_array() {
-               $post = get_object_vars( $this );
-
-               foreach ( array( 'ancestors', 'page_template', 'post_category', 'tags_input' ) as $key ) {
-                       if ( $this->__isset( $key ) )
-                               $post[ $key ] = $this->__get( $key );
-               }
-
-               return $post;
-       }
-}
-
 /**
  * Retrieve ancestors of a post.
  *
@@ -903,7 +572,15 @@ function get_post_status( $ID = '' ) {
 
        }
 
-       return $post->post_status;
+       /**
+        * Filter the post status.
+        *
+        * @since 4.4.0
+        *
+        * @param string  $post_status The post status.
+        * @param WP_Post $post        The post object.
+        */
+       return apply_filters( 'get_post_status', $post->post_status, $post );
 }
 
 /**
@@ -1165,10 +842,11 @@ function get_post_type( $post = null ) {
 function get_post_type_object( $post_type ) {
        global $wp_post_types;
 
-       if ( empty($wp_post_types[$post_type]) )
+       if ( ! is_scalar( $post_type ) || empty( $wp_post_types[ $post_type ] ) ) {
                return null;
+       }
 
-       return $wp_post_types[$post_type];
+       return $wp_post_types[ $post_type ];
 }
 
 /**
@@ -1205,6 +883,8 @@ function get_post_types( $args = array(), $output = 'names', $operator = 'and' )
  * parameter), along with a string for the post type name.
  *
  * @since 2.9.0
+ * @since 3.0.0 The `show_ui` argument is now enforced on the new post screen.
+ * @since 4.4.0 The `show_ui` argument is now enforced on the post type listing screen and post editing screen.
  *
  * @global array      $wp_post_types List of post types.
  * @global WP_Rewrite $wp_rewrite    Used for default feeds.
@@ -1236,7 +916,7 @@ function get_post_types( $args = array(), $output = 'names', $operator = 'and' )
  *                                             * ?{post_type_key}={single_post_slug}
  *                                             * ?{post_type_query_var}={single_post_slug}
  *                                             If not set, the default is inherited from $public.
- *     @type bool        $show_ui              Whether to generate a default UI for managing this post type in the
+ *     @type bool        $show_ui              Whether to generate and allow a UI for managing this post type in the
  *                                             admin. Default is value of $public.
  *     @type bool        $show_in_menu         Where to show the post type in the admin menu. To work, $show_ui
  *                                             must be true. If true, the post type is shown in its own top level
@@ -1267,7 +947,7 @@ function get_post_types( $args = array(), $output = 'names', $operator = 'and' )
  *                                             Default false.
  *     @type array       $supports             An alias for calling {@see add_post_type_support()} directly.
  *                                             Defaults to array containing 'title' & 'editor'.
- *     @type callback    $register_meta_box_cb Provide a callback function that sets up the meta boxes for the
+ *     @type callable    $register_meta_box_cb Provide a callback function that sets up the meta boxes for the
  *                                             edit form. Do remove_meta_box() and add_meta_box() calls in the
  *                                             callback. Default null.
  *     @type array       $taxonomies           An array of taxonomy identifiers that will be registered for the
@@ -1313,8 +993,25 @@ function get_post_types( $args = array(), $output = 'names', $operator = 'and' )
 function register_post_type( $post_type, $args = array() ) {
        global $wp_post_types, $wp_rewrite, $wp;
 
-       if ( ! is_array( $wp_post_types ) )
+       if ( ! is_array( $wp_post_types ) ) {
                $wp_post_types = array();
+       }
+
+       // Sanitize post type name
+       $post_type = sanitize_key( $post_type );
+       $args      = wp_parse_args( $args );
+
+       /**
+        * Filter the arguments for registering a post type.
+        *
+        * @since 4.4.0
+        *
+        * @param array  $args      Array of arguments for registering a post type.
+        * @param string $post_type Post type key.
+        */
+       $args = apply_filters( 'register_post_type_args', $args, $post_type );
+
+       $has_edit_link = ! empty( $args['_edit_link'] );
 
        // Args prefixed with an underscore are reserved for internal use.
        $defaults = array(
@@ -1344,10 +1041,9 @@ function register_post_type( $post_type, $args = array() ) {
                '_builtin'             => false,
                '_edit_link'           => 'post.php?post=%d',
        );
-       $args = wp_parse_args( $args, $defaults );
+       $args = array_merge( $defaults, $args );
        $args = (object) $args;
 
-       $post_type = sanitize_key( $post_type );
        $args->name = $post_type;
 
        if ( empty( $post_type ) || strlen( $post_type ) > 20 ) {
@@ -1387,6 +1083,11 @@ function register_post_type( $post_type, $args = array() ) {
        if ( null === $args->map_meta_cap )
                $args->map_meta_cap = false;
 
+       // If there's no specified edit link and no UI, remove the edit link.
+       if ( ! $args->show_ui && ! $has_edit_link ) {
+               $args->_edit_link = '';
+       }
+
        $args->cap = get_post_type_capabilities( $args );
        unset( $args->capabilities );
 
@@ -1401,12 +1102,15 @@ function register_post_type( $post_type, $args = array() ) {
                add_post_type_support( $post_type, array( 'title', 'editor' ) );
        }
 
-       if ( false !== $args->query_var && ! empty( $wp ) ) {
+       if ( false !== $args->query_var ) {
                if ( true === $args->query_var )
                        $args->query_var = $post_type;
                else
                        $args->query_var = sanitize_title_with_dashes( $args->query_var );
-               $wp->add_query_var( $args->query_var );
+
+               if ( $wp && is_post_type_viewable( $args ) ) {
+                       $wp->add_query_var( $args->query_var );
+               }
        }
 
        if ( false !== $args->rewrite && ( is_admin() || '' != get_option( 'permalink_structure' ) ) ) {
@@ -1625,11 +1329,17 @@ function _post_type_meta_capabilities( $capabilities = null ) {
  * - parent_item_colon - This string isn't used on non-hierarchical types. In hierarchical
  *                       ones the default is 'Parent Page:'.
  * - all_items - String for the submenu. Default is All Posts/All Pages.
+ * - archives - String for use with archives in nav menus. Default is Post Archives/Page Archives.
+ * - insert_into_item - String for the media frame button. Default is Insert into post/Insert into page.
+ * - uploaded_to_this_item - String for the media frame filter. Default is Uploaded to this post/Uploaded to this page.
  * - featured_image - Default is Featured Image.
  * - set_featured_image - Default is Set featured image.
  * - remove_featured_image - Default is Remove featured image.
  * - use_featured_image - Default is Use as featured image.
  * - menu_name - Default is the same as `name`.
+ * - filter_items_list - String for the table views hidden heading.
+ * - items_list_navigation - String for the table pagination hidden heading.
+ * - items_list - String for the table hidden heading.
  *
  * Above, the first default value is for non-hierarchical post types (like posts)
  * and the second one is for hierarchical post types (like pages).
@@ -1637,6 +1347,9 @@ function _post_type_meta_capabilities( $capabilities = null ) {
  * @since 3.0.0
  * @since 4.3.0 Added the `featured_image`, `set_featured_image`, `remove_featured_image`,
  *              and `use_featured_image` labels.
+ * @since 4.4.0 Added the `insert_into_item`, `uploaded_to_this_item`, `filter_items_list`,
+ *              `items_list_navigation`, and `items_list` labels.
+ *
  * @access private
  *
  * @param object $post_type_object Post type object.
@@ -1656,10 +1369,16 @@ function get_post_type_labels( $post_type_object ) {
                'not_found_in_trash' => array( __('No posts found in Trash.'), __('No pages found in Trash.') ),
                'parent_item_colon' => array( null, __('Parent Page:') ),
                'all_items' => array( __( 'All Posts' ), __( 'All Pages' ) ),
+               'archives' => array( __( 'Post Archives' ), __( 'Page Archives' ) ),
+               'insert_into_item' => array( __( 'Insert into post' ), __( 'Insert into page' ) ),
+               'uploaded_to_this_item' => array( __( 'Uploaded to this post' ), __( 'Uploaded to this page' ) ),
                'featured_image' => array( __( 'Featured Image' ), __( 'Featured Image' ) ),
                'set_featured_image' => array( __( 'Set featured image' ), __( 'Set featured image' ) ),
                'remove_featured_image' => array( __( 'Remove featured image' ), __( 'Remove featured image' ) ),
                'use_featured_image' => array( __( 'Use as featured image' ), __( 'Use as featured image' ) ),
+               'filter_items_list' => array( __( 'Filter posts list' ), __( 'Filter pages list' ) ),
+               'items_list_navigation' => array( __( 'Posts list navigation' ), __( 'Pages list navigation' ) ),
+               'items_list' => array( __( 'Posts list' ), __( 'Pages list' ) ),
        );
        $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
 
@@ -1667,6 +1386,8 @@ function get_post_type_labels( $post_type_object ) {
 
        $post_type = $post_type_object->name;
 
+       $default_labels = clone $labels;
+
        /**
         * Filter the labels of a specific post type.
         *
@@ -1679,7 +1400,12 @@ function get_post_type_labels( $post_type_object ) {
         *
         * @param object $labels Object with labels for the post type as member variables.
         */
-       return apply_filters( "post_type_labels_{$post_type}", $labels );
+       $labels = apply_filters( "post_type_labels_{$post_type}", $labels );
+
+       // Ensure that the filtered labels contain all required default values.
+       $labels = (object) array_merge( (array) $default_labels, (array) $labels );
+
+       return $labels;
 }
 
 /**
@@ -1691,6 +1417,7 @@ function get_post_type_labels( $post_type_object ) {
  *
  * @param object $object                  A custom-something object.
  * @param array  $nohier_vs_hier_defaults Hierarchical vs non-hierarchical default labels.
+ * @return object Object containing labels for the given custom-something object.
  */
 function _get_custom_object_labels( $object, $nohier_vs_hier_defaults ) {
        $object->labels = (array) $object->labels;
@@ -1710,11 +1437,17 @@ function _get_custom_object_labels( $object, $nohier_vs_hier_defaults ) {
        if ( !isset( $object->labels['all_items'] ) && isset( $object->labels['menu_name'] ) )
                $object->labels['all_items'] = $object->labels['menu_name'];
 
+       if ( !isset( $object->labels['archives'] ) && isset( $object->labels['all_items'] ) ) {
+               $object->labels['archives'] = $object->labels['all_items'];
+       }
+
        $defaults = array();
        foreach ( $nohier_vs_hier_defaults as $key => $value ) {
                $defaults[$key] = $object->hierarchical ? $value[1] : $value[0];
        }
        $labels = array_merge( $defaults, $object->labels );
+       $object->labels = (object) $object->labels;
+
        return (object) $labels;
 }
 
@@ -1843,6 +1576,21 @@ function set_post_type( $post_id = 0, $post_type = 'post' ) {
        return $return;
 }
 
+/**
+ * Determines whether a post type is considered "viewable".
+ *
+ * For built-in post types such as posts and pages, the 'public' value will be evaluated.
+ * For all others, the 'publicly_queryable' value will be used.
+ *
+ * @since 4.4.0
+ *
+ * @param object $post_type_object Post type object.
+ * @return bool Whether the post type should be considered viewable.
+ */
+function is_post_type_viewable( $post_type_object ) {
+       return $post_type_object->publicly_queryable || ( $post_type_object->_builtin && $post_type_object->public );
+}
+
 /**
  * Retrieve list of latest posts or posts matching criteria.
  *
@@ -1853,28 +1601,23 @@ function set_post_type( $post_id = 0, $post_type = 'post' ) {
  * @see WP_Query::parse_query()
  *
  * @param array $args {
- *     Optional. Arguments to retrieve posts. {@see WP_Query::parse_query()} for more
+ *     Optional. Arguments to retrieve posts. See WP_Query::parse_query() for all
  *     available arguments.
  *
  *     @type int        $numberposts      Total number of posts to retrieve. Is an alias of $posts_per_page
- *                                        in WP_Query. Accepts 1+ and -1 for all. Default 5.
- *     @type int        $offset           The number of posts to offset before retrieval. Default 0.
+ *                                        in WP_Query. Accepts -1 for all. Default 5.
  *     @type int|string $category         Category ID or comma-separated list of IDs (this or any children).
  *                                        Is an alias of $cat in WP_Query. Default 0.
- *     @type string     $orderby          Which field to order posts by. Accepts post fields. Default 'date'.
  *     @type array      $include          An array of post IDs to retrieve, sticky posts will be included.
  *                                        Is an alias of $post__in in WP_Query. Default empty array.
  *     @type array      $exclude          An array of post IDs not to retrieve. Default empty array.
- *     @type string     $meta_key         Custom field key. Default empty.
- *     @type mixed      $meta_value       Custom field value. Default empty string.
- *     @type string     $post_type        Post type. Default 'post'.
  *     @type bool       $suppress_filters Whether to suppress filters. Default true.
  * }
  * @return array List of posts.
  */
 function get_posts( $args = null ) {
        $defaults = array(
-               'numberposts' => 5, 'offset' => 0,
+               'numberposts' => 5,
                'category' => 0, 'orderby' => 'date',
                'order' => 'DESC', 'include' => array(),
                'exclude' => array(), 'meta_key' => '',
@@ -2122,7 +1865,7 @@ function sanitize_post( $post, $context = 'display' ) {
                foreach ( array_keys(get_object_vars($post)) as $field )
                        $post->$field = sanitize_post_field($field, $post->$field, $post->ID, $context);
                $post->filter = $context;
-       } else {
+       } elseif ( is_array( $post ) ) {
                // Check if post already filtered for this context.
                if ( isset($post['filter']) && $context == $post['filter'] )
                        return $post;
@@ -2143,15 +1886,16 @@ function sanitize_post( $post, $context = 'display' ) {
  * are treated like 'display' when calling filters.
  *
  * @since 2.3.0
+ * @since 4.4.0 Like `sanitize_post()`, `$context` defaults to 'display'.
  *
  * @param string $field   The Post Object field name.
  * @param mixed  $value   The Post Object value.
  * @param int    $post_id Post ID.
- * @param string $context How to sanitize post fields. Looks for 'raw', 'edit',
- *                        'db', 'display', 'attribute' and 'js'.
+ * @param string $context Optional. How to sanitize post fields. Looks for 'raw', 'edit',
+ *                        'db', 'display', 'attribute' and 'js'. Default 'display'.
  * @return mixed Sanitized value.
  */
-function sanitize_post_field($field, $value, $post_id, $context) {
+function sanitize_post_field( $field, $value, $post_id, $context = 'display' ) {
        $int_fields = array('ID', 'post_parent', 'menu_order');
        if ( in_array($field, $int_fields) )
                $value = (int) $value;
@@ -2369,7 +2113,7 @@ function _count_posts_cache_key( $type = 'post', $perm = '' ) {
  *
  * @since 2.5.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $type Optional. Post type to retrieve count. Default 'post'.
  * @param string $perm Optional. 'readable' or empty. Default empty.
@@ -2434,7 +2178,7 @@ function wp_count_posts( $type = 'post', $perm = '' ) {
  *
  * @since 2.5.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string|array $mime_type Optional. Array or comma-separated list of
  *                                MIME patterns. Default empty.
@@ -2447,7 +2191,7 @@ function wp_count_attachments( $mime_type = '' ) {
        $count = $wpdb->get_results( "SELECT post_mime_type, COUNT( * ) AS num_posts FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status != 'trash' $and GROUP BY post_mime_type", ARRAY_A );
 
        $counts = array();
-       foreach( (array) $count as $row ) {
+       foreach ( (array) $count as $row ) {
                $counts[ $row['post_mime_type'] ] = $row['num_posts'];
        }
        $counts['trash'] = $wpdb->get_var( "SELECT COUNT( * ) FROM $wpdb->posts WHERE post_type = 'attachment' AND post_status = 'trash' $and");
@@ -2624,6 +2368,20 @@ function wp_delete_post( $postid = 0, $force_delete = false ) {
        if ( $post->post_type == 'attachment' )
                return wp_delete_attachment( $postid, $force_delete );
 
+       /**
+        * Filter whether a post deletion should take place.
+        *
+        * @since 4.4.0
+        *
+        * @param bool    $delete       Whether to go forward with deletion.
+        * @param WP_Post $post         Post object.
+        * @param bool    $force_delete Whether to bypass the trash.
+        */
+       $check = apply_filters( 'pre_delete_post', null, $post, $force_delete );
+       if ( null !== $check ) {
+               return $check;
+       }
+
        /**
         * Fires before a post is deleted, at the start of wp_delete_post().
         *
@@ -2660,9 +2418,14 @@ function wp_delete_post( $postid = 0, $force_delete = false ) {
        // Point all attachments to this post up one level.
        $wpdb->update( $wpdb->posts, $parent_data, $parent_where + array( 'post_type' => 'attachment' ) );
 
+       wp_defer_comment_counting( true );
+
        $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $postid ));
-       foreach ( $comment_ids as $comment_id )
+       foreach ( $comment_ids as $comment_id ) {
                wp_delete_comment( $comment_id, true );
+       }
+
+       wp_defer_comment_counting( false );
 
        $post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $postid ));
        foreach ( $post_meta_ids as $mid )
@@ -2778,7 +2541,7 @@ function wp_trash_post( $post_id = 0 ) {
        add_post_meta($post_id,'_wp_trash_meta_time', time());
 
        $post['post_status'] = 'trash';
-       wp_insert_post($post);
+       wp_insert_post( wp_slash( $post ) );
 
        wp_trash_post_comments($post_id);
 
@@ -2825,7 +2588,7 @@ function wp_untrash_post( $post_id = 0 ) {
        delete_post_meta($post_id, '_wp_trash_meta_status');
        delete_post_meta($post_id, '_wp_trash_meta_time');
 
-       wp_insert_post($post);
+       wp_insert_post( wp_slash( $post ) );
 
        wp_untrash_post_comments($post_id);
 
@@ -2902,7 +2665,7 @@ function wp_trash_post_comments( $post = null ) {
  *
  * @since 2.9.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int|WP_Post|null $post Optional. Post ID or post object. Defaults to global $post.
  * @return true|void
@@ -2993,7 +2756,7 @@ function wp_get_post_categories( $post_id = 0, $args = array() ) {
  * @since 2.3.0
  *
  * @param int   $post_id Optional. The Post ID. Does not default to the ID of the
- *                       global $post. Defualt 0.
+ *                       global $post. Default 0.
  * @param array $args Optional. Overwrite the defaults
  * @return array List of post tags.
  */
@@ -3062,7 +2825,7 @@ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) {
 
        // Backward compatibility. Prior to 3.1 expected posts to be returned in array.
        if ( ARRAY_A == $output ){
-               foreach( $results as $key => $result ) {
+               foreach ( $results as $key => $result ) {
                        $results[$key] = get_object_vars( $result );
                }
                return $results ? $results : array();
@@ -3083,6 +2846,7 @@ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) {
  *
  * @since 1.0.0
  * @since 4.2.0 Support was added for encoding emoji in the post title, content, and excerpt.
+ * @since 4.4.0 A 'meta_input' array can now be passed to `$postarr` to add post meta data.
  *
  * @see sanitize_post()
  * @global wpdb $wpdb WordPress database abstraction object.
@@ -3121,6 +2885,8 @@ function wp_get_recent_posts( $args = array(), $output = ARRAY_A ) {
  *     @type int    $menu_order            The order the post should be displayed in. Default 0.
  *     @type string $post_mime_type        The mime type of the post. Default empty.
  *     @type string $guid                  Global Unique ID for referencing the post. Default empty.
+ *     @type array  $tax_input             Array of taxonomy terms keyed by their taxonomy name. Default empty.
+ *     @type array  $meta_input            Array of post meta values keyed by their post meta key. Default empty.
  * }
  * @param bool  $wp_error Optional. Whether to allow return of WP_Error on failure. Default false.
  * @return int|WP_Error The post ID on success. The value 0 or WP_Error on failure.
@@ -3269,7 +3035,11 @@ function wp_insert_post( $postarr, $wp_error = false ) {
         * is not 'draft' or 'pending', set date to now.
         */
        if ( empty( $postarr['post_date'] ) || '0000-00-00 00:00:00' == $postarr['post_date'] ) {
-               $post_date = current_time( 'mysql' );
+               if ( empty( $postarr['post_date_gmt'] ) || '0000-00-00 00:00:00' == $postarr['post_date_gmt'] ) {
+                       $post_date = current_time( 'mysql' );
+               } else {
+                       $post_date = get_date_from_gmt( $postarr['post_date_gmt'] );
+               }
        } else {
                $post_date = $postarr['post_date'];
        }
@@ -3332,7 +3102,7 @@ function wp_insert_post( $postarr, $wp_error = false ) {
 
        // These variables are needed by compact() later.
        $post_content_filtered = $postarr['post_content_filtered'];
-       $post_author = empty( $postarr['post_author'] ) ? $user_id : $postarr['post_author'];
+       $post_author = isset( $postarr['post_author'] ) ? $postarr['post_author'] : $user_id;
        $ping_status = empty( $postarr['ping_status'] ) ? get_default_comment_status( $post_type, 'pingback' ) : $postarr['ping_status'];
        $to_ping = isset( $postarr['to_ping'] ) ? sanitize_trackback_urls( $postarr['to_ping'] ) : '';
        $pinged = isset( $postarr['pinged'] ) ? $postarr['pinged'] : '';
@@ -3381,7 +3151,7 @@ function wp_insert_post( $postarr, $wp_error = false ) {
 
        $emoji_fields = array( 'post_title', 'post_content', 'post_excerpt' );
 
-       foreach( $emoji_fields as $emoji_field ) {
+       foreach ( $emoji_fields as $emoji_field ) {
                if ( isset( $data[ $emoji_field ] ) ) {
                        $charset = $wpdb->get_col_charset( $wpdb->posts, $emoji_field );
                        if ( 'utf8' === $charset ) {
@@ -3470,6 +3240,12 @@ function wp_insert_post( $postarr, $wp_error = false ) {
        if ( ! empty( $postarr['tax_input'] ) ) {
                foreach ( $postarr['tax_input'] as $taxonomy => $tags ) {
                        $taxonomy_obj = get_taxonomy($taxonomy);
+                       if ( ! $taxonomy_obj ) {
+                               /* translators: %s: taxonomy name */
+                               _doing_it_wrong( __FUNCTION__, sprintf( __( 'Invalid taxonomy: %s.' ), $taxonomy ), '4.4.0' );
+                               continue;
+                       }
+
                        // array = hierarchical, string = non-hierarchical.
                        if ( is_array( $tags ) ) {
                                $tags = array_filter($tags);
@@ -3480,6 +3256,12 @@ function wp_insert_post( $postarr, $wp_error = false ) {
                }
        }
 
+       if ( ! empty( $postarr['meta_input'] ) ) {
+               foreach ( $postarr['meta_input'] as $field => $value ) {
+                       update_post_meta( $post_ID, $field, $value );
+               }
+       }
+
        $current_guid = get_post_field( 'guid', $post_ID );
 
        // Set GUID.
@@ -3526,6 +3308,18 @@ function wp_insert_post( $postarr, $wp_error = false ) {
                         * @param int $post_ID Attachment ID.
                         */
                        do_action( 'edit_attachment', $post_ID );
+                       $post_after = get_post( $post_ID );
+
+                       /**
+                        * Fires once an existing attachment has been updated.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param int     $post_ID      Post ID.
+                        * @param WP_Post $post_after   Post object following the update.
+                        * @param WP_Post $post_before  Post object before the update.
+                        */
+                       do_action( 'attachment_updated', $post_ID, $post_after, $post_before );
                } else {
 
                        /**
@@ -3731,7 +3525,7 @@ function check_and_publish_future_post( $post_id ) {
                return;
        }
 
-       // wp_publish_post(_ returns no meaninful value
+       // wp_publish_post(_ returns no meaningful value.
        wp_publish_post( $post_id );
 }
 
@@ -3907,10 +3701,10 @@ function _truncate_post_slug( $slug, $length = 200 ) {
  *
  * @since 2.3.0
  *
- * @param int    $post_id Optional. The Post ID. Does not default to the ID of the global $post.
- *                        Default 0.
- * @param string $tags    Optional. The tags to set for the post, separated by commas. Default empty.
- * @return array|false|WP_Error Will return false if $post_id is not an integer or is 0.
+ * @param int          $post_id Optional. The Post ID. Does not default to the ID of the global $post.
+ * @param string|array $tags    Optional. An array of tags to set for the post, or a string of tags
+ *                              separated by commas. Default empty.
+ * @return array|false|WP_Error Array of affected term IDs. WP_Error or false on failure.
  */
 function wp_add_post_tags( $post_id = 0, $tags = '' ) {
        return wp_set_post_tags($post_id, $tags, true);
@@ -3923,11 +3717,11 @@ function wp_add_post_tags( $post_id = 0, $tags = '' ) {
  *
  * @see wp_set_object_terms()
  *
- * @param int    $post_id Optional. The Post ID. Does not default to the ID of the global $post.
- * @param string $tags    Optional. The tags to set for the post, separated by commas.
- *                        Default empty.
- * @param bool   $append  Optional. If true, don't delete existing tags, just add on. If false,
- *                        replace the tags with the new tags. Default false.
+ * @param int          $post_id Optional. The Post ID. Does not default to the ID of the global $post.
+ * @param string|array $tags    Optional. An array of tags to set for the post, or a string of tags
+ *                              separated by commas. Default empty.
+ * @param bool         $append  Optional. If true, don't delete existing tags, just add on. If false,
+ *                              replace the tags with the new tags. Default false.
  * @return array|false|WP_Error Array of affected term IDs. WP_Error or false on failure.
  */
 function wp_set_post_tags( $post_id = 0, $tags = '', $append = false ) {
@@ -3941,11 +3735,12 @@ function wp_set_post_tags( $post_id = 0, $tags = '', $append = false ) {
  *
  * @see wp_set_object_terms()
  *
- * @param int    $post_id  Optional. The Post ID. Does not default to the ID of the global $post.
- * @param string $tags     Optional. The tags to set for the post, separated by commas. Default empty.
- * @param string $taxonomy Optional. Taxonomy name. Default 'post_tag'.
- * @param bool   $append   Optional. If true, don't delete existing tags, just add on. If false,
- *                         replace the tags with the new tags. Default false.
+ * @param int          $post_id  Optional. The Post ID. Does not default to the ID of the global $post.
+ * @param string|array $tags     Optional. An array of terms to set for the post, or a string of terms
+ *                               separated by commas. Default empty.
+ * @param string       $taxonomy Optional. Taxonomy name. Default 'post_tag'.
+ * @param bool         $append   Optional. If true, don't delete existing terms, just add on. If false,
+ *                               replace the terms with the new terms. Default false.
  * @return array|false|WP_Error Array of affected term IDs. WP_Error or false on failure.
  */
 function wp_set_post_terms( $post_id = 0, $tags = '', $taxonomy = 'post_tag', $append = false ) {
@@ -4132,7 +3927,7 @@ function get_enclosed( $post_id ) {
        foreach ( $custom_fields as $key => $val ) {
                if ( 'enclosure' != $key || !is_array( $val ) )
                        continue;
-               foreach( $val as $enc ) {
+               foreach ( $val as $enc ) {
                        $enclosure = explode( "\n", $enc );
                        $pung[] = trim( $enclosure[ 0 ] );
                }
@@ -4222,7 +4017,7 @@ function trackback_url_list( $tb_list, $post_id ) {
                }
 
                $trackback_urls = explode( ',', $tb_list );
-               foreach( (array) $trackback_urls as $tb_url ) {
+               foreach ( (array) $trackback_urls as $tb_url ) {
                        $tb_url = trim( $tb_url );
                        trackback( $tb_url, wp_unslash( $postdata['post_title'] ), $excerpt, $post_id );
                }
@@ -4468,7 +4263,7 @@ function get_page_hierarchy( &$pages, $page_id = 0 ) {
  */
 function _page_traverse_name( $page_id, &$children, &$result ){
        if ( isset( $children[ $page_id ] ) ){
-               foreach( (array)$children[ $page_id ] as $child ) {
+               foreach ( (array)$children[ $page_id ] as $child ) {
                        $result[ $child->ID ] = $child->post_name;
                        _page_traverse_name( $child->ID, $children, $result );
                }
@@ -4494,10 +4289,21 @@ function get_page_uri( $page ) {
        $uri = $page->post_name;
 
        foreach ( $page->ancestors as $parent ) {
-               $uri = get_post( $parent )->post_name . '/' . $uri;
+               $parent = get_post( $parent );
+               if ( 'publish' === $parent->post_status ) {
+                       $uri = $parent->post_name . '/' . $uri;
+               }
        }
 
-       return $uri;
+       /**
+        * Filter the URI for a page.
+        *
+        * @since 4.4.0
+        *
+        * @param string  $uri  Page URI.
+        * @param WP_Post $page Page object.
+        */
+       return apply_filters( 'get_page_uri', $uri, $page );
 }
 
 /**
@@ -4510,15 +4316,18 @@ function get_page_uri( $page ) {
  * @param array|string $args {
  *     Optional. Array or string of arguments to retrieve pages.
  *
- *     @type int          $child_of     Page ID to return child and grandchild pages of.
- *                                      Default 0, or no restriction.
+ *     @type int          $child_of     Page ID to return child and grandchild pages of. Note: The value
+ *                                      of `$hierarchical` has no bearing on whether `$child_of` returns
+ *                                      hierarchical results. Default 0, or no restriction.
  *     @type string       $sort_order   How to sort retrieved pages. Accepts 'ASC', 'DESC'. Default 'ASC'.
  *     @type string       $sort_column  What columns to sort pages by, comma-separated. Accepts 'post_author',
  *                                      'post_date', 'post_title', 'post_name', 'post_modified', 'menu_order',
  *                                      'post_modified_gmt', 'post_parent', 'ID', 'rand', 'comment_count'.
  *                                      'post_' can be omitted for any values that start with it.
  *                                      Default 'post_title'.
- *     @type bool         $hierarchical Whether to return pages hierarchically. Default true.
+ *     @type bool         $hierarchical Whether to return pages hierarchically. If false in conjunction with
+ *                                      `$child_of` also being false, both arguments will be disregarded.
+ *                                      Default true.
  *     @type array        $exclude      Array of page IDs to exclude. Default empty array.
  *     @type array        $include      Array of page IDs to include. Cannot be used with `$child_of`,
  *                                      `$parent`, `$exclude`, `$meta_key`, `$meta_value`, or `$hierarchical`.
@@ -4527,8 +4336,7 @@ function get_page_uri( $page ) {
  *     @type string       $meta_value   Only include pages with this meta value. Requires `$meta_key`.
  *                                      Default empty.
  *     @type string       $authors      A comma-separated list of author IDs. Default empty.
- *     @type int          $parent       Page ID to return direct children of. `$hierarchical` must be false.
- *                                      Default -1, or no restriction.
+ *     @type int          $parent       Page ID to return direct children of. Default -1, or no restriction.
  *     @type string|array $exclude_tree Comma-separated string or array of page IDs to exclude.
  *                                      Default empty array.
  *     @type int          $number       The number of pages to return. Default 0, or all pages.
@@ -4757,7 +4565,7 @@ function get_pages( $args = array() ) {
 
        if ( ! empty( $r['exclude_tree'] ) ) {
                $exclude = wp_parse_id_list( $r['exclude_tree'] );
-               foreach( $exclude as $id ) {
+               foreach ( $exclude as $id ) {
                        $children = get_page_children( $id, $pages );
                        foreach ( $children as $child ) {
                                $exclude[] = $child->ID;
@@ -4914,9 +4722,14 @@ function wp_delete_attachment( $post_id, $force_delete = false ) {
        // Delete all for any posts.
        delete_metadata( 'post', null, '_thumbnail_id', $post_id, true );
 
+       wp_defer_comment_counting( true );
+
        $comment_ids = $wpdb->get_col( $wpdb->prepare( "SELECT comment_ID FROM $wpdb->comments WHERE comment_post_ID = %d", $post_id ));
-       foreach ( $comment_ids as $comment_id )
+       foreach ( $comment_ids as $comment_id ) {
                wp_delete_comment( $comment_id, true );
+       }
+
+       wp_defer_comment_counting( false );
 
        $post_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->postmeta WHERE post_id = %d ", $post_id ));
        foreach ( $post_meta_ids as $mid )
@@ -5241,7 +5054,8 @@ function wp_mime_type_icon( $mime = 0 ) {
                        $mime = (int) $mime;
                        if ( $post = get_post( $mime ) ) {
                                $post_id = (int) $post->ID;
-                               $ext = preg_replace('/^.+?\.([^.]+)$/', '$1', $post->guid);
+                               $file = get_attached_file( $post_id );
+                               $ext = preg_replace('/^.+?\.([^.]+)$/', '$1', $file);
                                if ( !empty($ext) ) {
                                        $post_mimes[] = $ext;
                                        if ( $ext_type = wp_ext2type( $ext ) )
@@ -5322,11 +5136,16 @@ function wp_mime_type_icon( $mime = 0 ) {
                $matches['default'] = array('default');
 
                foreach ( $matches as $match => $wilds ) {
-                       if ( isset($types[$wilds[0]])) {
-                               $icon = $types[$wilds[0]];
-                               if ( !is_numeric($mime) )
-                                       wp_cache_add("mime_type_icon_$mime", $icon);
-                               break;
+                       foreach ( $wilds as $wild ) {
+                               if ( ! isset( $types[ $wild ] ) ) {
+                                       continue;
+                               }
+
+                               $icon = $types[ $wild ];
+                               if ( ! is_numeric( $mime ) ) {
+                                       wp_cache_add( "mime_type_icon_$mime", $icon );
+                               }
+                               break 2;
                        }
                }
        }
@@ -5364,23 +5183,27 @@ function wp_mime_type_icon( $mime = 0 ) {
  * @param WP_Post $post_before The Previous Post Object
  */
 function wp_check_for_changed_slugs( $post_id, $post, $post_before ) {
-       // Don't bother if it hasnt changed.
-       if ( $post->post_name == $post_before->post_name )
+       // Don't bother if it hasn't changed.
+       if ( $post->post_name == $post_before->post_name ) {
                return;
+       }
 
        // We're only concerned with published, non-hierarchical objects.
-       if ( $post->post_status != 'publish' || is_post_type_hierarchical( $post->post_type ) )
+       if ( ! ( 'publish' === $post->post_status || ( 'attachment' === get_post_type( $post ) && 'inherit' === $post->post_status ) ) || is_post_type_hierarchical( $post->post_type ) ) {
                return;
+       }
 
-       $old_slugs = (array) get_post_meta($post_id, '_wp_old_slug');
+       $old_slugs = (array) get_post_meta( $post_id, '_wp_old_slug' );
 
        // If we haven't added this old slug before, add it now.
-       if ( !empty( $post_before->post_name ) && !in_array($post_before->post_name, $old_slugs) )
-               add_post_meta($post_id, '_wp_old_slug', $post_before->post_name);
+       if ( ! empty( $post_before->post_name ) && ! in_array( $post_before->post_name, $old_slugs ) ) {
+               add_post_meta( $post_id, '_wp_old_slug', $post_before->post_name );
+       }
 
        // If the new slug was used previously, delete it from the list.
-       if ( in_array($post->post_name, $old_slugs) )
-               delete_post_meta($post_id, '_wp_old_slug', $post->post_name);
+       if ( in_array( $post->post_name, $old_slugs ) ) {
+               delete_post_meta( $post_id, '_wp_old_slug', $post->post_name );
+       }
 }
 
 /**
@@ -5408,8 +5231,7 @@ function get_private_posts_cap_sql( $post_type ) {
  * @since 4.3.0 Introduced the ability to pass an array of post types to `$post_type`.
  *
  * @see get_private_posts_cap_sql()
- *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param array|string   $post_type   Single post type or an array of post types.
  * @param bool           $full        Optional. Returns a full WHERE statement instead of just
@@ -5493,22 +5315,27 @@ function get_posts_by_author_sql( $post_type, $full = true, $post_author = null,
  * 'gmt' is when the last post was posted in GMT formatted date.
  *
  * @since 0.71
- *
- * @param string $timezone The location to get the time. Accepts 'gmt', 'blog',
- *                         or 'server'. Default 'server'.
+ * @since 4.4.0 The `$post_type` argument was added.
+ *
+ * @param string $timezone  Optional. The timezone for the timestamp. Accepts 'server', 'blog', or 'gmt'.
+ *                          'server' uses the server's internal timezone.
+ *                          'blog' uses the `post_modified` field, which proxies to the timezone set for the site.
+ *                          'gmt' uses the `post_modified_gmt` field.
+ *                          Default 'server'.
+ * @param string $post_type Optional. The post type to check. Default 'any'.
  * @return string The date of the last post.
  */
-function get_lastpostdate( $timezone = 'server' ) {
+function get_lastpostdate( $timezone = 'server', $post_type = 'any' ) {
        /**
         * Filter the date the last post was published.
         *
         * @since 2.3.0
         *
-        * @param string $date     Date the last post was published. Likely values are 'gmt',
-        *                         'blog', or 'server'.
+        * @param string $date     Date the last post was published.
         * @param string $timezone Location to use for getting the post published date.
+        *                         See {@see get_lastpostdate()} for accepted `$timezone` values.
         */
-       return apply_filters( 'get_lastpostdate', _get_last_post_time( $timezone, 'date' ), $timezone );
+       return apply_filters( 'get_lastpostdate', _get_last_post_time( $timezone, 'date', $post_type ), $timezone );
 }
 
 /**
@@ -5519,20 +5346,37 @@ function get_lastpostdate( $timezone = 'server' ) {
  * 'gmt' is when the last post was modified in GMT time.
  *
  * @since 1.2.0
+ * @since 4.4.0 The `$post_type` argument was added.
  *
- * @param string $timezone Optional. The timezone for the timestamp. Uses the server's internal timezone.
- *                         Accepts 'server', 'blog', 'gmt'. or 'server'. 'server' uses the server's
- *                         internal timezone. 'blog' uses the `post_modified` field, which proxies
- *                         to the timezone set for the site. 'gmt' uses the `post_modified_gmt` field.
- *                         Default 'server'.
+ * @param string $timezone  Optional. The timezone for the timestamp. See {@see get_lastpostdate()}
+ *                          for information on accepted values.
+ *                          Default 'server'.
+ * @param string $post_type Optional. The post type to check. Default 'any'.
  * @return string The timestamp.
  */
-function get_lastpostmodified( $timezone = 'server' ) {
-       $lastpostmodified = _get_last_post_time( $timezone, 'modified' );
+function get_lastpostmodified( $timezone = 'server', $post_type = 'any' ) {
+       /**
+        * Pre-filter the return value of get_lastpostmodified() before the query is run.
+        *
+        * @since 4.4.0
+        *
+        * @param string $lastpostmodified Date the last post was modified.
+        *                                 Returning anything other than false will short-circuit the function.
+        * @param string $timezone         Location to use for getting the post modified date.
+        *                                 See {@see get_lastpostdate()} for accepted `$timezone` values.
+        * @param string $post_type        The post type to check.
+        */
+       $lastpostmodified = apply_filters( 'pre_get_lastpostmodified', false, $timezone, $post_type );
+       if ( false !== $lastpostmodified ) {
+               return $lastpostmodified;
+       }
+
+       $lastpostmodified = _get_last_post_time( $timezone, 'modified', $post_type );
 
        $lastpostdate = get_lastpostdate($timezone);
-       if ( $lastpostdate > $lastpostmodified )
+       if ( $lastpostdate > $lastpostmodified ) {
                $lastpostmodified = $lastpostdate;
+       }
 
        /**
         * Filter the date the last post was modified.
@@ -5541,7 +5385,7 @@ function get_lastpostmodified( $timezone = 'server' ) {
         *
         * @param string $lastpostmodified Date the last post was modified.
         * @param string $timezone         Location to use for getting the post modified date.
-        *                                 See {@see get_lastpostmodified()} for accepted `$timezone` values.
+        *                                 See {@see get_lastpostdate()} for accepted `$timezone` values.
         */
        return apply_filters( 'get_lastpostmodified', $lastpostmodified, $timezone );
 }
@@ -5550,33 +5394,41 @@ function get_lastpostmodified( $timezone = 'server' ) {
  * Get the timestamp of the last time any post was modified or published.
  *
  * @since 3.1.0
+ * @since 4.4.0 The `$post_type` argument was added.
  * @access private
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param string $timezone The timezone for the timestamp. See {@see get_lastpostmodified()}
- *                         for information on accepted values.
- * @param string $field    Post field to check. Accepts 'date' or 'modified'.
+ * @param string $timezone  The timezone for the timestamp. See get_lastpostdate().
+ *                          for information on accepted values.
+ * @param string $field     Post field to check. Accepts 'date' or 'modified'.
+ * @param string $post_type Optional. The post type to check. Default 'any'.
  * @return string|false The timestamp.
  */
-function _get_last_post_time( $timezone, $field ) {
+function _get_last_post_time( $timezone, $field, $post_type = 'any' ) {
        global $wpdb;
 
-       if ( !in_array( $field, array( 'date', 'modified' ) ) )
+       if ( ! in_array( $field, array( 'date', 'modified' ) ) ) {
                return false;
+       }
 
        $timezone = strtolower( $timezone );
 
        $key = "lastpost{$field}:$timezone";
+       if ( 'any' !== $post_type ) {
+               $key .= ':' . sanitize_key( $post_type );
+       }
 
        $date = wp_cache_get( $key, 'timeinfo' );
 
-       if ( !$date ) {
-               $add_seconds_server = date('Z');
-
-               $post_types = get_post_types( array( 'public' => true ) );
-               array_walk( $post_types, array( &$wpdb, 'escape_by_ref' ) );
-               $post_types = "'" . implode( "', '", $post_types ) . "'";
+       if ( ! $date ) {
+               if ( 'any' === $post_type ) {
+                       $post_types = get_post_types( array( 'public' => true ) );
+                       array_walk( $post_types, array( $wpdb, 'escape_by_ref' ) );
+                       $post_types = "'" . implode( "', '", $post_types ) . "'";
+               } else {
+                       $post_types = "'" . sanitize_key( $post_type ) . "'";
+               }
 
                switch ( $timezone ) {
                        case 'gmt':
@@ -5586,12 +5438,14 @@ function _get_last_post_time( $timezone, $field ) {
                                $date = $wpdb->get_var("SELECT post_{$field} FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1");
                                break;
                        case 'server':
+                               $add_seconds_server = date( 'Z' );
                                $date = $wpdb->get_var("SELECT DATE_ADD(post_{$field}_gmt, INTERVAL '$add_seconds_server' SECOND) FROM $wpdb->posts WHERE post_status = 'publish' AND post_type IN ({$post_types}) ORDER BY post_{$field}_gmt DESC LIMIT 1");
                                break;
                }
 
-               if ( $date )
+               if ( $date ) {
                        wp_cache_set( $key, $date, 'timeinfo' );
+               }
        }
 
        return $date;
@@ -5624,12 +5478,11 @@ function update_post_cache( &$posts ) {
  * @since 2.0.0
  *
  * @global bool $_wp_suspend_cache_invalidation
- * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int|WP_Post $post Post ID or post object to remove from the cache.
  */
 function clean_post_cache( $post ) {
-       global $_wp_suspend_cache_invalidation, $wpdb;
+       global $_wp_suspend_cache_invalidation;
 
        if ( ! empty( $_wp_suspend_cache_invalidation ) )
                return;
@@ -5814,6 +5667,7 @@ function _transition_post_status( $new_status, $old_status, $post ) {
                foreach ( array( 'server', 'gmt', 'blog' ) as $timezone ) {
                        wp_cache_delete( "lastpostmodified:$timezone", 'timeinfo' );
                        wp_cache_delete( "lastpostdate:$timezone", 'timeinfo' );
+                       wp_cache_delete( "lastpostdate:$timezone:{$post->post_type}", 'timeinfo' );
                }
        }
 
@@ -6018,9 +5872,9 @@ function _update_term_count_on_transition_post_status( $new_status, $old_status,
  *
  * @see update_post_caches()
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param array $ids               ID list
+ * @param array $ids               ID list.
  * @param bool  $update_term_cache Optional. Whether to update the term cache. Default true.
  * @param bool  $update_meta_cache Optional. Whether to update the meta cache. Default true.
  */
index 7cbac9db8886aa6a9134003bf55f95e6ab9684be..a2b236540e9e86410fcb2e487b3093e2ea154b3c 100644 (file)
  * Retrieve variable in the WP_Query class.
  *
  * @since 1.5.0
+ * @since 3.9.0 The `$default` argument was introduced.
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @param string $var       The variable key to retrieve.
- * @param mixed  $default   Value to return if the query variable is not set. Default ''.
- * @return mixed
+ * @param mixed  $default   Optional. Value to return if the query variable is not set. Default empty.
+ * @return mixed Contents of the query variable.
  */
 function get_query_var( $var, $default = '' ) {
        global $wp_query;
@@ -28,14 +29,16 @@ function get_query_var( $var, $default = '' ) {
 }
 
 /**
- * Retrieve the currently-queried object. Wrapper for $wp_query->get_queried_object()
+ * Retrieve the currently-queried object.
+ *
+ * Wrapper for WP_Query::get_queried_object().
  *
  * @since 3.1.0
  * @access public
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
- * @return object
+ * @return object Queried object.
  */
 function get_queried_object() {
        global $wp_query;
@@ -43,14 +46,15 @@ function get_queried_object() {
 }
 
 /**
- * Retrieve ID of the current queried object. Wrapper for $wp_query->get_queried_object_id()
+ * Retrieve ID of the current queried object.
+ *
+ * Wrapper for WP_Query::get_queried_object_id().
  *
  * @since 3.1.0
- * @access public
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
- * @return int
+ * @return int ID of the queried object.
  */
 function get_queried_object_id() {
        global $wp_query;
@@ -62,10 +66,10 @@ function get_queried_object_id() {
  *
  * @since 2.2.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @param string $var   Query variable key.
- * @param mixed  $value
+ * @param mixed  $value Query variable value.
  */
 function set_query_var( $var, $value ) {
        global $wp_query;
@@ -80,7 +84,7 @@ function set_query_var( $var, $value ) {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @param string $query
  * @return array List of posts
@@ -99,8 +103,8 @@ function query_posts($query) {
  *
  * @since 2.3.0
  *
- * @global WP_Query $wp_query
- * @global WP_Query $wp_the_query
+ * @global WP_Query $wp_query     Global WP_Query instance.
+ * @global WP_Query $wp_the_query Copy of the global WP_Query instance created during wp_reset_query().
  */
 function wp_reset_query() {
        $GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
@@ -113,7 +117,7 @@ function wp_reset_query() {
  *
  * @since 3.0.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  */
 function wp_reset_postdata() {
        global $wp_query;
@@ -134,7 +138,7 @@ function wp_reset_postdata() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -154,7 +158,7 @@ function is_archive() {
  *
  * @since 3.1.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @param string|array $post_types Optional. Post type or array of posts types to check against.
  * @return bool
@@ -175,7 +179,7 @@ function is_post_type_archive( $post_types = '' ) {
  *
  * @since 2.0.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @param int|string|array|object $attachment Attachment ID, title, slug, or array of such.
  * @return bool
@@ -199,7 +203,7 @@ function is_attachment( $attachment = '' ) {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @param mixed $author Optional. User ID, nickname, nicename, or array of User IDs, nicknames, and nicenames
  * @return bool
@@ -223,7 +227,7 @@ function is_author( $author = '' ) {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @param mixed $category Optional. Category ID, name, slug, or array of Category IDs, names, and slugs.
  * @return bool
@@ -247,7 +251,7 @@ function is_category( $category = '' ) {
  *
  * @since 2.3.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @param mixed $tag Optional. Tag ID, name, slug, or array of Tag IDs, names, and slugs.
  * @return bool
@@ -275,7 +279,7 @@ function is_tag( $tag = '' ) {
  *
  * @since 2.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @param string|array     $taxonomy Optional. Taxonomy slug or slugs.
  * @param int|string|array $term     Optional. Term ID, name, slug or array of Term IDs, names, and slugs.
@@ -297,7 +301,7 @@ function is_tax( $taxonomy = '', $term = '' ) {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -317,7 +321,7 @@ function is_comments_popup() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -337,7 +341,7 @@ function is_date() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -357,7 +361,7 @@ function is_day() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @param string|array $feeds Optional feed types to check.
  * @return bool
@@ -378,7 +382,7 @@ function is_feed( $feeds = '' ) {
  *
  * @since 3.0.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -407,7 +411,7 @@ function is_comment_feed() {
  *
  * @since 2.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool True, if front of site.
  */
@@ -436,7 +440,7 @@ function is_front_page() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool True if blog view homepage.
  */
@@ -456,7 +460,7 @@ function is_home() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -482,10 +486,10 @@ function is_month() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
- * @param mixed $page Page ID, title, slug, or array of such.
- * @return bool
+ * @param int|string|array $page Optional. Page ID, title, slug, or array of such. Default empty.
+ * @return bool Whether the query is for an existing single page.
  */
 function is_page( $page = '' ) {
        global $wp_query;
@@ -503,7 +507,7 @@ function is_page( $page = '' ) {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -523,7 +527,7 @@ function is_paged() {
  *
  * @since 2.0.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -543,7 +547,7 @@ function is_preview() {
  *
  * @since 2.1.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -563,7 +567,7 @@ function is_robots() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -591,10 +595,10 @@ function is_search() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
- * @param mixed $post Post ID, title, slug, or array of such.
- * @return bool
+ * @param int|string|array $post Optional. Post ID, title, slug, or array of such. Default empty.
+ * @return bool Whether the query is for an existing single post.
  */
 function is_single( $post = '' ) {
        global $wp_query;
@@ -618,10 +622,10 @@ function is_single( $post = '' ) {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
- * @param mixed $post_types Optional. Post Type or array of Post Types
- * @return bool
+ * @param string|array $post_types Optional. Post type or array of post types. Default empty.
+ * @return bool Whether the query is for an existing single post of any of the given post types.
  */
 function is_singular( $post_types = '' ) {
        global $wp_query;
@@ -639,7 +643,7 @@ function is_singular( $post_types = '' ) {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -659,7 +663,7 @@ function is_time() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -679,7 +683,7 @@ function is_trackback() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -699,7 +703,7 @@ function is_year() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -714,19 +718,45 @@ function is_404() {
        return $wp_query->is_404();
 }
 
+/**
+ * Is the query for an embedded post?
+ *
+ * @since 4.4.0
+ *
+ * @global WP_Query $wp_query Global WP_Query instance.
+ *
+ * @return bool Whether we're in an embedded post or not.
+ */
+function is_embed() {
+       global $wp_query;
+
+       if ( ! isset( $wp_query ) ) {
+               _doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1' );
+               return false;
+       }
+
+       return $wp_query->is_embed();
+}
+
 /**
  * Is the query the main query?
  *
  * @since 3.3.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
 function is_main_query() {
        if ( 'pre_get_posts' === current_filter() ) {
-               $message = sprintf( __( 'In <code>%1$s</code>, use the <code>%2$s</code> method, not the <code>%3$s</code> function. See %4$s.' ),
-                       'pre_get_posts', 'WP_Query::is_main_query()', 'is_main_query()', __( 'https://codex.wordpress.org/Function_Reference/is_main_query' ) );
+               $message = sprintf(
+                       /* translators: 1: pre_get_posts 2: WP_Query->is_main_query() 3: is_main_query() 4: link to codex is_main_query() page. */
+                       __( 'In %1$s, use the %2$s method, not the %3$s function. See %4$s.' ),
+                       '<code>pre_get_posts</code>',
+                       '<code>WP_Query->is_main_query()</code>',
+                       '<code>is_main_query()</code>',
+                       __( 'https://codex.wordpress.org/Function_Reference/is_main_query' )
+               );
                _doing_it_wrong( __FUNCTION__, $message, '3.7' );
        }
 
@@ -743,7 +773,7 @@ function is_main_query() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -757,7 +787,7 @@ function have_posts() {
  *
  * @since 2.0.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool True if caller is within loop, false if loop hasn't started or ended.
  */
@@ -771,7 +801,7 @@ function in_the_loop() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  */
 function rewind_posts() {
        global $wp_query;
@@ -783,7 +813,7 @@ function rewind_posts() {
  *
  * @since 1.5.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  */
 function the_post() {
        global $wp_query;
@@ -799,7 +829,7 @@ function the_post() {
  *
  * @since 2.2.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return bool
  */
@@ -813,7 +843,7 @@ function have_comments() {
  *
  * @since 2.2.0
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
  * @return object
  */
@@ -1190,6 +1220,15 @@ class WP_Query {
         */
        public $is_404 = false;
 
+       /**
+        * Set if query is embed.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var bool
+        */
+       public $is_embed = false;
+
        /**
         * Set if query is within comments popup window.
         *
@@ -1292,6 +1331,24 @@ class WP_Query {
         */
         public $thumbnails_cached = false;
 
+       /**
+        * Whether the term meta cache for matched posts has been primed.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var bool
+        */
+       public $updated_term_meta_cache = false;
+
+       /**
+        * Whether the comment meta cache for matched posts has been primed.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var bool
+        */
+       public $updated_comment_meta_cache = false;
+
        /**
         * Cached list of search stopwords.
         *
@@ -1425,6 +1482,7 @@ class WP_Query {
                        , 'preview'
                        , 's'
                        , 'sentence'
+                       , 'title'
                        , 'fields'
                        , 'menu_order'
                );
@@ -1434,7 +1492,7 @@ class WP_Query {
                                $array[$key] = '';
                }
 
-               $array_keys = array( 'category__in', 'category__not_in', 'category__and', 'post__in', 'post__not_in',
+               $array_keys = array( 'category__in', 'category__not_in', 'category__and', 'post__in', 'post__not_in', 'post_name__in',
                        'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and', 'post_parent__in', 'post_parent__not_in',
                        'author__in', 'author__not_in' );
 
@@ -1451,6 +1509,8 @@ class WP_Query {
         * @since 1.5.0
         * @since 4.2.0 Introduced the ability to order by specific clauses of a `$meta_query`, by passing the clause's
         *              array key to `$orderby`.
+        * @since 4.4.0 Introduced `$post_name__in` and `$title` parameters. `$s` was updated to support excluded
+        *              search terms, by prepending a hyphen.
         * @access public
         *
         * @param string|array $query {
@@ -1504,8 +1564,8 @@ class WP_Query {
         *                                                 specific `$meta_query` clause, use that clause's array key.
         *                                                 Default 'date'. Accepts 'none', 'name', 'author', 'date',
         *                                                 'title', 'modified', 'menu_order', 'parent', 'ID', 'rand',
-        *                                                 'comment_count', 'meta_value', 'meta_value_num', and the
-        *                                                 array keys of `$meta_query`.
+        *                                                 'comment_count', 'meta_value', 'meta_value_num', 'post__in',
+        *                                                 and the array keys of `$meta_query`.
         *     @type int          $p                       Post ID.
         *     @type int          $page                    Show the number of posts that would show up on page X of a
         *                                                 static front page.
@@ -1527,9 +1587,11 @@ class WP_Query {
         *     @type int          $posts_per_page          The number of posts to query for. Use -1 to request all posts.
         *     @type int          $posts_per_archive_page  The number of posts to query for by archive page. Overrides
         *                                                 'posts_per_page' when is_archive(), or is_search() are true.
-        *     @type string       $s                       Search keyword.
+        *     @type array        $post_name__in           An array of post slugs that results must match.
+        *     @type string       $s                       Search keyword(s). Prepending a term with a hyphen will
+        *                                                 exclude posts matching that term. Eg, 'pillow -sofa' will
+        *                                                 return posts containing 'pillow' but not 'sofa'.
         *     @type int          $second                  Second of the minute. Default empty. Accepts numbers 0-60.
-        *     @type array        $search_terms            Array of search terms.
         *     @type bool         $sentence                Whether to search by phrase. Default false.
         *     @type bool         $suppress_filters        Whether to suppress filters. Default false.
         *     @type string       $tag                     Tag slug. Comma-separated (either), Plus-separated (all).
@@ -1542,6 +1604,7 @@ class WP_Query {
         *                                                 true. Note: a string of comma-separated IDs will NOT work.
         *     @type array        $tax_query               An associative array of WP_Tax_Query arguments.
         *                                                 {@see WP_Tax_Query->queries}
+        *     @type string       $title                   Post title.
         *     @type bool         $update_post_meta_cache  Whether to update the post meta cache. Default true.
         *     @type bool         $update_post_term_cache  Whether to update the post term cache. Default true.
         *     @type int          $w                       The week number of the year. Default empty. Accepts numbers 0-53.
@@ -1575,6 +1638,7 @@ class WP_Query {
                $qv['author'] = preg_replace( '|[^0-9,-]|', '', $qv['author'] ); // comma separated list of positive or negative integers
                $qv['pagename'] = trim( $qv['pagename'] );
                $qv['name'] = trim( $qv['name'] );
+               $qv['title'] = trim( $qv['title'] );
                if ( '' !== $qv['hour'] ) $qv['hour'] = absint($qv['hour']);
                if ( '' !== $qv['minute'] ) $qv['minute'] = absint($qv['minute']);
                if ( '' !== $qv['second'] ) $qv['second'] = absint($qv['second']);
@@ -1747,7 +1811,7 @@ class WP_Query {
                if ( $this->is_feed && ( !empty($qv['withcomments']) || ( empty($qv['withoutcomments']) && $this->is_singular ) ) )
                        $this->is_comment_feed = true;
 
-               if ( !( $this->is_singular || $this->is_archive || $this->is_search || $this->is_feed || $this->is_trackback || $this->is_404 || $this->is_admin || $this->is_comments_popup || $this->is_robots ) )
+               if ( !( $this->is_singular || $this->is_archive || $this->is_search || $this->is_feed || ( defined( 'REST_REQUEST' ) && REST_REQUEST ) || $this->is_trackback || $this->is_404 || $this->is_admin || $this->is_comments_popup || $this->is_robots ) )
                        $this->is_home = true;
 
                // Correct is_* for page_on_front and page_for_posts
@@ -1769,11 +1833,25 @@ class WP_Query {
                }
 
                if ( '' != $qv['pagename'] ) {
-                       $this->queried_object = get_page_by_path($qv['pagename']);
-                       if ( !empty($this->queried_object) )
+                       $this->queried_object = get_page_by_path( $qv['pagename'] );
+
+                       if ( $this->queried_object && 'attachment' == $this->queried_object->post_type ) {
+                               if ( preg_match( "/^[^%]*%(?:postname)%/", get_option( 'permalink_structure' ) ) ) {
+                                       // See if we also have a post with the same slug
+                                       $post = get_page_by_path( $qv['pagename'], OBJECT, 'post' );
+                                       if ( $post ) {
+                                               $this->queried_object = $post;
+                                               $this->is_page = false;
+                                               $this->is_single = true;
+                                       }
+                               }
+                       }
+
+                       if ( ! empty( $this->queried_object ) ) {
                                $this->queried_object_id = (int) $this->queried_object->ID;
-                       else
-                               unset($this->queried_object);
+                       } else {
+                               unset( $this->queried_object );
+                       }
 
                        if  ( 'page' == get_option('show_on_front') && isset($this->queried_object_id) && $this->queried_object_id == get_option('page_for_posts') ) {
                                $this->is_page = false;
@@ -1813,6 +1891,8 @@ class WP_Query {
                if ( '404' == $qv['error'] )
                        $this->set_404();
 
+               $this->is_embed = isset( $qv['embed'] ) && ( $this->is_singular || $this->is_404 );
+
                $this->query_vars_hash = md5( serialize( $this->query_vars ) );
                $this->query_vars_changed = false;
 
@@ -1886,6 +1966,11 @@ class WP_Query {
                        }
                }
 
+               // If querystring 'cat' is an array, implode it.
+               if ( is_array( $q['cat'] ) ) {
+                       $q['cat'] = implode( ',', $q['cat'] );
+               }
+
                // Category stuff
                if ( ! empty( $q['cat'] ) && ! $this->is_singular ) {
                        $cat_in = $cat_not_in = array();
@@ -1961,6 +2046,11 @@ class WP_Query {
                        );
                }
 
+               // If querystring 'tag' is array, implode it.
+               if ( is_array( $q['tag'] ) ) {
+                       $q['tag'] = implode( ',', $q['tag'] );
+               }
+
                // Tag stuff
                if ( '' != $q['tag'] && !$this->is_singular && $this->query_vars_changed ) {
                        if ( strpos($q['tag'], ',') !== false ) {
@@ -2051,7 +2141,8 @@ class WP_Query {
         *
         * @since 3.7.0
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
+        *
         * @param array $q Query variables.
         * @return string WHERE clause.
         */
@@ -2085,13 +2176,24 @@ class WP_Query {
                $searchand = '';
                $q['search_orderby_title'] = array();
                foreach ( $q['search_terms'] as $term ) {
-                       if ( $n ) {
+                       // Terms prefixed with '-' should be excluded.
+                       $include = '-' !== substr( $term, 0, 1 );
+                       if ( $include ) {
+                               $like_op  = 'LIKE';
+                               $andor_op = 'OR';
+                       } else {
+                               $like_op  = 'NOT LIKE';
+                               $andor_op = 'AND';
+                               $term     = substr( $term, 1 );
+                       }
+
+                       if ( $n && $include ) {
                                $like = '%' . $wpdb->esc_like( $term ) . '%';
                                $q['search_orderby_title'][] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $like );
                        }
 
                        $like = $n . $wpdb->esc_like( $term ) . $n;
-                       $search .= $wpdb->prepare( "{$searchand}(($wpdb->posts.post_title LIKE %s) OR ($wpdb->posts.post_content LIKE %s))", $like, $like );
+                       $search .= $wpdb->prepare( "{$searchand}(($wpdb->posts.post_title $like_op %s) $andor_op ($wpdb->posts.post_content $like_op %s))", $like, $like );
                        $searchand = ' AND ';
                }
 
@@ -2161,7 +2263,7 @@ class WP_Query {
                        'Comma-separated list of search stopwords in your language' ) );
 
                $stopwords = array();
-               foreach( $words as $word ) {
+               foreach ( $words as $word ) {
                        $word = trim( $word, "\r\n\t " );
                        if ( $word )
                                $stopwords[] = $word;
@@ -2181,7 +2283,7 @@ class WP_Query {
        /**
         * Generate SQL for the ORDER BY condition based on passed search terms.
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @param array $q Query variables.
         * @return string ORDER BY clause.
@@ -2191,11 +2293,19 @@ class WP_Query {
 
                if ( $q['search_terms_count'] > 1 ) {
                        $num_terms = count( $q['search_orderby_title'] );
-                       $like = '%' . $wpdb->esc_like( $q['s'] ) . '%';
+
+                       // If the search terms contain negative queries, don't bother ordering by sentence matches.
+                       $like = '';
+                       if ( ! preg_match( '/(?:\s|^)\-/', $q['s'] ) ) {
+                               $like = '%' . $wpdb->esc_like( $q['s'] ) . '%';
+                       }
 
                        $search_orderby = '(CASE ';
+
                        // sentence match in 'post_title'
-                       $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_title LIKE %s THEN 1 ", $like );
+                       if ( $like ) {
+                               $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_title LIKE %s THEN 1 ", $like );
+                       }
 
                        // sanity limit, sort as sentence when more than 6 terms
                        // (few searches are longer than 6 terms and most titles are not)
@@ -2208,7 +2318,9 @@ class WP_Query {
                        }
 
                        // sentence match in 'post_content'
-                       $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_content LIKE %s THEN 4 ", $like );
+                       if ( $like ) {
+                               $search_orderby .= $wpdb->prepare( "WHEN $wpdb->posts.post_content LIKE %s THEN 4 ", $like );
+                       }
                        $search_orderby .= 'ELSE 5 END)';
                } else {
                        // single word or sentence search
@@ -2256,7 +2368,7 @@ class WP_Query {
                        $allowed_keys   = array_merge( $allowed_keys, array_keys( $meta_clauses ) );
                }
 
-               if ( ! in_array( $orderby, $allowed_keys ) ) {
+               if ( ! in_array( $orderby, $allowed_keys, true ) ) {
                        return false;
                }
 
@@ -2343,11 +2455,13 @@ class WP_Query {
         * Retrieve query variable.
         *
         * @since 1.5.0
+        * @since 3.9.0 The `$default` argument was introduced.
+        *
         * @access public
         *
         * @param string $query_var Query variable key.
-        * @param mixed  $default   Value to return if the query variable is not set. Default ''.
-        * @return mixed
+        * @param mixed  $default   Optional. Value to return if the query variable is not set. Default empty.
+        * @return mixed Contents of the query variable.
         */
        public function get( $query_var, $default = '' ) {
                if ( isset( $this->query_vars[ $query_var ] ) ) {
@@ -2379,7 +2493,7 @@ class WP_Query {
         * @since 1.5.0
         * @access public
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         *
         * @return array List of posts.
         */
@@ -2603,6 +2717,11 @@ class WP_Query {
                        unset($ptype_obj);
                }
 
+               if ( '' !== $q['title'] ) {
+                       $where .= $wpdb->prepare( " AND $wpdb->posts.post_title = %s", stripslashes( $q['title'] ) );
+               }
+
+               // Parameters related to 'post_name'.
                if ( '' != $q['name'] ) {
                        $q['name'] = sanitize_title_for_query( $q['name'] );
                        $where .= " AND $wpdb->posts.post_name = '" . $q['name'] . "'";
@@ -2647,9 +2766,11 @@ class WP_Query {
                        $q['attachment'] = sanitize_title_for_query( wp_basename( $q['attachment'] ) );
                        $q['name'] = $q['attachment'];
                        $where .= " AND $wpdb->posts.post_name = '" . $q['attachment'] . "'";
+               } elseif ( is_array( $q['post_name__in'] ) && ! empty( $q['post_name__in'] ) ) {
+                       $q['post_name__in'] = array_map( 'sanitize_title_for_query', $q['post_name__in'] );
+                       $where .= " AND $wpdb->posts.post_name IN ('" . implode( "' ,'", $q['post_name__in'] ) . "')";
                }
 
-
                if ( intval($q['comments_popup']) )
                        $q['p'] = absint($q['comments_popup']);
 
@@ -3089,11 +3210,12 @@ class WP_Query {
                        if ( !$page )
                                $page = 1;
 
-                       if ( empty($q['offset']) ) {
-                               $pgstrt = absint( ( $page - 1 ) * $q['posts_per_page'] ) . ', ';
-                       } else { // we're ignoring $page and using 'offset'
-                               $q['offset'] = absint($q['offset']);
+                       // If 'offset' is provided, it takes precedence over 'paged'.
+                       if ( isset( $q['offset'] ) && is_numeric( $q['offset'] ) ) {
+                               $q['offset'] = absint( $q['offset'] );
                                $pgstrt = $q['offset'] . ', ';
+                       } else {
+                               $pgstrt = absint( ( $page - 1 ) * $q['posts_per_page'] ) . ', ';
                        }
                        $limits = 'LIMIT ' . $pgstrt . $q['posts_per_page'];
                }
@@ -3164,7 +3286,9 @@ class WP_Query {
                        $cgroupby = ( ! empty( $cgroupby ) ) ? 'GROUP BY ' . $cgroupby : '';
                        $corderby = ( ! empty( $corderby ) ) ? 'ORDER BY ' . $corderby : '';
 
-                       $this->comments = (array) $wpdb->get_results("SELECT $distinct $wpdb->comments.* FROM $wpdb->comments $cjoin $cwhere $cgroupby $corderby $climits");
+                       $comments = (array) $wpdb->get_results("SELECT $distinct $wpdb->comments.* FROM $wpdb->comments $cjoin $cwhere $cgroupby $corderby $climits");
+                       // Convert to WP_Comment
+                       $this->comments = array_map( 'get_comment', $comments );
                        $this->comment_count = count($this->comments);
 
                        $post_ids = array();
@@ -3504,6 +3628,11 @@ class WP_Query {
                if ( $this->posts )
                        $this->posts = array_map( 'get_post', $this->posts );
 
+
+               if ( $q['update_post_term_cache'] ) {
+                       add_filter( 'get_term_metadata', array( $this, 'lazyload_term_meta' ), 10, 2 );
+               }
+
                if ( ! $q['suppress_filters'] ) {
                        /**
                         * Filter the raw post results array, prior to status checks.
@@ -3535,13 +3664,20 @@ class WP_Query {
                        $climits = apply_filters_ref_array( 'comment_feed_limits', array( 'LIMIT ' . get_option('posts_per_rss'), &$this ) );
 
                        $comments_request = "SELECT $wpdb->comments.* FROM $wpdb->comments $cjoin $cwhere $cgroupby $corderby $climits";
-                       $this->comments = $wpdb->get_results($comments_request);
+                       $comments = $wpdb->get_results($comments_request);
+                       // Convert to WP_Comment
+                       $this->comments = array_map( 'get_comment', $comments );
                        $this->comment_count = count($this->comments);
                }
 
                // Check post status to determine if post should be displayed.
                if ( !empty($this->posts) && ($this->is_single || $this->is_page) ) {
                        $status = get_post_status($this->posts[0]);
+                       if ( 'attachment' === $this->posts[0]->post_type && 0 === (int) $this->posts[0]->post_parent ) {
+                               $this->is_page = false;
+                               $this->is_single = true;
+                               $this->is_attachment = true;
+                       }
                        $post_status_obj = get_post_status_object($status);
                        //$type = get_post_type($this->posts[0]);
 
@@ -3624,6 +3760,11 @@ class WP_Query {
                        }
                }
 
+               // If comments have been fetched as part of the query, make sure comment meta lazy-loading is set up.
+               if ( ! empty( $this->comments ) ) {
+                       add_filter( 'get_comment_metadata', array( $this, 'lazyload_comment_meta' ), 10, 2 );
+               }
+
                if ( ! $q['suppress_filters'] ) {
                        /**
                         * Filter the array of retrieved posts after they've been fetched and
@@ -3663,7 +3804,7 @@ class WP_Query {
         * @since 3.5.0
         * @access private
         *
-        * @global wpdb $wpdb
+        * @global wpdb $wpdb WordPress database abstraction object.
         */
        private function set_found_posts( $q, $limits ) {
                global $wpdb;
@@ -3790,12 +3931,12 @@ class WP_Query {
        }
 
        /**
-        * Iterate current comment index and return comment object.
+        * Iterate current comment index and return WP_Comment object.
         *
         * @since 2.2.0
         * @access public
         *
-        * @return object Comment object.
+        * @return WP_Comment Comment object.
         */
        public function next_comment() {
                $this->current_comment++;
@@ -3809,7 +3950,7 @@ class WP_Query {
         *
         * @since 2.2.0
         * @access public
-        * @global object $comment Current comment.
+        * @global WP_Comment $comment Current comment.
         */
        public function the_comment() {
                global $comment;
@@ -3891,7 +4032,7 @@ class WP_Query {
                        return $this->queried_object;
 
                $this->queried_object = null;
-               $this->queried_object_id = 0;
+               $this->queried_object_id = null;
 
                if ( $this->is_category || $this->is_tag || $this->is_tax ) {
                        if ( $this->is_category ) {
@@ -4368,8 +4509,8 @@ class WP_Query {
         *
         * @since 3.1.0
         *
-        * @param mixed $page Page ID, title, slug, path, or array of such.
-        * @return bool
+        * @param int|string|array $page Optional. Page ID, title, slug, path, or array of such. Default empty.
+        * @return bool Whether the query is for an existing single page.
         */
        public function is_page( $page = '' ) {
                if ( !$this->is_page )
@@ -4461,8 +4602,8 @@ class WP_Query {
         *
         * @since 3.1.0
         *
-        * @param mixed $post Post ID, title, slug, path, or array of such.
-        * @return bool
+        * @param int|string|array $post Optional. Post ID, title, slug, path, or array of such. Default empty.
+        * @return bool Whether the query is for an existing single post.
         */
        public function is_single( $post = '' ) {
                if ( !$this->is_single )
@@ -4507,8 +4648,8 @@ class WP_Query {
         *
         * @since 3.1.0
         *
-        * @param mixed $post_types Optional. Post Type or array of Post Types
-        * @return bool
+        * @param string|array $post_types Optional. Post type or array of post types. Default empty.
+        * @return bool Whether the query is for an existing single post of any of the given post types.
         */
        public function is_singular( $post_types = '' ) {
                if ( empty( $post_types ) || !$this->is_singular )
@@ -4563,12 +4704,23 @@ class WP_Query {
                return (bool) $this->is_404;
        }
 
+       /**
+        * Is the query for an embedded post?
+        *
+        * @since 4.4.0
+        *
+        * @return bool
+        */
+       public function is_embed() {
+               return (bool) $this->is_embed;
+       }
+
        /**
         * Is the query the main query?
         *
         * @since 3.3.0
         *
-        * @global WP_Query $wp_query
+        * @global WP_Query $wp_query Global WP_Query instance.
         *
         * @return bool
         */
@@ -4581,6 +4733,7 @@ class WP_Query {
         * Set up global post data.
         *
         * @since 4.1.0
+        * @since 4.4.0 Added the ability to pass a post ID to `$post`.
         *
         * @global int             $id
         * @global WP_User         $authordata
@@ -4592,12 +4745,20 @@ class WP_Query {
         * @global int             $more
         * @global int             $numpages
         *
-        * @param WP_Post $post Post data.
+        * @param WP_Post|object|int $post WP_Post instance or Post ID/object.
         * @return true True when finished.
         */
        public function setup_postdata( $post ) {
                global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages;
 
+               if ( ! ( $post instanceof WP_Post ) ) {
+                       $post = get_post( $post );
+               }
+
+               if ( ! $post ) {
+                       return;
+               }
+
                $id = (int) $post->ID;
 
                $authordata = get_userdata($post->post_author);
@@ -4624,8 +4785,6 @@ class WP_Query {
 
                $content = $post->post_content;
                if ( false !== strpos( $content, '<!--nextpage-->' ) ) {
-                       if ( $page > 1 )
-                               $more = 1;
                        $content = str_replace( "\n<!--nextpage-->\n", '<!--nextpage-->', $content );
                        $content = str_replace( "\n<!--nextpage-->", '<!--nextpage-->', $content );
                        $content = str_replace( "<!--nextpage-->\n", '<!--nextpage-->', $content );
@@ -4635,13 +4794,35 @@ class WP_Query {
                                $content = substr( $content, 15 );
 
                        $pages = explode('<!--nextpage-->', $content);
-                       $numpages = count($pages);
-                       if ( $numpages > 1 )
-                               $multipage = 1;
                } else {
                        $pages = array( $post->post_content );
                }
 
+               /**
+                * Filter the "pages" derived from splitting the post content.
+                *
+                * "Pages" are determined by splitting the post content based on the presence
+                * of `<!-- nextpage -->` tags.
+                *
+                * @since 4.4.0
+                *
+                * @param array   $pages Array of "pages" derived from the post content.
+                *                       of `<!-- nextpage -->` tags..
+                * @param WP_Post $post  Current post object.
+                */
+               $pages = apply_filters( 'content_pagination', $pages, $post );
+
+               $numpages = count( $pages );
+
+               if ( $numpages > 1 ) {
+                       if ( $page > 1 ) {
+                               $more = 1;
+                       }
+                       $multipage = 1;
+               } else {
+                       $multipage = 0;
+               }
+
                /**
                 * Fires once the post data has been setup.
                 *
@@ -4666,9 +4847,129 @@ class WP_Query {
        public function reset_postdata() {
                if ( ! empty( $this->post ) ) {
                        $GLOBALS['post'] = $this->post;
-                       setup_postdata( $this->post );
+                       $this->setup_postdata( $this->post );
                }
        }
+
+       /**
+        * Lazy-loads termmeta for located posts.
+        *
+        * As a rule, term queries (`get_terms()` and `wp_get_object_terms()`) prime the metadata cache for matched
+        * terms by default. However, this can cause a slight performance penalty, especially when that metadata is
+        * not actually used. In the context of a `WP_Query` instance, we're able to avoid this potential penalty.
+        * `update_object_term_cache()`, called from `update_post_caches()`, does not 'update_term_meta_cache'.
+        * Instead, the first time `get_term_meta()` is called from within a `WP_Query` loop, the current method
+        * detects the fact, and then primes the metadata cache for all terms attached to all posts in the loop,
+        * with a single database query.
+        *
+        * This method is public so that it can be used as a filter callback. As a rule, there is no need to invoke it
+        * directly, from either inside or outside the `WP_Query` object.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param mixed $check  The `$check` param passed from the 'get_term_metadata' hook.
+        * @param int  $term_id ID of the term whose metadata is being cached.
+        * @return mixed In order not to short-circuit `get_metadata()`. Generally, this is `null`, but it could be
+        *               another value if filtered by a plugin.
+        */
+       public function lazyload_term_meta( $check, $term_id ) {
+               /*
+                * We only do this once per `WP_Query` instance.
+                * Can't use `remove_filter()` because of non-unique object hashes.
+                */
+               if ( $this->updated_term_meta_cache ) {
+                       return $check;
+               }
+
+               // We can only lazyload if the entire post object is present.
+               $posts = array();
+               foreach ( $this->posts as $post ) {
+                       if ( $post instanceof WP_Post ) {
+                               $posts[] = $post;
+                       }
+               }
+
+               if ( ! empty( $posts ) ) {
+                       // Fetch cached term_ids for each post. Keyed by term_id for faster lookup.
+                       $term_ids = array();
+                       foreach ( $posts as $post ) {
+                               $taxonomies = get_object_taxonomies( $post->post_type );
+                               foreach ( $taxonomies as $taxonomy ) {
+                                       // Term cache should already be primed by 'update_post_term_cache'.
+                                       $terms = get_object_term_cache( $post->ID, $taxonomy );
+                                       if ( false !== $terms ) {
+                                               foreach ( $terms as $term ) {
+                                                       if ( ! isset( $term_ids[ $term->term_id ] ) ) {
+                                                               $term_ids[ $term->term_id ] = 1;
+                                                       }
+                                               }
+                                       }
+                               }
+                       }
+
+                       /*
+                        * Only update the metadata cache for terms belonging to these posts if the term_id passed
+                        * to `get_term_meta()` matches one of those terms. This prevents a single call to
+                        * `get_term_meta()` from priming metadata for all `WP_Query` objects.
+                        */
+                       if ( isset( $term_ids[ $term_id ] ) ) {
+                               update_termmeta_cache( array_keys( $term_ids ) );
+                               $this->updated_term_meta_cache = true;
+                       }
+               }
+
+               // If no terms were found, there's no need to run this again.
+               if ( empty( $term_ids ) ) {
+                       $this->updated_term_meta_cache = true;
+               }
+
+               return $check;
+       }
+
+       /**
+        * Lazy-load comment meta when inside of a `WP_Query` loop.
+        *
+        * This method is public so that it can be used as a filter callback. As a rule, there is no need to invoke it
+        * directly, from either inside or outside the `WP_Query` object.
+        *
+        * @since 4.4.0
+        *
+        * @param mixed $check     The `$check` param passed from the 'get_comment_metadata' hook.
+        * @param int  $comment_id ID of the comment whose metadata is being cached.
+        * @return mixed The original value of `$check`, to not affect 'get_comment_metadata'.
+        */
+       public function lazyload_comment_meta( $check, $comment_id ) {
+               /*
+                * We only do this once per `WP_Query` instance.
+                * Can't use `remove_filter()` because of non-unique object hashes.
+                */
+               if ( $this->updated_comment_meta_cache ) {
+                       return $check;
+               }
+
+               // Don't use `wp_list_pluck()` to avoid by-reference manipulation.
+               $comment_ids = array();
+               if ( is_array( $this->comments ) ) {
+                       foreach ( $this->comments as $comment ) {
+                               $comment_ids[] = $comment->comment_ID;
+                       }
+               }
+
+               /*
+                * Only update the metadata cache for comments belonging to these posts if the comment_id passed
+                * to `get_comment_meta()` matches one of those comments. This prevents a single call to
+                * `get_comment_meta()` from priming metadata for all `WP_Query` objects.
+                */
+               if ( in_array( $comment_id, $comment_ids ) ) {
+                       update_meta_cache( 'comment', $comment_ids );
+                       $this->updated_comment_meta_cache = true;
+               } elseif ( empty( $comment_ids ) ) {
+                       $this->updated_comment_meta_cache = true;
+               }
+
+               return $check;
+       }
 }
 
 /**
@@ -4678,21 +4979,26 @@ class WP_Query {
  *
  * @since 2.1.0
  *
- * @global WP_Query $wp_query
- * @global wpdb     $wpdb     WordPress database abstraction object.
+ * @global WP_Query   $wp_query   Global WP_Query instance.
+ * @global wpdb       $wpdb       WordPress database abstraction object.
+ * @global WP_Rewrite $wp_rewrite WordPress rewrite component.
  */
 function wp_old_slug_redirect() {
-       global $wp_query;
-       if ( is_404() && '' != $wp_query->query_vars['name'] ) :
+       global $wp_query, $wp_rewrite;
+
+       if ( '' !== $wp_query->query_vars['name'] ) :
                global $wpdb;
 
                // Guess the current post_type based on the query vars.
-               if ( get_query_var('post_type') )
-                       $post_type = get_query_var('post_type');
-               elseif ( !empty($wp_query->query_vars['pagename']) )
+               if ( get_query_var( 'post_type' ) ) {
+                       $post_type = get_query_var( 'post_type' );
+               } elseif ( get_query_var( 'attachment' ) ) {
+                       $post_type = 'attachment';
+               } elseif ( ! empty( $wp_query->query_vars['pagename'] ) ) {
                        $post_type = 'page';
-               else
+               } else {
                        $post_type = 'post';
+               }
 
                if ( is_array( $post_type ) ) {
                        if ( count( $post_type ) > 1 )
@@ -4720,10 +5026,35 @@ function wp_old_slug_redirect() {
                if ( ! $id )
                        return;
 
-               $link = get_permalink($id);
+               $link = get_permalink( $id );
+
+               if ( is_feed() ) {
+                       $link = user_trailingslashit( trailingslashit( $link ) . 'feed' );
+               } elseif ( isset( $GLOBALS['wp_query']->query_vars['paged'] ) && $GLOBALS['wp_query']->query_vars['paged'] > 1 ) {
+                       $link = user_trailingslashit( trailingslashit( $link ) . 'page/' . $GLOBALS['wp_query']->query_vars['paged'] );
+               } elseif( is_embed() ) {
+                       $link = user_trailingslashit( trailingslashit( $link ) . 'embed' );
+               } elseif ( is_404() ) {
+                       // Add rewrite endpoints if necessary.
+                       foreach ( $wp_rewrite->endpoints as $endpoint ) {
+                               if ( $endpoint[2] && false !== get_query_var( $endpoint[2], false ) ) {
+                                       $link = user_trailingslashit( trailingslashit( $link ) . $endpoint[1] );
+                               }
+                       }
+               }
+
+               /**
+                * Filter the old slug redirect URL.
+                *
+                * @since 4.4.0
+                *
+                * @param string $link The redirect URL.
+                */
+               $link = apply_filters( 'old_slug_redirect_url', $link );
 
-               if ( !$link )
+               if ( ! $link ) {
                        return;
+               }
 
                wp_redirect( $link, 301 ); // Permanent redirect
                exit;
@@ -4734,10 +5065,11 @@ function wp_old_slug_redirect() {
  * Set up global post data.
  *
  * @since 1.5.0
+ * @since 4.4.0 Added the ability to pass a post ID to `$post`.
  *
- * @global WP_Query $wp_query
+ * @global WP_Query $wp_query Global WP_Query instance.
  *
- * @param object $post Post data.
+ * @param WP_Post|object|int $post WP_Post instance or Post ID/object.
  * @return bool True when finished.
  */
 function setup_postdata( $post ) {
diff --git a/wp-includes/random_compat/byte_safe_strings.php b/wp-includes/random_compat/byte_safe_strings.php
new file mode 100644 (file)
index 0000000..a3cc90b
--- /dev/null
@@ -0,0 +1,160 @@
+<?php
+/**
+ * Random_* Compatibility Library
+ * for using the new PHP 7 random_* API in PHP 5 projects
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2015 Paragon Initiative Enterprises
+ *
+ * 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.
+ */
+
+if (!function_exists('RandomCompat_strlen')) {
+    if (
+        defined('MB_OVERLOAD_STRING') &&
+        ini_get('mbstring.func_overload') & MB_OVERLOAD_STRING
+    ) {
+        /**
+         * strlen() implementation that isn't brittle to mbstring.func_overload
+         *
+         * This version uses mb_strlen() in '8bit' mode to treat strings as raw
+         * binary rather than UTF-8, ISO-8859-1, etc
+         *
+         * @param string $binary_string
+         *
+         * @throws TypeError
+         *
+         * @return int
+         */
+        function RandomCompat_strlen($binary_string)
+        {
+            if (!is_string($binary_string)) {
+                throw new TypeError(
+                    'RandomCompat_strlen() expects a string'
+                );
+            }
+            return mb_strlen($binary_string, '8bit');
+        }
+    } else {
+        /**
+         * strlen() implementation that isn't brittle to mbstring.func_overload
+         *
+         * This version just used the default strlen()
+         *
+         * @param string $binary_string
+         *
+         * @throws TypeError
+         *
+         * @return int
+         */
+        function RandomCompat_strlen($binary_string)
+        {
+            if (!is_string($binary_string)) {
+                throw new TypeError(
+                    'RandomCompat_strlen() expects a string'
+                );
+            }
+            return strlen($binary_string);
+        }
+    }
+}
+
+if (!function_exists('RandomCompat_substr')) {
+    if (
+        defined('MB_OVERLOAD_STRING') &&
+        ini_get('mbstring.func_overload') & MB_OVERLOAD_STRING
+    ) {
+        /**
+         * substr() implementation that isn't brittle to mbstring.func_overload
+         *
+         * This version uses mb_substr() in '8bit' mode to treat strings as raw
+         * binary rather than UTF-8, ISO-8859-1, etc
+         *
+         * @param string $binary_string
+         * @param int $start
+         * @param int $length (optional)
+         *
+         * @throws TypeError
+         *
+         * @return string
+         */
+        function RandomCompat_substr($binary_string, $start, $length = null)
+        {
+            if (!is_string($binary_string)) {
+                throw new TypeError(
+                    'RandomCompat_substr(): First argument should be a string'
+                );
+            }
+            if (!is_int($start)) {
+                throw new TypeError(
+                    'RandomCompat_substr(): Second argument should be an integer'
+                );
+            }
+            if ($length === null) {
+                /**
+                 * mb_substr($str, 0, NULL, '8bit') returns an empty string on
+                 * PHP 5.3, so we have to find the length ourselves.
+                 */
+                $length = RandomCompat_strlen($length) - $start;
+            } elseif (!is_int($length)) {
+                throw new TypeError(
+                    'RandomCompat_substr(): Third argument should be an integer, or omitted'
+                );
+            }
+            return mb_substr($binary_string, $start, $length, '8bit');
+        }
+    } else {
+        /**
+         * substr() implementation that isn't brittle to mbstring.func_overload
+         *
+         * This version just uses the default substr()
+         *
+         * @param string $binary_string
+         * @param int $start
+         * @param int $length (optional)
+         *
+         * @throws TypeError
+         *
+         * @return string
+         */
+        function RandomCompat_substr($binary_string, $start, $length = null)
+        {
+            if (!is_string($binary_string)) {
+                throw new TypeError(
+                    'RandomCompat_substr(): First argument should be a string'
+                );
+            }
+            if (!is_int($start)) {
+                throw new TypeError(
+                    'RandomCompat_substr(): Second argument should be an integer'
+                );
+            }
+            if ($length !== null) {
+                if (!is_int($length)) {
+                    throw new TypeError(
+                        'RandomCompat_substr(): Third argument should be an integer, or omitted'
+                    );
+                }
+                return substr($binary_string, $start, $length);
+            }
+            return substr($binary_string, $start);
+        }
+    }
+}
diff --git a/wp-includes/random_compat/cast_to_int.php b/wp-includes/random_compat/cast_to_int.php
new file mode 100644 (file)
index 0000000..474ce64
--- /dev/null
@@ -0,0 +1,64 @@
+<?php
+/**
+ * Random_* Compatibility Library
+ * for using the new PHP 7 random_* API in PHP 5 projects
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2015 Paragon Initiative Enterprises
+ *
+ * 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.
+ */
+
+if (!function_exists('RandomCompat_intval')) {
+    
+    /**
+     * Cast to an integer if we can, safely.
+     * 
+     * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
+     * (non-inclusive), it will sanely cast it to an int. If you it's equal to
+     * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats 
+     * lose precision, so the <= and => operators might accidentally let a float
+     * through.
+     * 
+     * @param numeric $number The number we want to convert to an int
+     * @param boolean $fail_open Set to true to not throw an exception
+     * 
+     * @return int (or float if $fail_open)
+     */
+    function RandomCompat_intval($number, $fail_open = false)
+    {
+        if (is_numeric($number)) {
+            $number += 0;
+        }
+        if (
+            is_float($number) &&
+            $number > ~PHP_INT_MAX &&
+            $number < PHP_INT_MAX
+        ) {
+            $number = (int) $number;
+        }
+        if (is_int($number) || $fail_open) {
+            return $number;
+        }
+        throw new TypeError(
+            'Expected an integer.'
+        );
+    }
+}
diff --git a/wp-includes/random_compat/error_polyfill.php b/wp-includes/random_compat/error_polyfill.php
new file mode 100644 (file)
index 0000000..57cfefd
--- /dev/null
@@ -0,0 +1,42 @@
+<?php
+/**
+ * Random_* Compatibility Library 
+ * for using the new PHP 7 random_* API in PHP 5 projects
+ * 
+ * The MIT License (MIT)
+ * 
+ * Copyright (c) 2015 Paragon Initiative Enterprises
+ * 
+ * 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.
+ */
+
+if (!class_exists('Error', false)) {
+    // We can't really avoid making this extend Exception in PHP 5.
+    class Error extends Exception
+    {
+        
+    }
+}
+
+if (!class_exists('TypeError', false)) {
+    class TypeError extends Error
+    {
+        
+    }
+}
diff --git a/wp-includes/random_compat/random.php b/wp-includes/random_compat/random.php
new file mode 100644 (file)
index 0000000..d1f7555
--- /dev/null
@@ -0,0 +1,137 @@
+<?php
+/**
+ * Random_* Compatibility Library 
+ * for using the new PHP 7 random_* API in PHP 5 projects
+ * 
+ * The MIT License (MIT)
+ * 
+ * Copyright (c) 2015 Paragon Initiative Enterprises
+ * 
+ * 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.
+ */
+
+if (!defined('PHP_VERSION_ID')) {
+    // This constant was introduced in PHP 5.2.7
+    $RandomCompatversion = explode('.', PHP_VERSION);
+    define('PHP_VERSION_ID', ($RandomCompatversion[0] * 10000 + $RandomCompatversion[1] * 100 + $RandomCompatversion[2]));
+    $RandomCompatversion = null;
+}
+if (PHP_VERSION_ID < 70000) {
+    if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
+        define('RANDOM_COMPAT_READ_BUFFER', 8);
+    }
+    $RandomCompatDIR = dirname(__FILE__);
+    require_once $RandomCompatDIR.'/byte_safe_strings.php';
+    require_once $RandomCompatDIR.'/cast_to_int.php';
+    require_once $RandomCompatDIR.'/error_polyfill.php';
+    if (!function_exists('random_bytes')) {
+        /**
+         * PHP 5.2.0 - 5.6.x way to implement random_bytes()
+         * 
+         * We use conditional statements here to define the function in accordance
+         * to the operating environment. It's a micro-optimization.
+         * 
+         * In order of preference:
+         *   1. Use libsodium if available.
+         *   2. fread() /dev/urandom if available (never on Windows)
+         *   3. mcrypt_create_iv($bytes, MCRYPT_CREATE_IV)
+         *   4. COM('CAPICOM.Utilities.1')->GetRandom()
+         *   5. openssl_random_pseudo_bytes() (absolute last resort)
+         * 
+         * See ERRATA.md for our reasoning behind this particular order
+         */
+        if (extension_loaded('libsodium')) {
+            // See random_bytes_libsodium.php
+            require_once $RandomCompatDIR.'/random_bytes_libsodium.php';
+        }
+        if (
+            !function_exists('random_bytes') && 
+            DIRECTORY_SEPARATOR === '/' &&
+            @is_readable('/dev/urandom')
+        ) {
+            // DIRECTORY_SEPARATOR === '/' on Unix-like OSes -- this is a fast
+            // way to exclude Windows.
+            // 
+            // Error suppression on is_readable() in case of an open_basedir or 
+            // safe_mode failure. All we care about is whether or not we can 
+            // read it at this point. If the PHP environment is going to panic 
+            // over trying to see if the file can be read in the first place,
+            // that is not helpful to us here.
+            
+            // See random_bytes_dev_urandom.php
+            require_once $RandomCompatDIR.'/random_bytes_dev_urandom.php';
+        }
+        if (
+            !function_exists('random_bytes') &&
+            PHP_VERSION_ID >= 50307 &&
+            extension_loaded('mcrypt')
+        ) {
+            // See random_bytes_mcrypt.php
+            require_once $RandomCompatDIR.'/random_bytes_mcrypt.php';
+        }
+        if (
+            !function_exists('random_bytes') && 
+            extension_loaded('com_dotnet') &&
+            class_exists('COM')
+        ) {
+            try {
+                $RandomCompatCOMtest = new COM('CAPICOM.Utilities.1');
+                if (method_exists($RandomCompatCOMtest, 'GetRandom')) {
+                    // See random_bytes_com_dotnet.php
+                    require_once $RandomCompatDIR.'/random_bytes_com_dotnet.php';
+                }
+            } catch (com_exception $e) {
+                // Don't try to use it.
+            }
+            $RandomCompatCOMtest = null;
+        }
+        if (
+            !function_exists('random_bytes') && 
+            extension_loaded('openssl') &&
+            (
+                // Unix-like with PHP >= 5.3.0 or
+                (
+                    DIRECTORY_SEPARATOR === '/' &&
+                    PHP_VERSION_ID >= 50300
+                ) ||
+                // Windows with PHP >= 5.4.1
+                PHP_VERSION_ID >= 50401
+            )
+        ) {
+            // See random_bytes_openssl.php
+            require_once $RandomCompatDIR.'/random_bytes_openssl.php';
+        }
+        if (!function_exists('random_bytes')) {
+            /**
+             * We don't have any more options, so let's throw an exception right now
+             * and hope the developer won't let it fail silently.
+             */
+            function random_bytes()
+            {
+                throw new Exception(
+                    'There is no suitable CSPRNG installed on your system'
+                );
+            }
+        }
+    }
+    if (!function_exists('random_int')) {
+        require_once $RandomCompatDIR.'/random_int.php';
+    }
+    $RandomCompatDIR = null;
+}
diff --git a/wp-includes/random_compat/random_bytes_com_dotnet.php b/wp-includes/random_compat/random_bytes_com_dotnet.php
new file mode 100644 (file)
index 0000000..0a781f4
--- /dev/null
@@ -0,0 +1,77 @@
+<?php
+/**
+ * Random_* Compatibility Library 
+ * for using the new PHP 7 random_* API in PHP 5 projects
+ * 
+ * The MIT License (MIT)
+ * 
+ * Copyright (c) 2015 Paragon Initiative Enterprises
+ * 
+ * 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.
+ */
+
+/**
+ * Windows with PHP < 5.3.0 will not have the function
+ * openssl_random_pseudo_bytes() available, so let's use
+ * CAPICOM to work around this deficiency.
+ * 
+ * @param int $bytes
+ * 
+ * @throws Exception
+ * 
+ * @return string
+ */
+function random_bytes($bytes)
+{
+    try {
+        $bytes = RandomCompat_intval($bytes);
+    } catch (TypeError $ex) {
+        throw new TypeError(
+            'random_bytes(): $bytes must be an integer'
+        );
+    }
+    if ($bytes < 1) {
+        throw new Error(
+            'Length must be greater than 0'
+        );
+    }
+    $buf = '';
+    $util = new COM('CAPICOM.Utilities.1');
+    $execCount = 0;
+    /**
+     * Let's not let it loop forever. If we run N times and fail to
+     * get N bytes of random data, then CAPICOM has failed us.
+     */
+    do {
+        $buf .= base64_decode($util->GetRandom($bytes, 0));
+        if (RandomCompat_strlen($buf) >= $bytes) {
+            /**
+             * Return our random entropy buffer here:
+             */
+            return RandomCompat_substr($buf, 0, $bytes);
+        }
+        ++$execCount; 
+    } while ($execCount < $bytes);
+    /**
+     * If we reach here, PHP has failed us.
+     */
+    throw new Exception(
+        'Could not gather sufficient random data'
+    );
+}
diff --git a/wp-includes/random_compat/random_bytes_dev_urandom.php b/wp-includes/random_compat/random_bytes_dev_urandom.php
new file mode 100644 (file)
index 0000000..aebcafc
--- /dev/null
@@ -0,0 +1,137 @@
+<?php
+/**
+ * Random_* Compatibility Library 
+ * for using the new PHP 7 random_* API in PHP 5 projects
+ * 
+ * The MIT License (MIT)
+ * 
+ * Copyright (c) 2015 Paragon Initiative Enterprises
+ * 
+ * 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.
+ */
+
+if (!defined('RANDOM_COMPAT_READ_BUFFER')) {
+    define('RANDOM_COMPAT_READ_BUFFER', 8);
+}
+
+/**
+ * Unless open_basedir is enabled, use /dev/urandom for
+ * random numbers in accordance with best practices
+ * 
+ * Why we use /dev/urandom and not /dev/random
+ * @ref http://sockpuppet.org/blog/2014/02/25/safely-generate-random-numbers
+ * 
+ * @param int $bytes
+ * 
+ * @throws Exception
+ * 
+ * @return string
+ */
+function random_bytes($bytes)
+{
+    static $fp = null;
+    /**
+     * This block should only be run once
+     */
+    if (empty($fp)) {
+        /**
+         * We use /dev/urandom if it is a char device.
+         * We never fall back to /dev/random
+         */
+        $fp = fopen('/dev/urandom', 'rb');
+        if (!empty($fp)) {
+            $st = fstat($fp);
+            if (($st['mode'] & 0170000) !== 020000) {
+                fclose($fp);
+                $fp = false;
+            }
+        }
+        /**
+         * stream_set_read_buffer() does not exist in HHVM
+         * 
+         * If we don't set the stream's read buffer to 0, PHP will
+         * internally buffer 8192 bytes, which can waste entropy
+         * 
+         * stream_set_read_buffer returns 0 on success
+         */
+        if (!empty($fp) && function_exists('stream_set_read_buffer')) {
+            stream_set_read_buffer($fp, RANDOM_COMPAT_READ_BUFFER);
+        }
+    }
+    try {
+        $bytes = RandomCompat_intval($bytes);
+    } catch (TypeError $ex) {
+        throw new TypeError(
+            'random_bytes(): $bytes must be an integer'
+        );
+    }
+    if ($bytes < 1) {
+        throw new Error(
+            'Length must be greater than 0'
+        );
+    }
+    /**
+     * This if() block only runs if we managed to open a file handle
+     * 
+     * It does not belong in an else {} block, because the above 
+     * if (empty($fp)) line is logic that should only be run once per
+     * page load.
+     */
+    if (!empty($fp)) {
+        $remaining = $bytes;
+        $buf = '';
+        /**
+         * We use fread() in a loop to protect against partial reads
+         */
+        do {
+            $read = fread($fp, $remaining); 
+            if ($read === false) {
+                /**
+                 * We cannot safely read from the file. Exit the
+                 * do-while loop and trigger the exception condition
+                 */
+                $buf = false;
+                break;
+            }
+            /**
+             * Decrease the number of bytes returned from remaining
+             */
+            $remaining -= RandomCompat_strlen($read);
+            $buf .= $read;
+        } while ($remaining > 0);
+        
+        /**
+         * Is our result valid?
+         */
+        if ($buf !== false) {
+            if (RandomCompat_strlen($buf) === $bytes) {
+                /**
+                 * Return our random entropy buffer here:
+                 */
+                return $buf;
+            }
+        }
+    }
+    /**
+     * If we reach here, PHP has failed us.
+     */
+    throw new Exception(
+        'Error reading from source device'
+    );
+}
diff --git a/wp-includes/random_compat/random_bytes_libsodium.php b/wp-includes/random_compat/random_bytes_libsodium.php
new file mode 100644 (file)
index 0000000..938cac9
--- /dev/null
@@ -0,0 +1,84 @@
+<?php
+/**
+ * Random_* Compatibility Library 
+ * for using the new PHP 7 random_* API in PHP 5 projects
+ * 
+ * The MIT License (MIT)
+ * 
+ * Copyright (c) 2015 Paragon Initiative Enterprises
+ * 
+ * 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.
+ */
+
+/**
+ * If the libsodium PHP extension is loaded, we'll use it above any other
+ * solution.
+ *
+ * libsodium-php project:
+ * @ref https://github.com/jedisct1/libsodium-php
+ *
+ * @param int $bytes
+ *
+ * @throws Exception
+ *
+ * @return string
+ */
+function random_bytes($bytes)
+{
+    try {
+        $bytes = RandomCompat_intval($bytes);
+    } catch (TypeError $ex) {
+        throw new TypeError(
+            'random_bytes(): $bytes must be an integer'
+        );
+    }
+    if ($bytes < 1) {
+        throw new Error(
+            'Length must be greater than 0'
+        );
+    }
+    /**
+     * \Sodium\randombytes_buf() doesn't allow more than 2147483647 bytes to be
+     * generated in one invocation.
+     */
+    if ($bytes > 2147483647) {
+        $buf = '';
+        for ($i = 0; $i < $bytes; $i += 1073741824) {
+            $n = ($bytes - $i) > 1073741824
+                ? 1073741824
+                : $bytes - $i;
+            $buf .= \Sodium\randombytes_buf($n);
+        }
+    } else {
+        $buf = \Sodium\randombytes_buf($bytes);
+    }
+
+    if ($buf !== false) {
+        if (RandomCompat_strlen($buf) === $bytes) {
+            return $buf;
+        }
+    }
+
+    /**
+     * If we reach here, PHP has failed us.
+     */
+    throw new Exception(
+        'Could not gather sufficient random data'
+    );
+}
diff --git a/wp-includes/random_compat/random_bytes_mcrypt.php b/wp-includes/random_compat/random_bytes_mcrypt.php
new file mode 100644 (file)
index 0000000..5a1b688
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Random_* Compatibility Library 
+ * for using the new PHP 7 random_* API in PHP 5 projects
+ * 
+ * The MIT License (MIT)
+ * 
+ * Copyright (c) 2015 Paragon Initiative Enterprises
+ * 
+ * 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.
+ */
+
+
+/**
+ * Powered by ext/mcrypt (and thankfully NOT libmcrypt)
+ * 
+ * @ref https://bugs.php.net/bug.php?id=55169
+ * @ref https://github.com/php/php-src/blob/c568ffe5171d942161fc8dda066bce844bdef676/ext/mcrypt/mcrypt.c#L1321-L1386
+ * 
+ * @param int $bytes
+ * 
+ * @throws Exception
+ * 
+ * @return string
+ */
+function random_bytes($bytes)
+{
+    try {
+        $bytes = RandomCompat_intval($bytes);
+    } catch (TypeError $ex) {
+        throw new TypeError(
+            'random_bytes(): $bytes must be an integer'
+        );
+    }
+    if ($bytes < 1) {
+        throw new Error(
+            'Length must be greater than 0'
+        );
+    }
+
+    $buf = @mcrypt_create_iv($bytes, MCRYPT_DEV_URANDOM);
+    if ($buf !== false) {
+        if (RandomCompat_strlen($buf) === $bytes) {
+            /**
+             * Return our random entropy buffer here:
+             */
+            return $buf;
+        }
+    }
+    /**
+     * If we reach here, PHP has failed us.
+     */
+    throw new Exception(
+        'Could not gather sufficient random data'
+    );
+}
diff --git a/wp-includes/random_compat/random_bytes_openssl.php b/wp-includes/random_compat/random_bytes_openssl.php
new file mode 100644 (file)
index 0000000..3e12d3d
--- /dev/null
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Random_* Compatibility Library 
+ * for using the new PHP 7 random_* API in PHP 5 projects
+ * 
+ * The MIT License (MIT)
+ * 
+ * Copyright (c) 2015 Paragon Initiative Enterprises
+ * 
+ * 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.
+ */
+
+/**
+ * Since openssl_random_pseudo_bytes() uses openssl's 
+ * RAND_pseudo_bytes() API, which has been marked as deprecated by the
+ * OpenSSL team, this is our last resort before failure.
+ * 
+ * @ref https://www.openssl.org/docs/crypto/RAND_bytes.html
+ * 
+ * @param int $bytes
+ * 
+ * @throws Exception
+ * 
+ * @return string
+ */
+function random_bytes($bytes)
+{
+    try {
+        $bytes = RandomCompat_intval($bytes);
+    } catch (TypeError $ex) {
+        throw new TypeError(
+            'random_bytes(): $bytes must be an integer'
+        );
+    }
+    if ($bytes < 1) {
+        throw new Error(
+            'Length must be greater than 0'
+        );
+    }
+    $secure = true;
+    /**
+     * $secure is passed by reference. If it's set to false, fail. Note
+     * that this will only return false if this function fails to return
+     * any data.
+     * 
+     * @ref https://github.com/paragonie/random_compat/issues/6#issuecomment-119564973
+     */
+    $buf = openssl_random_pseudo_bytes($bytes, $secure);
+    if ($buf !== false && $secure) {
+        if (RandomCompat_strlen($buf) === $bytes) {
+            return $buf;
+        }
+    }
+    /**
+     * If we reach here, PHP has failed us.
+     */
+    throw new Exception(
+        'Could not gather sufficient random data'
+    );
+}
diff --git a/wp-includes/random_compat/random_int.php b/wp-includes/random_compat/random_int.php
new file mode 100644 (file)
index 0000000..6c91dbc
--- /dev/null
@@ -0,0 +1,185 @@
+<?php
+/**
+ * Random_* Compatibility Library 
+ * for using the new PHP 7 random_* API in PHP 5 projects
+ * 
+ * The MIT License (MIT)
+ * 
+ * Copyright (c) 2015 Paragon Initiative Enterprises
+ * 
+ * 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.
+ */
+
+/**
+ * Fetch a random integer between $min and $max inclusive
+ * 
+ * @param int $min
+ * @param int $max
+ * 
+ * @throws Exception
+ * 
+ * @return int
+ */
+function random_int($min, $max)
+{
+    /**
+     * Type and input logic checks
+     * 
+     * If you pass it a float in the range (~PHP_INT_MAX, PHP_INT_MAX)
+     * (non-inclusive), it will sanely cast it to an int. If you it's equal to
+     * ~PHP_INT_MAX or PHP_INT_MAX, we let it fail as not an integer. Floats 
+     * lose precision, so the <= and => operators might accidentally let a float
+     * through.
+     */
+    
+    try {
+        $min = RandomCompat_intval($min);
+    } catch (TypeError $ex) {
+        throw new TypeError(
+            'random_int(): $min must be an integer'
+        );
+    }
+    try {
+        $max = RandomCompat_intval($max);
+    } catch (TypeError $ex) {
+        throw new TypeError(
+            'random_int(): $max must be an integer'
+        );
+    }
+    
+    /**
+     * Now that we've verified our weak typing system has given us an integer,
+     * let's validate the logic then we can move forward with generating random
+     * integers along a given range.
+     */
+    if ($min > $max) {
+        throw new Error(
+            'Minimum value must be less than or equal to the maximum value'
+        );
+    }
+    if ($max === $min) {
+        return $min;
+    }
+
+    /**
+     * Initialize variables to 0
+     * 
+     * We want to store:
+     * $bytes => the number of random bytes we need
+     * $mask => an integer bitmask (for use with the &) operator
+     *          so we can minimize the number of discards
+     */
+    $attempts = $bits = $bytes = $mask = $valueShift = 0;
+
+    /**
+     * At this point, $range is a positive number greater than 0. It might
+     * overflow, however, if $max - $min > PHP_INT_MAX. PHP will cast it to
+     * a float and we will lose some precision.
+     */
+    $range = $max - $min;
+
+    /**
+     * Test for integer overflow:
+     */
+    if (!is_int($range)) {
+        /**
+         * Still safely calculate wider ranges.
+         * Provided by @CodesInChaos, @oittaa
+         * 
+         * @ref https://gist.github.com/CodesInChaos/03f9ea0b58e8b2b8d435
+         * 
+         * We use ~0 as a mask in this case because it generates all 1s
+         * 
+         * @ref https://eval.in/400356 (32-bit)
+         * @ref http://3v4l.org/XX9r5  (64-bit)
+         */
+        $bytes = PHP_INT_SIZE;
+        $mask = ~0;
+    } else {
+        /**
+         * $bits is effectively ceil(log($range, 2)) without dealing with 
+         * type juggling
+         */
+        while ($range > 0) {
+            if ($bits % 8 === 0) {
+               ++$bytes;
+            }
+            ++$bits;
+            $range >>= 1;
+            $mask = $mask << 1 | 1;
+        }
+        $valueShift = $min;
+    }
+
+    /**
+     * Now that we have our parameters set up, let's begin generating
+     * random integers until one falls between $min and $max
+     */
+    do {
+        /**
+         * The rejection probability is at most 0.5, so this corresponds
+         * to a failure probability of 2^-128 for a working RNG
+         */
+        if ($attempts > 128) {
+            throw new Exception(
+                'random_int: RNG is broken - too many rejections'
+            );
+        }
+
+        /**
+         * Let's grab the necessary number of random bytes
+         */
+        $randomByteString = random_bytes($bytes);
+        if ($randomByteString === false) {
+            throw new Exception(
+                'Random number generator failure'
+            );
+        }
+
+        /**
+         * Let's turn $randomByteString into an integer
+         * 
+         * This uses bitwise operators (<< and |) to build an integer
+         * out of the values extracted from ord()
+         * 
+         * Example: [9F] | [6D] | [32] | [0C] =>
+         *   159 + 27904 + 3276800 + 201326592 =>
+         *   204631455
+         */
+        $val = 0;
+        for ($i = 0; $i < $bytes; ++$i) {
+            $val |= ord($randomByteString[$i]) << ($i * 8);
+        }
+
+        /**
+         * Apply mask
+         */
+        $val &= $mask;
+        $val += $valueShift;
+
+        ++$attempts;
+        /**
+         * If $val overflows to a floating point number,
+         * ... or is larger than $max,
+         * ... or smaller than $min,
+         * then try again.
+         */
+    } while (!is_int($val) || $val > $max || $val < $min);
+    return (int) $val;
+}
diff --git a/wp-includes/rest-api.php b/wp-includes/rest-api.php
new file mode 100644 (file)
index 0000000..eb41c48
--- /dev/null
@@ -0,0 +1,650 @@
+<?php
+/**
+ * REST API functions.
+ *
+ * @package WordPress
+ * @subpackage REST_API
+ * @since 4.4.0
+ */
+
+/**
+ * Version number for our API.
+ *
+ * @var string
+ */
+define( 'REST_API_VERSION', '2.0' );
+
+/**
+ * Registers a REST API route.
+ *
+ * @since 4.4.0
+ *
+ * @global WP_REST_Server $wp_rest_server ResponseHandler instance (usually WP_REST_Server).
+ *
+ * @param string $namespace The first URL segment after core prefix. Should be unique to your package/plugin.
+ * @param string $route     The base URL for route you are adding.
+ * @param array  $args      Optional. Either an array of options for the endpoint, or an array of arrays for
+ *                          multiple methods. Default empty array.
+ * @param bool   $override  Optional. If the route already exists, should we override it? True overrides,
+ *                          false merges (with newer overriding if duplicate keys exist). Default false.
+ * @return bool True on success, false on error.
+ */
+function register_rest_route( $namespace, $route, $args = array(), $override = false ) {
+       /** @var WP_REST_Server $wp_rest_server */
+       global $wp_rest_server;
+
+       if ( empty( $namespace ) ) {
+               /*
+                * Non-namespaced routes are not allowed, with the exception of the main
+                * and namespace indexes. If you really need to register a
+                * non-namespaced route, call `WP_REST_Server::register_route` directly.
+                */
+               _doing_it_wrong( 'register_rest_route', 'Routes must be namespaced with plugin or theme name and version.', '4.4.0' );
+               return false;
+       } else if ( empty( $route ) ) {
+               _doing_it_wrong( 'register_rest_route', 'Route must be specified.', '4.4.0' );
+               return false;
+       }
+
+       if ( isset( $args['callback'] ) ) {
+               // Upgrade a single set to multiple.
+               $args = array( $args );
+       }
+
+       $defaults = array(
+               'methods'         => 'GET',
+               'callback'        => null,
+               'args'            => array(),
+       );
+       foreach ( $args as $key => &$arg_group ) {
+               if ( ! is_numeric( $arg_group ) ) {
+                       // Route option, skip here.
+                       continue;
+               }
+
+               $arg_group = array_merge( $defaults, $arg_group );
+       }
+
+       $full_route = '/' . trim( $namespace, '/' ) . '/' . trim( $route, '/' );
+       $wp_rest_server->register_route( $namespace, $full_route, $args, $override );
+       return true;
+}
+
+/**
+ * Registers rewrite rules for the API.
+ *
+ * @since 4.4.0
+ *
+ * @see rest_api_register_rewrites()
+ * @global WP $wp Current WordPress environment instance.
+ */
+function rest_api_init() {
+       rest_api_register_rewrites();
+
+       global $wp;
+       $wp->add_query_var( 'rest_route' );
+}
+
+/**
+ * Adds REST rewrite rules.
+ *
+ * @since 4.4.0
+ *
+ * @see add_rewrite_rule()
+ */
+function rest_api_register_rewrites() {
+       add_rewrite_rule( '^' . rest_get_url_prefix() . '/?$','index.php?rest_route=/','top' );
+       add_rewrite_rule( '^' . rest_get_url_prefix() . '/(.*)?','index.php?rest_route=/$matches[1]','top' );
+}
+
+/**
+ * Registers the default REST API filters.
+ *
+ * Attached to the {@see 'rest_api_init'} action
+ * to make testing and disabling these filters easier.
+ *
+ * @since 4.4.0
+ */
+function rest_api_default_filters() {
+       // Deprecated reporting.
+       add_action( 'deprecated_function_run', 'rest_handle_deprecated_function', 10, 3 );
+       add_filter( 'deprecated_function_trigger_error', '__return_false' );
+       add_action( 'deprecated_argument_run', 'rest_handle_deprecated_argument', 10, 3 );
+       add_filter( 'deprecated_argument_trigger_error', '__return_false' );
+
+       // Default serving.
+       add_filter( 'rest_pre_serve_request', 'rest_send_cors_headers' );
+       add_filter( 'rest_post_dispatch', 'rest_send_allow_header', 10, 3 );
+
+       add_filter( 'rest_pre_dispatch', 'rest_handle_options_request', 10, 3 );
+}
+
+/**
+ * Loads the REST API.
+ *
+ * @since 4.4.0
+ *
+ * @global WP             $wp             Current WordPress environment instance.
+ * @global WP_REST_Server $wp_rest_server ResponseHandler instance (usually WP_REST_Server).
+ */
+function rest_api_loaded() {
+       if ( empty( $GLOBALS['wp']->query_vars['rest_route'] ) ) {
+               return;
+       }
+
+       /**
+        * Whether this is a REST Request.
+        *
+        * @since 4.4.0
+        * @var bool
+        */
+       define( 'REST_REQUEST', true );
+
+       /** @var WP_REST_Server $wp_rest_server */
+       global $wp_rest_server;
+
+       /**
+        * Filter the REST Server Class.
+        *
+        * This filter allows you to adjust the server class used by the API, using a
+        * different class to handle requests.
+        *
+        * @since 4.4.0
+        *
+        * @param string $class_name The name of the server class. Default 'WP_REST_Server'.
+        */
+       $wp_rest_server_class = apply_filters( 'wp_rest_server_class', 'WP_REST_Server' );
+       $wp_rest_server = new $wp_rest_server_class;
+
+       /**
+        * Fires when preparing to serve an API request.
+        *
+        * Endpoint objects should be created and register their hooks on this action rather
+        * than another action to ensure they're only loaded when needed.
+        *
+        * @since 4.4.0
+        *
+        * @param WP_REST_Server $wp_rest_server Server object.
+        */
+       do_action( 'rest_api_init', $wp_rest_server );
+
+       // Fire off the request.
+       $wp_rest_server->serve_request( $GLOBALS['wp']->query_vars['rest_route'] );
+
+       // We're done.
+       die();
+}
+
+/**
+ * Retrieves the URL prefix for any API resource.
+ *
+ * @since 4.4.0
+ *
+ * @return string Prefix.
+ */
+function rest_get_url_prefix() {
+       /**
+        * Filter the REST URL prefix.
+        *
+        * @since 4.4.0
+        *
+        * @param string $prefix URL prefix. Default 'wp-json'.
+        */
+       return apply_filters( 'rest_url_prefix', 'wp-json' );
+}
+
+/**
+ * Retrieves the URL to a REST endpoint on a site.
+ *
+ * Note: The returned URL is NOT escaped.
+ *
+ * @since 4.4.0
+ *
+ * @todo Check if this is even necessary
+ *
+ * @param int    $blog_id Optional. Blog ID. Default of null returns URL for current blog.
+ * @param string $path    Optional. REST route. Default '/'.
+ * @param string $scheme  Optional. Sanitization scheme. Default 'rest'.
+ * @return string Full URL to the endpoint.
+ */
+function get_rest_url( $blog_id = null, $path = '/', $scheme = 'rest' ) {
+       if ( empty( $path ) ) {
+               $path = '/';
+       }
+
+       if ( is_multisite() && get_blog_option( $blog_id, 'permalink_structure' ) || get_option( 'permalink_structure' ) ) {
+               $url = get_home_url( $blog_id, rest_get_url_prefix(), $scheme );
+               $url .= '/' . ltrim( $path, '/' );
+       } else {
+               $url = trailingslashit( get_home_url( $blog_id, '', $scheme ) );
+
+               $path = '/' . ltrim( $path, '/' );
+
+               $url = add_query_arg( 'rest_route', $path, $url );
+       }
+
+       if ( is_ssl() ) {
+               // If the current host is the same as the REST URL host, force the REST URL scheme to HTTPS.
+               if ( $_SERVER['SERVER_NAME'] === parse_url( get_home_url( $blog_id ), PHP_URL_HOST ) ) {
+                       $url = set_url_scheme( $url, 'https' );
+               }
+       }
+
+       /**
+        * Filter the REST URL.
+        *
+        * Use this filter to adjust the url returned by the `get_rest_url` function.
+        *
+        * @since 4.4.0
+        *
+        * @param string $url     REST URL.
+        * @param string $path    REST route.
+        * @param int    $blog_id Blog ID.
+        * @param string $scheme  Sanitization scheme.
+        */
+       return apply_filters( 'rest_url', $url, $path, $blog_id, $scheme );
+}
+
+/**
+ * Retrieves the URL to a REST endpoint.
+ *
+ * Note: The returned URL is NOT escaped.
+ *
+ * @since 4.4.0
+ *
+ * @param string $path   Optional. REST route. Default empty.
+ * @param string $scheme Optional. Sanitization scheme. Default 'json'.
+ * @return string Full URL to the endpoint.
+ */
+function rest_url( $path = '', $scheme = 'json' ) {
+       return get_rest_url( null, $path, $scheme );
+}
+
+/**
+ * Do a REST request.
+ *
+ * Used primarily to route internal requests through WP_REST_Server.
+ *
+ * @since 4.4.0
+ *
+ * @global WP_REST_Server $wp_rest_server ResponseHandler instance (usually WP_REST_Server).
+ *
+ * @param WP_REST_Request|string $request Request.
+ * @return WP_REST_Response REST response.
+ */
+function rest_do_request( $request ) {
+       global $wp_rest_server;
+       $request = rest_ensure_request( $request );
+       return $wp_rest_server->dispatch( $request );
+}
+
+/**
+ * Ensures request arguments are a request object (for consistency).
+ *
+ * @since 4.4.0
+ *
+ * @param array|WP_REST_Request $request Request to check.
+ * @return WP_REST_Request REST request instance.
+ */
+function rest_ensure_request( $request ) {
+       if ( $request instanceof WP_REST_Request ) {
+               return $request;
+       }
+
+       return new WP_REST_Request( 'GET', '', $request );
+}
+
+/**
+ * Ensures a REST response is a response object (for consistency).
+ *
+ * This implements WP_HTTP_Response, allowing usage of `set_status`/`header`/etc
+ * without needing to double-check the object. Will also allow WP_Error to indicate error
+ * responses, so users should immediately check for this value.
+ *
+ * @since 4.4.0
+ *
+ * @param WP_Error|WP_HTTP_Response|mixed $response Response to check.
+ * @return mixed WP_Error if response generated an error, WP_HTTP_Response if response
+ *               is a already an instance, otherwise returns a new WP_REST_Response instance.
+ */
+function rest_ensure_response( $response ) {
+       if ( is_wp_error( $response ) ) {
+               return $response;
+       }
+
+       if ( $response instanceof WP_HTTP_Response ) {
+               return $response;
+       }
+
+       return new WP_REST_Response( $response );
+}
+
+/**
+ * Handles _deprecated_function() errors.
+ *
+ * @since 4.4.0
+ *
+ * @param string $function    Function name.
+ * @param string $replacement Replacement function name.
+ * @param string $version     Version.
+ */
+function rest_handle_deprecated_function( $function, $replacement, $version ) {
+       if ( ! empty( $replacement ) ) {
+               /* translators: 1: function name, 2: WordPress version number, 3: new function name */
+               $string = sprintf( __( '%1$s (since %2$s; use %3$s instead)' ), $function, $version, $replacement );
+       } else {
+               /* translators: 1: function name, 2: WordPress version number */
+               $string = sprintf( __( '%1$s (since %2$s; no alternative available)' ), $function, $version );
+       }
+
+       header( sprintf( 'X-WP-DeprecatedFunction: %s', $string ) );
+}
+
+/**
+ * Handles _deprecated_argument() errors.
+ *
+ * @since 4.4.0
+ *
+ * @param string $function    Function name.
+ * @param string $replacement Replacement function name.
+ * @param string $version     Version.
+ */
+function rest_handle_deprecated_argument( $function, $replacement, $version ) {
+       if ( ! empty( $replacement ) ) {
+               /* translators: 1: function name, 2: WordPress version number, 3: new argument name */
+               $string = sprintf( __( '%1$s (since %2$s; %3$s)' ), $function, $version, $replacement );
+       } else {
+               /* translators: 1: function name, 2: WordPress version number */
+               $string = sprintf( __( '%1$s (since %2$s; no alternative available)' ), $function, $version );
+       }
+
+       header( sprintf( 'X-WP-DeprecatedParam: %s', $string ) );
+}
+
+/**
+ * Sends Cross-Origin Resource Sharing headers with API requests.
+ *
+ * @since 4.4.0
+ *
+ * @param mixed $value Response data.
+ * @return mixed Response data.
+ */
+function rest_send_cors_headers( $value ) {
+       $origin = get_http_origin();
+
+       if ( $origin ) {
+               header( 'Access-Control-Allow-Origin: ' . esc_url_raw( $origin ) );
+               header( 'Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE' );
+               header( 'Access-Control-Allow-Credentials: true' );
+       }
+
+       return $value;
+}
+
+/**
+ * Handles OPTIONS requests for the server.
+ *
+ * This is handled outside of the server code, as it doesn't obey normal route
+ * mapping.
+ *
+ * @since 4.4.0
+ *
+ * @param mixed           $response Current response, either response or `null` to indicate pass-through.
+ * @param WP_REST_Server  $handler  ResponseHandler instance (usually WP_REST_Server).
+ * @param WP_REST_Request $request  The request that was used to make current response.
+ * @return WP_REST_Response Modified response, either response or `null` to indicate pass-through.
+ */
+function rest_handle_options_request( $response, $handler, $request ) {
+       if ( ! empty( $response ) || $request->get_method() !== 'OPTIONS' ) {
+               return $response;
+       }
+
+       $response = new WP_REST_Response();
+       $data = array();
+
+       $accept = array();
+
+       foreach ( $handler->get_routes() as $route => $endpoints ) {
+               $match = preg_match( '@^' . $route . '$@i', $request->get_route(), $args );
+
+               if ( ! $match ) {
+                       continue;
+               }
+
+               $data = $handler->get_data_for_route( $route, $endpoints, 'help' );
+               $accept = array_merge( $accept, $data['methods'] );
+               break;
+       }
+       $response->header( 'Accept', implode( ', ', $accept ) );
+
+       $response->set_data( $data );
+       return $response;
+}
+
+/**
+ * Sends the "Allow" header to state all methods that can be sent to the current route.
+ *
+ * @since 4.4.0
+ *
+ * @param WP_REST_Response $response Current response being served.
+ * @param WP_REST_Server   $server   ResponseHandler instance (usually WP_REST_Server).
+ * @param WP_REST_Request  $request  The request that was used to make current response.
+ * @return WP_REST_Response Response to be served, with "Allow" header if route has allowed methods.
+ */
+function rest_send_allow_header( $response, $server, $request ) {
+       $matched_route = $response->get_matched_route();
+
+       if ( ! $matched_route ) {
+               return $response;
+       }
+
+       $routes = $server->get_routes();
+
+       $allowed_methods = array();
+
+       // Get the allowed methods across the routes.
+       foreach ( $routes[ $matched_route ] as $_handler ) {
+               foreach ( $_handler['methods'] as $handler_method => $value ) {
+
+                       if ( ! empty( $_handler['permission_callback'] ) ) {
+
+                               $permission = call_user_func( $_handler['permission_callback'], $request );
+
+                               $allowed_methods[ $handler_method ] = true === $permission;
+                       } else {
+                               $allowed_methods[ $handler_method ] = true;
+                       }
+               }
+       }
+
+       // Strip out all the methods that are not allowed (false values).
+       $allowed_methods = array_filter( $allowed_methods );
+
+       if ( $allowed_methods ) {
+               $response->header( 'Allow', implode( ', ', array_map( 'strtoupper', array_keys( $allowed_methods ) ) ) );
+       }
+
+       return $response;
+}
+
+/**
+ * Adds the REST API URL to the WP RSD endpoint.
+ *
+ * @since 4.4.0
+ *
+ * @see get_rest_url()
+ */
+function rest_output_rsd() {
+       $api_root = get_rest_url();
+
+       if ( empty( $api_root ) ) {
+               return;
+       }
+       ?>
+       <api name="WP-API" blogID="1" preferred="false" apiLink="<?php echo esc_url( $api_root ); ?>" />
+       <?php
+}
+
+/**
+ * Outputs the REST API link tag into page header.
+ *
+ * @since 4.4.0
+ *
+ * @see get_rest_url()
+ */
+function rest_output_link_wp_head() {
+       $api_root = get_rest_url();
+
+       if ( empty( $api_root ) ) {
+               return;
+       }
+
+       echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
+}
+
+/**
+ * Sends a Link header for the REST API.
+ *
+ * @since 4.4.0
+ */
+function rest_output_link_header() {
+       if ( headers_sent() ) {
+               return;
+       }
+
+       $api_root = get_rest_url();
+
+       if ( empty( $api_root ) ) {
+               return;
+       }
+
+       header( 'Link: <' . esc_url_raw( $api_root ) . '>; rel="https://api.w.org/"', false );
+}
+
+/**
+ * Checks for errors when using cookie-based authentication.
+ *
+ * WordPress' built-in cookie authentication is always active
+ * for logged in users. However, the API has to check nonces
+ * for each request to ensure users are not vulnerable to CSRF.
+ *
+ * @since 4.4.0
+ *
+ * @global mixed $wp_rest_auth_cookie
+ *
+ * @param WP_Error|mixed $result Error from another authentication handler, null if we should handle it,
+ *                               or another value if not.
+ * @return WP_Error|mixed|bool WP_Error if the cookie is invalid, the $result, otherwise true.
+ */
+function rest_cookie_check_errors( $result ) {
+       if ( ! empty( $result ) ) {
+               return $result;
+       }
+
+       global $wp_rest_auth_cookie;
+
+       /*
+        * Is cookie authentication being used? (If we get an auth
+        * error, but we're still logged in, another authentication
+        * must have been used).
+        */
+       if ( true !== $wp_rest_auth_cookie && is_user_logged_in() ) {
+               return $result;
+       }
+
+       // Determine if there is a nonce.
+       $nonce = null;
+
+       if ( isset( $_REQUEST['_wpnonce'] ) ) {
+               $nonce = $_REQUEST['_wpnonce'];
+       } elseif ( isset( $_SERVER['HTTP_X_WP_NONCE'] ) ) {
+               $nonce = $_SERVER['HTTP_X_WP_NONCE'];
+       }
+
+       if ( null === $nonce ) {
+               // No nonce at all, so act as if it's an unauthenticated request.
+               wp_set_current_user( 0 );
+               return true;
+       }
+
+       // Check the nonce.
+       $result = wp_verify_nonce( $nonce, 'wp_rest' );
+
+       if ( ! $result ) {
+               return new WP_Error( 'rest_cookie_invalid_nonce', __( 'Cookie nonce is invalid' ), array( 'status' => 403 ) );
+       }
+
+       return true;
+}
+
+/**
+ * Collects cookie authentication status.
+ *
+ * Collects errors from wp_validate_auth_cookie for use by rest_cookie_check_errors.
+ *
+ * @since 4.4.0
+ *
+ * @see current_action()
+ * @global mixed $wp_rest_auth_cookie
+ */
+function rest_cookie_collect_status() {
+       global $wp_rest_auth_cookie;
+
+       $status_type = current_action();
+
+       if ( 'auth_cookie_valid' !== $status_type ) {
+               $wp_rest_auth_cookie = substr( $status_type, 12 );
+               return;
+       }
+
+       $wp_rest_auth_cookie = true;
+}
+
+/**
+ * Parses an RFC3339 timestamp into a DateTime.
+ *
+ * @since 4.4.0
+ *
+ * @param string $date      RFC3339 timestamp.
+ * @param bool   $force_utc Optional. Whether to force UTC timezone instead of using
+ *                          the timestamp's timezone. Default false.
+ * @return DateTime DateTime instance.
+ */
+function rest_parse_date( $date, $force_utc = false ) {
+       if ( $force_utc ) {
+               $date = preg_replace( '/[+-]\d+:?\d+$/', '+00:00', $date );
+       }
+
+       $regex = '#^\d{4}-\d{2}-\d{2}[Tt ]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}(?::\d{2})?)?$#';
+
+       if ( ! preg_match( $regex, $date, $matches ) ) {
+               return false;
+       }
+
+       return strtotime( $date );
+}
+
+/**
+ * Retrieves a local date with its GMT equivalent, in MySQL datetime format.
+ *
+ * @since 4.4.0
+ *
+ * @see rest_parse_date()
+ *
+ * @param string $date      RFC3339 timestamp.
+ * @param bool   $force_utc Whether a UTC timestamp should be forced. Default false.
+ * @return array|null Local and UTC datetime strings, in MySQL datetime format (Y-m-d H:i:s),
+ *                    null on failure.
+ */
+function rest_get_date_with_gmt( $date, $force_utc = false ) {
+       $date = rest_parse_date( $date, $force_utc );
+
+       if ( empty( $date ) ) {
+               return null;
+       }
+
+       $utc = date( 'Y-m-d H:i:s', $date );
+       $local = get_date_from_gmt( $utc );
+
+       return array( $local, $utc );
+}
diff --git a/wp-includes/rest-api/class-wp-rest-request.php b/wp-includes/rest-api/class-wp-rest-request.php
new file mode 100644 (file)
index 0000000..fdf13c4
--- /dev/null
@@ -0,0 +1,930 @@
+<?php
+/**
+ * REST API: WP_REST_Request class
+ *
+ * @package WordPress
+ * @subpackage REST_API
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a REST request object.
+ *
+ * Contains data from the request, to be passed to the callback.
+ *
+ * Note: This implements ArrayAccess, and acts as an array of parameters when
+ * used in that manner. It does not use ArrayObject (as we cannot rely on SPL),
+ * so be aware it may have non-array behaviour in some cases.
+ *
+ * @since 4.4.0
+ *
+ * @see ArrayAccess
+ */
+class WP_REST_Request implements ArrayAccess {
+
+       /**
+        * HTTP method.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var string
+        */
+       protected $method = '';
+
+       /**
+        * Parameters passed to the request.
+        *
+        * These typically come from the `$_GET`, `$_POST` and `$_FILES`
+        * superglobals when being created from the global scope.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array Contains GET, POST and FILES keys mapping to arrays of data.
+        */
+       protected $params;
+
+       /**
+        * HTTP headers for the request.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array Map of key to value. Key is always lowercase, as per HTTP specification.
+        */
+       protected $headers = array();
+
+       /**
+        * Body data.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var string Binary data from the request.
+        */
+       protected $body = null;
+
+       /**
+        * Route matched for the request.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var string
+        */
+       protected $route;
+
+       /**
+        * Attributes (options) for the route that was matched.
+        *
+        * This is the options array used when the route was registered, typically
+        * containing the callback as well as the valid methods for the route.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array Attributes for the request.
+        */
+       protected $attributes = array();
+
+       /**
+        * Used to determine if the JSON data has been parsed yet.
+        *
+        * Allows lazy-parsing of JSON data where possible.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var bool
+        */
+       protected $parsed_json = false;
+
+       /**
+        * Used to determine if the body data has been parsed yet.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var bool
+        */
+       protected $parsed_body = false;
+
+       /**
+        * Constructor.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $method     Optional. Request method. Default empty.
+        * @param string $route      Optional. Request route. Default empty.
+        * @param array  $attributes Optional. Request attributes. Default empty array.
+        */
+       public function __construct( $method = '', $route = '', $attributes = array() ) {
+               $this->params = array(
+                       'URL'   => array(),
+                       'GET'   => array(),
+                       'POST'  => array(),
+                       'FILES' => array(),
+
+                       // See parse_json_params.
+                       'JSON'  => null,
+
+                       'defaults' => array(),
+               );
+
+               $this->set_method( $method );
+               $this->set_route( $route );
+               $this->set_attributes( $attributes );
+       }
+
+       /**
+        * Retrieves the HTTP method for the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return string HTTP method.
+        */
+       public function get_method() {
+               return $this->method;
+       }
+
+       /**
+        * Sets HTTP method for the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $method HTTP method.
+        */
+       public function set_method( $method ) {
+               $this->method = strtoupper( $method );
+       }
+
+       /**
+        * Retrieves all headers from the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Map of key to value. Key is always lowercase, as per HTTP specification.
+        */
+       public function get_headers() {
+               return $this->headers;
+       }
+
+       /**
+        * Canonicalizes the header name.
+        *
+        * Ensures that header names are always treated the same regardless of
+        * source. Header names are always case insensitive.
+        *
+        * Note that we treat `-` (dashes) and `_` (underscores) as the same
+        * character, as per header parsing rules in both Apache and nginx.
+        *
+        * @link http://stackoverflow.com/q/18185366
+        * @link http://wiki.nginx.org/Pitfalls#Missing_.28disappearing.29_HTTP_headers
+        * @link http://nginx.org/en/docs/http/ngx_http_core_module.html#underscores_in_headers
+        *
+        * @since 4.4.0
+        * @access public
+        * @static
+        *
+        * @param string $key Header name.
+        * @return string Canonicalized name.
+        */
+       public static function canonicalize_header_name( $key ) {
+               $key = strtolower( $key );
+               $key = str_replace( '-', '_', $key );
+
+               return $key;
+       }
+
+       /**
+        * Retrieves the given header from the request.
+        *
+        * If the header has multiple values, they will be concatenated with a comma
+        * as per the HTTP specification. Be aware that some non-compliant headers
+        * (notably cookie headers) cannot be joined this way.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $key Header name, will be canonicalized to lowercase.
+        * @return string|null String value if set, null otherwise.
+        */
+       public function get_header( $key ) {
+               $key = $this->canonicalize_header_name( $key );
+
+               if ( ! isset( $this->headers[ $key ] ) ) {
+                       return null;
+               }
+
+               return implode( ',', $this->headers[ $key ] );
+       }
+
+       /**
+        * Retrieves header values from the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $key Header name, will be canonicalized to lowercase.
+        * @return array|null List of string values if set, null otherwise.
+        */
+       public function get_header_as_array( $key ) {
+               $key = $this->canonicalize_header_name( $key );
+
+               if ( ! isset( $this->headers[ $key ] ) ) {
+                       return null;
+               }
+
+               return $this->headers[ $key ];
+       }
+
+       /**
+        * Sets the header on request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $key   Header name.
+        * @param string $value Header value, or list of values.
+        */
+       public function set_header( $key, $value ) {
+               $key = $this->canonicalize_header_name( $key );
+               $value = (array) $value;
+
+               $this->headers[ $key ] = $value;
+       }
+
+       /**
+        * Appends a header value for the given header.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $key   Header name.
+        * @param string $value Header value, or list of values.
+        */
+       public function add_header( $key, $value ) {
+               $key = $this->canonicalize_header_name( $key );
+               $value = (array) $value;
+
+               if ( ! isset( $this->headers[ $key ] ) ) {
+                       $this->headers[ $key ] = array();
+               }
+
+               $this->headers[ $key ] = array_merge( $this->headers[ $key ], $value );
+       }
+
+       /**
+        * Removes all values for a header.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $key Header name.
+        */
+       public function remove_header( $key ) {
+               unset( $this->headers[ $key ] );
+       }
+
+       /**
+        * Sets headers on the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $headers  Map of header name to value.
+        * @param bool  $override If true, replace the request's headers. Otherwise, merge with existing.
+        */
+       public function set_headers( $headers, $override = true ) {
+               if ( true === $override ) {
+                       $this->headers = array();
+               }
+
+               foreach ( $headers as $key => $value ) {
+                       $this->set_header( $key, $value );
+               }
+       }
+
+       /**
+        * Retrieves the content-type of the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Map containing 'value' and 'parameters' keys.
+        */
+       public function get_content_type() {
+               $value = $this->get_header( 'content-type' );
+               if ( empty( $value ) ) {
+                       return null;
+               }
+
+               $parameters = '';
+               if ( strpos( $value, ';' ) ) {
+                       list( $value, $parameters ) = explode( ';', $value, 2 );
+               }
+
+               $value = strtolower( $value );
+               if ( strpos( $value, '/' ) === false ) {
+                       return null;
+               }
+
+               // Parse type and subtype out.
+               list( $type, $subtype ) = explode( '/', $value, 2 );
+
+               $data = compact( 'value', 'type', 'subtype', 'parameters' );
+               $data = array_map( 'trim', $data );
+
+               return $data;
+       }
+
+       /**
+        * Retrieves the parameter priority order.
+        *
+        * Used when checking parameters in get_param().
+        *
+        * @since 4.4.0
+        * @access protected
+        *
+        * @return array List of types to check, in order of priority.
+        */
+       protected function get_parameter_order() {
+               $order = array();
+               $order[] = 'JSON';
+
+               $this->parse_json_params();
+
+               // Ensure we parse the body data.
+               $body = $this->get_body();
+               if ( $this->method !== 'POST' && ! empty( $body ) ) {
+                       $this->parse_body_params();
+               }
+
+               $accepts_body_data = array( 'POST', 'PUT', 'PATCH' );
+               if ( in_array( $this->method, $accepts_body_data ) ) {
+                       $order[] = 'POST';
+               }
+
+               $order[] = 'GET';
+               $order[] = 'URL';
+               $order[] = 'defaults';
+
+               /**
+                * Filter the parameter order.
+                *
+                * The order affects which parameters are checked when using get_param() and family.
+                * This acts similarly to PHP's `request_order` setting.
+                *
+                * @since 4.4.0
+                *
+                * @param array           $order {
+                *    An array of types to check, in order of priority.
+                *
+                *    @param string $type The type to check.
+                * }
+                * @param WP_REST_Request $this The request object.
+                */
+               return apply_filters( 'rest_request_parameter_order', $order, $this );
+       }
+
+       /**
+        * Retrieves a parameter from the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $key Parameter name.
+        * @return mixed|null Value if set, null otherwise.
+        */
+       public function get_param( $key ) {
+               $order = $this->get_parameter_order();
+
+               foreach ( $order as $type ) {
+                       // Determine if we have the parameter for this type.
+                       if ( isset( $this->params[ $type ][ $key ] ) ) {
+                               return $this->params[ $type ][ $key ];
+                       }
+               }
+
+               return null;
+       }
+
+       /**
+        * Sets a parameter on the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $key   Parameter name.
+        * @param mixed  $value Parameter value.
+        */
+       public function set_param( $key, $value ) {
+               switch ( $this->method ) {
+                       case 'POST':
+                               $this->params['POST'][ $key ] = $value;
+                               break;
+
+                       default:
+                               $this->params['GET'][ $key ] = $value;
+                               break;
+               }
+       }
+
+       /**
+        * Retrieves merged parameters from the request.
+        *
+        * The equivalent of get_param(), but returns all parameters for the request.
+        * Handles merging all the available values into a single array.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Map of key to value.
+        */
+       public function get_params() {
+               $order = $this->get_parameter_order();
+               $order = array_reverse( $order, true );
+
+               $params = array();
+               foreach ( $order as $type ) {
+                       $params = array_merge( $params, (array) $this->params[ $type ] );
+               }
+
+               return $params;
+       }
+
+       /**
+        * Retrieves parameters from the route itself.
+        *
+        * These are parsed from the URL using the regex.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Parameter map of key to value.
+        */
+       public function get_url_params() {
+               return $this->params['URL'];
+       }
+
+       /**
+        * Sets parameters from the route.
+        *
+        * Typically, this is set after parsing the URL.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $params Parameter map of key to value.
+        */
+       public function set_url_params( $params ) {
+               $this->params['URL'] = $params;
+       }
+
+       /**
+        * Retrieves parameters from the query string.
+        *
+        * These are the parameters you'd typically find in `$_GET`.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Parameter map of key to value
+        */
+       public function get_query_params() {
+               return $this->params['GET'];
+       }
+
+       /**
+        * Sets parameters from the query string.
+        *
+        * Typically, this is set from `$_GET`.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $params Parameter map of key to value.
+        */
+       public function set_query_params( $params ) {
+               $this->params['GET'] = $params;
+       }
+
+       /**
+        * Retrieves parameters from the body.
+        *
+        * These are the parameters you'd typically find in `$_POST`.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Parameter map of key to value.
+        */
+       public function get_body_params() {
+               return $this->params['POST'];
+       }
+
+       /**
+        * Sets parameters from the body.
+        *
+        * Typically, this is set from `$_POST`.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $params Parameter map of key to value.
+        */
+       public function set_body_params( $params ) {
+               $this->params['POST'] = $params;
+       }
+
+       /**
+        * Retrieves multipart file parameters from the body.
+        *
+        * These are the parameters you'd typically find in `$_FILES`.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Parameter map of key to value
+        */
+       public function get_file_params() {
+               return $this->params['FILES'];
+       }
+
+       /**
+        * Sets multipart file parameters from the body.
+        *
+        * Typically, this is set from `$_FILES`.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $params Parameter map of key to value.
+        */
+       public function set_file_params( $params ) {
+               $this->params['FILES'] = $params;
+       }
+
+       /**
+        * Retrieves the default parameters.
+        *
+        * These are the parameters set in the route registration.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Parameter map of key to value
+        */
+       public function get_default_params() {
+               return $this->params['defaults'];
+       }
+
+       /**
+        * Sets default parameters.
+        *
+        * These are the parameters set in the route registration.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $params Parameter map of key to value.
+        */
+       public function set_default_params( $params ) {
+               $this->params['defaults'] = $params;
+       }
+
+       /**
+        * Retrieves the request body content.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return string Binary data from the request body.
+        */
+       public function get_body() {
+               return $this->body;
+       }
+
+       /**
+        * Sets body content.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $data Binary data from the request body.
+        */
+       public function set_body( $data ) {
+               $this->body = $data;
+
+               // Enable lazy parsing.
+               $this->parsed_json = false;
+               $this->parsed_body = false;
+               $this->params['JSON'] = null;
+       }
+
+       /**
+        * Retrieves the parameters from a JSON-formatted body.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Parameter map of key to value.
+        */
+       public function get_json_params() {
+               // Ensure the parameters have been parsed out.
+               $this->parse_json_params();
+
+               return $this->params['JSON'];
+       }
+
+       /**
+        * Parses the JSON parameters.
+        *
+        * Avoids parsing the JSON data until we need to access it.
+        *
+        * @since 4.4.0
+        * @access protected
+        */
+       protected function parse_json_params() {
+               if ( $this->parsed_json ) {
+                       return;
+               }
+
+               $this->parsed_json = true;
+
+               // Check that we actually got JSON.
+               $content_type = $this->get_content_type();
+
+               if ( empty( $content_type ) || 'application/json' !== $content_type['value'] ) {
+                       return;
+               }
+
+               $params = json_decode( $this->get_body(), true );
+
+               /*
+                * Check for a parsing error.
+                *
+                * Note that due to WP's JSON compatibility functions, json_last_error
+                * might not be defined: https://core.trac.wordpress.org/ticket/27799
+                */
+               if ( null === $params && ( ! function_exists( 'json_last_error' ) || JSON_ERROR_NONE !== json_last_error() ) ) {
+                       return;
+               }
+
+               $this->params['JSON'] = $params;
+       }
+
+       /**
+        * Parses the request body parameters.
+        *
+        * Parses out URL-encoded bodies for request methods that aren't supported
+        * natively by PHP. In PHP 5.x, only POST has these parsed automatically.
+        *
+        * @since 4.4.0
+        * @access protected
+        */
+       protected function parse_body_params() {
+               if ( $this->parsed_body ) {
+                       return;
+               }
+
+               $this->parsed_body = true;
+
+               /*
+                * Check that we got URL-encoded. Treat a missing content-type as
+                * URL-encoded for maximum compatibility.
+                */
+               $content_type = $this->get_content_type();
+
+               if ( ! empty( $content_type ) && 'application/x-www-form-urlencoded' !== $content_type['value'] ) {
+                       return;
+               }
+
+               parse_str( $this->get_body(), $params );
+
+               /*
+                * Amazingly, parse_str follows magic quote rules. Sigh.
+                *
+                * NOTE: Do not refactor to use `wp_unslash`.
+                */
+               if ( get_magic_quotes_gpc() ) {
+                       $params = stripslashes_deep( $params );
+               }
+
+               /*
+                * Add to the POST parameters stored internally. If a user has already
+                * set these manually (via `set_body_params`), don't override them.
+                */
+               $this->params['POST'] = array_merge( $params, $this->params['POST'] );
+       }
+
+       /**
+        * Retrieves the route that matched the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return string Route matching regex.
+        */
+       public function get_route() {
+               return $this->route;
+       }
+
+       /**
+        * Sets the route that matched the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $route Route matching regex.
+        */
+       public function set_route( $route ) {
+               $this->route = $route;
+       }
+
+       /**
+        * Retrieves the attributes for the request.
+        *
+        * These are the options for the route that was matched.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array Attributes for the request.
+        */
+       public function get_attributes() {
+               return $this->attributes;
+       }
+
+       /**
+        * Sets the attributes for the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $attributes Attributes for the request.
+        */
+       public function set_attributes( $attributes ) {
+               $this->attributes = $attributes;
+       }
+
+       /**
+        * Sanitizes (where possible) the params on the request.
+        *
+        * This is primarily based off the sanitize_callback param on each registered
+        * argument.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return true|null True if there are no parameters to sanitize, null otherwise.
+        */
+       public function sanitize_params() {
+
+               $attributes = $this->get_attributes();
+
+               // No arguments set, skip sanitizing.
+               if ( empty( $attributes['args'] ) ) {
+                       return true;
+               }
+
+               $order = $this->get_parameter_order();
+
+               foreach ( $order as $type ) {
+                       if ( empty( $this->params[ $type ] ) ) {
+                               continue;
+                       }
+                       foreach ( $this->params[ $type ] as $key => $value ) {
+                               // Check if this param has a sanitize_callback added.
+                               if ( isset( $attributes['args'][ $key ] ) && ! empty( $attributes['args'][ $key ]['sanitize_callback'] ) ) {
+                                       $this->params[ $type ][ $key ] = call_user_func( $attributes['args'][ $key ]['sanitize_callback'], $value, $this, $key );
+                               }
+                       }
+               }
+               return null;
+       }
+
+       /**
+        * Checks whether this request is valid according to its attributes.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return bool|WP_Error True if there are no parameters to validate or if all pass validation,
+        *                       WP_Error if required parameters are missing.
+        */
+       public function has_valid_params() {
+
+               $attributes = $this->get_attributes();
+               $required = array();
+
+               // No arguments set, skip validation.
+               if ( empty( $attributes['args'] ) ) {
+                       return true;
+               }
+
+               foreach ( $attributes['args'] as $key => $arg ) {
+
+                       $param = $this->get_param( $key );
+                       if ( isset( $arg['required'] ) && true === $arg['required'] && null === $param ) {
+                               $required[] = $key;
+                       }
+               }
+
+               if ( ! empty( $required ) ) {
+                       return new WP_Error( 'rest_missing_callback_param', sprintf( __( 'Missing parameter(s): %s' ), implode( ', ', $required ) ), array( 'status' => 400, 'params' => $required ) );
+               }
+
+               /*
+                * Check the validation callbacks for each registered arg.
+                *
+                * This is done after required checking as required checking is cheaper.
+                */
+               $invalid_params = array();
+
+               foreach ( $attributes['args'] as $key => $arg ) {
+
+                       $param = $this->get_param( $key );
+
+                       if ( null !== $param && ! empty( $arg['validate_callback'] ) ) {
+                               $valid_check = call_user_func( $arg['validate_callback'], $param, $this, $key );
+
+                               if ( false === $valid_check ) {
+                                       $invalid_params[ $key ] = __( 'Invalid parameter.' );
+                               }
+
+                               if ( is_wp_error( $valid_check ) ) {
+                                       $invalid_params[] = sprintf( '%s (%s)', $key, $valid_check->get_error_message() );
+                               }
+                       }
+               }
+
+               if ( $invalid_params ) {
+                       return new WP_Error( 'rest_invalid_param', sprintf( __( 'Invalid parameter(s): %s' ), implode( ', ', $invalid_params ) ), array( 'status' => 400, 'params' => $invalid_params ) );
+               }
+
+               return true;
+
+       }
+
+       /**
+        * Checks if a parameter is set.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $offset Parameter name.
+        * @return bool Whether the parameter is set.
+        */
+       public function offsetExists( $offset ) {
+               $order = $this->get_parameter_order();
+
+               foreach ( $order as $type ) {
+                       if ( isset( $this->params[ $type ][ $offset ] ) ) {
+                               return true;
+                       }
+               }
+
+               return false;
+       }
+
+       /**
+        * Retrieves a parameter from the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $offset Parameter name.
+        * @return mixed|null Value if set, null otherwise.
+        */
+       public function offsetGet( $offset ) {
+               return $this->get_param( $offset );
+       }
+
+       /**
+        * Sets a parameter on the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $offset Parameter name.
+        * @param mixed  $value  Parameter value.
+        */
+       public function offsetSet( $offset, $value ) {
+               $this->set_param( $offset, $value );
+       }
+
+       /**
+        * Removes a parameter from the request.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $offset Parameter name.
+        */
+       public function offsetUnset( $offset ) {
+               $order = $this->get_parameter_order();
+
+               // Remove the offset from every group.
+               foreach ( $order as $type ) {
+                       unset( $this->params[ $type ][ $offset ] );
+               }
+       }
+}
diff --git a/wp-includes/rest-api/class-wp-rest-response.php b/wp-includes/rest-api/class-wp-rest-response.php
new file mode 100644 (file)
index 0000000..db80029
--- /dev/null
@@ -0,0 +1,259 @@
+<?php
+/**
+ * REST API: WP_REST_Response class
+ *
+ * @package WordPress
+ * @subpackage REST_API
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a REST response object.
+ *
+ * @since 4.4.0
+ *
+ * @see WP_HTTP_Response
+ */
+class WP_REST_Response extends WP_HTTP_Response {
+
+       /**
+        * Links related to the response.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array
+        */
+       protected $links = array();
+
+       /**
+        * The route that was to create the response.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var string
+        */
+       protected $matched_route = '';
+
+       /**
+        * The handler that was used to create the response.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var null|array
+        */
+       protected $matched_handler = null;
+
+       /**
+        * Adds a link to the response.
+        *
+        * @internal The $rel parameter is first, as this looks nicer when sending multiple.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @link http://tools.ietf.org/html/rfc5988
+        * @link http://www.iana.org/assignments/link-relations/link-relations.xml
+        *
+        * @param string $rel        Link relation. Either an IANA registered type,
+        *                           or an absolute URL.
+        * @param string $href       Target URI for the link.
+        * @param array  $attributes Optional. Link parameters to send along with the URL. Default empty array.
+        */
+       public function add_link( $rel, $href, $attributes = array() ) {
+               if ( empty( $this->links[ $rel ] ) ) {
+                       $this->links[ $rel ] = array();
+               }
+
+               if ( isset( $attributes['href'] ) ) {
+                       // Remove the href attribute, as it's used for the main URL.
+                       unset( $attributes['href'] );
+               }
+
+               $this->links[ $rel ][] = array(
+                       'href'       => $href,
+                       'attributes' => $attributes,
+               );
+       }
+
+       /**
+        * Removes a link from the response.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param  string $rel  Link relation. Either an IANA registered type, or an absolute URL.
+        * @param  string $href Optional. Only remove links for the relation matching the given href.
+        *                      Default null.
+        */
+       public function remove_link( $rel, $href = null ) {
+               if ( ! isset( $this->links[ $rel ] ) ) {
+                       return;
+               }
+
+               if ( $href ) {
+                       $this->links[ $rel ] = wp_list_filter( $this->links[ $rel ], array( 'href' => $href ), 'NOT' );
+               } else {
+                       $this->links[ $rel ] = array();
+               }
+
+               if ( ! $this->links[ $rel ] ) {
+                       unset( $this->links[ $rel ] );
+               }
+       }
+
+       /**
+        * Adds multiple links to the response.
+        *
+        * Link data should be an associative array with link relation as the key.
+        * The value can either be an associative array of link attributes
+        * (including `href` with the URL for the response), or a list of these
+        * associative arrays.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $links Map of link relation to list of links.
+        */
+       public function add_links( $links ) {
+               foreach ( $links as $rel => $set ) {
+                       // If it's a single link, wrap with an array for consistent handling.
+                       if ( isset( $set['href'] ) ) {
+                               $set = array( $set );
+                       }
+
+                       foreach ( $set as $attributes ) {
+                               $this->add_link( $rel, $attributes['href'], $attributes );
+                       }
+               }
+       }
+
+       /**
+        * Retrieves links for the response.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array List of links.
+        */
+       public function get_links() {
+               return $this->links;
+       }
+
+       /**
+        * Sets a single link header.
+        *
+        * @internal The $rel parameter is first, as this looks nicer when sending multiple.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @link http://tools.ietf.org/html/rfc5988
+        * @link http://www.iana.org/assignments/link-relations/link-relations.xml
+        *
+        * @param string $rel   Link relation. Either an IANA registered type, or an absolute URL.
+        * @param string $link  Target IRI for the link.
+        * @param array  $other Optional. Other parameters to send, as an assocative array.
+        *                      Default empty array.
+        */
+       public function link_header( $rel, $link, $other = array() ) {
+               $header = '<' . $link . '>; rel="' . $rel . '"';
+
+               foreach ( $other as $key => $value ) {
+                       if ( 'title' === $key ) {
+                               $value = '"' . $value . '"';
+                       }
+                       $header .= '; ' . $key . '=' . $value;
+               }
+               $this->header( 'Link', $header, false );
+       }
+
+       /**
+        * Retrieves the route that was used.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return string The matched route.
+        */
+       public function get_matched_route() {
+               return $this->matched_route;
+       }
+
+       /**
+        * Sets the route (regex for path) that caused the response.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $route Route name.
+        */
+       public function set_matched_route( $route ) {
+               $this->matched_route = $route;
+       }
+
+       /**
+        * Retrieves the handler that was used to generate the response.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return null|array The handler that was used to create the response.
+        */
+       public function get_matched_handler() {
+               return $this->matched_handler;
+       }
+
+       /**
+        * Retrieves the handler that was responsible for generating the response.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $handler The matched handler.
+        */
+       public function set_matched_handler( $handler ) {
+               $this->matched_handler = $handler;
+       }
+
+       /**
+        * Checks if the response is an error, i.e. >= 400 response code.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return bool Whether the response is an error.
+        */
+       public function is_error() {
+               return $this->get_status() >= 400;
+       }
+
+       /**
+        * Retrieves a WP_Error object from the response.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return WP_Error|null WP_Error or null on not an errored response.
+        */
+       public function as_error() {
+               if ( ! $this->is_error() ) {
+                       return null;
+               }
+
+               $error = new WP_Error;
+
+               if ( is_array( $this->get_data() ) ) {
+                       $data = $this->get_data();
+                       $error->add( $data['code'], $data['message'], $data['data'] );
+                       if ( ! empty( $data['additional_errors'] ) ) {
+                               foreach( $data['additional_errors'] as $err ) {
+                                       $error->add( $err['code'], $err['message'], $err['data'] );
+                               }
+                       }
+               } else {
+                       $error->add( $this->get_status(), '', array( 'status' => $this->get_status() ) );
+               }
+
+               return $error;
+       }
+}
diff --git a/wp-includes/rest-api/class-wp-rest-server.php b/wp-includes/rest-api/class-wp-rest-server.php
new file mode 100644 (file)
index 0000000..dad4070
--- /dev/null
@@ -0,0 +1,1215 @@
+<?php
+/**
+ * REST API: WP_REST_Server class
+ *
+ * @package WordPress
+ * @subpackage REST_API
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement the WordPress REST API server.
+ *
+ * @since 4.4.0
+ */
+class WP_REST_Server {
+
+       /**
+        * Alias for GET transport method.
+        *
+        * @since 4.4.0
+        * @var string
+        */
+       const READABLE = 'GET';
+
+       /**
+        * Alias for POST transport method.
+        *
+        * @since 4.4.0
+        * @var string
+        */
+       const CREATABLE = 'POST';
+
+       /**
+        * Alias for POST, PUT, PATCH transport methods together.
+        *
+        * @since 4.4.0
+        * @var string
+        */
+       const EDITABLE = 'POST, PUT, PATCH';
+
+       /**
+        * Alias for DELETE transport method.
+        *
+        * @since 4.4.0
+        * @var string
+        */
+       const DELETABLE = 'DELETE';
+
+       /**
+        * Alias for GET, POST, PUT, PATCH & DELETE transport methods together.
+        *
+        * @since 4.4.0
+        * @var string
+        */
+       const ALLMETHODS = 'GET, POST, PUT, PATCH, DELETE';
+
+       /**
+        * Namespaces registered to the server.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array
+        */
+       protected $namespaces = array();
+
+       /**
+        * Endpoints registered to the server.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array
+        */
+       protected $endpoints = array();
+
+       /**
+        * Options defined for the routes.
+        *
+        * @since 4.4.0
+        * @access protected
+        * @var array
+        */
+       protected $route_options = array();
+
+       /**
+        * Instantiates the REST server.
+        *
+        * @since 4.4.0
+        * @access public
+        */
+       public function __construct() {
+               $this->endpoints = array(
+                       // Meta endpoints.
+                       '/' => array(
+                               'callback' => array( $this, 'get_index' ),
+                               'methods' => 'GET',
+                               'args' => array(
+                                       'context' => array(
+                                               'default' => 'view',
+                                       ),
+                               ),
+                       ),
+               );
+       }
+
+
+       /**
+        * Checks the authentication headers if supplied.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return WP_Error|null WP_Error indicates unsuccessful login, null indicates successful
+        *                       or no authentication provided
+        */
+       public function check_authentication() {
+               /**
+                * Pass an authentication error to the API
+                *
+                * This is used to pass a WP_Error from an authentication method back to
+                * the API.
+                *
+                * Authentication methods should check first if they're being used, as
+                * multiple authentication methods can be enabled on a site (cookies,
+                * HTTP basic auth, OAuth). If the authentication method hooked in is
+                * not actually being attempted, null should be returned to indicate
+                * another authentication method should check instead. Similarly,
+                * callbacks should ensure the value is `null` before checking for
+                * errors.
+                *
+                * A WP_Error instance can be returned if an error occurs, and this should
+                * match the format used by API methods internally (that is, the `status`
+                * data should be used). A callback can return `true` to indicate that
+                * the authentication method was used, and it succeeded.
+                *
+                * @since 4.4.0
+                *
+                * @param WP_Error|null|bool WP_Error if authentication error, null if authentication
+                *                              method wasn't used, true if authentication succeeded.
+                */
+               return apply_filters( 'rest_authentication_errors', null );
+       }
+
+       /**
+        * Converts an error to a response object.
+        *
+        * This iterates over all error codes and messages to change it into a flat
+        * array. This enables simpler client behaviour, as it is represented as a
+        * list in JSON rather than an object/map.
+        *
+        * @since 4.4.0
+        * @access protected
+        *
+        * @param WP_Error $error WP_Error instance.
+        * @return WP_REST_Response List of associative arrays with code and message keys.
+        */
+       protected function error_to_response( $error ) {
+               $error_data = $error->get_error_data();
+
+               if ( is_array( $error_data ) && isset( $error_data['status'] ) ) {
+                       $status = $error_data['status'];
+               } else {
+                       $status = 500;
+               }
+
+               $errors = array();
+
+               foreach ( (array) $error->errors as $code => $messages ) {
+                       foreach ( (array) $messages as $message ) {
+                               $errors[] = array( 'code' => $code, 'message' => $message, 'data' => $error->get_error_data( $code ) );
+                       }
+               }
+
+               $data = $errors[0];
+               if ( count( $errors ) > 1 ) {
+                       // Remove the primary error.
+                       array_shift( $errors );
+                       $data['additional_errors'] = $errors;
+               }
+
+               $response = new WP_REST_Response( $data, $status );
+
+               return $response;
+       }
+
+       /**
+        * Retrieves an appropriate error representation in JSON.
+        *
+        * Note: This should only be used in WP_REST_Server::serve_request(), as it
+        * cannot handle WP_Error internally. All callbacks and other internal methods
+        * should instead return a WP_Error with the data set to an array that includes
+        * a 'status' key, with the value being the HTTP status to send.
+        *
+        * @since 4.4.0
+        * @access protected
+        *
+        * @param string $code    WP_Error-style code.
+        * @param string $message Human-readable message.
+        * @param int    $status  Optional. HTTP status code to send. Default null.
+        * @return string JSON representation of the error
+        */
+       protected function json_error( $code, $message, $status = null ) {
+               if ( $status ) {
+                       $this->set_status( $status );
+               }
+
+               $error = compact( 'code', 'message' );
+
+               return wp_json_encode( $error );
+       }
+
+       /**
+        * Handles serving an API request.
+        *
+        * Matches the current server URI to a route and runs the first matching
+        * callback then outputs a JSON representation of the returned value.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @see WP_REST_Server::dispatch()
+        *
+        * @param string $path Optional. The request route. If not set, `$_SERVER['PATH_INFO']` will be used.
+        *                     Default null.
+        * @return false|null Null if not served and a HEAD request, false otherwise.
+        */
+       public function serve_request( $path = null ) {
+               $content_type = isset( $_GET['_jsonp'] ) ? 'application/javascript' : 'application/json';
+               $this->send_header( 'Content-Type', $content_type . '; charset=' . get_option( 'blog_charset' ) );
+
+               /*
+                * Mitigate possible JSONP Flash attacks.
+                *
+                * http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
+                */
+               $this->send_header( 'X-Content-Type-Options', 'nosniff' );
+               $this->send_header( 'Access-Control-Expose-Headers', 'X-WP-Total, X-WP-TotalPages' );
+               $this->send_header( 'Access-Control-Allow-Headers', 'Authorization' );
+
+               /**
+                * Send nocache headers on authenticated requests.
+                *
+                * @since 4.4.0
+                *
+                * @param bool $rest_send_nocache_headers Whether to send no-cache headers.
+                */
+               $send_no_cache_headers = apply_filters( 'rest_send_nocache_headers', is_user_logged_in() );
+               if ( $send_no_cache_headers ) {
+                       foreach ( wp_get_nocache_headers() as $header => $header_value ) {
+                               $this->send_header( $header, $header_value );
+                       }
+               }
+
+               /**
+                * Filter whether the REST API is enabled.
+                *
+                * @since 4.4.0
+                *
+                * @param bool $rest_enabled Whether the REST API is enabled. Default true.
+                */
+               $enabled = apply_filters( 'rest_enabled', true );
+
+               /**
+                * Filter whether jsonp is enabled.
+                *
+                * @since 4.4.0
+                *
+                * @param bool $jsonp_enabled Whether jsonp is enabled. Default true.
+                */
+               $jsonp_enabled = apply_filters( 'rest_jsonp_enabled', true );
+
+               $jsonp_callback = null;
+
+               if ( ! $enabled ) {
+                       echo $this->json_error( 'rest_disabled', __( 'The REST API is disabled on this site.' ), 404 );
+                       return false;
+               }
+               if ( isset( $_GET['_jsonp'] ) ) {
+                       if ( ! $jsonp_enabled ) {
+                               echo $this->json_error( 'rest_callback_disabled', __( 'JSONP support is disabled on this site.' ), 400 );
+                               return false;
+                       }
+
+                       // Check for invalid characters (only alphanumeric allowed).
+                       if ( is_string( $_GET['_jsonp'] ) ) {
+                               $jsonp_callback = preg_replace( '/[^\w\.]/', '', wp_unslash( $_GET['_jsonp'] ), -1, $illegal_char_count );
+                               if ( 0 !== $illegal_char_count ) {
+                                       $jsonp_callback = null;
+                               }
+                       }
+                       if ( null === $jsonp_callback ) {
+                               echo $this->json_error( 'rest_callback_invalid', __( 'The JSONP callback function is invalid.' ), 400 );
+                               return false;
+                       }
+               }
+
+               if ( empty( $path ) ) {
+                       if ( isset( $_SERVER['PATH_INFO'] ) ) {
+                               $path = $_SERVER['PATH_INFO'];
+                       } else {
+                               $path = '/';
+                       }
+               }
+
+               $request = new WP_REST_Request( $_SERVER['REQUEST_METHOD'], $path );
+
+               $request->set_query_params( $_GET );
+               $request->set_body_params( $_POST );
+               $request->set_file_params( $_FILES );
+               $request->set_headers( $this->get_headers( $_SERVER ) );
+               $request->set_body( $this->get_raw_data() );
+
+               /*
+                * HTTP method override for clients that can't use PUT/PATCH/DELETE. First, we check
+                * $_GET['_method']. If that is not set, we check for the HTTP_X_HTTP_METHOD_OVERRIDE
+                * header.
+                */
+               if ( isset( $_GET['_method'] ) ) {
+                       $request->set_method( $_GET['_method'] );
+               } elseif ( isset( $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] ) ) {
+                       $request->set_method( $_SERVER['HTTP_X_HTTP_METHOD_OVERRIDE'] );
+               }
+
+               $result = $this->check_authentication();
+
+               if ( ! is_wp_error( $result ) ) {
+                       $result = $this->dispatch( $request );
+               }
+
+               // Normalize to either WP_Error or WP_REST_Response...
+               $result = rest_ensure_response( $result );
+
+               // ...then convert WP_Error across.
+               if ( is_wp_error( $result ) ) {
+                       $result = $this->error_to_response( $result );
+               }
+
+               /**
+                * Filter the API response.
+                *
+                * Allows modification of the response before returning.
+                *
+                * @since 4.4.0
+                *
+                * @param WP_HTTP_Response $result  Result to send to the client. Usually a WP_REST_Response.
+                * @param WP_REST_Server   $this    Server instance.
+                * @param WP_REST_Request  $request Request used to generate the response.
+                */
+               $result = apply_filters( 'rest_post_dispatch', rest_ensure_response( $result ), $this, $request );
+
+               // Wrap the response in an envelope if asked for.
+               if ( isset( $_GET['_envelope'] ) ) {
+                       $result = $this->envelope_response( $result, isset( $_GET['_embed'] ) );
+               }
+
+               // Send extra data from response objects.
+               $headers = $result->get_headers();
+               $this->send_headers( $headers );
+
+               $code = $result->get_status();
+               $this->set_status( $code );
+
+               /**
+                * Filter whether the request has already been served.
+                *
+                * Allow sending the request manually - by returning true, the API result
+                * will not be sent to the client.
+                *
+                * @since 4.4.0
+                *
+                * @param bool             $served  Whether the request has already been served.
+                *                                           Default false.
+                * @param WP_HTTP_Response $result  Result to send to the client. Usually a WP_REST_Response.
+                * @param WP_REST_Request  $request Request used to generate the response.
+                * @param WP_REST_Server   $this    Server instance.
+                */
+               $served = apply_filters( 'rest_pre_serve_request', false, $result, $request, $this );
+
+               if ( ! $served ) {
+                       if ( 'HEAD' === $request->get_method() ) {
+                               return null;
+                       }
+
+                       // Embed links inside the request.
+                       $result = $this->response_to_data( $result, isset( $_GET['_embed'] ) );
+
+                       $result = wp_json_encode( $result );
+
+                       $json_error_message = $this->get_json_last_error();
+                       if ( $json_error_message ) {
+                               $json_error_obj = new WP_Error( 'rest_encode_error', $json_error_message, array( 'status' => 500 ) );
+                               $result = $this->error_to_response( $json_error_obj );
+                               $result = wp_json_encode( $result->data[0] );
+                       }
+
+                       if ( $jsonp_callback ) {
+                               // Prepend '/**/' to mitigate possible JSONP Flash attacks
+                               // http://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
+                               echo '/**/' . $jsonp_callback . '(' . $result . ')';
+                       } else {
+                               echo $result;
+                       }
+               }
+               return null;
+       }
+
+       /**
+        * Converts a response to data to send.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param WP_REST_Response $response Response object.
+        * @param bool             $embed    Whether links should be embedded.
+        * @return array {
+        *     Data with sub-requests embedded.
+        *
+        *     @type array [$_links]    Links.
+        *     @type array [$_embedded] Embeddeds.
+        * }
+        */
+       public function response_to_data( $response, $embed ) {
+               $data  = $response->get_data();
+               $links = $this->get_response_links( $response );
+
+               if ( ! empty( $links ) ) {
+                       // Convert links to part of the data.
+                       $data['_links'] = $links;
+               }
+               if ( $embed ) {
+                       // Determine if this is a numeric array.
+                       if ( wp_is_numeric_array( $data ) ) {
+                               $data = array_map( array( $this, 'embed_links' ), $data );
+                       } else {
+                               $data = $this->embed_links( $data );
+                       }
+               }
+
+               return $data;
+       }
+
+       /**
+        * Retrieves links from a response.
+        *
+        * Extracts the links from a response into a structured hash, suitable for
+        * direct output.
+        *
+        * @since 4.4.0
+        * @access public
+        * @static
+        *
+        * @param WP_REST_Response $response Response to extract links from.
+        * @return array Map of link relation to list of link hashes.
+        */
+       public static function get_response_links( $response ) {
+               $links = $response->get_links();
+
+               if ( empty( $links ) ) {
+                       return array();
+               }
+
+               // Convert links to part of the data.
+               $data = array();
+               foreach ( $links as $rel => $items ) {
+                       $data[ $rel ] = array();
+
+                       foreach ( $items as $item ) {
+                               $attributes = $item['attributes'];
+                               $attributes['href'] = $item['href'];
+                               $data[ $rel ][] = $attributes;
+                       }
+               }
+
+               return $data;
+       }
+
+       /**
+        * Embeds the links from the data into the request.
+        *
+        * @since 4.4.0
+        * @access protected
+        *
+        * @param array $data Data from the request.
+        * @return array {
+        *     Data with sub-requests embedded.
+        *
+        *     @type array [$_links]    Links.
+        *     @type array [$_embedded] Embeddeds.
+        * }
+        */
+       protected function embed_links( $data ) {
+               if ( empty( $data['_links'] ) ) {
+                       return $data;
+               }
+
+               $embedded = array();
+               $api_root = rest_url();
+
+               foreach ( $data['_links'] as $rel => $links ) {
+                       // Ignore links to self, for obvious reasons.
+                       if ( 'self' === $rel ) {
+                               continue;
+                       }
+
+                       $embeds = array();
+
+                       foreach ( $links as $item ) {
+                               // Determine if the link is embeddable.
+                               if ( empty( $item['embeddable'] ) || strpos( $item['href'], $api_root ) !== 0 ) {
+                                       // Ensure we keep the same order.
+                                       $embeds[] = array();
+                                       continue;
+                               }
+
+                               // Run through our internal routing and serve.
+                               $route = substr( $item['href'], strlen( untrailingslashit( $api_root ) ) );
+                               $query_params = array();
+
+                               // Parse out URL query parameters.
+                               $parsed = parse_url( $route );
+                               if ( empty( $parsed['path'] ) ) {
+                                       $embeds[] = array();
+                                       continue;
+                               }
+
+                               if ( ! empty( $parsed['query'] ) ) {
+                                       parse_str( $parsed['query'], $query_params );
+
+                                       // Ensure magic quotes are stripped.
+                                       if ( get_magic_quotes_gpc() ) {
+                                               $query_params = stripslashes_deep( $query_params );
+                                       }
+                               }
+
+                               // Embedded resources get passed context=embed.
+                               if ( empty( $query_params['context'] ) ) {
+                                       $query_params['context'] = 'embed';
+                               }
+
+                               $request = new WP_REST_Request( 'GET', $parsed['path'] );
+
+                               $request->set_query_params( $query_params );
+                               $response = $this->dispatch( $request );
+
+                               $embeds[] = $this->response_to_data( $response, false );
+                       }
+
+                       // Determine if any real links were found.
+                       $has_links = count( array_filter( $embeds ) );
+                       if ( $has_links ) {
+                               $embedded[ $rel ] = $embeds;
+                       }
+               }
+
+               if ( ! empty( $embedded ) ) {
+                       $data['_embedded'] = $embedded;
+               }
+
+               return $data;
+       }
+
+       /**
+        * Wraps the response in an envelope.
+        *
+        * The enveloping technique is used to work around browser/client
+        * compatibility issues. Essentially, it converts the full HTTP response to
+        * data instead.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param WP_REST_Response $response Response object.
+        * @param bool             $embed    Whether links should be embedded.
+        * @return WP_REST_Response New response with wrapped data
+        */
+       public function envelope_response( $response, $embed ) {
+               $envelope = array(
+                       'body'    => $this->response_to_data( $response, $embed ),
+                       'status'  => $response->get_status(),
+                       'headers' => $response->get_headers(),
+               );
+
+               /**
+                * Filter the enveloped form of a response.
+                *
+                * @since 4.4.0
+                *
+                * @param array            $envelope Envelope data.
+                * @param WP_REST_Response $response Original response data.
+                */
+               $envelope = apply_filters( 'rest_envelope_response', $envelope, $response );
+
+               // Ensure it's still a response and return.
+               return rest_ensure_response( $envelope );
+       }
+
+       /**
+        * Registers a route to the server.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $namespace  Namespace.
+        * @param string $route      The REST route.
+        * @param array  $route_args Route arguments.
+        * @param bool   $override   Optional. Whether the route should be overriden if it already exists.
+        *                           Default false.
+        */
+       public function register_route( $namespace, $route, $route_args, $override = false ) {
+               if ( ! isset( $this->namespaces[ $namespace ] ) ) {
+                       $this->namespaces[ $namespace ] = array();
+
+                       $this->register_route( $namespace, '/' . $namespace, array(
+                               array(
+                                       'methods' => self::READABLE,
+                                       'callback' => array( $this, 'get_namespace_index' ),
+                                       'args' => array(
+                                               'namespace' => array(
+                                                       'default' => $namespace,
+                                               ),
+                                               'context' => array(
+                                                       'default' => 'view',
+                                               ),
+                                       ),
+                               ),
+                       ) );
+               }
+
+               // Associative to avoid double-registration.
+               $this->namespaces[ $namespace ][ $route ] = true;
+               $route_args['namespace'] = $namespace;
+
+               if ( $override || empty( $this->endpoints[ $route ] ) ) {
+                       $this->endpoints[ $route ] = $route_args;
+               } else {
+                       $this->endpoints[ $route ] = array_merge( $this->endpoints[ $route ], $route_args );
+               }
+       }
+
+       /**
+        * Retrieves the route map.
+        *
+        * The route map is an associative array with path regexes as the keys. The
+        * value is an indexed array with the callback function/method as the first
+        * item, and a bitmask of HTTP methods as the second item (see the class
+        * constants).
+        *
+        * Each route can be mapped to more than one callback by using an array of
+        * the indexed arrays. This allows mapping e.g. GET requests to one callback
+        * and POST requests to another.
+        *
+        * Note that the path regexes (array keys) must have @ escaped, as this is
+        * used as the delimiter with preg_match()
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array `'/path/regex' => array( $callback, $bitmask )` or
+        *               `'/path/regex' => array( array( $callback, $bitmask ), ...)`.
+        */
+       public function get_routes() {
+
+               /**
+                * Filter the array of available endpoints.
+                *
+                * @since 4.4.0
+                *
+                * @param array $endpoints The available endpoints. An array of matching regex patterns, each mapped
+                *                         to an array of callbacks for the endpoint. These take the format
+                *                         `'/path/regex' => array( $callback, $bitmask )` or
+                *                         `'/path/regex' => array( array( $callback, $bitmask ).
+                */
+               $endpoints = apply_filters( 'rest_endpoints', $this->endpoints );
+
+               // Normalise the endpoints.
+               $defaults = array(
+                       'methods'       => '',
+                       'accept_json'   => false,
+                       'accept_raw'    => false,
+                       'show_in_index' => true,
+                       'args'          => array(),
+               );
+
+               foreach ( $endpoints as $route => &$handlers ) {
+
+                       if ( isset( $handlers['callback'] ) ) {
+                               // Single endpoint, add one deeper.
+                               $handlers = array( $handlers );
+                       }
+
+                       if ( ! isset( $this->route_options[ $route ] ) ) {
+                               $this->route_options[ $route ] = array();
+                       }
+
+                       foreach ( $handlers as $key => &$handler ) {
+
+                               if ( ! is_numeric( $key ) ) {
+                                       // Route option, move it to the options.
+                                       $this->route_options[ $route ][ $key ] = $handler;
+                                       unset( $handlers[ $key ] );
+                                       continue;
+                               }
+
+                               $handler = wp_parse_args( $handler, $defaults );
+
+                               // Allow comma-separated HTTP methods.
+                               if ( is_string( $handler['methods'] ) ) {
+                                       $methods = explode( ',', $handler['methods'] );
+                               } else if ( is_array( $handler['methods'] ) ) {
+                                       $methods = $handler['methods'];
+                               } else {
+                                       $methods = array();
+                               }
+
+                               $handler['methods'] = array();
+
+                               foreach ( $methods as $method ) {
+                                       $method = strtoupper( trim( $method ) );
+                                       $handler['methods'][ $method ] = true;
+                               }
+                       }
+               }
+               return $endpoints;
+       }
+
+       /**
+        * Retrieves namespaces registered on the server.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @return array List of registered namespaces.
+        */
+       public function get_namespaces() {
+               return array_keys( $this->namespaces );
+       }
+
+       /**
+        * Retrieves specified options for a route.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $route Route pattern to fetch options for.
+        * @return array|null Data as an associative array if found, or null if not found.
+        */
+       public function get_route_options( $route ) {
+               if ( ! isset( $this->route_options[ $route ] ) ) {
+                       return null;
+               }
+
+               return $this->route_options[ $route ];
+       }
+
+       /**
+        * Matches the request to a callback and call it.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param WP_REST_Request $request Request to attempt dispatching.
+        * @return WP_REST_Response Response returned by the callback.
+        */
+       public function dispatch( $request ) {
+               /**
+                * Filter the pre-calculated result of a REST dispatch request.
+                *
+                * Allow hijacking the request before dispatching by returning a non-empty. The returned value
+                * will be used to serve the request instead.
+                *
+                * @since 4.4.0
+                *
+                * @param mixed           $result  Response to replace the requested version with. Can be anything
+                *                                 a normal endpoint can return, or null to not hijack the request.
+                * @param WP_REST_Server  $this    Server instance.
+                * @param WP_REST_Request $request Request used to generate the response.
+                */
+               $result = apply_filters( 'rest_pre_dispatch', null, $this, $request );
+
+               if ( ! empty( $result ) ) {
+                       return $result;
+               }
+
+               $method = $request->get_method();
+               $path   = $request->get_route();
+
+               foreach ( $this->get_routes() as $route => $handlers ) {
+                       $match = preg_match( '@^' . $route . '$@i', $path, $args );
+
+                       if ( ! $match ) {
+                               continue;
+                       }
+
+                       foreach ( $handlers as $handler ) {
+                               $callback  = $handler['callback'];
+                               $response = null;
+
+                               $checked_method = 'HEAD' === $method ? 'GET' : $method;
+                               if ( empty( $handler['methods'][ $checked_method ] ) ) {
+                                       continue;
+                               }
+
+                               if ( ! is_callable( $callback ) ) {
+                                       $response = new WP_Error( 'rest_invalid_handler', __( 'The handler for the route is invalid' ), array( 'status' => 500 ) );
+                               }
+
+                               if ( ! is_wp_error( $response ) ) {
+                                       // Remove the redundant preg_match argument.
+                                       unset( $args[0] );
+
+                                       $request->set_url_params( $args );
+                                       $request->set_attributes( $handler );
+
+                                       $request->sanitize_params();
+
+                                       $defaults = array();
+
+                                       foreach ( $handler['args'] as $arg => $options ) {
+                                               if ( isset( $options['default'] ) ) {
+                                                       $defaults[ $arg ] = $options['default'];
+                                               }
+                                       }
+
+                                       $request->set_default_params( $defaults );
+
+                                       $check_required = $request->has_valid_params();
+                                       if ( is_wp_error( $check_required ) ) {
+                                               $response = $check_required;
+                                       }
+                               }
+
+                               if ( ! is_wp_error( $response ) ) {
+                                       // Check permission specified on the route.
+                                       if ( ! empty( $handler['permission_callback'] ) ) {
+                                               $permission = call_user_func( $handler['permission_callback'], $request );
+
+                                               if ( is_wp_error( $permission ) ) {
+                                                       $response = $permission;
+                                               } else if ( false === $permission || null === $permission ) {
+                                                       $response = new WP_Error( 'rest_forbidden', __( "You don't have permission to do this." ), array( 'status' => 403 ) );
+                                               }
+                                       }
+                               }
+
+                               if ( ! is_wp_error( $response ) ) {
+                                       /**
+                                        * Filter the REST dispatch request result.
+                                        *
+                                        * Allow plugins to override dispatching the request.
+                                        *
+                                        * @since 4.4.0
+                                        *
+                                        * @param bool            $dispatch_result Dispatch result, will be used if not empty.
+                                        * @param WP_REST_Request $request         Request used to generate the response.
+                                        */
+                                       $dispatch_result = apply_filters( 'rest_dispatch_request', null, $request );
+
+                                       // Allow plugins to halt the request via this filter.
+                                       if ( null !== $dispatch_result ) {
+                                               $response = $dispatch_result;
+                                       } else {
+                                               $response = call_user_func( $callback, $request );
+                                       }
+                               }
+
+                               if ( is_wp_error( $response ) ) {
+                                       $response = $this->error_to_response( $response );
+                               } else {
+                                       $response = rest_ensure_response( $response );
+                               }
+
+                               $response->set_matched_route( $route );
+                               $response->set_matched_handler( $handler );
+
+                               return $response;
+                       }
+               }
+
+               return $this->error_to_response( new WP_Error( 'rest_no_route', __( 'No route was found matching the URL and request method' ), array( 'status' => 404 ) ) );
+       }
+
+       /**
+        * Returns if an error occurred during most recent JSON encode/decode.
+        *
+        * Strings to be translated will be in format like
+        * "Encoding error: Maximum stack depth exceeded".
+        *
+        * @since 4.4.0
+        * @access protected
+        *
+        * @return bool|string Boolean false or string error message.
+        */
+       protected function get_json_last_error() {
+               // See https://core.trac.wordpress.org/ticket/27799.
+               if ( ! function_exists( 'json_last_error' ) ) {
+                       return false;
+               }
+
+               $last_error_code = json_last_error();
+
+               if ( ( defined( 'JSON_ERROR_NONE' ) && JSON_ERROR_NONE === $last_error_code ) || empty( $last_error_code ) ) {
+                       return false;
+               }
+
+               return json_last_error_msg();
+       }
+
+       /**
+        * Retrieves the site index.
+        *
+        * This endpoint describes the capabilities of the site.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $request {
+        *     Request.
+        *
+        *     @type string $context Context.
+        * }
+        * @return array Index entity
+        */
+       public function get_index( $request ) {
+               // General site data.
+               $available = array(
+                       'name'           => get_option( 'blogname' ),
+                       'description'    => get_option( 'blogdescription' ),
+                       'url'            => get_option( 'siteurl' ),
+                       'namespaces'     => array_keys( $this->namespaces ),
+                       'authentication' => array(),
+                       'routes'         => $this->get_data_for_routes( $this->get_routes(), $request['context'] ),
+               );
+
+               $response = new WP_REST_Response( $available );
+
+               $response->add_link( 'help', 'http://v2.wp-api.org/' );
+
+               /**
+                * Filter the API root index data.
+                *
+                * This contains the data describing the API. This includes information
+                * about supported authentication schemes, supported namespaces, routes
+                * available on the API, and a small amount of data about the site.
+                *
+                * @since 4.4.0
+                *
+                * @param WP_REST_Response $response Response data.
+                */
+               return apply_filters( 'rest_index', $response );
+       }
+
+       /**
+        * Retrieves the index for a namespace.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param WP_REST_Request $request REST request instance.
+        * @return WP_REST_Response|WP_Error WP_REST_Response instance if the index was found,
+        *                                   WP_Error if the namespace isn't set.
+        */
+       public function get_namespace_index( $request ) {
+               $namespace = $request['namespace'];
+
+               if ( ! isset( $this->namespaces[ $namespace ] ) ) {
+                       return new WP_Error( 'rest_invalid_namespace', __( 'The specified namespace could not be found.' ), array( 'status' => 404 ) );
+               }
+
+               $routes = $this->namespaces[ $namespace ];
+               $endpoints = array_intersect_key( $this->get_routes(), $routes );
+
+               $data = array(
+                       'namespace' => $namespace,
+                       'routes' => $this->get_data_for_routes( $endpoints, $request['context'] ),
+               );
+               $response = rest_ensure_response( $data );
+
+               // Link to the root index.
+               $response->add_link( 'up', rest_url( '/' ) );
+
+               /**
+                * Filter the namespace index data.
+                *
+                * This typically is just the route data for the namespace, but you can
+                * add any data you'd like here.
+                *
+                * @since 4.4.0
+                *
+                * @param WP_REST_Response $response Response data.
+                * @param WP_REST_Request  $request  Request data. The namespace is passed as the 'namespace' parameter.
+                */
+               return apply_filters( 'rest_namespace_index', $response, $request );
+       }
+
+       /**
+        * Retrieves the publicly-visible data for routes.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array  $routes  Routes to get data for.
+        * @param string $context Optional. Context for data. Accepts 'view' or 'help'. Default 'view'.
+        * @return array Route data to expose in indexes.
+        */
+       public function get_data_for_routes( $routes, $context = 'view' ) {
+               $available = array();
+
+               // Find the available routes.
+               foreach ( $routes as $route => $callbacks ) {
+                       $data = $this->get_data_for_route( $route, $callbacks, $context );
+                       if ( empty( $data ) ) {
+                               continue;
+                       }
+
+                       /**
+                        * Filter the REST endpoint data.
+                        *
+                        * @since 4.4.0
+                        *
+                        * @param WP_REST_Request $request Request data. The namespace is passed as the 'namespace' parameter.
+                        */
+                       $available[ $route ] = apply_filters( 'rest_endpoints_description', $data );
+               }
+
+               /**
+                * Filter the publicly-visible data for routes.
+                *
+                * This data is exposed on indexes and can be used by clients or
+                * developers to investigate the site and find out how to use it. It
+                * acts as a form of self-documentation.
+                *
+                * @since 4.4.0
+                *
+                * @param array $available Map of route to route data.
+                * @param array $routes    Internal route data as an associative array.
+                */
+               return apply_filters( 'rest_route_data', $available, $routes );
+       }
+
+       /**
+        * Retrieves publicly-visible data for the route.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $route     Route to get data for.
+        * @param array  $callbacks Callbacks to convert to data.
+        * @param string $context   Optional. Context for the data. Accepts 'view' or 'help'. Default 'view'.
+        * @return array|null Data for the route, or null if no publicly-visible data.
+        */
+       public function get_data_for_route( $route, $callbacks, $context = 'view' ) {
+               $data = array(
+                       'namespace' => '',
+                       'methods' => array(),
+                       'endpoints' => array(),
+               );
+
+               if ( isset( $this->route_options[ $route ] ) ) {
+                       $options = $this->route_options[ $route ];
+
+                       if ( isset( $options['namespace'] ) ) {
+                               $data['namespace'] = $options['namespace'];
+                       }
+
+                       if ( isset( $options['schema'] ) && 'help' === $context ) {
+                               $data['schema'] = call_user_func( $options['schema'] );
+                       }
+               }
+
+               $route = preg_replace( '#\(\?P<(\w+?)>.*?\)#', '{$1}', $route );
+
+               foreach ( $callbacks as $callback ) {
+                       // Skip to the next route if any callback is hidden.
+                       if ( empty( $callback['show_in_index'] ) ) {
+                               continue;
+                       }
+
+                       $data['methods'] = array_merge( $data['methods'], array_keys( $callback['methods'] ) );
+                       $endpoint_data = array(
+                               'methods' => array_keys( $callback['methods'] ),
+                       );
+
+                       if ( isset( $callback['args'] ) ) {
+                               $endpoint_data['args'] = array();
+                               foreach ( $callback['args'] as $key => $opts ) {
+                                       $arg_data = array(
+                                               'required' => ! empty( $opts['required'] ),
+                                       );
+                                       if ( isset( $opts['default'] ) ) {
+                                               $arg_data['default'] = $opts['default'];
+                                       }
+                                       if ( isset( $opts['enum'] ) ) {
+                                               $arg_data['enum'] = $opts['enum'];
+                                       }
+                                       if ( isset( $opts['description'] ) ) {
+                                               $arg_data['description'] = $opts['description'];
+                                       }
+                                       $endpoint_data['args'][ $key ] = $arg_data;
+                               }
+                       }
+
+                       $data['endpoints'][] = $endpoint_data;
+
+                       // For non-variable routes, generate links.
+                       if ( strpos( $route, '{' ) === false ) {
+                               $data['_links'] = array(
+                                       'self' => rest_url( $route ),
+                               );
+                       }
+               }
+
+               if ( empty( $data['methods'] ) ) {
+                       // No methods supported, hide the route.
+                       return null;
+               }
+
+               return $data;
+       }
+
+       /**
+        * Sends an HTTP status code.
+        *
+        * @since 4.4.0
+        * @access protected
+        *
+        * @param int $code HTTP status.
+        */
+       protected function set_status( $code ) {
+               status_header( $code );
+       }
+
+       /**
+        * Sends an HTTP header.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param string $key Header key.
+        * @param string $value Header value.
+        */
+       public function send_header( $key, $value ) {
+               /*
+                * Sanitize as per RFC2616 (Section 4.2):
+                *
+                * Any LWS that occurs between field-content MAY be replaced with a
+                * single SP before interpreting the field value or forwarding the
+                * message downstream.
+                */
+               $value = preg_replace( '/\s+/', ' ', $value );
+               header( sprintf( '%s: %s', $key, $value ) );
+       }
+
+       /**
+        * Sends multiple HTTP headers.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $headers Map of header name to header value.
+        */
+       public function send_headers( $headers ) {
+               foreach ( $headers as $key => $value ) {
+                       $this->send_header( $key, $value );
+               }
+       }
+
+       /**
+        * Retrieves the raw request entity (body).
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @global string $HTTP_RAW_POST_DATA Raw post data.
+        *
+        * @return string Raw request data.
+        */
+       public static function get_raw_data() {
+               global $HTTP_RAW_POST_DATA;
+
+               /*
+                * A bug in PHP < 5.2.2 makes $HTTP_RAW_POST_DATA not set by default,
+                * but we can do it ourself.
+                */
+               if ( ! isset( $HTTP_RAW_POST_DATA ) ) {
+                       $HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );
+               }
+
+               return $HTTP_RAW_POST_DATA;
+       }
+
+       /**
+        * Extracts headers from a PHP-style $_SERVER array.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $server Associative array similar to `$_SERVER`.
+        * @return array Headers extracted from the input.
+        */
+       public function get_headers( $server ) {
+               $headers = array();
+
+               // CONTENT_* headers are not prefixed with HTTP_.
+               $additional = array( 'CONTENT_LENGTH' => true, 'CONTENT_MD5' => true, 'CONTENT_TYPE' => true );
+
+               foreach ( $server as $key => $value ) {
+                       if ( strpos( $key, 'HTTP_' ) === 0 ) {
+                               $headers[ substr( $key, 5 ) ] = $value;
+                       } elseif ( isset( $additional[ $key ] ) ) {
+                               $headers[ $key ] = $value;
+                       }
+               }
+
+               return $headers;
+       }
+}
index d1b7988c8cbc08b4fc60d5e69a6d7497015b18a0..8c2337624df1a8cd78d7641874ede06434965310 100644 (file)
@@ -18,8 +18,8 @@
  *
  * @staticvar array $fields
  *
- * @param array $post     Optional. A post array to be processed for insertion as a post revision.
- * @param bool  $autosave Optional. Is the revision an autosave?
+ * @param array|null $post     Optional. A post array to be processed for insertion as a post revision. Default null.
+ * @param bool       $autosave Optional. Is the revision an autosave? Default false.
  * @return array Post array ready to be inserted as a post revision or array of fields that can be versioned.
  */
 function _wp_post_revision_fields( $post = null, $autosave = false ) {
@@ -336,7 +336,7 @@ function wp_restore_post_revision( $revision_id, $fields = null ) {
                $fields = array_keys( _wp_post_revision_fields() );
 
        $update = array();
-       foreach( array_intersect( array_keys( $revision ), $fields ) as $field ) {
+       foreach ( array_intersect( array_keys( $revision ), $fields ) as $field ) {
                $update[$field] = $revision[$field];
        }
 
@@ -582,7 +582,7 @@ function _wp_get_post_revision_version( $revision ) {
  * @since 3.6.0
  * @access private
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param WP_Post $post      Post object
  * @param array   $revisions Current revisions of the post
index a2ddc59038081e7864cb9fa102b6e22f5be36b13..7f3b2ed321dc606a586bdb4fa7fdea0a49393c4b 100644 (file)
@@ -6,115 +6,6 @@
  * @subpackage Rewrite
  */
 
-/**
- * Add a straight rewrite rule.
- *
- * @since 2.1.0
- *
- * @global WP_Rewrite $wp_rewrite
- *
- * @param string $regex    Regular Expression to match request against.
- * @param string $redirect Page to redirect to.
- * @param string $after    Optional, default is 'bottom'. Where to add rule, can also be 'top'.
- */
-function add_rewrite_rule($regex, $redirect, $after = 'bottom') {
-       global $wp_rewrite;
-       $wp_rewrite->add_rule($regex, $redirect, $after);
-}
-
-/**
- * Add a new rewrite tag (like %postname%).
- *
- * The $query parameter is optional. If it is omitted you must ensure that
- * you call this on, or before, the 'init' hook. This is because $query defaults
- * to "$tag=", and for this to work a new query var has to be added.
- *
- * @since 2.1.0
- *
- * @global WP_Rewrite $wp_rewrite
- * @global WP         $wp
- *
- * @param string $tag   Name of the new rewrite tag.
- * @param string $regex Regular expression to substitute the tag for in rewrite rules.
- * @param string $query String to append to the rewritten query. Must end in '='. Optional.
- */
-function add_rewrite_tag( $tag, $regex, $query = '' ) {
-       // validate the tag's name
-       if ( strlen( $tag ) < 3 || $tag[0] != '%' || $tag[ strlen($tag) - 1 ] != '%' )
-               return;
-
-       global $wp_rewrite, $wp;
-
-       if ( empty( $query ) ) {
-               $qv = trim( $tag, '%' );
-               $wp->add_query_var( $qv );
-               $query = $qv . '=';
-       }
-
-       $wp_rewrite->add_rewrite_tag( $tag, $regex, $query );
-}
-
-/**
- * Add permalink structure.
- *
- * @since 3.0.0
- *
- * @global WP_Rewrite $wp_rewrite
- *
- * @param string $name   Name for permalink structure.
- * @param string $struct Permalink structure.
- * @param array  $args   Optional configuration for building the rules from the permalink structure,
- *                       see {@link WP_Rewrite::add_permastruct()} for full details.
- */
-function add_permastruct( $name, $struct, $args = array() ) {
-       global $wp_rewrite;
-
-       // backwards compatibility for the old parameters: $with_front and $ep_mask
-       if ( ! is_array( $args ) )
-               $args = array( 'with_front' => $args );
-       if ( func_num_args() == 4 )
-               $args['ep_mask'] = func_get_arg( 3 );
-
-       $wp_rewrite->add_permastruct( $name, $struct, $args );
-}
-
-/**
- * Add a new feed type like /atom1/.
- *
- * @since 2.1.0
- *
- * @global WP_Rewrite $wp_rewrite
- *
- * @param string   $feedname
- * @param callback $function Callback to run on feed display.
- * @return string Feed action name.
- */
-function add_feed($feedname, $function) {
-       global $wp_rewrite;
-       if ( ! in_array($feedname, $wp_rewrite->feeds) ) //override the file if it is
-               $wp_rewrite->feeds[] = $feedname;
-       $hook = 'do_feed_' . $feedname;
-       // Remove default function hook
-       remove_action($hook, $hook);
-       add_action($hook, $function, 10, 1);
-       return $hook;
-}
-
-/**
- * Remove rewrite rules and then recreate rewrite rules.
- *
- * @since 3.0.0
- *
- * @global WP_Rewrite $wp_rewrite
- *
- * @param bool $hard Whether to update .htaccess (hard flush) or just update
- *                      rewrite_rules transient (soft flush). Default is true (hard).
- */
-function flush_rewrite_rules( $hard = true ) {
-       global $wp_rewrite;
-       $wp_rewrite->flush_rules( $hard );
-}
-
 /**
  * Endpoint Mask for default, which is nothing.
  *
@@ -227,6 +118,128 @@ define( 'EP_ALL_ARCHIVES', EP_DATE | EP_YEAR | EP_MONTH | EP_DAY | EP_CATEGORIES
  */
 define( 'EP_ALL', EP_PERMALINK | EP_ATTACHMENT | EP_ROOT | EP_COMMENTS | EP_SEARCH | EP_PAGES | EP_ALL_ARCHIVES );
 
+/**
+ * Adds a rewrite rule that transforms a URL structure to a set of query vars.
+ *
+ * Any value in the $after parameter that isn't 'bottom' will result in the rule
+ * being placed at the top of the rewrite rules.
+ *
+ * @since 2.1.0
+ * @since 4.4.0 Array support was added to the `$query` parameter.
+ *
+ * @global WP_Rewrite $wp_rewrite WordPress Rewrite Component.
+ *
+ * @param string       $regex Regular expression to match request against.
+ * @param string|array $query The corresponding query vars for this rewrite rule.
+ * @param string       $after Optional. Priority of the new rule. Accepts 'top'
+ *                            or 'bottom'. Default 'bottom'.
+ */
+function add_rewrite_rule( $regex, $query, $after = 'bottom' ) {
+       global $wp_rewrite;
+
+       $wp_rewrite->add_rule( $regex, $query, $after );
+}
+
+/**
+ * Add a new rewrite tag (like %postname%).
+ *
+ * The $query parameter is optional. If it is omitted you must ensure that
+ * you call this on, or before, the 'init' hook. This is because $query defaults
+ * to "$tag=", and for this to work a new query var has to be added.
+ *
+ * @since 2.1.0
+ *
+ * @global WP_Rewrite $wp_rewrite
+ * @global WP         $wp
+ *
+ * @param string $tag   Name of the new rewrite tag.
+ * @param string $regex Regular expression to substitute the tag for in rewrite rules.
+ * @param string $query Optional. String to append to the rewritten query. Must end in '='. Default empty.
+ */
+function add_rewrite_tag( $tag, $regex, $query = '' ) {
+       // validate the tag's name
+       if ( strlen( $tag ) < 3 || $tag[0] != '%' || $tag[ strlen($tag) - 1 ] != '%' )
+               return;
+
+       global $wp_rewrite, $wp;
+
+       if ( empty( $query ) ) {
+               $qv = trim( $tag, '%' );
+               $wp->add_query_var( $qv );
+               $query = $qv . '=';
+       }
+
+       $wp_rewrite->add_rewrite_tag( $tag, $regex, $query );
+}
+
+/**
+ * Add permalink structure.
+ *
+ * @since 3.0.0
+ *
+ * @see WP_Rewrite::add_permastruct()
+ * @global WP_Rewrite $wp_rewrite
+ *
+ * @param string $name   Name for permalink structure.
+ * @param string $struct Permalink structure.
+ * @param array  $args   Optional. Arguments for building the rules from the permalink structure,
+ *                       see WP_Rewrite::add_permastruct() for full details. Default empty array.
+ */
+function add_permastruct( $name, $struct, $args = array() ) {
+       global $wp_rewrite;
+
+       // backwards compatibility for the old parameters: $with_front and $ep_mask
+       if ( ! is_array( $args ) )
+               $args = array( 'with_front' => $args );
+       if ( func_num_args() == 4 )
+               $args['ep_mask'] = func_get_arg( 3 );
+
+       $wp_rewrite->add_permastruct( $name, $struct, $args );
+}
+
+/**
+ * Add a new feed type like /atom1/.
+ *
+ * @since 2.1.0
+ *
+ * @global WP_Rewrite $wp_rewrite
+ *
+ * @param string   $feedname Feed name.
+ * @param callable $function Callback to run on feed display.
+ * @return string Feed action name.
+ */
+function add_feed( $feedname, $function ) {
+       global $wp_rewrite;
+
+       if ( ! in_array( $feedname, $wp_rewrite->feeds ) ) {
+               $wp_rewrite->feeds[] = $feedname;
+       }
+
+       $hook = 'do_feed_' . $feedname;
+
+       // Remove default function hook
+       remove_action( $hook, $hook );
+
+       add_action( $hook, $function, 10, 2 );
+
+       return $hook;
+}
+
+/**
+ * Remove rewrite rules and then recreate rewrite rules.
+ *
+ * @since 3.0.0
+ *
+ * @global WP_Rewrite $wp_rewrite
+ *
+ * @param bool $hard Whether to update .htaccess (hard flush) or just update
+ *                      rewrite_rules transient (soft flush). Default is true (hard).
+ */
+function flush_rewrite_rules( $hard = true ) {
+       global $wp_rewrite;
+       $wp_rewrite->flush_rules( $hard );
+}
+
 /**
  * Add an endpoint, like /trackback/.
  *
@@ -368,6 +381,8 @@ function wp_resolve_numeric_slug_conflicts( $query_vars = array() ) {
        } elseif ( 'monthnum' === $compare && isset( $query_vars['day'] ) ) {
                $maybe_page = $query_vars['day'];
        }
+       // Bug found in #11694 - 'page' was returning '/4'
+       $maybe_page = (int) trim( $maybe_page, '/' );
 
        $post_page_count = substr_count( $post->post_content, '<!--nextpage-->' ) + 1;
 
@@ -445,6 +460,9 @@ function url_to_postid( $url ) {
        $url_split = explode('?', $url);
        $url = $url_split[0];
 
+       // Set the correct URL scheme.
+       $url = set_url_scheme( $url );
+
        // Add 'www.' if it is absent and should be there
        if ( false !== strpos(home_url(), '://www.') && false === strpos($url, '://www.') )
                $url = str_replace('://', '://www.', $url);
@@ -491,8 +509,16 @@ function url_to_postid( $url ) {
 
                        if ( $wp_rewrite->use_verbose_page_rules && preg_match( '/pagename=\$matches\[([0-9]+)\]/', $query, $varmatch ) ) {
                                // This is a verbose page match, let's check to be sure about it.
-                               if ( ! get_page_by_path( $matches[ $varmatch[1] ] ) )
+                               $page = get_page_by_path( $matches[ $varmatch[1] ] );
+                               if ( ! $page ) {
                                        continue;
+                               }
+
+                               $post_status_obj = get_post_status_object( $page->post_status );
+                               if ( ! $post_status_obj->public && ! $post_status_obj->protected
+                                       && ! $post_status_obj->private && $post_status_obj->exclude_from_search ) {
+                                       continue;
+                               }
                        }
 
                        // Got a match.
@@ -529,1798 +555,3 @@ function url_to_postid( $url ) {
        }
        return 0;
 }
-
-/**
- * WordPress Rewrite Component.
- *
- * The WordPress Rewrite class writes the rewrite module rules to the .htaccess
- * file. It also handles parsing the request to get the correct setup for the
- * WordPress Query class.
- *
- * The Rewrite along with WP class function as a front controller for WordPress.
- * You can add rules to trigger your page view and processing using this
- * component. The full functionality of a front controller does not exist,
- * meaning you can't define how the template files load based on the rewrite
- * rules.
- *
- * @since 1.5.0
- */
-class WP_Rewrite {
-       /**
-        * Permalink structure for posts.
-        *
-        * @since 1.5.0
-        * @var string
-        */
-       public $permalink_structure;
-
-       /**
-        * Whether to add trailing slashes.
-        *
-        * @since 2.2.0
-        * @var bool
-        */
-       public $use_trailing_slashes;
-
-       /**
-        * Base for the author permalink structure (example.com/$author_base/authorname).
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $author_base = 'author';
-
-       /**
-        * Permalink structure for author archives.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $author_structure;
-
-       /**
-        * Permalink structure for date archives.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $date_structure;
-
-       /**
-        * Permalink structure for pages.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $page_structure;
-
-       /**
-        * Base of the search permalink structure (example.com/$search_base/query).
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $search_base = 'search';
-
-       /**
-        * Permalink structure for searches.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $search_structure;
-
-       /**
-        * Comments permalink base.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $comments_base = 'comments';
-
-       /**
-        * Pagination permalink base.
-        *
-        * @since 3.1.0
-        * @var string
-        */
-       public $pagination_base = 'page';
-
-       /**
-        * Comments pagination permalink base.
-        *
-        * @since 4.2.0
-        * @access private
-        * @var string
-        */
-       var $comments_pagination_base = 'comment-page';
-
-       /**
-        * Feed permalink base.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $feed_base = 'feed';
-
-       /**
-        * Comments feed permalink structure.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $comment_feed_structure;
-
-       /**
-        * Feed request permalink structure.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $feed_structure;
-
-       /**
-        * The static portion of the post permalink structure.
-        *
-        * If the permalink structure is "/archive/%post_id%" then the front
-        * is "/archive/". If the permalink structure is "/%year%/%postname%/"
-        * then the front is "/".
-        *
-        * @see WP_Rewrite::init()
-        * @since 1.5.0
-        * @var string
-        */
-       public $front;
-
-       /**
-        * The prefix for all permalink structures.
-        *
-        * If PATHINFO/index permalinks are in use then the root is the value of
-        * {@link WP_Rewrite::$index} with a trailing slash appended. Otherwise
-        * the root will be empty.
-        *
-        * @see WP_Rewrite::init()
-        * @see WP_Rewrite::using_index_permalinks()
-        * @since 1.5.0
-        * @var string
-        */
-       public $root = '';
-
-       /**
-        * The name of the index file which is the entry point to all requests.
-        *
-        * @since 1.5.0
-        * @access public
-        * @var string
-        */
-       public $index = 'index.php';
-
-       /**
-        * Variable name to use for regex matches in the rewritten query.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var string
-        */
-       var $matches = '';
-
-       /**
-        * Rewrite rules to match against the request to find the redirect or query.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var array
-        */
-       var $rules;
-
-       /**
-        * Additional rules added external to the rewrite class.
-        *
-        * Those not generated by the class, see add_rewrite_rule().
-        *
-        * @since 2.1.0
-        * @access private
-        * @var array
-        */
-       var $extra_rules = array();
-
-       /**
-        * Additional rules that belong at the beginning to match first.
-        *
-        * Those not generated by the class, see add_rewrite_rule().
-        *
-        * @since 2.3.0
-        * @access private
-        * @var array
-        */
-       var $extra_rules_top = array();
-
-       /**
-        * Rules that don't redirect to WordPress' index.php.
-        *
-        * These rules are written to the mod_rewrite portion of the .htaccess,
-        * and are added by {@link add_external_rule()}.
-        *
-        * @since 2.1.0
-        * @access private
-        * @var array
-        */
-       var $non_wp_rules = array();
-
-       /**
-        * Extra permalink structures, e.g. categories, added by {@link add_permastruct()}.
-        *
-        * @since 2.1.0
-        * @access private
-        * @var array
-        */
-       var $extra_permastructs = array();
-
-       /**
-        * Endpoints (like /trackback/) added by {@link add_rewrite_endpoint()}.
-        *
-        * @since 2.1.0
-        * @access private
-        * @var array
-        */
-       var $endpoints;
-
-       /**
-        * Whether to write every mod_rewrite rule for WordPress into the .htaccess file.
-        *
-        * This is off by default, turning it on might print a lot of rewrite rules
-        * to the .htaccess file.
-        *
-        * @see WP_Rewrite::mod_rewrite_rules()
-        * @since 2.0.0
-        * @access public
-        * @var bool
-        */
-       public $use_verbose_rules = false;
-
-       /**
-        * Could post permalinks be confused with those of pages?
-        *
-        * If the first rewrite tag in the post permalink structure is one that could
-        * also match a page name (e.g. %postname% or %author%) then this flag is
-        * set to true. Prior to WordPress 3.3 this flag indicated that every page
-        * would have a set of rules added to the top of the rewrite rules array.
-        * Now it tells {@link WP::parse_request()} to check if a URL matching the
-        * page permastruct is actually a page before accepting it.
-        *
-        * @link https://core.trac.wordpress.org/ticket/16687
-        * @see WP_Rewrite::init()
-        * @since 2.5.0
-        * @access public
-        * @var bool
-        */
-       public $use_verbose_page_rules = true;
-
-       /**
-        * Rewrite tags that can be used in permalink structures.
-        *
-        * These are translated into the regular expressions stored in
-        * {@link WP_Rewrite::$rewritereplace} and are rewritten to the
-        * query variables listed in {@link WP_Rewrite::$queryreplace}.
-        *
-        * Additional tags can be added with {@link add_rewrite_tag()}.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var array
-        */
-       var $rewritecode = array(
-               '%year%',
-               '%monthnum%',
-               '%day%',
-               '%hour%',
-               '%minute%',
-               '%second%',
-               '%postname%',
-               '%post_id%',
-               '%author%',
-               '%pagename%',
-               '%search%'
-       );
-
-       /**
-        * Regular expressions to be substituted into rewrite rules in place
-        * of rewrite tags, see {@link WP_Rewrite::$rewritecode}.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var array
-        */
-       var $rewritereplace = array(
-               '([0-9]{4})',
-               '([0-9]{1,2})',
-               '([0-9]{1,2})',
-               '([0-9]{1,2})',
-               '([0-9]{1,2})',
-               '([0-9]{1,2})',
-               '([^/]+)',
-               '([0-9]+)',
-               '([^/]+)',
-               '([^/]+?)',
-               '(.+)'
-       );
-
-       /**
-        * Query variables that rewrite tags map to, see {@link WP_Rewrite::$rewritecode}.
-        *
-        * @since 1.5.0
-        * @access private
-        * @var array
-        */
-       var $queryreplace = array(
-               'year=',
-               'monthnum=',
-               'day=',
-               'hour=',
-               'minute=',
-               'second=',
-               'name=',
-               'p=',
-               'author_name=',
-               'pagename=',
-               's='
-       );
-
-       /**
-        * Supported default feeds.
-        *
-        * @since 1.5.0
-        * @var array
-        */
-       public $feeds = array( 'feed', 'rdf', 'rss', 'rss2', 'atom' );
-
-       /**
-        * Whether permalinks are being used.
-        *
-        * This can be either rewrite module or permalink in the HTTP query string.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return bool True, if permalinks are enabled.
-        */
-       public function using_permalinks() {
-               return ! empty($this->permalink_structure);
-       }
-
-       /**
-        * Whether permalinks are being used and rewrite module is not enabled.
-        *
-        * Means that permalink links are enabled and index.php is in the URL.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return bool
-        */
-       public function using_index_permalinks() {
-               if ( empty( $this->permalink_structure ) ) {
-                       return false;
-               }
-               // If the index is not in the permalink, we're using mod_rewrite.
-               return preg_match( '#^/*' . $this->index . '#', $this->permalink_structure );
-       }
-
-       /**
-        * Whether permalinks are being used and rewrite module is enabled.
-        *
-        * Using permalinks and index.php is not in the URL.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return bool
-        */
-       public function using_mod_rewrite_permalinks() {
-               return $this->using_permalinks() && ! $this->using_index_permalinks();
-       }
-
-       /**
-        * Index for matches for usage in preg_*() functions.
-        *
-        * The format of the string is, with empty matches property value, '$NUM'.
-        * The 'NUM' will be replaced with the value in the $number parameter. With
-        * the matches property not empty, the value of the returned string will
-        * contain that value of the matches property. The format then will be
-        * '$MATCHES[NUM]', with MATCHES as the value in the property and NUM the
-        * value of the $number parameter.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @param int $number Index number.
-        * @return string
-        */
-       public function preg_index($number) {
-               $match_prefix = '$';
-               $match_suffix = '';
-
-               if ( ! empty($this->matches) ) {
-                       $match_prefix = '$' . $this->matches . '[';
-                       $match_suffix = ']';
-               }
-
-               return "$match_prefix$number$match_suffix";
-       }
-
-       /**
-        * Retrieve all page and attachments for pages URIs.
-        *
-        * The attachments are for those that have pages as parents and will be
-        * retrieved.
-        *
-        * @since 2.5.0
-        * @access public
-        *
-        * @global wpdb $wpdb
-        *
-        * @return array Array of page URIs as first element and attachment URIs as second element.
-        */
-       public function page_uri_index() {
-               global $wpdb;
-
-               //get pages in order of hierarchy, i.e. children after parents
-               $pages = $wpdb->get_results("SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_type = 'page' AND post_status != 'auto-draft'");
-               $posts = get_page_hierarchy( $pages );
-
-               // If we have no pages get out quick
-               if ( !$posts )
-                       return array( array(), array() );
-
-               //now reverse it, because we need parents after children for rewrite rules to work properly
-               $posts = array_reverse($posts, true);
-
-               $page_uris = array();
-               $page_attachment_uris = array();
-
-               foreach ( $posts as $id => $post ) {
-                       // URL => page name
-                       $uri = get_page_uri($id);
-                       $attachments = $wpdb->get_results( $wpdb->prepare( "SELECT ID, post_name, post_parent FROM $wpdb->posts WHERE post_type = 'attachment' AND post_parent = %d", $id ));
-                       if ( !empty($attachments) ) {
-                               foreach ( $attachments as $attachment ) {
-                                       $attach_uri = get_page_uri($attachment->ID);
-                                       $page_attachment_uris[$attach_uri] = $attachment->ID;
-                               }
-                       }
-
-                       $page_uris[$uri] = $id;
-               }
-
-               return array( $page_uris, $page_attachment_uris );
-       }
-
-       /**
-        * Retrieve all of the rewrite rules for pages.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return array
-        */
-       public function page_rewrite_rules() {
-               // the extra .? at the beginning prevents clashes with other regular expressions in the rules array
-               $this->add_rewrite_tag( '%pagename%', '(.?.+?)', 'pagename=' );
-
-               return $this->generate_rewrite_rules( $this->get_page_permastruct(), EP_PAGES, true, true, false, false );
-       }
-
-       /**
-        * Retrieve date permalink structure, with year, month, and day.
-        *
-        * The permalink structure for the date, if not set already depends on the
-        * permalink structure. It can be one of three formats. The first is year,
-        * month, day; the second is day, month, year; and the last format is month,
-        * day, year. These are matched against the permalink structure for which
-        * one is used. If none matches, then the default will be used, which is
-        * year, month, day.
-        *
-        * Prevents post ID and date permalinks from overlapping. In the case of
-        * post_id, the date permalink will be prepended with front permalink with
-        * 'date/' before the actual permalink to form the complete date permalink
-        * structure.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return string|false False on no permalink structure. Date permalink structure.
-        */
-       public function get_date_permastruct() {
-               if ( isset($this->date_structure) )
-                       return $this->date_structure;
-
-               if ( empty($this->permalink_structure) ) {
-                       $this->date_structure = '';
-                       return false;
-               }
-
-               // The date permalink must have year, month, and day separated by slashes.
-               $endians = array('%year%/%monthnum%/%day%', '%day%/%monthnum%/%year%', '%monthnum%/%day%/%year%');
-
-               $this->date_structure = '';
-               $date_endian = '';
-
-               foreach ( $endians as $endian ) {
-                       if ( false !== strpos($this->permalink_structure, $endian) ) {
-                               $date_endian= $endian;
-                               break;
-                       }
-               }
-
-               if ( empty($date_endian) )
-                       $date_endian = '%year%/%monthnum%/%day%';
-
-               // Do not allow the date tags and %post_id% to overlap in the permalink
-               // structure. If they do, move the date tags to $front/date/.
-               $front = $this->front;
-               preg_match_all('/%.+?%/', $this->permalink_structure, $tokens);
-               $tok_index = 1;
-               foreach ( (array) $tokens[0] as $token) {
-                       if ( '%post_id%' == $token && ($tok_index <= 3) ) {
-                               $front = $front . 'date/';
-                               break;
-                       }
-                       $tok_index++;
-               }
-
-               $this->date_structure = $front . $date_endian;
-
-               return $this->date_structure;
-       }
-
-       /**
-        * Retrieve the year permalink structure without month and day.
-        *
-        * Gets the date permalink structure and strips out the month and day
-        * permalink structures.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return false|string False on failure. Year structure on success.
-        */
-       public function get_year_permastruct() {
-               $structure = $this->get_date_permastruct();
-
-               if ( empty($structure) )
-                       return false;
-
-               $structure = str_replace('%monthnum%', '', $structure);
-               $structure = str_replace('%day%', '', $structure);
-               $structure = preg_replace('#/+#', '/', $structure);
-
-               return $structure;
-       }
-
-       /**
-        * Retrieve the month permalink structure without day and with year.
-        *
-        * Gets the date permalink structure and strips out the day permalink
-        * structures. Keeps the year permalink structure.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return false|string False on failure. Year/Month structure on success.
-        */
-       public function get_month_permastruct() {
-               $structure = $this->get_date_permastruct();
-
-               if ( empty($structure) )
-                       return false;
-
-               $structure = str_replace('%day%', '', $structure);
-               $structure = preg_replace('#/+#', '/', $structure);
-
-               return $structure;
-       }
-
-       /**
-        * Retrieve the day permalink structure with month and year.
-        *
-        * Keeps date permalink structure with all year, month, and day.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return string|false False on failure. Year/Month/Day structure on success.
-        */
-       public function get_day_permastruct() {
-               return $this->get_date_permastruct();
-       }
-
-       /**
-        * Retrieve the permalink structure for categories.
-        *
-        * If the category_base property has no value, then the category structure
-        * will have the front property value, followed by 'category', and finally
-        * '%category%'. If it does, then the root property will be used, along with
-        * the category_base property value.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return string|false False on failure. Category permalink structure.
-        */
-       public function get_category_permastruct() {
-               return $this->get_extra_permastruct('category');
-       }
-
-       /**
-        * Retrieve the permalink structure for tags.
-        *
-        * If the tag_base property has no value, then the tag structure will have
-        * the front property value, followed by 'tag', and finally '%tag%'. If it
-        * does, then the root property will be used, along with the tag_base
-        * property value.
-        *
-        * @since 2.3.0
-        * @access public
-        *
-        * @return string|false False on failure. Tag permalink structure.
-        */
-       public function get_tag_permastruct() {
-               return $this->get_extra_permastruct('post_tag');
-       }
-
-       /**
-        * Retrieve extra permalink structure by name.
-        *
-        * @since 2.5.0
-        * @access public
-        *
-        * @param string $name Permalink structure name.
-        * @return string|false False if not found. Permalink structure string.
-        */
-       public function get_extra_permastruct($name) {
-               if ( empty($this->permalink_structure) )
-                       return false;
-
-               if ( isset($this->extra_permastructs[$name]) )
-                       return $this->extra_permastructs[$name]['struct'];
-
-               return false;
-       }
-
-       /**
-        * Retrieve the author permalink structure.
-        *
-        * The permalink structure is front property, author base, and finally
-        * '/%author%'. Will set the author_structure property and then return it
-        * without attempting to set the value again.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return string|false False if not found. Permalink structure string.
-        */
-       public function get_author_permastruct() {
-               if ( isset($this->author_structure) )
-                       return $this->author_structure;
-
-               if ( empty($this->permalink_structure) ) {
-                       $this->author_structure = '';
-                       return false;
-               }
-
-               $this->author_structure = $this->front . $this->author_base . '/%author%';
-
-               return $this->author_structure;
-       }
-
-       /**
-        * Retrieve the search permalink structure.
-        *
-        * The permalink structure is root property, search base, and finally
-        * '/%search%'. Will set the search_structure property and then return it
-        * without attempting to set the value again.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return string|false False if not found. Permalink structure string.
-        */
-       public function get_search_permastruct() {
-               if ( isset($this->search_structure) )
-                       return $this->search_structure;
-
-               if ( empty($this->permalink_structure) ) {
-                       $this->search_structure = '';
-                       return false;
-               }
-
-               $this->search_structure = $this->root . $this->search_base . '/%search%';
-
-               return $this->search_structure;
-       }
-
-       /**
-        * Retrieve the page permalink structure.
-        *
-        * The permalink structure is root property, and '%pagename%'. Will set the
-        * page_structure property and then return it without attempting to set the
-        * value again.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return string|false False if not found. Permalink structure string.
-        */
-       public function get_page_permastruct() {
-               if ( isset($this->page_structure) )
-                       return $this->page_structure;
-
-               if (empty($this->permalink_structure)) {
-                       $this->page_structure = '';
-                       return false;
-               }
-
-               $this->page_structure = $this->root . '%pagename%';
-
-               return $this->page_structure;
-       }
-
-       /**
-        * Retrieve the feed permalink structure.
-        *
-        * The permalink structure is root property, feed base, and finally
-        * '/%feed%'. Will set the feed_structure property and then return it
-        * without attempting to set the value again.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return string|false False if not found. Permalink structure string.
-        */
-       public function get_feed_permastruct() {
-               if ( isset($this->feed_structure) )
-                       return $this->feed_structure;
-
-               if ( empty($this->permalink_structure) ) {
-                       $this->feed_structure = '';
-                       return false;
-               }
-
-               $this->feed_structure = $this->root . $this->feed_base . '/%feed%';
-
-               return $this->feed_structure;
-       }
-
-       /**
-        * Retrieve the comment feed permalink structure.
-        *
-        * The permalink structure is root property, comment base property, feed
-        * base and finally '/%feed%'. Will set the comment_feed_structure property
-        * and then return it without attempting to set the value again.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return string|false False if not found. Permalink structure string.
-        */
-       public function get_comment_feed_permastruct() {
-               if ( isset($this->comment_feed_structure) )
-                       return $this->comment_feed_structure;
-
-               if (empty($this->permalink_structure)) {
-                       $this->comment_feed_structure = '';
-                       return false;
-               }
-
-               $this->comment_feed_structure = $this->root . $this->comments_base . '/' . $this->feed_base . '/%feed%';
-
-               return $this->comment_feed_structure;
-       }
-
-       /**
-        * Add or update existing rewrite tags (e.g. %postname%).
-        *
-        * If the tag already exists, replace the existing pattern and query for
-        * that tag, otherwise add the new tag.
-        *
-        * @see WP_Rewrite::$rewritecode
-        * @see WP_Rewrite::$rewritereplace
-        * @see WP_Rewrite::$queryreplace
-        * @since 1.5.0
-        * @access public
-        *
-        * @param string $tag   Name of the rewrite tag to add or update.
-        * @param string $regex Regular expression to substitute the tag for in rewrite rules.
-        * @param string $query String to append to the rewritten query. Must end in '='.
-        */
-       public function add_rewrite_tag( $tag, $regex, $query ) {
-               $position = array_search( $tag, $this->rewritecode );
-               if ( false !== $position && null !== $position ) {
-                       $this->rewritereplace[ $position ] = $regex;
-                       $this->queryreplace[ $position ] = $query;
-               } else {
-                       $this->rewritecode[] = $tag;
-                       $this->rewritereplace[] = $regex;
-                       $this->queryreplace[] = $query;
-               }
-       }
-
-       /**
-        * Generate rewrite rules from a permalink structure.
-        *
-        * The main WP_Rewrite function for building the rewrite rule list. The
-        * contents of the function is a mix of black magic and regular expressions,
-        * so best just ignore the contents and move to the parameters.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @param string $permalink_structure The permalink structure.
-        * @param int    $ep_mask             Endpoint mask defining what endpoints are added to the structure. Default is EP_NONE.
-        * @param bool   $paged               Should archive pagination rules be added for the structure? Default is true.
-        * @param bool   $feed                Should feed rewrite rules be added for the structure? Default is true.
-        * @param bool   $forcomments         Should the feed rules be a query for a comments feed? Default is false.
-        * @param bool   $walk_dirs           Should the 'directories' making up the structure be walked over and rewrite rules
-        *                                    built for each in turn? Default is true.
-        * @param bool   $endpoints           Should endpoints be applied to the generated rewrite rules? Default is true.
-        * @return array Rewrite rule list.
-        */
-       public function generate_rewrite_rules($permalink_structure, $ep_mask = EP_NONE, $paged = true, $feed = true, $forcomments = false, $walk_dirs = true, $endpoints = true) {
-               //build a regex to match the feed section of URLs, something like (feed|atom|rss|rss2)/?
-               $feedregex2 = '';
-               foreach ( (array) $this->feeds as $feed_name)
-                       $feedregex2 .= $feed_name . '|';
-               $feedregex2 = '(' . trim($feedregex2, '|') . ')/?$';
-
-               //$feedregex is identical but with /feed/ added on as well, so URLs like <permalink>/feed/atom
-               //and <permalink>/atom are both possible
-               $feedregex = $this->feed_base . '/' . $feedregex2;
-
-               //build a regex to match the trackback and page/xx parts of URLs
-               $trackbackregex = 'trackback/?$';
-               $pageregex = $this->pagination_base . '/?([0-9]{1,})/?$';
-               $commentregex = $this->comments_pagination_base . '-([0-9]{1,})/?$';
-
-               //build up an array of endpoint regexes to append => queries to append
-               if ( $endpoints ) {
-                       $ep_query_append = array ();
-                       foreach ( (array) $this->endpoints as $endpoint) {
-                               //match everything after the endpoint name, but allow for nothing to appear there
-                               $epmatch = $endpoint[1] . '(/(.*))?/?$';
-                               //this will be appended on to the rest of the query for each dir
-                               $epquery = '&' . $endpoint[2] . '=';
-                               $ep_query_append[$epmatch] = array ( $endpoint[0], $epquery );
-                       }
-               }
-
-               //get everything up to the first rewrite tag
-               $front = substr($permalink_structure, 0, strpos($permalink_structure, '%'));
-               //build an array of the tags (note that said array ends up being in $tokens[0])
-               preg_match_all('/%.+?%/', $permalink_structure, $tokens);
-
-               $num_tokens = count($tokens[0]);
-
-               $index = $this->index; //probably 'index.php'
-               $feedindex = $index;
-               $trackbackindex = $index;
-               //build a list from the rewritecode and queryreplace arrays, that will look something like
-               //tagname=$matches[i] where i is the current $i
-               $queries = array();
-               for ( $i = 0; $i < $num_tokens; ++$i ) {
-                       if ( 0 < $i )
-                               $queries[$i] = $queries[$i - 1] . '&';
-                       else
-                               $queries[$i] = '';
-
-                       $query_token = str_replace($this->rewritecode, $this->queryreplace, $tokens[0][$i]) . $this->preg_index($i+1);
-                       $queries[$i] .= $query_token;
-               }
-
-               //get the structure, minus any cruft (stuff that isn't tags) at the front
-               $structure = $permalink_structure;
-               if ( $front != '/' )
-                       $structure = str_replace($front, '', $structure);
-
-               //create a list of dirs to walk over, making rewrite rules for each level
-               //so for example, a $structure of /%year%/%monthnum%/%postname% would create
-               //rewrite rules for /%year%/, /%year%/%monthnum%/ and /%year%/%monthnum%/%postname%
-               $structure = trim($structure, '/');
-               $dirs = $walk_dirs ? explode('/', $structure) : array( $structure );
-               $num_dirs = count($dirs);
-
-               //strip slashes from the front of $front
-               $front = preg_replace('|^/+|', '', $front);
-
-               //the main workhorse loop
-               $post_rewrite = array();
-               $struct = $front;
-               for ( $j = 0; $j < $num_dirs; ++$j ) {
-                       //get the struct for this dir, and trim slashes off the front
-                       $struct .= $dirs[$j] . '/'; //accumulate. see comment near explode('/', $structure) above
-                       $struct = ltrim($struct, '/');
-
-                       //replace tags with regexes
-                       $match = str_replace($this->rewritecode, $this->rewritereplace, $struct);
-
-                       //make a list of tags, and store how many there are in $num_toks
-                       $num_toks = preg_match_all('/%.+?%/', $struct, $toks);
-
-                       //get the 'tagname=$matches[i]'
-                       $query = ( ! empty( $num_toks ) && isset( $queries[$num_toks - 1] ) ) ? $queries[$num_toks - 1] : '';
-
-                       //set up $ep_mask_specific which is used to match more specific URL types
-                       switch ( $dirs[$j] ) {
-                               case '%year%':
-                                       $ep_mask_specific = EP_YEAR;
-                                       break;
-                               case '%monthnum%':
-                                       $ep_mask_specific = EP_MONTH;
-                                       break;
-                               case '%day%':
-                                       $ep_mask_specific = EP_DAY;
-                                       break;
-                               default:
-                                       $ep_mask_specific = EP_NONE;
-                       }
-
-                       //create query for /page/xx
-                       $pagematch = $match . $pageregex;
-                       $pagequery = $index . '?' . $query . '&paged=' . $this->preg_index($num_toks + 1);
-
-                       //create query for /comment-page-xx
-                       $commentmatch = $match . $commentregex;
-                       $commentquery = $index . '?' . $query . '&cpage=' . $this->preg_index($num_toks + 1);
-
-                       if ( get_option('page_on_front') ) {
-                               //create query for Root /comment-page-xx
-                               $rootcommentmatch = $match . $commentregex;
-                               $rootcommentquery = $index . '?' . $query . '&page_id=' . get_option('page_on_front') . '&cpage=' . $this->preg_index($num_toks + 1);
-                       }
-
-                       //create query for /feed/(feed|atom|rss|rss2|rdf)
-                       $feedmatch = $match . $feedregex;
-                       $feedquery = $feedindex . '?' . $query . '&feed=' . $this->preg_index($num_toks + 1);
-
-                       //create query for /(feed|atom|rss|rss2|rdf) (see comment near creation of $feedregex)
-                       $feedmatch2 = $match . $feedregex2;
-                       $feedquery2 = $feedindex . '?' . $query . '&feed=' . $this->preg_index($num_toks + 1);
-
-                       //if asked to, turn the feed queries into comment feed ones
-                       if ( $forcomments ) {
-                               $feedquery .= '&withcomments=1';
-                               $feedquery2 .= '&withcomments=1';
-                       }
-
-                       //start creating the array of rewrites for this dir
-                       $rewrite = array();
-                       if ( $feed ) //...adding on /feed/ regexes => queries
-                               $rewrite = array($feedmatch => $feedquery, $feedmatch2 => $feedquery2);
-                       if ( $paged ) //...and /page/xx ones
-                               $rewrite = array_merge($rewrite, array($pagematch => $pagequery));
-
-                       //only on pages with comments add ../comment-page-xx/
-                       if ( EP_PAGES & $ep_mask || EP_PERMALINK & $ep_mask ) {
-                               $rewrite = array_merge($rewrite, array($commentmatch => $commentquery));
-                       } elseif ( EP_ROOT & $ep_mask && get_option('page_on_front') ) {
-                               $rewrite = array_merge($rewrite, array($rootcommentmatch => $rootcommentquery));
-                       }
-                       //do endpoints
-                       if ( $endpoints ) {
-                               foreach ( (array) $ep_query_append as $regex => $ep) {
-                                       //add the endpoints on if the mask fits
-                                       if ( $ep[0] & $ep_mask || $ep[0] & $ep_mask_specific )
-                                               $rewrite[$match . $regex] = $index . '?' . $query . $ep[1] . $this->preg_index($num_toks + 2);
-                               }
-                       }
-
-                       //if we've got some tags in this dir
-                       if ( $num_toks ) {
-                               $post = false;
-                               $page = false;
-
-                               //check to see if this dir is permalink-level: i.e. the structure specifies an
-                               //individual post. Do this by checking it contains at least one of 1) post name,
-                               //2) post ID, 3) page name, 4) timestamp (year, month, day, hour, second and
-                               //minute all present). Set these flags now as we need them for the endpoints.
-                               if ( strpos($struct, '%postname%') !== false
-                                               || strpos($struct, '%post_id%') !== false
-                                               || strpos($struct, '%pagename%') !== false
-                                               || (strpos($struct, '%year%') !== false && strpos($struct, '%monthnum%') !== false && strpos($struct, '%day%') !== false && strpos($struct, '%hour%') !== false && strpos($struct, '%minute%') !== false && strpos($struct, '%second%') !== false)
-                                               ) {
-                                       $post = true;
-                                       if ( strpos($struct, '%pagename%') !== false )
-                                               $page = true;
-                               }
-
-                               if ( ! $post ) {
-                                       // For custom post types, we need to add on endpoints as well.
-                                       foreach ( get_post_types( array('_builtin' => false ) ) as $ptype ) {
-                                               if ( strpos($struct, "%$ptype%") !== false ) {
-                                                       $post = true;
-                                                       $page = is_post_type_hierarchical( $ptype ); // This is for page style attachment url's
-                                                       break;
-                                               }
-                                       }
-                               }
-
-                               //if we're creating rules for a permalink, do all the endpoints like attachments etc
-                               if ( $post ) {
-                                       //create query and regex for trackback
-                                       $trackbackmatch = $match . $trackbackregex;
-                                       $trackbackquery = $trackbackindex . '?' . $query . '&tb=1';
-                                       //trim slashes from the end of the regex for this dir
-                                       $match = rtrim($match, '/');
-                                       //get rid of brackets
-                                       $submatchbase = str_replace( array('(', ')'), '', $match);
-
-                                       //add a rule for at attachments, which take the form of <permalink>/some-text
-                                       $sub1 = $submatchbase . '/([^/]+)/';
-                                       $sub1tb = $sub1 . $trackbackregex; //add trackback regex <permalink>/trackback/...
-                                       $sub1feed = $sub1 . $feedregex; //and <permalink>/feed/(atom|...)
-                                       $sub1feed2 = $sub1 . $feedregex2; //and <permalink>/(feed|atom...)
-                                       $sub1comment = $sub1 . $commentregex; //and <permalink>/comment-page-xx
-
-                                       //add another rule to match attachments in the explicit form:
-                                       //<permalink>/attachment/some-text
-                                       $sub2 = $submatchbase . '/attachment/([^/]+)/';
-                                       $sub2tb = $sub2 . $trackbackregex; //and add trackbacks <permalink>/attachment/trackback
-                                       $sub2feed = $sub2 . $feedregex;    //feeds, <permalink>/attachment/feed/(atom|...)
-                                       $sub2feed2 = $sub2 . $feedregex2;  //and feeds again on to this <permalink>/attachment/(feed|atom...)
-                                       $sub2comment = $sub2 . $commentregex; //and <permalink>/comment-page-xx
-
-                                       //create queries for these extra tag-ons we've just dealt with
-                                       $subquery = $index . '?attachment=' . $this->preg_index(1);
-                                       $subtbquery = $subquery . '&tb=1';
-                                       $subfeedquery = $subquery . '&feed=' . $this->preg_index(2);
-                                       $subcommentquery = $subquery . '&cpage=' . $this->preg_index(2);
-
-                                       //do endpoints for attachments
-                                       if ( !empty($endpoints) ) {
-                                               foreach ( (array) $ep_query_append as $regex => $ep ) {
-                                                       if ( $ep[0] & EP_ATTACHMENT ) {
-                                                               $rewrite[$sub1 . $regex] = $subquery . $ep[1] . $this->preg_index(3);
-                                                               $rewrite[$sub2 . $regex] = $subquery . $ep[1] . $this->preg_index(3);
-                                                       }
-                                               }
-                                       }
-
-                                       //now we've finished with endpoints, finish off the $sub1 and $sub2 matches
-                                       //add a ? as we don't have to match that last slash, and finally a $ so we
-                                       //match to the end of the URL
-                                       $sub1 .= '?$';
-                                       $sub2 .= '?$';
-
-                                       //post pagination, e.g. <permalink>/2/
-                                       $match = $match . '(/[0-9]+)?/?$';
-                                       $query = $index . '?' . $query . '&page=' . $this->preg_index($num_toks + 1);
-                               } else { //not matching a permalink so this is a lot simpler
-                                       //close the match and finalise the query
-                                       $match .= '?$';
-                                       $query = $index . '?' . $query;
-                               }
-
-                               //create the final array for this dir by joining the $rewrite array (which currently
-                               //only contains rules/queries for trackback, pages etc) to the main regex/query for
-                               //this dir
-                               $rewrite = array_merge($rewrite, array($match => $query));
-
-                               //if we're matching a permalink, add those extras (attachments etc) on
-                               if ( $post ) {
-                                       //add trackback
-                                       $rewrite = array_merge(array($trackbackmatch => $trackbackquery), $rewrite);
-
-                                       //add regexes/queries for attachments, attachment trackbacks and so on
-                                       if ( ! $page ) //require <permalink>/attachment/stuff form for pages because of confusion with subpages
-                                               $rewrite = array_merge($rewrite, array($sub1 => $subquery, $sub1tb => $subtbquery, $sub1feed => $subfeedquery, $sub1feed2 => $subfeedquery, $sub1comment => $subcommentquery));
-                                       $rewrite = array_merge(array($sub2 => $subquery, $sub2tb => $subtbquery, $sub2feed => $subfeedquery, $sub2feed2 => $subfeedquery, $sub2comment => $subcommentquery), $rewrite);
-                               }
-                       } //if($num_toks)
-                       //add the rules for this dir to the accumulating $post_rewrite
-                       $post_rewrite = array_merge($rewrite, $post_rewrite);
-               } //foreach ($dir)
-               return $post_rewrite; //the finished rules. phew!
-       }
-
-       /**
-        * Generate Rewrite rules with permalink structure and walking directory only.
-        *
-        * Shorten version of {@link WP_Rewrite::generate_rewrite_rules()} that
-        * allows for shorter list of parameters. See the method for longer
-        * description of what generating rewrite rules does.
-        *
-        * @uses WP_Rewrite::generate_rewrite_rules() See for long description and rest of parameters.
-        * @since 1.5.0
-        * @access public
-        *
-        * @param string $permalink_structure The permalink structure to generate rules.
-        * @param bool   $walk_dirs           Optional, default is false. Whether to create list of directories to walk over.
-        * @return array
-        */
-       public function generate_rewrite_rule($permalink_structure, $walk_dirs = false) {
-               return $this->generate_rewrite_rules($permalink_structure, EP_NONE, false, false, false, $walk_dirs);
-       }
-
-       /**
-        * Construct rewrite matches and queries from permalink structure.
-        *
-        * Runs the action 'generate_rewrite_rules' with the parameter that is an
-        * reference to the current WP_Rewrite instance to further manipulate the
-        * permalink structures and rewrite rules. Runs the 'rewrite_rules_array'
-        * filter on the full rewrite rule array.
-        *
-        * There are two ways to manipulate the rewrite rules, one by hooking into
-        * the 'generate_rewrite_rules' action and gaining full control of the
-        * object or just manipulating the rewrite rule array before it is passed
-        * from the function.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return array An associate array of matches and queries.
-        */
-       public function rewrite_rules() {
-               $rewrite = array();
-
-               if ( empty($this->permalink_structure) )
-                       return $rewrite;
-
-               // robots.txt -only if installed at the root
-               $home_path = parse_url( home_url() );
-               $robots_rewrite = ( empty( $home_path['path'] ) || '/' == $home_path['path'] ) ? array( 'robots\.txt$' => $this->index . '?robots=1' ) : array();
-
-               // Old feed and service files
-               $deprecated_files = array(
-                       '.*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\.php$' => $this->index . '?feed=old',
-                       '.*wp-app\.php(/.*)?$' => $this->index . '?error=403',
-               );
-
-               // Registration rules
-               $registration_pages = array();
-               if ( is_multisite() && is_main_site() ) {
-                       $registration_pages['.*wp-signup.php$'] = $this->index . '?signup=true';
-                       $registration_pages['.*wp-activate.php$'] = $this->index . '?activate=true';
-               }
-               $registration_pages['.*wp-register.php$'] = $this->index . '?register=true'; // Deprecated
-
-               // Post rewrite rules.
-               $post_rewrite = $this->generate_rewrite_rules( $this->permalink_structure, EP_PERMALINK );
-
-               /**
-                * Filter rewrite rules used for "post" archives.
-                *
-                * @since 1.5.0
-                *
-                * @param array $post_rewrite The rewrite rules for posts.
-                */
-               $post_rewrite = apply_filters( 'post_rewrite_rules', $post_rewrite );
-
-               // Date rewrite rules.
-               $date_rewrite = $this->generate_rewrite_rules($this->get_date_permastruct(), EP_DATE);
-
-               /**
-                * Filter rewrite rules used for date archives.
-                *
-                * Likely date archives would include /yyyy/, /yyyy/mm/, and /yyyy/mm/dd/.
-                *
-                * @since 1.5.0
-                *
-                * @param array $date_rewrite The rewrite rules for date archives.
-                */
-               $date_rewrite = apply_filters( 'date_rewrite_rules', $date_rewrite );
-
-               // Root-level rewrite rules.
-               $root_rewrite = $this->generate_rewrite_rules($this->root . '/', EP_ROOT);
-
-               /**
-                * Filter rewrite rules used for root-level archives.
-                *
-                * Likely root-level archives would include pagination rules for the homepage
-                * as well as site-wide post feeds (e.g. /feed/, and /feed/atom/).
-                *
-                * @since 1.5.0
-                *
-                * @param array $root_rewrite The root-level rewrite rules.
-                */
-               $root_rewrite = apply_filters( 'root_rewrite_rules', $root_rewrite );
-
-               // Comments rewrite rules.
-               $comments_rewrite = $this->generate_rewrite_rules($this->root . $this->comments_base, EP_COMMENTS, false, true, true, false);
-
-               /**
-                * Filter rewrite rules used for comment feed archives.
-                *
-                * Likely comments feed archives include /comments/feed/, and /comments/feed/atom/.
-                *
-                * @since 1.5.0
-                *
-                * @param array $comments_rewrite The rewrite rules for the site-wide comments feeds.
-                */
-               $comments_rewrite = apply_filters( 'comments_rewrite_rules', $comments_rewrite );
-
-               // Search rewrite rules.
-               $search_structure = $this->get_search_permastruct();
-               $search_rewrite = $this->generate_rewrite_rules($search_structure, EP_SEARCH);
-
-               /**
-                * Filter rewrite rules used for search archives.
-                *
-                * Likely search-related archives include /search/search+query/ as well as
-                * pagination and feed paths for a search.
-                *
-                * @since 1.5.0
-                *
-                * @param array $search_rewrite The rewrite rules for search queries.
-                */
-               $search_rewrite = apply_filters( 'search_rewrite_rules', $search_rewrite );
-
-               // Author rewrite rules.
-               $author_rewrite = $this->generate_rewrite_rules($this->get_author_permastruct(), EP_AUTHORS);
-
-               /**
-                * Filter rewrite rules used for author archives.
-                *
-                * Likely author archives would include /author/author-name/, as well as
-                * pagination and feed paths for author archives.
-                *
-                * @since 1.5.0
-                *
-                * @param array $author_rewrite The rewrite rules for author archives.
-                */
-               $author_rewrite = apply_filters( 'author_rewrite_rules', $author_rewrite );
-
-               // Pages rewrite rules.
-               $page_rewrite = $this->page_rewrite_rules();
-
-               /**
-                * Filter rewrite rules used for "page" post type archives.
-                *
-                * @since 1.5.0
-                *
-                * @param array $page_rewrite The rewrite rules for the "page" post type.
-                */
-               $page_rewrite = apply_filters( 'page_rewrite_rules', $page_rewrite );
-
-               // Extra permastructs.
-               foreach ( $this->extra_permastructs as $permastructname => $struct ) {
-                       if ( is_array( $struct ) ) {
-                               if ( count( $struct ) == 2 )
-                                       $rules = $this->generate_rewrite_rules( $struct[0], $struct[1] );
-                               else
-                                       $rules = $this->generate_rewrite_rules( $struct['struct'], $struct['ep_mask'], $struct['paged'], $struct['feed'], $struct['forcomments'], $struct['walk_dirs'], $struct['endpoints'] );
-                       } else {
-                               $rules = $this->generate_rewrite_rules( $struct );
-                       }
-
-                       /**
-                        * Filter rewrite rules used for individual permastructs.
-                        *
-                        * The dynamic portion of the hook name, `$permastructname`, refers
-                        * to the name of the registered permastruct, e.g. 'post_tag' (tags),
-                        * 'category' (categories), etc.
-                        *
-                        * @since 3.1.0
-                        *
-                        * @param array $rules The rewrite rules generated for the current permastruct.
-                        */
-                       $rules = apply_filters( $permastructname . '_rewrite_rules', $rules );
-                       if ( 'post_tag' == $permastructname ) {
-
-                               /**
-                                * Filter rewrite rules used specifically for Tags.
-                                *
-                                * @since 2.3.0
-                                * @deprecated 3.1.0 Use 'post_tag_rewrite_rules' instead
-                                *
-                                * @param array $rules The rewrite rules generated for tags.
-                                */
-                               $rules = apply_filters( 'tag_rewrite_rules', $rules );
-                       }
-
-                       $this->extra_rules_top = array_merge($this->extra_rules_top, $rules);
-               }
-
-               // Put them together.
-               if ( $this->use_verbose_page_rules )
-                       $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $deprecated_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $page_rewrite, $post_rewrite, $this->extra_rules);
-               else
-                       $this->rules = array_merge($this->extra_rules_top, $robots_rewrite, $deprecated_files, $registration_pages, $root_rewrite, $comments_rewrite, $search_rewrite,  $author_rewrite, $date_rewrite, $post_rewrite, $page_rewrite, $this->extra_rules);
-
-               /**
-                * Fires after the rewrite rules are generated.
-                *
-                * @since 1.5.0
-                *
-                * @param WP_Rewrite $this Current WP_Rewrite instance, passed by reference.
-                */
-               do_action_ref_array( 'generate_rewrite_rules', array( &$this ) );
-
-               /**
-                * Filter the full set of generated rewrite rules.
-                *
-                * @since 1.5.0
-                *
-                * @param array $this->rules The compiled array of rewrite rules.
-                */
-               $this->rules = apply_filters( 'rewrite_rules_array', $this->rules );
-
-               return $this->rules;
-       }
-
-       /**
-        * Retrieve the rewrite rules.
-        *
-        * The difference between this method and {@link
-        * WP_Rewrite::rewrite_rules()} is that this method stores the rewrite rules
-        * in the 'rewrite_rules' option and retrieves it. This prevents having to
-        * process all of the permalinks to get the rewrite rules in the form of
-        * caching.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return array Rewrite rules.
-        */
-       public function wp_rewrite_rules() {
-               $this->rules = get_option('rewrite_rules');
-               if ( empty($this->rules) ) {
-                       $this->matches = 'matches';
-                       $this->rewrite_rules();
-                       update_option('rewrite_rules', $this->rules);
-               }
-
-               return $this->rules;
-       }
-
-       /**
-        * Retrieve mod_rewrite formatted rewrite rules to write to .htaccess.
-        *
-        * Does not actually write to the .htaccess file, but creates the rules for
-        * the process that will.
-        *
-        * Will add the non_wp_rules property rules to the .htaccess file before
-        * the WordPress rewrite rules one.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @return string
-        */
-       public function mod_rewrite_rules() {
-               if ( ! $this->using_permalinks() )
-                       return '';
-
-               $site_root = parse_url( site_url() );
-               if ( isset( $site_root['path'] ) )
-                       $site_root = trailingslashit($site_root['path']);
-
-               $home_root = parse_url(home_url());
-               if ( isset( $home_root['path'] ) )
-                       $home_root = trailingslashit($home_root['path']);
-               else
-                       $home_root = '/';
-
-               $rules = "<IfModule mod_rewrite.c>\n";
-               $rules .= "RewriteEngine On\n";
-               $rules .= "RewriteBase $home_root\n";
-               $rules .= "RewriteRule ^index\.php$ - [L]\n"; // Prevent -f checks on index.php.
-
-               //add in the rules that don't redirect to WP's index.php (and thus shouldn't be handled by WP at all)
-               foreach ( (array) $this->non_wp_rules as $match => $query) {
-                       // Apache 1.3 does not support the reluctant (non-greedy) modifier.
-                       $match = str_replace('.+?', '.+', $match);
-
-                       // If the match is unanchored and greedy, prepend rewrite conditions
-                       // to avoid infinite redirects and eclipsing of real files.
-                       //if ($match == '(.+)/?$' || $match == '([^/]+)/?$' ) {
-                               //nada.
-                       //}
-
-                       $rules .= 'RewriteRule ^' . $match . ' ' . $home_root . $query . " [QSA,L]\n";
-               }
-
-               if ( $this->use_verbose_rules ) {
-                       $this->matches = '';
-                       $rewrite = $this->rewrite_rules();
-                       $num_rules = count($rewrite);
-                       $rules .= "RewriteCond %{REQUEST_FILENAME} -f [OR]\n" .
-                               "RewriteCond %{REQUEST_FILENAME} -d\n" .
-                               "RewriteRule ^.*$ - [S=$num_rules]\n";
-
-                       foreach ( (array) $rewrite as $match => $query) {
-                               // Apache 1.3 does not support the reluctant (non-greedy) modifier.
-                               $match = str_replace('.+?', '.+', $match);
-
-                               // If the match is unanchored and greedy, prepend rewrite conditions
-                               // to avoid infinite redirects and eclipsing of real files.
-                               //if ($match == '(.+)/?$' || $match == '([^/]+)/?$' ) {
-                                       //nada.
-                               //}
-
-                               if ( strpos($query, $this->index) !== false )
-                                       $rules .= 'RewriteRule ^' . $match . ' ' . $home_root . $query . " [QSA,L]\n";
-                               else
-                                       $rules .= 'RewriteRule ^' . $match . ' ' . $site_root . $query . " [QSA,L]\n";
-                       }
-               } else {
-                       $rules .= "RewriteCond %{REQUEST_FILENAME} !-f\n" .
-                               "RewriteCond %{REQUEST_FILENAME} !-d\n" .
-                               "RewriteRule . {$home_root}{$this->index} [L]\n";
-               }
-
-               $rules .= "</IfModule>\n";
-
-               /**
-                *
-                * Filter the list of rewrite rules formatted for output to an .htaccess file.
-                *
-                * @since 1.5.0
-                *
-                * @param string $rules mod_rewrite Rewrite rules formatted for .htaccess.
-                */
-               $rules = apply_filters( 'mod_rewrite_rules', $rules );
-
-               /**
-                * Filter the list of rewrite rules formatted for output to an .htaccess file.
-                *
-                * @since 1.5.0
-                * @deprecated 1.5.0 Use the mod_rewrite_rules filter instead.
-                *
-                * @param string $rules mod_rewrite Rewrite rules formatted for .htaccess.
-                */
-               return apply_filters( 'rewrite_rules', $rules );
-       }
-
-       /**
-        * Retrieve IIS7 URL Rewrite formatted rewrite rules to write to web.config file.
-        *
-        * Does not actually write to the web.config file, but creates the rules for
-        * the process that will.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @return string
-        */
-       public function iis7_url_rewrite_rules( $add_parent_tags = false ) {
-               if ( ! $this->using_permalinks() )
-                       return '';
-               $rules = '';
-               if ( $add_parent_tags ) {
-                       $rules .= '<configuration>
-       <system.webServer>
-               <rewrite>
-                       <rules>';
-               }
-
-               $rules .= '
-                       <rule name="wordpress" patternSyntax="Wildcard">
-                               <match url="*" />
-                                       <conditions>
-                                               <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
-                                               <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
-                                       </conditions>
-                               <action type="Rewrite" url="index.php" />
-                       </rule>';
-
-               if ( $add_parent_tags ) {
-                       $rules .= '
-                       </rules>
-               </rewrite>
-       </system.webServer>
-</configuration>';
-               }
-
-               /**
-                * Filter the list of rewrite rules formatted for output to a web.config.
-                *
-                * @since 2.8.0
-                *
-                * @param string $rules Rewrite rules formatted for IIS web.config.
-                */
-               return apply_filters( 'iis7_url_rewrite_rules', $rules );
-       }
-
-       /**
-        * Add a straight rewrite rule.
-        *
-        * Any value in the $after parameter that isn't 'bottom' will be placed at
-        * the top of the rules.
-        *
-        * @since 2.1.0
-        * @access public
-        *
-        * @param string $regex    Regular expression to match against request.
-        * @param string $redirect URL regex redirects to when regex matches request.
-        * @param string $after    Optional, default is bottom. Location to place rule.
-        */
-       public function add_rule($regex, $redirect, $after = 'bottom') {
-               //get everything up to the first ?
-               $index = (strpos($redirect, '?') === false ? strlen($redirect) : strpos($redirect, '?'));
-               $front = substr($redirect, 0, $index);
-               if ( $front != $this->index ) { //it doesn't redirect to WP's index.php
-                       $this->add_external_rule($regex, $redirect);
-               } else {
-                       if ( 'bottom' == $after)
-                               $this->extra_rules = array_merge($this->extra_rules, array($regex => $redirect));
-                       else
-                               $this->extra_rules_top = array_merge($this->extra_rules_top, array($regex => $redirect));
-                       //$this->extra_rules[$regex] = $redirect;
-               }
-       }
-
-       /**
-        * Add a rule that doesn't redirect to index.php.
-        *
-        * Can redirect to any place.
-        *
-        * @since 2.1.0
-        * @access public
-        *
-        * @param string $regex    Regular expression to match against request.
-        * @param string $redirect URL regex redirects to when regex matches request.
-        */
-       public function add_external_rule($regex, $redirect) {
-               $this->non_wp_rules[$regex] = $redirect;
-       }
-
-       /**
-        * Add an endpoint, like /trackback/.
-        *
-        * @since 2.1.0
-        * @since 3.9.0 $query_var parameter added.
-        * @since 4.3.0 Added support for skipping query var registration by passing `false` to `$query_var`.
-        * @access public
-        *
-        * @see add_rewrite_endpoint() for full documentation.
-        *
-        * @global WP $wp
-        *
-        * @param string      $name      Name of the endpoint.
-        * @param int         $places    Endpoint mask describing the places the endpoint should be added.
-        * @param string|bool $query_var Optional. Name of the corresponding query variable. Pass `false` to
-        *                               skip registering a query_var for this endpoint. Defaults to the
-        *                               value of `$name`.
-        */
-       public function add_endpoint( $name, $places, $query_var = true ) {
-               global $wp;
-
-               // For backward compatibility, if `null` has explicitly been passed as `$query_var`, assume `true`.
-               if ( true === $query_var || null === func_get_arg( 2 ) ) {
-                       $query_var = $name;
-               }
-               $this->endpoints[] = array( $places, $name, $query_var );
-
-               if ( $query_var ) {
-                       $wp->add_query_var( $query_var );
-               }
-       }
-
-       /**
-        * Add a new permalink structure.
-        *
-        * A permalink structure (permastruct) is an abstract definition of a set of rewrite rules; it
-        * is an easy way of expressing a set of regular expressions that rewrite to a set of query strings.
-        * The new permastruct is added to the {@link WP_Rewrite::$extra_permastructs} array. When the
-        * rewrite rules are built by {@link WP_Rewrite::rewrite_rules()} all of these extra permastructs
-        * are passed to {@link WP_Rewrite::generate_rewrite_rules()} which transforms them into the
-        * regular expressions that many love to hate.
-        *
-        * The $args parameter gives you control over how {@link WP_Rewrite::generate_rewrite_rules()}
-        * works on the new permastruct.
-        *
-        * @since 2.5.0
-        * @access public
-        *
-        * @param string $name   Name for permalink structure.
-        * @param string $struct Permalink structure (e.g. category/%category%)
-        * @param array  $args   Optional configuration for building the rules from the permalink structure:
-        *     - with_front (bool) - Should the structure be prepended with WP_Rewrite::$front? Default is true.
-        *     - ep_mask (int) - Endpoint mask defining what endpoints are added to the structure. Default is EP_NONE.
-        *     - paged (bool) - Should archive pagination rules be added for the structure? Default is true.
-        *     - feed (bool) - Should feed rewrite rules be added for the structure? Default is true.
-        *     - forcomments (bool) - Should the feed rules be a query for a comments feed? Default is false.
-        *     - walk_dirs (bool) - Should the 'directories' making up the structure be walked over and rewrite
-        *                          rules built for each in turn? Default is true.
-        *     - endpoints (bool) - Should endpoints be applied to the generated rewrite rules? Default is true.
-        */
-       public function add_permastruct( $name, $struct, $args = array() ) {
-               // backwards compatibility for the old parameters: $with_front and $ep_mask
-               if ( ! is_array( $args ) )
-                       $args = array( 'with_front' => $args );
-               if ( func_num_args() == 4 )
-                       $args['ep_mask'] = func_get_arg( 3 );
-
-               $defaults = array(
-                       'with_front' => true,
-                       'ep_mask' => EP_NONE,
-                       'paged' => true,
-                       'feed' => true,
-                       'forcomments' => false,
-                       'walk_dirs' => true,
-                       'endpoints' => true,
-               );
-               $args = array_intersect_key( $args, $defaults );
-               $args = wp_parse_args( $args, $defaults );
-
-               if ( $args['with_front'] )
-                       $struct = $this->front . $struct;
-               else
-                       $struct = $this->root . $struct;
-               $args['struct'] = $struct;
-
-               $this->extra_permastructs[ $name ] = $args;
-       }
-
-       /**
-        * Remove rewrite rules and then recreate rewrite rules.
-        *
-        * Calls {@link WP_Rewrite::wp_rewrite_rules()} after removing the
-        * 'rewrite_rules' option. If the function named 'save_mod_rewrite_rules'
-        * exists, it will be called.
-        *
-        * @since 2.0.1
-        * @access public
-        *
-        * @staticvar bool $do_hard_later
-        *
-        * @param bool $hard Whether to update .htaccess (hard flush) or just update rewrite_rules option (soft flush). Default is true (hard).
-        */
-       public function flush_rules( $hard = true ) {
-               static $do_hard_later = null;
-
-               // Prevent this action from running before everyone has registered their rewrites
-               if ( ! did_action( 'wp_loaded' ) ) {
-                       add_action( 'wp_loaded', array( $this, 'flush_rules' ) );
-                       $do_hard_later = ( isset( $do_hard_later ) ) ? $do_hard_later || $hard : $hard;
-                       return;
-               }
-
-               if ( isset( $do_hard_later ) ) {
-                       $hard = $do_hard_later;
-                       unset( $do_hard_later );
-               }
-
-               delete_option('rewrite_rules');
-               $this->wp_rewrite_rules();
-               /**
-                * Filter whether a "hard" rewrite rule flush should be performed when requested.
-                *
-                * A "hard" flush updates .htaccess (Apache) or web.config (IIS).
-                *
-                * @since 3.7.0
-                *
-                * @param bool $hard Whether to flush rewrite rules "hard". Default true.
-                */
-               if ( ! $hard || ! apply_filters( 'flush_rewrite_rules_hard', true ) ) {
-                       return;
-               }
-               if ( function_exists( 'save_mod_rewrite_rules' ) )
-                       save_mod_rewrite_rules();
-               if ( function_exists( 'iis7_save_url_rewrite_rules' ) )
-                       iis7_save_url_rewrite_rules();
-       }
-
-       /**
-        * Sets up the object's properties.
-        *
-        * The 'use_verbose_page_rules' object property will be set to true if the
-        * permalink structure begins with one of the following: '%postname%', '%category%',
-        * '%tag%', or '%author%'.
-        *
-        * @since 1.5.0
-        * @access public
-        */
-       public function init() {
-               $this->extra_rules = $this->non_wp_rules = $this->endpoints = array();
-               $this->permalink_structure = get_option('permalink_structure');
-               $this->front = substr($this->permalink_structure, 0, strpos($this->permalink_structure, '%'));
-               $this->root = '';
-               if ( $this->using_index_permalinks() )
-                       $this->root = $this->index . '/';
-               unset($this->author_structure);
-               unset($this->date_structure);
-               unset($this->page_structure);
-               unset($this->search_structure);
-               unset($this->feed_structure);
-               unset($this->comment_feed_structure);
-               $this->use_trailing_slashes = ( '/' == substr($this->permalink_structure, -1, 1) );
-
-               // Enable generic rules for pages if permalink structure doesn't begin with a wildcard.
-               if ( preg_match("/^[^%]*%(?:postname|category|tag|author)%/", $this->permalink_structure) )
-                        $this->use_verbose_page_rules = true;
-               else
-                       $this->use_verbose_page_rules = false;
-       }
-
-       /**
-        * Set the main permalink structure for the blog.
-        *
-        * Will update the 'permalink_structure' option, if there is a difference
-        * between the current permalink structure and the parameter value. Calls
-        * {@link WP_Rewrite::init()} after the option is updated.
-        *
-        * Fires the 'permalink_structure_changed' action once the init call has
-        * processed passing the old and new values
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @param string $permalink_structure Permalink structure.
-        */
-       public function set_permalink_structure($permalink_structure) {
-               if ( $permalink_structure != $this->permalink_structure ) {
-                       $old_permalink_structure = $this->permalink_structure;
-                       update_option('permalink_structure', $permalink_structure);
-                       $this->init();
-
-                       /**
-                        * Fires after the permalink structure is updated.
-                        *
-                        * @since 2.8.0
-                        *
-                        * @param string $old_permalink_structure The previous permalink structure.
-                        * @param string $permalink_structure     The new permalink structure.
-                        */
-                       do_action( 'permalink_structure_changed', $old_permalink_structure, $permalink_structure );
-               }
-       }
-
-       /**
-        * Set the category base for the category permalink.
-        *
-        * Will update the 'category_base' option, if there is a difference between
-        * the current category base and the parameter value. Calls
-        * {@link WP_Rewrite::init()} after the option is updated.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        * @param string $category_base Category permalink structure base.
-        */
-       public function set_category_base($category_base) {
-               if ( $category_base != get_option('category_base') ) {
-                       update_option('category_base', $category_base);
-                       $this->init();
-               }
-       }
-
-       /**
-        * Set the tag base for the tag permalink.
-        *
-        * Will update the 'tag_base' option, if there is a difference between the
-        * current tag base and the parameter value. Calls
-        * {@link WP_Rewrite::init()} after the option is updated.
-        *
-        * @since 2.3.0
-        * @access public
-        *
-        * @param string $tag_base Tag permalink structure base.
-        */
-       public function set_tag_base( $tag_base ) {
-               if ( $tag_base != get_option( 'tag_base') ) {
-                       update_option( 'tag_base', $tag_base );
-                       $this->init();
-               }
-       }
-
-       /**
-        * Constructor - Calls init(), which runs setup.
-        *
-        * @since 1.5.0
-        * @access public
-        *
-        */
-       public function __construct() {
-               $this->init();
-       }
-}
index 67bac6bd5582b55d35eceb5c676a8ac81abfa342..548ccf23498742afea940138f8f2f8bd2072aba7 100644 (file)
@@ -599,7 +599,7 @@ function _response_to_rss ($resp) {
        if ( $rss && (!isset($rss->ERROR) || !$rss->ERROR) ) {
 
                // find Etag, and Last-Modified
-               foreach( (array) $resp->headers as $h) {
+               foreach ( (array) $resp->headers as $h) {
                        // 2003-03-02 - Nicola Asuni (www.tecnick.com) - fixed bug "Undefined offset: 1"
                        if (strpos($h, ": ")) {
                                list($field, $val) = explode(": ", $h, 2);
index e3460a22eb8b7e0e6945b92f784bdd408fe21e6c..2ac34edc605bf08480d651268f86a2a68052237e 100644 (file)
@@ -79,7 +79,7 @@ function wp_default_scripts( &$scripts ) {
 
        $scripts->add( 'common', "/wp-admin/js/common$suffix.js", array('jquery', 'hoverIntent', 'utils'), false, 1 );
        did_action( 'init' ) && $scripts->localize( 'common', 'commonL10n', array(
-               'warnDelete' => __( "You are about to permanently delete the selected items.\n  'Cancel' to stop, 'OK' to delete." ),
+               'warnDelete' => __( "You are about to permanently delete these items.\n  'Cancel' to stop, 'OK' to delete." ),
                'dismiss'    => __( 'Dismiss this notice.' ),
        ) );
 
@@ -288,7 +288,7 @@ function wp_default_scripts( &$scripts ) {
                'error_uploading' => __('&#8220;%s&#8221; has failed to upload.')
        );
 
-       $scripts->add( 'plupload', '/wp-includes/js/plupload/plupload.full.min.js', array(), '2.1.1' );
+       $scripts->add( 'plupload', '/wp-includes/js/plupload/plupload.full.min.js', array(), '2.1.8' );
        // Back compat handles:
        foreach ( array( 'all', 'html5', 'flash', 'silverlight', 'html4' ) as $handle ) {
                $scripts->add( "plupload-$handle", false, array( 'plupload' ), '2.1.1' );
@@ -311,7 +311,7 @@ function wp_default_scripts( &$scripts ) {
 
        $scripts->add( 'comment-reply', "/wp-includes/js/comment-reply$suffix.js", array(), false, 1 );
 
-       $scripts->add( 'json2', "/wp-includes/js/json2$suffix.js", array(), '2011-02-23' );
+       $scripts->add( 'json2', "/wp-includes/js/json2$suffix.js", array(), '2015-05-03' );
        did_action( 'init' ) && $scripts->add_data( 'json2', 'conditional', 'lt IE 8' );
 
        $scripts->add( 'underscore', "/wp-includes/js/underscore$dev_suffix.js", array(), '1.6.0', 1 );
@@ -330,7 +330,7 @@ function wp_default_scripts( &$scripts ) {
 
        $scripts->add( 'imgareaselect', "/wp-includes/js/imgareaselect/jquery.imgareaselect$suffix.js", array('jquery'), false, 1 );
 
-       $scripts->add( 'mediaelement', "/wp-includes/js/mediaelement/mediaelement-and-player.min.js", array('jquery'), '2.17.0', 1 );
+       $scripts->add( 'mediaelement', "/wp-includes/js/mediaelement/mediaelement-and-player.min.js", array('jquery'), '2.18.1', 1 );
        did_action( 'init' ) && $scripts->localize( 'mediaelement', 'mejsL10n', array(
                'language' => get_bloginfo( 'language' ),
                'strings'  => array(
@@ -351,9 +351,19 @@ function wp_default_scripts( &$scripts ) {
 
 
        $scripts->add( 'wp-mediaelement', "/wp-includes/js/mediaelement/wp-mediaelement.js", array('mediaelement'), false, 1 );
-       did_action( 'init' ) && $scripts->localize( 'mediaelement', '_wpmejsSettings', array(
+       $mejs_settings = array(
                'pluginPath' => includes_url( 'js/mediaelement/', 'relative' ),
-       ) );
+       );
+       did_action( 'init' ) && $scripts->localize( 'mediaelement', '_wpmejsSettings',
+               /**
+                * Filter the MediaElement configuration settings.
+                *
+                * @since 4.4.0
+                *
+                * @param array $mejs_settings MediaElement settings array.
+                */
+               apply_filters( 'mejs_settings', $mejs_settings )
+       );
 
        $scripts->add( 'froogaloop',  "/wp-includes/js/mediaelement/froogaloop.min.js", array(), '2.0' );
        $scripts->add( 'wp-playlist', "/wp-includes/js/mediaelement/wp-playlist.js", array( 'wp-util', 'backbone', 'mediaelement' ), false, 1 );
@@ -428,6 +438,7 @@ function wp_default_scripts( &$scripts ) {
                'cancel'             => __( 'Cancel' ),
                'close'              => __( 'Close' ),
                'cheatin'            => __( 'Cheatin&#8217; uh?' ),
+               'notAllowed'         => __( 'You are not allowed to customize the appearance of this site.' ),
                'previewIframeTitle' => __( 'Site Preview' ),
                'loginIframeTitle'   => __( 'Session expired' ),
                'collapseSidebar'    => __( 'Collapse Sidebar' ),
@@ -453,6 +464,8 @@ function wp_default_scripts( &$scripts ) {
                ),
        ) );
 
+       $scripts->add( 'wp-embed', "/wp-includes/js/wp-embed$suffix.js" );
+
        // To enqueue media-views or media-editor, call wp_enqueue_media().
        // Both rely on numerous settings, styles, and templates to operate correctly.
        $scripts->add( 'media-views',  "/wp-includes/js/media-views$suffix.js",  array( 'utils', 'media-models', 'wp-plupload', 'jquery-ui-sortable', 'wp-mediaelement' ), false, 1 );
@@ -474,6 +487,9 @@ function wp_default_scripts( &$scripts ) {
                        'replyApprove' => __( 'Approve and Reply' ),
                        'reply' => __( 'Reply' ),
                        'warnQuickEdit' => __( "Are you sure you want to edit this comment?\nThe changes you made will be lost." ),
+                       'docTitleComments' => __( 'Comments' ),
+                       /* translators: %s: comments count */
+                       'docTitleCommentsCount' => __( 'Comments (%s)' ),
                ) );
 
                $scripts->add( 'xfn', "/wp-admin/js/xfn$suffix.js", array('jquery'), false, 1 );
@@ -485,7 +501,7 @@ function wp_default_scripts( &$scripts ) {
                        'tagDelimiter' => _x( ',', 'tag delimiter' ),
                ) );
 
-               $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array( 'suggest', 'wp-lists', 'postbox', 'tags-box', 'underscore', 'word-count' ), false, 1 );
+               $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array( 'suggest', 'wp-lists', 'postbox', 'tags-box', 'underscore', 'word-count', 'wp-a11y' ), false, 1 );
                did_action( 'init' ) && $scripts->localize( 'post', 'postL10n', array(
                        'ok' => __('OK'),
                        'cancel' => __('Cancel'),
@@ -509,6 +525,7 @@ function wp_default_scripts( &$scripts ) {
                        'published' => __('Published'),
                        'saveAlert' => __('The changes you made will be lost if you navigate away from this page.'),
                        'savingText' => __('Saving Draft&#8230;'),
+                       'permalinkSaved' => __( 'Permalink saved' ),
                ) );
 
                $scripts->add( 'press-this', "/wp-admin/js/press-this$suffix.js", array( 'jquery', 'tags-box' ), false, 1 );
@@ -548,9 +565,10 @@ function wp_default_scripts( &$scripts ) {
                        'comma' => trim( _x( ',', 'tag delimiter' ) ),
                ) );
 
-               $scripts->add( 'inline-edit-tax', "/wp-admin/js/inline-edit-tax$suffix.js", array( 'jquery' ), false, 1 );
+               $scripts->add( 'inline-edit-tax', "/wp-admin/js/inline-edit-tax$suffix.js", array( 'jquery', 'wp-a11y' ), false, 1 );
                did_action( 'init' ) && $scripts->localize( 'inline-edit-tax', 'inlineEditL10n', array(
-                       'error' => __('Error while saving the changes.')
+                       'error' => __( 'Error while saving the changes.' ),
+                       'saved' => __( 'Changes saved.' ),
                ) );
 
                $scripts->add( 'plugin-install', "/wp-admin/js/plugin-install$suffix.js", array( 'jquery', 'thickbox' ), false, 1 );
@@ -563,18 +581,19 @@ function wp_default_scripts( &$scripts ) {
                did_action( 'init' ) && $scripts->localize( 'updates', '_wpUpdatesSettings', array(
                        'ajax_nonce' => wp_create_nonce( 'updates' ),
                        'l10n'       => array(
-                               'updating'          => __( 'Updating...' ),
+                               'updating'          => __( 'Updating...' ), // no ellipsis
                                'updated'           => __( 'Updated!' ),
+                               'updateFailedShort' => __( 'Update Failed!' ),
                                /* translators: Error string for a failed update */
                                'updateFailed'      => __( 'Update Failed: %s' ),
                                /* translators: Plugin name and version */
-                               'updatingLabel'     => __( 'Updating %s...' ),
+                               'updatingLabel'     => __( 'Updating %s...' ), // no ellipsis
                                /* translators: Plugin name and version */
                                'updatedLabel'      => __( '%s updated!' ),
                                /* translators: Plugin name and version */
                                'updateFailedLabel' => __( '%s update failed' ),
                                /* translators: JavaScript accessible string */
-                               'updatingMsg'       => __( 'Updating... please wait.' ),
+                               'updatingMsg'       => __( 'Updating... please wait.' ), // no ellipsis
                                /* translators: JavaScript accessible string */
                                'updatedMsg'        => __( 'Update completed successfully.' ),
                                /* translators: JavaScript accessible string */
@@ -612,7 +631,7 @@ function wp_default_scripts( &$scripts ) {
                $scripts->add( 'set-post-thumbnail', "/wp-admin/js/set-post-thumbnail$suffix.js", array( 'jquery' ), false, 1 );
                did_action( 'init' ) && $scripts->localize( 'set-post-thumbnail', 'setPostThumbnailL10n', array(
                        'setThumbnail' => __( 'Use as featured image' ),
-                       'saving' => __( 'Saving...' ),
+                       'saving' => __( 'Saving...' ), // no ellipsis
                        'error' => __( 'Could not set that as the thumbnail image. Try a different attachment.' ),
                        'done' => __( 'Done' )
                ) );
@@ -713,17 +732,19 @@ function wp_default_styles( &$styles ) {
        $styles->add( 'open-sans', $open_sans_font_url );
 
        // Includes CSS
-       $styles->add( 'admin-bar',         "/wp-includes/css/admin-bar$suffix.css", array( 'open-sans', 'dashicons' ) );
-       $styles->add( 'wp-auth-check',     "/wp-includes/css/wp-auth-check$suffix.css", array( 'dashicons' ) );
-       $styles->add( 'editor-buttons',    "/wp-includes/css/editor$suffix.css", array( 'dashicons' ) );
-       $styles->add( 'media-views',       "/wp-includes/css/media-views$suffix.css", array( 'buttons', 'dashicons', 'wp-mediaelement' ) );
-       $styles->add( 'wp-pointer',        "/wp-includes/css/wp-pointer$suffix.css", array( 'dashicons' ) );
-       $styles->add( 'customize-preview', "/wp-includes/css/customize-preview$suffix.css" );
+       $styles->add( 'admin-bar',            "/wp-includes/css/admin-bar$suffix.css", array( 'open-sans', 'dashicons' ) );
+       $styles->add( 'wp-auth-check',        "/wp-includes/css/wp-auth-check$suffix.css", array( 'dashicons' ) );
+       $styles->add( 'editor-buttons',       "/wp-includes/css/editor$suffix.css", array( 'dashicons' ) );
+       $styles->add( 'media-views',          "/wp-includes/css/media-views$suffix.css", array( 'buttons', 'dashicons', 'wp-mediaelement' ) );
+       $styles->add( 'wp-pointer',           "/wp-includes/css/wp-pointer$suffix.css", array( 'dashicons' ) );
+       $styles->add( 'customize-preview',    "/wp-includes/css/customize-preview$suffix.css" );
+       $styles->add( 'wp-embed-template-ie', "/wp-includes/css/wp-embed-template-ie$suffix.css" );
+       $styles->add_data( 'wp-embed-template-ie', 'conditional', 'lte IE 8' );
 
        // External libraries and friends
        $styles->add( 'imgareaselect',       '/wp-includes/js/imgareaselect/imgareaselect.css', array(), '0.9.8' );
        $styles->add( 'wp-jquery-ui-dialog', "/wp-includes/css/jquery-ui-dialog$suffix.css", array( 'dashicons' ) );
-       $styles->add( 'mediaelement',        "/wp-includes/js/mediaelement/mediaelementplayer.min.css", array(), '2.17.0' );
+       $styles->add( 'mediaelement',        "/wp-includes/js/mediaelement/mediaelementplayer.min.css", array(), '2.18.1' );
        $styles->add( 'wp-mediaelement',     "/wp-includes/js/mediaelement/wp-mediaelement.css", array( 'mediaelement' ) );
        $styles->add( 'thickbox',            '/wp-includes/js/thickbox/thickbox.css', array( 'dashicons' ) );
 
@@ -816,7 +837,7 @@ function wp_just_in_time_script_localization() {
 function wp_style_loader_src( $src, $handle ) {
        global $_wp_admin_css_colors;
 
-       if ( defined('WP_INSTALLING') )
+       if ( wp_installing() )
                return preg_replace( '#^wp-admin/#', './', $src );
 
        if ( 'colors' == $handle ) {
index 86976a21ce34ced40d4cfa4e14617bf74693625d..22f33c32efe3f201304802b5186bdcc19def7b4e 100644 (file)
@@ -88,6 +88,20 @@ $shortcode_tags = array();
  */
 function add_shortcode($tag, $func) {
        global $shortcode_tags;
+
+       if ( '' == trim( $tag ) ) {
+               $message = __( 'Invalid shortcode name: Empty name given.' );
+               _doing_it_wrong( __FUNCTION__, $message, '4.4.0' );
+               return;
+       }
+
+       if ( 0 !== preg_match( '@[<>&/\[\]\x00-\x20]@', $tag ) ) {
+               /* translators: %s: shortcode name */
+               $message = sprintf( __( 'Invalid shortcode name: %s. Do not use spaces or reserved characters: & / < > [ ]' ), $tag );
+               _doing_it_wrong( __FUNCTION__, $message, '4.4.0' );
+               return;
+       }
+
        $shortcode_tags[ $tag ] = $func;
 }
 
@@ -155,7 +169,7 @@ function has_shortcode( $content, $tag ) {
        }
 
        if ( shortcode_exists( $tag ) ) {
-               preg_match_all( '/' . get_shortcode_regex() . '/s', $content, $matches, PREG_SET_ORDER );
+               preg_match_all( '/' . get_shortcode_regex() . '/', $content, $matches, PREG_SET_ORDER );
                if ( empty( $matches ) )
                        return false;
 
@@ -195,19 +209,18 @@ function do_shortcode( $content, $ignore_html = false ) {
        if (empty($shortcode_tags) || !is_array($shortcode_tags))
                return $content;
 
-       $tagnames = array_keys($shortcode_tags);
-       $tagregexp = join( '|', array_map('preg_quote', $tagnames) );
-       $pattern = "/\\[($tagregexp)/s";
+       // Find all registered tag names in $content.
+       preg_match_all( '@\[([^<>&/\[\]\x00-\x20]++)@', $content, $matches );
+       $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
 
-       if ( 1 !== preg_match( $pattern, $content ) ) {
-               // Avoids parsing HTML when there are no shortcodes or embeds anyway.
+       if ( empty( $tagnames ) ) {
                return $content;
        }
 
-       $content = do_shortcodes_in_html_tags( $content, $ignore_html );
+       $content = do_shortcodes_in_html_tags( $content, $ignore_html, $tagnames );
 
-       $pattern = get_shortcode_regex();
-       $content = preg_replace_callback( "/$pattern/s", 'do_shortcode_tag', $content );
+       $pattern = get_shortcode_regex( $tagnames );
+       $content = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $content );
 
        // Always restore square braces so we don't break things like <!--[if IE ]>
        $content = unescape_invalid_shortcodes( $content );
@@ -234,11 +247,15 @@ function do_shortcode( $content, $ignore_html = false ) {
  *
  * @global array $shortcode_tags
  *
+ * @param array $tagnames List of shortcodes to find. Optional. Defaults to all registered shortcodes.
  * @return string The shortcode search regular expression
  */
-function get_shortcode_regex() {
+function get_shortcode_regex( $tagnames = null ) {
        global $shortcode_tags;
-       $tagnames = array_keys($shortcode_tags);
+
+       if ( empty( $tagnames ) ) {
+               $tagnames = array_keys( $shortcode_tags );
+       }
        $tagregexp = join( '|', array_map('preg_quote', $tagnames) );
 
        // WARNING! Do not change this regex without changing do_shortcode_tag() and strip_shortcode_tag()
@@ -298,6 +315,7 @@ function do_shortcode_tag( $m ) {
        $attr = shortcode_parse_atts( $m[3] );
 
        if ( ! is_callable( $shortcode_tags[ $tag ] ) ) {
+               /* translators: %s: shortcode tag */
                $message = sprintf( __( 'Attempting to parse a shortcode without a valid callback: %s' ), $tag );
                _doing_it_wrong( __FUNCTION__, $message, '4.3.0' );
                return $m[0];
@@ -324,15 +342,16 @@ function do_shortcode_tag( $m ) {
  *
  * @param string $content Content to search for shortcodes
  * @param bool $ignore_html When true, all square braces inside elements will be encoded.
+ * @param array $tagnames List of shortcodes to find.
  * @return string Content with shortcodes filtered out.
  */
-function do_shortcodes_in_html_tags( $content, $ignore_html ) {
+function do_shortcodes_in_html_tags( $content, $ignore_html, $tagnames ) {
        // Normalize entities in unfiltered HTML before adding placeholders.
        $trans = array( '&#91;' => '&#091;', '&#93;' => '&#093;' );
        $content = strtr( $content, $trans );
        $trans = array( '[' => '&#91;', ']' => '&#93;' );
 
-       $pattern = get_shortcode_regex();
+       $pattern = get_shortcode_regex( $tagnames );
        $textarr = wp_html_split( $content );
 
        foreach ( $textarr as &$element ) {
@@ -361,7 +380,7 @@ function do_shortcodes_in_html_tags( $content, $ignore_html ) {
                if ( false === $attributes ) {
                        // Some plugins are doing things like [name] <[email]>.
                        if ( 1 === preg_match( '%^<\s*\[\[?[^\[\]]+\]%', $element ) ) {
-                               $element = preg_replace_callback( "/$pattern/s", 'do_shortcode_tag', $element );
+                               $element = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $element );
                        }
 
                        // Looks like we found some crazy unfiltered HTML.  Skipping it for sanity.
@@ -390,12 +409,12 @@ function do_shortcodes_in_html_tags( $content, $ignore_html ) {
                                // In this specific situation we assume KSES did not run because the input
                                // was written by an administrator, so we should avoid changing the output
                                // and we do not need to run KSES here.
-                               $attr = preg_replace_callback( "/$pattern/s", 'do_shortcode_tag', $attr );
+                               $attr = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $attr );
                        } else {
                                // $attr like 'name = "[shortcode]"' or "name = '[shortcode]'"
                                // We do not know if $content was unfiltered. Assume KSES ran before shortcodes.
                                $count = 0;
-                               $new_attr = preg_replace_callback( "/$pattern/s", 'do_shortcode_tag', $attr, -1, $count );
+                               $new_attr = preg_replace_callback( "/$pattern/", 'do_shortcode_tag', $attr, -1, $count );
                                if ( $count > 0 ) {
                                        // Sanitize the shortcode output using KSES.
                                        $new_attr = wp_kses_one_attr( $new_attr, $elname );
@@ -433,6 +452,17 @@ function unescape_invalid_shortcodes( $content ) {
         return $content;
 }
 
+/**
+ * Retrieve the shortcode attributes regex.
+ *
+ * @since 4.4.0
+ *
+ * @return string The shortcode attribute regular expression
+ */
+function get_shortcode_atts_regex() {
+       return '/([\w-]+)\s*=\s*"([^"]*)"(?:\s|$)|([\w-]+)\s*=\s*\'([^\']*)\'(?:\s|$)|([\w-]+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/';
+}
+
 /**
  * Retrieve all attributes from the shortcodes tag.
  *
@@ -443,11 +473,14 @@ function unescape_invalid_shortcodes( $content ) {
  * @since 2.5.0
  *
  * @param string $text
- * @return array List of attributes and their value.
+ * @return array|string List of attribute values.
+ *                      Returns empty array if trim( $text ) == '""'.
+ *                      Returns empty string if trim( $text ) == ''.
+ *                      All other matches are checked for not empty().
  */
 function shortcode_parse_atts($text) {
        $atts = array();
-       $pattern = '/([\w-]+)\s*=\s*"([^"]*)"(?:\s|$)|([\w-]+)\s*=\s*\'([^\']*)\'(?:\s|$)|([\w-]+)\s*=\s*([^\s\'"]+)(?:\s|$)|"([^"]*)"(?:\s|$)|(\S+)(?:\s|$)/';
+       $pattern = get_shortcode_atts_regex();
        $text = preg_replace("/[\x{00a0}\x{200b}]+/u", " ", $text);
        if ( preg_match_all($pattern, $text, $match, PREG_SET_ORDER) ) {
                foreach ($match as $m) {
@@ -497,7 +530,7 @@ function shortcode_parse_atts($text) {
 function shortcode_atts( $pairs, $atts, $shortcode = '' ) {
        $atts = (array)$atts;
        $out = array();
-       foreach($pairs as $name => $default) {
+       foreach ($pairs as $name => $default) {
                if ( array_key_exists($name, $atts) )
                        $out[$name] = $atts[$name];
                else
@@ -510,13 +543,16 @@ function shortcode_atts( $pairs, $atts, $shortcode = '' ) {
         * The third parameter, $shortcode, is the name of the shortcode.
         *
         * @since 3.6.0
+        * @since 4.4.0 Added the `$shortcode` parameter.
         *
-        * @param array $out   The output array of shortcode attributes.
-        * @param array $pairs The supported attributes and their defaults.
-        * @param array $atts  The user defined shortcode attributes.
+        * @param array  $out       The output array of shortcode attributes.
+        * @param array  $pairs     The supported attributes and their defaults.
+        * @param array  $atts      The user defined shortcode attributes.
+        * @param string $shortcode The shortcode name.
         */
-       if ( $shortcode )
-               $out = apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts );
+       if ( $shortcode ) {
+               $out = apply_filters( "shortcode_atts_{$shortcode}", $out, $pairs, $atts, $shortcode );
+       }
 
        return $out;
 }
@@ -541,10 +577,18 @@ function strip_shortcodes( $content ) {
        if (empty($shortcode_tags) || !is_array($shortcode_tags))
                return $content;
 
-       $content = do_shortcodes_in_html_tags( $content, true );
+       // Find all registered tag names in $content.
+       preg_match_all( '@\[([^<>&/\[\]\x00-\x20]++)@', $content, $matches );
+       $tagnames = array_intersect( array_keys( $shortcode_tags ), $matches[1] );
+
+       if ( empty( $tagnames ) ) {
+               return $content;
+       }
+
+       $content = do_shortcodes_in_html_tags( $content, true, $tagnames );
 
-       $pattern = get_shortcode_regex();
-       $content = preg_replace_callback( "/$pattern/s", 'strip_shortcode_tag', $content );
+       $pattern = get_shortcode_regex( $tagnames );
+       $content = preg_replace_callback( "/$pattern/", 'strip_shortcode_tag', $content );
 
        // Always restore square braces so we don't break things like <!--[if IE ]>
        $content = unescape_invalid_shortcodes( $content );
index 4328a366707338df6759ca701085773158ded9e7..f361c3be49b25bb3b52cf7811360e9d133d8bcc1 100644 (file)
@@ -1,8 +1,6 @@
 <?php
 /**
- * Taxonomy API
- *
- * @since 2.3.0
+ * Core Taxonomy API
  *
  * @package WordPress
  * @subpackage Taxonomy
@@ -114,7 +112,7 @@ function create_initial_taxonomies() {
                'query_var' => false,
                'rewrite' => false,
                'public' => false,
-               'show_ui' => false,
+               'show_ui' => true,
                '_builtin' => true,
        ) );
 
@@ -261,75 +259,84 @@ function is_taxonomy_hierarchical($taxonomy) {
 }
 
 /**
- * Create or modify a taxonomy object. Do not use before init.
+ * Creates or modifies a taxonomy object.
+ *
+ * Note: Do not use before the {@see 'init'} hook.
  *
  * A simple function for creating or modifying a taxonomy object based on the
  * parameters given. The function will accept an array (third optional
  * parameter), along with strings for the taxonomy name and another string for
  * the object type.
  *
- * Nothing is returned, so expect error maybe or use taxonomy_exists() to check
- * whether taxonomy exists.
- *
- * Optional $args contents:
- *
- * - label - Name of the taxonomy shown in the menu. Usually plural. If not set, labels['name'] will be used.
- * - labels - An array of labels for this taxonomy.
- *     * By default tag labels are used for non-hierarchical types and category labels for hierarchical ones.
- *     * You can see accepted values in {@link get_taxonomy_labels()}.
- * - description - A short descriptive summary of what the taxonomy is for. Defaults to blank.
- * - public - If the taxonomy should be publicly queryable; //@TODO not implemented.
- *     * Defaults to true.
- * - hierarchical - Whether the taxonomy is hierarchical (e.g. category). Defaults to false.
- * - show_ui - Whether to generate a default UI for managing this taxonomy in the admin.
- *     * If not set, the default is inherited from public.
- * - show_in_menu - Whether to show the taxonomy in the admin menu.
- *     * If true, the taxonomy is shown as a submenu of the object type menu.
- *     * If false, no menu is shown.
- *     * show_ui must be true.
- *     * If not set, the default is inherited from show_ui.
- * - show_in_nav_menus - Makes this taxonomy available for selection in navigation menus.
- *     * If not set, the default is inherited from public.
- * - show_tagcloud - Whether to list the taxonomy in the Tag Cloud Widget.
- *     * If not set, the default is inherited from show_ui.
- * - show_in_quick_edit - Whether to show the taxonomy in the quick/bulk edit panel.
- *     * It not set, the default is inherited from show_ui.
- * - show_admin_column - Whether to display a column for the taxonomy on its post type listing screens.
- *     * Defaults to false.
- * - meta_box_cb - Provide a callback function for the meta box display.
- *     * If not set, defaults to post_categories_meta_box for hierarchical taxonomies
- *     and post_tags_meta_box for non-hierarchical.
- *     * If false, no meta box is shown.
- * - capabilities - Array of capabilities for this taxonomy.
- *     * You can see accepted values in this function.
- * - rewrite - Triggers the handling of rewrites for this taxonomy. Defaults to true, using $taxonomy as slug.
- *     * To prevent rewrite, set to false.
- *     * To specify rewrite rules, an array can be passed with any of these keys
- *         * 'slug' => string Customize the permastruct slug. Defaults to $taxonomy key
- *         * 'with_front' => bool Should the permastruct be prepended with WP_Rewrite::$front. Defaults to true.
- *         * 'hierarchical' => bool Either hierarchical rewrite tag or not. Defaults to false.
- *         * 'ep_mask' => const Assign an endpoint mask.
- *             * If not specified, defaults to EP_NONE.
- * - query_var - Sets the query_var key for this taxonomy. Defaults to $taxonomy key
- *     * If false, a taxonomy cannot be loaded at ?{query_var}={term_slug}
- *     * If specified as a string, the query ?{query_var_string}={term_slug} will be valid.
- * - update_count_callback - Works much like a hook, in that it will be called when the count is updated.
- *     * Defaults to _update_post_term_count() for taxonomies attached to post types, which then confirms
- *       that the objects are published before counting them.
- *     * Defaults to _update_generic_term_count() for taxonomies attached to other object types, such as links.
- * - _builtin - true if this taxonomy is a native or "built-in" taxonomy. THIS IS FOR INTERNAL USE ONLY!
- *
- * @todo Document $args as a hash notation.
- *
  * @since 2.3.0
  * @since 4.2.0 Introduced `show_in_quick_edit` argument.
+ * @since 4.4.0 The `show_ui` argument is now enforced on the term editing screen.
+ * @since 4.4.0 The `public` argument now controls whether the taxonomy can be queried on the front-end.
  *
  * @global array $wp_taxonomies Registered taxonomies.
  * @global WP    $wp            WP instance.
  *
  * @param string       $taxonomy    Taxonomy key, must not exceed 32 characters.
  * @param array|string $object_type Name of the object type for the taxonomy object.
- * @param array|string $args        See optional args description above.
+ * @param array|string $args        {
+ *     Optional. Array or query string of arguments for registering a taxonomy.
+ *
+ *     @type string        $label                 Name of the taxonomy shown in the menu. Usually plural. If not set,
+ *                                                `$labels['name']` will be used.
+ *     @type array         $labels                An array of labels for this taxonomy. By default, Tag labels are used for
+ *                                                non-hierarchical taxonmies, and Category labels are used for hierarchical
+ *                                                taxonomies. See accepted values in get_taxonomy_labels().
+ *                                                Default empty array.
+ *     @type string        $description           A short descriptive summary of what the taxonomy is for. Default empty.
+ *     @type bool          $public                Whether the taxonomy is publicly queryable. Default true.
+ *     @type bool          $hierarchical          Whether the taxonomy is hierarchical. Default false.
+ *     @type bool          $show_ui               Whether to generate and allow a UI for managing terms in this taxonomy in
+ *                                                the admin. If not set, the default is inherited from `$public`
+ *                                                (default true).
+ *     @type bool          $show_in_menu          Whether to show the taxonomy in the admin menu. If true, the taxonomy is
+ *                                                shown as a submenu of the object type menu. If false, no menu is shown.
+ *                                                `$show_ui` must be true. If not set, default is inherited from `$show_ui`
+ *                                                (default true).
+ *     @type bool          $show_in_nav_menus     Makes this taxonomy available for selection in navigation menus. If not
+ *                                                set, the default is inherited from `$public` (default true).
+ *     @type bool          $show_tagcloud         Whether to list the taxonomy in the Tag Cloud Widget controls. If not set,
+ *                                                the default is inherited from `$show_ui` (default true).
+ *     @type bool          $show_in_quick_edit    Whether to show the taxonomy in the quick/bulk edit panel. It not set,
+ *                                                the default is inherited from `$show_ui` (default true).
+ *     @type bool          $show_admin_column     Whether to display a column for the taxonomy on its post type listing
+ *                                                screens. Default false.
+ *     @type bool|callable $meta_box_cb           Provide a callback function for the meta box display. If not set,
+ *                                                post_categories_meta_box() is used for hierarchical taxonomies, and
+ *                                                post_tags_meta_box() is used for non-hierarchical. If false, no meta
+ *                                                box is shown.
+ *     @type array         $capabilities {
+ *         Array of capabilities for this taxonomy.
+ *
+ *         @type string $manage_terms Default 'manage_categories'.
+ *         @type string $edit_terms   Default 'manage_categories'.
+ *         @type string $delete_terms Default 'manage_categories'.
+ *         @type string $assign_terms Default 'edit_posts'.
+ *     }
+ *     @type bool|array    $rewrite {
+ *         Triggers the handling of rewrites for this taxonomy. Default true, using $taxonomy as slug. To prevent
+ *         rewrite, set to false. To specify rewrite rules, an array can be passed with any of these keys:
+ *
+ *         @type string $slug         Customize the permastruct slug. Default `$taxonomy` key.
+ *         @type bool   $with_front   Should the permastruct be prepended with WP_Rewrite::$front. Default true.
+ *         @type bool   $hierarchical Either hierarchical rewrite tag or not. Default false.
+ *         @type int    $ep_mask      Assign an endpoint mask. Default `EP_NONE`.
+ *     }
+ *     @type string        $query_var             Sets the query var key for this taxonomy. Default `$taxonomy` key. If
+ *                                                false, a taxonomy cannot be loaded at `?{query_var}={term_slug}`. If a
+ *                                                string, the query `?{query_var}={term_slug}` will be valid.
+ *     @type callable      $update_count_callback Works much like a hook, in that it will be called when the count is
+ *                                                updated. Default _update_post_term_count() for taxonomies attached
+ *                                                to post types, which confirms that the objects are published before
+ *                                                counting them. Default _update_generic_term_count() for taxonomies
+ *                                                attached to other object types, such as users.
+ *     @type bool          $_builtin              This taxonomy is a "built-in" taxonomy. INTERNAL USE ONLY!
+ *                                                Default false.
+ * }
  * @return WP_Error|void WP_Error, if errors.
  */
 function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
@@ -338,6 +345,19 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
        if ( ! is_array( $wp_taxonomies ) )
                $wp_taxonomies = array();
 
+       $args = wp_parse_args( $args );
+
+       /**
+        * Filter the arguments for registering a taxonomy.
+        *
+        * @since 4.4.0
+        *
+        * @param array  $args        Array of arguments for registering a taxonomy.
+        * @param array  $object_type Array of names of object types for the taxonomy.
+        * @param string $taxonomy    Taxonomy key.
+        */
+       $args = apply_filters( 'register_taxonomy_args', $args, $taxonomy, (array) $object_type );
+
        $defaults = array(
                'labels'                => array(),
                'description'           => '',
@@ -356,14 +376,15 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
                'update_count_callback' => '',
                '_builtin'              => false,
        );
-       $args = wp_parse_args( $args, $defaults );
+       $args = array_merge( $defaults, $args );
 
        if ( empty( $taxonomy ) || strlen( $taxonomy ) > 32 ) {
                _doing_it_wrong( __FUNCTION__, __( 'Taxonomy names must be between 1 and 32 characters in length.' ), '4.2' );
                return new WP_Error( 'taxonomy_length_invalid', __( 'Taxonomy names must be between 1 and 32 characters in length.' ) );
        }
 
-       if ( false !== $args['query_var'] && ! empty( $wp ) ) {
+       // Non-public taxonomies should not register query vars, except in the admin.
+       if ( false !== $args['query_var'] && ( is_admin() || false !== $args['public'] ) && ! empty( $wp ) ) {
                if ( true === $args['query_var'] )
                        $args['query_var'] = $taxonomy;
                else
@@ -473,6 +494,8 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
  * - choose_from_most_used - This string isn't used on hierarchical taxonomies. Default is "Choose from the most used tags", used in the meta box.
  * - not_found - Default is "No tags found"/"No categories found", used in the meta box and taxonomy list table.
  * - no_terms - Default is "No tags"/"No categories", used in the posts and media list tables.
+ * - items_list_navigation - String for the table pagination hidden heading.
+ * - items_list - String for the table hidden heading.
  *
  * Above, the first default value is for non-hierarchical taxonomies (like tags) and the second one is for hierarchical taxonomies (like categories).
  *
@@ -480,6 +503,7 @@ function register_taxonomy( $taxonomy, $object_type, $args = array() ) {
  *
  * @since 3.0.0
  * @since 4.3.0 Added the `no_terms` label.
+ * @since 4.4.0 Added the `items_list_navigation` and `items_list` labels.
  *
  * @param object $tax Taxonomy object.
  * @return object object with all the labels as member variables.
@@ -511,10 +535,34 @@ function get_taxonomy_labels( $tax ) {
                'choose_from_most_used' => array( __( 'Choose from the most used tags' ), null ),
                'not_found' => array( __( 'No tags found.' ), __( 'No categories found.' ) ),
                'no_terms' => array( __( 'No tags' ), __( 'No categories' ) ),
+               'items_list_navigation' => array( __( 'Tags list navigation' ), __( 'Categories list navigation' ) ),
+               'items_list' => array( __( 'Tags list' ), __( 'Categories list' ) ),
        );
        $nohier_vs_hier_defaults['menu_name'] = $nohier_vs_hier_defaults['name'];
 
-       return _get_custom_object_labels( $tax, $nohier_vs_hier_defaults );
+       $labels = _get_custom_object_labels( $tax, $nohier_vs_hier_defaults );
+
+       $taxonomy = $tax->name;
+
+       $default_labels = clone $labels;
+
+       /**
+        * Filter the labels of a specific taxonomy.
+        *
+        * The dynamic portion of the hook name, `$taxonomy`, refers to the taxonomy slug.
+        *
+        * @since 4.4.0
+        *
+        * @see get_taxonomy_labels() for the full list of taxonomy labels.
+        *
+        * @param object $labels Object with labels for the taxonomy as member variables.
+        */
+       $labels = apply_filters( "taxonomy_labels_{$taxonomy}", $labels );
+
+       // Ensure that the filtered labels contain all required default values.
+       $labels = (object) array_merge( (array) $default_labels, (array) $labels );
+
+       return $labels;
 }
 
 /**
@@ -653,660 +701,6 @@ function get_tax_sql( $tax_query, $primary_table, $primary_id_column ) {
        return $tax_query_obj->get_sql( $primary_table, $primary_id_column );
 }
 
-/**
- * Class for generating SQL clauses that filter a primary query according to object taxonomy terms.
- *
- * `WP_Tax_Query` is a helper that allows primary query classes, such as WP_Query, to filter
- * their results by object metadata, by generating `JOIN` and `WHERE` subclauses to be attached
- * to the primary SQL query string.
- *
- * @since 3.1.0
- */
-class WP_Tax_Query {
-
-       /**
-        * Array of taxonomy queries.
-        *
-        * See {@see WP_Tax_Query::__construct()} for information on tax query arguments.
-        *
-        * @since 3.1.0
-        * @access public
-        * @var array
-        */
-       public $queries = array();
-
-       /**
-        * The relation between the queries. Can be one of 'AND' or 'OR'.
-        *
-        * @since 3.1.0
-        * @access public
-        * @var string
-        */
-       public $relation;
-
-       /**
-        * Standard response when the query should not return any rows.
-        *
-        * @since 3.2.0
-        *
-        * @static
-        * @access private
-        * @var string
-        */
-       private static $no_results = array( 'join' => array( '' ), 'where' => array( '0 = 1' ) );
-
-       /**
-        * A flat list of table aliases used in the JOIN clauses.
-        *
-        * @since 4.1.0
-        * @access protected
-        * @var array
-        */
-       protected $table_aliases = array();
-
-       /**
-        * Terms and taxonomies fetched by this query.
-        *
-        * We store this data in a flat array because they are referenced in a
-        * number of places by WP_Query.
-        *
-        * @since 4.1.0
-        * @access public
-        * @var array
-        */
-       public $queried_terms = array();
-
-       /**
-        * Database table that where the metadata's objects are stored (eg $wpdb->users).
-        *
-        * @since 4.1.0
-        * @access public
-        * @var string
-        */
-       public $primary_table;
-
-       /**
-        * Column in 'primary_table' that represents the ID of the object.
-        *
-        * @since 4.1.0
-        * @access public
-        * @var string
-        */
-       public $primary_id_column;
-
-       /**
-        * Constructor.
-        *
-        * @since 3.1.0
-        * @since 4.1.0 Added support for `$operator` 'NOT EXISTS' and 'EXISTS' values.
-        * @access public
-        *
-        * @param array $tax_query {
-        *     Array of taxonomy query clauses.
-        *
-        *     @type string $relation Optional. The MySQL keyword used to join
-        *                            the clauses of the query. Accepts 'AND', or 'OR'. Default 'AND'.
-        *     @type array {
-        *         Optional. An array of first-order clause parameters, or another fully-formed tax query.
-        *
-        *         @type string           $taxonomy         Taxonomy being queried. Optional when field=term_taxonomy_id.
-        *         @type string|int|array $terms            Term or terms to filter by.
-        *         @type string           $field            Field to match $terms against. Accepts 'term_id', 'slug',
-        *                                                 'name', or 'term_taxonomy_id'. Default: 'term_id'.
-        *         @type string           $operator         MySQL operator to be used with $terms in the WHERE clause.
-        *                                                  Accepts 'AND', 'IN', 'NOT IN', 'EXISTS', 'NOT EXISTS'.
-        *                                                  Default: 'IN'.
-        *         @type bool             $include_children Optional. Whether to include child terms.
-        *                                                  Requires a $taxonomy. Default: true.
-        *     }
-        * }
-        */
-       public function __construct( $tax_query ) {
-               if ( isset( $tax_query['relation'] ) ) {
-                       $this->relation = $this->sanitize_relation( $tax_query['relation'] );
-               } else {
-                       $this->relation = 'AND';
-               }
-
-               $this->queries = $this->sanitize_query( $tax_query );
-       }
-
-       /**
-        * Ensure the 'tax_query' argument passed to the class constructor is well-formed.
-        *
-        * Ensures that each query-level clause has a 'relation' key, and that
-        * each first-order clause contains all the necessary keys from `$defaults`.
-        *
-        * @since 4.1.0
-        * @access public
-        *
-        * @param array $queries Array of queries clauses.
-        * @return array Sanitized array of query clauses.
-        */
-       public function sanitize_query( $queries ) {
-               $cleaned_query = array();
-
-               $defaults = array(
-                       'taxonomy' => '',
-                       'terms' => array(),
-                       'field' => 'term_id',
-                       'operator' => 'IN',
-                       'include_children' => true,
-               );
-
-               foreach ( $queries as $key => $query ) {
-                       if ( 'relation' === $key ) {
-                               $cleaned_query['relation'] = $this->sanitize_relation( $query );
-
-                       // First-order clause.
-                       } elseif ( self::is_first_order_clause( $query ) ) {
-
-                               $cleaned_clause = array_merge( $defaults, $query );
-                               $cleaned_clause['terms'] = (array) $cleaned_clause['terms'];
-                               $cleaned_query[] = $cleaned_clause;
-
-                               /*
-                                * Keep a copy of the clause in the flate
-                                * $queried_terms array, for use in WP_Query.
-                                */
-                               if ( ! empty( $cleaned_clause['taxonomy'] ) && 'NOT IN' !== $cleaned_clause['operator'] ) {
-                                       $taxonomy = $cleaned_clause['taxonomy'];
-                                       if ( ! isset( $this->queried_terms[ $taxonomy ] ) ) {
-                                               $this->queried_terms[ $taxonomy ] = array();
-                                       }
-
-                                       /*
-                                        * Backward compatibility: Only store the first
-                                        * 'terms' and 'field' found for a given taxonomy.
-                                        */
-                                       if ( ! empty( $cleaned_clause['terms'] ) && ! isset( $this->queried_terms[ $taxonomy ]['terms'] ) ) {
-                                               $this->queried_terms[ $taxonomy ]['terms'] = $cleaned_clause['terms'];
-                                       }
-
-                                       if ( ! empty( $cleaned_clause['field'] ) && ! isset( $this->queried_terms[ $taxonomy ]['field'] ) ) {
-                                               $this->queried_terms[ $taxonomy ]['field'] = $cleaned_clause['field'];
-                                       }
-                               }
-
-                       // Otherwise, it's a nested query, so we recurse.
-                       } elseif ( is_array( $query ) ) {
-                               $cleaned_subquery = $this->sanitize_query( $query );
-
-                               if ( ! empty( $cleaned_subquery ) ) {
-                                       // All queries with children must have a relation.
-                                       if ( ! isset( $cleaned_subquery['relation'] ) ) {
-                                               $cleaned_subquery['relation'] = 'AND';
-                                       }
-
-                                       $cleaned_query[] = $cleaned_subquery;
-                               }
-                       }
-               }
-
-               return $cleaned_query;
-       }
-
-       /**
-        * Sanitize a 'relation' operator.
-        *
-        * @since 4.1.0
-        * @access public
-        *
-        * @param string $relation Raw relation key from the query argument.
-        * @return string Sanitized relation ('AND' or 'OR').
-        */
-       public function sanitize_relation( $relation ) {
-               if ( 'OR' === strtoupper( $relation ) ) {
-                       return 'OR';
-               } else {
-                       return 'AND';
-               }
-       }
-
-       /**
-        * Determine whether a clause is first-order.
-        *
-        * A "first-order" clause is one that contains any of the first-order
-        * clause keys ('terms', 'taxonomy', 'include_children', 'field',
-        * 'operator'). An empty clause also counts as a first-order clause,
-        * for backward compatibility. Any clause that doesn't meet this is
-        * determined, by process of elimination, to be a higher-order query.
-        *
-        * @since 4.1.0
-        *
-        * @static
-        * @access protected
-        *
-        * @param array $query Tax query arguments.
-        * @return bool Whether the query clause is a first-order clause.
-        */
-       protected static function is_first_order_clause( $query ) {
-               return is_array( $query ) && ( empty( $query ) || array_key_exists( 'terms', $query ) || array_key_exists( 'taxonomy', $query ) || array_key_exists( 'include_children', $query ) || array_key_exists( 'field', $query ) || array_key_exists( 'operator', $query ) );
-       }
-
-       /**
-        * Generates SQL clauses to be appended to a main query.
-        *
-        * @since 3.1.0
-        *
-        * @static
-        * @access public
-        *
-        * @param string $primary_table     Database table where the object being filtered is stored (eg wp_users).
-        * @param string $primary_id_column ID column for the filtered object in $primary_table.
-        * @return array {
-        *     Array containing JOIN and WHERE SQL clauses to append to the main query.
-        *
-        *     @type string $join  SQL fragment to append to the main JOIN clause.
-        *     @type string $where SQL fragment to append to the main WHERE clause.
-        * }
-        */
-       public function get_sql( $primary_table, $primary_id_column ) {
-               $this->primary_table = $primary_table;
-               $this->primary_id_column = $primary_id_column;
-
-               return $this->get_sql_clauses();
-       }
-
-       /**
-        * Generate SQL clauses to be appended to a main query.
-        *
-        * Called by the public WP_Tax_Query::get_sql(), this method
-        * is abstracted out to maintain parity with the other Query classes.
-        *
-        * @since 4.1.0
-        * @access protected
-        *
-        * @return array {
-        *     Array containing JOIN and WHERE SQL clauses to append to the main query.
-        *
-        *     @type string $join  SQL fragment to append to the main JOIN clause.
-        *     @type string $where SQL fragment to append to the main WHERE clause.
-        * }
-        */
-       protected function get_sql_clauses() {
-               /*
-                * $queries are passed by reference to get_sql_for_query() for recursion.
-                * To keep $this->queries unaltered, pass a copy.
-                */
-               $queries = $this->queries;
-               $sql = $this->get_sql_for_query( $queries );
-
-               if ( ! empty( $sql['where'] ) ) {
-                       $sql['where'] = ' AND ' . $sql['where'];
-               }
-
-               return $sql;
-       }
-
-       /**
-        * Generate SQL clauses for a single query array.
-        *
-        * If nested subqueries are found, this method recurses the tree to
-        * produce the properly nested SQL.
-        *
-        * @since 4.1.0
-        * @access protected
-        *
-        * @param array $query Query to parse, passed by reference.
-        * @param int   $depth Optional. Number of tree levels deep we currently are.
-        *                     Used to calculate indentation. Default 0.
-        * @return array {
-        *     Array containing JOIN and WHERE SQL clauses to append to a single query array.
-        *
-        *     @type string $join  SQL fragment to append to the main JOIN clause.
-        *     @type string $where SQL fragment to append to the main WHERE clause.
-        * }
-        */
-       protected function get_sql_for_query( &$query, $depth = 0 ) {
-               $sql_chunks = array(
-                       'join'  => array(),
-                       'where' => array(),
-               );
-
-               $sql = array(
-                       'join'  => '',
-                       'where' => '',
-               );
-
-               $indent = '';
-               for ( $i = 0; $i < $depth; $i++ ) {
-                       $indent .= "  ";
-               }
-
-               foreach ( $query as $key => &$clause ) {
-                       if ( 'relation' === $key ) {
-                               $relation = $query['relation'];
-                       } elseif ( is_array( $clause ) ) {
-
-                               // This is a first-order clause.
-                               if ( $this->is_first_order_clause( $clause ) ) {
-                                       $clause_sql = $this->get_sql_for_clause( $clause, $query );
-
-                                       $where_count = count( $clause_sql['where'] );
-                                       if ( ! $where_count ) {
-                                               $sql_chunks['where'][] = '';
-                                       } elseif ( 1 === $where_count ) {
-                                               $sql_chunks['where'][] = $clause_sql['where'][0];
-                                       } else {
-                                               $sql_chunks['where'][] = '( ' . implode( ' AND ', $clause_sql['where'] ) . ' )';
-                                       }
-
-                                       $sql_chunks['join'] = array_merge( $sql_chunks['join'], $clause_sql['join'] );
-                               // This is a subquery, so we recurse.
-                               } else {
-                                       $clause_sql = $this->get_sql_for_query( $clause, $depth + 1 );
-
-                                       $sql_chunks['where'][] = $clause_sql['where'];
-                                       $sql_chunks['join'][]  = $clause_sql['join'];
-                               }
-                       }
-               }
-
-               // Filter to remove empties.
-               $sql_chunks['join']  = array_filter( $sql_chunks['join'] );
-               $sql_chunks['where'] = array_filter( $sql_chunks['where'] );
-
-               if ( empty( $relation ) ) {
-                       $relation = 'AND';
-               }
-
-               // Filter duplicate JOIN clauses and combine into a single string.
-               if ( ! empty( $sql_chunks['join'] ) ) {
-                       $sql['join'] = implode( ' ', array_unique( $sql_chunks['join'] ) );
-               }
-
-               // Generate a single WHERE clause with proper brackets and indentation.
-               if ( ! empty( $sql_chunks['where'] ) ) {
-                       $sql['where'] = '( ' . "\n  " . $indent . implode( ' ' . "\n  " . $indent . $relation . ' ' . "\n  " . $indent, $sql_chunks['where'] ) . "\n" . $indent . ')';
-               }
-
-               return $sql;
-       }
-
-       /**
-        * Generate SQL JOIN and WHERE clauses for a "first-order" query clause.
-        *
-        * @since 4.1.0
-        * @access public
-        *
-        * @global wpdb $wpdb The WordPress database abstraction object.
-        *
-        * @param array $clause       Query clause, passed by reference.
-        * @param array $parent_query Parent query array.
-        * @return array {
-        *     Array containing JOIN and WHERE SQL clauses to append to a first-order query.
-        *
-        *     @type string $join  SQL fragment to append to the main JOIN clause.
-        *     @type string $where SQL fragment to append to the main WHERE clause.
-        * }
-        */
-       public function get_sql_for_clause( &$clause, $parent_query ) {
-               global $wpdb;
-
-               $sql = array(
-                       'where' => array(),
-                       'join'  => array(),
-               );
-
-               $join = $where = '';
-
-               $this->clean_query( $clause );
-
-               if ( is_wp_error( $clause ) ) {
-                       return self::$no_results;
-               }
-
-               $terms = $clause['terms'];
-               $operator = strtoupper( $clause['operator'] );
-
-               if ( 'IN' == $operator ) {
-
-                       if ( empty( $terms ) ) {
-                               return self::$no_results;
-                       }
-
-                       $terms = implode( ',', $terms );
-
-                       /*
-                        * Before creating another table join, see if this clause has a
-                        * sibling with an existing join that can be shared.
-                        */
-                       $alias = $this->find_compatible_table_alias( $clause, $parent_query );
-                       if ( false === $alias ) {
-                               $i = count( $this->table_aliases );
-                               $alias = $i ? 'tt' . $i : $wpdb->term_relationships;
-
-                               // Store the alias as part of a flat array to build future iterators.
-                               $this->table_aliases[] = $alias;
-
-                               // Store the alias with this clause, so later siblings can use it.
-                               $clause['alias'] = $alias;
-
-                               $join .= " INNER JOIN $wpdb->term_relationships";
-                               $join .= $i ? " AS $alias" : '';
-                               $join .= " ON ($this->primary_table.$this->primary_id_column = $alias.object_id)";
-                       }
-
-
-                       $where = "$alias.term_taxonomy_id $operator ($terms)";
-
-               } elseif ( 'NOT IN' == $operator ) {
-
-                       if ( empty( $terms ) ) {
-                               return $sql;
-                       }
-
-                       $terms = implode( ',', $terms );
-
-                       $where = "$this->primary_table.$this->primary_id_column NOT IN (
-                               SELECT object_id
-                               FROM $wpdb->term_relationships
-                               WHERE term_taxonomy_id IN ($terms)
-                       )";
-
-               } elseif ( 'AND' == $operator ) {
-
-                       if ( empty( $terms ) ) {
-                               return $sql;
-                       }
-
-                       $num_terms = count( $terms );
-
-                       $terms = implode( ',', $terms );
-
-                       $where = "(
-                               SELECT COUNT(1)
-                               FROM $wpdb->term_relationships
-                               WHERE term_taxonomy_id IN ($terms)
-                               AND object_id = $this->primary_table.$this->primary_id_column
-                       ) = $num_terms";
-
-               } elseif ( 'NOT EXISTS' === $operator || 'EXISTS' === $operator ) {
-
-                       $where = $wpdb->prepare( "$operator (
-                               SELECT 1
-                               FROM $wpdb->term_relationships
-                               INNER JOIN $wpdb->term_taxonomy
-                               ON $wpdb->term_taxonomy.term_taxonomy_id = $wpdb->term_relationships.term_taxonomy_id
-                               WHERE $wpdb->term_taxonomy.taxonomy = %s
-                               AND $wpdb->term_relationships.object_id = $this->primary_table.$this->primary_id_column
-                       )", $clause['taxonomy'] );
-
-               }
-
-               $sql['join'][]  = $join;
-               $sql['where'][] = $where;
-               return $sql;
-       }
-
-       /**
-        * Identify an existing table alias that is compatible with the current query clause.
-        *
-        * We avoid unnecessary table joins by allowing each clause to look for
-        * an existing table alias that is compatible with the query that it
-        * needs to perform.
-        *
-        * An existing alias is compatible if (a) it is a sibling of `$clause`
-        * (ie, it's under the scope of the same relation), and (b) the combination
-        * of operator and relation between the clauses allows for a shared table
-        * join. In the case of WP_Tax_Query, this only applies to 'IN'
-        * clauses that are connected by the relation 'OR'.
-        *
-        * @since 4.1.0
-        * @access protected
-        *
-        * @param array       $clause       Query clause.
-        * @param array       $parent_query Parent query of $clause.
-        * @return string|false Table alias if found, otherwise false.
-        */
-       protected function find_compatible_table_alias( $clause, $parent_query ) {
-               $alias = false;
-
-               // Sanity check. Only IN queries use the JOIN syntax .
-               if ( ! isset( $clause['operator'] ) || 'IN' !== $clause['operator'] ) {
-                       return $alias;
-               }
-
-               // Since we're only checking IN queries, we're only concerned with OR relations.
-               if ( ! isset( $parent_query['relation'] ) || 'OR' !== $parent_query['relation'] ) {
-                       return $alias;
-               }
-
-               $compatible_operators = array( 'IN' );
-
-               foreach ( $parent_query as $sibling ) {
-                       if ( ! is_array( $sibling ) || ! $this->is_first_order_clause( $sibling ) ) {
-                               continue;
-                       }
-
-                       if ( empty( $sibling['alias'] ) || empty( $sibling['operator'] ) ) {
-                               continue;
-                       }
-
-                       // The sibling must both have compatible operator to share its alias.
-                       if ( in_array( strtoupper( $sibling['operator'] ), $compatible_operators ) ) {
-                               $alias = $sibling['alias'];
-                               break;
-                       }
-               }
-
-               return $alias;
-       }
-
-       /**
-        * Validates a single query.
-        *
-        * @since 3.2.0
-        * @access private
-        *
-        * @param array &$query The single query.
-        */
-       private function clean_query( &$query ) {
-               if ( empty( $query['taxonomy'] ) ) {
-                       if ( 'term_taxonomy_id' !== $query['field'] ) {
-                               $query = new WP_Error( 'Invalid taxonomy' );
-                               return;
-                       }
-
-                       // so long as there are shared terms, include_children requires that a taxonomy is set
-                       $query['include_children'] = false;
-               } elseif ( ! taxonomy_exists( $query['taxonomy'] ) ) {
-                       $query = new WP_Error( 'Invalid taxonomy' );
-                       return;
-               }
-
-               $query['terms'] = array_unique( (array) $query['terms'] );
-
-               if ( is_taxonomy_hierarchical( $query['taxonomy'] ) && $query['include_children'] ) {
-                       $this->transform_query( $query, 'term_id' );
-
-                       if ( is_wp_error( $query ) )
-                               return;
-
-                       $children = array();
-                       foreach ( $query['terms'] as $term ) {
-                               $children = array_merge( $children, get_term_children( $term, $query['taxonomy'] ) );
-                               $children[] = $term;
-                       }
-                       $query['terms'] = $children;
-               }
-
-               $this->transform_query( $query, 'term_taxonomy_id' );
-       }
-
-       /**
-        * Transforms a single query, from one field to another.
-        *
-        * @since 3.2.0
-        *
-        * @global wpdb $wpdb The WordPress database abstraction object.
-        *
-        * @param array  &$query          The single query.
-        * @param string $resulting_field The resulting field. Accepts 'slug', 'name', 'term_taxonomy_id',
-        *                                or 'term_id'. Default 'term_id'.
-        */
-       public function transform_query( &$query, $resulting_field ) {
-               global $wpdb;
-
-               if ( empty( $query['terms'] ) )
-                       return;
-
-               if ( $query['field'] == $resulting_field )
-                       return;
-
-               $resulting_field = sanitize_key( $resulting_field );
-
-               switch ( $query['field'] ) {
-                       case 'slug':
-                       case 'name':
-                               foreach ( $query['terms'] as &$term ) {
-                                       /*
-                                        * 0 is the $term_id parameter. We don't have a term ID yet, but it doesn't
-                                        * matter because `sanitize_term_field()` ignores the $term_id param when the
-                                        * context is 'db'.
-                                        */
-                                       $term = "'" . esc_sql( sanitize_term_field( $query['field'], $term, 0, $query['taxonomy'], 'db' ) ) . "'";
-                               }
-
-                               $terms = implode( ",", $query['terms'] );
-
-                               $terms = $wpdb->get_col( "
-                                       SELECT $wpdb->term_taxonomy.$resulting_field
-                                       FROM $wpdb->term_taxonomy
-                                       INNER JOIN $wpdb->terms USING (term_id)
-                                       WHERE taxonomy = '{$query['taxonomy']}'
-                                       AND $wpdb->terms.{$query['field']} IN ($terms)
-                               " );
-                               break;
-                       case 'term_taxonomy_id':
-                               $terms = implode( ',', array_map( 'intval', $query['terms'] ) );
-                               $terms = $wpdb->get_col( "
-                                       SELECT $resulting_field
-                                       FROM $wpdb->term_taxonomy
-                                       WHERE term_taxonomy_id IN ($terms)
-                               " );
-                               break;
-                       default:
-                               $terms = implode( ',', array_map( 'intval', $query['terms'] ) );
-                               $terms = $wpdb->get_col( "
-                                       SELECT $resulting_field
-                                       FROM $wpdb->term_taxonomy
-                                       WHERE taxonomy = '{$query['taxonomy']}'
-                                       AND term_id IN ($terms)
-                               " );
-               }
-
-               if ( 'AND' == $query['operator'] && count( $terms ) < count( $query['terms'] ) ) {
-                       $query = new WP_Error( 'Inexistent terms' );
-                       return;
-               }
-
-               $query['terms'] = $terms;
-               $query['field'] = $resulting_field;
-       }
-}
-
 /**
  * Get all Term data from database by Term ID.
  *
@@ -1335,51 +729,58 @@ class WP_Tax_Query {
  * @todo Better formatting for DocBlock
  *
  * @since 2.3.0
+ * @since 4.4.0 Converted to return a WP_Term object if `$output` is `OBJECT`.
+ *              The `$taxonomy` parameter was made optional.
  *
  * @global wpdb $wpdb WordPress database abstraction object.
  * @see sanitize_term_field() The $context param lists the available values for get_term_by() $filter param.
  *
- * @param int|object $term     If integer, will get from database. If object will apply filters and return $term.
- * @param string     $taxonomy Taxonomy name that $term is part of.
+ * @param int|WP_Term|object $term If integer, term data will be fetched from the database, or from the cache if
+ *                                 available. If stdClass object (as in the results of a database query), will apply
+ *                                 filters and return a `WP_Term` object corresponding to the `$term` data. If `WP_Term`,
+ *                                 will return `$term`.
+ * @param string     $taxonomy Optional. Taxonomy name that $term is part of.
  * @param string     $output   Constant OBJECT, ARRAY_A, or ARRAY_N
  * @param string     $filter   Optional, default is raw or no WordPress defined filter will applied.
- * @return object|array|null|WP_Error Term Row from database. Will return null if $term is empty. If taxonomy does not
- * exist then WP_Error will be returned.
+ * @return mixed Type corresponding to `$output` on success or null on failure. When `$output` is `OBJECT`,
+ *               a WP_Term instance is returned. If taxonomy does not exist then WP_Error will be returned.
  */
-function get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') {
-       global $wpdb;
-
+function get_term( $term, $taxonomy = '', $output = OBJECT, $filter = 'raw' ) {
        if ( empty( $term ) ) {
                return new WP_Error( 'invalid_term', __( 'Empty Term' ) );
        }
 
-       if ( ! taxonomy_exists( $taxonomy ) ) {
+       if ( $taxonomy && ! taxonomy_exists( $taxonomy ) ) {
                return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy' ) );
        }
 
-       if ( is_object($term) && empty($term->filter) ) {
-               wp_cache_add( $term->term_id, $term, $taxonomy );
+       if ( $term instanceof WP_Term ) {
                $_term = $term;
-       } else {
-               if ( is_object($term) )
-                       $term = $term->term_id;
-               if ( !$term = (int) $term )
-                       return null;
-               if ( ! $_term = wp_cache_get( $term, $taxonomy ) ) {
-                       $_term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND t.term_id = %d LIMIT 1", $taxonomy, $term) );
-                       if ( ! $_term )
-                               return null;
-                       wp_cache_add( $term, $_term, $taxonomy );
+       } elseif ( is_object( $term ) ) {
+               if ( empty( $term->filter ) || 'raw' === $term->filter ) {
+                       $_term = sanitize_term( $term, $taxonomy, 'raw' );
+                       $_term = new WP_Term( $_term );
+               } else {
+                       $_term = WP_Term::get_instance( $term->term_id );
                }
+       } else {
+               $_term = WP_Term::get_instance( $term, $taxonomy );
+       }
+
+       if ( is_wp_error( $_term ) ) {
+               return $_term;
+       } elseif ( ! $_term ) {
+               return null;
        }
 
        /**
         * Filter a term.
         *
         * @since 2.3.0
+        * @since 4.4.0 `$_term` can now also be a WP_Term object.
         *
-        * @param int|object $_term    Term object or ID.
-        * @param string     $taxonomy The taxonomy slug.
+        * @param int|WP_Term $_term    Term object or ID.
+        * @param string      $taxonomy The taxonomy slug.
         */
        $_term = apply_filters( 'get_term', $_term, $taxonomy );
 
@@ -1390,24 +791,23 @@ function get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') {
         * to the taxonomy slug.
         *
         * @since 2.3.0
+        * @since 4.4.0 `$_term` can now also be a WP_Term object.
         *
-        * @param int|object $_term    Term object or ID.
-        * @param string     $taxonomy The taxonomy slug.
+        * @param int|WP_Term $_term    Term object or ID.
+        * @param string      $taxonomy The taxonomy slug.
         */
        $_term = apply_filters( "get_$taxonomy", $_term, $taxonomy );
-       $_term = sanitize_term($_term, $taxonomy, $filter);
 
-       if ( $output == OBJECT ) {
-               return $_term;
-       } elseif ( $output == ARRAY_A ) {
-               $__term = get_object_vars($_term);
-               return $__term;
+       // Sanitize term, according to the specified filter.
+       $_term->filter( $filter );
+
+       if ( $output == ARRAY_A ) {
+               return $_term->to_array();
        } elseif ( $output == ARRAY_N ) {
-               $__term = array_values(get_object_vars($_term));
-               return $__term;
-       } else {
-               return $_term;
+               return array_values( $_term->to_array() );
        }
+
+       return $_term;
 }
 
 /**
@@ -1425,66 +825,65 @@ function get_term($term, $taxonomy, $output = OBJECT, $filter = 'raw') {
  * @todo Better formatting for DocBlock.
  *
  * @since 2.3.0
+ * @since 4.4.0 `$taxonomy` is optional if `$field` is 'term_taxonomy_id'. Converted to return
+ *              a WP_Term object if `$output` is `OBJECT`.
  *
  * @global wpdb $wpdb WordPress database abstraction object.
  * @see sanitize_term_field() The $context param lists the available values for get_term_by() $filter param.
  *
  * @param string     $field    Either 'slug', 'name', 'id' (term_id), or 'term_taxonomy_id'
  * @param string|int $value    Search for this term value
- * @param string     $taxonomy Taxonomy Name
+ * @param string     $taxonomy Taxonomy name. Optional, if `$field` is 'term_taxonomy_id'.
  * @param string     $output   Constant OBJECT, ARRAY_A, or ARRAY_N
  * @param string     $filter   Optional, default is raw or no WordPress defined filter will applied.
- * @return object|array|null|WP_Error|false Term Row from database.
- *                                          Will return false if $taxonomy does not exist or $term was not found.
+ * @return WP_Term|bool WP_Term instance on success. Will return false if `$taxonomy` does not exist
+ *                      or `$term` was not found.
  */
-function get_term_by($field, $value, $taxonomy, $output = OBJECT, $filter = 'raw') {
+function get_term_by( $field, $value, $taxonomy = '', $output = OBJECT, $filter = 'raw' ) {
        global $wpdb;
 
-       if ( ! taxonomy_exists($taxonomy) )
+       // 'term_taxonomy_id' lookups don't require taxonomy checks.
+       if ( 'term_taxonomy_id' !== $field && ! taxonomy_exists( $taxonomy ) ) {
                return false;
+       }
+
+       $tax_clause = $wpdb->prepare( "AND tt.taxonomy = %s", $taxonomy );
 
        if ( 'slug' == $field ) {
-               $field = 't.slug';
+               $_field = 't.slug';
                $value = sanitize_title($value);
                if ( empty($value) )
                        return false;
        } elseif ( 'name' == $field ) {
                // Assume already escaped
                $value = wp_unslash($value);
-               $field = 't.name';
+               $_field = 't.name';
        } elseif ( 'term_taxonomy_id' == $field ) {
                $value = (int) $value;
-               $field = 'tt.term_taxonomy_id';
+               $_field = 'tt.term_taxonomy_id';
+
+               // No `taxonomy` clause when searching by 'term_taxonomy_id'.
+               $tax_clause = '';
        } else {
                $term = get_term( (int) $value, $taxonomy, $output, $filter );
-               if ( is_wp_error( $term ) )
+               if ( is_wp_error( $term ) || is_null( $term ) ) {
                        $term = false;
+               }
                return $term;
        }
 
-       $term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy = %s AND $field = %s LIMIT 1", $taxonomy, $value ) );
+       $term = $wpdb->get_row( $wpdb->prepare( "SELECT t.*, tt.* FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id WHERE $_field = %s $tax_clause LIMIT 1", $value ) );
        if ( ! $term )
                return false;
 
-       wp_cache_add( $term->term_id, $term, $taxonomy );
-
-       /** This filter is documented in wp-includes/taxonomy.php */
-       $term = apply_filters( 'get_term', $term, $taxonomy );
-
-       /** This filter is documented in wp-includes/taxonomy.php */
-       $term = apply_filters( "get_$taxonomy", $term, $taxonomy );
+       // In the case of 'term_taxonomy_id', override the provided `$taxonomy` with whatever we find in the db.
+       if ( 'term_taxonomy_id' === $field ) {
+               $taxonomy = $term->taxonomy;
+       }
 
-       $term = sanitize_term($term, $taxonomy, $filter);
+       wp_cache_add( $term->term_id, $term, 'terms' );
 
-       if ( $output == OBJECT ) {
-               return $term;
-       } elseif ( $output == ARRAY_A ) {
-               return get_object_vars($term);
-       } elseif ( $output == ARRAY_N ) {
-               return array_values(get_object_vars($term));
-       } else {
-               return $term;
-       }
+       return get_term( $term, $taxonomy, $output, $filter );
 }
 
 /**
@@ -1529,20 +928,20 @@ function get_term_children( $term_id, $taxonomy ) {
 /**
  * Get sanitized Term field.
  *
- * Does checks for $term, based on the $taxonomy. The function is for contextual
- * reasons and for simplicity of usage. See sanitize_term_field() for more
- * information.
+ * The function is for contextual reasons and for simplicity of usage.
  *
  * @since 2.3.0
+ * @since 4.4.0 The `$taxonomy` parameter was made optional. `$term` can also now accept a WP_Term object.
  *
- * @param string $field    Term field to fetch.
- * @param int    $term     Term ID.
- * @param string $taxonomy Taxonomy Name.
- * @param string $context  Optional, default is display. Look at sanitize_term_field() for available options.
+ * @see sanitize_term_field()
+ *
+ * @param string      $field    Term field to fetch.
+ * @param int|WP_Term $term     Term ID or object.
+ * @param string      $taxonomy Optional. Taxonomy Name. Default empty.
+ * @param string      $context  Optional, default is display. Look at sanitize_term_field() for available options.
  * @return string|int|null|WP_Error Will return an empty string if $term is not an object or if $field is not set in $term.
  */
-function get_term_field( $field, $term, $taxonomy, $context = 'display' ) {
-       $term = (int) $term;
+function get_term_field( $field, $term, $taxonomy = '', $context = 'display' ) {
        $term = get_term( $term, $taxonomy );
        if ( is_wp_error($term) )
                return $term;
@@ -1553,7 +952,7 @@ function get_term_field( $field, $term, $taxonomy, $context = 'display' ) {
        if ( !isset($term->$field) )
                return '';
 
-       return sanitize_term_field($field, $term->$field, $term->term_id, $taxonomy, $context);
+       return sanitize_term_field( $field, $term->$field, $term->term_id, $term->taxonomy, $context );
 }
 
 /**
@@ -1599,6 +998,9 @@ function get_term_to_edit( $id, $taxonomy ) {
  *
  * @since 2.3.0
  * @since 4.2.0 Introduced 'name' and 'childless' parameters.
+ * @since 4.4.0 Introduced the ability to pass 'term_id' as an alias of 'id' for the `orderby` parameter.
+ *              Introduced the 'meta_query' and 'update_term_meta_cache' parameters. Converted to return
+ *              a list of WP_Term objects.
  *
  * @global wpdb  $wpdb WordPress database abstraction object.
  * @global array $wp_filter
@@ -1607,53 +1009,60 @@ function get_term_to_edit( $id, $taxonomy ) {
  * @param array|string $args {
  *     Optional. Array or string of arguments to get terms.
  *
- *     @type string       $orderby           Field(s) to order terms by. Accepts term fields ('name', 'slug',
- *                                           'term_group', 'term_id', 'id', 'description'), 'count' for term
- *                                           taxonomy count, 'include' to match the 'order' of the $include param,
- *                                           or 'none' to skip ORDER BY. Defaults to 'name'.
- *     @type string       $order             Whether to order terms in ascending or descending order.
- *                                           Accepts 'ASC' (ascending) or 'DESC' (descending).
- *                                           Default 'ASC'.
- *     @type bool|int     $hide_empty        Whether to hide terms not assigned to any posts. Accepts
- *                                           1|true or 0|false. Default 1|true.
- *     @type array|string $include           Array or comma/space-separated string of term ids to include.
- *                                           Default empty array.
- *     @type array|string $exclude           Array or comma/space-separated string of term ids to exclude.
- *                                           If $include is non-empty, $exclude is ignored.
- *                                           Default empty array.
- *     @type array|string $exclude_tree      Array or comma/space-separated string of term ids to exclude
- *                                           along with all of their descendant terms. If $include is
- *                                           non-empty, $exclude_tree is ignored. Default empty array.
- *     @type int|string   $number            Maximum number of terms to return. Accepts ''|0 (all) or any
- *                                           positive number. Default ''|0 (all).
- *     @type int          $offset            The number by which to offset the terms query. Default empty.
- *     @type string       $fields            Term fields to query for. Accepts 'all' (returns an array of
- *                                           term objects), 'ids' or 'names' (returns an array of integers
- *                                           or strings, respectively. Default 'all'.
- *     @type string|array $name              Optional. Name or array of names to return term(s) for. Default empty.
- *     @type string|array $slug              Optional. Slug or array of slugs to return term(s) for. Default empty.
- *     @type bool         $hierarchical      Whether to include terms that have non-empty descendants (even
- *                                           if $hide_empty is set to true). Default true.
- *     @type string       $search            Search criteria to match terms. Will be SQL-formatted with
- *                                           wildcards before and after. Default empty.
- *     @type string       $name__like        Retrieve terms with criteria by which a term is LIKE $name__like.
- *                                           Default empty.
- *     @type string       $description__like Retrieve terms where the description is LIKE $description__like.
- *                                           Default empty.
- *     @type bool         $pad_counts        Whether to pad the quantity of a term's children in the quantity
- *                                           of each term's "count" object variable. Default false.
- *     @type string       $get               Whether to return terms regardless of ancestry or whether the terms
- *                                           are empty. Accepts 'all' or empty (disabled). Default empty.
- *     @type int          $child_of          Term ID to retrieve child terms of. If multiple taxonomies
- *                                           are passed, $child_of is ignored. Default 0.
- *     @type int|string   $parent            Parent term ID to retrieve direct-child terms of. Default empty.
- *     @type bool         $childless         True to limit results to terms that have no children. This parameter has
- *                                           no effect on non-hierarchical taxonomies. Default false.
- *     @type string       $cache_domain      Unique cache key to be produced when this query is stored in an
- *                                           object cache. Default is 'core'.
+ *     @type string       $orderby                Field(s) to order terms by. Accepts term fields ('name', 'slug',
+ *                                                'term_group', 'term_id', 'id', 'description'), 'count' for term
+ *                                                taxonomy count, 'include' to match the 'order' of the $include param,
+ *                                                or 'none' to skip ORDER BY. Defaults to 'name'.
+ *     @type string       $order                  Whether to order terms in ascending or descending order.
+ *                                                Accepts 'ASC' (ascending) or 'DESC' (descending).
+ *                                                Default 'ASC'.
+ *     @type bool|int     $hide_empty             Whether to hide terms not assigned to any posts. Accepts
+ *                                                1|true or 0|false. Default 1|true.
+ *     @type array|string $include                Array or comma/space-separated string of term ids to include.
+ *                                                Default empty array.
+ *     @type array|string $exclude                Array or comma/space-separated string of term ids to exclude.
+ *                                                If $include is non-empty, $exclude is ignored.
+ *                                                Default empty array.
+ *     @type array|string $exclude_tree           Array or comma/space-separated string of term ids to exclude
+ *                                                along with all of their descendant terms. If $include is
+ *                                                non-empty, $exclude_tree is ignored. Default empty array.
+ *     @type int|string   $number                 Maximum number of terms to return. Accepts ''|0 (all) or any
+ *                                                positive number. Default ''|0 (all).
+ *     @type int          $offset                 The number by which to offset the terms query. Default empty.
+ *     @type string       $fields                 Term fields to query for. Accepts 'all' (returns an array of complete
+ *                                                term objects), 'ids' (returns an array of ids), 'id=>parent' (returns
+ *                                                an associative array with ids as keys, parent term IDs as values),
+ *                                                'names' (returns an array of term names), 'count' (returns the number
+ *                                                of matching terms), 'id=>name' (returns an associative array with ids
+ *                                                as keys, term names as values), or 'id=>slug' (returns an associative
+ *                                                array with ids as keys, term slugs as values). Default 'all'.
+ *     @type string|array $name                   Optional. Name or array of names to return term(s) for. Default empty.
+ *     @type string|array $slug                   Optional. Slug or array of slugs to return term(s) for. Default empty.
+ *     @type bool         $hierarchical           Whether to include terms that have non-empty descendants (even
+ *                                                if $hide_empty is set to true). Default true.
+ *     @type string       $search                 Search criteria to match terms. Will be SQL-formatted with
+ *                                                wildcards before and after. Default empty.
+ *     @type string       $name__like             Retrieve terms with criteria by which a term is LIKE $name__like.
+ *                                                Default empty.
+ *     @type string       $description__like      Retrieve terms where the description is LIKE $description__like.
+ *                                                Default empty.
+ *     @type bool         $pad_counts             Whether to pad the quantity of a term's children in the quantity
+ *                                                of each term's "count" object variable. Default false.
+ *     @type string       $get                    Whether to return terms regardless of ancestry or whether the terms
+ *                                                are empty. Accepts 'all' or empty (disabled). Default empty.
+ *     @type int          $child_of               Term ID to retrieve child terms of. If multiple taxonomies
+ *                                                are passed, $child_of is ignored. Default 0.
+ *     @type int|string   $parent                 Parent term ID to retrieve direct-child terms of. Default empty.
+ *     @type bool         $childless              True to limit results to terms that have no children. This parameter
+ *                                                has no effect on non-hierarchical taxonomies. Default false.
+ *     @type string       $cache_domain           Unique cache key to be produced when this query is stored in an
+ *                                                object cache. Default is 'core'.
+ *     @type bool         $update_term_meta_cache Whether to prime meta caches for matched terms. Default true.
+ *     @type array        $meta_query             Meta query clauses to limit retrieved terms by.
+ *                                                See `WP_Meta_Query`. Default empty.
  * }
- * @return array|int|WP_Error List of Term Objects and their children. Will return WP_Error, if any of $taxonomies
- *                        do not exist.
+ * @return array|int|WP_Error List of WP_Term instances and their children. Will return WP_Error, if any of $taxonomies
+ *                            do not exist.
  */
 function get_terms( $taxonomies, $args = '' ) {
        global $wpdb;
@@ -1670,12 +1079,44 @@ function get_terms( $taxonomies, $args = '' ) {
                }
        }
 
-       $defaults = array('orderby' => 'name', 'order' => 'ASC',
-               'hide_empty' => true, 'exclude' => array(), 'exclude_tree' => array(), 'include' => array(),
-               'number' => '', 'fields' => 'all', 'name' => '', 'slug' => '', 'parent' => '', 'childless' => false,
-               'hierarchical' => true, 'child_of' => 0, 'get' => '', 'name__like' => '', 'description__like' => '',
-               'pad_counts' => false, 'offset' => '', 'search' => '', 'cache_domain' => 'core' );
-       $args = wp_parse_args( $args, $defaults );
+       $defaults = array(
+               'orderby'                => 'name',
+               'order'                  => 'ASC',
+               'hide_empty'             => true,
+               'include'                => array(),
+               'exclude'                => array(),
+               'exclude_tree'           => array(),
+               'number'                 => '',
+               'offset'                 => '',
+               'fields'                 => 'all',
+               'name'                   => '',
+               'slug'                   => '',
+               'hierarchical'           => true,
+               'search'                 => '',
+               'name__like'             => '',
+               'description__like'      => '',
+               'pad_counts'             => false,
+               'get'                    => '',
+               'child_of'               => 0,
+               'parent'                 => '',
+               'childless'              => false,
+               'cache_domain'           => 'core',
+               'update_term_meta_cache' => true,
+               'meta_query'             => ''
+       );
+
+       /**
+        * Filter the terms query default arguments.
+        *
+        * Use 'get_terms_args' to filter the passed arguments.
+        *
+        * @since 4.4.0
+        *
+        * @param array $defaults   An array of default get_terms() arguments.
+        * @param array $taxonomies An array of taxonomies.
+        */
+       $args = wp_parse_args( $args, apply_filters( 'get_terms_defaults', $defaults, $taxonomies ) );
+
        $args['number'] = absint( $args['number'] );
        $args['offset'] = absint( $args['offset'] );
 
@@ -1710,7 +1151,7 @@ function get_terms( $taxonomies, $args = '' ) {
         *
         * @since 3.1.0
         *
-        * @param array $args       An array of get_term() arguments.
+        * @param array $args       An array of get_terms() arguments.
         * @param array $taxonomies An array of taxonomies.
         */
        $args = apply_filters( 'get_terms_args', $args, $taxonomies );
@@ -1742,30 +1183,6 @@ function get_terms( $taxonomies, $args = '' ) {
                }
        }
 
-       // $args can be whatever, only use the args defined in defaults to compute the key.
-       $filter_key = ( has_filter('list_terms_exclusions') ) ? serialize($GLOBALS['wp_filter']['list_terms_exclusions']) : '';
-       $key = md5( serialize( wp_array_slice_assoc( $args, array_keys( $defaults ) ) ) . serialize( $taxonomies ) . $filter_key );
-       $last_changed = wp_cache_get( 'last_changed', 'terms' );
-       if ( ! $last_changed ) {
-               $last_changed = microtime();
-               wp_cache_set( 'last_changed', $last_changed, 'terms' );
-       }
-       $cache_key = "get_terms:$key:$last_changed";
-       $cache = wp_cache_get( $cache_key, 'terms' );
-       if ( false !== $cache ) {
-
-               /**
-                * Filter the given taxonomy's terms cache.
-                *
-                * @since 2.3.0
-                *
-                * @param array $cache      Cached array of terms for the given taxonomy.
-                * @param array $taxonomies An array of taxonomies.
-                * @param array $args       An array of get_terms() arguments.
-                */
-               return apply_filters( 'get_terms', $cache, $taxonomies, $args );
-       }
-
        $_orderby = strtolower( $args['orderby'] );
        if ( 'count' == $_orderby ) {
                $orderby = 'tt.count';
@@ -1782,7 +1199,7 @@ function get_terms( $taxonomies, $args = '' ) {
                $orderby = 'tt.description';
        } elseif ( 'none' == $_orderby ) {
                $orderby = '';
-       } elseif ( empty($_orderby) || 'id' == $_orderby ) {
+       } elseif ( empty( $_orderby ) || 'id' == $_orderby || 'term_id' === $_orderby ) {
                $orderby = 't.term_id';
        } else {
                $orderby = 't.name';
@@ -1934,6 +1351,16 @@ function get_terms( $taxonomies, $args = '' ) {
                $where .= $wpdb->prepare( ' AND ((t.name LIKE %s) OR (t.slug LIKE %s))', $like, $like );
        }
 
+       // Meta query support.
+       $join = '';
+       if ( ! empty( $args['meta_query'] ) ) {
+               $mquery = new WP_Meta_Query( $args['meta_query'] );
+               $mq_sql = $mquery->get_sql( 'term', 't', 'term_id' );
+
+               $join  .= $mq_sql['join'];
+               $where .= $mq_sql['where'];
+       }
+
        $selects = array();
        switch ( $args['fields'] ) {
                case 'all':
@@ -1979,7 +1406,7 @@ function get_terms( $taxonomies, $args = '' ) {
         */
        $fields = implode( ', ', apply_filters( 'get_terms_fields', $selects, $args, $taxonomies ) );
 
-       $join = "INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id";
+       $join .= " INNER JOIN $wpdb->term_taxonomy AS tt ON t.term_id = tt.term_id";
 
        $pieces = array( 'fields', 'join', 'where', 'orderby', 'order', 'limits' );
 
@@ -2003,6 +1430,32 @@ function get_terms( $taxonomies, $args = '' ) {
 
        $query = "SELECT $fields FROM $wpdb->terms AS t $join WHERE $where $orderby $order $limits";
 
+       // $args can be anything. Only use the args defined in defaults to compute the key.
+       $key = md5( serialize( wp_array_slice_assoc( $args, array_keys( $defaults ) ) ) . serialize( $taxonomies ) . $query );
+       $last_changed = wp_cache_get( 'last_changed', 'terms' );
+       if ( ! $last_changed ) {
+               $last_changed = microtime();
+               wp_cache_set( 'last_changed', $last_changed, 'terms' );
+       }
+       $cache_key = "get_terms:$key:$last_changed";
+       $cache = wp_cache_get( $cache_key, 'terms' );
+       if ( false !== $cache ) {
+               if ( 'all' === $_fields ) {
+                       $cache = array_map( 'get_term', $cache );
+               }
+
+               /**
+                * Filter the given taxonomy's terms cache.
+                *
+                * @since 2.3.0
+                *
+                * @param array $cache      Cached array of terms for the given taxonomy.
+                * @param array $taxonomies An array of taxonomies.
+                * @param array $args       An array of get_terms() arguments.
+                */
+               return apply_filters( 'get_terms', $cache, $taxonomies, $args );
+       }
+
        if ( 'count' == $_fields ) {
                return $wpdb->get_var( $query );
        }
@@ -2012,6 +1465,12 @@ function get_terms( $taxonomies, $args = '' ) {
                update_term_cache( $terms );
        }
 
+       // Prime termmeta cache.
+       if ( $args['update_term_meta_cache'] ) {
+               $term_ids = wp_list_pluck( $terms, 'term_id' );
+               update_termmeta_cache( $term_ids );
+       }
+
        if ( empty($terms) ) {
                wp_cache_add( $cache_key, array(), 'terms', DAY_IN_SECONDS );
 
@@ -2088,10 +1547,149 @@ function get_terms( $taxonomies, $args = '' ) {
 
        wp_cache_add( $cache_key, $terms, 'terms', DAY_IN_SECONDS );
 
-       /** This filter is documented in wp-includes/taxonomy */
+       if ( 'all' === $_fields ) {
+               $terms = array_map( 'get_term', $terms );
+       }
+
+       /** This filter is documented in wp-includes/taxonomy.php */
        return apply_filters( 'get_terms', $terms, $taxonomies, $args );
 }
 
+/**
+ * Adds metadata to a term.
+ *
+ * @since 4.4.0
+ *
+ * @param int    $term_id    Term ID.
+ * @param string $meta_key   Metadata name.
+ * @param mixed  $meta_value Metadata value.
+ * @param bool   $unique     Optional. Whether to bail if an entry with the same key is found for the term.
+ *                           Default false.
+ * @return int|WP_Error|bool Meta ID on success. WP_Error when term_id is ambiguous between taxonomies.
+ *                           False on failure.
+ */
+function add_term_meta( $term_id, $meta_key, $meta_value, $unique = false ) {
+       // Bail if term meta table is not installed.
+       if ( get_option( 'db_version' ) < 34370 ) {
+               return false;
+       }
+
+       if ( wp_term_is_shared( $term_id ) ) {
+               return new WP_Error( 'ambiguous_term_id', __( 'Term meta cannot be added to terms that are shared between taxonomies.'), $term_id );
+       }
+
+       $added = add_metadata( 'term', $term_id, $meta_key, $meta_value, $unique );
+
+       // Bust term query cache.
+       if ( $added ) {
+               wp_cache_set( 'last_changed', microtime(), 'terms' );
+       }
+
+       return $added;
+}
+
+/**
+ * Removes metadata matching criteria from a term.
+ *
+ * @since 4.4.0
+ *
+ * @param int    $term_id    Term ID.
+ * @param string $meta_key   Metadata name.
+ * @param mixed  $meta_value Optional. Metadata value. If provided, rows will only be removed that match the value.
+ * @return bool True on success, false on failure.
+ */
+function delete_term_meta( $term_id, $meta_key, $meta_value = '' ) {
+       // Bail if term meta table is not installed.
+       if ( get_option( 'db_version' ) < 34370 ) {
+               return false;
+       }
+
+       $deleted = delete_metadata( 'term', $term_id, $meta_key, $meta_value );
+
+       // Bust term query cache.
+       if ( $deleted ) {
+               wp_cache_set( 'last_changed', microtime(), 'terms' );
+       }
+
+       return $deleted;
+}
+
+/**
+ * Retrieves metadata for a term.
+ *
+ * @since 4.4.0
+ *
+ * @param int    $term_id Term ID.
+ * @param string $key     Optional. The meta key to retrieve. If no key is provided, fetches all metadata for the term.
+ * @param bool   $single  Whether to return a single value. If false, an array of all values matching the
+ *                        `$term_id`/`$key` pair will be returned. Default: false.
+ * @return mixed If `$single` is false, an array of metadata values. If `$single` is true, a single metadata value.
+ */
+function get_term_meta( $term_id, $key = '', $single = false ) {
+       // Bail if term meta table is not installed.
+       if ( get_option( 'db_version' ) < 34370 ) {
+               return false;
+       }
+
+       return get_metadata( 'term', $term_id, $key, $single );
+}
+
+/**
+ * Updates term metadata.
+ *
+ * Use the `$prev_value` parameter to differentiate between meta fields with the same key and term ID.
+ *
+ * If the meta field for the term does not exist, it will be added.
+ *
+ * @since 4.4.0
+ *
+ * @param int    $term_id    Term ID.
+ * @param string $meta_key   Metadata key.
+ * @param mixed  $meta_value Metadata value.
+ * @param mixed  $prev_value Optional. Previous value to check before removing.
+ * @return int|WP_Error|bool Meta ID if the key didn't previously exist. True on successful update.
+ *                           WP_Error when term_id is ambiguous between taxonomies. False on failure.
+ */
+function update_term_meta( $term_id, $meta_key, $meta_value, $prev_value = '' ) {
+       // Bail if term meta table is not installed.
+       if ( get_option( 'db_version' ) < 34370 ) {
+               return false;
+       }
+
+       if ( wp_term_is_shared( $term_id ) ) {
+               return new WP_Error( 'ambiguous_term_id', __( 'Term meta cannot be added to terms that are shared between taxonomies.'), $term_id );
+       }
+
+       $updated = update_metadata( 'term', $term_id, $meta_key, $meta_value, $prev_value );
+
+       // Bust term query cache.
+       if ( $updated ) {
+               wp_cache_set( 'last_changed', microtime(), 'terms' );
+       }
+
+       return $updated;
+}
+
+/**
+ * Updates metadata cache for list of term IDs.
+ *
+ * Performs SQL query to retrieve all metadata for the terms matching `$term_ids` and stores them in the cache.
+ * Subsequent calls to `get_term_meta()` will not need to query the database.
+ *
+ * @since 4.4.0
+ *
+ * @param array $term_ids List of term IDs.
+ * @return array|false Returns false if there is nothing to update. Returns an array of metadata on success.
+ */
+function update_termmeta_cache( $term_ids ) {
+       // Bail if term meta table is not installed.
+       if ( get_option( 'db_version' ) < 34370 ) {
+               return;
+       }
+
+       return update_meta_cache( 'term', $term_ids );
+}
+
 /**
  * Check if Term exists.
  *
@@ -2456,6 +2054,8 @@ function wp_delete_object_term_relationships( $object_id, $taxonomies ) {
  * If the term is a parent of other terms, then the children will be updated to
  * that term's parent.
  *
+ * Metadata associated with the term will be deleted.
+ *
  * The `$args` 'default' will only override the terms found, if there is only one
  * term found. Any other and the found terms are used.
  *
@@ -2551,6 +2151,9 @@ function wp_delete_term( $term, $taxonomy, $args = array() ) {
                do_action( 'edited_term_taxonomies', $edit_tt_ids );
        }
 
+       // Get the term before deleting it or its term relationships so we can pass to actions below.
+       $deleted_term = get_term( $term, $taxonomy );
+
        $objects = $wpdb->get_col( $wpdb->prepare( "SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $tt_id ) );
 
        foreach ( (array) $objects as $object ) {
@@ -2571,8 +2174,10 @@ function wp_delete_term( $term, $taxonomy, $args = array() ) {
        foreach ( $tax_object->object_type as $object_type )
                clean_object_term_cache( $objects, $object_type );
 
-       // Get the object before deletion so we can pass to actions below
-       $deleted_term = get_term( $term, $taxonomy );
+       $term_meta_ids = $wpdb->get_col( $wpdb->prepare( "SELECT meta_id FROM $wpdb->termmeta WHERE term_id = %d ", $term ) );
+       foreach ( $term_meta_ids as $mid ) {
+               delete_metadata_by_mid( 'term', $mid );
+       }
 
        /**
         * Fires immediately before a term taxonomy ID is deleted.
@@ -2649,6 +2254,8 @@ function wp_delete_category( $cat_ID ) {
  * @since 2.3.0
  * @since 4.2.0 Added support for 'taxonomy', 'parent', and 'term_taxonomy_id' values of `$orderby`.
  *              Introduced `$parent` argument.
+ * @since 4.4.0 Introduced `$meta_query` and `$update_term_meta_cache` arguments. When `$fields` is 'all' or
+ *              'all_with_object_id', an array of `WP_Term` objects will be returned.
  *
  * @global wpdb $wpdb WordPress database abstraction object.
  *
@@ -2656,14 +2263,19 @@ function wp_delete_category( $cat_ID ) {
  * @param string|array $taxonomies The taxonomies to retrieve terms from.
  * @param array|string $args {
  *     Array of arguments.
- *     @type string $orderby Field by which results should be sorted. Accepts 'name', 'count', 'slug', 'term_group',
- *                           'term_order', 'taxonomy', 'parent', or 'term_taxonomy_id'. Default 'name'.
- *     @type string $order   Sort order. Accepts 'ASC' or 'DESC'. Default 'ASC'.
- *     @type string $fields  Fields to return for matched terms. Accepts 'all', 'ids', 'names', and
- *                           'all_with_object_id'. Note that 'all' or 'all_with_object_id' will result in an array of
- *                           term objects being returned, 'ids' will return an array of integers, and 'names' an array
- *                           of strings.
- *     @type int    $parent  Optional. Limit results to the direct children of a given term ID.
+ *     @type string $orderby                Field by which results should be sorted. Accepts 'name', 'count', 'slug',
+ *                                          'term_group', 'term_order', 'taxonomy', 'parent', or 'term_taxonomy_id'.
+ *                                          Default 'name'.
+ *     @type string $order                  Sort order. Accepts 'ASC' or 'DESC'. Default 'ASC'.
+ *     @type string $fields                 Fields to return for matched terms. Accepts 'all', 'ids', 'names', and
+ *                                          'all_with_object_id'. Note that 'all' or 'all_with_object_id' will result
+ *                                          in an array of term objects being returned, 'ids' will return an array of
+ *                                          integers, and 'names' an array of strings.
+ *     @type int    $parent                 Optional. Limit results to the direct children of a given term ID.
+ *     @type bool   $update_term_meta_cache Whether to prime termmeta cache for matched terms. Only applies when
+ *                                          `$fields` is 'all', 'all_with_object_id', or 'term_id'. Default true.
+ *     @type array  $meta_query             Meta query clauses to limit retrieved terms by. See `WP_Meta_Query`.
+ *                                          Default empty.
  * }
  * @return array|WP_Error The requested term data or empty array if no terms found.
  *                        WP_Error if any of the $taxonomies don't exist.
@@ -2691,6 +2303,8 @@ function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
                'order'   => 'ASC',
                'fields'  => 'all',
                'parent'  => '',
+               'update_term_meta_cache' => true,
+               'meta_query' => '',
        );
        $args = wp_parse_args( $args, $defaults );
 
@@ -2764,19 +2378,50 @@ function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
                $where[] = $wpdb->prepare( 'tt.parent = %d', $args['parent'] );
        }
 
+       // Meta query support.
+       $meta_query_join = '';
+       if ( ! empty( $args['meta_query'] ) ) {
+               $mquery = new WP_Meta_Query( $args['meta_query'] );
+               $mq_sql = $mquery->get_sql( 'term', 't', 'term_id' );
+
+               $meta_query_join .= $mq_sql['join'];
+
+               // Strip leading AND.
+               $where[] = preg_replace( '/^\s*AND/', '', $mq_sql['where'] );
+       }
+
        $where = implode( ' AND ', $where );
 
-       $query = "SELECT $select_this FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN $wpdb->term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE $where $orderby $order";
+       $query = "SELECT $select_this FROM $wpdb->terms AS t INNER JOIN $wpdb->term_taxonomy AS tt ON tt.term_id = t.term_id INNER JOIN $wpdb->term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id $meta_query_join WHERE $where $orderby $order";
 
        $objects = false;
        if ( 'all' == $fields || 'all_with_object_id' == $fields ) {
                $_terms = $wpdb->get_results( $query );
+               $object_id_index = array();
                foreach ( $_terms as $key => $term ) {
-                       $_terms[$key] = sanitize_term( $term, $taxonomy, 'raw' );
+                       $term = sanitize_term( $term, $taxonomy, 'raw' );
+                       $_terms[ $key ] = $term;
+
+                       if ( isset( $term->object_id ) ) {
+                               $object_id_index[ $key ] = $term->object_id;
+                       }
+               }
+
+               update_term_cache( $_terms );
+               $_terms = array_map( 'get_term', $_terms );
+
+               // Re-add the object_id data, which is lost when fetching terms from cache.
+               if ( 'all_with_object_id' === $fields ) {
+                       foreach ( $_terms as $key => $_term ) {
+                               if ( isset( $object_id_index[ $key ] ) ) {
+                                       $_term->object_id = $object_id_index[ $key ];
+                               }
+                       }
                }
+
                $terms = array_merge( $terms, $_terms );
-               update_term_cache( $terms );
                $objects = true;
+
        } elseif ( 'ids' == $fields || 'names' == $fields || 'slugs' == $fields ) {
                $_terms = $wpdb->get_col( $query );
                $_field = ( 'ids' == $fields ) ? 'term_id' : 'name';
@@ -2791,6 +2436,17 @@ function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
                }
        }
 
+       // Update termmeta cache, if necessary.
+       if ( $args['update_term_meta_cache'] && ( 'all' === $fields || 'all_with_object_ids' === $fields || 'term_id' === $fields ) ) {
+               if ( 'term_id' === $fields ) {
+                       $term_ids = $fields;
+               } else {
+                       $term_ids = wp_list_pluck( $terms, 'term_id' );
+               }
+
+               update_termmeta_cache( $term_ids );
+       }
+
        if ( ! $terms ) {
                $terms = array();
        } elseif ( $objects && 'all_with_object_id' !== $fields ) {
@@ -2856,7 +2512,7 @@ function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
  *
  * If the taxonomy is hierarchical, and the 'parent' argument is not empty,
  * the term is inserted and the term_id will be given.
-
+ *
  * Error handling:
  * If $taxonomy does not exist or $term is empty,
  * a WP_Error object will be returned.
@@ -2865,7 +2521,7 @@ function wp_get_object_terms($object_ids, $taxonomies, $args = array()) {
  * or the term slug and name are not unique, a WP_Error object will be returned.
  *
  * @global wpdb $wpdb WordPress database abstraction object.
-
+ *
  * @since 2.3.0
  *
  * @param string       $term     The term to add or update.
@@ -2951,7 +2607,26 @@ function wp_insert_term( $term, $taxonomy, $args = array() ) {
         * Prevent the creation of terms with duplicate names at the same level of a taxonomy hierarchy,
         * unless a unique slug has been explicitly provided.
         */
-       if ( $name_match = get_term_by( 'name', $name, $taxonomy ) ) {
+       $name_matches = get_terms( $taxonomy, array(
+               'name' => $name,
+               'hide_empty' => false,
+       ) );
+
+       /*
+        * The `name` match in `get_terms()` doesn't differentiate accented characters,
+        * so we do a stricter comparison here.
+        */
+       $name_match = null;
+       if ( $name_matches ) {
+               foreach ( $name_matches as $_match ) {
+                       if ( strtolower( $name ) === strtolower( $_match->name ) ) {
+                               $name_match = $_match;
+                               break;
+                       }
+               }
+       }
+
+       if ( $name_match ) {
                $slug_match = get_term_by( 'slug', $slug, $taxonomy );
                if ( ! $slug_provided || $name_match->slug === $slug || $slug_match ) {
                        if ( is_taxonomy_hierarchical( $taxonomy ) ) {
@@ -3289,6 +2964,8 @@ function wp_remove_object_terms( $object_id, $terms, $taxonomy ) {
                do_action( 'delete_term_relationships', $object_id, $tt_ids );
                $deleted = $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id IN ($in_tt_ids)", $object_id ) );
 
+               wp_cache_delete( $object_id, $taxonomy . '_relationships' );
+
                /**
                 * Fires immediately after an object-term relationship is deleted.
                 *
@@ -3447,7 +3124,7 @@ function wp_update_term( $term_id, $taxonomy, $args = array() ) {
        $term_id = (int) $term_id;
 
        // First, get all of the original args
-       $term = get_term( $term_id, $taxonomy, ARRAY_A );
+       $term = get_term( $term_id, $taxonomy );
 
        if ( is_wp_error( $term ) ) {
                return $term;
@@ -3457,8 +3134,10 @@ function wp_update_term( $term_id, $taxonomy, $args = array() ) {
                return new WP_Error( 'invalid_term', __( 'Empty Term' ) );
        }
 
+       $term = (array) $term->data;
+
        // Escape data pulled from DB.
-       $term = wp_slash($term);
+       $term = wp_slash( $term );
 
        // Merge old and new args with new args overwriting old ones.
        $args = array_merge($term, $args);
@@ -3539,7 +3218,7 @@ function wp_update_term( $term_id, $taxonomy, $args = array() ) {
                        return new WP_Error('duplicate_term_slug', sprintf(__('The slug &#8220;%s&#8221; is already in use by another term'), $slug));
        }
 
-       $tt_id = $wpdb->get_var( $wpdb->prepare( "SELECT tt.term_taxonomy_id FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d", $taxonomy, $term_id) );
+       $tt_id = (int) $wpdb->get_var( $wpdb->prepare( "SELECT tt.term_taxonomy_id FROM $wpdb->term_taxonomy AS tt INNER JOIN $wpdb->terms AS t ON tt.term_id = t.term_id WHERE tt.taxonomy = %s AND t.term_id = %d", $taxonomy, $term_id) );
 
        // Check whether this is a shared term that needs splitting.
        $_term_id = _split_shared_term( $term_id, $tt_id );
@@ -3834,14 +3513,14 @@ function clean_term_cache($ids, $taxonomy = '', $clean_taxonomy = true) {
                foreach ( (array) $terms as $term ) {
                        $taxonomies[] = $term->taxonomy;
                        $ids[] = $term->term_id;
-                       wp_cache_delete($term->term_id, $term->taxonomy);
+                       wp_cache_delete( $term->term_id, 'terms' );
                }
                $taxonomies = array_unique($taxonomies);
        } else {
                $taxonomies = array($taxonomy);
                foreach ( $taxonomies as $taxonomy ) {
                        foreach ( $ids as $id ) {
-                               wp_cache_delete($id, $taxonomy);
+                               wp_cache_delete( $id, 'terms' );
                        }
                }
        }
@@ -3923,7 +3602,11 @@ function update_object_term_cache($object_ids, $object_type) {
        if ( empty( $ids ) )
                return false;
 
-       $terms = wp_get_object_terms($ids, $taxonomies, array('fields' => 'all_with_object_id'));
+       $terms = wp_get_object_terms( $ids, $taxonomies, array(
+               'fields' => 'all_with_object_id',
+               'orderby' => 'none',
+               'update_term_meta_cache' => false,
+       ) );
 
        $object_terms = array();
        foreach ( (array) $terms as $term )
@@ -3956,11 +3639,13 @@ function update_object_term_cache($object_ids, $object_type) {
  */
 function update_term_cache( $terms, $taxonomy = '' ) {
        foreach ( (array) $terms as $term ) {
-               $term_taxonomy = $taxonomy;
-               if ( empty($term_taxonomy) )
-                       $term_taxonomy = $term->taxonomy;
+               // Create a copy in case the array was passed by reference.
+               $_term = $term;
+
+               // Object ID should not be cached.
+               unset( $_term->object_id );
 
-               wp_cache_add( $term->term_id, $term, $term_taxonomy );
+               wp_cache_add( $term->term_id, $_term, 'terms' );
        }
 }
 
@@ -4074,7 +3759,7 @@ function _get_term_children( $term_id, $terms, $taxonomy, &$ancestors = array()
  *
  * @global wpdb $wpdb WordPress database abstraction object.
  *
- * @param array  $terms    List of term IDs, passed by reference.
+ * @param array  $terms    List of term objects, passed by reference.
  * @param string $taxonomy Term context.
  */
 function _pad_term_counts( &$terms, $taxonomy ) {
@@ -4222,7 +3907,7 @@ function _update_generic_term_count( $terms, $taxonomy ) {
  * @since 4.3.0 Introduced `$record` parameter. Also, `$term_id` and
  *              `$term_taxonomy_id` can now accept objects.
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int|object $term_id          ID of the shared term, or the shared term object.
  * @param int|object $term_taxonomy_id ID of the term_taxonomy item to receive a new term, or the term_taxonomy object
@@ -4326,6 +4011,18 @@ function _split_shared_term( $term_id, $term_taxonomy_id, $record = true ) {
                update_option( '_split_terms', $split_term_data );
        }
 
+       // If we've just split the final shared term, set the "finished" flag.
+       $shared_terms_exist = $wpdb->get_results(
+               "SELECT tt.term_id, t.*, count(*) as term_tt_count FROM {$wpdb->term_taxonomy} tt
+                LEFT JOIN {$wpdb->terms} t ON t.term_id = tt.term_id
+                GROUP BY t.term_id
+                HAVING term_tt_count > 1
+                LIMIT 1"
+       );
+       if ( ! $shared_terms_exist ) {
+               update_option( 'finished_splitting_shared_terms', true );
+       }
+
        /**
         * Fires after a previously shared taxonomy term is split into two separate terms.
         *
@@ -4478,7 +4175,7 @@ function _wp_check_split_default_terms( $term_id, $new_term_id, $term_taxonomy_i
  * @ignore
  * @since 4.2.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int    $term_id          ID of the formerly shared term.
  * @param int    $new_term_id      ID of the new term created for the $term_taxonomy_id.
@@ -4512,8 +4209,6 @@ function _wp_check_split_terms_in_menus( $term_id, $new_term_id, $term_taxonomy_
  * @ignore
  * @since 4.3.0
  *
- * @global wpdb $wpdb
- *
  * @param int    $term_id          ID of the formerly shared term.
  * @param int    $new_term_id      ID of the new term created for the $term_taxonomy_id.
  * @param int    $term_taxonomy_id ID for the term_taxonomy row affected by the split.
@@ -4575,6 +4270,29 @@ function wp_get_split_term( $old_term_id, $taxonomy ) {
        return $term_id;
 }
 
+/**
+ * Determine whether a term is shared between multiple taxonomies.
+ *
+ * Shared taxonomy terms began to be split in 4.3, but failed cron tasks or other delays in upgrade routines may cause
+ * shared terms to remain.
+ *
+ * @since 4.4.0
+ *
+ * @param int $term_id
+ * @return bool
+ */
+function wp_term_is_shared( $term_id ) {
+       global $wpdb;
+
+       if ( get_option( 'finished_splitting_shared_terms' ) ) {
+               return false;
+       }
+
+       $tt_count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->term_taxonomy WHERE term_id = %d", $term_id ) );
+
+       return $tt_count > 1;
+}
+
 /**
  * Generate a permalink for a taxonomy term archive.
  *
@@ -4804,8 +4522,10 @@ function is_object_in_term( $object_id, $taxonomy, $terms = null ) {
                return new WP_Error( 'invalid_object', __( 'Invalid object ID' ) );
 
        $object_terms = get_object_term_cache( $object_id, $taxonomy );
-       if ( false === $object_terms )
-                $object_terms = wp_get_object_terms( $object_id, $taxonomy );
+       if ( false === $object_terms ) {
+               $object_terms = wp_get_object_terms( $object_id, $taxonomy, array( 'update_term_meta_cache' => false ) );
+               wp_cache_set( $object_id, $object_terms, "{$taxonomy}_relationships" );
+       }
 
        if ( is_wp_error( $object_terms ) )
                return $object_terms;
index 95216fe5e0f5bb9b37fdba4a52745542c97df69b..d3eebe93ed1d7a8d6de3acff144e7409d3d0a879 100644 (file)
@@ -39,6 +39,20 @@ elseif ( is_feed() ) :
 elseif ( is_trackback() ) :
        include( ABSPATH . 'wp-trackback.php' );
        return;
+elseif ( is_embed() ) :
+       $template = ABSPATH . WPINC . '/embed-template.php';
+
+       /**
+        * Filter the template used for embedded posts.
+        *
+        * @since 4.4.0
+        *
+        * @param string $template Path to the template file.
+        */
+       $template = apply_filters( 'embed_template', $template );
+
+       include ( $template );
+       return;
 endif;
 
 if ( defined('WP_USE_THEMES') && WP_USE_THEMES ) :
index 3e4e9a403ed441395366fe4844b9020ffb8a1aa0..45d1db0c0fd5c3b4942da9cefe16831f9cbb9c0c 100644 (file)
@@ -35,6 +35,9 @@ function get_query_template( $type, $templates = array() ) {
         * extension and any non-alphanumeric characters delimiting words -- of the file to load.
         * This hook also applies to various types of files loaded as part of the Template Hierarchy.
         *
+        * Possible values for `$type` include: 'index', '404', 'archive', 'author', 'category', 'tag', 'taxonomy', 'date',
+        * 'home', 'front_page', 'page', 'paged', 'search', 'single', 'singular', and 'attachment'.
+        *
         * @since 1.5.0
         *
         * @param string $template Path to the template. See locate_template().
@@ -380,6 +383,7 @@ function get_search_template() {
  * e.g. 'single_template'.
  *
  * @since 1.5.0
+ * @since 4.4.0 `single-{post_type}-{post_name}.php` was added to the top of the template hierarchy.
  *
  * @see get_query_template()
  *
@@ -390,8 +394,11 @@ function get_single_template() {
 
        $templates = array();
 
-       if ( ! empty( $object->post_type ) )
+       if ( ! empty( $object->post_type ) ) {
+               $templates[] = "single-{$object->post_type}-{$object->post_name}.php";
                $templates[] = "single-{$object->post_type}.php";
+       }
+
        $templates[] = "single.php";
 
        return get_query_template( 'single', $templates );
@@ -534,7 +541,7 @@ function locate_template($template_names, $load = false, $require_once = true )
  * @global string     $wp_version
  * @global WP         $wp
  * @global int        $id
- * @global object     $comment
+ * @global WP_Comment $comment
  * @global int        $user_ID
  *
  * @param string $_template_file Path to template file.
index e8f8655eb3c14370eff1c143dd29ad3199d5818d..3d56b45c0fcc8f230a404f81bcacf19267c4ae13 100644 (file)
@@ -7,7 +7,14 @@
  * This file is here for Backwards compatibility with old themes and will be removed in a future version
  *
  */
-_deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.0', null, sprintf( __('Please include a %1$s template in your theme.'), basename(__FILE__) ) );
+_deprecated_file(
+       /* translators: %s: template name */
+       sprintf( __( 'Theme without %s' ), basename( __FILE__ ) ),
+       '3.0',
+       null,
+       /* translators: %s: template name */
+       sprintf( __( 'Please include a %s template in your theme.' ), basename( __FILE__ ) )
+);
 ?><!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
@@ -34,10 +41,6 @@ while( have_posts()) : the_post();
 
 <p><a href="<?php echo esc_url( get_post_comments_feed_link($post->ID) ); ?>"><?php _e('<abbr title="Really Simple Syndication">RSS</abbr> feed for comments on this post.'); ?></a></p>
 
-<?php if ( pings_open() ) { ?>
-<p><?php printf(__('The <abbr title="Universal Resource Locator">URL</abbr> to TrackBack this entry is: <em>%s</em>'), get_trackback_url()); ?></p>
-<?php } ?>
-
 <?php
 // this line is WordPress' motor, do not delete it.
 $commenter = wp_get_current_commenter();
@@ -52,7 +55,7 @@ if ( post_password_required($post) ) {  // and it doesn't match the cookie
 <?php foreach ($comments as $comment) { ?>
        <li id="comment-<?php comment_ID() ?>">
        <?php comment_text() ?>
-       <p><cite><?php comment_type(); ?> <?php printf(__('by %1$s &#8212; %2$s @ <a href="#comment-%3$s">%4$s</a>'), get_comment_author_link(), get_comment_date(), get_comment_ID(), get_comment_time()); ?></cite></p>
+       <p><cite><?php comment_type(); ?> <?php printf(__('by %1$s &#8212; %2$s @ <a href="#comment-%3$s">%4$s</a>'), get_comment_author_link( $comment ), get_comment_date( '', $comment ), get_comment_ID(), get_comment_time()); ?></cite></p>
        </li>
 
 <?php } // end for each comment ?>
@@ -63,7 +66,6 @@ if ( post_password_required($post) ) {  // and it doesn't match the cookie
 
 <?php if ( comments_open() ) { ?>
 <h2><?php _e('Leave a comment'); ?></h2>
-<p><?php printf(__('Line and paragraph breaks automatic, e-mail address never displayed, <acronym title="Hypertext Markup Language">HTML</acronym> allowed: <code>%s</code>'), allowed_tags()); ?></p>
 
 <form action="<?php echo site_url(); ?>/wp-comments-post.php" method="post" id="commentform">
 <?php if ( $user_ID ) : ?>
@@ -76,7 +78,7 @@ if ( post_password_required($post) ) {  // and it doesn't match the cookie
 
        <p>
          <input type="text" name="email" id="email" value="<?php echo esc_attr( $commenter['comment_author_email'] ); ?>" size="28" tabindex="2" />
-          <label for="email"><?php _e('E-mail'); ?></label>
+          <label for="email"><?php _e('Email'); ?></label>
        </p>
 
        <p>
index 6314d69f2478cf987dc0294e9d8a125d18ec1ccc..617349a7184e2f6c4527674d615ff5b7acf773da 100644 (file)
@@ -7,7 +7,14 @@
  * This file is here for Backwards compatibility with old themes and will be removed in a future version
  *
  */
-_deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.0', null, sprintf( __('Please include a %1$s template in your theme.'), basename(__FILE__) ) );
+_deprecated_file(
+       /* translators: %s: template name */
+       sprintf( __( 'Theme without %s' ), basename( __FILE__ ) ),
+       '3.0',
+       null,
+       /* translators: %s: template name */
+       sprintf( __( 'Please include a %s template in your theme.' ), basename( __FILE__ ) )
+);
 
 // Do not delete these lines
        if (!empty($_SERVER['SCRIPT_FILENAME']) && 'comments.php' == basename($_SERVER['SCRIPT_FILENAME']))
@@ -79,7 +86,9 @@ _deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.
 
 <?php if ( is_user_logged_in() ) : ?>
 
-<p><?php printf(__('Logged in as <a href="%1$s">%2$s</a>.'), get_edit_user_link(), $user_identity); ?> <a href="<?php echo wp_logout_url(get_permalink()); ?>" title="<?php esc_attr_e('Log out of this account'); ?>"><?php _e('Log out &raquo;'); ?></a></p>
+<p><?php /* translators: %s: user profile link  */
+printf( __( 'Logged in as %s.' ), sprintf( '<a href="%1$s">%2$s</a>', get_edit_user_link(), $user_identity ) ); ?>
+<a href="<?php echo wp_logout_url( get_permalink() ); ?>" title="<?php esc_attr_e( 'Log out of this account' ); ?>"><?php _e( 'Log out &raquo;' ); ?></a></p>
 
 <?php else : ?>
 
@@ -94,8 +103,6 @@ _deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.
 
 <?php endif; ?>
 
-<!--<p><small><?php printf(__('<strong>XHTML:</strong> You can use these tags: <code>%s</code>'), allowed_tags()); ?></small></p>-->
-
 <p><textarea name="comment" id="comment" cols="58" rows="10" tabindex="4"></textarea></p>
 
 <p><input name="submit" type="submit" id="submit" tabindex="5" value="<?php esc_attr_e('Submit Comment'); ?>" />
index 52b1d72297ae6b57c366294cf26ef9a37c385b08..e4f8e724e0beff928350ed69fda3a275ac4ba078 100644 (file)
@@ -7,7 +7,14 @@
  * This file is here for Backwards compatibility with old themes and will be removed in a future version
  *
  */
-_deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.0', null, sprintf( __('Please include a %1$s template in your theme.'), basename(__FILE__) ) );
+_deprecated_file(
+       /* translators: %s: template name */
+       sprintf( __( 'Theme without %s' ), basename( __FILE__ ) ),
+       '3.0',
+       null,
+       /* translators: %s: template name */
+       sprintf( __( 'Please include a %s template in your theme.' ), basename( __FILE__ ) )
+);
 ?>
 
 <hr />
index b6f4fce64a3e943e55ecc5955fbaf0a647893ca2..432ae5b01fa4a42c3e4c3b27afa2b0326e96f636 100644 (file)
@@ -7,7 +7,14 @@
  * This file is here for Backwards compatibility with old themes and will be removed in a future version
  *
  */
-_deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.0', null, sprintf( __('Please include a %1$s template in your theme.'), basename(__FILE__) ) );
+_deprecated_file(
+       /* translators: %s: template name */
+       sprintf( __( 'Theme without %s' ), basename( __FILE__ ) ),
+       '3.0',
+       null,
+       /* translators: %s: template name */
+       sprintf( __( 'Please include a %s template in your theme.' ), basename( __FILE__ ) )
+);
 ?>
 <!DOCTYPE html>
 <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
@@ -15,7 +22,7 @@ _deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.
 <link rel="profile" href="http://gmpg.org/xfn/11" />
 <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
 
-<title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title>
+<title><?php echo wp_get_document_title(); ?></title>
 
 <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
 <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
index fc529c9a4bef0aa6a582cd4f02d692304d882304..f879ec4d41c85a628058d446b9a7ba5a005a7789 100644 (file)
@@ -7,7 +7,14 @@
  * This file is here for Backwards compatibility with old themes and will be removed in a future version
  *
  */
-_deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.0', null, sprintf( __('Please include a %1$s template in your theme.'), basename(__FILE__) ) );
+_deprecated_file(
+       /* translators: %s: template name */
+       sprintf( __( 'Theme without %s' ), basename( __FILE__ ) ),
+       '3.0',
+       null,
+       /* translators: %s: template name */
+       sprintf( __( 'Please include a %s template in your theme.' ), basename( __FILE__ ) )
+);
 ?>
        <div id="sidebar" role="complementary">
                <ul>
@@ -24,32 +31,60 @@ _deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.
                        -->
 
                        <?php if ( is_404() || is_category() || is_day() || is_month() ||
-                                               is_year() || is_search() || is_paged() ) {
+                                               is_year() || is_search() || is_paged() ) :
                        ?> <li>
 
-                       <?php /* If this is a 404 page */ if (is_404()) { ?>
-                       <?php /* If this is a category archive */ } elseif (is_category()) { ?>
-                       <p><?php printf(__('You are currently browsing the archives for the %s category.'), single_cat_title('', false)); ?></p>
+                       <?php if ( is_404() ) : /* If this is a 404 page */ ?>
+                       <?php elseif ( is_category() ) : /* If this is a category archive */ ?>
+                               <p><?php /* translators: %s: category name */
+                                       printf( __( 'You are currently browsing the archives for the %s category.' ),
+                                               single_cat_title( '', false )
+                                       );
+                               ?></p>
 
-                       <?php /* If this is a daily archive */ } elseif (is_day()) { ?>
-                       <p><?php printf(__('You are currently browsing the <a href="%1$s/">%2$s</a> blog archives for the day %3$s.'), get_bloginfo('url'), get_bloginfo('name'), get_the_time(__('l, F jS, Y'))); ?></p>
+                       <?php elseif ( is_day() ) : /* If this is a daily archive */ ?>
+                               <p><?php /* translators: 1: site link, 2: archive date */
+                                       printf( __( 'You are currently browsing the %1$s blog archives for the day %2$s.' ),
+                                               sprintf( '<a href="%1$s/">%2$s</a>', get_bloginfo( 'url' ), get_bloginfo( 'name' ) ),
+                                               get_the_time( __( 'l, F jS, Y' ) )
+                                       );
+                               ?></p>
 
-                       <?php /* If this is a monthly archive */ } elseif (is_month()) { ?>
-                       <p><?php printf(__('You are currently browsing the <a href="%1$s/">%2$s</a> blog archives for %3$s.'), get_bloginfo('url'), get_bloginfo('name'), get_the_time(__('F, Y'))); ?></p>
+                       <?php elseif ( is_month() ) : /* If this is a monthly archive */ ?>
+                               <p><?php /* translators: 1: site link, 2: archive month */
+                                       printf( __( 'You are currently browsing the %1$s blog archives for %2$s.' ),
+                                               sprintf( '<a href="%1$s/">%2$s</a>', get_bloginfo( 'url' ), get_bloginfo( 'name' ) ),
+                                               get_the_time( __( 'F, Y' ) )
+                                       );
+                               ?></p>
 
-                       <?php /* If this is a yearly archive */ } elseif (is_year()) { ?>
-                       <p><?php printf(__('You are currently browsing the <a href="%1$s/">%2$s</a> blog archives for the year %3$s.'), get_bloginfo('url'), get_bloginfo('name'), get_the_time('Y')); ?></p>
+                       <?php elseif ( is_year() ) : /* If this is a yearly archive */ ?>
+                               <p><?php /* translators: 1: site link, 2: archive year */
+                                       printf( __( 'You are currently browsing the %1$s blog archives for the year %2$s.' ),
+                                               sprintf( '<a href="%1$s/">%2$s</a>', get_bloginfo( 'url' ), get_bloginfo( 'name' ) ),
+                                               get_the_time( 'Y' )
+                                       );
+                               ?></p>
 
-                       <?php /* If this is a search result */ } elseif (is_search()) { ?>
-                       <p><?php printf(__('You have searched the <a href="%1$s/">%2$s</a> blog archives for <strong>&#8216;%3$s&#8217;</strong>. If you are unable to find anything in these search results, you can try one of these links.'), get_bloginfo('url'), get_bloginfo('name'), esc_html( get_search_query() ) ); ?></p>
+                       <?php elseif ( is_search() ) : /* If this is a search result */ ?>
+                               <p><?php /* translators: 1: site link, 2: search query */
+                                       printf( __( 'You have searched the %1$s blog archives for <strong>&#8216;%2$s&#8217;</strong>. If you are unable to find anything in these search results, you can try one of these links.' ),
+                                               sprintf( '<a href="%1$s/">%2$s</a>', get_bloginfo( 'url' ), get_bloginfo( 'name' ) ),
+                                               esc_html( get_search_query() )
+                                       ); 
+                               ?></p>
 
-                       <?php /* If this set is paginated */ } elseif (isset($_GET['paged']) && !empty($_GET['paged'])) { ?>
-                       <p><?php printf(__('You are currently browsing the <a href="%1$s/">%2$s</a> blog archives.'), get_bloginfo('url'), get_bloginfo('name')); ?></p>
+                       <?php elseif ( isset( $_GET['paged'] ) && ! empty( $_GET['paged'] ) ) : /* If this set is paginated */ ?>
+                               <p><?php /* translators: %s: site link */
+                                       printf( __( 'You are currently browsing the %s blog archives.' ),
+                                               sprintf( '<a href="%1$s/">%2$s</a>', get_bloginfo( 'url' ), get_bloginfo( 'name' ) )
+                                       );
+                               ?></p>
 
-                       <?php } ?>
+                       <?php endif; ?>
 
                        </li>
-               <?php }?>
+               <?php endif; ?>
                </ul>
                <ul role="navigation">
                        <?php wp_list_pages('title_li=<h2>' . __('Pages') . '</h2>' ); ?>
@@ -63,7 +98,7 @@ _deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.
                        <?php wp_list_categories(array('show_count' => 1, 'title_li' => '<h2>' . __('Categories') . '</h2>')); ?>
                </ul>
                <ul>
-                       <?php /* If this is the frontpage */ if ( is_home() || is_page() ) { ?>
+                       <?php if ( is_home() || is_page() ) { /* If this is the frontpage */ ?>
                                <?php wp_list_bookmarks(); ?>
 
                                <li><h2><?php _e('Meta'); ?></h2>
@@ -78,6 +113,6 @@ _deprecated_file( sprintf( __( 'Theme without %1$s' ), basename(__FILE__) ), '3.
                                </li>
                        <?php } ?>
 
-                       <?php endif; ?>
+                       <?php endif; /* ! dynamic_sidebar() */ ?>
                </ul>
        </div>
index 823d2ca471ee7615a2ed20117e79512579999a45..47c96617788d881344b37d032dde663c1f29b32f 100644 (file)
@@ -688,16 +688,16 @@ function switch_theme( $stylesheet ) {
                set_theme_mod( 'sidebars_widgets', array( 'time' => time(), 'data' => $_sidebars_widgets ) );
        }
 
-       $old_theme  = wp_get_theme();
-       $new_theme = wp_get_theme( $stylesheet );
+       $nav_menu_locations = get_theme_mod( 'nav_menu_locations' );
 
        if ( func_num_args() > 1 ) {
-               $template = $stylesheet;
                $stylesheet = func_get_arg( 1 );
-       } else {
-               $template = $new_theme->get_template();
        }
 
+       $old_theme = wp_get_theme();
+       $new_theme = wp_get_theme( $stylesheet );
+       $template  = $new_theme->get_template();
+
        update_option( 'template', $template );
        update_option( 'stylesheet', $stylesheet );
 
@@ -716,6 +716,9 @@ function switch_theme( $stylesheet ) {
        // Migrate from the old mods_{name} option to theme_mods_{slug}.
        if ( is_admin() && false === get_option( 'theme_mods_' . $stylesheet ) ) {
                $default_theme_mods = (array) get_option( 'mods_' . $new_name );
+               if ( ! empty( $nav_menu_locations ) && empty( $default_theme_mods['nav_menu_locations'] ) ) {
+                       $default_theme_mods['nav_menu_locations'] = $nav_menu_locations;
+               }
                add_option( "theme_mods_$stylesheet", $default_theme_mods );
        } else {
                /*
@@ -726,6 +729,13 @@ function switch_theme( $stylesheet ) {
                if ( 'wp_ajax_customize_save' === current_action() ) {
                        remove_theme_mod( 'sidebars_widgets' );
                }
+
+               if ( ! empty( $nav_menu_locations ) ) {
+                       $nav_mods = get_theme_mod( 'nav_menu_locations' );
+                       if ( empty( $nav_mods ) ) {
+                               set_theme_mod( 'nav_menu_locations', $nav_menu_locations );
+                       }
+               }
        }
 
        update_option( 'theme_switched', $old_theme->get_stylesheet() );
@@ -743,8 +753,10 @@ function switch_theme( $stylesheet ) {
 /**
  * Checks that current theme files 'index.php' and 'style.css' exists.
  *
- * Does not check the default theme, which is the fallback and should always exist.
+ * Does not initially check the default theme, which is the fallback and should always exist.
+ * But if it doesn't exist, it'll fall back to the latest core default theme that does exist.
  * Will switch theme to the fallback theme if current theme does not validate.
+ *
  * You can use the 'validate_current_theme' filter to return false to
  * disable this functionality.
  *
@@ -761,25 +773,42 @@ function validate_current_theme() {
         *
         * @param bool true Validation flag to check the current theme.
         */
-       if ( defined('WP_INSTALLING') || ! apply_filters( 'validate_current_theme', true ) )
+       if ( wp_installing() || ! apply_filters( 'validate_current_theme', true ) )
                return true;
 
-       if ( get_template() != WP_DEFAULT_THEME && !file_exists(get_template_directory() . '/index.php') ) {
-               switch_theme( WP_DEFAULT_THEME );
-               return false;
+       if ( ! file_exists( get_template_directory() . '/index.php' ) ) {
+               // Invalid.
+       } elseif ( ! file_exists( get_template_directory() . '/style.css' ) ) {
+               // Invalid.
+       } elseif ( is_child_theme() && ! file_exists( get_stylesheet_directory() . '/style.css' ) ) {
+               // Invalid.
+       } else {
+               // Valid.
+               return true;
        }
 
-       if ( get_stylesheet() != WP_DEFAULT_THEME && !file_exists(get_template_directory() . '/style.css') ) {
+       $default = wp_get_theme( WP_DEFAULT_THEME );
+       if ( $default->exists() ) {
                switch_theme( WP_DEFAULT_THEME );
                return false;
        }
 
-       if ( is_child_theme() && ! file_exists( get_stylesheet_directory() . '/style.css' ) ) {
-               switch_theme( WP_DEFAULT_THEME );
-               return false;
+       /**
+        * If we're in an invalid state but WP_DEFAULT_THEME doesn't exist,
+        * switch to the latest core default theme that's installed.
+        * If it turns out that this latest core default theme is our current
+        * theme, then there's nothing we can do about that, so we have to bail,
+        * rather than going into an infinite loop. (This is why there are
+        * checks against WP_DEFAULT_THEME above, also.) We also can't do anything
+        * if it turns out there is no default theme installed. (That's `false`.)
+        */
+       $default = WP_Theme::get_core_default_theme();
+       if ( false === $default || get_stylesheet() == $default->get_stylesheet() ) {
+               return true;
        }
 
-       return true;
+       switch_theme( $default->get_stylesheet() );
+       return false;
 }
 
 /**
@@ -983,6 +1012,83 @@ function get_header_image() {
        return esc_url_raw( set_url_scheme( $url ) );
 }
 
+/**
+ * Create image tag markup for a custom header image.
+ *
+ * @since 4.4.0
+ *
+ * @param array $attr Optional. Additional attributes for the image tag. Can be used
+ *                              to override the default attributes. Default empty.
+ * @return string HTML image element markup or empty string on failure.
+ */
+function get_header_image_tag( $attr = array() ) {
+       $header = get_custom_header();
+
+       if ( empty( $header->url ) ) {
+               return '';
+       }
+
+       $width = absint( $header->width );
+       $height = absint( $header->height );
+
+       $attr = wp_parse_args(
+               $attr,
+               array(
+                       'src' => $header->url,
+                       'width' => $width,
+                       'height' => $height,
+                       'alt' => get_bloginfo( 'name' ),
+               )
+       );
+
+       // Generate 'srcset' and 'sizes' if not already present.
+       if ( empty( $attr['srcset'] ) && ! empty( $header->attachment_id ) ) {
+               $image_meta = get_post_meta( $header->attachment_id, '_wp_attachment_metadata', true );
+               $size_array = array( $width, $height );
+
+               if ( is_array( $image_meta ) ) {
+                       $srcset = wp_calculate_image_srcset( $size_array, $header->url, $image_meta, $header->attachment_id );
+                       $sizes = ! empty( $attr['sizes'] ) ? $attr['sizes'] : wp_calculate_image_sizes( $size_array, $header->url, $image_meta, $header->attachment_id );
+
+                       if ( $srcset && $sizes ) {
+                               $attr['srcset'] = $srcset;
+                               $attr['sizes'] = $sizes;
+                       }
+               }
+       }
+
+       $attr = array_map( 'esc_attr', $attr );
+       $html = '<img';
+
+       foreach ( $attr as $name => $value ) {
+               $html .= ' ' . $name . '="' . $value . '"';
+       }
+
+       $html .= ' />';
+
+       /**
+        * Filter the markup of header images.
+        *
+        * @since 4.4.0
+        *
+        * @param string $html   The HTML image tag markup being filtered.
+        * @param object $header The custom header object returned by 'get_custom_header()'.
+        * @param array  $attr   Array of the attributes for the image tag.
+        */
+       return apply_filters( 'get_header_image_tag', $html, $header, $attr );
+}
+
+/**
+ * Display the image markup for a custom header image.
+ *
+ * @since 4.4.0
+ *
+ * @param array $attr Optional. Attributes for the image markup. Default empty.
+ */
+function the_header_image_tag( $attr = array() ) {
+       echo get_header_image_tag( $attr );
+}
+
 /**
  * Get random header image data from registered images in theme.
  *
@@ -1742,14 +1848,6 @@ function current_theme_supports( $feature ) {
        if ( !isset( $_wp_theme_features[$feature] ) )
                return false;
 
-       if ( 'title-tag' == $feature ) {
-               // Don't confirm support unless called internally.
-               $trace = debug_backtrace();
-               if ( ! in_array( $trace[1]['function'], array( '_wp_render_title_tag', 'wp_title' ) ) ) {
-                       return false;
-               }
-       }
-
        // If no args passed then no extra checks need be performed
        if ( func_num_args() <= 1 )
                return true;
@@ -1878,6 +1976,7 @@ function check_theme_switched() {
                        /** This action is documented in wp-includes/theme.php */
                        do_action( 'after_switch_theme', $stylesheet );
                }
+               flush_rewrite_rules();
 
                update_option( 'theme_switched', false );
        }
@@ -1886,7 +1985,11 @@ function check_theme_switched() {
 /**
  * Includes and instantiates the WP_Customize_Manager class.
  *
- * Fires when ?wp_customize=on or on wp-admin/customize.php.
+ * Loads the Customizer at plugins_loaded when accessing the customize.php admin
+ * page or when any request includes a wp_customize=on param, either as a GET
+ * query var or as POST data. This param is a signal for whether to bootstrap
+ * the Customizer when WordPress is loading, especially in the Customizer preview
+ * or when making Customizer Ajax requests for widgets or menus.
  *
  * @since 3.4.0
  *
@@ -1895,8 +1998,9 @@ function check_theme_switched() {
 function _wp_customize_include() {
        if ( ! ( ( isset( $_REQUEST['wp_customize'] ) && 'on' == $_REQUEST['wp_customize'] )
                || ( is_admin() && 'customize.php' == basename( $_SERVER['PHP_SELF'] ) )
-       ) )
+       ) ) {
                return;
+       }
 
        require_once ABSPATH . WPINC . '/class-wp-customize-manager.php';
        $GLOBALS['wp_customize'] = new WP_Customize_Manager();
index c39322ee46266b80586a4b691c710eea3e482da4..b2dd6c6eea29e3702e05973ab50eec2d33103014 100644 (file)
@@ -22,7 +22,7 @@
  * @param bool  $force_check Whether to bypass the transient cache and force a fresh update check. Defaults to false, true if $extra_stats is set.
  */
 function wp_version_check( $extra_stats = array(), $force_check = false ) {
-       if ( defined( 'WP_INSTALLING' ) ) {
+       if ( wp_installing() ) {
                return;
        }
 
@@ -86,14 +86,15 @@ function wp_version_check( $extra_stats = array(), $force_check = false ) {
        }
 
        $query = array(
-               'version'           => $wp_version,
-               'php'               => $php_version,
-               'locale'            => $locale,
-               'mysql'             => $mysql_version,
-               'local_package'     => isset( $wp_local_package ) ? $wp_local_package : '',
-               'blogs'             => $num_blogs,
-               'users'             => $user_count,
-               'multisite_enabled' => $multisite_enabled,
+               'version'            => $wp_version,
+               'php'                => $php_version,
+               'locale'             => $locale,
+               'mysql'              => $mysql_version,
+               'local_package'      => isset( $wp_local_package ) ? $wp_local_package : '',
+               'blogs'              => $num_blogs,
+               'users'              => $user_count,
+               'multisite_enabled'  => $multisite_enabled,
+               'initial_db_version' => get_site_option( 'initial_db_version' ),
        );
 
        $post_body = array(
@@ -187,7 +188,7 @@ function wp_version_check( $extra_stats = array(), $force_check = false ) {
  * @param array $extra_stats Extra statistics to report to the WordPress.org API.
  */
 function wp_update_plugins( $extra_stats = array() ) {
-       if ( defined( 'WP_INSTALLING' ) ) {
+       if ( wp_installing() ) {
                return;
        }
 
@@ -344,7 +345,7 @@ function wp_update_plugins( $extra_stats = array() ) {
  * @param array $extra_stats Extra statistics to report to the WordPress.org API.
  */
 function wp_update_themes( $extra_stats = array() ) {
-       if ( defined( 'WP_INSTALLING' ) ) {
+       if ( wp_installing() ) {
                return;
        }
        global $wp_version;
@@ -636,16 +637,16 @@ function _maybe_update_themes() {
  * @since 3.1.0
  */
 function wp_schedule_update_checks() {
-       if ( !wp_next_scheduled('wp_version_check') && !defined('WP_INSTALLING') )
+       if ( ! wp_next_scheduled( 'wp_version_check' ) && ! wp_installing() )
                wp_schedule_event(time(), 'twicedaily', 'wp_version_check');
 
-       if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') )
+       if ( ! wp_next_scheduled( 'wp_update_plugins' ) && ! wp_installing() )
                wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins');
 
-       if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') )
+       if ( ! wp_next_scheduled( 'wp_update_themes' ) && ! wp_installing() )
                wp_schedule_event(time(), 'twicedaily', 'wp_update_themes');
 
-       if ( ! wp_next_scheduled( 'wp_maybe_auto_update' ) && ! defined( 'WP_INSTALLING' ) ) {
+       if ( ! wp_next_scheduled( 'wp_maybe_auto_update' ) && ! wp_installing() ) {
                // Schedule auto updates for 7 a.m. and 7 p.m. in the timezone of the site.
                $next = strtotime( 'today 7am' );
                $now = time();
index 6f9de67706ad36f5d12ab8e4c263d8562f7ff809..45da472f1208f51b3b78a6719068f62092c82c0f 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * WordPress User API
+ * Core User API
  *
  * @package WordPress
  * @subpackage Users
@@ -135,8 +135,14 @@ function wp_authenticate_username_password($user, $username, $password) {
 
        $user = get_user_by('login', $username);
 
-       if ( !$user )
-               return new WP_Error( 'invalid_username', sprintf( __( '<strong>ERROR</strong>: Invalid username. <a href="%s">Lost your password?</a>' ), wp_lostpassword_url() ) );
+       if ( !$user ) {
+               return new WP_Error( 'invalid_username',
+                       __( '<strong>ERROR</strong>: Invalid username.' ) .
+                       ' <a href="' . wp_lostpassword_url() . '">' .
+                       __( 'Lost your password?' ) .
+                       '</a>'
+               );
+       }
 
        /**
         * Filter whether the given user can be authenticated with the provided $password.
@@ -151,9 +157,18 @@ function wp_authenticate_username_password($user, $username, $password) {
        if ( is_wp_error($user) )
                return $user;
 
-       if ( !wp_check_password($password, $user->user_pass, $user->ID) )
-               return new WP_Error( 'incorrect_password', sprintf( __( '<strong>ERROR</strong>: The password you entered for the username <strong>%1$s</strong> is incorrect. <a href="%2$s">Lost your password?</a>' ),
-               $username, wp_lostpassword_url() ) );
+       if ( ! wp_check_password( $password, $user->user_pass, $user->ID ) ) {
+               return new WP_Error( 'incorrect_password',
+                       sprintf(
+                               /* translators: %s: user name */
+                               __( '<strong>ERROR</strong>: The password you entered for the username %s is incorrect.' ),
+                               '<strong>' . $username . '</strong>'
+                       ) .
+                       ' <a href="' . wp_lostpassword_url() . '">' .
+                       __( 'Lost your password?' ) .
+                       '</a>'
+               );
+       }
 
        return $user;
 }
@@ -258,7 +273,7 @@ function wp_validate_logged_in_cookie( $user_id ) {
  * @since 4.3.0 Added `$public_only` argument. Added the ability to pass an array
  *              of post types to `$post_type`.
  *
- * @global wpdb $wpdb WordPress database object for queries.
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int          $userid      User ID.
  * @param array|string $post_type   Optional. Single post type or array of post types to count the number of posts for. Default 'post'.
@@ -292,7 +307,7 @@ function count_user_posts( $userid, $post_type = 'post', $public_only = false )
  *
  * @since 3.0.0
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param array        $users       Array of user IDs.
  * @param string|array $post_type   Optional. Single post type or array of post types to check. Defaults to 'post'.
@@ -352,7 +367,7 @@ function get_current_user_id() {
  *
  * @since 2.0.0
  *
- * @global wpdb $wpdb WordPress database object for queries.
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $option     User option name.
  * @param int    $user       Optional. User ID.
@@ -404,7 +419,7 @@ function get_user_option( $option, $user = 0, $deprecated = '' ) {
  *
  * @since 2.0.0
  *
- * @global wpdb $wpdb WordPress database object for queries.
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int    $user_id     User ID.
  * @param string $option_name User option name.
@@ -432,7 +447,7 @@ function update_user_option( $user_id, $option_name, $newvalue, $global = false
  *
  * @since 3.0.0
  *
- * @global wpdb $wpdb WordPress database object for queries.
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int    $user_id     User ID
  * @param string $option_name User option name.
@@ -448,693 +463,6 @@ function delete_user_option( $user_id, $option_name, $global = false ) {
        return delete_user_meta( $user_id, $option_name );
 }
 
-/**
- * WordPress User Query class.
- *
- * @since 3.1.0
- *
- * @see WP_User_Query::prepare_query() for information on accepted arguments.
- */
-class WP_User_Query {
-
-       /**
-        * Query vars, after parsing
-        *
-        * @since 3.5.0
-        * @access public
-        * @var array
-        */
-       public $query_vars = array();
-
-       /**
-        * List of found user ids
-        *
-        * @since 3.1.0
-        * @access private
-        * @var array
-        */
-       private $results;
-
-       /**
-        * Total number of found users for the current query
-        *
-        * @since 3.1.0
-        * @access private
-        * @var int
-        */
-       private $total_users = 0;
-
-       /**
-        * Metadata query container.
-        *
-        * @since 4.2.0
-        * @access public
-        * @var object WP_Meta_Query
-        */
-       public $meta_query = false;
-
-       private $compat_fields = array( 'results', 'total_users' );
-
-       // SQL clauses
-       public $query_fields;
-       public $query_from;
-       public $query_where;
-       public $query_orderby;
-       public $query_limit;
-
-       /**
-        * PHP5 constructor.
-        *
-        * @since 3.1.0
-        *
-        * @param null|string|array $args Optional. The query variables.
-        */
-       public function __construct( $query = null ) {
-               if ( ! empty( $query ) ) {
-                       $this->prepare_query( $query );
-                       $this->query();
-               }
-       }
-
-       /**
-        * Prepare the query variables.
-        *
-        * @since 3.1.0
-        * @since 4.2.0 Added 'meta_value_num' support for `$orderby` parameter. Added multi-dimensional array syntax
-        *              for `$orderby` parameter.
-        * @since 4.3.0 Added 'has_published_posts' parameter.
-        * @access public
-        *
-        * @global wpdb $wpdb
-        * @global int  $blog_id
-        *
-        * @param string|array $query {
-        *     Optional. Array or string of Query parameters.
-        *
-        *     @type int          $blog_id             The site ID. Default is the global blog id.
-        *     @type string       $role                Role name. Default empty.
-        *     @type string       $meta_key            User meta key. Default empty.
-        *     @type string       $meta_value          User meta value. Default empty.
-        *     @type string       $meta_compare        Comparison operator to test the `$meta_value`. Accepts '=', '!=',
-        *                                             '>', '>=', '<', '<=', 'LIKE', 'NOT LIKE', 'IN', 'NOT IN',
-        *                                             'BETWEEN', 'NOT BETWEEN', 'EXISTS', 'NOT EXISTS', 'REGEXP',
-        *                                             'NOT REGEXP', or 'RLIKE'. Default '='.
-        *     @type array        $include             An array of user IDs to include. Default empty array.
-        *     @type array        $exclude             An array of user IDs to exclude. Default empty array.
-        *     @type string       $search              Search keyword. Searches for possible string matches on columns.
-        *                                             When `$search_columns` is left empty, it tries to determine which
-        *                                             column to search in based on search string. Default empty.
-        *     @type array        $search_columns      Array of column names to be searched. Accepts 'ID', 'login',
-        *                                             'nicename', 'email', 'url'. Default empty array.
-        *     @type string|array $orderby             Field(s) to sort the retrieved users by. May be a single value,
-        *                                             an array of values, or a multi-dimensional array with fields as
-        *                                             keys and orders ('ASC' or 'DESC') as values. Accepted values are
-        *                                             'ID', 'display_name' (or 'name'), 'user_login' (or 'login'),
-        *                                             'user_nicename' (or 'nicename'), 'user_email' (or 'email'),
-        *                                             'user_url' (or 'url'), 'user_registered' (or 'registered'),
-        *                                             'post_count', 'meta_value', 'meta_value_num', the value of
-        *                                             `$meta_key`, or an array key of `$meta_query`. To use
-        *                                             'meta_value' or 'meta_value_num', `$meta_key` must be also be
-        *                                             defined. Default 'user_login'.
-        *     @type string       $order               Designates ascending or descending order of users. Order values
-        *                                             passed as part of an `$orderby` array take precedence over this
-        *                                             parameter. Accepts 'ASC', 'DESC'. Default 'ASC'.
-        *     @type int          $offset              Number of users to offset in retrieved results. Can be used in
-        *                                             conjunction with pagination. Default 0.
-        *     @type int          $number              Number of users to limit the query for. Can be used in
-        *                                             conjunction with pagination. Value -1 (all) is not supported.
-        *                                             Default empty (all users).
-        *     @type bool         $count_total         Whether to count the total number of users found. If pagination
-        *                                             is not needed, setting this to false can improve performance.
-        *                                             Default true.
-        *     @type string|array $fields              Which fields to return. Single or all fields (string), or array
-        *                                             of fields. Accepts 'ID', 'display_name', 'login', 'nicename',
-        *                                             'email', 'url', 'registered'. Use 'all' for all fields and
-        *                                             'all_with_meta' to include meta fields. Default 'all'.
-        *     @type string       $who                 Type of users to query. Accepts 'authors'.
-        *                                             Default empty (all users).
-        *     @type bool|array   $has_published_posts Pass an array of post types to filter results to users who have
-        *                                             published posts in those post types. `true` is an alias for all
-        *                                             public post types.
-        * }
-        */
-       public function prepare_query( $query = array() ) {
-               global $wpdb;
-
-               if ( empty( $this->query_vars ) || ! empty( $query ) ) {
-                       $this->query_limit = null;
-                       $this->query_vars = wp_parse_args( $query, array(
-                               'blog_id' => $GLOBALS['blog_id'],
-                               'role' => '',
-                               'meta_key' => '',
-                               'meta_value' => '',
-                               'meta_compare' => '',
-                               'include' => array(),
-                               'exclude' => array(),
-                               'search' => '',
-                               'search_columns' => array(),
-                               'orderby' => 'login',
-                               'order' => 'ASC',
-                               'offset' => '',
-                               'number' => '',
-                               'count_total' => true,
-                               'fields' => 'all',
-                               'who' => '',
-                               'has_published_posts' => null,
-                       ) );
-               }
-
-               /**
-                * Fires before the WP_User_Query has been parsed.
-                *
-                * The passed WP_User_Query object contains the query variables, not
-                * yet passed into SQL.
-                *
-                * @since 4.0.0
-                *
-                * @param WP_User_Query $this The current WP_User_Query instance,
-                *                            passed by reference.
-                */
-               do_action( 'pre_get_users', $this );
-
-               $qv =& $this->query_vars;
-
-               if ( is_array( $qv['fields'] ) ) {
-                       $qv['fields'] = array_unique( $qv['fields'] );
-
-                       $this->query_fields = array();
-                       foreach ( $qv['fields'] as $field ) {
-                               $field = 'ID' === $field ? 'ID' : sanitize_key( $field );
-                               $this->query_fields[] = "$wpdb->users.$field";
-                       }
-                       $this->query_fields = implode( ',', $this->query_fields );
-               } elseif ( 'all' == $qv['fields'] ) {
-                       $this->query_fields = "$wpdb->users.*";
-               } else {
-                       $this->query_fields = "$wpdb->users.ID";
-               }
-
-               if ( isset( $qv['count_total'] ) && $qv['count_total'] )
-                       $this->query_fields = 'SQL_CALC_FOUND_ROWS ' . $this->query_fields;
-
-               $this->query_from = "FROM $wpdb->users";
-               $this->query_where = "WHERE 1=1";
-
-               // Parse and sanitize 'include', for use by 'orderby' as well as 'include' below.
-               if ( ! empty( $qv['include'] ) ) {
-                       $include = wp_parse_id_list( $qv['include'] );
-               } else {
-                       $include = false;
-               }
-
-               $blog_id = 0;
-               if ( isset( $qv['blog_id'] ) ) {
-                       $blog_id = absint( $qv['blog_id'] );
-               }
-
-               if ( isset( $qv['who'] ) && 'authors' == $qv['who'] && $blog_id ) {
-                       $qv['meta_key'] = $wpdb->get_blog_prefix( $blog_id ) . 'user_level';
-                       $qv['meta_value'] = 0;
-                       $qv['meta_compare'] = '!=';
-                       $qv['blog_id'] = $blog_id = 0; // Prevent extra meta query
-               }
-
-               if ( $qv['has_published_posts'] && $blog_id ) {
-                       if ( true === $qv['has_published_posts'] ) {
-                               $post_types = get_post_types( array( 'public' => true ) );
-                       } else {
-                               $post_types = (array) $qv['has_published_posts'];
-                       }
-
-                       foreach ( $post_types as &$post_type ) {
-                               $post_type = $wpdb->prepare( '%s', $post_type );
-                       }
-
-                       $posts_table = $wpdb->get_blog_prefix( $blog_id ) . 'posts';
-                       $this->query_where .= " AND $wpdb->users.ID IN ( SELECT DISTINCT $posts_table.post_author FROM $posts_table WHERE $posts_table.post_status = 'publish' AND $posts_table.post_type IN ( " . join( ", ", $post_types ) . " ) )";
-               }
-
-               // Meta query.
-               $this->meta_query = new WP_Meta_Query();
-               $this->meta_query->parse_query_vars( $qv );
-
-               $role = '';
-               if ( isset( $qv['role'] ) ) {
-                       $role = trim( $qv['role'] );
-               }
-
-               if ( $blog_id && ( $role || is_multisite() ) ) {
-                       $cap_meta_query = array();
-                       $cap_meta_query['key'] = $wpdb->get_blog_prefix( $blog_id ) . 'capabilities';
-
-                       if ( $role ) {
-                               $cap_meta_query['value'] = '"' . $role . '"';
-                               $cap_meta_query['compare'] = 'like';
-                       }
-
-                       if ( empty( $this->meta_query->queries ) ) {
-                               $this->meta_query->queries = array( $cap_meta_query );
-                       } elseif ( ! in_array( $cap_meta_query, $this->meta_query->queries, true ) ) {
-                               // Append the cap query to the original queries and reparse the query.
-                               $this->meta_query->queries = array(
-                                       'relation' => 'AND',
-                                       array( $this->meta_query->queries, $cap_meta_query ),
-                               );
-                       }
-
-                       $this->meta_query->parse_query_vars( $this->meta_query->queries );
-               }
-
-               if ( ! empty( $this->meta_query->queries ) ) {
-                       $clauses = $this->meta_query->get_sql( 'user', $wpdb->users, 'ID', $this );
-                       $this->query_from .= $clauses['join'];
-                       $this->query_where .= $clauses['where'];
-
-                       if ( $this->meta_query->has_or_relation() ) {
-                               $this->query_fields = 'DISTINCT ' . $this->query_fields;
-                       }
-               }
-
-               // sorting
-               $qv['order'] = isset( $qv['order'] ) ? strtoupper( $qv['order'] ) : '';
-               $order = $this->parse_order( $qv['order'] );
-
-               if ( empty( $qv['orderby'] ) ) {
-                       // Default order is by 'user_login'.
-                       $ordersby = array( 'user_login' => $order );
-               } elseif ( is_array( $qv['orderby'] ) ) {
-                       $ordersby = $qv['orderby'];
-               } else {
-                       // 'orderby' values may be a comma- or space-separated list.
-                       $ordersby = preg_split( '/[,\s]+/', $qv['orderby'] );
-               }
-
-               $orderby_array = array();
-               foreach ( $ordersby as $_key => $_value ) {
-                       if ( ! $_value ) {
-                               continue;
-                       }
-
-                       if ( is_int( $_key ) ) {
-                               // Integer key means this is a flat array of 'orderby' fields.
-                               $_orderby = $_value;
-                               $_order = $order;
-                       } else {
-                               // Non-integer key means this the key is the field and the value is ASC/DESC.
-                               $_orderby = $_key;
-                               $_order = $_value;
-                       }
-
-                       $parsed = $this->parse_orderby( $_orderby );
-
-                       if ( ! $parsed ) {
-                               continue;
-                       }
-
-                       $orderby_array[] = $parsed . ' ' . $this->parse_order( $_order );
-               }
-
-               // If no valid clauses were found, order by user_login.
-               if ( empty( $orderby_array ) ) {
-                       $orderby_array[] = "user_login $order";
-               }
-
-               $this->query_orderby = 'ORDER BY ' . implode( ', ', $orderby_array );
-
-               // limit
-               if ( isset( $qv['number'] ) && $qv['number'] ) {
-                       if ( $qv['offset'] )
-                               $this->query_limit = $wpdb->prepare("LIMIT %d, %d", $qv['offset'], $qv['number']);
-                       else
-                               $this->query_limit = $wpdb->prepare("LIMIT %d", $qv['number']);
-               }
-
-               $search = '';
-               if ( isset( $qv['search'] ) )
-                       $search = trim( $qv['search'] );
-
-               if ( $search ) {
-                       $leading_wild = ( ltrim($search, '*') != $search );
-                       $trailing_wild = ( rtrim($search, '*') != $search );
-                       if ( $leading_wild && $trailing_wild )
-                               $wild = 'both';
-                       elseif ( $leading_wild )
-                               $wild = 'leading';
-                       elseif ( $trailing_wild )
-                               $wild = 'trailing';
-                       else
-                               $wild = false;
-                       if ( $wild )
-                               $search = trim($search, '*');
-
-                       $search_columns = array();
-                       if ( $qv['search_columns'] )
-                               $search_columns = array_intersect( $qv['search_columns'], array( 'ID', 'user_login', 'user_email', 'user_url', 'user_nicename' ) );
-                       if ( ! $search_columns ) {
-                               if ( false !== strpos( $search, '@') )
-                                       $search_columns = array('user_email');
-                               elseif ( is_numeric($search) )
-                                       $search_columns = array('user_login', 'ID');
-                               elseif ( preg_match('|^https?://|', $search) && ! ( is_multisite() && wp_is_large_network( 'users' ) ) )
-                                       $search_columns = array('user_url');
-                               else
-                                       $search_columns = array('user_login', 'user_url', 'user_email', 'user_nicename', 'display_name');
-                       }
-
-                       /**
-                        * Filter the columns to search in a WP_User_Query search.
-                        *
-                        * The default columns depend on the search term, and include 'user_email',
-                        * 'user_login', 'ID', 'user_url', 'display_name', and 'user_nicename'.
-                        *
-                        * @since 3.6.0
-                        *
-                        * @param array         $search_columns Array of column names to be searched.
-                        * @param string        $search         Text being searched.
-                        * @param WP_User_Query $this           The current WP_User_Query instance.
-                        */
-                       $search_columns = apply_filters( 'user_search_columns', $search_columns, $search, $this );
-
-                       $this->query_where .= $this->get_search_sql( $search, $search_columns, $wild );
-               }
-
-               if ( ! empty( $include ) ) {
-                       // Sanitized earlier.
-                       $ids = implode( ',', $include );
-                       $this->query_where .= " AND $wpdb->users.ID IN ($ids)";
-               } elseif ( ! empty( $qv['exclude'] ) ) {
-                       $ids = implode( ',', wp_parse_id_list( $qv['exclude'] ) );
-                       $this->query_where .= " AND $wpdb->users.ID NOT IN ($ids)";
-               }
-
-               // Date queries are allowed for the user_registered field.
-               if ( ! empty( $qv['date_query'] ) && is_array( $qv['date_query'] ) ) {
-                       $date_query = new WP_Date_Query( $qv['date_query'], 'user_registered' );
-                       $this->query_where .= $date_query->get_sql();
-               }
-
-               /**
-                * Fires after the WP_User_Query has been parsed, and before
-                * the query is executed.
-                *
-                * The passed WP_User_Query object contains SQL parts formed
-                * from parsing the given query.
-                *
-                * @since 3.1.0
-                *
-                * @param WP_User_Query $this The current WP_User_Query instance,
-                *                            passed by reference.
-                */
-               do_action_ref_array( 'pre_user_query', array( &$this ) );
-       }
-
-       /**
-        * Execute the query, with the current variables.
-        *
-        * @since 3.1.0
-        *
-        * @global wpdb $wpdb WordPress database object for queries.
-        */
-       public function query() {
-               global $wpdb;
-
-               $qv =& $this->query_vars;
-
-               $query = "SELECT $this->query_fields $this->query_from $this->query_where $this->query_orderby $this->query_limit";
-
-               if ( is_array( $qv['fields'] ) || 'all' == $qv['fields'] ) {
-                       $this->results = $wpdb->get_results( $query );
-               } else {
-                       $this->results = $wpdb->get_col( $query );
-               }
-
-               /**
-                * Filter SELECT FOUND_ROWS() query for the current WP_User_Query instance.
-                *
-                * @since 3.2.0
-                *
-                * @global wpdb $wpdb WordPress database abstraction object.
-                *
-                * @param string $sql The SELECT FOUND_ROWS() query for the current WP_User_Query.
-                */
-               if ( isset( $qv['count_total'] ) && $qv['count_total'] )
-                       $this->total_users = $wpdb->get_var( apply_filters( 'found_users_query', 'SELECT FOUND_ROWS()' ) );
-
-               if ( !$this->results )
-                       return;
-
-               if ( 'all_with_meta' == $qv['fields'] ) {
-                       cache_users( $this->results );
-
-                       $r = array();
-                       foreach ( $this->results as $userid )
-                               $r[ $userid ] = new WP_User( $userid, '', $qv['blog_id'] );
-
-                       $this->results = $r;
-               } elseif ( 'all' == $qv['fields'] ) {
-                       foreach ( $this->results as $key => $user ) {
-                               $this->results[ $key ] = new WP_User( $user, '', $qv['blog_id'] );
-                       }
-               }
-       }
-
-       /**
-        * Retrieve query variable.
-        *
-        * @since 3.5.0
-        * @access public
-        *
-        * @param string $query_var Query variable key.
-        * @return mixed
-        */
-       public function get( $query_var ) {
-               if ( isset( $this->query_vars[$query_var] ) )
-                       return $this->query_vars[$query_var];
-
-               return null;
-       }
-
-       /**
-        * Set query variable.
-        *
-        * @since 3.5.0
-        * @access public
-        *
-        * @param string $query_var Query variable key.
-        * @param mixed $value Query variable value.
-        */
-       public function set( $query_var, $value ) {
-               $this->query_vars[$query_var] = $value;
-       }
-
-       /**
-        * Used internally to generate an SQL string for searching across multiple columns
-        *
-        * @access protected
-        * @since 3.1.0
-        *
-        * @global wpdb $wpdb
-        *
-        * @param string $string
-        * @param array  $cols
-        * @param bool   $wild   Whether to allow wildcard searches. Default is false for Network Admin, true for single site.
-        *                       Single site allows leading and trailing wildcards, Network Admin only trailing.
-        * @return string
-        */
-       protected function get_search_sql( $string, $cols, $wild = false ) {
-               global $wpdb;
-
-               $searches = array();
-               $leading_wild = ( 'leading' == $wild || 'both' == $wild ) ? '%' : '';
-               $trailing_wild = ( 'trailing' == $wild || 'both' == $wild ) ? '%' : '';
-               $like = $leading_wild . $wpdb->esc_like( $string ) . $trailing_wild;
-
-               foreach ( $cols as $col ) {
-                       if ( 'ID' == $col ) {
-                               $searches[] = $wpdb->prepare( "$col = %s", $string );
-                       } else {
-                               $searches[] = $wpdb->prepare( "$col LIKE %s", $like );
-                       }
-               }
-
-               return ' AND (' . implode(' OR ', $searches) . ')';
-       }
-
-       /**
-        * Return the list of users.
-        *
-        * @since 3.1.0
-        * @access public
-        *
-        * @return array Array of results.
-        */
-       public function get_results() {
-               return $this->results;
-       }
-
-       /**
-        * Return the total number of users for the current query.
-        *
-        * @since 3.1.0
-        * @access public
-        *
-        * @return int Number of total users.
-        */
-       public function get_total() {
-               return $this->total_users;
-       }
-
-       /**
-        * Parse and sanitize 'orderby' keys passed to the user query.
-        *
-        * @since 4.2.0
-        * @access protected
-        *
-        * @global wpdb $wpdb WordPress database abstraction object.
-        *
-        * @param string $orderby Alias for the field to order by.
-        * @return string Value to used in the ORDER clause, if `$orderby` is valid.
-        */
-       protected function parse_orderby( $orderby ) {
-               global $wpdb;
-
-               $meta_query_clauses = $this->meta_query->get_clauses();
-
-               $_orderby = '';
-               if ( in_array( $orderby, array( 'login', 'nicename', 'email', 'url', 'registered' ) ) ) {
-                       $_orderby = 'user_' . $orderby;
-               } elseif ( in_array( $orderby, array( 'user_login', 'user_nicename', 'user_email', 'user_url', 'user_registered' ) ) ) {
-                       $_orderby = $orderby;
-               } elseif ( 'name' == $orderby || 'display_name' == $orderby ) {
-                       $_orderby = 'display_name';
-               } elseif ( 'post_count' == $orderby ) {
-                       // todo: avoid the JOIN
-                       $where = get_posts_by_author_sql( 'post' );
-                       $this->query_from .= " LEFT OUTER JOIN (
-                               SELECT post_author, COUNT(*) as post_count
-                               FROM $wpdb->posts
-                               $where
-                               GROUP BY post_author
-                       ) p ON ({$wpdb->users}.ID = p.post_author)
-                       ";
-                       $_orderby = 'post_count';
-               } elseif ( 'ID' == $orderby || 'id' == $orderby ) {
-                       $_orderby = 'ID';
-               } elseif ( 'meta_value' == $orderby || $this->get( 'meta_key' ) == $orderby ) {
-                       $_orderby = "$wpdb->usermeta.meta_value";
-               } elseif ( 'meta_value_num' == $orderby ) {
-                       $_orderby = "$wpdb->usermeta.meta_value+0";
-               } elseif ( 'include' === $orderby && ! empty( $this->query_vars['include'] ) ) {
-                       $include = wp_parse_id_list( $this->query_vars['include'] );
-                       $include_sql = implode( ',', $include );
-                       $_orderby = "FIELD( $wpdb->users.ID, $include_sql )";
-               } elseif ( isset( $meta_query_clauses[ $orderby ] ) ) {
-                       $meta_clause = $meta_query_clauses[ $orderby ];
-                       $_orderby = sprintf( "CAST(%s.meta_value AS %s)", esc_sql( $meta_clause['alias'] ), esc_sql( $meta_clause['cast'] ) );
-               }
-
-               return $_orderby;
-       }
-
-       /**
-        * Parse an 'order' query variable and cast it to ASC or DESC as necessary.
-        *
-        * @since 4.2.0
-        * @access protected
-        *
-        * @param string $order The 'order' query variable.
-        * @return string The sanitized 'order' query variable.
-        */
-       protected function parse_order( $order ) {
-               if ( ! is_string( $order ) || empty( $order ) ) {
-                       return 'DESC';
-               }
-
-               if ( 'ASC' === strtoupper( $order ) ) {
-                       return 'ASC';
-               } else {
-                       return 'DESC';
-               }
-       }
-
-       /**
-        * Make private properties readable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param string $name Property to get.
-        * @return mixed Property.
-        */
-       public function __get( $name ) {
-               if ( in_array( $name, $this->compat_fields ) ) {
-                       return $this->$name;
-               }
-       }
-
-       /**
-        * Make private properties settable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param string $name  Property to check if set.
-        * @param mixed  $value Property value.
-        * @return mixed Newly-set property.
-        */
-       public function __set( $name, $value ) {
-               if ( in_array( $name, $this->compat_fields ) ) {
-                       return $this->$name = $value;
-               }
-       }
-
-       /**
-        * Make private properties checkable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param string $name Property to check if set.
-        * @return bool Whether the property is set.
-        */
-       public function __isset( $name ) {
-               if ( in_array( $name, $this->compat_fields ) ) {
-                       return isset( $this->$name );
-               }
-       }
-
-       /**
-        * Make private properties un-settable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param string $name Property to unset.
-        */
-       public function __unset( $name ) {
-               if ( in_array( $name, $this->compat_fields ) ) {
-                       unset( $this->$name );
-               }
-       }
-
-       /**
-        * Make private/protected methods readable for backwards compatibility.
-        *
-        * @since 4.0.0
-        * @access public
-        *
-        * @param callable $name      Method to call.
-        * @param array    $arguments Arguments to pass when calling.
-        * @return mixed Return value of the callback, false otherwise.
-        */
-       public function __call( $name, $arguments ) {
-               if ( 'get_search_sql' === $name ) {
-                       return call_user_func_array( array( $this, $name ), $arguments );
-               }
-               return false;
-       }
-}
-
 /**
  * Retrieve list of users matching criteria.
  *
@@ -1161,7 +489,7 @@ function get_users( $args = array() ) {
  *
  * @since 3.0.0
  *
- * @global wpdb $wpdb WordPress database object for queries.
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param int  $user_id User ID
  * @param bool $all     Whether to retrieve all blogs, or only blogs that are not
@@ -1270,17 +598,58 @@ function get_blogs_of_user( $user_id, $all = false ) {
  * @return bool
  */
 function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) {
+       global $wpdb;
+
        $user_id = (int) $user_id;
        $blog_id = (int) $blog_id;
 
-       if ( empty( $user_id ) )
+       if ( empty( $user_id ) ) {
                $user_id = get_current_user_id();
+       }
 
-       if ( empty( $blog_id ) )
+       // Technically not needed, but does save calls to get_blog_details and get_user_meta
+       // in the event that the function is called when a user isn't logged in
+       if ( empty( $user_id ) ) {
+               return false;
+       } else {
+               $user = get_userdata( $user_id );
+               if ( ! $user instanceof WP_User ) {
+                       return false;
+               }
+       }
+
+       if ( ! is_multisite() ) {
+               return true;
+       }
+
+       if ( empty( $blog_id ) ) {
                $blog_id = get_current_blog_id();
+       }
 
-       $blogs = get_blogs_of_user( $user_id );
-       return array_key_exists( $blog_id, $blogs );
+       $blog = get_blog_details( $blog_id );
+
+       if ( ! $blog || ! isset( $blog->domain ) || $blog->archived || $blog->spam || $blog->deleted ) {
+               return false;
+       }
+
+       $keys = get_user_meta( $user_id );
+       if ( empty( $keys ) ) {
+               return false;
+       }
+
+       // no underscore before capabilities in $base_capabilities_key
+       $base_capabilities_key = $wpdb->base_prefix . 'capabilities';
+       $site_capabilities_key = $wpdb->base_prefix . $blog_id . '_capabilities';
+
+       if ( isset( $keys[ $base_capabilities_key ] ) && $blog_id == 1 ) {
+               return true;
+       }
+
+       if ( isset( $keys[ $site_capabilities_key ] ) ) {
+               return true;
+       }
+
+       return false;
 }
 
 /**
@@ -1365,8 +734,9 @@ function update_user_meta($user_id, $meta_key, $meta_value, $prev_value = '') {
  * Using $strategy = 'memory' this is memory-intensive and should handle around 10^5 users, but see WP Bug #12257.
  *
  * @since 3.0.0
+ * @since 4.4.0 The number of users with no role is now included in the `none` element.
  *
- * @global wpdb $wpdb
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param string $strategy 'time' or 'memory'
  * @return array Includes a grand total and an array of counts indexed by role strings.
@@ -1387,6 +757,7 @@ function count_users($strategy = 'time') {
                foreach ( $avail_roles as $this_role => $name ) {
                        $select_count[] = $wpdb->prepare( "COUNT(NULLIF(`meta_value` LIKE %s, false))", '%' . $wpdb->esc_like( '"' . $this_role . '"' ) . '%');
                }
+               $select_count[] = "COUNT(NULLIF(`meta_value` = 'a:0:{}', false))";
                $select_count = implode(', ', $select_count);
 
                // Add the meta_value index to the selection list, then run the query.
@@ -1402,13 +773,17 @@ function count_users($strategy = 'time') {
                        }
                }
 
+               $role_counts['none'] = (int) $row[$col++];
+
                // Get the meta_value index from the end of the result set.
                $total_users = (int) $row[$col];
 
                $result['total_users'] = $total_users;
                $result['avail_roles'] =& $role_counts;
        } else {
-               $avail_roles = array();
+               $avail_roles = array(
+                       'none' => 0,
+               );
 
                $users_of_blog = $wpdb->get_col( "SELECT meta_value FROM $wpdb->usermeta WHERE meta_key = '{$blog_prefix}capabilities'" );
 
@@ -1416,6 +791,9 @@ function count_users($strategy = 'time') {
                        $b_roles = maybe_unserialize($caps_meta);
                        if ( ! is_array( $b_roles ) )
                                continue;
+                       if ( empty( $b_roles ) ) {
+                               $avail_roles['none']++;
+                       }
                        foreach ( $b_roles as $b_role => $val ) {
                                if ( isset($avail_roles[$b_role]) ) {
                                        $avail_roles[$b_role]++;
@@ -1429,6 +807,10 @@ function count_users($strategy = 'time') {
                $result['avail_roles'] =& $avail_roles;
        }
 
+       if ( is_multisite() ) {
+               $result['avail_roles']['none'] = 0;
+       }
+
        return $result;
 }
 
@@ -1489,7 +871,6 @@ function setup_userdata($for_user_id = '') {
  *
  * @since 2.3.0
  *
- * @global wpdb $wpdb WordPress database object for queries.
  * @global int  $blog_id
  *
  * @param array|string $args {
@@ -1553,6 +934,17 @@ function wp_dropdown_users( $args = '' ) {
 
        $query_args = wp_array_slice_assoc( $r, array( 'blog_id', 'include', 'exclude', 'orderby', 'order', 'who' ) );
        $query_args['fields'] = array( 'ID', 'user_login', $show );
+
+       /**
+        * Filter the query arguments for the user drop-down.
+        *
+        * @since 4.4.0
+        *
+        * @param array $query_args The query arguments for wp_dropdown_users().
+        * @param array $r          The default arguments for wp_dropdown_users().
+        */
+       $query_args = apply_filters( 'wp_dropdown_users_args', $query_args, $r );
+
        $users = get_users( $query_args );
 
        $output = '';
@@ -1722,9 +1114,18 @@ function sanitize_user_field($field, $value, $user_id, $context) {
  *
  * @since 3.0.0
  *
- * @param object $user User object to be cached
+ * @param object|WP_User $user User object to be cached
+ * @return bool|null Returns false on failure.
  */
-function update_user_caches($user) {
+function update_user_caches( $user ) {
+       if ( $user instanceof WP_User ) {
+               if ( ! $user->exists() ) {
+                       return false;
+               }
+
+               $user = $user->data;
+       }
+
        wp_cache_add($user->ID, $user, 'users');
        wp_cache_add($user->user_login, $user->ID, 'userlogins');
        wp_cache_add($user->user_email, $user->ID, 'useremail');
@@ -1735,6 +1136,7 @@ function update_user_caches($user) {
  * Clean all user caches
  *
  * @since 3.0.0
+ * @since 4.4.0 'clean_user_cache' action was added.
  *
  * @param WP_User|int $user User object or ID to be cleaned from the cache
  */
@@ -1749,6 +1151,16 @@ function clean_user_cache( $user ) {
        wp_cache_delete( $user->user_login, 'userlogins' );
        wp_cache_delete( $user->user_email, 'useremail' );
        wp_cache_delete( $user->user_nicename, 'userslugs' );
+
+       /**
+        * Fires immediately after the given user's cache is cleaned.
+        *
+        * @since 4.4.0
+        *
+        * @param int     $user_id User ID.
+        * @param WP_User $user    User object.
+        */
+       do_action( 'clean_user_cache', $user->ID, $user );
 }
 
 /**
@@ -1785,13 +1197,15 @@ function email_exists( $email ) {
  * Checks whether a username is valid.
  *
  * @since 2.0.1
+ * @since 4.4.0 Empty sanitized usernames are now considered invalid
  *
  * @param string $username Username.
  * @return bool Whether username given is valid
  */
 function validate_username( $username ) {
        $sanitized = sanitize_user( $username, true );
-       $valid = ( $sanitized == $username );
+       $valid = ( $sanitized == $username && ! empty( $sanitized ) );
+
        /**
         * Filter whether the provided username is valid or not.
         *
@@ -1816,7 +1230,7 @@ function validate_username( $username ) {
  * @since 3.6.0 The `aim`, `jabber`, and `yim` fields were removed as default user contact
  *              methods for new installs. See wp_get_user_contact_methods().
  *
- * @global wpdb $wpdb WordPress database object for queries.
+ * @global wpdb $wpdb WordPress database abstraction object.
  *
  * @param array|object|WP_User $userdata {
  *     An array, object, or WP_User object of user data arguments.
@@ -1861,13 +1275,19 @@ function wp_insert_user( $userdata ) {
        } elseif ( $userdata instanceof WP_User ) {
                $userdata = $userdata->to_array();
        }
+
        // Are we updating or creating?
        if ( ! empty( $userdata['ID'] ) ) {
                $ID = (int) $userdata['ID'];
                $update = true;
-               $old_user_data = WP_User::get_data_by( 'id', $ID );
+               $old_user_data = get_userdata( $ID );
+
+               if ( ! $old_user_data ) {
+                       return new WP_Error( 'invalid_user_id', __( 'Invalid user ID.' ) );
+               }
+
                // hashed in wp_update_user(), plaintext if called directly
-               $user_pass = $userdata['user_pass'];
+               $user_pass = ! empty( $userdata['user_pass'] ) ? $userdata['user_pass'] : $old_user_data->user_pass;
        } else {
                $update = false;
                // Hash the password
@@ -1890,19 +1310,41 @@ function wp_insert_user( $userdata ) {
        //Remove any non-printable chars from the login string to see if we have ended up with an empty username
        $user_login = trim( $pre_user_login );
 
+       // user_login must be between 0 and 60 characters.
        if ( empty( $user_login ) ) {
                return new WP_Error('empty_user_login', __('Cannot create a user with an empty login name.') );
+       } elseif ( mb_strlen( $user_login ) > 60 ) {
+               return new WP_Error( 'user_login_too_long', __( 'Username may not be longer than 60 characters.' ) );
        }
+
        if ( ! $update && username_exists( $user_login ) ) {
                return new WP_Error( 'existing_user_login', __( 'Sorry, that username already exists!' ) );
        }
 
-       // If a nicename is provided, remove unsafe user characters before
-       // using it. Otherwise build a nicename from the user_login.
+       /**
+        * Filter the list of blacklisted usernames.
+        *
+        * @since 4.4.0
+        *
+        * @param array $usernames Array of blacklisted usernames.
+        */
+       $illegal_logins = (array) apply_filters( 'illegal_user_logins', array() );
+
+       if ( in_array( strtolower( $user_login ), array_map( 'strtolower', $illegal_logins ) ) ) {
+               return new WP_Error( 'invalid_username', __( 'Sorry, that username is not allowed.' ) );
+       }
+
+       /*
+        * If a nicename is provided, remove unsafe user characters before using it.
+        * Otherwise build a nicename from the user_login.
+        */
        if ( ! empty( $userdata['user_nicename'] ) ) {
                $user_nicename = sanitize_user( $userdata['user_nicename'], true );
+               if ( mb_strlen( $user_nicename ) > 50 ) {
+                       return new WP_Error( 'user_nicename_too_long', __( 'Nicename may not be longer than 50 characters.' ) );
+               }
        } else {
-               $user_nicename = $user_login;
+               $user_nicename = mb_substr( $user_login, 0, 50 );
        }
 
        $user_nicename = sanitize_title( $user_nicename );
@@ -2040,7 +1482,9 @@ function wp_insert_user( $userdata ) {
        if ( $user_nicename_check ) {
                $suffix = 2;
                while ($user_nicename_check) {
-                       $alt_user_nicename = $user_nicename . "-$suffix";
+                       // user_nicename allows 50 chars. Subtract one for a hyphen, plus the length of the suffix.
+                       $base_length = 49 - mb_strlen( $suffix );
+                       $alt_user_nicename = mb_substr( $user_nicename, 0, $base_length ) . "-$suffix";
                        $user_nicename_check = $wpdb->get_var( $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE user_nicename = %s AND user_login != %s LIMIT 1" , $alt_user_nicename, $user_login));
                        $suffix++;
                }
@@ -2063,6 +1507,33 @@ function wp_insert_user( $userdata ) {
 
        $user = new WP_User( $user_id );
 
+       /**
+        * Filter a user's meta values and keys before the user is created or updated.
+        *
+        * Does not include contact methods. These are added using `wp_get_user_contact_methods( $user )`.
+        *
+        * @since 4.4.0
+        *
+        * @param array $meta {
+        *     Default meta values and keys for the user.
+        *
+        *     @type string   $nickname             The user's nickname. Default is the the user's username.
+        *     @type string   $first_name           The user's first name.
+        *     @type string   $last_name            The user's last name.
+        *     @type string   $description          The user's description.
+        *     @type bool     $rich_editing         Whether to enable the rich-editor for the user. False if not empty.
+        *     @type bool     $comment_shortcuts    Whether to enable keyboard shortcuts for the user. Default false.
+        *     @type string   $admin_color          The color scheme for a user's admin screen. Default 'fresh'.
+        *     @type int|bool $use_ssl              Whether to force SSL on the user's admin area. 0|false if SSL is
+        *                                          not forced.
+        *     @type bool     $show_admin_bar_front Whether to show the admin bar on the front end for the user.
+        *                                          Default true.
+        * }
+        * @param WP_User $user   User object.
+        * @param bool    $update Whether the user is being updated rather than created.
+        */
+       $meta = apply_filters( 'insert_user_meta', $meta, $user, $update );
+
        // Update user meta.
        foreach ( $meta as $key => $value ) {
                update_user_meta( $user_id, $key, $value );
@@ -2150,7 +1621,7 @@ function wp_update_user($userdata) {
        // Escape data pulled from DB.
        $user = add_magic_quotes( $user );
 
-       if ( ! empty($userdata['user_pass']) ) {
+       if ( ! empty( $userdata['user_pass'] ) && $userdata['user_pass'] !== $user_obj->user_pass ) {
                // If password is changing, hash it now
                $plaintext_pass = $userdata['user_pass'];
                $userdata['user_pass'] = wp_hash_password( $userdata['user_pass'] );
@@ -2247,7 +1718,7 @@ All at ###SITENAME###
                        $pass_change_email['message'] = str_replace( '###ADMIN_EMAIL###', get_option( 'admin_email' ), $pass_change_email['message'] );
                        $pass_change_email['message'] = str_replace( '###EMAIL###', $user['user_email'], $pass_change_email['message'] );
                        $pass_change_email['message'] = str_replace( '###SITENAME###', get_option( 'blogname' ), $pass_change_email['message'] );
-                       $pass_change_email['message'] = str_replace( '###SITEURL###', get_option( 'siteurl' ), $pass_change_email['message'] );
+                       $pass_change_email['message'] = str_replace( '###SITEURL###', home_url(), $pass_change_email['message'] );
 
                        wp_mail( $pass_change_email['to'], sprintf( $pass_change_email['subject'], $blog_name ), $pass_change_email['message'], $pass_change_email['headers'] );
                }
@@ -2301,7 +1772,7 @@ All at ###SITENAME###
                        $email_change_email['message'] = str_replace( '###ADMIN_EMAIL###', get_option( 'admin_email' ), $email_change_email['message'] );
                        $email_change_email['message'] = str_replace( '###EMAIL###', $user['user_email'], $email_change_email['message'] );
                        $email_change_email['message'] = str_replace( '###SITENAME###', get_option( 'blogname' ), $email_change_email['message'] );
-                       $email_change_email['message'] = str_replace( '###SITEURL###', get_option( 'siteurl' ), $email_change_email['message'] );
+                       $email_change_email['message'] = str_replace( '###SITEURL###', home_url(), $email_change_email['message'] );
 
                        wp_mail( $email_change_email['to'], sprintf( $email_change_email['subject'], $blog_name ), $email_change_email['message'], $email_change_email['headers'] );
                }
@@ -2339,7 +1810,8 @@ All at ###SITENAME###
  * @param string $username The user's username.
  * @param string $password The user's password.
  * @param string $email    Optional. The user's email. Default empty.
- * @return int|WP_Error The new user's ID.
+ * @return int|WP_Error The newly created user's ID or a WP_Error object if the user could not
+ *                      be created.
  */
 function wp_create_user($username, $password, $email = '') {
        $user_login = wp_slash( $username );
@@ -2351,13 +1823,16 @@ function wp_create_user($username, $password, $email = '') {
 }
 
 /**
- * Return a list of meta keys that wp_insert_user() is supposed to set.
+ * Returns a list of meta keys to be (maybe) populated in wp_update_user().
+ *
+ * The list of keys returned via this function are dependent on the presence
+ * of those keys in the user meta data to be set.
  *
  * @since 3.3.0
  * @access private
  *
  * @param WP_User $user WP_User instance.
- * @return array
+ * @return array List of user keys to be populated in wp_update_user().
  */
 function _get_additional_user_keys( $user ) {
        $keys = array( 'first_name', 'last_name', 'nickname', 'description', 'rich_editing', 'comment_shortcuts', 'admin_color', 'use_ssl', 'show_admin_bar_front' );
@@ -2425,6 +1900,83 @@ function wp_get_password_hint() {
        return apply_filters( 'password_hint', $hint );
 }
 
+/**
+ * Creates, stores, then returns a password reset key for user.
+ *
+ * @since 4.4.0
+ *
+ * @global wpdb         $wpdb      WordPress database abstraction object.
+ * @global PasswordHash $wp_hasher Portable PHP password hashing framework.
+ *
+ * @param WP_User $user User to retrieve password reset key for.
+ *
+ * @return string|WP_Error Password reset key on success. WP_Error on error.
+ */
+function get_password_reset_key( $user ) {
+       global $wpdb, $wp_hasher;
+
+       /**
+        * Fires before a new password is retrieved.
+        *
+        * @since 1.5.0
+        * @deprecated 1.5.1 Misspelled. Use 'retrieve_password' hook instead.
+        *
+        * @param string $user_login The user login name.
+        */
+       do_action( 'retreive_password', $user->user_login );
+
+       /**
+        * Fires before a new password is retrieved.
+        *
+        * @since 1.5.1
+        *
+        * @param string $user_login The user login name.
+        */
+       do_action( 'retrieve_password', $user->user_login );
+
+       /**
+        * Filter whether to allow a password to be reset.
+        *
+        * @since 2.7.0
+        *
+        * @param bool true           Whether to allow the password to be reset. Default true.
+        * @param int  $user_data->ID The ID of the user attempting to reset a password.
+        */
+       $allow = apply_filters( 'allow_password_reset', true, $user->ID );
+
+       if ( ! $allow ) {
+               return new WP_Error( 'no_password_reset', __( 'Password reset is not allowed for this user' ) );
+       } elseif ( is_wp_error( $allow ) ) {
+               return $allow;
+       }
+
+       // Generate something random for a password reset key.
+       $key = wp_generate_password( 20, false );
+
+       /**
+        * Fires when a password reset key is generated.
+        *
+        * @since 2.5.0
+        *
+        * @param string $user_login The username for the user.
+        * @param string $key        The generated password reset key.
+        */
+       do_action( 'retrieve_password_key', $user->user_login, $key );
+
+       // Now insert the key, hashed, into the DB.
+       if ( empty( $wp_hasher ) ) {
+               require_once ABSPATH . WPINC . '/class-phpass.php';
+               $wp_hasher = new PasswordHash( 8, true );
+       }
+       $hashed = time() . ':' . $wp_hasher->HashPassword( $key );
+       $key_saved = $wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user->user_login ) );
+       if ( false === $key_saved ) {
+               return new WP_Error( 'no_password_key_update', __( 'Could not save password reset key to database.' ) );
+       }
+
+       return $key;
+}
+
 /**
  * Retrieves a user row based on password reset key and login
  *
@@ -2531,7 +2083,15 @@ function reset_password( $user, $new_pass ) {
        wp_set_password( $new_pass, $user->ID );
        update_user_option( $user->ID, 'default_password_nag', false, true );
 
-       wp_password_change_notification( $user );
+       /**
+        * Fires after the user's password is reset.
+        *
+        * @since 4.4.0
+        *
+        * @param object $user     The user.
+        * @param string $new_pass New user password.
+        */
+       do_action( 'after_password_reset', $user, $new_pass );
 }
 
 /**
@@ -2564,11 +2124,18 @@ function register_new_user( $user_login, $user_email ) {
                $sanitized_user_login = '';
        } elseif ( username_exists( $sanitized_user_login ) ) {
                $errors->add( 'username_exists', __( '<strong>ERROR</strong>: This username is already registered. Please choose another one.' ) );
+
+       } else {
+               /** This filter is documented in wp-includes/user.php */
+               $illegal_user_logins = array_map( 'strtolower', (array) apply_filters( 'illegal_user_logins', array() ) );
+               if ( in_array( strtolower( $sanitized_user_login ), $illegal_user_logins ) ) {
+                       $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: Sorry, that username is not allowed.' ) );
+               }
        }
 
-       // Check the e-mail address
+       // Check the email address
        if ( $user_email == '' ) {
-               $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please type your e-mail address.' ) );
+               $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please type your email address.' ) );
        } elseif ( ! is_email( $user_email ) ) {
                $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The email address isn&#8217;t correct.' ) );
                $user_email = '';
@@ -2619,11 +2186,33 @@ function register_new_user( $user_login, $user_email ) {
 
        update_user_option( $user_id, 'default_password_nag', true, true ); //Set up the Password change nag.
 
-       wp_new_user_notification( $user_id, null, 'both' );
+       /**
+        * Fires after a new user registration has been recorded.
+        *
+        * @since 4.4.0
+        *
+        * @param int $user_id ID of the newly registered user.
+        */
+       do_action( 'register_new_user', $user_id );
 
        return $user_id;
 }
 
+/**
+ * Initiate email notifications related to the creation of new users.
+ *
+ * Notifications are sent both to the site admin and to the newly created user.
+ *
+ * @since 4.4.0
+ *
+ * @param int    $user_id ID of the newly created user.
+ * @param string $notify  Optional. Type of notification that should happen. Accepts 'admin' or an empty string
+ *                        (admin only), or 'both' (admin and user). Default 'both'.
+ */
+function wp_send_new_user_notifications( $user_id, $notify = 'both' ) {
+       wp_new_user_notification( $user_id, null, $notify );
+}
+
 /**
  * Retrieve the current session token from the logged_in cookie.
  *
@@ -2682,3 +2271,32 @@ function wp_destroy_all_sessions() {
        $manager = WP_Session_Tokens::get_instance( get_current_user_id() );
        $manager->destroy_all();
 }
+
+/**
+ * Get the user IDs of all users with no role on this site.
+ *
+ * This function returns an empty array when used on Multisite.
+ *
+ * @since 4.4.0
+ *
+ * @return array Array of user IDs.
+ */
+function wp_get_users_with_no_role() {
+       global $wpdb;
+
+       if ( is_multisite() ) {
+               return array();
+       }
+
+       $prefix = $wpdb->get_blog_prefix();
+       $regex  = implode( '|', wp_roles()->get_names() );
+       $regex  = preg_replace( '/[^a-zA-Z_\|-]/', '', $regex );
+       $users  = $wpdb->get_col( $wpdb->prepare( "
+               SELECT user_id
+               FROM $wpdb->usermeta
+               WHERE meta_key = '{$prefix}capabilities'
+               AND meta_value NOT REGEXP %s
+       ", $regex ) );
+
+       return $users;
+}
index 828fbbb4ab3c279737154d2f56246ea2144ad568..d894884c48d91a30c8192a18e6792507ba4e3f01 100644 (file)
@@ -16,7 +16,7 @@
  */
 
 global $pagenow,
-       $is_lynx, $is_gecko, $is_winIE, $is_macIE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone, $is_IE,
+       $is_lynx, $is_gecko, $is_winIE, $is_macIE, $is_opera, $is_NS4, $is_safari, $is_chrome, $is_iphone, $is_IE, $is_edge,
        $is_apache, $is_IIS, $is_iis7, $is_nginx;
 
 // On which page are we ?
@@ -48,11 +48,13 @@ if ( is_admin() ) {
 unset($self_matches);
 
 // Simple browser detection
-$is_lynx = $is_gecko = $is_winIE = $is_macIE = $is_opera = $is_NS4 = $is_safari = $is_chrome = $is_iphone = false;
+$is_lynx = $is_gecko = $is_winIE = $is_macIE = $is_opera = $is_NS4 = $is_safari = $is_chrome = $is_iphone = $is_edge = false;
 
 if ( isset($_SERVER['HTTP_USER_AGENT']) ) {
        if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Lynx') !== false ) {
                $is_lynx = true;
+       } elseif ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Edge' ) !== false ) {
+               $is_edge = true;
        } elseif ( stripos($_SERVER['HTTP_USER_AGENT'], 'chrome') !== false ) {
                if ( stripos( $_SERVER['HTTP_USER_AGENT'], 'chromeframe' ) !== false ) {
                        $is_admin = is_admin();
index a0f9b50d009c7a2fe328fb2bc39c3d2d4ec3ba8e..2ff981483946750ff4af023fdcb59e3b305f58d7 100644 (file)
@@ -4,21 +4,21 @@
  *
  * @global string $wp_version
  */
-$wp_version = '4.3.1';
+$wp_version = '4.4';
 
 /**
  * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
  *
  * @global int $wp_db_version
  */
-$wp_db_version = 33056;
+$wp_db_version = 35700;
 
 /**
  * Holds the TinyMCE version
  *
  * @global string $tinymce_version
  */
-$tinymce_version = '4205-20150910';
+$tinymce_version = '4208-20151113';
 
 /**
  * Holds the required PHP version
index 28daba1a62fcc5982ac6ba5c0f3c306972d565ae..5a2f58c5dcab35de38f1717f5bf9f564b916d390 100644 (file)
@@ -1,9 +1,13 @@
 <?php
 /**
- * API for creating dynamic sidebar without hardcoding functionality into
- * themes. Includes both internal WordPress routines and theme use routines.
+ * Core Widgets API
  *
- * This functionality was found in a plugin before WordPress 2.2 release which
+ * This API is used for creating dynamic sidebar without hardcoding functionality into
+ * themes
+ *
+ * Includes both internal WordPress routines and theme-use routines.
+ *
+ * This functionality was found in a plugin before the WordPress 2.2 release, which
  * included it in the core from that point on.
  *
  * @link https://codex.wordpress.org/Plugins/WordPress_Widgets WordPress Widgets
  *
  * @package WordPress
  * @subpackage Widgets
+ * @since 2.2.0
  */
 
-/**
- * This class must be extended for each widget and WP_Widget::widget(), WP_Widget::update()
- * and WP_Widget::form() need to be over-ridden.
- *
- * @package WordPress
- * @subpackage Widgets
- * @since 2.8.0
- */
-class WP_Widget {
-
-       /**
-        * Root ID for all widgets of this type.
-        *
-        * @since 2.8.0
-        * @access public
-        * @var mixed|string
-        */
-       public $id_base;
-
-       /**
-        * Name for this widget type.
-        *
-        * @since 2.8.0
-        * @access public
-        * @var string
-        */
-       public $name;
-
-       /**
-        * Option array passed to {@see wp_register_sidebar_widget()}.
-        *
-        * @since 2.8.0
-        * @access public
-        * @var array
-        */
-       public $widget_options;
-
-       /**
-        * Option array passed to {@see wp_register_widget_control()}.
-        *
-        * @since 2.8.0
-        * @access public
-        * @var array
-        */
-       public $control_options;
-
-       /**
-        * Unique ID number of the current instance.
-        *
-        * @since 2.8.0
-        * @access public
-        * @var bool|int
-        */
-       public $number = false;
-
-       /**
-        * Unique ID string of the current instance (id_base-number).
-        *
-        * @since 2.8.0
-        * @access public
-        * @var bool|string
-        */
-       public $id = false;
-
-       /**
-        * Whether the widget data has been updated.
-        *
-        * Set to true when the data is updated after a POST submit - ensures it does
-        * not happen twice.
-        *
-        * @since 2.8.0
-        * @access public
-        * @var bool
-        */
-       public $updated = false;
-
-       // Member functions that you must over-ride.
-
-       /**
-        * Echo the widget content.
-        *
-        * Subclasses should over-ride this function to generate their widget code.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param array $args     Display arguments including before_title, after_title,
-        *                        before_widget, and after_widget.
-        * @param array $instance The settings for the particular instance of the widget.
-        */
-       public function widget( $args, $instance ) {
-               die('function WP_Widget::widget() must be over-ridden in a sub-class.');
-       }
-
-       /**
-        * Update a particular instance.
-        *
-        * This function should check that $new_instance is set correctly. The newly-calculated
-        * value of `$instance` should be returned. If false is returned, the instance won't be
-        * saved/updated.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param array $new_instance New settings for this instance as input by the user via
-        *                            {@see WP_Widget::form()}.
-        * @param array $old_instance Old settings for this instance.
-        * @return array Settings to save or bool false to cancel saving.
-        */
-       public function update( $new_instance, $old_instance ) {
-               return $new_instance;
-       }
-
-       /**
-        * Output the settings update form.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param array $instance Current settings.
-        * @return string Default return is 'noform'.
-        */
-       public function form($instance) {
-               echo '<p class="no-options-widget">' . __('There are no options for this widget.') . '</p>';
-               return 'noform';
-       }
-
-       // Functions you'll need to call.
-
-       /**
-        * PHP5 constructor.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param string $id_base         Optional Base ID for the widget, lowercase and unique. If left empty,
-        *                                a portion of the widget's class name will be used Has to be unique.
-        * @param string $name            Name for the widget displayed on the configuration page.
-        * @param array  $widget_options  Optional. Widget options. See {@see wp_register_sidebar_widget()} for
-        *                                information on accepted arguments. Default empty array.
-        * @param array  $control_options Optional. Widget control options. See {@see wp_register_widget_control()}
-        *                                for information on accepted arguments. Default empty array.
-        */
-       public function __construct( $id_base, $name, $widget_options = array(), $control_options = array() ) {
-               $this->id_base = empty($id_base) ? preg_replace( '/(wp_)?widget_/', '', strtolower(get_class($this)) ) : strtolower($id_base);
-               $this->name = $name;
-               $this->option_name = 'widget_' . $this->id_base;
-               $this->widget_options = wp_parse_args( $widget_options, array('classname' => $this->option_name) );
-               $this->control_options = wp_parse_args( $control_options, array('id_base' => $this->id_base) );
-       }
-
-       /**
-        * PHP4 constructor
-        *
-        * @param string $id_base
-        * @param string $name
-        * @param array  $widget_options
-        * @param array  $control_options
-        */
-       public function WP_Widget( $id_base, $name, $widget_options = array(), $control_options = array() ) {
-               _deprecated_constructor( 'WP_Widget', '4.3.0' );
-               WP_Widget::__construct( $id_base, $name, $widget_options, $control_options );
-       }
-
-       /**
-        * Constructs name attributes for use in form() fields
-        *
-        * This function should be used in form() methods to create name attributes for fields to be saved by update()
-        *
-        * @param string $field_name Field name
-        * @return string Name attribute for $field_name
-        */
-       public function get_field_name($field_name) {
-               return 'widget-' . $this->id_base . '[' . $this->number . '][' . $field_name . ']';
-       }
-
-       /**
-        * Constructs id attributes for use in {@see WP_Widget::form()} fields.
-        *
-        * This function should be used in form() methods to create id attributes
-        * for fields to be saved by {@see WP_Widget::update()}.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param string $field_name Field name.
-        * @return string ID attribute for `$field_name`.
-        */
-       public function get_field_id( $field_name ) {
-               return 'widget-' . $this->id_base . '-' . $this->number . '-' . $field_name;
-       }
-
-       /**
-        * Register all widget instances of this widget class.
-        *
-        * @since 2.8.0
-        * @access private
-        */
-       public function _register() {
-               $settings = $this->get_settings();
-               $empty = true;
-
-               // When $settings is an array-like object, get an intrinsic array for use with array_keys().
-               if ( $settings instanceof ArrayObject || $settings instanceof ArrayIterator ) {
-                       $settings = $settings->getArrayCopy();
-               }
-
-               if ( is_array( $settings ) ) {
-                       foreach ( array_keys( $settings ) as $number ) {
-                               if ( is_numeric( $number ) ) {
-                                       $this->_set( $number );
-                                       $this->_register_one( $number );
-                                       $empty = false;
-                               }
-                       }
-               }
-
-               if ( $empty ) {
-                       // If there are none, we register the widget's existence with a generic template.
-                       $this->_set( 1 );
-                       $this->_register_one();
-               }
-       }
-
-       /**
-        * Set the internal order number for the widget instance.
-        *
-        * @since 2.8.0
-        * @access private
-        *
-        * @param int $number The unique order number of this widget instance compared to other
-        *                    instances of the same class.
-        */
-       public function _set($number) {
-               $this->number = $number;
-               $this->id = $this->id_base . '-' . $number;
-       }
-
-       /**
-        * @return callback
-        */
-       public function _get_display_callback() {
-               return array($this, 'display_callback');
-       }
-       /**
-        * @return callback
-        */
-       public function _get_update_callback() {
-               return array($this, 'update_callback');
-       }
-       /**
-        * @return callback
-        */
-       public function _get_form_callback() {
-               return array($this, 'form_callback');
-       }
-
-       /**
-        * Determine whether the current request is inside the Customizer preview.
-        *
-        * If true -- the current request is inside the Customizer preview, then
-        * the object cache gets suspended and widgets should check this to decide
-        * whether they should store anything persistently to the object cache,
-        * to transients, or anywhere else.
-        *
-        * @since 3.9.0
-        * @access public
-        *
-        * @global WP_Customize_Manager $wp_customize
-        *
-        * @return bool True if within the Customizer preview, false if not.
-        */
-       public function is_preview() {
-               global $wp_customize;
-               return ( isset( $wp_customize ) && $wp_customize->is_preview() ) ;
-       }
-
-       /**
-        * Generate the actual widget content (Do NOT override).
-        *
-        * Finds the instance and calls {@see WP_Widget::widget()}.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param array     $args        Display arguments. See {@see WP_Widget::widget()} for information
-        *                               on accepted arguments.
-        * @param int|array $widget_args {
-        *     Optional. Internal order number of the widget instance, or array of multi-widget arguments.
-        *     Default 1.
-        *
-        *     @type int $number Number increment used for multiples of the same widget.
-        * }
-        */
-       public function display_callback( $args, $widget_args = 1 ) {
-               if ( is_numeric( $widget_args ) ) {
-                       $widget_args = array( 'number' => $widget_args );
-               }
-
-               $widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
-               $this->_set( $widget_args['number'] );
-               $instances = $this->get_settings();
-
-               if ( array_key_exists( $this->number, $instances ) ) {
-                       $instance = $instances[ $this->number ];
-
-                       /**
-                        * Filter the settings for a particular widget instance.
-                        *
-                        * Returning false will effectively short-circuit display of the widget.
-                        *
-                        * @since 2.8.0
-                        *
-                        * @param array     $instance The current widget instance's settings.
-                        * @param WP_Widget $this     The current widget instance.
-                        * @param array     $args     An array of default widget arguments.
-                        */
-                       $instance = apply_filters( 'widget_display_callback', $instance, $this, $args );
-
-                       if ( false === $instance ) {
-                               return;
-                       }
-
-                       $was_cache_addition_suspended = wp_suspend_cache_addition();
-                       if ( $this->is_preview() && ! $was_cache_addition_suspended ) {
-                               wp_suspend_cache_addition( true );
-                       }
-
-                       $this->widget( $args, $instance );
-
-                       if ( $this->is_preview() ) {
-                               wp_suspend_cache_addition( $was_cache_addition_suspended );
-                       }
-               }
-       }
-
-       /**
-        * Deal with changed settings (Do NOT override).
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @global array $wp_registered_widgets
-        *
-        * @param int $deprecated Not used.
-        */
-       public function update_callback( $deprecated = 1 ) {
-               global $wp_registered_widgets;
-
-               $all_instances = $this->get_settings();
-
-               // We need to update the data
-               if ( $this->updated )
-                       return;
-
-               if ( isset($_POST['delete_widget']) && $_POST['delete_widget'] ) {
-                       // Delete the settings for this instance of the widget
-                       if ( isset($_POST['the-widget-id']) )
-                               $del_id = $_POST['the-widget-id'];
-                       else
-                               return;
-
-                       if ( isset($wp_registered_widgets[$del_id]['params'][0]['number']) ) {
-                               $number = $wp_registered_widgets[$del_id]['params'][0]['number'];
-
-                               if ( $this->id_base . '-' . $number == $del_id )
-                                       unset($all_instances[$number]);
-                       }
-               } else {
-                       if ( isset($_POST['widget-' . $this->id_base]) && is_array($_POST['widget-' . $this->id_base]) ) {
-                               $settings = $_POST['widget-' . $this->id_base];
-                       } elseif ( isset($_POST['id_base']) && $_POST['id_base'] == $this->id_base ) {
-                               $num = $_POST['multi_number'] ? (int) $_POST['multi_number'] : (int) $_POST['widget_number'];
-                               $settings = array( $num => array() );
-                       } else {
-                               return;
-                       }
-
-                       foreach ( $settings as $number => $new_instance ) {
-                               $new_instance = stripslashes_deep($new_instance);
-                               $this->_set($number);
-
-                               $old_instance = isset($all_instances[$number]) ? $all_instances[$number] : array();
-
-                               $was_cache_addition_suspended = wp_suspend_cache_addition();
-                               if ( $this->is_preview() && ! $was_cache_addition_suspended ) {
-                                       wp_suspend_cache_addition( true );
-                               }
-
-                               $instance = $this->update( $new_instance, $old_instance );
-
-                               if ( $this->is_preview() ) {
-                                       wp_suspend_cache_addition( $was_cache_addition_suspended );
-                               }
-
-                               /**
-                                * Filter a widget's settings before saving.
-                                *
-                                * Returning false will effectively short-circuit the widget's ability
-                                * to update settings.
-                                *
-                                * @since 2.8.0
-                                *
-                                * @param array     $instance     The current widget instance's settings.
-                                * @param array     $new_instance Array of new widget settings.
-                                * @param array     $old_instance Array of old widget settings.
-                                * @param WP_Widget $this         The current widget instance.
-                                */
-                               $instance = apply_filters( 'widget_update_callback', $instance, $new_instance, $old_instance, $this );
-                               if ( false !== $instance ) {
-                                       $all_instances[$number] = $instance;
-                               }
-
-                               break; // run only once
-                       }
-               }
-
-               $this->save_settings($all_instances);
-               $this->updated = true;
-       }
-
-       /**
-        * Generate the widget control form (Do NOT override).
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param int|array $widget_args Widget instance number or array of widget arguments.
-        * @return string|null
-        */
-       public function form_callback( $widget_args = 1 ) {
-               if ( is_numeric($widget_args) )
-                       $widget_args = array( 'number' => $widget_args );
-
-               $widget_args = wp_parse_args( $widget_args, array( 'number' => -1 ) );
-               $all_instances = $this->get_settings();
-
-               if ( -1 == $widget_args['number'] ) {
-                       // We echo out a form where 'number' can be set later
-                       $this->_set('__i__');
-                       $instance = array();
-               } else {
-                       $this->_set($widget_args['number']);
-                       $instance = $all_instances[ $widget_args['number'] ];
-               }
-
-               /**
-                * Filter the widget instance's settings before displaying the control form.
-                *
-                * Returning false effectively short-circuits display of the control form.
-                *
-                * @since 2.8.0
-                *
-                * @param array     $instance The current widget instance's settings.
-                * @param WP_Widget $this     The current widget instance.
-                */
-               $instance = apply_filters( 'widget_form_callback', $instance, $this );
-
-               $return = null;
-               if ( false !== $instance ) {
-                       $return = $this->form($instance);
-
-                       /**
-                        * Fires at the end of the widget control form.
-                        *
-                        * Use this hook to add extra fields to the widget form. The hook
-                        * is only fired if the value passed to the 'widget_form_callback'
-                        * hook is not false.
-                        *
-                        * Note: If the widget has no form, the text echoed from the default
-                        * form method can be hidden using CSS.
-                        *
-                        * @since 2.8.0
-                        *
-                        * @param WP_Widget $this     The widget instance, passed by reference.
-                        * @param null      $return   Return null if new fields are added.
-                        * @param array     $instance An array of the widget's settings.
-                        */
-                       do_action_ref_array( 'in_widget_form', array( &$this, &$return, $instance ) );
-               }
-               return $return;
-       }
-
-       /**
-        * Register an instance of the widget class.
-        *
-        * @since 2.8.0
-        * @access private
-        *
-        * @param integer $number Optional. The unique order number of this widget instance
-        *                        compared to other instances of the same class. Default -1.
-        */
-       public function _register_one( $number = -1 ) {
-               wp_register_sidebar_widget(     $this->id, $this->name, $this->_get_display_callback(), $this->widget_options, array( 'number' => $number ) );
-               _register_widget_update_callback( $this->id_base, $this->_get_update_callback(), $this->control_options, array( 'number' => -1 ) );
-               _register_widget_form_callback( $this->id, $this->name, $this->_get_form_callback(), $this->control_options, array( 'number' => $number ) );
-       }
-
-       /**
-        * Save the settings for all instances of the widget class.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param array $settings Multi-dimensional array of widget instance settings.
-        */
-       public function save_settings( $settings ) {
-               $settings['_multiwidget'] = 1;
-               update_option( $this->option_name, $settings );
-       }
-
-       /**
-        * Get the settings for all instances of the widget class.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @return array Multi-dimensional array of widget instance settings.
-        */
-       public function get_settings() {
-
-               $settings = get_option( $this->option_name );
-
-               if ( false === $settings && isset( $this->alt_option_name ) ) {
-                       $settings = get_option( $this->alt_option_name );
-               }
-
-               if ( ! is_array( $settings ) && ! ( $settings instanceof ArrayObject || $settings instanceof ArrayIterator ) ) {
-                       $settings = array();
-               }
-
-               if ( ! empty( $settings ) && ! isset( $settings['_multiwidget'] ) ) {
-                       // Old format, convert if single widget.
-                       $settings = wp_convert_widget_settings( $this->id_base, $this->option_name, $settings );
-               }
-
-               unset( $settings['_multiwidget'], $settings['__i__'] );
-               return $settings;
-       }
-}
-
-/**
- * Singleton that registers and instantiates WP_Widget classes.
- *
- * @package WordPress
- * @subpackage Widgets
- * @since 2.8.0
- */
-class WP_Widget_Factory {
-       public $widgets = array();
-
-       /**
-        * PHP5 constructor.
-        */
-       public function __construct() {
-               add_action( 'widgets_init', array( $this, '_register_widgets' ), 100 );
-       }
-
-       /**
-        * PHP4 constructor.
-        */
-       public function WP_Widget_Factory() {
-               _deprecated_constructor( 'WP_Widget_Factory', '4.2.0' );
-               self::__construct();
-       }
-
-       /**
-        * Register a widget subclass.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param string $widget_class The name of a {@see WP_Widget} subclass.
-        */
-       public function register( $widget_class ) {
-               $this->widgets[$widget_class] = new $widget_class();
-       }
-
-       /**
-        * Un-register a widget subclass.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @param string $widget_class The name of a {@see WP_Widget} subclass.
-        */
-       public function unregister( $widget_class ) {
-               unset( $this->widgets[ $widget_class ] );
-       }
-
-       /**
-        * Utility method for adding widgets to the registered widgets global.
-        *
-        * @since 2.8.0
-        * @access public
-        *
-        * @global array $wp_registered_widgets
-        */
-       public function _register_widgets() {
-               global $wp_registered_widgets;
-               $keys = array_keys($this->widgets);
-               $registered = array_keys($wp_registered_widgets);
-               $registered = array_map('_get_widget_id_base', $registered);
-
-               foreach ( $keys as $key ) {
-                       // don't register new widget if old widget with the same id is already registered
-                       if ( in_array($this->widgets[$key]->id_base, $registered, true) ) {
-                               unset($this->widgets[$key]);
-                               continue;
-                       }
-
-                       $this->widgets[$key]->_register();
-               }
-       }
-}
-
-/* Global Variables */
+//
+// Global Variables
+//
 
 /** @ignore */
 global $wp_registered_sidebars, $wp_registered_widgets, $wp_registered_widget_controls, $wp_registered_widget_updates;
@@ -699,7 +90,9 @@ $GLOBALS['_wp_deprecated_widgets_callbacks'] = array(
        'wp_widget_recent_comments_control'
 );
 
-/* Template tags & API functions */
+//
+// Template tags & API functions
+//
 
 /**
  * Register a widget
@@ -786,13 +179,14 @@ function register_sidebars( $number = 1, $args = array() ) {
                if ( isset($args['id']) ) {
                        $_args['id'] = $args['id'];
                        $n = 2; // Start at -2 for conflicting custom ID's
-                       while ( isset($wp_registered_sidebars[$_args['id']]) )
+                       while ( is_registered_sidebar( $_args['id'] ) ) {
                                $_args['id'] = $args['id'] . '-' . $n++;
+                       }
                } else {
-                       $n = count($wp_registered_sidebars);
+                       $n = count( $wp_registered_sidebars );
                        do {
                                $_args['id'] = 'sidebar-' . ++$n;
-                       } while ( isset($wp_registered_sidebars[$_args['id']]) );
+                       } while ( is_registered_sidebar( $_args['id'] ) );
                }
                register_sidebar($_args);
        }
@@ -895,6 +289,22 @@ function unregister_sidebar( $name ) {
        unset( $wp_registered_sidebars[ $name ] );
 }
 
+/**
+ * Checks if a sidebar is registered.
+ *
+ * @since 4.4.0
+ *
+ * @global array $wp_registered_sidebars Registered sidebars.
+ *
+ * @param string|int $sidebar_id The ID of the sidebar when it was registered.
+ * @return bool True if the sidebar is registered, false otherwise.
+ */
+function is_registered_sidebar( $sidebar_id ) {
+       global $wp_registered_sidebars;
+
+       return isset( $wp_registered_sidebars[ $sidebar_id ] );
+}
+
 /**
  * Register an instance of a widget.
  *
@@ -912,7 +322,7 @@ function unregister_sidebar( $name ) {
  *
  * @param int|string $id              Widget ID.
  * @param string     $name            Widget display title.
- * @param callback   $output_callback Run when widget is called.
+ * @param callable   $output_callback Run when widget is called.
  * @param array      $options {
  *     Optional. An array of supplementary widget options for the instance.
  *
@@ -1054,7 +464,7 @@ function wp_unregister_sidebar_widget($id) {
  *
  * @param int|string   $id               Sidebar ID.
  * @param string       $name             Sidebar display name.
- * @param callback     $control_callback Run when sidebar is displayed.
+ * @param callable     $control_callback Run when sidebar is displayed.
  * @param array|string $options          Optional. Widget options. See description above. Default empty array.
  */
 function wp_register_widget_control( $id, $name, $control_callback, $options = array() ) {
@@ -1191,15 +601,15 @@ function wp_unregister_widget_control($id) {
  * @param int|string $index Optional, default is 1. Index, name or ID of dynamic sidebar.
  * @return bool True, if widget sidebar was found and called. False if not found or not called.
  */
-function dynamic_sidebar($index = 1) {
+function dynamic_sidebar( $index = 1 ) {
        global $wp_registered_sidebars, $wp_registered_widgets;
 
-       if ( is_int($index) ) {
+       if ( is_int( $index ) ) {
                $index = "sidebar-$index";
        } else {
-               $index = sanitize_title($index);
+               $sanitized_index = sanitize_title( $index );
                foreach ( (array) $wp_registered_sidebars as $key => $value ) {
-                       if ( sanitize_title($value['name']) == $index ) {
+                       if ( sanitize_title( $value['name'] ) == $sanitized_index ) {
                                $index = $key;
                                break;
                        }
@@ -1208,11 +618,11 @@ function dynamic_sidebar($index = 1) {
 
        $sidebars_widgets = wp_get_sidebars_widgets();
        if ( empty( $wp_registered_sidebars[ $index ] ) || empty( $sidebars_widgets[ $index ] ) || ! is_array( $sidebars_widgets[ $index ] ) ) {
-               /** This action is documented in wp-includes/widgets.php */
+               /** This action is documented in wp-includes/widget.php */
                do_action( 'dynamic_sidebar_before', $index, false );
-               /** This action is documented in wp-includes/widgets.php */
+               /** This action is documented in wp-includes/widget.php */
                do_action( 'dynamic_sidebar_after',  $index, false );
-               /** This filter is documented in wp-includes/widgets.php */
+               /** This filter is documented in wp-includes/widget.php */
                return apply_filters( 'dynamic_sidebar_has_widgets', false, $index );
        }
 
@@ -1303,7 +713,7 @@ function dynamic_sidebar($index = 1) {
                 *
                 *     @type string $name                Name of the widget.
                 *     @type string $id                  Widget ID.
-                *     @type array|callback $callback    When the hook is fired on the front-end, $callback is an array
+                *     @type array|callable $callback    When the hook is fired on the front-end, $callback is an array
                 *                                       containing the widget object. Fired on the back-end, $callback
                 *                                       is 'wp_widget_control', see $_callback.
                 *     @type array          $params      An associative array of multi-widget arguments.
@@ -1445,7 +855,9 @@ function is_active_sidebar( $index ) {
        return apply_filters( 'is_active_sidebar', $is_active_sidebar, $index );
 }
 
-/* Internal Functions */
+//
+// Internal Functions
+//
 
 /**
  * Retrieve full list of sidebars and their widget instance IDs.
@@ -1597,7 +1009,7 @@ function wp_convert_widget_settings($base_name, $option_name, $settings) {
  *
  * @global WP_Widget_Factory $wp_widget_factory
  *
- * @param string $widget   The widget's PHP class name (see default-widgets.php).
+ * @param string $widget   The widget's PHP class name (see class-wp-widget.php).
  * @param array  $instance Optional. The widget's instance settings. Default empty array.
  * @param array  $args {
  *     Optional. Array of arguments to configure the display of the widget.
@@ -1620,10 +1032,15 @@ function the_widget( $widget, $instance = array(), $args = array() ) {
                return;
        }
 
-       $before_widget = sprintf('<div class="widget %s">', $widget_obj->widget_options['classname'] );
-       $default_args = array( 'before_widget' => $before_widget, 'after_widget' => "</div>", 'before_title' => '<h2 class="widgettitle">', 'after_title' => '</h2>' );
+       $default_args = array(
+               'before_widget' => '<div class="widget %s">',
+               'after_widget'  => "</div>",
+               'before_title'  => '<h2 class="widgettitle">',
+               'after_title'   => '</h2>',
+       );
+       $args = wp_parse_args( $args, $default_args );
+       $args['before_widget'] = sprintf( $args['before_widget'], $widget_obj->widget_options['classname'] );
 
-       $args = wp_parse_args($args, $default_args);
        $instance = wp_parse_args($instance);
 
        /**
@@ -1783,3 +1200,265 @@ function retrieve_widgets( $theme_changed = false ) {
 
        return $sidebars_widgets;
 }
+
+/**
+ * Display the RSS entries in a list.
+ *
+ * @since 2.5.0
+ *
+ * @param string|array|object $rss RSS url.
+ * @param array $args Widget arguments.
+ */
+function wp_widget_rss_output( $rss, $args = array() ) {
+       if ( is_string( $rss ) ) {
+               $rss = fetch_feed($rss);
+       } elseif ( is_array($rss) && isset($rss['url']) ) {
+               $args = $rss;
+               $rss = fetch_feed($rss['url']);
+       } elseif ( !is_object($rss) ) {
+               return;
+       }
+
+       if ( is_wp_error($rss) ) {
+               if ( is_admin() || current_user_can('manage_options') )
+                       echo '<p>' . sprintf( __('<strong>RSS Error</strong>: %s'), $rss->get_error_message() ) . '</p>';
+               return;
+       }
+
+       $default_args = array( 'show_author' => 0, 'show_date' => 0, 'show_summary' => 0, 'items' => 0 );
+       $args = wp_parse_args( $args, $default_args );
+
+       $items = (int) $args['items'];
+       if ( $items < 1 || 20 < $items )
+               $items = 10;
+       $show_summary  = (int) $args['show_summary'];
+       $show_author   = (int) $args['show_author'];
+       $show_date     = (int) $args['show_date'];
+
+       if ( !$rss->get_item_quantity() ) {
+               echo '<ul><li>' . __( 'An error has occurred, which probably means the feed is down. Try again later.' ) . '</li></ul>';
+               $rss->__destruct();
+               unset($rss);
+               return;
+       }
+
+       echo '<ul>';
+       foreach ( $rss->get_items( 0, $items ) as $item ) {
+               $link = $item->get_link();
+               while ( stristr( $link, 'http' ) != $link ) {
+                       $link = substr( $link, 1 );
+               }
+               $link = esc_url( strip_tags( $link ) );
+
+               $title = esc_html( trim( strip_tags( $item->get_title() ) ) );
+               if ( empty( $title ) ) {
+                       $title = __( 'Untitled' );
+               }
+
+               $desc = @html_entity_decode( $item->get_description(), ENT_QUOTES, get_option( 'blog_charset' ) );
+               $desc = esc_attr( wp_trim_words( $desc, 55, ' [&hellip;]' ) );
+
+               $summary = '';
+               if ( $show_summary ) {
+                       $summary = $desc;
+
+                       // Change existing [...] to [&hellip;].
+                       if ( '[...]' == substr( $summary, -5 ) ) {
+                               $summary = substr( $summary, 0, -5 ) . '[&hellip;]';
+                       }
+
+                       $summary = '<div class="rssSummary">' . esc_html( $summary ) . '</div>';
+               }
+
+               $date = '';
+               if ( $show_date ) {
+                       $date = $item->get_date( 'U' );
+
+                       if ( $date ) {
+                               $date = ' <span class="rss-date">' . date_i18n( get_option( 'date_format' ), $date ) . '</span>';
+                       }
+               }
+
+               $author = '';
+               if ( $show_author ) {
+                       $author = $item->get_author();
+                       if ( is_object($author) ) {
+                               $author = $author->get_name();
+                               $author = ' <cite>' . esc_html( strip_tags( $author ) ) . '</cite>';
+                       }
+               }
+
+               if ( $link == '' ) {
+                       echo "<li>$title{$date}{$summary}{$author}</li>";
+               } elseif ( $show_summary ) {
+                       echo "<li><a class='rsswidget' href='$link'>$title</a>{$date}{$summary}{$author}</li>";
+               } else {
+                       echo "<li><a class='rsswidget' href='$link'>$title</a>{$date}{$author}</li>";
+               }
+       }
+       echo '</ul>';
+       $rss->__destruct();
+       unset($rss);
+}
+
+/**
+ * Display RSS widget options form.
+ *
+ * The options for what fields are displayed for the RSS form are all booleans
+ * and are as follows: 'url', 'title', 'items', 'show_summary', 'show_author',
+ * 'show_date'.
+ *
+ * @since 2.5.0
+ *
+ * @param array|string $args Values for input fields.
+ * @param array $inputs Override default display options.
+ */
+function wp_widget_rss_form( $args, $inputs = null ) {
+       $default_inputs = array( 'url' => true, 'title' => true, 'items' => true, 'show_summary' => true, 'show_author' => true, 'show_date' => true );
+       $inputs = wp_parse_args( $inputs, $default_inputs );
+
+       $args['title'] = isset( $args['title'] ) ? $args['title'] : '';
+       $args['url'] = isset( $args['url'] ) ? $args['url'] : '';
+       $args['items'] = isset( $args['items'] ) ? (int) $args['items'] : 0;
+
+       if ( $args['items'] < 1 || 20 < $args['items'] ) {
+               $args['items'] = 10;
+       }
+
+       $args['show_summary']   = isset( $args['show_summary'] ) ? (int) $args['show_summary'] : (int) $inputs['show_summary'];
+       $args['show_author']    = isset( $args['show_author'] ) ? (int) $args['show_author'] : (int) $inputs['show_author'];
+       $args['show_date']      = isset( $args['show_date'] ) ? (int) $args['show_date'] : (int) $inputs['show_date'];
+
+       if ( ! empty( $args['error'] ) ) {
+               echo '<p class="widget-error"><strong>' . sprintf( __( 'RSS Error: %s' ), $args['error'] ) . '</strong></p>';
+       }
+
+       $esc_number = esc_attr( $args['number'] );
+       if ( $inputs['url'] ) :
+?>
+       <p><label for="rss-url-<?php echo $esc_number; ?>"><?php _e( 'Enter the RSS feed URL here:' ); ?></label>
+       <input class="widefat" id="rss-url-<?php echo $esc_number; ?>" name="widget-rss[<?php echo $esc_number; ?>][url]" type="text" value="<?php echo esc_url( $args['url'] ); ?>" /></p>
+<?php endif; if ( $inputs['title'] ) : ?>
+       <p><label for="rss-title-<?php echo $esc_number; ?>"><?php _e( 'Give the feed a title (optional):' ); ?></label>
+       <input class="widefat" id="rss-title-<?php echo $esc_number; ?>" name="widget-rss[<?php echo $esc_number; ?>][title]" type="text" value="<?php echo esc_attr( $args['title'] ); ?>" /></p>
+<?php endif; if ( $inputs['items'] ) : ?>
+       <p><label for="rss-items-<?php echo $esc_number; ?>"><?php _e( 'How many items would you like to display?' ); ?></label>
+       <select id="rss-items-<?php echo $esc_number; ?>" name="widget-rss[<?php echo $esc_number; ?>][items]">
+       <?php
+       for ( $i = 1; $i <= 20; ++$i ) {
+               echo "<option value='$i' " . selected( $args['items'], $i, false ) . ">$i</option>";
+       }
+       ?>
+       </select></p>
+<?php endif; if ( $inputs['show_summary'] ) : ?>
+       <p><input id="rss-show-summary-<?php echo $esc_number; ?>" name="widget-rss[<?php echo $esc_number; ?>][show_summary]" type="checkbox" value="1" <?php checked( $args['show_summary'] ); ?> />
+       <label for="rss-show-summary-<?php echo $esc_number; ?>"><?php _e( 'Display item content?' ); ?></label></p>
+<?php endif; if ( $inputs['show_author'] ) : ?>
+       <p><input id="rss-show-author-<?php echo $esc_number; ?>" name="widget-rss[<?php echo $esc_number; ?>][show_author]" type="checkbox" value="1" <?php checked( $args['show_author'] ); ?> />
+       <label for="rss-show-author-<?php echo $esc_number; ?>"><?php _e( 'Display item author if available?' ); ?></label></p>
+<?php endif; if ( $inputs['show_date'] ) : ?>
+       <p><input id="rss-show-date-<?php echo $esc_number; ?>" name="widget-rss[<?php echo $esc_number; ?>][show_date]" type="checkbox" value="1" <?php checked( $args['show_date'] ); ?>/>
+       <label for="rss-show-date-<?php echo $esc_number; ?>"><?php _e( 'Display item date?' ); ?></label></p>
+<?php
+       endif;
+       foreach ( array_keys($default_inputs) as $input ) :
+               if ( 'hidden' === $inputs[$input] ) :
+                       $id = str_replace( '_', '-', $input );
+?>
+       <input type="hidden" id="rss-<?php echo esc_attr( $id ); ?>-<?php echo $esc_number; ?>" name="widget-rss[<?php echo $esc_number; ?>][<?php echo esc_attr( $input ); ?>]" value="<?php echo esc_attr( $args[ $input ] ); ?>" />
+<?php
+               endif;
+       endforeach;
+}
+
+/**
+ * Process RSS feed widget data and optionally retrieve feed items.
+ *
+ * The feed widget can not have more than 20 items or it will reset back to the
+ * default, which is 10.
+ *
+ * The resulting array has the feed title, feed url, feed link (from channel),
+ * feed items, error (if any), and whether to show summary, author, and date.
+ * All respectively in the order of the array elements.
+ *
+ * @since 2.5.0
+ *
+ * @param array $widget_rss RSS widget feed data. Expects unescaped data.
+ * @param bool $check_feed Optional, default is true. Whether to check feed for errors.
+ * @return array
+ */
+function wp_widget_rss_process( $widget_rss, $check_feed = true ) {
+       $items = (int) $widget_rss['items'];
+       if ( $items < 1 || 20 < $items )
+               $items = 10;
+       $url           = esc_url_raw( strip_tags( $widget_rss['url'] ) );
+       $title         = isset( $widget_rss['title'] ) ? trim( strip_tags( $widget_rss['title'] ) ) : '';
+       $show_summary  = isset( $widget_rss['show_summary'] ) ? (int) $widget_rss['show_summary'] : 0;
+       $show_author   = isset( $widget_rss['show_author'] ) ? (int) $widget_rss['show_author'] :0;
+       $show_date     = isset( $widget_rss['show_date'] ) ? (int) $widget_rss['show_date'] : 0;
+
+       if ( $check_feed ) {
+               $rss = fetch_feed($url);
+               $error = false;
+               $link = '';
+               if ( is_wp_error($rss) ) {
+                       $error = $rss->get_error_message();
+               } else {
+                       $link = esc_url(strip_tags($rss->get_permalink()));
+                       while ( stristr($link, 'http') != $link )
+                               $link = substr($link, 1);
+
+                       $rss->__destruct();
+                       unset($rss);
+               }
+       }
+
+       return compact( 'title', 'url', 'link', 'items', 'error', 'show_summary', 'show_author', 'show_date' );
+}
+
+/**
+ * Register all of the default WordPress widgets on startup.
+ *
+ * Calls 'widgets_init' action after all of the WordPress widgets have been
+ * registered.
+ *
+ * @since 2.2.0
+ */
+function wp_widgets_init() {
+       if ( !is_blog_installed() )
+               return;
+
+       register_widget('WP_Widget_Pages');
+
+       register_widget('WP_Widget_Calendar');
+
+       register_widget('WP_Widget_Archives');
+
+       if ( get_option( 'link_manager_enabled' ) )
+               register_widget('WP_Widget_Links');
+
+       register_widget('WP_Widget_Meta');
+
+       register_widget('WP_Widget_Search');
+
+       register_widget('WP_Widget_Text');
+
+       register_widget('WP_Widget_Categories');
+
+       register_widget('WP_Widget_Recent_Posts');
+
+       register_widget('WP_Widget_Recent_Comments');
+
+       register_widget('WP_Widget_RSS');
+
+       register_widget('WP_Widget_Tag_Cloud');
+
+       register_widget('WP_Nav_Menu_Widget');
+
+       /**
+        * Fires after all default WordPress widgets have been registered.
+        *
+        * @since 2.2.0
+        */
+       do_action( 'widgets_init' );
+}
diff --git a/wp-includes/widgets/class-wp-nav-menu-widget.php b/wp-includes/widgets/class-wp-nav-menu-widget.php
new file mode 100644 (file)
index 0000000..22ec861
--- /dev/null
@@ -0,0 +1,149 @@
+<?php
+/**
+ * Widget API: WP_Nav_Menu_Widget class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement the Custom Menu widget.
+ *
+ * @since 3.0.0
+ *
+ * @see WP_Widget
+ */
+ class WP_Nav_Menu_Widget extends WP_Widget {
+
+       /**
+        * Sets up a new Custom Menu widget instance.
+        *
+        * @since 3.0.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array( 'description' => __('Add a custom menu to your sidebar.') );
+               parent::__construct( 'nav_menu', __('Custom Menu'), $widget_ops );
+       }
+
+       /**
+        * Outputs the content for the current Custom Menu widget instance.
+        *
+        * @since 3.0.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Custom Menu widget instance.
+        */
+       public function widget( $args, $instance ) {
+               // Get menu
+               $nav_menu = ! empty( $instance['nav_menu'] ) ? wp_get_nav_menu_object( $instance['nav_menu'] ) : false;
+
+               if ( !$nav_menu )
+                       return;
+
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $instance['title'] = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
+
+               echo $args['before_widget'];
+
+               if ( !empty($instance['title']) )
+                       echo $args['before_title'] . $instance['title'] . $args['after_title'];
+
+               $nav_menu_args = array(
+                       'fallback_cb' => '',
+                       'menu'        => $nav_menu
+               );
+
+               /**
+                * Filter the arguments for the Custom Menu widget.
+                *
+                * @since 4.2.0
+                * @since 4.4.0 Added the `$instance` parameter.
+                *
+                * @param array    $nav_menu_args {
+                *     An array of arguments passed to wp_nav_menu() to retrieve a custom menu.
+                *
+                *     @type callable|bool $fallback_cb Callback to fire if the menu doesn't exist. Default empty.
+                *     @type mixed         $menu        Menu ID, slug, or name.
+                * }
+                * @param stdClass $nav_menu      Nav menu object for the current menu.
+                * @param array    $args          Display arguments for the current widget.
+                * @param array    $instance      Array of settings for the current widget.
+                */
+               wp_nav_menu( apply_filters( 'widget_nav_menu_args', $nav_menu_args, $nav_menu, $args, $instance ) );
+
+               echo $args['after_widget'];
+       }
+
+       /**
+        * Handles updating settings for the current Custom Menu widget instance.
+        *
+        * @since 3.0.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings to save.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = array();
+               if ( ! empty( $new_instance['title'] ) ) {
+                       $instance['title'] = sanitize_text_field( stripslashes( $new_instance['title'] ) );
+               }
+               if ( ! empty( $new_instance['nav_menu'] ) ) {
+                       $instance['nav_menu'] = (int) $new_instance['nav_menu'];
+               }
+               return $instance;
+       }
+
+       /**
+        * Outputs the settings form for the Custom Menu widget.
+        *
+        * @since 3.0.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               $title = isset( $instance['title'] ) ? $instance['title'] : '';
+               $nav_menu = isset( $instance['nav_menu'] ) ? $instance['nav_menu'] : '';
+
+               // Get menus
+               $menus = wp_get_nav_menus();
+
+               // If no menus exists, direct the user to go and create some.
+               ?>
+               <p class="nav-menu-widget-no-menus-message" <?php if ( ! empty( $menus ) ) { echo ' style="display:none" '; } ?>>
+                       <?php
+                       if ( isset( $GLOBALS['wp_customize'] ) && $GLOBALS['wp_customize'] instanceof WP_Customize_Manager ) {
+                               $url = 'javascript: wp.customize.panel( "nav_menus" ).focus();';
+                       } else {
+                               $url = admin_url( 'nav-menus.php' );
+                       }
+                       ?>
+                       <?php echo sprintf( __( 'No menus have been created yet. <a href="%s">Create some</a>.' ), esc_attr( $url ) ); ?>
+               </p>
+               <div class="nav-menu-widget-form-controls" <?php if ( empty( $menus ) ) { echo ' style="display:none" '; } ?>>
+                       <p>
+                               <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ) ?></label>
+                               <input type="text" class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_attr( $title ); ?>"/>
+                       </p>
+                       <p>
+                               <label for="<?php echo $this->get_field_id( 'nav_menu' ); ?>"><?php _e( 'Select Menu:' ); ?></label>
+                               <select id="<?php echo $this->get_field_id( 'nav_menu' ); ?>" name="<?php echo $this->get_field_name( 'nav_menu' ); ?>">
+                                       <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option>
+                                       <?php foreach ( $menus as $menu ) : ?>
+                                               <option value="<?php echo esc_attr( $menu->term_id ); ?>" <?php selected( $nav_menu, $menu->term_id ); ?>>
+                                                       <?php echo esc_html( $menu->name ); ?>
+                                               </option>
+                                       <?php endforeach; ?>
+                               </select>
+                       </p>
+               </div>
+               <?php
+       }
+}
diff --git a/wp-includes/widgets/class-wp-widget-archives.php b/wp-includes/widgets/class-wp-widget-archives.php
new file mode 100644 (file)
index 0000000..30e4ee0
--- /dev/null
@@ -0,0 +1,161 @@
+<?php
+/**
+ * Widget API: WP_Widget_Archives class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement the Archives widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Archives extends WP_Widget {
+
+       /**
+        * Sets up a new Archives widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array('classname' => 'widget_archive', 'description' => __( 'A monthly archive of your site&#8217;s Posts.') );
+               parent::__construct('archives', __('Archives'), $widget_ops);
+       }
+
+       /**
+        * Outputs the content for the current Archives widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Archives widget instance.
+        */
+       public function widget( $args, $instance ) {
+               $c = ! empty( $instance['count'] ) ? '1' : '0';
+               $d = ! empty( $instance['dropdown'] ) ? '1' : '0';
+
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Archives' ) : $instance['title'], $instance, $this->id_base );
+
+               echo $args['before_widget'];
+               if ( $title ) {
+                       echo $args['before_title'] . $title . $args['after_title'];
+               }
+
+               if ( $d ) {
+                       $dropdown_id = "{$this->id_base}-dropdown-{$this->number}";
+                       ?>
+               <label class="screen-reader-text" for="<?php echo esc_attr( $dropdown_id ); ?>"><?php echo $title; ?></label>
+               <select id="<?php echo esc_attr( $dropdown_id ); ?>" name="archive-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'>
+                       <?php
+                       /**
+                        * Filter the arguments for the Archives widget drop-down.
+                        *
+                        * @since 2.8.0
+                        *
+                        * @see wp_get_archives()
+                        *
+                        * @param array $args An array of Archives widget drop-down arguments.
+                        */
+                       $dropdown_args = apply_filters( 'widget_archives_dropdown_args', array(
+                               'type'            => 'monthly',
+                               'format'          => 'option',
+                               'show_post_count' => $c
+                       ) );
+
+                       switch ( $dropdown_args['type'] ) {
+                               case 'yearly':
+                                       $label = __( 'Select Year' );
+                                       break;
+                               case 'monthly':
+                                       $label = __( 'Select Month' );
+                                       break;
+                               case 'daily':
+                                       $label = __( 'Select Day' );
+                                       break;
+                               case 'weekly':
+                                       $label = __( 'Select Week' );
+                                       break;
+                               default:
+                                       $label = __( 'Select Post' );
+                                       break;
+                       }
+                       ?>
+
+                       <option value=""><?php echo esc_attr( $label ); ?></option>
+                       <?php wp_get_archives( $dropdown_args ); ?>
+
+               </select>
+               <?php } else { ?>
+               <ul>
+               <?php
+               /**
+                * Filter the arguments for the Archives widget.
+                *
+                * @since 2.8.0
+                *
+                * @see wp_get_archives()
+                *
+                * @param array $args An array of Archives option arguments.
+                */
+               wp_get_archives( apply_filters( 'widget_archives_args', array(
+                       'type'            => 'monthly',
+                       'show_post_count' => $c
+               ) ) );
+               ?>
+               </ul>
+               <?php
+               }
+
+               echo $args['after_widget'];
+       }
+
+       /**
+        * Handles updating settings for the current Archives widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget_Archives::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings to save.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = $old_instance;
+               $new_instance = wp_parse_args( (array) $new_instance, array( 'title' => '', 'count' => 0, 'dropdown' => '') );
+               $instance['title'] = sanitize_text_field( $new_instance['title'] );
+               $instance['count'] = $new_instance['count'] ? 1 : 0;
+               $instance['dropdown'] = $new_instance['dropdown'] ? 1 : 0;
+
+               return $instance;
+       }
+
+       /**
+        * Outputs the settings form for the Archives widget.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'count' => 0, 'dropdown' => '') );
+               $title = sanitize_text_field( $instance['title'] );
+               ?>
+               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
+               <p>
+                       <input class="checkbox" type="checkbox"<?php checked( $instance['dropdown'] ); ?> id="<?php echo $this->get_field_id('dropdown'); ?>" name="<?php echo $this->get_field_name('dropdown'); ?>" /> <label for="<?php echo $this->get_field_id('dropdown'); ?>"><?php _e('Display as dropdown'); ?></label>
+                       <br/>
+                       <input class="checkbox" type="checkbox"<?php checked( $instance['count'] ); ?> id="<?php echo $this->get_field_id('count'); ?>" name="<?php echo $this->get_field_name('count'); ?>" /> <label for="<?php echo $this->get_field_id('count'); ?>"><?php _e('Show post counts'); ?></label>
+               </p>
+               <?php
+       }
+}
diff --git a/wp-includes/widgets/class-wp-widget-calendar.php b/wp-includes/widgets/class-wp-widget-calendar.php
new file mode 100644 (file)
index 0000000..2a8911a
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+/**
+ * Widget API: WP_Widget_Calendar class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement the Calendar widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Calendar extends WP_Widget {
+       /**
+        * Ensure that the ID attribute only appears in the markup once
+        *
+        * @since 4.4.0
+        *
+        * @static
+        * @access private
+        * @var int
+        */
+       private static $instance = 0;
+
+       /**
+        * Sets up a new Calendar widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array('classname' => 'widget_calendar', 'description' => __( 'A calendar of your site&#8217;s Posts.') );
+               parent::__construct('calendar', __('Calendar'), $widget_ops);
+       }
+
+       /**
+        * Outputs the content for the current Calendar widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance The settings for the particular instance of the widget.
+        */
+       public function widget( $args, $instance ) {
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
+
+               echo $args['before_widget'];
+               if ( $title ) {
+                       echo $args['before_title'] . $title . $args['after_title'];
+               }
+               if ( 0 === self::$instance ) {
+                       echo '<div id="calendar_wrap" class="calendar_wrap">';
+               } else {
+                       echo '<div class="calendar_wrap">';
+               }
+               get_calendar();
+               echo '</div>';
+               echo $args['after_widget'];
+
+               self::$instance++;
+       }
+
+       /**
+        * Handles updating settings for the current Calendar widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings to save.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = $old_instance;
+               $instance['title'] = sanitize_text_field( $new_instance['title'] );
+
+               return $instance;
+       }
+
+       /**
+        * Outputs the settings form for the Calendar widget.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
+               $title = sanitize_text_field( $instance['title'] );
+               ?>
+               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
+               <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
+               <?php
+       }
+}
diff --git a/wp-includes/widgets/class-wp-widget-categories.php b/wp-includes/widgets/class-wp-widget-categories.php
new file mode 100644 (file)
index 0000000..058fd90
--- /dev/null
@@ -0,0 +1,170 @@
+<?php
+/**
+ * Widget API: WP_Widget_Categories class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a Categories widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Categories extends WP_Widget {
+
+       /**
+        * Sets up a new Categories widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array( 'classname' => 'widget_categories', 'description' => __( "A list or dropdown of categories." ) );
+               parent::__construct('categories', __('Categories'), $widget_ops);
+       }
+
+       /**
+        * Outputs the content for the current Categories widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Categories widget instance.
+        */
+       public function widget( $args, $instance ) {
+               static $first_dropdown = true;
+
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Categories' ) : $instance['title'], $instance, $this->id_base );
+
+               $c = ! empty( $instance['count'] ) ? '1' : '0';
+               $h = ! empty( $instance['hierarchical'] ) ? '1' : '0';
+               $d = ! empty( $instance['dropdown'] ) ? '1' : '0';
+
+               echo $args['before_widget'];
+               if ( $title ) {
+                       echo $args['before_title'] . $title . $args['after_title'];
+               }
+
+               $cat_args = array(
+                       'orderby'      => 'name',
+                       'show_count'   => $c,
+                       'hierarchical' => $h
+               );
+
+               if ( $d ) {
+                       $dropdown_id = ( $first_dropdown ) ? 'cat' : "{$this->id_base}-dropdown-{$this->number}";
+                       $first_dropdown = false;
+
+                       echo '<label class="screen-reader-text" for="' . esc_attr( $dropdown_id ) . '">' . $title . '</label>';
+
+                       $cat_args['show_option_none'] = __( 'Select Category' );
+                       $cat_args['id'] = $dropdown_id;
+
+                       /**
+                        * Filter the arguments for the Categories widget drop-down.
+                        *
+                        * @since 2.8.0
+                        *
+                        * @see wp_dropdown_categories()
+                        *
+                        * @param array $cat_args An array of Categories widget drop-down arguments.
+                        */
+                       wp_dropdown_categories( apply_filters( 'widget_categories_dropdown_args', $cat_args ) );
+                       ?>
+
+<script type='text/javascript'>
+/* <![CDATA[ */
+(function() {
+       var dropdown = document.getElementById( "<?php echo esc_js( $dropdown_id ); ?>" );
+       function onCatChange() {
+               if ( dropdown.options[ dropdown.selectedIndex ].value > 0 ) {
+                       location.href = "<?php echo home_url(); ?>/?cat=" + dropdown.options[ dropdown.selectedIndex ].value;
+               }
+       }
+       dropdown.onchange = onCatChange;
+})();
+/* ]]> */
+</script>
+
+<?php
+               } else {
+?>
+               <ul>
+<?php
+               $cat_args['title_li'] = '';
+
+               /**
+                * Filter the arguments for the Categories widget.
+                *
+                * @since 2.8.0
+                *
+                * @param array $cat_args An array of Categories widget options.
+                */
+               wp_list_categories( apply_filters( 'widget_categories_args', $cat_args ) );
+?>
+               </ul>
+<?php
+               }
+
+               echo $args['after_widget'];
+       }
+
+       /**
+        * Handles updating settings for the current Categories widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings to save.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = $old_instance;
+               $instance['title'] = sanitize_text_field( $new_instance['title'] );
+               $instance['count'] = !empty($new_instance['count']) ? 1 : 0;
+               $instance['hierarchical'] = !empty($new_instance['hierarchical']) ? 1 : 0;
+               $instance['dropdown'] = !empty($new_instance['dropdown']) ? 1 : 0;
+
+               return $instance;
+       }
+
+       /**
+        * Outputs the settings form for the Categories widget.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               //Defaults
+               $instance = wp_parse_args( (array) $instance, array( 'title' => '') );
+               $title = sanitize_text_field( $instance['title'] );
+               $count = isset($instance['count']) ? (bool) $instance['count'] :false;
+               $hierarchical = isset( $instance['hierarchical'] ) ? (bool) $instance['hierarchical'] : false;
+               $dropdown = isset( $instance['dropdown'] ) ? (bool) $instance['dropdown'] : false;
+               ?>
+               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e( 'Title:' ); ?></label>
+               <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /></p>
+
+               <p><input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('dropdown'); ?>" name="<?php echo $this->get_field_name('dropdown'); ?>"<?php checked( $dropdown ); ?> />
+               <label for="<?php echo $this->get_field_id('dropdown'); ?>"><?php _e( 'Display as dropdown' ); ?></label><br />
+
+               <input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('count'); ?>" name="<?php echo $this->get_field_name('count'); ?>"<?php checked( $count ); ?> />
+               <label for="<?php echo $this->get_field_id('count'); ?>"><?php _e( 'Show post counts' ); ?></label><br />
+
+               <input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('hierarchical'); ?>" name="<?php echo $this->get_field_name('hierarchical'); ?>"<?php checked( $hierarchical ); ?> />
+               <label for="<?php echo $this->get_field_id('hierarchical'); ?>"><?php _e( 'Show hierarchy' ); ?></label></p>
+               <?php
+       }
+
+}
diff --git a/wp-includes/widgets/class-wp-widget-links.php b/wp-includes/widgets/class-wp-widget-links.php
new file mode 100644 (file)
index 0000000..96ecc77
--- /dev/null
@@ -0,0 +1,163 @@
+<?php
+/**
+ * Widget API: WP_Widget_Links class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a Links widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Links extends WP_Widget {
+
+       /**
+        * Sets up a new Links widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array('description' => __( "Your blogroll" ) );
+               parent::__construct('links', __('Links'), $widget_ops);
+       }
+
+       /**
+        * Outputs the content for the current Links widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Links widget instance.
+        */
+       public function widget( $args, $instance ) {
+               $show_description = isset($instance['description']) ? $instance['description'] : false;
+               $show_name = isset($instance['name']) ? $instance['name'] : false;
+               $show_rating = isset($instance['rating']) ? $instance['rating'] : false;
+               $show_images = isset($instance['images']) ? $instance['images'] : true;
+               $category = isset($instance['category']) ? $instance['category'] : false;
+               $orderby = isset( $instance['orderby'] ) ? $instance['orderby'] : 'name';
+               $order = $orderby == 'rating' ? 'DESC' : 'ASC';
+               $limit = isset( $instance['limit'] ) ? $instance['limit'] : -1;
+
+               $before_widget = preg_replace( '/id="[^"]*"/', 'id="%id"', $args['before_widget'] );
+
+               $widget_links_args = array(
+                       'title_before'     => $args['before_title'],
+                       'title_after'      => $args['after_title'],
+                       'category_before'  => $before_widget,
+                       'category_after'   => $args['after_widget'],
+                       'show_images'      => $show_images,
+                       'show_description' => $show_description,
+                       'show_name'        => $show_name,
+                       'show_rating'      => $show_rating,
+                       'category'         => $category,
+                       'class'            => 'linkcat widget',
+                       'orderby'          => $orderby,
+                       'order'            => $order,
+                       'limit'            => $limit,
+               );
+
+               /**
+                * Filter the arguments for the Links widget.
+                *
+                * @since 2.6.0
+                * @since 4.4.0 The `$instance` parameter was added.
+                *
+                * @see wp_list_bookmarks()
+                *
+                * @param array $widget_links_args An array of arguments to retrieve the links list.
+                * @param array $instance          The settings for the particular instance of the widget.
+                */
+               wp_list_bookmarks( apply_filters( 'widget_links_args', $widget_links_args, $instance ) );
+       }
+
+       /**
+        * Handles updating settings for the current Links widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings to save.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $new_instance = (array) $new_instance;
+               $instance = array( 'images' => 0, 'name' => 0, 'description' => 0, 'rating' => 0 );
+               foreach ( $instance as $field => $val ) {
+                       if ( isset($new_instance[$field]) )
+                               $instance[$field] = 1;
+               }
+
+               $instance['orderby'] = 'name';
+               if ( in_array( $new_instance['orderby'], array( 'name', 'rating', 'id', 'rand' ) ) )
+                       $instance['orderby'] = $new_instance['orderby'];
+
+               $instance['category'] = intval( $new_instance['category'] );
+               $instance['limit'] = ! empty( $new_instance['limit'] ) ? intval( $new_instance['limit'] ) : -1;
+
+               return $instance;
+       }
+
+       /**
+        * Outputs the settings form for the Links widget.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+
+               //Defaults
+               $instance = wp_parse_args( (array) $instance, array( 'images' => true, 'name' => true, 'description' => false, 'rating' => false, 'category' => false, 'orderby' => 'name', 'limit' => -1 ) );
+               $link_cats = get_terms( 'link_category' );
+               if ( ! $limit = intval( $instance['limit'] ) )
+                       $limit = -1;
+                       ?>
+               <p>
+               <label for="<?php echo $this->get_field_id('category'); ?>"><?php _e( 'Select Link Category:' ); ?></label>
+               <select class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>">
+               <option value=""><?php _ex('All Links', 'links widget'); ?></option>
+               <?php
+               foreach ( $link_cats as $link_cat ) {
+                       echo '<option value="' . intval( $link_cat->term_id ) . '"'
+                               . selected( $instance['category'], $link_cat->term_id, false )
+                               . '>' . $link_cat->name . "</option>\n";
+               }
+               ?>
+               </select>
+               <label for="<?php echo $this->get_field_id('orderby'); ?>"><?php _e( 'Sort by:' ); ?></label>
+               <select name="<?php echo $this->get_field_name('orderby'); ?>" id="<?php echo $this->get_field_id('orderby'); ?>" class="widefat">
+                       <option value="name"<?php selected( $instance['orderby'], 'name' ); ?>><?php _e( 'Link title' ); ?></option>
+                       <option value="rating"<?php selected( $instance['orderby'], 'rating' ); ?>><?php _e( 'Link rating' ); ?></option>
+                       <option value="id"<?php selected( $instance['orderby'], 'id' ); ?>><?php _e( 'Link ID' ); ?></option>
+                       <option value="rand"<?php selected( $instance['orderby'], 'rand' ); ?>><?php _ex( 'Random', 'Links widget' ); ?></option>
+               </select>
+               </p>
+               <p>
+               <input class="checkbox" type="checkbox"<?php checked($instance['images'], true) ?> id="<?php echo $this->get_field_id('images'); ?>" name="<?php echo $this->get_field_name('images'); ?>" />
+               <label for="<?php echo $this->get_field_id('images'); ?>"><?php _e('Show Link Image'); ?></label><br />
+               <input class="checkbox" type="checkbox"<?php checked($instance['name'], true) ?> id="<?php echo $this->get_field_id('name'); ?>" name="<?php echo $this->get_field_name('name'); ?>" />
+               <label for="<?php echo $this->get_field_id('name'); ?>"><?php _e('Show Link Name'); ?></label><br />
+               <input class="checkbox" type="checkbox"<?php checked($instance['description'], true) ?> id="<?php echo $this->get_field_id('description'); ?>" name="<?php echo $this->get_field_name('description'); ?>" />
+               <label for="<?php echo $this->get_field_id('description'); ?>"><?php _e('Show Link Description'); ?></label><br />
+               <input class="checkbox" type="checkbox"<?php checked($instance['rating'], true) ?> id="<?php echo $this->get_field_id('rating'); ?>" name="<?php echo $this->get_field_name('rating'); ?>" />
+               <label for="<?php echo $this->get_field_id('rating'); ?>"><?php _e('Show Link Rating'); ?></label>
+               </p>
+               <p>
+               <label for="<?php echo $this->get_field_id('limit'); ?>"><?php _e( 'Number of links to show:' ); ?></label>
+               <input id="<?php echo $this->get_field_id('limit'); ?>" name="<?php echo $this->get_field_name('limit'); ?>" type="text" value="<?php echo $limit == -1 ? '' : intval( $limit ); ?>" size="3" />
+               </p>
+               <?php
+       }
+}
diff --git a/wp-includes/widgets/class-wp-widget-meta.php b/wp-includes/widgets/class-wp-widget-meta.php
new file mode 100644 (file)
index 0000000..c12238f
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Widget API: WP_Widget_Meta class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a Meta widget.
+ *
+ * Displays log in/out, RSS feed links, etc.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Meta extends WP_Widget {
+
+       /**
+        * Sets up a new Meta widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array('classname' => 'widget_meta', 'description' => __( "Login, RSS, &amp; WordPress.org links.") );
+               parent::__construct('meta', __('Meta'), $widget_ops);
+       }
+
+       /**
+        * Outputs the content for the current Meta widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Meta widget instance.
+        */
+       public function widget( $args, $instance ) {
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $title = apply_filters( 'widget_title', empty($instance['title']) ? __( 'Meta' ) : $instance['title'], $instance, $this->id_base );
+
+               echo $args['before_widget'];
+               if ( $title ) {
+                       echo $args['before_title'] . $title . $args['after_title'];
+               }
+                       ?>
+                       <ul>
+                       <?php wp_register(); ?>
+                       <li><?php wp_loginout(); ?></li>
+                       <li><a href="<?php echo esc_url( get_bloginfo( 'rss2_url' ) ); ?>"><?php _e('Entries <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
+                       <li><a href="<?php echo esc_url( get_bloginfo( 'comments_rss2_url' ) ); ?>"><?php _e('Comments <abbr title="Really Simple Syndication">RSS</abbr>'); ?></a></li>
+                       <?php
+                       /**
+                        * Filter the "Powered by WordPress" text in the Meta widget.
+                        *
+                        * @since 3.6.0
+                        *
+                        * @param string $title_text Default title text for the WordPress.org link.
+                        */
+                       echo apply_filters( 'widget_meta_poweredby', sprintf( '<li><a href="%s" title="%s">%s</a></li>',
+                               esc_url( __( 'https://wordpress.org/' ) ),
+                               esc_attr__( 'Powered by WordPress, state-of-the-art semantic personal publishing platform.' ),
+                               _x( 'WordPress.org', 'meta widget link text' )
+                       ) );
+
+                       wp_meta();
+                       ?>
+                       </ul>
+                       <?php
+               echo $args['after_widget'];
+       }
+
+       /**
+        * Handles updating settings for the current Meta widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings to save.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = $old_instance;
+               $instance['title'] = sanitize_text_field( $new_instance['title'] );
+
+               return $instance;
+       }
+
+       /**
+        * Outputs the settings form for the Meta widget.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               $instance = wp_parse_args( (array) $instance, array( 'title' => '' ) );
+               $title = sanitize_text_field( $instance['title'] );
+?>
+                       <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
+<?php
+       }
+}
diff --git a/wp-includes/widgets/class-wp-widget-pages.php b/wp-includes/widgets/class-wp-widget-pages.php
new file mode 100644 (file)
index 0000000..e8737ac
--- /dev/null
@@ -0,0 +1,147 @@
+<?php
+/**
+ * Widget API: WP_Widget_Pages class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a Pages widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Pages extends WP_Widget {
+
+       /**
+        * Sets up a new Pages widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array('classname' => 'widget_pages', 'description' => __( 'A list of your site&#8217;s Pages.') );
+               parent::__construct('pages', __('Pages'), $widget_ops);
+       }
+
+       /**
+        * Outputs the content for the current Pages widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Pages widget instance.
+        */
+       public function widget( $args, $instance ) {
+
+               /**
+                * Filter the widget title.
+                *
+                * @since 2.6.0
+                *
+                * @param string $title    The widget title. Default 'Pages'.
+                * @param array  $instance An array of the widget's settings.
+                * @param mixed  $id_base  The widget ID.
+                */
+               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? __( 'Pages' ) : $instance['title'], $instance, $this->id_base );
+
+               $sortby = empty( $instance['sortby'] ) ? 'menu_order' : $instance['sortby'];
+               $exclude = empty( $instance['exclude'] ) ? '' : $instance['exclude'];
+
+               if ( $sortby == 'menu_order' )
+                       $sortby = 'menu_order, post_title';
+
+               /**
+                * Filter the arguments for the Pages widget.
+                *
+                * @since 2.8.0
+                *
+                * @see wp_list_pages()
+                *
+                * @param array $args An array of arguments to retrieve the pages list.
+                */
+               $out = wp_list_pages( apply_filters( 'widget_pages_args', array(
+                       'title_li'    => '',
+                       'echo'        => 0,
+                       'sort_column' => $sortby,
+                       'exclude'     => $exclude
+               ) ) );
+
+               if ( ! empty( $out ) ) {
+                       echo $args['before_widget'];
+                       if ( $title ) {
+                               echo $args['before_title'] . $title . $args['after_title'];
+                       }
+               ?>
+               <ul>
+                       <?php echo $out; ?>
+               </ul>
+               <?php
+                       echo $args['after_widget'];
+               }
+       }
+
+       /**
+        * Handles updating settings for the current Pages widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings to save.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = $old_instance;
+               $instance['title'] = sanitize_text_field( $new_instance['title'] );
+               if ( in_array( $new_instance['sortby'], array( 'post_title', 'menu_order', 'ID' ) ) ) {
+                       $instance['sortby'] = $new_instance['sortby'];
+               } else {
+                       $instance['sortby'] = 'menu_order';
+               }
+
+               $instance['exclude'] = sanitize_text_field( $new_instance['exclude'] );
+
+               return $instance;
+       }
+
+       /**
+        * Outputs the settings form for the Pages widget.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               //Defaults
+               $instance = wp_parse_args( (array) $instance, array( 'sortby' => 'post_title', 'title' => '', 'exclude' => '') );
+               ?>
+               <p>
+                       <label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php _e( 'Title:' ); ?></label>
+                       <input class="widefat" id="<?php echo esc_attr( $this->get_field_id('title') ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $instance['title'] ); ?>" />
+               </p>
+               <p>
+                       <label for="<?php echo esc_attr( $this->get_field_id( 'sortby' ) ); ?>"><?php _e( 'Sort by:' ); ?></label>
+                       <select name="<?php echo esc_attr( $this->get_field_name( 'sortby' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'sortby' ) ); ?>" class="widefat">
+                               <option value="post_title"<?php selected( $instance['sortby'], 'post_title' ); ?>><?php _e('Page title'); ?></option>
+                               <option value="menu_order"<?php selected( $instance['sortby'], 'menu_order' ); ?>><?php _e('Page order'); ?></option>
+                               <option value="ID"<?php selected( $instance['sortby'], 'ID' ); ?>><?php _e( 'Page ID' ); ?></option>
+                       </select>
+               </p>
+               <p>
+                       <label for="<?php echo esc_attr( $this->get_field_id( 'exclude' ) ); ?>"><?php _e( 'Exclude:' ); ?></label>
+                       <input type="text" value="<?php echo esc_attr( $instance['exclude'] ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'exclude' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'exclude' ) ); ?>" class="widefat" />
+                       <br />
+                       <small><?php _e( 'Page IDs, separated by commas.' ); ?></small>
+               </p>
+               <?php
+       }
+
+}
diff --git a/wp-includes/widgets/class-wp-widget-recent-comments.php b/wp-includes/widgets/class-wp-widget-recent-comments.php
new file mode 100644 (file)
index 0000000..0f1a3b5
--- /dev/null
@@ -0,0 +1,173 @@
+<?php
+/**
+ * Widget API: WP_Widget_Recent_Comments class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a Recent Comments widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Recent_Comments extends WP_Widget {
+
+       /**
+        * Sets up a new Recent Comments widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array('classname' => 'widget_recent_comments', 'description' => __( 'Your site&#8217;s most recent comments.' ) );
+               parent::__construct('recent-comments', __('Recent Comments'), $widget_ops);
+               $this->alt_option_name = 'widget_recent_comments';
+
+               if ( is_active_widget(false, false, $this->id_base) )
+                       add_action( 'wp_head', array($this, 'recent_comments_style') );
+       }
+
+       /**
+        * Outputs the default styles for the Recent Comments widget.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function recent_comments_style() {
+               /**
+                * Filter the Recent Comments default widget styles.
+                *
+                * @since 3.1.0
+                *
+                * @param bool   $active  Whether the widget is active. Default true.
+                * @param string $id_base The widget ID.
+                */
+               if ( ! current_theme_supports( 'widgets' ) // Temp hack #14876
+                       || ! apply_filters( 'show_recent_comments_widget_style', true, $this->id_base ) )
+                       return;
+               ?>
+               <style type="text/css">.recentcomments a{display:inline !important;padding:0 !important;margin:0 !important;}</style>
+               <?php
+       }
+
+       /**
+        * Outputs the content for the current Recent Comments widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Recent Comments widget instance.
+        */
+       public function widget( $args, $instance ) {
+               if ( ! isset( $args['widget_id'] ) )
+                       $args['widget_id'] = $this->id;
+
+               $output = '';
+
+               $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Comments' );
+
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
+
+               $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5;
+               if ( ! $number )
+                       $number = 5;
+
+               /**
+                * Filter the arguments for the Recent Comments widget.
+                *
+                * @since 3.4.0
+                *
+                * @see WP_Comment_Query::query() for information on accepted arguments.
+                *
+                * @param array $comment_args An array of arguments used to retrieve the recent comments.
+                */
+               $comments = get_comments( apply_filters( 'widget_comments_args', array(
+                       'number'      => $number,
+                       'status'      => 'approve',
+                       'post_status' => 'publish'
+               ) ) );
+
+               $output .= $args['before_widget'];
+               if ( $title ) {
+                       $output .= $args['before_title'] . $title . $args['after_title'];
+               }
+
+               $output .= '<ul id="recentcomments">';
+               if ( is_array( $comments ) && $comments ) {
+                       // Prime cache for associated posts. (Prime post term cache if we need it for permalinks.)
+                       $post_ids = array_unique( wp_list_pluck( $comments, 'comment_post_ID' ) );
+                       _prime_post_caches( $post_ids, strpos( get_option( 'permalink_structure' ), '%category%' ), false );
+
+                       foreach ( (array) $comments as $comment ) {
+                               $output .= '<li class="recentcomments">';
+                               /* translators: comments widget: 1: comment author, 2: post link */
+                               $output .= sprintf( _x( '%1$s on %2$s', 'widgets' ),
+                                       '<span class="comment-author-link">' . get_comment_author_link( $comment ) . '</span>',
+                                       '<a href="' . esc_url( get_comment_link( $comment ) ) . '">' . get_the_title( $comment->comment_post_ID ) . '</a>'
+                               );
+                               $output .= '</li>';
+                       }
+               }
+               $output .= '</ul>';
+               $output .= $args['after_widget'];
+
+               echo $output;
+       }
+
+       /**
+        * Handles updating settings for the current Recent Comments widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings to save.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = $old_instance;
+               $instance['title'] = sanitize_text_field( $new_instance['title'] );
+               $instance['number'] = absint( $new_instance['number'] );
+               return $instance;
+       }
+
+       /**
+        * Outputs the settings form for the Recent Comments widget.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               $title = isset( $instance['title'] ) ? $instance['title'] : '';
+               $number = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5;
+               ?>
+               <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
+               <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" /></p>
+
+               <p><label for="<?php echo $this->get_field_id( 'number' ); ?>"><?php _e( 'Number of comments to show:' ); ?></label>
+               <input class="tiny-text" id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="number" step="1" min="1" value="<?php echo $number; ?>" size="3" /></p>
+               <?php
+       }
+
+       /**
+        * Flushes the Recent Comments widget cache.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @deprecated 4.4.0 Fragment caching was removed in favor of split queries.
+        */
+       public function flush_widget_cache() {
+               _deprecated_function( __METHOD__, '4.4' );
+       }
+}
diff --git a/wp-includes/widgets/class-wp-widget-recent-posts.php b/wp-includes/widgets/class-wp-widget-recent-posts.php
new file mode 100644 (file)
index 0000000..8f92bf3
--- /dev/null
@@ -0,0 +1,138 @@
+<?php
+/**
+ * Widget API: WP_Widget_Recent_Posts class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a Recent Posts widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Recent_Posts extends WP_Widget {
+
+       /**
+        * Sets up a new Recent Posts widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array('classname' => 'widget_recent_entries', 'description' => __( "Your site&#8217;s most recent Posts.") );
+               parent::__construct('recent-posts', __('Recent Posts'), $widget_ops);
+               $this->alt_option_name = 'widget_recent_entries';
+       }
+
+       /**
+        * Outputs the content for the current Recent Posts widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Recent Posts widget instance.
+        */
+       public function widget( $args, $instance ) {
+               if ( ! isset( $args['widget_id'] ) ) {
+                       $args['widget_id'] = $this->id;
+               }
+
+               $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Recent Posts' );
+
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
+
+               $number = ( ! empty( $instance['number'] ) ) ? absint( $instance['number'] ) : 5;
+               if ( ! $number )
+                       $number = 5;
+               $show_date = isset( $instance['show_date'] ) ? $instance['show_date'] : false;
+
+               /**
+                * Filter the arguments for the Recent Posts widget.
+                *
+                * @since 3.4.0
+                *
+                * @see WP_Query::get_posts()
+                *
+                * @param array $args An array of arguments used to retrieve the recent posts.
+                */
+               $r = new WP_Query( apply_filters( 'widget_posts_args', array(
+                       'posts_per_page'      => $number,
+                       'no_found_rows'       => true,
+                       'post_status'         => 'publish',
+                       'ignore_sticky_posts' => true
+               ) ) );
+
+               if ($r->have_posts()) :
+               ?>
+               <?php echo $args['before_widget']; ?>
+               <?php if ( $title ) {
+                       echo $args['before_title'] . $title . $args['after_title'];
+               } ?>
+               <ul>
+               <?php while ( $r->have_posts() ) : $r->the_post(); ?>
+                       <li>
+                               <a href="<?php the_permalink(); ?>"><?php get_the_title() ? the_title() : the_ID(); ?></a>
+                       <?php if ( $show_date ) : ?>
+                               <span class="post-date"><?php echo get_the_date(); ?></span>
+                       <?php endif; ?>
+                       </li>
+               <?php endwhile; ?>
+               </ul>
+               <?php echo $args['after_widget']; ?>
+               <?php
+               // Reset the global $the_post as this query will have stomped on it
+               wp_reset_postdata();
+
+               endif;
+       }
+
+       /**
+        * Handles updating the settings for the current Recent Posts widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings to save.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = $old_instance;
+               $instance['title'] = sanitize_text_field( $new_instance['title'] );
+               $instance['number'] = (int) $new_instance['number'];
+               $instance['show_date'] = isset( $new_instance['show_date'] ) ? (bool) $new_instance['show_date'] : false;
+               return $instance;
+       }
+
+       /**
+        * Outputs the settings form for the Recent Posts widget.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               $title     = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
+               $number    = isset( $instance['number'] ) ? absint( $instance['number'] ) : 5;
+               $show_date = isset( $instance['show_date'] ) ? (bool) $instance['show_date'] : false;
+?>
+               <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
+               <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /></p>
+
+               <p><label for="<?php echo $this->get_field_id( 'number' ); ?>"><?php _e( 'Number of posts to show:' ); ?></label>
+               <input class="tiny-text" id="<?php echo $this->get_field_id( 'number' ); ?>" name="<?php echo $this->get_field_name( 'number' ); ?>" type="number" step="1" min="1" value="<?php echo $number; ?>" size="3" /></p>
+
+               <p><input class="checkbox" type="checkbox"<?php checked( $show_date ); ?> id="<?php echo $this->get_field_id( 'show_date' ); ?>" name="<?php echo $this->get_field_name( 'show_date' ); ?>" />
+               <label for="<?php echo $this->get_field_id( 'show_date' ); ?>"><?php _e( 'Display post date?' ); ?></label></p>
+<?php
+       }
+}
diff --git a/wp-includes/widgets/class-wp-widget-rss.php b/wp-includes/widgets/class-wp-widget-rss.php
new file mode 100644 (file)
index 0000000..169e129
--- /dev/null
@@ -0,0 +1,125 @@
+<?php
+/**
+ * Widget API: WP_Widget_RSS class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a RSS widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_RSS extends WP_Widget {
+
+       /**
+        * Sets up a new RSS widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array( 'description' => __('Entries from any RSS or Atom feed.') );
+               $control_ops = array( 'width' => 400, 'height' => 200 );
+               parent::__construct( 'rss', __('RSS'), $widget_ops, $control_ops );
+       }
+
+       /**
+        * Outputs the content for the current RSS widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current RSS widget instance.
+        */
+       public function widget( $args, $instance ) {
+               if ( isset($instance['error']) && $instance['error'] )
+                       return;
+
+               $url = ! empty( $instance['url'] ) ? $instance['url'] : '';
+               while ( stristr($url, 'http') != $url )
+                       $url = substr($url, 1);
+
+               if ( empty($url) )
+                       return;
+
+               // self-url destruction sequence
+               if ( in_array( untrailingslashit( $url ), array( site_url(), home_url() ) ) )
+                       return;
+
+               $rss = fetch_feed($url);
+               $title = $instance['title'];
+               $desc = '';
+               $link = '';
+
+               if ( ! is_wp_error($rss) ) {
+                       $desc = esc_attr(strip_tags(@html_entity_decode($rss->get_description(), ENT_QUOTES, get_option('blog_charset'))));
+                       if ( empty($title) )
+                               $title = strip_tags( $rss->get_title() );
+                       $link = strip_tags( $rss->get_permalink() );
+                       while ( stristr($link, 'http') != $link )
+                               $link = substr($link, 1);
+               }
+
+               if ( empty($title) )
+                       $title = empty($desc) ? __('Unknown Feed') : $desc;
+
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
+
+               $url = strip_tags( $url );
+               $icon = includes_url( 'images/rss.png' );
+               if ( $title )
+                       $title = '<a class="rsswidget" href="' . esc_url( $url ) . '"><img class="rss-widget-icon" style="border:0" width="14" height="14" src="' . esc_url( $icon ) . '" alt="RSS" /></a> <a class="rsswidget" href="' . esc_url( $link ) . '">"'. esc_html( $title ) .'"</a>';
+
+               echo $args['before_widget'];
+               if ( $title ) {
+                       echo $args['before_title'] . $title . $args['after_title'];
+               }
+               wp_widget_rss_output( $rss, $instance );
+               echo $args['after_widget'];
+
+               if ( ! is_wp_error($rss) )
+                       $rss->__destruct();
+               unset($rss);
+       }
+
+       /**
+        * Handles updating settings for the current RSS widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings to save.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $testurl = ( isset( $new_instance['url'] ) && ( !isset( $old_instance['url'] ) || ( $new_instance['url'] != $old_instance['url'] ) ) );
+               return wp_widget_rss_process( $new_instance, $testurl );
+       }
+
+       /**
+        * Outputs the settings form for the RSS widget.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               if ( empty( $instance ) ) {
+                       $instance = array( 'title' => '', 'url' => '', 'items' => 10, 'error' => false, 'show_summary' => 0, 'show_author' => 0, 'show_date' => 0 );
+               }
+               $instance['number'] = $this->number;
+
+               wp_widget_rss_form( $instance );
+       }
+}
diff --git a/wp-includes/widgets/class-wp-widget-search.php b/wp-includes/widgets/class-wp-widget-search.php
new file mode 100644 (file)
index 0000000..29bbbf8
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+/**
+ * Widget API: WP_Widget_Search class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a Search widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Search extends WP_Widget {
+
+       /**
+        * Sets up a new Search widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array('classname' => 'widget_search', 'description' => __( "A search form for your site.") );
+               parent::__construct( 'search', _x( 'Search', 'Search widget' ), $widget_ops );
+       }
+
+       /**
+        * Outputs the content for the current Search widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Search widget instance.
+        */
+       public function widget( $args, $instance ) {
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
+
+               echo $args['before_widget'];
+               if ( $title ) {
+                       echo $args['before_title'] . $title . $args['after_title'];
+               }
+
+               // Use current theme search form if it exists
+               get_search_form();
+
+               echo $args['after_widget'];
+       }
+
+       /**
+        * Outputs the settings form for the Search widget.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               $instance = wp_parse_args( (array) $instance, array( 'title' => '') );
+               $title = $instance['title'];
+               ?>
+               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></label></p>
+               <?php
+       }
+
+       /**
+        * Handles updating settings for the current Search widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Updated settings.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = $old_instance;
+               $new_instance = wp_parse_args((array) $new_instance, array( 'title' => ''));
+               $instance['title'] = sanitize_text_field( $new_instance['title'] );
+               return $instance;
+       }
+
+}
diff --git a/wp-includes/widgets/class-wp-widget-tag-cloud.php b/wp-includes/widgets/class-wp-widget-tag-cloud.php
new file mode 100644 (file)
index 0000000..99f7af6
--- /dev/null
@@ -0,0 +1,181 @@
+<?php
+/**
+ * Widget API: WP_Widget_Tag_Cloud class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a Tag cloud widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Tag_Cloud extends WP_Widget {
+
+       /**
+        * Sets up a new Tag Cloud widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array( 'description' => __( "A cloud of your most used tags.") );
+               parent::__construct('tag_cloud', __('Tag Cloud'), $widget_ops);
+       }
+
+       /**
+        * Outputs the content for the current Tag Cloud widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Tag Cloud widget instance.
+        */
+       public function widget( $args, $instance ) {
+               $current_taxonomy = $this->_get_current_taxonomy($instance);
+               if ( !empty($instance['title']) ) {
+                       $title = $instance['title'];
+               } else {
+                       if ( 'post_tag' == $current_taxonomy ) {
+                               $title = __('Tags');
+                       } else {
+                               $tax = get_taxonomy($current_taxonomy);
+                               $title = $tax->labels->name;
+                       }
+               }
+
+               /**
+                * Filter the taxonomy used in the Tag Cloud widget.
+                *
+                * @since 2.8.0
+                * @since 3.0.0 Added taxonomy drop-down.
+                *
+                * @see wp_tag_cloud()
+                *
+                * @param array $current_taxonomy The taxonomy to use in the tag cloud. Default 'tags'.
+                */
+               $tag_cloud = wp_tag_cloud( apply_filters( 'widget_tag_cloud_args', array(
+                       'taxonomy' => $current_taxonomy,
+                       'echo' => false
+               ) ) );
+
+               if ( empty( $tag_cloud ) ) {
+                       return;
+               }
+
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $title = apply_filters( 'widget_title', $title, $instance, $this->id_base );
+
+               echo $args['before_widget'];
+               if ( $title ) {
+                       echo $args['before_title'] . $title . $args['after_title'];
+               }
+
+               echo '<div class="tagcloud">';
+
+               echo $tag_cloud;
+
+               echo "</div>\n";
+               echo $args['after_widget'];
+       }
+
+       /**
+        * Handles updating settings for the current Tag Cloud widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Settings to save or bool false to cancel saving.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = array();
+               $instance['title'] = sanitize_text_field( stripslashes( $new_instance['title'] ) );
+               $instance['taxonomy'] = stripslashes($new_instance['taxonomy']);
+               return $instance;
+       }
+
+       /**
+        * Outputs the Tag Cloud widget settings form.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               $current_taxonomy = $this->_get_current_taxonomy($instance);
+               $title_id = $this->get_field_id( 'title' );
+               $instance['title'] = ! empty( $instance['title'] ) ? esc_attr( $instance['title'] ) : '';
+
+               echo '<p><label for="' . $title_id .'">' . __( 'Title:' ) . '</label>
+                       <input type="text" class="widefat" id="' . $title_id .'" name="' . $this->get_field_name( 'title' ) .'" value="' . $instance['title'] .'" />
+               </p>';
+
+               $taxonomies = get_taxonomies( array( 'show_tagcloud' => true ), 'object' );
+               $id = $this->get_field_id( 'taxonomy' );
+               $name = $this->get_field_name( 'taxonomy' );
+               $input = '<input type="hidden" id="' . $id . '" name="' . $name . '" value="%s" />';
+
+               switch ( count( $taxonomies ) ) {
+
+               // No tag cloud supporting taxonomies found, display error message
+               case 0:
+                       echo '<p>' . __( 'The tag cloud will not be displayed since there are no taxonomies that support the tag cloud widget.' ) . '</p>';
+                       printf( $input, '' );
+                       break;
+
+               // Just a single tag cloud supporting taxonomy found, no need to display options
+               case 1:
+                       $keys = array_keys( $taxonomies );
+                       $taxonomy = reset( $keys );
+                       printf( $input, esc_attr( $taxonomy ) );
+                       break;
+
+               // More than one tag cloud supporting taxonomy found, display options
+               default:
+                       printf(
+                               '<p><label for="%1$s">%2$s</label>' .
+                               '<select class="widefat" id="%1$s" name="%3$s">',
+                               $id,
+                               __( 'Taxonomy:' ),
+                               $name
+                       );
+
+                       foreach ( $taxonomies as $taxonomy => $tax ) {
+                               printf(
+                                       '<option value="%s"%s>%s</option>',
+                                       esc_attr( $taxonomy ),
+                                       selected( $taxonomy, $current_taxonomy, false ),
+                                       $tax->labels->name
+                               );
+                       }
+
+                       echo '</select></p>';
+               }
+       }
+
+       /**
+        * Retrieves the taxonomy for the current Tag cloud widget instance.
+        *
+        * @since 4.4.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        * @return string Name of the current taxonomy if set, otherwise 'post_tag'.
+        */
+       public function _get_current_taxonomy($instance) {
+               if ( !empty($instance['taxonomy']) && taxonomy_exists($instance['taxonomy']) )
+                       return $instance['taxonomy'];
+
+               return 'post_tag';
+       }
+}
diff --git a/wp-includes/widgets/class-wp-widget-text.php b/wp-includes/widgets/class-wp-widget-text.php
new file mode 100644 (file)
index 0000000..96cf642
--- /dev/null
@@ -0,0 +1,113 @@
+<?php
+/**
+ * Widget API: WP_Widget_Text class
+ *
+ * @package WordPress
+ * @subpackage Widgets
+ * @since 4.4.0
+ */
+
+/**
+ * Core class used to implement a Text widget.
+ *
+ * @since 2.8.0
+ *
+ * @see WP_Widget
+ */
+class WP_Widget_Text extends WP_Widget {
+
+       /**
+        * Sets up a new Text widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        */
+       public function __construct() {
+               $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML.'));
+               $control_ops = array('width' => 400, 'height' => 350);
+               parent::__construct('text', __('Text'), $widget_ops, $control_ops);
+       }
+
+       /**
+        * Outputs the content for the current Text widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $args     Display arguments including 'before_title', 'after_title',
+        *                        'before_widget', and 'after_widget'.
+        * @param array $instance Settings for the current Text widget instance.
+        */
+       public function widget( $args, $instance ) {
+
+               /** This filter is documented in wp-includes/widgets/class-wp-widget-pages.php */
+               $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
+
+               $widget_text = ! empty( $instance['text'] ) ? $instance['text'] : '';
+
+               /**
+                * Filter the content of the Text widget.
+                *
+                * @since 2.3.0
+                * @since 4.4.0 Added the `$this` parameter.
+                *
+                * @param string         $widget_text The widget content.
+                * @param array          $instance    Array of settings for the current widget.
+                * @param WP_Widget_Text $this        Current Text widget instance.
+                */
+               $text = apply_filters( 'widget_text', $widget_text, $instance, $this );
+
+               echo $args['before_widget'];
+               if ( ! empty( $title ) ) {
+                       echo $args['before_title'] . $title . $args['after_title'];
+               } ?>
+                       <div class="textwidget"><?php echo !empty( $instance['filter'] ) ? wpautop( $text ) : $text; ?></div>
+               <?php
+               echo $args['after_widget'];
+       }
+
+       /**
+        * Handles updating settings for the current Text widget instance.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $new_instance New settings for this instance as input by the user via
+        *                            WP_Widget::form().
+        * @param array $old_instance Old settings for this instance.
+        * @return array Settings to save or bool false to cancel saving.
+        */
+       public function update( $new_instance, $old_instance ) {
+               $instance = $old_instance;
+               $instance['title'] = sanitize_text_field( $new_instance['title'] );
+               if ( current_user_can('unfiltered_html') )
+                       $instance['text'] =  $new_instance['text'];
+               else
+                       $instance['text'] = wp_kses_post( stripslashes( $new_instance['text'] ) );
+               $instance['filter'] = ! empty( $new_instance['filter'] );
+               return $instance;
+       }
+
+       /**
+        * Outputs the Text widget settings form.
+        *
+        * @since 2.8.0
+        * @access public
+        *
+        * @param array $instance Current settings.
+        */
+       public function form( $instance ) {
+               $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '' ) );
+               $filter = isset( $instance['filter'] ) ? $instance['filter'] : 0;
+               $title = sanitize_text_field( $instance['title'] );
+               ?>
+               <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
+               <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
+
+               <p><label for="<?php echo $this->get_field_id( 'text' ); ?>"><?php _e( 'Content:' ); ?></label>
+               <textarea class="widefat" rows="16" cols="20" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo esc_textarea( $instance['text'] ); ?></textarea></p>
+
+               <p><input id="<?php echo $this->get_field_id('filter'); ?>" name="<?php echo $this->get_field_name('filter'); ?>" type="checkbox"<?php checked( $filter ); ?> />&nbsp;<label for="<?php echo $this->get_field_id('filter'); ?>"><?php _e('Automatically add paragraphs'); ?></label></p>
+               <?php
+       }
+}
index 759baaaee6a69583f2b12925d89b5fe65acd64d9..caae412afa6ff7011a4338b0a7c5dde8e0c0c44d 100644 (file)
@@ -266,7 +266,7 @@ class wpdb {
         * @var array
         */
        var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta',
-               'terms', 'term_taxonomy', 'term_relationships', 'commentmeta' );
+               'terms', 'term_taxonomy', 'term_relationships', 'termmeta', 'commentmeta' );
 
        /**
         * List of deprecated WordPress tables
@@ -382,6 +382,15 @@ class wpdb {
         */
        public $term_taxonomy;
 
+       /**
+        * WordPress Term Meta table.
+        *
+        * @since 4.4.0
+        * @access public
+        * @var string
+        */
+       public $termmeta;
+
        /*
         * Global and Multisite tables
         */
@@ -840,7 +849,7 @@ class wpdb {
                 */
                $incompatible_modes = (array) apply_filters( 'incompatible_sql_modes', $this->incompatible_modes );
 
-               foreach( $modes as $i => $mode ) {
+               foreach ( $modes as $i => $mode ) {
                        if ( in_array( $mode, $incompatible_modes ) ) {
                                unset( $modes[ $i ] );
                        }
@@ -1043,14 +1052,40 @@ class wpdb {
                        $this->ready = false;
                        if ( ! did_action( 'template_redirect' ) ) {
                                wp_load_translations_early();
-                               $this->bail( sprintf( __( '<h1>Can&#8217;t select database</h1>
-<p>We were able to connect to the database server (which means your username and password is okay) but not able to select the <code>%1$s</code> database.</p>
-<ul>
-<li>Are you sure it exists?</li>
-<li>Does the user <code>%2$s</code> have permission to use the <code>%1$s</code> database?</li>
-<li>On some systems the name of your database is prefixed with your username, so it would be like <code>username_%1$s</code>. Could that be the problem?</li>
-</ul>
-<p>If you don\'t know how to set up a database you should <strong>contact your host</strong>. If all else fails you may find help at the <a href="https://wordpress.org/support/">WordPress Support Forums</a>.</p>' ), htmlspecialchars( $db, ENT_QUOTES ), htmlspecialchars( $this->dbuser, ENT_QUOTES ) ), 'db_select_fail' );
+
+                               $message = '<h1>' . __( 'Can&#8217;t select database' ) . "</h1>\n";
+
+                               $message .= '<p>' . sprintf(
+                                       /* translators: %s: database name */
+                                       __( 'We were able to connect to the database server (which means your username and password is okay) but not able to select the %s database.' ),
+                                       '<code>' . htmlspecialchars( $db, ENT_QUOTES ) . '</code>'
+                               ) . "</p>\n";
+
+                               $message .= "<ul>\n";
+                               $message .= '<li>' . __( 'Are you sure it exists?' ) . "</li>\n";
+
+                               $message .= '<li>' . sprintf(
+                                       /* translators: 1: database user, 2: database name */
+                                       __( 'Does the user %1$s have permission to use the %2$s database?' ),
+                                       '<code>' . htmlspecialchars( $this->dbuser, ENT_QUOTES )  . '</code>',
+                                       '<code>' . htmlspecialchars( $db, ENT_QUOTES ) . '</code>'
+                               ) . "</li>\n";
+
+                               $message .= '<li>' . sprintf(
+                                       /* translators: %s: database name */
+                                       __( 'On some systems the name of your database is prefixed with your username, so it would be like <code>username_%1$s</code>. Could that be the problem?' ),
+                                       htmlspecialchars( $db, ENT_QUOTES )
+                               ). "</li>\n";
+
+                               $message .= "</ul>\n";
+
+                               $message .= '<p>' . sprintf(
+                                       /* translators: %s: support forums URL */
+                                       __( 'If you don&#8217;t know how to set up a database you should <strong>contact your host</strong>. If all else fails you may find help at the <a href="%s">WordPress Support Forums</a>.' ),
+                                       __( 'https://wordpress.org/support/' )
+                               ) . "</p>\n";
+
+                               $this->bail( $message, 'db_select_fail' );
                        }
                }
        }
@@ -1061,7 +1096,7 @@ class wpdb {
         * Use esc_sql() or wpdb::prepare() instead.
         *
         * @since 2.8.0
-        * @deprecated 3.6.0
+        * @deprecated 3.6.0 Use wpdb::prepare()
         * @see wpdb::prepare
         * @see esc_sql()
         * @access private
@@ -1097,6 +1132,7 @@ class wpdb {
 
                $class = get_class( $this );
                if ( function_exists( '__' ) ) {
+                       /* translators: %s: database access abstraction class, usually wpdb or a class extending wpdb */
                        _doing_it_wrong( $class, sprintf( __( '%s must set a database connection for use with escaping.' ), $class ), E_USER_NOTICE );
                } else {
                        _doing_it_wrong( $class, sprintf( '%s must set a database connection for use with escaping.', $class ), E_USER_NOTICE );
@@ -1135,7 +1171,7 @@ class wpdb {
         * Use esc_sql() or wpdb::prepare() instead.
         *
         * @since 0.71
-        * @deprecated 3.6.0
+        * @deprecated 3.6.0 Use wpdb::prepare()
         * @see wpdb::prepare()
         * @see esc_sql()
         *
@@ -1474,7 +1510,7 @@ class wpdb {
 
                                if ( $attempt_fallback ) {
                                        $this->use_mysqli = false;
-                                       $this->db_connect();
+                                       return $this->db_connect( $allow_bail );
                                }
                        }
                } else {
@@ -1494,16 +1530,28 @@ class wpdb {
                                die();
                        }
 
-                       $this->bail( sprintf( __( "
-<h1>Error establishing a database connection</h1>
-<p>This either means that the username and password information in your <code>wp-config.php</code> file is incorrect or we can't contact the database server at <code>%s</code>. This could mean your host's database server is down.</p>
-<ul>
-       <li>Are you sure you have the correct username and password?</li>
-       <li>Are you sure that you have typed the correct hostname?</li>
-       <li>Are you sure that the database server is running?</li>
-</ul>
-<p>If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href='https://wordpress.org/support/'>WordPress Support Forums</a>.</p>
-" ), htmlspecialchars( $this->dbhost, ENT_QUOTES ) ), 'db_connect_fail' );
+                       $message = '<h1>' . __( 'Error establishing a database connection' ) . "</h1>\n";
+
+                       $message .= '<p>' . sprintf(
+                               /* translators: 1: wp-config.php. 2: database host */
+                               __( 'This either means that the username and password information in your %1$s file is incorrect or we can&#8217;t contact the database server at %2$s. This could mean your host&#8217;s database server is down.' ),
+                               '<code>wp-config.php</code>',
+                               '<code>' . htmlspecialchars( $this->dbhost, ENT_QUOTES ) . '</code>'
+                       ) . "</p>\n";
+
+                       $message .= "<ul>\n";
+                       $message .= '<li>' . __( 'Are you sure you have the correct username and password?' ) . "</li>\n";
+                       $message .= '<li>' . __( 'Are you sure that you have typed the correct hostname?' ) . "</li>\n";
+                       $message .= '<li>' . __( 'Are you sure that the database server is running?' ) . "</li>\n";
+                       $message .= "</ul>\n";
+
+                       $message .= '<p>' . sprintf(
+                               /* translators: %s: support forums URL */
+                               __( 'If you&#8217;re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href="%s">WordPress Support Forums</a>.' ),
+                               __( 'https://wordpress.org/support/' )
+                       ) . "</p>\n";
+
+                       $this->bail( $message, 'db_connect_fail' );
 
                        return false;
                } elseif ( $this->dbh ) {
@@ -1586,16 +1634,29 @@ class wpdb {
                        return false;
                }
 
+               wp_load_translations_early();
+
+               $message = '<h1>' . __( 'Error reconnecting to the database' ) . "</h1>\n";
+
+               $message .= '<p>' . sprintf(
+                       /* translators: %s: database host */
+                       __( 'This means that we lost contact with the database server at %s. This could mean your host&#8217;s database server is down.' ),
+                       '<code>' . htmlspecialchars( $this->dbhost, ENT_QUOTES ) . '</code>'
+               ) . "</p>\n";
+
+               $message .= "<ul>\n";
+               $message .= '<li>' . __( 'Are you sure that the database server is running?' ) . "</li>\n";
+               $message .= '<li>' . __( 'Are you sure that the database server is not under particularly heavy load?' ) . "</li>\n";
+               $message .= "</ul>\n";
+
+               $message .= '<p>' . sprintf(
+                       /* translators: %s: support forums URL */
+                       __( 'If you&#8217;re unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href="%s">WordPress Support Forums</a>.' ),
+                       __( 'https://wordpress.org/support/' )
+               ) . "</p>\n";
+
                // We weren't able to reconnect, so we better bail.
-               $this->bail( sprintf( ( "
-<h1>Error reconnecting to the database</h1>
-<p>This means that we lost contact with the database server at <code>%s</code>. This could mean your host's database server is down.</p>
-<ul>
-       <li>Are you sure that the database server is running?</li>
-       <li>Are you sure that the database server is not under particularly heavy load?</li>
-</ul>
-<p>If you're unsure what these terms mean you should probably contact your host. If you still need help you can always visit the <a href='https://wordpress.org/support/'>WordPress Support Forums</a>.</p>
-" ), htmlspecialchars( $this->dbhost, ENT_QUOTES ) ), 'db_connect_fail' );
+               $this->bail( $message, 'db_connect_fail' );
 
                // Call dead_db() if bail didn't die, because this database is no more. It has ceased to be (at least temporarily).
                dead_db();
@@ -1770,6 +1831,7 @@ class wpdb {
         * @param string       $table  Table name
         * @param array        $data   Data to insert (in column => value pairs).
         *                             Both $data columns and $data values should be "raw" (neither should be SQL escaped).
+        *                             Sending a null value will cause the column to be set to NULL - the corresponding format is ignored in this case.
         * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data.
         *                             If string, that format will be used for all of the values in $data.
         *                             A format is one of '%d', '%f', '%s' (integer, float, string).
@@ -1794,6 +1856,7 @@ class wpdb {
         * @param string       $table  Table name
         * @param array        $data   Data to insert (in column => value pairs).
         *                             Both $data columns and $data values should be "raw" (neither should be SQL escaped).
+        *                             Sending a null value will cause the column to be set to NULL - the corresponding format is ignored in this case.
         * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data.
         *                             If string, that format will be used for all of the values in $data.
         *                             A format is one of '%d', '%f', '%s' (integer, float, string).
@@ -1818,6 +1881,7 @@ class wpdb {
         * @param string       $table  Table name
         * @param array        $data   Data to insert (in column => value pairs).
         *                             Both $data columns and $data values should be "raw" (neither should be SQL escaped).
+        *                             Sending a null value will cause the column to be set to NULL - the corresponding format is ignored in this case.
         * @param array|string $format Optional. An array of formats to be mapped to each of the value in $data.
         *                             If string, that format will be used for all of the values in $data.
         *                             A format is one of '%d', '%f', '%s' (integer, float, string).
@@ -1839,6 +1903,11 @@ class wpdb {
 
                $formats = $values = array();
                foreach ( $data as $value ) {
+                       if ( is_null( $value['value'] ) ) {
+                               $formats[] = 'NULL';
+                               continue;
+                       }
+
                        $formats[] = $value['format'];
                        $values[]  = $value['value'];
                }
@@ -1866,9 +1935,12 @@ class wpdb {
         * @param string       $table        Table name
         * @param array        $data         Data to update (in column => value pairs).
         *                                   Both $data columns and $data values should be "raw" (neither should be SQL escaped).
+        *                                   Sending a null value will cause the column to be set to NULL - the corresponding
+        *                                   format is ignored in this case.
         * @param array        $where        A named array of WHERE clauses (in column => value pairs).
         *                                   Multiple clauses will be joined with ANDs.
         *                                   Both $where columns and $where values should be "raw".
+        *                                   Sending a null value will create an IS NULL comparison - the corresponding format will be ignored in this case.
         * @param array|string $format       Optional. An array of formats to be mapped to each of the values in $data.
         *                                   If string, that format will be used for all of the values in $data.
         *                                   A format is one of '%d', '%f', '%s' (integer, float, string).
@@ -1895,10 +1967,20 @@ class wpdb {
 
                $fields = $conditions = $values = array();
                foreach ( $data as $field => $value ) {
+                       if ( is_null( $value['value'] ) ) {
+                               $fields[] = "`$field` = NULL";
+                               continue;
+                       }
+
                        $fields[] = "`$field` = " . $value['format'];
                        $values[] = $value['value'];
                }
                foreach ( $where as $field => $value ) {
+                       if ( is_null( $value['value'] ) ) {
+                               $conditions[] = "`$field` IS NULL";
+                               continue;
+                       }
+
                        $conditions[] = "`$field` = " . $value['format'];
                        $values[] = $value['value'];
                }
@@ -1927,6 +2009,7 @@ class wpdb {
         * @param array        $where        A named array of WHERE clauses (in column => value pairs).
         *                                   Multiple clauses will be joined with ANDs.
         *                                   Both $where columns and $where values should be "raw".
+        *                                   Sending a null value will create an IS NULL comparison - the corresponding format will be ignored in this case.
         * @param array|string $where_format Optional. An array of formats to be mapped to each of the values in $where.
         *                                   If string, that format will be used for all of the items in $where.
         *                                   A format is one of '%d', '%f', '%s' (integer, float, string).
@@ -1945,6 +2028,11 @@ class wpdb {
 
                $conditions = $values = array();
                foreach ( $where as $field => $value ) {
+                       if ( is_null( $value['value'] ) ) {
+                               $conditions[] = "`$field` IS NULL";
+                               continue;
+                       }
+
                        $conditions[] = "`$field` = " . $value['format'];
                        $values[] = $value['value'];
                }
@@ -2049,8 +2137,10 @@ class wpdb {
        protected function process_field_charsets( $data, $table ) {
                foreach ( $data as $field => $value ) {
                        if ( '%d' === $value['format'] || '%f' === $value['format'] ) {
-                               // We can skip this field if we know it isn't a string.
-                               // This checks %d/%f versus ! %s because it's sprintf() could take more.
+                               /*
+                                * We can skip this field if we know it isn't a string.
+                                * This checks %d/%f versus ! %s because its sprintf() could take more.
+                                */
                                $value['charset'] = false;
                        } else {
                                $value['charset'] = $this->get_col_charset( $table, $field );
@@ -2079,8 +2169,10 @@ class wpdb {
        protected function process_field_lengths( $data, $table ) {
                foreach ( $data as $field => $value ) {
                        if ( '%d' === $value['format'] || '%f' === $value['format'] ) {
-                               // We can skip this field if we know it isn't a string.
-                               // This checks %d/%f versus ! %s because it's sprintf() could take more.
+                               /*
+                                * We can skip this field if we know it isn't a string.
+                                * This checks %d/%f versus ! %s because its sprintf() could take more.
+                                */
                                $value['length'] = false;
                        } else {
                                $value['length'] = $this->get_col_length( $table, $field );
@@ -2249,7 +2341,7 @@ class wpdb {
                } elseif ( $output == ARRAY_A || $output == ARRAY_N ) {
                        // Return an integer-keyed array of...
                        if ( $this->last_result ) {
-                               foreach( (array) $this->last_result as $row ) {
+                               foreach ( (array) $this->last_result as $row ) {
                                        if ( $output == ARRAY_N ) {
                                                // ...integer-keyed row arrays
                                                $new_array[] = array_values( get_object_vars( $row ) );
@@ -2401,7 +2493,7 @@ class wpdb {
                }
 
                // Skip this entirely if this isn't a MySQL database.
-               if ( false === $this->is_mysql ) {
+               if ( empty( $this->is_mysql ) ) {
                        return false;
                }
 
@@ -2450,7 +2542,7 @@ class wpdb {
                $columnkey = strtolower( $column );
 
                // Skip this entirely if this isn't a MySQL database.
-               if ( false === $this->is_mysql ) {
+               if ( empty( $this->is_mysql ) ) {
                        return false;
                }
 
@@ -2482,47 +2574,45 @@ class wpdb {
                                        'type'   => 'char',
                                        'length' => (int) $length,
                                );
-                               break;
+
                        case 'binary':
                        case 'varbinary':
                                return array(
                                        'type'   => 'byte',
                                        'length' => (int) $length,
                                );
-                               break;
+
                        case 'tinyblob':
                        case 'tinytext':
                                return array(
                                        'type'   => 'byte',
                                        'length' => 255,        // 2^8 - 1
                                );
-                               break;
+
                        case 'blob':
                        case 'text':
                                return array(
                                        'type'   => 'byte',
                                        'length' => 65535,      // 2^16 - 1
                                );
-                               break;
+
                        case 'mediumblob':
                        case 'mediumtext':
                                return array(
                                        'type'   => 'byte',
                                        'length' => 16777215,   // 2^24 - 1
                                );
-                               break;
+
                        case 'longblob':
                        case 'longtext':
                                return array(
                                        'type'   => 'byte',
                                        'length' => 4294967295, // 2^32 - 1
                                );
-                               break;
+
                        default:
                                return false;
                }
-
-               return false;
        }
 
        /**
@@ -2594,7 +2684,7 @@ class wpdb {
                }
 
                // If any of the columns don't have one of these collations, it needs more sanity checking.
-               foreach( $this->col_meta[ $table ] as $col ) {
+               foreach ( $this->col_meta[ $table ] as $col ) {
                        if ( empty( $col->Collation ) ) {
                                continue;
                        }
@@ -2721,11 +2811,21 @@ class wpdb {
                                                $charset = $value['charset'];
                                        }
 
+                                       if ( $this->charset ) {
+                                               $connection_charset = $this->charset;
+                                       } else {
+                                               if ( $this->use_mysqli ) {
+                                                       $connection_charset = mysqli_character_set_name( $this->dbh );
+                                               } else {
+                                                       $connection_charset = mysql_client_encoding();
+                                               }
+                                       }
+
                                        if ( is_array( $value['length'] ) ) {
-                                               $queries[ $col ] = $this->prepare( "CONVERT( LEFT( CONVERT( %s USING $charset ), %.0f ) USING {$this->charset} )", $value['value'], $value['length']['length'] );
+                                               $queries[ $col ] = $this->prepare( "CONVERT( LEFT( CONVERT( %s USING $charset ), %.0f ) USING $connection_charset )", $value['value'], $value['length']['length'] );
                                        } else if ( 'binary' !== $charset ) {
                                                // If we don't have a length, there's no need to convert binary - it will always return the same result.
-                                               $queries[ $col ] = $this->prepare( "CONVERT( CONVERT( %s USING $charset ) USING {$this->charset} )", $value['value'] );
+                                               $queries[ $col ] = $this->prepare( "CONVERT( CONVERT( %s USING $charset ) USING $connection_charset )", $value['value'] );
                                        }
 
                                        unset( $data[ $col ]['db'] );
@@ -2944,7 +3044,7 @@ class wpdb {
                        if ( $col_offset == -1 ) {
                                $i = 0;
                                $new_array = array();
-                               foreach( (array) $this->col_info as $col ) {
+                               foreach ( (array) $this->col_info as $col ) {
                                        $new_array[$i] = $col->{$info_type};
                                        $i++;
                                }
@@ -2991,10 +3091,11 @@ class wpdb {
         */
        public function bail( $message, $error_code = '500' ) {
                if ( !$this->show_errors ) {
-                       if ( class_exists( 'WP_Error' ) )
+                       if ( class_exists( 'WP_Error', false ) ) {
                                $this->error = new WP_Error($error_code, $message);
-                       else
+                       } else {
                                $this->error = $message;
+                       }
                        return false;
                }
                wp_die($message);
@@ -3022,9 +3123,10 @@ class wpdb {
         *
         * Called when WordPress is generating the table scheme.
         *
+        * Use `wpdb::has_cap( 'collation' )`.
+        *
         * @since 2.5.0
-        * @deprecated 3.5.0
-        * @deprecated Use wpdb::has_cap( 'collation' )
+        * @deprecated 3.5.0 Use wpdb::has_cap()
         *
         * @return bool True if collation is supported, false if version does not
         */
index 1e8fc0e921bfb01c485f2f8f8056207fe00b957a..832a62f8b33f33263f99723663010a4d4468ae1d 100644 (file)
@@ -8,7 +8,7 @@
  * @subpackage Diff
  */
 
-if ( !class_exists( 'Text_Diff' ) ) {
+if ( ! class_exists( 'Text_Diff', false ) ) {
        /** Text_Diff class */
        require( dirname(__FILE__).'/Text/Diff.php' );
        /** Text_Diff_Renderer class */
index 983298bb68da06c15a008803066f32aa1d59886d..94a8b541e7087af0bbfd60b28edae3fb170a0308 100644 (file)
@@ -36,10 +36,10 @@ if ( file_exists( ABSPATH . 'wp-config.php') ) {
        /** The config file resides in ABSPATH */
        require_once( ABSPATH . 'wp-config.php' );
 
-} elseif ( file_exists( dirname(ABSPATH) . '/wp-config.php' ) && ! file_exists( dirname(ABSPATH) . '/wp-settings.php' ) ) {
+} elseif ( @file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! @file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) {
 
        /** The config file resides one level above ABSPATH but is not part of another install */
-       require_once( dirname(ABSPATH) . '/wp-config.php' );
+       require_once( dirname( ABSPATH ) . '/wp-config.php' );
 
 } else {
 
@@ -72,9 +72,21 @@ if ( file_exists( ABSPATH . 'wp-config.php') ) {
        wp_load_translations_early();
 
        // Die with an error message
-       $die  = __( "There doesn't seem to be a <code>wp-config.php</code> file. I need this before we can get started." ) . '</p>';
-       $die .= '<p>' . __( "Need more help? <a href='https://codex.wordpress.org/Editing_wp-config.php'>We got it</a>." ) . '</p>';
-       $die .= '<p>' . __( "You can create a <code>wp-config.php</code> file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file." ) . '</p>';
+       $die  = sprintf(
+               /* translators: %s: wp-config.php */
+               __( "There doesn't seem to be a %s file. I need this before we can get started." ),
+               '<code>wp-config.php</code>'
+       ) . '</p>';
+       $die .= '<p>' . sprintf(
+               /* translators: %s: Codex URL */
+               __( "Need more help? <a href='%s'>We got it</a>." ),
+               __( 'https://codex.wordpress.org/Editing_wp-config.php' )
+       ) . '</p>';
+       $die .= '<p>' . sprintf(
+               /* translators: %s: wp-config.php */
+               __( "You can create a %s file through a web interface, but this doesn't work for all server setups. The safest way is to manually create the file." ),
+               '<code>wp-config.php</code>'
+       ) . '</p>';
        $die .= '<p><a href="' . $path . '" class="button button-large">' . __( "Create a Configuration File" ) . '</a>';
 
        wp_die( $die, __( 'WordPress &rsaquo; Error' ) );
index 57b2a2ef17ceeff1851ae9ed9c7989dcfdd5deb1..ea3afc6c451a5f7fd7566a847a7f58fe48835871 100644 (file)
@@ -281,7 +281,7 @@ function retrieve_password() {
        $errors = new WP_Error();
 
        if ( empty( $_POST['user_login'] ) ) {
-               $errors->add('empty_username', __('<strong>ERROR</strong>: Enter a username or e-mail address.'));
+               $errors->add('empty_username', __('<strong>ERROR</strong>: Enter a username or email address.'));
        } elseif ( strpos( $_POST['user_login'], '@' ) ) {
                $user_data = get_user_by( 'email', trim( $_POST['user_login'] ) );
                if ( empty( $user_data ) )
@@ -295,78 +295,31 @@ function retrieve_password() {
         * Fires before errors are returned from a password reset request.
         *
         * @since 2.1.0
+        * @since 4.4.0 Added the `$errors` parameter.
+        *
+        * @param WP_Error $errors A WP_Error object containing any errors generated
+        *                         by using invalid credentials.
         */
-       do_action( 'lostpassword_post' );
+       do_action( 'lostpassword_post', $errors );
 
        if ( $errors->get_error_code() )
                return $errors;
 
        if ( !$user_data ) {
-               $errors->add('invalidcombo', __('<strong>ERROR</strong>: Invalid username or e-mail.'));
+               $errors->add('invalidcombo', __('<strong>ERROR</strong>: Invalid username or email.'));
                return $errors;
        }
 
        // Redefining user_login ensures we return the right case in the email.
        $user_login = $user_data->user_login;
        $user_email = $user_data->user_email;
+       $key = get_password_reset_key( $user_data );
 
-       /**
-        * Fires before a new password is retrieved.
-        *
-        * @since 1.5.0
-        * @deprecated 1.5.1 Misspelled. Use 'retrieve_password' hook instead.
-        *
-        * @param string $user_login The user login name.
-        */
-       do_action( 'retreive_password', $user_login );
-
-       /**
-        * Fires before a new password is retrieved.
-        *
-        * @since 1.5.1
-        *
-        * @param string $user_login The user login name.
-        */
-       do_action( 'retrieve_password', $user_login );
-
-       /**
-        * Filter whether to allow a password to be reset.
-        *
-        * @since 2.7.0
-        *
-        * @param bool true           Whether to allow the password to be reset. Default true.
-        * @param int  $user_data->ID The ID of the user attempting to reset a password.
-        */
-       $allow = apply_filters( 'allow_password_reset', true, $user_data->ID );
-
-       if ( ! $allow ) {
-               return new WP_Error( 'no_password_reset', __('Password reset is not allowed for this user') );
-       } elseif ( is_wp_error( $allow ) ) {
-               return $allow;
-       }
-
-       // Generate something random for a password reset key.
-       $key = wp_generate_password( 20, false );
-
-       /**
-        * Fires when a password reset key is generated.
-        *
-        * @since 2.5.0
-        *
-        * @param string $user_login The username for the user.
-        * @param string $key        The generated password reset key.
-        */
-       do_action( 'retrieve_password_key', $user_login, $key );
-
-       // Now insert the key, hashed, into the DB.
-       if ( empty( $wp_hasher ) ) {
-               require_once ABSPATH . WPINC . '/class-phpass.php';
-               $wp_hasher = new PasswordHash( 8, true );
+       if ( is_wp_error( $key ) ) {
+               return $key;
        }
-       $hashed = time() . ':' . $wp_hasher->HashPassword( $key );
-       $wpdb->update( $wpdb->users, array( 'user_activation_key' => $hashed ), array( 'user_login' => $user_login ) );
 
-       $message = __('Someone requested that the password be reset for the following account:') . "\r\n\r\n";
+       $message = __('Someone has requested a password reset for the following account:') . "\r\n\r\n";
        $message .= network_home_url( '/' ) . "\r\n\r\n";
        $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
        $message .= __('If this was a mistake, just ignore this email and nothing will happen.') . "\r\n\r\n";
@@ -388,10 +341,13 @@ function retrieve_password() {
         * Filter the subject of the password reset email.
         *
         * @since 2.8.0
+        * @since 4.4.0 Added the `$user_login` and `$user_data` parameters.
         *
-        * @param string $title Default email title.
+        * @param string  $title      Default email title.
+        * @param string  $user_login The username for the user.
+        * @param WP_User $user_data  WP_User object.
         */
-       $title = apply_filters( 'retrieve_password_title', $title );
+       $title = apply_filters( 'retrieve_password_title', $title, $user_login, $user_data );
 
        /**
         * Filter the message body of the password reset mail.
@@ -407,7 +363,7 @@ function retrieve_password() {
        $message = apply_filters( 'retrieve_password_message', $message, $key, $user_login, $user_data );
 
        if ( $message && !wp_mail( $user_email, wp_specialchars_decode( $title ), $message ) )
-               wp_die( __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function.') );
+               wp_die( __('The email could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function.') );
 
        return true;
 }
@@ -440,7 +396,7 @@ if ( defined( 'RELOCATE' ) && RELOCATE ) { // Move flag is set
 }
 
 //Set a cookie now to see if they are supported by the browser.
-$secure = ( 'https' === parse_url( site_url(), PHP_URL_SCHEME ) && 'https' === parse_url( home_url(), PHP_URL_SCHEME ) );
+$secure = ( 'https' === parse_url( wp_login_url(), PHP_URL_SCHEME ) );
 setcookie( TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN, $secure );
 if ( SITECOOKIEPATH != COOKIEPATH )
        setcookie( TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN, $secure );
@@ -468,6 +424,11 @@ $interim_login = isset($_REQUEST['interim-login']);
 switch ($action) {
 
 case 'postpass' :
+       if ( ! array_key_exists( 'post_password', $_POST ) ) {
+               wp_safe_redirect( wp_get_referer() );
+               exit();
+       }
+
        require_once ABSPATH . WPINC . '/class-phpass.php';
        $hasher = new PasswordHash( 8, true );
 
@@ -482,7 +443,12 @@ case 'postpass' :
         * @param int $expires The expiry time, as passed to setcookie().
         */
        $expire = apply_filters( 'post_password_expires', time() + 10 * DAY_IN_SECONDS );
-       $secure = ( 'https' === parse_url( home_url(), PHP_URL_SCHEME ) );
+       $referer = wp_get_referer();
+       if ( $referer ) {
+               $secure = ( 'https' === parse_url( $referer, PHP_URL_SCHEME ) );
+       } else {
+               $secure = false;
+       }
        setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), $expire, COOKIEPATH, COOKIE_DOMAIN, $secure );
 
        wp_safe_redirect( wp_get_referer() );
@@ -560,7 +526,7 @@ case 'retrievepassword' :
 
 <form name="lostpasswordform" id="lostpasswordform" action="<?php echo esc_url( network_site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?>" method="post">
        <p>
-               <label for="user_login" ><?php _e('Username or E-mail:') ?><br />
+               <label for="user_login" ><?php _e('Username or Email:') ?><br />
                <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" /></label>
        </p>
        <?php
@@ -652,17 +618,21 @@ case 'rp' :
 <form name="resetpassform" id="resetpassform" action="<?php echo esc_url( network_site_url( 'wp-login.php?action=resetpass', 'login_post' ) ); ?>" method="post" autocomplete="off">
        <input type="hidden" id="user_login" value="<?php echo esc_attr( $rp_login ); ?>" autocomplete="off" />
 
-       <p class="user-pass1-wrap">
-               <label for="pass1"><?php _e('New password') ?></label><br />
+       <div class="user-pass1-wrap">
+               <p>
+                       <label for="pass1"><?php _e( 'New password' ) ?></label>
+               </p>
+
                <div class="wp-pwd">
                        <span class="password-input-wrapper">
                                <input type="password" data-reveal="1" data-pw="<?php echo esc_attr( wp_generate_password( 16 ) ); ?>" name="pass1" id="pass1" class="input" size="20" value="" autocomplete="off" aria-describedby="pass-strength-result" />
                        </span>
                        <div id="pass-strength-result" class="hide-if-no-js" aria-live="polite"><?php _e( 'Strength indicator' ); ?></div>
                </div>
-       </p>
+       </div>
+
        <p class="user-pass2-wrap">
-               <label for="pass2"><?php _e('Confirm new password') ?></label><br />
+               <label for="pass2"><?php _e( 'Confirm new password' ) ?></label><br />
                <input type="password" name="pass2" id="pass2" class="input" size="20" value="" autocomplete="off" />
        </p>
 
@@ -720,8 +690,8 @@ case 'register' :
        $user_login = '';
        $user_email = '';
        if ( $http_post ) {
-               $user_login = $_POST['user_login'];
-               $user_email = $_POST['user_email'];
+               $user_login = isset( $_POST['user_login'] ) ? $_POST['user_login'] : '';
+               $user_email = isset( $_POST['user_email'] ) ? $_POST['user_email'] : '';
                $errors = register_new_user($user_login, $user_email);
                if ( !is_wp_error($errors) ) {
                        $redirect_to = !empty( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : 'wp-login.php?checkemail=registered';
@@ -742,24 +712,24 @@ case 'register' :
        login_header(__('Registration Form'), '<p class="message register">' . __('Register For This Site') . '</p>', $errors);
 ?>
 
-<form name="registerform" id="registerform" action="<?php echo esc_url( site_url('wp-login.php?action=register', 'login_post') ); ?>" method="post" novalidate="novalidate">
+<form name="registerform" id="registerform" action="<?php echo esc_url( wp_registration_url() ); ?>" method="post" novalidate="novalidate">
        <p>
                <label for="user_login"><?php _e('Username') ?><br />
                <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(wp_unslash($user_login)); ?>" size="20" /></label>
        </p>
        <p>
-               <label for="user_email"><?php _e('E-mail') ?><br />
+               <label for="user_email"><?php _e('Email') ?><br />
                <input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr( wp_unslash( $user_email ) ); ?>" size="25" /></label>
        </p>
        <?php
        /**
-        * Fires following the 'E-mail' field in the user registration form.
+        * Fires following the 'Email' field in the user registration form.
         *
         * @since 2.1.0
         */
        do_action( 'register_form' );
        ?>
-       <p id="reg_passmail"><?php _e( 'Registration confirmation will be e-mailed to you.' ); ?></p>
+       <p id="reg_passmail"><?php _e( 'Registration confirmation will be emailed to you.' ); ?></p>
        <br class="clear" />
        <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" />
        <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button button-primary button-large" value="<?php esc_attr_e('Register'); ?>" /></p>
@@ -851,7 +821,7 @@ default:
                        elseif ( is_multisite() && !$user->has_cap('read') )
                                $redirect_to = get_dashboard_url( $user->ID );
                        elseif ( !$user->has_cap('edit_posts') )
-                               $redirect_to = admin_url('profile.php');
+                               $redirect_to = $user->has_cap( 'read' ) ? admin_url( 'profile.php' ) : home_url();
                }
                wp_safe_redirect($redirect_to);
                exit();
@@ -872,11 +842,11 @@ default:
                elseif  ( isset($_GET['registration']) && 'disabled' == $_GET['registration'] )
                        $errors->add('registerdisabled', __('User registration is currently not allowed.'));
                elseif  ( isset($_GET['checkemail']) && 'confirm' == $_GET['checkemail'] )
-                       $errors->add('confirm', __('Check your e-mail for the confirmation link.'), 'message');
+                       $errors->add('confirm', __('Check your email for the confirmation link.'), 'message');
                elseif  ( isset($_GET['checkemail']) && 'newpass' == $_GET['checkemail'] )
-                       $errors->add('newpass', __('Check your e-mail for your new password.'), 'message');
+                       $errors->add('newpass', __('Check your email for your new password.'), 'message');
                elseif  ( isset($_GET['checkemail']) && 'registered' == $_GET['checkemail'] )
-                       $errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message');
+                       $errors->add('registered', __('Registration complete. Please check your email.'), 'message');
                elseif ( strpos( $redirect_to, 'about.php?updated' ) )
                        $errors->add('updated', __( '<strong>You have successfully updated WordPress!</strong> Please log back in to see what&#8217;s new.' ), 'message' );
        }
@@ -908,7 +878,7 @@ default:
        }
 ?>
 
-<form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post">
+<form name="loginform" id="loginform" action="<?php echo esc_url( wp_login_url() ); ?>" method="post">
        <p>
                <label for="user_login"><?php _e('Username') ?><br />
                <input type="text" name="log" id="user_login"<?php echo $aria_describedby_error; ?> class="input" value="<?php echo esc_attr( $user_login ); ?>" size="20" /></label>
index 6775de8a2764364feacfdf72538153a049ad0952..5efb57fcc1a57a8c114ba237bf236cf9662efbea 100644 (file)
@@ -128,33 +128,12 @@ for ( $i = 1; $i <= $count; $i++ ) {
                                }
                        }
 
-                       if (preg_match('/Date: /i', $line)) { // of the form '20 Mar 2002 20:32:37'
-                               $ddate = trim($line);
-                               $ddate = str_replace('Date: ', '', $ddate);
-                               if (strpos($ddate, ',')) {
-                                       $ddate = trim(substr($ddate, strpos($ddate, ',') + 1, strlen($ddate)));
-                               }
-                               $date_arr = explode(' ', $ddate);
-                               $date_time = explode(':', $date_arr[3]);
-
-                               $ddate_H = $date_time[0];
-                               $ddate_i = $date_time[1];
-                               $ddate_s = $date_time[2];
-
-                               $ddate_m = $date_arr[1];
-                               $ddate_d = $date_arr[0];
-                               $ddate_Y = $date_arr[2];
-                               for ( $j = 0; $j < 12; $j++ ) {
-                                       if ( $ddate_m == $dmonths[$j] ) {
-                                               $ddate_m = $j+1;
-                                       }
-                               }
-
-                               $time_zn = intval($date_arr[4]) * 36;
-                               $ddate_U = gmmktime($ddate_H, $ddate_i, $ddate_s, $ddate_m, $ddate_d, $ddate_Y);
-                               $ddate_U = $ddate_U - $time_zn;
-                               $post_date = gmdate('Y-m-d H:i:s', $ddate_U + $time_difference);
-                               $post_date_gmt = gmdate('Y-m-d H:i:s', $ddate_U);
+                       if ( preg_match( '/Date: /i', $line ) ) { // of the form '20 Mar 2002 20:32:37 +0100'
+                               $ddate = str_replace( 'Date: ', '', trim( $line ) );
+                               $ddate = preg_replace( '!\s*\(.+\)\s*$!', '', $ddate ); // remove parenthesised timezone string if it exists, as this confuses strtotime
+                               $ddate_U = strtotime( $ddate );
+                               $post_date = gmdate( 'Y-m-d H:i:s', $ddate_U + $time_difference );
+                               $post_date_gmt = gmdate( 'Y-m-d H:i:s', $ddate_U );
                        }
                }
        }
@@ -244,15 +223,23 @@ for ( $i = 1; $i <= $count; $i++ ) {
         */
        do_action( 'publish_phone', $post_ID );
 
-       echo "\n<p>" . sprintf(__('<strong>Author:</strong> %s'), esc_html($post_author)) . '</p>';
-       echo "\n<p>" . sprintf(__('<strong>Posted title:</strong> %s'), esc_html($post_title)) . '</p>';
+       echo "\n<p><strong>" . __( 'Author:' ) . '</strong> ' . esc_html( $post_author ) . '</p>';
+       echo "\n<p><strong>" . __( 'Posted title:' ) . '</strong> ' . esc_html( $post_title ) . '</p>';
 
        if(!$pop3->delete($i)) {
-               echo '<p>' . sprintf(__('Oops: %s'), esc_html($pop3->ERROR)) . '</p>';
+               echo '<p>' . sprintf(
+                       /* translators: %s: POP3 error */
+                       __( 'Oops: %s' ),
+                       esc_html( $pop3->ERROR )
+               ) . '</p>';
                $pop3->reset();
                exit;
        } else {
-               echo '<p>' . sprintf(__('Mission complete. Message <strong>%s</strong> deleted.'), $i) . '</p>';
+               echo '<p>' . sprintf(
+                       /* translators: %s: the message ID */
+                       __( 'Mission complete. Message %s deleted.' ),
+                       '<strong>' . $i . '</strong>'
+               ) . '</p>';
        }
 
 }
index e8e114a0aee69380f7bc8132efce5ad0b0b5681d..ef1d2cd66588ac8c1ad6a4ce4cde0e201e7f1c2d 100644 (file)
@@ -29,6 +29,15 @@ require( ABSPATH . WPINC . '/default-constants.php' );
 global $wp_version, $wp_db_version, $tinymce_version, $required_php_version, $required_mysql_version;
 require( ABSPATH . WPINC . '/version.php' );
 
+/**
+ * If not already configured, `$blog_id` will default to 1 in a single site
+ * configuration. In multisite, it will be overridden by default in ms-settings.php.
+ *
+ * @global int $blog_id
+ * @since 2.0.0
+ */
+global $blog_id;
+
 // Set initial default constants including WP_MEMORY_LIMIT, WP_MAX_MEMORY_LIMIT, WP_DEBUG, SCRIPT_DEBUG, WP_CONTENT_DIR and WP_CACHE.
 wp_initial_constants();
 
@@ -113,27 +122,41 @@ require( ABSPATH . WPINC . '/class-wp-walker.php' );
 require( ABSPATH . WPINC . '/class-wp-ajax-response.php' );
 require( ABSPATH . WPINC . '/formatting.php' );
 require( ABSPATH . WPINC . '/capabilities.php' );
+require( ABSPATH . WPINC . '/class-wp-roles.php' );
+require( ABSPATH . WPINC . '/class-wp-role.php' );
+require( ABSPATH . WPINC . '/class-wp-user.php' );
 require( ABSPATH . WPINC . '/query.php' );
 require( ABSPATH . WPINC . '/date.php' );
 require( ABSPATH . WPINC . '/theme.php' );
 require( ABSPATH . WPINC . '/class-wp-theme.php' );
 require( ABSPATH . WPINC . '/template.php' );
 require( ABSPATH . WPINC . '/user.php' );
+require( ABSPATH . WPINC . '/class-wp-user-query.php' );
 require( ABSPATH . WPINC . '/session.php' );
 require( ABSPATH . WPINC . '/meta.php' );
+require( ABSPATH . WPINC . '/class-wp-meta-query.php' );
 require( ABSPATH . WPINC . '/general-template.php' );
 require( ABSPATH . WPINC . '/link-template.php' );
 require( ABSPATH . WPINC . '/author-template.php' );
 require( ABSPATH . WPINC . '/post.php' );
+require( ABSPATH . WPINC . '/class-walker-page.php' );
+require( ABSPATH . WPINC . '/class-walker-page-dropdown.php' );
+require( ABSPATH . WPINC . '/class-wp-post.php' );
 require( ABSPATH . WPINC . '/post-template.php' );
 require( ABSPATH . WPINC . '/revision.php' );
 require( ABSPATH . WPINC . '/post-formats.php' );
 require( ABSPATH . WPINC . '/post-thumbnail-template.php' );
 require( ABSPATH . WPINC . '/category.php' );
+require( ABSPATH . WPINC . '/class-walker-category.php' );
+require( ABSPATH . WPINC . '/class-walker-category-dropdown.php' );
 require( ABSPATH . WPINC . '/category-template.php' );
 require( ABSPATH . WPINC . '/comment.php' );
+require( ABSPATH . WPINC . '/class-wp-comment.php' );
+require( ABSPATH . WPINC . '/class-wp-comment-query.php' );
+require( ABSPATH . WPINC . '/class-walker-comment.php' );
 require( ABSPATH . WPINC . '/comment-template.php' );
 require( ABSPATH . WPINC . '/rewrite.php' );
+require( ABSPATH . WPINC . '/class-wp-rewrite.php' );
 require( ABSPATH . WPINC . '/feed.php' );
 require( ABSPATH . WPINC . '/bookmark.php' );
 require( ABSPATH . WPINC . '/bookmark-template.php' );
@@ -142,17 +165,33 @@ require( ABSPATH . WPINC . '/cron.php' );
 require( ABSPATH . WPINC . '/deprecated.php' );
 require( ABSPATH . WPINC . '/script-loader.php' );
 require( ABSPATH . WPINC . '/taxonomy.php' );
+require( ABSPATH . WPINC . '/class-wp-term.php' );
+require( ABSPATH . WPINC . '/class-wp-tax-query.php' );
 require( ABSPATH . WPINC . '/update.php' );
 require( ABSPATH . WPINC . '/canonical.php' );
 require( ABSPATH . WPINC . '/shortcodes.php' );
+require( ABSPATH . WPINC . '/embed.php' );
 require( ABSPATH . WPINC . '/class-wp-embed.php' );
+require( ABSPATH . WPINC . '/class-wp-oembed-controller.php' );
 require( ABSPATH . WPINC . '/media.php' );
 require( ABSPATH . WPINC . '/http.php' );
 require( ABSPATH . WPINC . '/class-http.php' );
+require( ABSPATH . WPINC . '/class-wp-http-streams.php' );
+require( ABSPATH . WPINC . '/class-wp-http-curl.php' );
+require( ABSPATH . WPINC . '/class-wp-http-proxy.php' );
+require( ABSPATH . WPINC . '/class-wp-http-cookie.php' );
+require( ABSPATH . WPINC . '/class-wp-http-encoding.php' );
+require( ABSPATH . WPINC . '/class-wp-http-response.php' );
 require( ABSPATH . WPINC . '/widgets.php' );
+require( ABSPATH . WPINC . '/class-wp-widget.php' );
+require( ABSPATH . WPINC . '/class-wp-widget-factory.php' );
 require( ABSPATH . WPINC . '/nav-menu.php' );
 require( ABSPATH . WPINC . '/nav-menu-template.php' );
 require( ABSPATH . WPINC . '/admin-bar.php' );
+require( ABSPATH . WPINC . '/rest-api.php' );
+require( ABSPATH . WPINC . '/rest-api/class-wp-rest-server.php' );
+require( ABSPATH . WPINC . '/rest-api/class-wp-rest-response.php' );
+require( ABSPATH . WPINC . '/rest-api/class-wp-rest-request.php' );
 
 // Load multisite-specific files.
 if ( is_multisite() ) {
@@ -175,7 +214,7 @@ unset( $mu_plugin );
 
 // Load network activated plugins.
 if ( is_multisite() ) {
-       foreach( wp_get_active_network_plugins() as $network_plugin ) {
+       foreach ( wp_get_active_network_plugins() as $network_plugin ) {
                wp_register_plugin_realpath( $network_plugin );
                include_once( $network_plugin );
        }
@@ -251,7 +290,7 @@ do_action( 'sanitize_comment_cookies' );
 
 /**
  * WordPress Query object
- * @global object $wp_the_query
+ * @global WP_Query $wp_the_query
  * @since 2.0.0
  */
 $GLOBALS['wp_the_query'] = new WP_Query();
@@ -259,35 +298,35 @@ $GLOBALS['wp_the_query'] = new WP_Query();
 /**
  * Holds the reference to @see $wp_the_query
  * Use this global for WordPress queries
- * @global object $wp_query
+ * @global WP_Query $wp_query
  * @since 1.5.0
  */
 $GLOBALS['wp_query'] = $GLOBALS['wp_the_query'];
 
 /**
  * Holds the WordPress Rewrite object for creating pretty URLs
- * @global object $wp_rewrite
+ * @global WP_Rewrite $wp_rewrite
  * @since 1.5.0
  */
 $GLOBALS['wp_rewrite'] = new WP_Rewrite();
 
 /**
  * WordPress Object
- * @global object $wp
+ * @global WP $wp
  * @since 2.0.0
  */
 $GLOBALS['wp'] = new WP();
 
 /**
  * WordPress Widget Factory Object
- * @global object $wp_widget_factory
+ * @global WP_Widget_Factory $wp_widget_factory
  * @since 2.8.0
  */
 $GLOBALS['wp_widget_factory'] = new WP_Widget_Factory();
 
 /**
  * WordPress User Roles
- * @global object $wp_roles
+ * @global WP_Roles $wp_roles
  * @since 2.0.0
  */
 $GLOBALS['wp_roles'] = new WP_Roles();
@@ -316,13 +355,13 @@ require_once( ABSPATH . WPINC . '/locale.php' );
 
 /**
  * WordPress Locale object for loading locale domain date and various strings.
- * @global object $wp_locale
+ * @global WP_Locale $wp_locale
  * @since 2.1.0
  */
 $GLOBALS['wp_locale'] = new WP_Locale();
 
 // Load the functions for the active theme, for both parent and child theme if applicable.
-if ( ! defined( 'WP_INSTALLING' ) || 'wp-activate.php' === $pagenow ) {
+if ( ! wp_installing() || 'wp-activate.php' === $pagenow ) {
        if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) )
                include( STYLESHEETPATH . '/functions.php' );
        if ( file_exists( TEMPLATEPATH . '/functions.php' ) )
index 3373f8ecd86dea05790cd3b571a43c9b1210a54a..6852bb88cb6f78d53e2caa6f22195791084c0f5f 100644 (file)
@@ -28,7 +28,7 @@ function do_signup_header() {
 add_action( 'wp_head', 'do_signup_header' );
 
 if ( !is_multisite() ) {
-       wp_redirect( site_url('wp-login.php?action=register') );
+       wp_redirect( wp_registration_url() );
        die();
 }
 
@@ -40,6 +40,13 @@ if ( !is_main_site() ) {
 // Fix for page title
 $wp_query->is_404 = false;
 
+/**
+ * Fires before the Site Signup page is loaded.
+ *
+ * @since 4.4.0
+ */
+do_action( 'before_signup_header' );
+
 /**
  * Prints styles for front-end Multisite signup pages
  *
@@ -56,6 +63,7 @@ function wpmu_signup_stylesheet() {
                        .mu_register #user_email,
                        .mu_register #blogname,
                        .mu_register #user_name { width:100%; font-size: 24px; margin:5px 0; }
+               .mu_register #site-language { display: block; }
                .mu_register .prefix_address,
                        .mu_register .suffix_address {font-size: 18px;display:inline; }
                .mu_register label { font-weight:700; font-size:15px; display:block; margin:10px 0; }
@@ -66,7 +74,7 @@ function wpmu_signup_stylesheet() {
 }
 
 add_action( 'wp_head', 'wpmu_signup_stylesheet' );
-get_header();
+get_header( 'wp-signup' );
 
 /**
  * Fires before the site sign-up form.
@@ -75,8 +83,8 @@ get_header();
  */
 do_action( 'before_signup_form' );
 ?>
-<div id="content" class="widecolumn">
-<div class="mu_register">
+<div id="signup-content" class="widecolumn">
+<div class="mu_register wp-signup-container">
 <?php
 /**
  * Generates and displays the Signup and Create Site forms
@@ -121,6 +129,38 @@ function show_blog_form( $blogname = '', $blog_title = '', $errors = '' ) {
        echo '<input name="blog_title" type="text" id="blog_title" value="'.esc_attr($blog_title).'" />';
        ?>
 
+       <?php
+       // Site Language.
+       $languages = signup_get_available_languages();
+
+       if ( ! empty( $languages ) ) :
+               ?>
+               <p>
+                       <label for="site-language"><?php _e( 'Site Language:' ); ?></label>
+                       <?php
+                       // Network default.
+                       $lang = get_site_option( 'WPLANG' );
+
+                       if ( isset( $_POST['WPLANG'] ) ) {
+                               $lang = $_POST['WPLANG'];
+                       }
+
+                       // Use US English if the default isn't available.
+                       if ( ! in_array( $lang, $languages ) ) {
+                               $lang = '';
+                       }
+
+                       wp_dropdown_languages( array(
+                               'name'                        => 'WPLANG',
+                               'id'                          => 'site-language',
+                               'selected'                    => $lang,
+                               'languages'                   => $languages,
+                               'show_available_translations' => false,
+                       ) );
+                       ?>
+               </p>
+       <?php endif; // Languages. ?>
+
        <div id="privacy">
         <p class="privacy-intro">
             <label for="blog_public_on"><?php _e('Privacy:') ?></label>
@@ -330,6 +370,21 @@ function validate_another_blog_signup() {
                'public'  => $public
        );
 
+       // Handle the language setting for the new site.
+       if ( ! empty( $_POST['WPLANG'] ) ) {
+
+               $languages = signup_get_available_languages();
+
+               if ( in_array( $_POST['WPLANG'], $languages ) ) {
+                       $language = wp_unslash( sanitize_text_field( $_POST['WPLANG'] ) );
+
+                       if ( $language ) {
+                               $blog_meta_defaults['WPLANG'] = $language;
+                       }
+               }
+
+       }
+
        /**
         * Filter the new site meta variables.
         *
@@ -339,6 +394,7 @@ function validate_another_blog_signup() {
         * @param array $blog_meta_defaults An array of default blog meta variables.
         */
        $meta_defaults = apply_filters( 'signup_create_blog_meta', $blog_meta_defaults );
+
        /**
         * Filter the new default site meta variables.
         *
@@ -353,8 +409,13 @@ function validate_another_blog_signup() {
         */
        $meta = apply_filters( 'add_signup_meta', $meta_defaults );
 
-       wpmu_create_blog( $domain, $path, $blog_title, $current_user->ID, $meta, $wpdb->siteid );
-       confirm_another_blog_signup($domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta);
+       $blog_id = wpmu_create_blog( $domain, $path, $blog_title, $current_user->ID, $meta, $wpdb->siteid );
+
+       if ( is_wp_error( $blog_id ) ) {
+               return false;
+       }
+
+       confirm_another_blog_signup( $domain, $path, $blog_title, $current_user->user_login, $current_user->user_email, $meta, $blog_id );
        return true;
 }
 
@@ -362,18 +423,43 @@ function validate_another_blog_signup() {
  * Confirm a new site signup
  *
  * @since MU
+ * @since 4.4.0 Added the `$blog_id` parameter.
  *
  * @param string $domain The domain URL
  * @param string $path The site root path
+ * @param string $blog_title The blog title
  * @param string $user_name The username
  * @param string $user_email The user's email address
- * @param array $meta Any additional meta from the 'add_signup_meta' filter in validate_blog_signup()
+ * @param array  $meta Any additional meta from the 'add_signup_meta' filter in validate_blog_signup()
+ * @param int    $blog_id The blog ID
  */
-function confirm_another_blog_signup( $domain, $path, $blog_title, $user_name, $user_email = '', $meta = array() ) {
+function confirm_another_blog_signup( $domain, $path, $blog_title, $user_name, $user_email = '', $meta = array(), $blog_id = 0 ) {
+
+       if ( $blog_id ) {
+               switch_to_blog( $blog_id );
+               $home_url  = home_url( '/' );
+               $login_url = wp_login_url();
+               restore_current_blog();
+       } else {
+               $home_url  = 'http://' . $domain . $path;
+               $login_url = 'http://' . $domain . $path . 'wp-login.php';
+       }
+
+       $site = sprintf( '<a href="%1$s">%2$s</a>',
+               esc_url( $home_url ),
+               $blog_title
+       );
+
        ?>
-       <h2><?php printf( __( 'The site %s is yours.' ), "<a href='http://{$domain}{$path}'>{$blog_title}</a>" ) ?></h2>
+       <h2><?php printf( __( 'The site %s is yours.' ), $site ); ?></h2>
        <p>
-               <?php printf( __( '<a href="http://%1$s">http://%2$s</a> is your new site. <a href="%3$s">Log in</a> as &#8220;%4$s&#8221; using your existing password.' ), $domain.$path, $domain.$path, "http://" . $domain.$path . "wp-login.php", $user_name ) ?>
+               <?php printf(
+                       __( '<a href="%1$s">%2$s</a> is your new site. <a href="%3$s">Log in</a> as &#8220;%4$s&#8221; using your existing password.' ),
+                       esc_url( $home_url ),
+                       untrailingslashit( $domain . $path ),
+                       esc_url( $login_url ),
+                       $user_name
+               ); ?>
        </p>
        <?php
        /**
@@ -495,9 +581,11 @@ function validate_user_signup() {
  */
 function confirm_user_signup($user_name, $user_email) {
        ?>
-       <h2><?php printf( __( '%s is your new username' ), $user_name) ?></h2>
+       <h2><?php /* translators: %s: username */
+       printf( __( '%s is your new username' ), $user_name) ?></h2>
        <p><?php _e( 'But, before you can start using your new username, <strong>you must activate it</strong>.' ) ?></p>
-       <p><?php printf( __( 'Check your inbox at <strong>%s</strong> and click the link given.' ), $user_email ); ?></p>
+       <p><?php /* translators: %s: email address */
+       printf( __( 'Check your inbox at %s and click the link given.' ), '<strong>' . $user_email . '</strong>' ); ?></p>
        <p><?php _e( 'If you do not activate your username within two days, you will have to sign up again.' ); ?></p>
        <?php
        /** This action is documented in wp-signup.php */
@@ -601,6 +689,21 @@ function validate_blog_signup() {
        $public = (int) $_POST['blog_public'];
        $signup_meta = array ('lang_id' => 1, 'public' => $public);
 
+       // Handle the language setting for the new site.
+       if ( ! empty( $_POST['WPLANG'] ) ) {
+
+               $languages = signup_get_available_languages();
+
+               if ( in_array( $_POST['WPLANG'], $languages ) ) {
+                       $language = wp_unslash( sanitize_text_field( $_POST['WPLANG'] ) );
+
+                       if ( $language ) {
+                               $signup_meta['WPLANG'] = $language;
+                       }
+               }
+
+       }
+
        /** This filter is documented in wp-signup.php */
        $meta = apply_filters( 'add_signup_meta', $signup_meta );
 
@@ -623,10 +726,12 @@ function validate_blog_signup() {
  */
 function confirm_blog_signup( $domain, $path, $blog_title, $user_name = '', $user_email = '', $meta = array() ) {
        ?>
-       <h2><?php printf( __( 'Congratulations! Your new site, %s, is almost ready.' ), "<a href='http://{$domain}{$path}'>{$blog_title}</a>" ) ?></h2>
+       <h2><?php /* translators: %s: site address */
+       printf( __( 'Congratulations! Your new site, %s, is almost ready.' ), "<a href='http://{$domain}{$path}'>{$blog_title}</a>" ) ?></h2>
 
        <p><?php _e( 'But, before you can start using your site, <strong>you must activate it</strong>.' ) ?></p>
-       <p><?php printf( __( 'Check your inbox at <strong>%s</strong> and click the link given.' ),  $user_email) ?></p>
+       <p><?php /* translators: %s: email address */
+       printf( __( 'Check your inbox at %s and click the link given.' ), '<strong>' . $user_email . '</strong>' ); ?></p>
        <p><?php _e( 'If you do not activate your site within two days, you will have to sign up again.' ); ?></p>
        <h2><?php _e( 'Still waiting for your email?' ); ?></h2>
        <p>
@@ -642,6 +747,39 @@ function confirm_blog_signup( $domain, $path, $blog_title, $user_name = '', $use
        do_action( 'signup_finished' );
 }
 
+/**
+ * Retrieves languages available during the site/user signup process.
+ *
+ * @since 4.4.0
+ *
+ * @see get_available_languages()
+ *
+ * @return array List of available languages.
+ */
+function signup_get_available_languages() {
+       /**
+        * Filter the list of available languages for front-end site signups.
+        *
+        * Passing an empty array to this hook will disable output of the setting on the
+        * signup form, and the default language will be used when creating the site.
+        *
+        * Languages not already installed will be stripped.
+        *
+        * @since 4.4.0
+        *
+        * @param array $available_languages Available languages.
+        */
+       $languages = (array) apply_filters( 'signup_get_available_languages', get_available_languages() );
+
+       /*
+        * Strip any non-installed languages and return.
+        *
+        * Re-call get_available_languages() here in case a language pack was installed
+        * in a callback hooked to the 'signup_get_available_languages' filter before this point.
+        */
+       return array_intersect_assoc( $languages, get_available_languages() );
+}
+
 // Main
 $active_signup = get_site_option( 'registration', 'none' );
 /**
@@ -669,7 +807,7 @@ $current_user = wp_get_current_user();
 if ( $active_signup == 'none' ) {
        _e( 'Registration has been disabled.' );
 } elseif ( $active_signup == 'blog' && !is_user_logged_in() ) {
-       $login_url = site_url( 'wp-login.php?redirect_to=' . urlencode( network_site_url( 'wp-signup.php' ) ) );
+       $login_url = wp_login_url( network_site_url( 'wp-signup.php' ) );
        echo sprintf( __( 'You must first <a href="%s">log in</a>, and then you can create a new site.' ), $login_url );
 } else {
        $stage = isset( $_POST['stage'] ) ?  $_POST['stage'] : 'default';
@@ -711,9 +849,15 @@ if ( $active_signup == 'none' ) {
                                $newblog = get_blogaddress_by_name( $newblogname );
 
                                if ( $active_signup == 'blog' || $active_signup == 'all' )
-                                       printf( '<p><em>' . __( 'The site you were looking for, <strong>%s</strong>, does not exist, but you can create it now!' ) . '</em></p>', $newblog );
+                                       /* translators: %s: site address */
+                                       printf( '<p><em>' . __( 'The site you were looking for, %s, does not exist, but you can create it now!' ) . '</em></p>',
+                                               '<strong>' . $newblog . '</strong>'
+                                       );
                                else
-                                       printf( '<p><em>' . __( 'The site you were looking for, <strong>%s</strong>, does not exist.' ) . '</em></p>', $newblog );
+                                       /* translators: %s: site address */
+                                       printf( '<p><em>' . __( 'The site you were looking for, %s, does not exist.' ) . '</em></p>',
+                                               '<strong>' . $newblog . '</strong>'
+                                       );
                        }
                        break;
        }
@@ -729,4 +873,4 @@ if ( $active_signup == 'none' ) {
  */
 do_action( 'after_signup_form' ); ?>
 
-<?php get_footer(); ?>
+<?php get_footer( 'wp-signup' );
index ad68921cdd6d2985f8f17de68bf14518d5618ed0..b3cbc6d6750bd4a76001ab1cb291cd29f5533cf6 100644 (file)
@@ -35,7 +35,7 @@ header('Content-Type: text/xml; charset=' . get_option('blog_charset'), true);
 <rsd version="1.0" xmlns="http://archipelago.phrasewise.com/rsd">
   <service>
     <engineName>WordPress</engineName>
-    <engineLink>http://wordpress.org/</engineLink>
+    <engineLink>https://wordpress.org/</engineLink>
     <homePageLink><?php bloginfo_rss('url') ?></homePageLink>
     <apis>
       <api name="WordPress" blogID="1" preferred="true" apiLink="<?php echo site_url('xmlrpc.php', 'rpc') ?>" />
@@ -88,8 +88,8 @@ exit;
 /**
  * logIO() - Writes logging info to a file.
  *
- * @deprecated 3.4.0
- * @deprecated Use error_log()
+ * @deprecated 3.4.0 Use error_log()
+ * @see error_log()
  *
  * @param string $io Whether input or output
  * @param string $msg Information describing logging reason.